@msafe/sui-app-store 0.0.332 → 0.0.334

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 Rd=Object.create;var Yn=Object.defineProperty;var Bd=Object.getOwnPropertyDescriptor;var Ed=Object.getOwnPropertyNames;var Nd=Object.getPrototypeOf,Wd=Object.prototype.hasOwnProperty;var _d=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports),ss=(a,e)=>{for(var t in e)Yn(a,t,{get:e[t],enumerable:!0})},kc=(a,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Ed(e))!Wd.call(a,o)&&o!==t&&Yn(a,o,{get:()=>e[o],enumerable:!(n=Bd(e,o))||n.enumerable});return a};var At=(a,e,t)=>(t=a!=null?Rd(Nd(a)):{},kc(e||!a||!a.__esModule?Yn(t,"default",{value:a,enumerable:!0}):t,a)),Ld=a=>kc(Yn({},"__esModule",{value:!0}),a);var Ap=_d((vp,ac)=>{"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 d=0;r[0]==="-"&&(d++,this.negative=1),d<r.length&&(u===16?this._parseHex(r,d,m):(this._parseBase(r,u,d),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 d=0;d<this.length;d++)this.words[d]=0;var h,T,C=0;if(m==="be")for(d=r.length-1,h=0;d>=0;d-=3)T=r[d]|r[d-1]<<8|r[d-2]<<16,this.words[h]|=T<<C&67108863,this.words[h+1]=T>>>26-C&67108863,C+=24,C>=26&&(C-=26,h++);else if(m==="le")for(d=0,h=0;d<r.length;d+=3)T=r[d]|r[d+1]<<8|r[d+2]<<16,this.words[h]|=T<<C&67108863,this.words[h+1]=T>>>26-C&67108863,C+=24,C>=26&&(C-=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 c(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 d=0;d<this.length;d++)this.words[d]=0;var h=0,T=0,C;if(m==="be")for(d=r.length-1;d>=u;d-=2)C=c(r,u,d)<<h,this.words[T]|=C&67108863,h>=18?(h-=18,T+=1,this.words[T]|=C>>>26):h+=8;else{var f=r.length-u;for(d=f%2===0?u+1:u;d<r.length;d+=2)C=c(r,u,d)<<h,this.words[T]|=C&67108863,h>=18?(h-=18,T+=1,this.words[T]|=C>>>26):h+=8}this._strip()};function p(y,r,u,m){for(var d=0,h=0,T=Math.min(y.length,u),C=r;C<T;C++){var f=y.charCodeAt(C)-48;d*=m,f>=49?h=f-49+10:f>=17?h=f-17+10:h=f,t(f>=0&&h<m,"Invalid character"),d+=h}return d}o.prototype._parseBase=function(r,u,m){this.words=[0],this.length=1;for(var d=0,h=1;h<=67108863;h*=u)d++;d--,h=h/u|0;for(var T=r.length-m,C=T%d,f=Math.min(T,T-C)+m,l=0,g=m;g<f;g+=d)l=p(r,g,g+d,u),this.imuln(h),this.words[0]+l<67108864?this.words[0]+=l:this._iaddn(l);if(C!==0){var v=1;for(l=p(r,g,r.length,u),g=0;g<C;g++)v*=u;this.imuln(v),this.words[0]+l<67108864?this.words[0]+=l:this._iaddn(l)}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")]=S}catch{o.prototype.inspect=S}else o.prototype.inspect=S;function S(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var I=["","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],D=[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 d=0,h=0,T=0;T<this.length;T++){var C=this.words[T],f=((C<<d|h)&16777215).toString(16);h=C>>>24-d&16777215,d+=2,d>=26&&(d-=26,T--),h!==0||T!==this.length-1?m=I[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 l=x[r],g=D[r];m="";var v=this.clone();for(v.negative=0;!v.isZero();){var O=v.modrn(g).toString(r);v=v.idivn(g),v.isZero()?m=O+m:m=I[l-O.length]+O+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 k=function(r,u){return r.allocUnsafe?r.allocUnsafe(u):new r(u)};o.prototype.toArrayLike=function(r,u,m){this._strip();var d=this.byteLength(),h=m||Math.max(1,d);t(d<=h,"byte array longer than desired length"),t(h>0,"Requested array length <= 0");var T=k(r,h),C=u==="le"?"LE":"BE";return this["_toArrayLike"+C](T,d),T},o.prototype._toArrayLikeLE=function(r,u){for(var m=0,d=0,h=0,T=0;h<this.length;h++){var C=this.words[h]<<T|d;r[m++]=C&255,m<r.length&&(r[m++]=C>>8&255),m<r.length&&(r[m++]=C>>16&255),T===6?(m<r.length&&(r[m++]=C>>24&255),d=0,T=0):(d=C>>>24,T+=2)}if(m<r.length)for(r[m++]=d;m<r.length;)r[m++]=0},o.prototype._toArrayLikeBE=function(r,u){for(var m=r.length-1,d=0,h=0,T=0;h<this.length;h++){var C=this.words[h]<<T|d;r[m--]=C&255,m>=0&&(r[m--]=C>>8&255),m>=0&&(r[m--]=C>>16&255),T===6?(m>=0&&(r[m--]=C>>24&255),d=0,T=0):(d=C>>>24,T+=2)}if(m>=0)for(r[m--]=d;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 M(y){for(var r=new Array(y.bitLength()),u=0;u<r.length;u++){var m=u/26|0,d=u%26;r[u]=y.words[m]>>>d&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 d=0;d<m.length;d++)this.words[d]=u.words[d]^m.words[d];if(this!==u)for(;d<u.length;d++)this.words[d]=u.words[d];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 d=0;d<u;d++)this.words[d]=~this.words[d]&67108863;return m>0&&(this.words[d]=~this.words[d]&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,d=r%26;return this._expand(m+1),u?this.words[m]=this.words[m]|1<<d:this.words[m]=this.words[m]&~(1<<d),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,d;this.length>r.length?(m=this,d=r):(m=r,d=this);for(var h=0,T=0;T<d.length;T++)u=(m.words[T]|0)+(d.words[T]|0)+h,this.words[T]=u&67108863,h=u>>>26;for(;h!==0&&T<m.length;T++)u=(m.words[T]|0)+h,this.words[T]=u&67108863,h=u>>>26;if(this.length=m.length,h!==0)this.words[this.length]=h,this.length++;else if(m!==this)for(;T<m.length;T++)this.words[T]=m.words[T];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 d,h;m>0?(d=this,h=r):(d=r,h=this);for(var T=0,C=0;C<h.length;C++)u=(d.words[C]|0)-(h.words[C]|0)+T,T=u>>26,this.words[C]=u&67108863;for(;T!==0&&C<d.length;C++)u=(d.words[C]|0)+T,T=u>>26,this.words[C]=u&67108863;if(T===0&&C<d.length&&d!==this)for(;C<d.length;C++)this.words[C]=d.words[C];return this.length=Math.max(this.length,C),d!==this&&(this.negative=1),this._strip()},o.prototype.sub=function(r){return this.clone().isub(r)};function L(y,r,u){u.negative=r.negative^y.negative;var m=y.length+r.length|0;u.length=m,m=m-1|0;var d=y.words[0]|0,h=r.words[0]|0,T=d*h,C=T&67108863,f=T/67108864|0;u.words[0]=C;for(var l=1;l<m;l++){for(var g=f>>>26,v=f&67108863,O=Math.min(l,r.length-1),P=Math.max(0,l-y.length+1);P<=O;P++){var B=l-P|0;d=y.words[B]|0,h=r.words[P]|0,T=d*h+v,g+=T/67108864|0,v=T&67108863}u.words[l]=v|0,f=g|0}return f!==0?u.words[l]=f|0:u.length--,u._strip()}var U=function(r,u,m){var d=r.words,h=u.words,T=m.words,C=0,f,l,g,v=d[0]|0,O=v&8191,P=v>>>13,B=d[1]|0,_=B&8191,F=B>>>13,pe=d[2]|0,K=pe&8191,$=pe>>>13,lc=d[3]|0,X=lc&8191,z=lc>>>13,uc=d[4]|0,Q=uc&8191,Y=uc>>>13,mc=d[5]|0,J=mc&8191,Z=mc>>>13,pc=d[6]|0,tt=pc&8191,et=pc>>>13,dc=d[7]|0,nt=dc&8191,ot=dc>>>13,fc=d[8]|0,at=fc&8191,it=fc>>>13,hc=d[9]|0,rt=hc&8191,st=hc>>>13,gc=h[0]|0,ct=gc&8191,lt=gc>>>13,yc=h[1]|0,ut=yc&8191,mt=yc>>>13,bc=h[2]|0,pt=bc&8191,dt=bc>>>13,Tc=h[3]|0,ft=Tc&8191,ht=Tc>>>13,Sc=h[4]|0,gt=Sc&8191,yt=Sc>>>13,wc=h[5]|0,bt=wc&8191,Tt=wc>>>13,Ic=h[6]|0,St=Ic&8191,wt=Ic>>>13,Cc=h[7]|0,It=Cc&8191,Ct=Cc>>>13,xc=h[8]|0,xt=xc&8191,Dt=xc>>>13,Dc=h[9]|0,kt=Dc&8191,vt=Dc>>>13;m.negative=r.negative^u.negative,m.length=19,f=Math.imul(O,ct),l=Math.imul(O,lt),l=l+Math.imul(P,ct)|0,g=Math.imul(P,lt);var Fr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Fr>>>26)|0,Fr&=67108863,f=Math.imul(_,ct),l=Math.imul(_,lt),l=l+Math.imul(F,ct)|0,g=Math.imul(F,lt),f=f+Math.imul(O,ut)|0,l=l+Math.imul(O,mt)|0,l=l+Math.imul(P,ut)|0,g=g+Math.imul(P,mt)|0;var Kr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Kr>>>26)|0,Kr&=67108863,f=Math.imul(K,ct),l=Math.imul(K,lt),l=l+Math.imul($,ct)|0,g=Math.imul($,lt),f=f+Math.imul(_,ut)|0,l=l+Math.imul(_,mt)|0,l=l+Math.imul(F,ut)|0,g=g+Math.imul(F,mt)|0,f=f+Math.imul(O,pt)|0,l=l+Math.imul(O,dt)|0,l=l+Math.imul(P,pt)|0,g=g+Math.imul(P,dt)|0;var Vr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Vr>>>26)|0,Vr&=67108863,f=Math.imul(X,ct),l=Math.imul(X,lt),l=l+Math.imul(z,ct)|0,g=Math.imul(z,lt),f=f+Math.imul(K,ut)|0,l=l+Math.imul(K,mt)|0,l=l+Math.imul($,ut)|0,g=g+Math.imul($,mt)|0,f=f+Math.imul(_,pt)|0,l=l+Math.imul(_,dt)|0,l=l+Math.imul(F,pt)|0,g=g+Math.imul(F,dt)|0,f=f+Math.imul(O,ft)|0,l=l+Math.imul(O,ht)|0,l=l+Math.imul(P,ft)|0,g=g+Math.imul(P,ht)|0;var $r=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+($r>>>26)|0,$r&=67108863,f=Math.imul(Q,ct),l=Math.imul(Q,lt),l=l+Math.imul(Y,ct)|0,g=Math.imul(Y,lt),f=f+Math.imul(X,ut)|0,l=l+Math.imul(X,mt)|0,l=l+Math.imul(z,ut)|0,g=g+Math.imul(z,mt)|0,f=f+Math.imul(K,pt)|0,l=l+Math.imul(K,dt)|0,l=l+Math.imul($,pt)|0,g=g+Math.imul($,dt)|0,f=f+Math.imul(_,ft)|0,l=l+Math.imul(_,ht)|0,l=l+Math.imul(F,ft)|0,g=g+Math.imul(F,ht)|0,f=f+Math.imul(O,gt)|0,l=l+Math.imul(O,yt)|0,l=l+Math.imul(P,gt)|0,g=g+Math.imul(P,yt)|0;var Hr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Hr>>>26)|0,Hr&=67108863,f=Math.imul(J,ct),l=Math.imul(J,lt),l=l+Math.imul(Z,ct)|0,g=Math.imul(Z,lt),f=f+Math.imul(Q,ut)|0,l=l+Math.imul(Q,mt)|0,l=l+Math.imul(Y,ut)|0,g=g+Math.imul(Y,mt)|0,f=f+Math.imul(X,pt)|0,l=l+Math.imul(X,dt)|0,l=l+Math.imul(z,pt)|0,g=g+Math.imul(z,dt)|0,f=f+Math.imul(K,ft)|0,l=l+Math.imul(K,ht)|0,l=l+Math.imul($,ft)|0,g=g+Math.imul($,ht)|0,f=f+Math.imul(_,gt)|0,l=l+Math.imul(_,yt)|0,l=l+Math.imul(F,gt)|0,g=g+Math.imul(F,yt)|0,f=f+Math.imul(O,bt)|0,l=l+Math.imul(O,Tt)|0,l=l+Math.imul(P,bt)|0,g=g+Math.imul(P,Tt)|0;var Gr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Gr>>>26)|0,Gr&=67108863,f=Math.imul(tt,ct),l=Math.imul(tt,lt),l=l+Math.imul(et,ct)|0,g=Math.imul(et,lt),f=f+Math.imul(J,ut)|0,l=l+Math.imul(J,mt)|0,l=l+Math.imul(Z,ut)|0,g=g+Math.imul(Z,mt)|0,f=f+Math.imul(Q,pt)|0,l=l+Math.imul(Q,dt)|0,l=l+Math.imul(Y,pt)|0,g=g+Math.imul(Y,dt)|0,f=f+Math.imul(X,ft)|0,l=l+Math.imul(X,ht)|0,l=l+Math.imul(z,ft)|0,g=g+Math.imul(z,ht)|0,f=f+Math.imul(K,gt)|0,l=l+Math.imul(K,yt)|0,l=l+Math.imul($,gt)|0,g=g+Math.imul($,yt)|0,f=f+Math.imul(_,bt)|0,l=l+Math.imul(_,Tt)|0,l=l+Math.imul(F,bt)|0,g=g+Math.imul(F,Tt)|0,f=f+Math.imul(O,St)|0,l=l+Math.imul(O,wt)|0,l=l+Math.imul(P,St)|0,g=g+Math.imul(P,wt)|0;var Xr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Xr>>>26)|0,Xr&=67108863,f=Math.imul(nt,ct),l=Math.imul(nt,lt),l=l+Math.imul(ot,ct)|0,g=Math.imul(ot,lt),f=f+Math.imul(tt,ut)|0,l=l+Math.imul(tt,mt)|0,l=l+Math.imul(et,ut)|0,g=g+Math.imul(et,mt)|0,f=f+Math.imul(J,pt)|0,l=l+Math.imul(J,dt)|0,l=l+Math.imul(Z,pt)|0,g=g+Math.imul(Z,dt)|0,f=f+Math.imul(Q,ft)|0,l=l+Math.imul(Q,ht)|0,l=l+Math.imul(Y,ft)|0,g=g+Math.imul(Y,ht)|0,f=f+Math.imul(X,gt)|0,l=l+Math.imul(X,yt)|0,l=l+Math.imul(z,gt)|0,g=g+Math.imul(z,yt)|0,f=f+Math.imul(K,bt)|0,l=l+Math.imul(K,Tt)|0,l=l+Math.imul($,bt)|0,g=g+Math.imul($,Tt)|0,f=f+Math.imul(_,St)|0,l=l+Math.imul(_,wt)|0,l=l+Math.imul(F,St)|0,g=g+Math.imul(F,wt)|0,f=f+Math.imul(O,It)|0,l=l+Math.imul(O,Ct)|0,l=l+Math.imul(P,It)|0,g=g+Math.imul(P,Ct)|0;var zr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(zr>>>26)|0,zr&=67108863,f=Math.imul(at,ct),l=Math.imul(at,lt),l=l+Math.imul(it,ct)|0,g=Math.imul(it,lt),f=f+Math.imul(nt,ut)|0,l=l+Math.imul(nt,mt)|0,l=l+Math.imul(ot,ut)|0,g=g+Math.imul(ot,mt)|0,f=f+Math.imul(tt,pt)|0,l=l+Math.imul(tt,dt)|0,l=l+Math.imul(et,pt)|0,g=g+Math.imul(et,dt)|0,f=f+Math.imul(J,ft)|0,l=l+Math.imul(J,ht)|0,l=l+Math.imul(Z,ft)|0,g=g+Math.imul(Z,ht)|0,f=f+Math.imul(Q,gt)|0,l=l+Math.imul(Q,yt)|0,l=l+Math.imul(Y,gt)|0,g=g+Math.imul(Y,yt)|0,f=f+Math.imul(X,bt)|0,l=l+Math.imul(X,Tt)|0,l=l+Math.imul(z,bt)|0,g=g+Math.imul(z,Tt)|0,f=f+Math.imul(K,St)|0,l=l+Math.imul(K,wt)|0,l=l+Math.imul($,St)|0,g=g+Math.imul($,wt)|0,f=f+Math.imul(_,It)|0,l=l+Math.imul(_,Ct)|0,l=l+Math.imul(F,It)|0,g=g+Math.imul(F,Ct)|0,f=f+Math.imul(O,xt)|0,l=l+Math.imul(O,Dt)|0,l=l+Math.imul(P,xt)|0,g=g+Math.imul(P,Dt)|0;var Qr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Qr>>>26)|0,Qr&=67108863,f=Math.imul(rt,ct),l=Math.imul(rt,lt),l=l+Math.imul(st,ct)|0,g=Math.imul(st,lt),f=f+Math.imul(at,ut)|0,l=l+Math.imul(at,mt)|0,l=l+Math.imul(it,ut)|0,g=g+Math.imul(it,mt)|0,f=f+Math.imul(nt,pt)|0,l=l+Math.imul(nt,dt)|0,l=l+Math.imul(ot,pt)|0,g=g+Math.imul(ot,dt)|0,f=f+Math.imul(tt,ft)|0,l=l+Math.imul(tt,ht)|0,l=l+Math.imul(et,ft)|0,g=g+Math.imul(et,ht)|0,f=f+Math.imul(J,gt)|0,l=l+Math.imul(J,yt)|0,l=l+Math.imul(Z,gt)|0,g=g+Math.imul(Z,yt)|0,f=f+Math.imul(Q,bt)|0,l=l+Math.imul(Q,Tt)|0,l=l+Math.imul(Y,bt)|0,g=g+Math.imul(Y,Tt)|0,f=f+Math.imul(X,St)|0,l=l+Math.imul(X,wt)|0,l=l+Math.imul(z,St)|0,g=g+Math.imul(z,wt)|0,f=f+Math.imul(K,It)|0,l=l+Math.imul(K,Ct)|0,l=l+Math.imul($,It)|0,g=g+Math.imul($,Ct)|0,f=f+Math.imul(_,xt)|0,l=l+Math.imul(_,Dt)|0,l=l+Math.imul(F,xt)|0,g=g+Math.imul(F,Dt)|0,f=f+Math.imul(O,kt)|0,l=l+Math.imul(O,vt)|0,l=l+Math.imul(P,kt)|0,g=g+Math.imul(P,vt)|0;var Yr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Yr>>>26)|0,Yr&=67108863,f=Math.imul(rt,ut),l=Math.imul(rt,mt),l=l+Math.imul(st,ut)|0,g=Math.imul(st,mt),f=f+Math.imul(at,pt)|0,l=l+Math.imul(at,dt)|0,l=l+Math.imul(it,pt)|0,g=g+Math.imul(it,dt)|0,f=f+Math.imul(nt,ft)|0,l=l+Math.imul(nt,ht)|0,l=l+Math.imul(ot,ft)|0,g=g+Math.imul(ot,ht)|0,f=f+Math.imul(tt,gt)|0,l=l+Math.imul(tt,yt)|0,l=l+Math.imul(et,gt)|0,g=g+Math.imul(et,yt)|0,f=f+Math.imul(J,bt)|0,l=l+Math.imul(J,Tt)|0,l=l+Math.imul(Z,bt)|0,g=g+Math.imul(Z,Tt)|0,f=f+Math.imul(Q,St)|0,l=l+Math.imul(Q,wt)|0,l=l+Math.imul(Y,St)|0,g=g+Math.imul(Y,wt)|0,f=f+Math.imul(X,It)|0,l=l+Math.imul(X,Ct)|0,l=l+Math.imul(z,It)|0,g=g+Math.imul(z,Ct)|0,f=f+Math.imul(K,xt)|0,l=l+Math.imul(K,Dt)|0,l=l+Math.imul($,xt)|0,g=g+Math.imul($,Dt)|0,f=f+Math.imul(_,kt)|0,l=l+Math.imul(_,vt)|0,l=l+Math.imul(F,kt)|0,g=g+Math.imul(F,vt)|0;var Jr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Jr>>>26)|0,Jr&=67108863,f=Math.imul(rt,pt),l=Math.imul(rt,dt),l=l+Math.imul(st,pt)|0,g=Math.imul(st,dt),f=f+Math.imul(at,ft)|0,l=l+Math.imul(at,ht)|0,l=l+Math.imul(it,ft)|0,g=g+Math.imul(it,ht)|0,f=f+Math.imul(nt,gt)|0,l=l+Math.imul(nt,yt)|0,l=l+Math.imul(ot,gt)|0,g=g+Math.imul(ot,yt)|0,f=f+Math.imul(tt,bt)|0,l=l+Math.imul(tt,Tt)|0,l=l+Math.imul(et,bt)|0,g=g+Math.imul(et,Tt)|0,f=f+Math.imul(J,St)|0,l=l+Math.imul(J,wt)|0,l=l+Math.imul(Z,St)|0,g=g+Math.imul(Z,wt)|0,f=f+Math.imul(Q,It)|0,l=l+Math.imul(Q,Ct)|0,l=l+Math.imul(Y,It)|0,g=g+Math.imul(Y,Ct)|0,f=f+Math.imul(X,xt)|0,l=l+Math.imul(X,Dt)|0,l=l+Math.imul(z,xt)|0,g=g+Math.imul(z,Dt)|0,f=f+Math.imul(K,kt)|0,l=l+Math.imul(K,vt)|0,l=l+Math.imul($,kt)|0,g=g+Math.imul($,vt)|0;var Zr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Zr>>>26)|0,Zr&=67108863,f=Math.imul(rt,ft),l=Math.imul(rt,ht),l=l+Math.imul(st,ft)|0,g=Math.imul(st,ht),f=f+Math.imul(at,gt)|0,l=l+Math.imul(at,yt)|0,l=l+Math.imul(it,gt)|0,g=g+Math.imul(it,yt)|0,f=f+Math.imul(nt,bt)|0,l=l+Math.imul(nt,Tt)|0,l=l+Math.imul(ot,bt)|0,g=g+Math.imul(ot,Tt)|0,f=f+Math.imul(tt,St)|0,l=l+Math.imul(tt,wt)|0,l=l+Math.imul(et,St)|0,g=g+Math.imul(et,wt)|0,f=f+Math.imul(J,It)|0,l=l+Math.imul(J,Ct)|0,l=l+Math.imul(Z,It)|0,g=g+Math.imul(Z,Ct)|0,f=f+Math.imul(Q,xt)|0,l=l+Math.imul(Q,Dt)|0,l=l+Math.imul(Y,xt)|0,g=g+Math.imul(Y,Dt)|0,f=f+Math.imul(X,kt)|0,l=l+Math.imul(X,vt)|0,l=l+Math.imul(z,kt)|0,g=g+Math.imul(z,vt)|0;var ts=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(ts>>>26)|0,ts&=67108863,f=Math.imul(rt,gt),l=Math.imul(rt,yt),l=l+Math.imul(st,gt)|0,g=Math.imul(st,yt),f=f+Math.imul(at,bt)|0,l=l+Math.imul(at,Tt)|0,l=l+Math.imul(it,bt)|0,g=g+Math.imul(it,Tt)|0,f=f+Math.imul(nt,St)|0,l=l+Math.imul(nt,wt)|0,l=l+Math.imul(ot,St)|0,g=g+Math.imul(ot,wt)|0,f=f+Math.imul(tt,It)|0,l=l+Math.imul(tt,Ct)|0,l=l+Math.imul(et,It)|0,g=g+Math.imul(et,Ct)|0,f=f+Math.imul(J,xt)|0,l=l+Math.imul(J,Dt)|0,l=l+Math.imul(Z,xt)|0,g=g+Math.imul(Z,Dt)|0,f=f+Math.imul(Q,kt)|0,l=l+Math.imul(Q,vt)|0,l=l+Math.imul(Y,kt)|0,g=g+Math.imul(Y,vt)|0;var es=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(es>>>26)|0,es&=67108863,f=Math.imul(rt,bt),l=Math.imul(rt,Tt),l=l+Math.imul(st,bt)|0,g=Math.imul(st,Tt),f=f+Math.imul(at,St)|0,l=l+Math.imul(at,wt)|0,l=l+Math.imul(it,St)|0,g=g+Math.imul(it,wt)|0,f=f+Math.imul(nt,It)|0,l=l+Math.imul(nt,Ct)|0,l=l+Math.imul(ot,It)|0,g=g+Math.imul(ot,Ct)|0,f=f+Math.imul(tt,xt)|0,l=l+Math.imul(tt,Dt)|0,l=l+Math.imul(et,xt)|0,g=g+Math.imul(et,Dt)|0,f=f+Math.imul(J,kt)|0,l=l+Math.imul(J,vt)|0,l=l+Math.imul(Z,kt)|0,g=g+Math.imul(Z,vt)|0;var ns=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(ns>>>26)|0,ns&=67108863,f=Math.imul(rt,St),l=Math.imul(rt,wt),l=l+Math.imul(st,St)|0,g=Math.imul(st,wt),f=f+Math.imul(at,It)|0,l=l+Math.imul(at,Ct)|0,l=l+Math.imul(it,It)|0,g=g+Math.imul(it,Ct)|0,f=f+Math.imul(nt,xt)|0,l=l+Math.imul(nt,Dt)|0,l=l+Math.imul(ot,xt)|0,g=g+Math.imul(ot,Dt)|0,f=f+Math.imul(tt,kt)|0,l=l+Math.imul(tt,vt)|0,l=l+Math.imul(et,kt)|0,g=g+Math.imul(et,vt)|0;var os=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(os>>>26)|0,os&=67108863,f=Math.imul(rt,It),l=Math.imul(rt,Ct),l=l+Math.imul(st,It)|0,g=Math.imul(st,Ct),f=f+Math.imul(at,xt)|0,l=l+Math.imul(at,Dt)|0,l=l+Math.imul(it,xt)|0,g=g+Math.imul(it,Dt)|0,f=f+Math.imul(nt,kt)|0,l=l+Math.imul(nt,vt)|0,l=l+Math.imul(ot,kt)|0,g=g+Math.imul(ot,vt)|0;var as=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(as>>>26)|0,as&=67108863,f=Math.imul(rt,xt),l=Math.imul(rt,Dt),l=l+Math.imul(st,xt)|0,g=Math.imul(st,Dt),f=f+Math.imul(at,kt)|0,l=l+Math.imul(at,vt)|0,l=l+Math.imul(it,kt)|0,g=g+Math.imul(it,vt)|0;var is=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(is>>>26)|0,is&=67108863,f=Math.imul(rt,kt),l=Math.imul(rt,vt),l=l+Math.imul(st,kt)|0,g=Math.imul(st,vt);var rs=(C+f|0)+((l&8191)<<13)|0;return C=(g+(l>>>13)|0)+(rs>>>26)|0,rs&=67108863,T[0]=Fr,T[1]=Kr,T[2]=Vr,T[3]=$r,T[4]=Hr,T[5]=Gr,T[6]=Xr,T[7]=zr,T[8]=Qr,T[9]=Yr,T[10]=Jr,T[11]=Zr,T[12]=ts,T[13]=es,T[14]=ns,T[15]=os,T[16]=as,T[17]=is,T[18]=rs,C!==0&&(T[19]=C,m.length++),m};Math.imul||(U=L);function q(y,r,u){u.negative=r.negative^y.negative,u.length=y.length+r.length;for(var m=0,d=0,h=0;h<u.length-1;h++){var T=d;d=0;for(var C=m&67108863,f=Math.min(h,r.length-1),l=Math.max(0,h-y.length+1);l<=f;l++){var g=h-l,v=y.words[g]|0,O=r.words[l]|0,P=v*O,B=P&67108863;T=T+(P/67108864|0)|0,B=B+C|0,C=B&67108863,T=T+(B>>>26)|0,d+=T>>>26,T&=67108863}u.words[h]=C,m=T,T=d}return m!==0?u.words[h]=m:u.length--,u._strip()}function Ot(y,r,u){return q(y,r,u)}o.prototype.mulTo=function(r,u){var m,d=this.length+r.length;return this.length===10&&r.length===10?m=U(this,r,u):d<63?m=L(this,r,u):d<1024?m=q(this,r,u):m=Ot(this,r,u),m};function W(y,r){this.x=y,this.y=r}W.prototype.makeRBT=function(r){for(var u=new Array(r),m=o.prototype._countBits(r)-1,d=0;d<r;d++)u[d]=this.revBin(d,m,r);return u},W.prototype.revBin=function(r,u,m){if(r===0||r===m-1)return r;for(var d=0,h=0;h<u;h++)d|=(r&1)<<u-h-1,r>>=1;return d},W.prototype.permute=function(r,u,m,d,h,T){for(var C=0;C<T;C++)d[C]=u[r[C]],h[C]=m[r[C]]},W.prototype.transform=function(r,u,m,d,h,T){this.permute(T,r,u,m,d,h);for(var C=1;C<h;C<<=1)for(var f=C<<1,l=Math.cos(2*Math.PI/f),g=Math.sin(2*Math.PI/f),v=0;v<h;v+=f)for(var O=l,P=g,B=0;B<C;B++){var _=m[v+B],F=d[v+B],pe=m[v+B+C],K=d[v+B+C],$=O*pe-P*K;K=O*K+P*pe,pe=$,m[v+B]=_+pe,d[v+B]=F+K,m[v+B+C]=_-pe,d[v+B+C]=F-K,B!==f&&($=l*O-g*P,P=l*P+g*O,O=$)}},W.prototype.guessLen13b=function(r,u){var m=Math.max(u,r)|1,d=m&1,h=0;for(m=m/2|0;m;m=m>>>1)h++;return 1<<h+1+d},W.prototype.conjugate=function(r,u,m){if(!(m<=1))for(var d=0;d<m/2;d++){var h=r[d];r[d]=r[m-d-1],r[m-d-1]=h,h=u[d],u[d]=-u[m-d-1],u[m-d-1]=-h}},W.prototype.normalize13b=function(r,u){for(var m=0,d=0;d<u/2;d++){var h=Math.round(r[2*d+1]/u)*8192+Math.round(r[2*d]/u)+m;r[d]=h&67108863,h<67108864?m=0:m=h/67108864|0}return r},W.prototype.convert13b=function(r,u,m,d){for(var h=0,T=0;T<u;T++)h=h+(r[T]|0),m[2*T]=h&8191,h=h>>>13,m[2*T+1]=h&8191,h=h>>>13;for(T=2*u;T<d;++T)m[T]=0;t(h===0),t((h&-8192)===0)},W.prototype.stub=function(r){for(var u=new Array(r),m=0;m<r;m++)u[m]=0;return u},W.prototype.mulp=function(r,u,m){var d=2*this.guessLen13b(r.length,u.length),h=this.makeRBT(d),T=this.stub(d),C=new Array(d),f=new Array(d),l=new Array(d),g=new Array(d),v=new Array(d),O=new Array(d),P=m.words;P.length=d,this.convert13b(r.words,r.length,C,d),this.convert13b(u.words,u.length,g,d),this.transform(C,T,f,l,d,h),this.transform(g,T,v,O,d,h);for(var B=0;B<d;B++){var _=f[B]*v[B]-l[B]*O[B];l[B]=f[B]*O[B]+l[B]*v[B],f[B]=_}return this.conjugate(f,l,d),this.transform(f,l,P,T,d,h),this.conjugate(P,T,d),this.normalize13b(P,d),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),Ot(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,d=0;d<this.length;d++){var h=(this.words[d]|0)*r,T=(h&67108863)+(m&67108863);m>>=26,m+=h/67108864|0,m+=T>>>26,this.words[d]=T&67108863}return m!==0&&(this.words[d]=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=M(r);if(u.length===0)return new o(1);for(var m=this,d=0;d<u.length&&u[d]===0;d++,m=m.sqr());if(++d<u.length)for(var h=m.sqr();d<u.length;d++,h=h.sqr())u[d]!==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,d=67108863>>>26-u<<26-u,h;if(u!==0){var T=0;for(h=0;h<this.length;h++){var C=this.words[h]&d,f=(this.words[h]|0)-C<<u;this.words[h]=f|T,T=C>>>26-u}T&&(this.words[h]=T,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 d;u?d=(u-u%26)/26:d=0;var h=r%26,T=Math.min((r-h)/26,this.length),C=67108863^67108863>>>h<<h,f=m;if(d-=T,d=Math.max(0,d),f){for(var l=0;l<T;l++)f.words[l]=this.words[l];f.length=T}if(T!==0)if(this.length>T)for(this.length-=T,l=0;l<this.length;l++)this.words[l]=this.words[l+T];else this.words[0]=0,this.length=1;var g=0;for(l=this.length-1;l>=0&&(g!==0||l>=d);l--){var v=this.words[l]|0;this.words[l]=g<<26-h|v>>>h,g=v&C}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,d=1<<u;if(this.length<=m)return!1;var h=this.words[m];return!!(h&d)},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 d=67108863^67108863>>>u<<u;this.words[this.length-1]&=d}return this.length===0&&(this.words[0]=0,this.length=1),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 d=r.length+m,h;this._expand(d);var T,C=0;for(h=0;h<r.length;h++){T=(this.words[h+m]|0)+C;var f=(r.words[h]|0)*u;T-=f&67108863,C=(T>>26)-(f/67108864|0),this.words[h+m]=T&67108863}for(;h<this.length-m;h++)T=(this.words[h+m]|0)+C,C=T>>26,this.words[h+m]=T&67108863;if(C===0)return this._strip();for(t(C===-1),C=0,h=0;h<this.length;h++)T=-(this.words[h]|0)+C,C=T>>26,this.words[h]=T&67108863;return this.negative=1,this._strip()},o.prototype._wordDiv=function(r,u){var m=this.length-r.length,d=this.clone(),h=r,T=h.words[h.length-1]|0,C=this._countBits(T);m=26-C,m!==0&&(h=h.ushln(m),d.iushln(m),T=h.words[h.length-1]|0);var f=d.length-h.length,l;if(u!=="mod"){l=new o(null),l.length=f+1,l.words=new Array(l.length);for(var g=0;g<l.length;g++)l.words[g]=0}var v=d.clone()._ishlnsubmul(h,1,f);v.negative===0&&(d=v,l&&(l.words[f]=1));for(var O=f-1;O>=0;O--){var P=(d.words[h.length+O]|0)*67108864+(d.words[h.length+O-1]|0);for(P=Math.min(P/T|0,67108863),d._ishlnsubmul(h,P,O);d.negative!==0;)P--,d.negative=0,d._ishlnsubmul(h,1,O),d.isZero()||(d.negative^=1);l&&(l.words[O]=P)}return l&&l._strip(),d._strip(),u!=="div"&&m!==0&&d.iushrn(m),{div:l||null,mod:d}},o.prototype.divmod=function(r,u,m){if(t(!r.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var d,h,T;return this.negative!==0&&r.negative===0?(T=this.neg().divmod(r,u),u!=="mod"&&(d=T.div.neg()),u!=="div"&&(h=T.mod.neg(),m&&h.negative!==0&&h.iadd(r)),{div:d,mod:h}):this.negative===0&&r.negative!==0?(T=this.divmod(r.neg(),u),u!=="mod"&&(d=T.div.neg()),{div:d,mod:T.mod}):(this.negative&r.negative)!==0?(T=this.neg().divmod(r.neg(),u),u!=="div"&&(h=T.mod.neg(),m&&h.negative!==0&&h.isub(r)),{div:T.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,d=r.ushrn(1),h=r.andln(1),T=m.cmp(d);return T<0||h===1&&T===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,d=0,h=this.length-1;h>=0;h--)d=(m*d+(this.words[h]|0))%r;return u?-d:d},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,d=this.length-1;d>=0;d--){var h=(this.words[d]|0)+m*67108864;this.words[d]=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 d=new o(1),h=new o(0),T=new o(0),C=new o(1),f=0;u.isEven()&&m.isEven();)u.iushrn(1),m.iushrn(1),++f;for(var l=m.clone(),g=u.clone();!u.isZero();){for(var v=0,O=1;(u.words[0]&O)===0&&v<26;++v,O<<=1);if(v>0)for(u.iushrn(v);v-- >0;)(d.isOdd()||h.isOdd())&&(d.iadd(l),h.isub(g)),d.iushrn(1),h.iushrn(1);for(var P=0,B=1;(m.words[0]&B)===0&&P<26;++P,B<<=1);if(P>0)for(m.iushrn(P);P-- >0;)(T.isOdd()||C.isOdd())&&(T.iadd(l),C.isub(g)),T.iushrn(1),C.iushrn(1);u.cmp(m)>=0?(u.isub(m),d.isub(T),h.isub(C)):(m.isub(u),T.isub(d),C.isub(h))}return{a:T,b:C,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 d=new o(1),h=new o(0),T=m.clone();u.cmpn(1)>0&&m.cmpn(1)>0;){for(var C=0,f=1;(u.words[0]&f)===0&&C<26;++C,f<<=1);if(C>0)for(u.iushrn(C);C-- >0;)d.isOdd()&&d.iadd(T),d.iushrn(1);for(var l=0,g=1;(m.words[0]&g)===0&&l<26;++l,g<<=1);if(l>0)for(m.iushrn(l);l-- >0;)h.isOdd()&&h.iadd(T),h.iushrn(1);u.cmp(m)>=0?(u.isub(m),d.isub(h)):(m.isub(u),h.isub(d))}var v;return u.cmpn(1)===0?v=d: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 d=0;u.isEven()&&m.isEven();d++)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 T=u;u=m,m=T}else if(h===0||m.cmpn(1)===0)break;u.isub(m)}while(!0);return m.iushln(d)},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,d=1<<u;if(this.length<=m)return this._expand(m+1),this.words[m]|=d,this;for(var h=d,T=m;h!==0&&T<this.length;T++){var C=this.words[T]|0;C+=h,h=C>>>26,C&=67108863,this.words[T]=C}return h!==0&&(this.words[T]=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 d=this.words[0]|0;m=d===r?0:d<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 d=this.words[m]|0,h=r.words[m]|0;if(d!==h){d<h?u=-1:d>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 H(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 Ke={k256:null,p224:null,p192:null,p25519:null};function Et(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()}Et.prototype._tmp=function(){var r=new o(null);return r.words=new Array(Math.ceil(this.n/13)),r},Et.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 d=m<this.n?-1:u.ucmp(this.p);return d===0?(u.words[0]=0,u.length=1):d>0?u.isub(this.p):u.strip!==void 0?u.strip():u._strip(),u},Et.prototype.split=function(r,u){r.iushrn(this.n,0,u)},Et.prototype.imulK=function(r){return r.imul(this.k)};function Ve(){Et.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Ve,Et),Ve.prototype.split=function(r,u){for(var m=4194303,d=Math.min(r.length,9),h=0;h<d;h++)u.words[h]=r.words[h];if(u.length=d,r.length<=9){r.words[0]=0,r.length=1;return}var T=r.words[9];for(u.words[u.length++]=T&m,h=10;h<r.length;h++){var C=r.words[h]|0;r.words[h-10]=(C&m)<<4|T>>>22,T=C}T>>>=22,r.words[h-10]=T,T===0&&r.length>10?r.length-=10:r.length-=9},Ve.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 d=r.words[m]|0;u+=d*977,r.words[m]=u&67108863,u=d*64+(u/67108864|0)}return r.words[r.length-1]===0&&(r.length--,r.words[r.length-1]===0&&r.length--),r};function zn(){Et.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}n(zn,Et);function Qn(){Et.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}n(Qn,Et);function yn(){Et.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}n(yn,Et),yn.prototype.imulK=function(r){for(var u=0,m=0;m<r.length;m++){var d=(r.words[m]|0)*19+u,h=d&67108863;d>>>=26,r.words[m]=h,u=d}return u!==0&&(r.words[r.length++]=u),r},o._prime=function(r){if(Ke[r])return Ke[r];var u;if(r==="k256")u=new Ve;else if(r==="p224")u=new zn;else if(r==="p192")u=new Qn;else if(r==="p25519")u=new yn;else throw new Error("Unknown prime "+r);return Ke[r]=u,u};function H(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}H.prototype._verify1=function(r){t(r.negative===0,"red works only with positives"),t(r.red,"red works only with red numbers")},H.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")},H.prototype.imod=function(r){return this.prime?this.prime.ireduce(r)._forceRed(this):(b(r,r.umod(this.m)._forceRed(this)),r)},H.prototype.neg=function(r){return r.isZero()?r.clone():this.m.sub(r)._forceRed(this)},H.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)},H.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},H.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)},H.prototype.isub=function(r,u){this._verify2(r,u);var m=r.isub(u);return m.cmpn(0)<0&&m.iadd(this.m),m},H.prototype.shl=function(r,u){return this._verify1(r),this.imod(r.ushln(u))},H.prototype.imul=function(r,u){return this._verify2(r,u),this.imod(r.imul(u))},H.prototype.mul=function(r,u){return this._verify2(r,u),this.imod(r.mul(u))},H.prototype.isqr=function(r){return this.imul(r,r.clone())},H.prototype.sqr=function(r){return this.mul(r,r)},H.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 d=this.m.subn(1),h=0;!d.isZero()&&d.andln(1)===0;)h++,d.iushrn(1);t(!d.isZero());var T=new o(1).toRed(this),C=T.redNeg(),f=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);this.pow(l,f).cmp(C)!==0;)l.redIAdd(C);for(var g=this.pow(l,d),v=this.pow(r,d.addn(1).iushrn(1)),O=this.pow(r,d),P=h;O.cmp(T)!==0;){for(var B=O,_=0;B.cmp(T)!==0;_++)B=B.redSqr();t(_<P);var F=this.pow(g,new o(1).iushln(P-_-1));v=v.redMul(F),g=F.redSqr(),O=O.redMul(g),P=_}return v},H.prototype.invm=function(r){var u=r._invmp(this.m);return u.negative!==0?(u.negative=0,this.imod(u).redNeg()):this.imod(u)},H.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,d=new Array(1<<m);d[0]=new o(1).toRed(this),d[1]=r;for(var h=2;h<d.length;h++)d[h]=this.mul(d[h-1],r);var T=d[0],C=0,f=0,l=u.bitLength()%26;for(l===0&&(l=26),h=u.length-1;h>=0;h--){for(var g=u.words[h],v=l-1;v>=0;v--){var O=g>>v&1;if(T!==d[0]&&(T=this.sqr(T)),O===0&&C===0){f=0;continue}C<<=1,C|=O,f++,!(f!==m&&(h!==0||v!==0))&&(T=this.mul(T,d[C]),f=0,C=0)}l=26}return T},H.prototype.convertTo=function(r){var u=r.umod(this.m);return u===r?u.clone():u},H.prototype.convertFrom=function(r){var u=r.clone();return u.red=null,u},o.mont=function(r){return new Pe(r)};function Pe(y){H.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,H),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),d=m.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=m.isub(d).iushrn(this.shift),T=h;return h.cmp(this.m)>=0?T=h.isub(this.m):h.cmpn(0)<0&&(T=h.iadd(this.m)),T._forceRed(this)},Pe.prototype.mul=function(r,u){if(r.isZero()||u.isZero())return new o(0)._forceRed(this);var m=r.mul(u),d=m.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=m.isub(d).iushrn(this.shift),T=h;return h.cmp(this.m)>=0?T=h.isub(this.m):h.cmpn(0)<0&&(T=h.iadd(this.m)),T._forceRed(this)},Pe.prototype.invm=function(r){var u=this.imod(r._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(typeof ac>"u"||ac,vp)});var Jf={};ss(Jf,{appHelpers:()=>Yf});module.exports=Ld(Jf);var Bc=require("@msafe/sui3-utils");var ie=require("@alphafi/alphafi-sdk"),$e=require("@msafe/sui3-utils"),Qt=require("@mysten/bcs");var Jn=class{constructor(e,t){this.transaction=e;this.simResult=t}transaction;simResult;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=ie.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&&ie.poolInfo[t].assetTypes.length===2}isSingleAssetDepositEvent(e,t){return e.event_type===0&&ie.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=Qt.bcs.u64().parse((0,Qt.fromBase64)(t)):t.length===24?n=Qt.bcs.u128().parse((0,Qt.fromBase64)(t)):t.length===44?n=Qt.bcs.u256().parse((0,Qt.fromBase64)(t)):n=Qt.bcs.u64().parse((0,Qt.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:$e.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}=ie.singleAssetPoolCoinMap[e],{expo:s}=ie.coinsList[i];n=Math.floor(Number(n)/10**(9-s)).toString()}return{txType:$e.TransactionType.Other,type:"depositSingleAsset",intentionData:{poolName:e,amount:n}}}decodeWithdraw(e){let t=this.extractXTokensAmount();return console.log("Decoder.decodeWithdraw",t),{txType:$e.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:$e.TransactionType.Other,type:"withdrawAlpha",intentionData:{withdrawFromLocked:Number(n)>0,xTokensAmount:t}}}decodeClaimReward(){return{txType:$e.TransactionType.Other,type:"claimReward",intentionData:{}}}};var Ac=require("@alphafi/alphafi-sdk");var vc=At(require("sort-keys-recursive")),w=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify((0,vc.default)(this.data))}};var Zn=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t;return await(0,Ac.claimRewardTxb)(n.address)}static fromData(t){return new a(t)}};var Mc=require("@alphafi/alphafi-sdk");var to=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t,{poolName:o,amount:i,isAmountA:s}=this.data;return await(0,Mc.depositDoubleAssetTxb)(o,n.address,i,s)}static fromData(t){return console.log("DepositDoubleAssetIntention.fromData",t),new a(t)}};var Oc=require("@alphafi/alphafi-sdk");var eo=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t,{poolName:o,amount:i}=this.data;return await(0,Oc.depositSingleAssetTxb)(o,n.address,i)}static fromData(t){return console.log("DepositSingleAssetIntention.fromData",t),new a(t)}};var Pc=require("@alphafi/alphafi-sdk");var no=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t,{poolName:o,xTokensAmount:i}=this.data;return await(0,Pc.withdrawTxb)(i,o,n.address)}static fromData(t){return console.log("WithdrawIntention.fromData",t),new a(t)}};var Rc=require("@alphafi/alphafi-sdk");var oo=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t,{withdrawFromLocked:o,xTokensAmount:i}=this.data;return await(0,Rc.withdrawAlphaTxb)(i,o,n.address)}static fromData(t){return console.log("WithdrawAlphaIntention.fromData",t),new a(t)}};var ao=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 c=new Jn(t,i).decode();return{txType:Bc.TransactionType.Other,txSubType:c.type,intentionData:c.intentionData}}async build(e){let{account:t}=e;console.log("AlphaFi build transaction type",e.txSubType);let n;switch(e.txSubType){case"depositSingleAsset":n=eo.fromData(e.intentionData);break;case"depositDoubleAsset":n=to.fromData(e.intentionData);break;case"withdraw":n=no.fromData(e.intentionData);break;case"withdrawAlpha":n=oo.fromData(e.intentionData);break;case"claimReward":n=Zn.fromData(e.intentionData);break;default:throw new Error("not implemented")}return n.build({account:t})}};var al=require("@msafe/sui3-utils");var jt=require("@msafe/sui3-utils"),io=require("@mysten/sui/bcs"),ro=require("bucket-protocol-sdk");var so=class{constructor(e){this.transaction=e}transaction;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(ro.SBUCK_FOUNTAIN_PACKAGE_ID,"fountain_core","stake")}isSBUCKUnstakeTransaction(){return!!this.getMoveCallPackageModuleCommand(ro.SBUCK_FOUNTAIN_PACKAGE_ID,"fountain_core","force_unstake")}isSBUCKClaimTransaction(){return!!this.getMoveCallPackageModuleCommand(ro.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:jt.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 c=this.getMoveCallCommand("high_top_up").MoveCall;[e]=c.typeArguments;let p=c.arguments[1];p.$kind==="Input"&&(t=this.getPureInputU64(p.Input));let b=c.arguments[3];if(b.$kind==="Input"){let S=this.getPureAddresses(b.Input);S.length===1&&([n]=S)}}else if(this.getMoveCallCommand("high_borrow")){let c=this.getMoveCallCommand("high_borrow").MoveCall;[e]=c.typeArguments;let p=c.arguments[4];p.$kind==="Input"&&(t=this.getPureInputU64(p.Input));let b=c.arguments[5];if(b.$kind==="Input"){let S=this.getPureAddresses(b.Input);S.length===1&&([n]=S)}}else if(this.getMoveCallCommand("high_borrow_with_strap")){let c=this.getMoveCallCommand("high_borrow_with_strap").MoveCall;[e]=c.typeArguments;let p=c.arguments[5];p.$kind==="Input"&&(t=this.getPureInputU64(p.Input));let b=c.arguments[6];if(b.$kind==="Input"){let S=this.getPureAddresses(b.Input);S.length===1&&([n]=S)}}return{txType:jt.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 c=this.getMoveCallCommand("repay_and_withdraw").MoveCall;[e]=c.typeArguments;let p=c.arguments[4];p.$kind==="Input"&&(n=this.getPureInputU64(p.Input));let b=c.arguments[5];if(b.$kind==="Input"){let I=this.getPureAddresses(b.Input);I.length===1&&([i]=I)}let S=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];S.$kind==="Input"&&(t=this.getPureInputU64(S.Input))}else if(this.getMoveCallCommand("repay_and_withdraw_with_strap")){let c=this.getMoveCallCommand("repay_and_withdraw_with_strap").MoveCall;[e]=c.typeArguments;let p=c.arguments[5];p.$kind==="Input"&&(n=this.getPureInputU64(p.Input));let b=c.arguments[6];if(b.$kind==="Input"){let I=this.getPureAddresses(b.Input);I.length===1&&([i]=I)}let S=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];S.$kind==="Input"&&(t=this.getPureInputU64(S.Input))}return{txType:jt.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 c=i.arguments[5];if(c.$kind==="Input"){let p=this.getPureAddresses(c.Input);p.length===1&&([n]=p)}}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 c=i.arguments[4];if(c.$kind==="Input"){let p=this.getPureAddresses(c.Input);p.length===1&&([n]=p)}}return{txType:jt.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:jt.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:jt.TransactionType.Other,type:"sbuck-deposit",intentionData:{coinType:t,amount:n,isStake:s}}}decodeSBUCKUnstake(){let e="0",t=this.isSBUCKStakeTransaction();if(t){let p=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];p.$kind==="Input"&&(e=this.getPureInputU64(p.Input))}let n=[],o=this.getMoveCallModuleCommands("proof_rule","unlock");if(o.length>0)for(let c=0;c<o.length;c++){let p=o[c];n.push("")}else{let c=this.getMoveCallModuleCommands("fountain_core","force_unstake");for(let p=0;p<c.length;p++){let S=c[p].MoveCall.arguments[2];if(S.$kind==="Input"){let{objectId:I}=this.inputs[S.Input].UnresolvedObject;n.push(I)}}}let i=this.isSBUCKWithdrawTransaction(),s={stakeProofs:n,amount:e,isStake:t,toBuck:i};return console.log("Decoder.decodeSBUCKUnstake",s),{txType:jt.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:jt.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:jt.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:jt.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:jt.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:jt.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:jt.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 io.bcs.U64.fromBase64(t.Pure.bytes)}getPureAddresses(e){let t=this.inputs[e];if(t.$kind!=="Pure")throw new Error("not pure argument");return io.bcs.vector(io.bcs.Address).fromBase64(t.Pure.bytes)}};var Lc=require("@msafe/sui3-utils");var Nc=require("@mysten/sui/transactions"),Wc=require("bucket-protocol-sdk");var Ec=require("bucket-protocol-sdk"),Nt=(a,e)=>{let t=a==="sui:mainnet"?"mainnet":"testnet";return new Ec.BucketClient(t,e.address)};var _c=async(a,e,t)=>{let{coinType:n,amount:o,buckToCoin:i}=a,s=new Nc.Transaction,c=Nt(t,e);return await(0,Wc.buildPsmTx)(c,s,n,o,i,e.address),s};var co=class a extends w{constructor(t){super(t);this.data=t}data;txType=Lc.TransactionType.Other;txSubType="psm";async build(t){let{account:n,network:o}=t;return await _c(this.data,n,o)}static fromData(t){return new a(t)}};var Kc=require("@msafe/sui3-utils");var bn=require("@mysten/sui/transactions"),de=require("bucket-protocol-sdk");var jc=async(a,e,t)=>{let{collateralType:n,collateralAmount:o,borrowAmount:i,insertionPlace:s,strapId:c}=a,p=new bn.Transaction,b=Nt(t,e);return await(0,de.buildBorrowTx)(b,p,n,o,i,e.address,s,c),p},Uc=async(a,e,t)=>{let{collateralType:n,withdrawAmount:o,insertionPlace:i,strapId:s}=a,c=new bn.Transaction,p=Nt(t,e);return await(0,de.buildWithdrawTx)(p,c,n,o,e.address,i,s),c},qc=async(a,e,t)=>{let{collateralType:n,repayAmount:o,withdrawAmount:i,isSurplus:s,insertionPlace:c,strapId:p}=a,b=new bn.Transaction,S=Nt(t,e);return await(0,de.buildRepayTx)(S,b,n,o,i,e.address,s,c,p),b},Fc=async(a,e,t)=>{let{collateralType:n,recipient:o,strapId:i}=a,s=new bn.Transaction,c=Nt(t,e);return await(0,de.buildCloseTx)(c,s,n,o,i),s};var lo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Kc.TransactionType.Other;txSubType="borrow";async build(t){let{account:n,network:o}=t;return await jc(this.data,n,o)}static fromData(t){return new a(t)}};var Vc=require("@msafe/sui3-utils");var uo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Vc.TransactionType.Other;txSubType="repay";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 mo=class a extends w{constructor(t){super(t);this.data=t}data;txType=$c.TransactionType.Other;txSubType="withdraw";async build(t){let{account:n,network:o}=t;return await Uc(this.data,n,o)}static fromData(t){return new a(t)}};var Hc=require("@msafe/sui3-utils");var po=class a extends w{constructor(t){super(t);this.data=t}data;txType=Hc.TransactionType.Other;txSubType="close";async build(t){let{account:n,network:o}=t;return await Fc(this.data,n,o)}static fromData(t){return new a(t)}};var Sn=require("@msafe/sui3-utils");var Tn=require("@mysten/sui/transactions"),fe=require("bucket-protocol-sdk");var Gc=async(a,e,t)=>{let{coinType:n,amount:o,isStake:i}=a,s=new Tn.Transaction,c=Nt(t,e);return await(0,fe.buildSBUCKDepositTx)(c,s,n,o,e.address,i),s},Xc=async(a,e,t)=>{let{stakeProofs:n,amount:o,isStake:i,toBuck:s}=a,c=new Tn.Transaction,p=Nt(t,e);return await(0,fe.buildSBUCKUnstakeTx)(p,c,n,o,e.address,i,s),c},zc=async(a,e,t)=>{let{amount:n}=a,o=new Tn.Transaction,i=Nt(t,e);return await(0,fe.buildSBUCKWithdrawTx)(i,o,n,e.address),o},Qc=async(a,e,t)=>{let{stakeProofs:n}=a,o=new Tn.Transaction,i=Nt(t,e);return await(0,fe.buildSBUCKClaimTx)(i,o,n,e.address),o};var fo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Sn.TransactionType.Other;txSubType="sbuck-deposit";async build(t){let{account:n,network:o}=t;return await Gc(this.data,n,o)}static fromData(t){return new a(t)}},ho=class a extends w{constructor(t){super(t);this.data=t}data;txType=Sn.TransactionType.Other;txSubType="sbuck-unstake";async build(t){let{account:n,network:o}=t;return await Xc(this.data,n,o)}static fromData(t){return new a(t)}},go=class a extends w{constructor(t){super(t);this.data=t}data;txType=Sn.TransactionType.Other;txSubType="sbuck-withdraw";async build(t){let{account:n,network:o}=t;return await zc(this.data,n,o)}static fromData(t){return new a(t)}},yo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Sn.TransactionType.Other;txSubType="sbuck-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 Io=require("@msafe/sui3-utils");var bo=require("@mysten/sui/transactions"),He=require("bucket-protocol-sdk");var Yc=async(a,e,t)=>{let{coinType:n,amount:o}=a,i=new bo.Transaction,s=Nt(t,e);return await(0,He.buildTankDepositTx)(s,i,n,o,e.address),i},Jc=async(a,e,t)=>{let{coinType:n,amount:o}=a,i=new bo.Transaction,s=Nt(t,e);return await(0,He.buildTankWithdrawTx)(s,i,n,o,e.address),i},Zc=async(a,e,t)=>{let{coinType:n}=a,o=new bo.Transaction,i=Nt(t,e);return await(0,He.buildTankClaimTx)(i,o,n,e.address),o};var tl=require("@mysten/sui/transactions"),el=require("bucket-protocol-sdk");var nl=async(a,e,t)=>{let{coinType:n,proofCount:o}=a,i=new tl.Transaction,s=Nt(t,e);return await(0,el.buildLockedClaimTx)(s,i,n,o,e.address),i};var To=class a extends w{constructor(t){super(t);this.data=t}data;txType=Io.TransactionType.Other;txSubType="tank-deposit";async build(t){let{account:n,network:o}=t;return await Yc(this.data,n,o)}static fromData(t){return new a(t)}},So=class a extends w{constructor(t){super(t);this.data=t}data;txType=Io.TransactionType.Other;txSubType="tank-withdraw";async build(t){let{account:n,network:o}=t;return await Jc(this.data,n,o)}static fromData(t){return new a(t)}},wo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Io.TransactionType.Other;txSubType="tank-claim";async build(t){let{account:n,network:o}=t;return await Zc(this.data,n,o)}static fromData(t){return new a(t)}};var ol=require("@msafe/sui3-utils");var Co=class a extends w{constructor(t){super(t);this.data=t}data;txType=ol.TransactionType.Other;txSubType="lock-claim";async build(t){let{account:n,network:o}=t;return await nl(this.data,n,o)}static fromData(t){return new a(t)}};var xo=class{application="bucket";supportSDK="@mysten/sui";async deserialize(e){console.log("Bucket helper deserialize input: ",e);let{transaction:t}=e,o=new so(t).decode();return{txType:al.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=co.fromData(e.intentionData);break;case"borrow":i=lo.fromData(e.intentionData);break;case"withdraw":i=mo.fromData(e.intentionData);break;case"repay":i=uo.fromData(e.intentionData);break;case"close":i=po.fromData(e.intentionData);break;case"tank-deposit":i=To.fromData(e.intentionData);break;case"tank-withdraw":i=So.fromData(e.intentionData);break;case"tank-claim":i=wo.fromData(e.intentionData);break;case"sbuck-deposit":i=fo.fromData(e.intentionData);break;case"sbuck-unstake":i=ho.fromData(e.intentionData);break;case"sbuck-withdraw":i=go.fromData(e.intentionData);break;case"sbuck-claim":i=yo.fromData(e.intentionData);break;case"lock-claim":i=Co.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};var ru=require("@msafe/sui3-utils");var pl=require("@msafe/sui3-utils");var Re=require("@mysten/sui/client"),Yt=async(a,e)=>{let{CetusClmmSDK:t}=await import("@cetusprotocol/sui-clmm-sdk"),n=t.createSDK({env:"mainnet",sui_client:new Re.SuiClient({url:(0,Re.getFullnodeUrl)("mainnet")})});return n.setSenderAddress(e.address),n},Ft=async(a,e)=>{let{CetusFarmsSDK:t}=await import("@cetusprotocol/farms-sdk"),n=t.createSDK({env:"mainnet",sui_client:new Re.SuiClient({url:(0,Re.getFullnodeUrl)("mainnet")})});return n.setSenderAddress(e.address),n},Ud="https://api-sui.cetus.zone/router_v2/find_routes",il=async(a,e)=>{let{AggregatorClient:t,Env:n}=await import("@cetusprotocol/aggregator-sdk"),o=new Re.SuiClient({url:"https://fullnode.mainnet.sui.io/"});return new t({endpoint:Ud,signer:e.address,client:o,env:n.Mainnet})},wn=async(a,e)=>{let{CetusVaultsSDK:t}=await import("@cetusprotocol/vaults-sdk"),n=t.createSDK({env:"mainnet"});return n.setSenderAddress(e.address),n},Ge=async(a,e)=>{let{CetusXcetusSDK:t}=await import("@cetusprotocol/xcetus-sdk"),n=t.createSDK({env:"mainnet"});return n.setSenderAddress(e.address),n};var rl=async(a,e,t)=>await(await Yt(t,e)).Pool.createPoolPayload(a),sl=async(a,e,t)=>await(await Yt(t,e)).Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg),cl=async(a,e,t)=>await(await Yt(t,e)).Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg),ll=async(a,e,t)=>await(await Yt(t,e)).Position.closePositionPayload(a),ul=async(a,e,t)=>await(await Yt(t,e)).Position.removeLiquidityPayload(a),ml=async(a,e,t)=>await(await Yt(t,e)).Rewarder.collectRewarderPayload(a);var Do=class a extends w{constructor(t){super(t);this.data=t}data;txType=pl.TransactionType.Other;txSubType="OpenAndAddLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await sl(i,n,o)}static fromData(t){return new a(t)}};var dl=require("@msafe/sui3-utils");var ko=class a extends w{constructor(t){super(t);this.data=t}data;txType=dl.TransactionType.Other;txSubType="ClaimFeeAndMining";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 fl=require("@msafe/sui3-utils");var vo=class a extends w{constructor(t){super(t);this.data=t}data;txType=fl.TransactionType.Other;txSubType="CreatePool";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await rl(i,n,o)}static fromData(t){return new a(t)}};var hl=require("@msafe/sui3-utils");var Ao=class a extends w{constructor(t){super(t);this.data=t}data;txType=hl.TransactionType.Other;txSubType="DecreaseLiquidity";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 Dl=require("@msafe/sui3-utils");var gl=async(a,e,t)=>await(await Ft(t,e)).Farms.openPositionAddLiquidityStakePayload(a),yl=async(a,e,t)=>await(await Ft(t,e)).Farms.addLiquidityFixCoinPayload(a),bl=async(a,e,t)=>await(await Ft(t,e)).Farms.removeLiquidityPayload(a);var Tl=async(a,e,t)=>await(await Ft(t,e)).Farms.removeLiquidityPayload(a),Sl=async(a,e,t)=>await(await Ft(t,e)).Farms.claimFeeAndClmmReward(a),wl=async(a,e,t)=>await(await Ft(t,e)).Farms.harvestPayload(a),Il=async(a,e,t)=>{let n=await Ft(t,e),o=Object.values(a);return await n.Farms.batchHarvestPayload(o)},Cl=async(a,e,t)=>await(await Ft(t,e)).Farms.depositPayload(a),xl=async(a,e,t)=>await(await Ft(t,e)).Farms.withdrawPayload(a);var Mo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Dl.TransactionType.Other;txSubType="FarmingOpenAndAddLiquidity";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 kl=require("@msafe/sui3-utils");var Oo=class a extends w{constructor(t){super(t);this.data=t}data;txType=kl.TransactionType.Other;txSubType="FarmingBatchHarvest";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Il(i,n,o)}static fromData(t){return new a(t)}};var vl=require("@msafe/sui3-utils");var Po=class a extends w{constructor(t){super(t);this.data=t}data;txType=vl.TransactionType.Other;txSubType="FarmingClaimFeeAndReward";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Sl(i,n,o)}static fromData(t){return new a(t)}};var Al=require("@msafe/sui3-utils");var Ro=class a extends w{constructor(t){super(t);this.data=t}data;txType=Al.TransactionType.Other;txSubType="FarmingDecreaseLiquidity";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 Ml=require("@msafe/sui3-utils");var Bo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Ml.TransactionType.Other;txSubType="FarmingHarvest";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 Ol=require("@msafe/sui3-utils");var Eo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Ol.TransactionType.Other;txSubType="FarmingIncreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await yl(i,n,o)}static fromData(t){return new a(t)}};var Pl=require("@msafe/sui3-utils");var No=class a extends w{constructor(t){super(t);this.data=t}data;txType=Pl.TransactionType.Other;txSubType="FarmingRemoveLiquidity";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 Rl=require("@msafe/sui3-utils");var Wo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Rl.TransactionType.Other;txSubType="FarmingStake";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 _o=class a extends w{constructor(t){super(t);this.data=t}data;txType=Bl.TransactionType.Other;txSubType="FarmingUnstake";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 El=require("@msafe/sui3-utils");var Lo=class a extends w{constructor(t){super(t);this.data=t}data;txType=El.TransactionType.Other;txSubType="IncreaseLiquidity";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 _l=require("@msafe/sui3-utils");var jo=async()=>{let{Transaction:a}=await import("@mysten/sui/transactions");return new a},qd=async(a,e,t)=>{let n=await wn(t,e),o=await jo();return o.setSender(e.address),n.Vest.buildRedeemPayload(a.params,o),o},Fd=async(a,e)=>{let{default:t,vaults_mainnet:n}=await import("haedal-vault-sdk"),o=new t(n);o.senderAddress=e.address;let i=await jo();return i.setSender(e.address),await o?.Vest.buildRedeemPayload(a.params,i),i},Nl=async(a,e,t)=>{let n=await Yt(t,e),o=await jo();return n?.Vest.buildRedeemPayload(a.params,o),o},Kd=async(a,e,t)=>{let n=await Yt(t,e),o=await Ft(t,e),i=await jo(),s=await o.Farms.withdrawReturnPayload(a.withdrawParams,i);return n.Vest.buildRedeemPayload(a.redeemParms.map(c=>({...c,clmm_position_id:s})),i),o.Farms.depositPayload({...a.depositParams,clmm_position_id:s},i),i},Wl=async(a,e,t)=>a.type==="clmm"?Nl(a,e,t):a.type==="farms"?Kd(a,e,t):a.type==="vaults"?qd(a,e,t):a.type==="haedalVaults"?Fd(a,e):Nl(a,e,t);var Uo=class a extends w{constructor(t){super(t);this.data=t}data;txType=_l.TransactionType.Other;txSubType="PosVestingRedeem";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 qo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Ll.TransactionType.Other;txSubType="RemoveLiquidity";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 ql=require("@msafe/sui3-utils");var jl=require("@mysten/sui/transactions");var Ul=async(a,e,t)=>{let{restituteMsafeFastRouterSwapParams:n}=await import("@cetusprotocol/aggregator-sdk"),o=await il(t,e),i=new jl.Transaction;return await o.fastRouterSwap({...a,router:n(a.router),txb:i}),i};var Fo=class a extends w{constructor(t){super(t);this.data=t}data;txType=ql.TransactionType.Other;txSubType="AggregatorSwap";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 Vl=require("@msafe/sui3-utils");var cs=require("@mysten/sui/transactions");var Fl=async(a,e,t)=>{let n=await wn(t,e),o=new cs.Transaction;return o.setSender(e.address),await n.Vaults.deposit(a,o),o},Kl=async(a,e,t)=>{let n=await wn(t,e),o=new cs.Transaction;return await n.Vaults.withdraw(a,o),o};var Ko=class a extends w{constructor(t){super(t);this.data=t}data;txType=Vl.TransactionType.Other;txSubType="AddVaultsPosition";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 $l=require("@msafe/sui3-utils");var Vo=class a extends w{constructor(t){super(t);this.data=t}data;txType=$l.TransactionType.Other;txSubType="RemoveVaultsPosition";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 zl=require("@msafe/sui3-utils");var Gl=require("@mysten/sui/transactions"),Hl={package_id:"0x355714a1eeb7ab1d80902da6c92001170cda1212edf524c32aa308a3ac177c31",published_at:"0x355714a1eeb7ab1d80902da6c92001170cda1212edf524c32aa308a3ac177c31",cetus_coin_type:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS"},Xl=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,c=new Gl.Transaction;return i.forEach(p=>{c.moveCall({target:`${Hl.published_at}::router::redeem`,typeArguments:[Hl.cetus_coin_type],arguments:[c.object(n),c.object(o),c.pure(p),c.object(s)]})}),c};var $o=class a extends w{constructor(t){super(t);this.data=t}data;txType=zl.TransactionType.Other;txSubType="VestingRedeem";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 eu=require("@msafe/sui3-utils");var Ql=async(a,e,t)=>await(await Ge(t,e)).XCetusModule.convertPayload(a),Yl=async(a,e,t)=>await(await Ge(t,e)).XCetusModule.redeemLockPayload(a),Jl=async(a,e,t)=>await(await Ge(t,e)).XCetusModule.redeemDividendV3Payload(a.veNftId,a.rewardList),Zl=async(a,e,t)=>await(await Ge(t,e)).XCetusModule.cancelRedeemPayload(a),tu=async(a,e,t)=>await(await Ge(t,e)).XCetusModule.redeemPayload(a);var Ho=class a extends w{constructor(t){super(t);this.data=t}data;txType=eu.TransactionType.Other;txSubType="xCETUSCancelRedeem";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Zl(i,n,o)}static fromData(t){return new a(t)}};var nu=require("@msafe/sui3-utils");var Go=class a extends w{constructor(t){super(t);this.data=t}data;txType=nu.TransactionType.Other;txSubType="xCETUSClaimStakingRwewards";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Jl(i,n,o)}static fromData(t){return new a(t)}};var ou=require("@msafe/sui3-utils");var Xo=class a extends w{constructor(t){super(t);this.data=t}data;txType=ou.TransactionType.Other;txSubType="xCETUSConvert";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 au=require("@msafe/sui3-utils");var zo=class a extends w{constructor(t){super(t);this.data=t}data;txType=au.TransactionType.Other;txSubType="xCETUSRedeem";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await tu(i,n,o)}static fromData(t){return new a(t)}};var iu=require("@msafe/sui3-utils");var Qo=class a extends w{constructor(t){super(t);this.data=t}data;txType=iu.TransactionType.Other;txSubType="xCETUSRedeemLock";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Yl(i,n,o)}static fromData(t){return new a(t)}};var Yo=class{application="cetus";supportSDK="@mysten/sui";async deserialize(e){console.log("Cetus helper deserialize input: ",e);let{txbParams:t,action:n}=e;return{txType:ru.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=Do.fromData(e.intentionData);break;case"IncreaseLiquidity":i=Lo.fromData(e.intentionData);break;case"DecreaseLiquidity":i=Ao.fromData(e.intentionData);break;case"RemoveLiquidity":i=qo.fromData(e.intentionData);break;case"ClaimFeeAndMining":i=ko.fromData(e.intentionData);break;case"FarmingOpenAndAddLiquidity":i=Mo.fromData(e.intentionData);break;case"FarmingIncreaseLiquidity":i=Eo.fromData(e.intentionData);break;case"FarmingDecreaseLiquidity":i=Ro.fromData(e.intentionData);break;case"FarmingRemoveLiquidity":i=No.fromData(e.intentionData);break;case"FarmingClaimFeeAndReward":i=Po.fromData(e.intentionData);break;case"FarmingHarvest":i=Bo.fromData(e.intentionData);break;case"FarmingBatchHarvest":i=Oo.fromData(e.intentionData);break;case"FarmingStake":i=Wo.fromData(e.intentionData);break;case"FarmingUnstake":i=_o.fromData(e.intentionData);break;case"xCETUSConvert":i=Xo.fromData(e.intentionData);break;case"xCETUSRedeemLock":i=Qo.fromData(e.intentionData);break;case"xCETUSClaimStakingRwewards":i=Go.fromData(e.intentionData);break;case"xCETUSCancelRedeem":i=Ho.fromData(e.intentionData);break;case"xCETUSRedeem":i=zo.fromData(e.intentionData);break;case"VestingRedeem":i=$o.fromData(e.intentionData);break;case"AggregatorSwap":i=Fo.fromData(e.intentionData);break;case"AddVaultsPosition":i=Ko.fromData(e.intentionData);break;case"RemoveVaultsPosition":i=Vo.fromData(e.intentionData);break;case"PosVestingRedeem":i=Uo.fromData(e.intentionData);break;case"CreatePool":i=vo.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};var Mu=require("@msafe/sui3-utils");var su=At(require("sort-keys-recursive")),Jt=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify((0,su.default)(this.data))}};var In=require("@mysten/sui.js/client");var ls={};ss(ls,{contractId:()=>Hd,default:()=>Yd,feeObjId:()=>zd,roleObjId:()=>Gd,status:()=>$d,transaction:()=>Vd,upgradeCapObjId:()=>Qd,vaultObjId:()=>Xd});var Vd="DiBZq4UmVVYiRL6ZJmFKYoHcxtxqrhsCXSkFyT7wUr3j",$d="success",Hd="0x81c960dc653975fbd0072deca8afb92d322898c911622898ba1b2e3ad0c4bd8d",Gd="0xc6ec0bdee0bb59a72077e9acd2f42457043cf47080b3d3fad4d39abf28bba63a",Xd="0xbc4021387fbac149119fd24e92be9e58f745774292f3a2a12e2ac6daf5363e1d",zd="0x4178f63970fe2daeb256dc5730ad172e82b3e8eb45f31b33e0daae72cd35e1e1",Qd="0xe1e9aa7d222d151bfe6dd83358b0d7fdcb11260f710800cfaf7ccc1b1e245115",Yd={transaction:Vd,status:$d,contractId:Hd,roleObjId:Gd,vaultObjId:Xd,feeObjId:zd,upgradeCapObjId:Qd};var us={};ss(us,{contractId:()=>tf,default:()=>rf,feeObjId:()=>of,roleObjId:()=>ef,status:()=>Zd,transaction:()=>Jd,upgradeCapObjId:()=>af,vaultObjId:()=>nf});var Jd="855FNDV8o8Z3fWULPnQo9qdhLJpsg7wZrkCpNyfw9KfB",Zd="success",tf="0xc357c3985e8fb875d6b37141497af660779aa1bab0ec489b2213efd74067d1fa",ef="0x5ab49bdf9fd1413e328ef242b3f8d83dde791b38a0b627bfc87fb25c010d34f1",nf="0xb483558770d8eb26007f193b75db40f0a45f2e36863a687625885d4de6993378",of="0x48453fc4d7cde3fe35aad89e5dfb496608a6a55ea529a1c0274681a808627f94",af="0x34279779a0d0d36bd5044b04830d607fa1b0ecf316548c8ac3a44151e4f1a42a",rf={transaction:Jd,status:Zd,contractId:tf,roleObjId:ef,vaultObjId:nf,feeObjId:of,upgradeCapObjId:af};var sf=(0,In.getFullnodeUrl)("testnet"),cf=(0,In.getFullnodeUrl)("testnet"),lf=(0,In.getFullnodeUrl)("mainnet"),uf=(0,In.getFullnodeUrl)("mainnet"),mf="https://bc3p6l5unl.execute-api.us-west-1.amazonaws.com/prod",pf="https://rolsbkota7.execute-api.us-west-1.amazonaws.com/prod",df="https://6p6mkx33ne.execute-api.us-west-1.amazonaws.com/prod",ff="https://xrae3mrjv5.execute-api.us-west-1.amazonaws.com/prod",cu=ls,lu=us,hf=new Map([["dev",{env:"dev",rpc:{url:sf},backend:{url:mf},contract:cu}],["stg",{env:"stg",rpc:{url:cf},backend:{url:pf},contract:cu}],["prev",{env:"prev",rpc:{url:lf},backend:{url:df},contract:lu}],["prod",{env:"prod",rpc:{url:uf},backend:{url:ff},contract:lu}]]);function uu(a,e){let t=hf.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 mu=require("@mysten/sui.js/client");var j=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 Jo=class extends j{constructor(){super(11,"Backend is not specified")}};var Zo=class extends j{constructor(){super(1,"Wallet not connected")}};var se=At(require("axios"));var Xe=class extends j{constructor(e,t){super(10,e,{context:t})}};var ta=class a{constructor(e){this.apiURL=e}apiURL;static parseResponseData(e){if(e instanceof se.AxiosError)throw new Xe(e.response?.statusText);if(e.status===200){if(e.data.success)return e.data.data;throw new Xe(e.data.code)}throw new Xe(e.status.toString())}async getIncomingStreams(e,t){let n=await se.default.post(`${this.apiURL}/stream`,{recipient:e,...t});return a.parseResponseData(n)}async getOutgoingStreams(e,t){let n=await se.default.post(`${this.apiURL}/stream`,{sender:e,...t});return a.parseResponseData(n)}async getStreamHistory(e){let t=await se.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 se.default.post(`${this.apiURL}/stream-info`,{address:e});return a.parseResponseData(t)}async getAllRecipients(e,t){let n=await se.default.post(`${this.apiURL}/stream-info`,{sender:e,status:t});return a.parseResponseData(n)}async getAllSenders(e,t){let n=await se.default.post(`${this.apiURL}/stream-info`,{recipient:e,status:t});return a.parseResponseData(n)}};var ze=class a{signer;suiClient;envConfig;_backend;constructor(e){this.envConfig=e,this.suiClient=new mu.SuiClient({url:e.rpc.url}),e.backend&&(this._backend=new ta(e.backend.url))}static new(e,t){let n=uu(e,t);return new a(n)}get walletType(){return this.wallet?this.wallet.type:"disconnected"}get backend(){if(!this._backend)throw new Jo;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 Zo;return this.signer}async walletAddress(){return this.wallet.address()}};var Ee=require("@mysten/sui.js/utils");var An=require("@mysten/sui.js/transactions");var hs=require("@mysten/sui.js/transactions"),vn=require("@mysten/sui.js/utils");var ms=50n,ea=10000n,pu=25n,ps=100000000n;var Zt=class{constructor(e){this.object=e}object;moveArg(e){return e.object(this.object)}},Cn=class{constructor(e){this.objects=e}objects;moveArgs(e){return e.makeMoveVec({objects:this.objects.map(t=>e.object(t))})}},ye=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)}})}result;moveArg(){return this.result}};var ds=require("buffer"),du=require("@mysten/sui.js/utils");var xn=class extends j{constructor(e,t){super(3,e,{context:t})}};var na=class{constructor(e){this.results=e}results;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 xn("Invalid contract return type.",{ctx:{expectType:"address",gotType:o}});return(0,du.normalizeSuiAddress)(ds.Buffer.from(n).toString("hex"))}getU64(e=0,t=0){let[n,o]=this.getValue(e,t);if(o!=="u64")throw new xn("Invalid contract return type.",{ctx:{expectType:"u64",gotType:o}});return ds.Buffer.from(n).readBigInt64LE()}};var fs=require("@mysten/sui.js/bcs");var G=class extends j{constructor(e,t,n){super(2,`Invalid input: ${e}`,{context:{fieldKey:t,fieldValue:n}})}};var hu={groupId:"string",name:"string"},gf=64;function gu(a){return yu(a),fs.bcs.ser(hu,a).toString("base64")}function Dn(a){let e=fs.bcs.de(hu,a,"base64");return yu(e),e}function yu(a){if(!fu(a.name))throw new G("Invalid metadata: Name contains unknown character");if(!fu(a.groupId))throw new G("Invalid metadata: Group ID contains unknown character");if(a.name.length>gf)throw new G("Invalid metadata: Name exceed max length 64")}function fu(a){return/^[\x00-\x7F]+$/.test(a)}var kn=require("@mysten/sui.js/utils");function oa(a,e){return(0,kn.normalizeStructTag)(a)===(0,kn.normalizeStructTag)(e)}function be(a,e){return(0,kn.normalizeStructTag)(a)===(0,kn.normalizeStructTag)(e)}var aa="txn.gas";var bu=require("nanoid");function Tu(){return(0,bu.nanoid)()}var Be=class a{constructor(e,t,n){this.globals=e;this.feeContract=t;this.streamContract=n}globals;feeContract;streamContract;static convertCreateStreamInfoToInternal(e){return{metadata:gu({name:e.name,groupId:Tu()}),coinType:(0,vn.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 hs.TransactionBlock,n=this.calculateFeesInternal(e),o=this.getCreateStreamCoinRequests(e,n),i=await this.wallet.requestCoins(o),s=await this.addMergeCoins(t,i[0]),c;o.length>1?c=await this.addMergeCoins(t,i[1]):c=s;for(let p=0;p<e.recipients.length;p++){let b=e.recipients[p],S=this.amountForRecipient(b,e.numberEpoch),I=this.getStreamFeeLocal(S),[x]=t.splitCoins(s,[t.pure(S+I,"u64")]),[D]=t.splitCoins(c,[t.pure(this.flatSuiFee,"u64")]);this.streamContract.createStream(t,{paymentCoin:new ye(x),flatFeeCoin:new ye(D),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:ms,denominator:ea},claimFeePercent:{numerator:pu,denominator:ea},flatFeePerStream:ps}}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===aa?n=e.gas:n=e.object(t.primaryCoin),n}getCreateStreamCoinRequests(e,t){let n=e.coinType;return oa(n,vn.SUI_TYPE_ARG)?[{coinType:n,amount:t.totalAmount+t.streamFeeAmount+t.flatFeeAmount}]:[{coinType:n,amount:t.totalAmount+t.streamFeeAmount},{coinType:vn.SUI_TYPE_ARG,amount:t.flatFeeAmount}]}calculateFeesInternal(e){let t=e.recipients.reduce((o,i)=>{let s=this.amountForRecipient(i,e.numberEpoch),c=this.getStreamFeeLocal(s);return{totalAmount:o.totalAmount+s,streamFeeAmount:o.streamFeeAmount+c}},{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 ps}getStreamFeeLocal(e){return e*ms/ea}async getStreamFeeRemote(e){let t=this.feeContract.streamingFee(new hs.TransactionBlock,e),n=await this.globals.suiClient.devInspectTransactionBlock({sender:await this.globals.walletAddress(),transactionBlock:t});return new na(n).getU64()}get wallet(){return this.globals.wallet}};var gs=require("@mysten/sui.js/transactions");var Su="0x0000000000000000000000000000000000000000000000000000000000000006";var Qe=class{constructor(e,t,n){this.moduleName=e;this.config=t;this.globals=n}moduleName;config;globals;addContractCall(e,t){let n=`${this.config.contractId}::${this.moduleName}::${t.method}`;return e.add(gs.Transactions.MoveCall({target:n,arguments:t.arguments.map(o=>o instanceof Cn?o.moveArgs(e):o instanceof Zt?o.moveArg(e):o instanceof ye?o.moveArg():e.pure(o)),typeArguments:t.typeArgs})),e}addTransactionBlock(e,t,n=[],o=[]){e.add(gs.Transactions.MoveCall({target:t,arguments:n.map(i=>i instanceof Cn?i.moveArgs(e):i instanceof Zt?i.moveArg(e):i instanceof ye?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(Su)}};var Ye=class a extends Qe{constructor(t,n){super(a.ModuleName,t,n);this.config=t;this.globals=n}config;globals;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 Qe{constructor(t,n){super(a.ModuleName,t,n);this.config=t;this.globals=n}config;globals;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),c=this.makeObject(n.flatFeeCoin),p=this.clockObject();return this.addContractCall(t,{method:a.MethodName.create_stream,arguments:[o,i,s,c,n.metadata,n.recipient,n.timeStart,n.cliff,n.epochInterval,n.numEpoch,n.amountPerEpoch,n.cancelable,p],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(),c=this.clockObject();return this.addContractCall(t,{method:a.MethodName.claim_stream_by_proxy,arguments:[o,i,s,c],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 Je=class{constructor(e){this.globals=e;let t=e.envConfig.contract;this.feeContract=new Ye(t,e),this.streamContract=new te(t,e)}globals;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 An.TransactionBlock;return this.streamContract.setAutoClaim(o,{streamId:e,enabled:t,coinType:n})}claimStream(e,t){let n=new An.TransactionBlock;return this.streamContract.claimStream(n,{streamId:e,coinType:t})}claimStreamByProxy(e,t){let n=new An.TransactionBlock;return this.streamContract.claimStreamByProxy(n,{streamId:e,coinType:t})}cancelStream(e,t){let n=new An.TransactionBlock;return this.streamContract.cancelStream(n,{streamId:e,coinType:t}),n}};var Ze=require("@mysten/sui.js/utils"),ys=require("luxon");var ia=class extends j{constructor(e,t){super(12,`Transaction failed: ${t}`,{context:{status:e,msg:t}})}};var yf=1e3,ra=class{constructor(e){this.globals=e;this.coinMetaHelper=new bs(e.suiClient),this.createStreamHelper=new Je(e).createStreamHelper()}globals;coinMetaHelper;createStreamHelper;getStreamIdsFromCreateStreamResponse(e){if(e.effects?.status.status!=="success")throw new ia(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 G("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 G("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 G("Invalid stream steps: 0");let t=BigInt(e.total.toMillis())/e.steps,n=e.timeStart.plus(ys.Duration.fromMillis(Number(t*e.steps))),o={timeStart:e.timeStart,timeEnd:n,interval:ys.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,Ze.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,Ze.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 G("Stream amount too small","totalAmount",t);if(e.cliffAmount>e.realTotalAmount)throw new G("Invalid cliff settings")}validateTimeline(e){if(e.interval.toMillis()<yf)throw new G("Interval shall be at least 1 second","interval",e.interval)}},bs=class{constructor(e){this.suiClient=e;this.coinMetaReg=new Map}suiClient;coinMetaReg;async getCoinMeta(e){let t=(0,Ze.normalizeStructTag)(e||Ze.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 Se=require("@mysten/sui.js/utils"),Ds=require("luxon");var Pn=require("@mysten/sui.js/transactions"),Rn=require("@mysten/sui.js/utils"),Iu=require("luxon");var sa=class extends j{constructor(){super(7,"Connected wallet is not creator")}};var Mn=class extends j{constructor(){super(8,"Connected wallet is not recipient")}};var On=class extends j{constructor(e,t){super(6,e,{context:t})}};var Pt=class extends j{constructor(e,t={}){super(0,e,t)}};var ca=class extends j{constructor(e){super(5,"Stream not found",{context:{streamId:e}})}};var ua=require("luxon"),wu=(1n<<64n)-1n,la=1e3;function Ts(a){let e;typeof a=="number"?e=a:typeof a=="bigint"?e=Number(a):e=a.toMillis();let t=Math.round(e/la);return ua.DateTime.fromMillis(t*la)}function Ss(a){let e;typeof a=="number"?e=a:typeof a=="bigint"?e=Number(a):e=a.toMillis();let t=Math.round(e/la);return ua.Duration.fromMillis(t*la)}var Te=class a{constructor(e,t,n){this.globals=e;this.streamId=t;this.rawData=n;this.streamContract=new te(e.envConfig.contract,e)}globals;streamId;rawData;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 Pt("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 sa;let e=new Pn.TransactionBlock;return this.streamContract.cancelStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async claim(){if(await this.globals.walletAddress()!==this.recipient)throw new Mn;let e=new Pn.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 Mn;let t=new Pn.TransactionBlock;return this.streamContract.setAutoClaim(t,{streamId:this.streamId,coinType:this.coinType,enabled:e}),t}async claimByProxy(){let e=new Pn.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,Rn.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 Ss(this.rawData.config.epochInterval)}get groupId(){let{metadata:e}=this.rawData.config;return Dn(e).groupId}get name(){let{metadata:e}=this.rawData.config;return Dn(e).name}get recipient(){return this.rawData.config.recipient}get timeStart(){return Ts(this.rawData.config.timeStart)}get duration(){let e=this.rawData.config,t=e.epochInterval*e.totalEpoch;return Ss(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:Ts((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===wu?0n:this.rawData.status.epochClaimed*this.amountPerEpoch+this.cliff}get currentEpoch(){let e=Iu.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 ca(e):new On(`get stream data: ${t.error.code}`,{streamId:e,...t.error});let n=t.data.content;if(n.dataType!=="moveObject")throw new On("Unexpected object type",{gotType:n.dataType});let{typeParams:o}=(0,Rn.parseStructTag)(n.type),i=(0,Rn.normalizeStructTag)(o[0]),s=n.fields,c=s.config.fields,p=s.status.fields;return{coinType:i,autoClaim:s.auto_claim,balance:BigInt(s.balance.fields.balance),config:{amountPerEpoch:BigInt(c.amount_per_epoch),cancelable:c.cancelable,cliff:BigInt(c.cliff),creator:c.creator,epochInterval:BigInt(c.epoch_interval),metadata:c.metadata,recipient:c.recipient,timeStart:BigInt(c.time_start),totalEpoch:BigInt(c.total_epoch)},status:{status:p.status,epochCanceled:BigInt(p.epoch_canceled),epochClaimed:BigInt(p.epoch_claimed)}}}};var tn=class extends j{constructor(e,t){super(9,`Invalid stream group: ${e}`,{context:t})}};async function Is(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 ws=class{constructor(e){this.requester=e;this.curPage=void 0,this.init=!0}requester;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)}},en=class{constructor(e){this.requester=e;this.pager=new ws(e),this.curData=[],this.cursor=0}requester;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 bf=25;async function xs(a,e,t){let n=new Bn(e),o=new En(a,n,t);return await Is(o)}var Bn=class{constructor(e){this.ids=e;this.cursor=-1}ids;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]}},En=class extends en{constructor(t,n,o){super(new Cs(t,n,o));this.suiClient=t;this.idIter=n;this.options=o}suiClient;idIter;options},Cs=class{constructor(e,t,n){this.suiClient=e;this.stringIter=t;this.options=n;this.filter=n?.filter,this.pageSize=n?.pageSize||bf,this.objectOptions=n?.objectOptions||{showType:!0,showContent:!0}}suiClient;stringIter;options;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 ma=class a{constructor(e,t){this.globals=e;this.streams=t;if(t.length===0)throw new tn("stream size 0");let n=t.map(i=>i.groupId);if(new Set(n).size!==1)throw new G("Stream does not have same group ID")}globals;streams;type="StreamGroup";static async new(e,t){let n=await xs(e.suiClient,t);return n.forEach(o=>{if(!o)throw new Pt("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=>{Tf(n,i)||(o=!1)}),o}async refresh(){let e=await xs(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)=>Te.fromObjectData(e,t[s],i)).filter(i=>!!i);if(new Set(o.map(i=>i.groupId)).size!==1)throw new tn("Not same group ID");if(!this.checkStreamGroup(o))throw new tn("Not same stream settings");return o}};function Tf(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 Nn=class a{constructor(e,t){this.it=e;this.pageSize=t}it;pageSize;static async newIncoming(e){let t=await pa.newIncoming(e);return new a(t,e.pageSize)}static async newOutgoing(e){let t=await pa.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}},pa=class a{constructor(e){this.requester=e}requester;cachedNext;static async newIncoming(e){let t=await da.newIncomingQuery(e);return new a(t)}static async newOutgoing(e){let t=await da.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 Pt("No more results");return t}let e=this.cachedNext;if(this.cachedNext=void 0,e===null)throw new Pt("No more results");return e}},da=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 Bn(n.flat().map(s=>s.streamId));this.objectIter=new En(e.suiClient,i)}globals;recipient;groupRefs;query;current=0;objectIter;static async newIncomingQuery(e){let t=xf(e.query),n=await e.globals.walletAddress(),i=(await e.globals.backend.getIncomingStreams(n,t)).filter(c=>(0,Se.normalizeSuiAddress)(c.recipient)===(0,Se.normalizeSuiAddress)(n)),s=Cu(i);return new a(e.globals,n,s,e.query)}static async newOutgoingQuery(e){let t=Df(e.query),n=await e.globals.walletAddress(),o=await e.globals.backend.getOutgoingStreams(n,t),i=Cu(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 If(this.globals,e[0].streamId,this.objectIter);return this.current++,xu(t,this.query)?t:this.doNextRequest()}if(e.length>1){let t=await Cf(this.globals,e.map(n=>n.streamId),this.objectIter);return this.current++,wf(t,this.query)?t:this.doNextRequest()}throw new Pt("Stream group with no stream")}};function Cu(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)=>Ds.DateTime.fromISO(n[0].createDate).toMillis()-Ds.DateTime.fromISO(t[0].createDate).toMillis())}function xu(a,e){if(e===void 0)return!0;let t=Sf(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 Sf(a,e){return e===void 0?!0:Array.isArray(e)?e.includes(a.progress.status):a.progress.status===e}function wf(a,e){if(!e)return!0;let t=!1;return a.streams.forEach(n=>{xu(n,e)&&(t=!0)}),t}async function If(a,e,t){let n=await Du(t,e);return Te.fromObjectData(a,e,n)}async function Cf(a,e,t){let n=[];for(;n.length<e.length;){let o=await Du(t,e[n.length]);n.push(o)}return ma.newFromObjectResponse(a,e,n)}async function Du(a,e){if(!await a.hasNext())throw new Pt("object iterator has been consumed");let t=await a.next();if(!t||t.error||t.data===void 0||t.data===null)throw new Pt("object iterator undefined response",{cause:t?.error});if(t?.data?.objectId!==e)throw new Pt("stream id not aligned");return t}function xf(a){return{status:ks(a?.status),coinType:ku(a?.coinType),sender:vu(a?.sender)}}function Df(a){return{status:ks(a?.status),coinType:ku(a?.coinType),recipient:vu(a?.recipient)}}function ks(a){return a===void 0||a.length===0?"all":Array.isArray(a)?a.reduce((e,t)=>{let n=ks(t);return!e||e===n?n:"all"},void 0):kf(a)}function kf(a){switch(a){case"STREAMING":case"STREAMED":case"CANCELED":return"active";case"COMPLETED":case"SETTLED":return"inactive";default:throw new G("Unknown stream filtered status")}}function ku(a){if(a)return Array.isArray(a)?a.length!==0?a.map(e=>(0,Se.normalizeStructTag)(e)):void 0:(0,Se.normalizeStructTag)(a)}function vu(a){if(a)return Array.isArray(a)?a.length!==0?a.map(e=>(0,Se.normalizeSuiAddress)(e)):void 0:(0,Se.normalizeSuiAddress)(a)}var fa=class extends j{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}coinType;requestAmount;gotAmount};var vf=25;async function Au(a,e,t,n="0x2::sui::SUI",o=vf){let i=new vs(a,e,n,o),s=BigInt(0),c=[];for(;await i.hasNext()&&s<t;){let p=await i.next();p&&(c.push(p),s+=BigInt(p.balance))}if(s<t)throw new fa(n,t,s);return c}var vs=class extends en{constructor(t,n,o,i){super(new As(t,n,o,i));this.suiClient=t;this.owner=n;this.coinType=o;this.reqPageSize=i}suiClient;owner;coinType;reqPageSize},As=class{constructor(e,t,n,o){this.suiClient=e;this.owner=t;this.coinType=n;this.reqPageSize=o;if(o<=0)throw new Pt("Invalid reqPageSize")}suiClient;owner;coinType;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 Ms=class{constructor(e){this.msafe=e}msafe;get type(){return"msafe"}async address(){return this.msafe.address()}async requestCoins(e){return this.msafe.requestCoins(e)}},ha=class{constructor(e){this.account=e}account;async address(){return this.account.address}},Os=class{constructor(e,t){this.singleWallet=e;this.suiClient=t}singleWallet;suiClient;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(oa(e.coinType,Ee.SUI_TYPE_ARG))return{primaryCoin:aa};if(e.amount<=0)throw new G("Invalid coin request","coinAmount",e.amount);let t=await Au(this.suiClient,await this.address(),e.amount,e.coinType);if(t.length===0)throw new Pt("no coins available");return{primaryCoin:t[0].coinObjectId,mergedCoins:t.slice(1).map(n=>n.coinObjectId)}}},ga=class{globals;helper;constructor(e,t){this.globals=ze.new(e,t),this.helper=new ra(this.globals)}connectSingleWallet(e){let t=new Os(e,this.globals.suiClient);this.globals.connectWallet(t)}connectMSafeAccount(e){let t=new Ms(e);this.globals.connectWallet(t)}async createStream(e){return this.builder().createStreams(e)}async getStream(e){return Te.new(this.globals,e)}async getIncomingStreams(e,t=10){return Nn.newIncoming({globals:this.globals,query:e,pageSize:t})}async getOutgoingStreams(e,t=10){return Nn.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 Je(this.globals)}};var Vt=class extends Jt{application="mpay";getClient(e,t){let n=new ga(e==="sui:mainnet"?"prod":"dev");return n.connectSingleWallet(new ha(t)),n}};var Wn=class extends Vt{constructor(t){super(t);this.data=t}data;txType=Mu.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 Ou=require("@msafe/sui3-utils");var _n=class extends Vt{constructor(t){super(t);this.data=t}data;txType=Ou.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 Pu=require("@msafe/sui3-utils");var Ln=class extends Vt{constructor(t){super(t);this.data=t}data;txType=Pu.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 Ru=require("@msafe/sui3-utils");var jn=class extends Vt{constructor(t){super(t);this.data=t}data;txType=Ru.TransactionType.Stream;txSubType="CreateStream";async build(t){let{network:n,account:o}=t;return this.getClient(n,o).createStream(this.data)}};var Ps=require("@mysten/sui.js/bcs"),we=require("@mysten/sui.js/utils"),nn=class a{constructor(e,t){this.moveCall=e;this.txb=t}moveCall;txb;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,we.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 Ps.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,we.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,we.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,we.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,we.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 Ps.bcs.de(t,new Uint8Array(n))}typeArg(e){return(0,we.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};var ya=class{constructor(e,t){this.globals=e;this.txb=t}globals;txb;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"&&be(t.target,this.contract.createStreamTarget));if(e.length===0)throw new Pt("No create stream transactions");return e.map(t=>new nn(t,this.txb))}getCreationInfoFromMoveCall(e){let t=e.decodeInputString(4),{name:n,groupId:o}=Dn(t),i=e.decodeInputAddress(5),s=e.decodeInputU64(6),c=e.decodeInputU64(7),p=e.decodeInputU64(8),b=e.decodeInputU64(9),S=e.decodeInputU64(10),I=e.decodeInputBool(11),x=e.typeArg(0);return{name:n,groupId:o,recipient:i,timeStart:s,cliff:c,epochInterval:p,totalEpoch:b,amountPerEpoch:S,cancelable:I,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 G("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 Ye(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 ba=class{constructor(e,t){this.globals=e;this.txb=t;this.contract=new te(e.envConfig.contract,e)}globals;txb;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"&&be(t.target,this.contract.createStreamTarget))!==-1}isSetAutoClaimTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&be(this.transactions[0].target,this.contract.setAutoClaimTarget)}isCancelStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&be(this.transactions[0].target,this.contract.cancelStreamTarget)}isClaimStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&be(this.transactions[0].target,this.contract.claimStreamTarget)}isClaimByProxyTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&be(this.transactions[0].target,this.contract.claimStreamByProxyTarget)}decodeCreateStreamTransaction(){return new ya(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 nn(e,this.txb)}};var Bu=require("@msafe/sui3-utils");var Un=class extends Vt{constructor(t){super(t);this.data=t}data;txType=Bu.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 Ta=class{application="mpay";supportSDK="@mysten/sui.js";async deserialize(e){let{network:t,transactionBlock:n}=e,o=ze.new(t==="sui:mainnet"?"prod":"dev"),s=new ba(o,n).decode(),c;switch(s.type){case"CreateStream":c=new jn(s.info);break;case"SetAutoClaim":c=new Un({streamId:s.streamId,enabled:s.enabled});break;case"Claim":c=new Ln({streamId:s.streamId});break;case"ClaimByProxy":c=new _n({streamId:s.streamId});break;case"Cancel":c=new Wn({streamId:s.streamId});break;default:throw new Error(`Unknown transaction type: ${s}`)}return{txType:c.txType,txSubType:c.txSubType,intentionData:c.data}}async build(e){let{intentionData:t}=e,n;switch(e.txSubType){case"CreateStream":n=new jn(t);break;case"Claim":n=new Ln(t);break;case"ClaimByProxy":n=new _n(t);break;case"SetAutoClaim":n=new Un(t);break;case"Cancel":n=new Wn(t);break;default:throw new Error("not implemented")}return n.build({...e})}};var qn=require("@msafe/sui3-utils");var Nu=require("@msafe/sui3-utils");var Eu=At(require("sort-keys-recursive")),on=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify((0,Eu.default)(this.data))}};var Sa=class a extends on{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiGrpcClient:n,account:o}=t;return(0,Nu.buildCoinTransferTxb)(n,this.data,o.address)}static fromData(t){return new a(t)}};var Wu=require("@msafe/sui3-utils");var wa=class a extends on{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiGrpcClient:n,account:o}=t;return(0,Wu.buildObjectTransferTxb)(n,this.data,o.address)}static fromData(t){return new a(t)}};var Ia=class{application="msafe-core";supportSDK="@mysten/sui-v2";constructor(){this.application=qn.TransactionDefaultApplication}deserialize(){throw new Error("MSafe core transaction intention should be build from API")}async build(e){let{account:t,network:n,suiGrpcClient:o}=e,i;switch(e.txSubType){case qn.TransactionSubTypes.assets.coin.send:i=Sa.fromData(e.intentionData);break;case qn.TransactionSubTypes.assets.object.send:i=wa.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiGrpcClient:o,account:t,network:n})}};var Ws=require("@msafe/sui3-utils");var _u=!1,Fn={ProtocolPackage:"0x1e4a13a0494d5facdbe8473e74127b838c2d446ecec0ce262e2eddafa77259cb",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 Rs(){if(!_u)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&&(Fn.ProtocolPackage=e),t&&(Fn.borrowFee=t),n&&(Fn.borrowFeeAddress=n),o&&(Fn.pool=o),_u=!0}catch(a){console.error(a.message)}}var Gt=Fn;var Ie=require("@msafe/sui3-utils"),Ce=require("@mysten/sui/utils"),Bs=require("@mysten/sui.js/bcs");var Ca=class{constructor(e){this.txb=e}txb;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(`${Gt.ProtocolPackage}::incentive_v3::entry_borrow_v2`)}isEntryBorrowWithFeeTransaction(){return!!this.getMoveCallTransaction(`${Gt.ProtocolPackage}::incentive_v3::borrow_v2`)}isEntryMultiDepositTransaction(){let e=`${Gt.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=`${Gt.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(`${Gt.ProtocolPackage}::incentive_v3::entry_deposit`)}isEntryRepayTransaction(){return!!this.getMoveCallTransaction(`${Gt.ProtocolPackage}::incentive_v3::entry_repay`)}isEntryWithdrawTransaction(){return!!this.getMoveCallTransaction(`${Gt.ProtocolPackage}::incentive_v3::withdraw_v2`)}findPoolByAssetId(e){let t=Object.values(Gt.pool).find(n=>n.assetId===e);if(!t)throw new Error("Pool not found");return t}decodeEntryClaimAndDeposit(){return{txType:Ie.TransactionType.Other,type:"EntryClaimAndDeposit",intentionData:{type:"entry_claim_and_deposit"}}}decodeClaimReward(){return console.log("decode claims"),{txType:Ie.TransactionType.Other,type:"ClaimReward",intentionData:{type:"claim_reward"}}}decodeEntryBorrow(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(5);return{txType:Ie.TransactionType.Other,type:"EntryBorrow",intentionData:{amount:t,assetId:e}}}decodeEntryMultiDeposit(){let e=[],t=`${Gt.ProtocolPackage}::incentive_v3::entry_deposit`;return this.transactions.forEach(n=>{if(n.kind==="MoveCall"&&n.target===t){let o=new xa(n,this.txb),i=o.decodeInputU8(3),s=o.decodeInputU64(5);e.push({assetId:i,amount:s})}}),{txType:Ie.TransactionType.Other,type:"EntryMultiDeposit",intentionData:{list:e}}}decodeEntryDeposit(){let e=this.helper.decodeInputU8(3),t=this.helper.decodeInputU64(5);return{txType:Ie.TransactionType.Other,type:"EntryDeposit",intentionData:{amount:t,assetId:e}}}decodeEntryRepay(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(6);return{txType:Ie.TransactionType.Other,type:"EntryRepay",intentionData:{amount:t,assetId:e}}}decodeEntryWithdraw(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(5);return{txType:Ie.TransactionType.Other,type:"EntryWithdraw",intentionData:{amount:t,assetId:e}}}get helper(){let e=this.transactions.find(t=>t.kind==="MoveCall"&&t.target.startsWith(Gt.ProtocolPackage));return new xa(e,this.txb)}},xa=class a{constructor(e,t){this.moveCall=e;this.txb=t}moveCall;txb;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,Ce.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 Bs.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,Ce.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Ce.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,Ce.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Ce.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 Bs.bcs.de(t,new Uint8Array(n))}typeArg(e){return(0,Ce.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};var Es=require("@mysten/sui/transactions"),Ut=require("@naviprotocol/lending");async function an(a,e,t,n){return await(0,Ut.depositCoinPTB)(a,e,t,{amount:n}),a}async function Lu(a,e,t,n){let[o]=await(0,Ut.withdrawCoinPTB)(a,e,t);return a.transferObjects([o],a.pure.address(n)),a}async function ju(a,e,t,n){let[o]=await(0,Ut.borrowCoinPTB)(a,e,t);return a.transferObjects([o],a.pure.address(n)),a}async function Ns(a,e,t,n){return await(0,Ut.repayCoinPTB)(a,e,t,{amount:n}),a}async function Uu(a,e){let t=new Es.Transaction,n=await(0,Ut.getUserAvailableLendingRewards)(e,{client:a});return await(0,Ut.claimLendingRewardsPTB)(t,n),t}async function qu(a,e){let t=new Es.Transaction,n=await(0,Ut.getUserAvailableLendingRewards)(e,{client:a});return await(0,Ut.claimLendingRewardsPTB)(t,n,{customCoinReceive:{type:"depositNAVI",depositNAVI:{fallbackReceiveAddress:e}}}),t}var Da=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{type:n}=this.data;return console.log("claim reward",n),await Uu(t.suiClient,t.account.address)}static fromData(t){return new a(t)}};var ka=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{type:n}=this.data;return console.log("claim reward and supply",n),await qu(t.suiClient,t.account.address)}static fromData(t){return new a(t)}};var Ku=require("@mysten/sui/transactions");var Fu=require("@naviprotocol/lending");async function ee(a){return(0,Fu.getPool)(a)}var va=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{assetId:n,amount:o}=this.data,i=new Ku.Transaction;console.log("build",this.data);let s=await ee(n);return await ju(i,s,o,t.account.address)}static fromData(t){return new a(t)}};var Vu=require("@mysten/sui/transactions");async function rn(a,e,t){let n=await a.getCoins({owner:e,coinType:t});return console.log("getTokenObjs",e,n),n}var Aa=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{assetId:i,amount:s}=this.data,c=new Vu.Transaction;console.log("build",this.data);let p=await ee(i);if(i===0){let[x]=c.splitCoins(c.gas,[s]);return await an(c,p,x,s)}let b=await rn(n,o.address,p.suiCoinType);if(!b.data[0])throw new Error(`Insufficient balance for ${p.suiCoinType} Token`);let S=b.data[0].coinObjectId;if(b.data.length>=2){let x=1;for(;x<b.data.length;)c.mergeCoins(S,[b.data[x].coinObjectId]),x++}return await an(c,p,c.object(S),s)}static fromData(t){return new a(t)}};var $u=require("@mysten/sui/transactions");var Ma=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{assetId:i,amount:s}=this.data,c=new $u.Transaction;console.log("build",this.data);let p=await ee(i);if(i===0){let[I]=c.splitCoins(c.gas,[s]);return Ns(c,p,I,s)}let b=await rn(n,o.address,p.suiCoinType);if(!b.data[0])throw new Error(`Insufficient balance for ${p.suiCoinType} Token`);let S=b.data[0].coinObjectId;if(b.data.length>=2){let I=1;for(;I<b.data.length;)c.mergeCoins(S,[b.data[I].coinObjectId]),I++}return Ns(c,p,c.object(S),s)}static fromData(t){return new a(t)}};var Hu=require("@mysten/sui/transactions");var Oa=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{assetId:n,amount:o}=this.data,i=new Hu.Transaction;console.log("build",this.data);let s=await ee(n);return await Lu(i,s,o,t.account.address)}static fromData(t){return new a(t)}};var Gu=require("@mysten/sui/transactions");var Pa=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{list:i}=this.data,s=new Gu.Transaction;console.log("build",this.data);for(let c=0;c<i.length;c++){let{assetId:p,amount:b}=i[c],S=await ee(p);if(p===0){let[D]=s.splitCoins(s.gas,[b]);await an(s,S,D,b);continue}let I=await rn(n,o.address,S.suiCoinType);if(!I.data[0])throw new Error(`Insufficient balance for ${S.suiCoinType} Token`);let x=I.data[0].coinObjectId;if(I.data.length>=2){let D=1;for(;D<I.data.length;)s.mergeCoins(x,[I.data[D].coinObjectId]),D++}await an(s,S,s.object(x),b)}return s}static fromData(t){return new a(t)}};var Xu=require("@mysten/sui/transactions");var Ra=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return console.log("build",this.data),Xu.Transaction.from(this.data.content)}static fromData(t){return new a(t)}};var Ba=class{application="navi";supportSDK="@mysten/sui";async deserialize(e){if(await Rs(),e.appContext?.content)return{txType:Ws.TransactionType.Other,txSubType:"PlainTransaction",intentionData:{content:e.appContext.content,scene:e.appContext.scene||"unknown"}};let{transaction:t}=e,o=new Ca(t).decode();return{txType:Ws.TransactionType.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n}=e,o;switch(await Rs(),e.txSubType){case"EntryDeposit":o=Aa.fromData(e.intentionData);break;case"EntryBorrow":o=va.fromData(e.intentionData);break;case"EntryRepay":o=Ma.fromData(e.intentionData);break;case"EntryWithdraw":o=Oa.fromData(e.intentionData);break;case"EntryMultiDeposit":o=Pa.fromData(e.intentionData);break;case"ClaimReward":o=Da.fromData(e.intentionData);break;case"EntryClaimAndDeposit":o=ka.fromData(e.intentionData);break;case"PlainTransaction":o=Ra.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};var Kn=require("@msafe/sui3-utils"),zu=require("@mysten/bcs"),Qu=require("@mysten/sui/transactions"),Yu=At(require("sort-keys-recursive")),Ju="msafe-plain-tx",Zu=Kn.TransactionSubTypes.others.plain,_s=class a{constructor(e){this.data=e}data;application=Ju;txType=Kn.TransactionType.Other;txSubType=Zu;serialize(){return JSON.stringify((0,Yu.default)(this.data))}async build(e){return Qu.Transaction.from((0,zu.fromHex)(this.data.content))}static fromData(e){return new a(e)}},Ea=class{application;supportSDK="@mysten/sui";constructor(){this.application=Ju}async deserialize(e){let{content:t}=e.appContext;return{txType:Kn.TransactionType.Other,txSubType:Zu,intentionData:{content:t}}}async build(e){let{suiClient:t,network:n,account:o}=e;return _s.fromData(e.intentionData).build({suiClient:t,network:n,account:o})}};var qs=require("@mysten/sui/client"),cn=require("@mysten/sui/transactions"),Vn=require("@mysten/sui.js/client");var sn=require("@open-rpc/client-js");var Of={"-32700":"ParseError","-32600":"InvalidRequest","-32601":"MethodNotFound","-32602":"InvalidParams","-32603":"InternalError"},Ls=class extends Error{},Na=class extends Ls{code;type;constructor(e,t){super(e),this.code=t,this.type=Of[t]??"ServerError"}};function Pf(a){let e=new URL(a);return e.protocol=e.protocol.replace("http","ws"),e.toString()}var Rf={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5},Wa=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={...Rf,...t},this.endpoint&&this.endpoint.startsWith("http")&&(this.endpoint=Pf(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 Na(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 js(e);return this.#i.add(t),await t.subscribe(this),()=>t.unsubscribe(this)}},js=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 ce=class{rpcClient;websocketClient;constructor({url:e,websocket:{url:t,...n}={},rpc:o}){let i=new sn.HTTPTransport(o?.url??e,{headers:{"Content-Type":"application/json",...o?.headers}});this.rpcClient=new sn.Client(new sn.RequestManager([i])),this.websocketClient=new Wa(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 tm=require("@mysten/sui/client"),em=require("@mysten/sui/grpc"),Bf={"sui:mainnet":"mainnet","sui:testnet":"testnet","sui:devnet":"devnet","sui:localnet":"localnet"};function Ef(a){return Object.assign(a,{getObject(e){return a.core.getObject(e)},async listCoins(e){let t=await a.core.getCoins({address:e.owner,coinType:e.coinType,cursor:e.cursor??void 0});return{objects:t.objects.map(n=>({coinType:e.coinType??"",objectId:n.id,version:n.version,digest:n.digest,balance:n.balance??"0"})),hasNextPage:t.hasNextPage,cursor:t.cursor}}})}function Us(a,e){let t=Bf[a],n=new em.SuiGrpcClient({network:t,baseUrl:e??(0,tm.getFullnodeUrl)(t)});return Ef(n)}var Nf="0x2::sui::SUI",$s=1e8,_a=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;case"@mysten/sui-v2":t.addGrpcHelper(o);break;default:throw new Error(`${o.application}: ${o.supportSDK} SDK not supported`)}}return t}addLegacyHelper(e){this.apps.set(e.application,new Vs(e))}addHelper(e){this.apps.set(e.application,new Fs(e))}addGrpcHelper(e){this.apps.set(e.application,new Ks(e))}getAppHelper(e){let t=this.apps.get(e);if(!t)throw new Error(`${e} not registered`);return t}},Fs=class{constructor(e){this.helper=e}helper;async deserialize(e){let t=new qs.SuiClient({transport:new ce({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=new Vn.SuiClient({transport:new ce({url:e.clientUrl,rpc:{url:e.clientUrl}})}),o=await e.transactionBlock.build({client:n}),i=cn.Transaction.from(o);return this.helper.deserialize({...e,suiClient:t,transaction:i})}async build(e){let t=new qs.SuiClient({transport:new ce({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=await t.getBalance({owner:e.account.address});if(Number(n.totalBalance)<$s)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 cn.Transaction.from(i)}},Ks=class{constructor(e){this.helper=e}helper;async deserialize(e){let t=Us(e.network,e.clientUrl),n=new Vn.SuiClient({transport:new ce({url:e.clientUrl,rpc:{url:e.clientUrl}})}),o=await e.transactionBlock.build({client:n}),i=cn.Transaction.from(o);return this.helper.deserialize({...e,suiGrpcClient:t,transaction:i})}async build(e){let t=Us(e.network,e.clientUrl),{balance:n}=await t.core.getBalance({address:e.account.address,coinType:Nf});if(Number(n.balance)<$s)throw new Error("Insufficient gas fee");let o=await this.helper.build({...e,suiGrpcClient:t});o.setSender(e.account.address);let i=await o.build({client:t});return cn.Transaction.from(i)}},Vs=class{constructor(e){this.helper=e}helper;async deserialize(e){let t=new Vn.SuiClient({transport:new ce({url:e.clientUrl,rpc:{url:e.clientUrl}})});return this.helper.deserialize({...e,transactionBlock:e.transactionBlock,suiClient:t})}async build(e){let t=new Vn.SuiClient({transport:new ce({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=await t.getBalance({owner:e.account.address});if(Number(n.totalBalance)<$s)throw new Error("Insufficient gas fee");let i=await(await this.helper.build({...e,suiClient:t})).build({client:t});return cn.Transaction.from(i)}};var mm=require("@msafe/sui3-utils"),pm=require("@mysten/sui/client"),dm=require("@scallop-io/sui-scallop-sdk");var Rt=require("@msafe/sui3-utils"),Xs=require("@scallop-io/sui-scallop-sdk");var nm=require("@mysten/sui/utils"),xe=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}`))}transaction;scallopClient;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,nm.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,c)=>(i[s]=c,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 La=require("@mysten/sui/bcs"),De=require("@mysten/sui/utils"),Hs=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 c=`${i.MoveCall.package}::${i.MoveCall.module}::${i.MoveCall.function}`,p=`${e.MoveCall.package}::${e.MoveCall.module}::${e.MoveCall.function}`;return c===p?(o.push(s),!0):!1}return!1}),this.cmdIdx=o[n]}moveCall;transaction;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,De.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=La.bcs[t];return La.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,De.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,De.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,De.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,De.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 La.bcs.U64.parse(new Uint8Array(t))}typeArg(e){return(0,De.normalizeStructTag)(this.txBlockTransactions.typeArguments[e])}txArg(e){return this.transaction.blockData.inputs[e]}},N=Hs;var Gs=class{constructor(e,t){this.splitCoin=e;this.txb=t}splitCoin;txb;getAmountInput(){return this.splitCoin.amounts.map(e=>{if(e.kind==="Input")return Number(N.getPureInputValue(e,"U64"))}).filter(e=>e!==void 0)}},_t=Gs;var ke=require("@mysten/sui/utils"),om=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`},ln={id:"0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",incentivePools:"0x64972b713ccec45ec3964809e477cea6f97350c0c50ca3aec85bb631639266ec",incentiveAccounts:"0x3c0b707068bdcea8bb859d751ad3e2149a9f83c13fcf4054ef91372a00bccdd3"},$t={unstakeObligation:(a,e,t)=>a.moveCall(`${ln.id}::user::unstake`,[ln.incentivePools,ln.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(`${ln.id}::user::redeem_rewards`,[ln.incentivePools,ln.incentiveAccounts,a.object(e),a.object(t),ke.SUI_CLOCK_OBJECT_ID],[(0,ke.normalizeStructTag)(n)])};var am=(a,e)=>{let t=[];for(let n=0;n<a.length;n+=e)t.push(a.slice(n,n+e));return t};var ja=class extends xe{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(`${Xs.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,`${Xs.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:Rt.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:Rt.TransactionType.Other,type:"MigrateAndClaim",intentionData:{obligationKey:t,obligationId:n,rewardCoinName:o,veScaKey:e}}}decodeOpenObligation(){return{txType:Rt.TransactionType.Other,type:"OpenObligation",intentionData:{}}}decodeSupplyLending(){let e=this.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),t=this.helperMint.getNestedInputParam(2),n=new _t(t,this.transaction).getAmountInput().reduce((o,i)=>o+i,0);return{txType:Rt.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 _t(t,this.transaction).getAmountInput().reduce((o,i)=>o+i,0);return{txType:Rt.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 _t(t,this.transaction).getAmountInput().reduce((o,i)=>o+i,0);return{txType:Rt.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 _t(t,this.transaction).getAmountInput().reduce((i,s)=>i+s,0),o=this.helperDepositCollateral.decodeSharedObjectId(1);return{txType:Rt.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:Rt.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:Rt.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:Rt.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:Rt.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 _t(t,this.transaction).getAmountInput().reduce((i,s)=>i+s,0),o=this.helperRepay.decodeSharedObjectId(1);return{txType:Rt.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 _t(n,this.transaction).getAmountInput().reduce((s,c)=>s+c,0),i=this.helperRepay.decodeSharedObjectId(1);return{txType:Rt.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 _t(i,this.transaction).getAmountInput().reduce((s,c)=>s+c,0)}if(this.helperStake.moveCall&&t===0){let i=this.helperStake.getNestedInputParam(2);t=new _t(i,this.transaction).getAmountInput().reduce((s,c)=>s+c,0)}let n=this.helperStake.typeArg(0),o=this.utils.parseCoinNameFromType(n);return{txType:Rt.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:Rt.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 _t(t,this.transaction).getAmountInput().reduce((i,s)=>i+s,0),o;return this.isCreateStakeAccountTransaction()||(o=this.helperStake.decodeOwnedObjectId(1)),{txType:Rt.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 _t(o,this.transaction).getAmountInput().reduce((i,s)=>i+s,0)}return{txType:Rt.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),c=this.utils.parseCoinNameFromType(s);e.push({stakeMarketCoinName:c,stakeAccountId:i})}),this.helperClaimBorrowV2Reward.forEach(o=>{let i=o.decodeSharedObjectId(4),s=o.decodeOwnedObjectId(3),c=this.utils.parseCoinNameFromType(o.typeArg(0));t.push({obligationId:s,obligationKey:i,rewardCoinName:c})}),this.helperClaimBorrowReward.forEach(o=>{let i=o.decodeSharedObjectId(2),s=o.decodeOwnedObjectId(3),c=this.utils.parseCoinNameFromType(o.typeArg(0));n.push({obligationId:s,obligationKey:i,rewardCoinName:c})}),{txType:Rt.TransactionType.Other,type:"ClaimIncentiveReward",intentionData:{lendingIncentive:e,borrowIncentiveV2:t,borrowIncentive:n}}}};var Ua=require("@msafe/sui3-utils");var qa=class extends xe{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:Ua.TransactionType.Other,type:"CreateReferralLink",intentionData:{}}}decodeClaimRevenueReferral(){let e=this.helperClaimRevenueReferral[0].decodeOwnedObjectId(2),t=this.helperClaimRevenueReferral.map(n=>n.typeArg(0));return{txType:Ua.TransactionType.Other,type:"ClaimRevenueReferral",intentionData:{veScaKey:e,coins:t}}}decodeBindReferral(){let e=this.helperBindReferral.decodePureArg(1,"Address");return{txType:Ua.TransactionType.Other,type:"BindReferral",intentionData:{veScaKey:e}}}};var ne=require("@msafe/sui3-utils"),im=require("@scallop-io/sui-scallop-sdk");var Fa=class extends xe{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(c=>this.filterMoveCallCommands(c,`${this.coreId.borrowIncentivePkg}::user::unstake_v2`)),t=this.commands.filter(c=>this.filterMoveCallCommands(c,`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`)),n=this.commands.filter(c=>this.filterMoveCallCommands(c,`${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(p=>p.$kind==="TransferObjects");if(e.length!==1)return!1;let{objects:t}=e[0].TransferObjects,n=t.filter(p=>p.$kind==="Input").map(({Input:p})=>p);if(n.length!==t.length)return!1;let o=new Set(n),i=this.inputs.filter((p,b)=>p.$kind==="Object"&&o.has(b)).map(p=>p.Object.ImmOrOwnedObject),s=`${this.coreId.veScaObjId}::ve_sca::VeScaKey`,c=am(i.map(({objectId:p})=>p),50);for(let p=0;p<c.length;p++){let b=c[p];if((await this.scallopClient.scallopSuiKit.queryGetObjects(b,{showType:!0})).some(I=>I.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 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,`${im.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=[],i=0,s=0,c=0;return this.commands.forEach(p=>{this.filterMoveCallCommands(p,e)?(o.push({action:"unstake",helper:new N(p,this.transaction,i)}),i++):this.filterMoveCallCommands(p,t)?(o.push({action:"stake",helper:new N(p,this.transaction,s)}),s++):this.filterMoveCallCommands(p,n)&&(o.push({action:"deactivate",helper:new N(p,this.transaction,c)}),c++)}),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 _t(e,this.transaction).getAmountInput().reduce((k,M)=>k+M,0),o=this.helperRenewExpired.decodeOwnedObjectId(1),i=!!this.helperRedeemSca.moveCall,s=[],c=[],p=[];this.helperOldUnstakeObligation.moveCall&&(s=[this.helperOldUnstakeObligation.decodeOwnedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(c=[this.helperUnstakeObligation.decodeOwnedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeObligationWithVeSca.moveCall&&(p=[this.helperStakeObligationWithVeSca.decodeOwnedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let b=!1,S=!1,I,x,D=[{condition:s,isOld:!0},{condition:c,isOld:!1},{condition:p,isOld:!1}];for(let k=0;k<D.length;k++)D[k].condition.length>1&&([x,I]=D[k].condition,b=!0,S=D[k].isOld);return{txType:ne.TransactionType.Other,type:"RenewExpStakePeriod",intentionData:{amount:n,unlockTime:t,obligationId:I,obligationKey:x,veScaKey:o,isHaveRedeem:i,isObligationLocked:b,isOldBorrowIncentive:S}}}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,c=!1,p,b,S=[{condition:n,isOld:!0},{condition:o,isOld:!1},{condition:i,isOld:!1}];for(let I=0;I<S.length;I++)S[I].condition.length>1&&([b,p]=S[I].condition,s=!0,c=S[I].isOld);return{txType:ne.TransactionType.Other,type:"ExtendStakePeriod",intentionData:{unlockTime:e,obligationId:p,obligationKey:b,veScaKey:t,isObligationLocked:s,isOldBorrowIncentive:c}}}decodePeriodAndStakeMoreSca(){let e=this.helperStakeMoreSca.getNestedInputParam(4),t=this.helperExtendStakePeriod.decodeInputU64(4),n=new _t(e,this.transaction).getAmountInput().reduce((D,k)=>D+k,0),o=[],i=[],s,c=[];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&&(c=[this.helperStakeObligationWithVeSca.decodeOwnedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let p=!1,b=!1,S,I,x=[{condition:o,isOld:!0},{condition:i,isOld:!1},{condition:c,isOld:!1}];for(let D=0;D<x.length;D++)x[D].condition.length>1&&([I,S]=x[D].condition,p=!0,b=x[D].isOld);return{txType:ne.TransactionType.Other,type:"ExtendPeriodAndStakeMore",intentionData:{amount:n,veScaKey:s,unlockTime:t,obligationId:S,obligationKey:I,isOldBorrowIncentive:b,isObligationLocked:p}}}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 _t(e,this.transaction).getAmountInput().reduce((D,k)=>D+k,0),o=[],i=[],s,c=[];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&&(c=[this.helperStakeObligationWithVeSca.decodeOwnedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let p=!1,b=!1,S,I,x=[{condition:o,isOld:!0},{condition:i,isOld:!1},{condition:c,isOld:!1}];for(let D=0;D<x.length;D++)x[D].condition.length>1&&([I,S]=x[D].condition,p=!0,b=x[D].isOld);return{txType:ne.TransactionType.Other,type:"StakeSca",intentionData:{amount:n,unlockTime:t,obligationId:S,obligationKey:I,veScaKey:s,isObligationLocked:p,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,c)=>s.$kind==="Object"&&o.has(c)).map(s=>s.Object.ImmOrOwnedObject);return{xType:ne.TransactionType.Other,type:"TransferVeScaKeys",intentionData:{veScaKeys:i}}}};var rm=At(require("sort-keys-recursive")),A=class{constructor(e){this.data=e}data;get application(){return"msafe-core"}serialize(){return JSON.stringify((0,rm.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 Ka=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async borrow({account:t,scallopClient:n}){let{coinName:o,amount:i,obligationId:s,obligationKey:c}=this.data,p=t.address;return(await this.buildTxWithRefreshObligation(n,{walletAddress:p,obligationId:s,obligationKey:c},async(S,I)=>{let x=await I.borrowQuick(+i,o,s,c);I.transferObjects([x],p)})).txBlock}async build(t){return this.borrow(t)}static fromData(t){return new a(t)}};var Va=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async borrowWithBoost(t,n){let{obligationId:o,obligationKey:i,veScaKey:s,amount:c,coinName:p}=this.data;return(await this.buildTxWithRefreshObligation(t,{walletAddress:n,obligationId:o,obligationKey:i,veScaKey:s},async(S,I)=>{let x=await I.borrowQuick(+c,p,o,i);I.transferObjects([x],n)})).txBlock}async build(t){return this.borrowWithBoost(t.scallopClient,t.account.address)}static fromData(t){return new a(t)}};var $a=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async borrowWithReferral({account:t,scallopClient:n}){let o=t.address,{obligationId:i,obligationKey:s,veScaKey:c,coinName:p,amount:b}=this.data;return(await this.buildTxWithRefreshObligation(n,{walletAddress:o,obligationId:i,obligationKey:s,veScaKey:c},async(I,x)=>{let D=x.claimReferralTicket(p),k=await x.borrowWithReferralQuick(+b,p,D,i,s);x.burnReferralTicket(D,p),x.transferObjects([k],o)})).txBlock}async build(t){return this.borrowWithReferral(t)}static fromData(t){return new a(t)}};var sm=require("@mysten/sui/utils");var Ha=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),c=Object.values(await e.query.getObligationAccounts(t)??[]),p=(()=>{let x=[...e.constants.whitelist.spool].map(D=>e.utils.parseCoinName(D));return Object.values(i??[]).filter(D=>!!D&&x.includes(D.coinName)).reduce((D,k)=>{let M=e.utils.parseMarketCoinName(k.coinName);return D[M]||(D[M]=0),D[M]+=k.availableClaimCoin,D},{})})(),b={};Object.entries(o).forEach(([x,D])=>{for(let k=0;k<D.length;k++){let M=D[k];if(!p[x])continue;let L=n.claim(M.id,x);b.sui?b.sui.push(L):b.sui=[L]}});let S=(()=>{let x={};return x.sui=Object.values(p).reduce((D,k)=>D+k,0),c.forEach(D=>{Object.values(D.borrowIncentives).forEach(k=>{k&&k.rewards.forEach(M=>{x[M.coinName]||(x[M.coinName]=0),x[M.coinName]?x[M.coinName]+=M.availableClaimCoin:x[M.coinName]=M.availableClaimCoin})})}),x})();if(s.length>0&&c.length>0)for(let x=0;x<c.length;x++){let D=c[x],k=!1,M=s.find(U=>U.id===D.obligationId)?.keyId,L={};if(M){if(Object.values(D.borrowIncentives).forEach(U=>{if(U){let q=U.rewards.filter(Ot=>{let W=Ot.coinName;return Ot.availableClaimCoin>0&&!L[W]});k=q.length>0,q.forEach(Ot=>{let W=n.claimBorrowIncentive(D.obligationId,M,Ot.coinName);L[Ot.coinName]=!0,b[Ot.coinName]?b[Ot.coinName].push(W):b[Ot.coinName]=[W]})}}),S.sui>0){let U=$t.redeem_rewards(n,M,D.obligationId,sm.SUI_TYPE_ARG);b.sui?b.sui.push(U):b.sui=[U]}if(k&&await om(e.query,D.obligationId)){n.unstakeObligation(D.obligationId,M);let q=await e.query.getBindedVeScaKey(D.obligationId);q?n.stakeObligationWithVesca(D.obligationId,M,q):n.stakeObligation(D.obligationId,M)}}}let I=(await Promise.all(Object.entries(b).map(async([x,D])=>{let k=D[0];if(D.length>1&&n.mergeCoins(k,D.slice(1)),x==="sui"){n.mergeCoins(n.gas,[k]);return}return await e.builder.utils.mergeSimilarCoins(n,k,e.utils.parseCoinType(x),t),k}))).filter(x=>!!x);return I.length>0&&n.transferObjects(I,t),n.txBlock}async build(e){return this.claimIncentiveRewards(e.scallopClient,e.account.address)}static fromData(e={}){return new a(e)}};var Ga=class a extends A{constructor(t){super(t);this.data=t}data;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 Xa=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async migrateAndClaim({account:t,scallopClient:n}){let o=t.address,{obligationKey:i,obligationId:s,rewardCoinName:c,veScaKey:p}=this.data,b=n.builder.createTxBlock();b.setSender(o);let S=$t.redeem_rewards(b,i,s,n.utils.parseCoinType(c));return b.transferObjects([S],o),await b.unstakeObligationQuick(s,i),p?await b.stakeObligationWithVeScaQuick(s,i,p):await b.stakeObligationQuick(s,i),b.txBlock}async build(t){return this.migrateAndClaim(t)}static fromData(t){return new a(t)}};var za=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return t.scallopClient.migrateAllMarketCoin(!1,!1)}static fromData(t){return new a(t)}};var Qa=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return t.scallopClient.openObligation(!1)}static fromData(t){return new a(t)}};var Ya=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async repay({account:t,scallopClient:n}){let o=t.address,{coinName:i,amount:s,obligationId:c,obligationKey:p}=this.data;return(await this.buildTxWithRefreshObligation(n,{walletAddress:o,obligationId:c,obligationKey:p},async(S,I)=>{await I.repayQuick(+s,i,c)})).txBlock}async build(t){return this.repay(t)}static fromData(t){return new a(t)}};var Ja=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async repayWithBoost({account:t,scallopClient:n}){let o=t.address,{coinName:i,amount:s,obligationId:c,veScaKey:p}=this.data,b=n.builder.createTxBlock();b.setSender(o);let S=n.constants.whitelist.borrowing.has(i);return S&&await b.unstakeObligationQuick(c,void 0),await b.repayQuick(+s,i,c),S&&await b.stakeObligationWithVeScaQuick(c,void 0,p),b.txBlock}async build(t){return this.repayWithBoost(t)}static fromData(t){return new a(t)}};var Za=class a extends A{constructor(t){super(t);this.data=t}data;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 ti=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return t.scallopClient.unstake(this.data.marketCoinName,+this.data.amount,!1)}static fromData(t){return new a(t)}};var ei=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async unstakeAndWithdraw(t,n,o){let i=t.builder.createTxBlock();i.setSender(o);let{stakeAccountId:s,amount:c,coinName:p}=this.data,b=[];for(let S=0;S<s.length;S++){let{id:I,coin:x}=s[S],D=t.utils.parseMarketCoinName(p),[k]=await i.unstakeQuick(x,D,I);if(k){let M=i.withdraw(k,p);b.push(M)}}if(c>0){let S=await i.withdrawQuick(c,p);b.push(S)}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 ni=class a extends A{constructor(t){super(t);this.data=t}data;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 oi=class a extends A{constructor(t){super(t);this.data=t}data;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 ai=class a extends A{constructor(t){super(t);this.data=t}data;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 ii=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async claimRevenueReferral({account:t,scallopClient:n}){let{veScaKey:o,coins:i}=this.data,s=t.address,c=n.builder.createTxBlock();c.setSender(s);let p=i.map(b=>n.utils.parseCoinNameFromType(b));return await c.claimReferralRevenueQuick(o,p),c.txBlock}async build(t){return this.claimRevenueReferral(t)}static fromData(t){return new a(t)}};var ri=class a extends A{constructor(t){super(t);this.data=t}data;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 cm=require("@scallop-io/sui-scallop-sdk");var si=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async extendPeriodAndStakeMoreSca({account:t,scallopClient:n}){let{amount:o,veScaKey:i,unlockTime:s,obligationId:c,obligationKey:p,isOldBorrowIncentive:b,isObligationLocked:S}=this.data,I=t.address,x=n.builder.createTxBlock();x.setSender(I);let D=await n.utils.selectCoins(o,cm.SCA_COIN_TYPE,I),[k,M]=x.takeAmountFromCoins(D,o);return x.extendLockPeriod(i,s),x.extendLockAmount(i,k),x.transferObjects([M],I),!c||!p||(S&&(b?$t.unstakeObligation(x,c,p):x.unstakeObligation(c,p)),x.stakeObligationWithVesca(c,p,i)),x.txBlock}async build(t){return this.extendPeriodAndStakeMoreSca(t)}static fromData(t){return new a(t)}};var ci=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async extendStakeScaLockPeriod({account:t,scallopClient:n}){let o=t.address,{veScaKey:i,unlockTime:s,obligationId:c,obligationKey:p,isObligationLocked:b,isOldBorrowIncentive:S}=this.data,I=n.builder.createTxBlock();return I.setSender(o),I.extendLockPeriod(i,s),c&&p&&(b&&(S?$t.unstakeObligation(I,p,c):I.unstakeObligation(c,p)),I.stakeObligationWithVesca(c,p,i)),I.txBlock}async build(t){return this.extendStakeScaLockPeriod(t)}static fromData(t){return new a(t)}};var li=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async handleUnsubForKeys(t,n,o){let{targetVeScaKey:i,sourceVeScaKey:s}=this.data,[c,p]=await Promise.all([n.getBindedObligationId(i),n.getBindedObligationId(s)]);c&&await t.unstakeObligationQuick(c),p&&await t.unstakeObligationQuick(p),o(t,i,s),c&&await t.stakeObligationWithVeScaQuick(c,void 0,i),p&&await t.stakeObligationWithVeScaQuick(p,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,c,p)=>{s.mergeVeSca(i.object(c),i.object(p))}),i.txBlock}static fromData(t){return new a(t)}};var ui=class a extends A{constructor(t){super(t);this.data=t}data;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 lm=require("@scallop-io/sui-scallop-sdk");var mi=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async renewExpiredStakeSca({account:t,scallopClient:n}){let o=t.address,{amount:i,unlockTime:s,veScaKey:c,isHaveRedeem:p,obligation:b,obligationKey:S,isObligationLocked:I,isOldBorrowIncentive:x}=this.data,D=n.builder.createTxBlock();if(D.setSender(o),p){let U=D.redeemSca(c);D.transferObjects([U],o)}let k=await n.builder.utils.selectCoins(i,lm.SCA_COIN_TYPE,o),[M,L]=D.takeAmountFromCoins(k,i);return D.transferObjects([L],o),D.renewExpiredVeSca(c,M,s),!b||!S||(I&&(x?$t.unstakeObligation(D,S,b):D.unstakeObligation(b,S)),D.stakeObligationWithVesca(b,S,c)),D.txBlock}async build(t){return this.renewExpiredStakeSca(t)}static fromData(t){return new a(t)}};var pi=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async handleUnsubForKeys(t,n,o){let{targetVeScaKey:i,splitAmount:s}=this.data,c=await n.getBindedObligationId(i);c&&await t.unstakeObligationQuick(c),o(t,i,s.toString()),c&&await t.stakeObligationWithVeScaQuick(c,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,c,p)=>{let b=s.splitVeSca(c,p.toString());s.transferObjects([b],o)}),i.txBlock}static fromData(t){return new a(t)}};var um=require("@scallop-io/sui-scallop-sdk");var di=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async stakeSca({account:t,scallopClient:n}){let o=t.address,{amount:i,isObligationLocked:s,isOldBorrowIncentive:c,obligationId:p,obligationKey:b,unlockTime:S,veScaKey:I}=this.data,x=n.builder.createTxBlock();x.setSender(o);let D=await n.utils.selectCoins(i,um.SCA_COIN_TYPE,o),[k,M]=x.takeAmountFromCoins(D,i),L;return I?x.extendLockAmount(I,k):L=x.lockSca(k,S),p&&b&&(s&&(c?$t.unstakeObligation(x,b,p):x.unstakeObligation(p,b)),x.stakeObligationWithVesca(p,b,I||L)),I||x.transferObjects([L,M],o),x.txBlock}async build(t){return this.stakeSca(t)}static fromData(t){return new a(t)}};var fi=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async supplyAndStake({account:t,scallopClient:n}){let o=t.address,{amount:i,coinName:s,stakeAccountId:c}=this.data,p=n.builder.createTxBlock();p.setSender(o);let b=await p.depositQuick(+i,s),S=n.utils.parseMarketCoinName(s);if(n.constants.whitelist.spool.has(S))return p.txBlock;let I=await n.query.getStakeAccounts(S,o),x=c||(I.length>0?I[0].id:void 0);if(x)await p.stakeQuick(b,S,x);else{let D=p.createStakeAccount(S);await p.stakeQuick(b,S,D),p.transferObjects([D],o)}return p.txBlock}async build(t){return this.supplyAndStake(t)}static fromData(t){return new a(t)}};var hi=class a extends A{constructor(t){super(t);this.data=t}data;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(c=>this.handleAction(i,c)),i.txBlock}static fromData(t){return new a(t)}};var gi=class a extends A{constructor(t){super(t);this.data=t}data;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(c=>i.objectRef(c)),i.pure.address(o)),i.txBlock}static fromData(t){return new a(t)}};var yi=class a extends A{constructor(t){super(t);this.data=t}data;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 bi=class{application="scallop";supportSDK="@mysten/sui";scallopClient;async initScallopClient(e,t){if(!this.scallopClient){let n=new dm.Scallop({addressId:"67c44a103fe1b8c454eb9699",walletAddress:e,suiClients:[t],fullnodeUrls:[t.transport.rpcClient.requestManager.transports[0]?.uri??(0,pm.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 ja(t,this.scallopClient),s=new qa(t,this.scallopClient),c=new Fa(t,this.scallopClient),p=i.decode()||s.decode()||await c.decode();if(!p)throw new Error("Unknown transaction type");return{txType:mm.TransactionType.Other,txSubType:p.type,intentionData:p.intentionData}}async build(e){let{suiClient:t,account:n,network:o,txSubType:i,intentionData:s}=e;await this.initScallopClient(n.address,t);let c;switch(i){case"SupplyLending":c=Za.fromData(s);break;case"WithdrawLending":c=oi.fromData(s);break;case"Borrow":c=Ka.fromData(s);break;case"Repay":c=Ya.fromData(s);break;case"DepositCollateral":c=Ga.fromData(s);break;case"WithdrawCollateral":c=ni.fromData(s);break;case"OpenObligation":c=Qa.fromData(s);break;case"UnstakeSpool":c=ti.fromData(s);break;case"ClaimIncentiveReward":c=Ha.fromData(s);break;case"BorrowWithBoost":c=Va.fromData(s);break;case"StakeSca":c=di.fromData(s);break;case"ExtendStakePeriod":c=ci.fromData(s);break;case"ExtendPeriodAndStakeMore":c=si.fromData(s);break;case"RenewExpStakePeriod":c=mi.fromData(s);break;case"WithdrawStakedSca":c=yi.fromData(s);break;case"SupplyAndStakeLending":c=fi.fromData(s);break;case"WithdrawAndUnstakeLending":c=ei.fromData(s);break;case"RedeemSca":c=ui.fromData(s);break;case"MigrateAndClaim":c=Xa.fromData(s);break;case"BorrowWithReferral":c=$a.fromData(s);break;case"CreateReferralLink":c=ri.fromData(s);break;case"ClaimRevenueReferral":c=ii.fromData(s);break;case"BindReferral":c=ai.fromData(s);break;case"MigrateScoin":c=za.fromData(s);break;case"RepayWithBoost":c=Ja.fromData(s);break;case"MergeVeSca":c=li.fromData(s);break;case"SplitVeSca":c=pi.fromData(s);break;case"VeScaObligationBindings":{c=hi.fromData(s);break}case"TransferVeScaKeys":{c=gi.fromData(s);break}default:throw new Error("not implemented")}return c.build({suiClient:t,account:n,network:o,scallopClient:this.scallopClient})}};var Nm=require("@msafe/sui3-utils");var dn=require("@msafe/sui3-utils"),Ae=require("@mysten/sui/utils");var Dm=require("@suilend/sui-fe");var xm=require("@msafe/sui3-utils"),ve=require("@suilend/sdk");var We=require("@msafe/sui3-utils"),mn=require("@mysten/bcs"),un=require("@mysten/sui/utils"),_e=require("@suilend/sui-fe"),Qs=At(require("bignumber.js"));var Ti=class{constructor(e,t){this.transaction=e;this.simResult=t}transaction;simResult;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,un.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(p=>p.type.includes("lending_market::RedeemEvent"))},n=(0,un.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 Qs.default((0,mn.toHex)((0,mn.fromBase64)(this.inputs[i].Pure.bytes)),16).toString(),c=s===_e.MAX_U64.toString();return console.log("decodeWithdraw - isMax:",c,"inputIndex:",i,"inputValue:",s,"MAX_U64.toString():",_e.MAX_U64.toString()),c&&(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(p=>p.type.includes("lending_market::BorrowEvent"))},n=(0,un.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 Qs.default((0,mn.toHex)((0,mn.fromBase64)(this.inputs[i].Pure.bytes)),16).toString(),c=s===_e.MAX_U64.toString();return console.log("decodeBorrow - isMax:",c,"inputIndex:",i,"inputValue:",s,"MAX_U64.toString():",_e.MAX_U64.toString()),c&&(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,un.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],i=(0,un.normalizeStructTag)(o.parsedJson.coin_type.name),s=o.parsedJson.liquidity_amount;t[i]=`${+(t[i]??"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 hm=require("@mysten/sui/transactions");var fm=At(require("sort-keys-recursive")),qt=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify((0,fm.default)(this.data))}};var Si=class a extends qt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:c}=t;if(console.log("BorrowIntention.build",n,o,i,s,c),!s||!c)throw new Error("Obligation not found");let p=new hm.Transaction;return await i.borrowAndSendToUser(o.address,s.id,c.id,this.data.coinType,this.data.value,p),p}static fromData(t){return console.log("BorrowIntention.fromData",t),new a(t)}};var Tm=require("@mysten/sui/transactions");var gm=require("@mysten/sui/utils"),pn=require("@suilend/sdk"),ym=require("@suilend/sui-fe"),bm=At(require("bignumber.js")),_f=(a,e)=>{let t={[pn.Side.DEPOSIT]:[],[pn.Side.BORROW]:[]};return a.lendingMarket.reserves.forEach(n=>{[pn.Side.DEPOSIT,pn.Side.BORROW].forEach(o=>{let i=o===pn.Side.DEPOSIT?n.depositsPoolRewardManager:n.borrowsPoolRewardManager,s=e.userRewardManagers.find(c=>c.poolRewardManagerId===i.id);s&&(t[o]=i.poolRewards.map((c,p)=>({reserveArrayIndex:n.arrayIndex,rewardIndex:BigInt(p),rewardCoinType:(0,gm.normalizeStructTag)(c.coinType.name),side:o})).filter(c=>!(0,ym.isSendPoints)(c.rewardCoinType)&&!!s.rewards[Number(c.rewardIndex)]&&new bm.default(s.rewards[Number(c.rewardIndex)].earnedRewards.value.toString()).gt(0)))})}),Object.values(t).flat()},wi=_f;var Ii=class a extends qt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:c}=t;if(console.log("ClaimIntention.build",n,o,i,s,c),!s||!c)throw new Error("Obligation not found");let p=new Tm.Transaction;return i.claimRewardsAndSendToUser(o.address,s.id,wi(i,c),p),p}static fromData(t){return console.log("ClaimIntention.fromData",t),new a(t)}};var Sm=require("@mysten/sui/transactions");var Ci=class a extends qt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:c}=t;if(console.log("ClaimAndDepositIntention.build",n,o,i,s,c),!s||!c)throw new Error("Obligation not found");let p=new Sm.Transaction;return i.claimRewardsAndDeposit(o.address,s.id,wi(i,c),p),p}static fromData(t){return console.log("ClaimAndDepositIntention.fromData",t),new a(t)}};var wm=require("@mysten/sui/transactions");var xi=class a extends qt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:c}=t;console.log("DepositIntention.build",n,o,i,s,c);let p=new wm.Transaction;return await i.depositIntoObligation(o.address,this.data.coinType,this.data.value,p,s?.id),p}static fromData(t){return console.log("DepositIntention.fromData",t),new a(t)}};var Im=require("@mysten/sui/transactions");var Di=class a extends qt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:c}=t;if(console.log("RepayIntention.build",n,o,i,s,c),!s||!c)throw new Error("Obligation not found");let p=new Im.Transaction;return await i.repayIntoObligation(o.address,c.id,this.data.coinType,this.data.value,p),p}static fromData(t){return console.log("RepayIntention.fromData",t),new a(t)}};var Cm=require("@mysten/sui/transactions");var ki=class a extends qt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:c}=t;if(console.log("WithdrawIntention.build",n,o,i,s,c),!s||!c)throw new Error("Obligation not found");let p=new Cm.Transaction;return await i.withdrawAndSendToUser(o.address,s.id,c.id,this.data.coinType,this.data.value,p),p}static fromData(t){return console.log("WithdrawIntention.fromData",t),new a(t)}};var vi=async(a,e)=>{let t=await ve.SuilendClient.initialize(ve.LENDING_MARKET_ID,ve.LENDING_MARKET_TYPE,a),n=await ve.SuilendClient.getObligationOwnerCaps(e.address,t.lendingMarket.$typeArgs,a),o=await Promise.all(n.map(i=>ve.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}},Ai=class{application="Suilend";supportSDK="@mysten/sui";utils;async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;this.utils||(this.utils=await vi(n,o));let i=await n.devInspectTransactionBlock({sender:o.address,transactionBlock:t});console.log("SuilendAppHelper.deserialize - simResult:",i,"utils:",this.utils,"suiClient:",n);let c=new Ti(t,i).decode();return{txType:xm.TransactionType.Other,txSubType:c.type,intentionData:c.intentionData}}async build(e){let{network:t,txSubType:n,intentionData:o,suiClient:i,account:s}=e;this.utils||(this.utils=await vi(i,s));let c;switch(n){case"deposit":c=xi.fromData(o);break;case"withdraw":c=ki.fromData(o);break;case"borrow":c=Si.fromData(o);break;case"repay":c=Di.fromData(o);break;case"claim":c=Ii.fromData(o);break;case"claimAndDeposit":c=Ci.fromData(o);break;default:throw new Error("not implemented")}let p=window.localStorage.getItem("obligationId"),b=this.utils.obligations?.find(I=>I.id===p)??this.utils.obligations?.[0],S=this.utils.obligationOwnerCaps?.find(I=>I.obligationId===b?.id);return c.build({network:t,suiClient:i,account:s,suilendClient:this.utils.suilendClient,obligationOwnerCap:S,obligation:b})}};var Ys=async(a,e)=>{let t=await vi(a,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(c=>[c.LIQUID_STAKING_INFO.type,c.LIQUID_STAKING_INFO]));return{...t,LIQUID_STAKING_INFO_MAP:s}};var Mi=class{constructor(e,t){this.transaction=e;this.simResult=t}transaction;simResult;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,Ae.normalizeStructTag)(e.MintEvent.parsedJson.event.typename.name),n=e.MintEvent.parsedJson.event.sui_amount_in;return console.log("Decoder.decodeStake",n),{txType:dn.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,Ae.normalizeStructTag)(e.MintEvent.parsedJson.event.typename.name),n=e.MintEvent.parsedJson.event.sui_amount_in;return console.log("Decoder.decodeStakeAndDeposit",n),{txType:dn.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,Ae.normalizeStructTag)(e.RedeemEvent.parsedJson.event.typename.name),n=(0,Ae.normalizeStructTag)(e.MintEvent.parsedJson.event.typename.name),o=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeConvert",o),{txType:dn.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,Ae.normalizeStructTag)(e.RedeemEvent.parsedJson.event.typename.name),n=(0,Ae.normalizeStructTag)(e.MintEvent.parsedJson.event.typename.name),o=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeConvertAndDeposit",o),{txType:dn.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,Ae.normalizeStructTag)(e.RedeemEvent.parsedJson.event.typename.name),n=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeUnstake",n),{txType:dn.TransactionType.Other,type:"unstake",intentionData:{amount:n,inCoinType:t}}}};var vm=require("@mysten/sui/transactions"),$n=require("@suilend/springsui-sdk");var km=At(require("sort-keys-recursive")),Ht=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify((0,km.default)(this.data))}};var Oi=class a extends Ht{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:c,obligation:p}=t;console.log("ConvertIntention.build",n,o,i,s,c,p);let b=await $n.LstClient.initialize(n,Object.values(s).find(x=>x.type===this.data.inCoinType)),S=await $n.LstClient.initialize(n,Object.values(s).find(x=>x.type===this.data.outCoinType)),I=new vm.Transaction;return(0,$n.convertLstsAndRebalanceAndSendToUser)(b,S,I,o.address,this.data.amount),I}static fromData(t){return console.log("ConvertIntention.fromData",t),new a(t)}};var Am=require("@mysten/sui/transactions"),Ri=require("@suilend/sdk"),Hn=require("@suilend/springsui-sdk");var Pi=class a extends Ht{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:c,obligation:p}=t;console.log("ConvertAndDepositIntention.build",n,o,i,s,c,p);let b=await Hn.LstClient.initialize(n,Object.values(s).find(M=>M.type===this.data.inCoinType)),S=await Hn.LstClient.initialize(n,Object.values(s).find(M=>M.type===this.data.outCoinType)),I=new Am.Transaction,{obligationOwnerCapId:x,didCreate:D}=(0,Ri.createObligationIfNoneExists)(i,I,c),k=(0,Hn.convertLstsAndRebalance)(b,S,I,o.address,this.data.amount);return i.deposit(k,this.data.outCoinType,x,I),D&&(0,Ri.sendObligationToUser)(x,o.address,I),I}static fromData(t){return console.log("ConvertAndDepositIntention.fromData",t),new a(t)}};var Mm=require("@mysten/sui/transactions"),Om=require("@suilend/springsui-sdk");var Bi=class a extends Ht{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:c,obligation:p}=t;console.log("StakeIntention.build",n,o,i,s,c,p);let b=await Om.LstClient.initialize(n,Object.values(s).find(I=>I.type===this.data.outCoinType)),S=new Mm.Transaction;return b.mintAmountAndRebalanceAndSendToUser(S,o.address,this.data.amount),S}static fromData(t){return console.log("StakeIntention.fromData",t),new a(t)}};var Pm=require("@mysten/sui/transactions"),Ni=require("@suilend/sdk"),Rm=require("@suilend/springsui-sdk");var Ei=class a extends Ht{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:c,obligation:p}=t;console.log("StakeAndDepositIntention.build",n,o,i,s,c,p);let b=await Rm.LstClient.initialize(n,Object.values(s).find(k=>k.type===this.data.outCoinType)),S=new Pm.Transaction,{obligationOwnerCapId:I,didCreate:x}=(0,Ni.createObligationIfNoneExists)(i,S,c),D=b.mintAmountAndRebalance(S,o.address,this.data.amount);return i.deposit(D,this.data.outCoinType,I,S),x&&(0,Ni.sendObligationToUser)(I,o.address,S),S}static fromData(t){return console.log("StakeAndDepositIntention.fromData",t),new a(t)}};var Bm=require("@mysten/sui/transactions"),Em=require("@suilend/springsui-sdk");var Wi=class a extends Ht{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:c,obligation:p}=t;console.log("UnstakeIntention.build",n,o,i,s,c,p);let b=await Em.LstClient.initialize(n,Object.values(s).find(I=>I.type===this.data.inCoinType)),S=new Bm.Transaction;return b.redeemAmountAndRebalanceAndSendToUser(S,o.address,this.data.amount),S}static fromData(t){return console.log("UnstakeIntention.fromData",t),new a(t)}};var _i=class{application="SpringSui";supportSDK="@mysten/sui";utils;async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;this.utils||(this.utils=await Ys(n,o));let i=await n.devInspectTransactionBlock({sender:o.address,transactionBlock:t});console.log("SpringSuiAppHelper.deserialize",i);let c=new Mi(t,i).decode();return{txType:Nm.TransactionType.Other,txSubType:c.type,intentionData:c.intentionData}}async build(e){let{network:t,txSubType:n,intentionData:o,suiClient:i,account:s}=e;this.utils||(this.utils=await Ys(i,s));let c;switch(n){case"stake":c=Bi.fromData(o);break;case"stakeAndDeposit":c=Ei.fromData(o);break;case"convert":c=Oi.fromData(o);break;case"convertAndDeposit":c=Pi.fromData(o);break;case"unstake":c=Wi.fromData(o);break;default:throw new Error("not implemented")}return c.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 Lm=require("@msafe/sui3-utils");var Js=require("@msafe/sui3-utils");var Li=class{constructor(e,t){this.transaction=e;this.simResult=t}transaction;simResult;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:Js.TransactionType.Other,type:"mint",intentionData:{amount:t}}}decodeRedeem(e){let{event:{lst_amount_in:t}}=e;return console.log("Decoder.decodeRedeem",t),{txType:Js.TransactionType.Other,type:"redeem",intentionData:{amount:t}}}};var Wm=require("@alphafi/stsui-sdk");var ji=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t,{amount:o}=this.data,i={lstInfo:"0x1adb343ab351458e151bc392fbf1558b3332467f23bda45ae67cd355a57fd5f5",lstCointype:"0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI"},c=await new Wm.LST(i).mint(o,n.address);return c.setGasBudget(1e8),c}static fromData(t){return console.log("MintIntention.fromData",t),new a(t)}};var _m=require("@alphafi/stsui-sdk");var Ui=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t,{amount:o}=this.data,i={lstInfo:"0x1adb343ab351458e151bc392fbf1558b3332467f23bda45ae67cd355a57fd5f5",lstCointype:"0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI"},c=await new _m.LST(i).redeem(o,n.address);return c.setGasBudget(1e8),c}static fromData(t){return console.log("RedeemIntention.fromData",t),new a(t)}};var qi=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 Li(t,o).decode();return{txType:Lm.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=ji.fromData(e.intentionData);break;case"redeem":n=Ui.fromData(e.intentionData);break;default:throw new Error("build not implemented")}return n.build({account:t})}};var cp=require("@msafe/sui3-utils"),lp=require("turbos-clmm-sdk");var Lt=require("@msafe/sui3-utils"),Le=require("@mysten/bcs"),je=require("@mysten/sui/bcs"),jm=require("turbos-clmm-sdk");var Xt={PackageId:"0x02fe4933f4521250e55a15441096d1d4a38a7311195b0bca126fc0138c1f5a97",Claim:"0x0c822cec42f7ca703696b4232f1c47b348330c23580172a29aab465bc071d894",turbosCoinType:"0x5d1f47ea69bb0de31c313d7acf89b890dbb8991ea8e03c6c355171f84bb1ba4a::turbos::TURBOS"},zt={PackageId:"0xdee9"};var qf=(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}`)}},Fi=class{constructor(e,t,n){this.txb=e;this.turbosSdk=t;this.config=n}txb;turbosSdk;config;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(`${Xt.PackageId}::claim::join`)}isPrixClaimTransaction(){return!!this.getMoveCallTransaction(`${Xt.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(`${zt.PackageId}::clob_v2::swap_exact_base_for_quote`)}isSwapExactQuoteForBaseTransaction(){return!!this.getMoveCallTransaction(`${zt.PackageId}::clob_v2::swap_exact_quote_for_base`)}async decodeSwap(){let e=this.transactions.find(D=>D.$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=qf(t,n,this.swap1Layer,this.swap2Layer),i=o.map((D,k)=>{let M=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(k)),L=this.helper.decodeInputU128(this.helper.getInputsIndex(4+k+t)),U=this.turbosSdk.math.sqrtPriceX64ToTickIndex(new jm.BN(L.toString()));return{pool:M,a2b:D,nextTickIndex:U}}),s=o[0]||t===1?e.MoveCall.typeArguments[0]:e.MoveCall.typeArguments[1],c=t===1?e.MoveCall.typeArguments[4]:o[0]?e.MoveCall.typeArguments[1]:e.MoveCall.typeArguments[0],p=this.helper.decodeInputAddress(this.helper.getInputsIndex(6+2*t)),b=this.helper.decodeInputU64(this.helper.getInputsIndex(7+2*t)),S=this.helper.decodeInputBool(this.helper.getInputsIndex(5+2*t)),I=this.helper.decodeInputU64(this.helper.getInputsIndex(2+t)),x=this.helper.decodeInputU64(this.helper.getInputsIndex(3+t));return{txType:Lt.TransactionType.Other,type:"Swap",intentionData:{routes:i,coinTypeA:s,coinTypeB:c,address:p,amountA:S?I:x,amountB:S?x:I,amountSpecifiedIsInput:S,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)),c=this.helper.decodeInputU32(this.helper.getInputsIndex(6)),p=this.helper.decodeInputBool(this.helper.getInputsIndex(7)),b=this.helper.decodeInputU64(this.helper.getInputsIndex(13));return{txType:Lt.TransactionType.Other,type:"AddLiquidity",intentionData:{pool:e,slippage:30,address:t,amountA:n,amountB:o,tickLower:s?-i:i,tickUpper:p?-c:c,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:Lt.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)),c=this.helper.decodeInputU64(this.helper.getInputsIndex(6));return{txType:Lt.TransactionType.Other,type:"DecreaseLiquidity",intentionData:{pool:t,decreaseLiquidity:o,nft:n,amountA:i,amountB:s,slippage:10,address:e,deadline:c}}}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),c=this.helper.decodeInputU64(6);return{txType:Lt.TransactionType.Other,type:"DecreaseLiquidityWithReturn",intentionData:{pool:t,decreaseLiquidity:o,nft:n,amountA:i,amountB:s,slippage:10,address:e,deadline:c}}}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:Lt.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 c=s.decodeInputU64(s.getInputsIndex(4)),p=s.decodeInputU64(s.getInputsIndex(5));o[c]=p});let i=this.helper.decodeInputU64(7);return{txType:Lt.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:Lt.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)),c=this.decreaseLiquidityHelper.decodeInputU64(this.decreaseLiquidityHelper.getInputsIndex(5)),p=this.decreaseLiquidityHelper.decodeInputU64(this.decreaseLiquidityHelper.getInputsIndex(6)),b=[0,0,0];this.collectRewardHelper.forEach(x=>{let D=x.decodeInputU64(x.getInputsIndex(4)),k=x.decodeInputU64(x.getInputsIndex(5));b[D]=k});let S=this.collectFeeHelper.decodeInputU64(this.collectFeeHelper.getInputsIndex(3))||0,I=this.collectFeeHelper.decodeInputU64(this.collectFeeHelper.getInputsIndex(4))||0;return{txType:Lt.TransactionType.Other,type:"RemoveLiquidity",intentionData:{pool:n,decreaseLiquidity:i,nft:o,amountA:(s/(100-t)*100).toFixed(0),amountB:(c/(100-t)*100).toFixed(0),slippage:t,address:e,collectAmountA:S,collectAmountB:I,rewardAmounts:b,deadline:p}}}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),c=this.decreaseLiquidityHelper.decodeInputU64(6),p=this.collectRewardHelper.map(I=>I.decodeInputU64(5)),b=this.collectFeeHelper.decodeInputU64(3)||0,S=this.collectFeeHelper.decodeInputU64(4)||0;return{txType:Lt.TransactionType.Other,type:"removeLiquidityWithReturn",intentionData:{pool:t,decreaseLiquidity:o,nft:n,amountA:i,amountB:s,slippage:10,address:e,collectAmountA:b,collectAmountB:S,rewardAmounts:p,deadline:c}}}decodePrixClaim(){return{txType:Lt.TransactionType.Other,type:"PrixClaim",intentionData:{}}}decodePrixJoin(){return{txType:Lt.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:Lt.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:Lt.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 Me(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 Me(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 Me(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 Me(e,this.txb)}get swapExactBaseForQuoteHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${zt.PackageId}::clob_v2::swap_exact_base_for_quote`:!1);return new Me(e,this.txb)}get swapExactQuoteForBaseHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${zt.PackageId}::clob_v2::swap_exact_quote_for_base`:!1);return new Me(e,this.txb)}},Me=class{constructor(e,t){this.moveCall=e;this.txb=t}moveCall;txb;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 Um=require("turbos-clmm-sdk");var Ki=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Um.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:p,tickLower:b,tickUpper:S,deadline:I,txb:x}=this.data;return n.pool.addLiquidity({pool:o,slippage:p,address:i,amountA:s,amountB:c,tickLower:b,tickUpper:S,deadline:I,txb:x})}static fromData(t){return new a(t)}};var qm=require("turbos-clmm-sdk");var Vi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new qm.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 Fm=require("turbos-clmm-sdk");var $i=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Fm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,nft:s,collectAmountA:c,collectAmountB:p,deadline:b,txb:S}=this.data;return n.pool.collectFee({pool:o,address:i,collectAmountA:c,collectAmountB:p,nft:s,deadline:b,txb:S})}static fromData(t){return new a(t)}};var Km=require("turbos-clmm-sdk");var Hi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Km.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,nft:s,rewardAmounts:c,deadline:p,txb:b}=this.data;return n.pool.collectReward({pool:o,address:i,rewardAmounts:c,nft:s,deadline:p,txb:b})}static fromData(t){return new a(t)}};var Vm=require("turbos-clmm-sdk");var Gi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Vm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{fee:o,address:i,tickLower:s,tickUpper:c,sqrtPrice:p,slippage:b,coinTypeA:S,coinTypeB:I,amountA:x,amountB:D,deadline:k,txb:M}=this.data;return n.pool.createPool({fee:o,amountA:x,amountB:D,address:i,tickLower:s,tickUpper:c,sqrtPrice:p,slippage:b,coinTypeA:S,coinTypeB:I,deadline:k,txb:M})}static fromData(t){return new a(t)}};var $m=require("turbos-clmm-sdk");var Xi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new $m.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:p,nft:b,decreaseLiquidity:S,deadline:I,txb:x}=this.data;return n.pool.decreaseLiquidity({pool:o,slippage:p,address:i,amountA:s,amountB:c,nft:b,decreaseLiquidity:S,deadline:I,txb:x})}static fromData(t){return new a(t)}};var Hm=require("turbos-clmm-sdk");var zi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Hm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:p,nft:b,decreaseLiquidity:S,deadline:I}=this.data,{txb:x,coinA:D,coinB:k}=await n.pool.decreaseLiquidityWithReturn({pool:o,slippage:p,address:i,amountA:s,amountB:c,nft:b,decreaseLiquidity:S,deadline:I});return x.transferObjects([D,k],this.data.address),x}static fromData(t){return new a(t)}};var Gm=require("turbos-clmm-sdk");var Qi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Gm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:p,nft:b,deadline:S,txb:I}=this.data;return n.pool.increaseLiquidity({pool:o,slippage:p,address:i,amountA:s,amountB:c,nft:b,deadline:S,txb:I})}static fromData(t){return new a(t)}};var Xm=require("@mysten/sui/transactions"),zm=require("@mysten/sui/utils");var Yi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Xm.Transaction;return n.moveCall({target:`${Xt.PackageId}::claim::claim`,typeArguments:[Xt.turbosCoinType],arguments:[n.object(Xt.Claim),n.object(zm.SUI_CLOCK_OBJECT_ID)]}),n}static fromData(t){return new a(t)}};var Qm=require("@mysten/sui/transactions");var Ji=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Qm.Transaction;return n.moveCall({target:`${Xt.PackageId}::claim::join`,typeArguments:[Xt.turbosCoinType],arguments:[n.object(Xt.Claim)]}),n}static fromData(t){return new a(t)}};var Ym=require("@mysten/sui/transactions"),Jm=require("turbos-clmm-sdk");var Zi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Jm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),o=new Ym.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 Zm=require("turbos-clmm-sdk");var tr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Zm.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 tp=require("turbos-clmm-sdk");var er=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(this.data,"this.data");let n=new tp.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{routes:o,coinTypeA:i,coinTypeB:s,address:c,amountA:p,amountB:b,slippage:S,amountSpecifiedIsInput:I,deadline:x,txb:D}=this.data;return n.trade.swap({routes:o,coinTypeA:i,coinTypeB:s,address:c,amountA:p,amountB:b,amountSpecifiedIsInput:I,slippage:S,deadline:x,txb:D})}static fromData(t){return new a(t)}};var rp=require("turbos-clmm-sdk");var Zs=require("@mysten/sui/transactions"),tc=require("@mysten/sui/utils");var ep=require("turbos-clmm-sdk");var Gn=class{constructor(e){this.turbosSdk=e}turbosSdk;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=[],c=0;return o.sort((p,b)=>Number(b.balance)-Number(p.balance)).some(p=>c>=n?!0:(c+=Number(p.balance),s.push(p),!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:`${zt.PackageId}::custodian_v2::AccountCap`}});return t.data[0]?.data?(0,ep.unstable_getObjectId)(t.data[0].data):void 0}createAccount(e){let[t]=e.moveCall({typeArguments:[],target:`${zt.PackageId}::clob_v2::create_account`,arguments:[]});return t}zero(e,t){return t.moveCall({typeArguments:[e],target:"0x2::coin::zero",arguments:[]})}};var np=89,op=1e6,ap=async a=>{let{token1:e,token2:t,poolId:n,amountIn:o,currentAddress:i,turbosSdk:s}=a,c=new Zs.Transaction,p=new Gn(s),b=await p.getCoinsData(i,t,o),[S,I]=p.splitAndMergeCoin(b,o,c);if(!S)throw new Error(`Not enough balance: ${t}`);let x=await p.IsAccountCap(i),D=x?c.object(x):p.createAccount(c),[k,M,L]=c.moveCall({typeArguments:[e,t],target:`${zt.PackageId}::clob_v2::swap_exact_quote_for_base`,arguments:[c.object(String(n)),c.pure.u64(np),D,c.pure.u64(o),c.object((0,tc.normalizeSuiObjectId)("0x6")),S]});return I&&c.transferObjects([I],c.pure.address(i)),c.transferObjects([k],c.pure.address(i)),c.transferObjects([M],c.pure.address(i)),x||c.transferObjects([D],c.pure.address(i)),c.setSenderIfNotSet(i),c.setGasBudget(op),c},ip=async a=>{let{token1:e,token2:t,poolId:n,amountIn:o,currentAddress:i,turbosSdk:s}=a,c=new Zs.Transaction,p=new Gn(s),b=await p.getCoinsData(i,e,o),[S,I]=p.splitAndMergeCoin(b,o,c);if(!S)throw new Error(`Not enough balance: ${e}`);let x=await p.IsAccountCap(i),D=x?c.object(x):p.createAccount(c),k=p.zero(t,c),[M,L,U]=c.moveCall({typeArguments:[e,t],target:`${zt.PackageId}::clob_v2::swap_exact_base_for_quote`,arguments:[c.object(String(n)),c.pure.u64(np),D,c.pure.u64(o),S,k,c.object((0,tc.normalizeSuiObjectId)("0x6"))]});return I&&c.transferObjects([I],c.pure.address(i)),c.transferObjects([M],c.pure.address(i)),c.transferObjects([L],c.pure.address(i)),x||c.transferObjects([D],c.pure.address(i)),c.setSenderIfNotSet(i),c.setGasBudget(op),c};var nr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new rp.TurbosSdk(t.network.replace("sui:",""),t.suiClient);return await ip({...this.data,turbosSdk:n,currentAddress:t.account.address})}static fromData(t){return new a(t)}};var sp=require("turbos-clmm-sdk");var or=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new sp.TurbosSdk(t.network.replace("sui:",""),t.suiClient);return await ap({...this.data,turbosSdk:n,currentAddress:t.account.address})}static fromData(t){return new a(t)}};var ar=class{application="turbos";supportSDK="@mysten/sui";async deserialize(e){console.log(e,"input");let t=new lp.TurbosSdk(e.network.replace("sui:","")),n=await t.contract.getConfig(),{transaction:o,account:i}=e,c=await new Fi(o,t,n).decode(i.address);return{txType:cp.TransactionType.Other,txSubType:c.type,intentionData:c.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=Gi.fromData(e.intentionData);break;case"AddLiquidity":i=Ki.fromData(e.intentionData);break;case"IncreaseLiquidity":i=Qi.fromData(e.intentionData);break;case"DecreaseLiquidity":i=Xi.fromData(e.intentionData);break;case"DecreaseLiquidityWithReturn":i=zi.fromData(e.intentionData);break;case"RemoveLiquidity":i=Zi.fromData(e.intentionData);break;case"removeLiquidityWithReturn":i=tr.fromData(e.intentionData);break;case"CollectFee":i=$i.fromData(e.intentionData);break;case"CollectReward":i=Hi.fromData(e.intentionData);break;case"Burn":i=Vi.fromData(e.intentionData);break;case"Swap":i=er.fromData(e.intentionData);break;case"PrixJoin":i=Ji.fromData(e.intentionData);break;case"PrixClaim":i=Yi.fromData(e.intentionData);break;case"SwapExactBaseForQuote":i=nr.fromData(e.intentionData);break;case"SwapExactQuoteForBase":i=or.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};var dp=require("@msafe/sui3-utils");var ir=require("@msafe/sui3-utils"),ec=require("@mysten/sui.js/bcs"),Oe=require("@mysten/sui.js/utils");var Ff={packageId:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",poolObjectId:"0x7fa2faa111b8c65bea48a23049bfd81ca8f971a262d981dcd9a17c3825cb5baf",metadataObjectId:"0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",systemStateObjectId:"0x0000000000000000000000000000000000000000000000000000000000000005",certType:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",gasBudget:5e7},Mt=Ff;var rr=class{constructor(e){this.txb=e}txb;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(`${Mt.packageId}::native_pool::stake`)}isUnStakeTransaction(){return!!this.getMoveCallTransaction(`${Mt.packageId}::native_pool::unstake`)}isClaimTicketTransaction(){return!!this.getMoveCallTransaction(`${Mt.packageId}::native_pool::burn_ticket`)}decodeStake(){let e=this.transactions[0].amounts[0].value.toNumber();return{txType:ir.TransactionType.Other,type:"Stake",intentionData:{amount:e}}}decodeUnStake(){let t=this.transactions.find(n=>n.kind==="SplitCoins").amounts[0].value.toNumber();return{txType:ir.TransactionType.Other,type:"UnStake",intentionData:{amount:t}}}decodeClaimTicket(){let e=this.helper.decodeOwnedObjectId(2);return console.log(e),{txType:ir.TransactionType.Other,type:"ClaimTicket",intentionData:{ticketId:e}}}get helper(){let e=this.transactions.find(t=>t.kind==="MoveCall"&&t.target.startsWith(Mt.packageId));return new nc(e,this.txb)}},nc=class a{constructor(e,t){this.moveCall=e;this.txb=t}moveCall;txb;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,Oe.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 ec.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,Oe.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Oe.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,Oe.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Oe.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 ec.bcs.de(t,new Uint8Array(n))}typeArg(e){return(0,Oe.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};var up=require("@mysten/sui.js/transactions");var sr=class a extends Jt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(t);let n=new up.TransactionBlock,{ticketId:o}=this.data;return n.moveCall({target:`${Mt.packageId}::native_pool::burn_ticket`,arguments:[n.object(Mt.poolObjectId),n.object(Mt.systemStateObjectId),n.object(o)]}),n}static fromData(t){return new a(t)}};var mp=require("@mysten/sui.js/transactions");var cr=class a extends Jt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(t);let n=new mp.TransactionBlock,{amount:o}=this.data,[i]=n.splitCoins(n.gas,[n.pure(o)]);return n.moveCall({target:`${Mt.packageId}::native_pool::stake`,arguments:[n.object(Mt.poolObjectId),n.object(Mt.metadataObjectId),n.object(Mt.systemStateObjectId),i]}),n}static fromData(t){return new a(t)}};var pp=require("@mysten/sui.js/transactions");var lr=class a extends Jt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(t);let n=new pp.TransactionBlock,{amount:o}=this.data,i=(await t.suiClient.getAllCoins({owner:t.account.address,limit:100})).data,[s,...c]=i.filter(S=>S.coinType.split("::")[0]===Mt.certType.split("::")[0]),p=n.object(s.coinObjectId);c.length&&n.mergeCoins(p,c.map(S=>n.object(S.coinObjectId)));let b=n.splitCoins(n.object(s.coinObjectId),[n.pure(o)]);return n.moveCall({target:`${Mt.packageId}::native_pool::unstake`,arguments:[n.object(Mt.poolObjectId),n.object(Mt.metadataObjectId),n.object(Mt.systemStateObjectId),b]}),n}static fromData(t){return new a(t)}};var ur=class{application="volo";supportSDK="@mysten/sui.js";async deserialize(e){let{transactionBlock:t}=e,o=new rr(t).decode();return{txType:dp.TransactionType.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n}=e,o;switch(e.txSubType){case"Stake":o=cr.fromData(e.intentionData);break;case"UnStake":o=lr.fromData(e.intentionData);break;case"ClaimTicket":o=sr.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};var kp=require("@msafe/sui3-utils");var oc=require("@cetusprotocol/common-sdk"),le=require("@msafe/sui3-utils"),fn=require("@mysten/bcs"),hn=require("@mysten/sui/bcs");var mr=class{constructor(e,t){this.transaction=e;this.appContext=t}transaction;appContext;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:le.TransactionType.Other,type:"OpenPosition",intentionData:{pool:this.getSharedObjectID(this.getInputIndex(e,1)),lowerTick:Number((0,oc.asIntN)(BigInt(this.getU32(this.getInputIndex(e,2)))).toString()),upperTick:Number((0,oc.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:le.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:le.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:le.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:le.TransactionType.Other,type:"CollectRewards",intentionData:{pool:e[0].pool,position:e[0].position,collectRewardTokens:e.map(t=>t.rewardCoinType)}}}decodeCollectFeeTx(){return{txType:le.TransactionType.Other,type:"CollectFee",intentionData:this.getFeeCallData()}}decodeCollectRewardsAndFeeTx(){let e=this.getFeeCallData();return{txType:le.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:le.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(hn.bcs.u32().parse(Uint8Array.from((0,fn.fromBase64)(this.inputs[e].Pure.bytes))))}getU64(e){return hn.bcs.u64().parse(Uint8Array.from((0,fn.fromBase64)(this.inputs[e].Pure.bytes)))}getU128(e){return hn.bcs.u128().parse(Uint8Array.from((0,fn.fromBase64)(this.inputs[e].Pure.bytes)))}getBoolean(e){return hn.bcs.bool().parse(Uint8Array.from((0,fn.fromBase64)(this.inputs[e].Pure.bytes)))}getAddress(e){return hn.bcs.Address.parse(Uint8Array.from((0,fn.fromBase64)(this.inputs[e].Pure.bytes)))}getTypeArguments(e){return e.MoveCall.typeArguments||[]}getInputIndex(e,t){return e.MoveCall.arguments[t].Input}};var bp=require("@msafe/sui3-utils");var pr=require("@bluefin-exchange/bluefin7k-aggregator-sdk"),oe=require("@firefly-exchange/library-sui"),yp=require("turbos-clmm-sdk");var hp=require("@firefly-exchange/library-sui"),gp=require("@firefly-exchange/library-sui/spot"),fp={rpc:"https://fullnode.mainnet.sui.io/",objects:{GlobalConfig:"0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",BasePackage:"0x3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267",CurrentPackage:"0x67b34b728c4e28e704dcfecf7c5cf55c7fc593b6c65c20d1836d97c209c1928a"}},me=(a,e)=>{if(a!=="sui:mainnet")throw new Error("Bluefin spot protocol is only available on sui::mainnet");let t=new hp.SuiClient({url:fp.rpc});return new gp.OnChainCalls(t,fp.objects,{address:e.address,isUIWallet:!1})};var Bt=class{static async OpenPosition(e,t,n){let o=me(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=me(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=me(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=me(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=me(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=me(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=me(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=me(n,t),i=await(0,pr.getQuote)({tokenIn:e.tokenIn.address,tokenOut:e.tokenOut.address,amountIn:new yp.Decimal(e.amountIn).mul(10**e.tokenIn.decimals).toString()}),s=await(0,pr.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 dr=class a extends w{constructor(t){super(t);this.data=t}data;txType=bp.TransactionType.Other;txSubType="Aggregator7KSwap";async build(t){let{account:n,network:o}=t;return console.log(this.data),Bt.aggregator7KSwap(this.data,n,o)}static fromData(t){return new a(t)}};var Tp=require("@msafe/sui3-utils");var fr=class a extends w{constructor(t){super(t);this.data=t}data;txType=Tp.TransactionType.Other;txSubType="ClosePosition";async build(t){let{account:n,network:o}=t;return console.log(this.data),Bt.closePosition(this.data,n,o)}static fromData(t){return new a(t)}};var Sp=require("@msafe/sui3-utils");var hr=class a extends w{constructor(t){super(t);this.data=t}data;txType=Sp.TransactionType.Other;txSubType="CollectFee";async build(t){let{account:n,network:o}=t;return console.log(this.data),Bt.collectFee(this.data,n,o)}static fromData(t){return new a(t)}};var wp=require("@msafe/sui3-utils");var gr=class a extends w{constructor(t){super(t);this.data=t}data;txType=wp.TransactionType.Other;txSubType="CollectRewards";async build(t){let{account:n,network:o}=t;return console.log(this.data),Bt.collectRewards(this.data,n,o)}static fromData(t){return new a(t)}};var Ip=require("@msafe/sui3-utils");var yr=class a extends w{constructor(t){super(t);this.data=t}data;txType=Ip.TransactionType.Other;txSubType="CollectRewardsAndFee";async build(t){let{account:n,network:o}=t;return console.log(this.data),Bt.collectRewardsAndFee(this.data,n,o)}static fromData(t){return new a(t)}};var Cp=require("@msafe/sui3-utils");var br=class a extends w{constructor(t){super(t);this.data=t}data;txType=Cp.TransactionType.Other;txSubType="OpenPosition";async build(t){let{account:n,network:o}=t;return console.log(this.data),Bt.OpenPosition(this.data,n,o)}static fromData(t){return new a(t)}};var xp=require("@msafe/sui3-utils");var Tr=class a extends w{constructor(t){super(t);this.data=t}data;txType=xp.TransactionType.Other;txSubType="ProvideLiquidity";async build(t){let{account:n,network:o}=t;return console.log(this.data),Bt.provideLiquidity(this.data,n,o)}static fromData(t){return new a(t)}};var Dp=require("@msafe/sui3-utils");var Sr=class a extends w{constructor(t){super(t);this.data=t}data;txType=Dp.TransactionType.Other;txSubType="RemoveLiquidity";async build(t){let{account:n,network:o}=t;return console.log(this.data),Bt.removeLiquidity(this.data,n,o)}static fromData(t){return new a(t)}};var wr=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 mr(t,n).decode();return{txType:kp.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=br.fromData(e.intentionData);break;case"ProvideLiquidity":i=Tr.fromData(e.intentionData);break;case"RemoveLiquidity":i=Sr.fromData(e.intentionData);break;case"ClosePosition":i=fr.fromData(e.intentionData);break;case"CollectFee":i=hr.fromData(e.intentionData);break;case"CollectRewards":i=gr.fromData(e.intentionData);break;case"CollectRewardsAndFee":i=yr.fromData(e.intentionData);break;case"Aggregator7KSwap":i=dr.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};var vd=require("@msafe/sui3-utils");var Fp=require("@mmt-finance/clmm-sdk"),Kp=require("@mysten/sui/transactions");var qe=require("@mmt-finance/clmm-sdk/dist/utils/math/tickMath"),Rp=At(require("bignumber.js")),R=At(Ap());var Vf="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",Wt=a=>a!=="0x2::sui::SUI"?a:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",$f=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},Hf=(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")},Gf=(a,e,t,n)=>{if(a===Vf){let[o]=n.splitCoins(n.gas,[n.pure.u64(t)]);return o}else{let o=Hf(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 Mp(a,e,t,n,o){let i=await $f({suiClient:a.rpcClient,address:e,type:t});return Gf(Wt(t),i.map(c=>({balance:BigInt(c.balance),objectId:c.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 Op({sdk:a,address:e,positionId:t,pool:n,txb:o,targetCoinType:i,slippage:s}){let c={objectId:n.poolId,tokenXType:n.tokenXType,tokenYType:n.tokenYType},p=n.rewarders.map(S=>S.coinType);p.length>0&&(console.log("claimRewardsAsTargetCoin input",{pool:c,positionId:t,rewarderCoinTypes:p,targetCoinType:i,slippage:s,toAddress:e}),await a.Pool.claimRewardsAs({txb:o,pool:c,positionId:t,rewarderCoinTypes:p,targetCoinType:i,slippage:s,toAddress:e}));let b=await a.Pool.getAllPools();return await a.Pool.claimFeeAs({txb:o,pool:c,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 Xf(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 zf(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 Pp=(a,e,t)=>{let n=(0,qe.convertI32ToSigned)(t?a+a%(e??1):a-a%(e??1));return n>0?new R.default(Xf(n)):new R.default(zf(n))};function Bp(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 ae({address:a,coinType:e,coinAmount:t,coinDecimals:n,tx:o,mmt:i}){let s=Bp(t,n),c;return Number(t)?c=await Mp(i,a,Wt(e),s,o):[c]=o.moveCall({target:"0x2::coin::zero",typeArguments:[e],arguments:[]}),c}function Ep({mmt:a,tx:e,poolModel:t,selectedLowTick:n,selectedHighTick:o}){let i=Pp((0,qe.convertI32ToSigned)(n),t.tickSpacing),s=Pp((0,qe.convertI32ToSigned)(o),t.tickSpacing);return a.Position.openPosition(e,t,i.toString(),s.toString())}var Qf=(a,e)=>{let n=1e4-Math.floor(e*100);return a*BigInt(n)/BigInt(1e4)};function Ir(a,e,t){let n=Bp(a,e);return Number(a)===0?BigInt(0):Qf(n,t)}async function Fe({poolId:a,currentSqrtPrice:e,tokenX:t,tokenY:n,slippagePercentage:o,isTokenX:i,suiClient:s}){let p=(await s.getObject({id:a,options:{showContent:!0}}))?.data?.content?.fields?.sqrt_price??e,b=qe.TickMath.sqrtPriceX64ToPrice(new R.default(p?.toString()),t.decimals,n.decimals),S=i?(100-o)/100:(100+o)/100,I=qe.TickMath.priceToSqrtPriceX64(b.mul(S),t.decimals,n.decimals);return BigInt(I.toString())}var Np=async(a,e,t,n,o,i,s,c,p,b)=>{let S=await ae({mmt:a,address:t,coinType:i.tokenX.coinType,coinAmount:n,coinDecimals:i.tokenX.decimals,tx:e}),I=await ae({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},D=Ep({mmt:a,tx:e,poolModel:x,selectedLowTick:c,selectedHighTick:p}),k=Ir(n,i.tokenX.decimals,b),M=Ir(o,i.tokenY.decimals,b);a.Pool.addLiquidity(e,x,D,S,I,k,M,t),e.transferObjects([D],e.pure.address(t))},Wp=async(a,e,t,n,o,i,s,c,p,b,S)=>{try{let I=await ae({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:Wt(s.tokenX.coinType),tokenYType:Wt(s.tokenY.coinType),tickSpacing:s.tickSpacing},D=Ep({mmt:a,tx:e,poolModel:x,selectedLowTick:c,selectedHighTick:p}),k=await Fe({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:D,inputCoin:I,isXtoY:i,limitSqrtPrice:k,slippagePercentage:S,transferToAddress:n,useMvr:!0}),e.transferObjects([D],e.pure.address(n))}catch(I){console.error(I)}},_p=async(a,e,t,n,o,i,s,c)=>{let p=await ae({mmt:a,address:t,coinType:i.tokenX.coinType,coinAmount:n,coinDecimals:i.tokenX.decimals,tx:e}),b=await ae({mmt:a,address:t,coinType:i.tokenY.coinType,coinAmount:o,coinDecimals:i.tokenY.decimals,tx:e}),S={objectId:i.poolId,tokenXType:i.tokenXType,tokenYType:i.tokenYType,tickSpacing:i.tickSpacing},I=Ir(n,i.tokenX.decimals,c),x=Ir(o,i.tokenY.decimals,c);a.Pool.addLiquidity(e,S,s,p,b,I,x,t)},Lp=async(a,e,t,n,o,i,s,c,p)=>{try{let b=await ae({mmt:a,address:t,coinType:o?i.tokenX.coinType:i.tokenY.coinType,coinAmount:n,coinDecimals:o?i.tokenX.decimals:i.tokenY.decimals,tx:e}),S={objectId:i.poolId,tokenXType:i.tokenX.coinType,tokenYType:i.tokenY.coinType,tickSpacing:i.tickSpacing},I=await Fe({suiClient:a.rpcClient,poolId:i.poolId,currentSqrtPrice:i.currentSqrtPrice,tokenX:i.tokenX,tokenY:i.tokenY,slippagePercentage:c,isTokenX:o});await a.Pool.addLiquiditySingleSidedV2({txb:e,pool:S,position:s,inputCoin:b,isXtoY:o,limitSqrtPrice:I,slippagePercentage:p,transferToAddress:t})}catch(b){throw console.error(b),b}},jp=(a,e)=>BigInt(e===100?a:new Rp.default(a).multipliedBy(e/100).toFixed(0)),Up=async(a,e,t,n,o,i)=>{let s=jp(t.liquidity,o),c=n.tokenX.coinType,p=n.tokenY.coinType,b={objectId:n?.poolId,tokenXType:c,tokenYType:p};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)},qp=async({sdk:a,address:e,position:t,pool:n,withdrawPercentage:o,txb:i,targetCoinType:s,slippage:c})=>{let p=jp(t.liquidity,o),b=Wt(n.tokenX.coinType),S=Wt(n.tokenY.coinType),I=Wt(s)===S,x={objectId:n?.poolId,tokenXType:b,tokenYType:S},{removeLpCoinA:D,removeLpCoinB:k}=a.Pool.removeLiquidity(i,x,t.objectId,p,BigInt(0),BigInt(0)),M=await Fe({suiClient:a.rpcClient,poolId:n.poolId,currentSqrtPrice:n.currentSqrtPrice,tokenX:n.tokenX,tokenY:n.tokenY,isTokenX:I,slippagePercentage:c}),L=I?D:k,U=i.moveCall({target:"0x2::coin::value",arguments:[L],typeArguments:[I?b:S]});i.transferObjects([I?k:D],e),a.Pool.swapV2({txb:i,transferToAddress:e,pool:x,limitSqrtPrice:M,amount:U,inputCoin:L,isXtoY:I}),Ue(a,e,t,n,i),o===100&&a.Position.closePosition(i,t.objectId)};var Cr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=Fp.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amountA:i,amountB:s,pool:c,selectedLowTick:p,selectedHighTick:b,slippage:S}=n,I=new Kp.Transaction;return await Np(t,I,o,i,s,c,c.poolId,p,b,S),I}static fromData(t){return new a(t)}};var Vp=require("@mmt-finance/clmm-sdk"),$p=require("@mysten/sui/transactions");var xr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=Vp.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amount:i,isTokenX:s,pool:c,selectedLowTick:p,selectedHighTick:b,swapSlippage:S,addLiquiditySlippage:I}=n,x=new $p.Transaction;return await Wp(t,x,t.rpcClient,o,i,s,c,p,b,S,I),x}static fromData(t){return new a(t)}};var Jp=require("@mmt-finance/clmm-sdk"),Zp=require("@mmt-finance/ve-sdk-v1"),td=require("@mysten/sui/transactions");var gn="0x35169bc93e1fddfcf3a82a9eae726d349689ed59e4b065369af8789fe59f8608::mmt::MMT";var Xn=async a=>{let e=await a.getSyncEpochInfo();if(!e)throw new Error("Failed to sync epoch");return e},Hp=async(a,e,t,n,o,i,s,c)=>{let p=Number(n);if(!n||Number.isNaN(p)||p<=0)throw new Error(`Bond Failed: Invalid amount: ${n}. Amount must be greater than 0`);if(!i&&!s)throw new Error("Bond Failed: Failed to calculate unbond date");if(typeof s!="number"&&!i)throw new Error("Bond Failed: Invalid unbond date");let b=await ae({mmt:a,tx:c,address:o,coinType:t.coinType,coinAmount:n,coinDecimals:t.decimals});if(!b)throw new Error(`Bond Failed: Failed to get coin object for ${t.coinType}, amount: ${n}`);let S=await Xn(e);await e.syncOrAdvanceEpoch(c,S.currentEpoch,S.syncedEpoch);let I=c.getData().commands.length;i?await e.createMaxBond(c,b,o):await e.createBond(c,b,BigInt(s),o);let D=c.getData().commands.length;if(D===0)throw new Error(`Bond Failed: Transaction has no commands. enableAutoMaxBond: ${i}, unbondAt: ${s}, amount: ${n}`);if(D===I)throw new Error(`Bond Failed: No new commands were added by bond operation. Commands before: ${I}, after: ${D}`)},Gp=async(a,e,t,n,o,i,s,c)=>{let p=await Xn(a);if(await a.syncOrAdvanceEpoch(c,p.currentEpoch,p.syncedEpoch),await a.claimReward(c,t,e),o)i||await a.setNormal(c,t);else if(i)await a.setMaxBond(c,t);else{if(typeof s!="number")throw new Error("Extend Failed: Failed to calculate unbond date");if(s<n)throw new Error("Extend Failed: New duration cannot be less than current duration");await a.extend(c,t,s)}},Xp=async(a,e,t,n,o)=>{let i=await Xn(a);await a.syncOrAdvanceEpoch(o,i.currentEpoch,i.syncedEpoch),await a.claimReward(o,t,e),await n.reduce(async(s,c)=>{await s,await a.claimReward(o,c,e),await a.merge(o,t,c)},Promise.resolve())},zp=async(a,e,t,n)=>{let o=await Xn(a);await a.syncOrAdvanceEpoch(n,o.currentEpoch,o.syncedEpoch),await a.claimReward(n,t,e),await a.unbond(n,t,e)},Qp=async(a,e,t,n)=>{if(t.length>0&&t.some(o=>o.userRewardAmount>0)){let o=await Xn(a);await a.syncOrAdvanceEpoch(n,o.currentEpoch,o.syncedEpoch),await t.reduce(async(i,s)=>{await i,s.userRewardAmount>0&&await a.claimReward(n,s.veId,e)},Promise.resolve())}},Yp=async(a,e,t,n,o,i,s,c,p)=>{let b=Wt(i),S=[];for(let q of n)if(q.userRewardAmount>0){let Ot=await e.buildClaimRewardCoin(o,q.veId);S.push(Ot)}let I=[];for(let q of S)Array.isArray(q)?I.push(...q):I.push(q);if(I.length===0)return;if(i===Wt(gn)){o.transferObjects(I,o.pure.address(t));return}let x=c?.[i]?.[gn];if(!x||x.length===0)throw new Error(`No swap route found from ${gn} to ${i}`);let[D,...k]=I;k.length>0&&o.mergeCoins(D,k);let M=D,L=o.moveCall({target:"0x2::coin::value",arguments:[M],typeArguments:[gn]}),U=Wt(gn);for(let q=0;q<x.length;q++){let Ot=x[q],W=p.find(H=>H.poolId===Ot);if(!W)throw new Error(`Pool ${Ot} not found`);let Et=Wt(W.tokenXType||W.tokenX?.coinType||"")===U,Ve={objectId:W.poolId,tokenXType:W.tokenXType||W.tokenX?.coinType||"",tokenYType:W.tokenYType||W.tokenY?.coinType||""},zn=await Fe({suiClient:a.rpcClient,poolId:W.poolId,currentSqrtPrice:W.currentSqrtPrice,tokenX:W.tokenX,tokenY:W.tokenY,slippagePercentage:s,isTokenX:Et}),{outputCoin:Qn,leftoverCoin:yn}=a.Pool.swapV2({txb:o,pool:Ve,amount:L,inputCoin:M,isXtoY:Et,limitSqrtPrice:zn});if(o.transferObjects([yn],o.pure.address(t)),M=Qn,U=Et?Wt(W.tokenYType||W.tokenY?.coinType||""):Wt(W.tokenXType||W.tokenX?.coinType||""),U===i){o.transferObjects([M],o.pure.address(t));return}L=o.moveCall({target:"0x2::coin::value",arguments:[M],typeArguments:[U]})}o.transferObjects([M],o.pure.address(t))};var Dr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=Jp.MmtSDK.NEW({network:"mainnet"}),o=new Zp.VeMMT(t.suiClient,"mainnet"),{params:i}=this.data,{address:s,positions:c,pools:p,veMMTs:b}=i,S=new td.Transaction;for(let I of c){let x=p.find(D=>D.poolId===I.poolId);x&&Ue(n,s,I,x,S)}return await Qp(o,s,b,S),S}static fromData(t){return new a(t)}};var ed=require("@mmt-finance/clmm-sdk"),nd=require("@mmt-finance/ve-sdk-v1"),od=require("@mysten/sui/transactions");var kr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=ed.MmtSDK.NEW({network:"mainnet"}),o=new nd.VeMMT(t.suiClient,"mainnet"),{params:i}=this.data,{claimVeMMTParams:s}=i,{address:c,veMMTs:p,targetCoinType:b,slippage:S,claimRoutes:I,pools:x}=s,D=new od.Transaction;return await Promise.all(i.claimParams.map(k=>Op({...k,sdk:n,txb:D}))),await Yp(n,o,c,p,D,b,S,I,x),D}static fromData(t){return new a(t)}};var ad=require("@mmt-finance/clmm-sdk"),id=require("@mysten/sui/transactions");var vr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=ad.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,position:i,pool:s}=n,c=new id.Transaction;return Ue(t,o,i,s,c),c}static fromData(t){return new a(t)}};var rd=require("@mmt-finance/clmm-sdk"),sd=require("@mysten/sui/transactions");var Ar=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=rd.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amountA:i,amountB:s,pool:c,positionObjectId:p,slippage:b}=n,S=new sd.Transaction;return await _p(t,S,o,i,s,c,p,b),S}static fromData(t){return new a(t)}};var cd=require("@mmt-finance/clmm-sdk"),ld=require("@mysten/sui/transactions");var Mr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=cd.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amount:i,isTokenX:s,pool:c,positionObjectId:p,swapSlippage:b,addLiquiditySlippage:S}=n,I=new ld.Transaction;return await Lp(t,I,o,i,s,c,p,b,S),I}static fromData(t){return new a(t)}};var ud=require("@mmt-finance/clmm-sdk"),md=require("@mysten/sui/transactions");var Or=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=ud.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{pool:o,position:i,address:s,withdrawPercentage:c,zapOutOn:p,targetCoinType:b,slippage:S}=n,I=new md.Transaction;return p?await qp({sdk:t,address:s,position:i,pool:o,withdrawPercentage:c,txb:I,targetCoinType:b,slippage:S}):await Up(t,s,i,o,c,I),I}static fromData(t){return new a(t)}};var rc=require("@mysten/sui/transactions"),sc=require("@suilend/springsui-sdk"),ic={id:"0x0431232199873db77a92aa645cd43521437e9cc5c6fff07fd03edb88afe0b25a",type:"0x2b6602099970374cf58a2a1b9d96f005fccceb81e92eb059873baf420eb6c717::x_sui::X_SUI",weightHookId:"0x9e35c13dbb0bc437e8ad5a95ec463622f58763e060552ae8d100db77f4904601"},pd=async(a,e,t)=>{let n=await sc.LstClient.initialize(a,ic),o=new rc.Transaction,[i]=o.splitCoins(o.gas,[BigInt(t)]),s=n.mint(o,i);return o.transferObjects([s],e),o},dd=async(a,e,t)=>{let n=await sc.LstClient.initialize(a,ic),o=await a.getCoins({owner:e,coinType:ic.type,limit:1e3});if(o.data.length===0)throw new Error("No lst coins found");let i=new rc.Transaction,s=o.data[0];o.data.length>1&&i.mergeCoins(s.coinObjectId,o.data.slice(1).map(b=>b.coinObjectId));let[c]=i.splitCoins(s.coinObjectId,[BigInt(t)]),p=n.redeem(i,c);return i.transferObjects([p],e),i};var Pr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{params:n}=this.data,{address:o,amount:i}=n;return await pd(t.suiClient,o,i)}static fromData(t){return new a(t)}};var gd=require("@mmt-finance/clmm-sdk"),yd=require("@mysten/sui/transactions");var fd=require("@mmt-finance/clmm-sdk/dist/utils/poolUtils");var hd=async(a,e,t,n,o,i,s)=>{let c=await ae({mmt:a,tx:i,address:o,coinType:t.coinType,coinAmount:n,coinDecimals:t.decimals}),p=i.moveCall({target:"0x2::coin::value",typeArguments:[t.coinType],arguments:[c]}),b=t.coinType;for(let S=0;S<e.length;S+=1){let{poolId:I,tokenX:x,tokenY:D,isStable:k,currentSqrtPrice:M}=e[S],{id:L,isReverse:U}=fd.mappedMmtV3Pool[I]||{id:I,isReverse:!1},q=Wt(x.coinType)===Wt(b);q=U?!q:q;let Ot=U?D.coinType:x.coinType,W=U?x.coinType:D.coinType,Ke=await Fe({poolId:L,tokenX:x,tokenY:D,slippagePercentage:s,isTokenX:q,suiClient:a.rpcClient,currentSqrtPrice:M}),Et=a.Pool.swap(i,{objectId:L,tokenXType:Ot,tokenYType:W,isStable:k},p,c,q,void 0,Ke,!1);i.transferObjects([c],i.pure.address(o)),c=Et,b=q?W:Ot,p=i.moveCall({target:"0x2::coin::value",typeArguments:[b],arguments:[c]})}i.transferObjects([c],i.pure.address(o))};var Rr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=gd.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{route:o,tokenIn:i,amountIn:s,address:c,slippage:p}=n,b=new yd.Transaction;return await hd(t,o,i,s,c,b,p),b}static fromData(t){return new a(t)}};var Br=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{params:n}=this.data,{address:o,amount:i}=n;return await dd(t.suiClient,o,i)}static fromData(t){return new a(t)}};var bd=require("@mmt-finance/clmm-sdk"),Td=require("@mmt-finance/ve-sdk-v1"),Sd=require("@mysten/sui/transactions");var Er=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=bd.MmtSDK.NEW({network:"mainnet"}),o=new Td.VeMMT(t.suiClient,"mainnet"),{params:i}=this.data,{token:s,amount:c,address:p,enableAutoMaxBond:b,unbondAt:S}=i,I=new Sd.Transaction;return await Hp(n,o,s,c,p,b,S,I),I}static fromData(t){return new a(t)}};var wd=require("@mmt-finance/ve-sdk-v1"),Id=require("@mysten/sui/transactions");var Nr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new wd.VeMMT(t.suiClient,"mainnet"),{params:o}=this.data,{address:i,veId:s,currentUnbondAt:c,isCurrentlyMaxBond:p,enableAutoMaxBond:b,unbondAt:S}=o,I=new Id.Transaction;return await Gp(n,i,s,c,p,b,S,I),I}static fromData(t){return new a(t)}};var Cd=require("@mmt-finance/ve-sdk-v1"),xd=require("@mysten/sui/transactions");var Wr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Cd.VeMMT(t.suiClient,"mainnet"),{params:o}=this.data,{address:i,veId:s,selectedVeMMTIds:c}=o,p=new xd.Transaction;return await Xp(n,i,s,c,p),p}static fromData(t){return new a(t)}};var Dd=require("@mmt-finance/ve-sdk-v1"),kd=require("@mysten/sui/transactions");var _r=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Dd.VeMMT(t.suiClient,"mainnet"),{params:o}=this.data,{address:i,veId:s}=o,c=new kd.Transaction;return await zp(n,i,s,c),c}static fromData(t){return new a(t)}};var Lr=class{application="mmt-dex";supportSDK="@mysten/sui";async deserialize(e){let{appContext:t}=e;return{txType:vd.TransactionType.Other,txSubType:t.action,intentionData:t}}async build(e){let t;switch(e.txSubType){case"Swap":t=Rr.fromData(e.intentionData);break;case"AddLiquidity":t=Cr.fromData(e.intentionData);break;case"AddLiquiditySingleSide":t=xr.fromData(e.intentionData);break;case"ClaimRewards":t=vr.fromData(e.intentionData);break;case"ClaimAllRewards":t=Dr.fromData(e.intentionData);break;case"ClaimRewardsAs":t=kr.fromData(e.intentionData);break;case"RemoveLiquidity":t=Or.fromData(e.intentionData);break;case"StakeXSui":t=Pr.fromData(e.intentionData);break;case"UnstakeXSui":t=Br.fromData(e.intentionData);break;case"ManageLiquidity":t=Ar.fromData(e.intentionData);break;case"ManageLiquiditySingleSide":t=Mr.fromData(e.intentionData);break;case"Bond":t=Er.fromData(e.intentionData);break;case"Extend":t=Nr.fromData(e.intentionData);break;case"Merge":t=Wr.fromData(e.intentionData);break;case"Unbond":t=_r.fromData(e.intentionData);break;default:throw new Error(`not implemented ${e.txSubType}`)}return t.build({suiClient:e.suiClient})}};var cc=require("@msafe/sui3-utils");var Ad=require("@mysten/sui/transactions"),Md=require("@nemoprotocol/vaults-sdk");var jr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o}=t,i=Md.Vaults.createSDK({client:n}),s=new Ad.Transaction;return await i.deposit(this.data,o.address,s),s}static fromData(t){return new a(t)}};var Od=require("@mysten/sui/transactions"),Pd=require("@nemoprotocol/vaults-sdk");var Ur=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o}=t,i=Pd.Vaults.createSDK({client:n}),s=new Od.Transaction;return await i.withdraw(this.data,o.address,s),s}static fromData(t){return new a(t)}};var qr=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:cc.TransactionType.Other,txSubType:"VaultDeposit",intentionData:e.appContext};if(n)return{txType:cc.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=jr.fromData(e.intentionData);break;case"VaultWithdraw":o=Ur.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};var Yf=_a.fromHelpers([new Ia,new Ba,new Ta,new Ea,new Yo,new ar,new Lr,new bi,new ur,new xo,new Ai,new _i,new ao,new wr,new qi,new qr]);
1
+ "use strict";var Nd=Object.create;var Yn=Object.defineProperty;var Wd=Object.getOwnPropertyDescriptor;var _d=Object.getOwnPropertyNames;var Ld=Object.getPrototypeOf,jd=Object.prototype.hasOwnProperty;var Ud=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports),cs=(a,e)=>{for(var t in e)Yn(a,t,{get:e[t],enumerable:!0})},Ac=(a,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of _d(e))!jd.call(a,o)&&o!==t&&Yn(a,o,{get:()=>e[o],enumerable:!(n=Wd(e,o))||n.enumerable});return a};var At=(a,e,t)=>(t=a!=null?Nd(Ld(a)):{},Ac(e||!a||!a.__esModule?Yn(t,"default",{value:a,enumerable:!0}):t,a)),qd=a=>Ac(Yn({},"__esModule",{value:!0}),a);var Pp=Ud((Op,rc)=>{"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 d=0;r[0]==="-"&&(d++,this.negative=1),d<r.length&&(u===16?this._parseHex(r,d,m):(this._parseBase(r,u,d),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 d=0;d<this.length;d++)this.words[d]=0;var h,T,C=0;if(m==="be")for(d=r.length-1,h=0;d>=0;d-=3)T=r[d]|r[d-1]<<8|r[d-2]<<16,this.words[h]|=T<<C&67108863,this.words[h+1]=T>>>26-C&67108863,C+=24,C>=26&&(C-=26,h++);else if(m==="le")for(d=0,h=0;d<r.length;d+=3)T=r[d]|r[d+1]<<8|r[d+2]<<16,this.words[h]|=T<<C&67108863,this.words[h+1]=T>>>26-C&67108863,C+=24,C>=26&&(C-=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 c(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 d=0;d<this.length;d++)this.words[d]=0;var h=0,T=0,C;if(m==="be")for(d=r.length-1;d>=u;d-=2)C=c(r,u,d)<<h,this.words[T]|=C&67108863,h>=18?(h-=18,T+=1,this.words[T]|=C>>>26):h+=8;else{var f=r.length-u;for(d=f%2===0?u+1:u;d<r.length;d+=2)C=c(r,u,d)<<h,this.words[T]|=C&67108863,h>=18?(h-=18,T+=1,this.words[T]|=C>>>26):h+=8}this._strip()};function p(y,r,u,m){for(var d=0,h=0,T=Math.min(y.length,u),C=r;C<T;C++){var f=y.charCodeAt(C)-48;d*=m,f>=49?h=f-49+10:f>=17?h=f-17+10:h=f,t(f>=0&&h<m,"Invalid character"),d+=h}return d}o.prototype._parseBase=function(r,u,m){this.words=[0],this.length=1;for(var d=0,h=1;h<=67108863;h*=u)d++;d--,h=h/u|0;for(var T=r.length-m,C=T%d,f=Math.min(T,T-C)+m,l=0,g=m;g<f;g+=d)l=p(r,g,g+d,u),this.imuln(h),this.words[0]+l<67108864?this.words[0]+=l:this._iaddn(l);if(C!==0){var v=1;for(l=p(r,g,r.length,u),g=0;g<C;g++)v*=u;this.imuln(v),this.words[0]+l<67108864?this.words[0]+=l:this._iaddn(l)}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")]=S}catch{o.prototype.inspect=S}else o.prototype.inspect=S;function S(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var I=["","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],D=[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 d=0,h=0,T=0;T<this.length;T++){var C=this.words[T],f=((C<<d|h)&16777215).toString(16);h=C>>>24-d&16777215,d+=2,d>=26&&(d-=26,T--),h!==0||T!==this.length-1?m=I[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 l=x[r],g=D[r];m="";var v=this.clone();for(v.negative=0;!v.isZero();){var O=v.modrn(g).toString(r);v=v.idivn(g),v.isZero()?m=O+m:m=I[l-O.length]+O+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 k=function(r,u){return r.allocUnsafe?r.allocUnsafe(u):new r(u)};o.prototype.toArrayLike=function(r,u,m){this._strip();var d=this.byteLength(),h=m||Math.max(1,d);t(d<=h,"byte array longer than desired length"),t(h>0,"Requested array length <= 0");var T=k(r,h),C=u==="le"?"LE":"BE";return this["_toArrayLike"+C](T,d),T},o.prototype._toArrayLikeLE=function(r,u){for(var m=0,d=0,h=0,T=0;h<this.length;h++){var C=this.words[h]<<T|d;r[m++]=C&255,m<r.length&&(r[m++]=C>>8&255),m<r.length&&(r[m++]=C>>16&255),T===6?(m<r.length&&(r[m++]=C>>24&255),d=0,T=0):(d=C>>>24,T+=2)}if(m<r.length)for(r[m++]=d;m<r.length;)r[m++]=0},o.prototype._toArrayLikeBE=function(r,u){for(var m=r.length-1,d=0,h=0,T=0;h<this.length;h++){var C=this.words[h]<<T|d;r[m--]=C&255,m>=0&&(r[m--]=C>>8&255),m>=0&&(r[m--]=C>>16&255),T===6?(m>=0&&(r[m--]=C>>24&255),d=0,T=0):(d=C>>>24,T+=2)}if(m>=0)for(r[m--]=d;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 M(y){for(var r=new Array(y.bitLength()),u=0;u<r.length;u++){var m=u/26|0,d=u%26;r[u]=y.words[m]>>>d&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 d=0;d<m.length;d++)this.words[d]=u.words[d]^m.words[d];if(this!==u)for(;d<u.length;d++)this.words[d]=u.words[d];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 d=0;d<u;d++)this.words[d]=~this.words[d]&67108863;return m>0&&(this.words[d]=~this.words[d]&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,d=r%26;return this._expand(m+1),u?this.words[m]=this.words[m]|1<<d:this.words[m]=this.words[m]&~(1<<d),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,d;this.length>r.length?(m=this,d=r):(m=r,d=this);for(var h=0,T=0;T<d.length;T++)u=(m.words[T]|0)+(d.words[T]|0)+h,this.words[T]=u&67108863,h=u>>>26;for(;h!==0&&T<m.length;T++)u=(m.words[T]|0)+h,this.words[T]=u&67108863,h=u>>>26;if(this.length=m.length,h!==0)this.words[this.length]=h,this.length++;else if(m!==this)for(;T<m.length;T++)this.words[T]=m.words[T];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 d,h;m>0?(d=this,h=r):(d=r,h=this);for(var T=0,C=0;C<h.length;C++)u=(d.words[C]|0)-(h.words[C]|0)+T,T=u>>26,this.words[C]=u&67108863;for(;T!==0&&C<d.length;C++)u=(d.words[C]|0)+T,T=u>>26,this.words[C]=u&67108863;if(T===0&&C<d.length&&d!==this)for(;C<d.length;C++)this.words[C]=d.words[C];return this.length=Math.max(this.length,C),d!==this&&(this.negative=1),this._strip()},o.prototype.sub=function(r){return this.clone().isub(r)};function L(y,r,u){u.negative=r.negative^y.negative;var m=y.length+r.length|0;u.length=m,m=m-1|0;var d=y.words[0]|0,h=r.words[0]|0,T=d*h,C=T&67108863,f=T/67108864|0;u.words[0]=C;for(var l=1;l<m;l++){for(var g=f>>>26,v=f&67108863,O=Math.min(l,r.length-1),P=Math.max(0,l-y.length+1);P<=O;P++){var B=l-P|0;d=y.words[B]|0,h=r.words[P]|0,T=d*h+v,g+=T/67108864|0,v=T&67108863}u.words[l]=v|0,f=g|0}return f!==0?u.words[l]=f|0:u.length--,u._strip()}var U=function(r,u,m){var d=r.words,h=u.words,T=m.words,C=0,f,l,g,v=d[0]|0,O=v&8191,P=v>>>13,B=d[1]|0,_=B&8191,F=B>>>13,pe=d[2]|0,K=pe&8191,$=pe>>>13,mc=d[3]|0,X=mc&8191,z=mc>>>13,pc=d[4]|0,Q=pc&8191,J=pc>>>13,dc=d[5]|0,Y=dc&8191,Z=dc>>>13,fc=d[6]|0,tt=fc&8191,et=fc>>>13,hc=d[7]|0,nt=hc&8191,ot=hc>>>13,gc=d[8]|0,at=gc&8191,it=gc>>>13,yc=d[9]|0,rt=yc&8191,st=yc>>>13,bc=h[0]|0,ct=bc&8191,lt=bc>>>13,Tc=h[1]|0,ut=Tc&8191,mt=Tc>>>13,Sc=h[2]|0,pt=Sc&8191,dt=Sc>>>13,wc=h[3]|0,ft=wc&8191,ht=wc>>>13,Ic=h[4]|0,gt=Ic&8191,yt=Ic>>>13,Cc=h[5]|0,bt=Cc&8191,Tt=Cc>>>13,xc=h[6]|0,St=xc&8191,wt=xc>>>13,Dc=h[7]|0,It=Dc&8191,Ct=Dc>>>13,kc=h[8]|0,xt=kc&8191,Dt=kc>>>13,vc=h[9]|0,kt=vc&8191,vt=vc>>>13;m.negative=r.negative^u.negative,m.length=19,f=Math.imul(O,ct),l=Math.imul(O,lt),l=l+Math.imul(P,ct)|0,g=Math.imul(P,lt);var Kr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Kr>>>26)|0,Kr&=67108863,f=Math.imul(_,ct),l=Math.imul(_,lt),l=l+Math.imul(F,ct)|0,g=Math.imul(F,lt),f=f+Math.imul(O,ut)|0,l=l+Math.imul(O,mt)|0,l=l+Math.imul(P,ut)|0,g=g+Math.imul(P,mt)|0;var Vr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Vr>>>26)|0,Vr&=67108863,f=Math.imul(K,ct),l=Math.imul(K,lt),l=l+Math.imul($,ct)|0,g=Math.imul($,lt),f=f+Math.imul(_,ut)|0,l=l+Math.imul(_,mt)|0,l=l+Math.imul(F,ut)|0,g=g+Math.imul(F,mt)|0,f=f+Math.imul(O,pt)|0,l=l+Math.imul(O,dt)|0,l=l+Math.imul(P,pt)|0,g=g+Math.imul(P,dt)|0;var $r=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+($r>>>26)|0,$r&=67108863,f=Math.imul(X,ct),l=Math.imul(X,lt),l=l+Math.imul(z,ct)|0,g=Math.imul(z,lt),f=f+Math.imul(K,ut)|0,l=l+Math.imul(K,mt)|0,l=l+Math.imul($,ut)|0,g=g+Math.imul($,mt)|0,f=f+Math.imul(_,pt)|0,l=l+Math.imul(_,dt)|0,l=l+Math.imul(F,pt)|0,g=g+Math.imul(F,dt)|0,f=f+Math.imul(O,ft)|0,l=l+Math.imul(O,ht)|0,l=l+Math.imul(P,ft)|0,g=g+Math.imul(P,ht)|0;var Hr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Hr>>>26)|0,Hr&=67108863,f=Math.imul(Q,ct),l=Math.imul(Q,lt),l=l+Math.imul(J,ct)|0,g=Math.imul(J,lt),f=f+Math.imul(X,ut)|0,l=l+Math.imul(X,mt)|0,l=l+Math.imul(z,ut)|0,g=g+Math.imul(z,mt)|0,f=f+Math.imul(K,pt)|0,l=l+Math.imul(K,dt)|0,l=l+Math.imul($,pt)|0,g=g+Math.imul($,dt)|0,f=f+Math.imul(_,ft)|0,l=l+Math.imul(_,ht)|0,l=l+Math.imul(F,ft)|0,g=g+Math.imul(F,ht)|0,f=f+Math.imul(O,gt)|0,l=l+Math.imul(O,yt)|0,l=l+Math.imul(P,gt)|0,g=g+Math.imul(P,yt)|0;var Gr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Gr>>>26)|0,Gr&=67108863,f=Math.imul(Y,ct),l=Math.imul(Y,lt),l=l+Math.imul(Z,ct)|0,g=Math.imul(Z,lt),f=f+Math.imul(Q,ut)|0,l=l+Math.imul(Q,mt)|0,l=l+Math.imul(J,ut)|0,g=g+Math.imul(J,mt)|0,f=f+Math.imul(X,pt)|0,l=l+Math.imul(X,dt)|0,l=l+Math.imul(z,pt)|0,g=g+Math.imul(z,dt)|0,f=f+Math.imul(K,ft)|0,l=l+Math.imul(K,ht)|0,l=l+Math.imul($,ft)|0,g=g+Math.imul($,ht)|0,f=f+Math.imul(_,gt)|0,l=l+Math.imul(_,yt)|0,l=l+Math.imul(F,gt)|0,g=g+Math.imul(F,yt)|0,f=f+Math.imul(O,bt)|0,l=l+Math.imul(O,Tt)|0,l=l+Math.imul(P,bt)|0,g=g+Math.imul(P,Tt)|0;var Xr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Xr>>>26)|0,Xr&=67108863,f=Math.imul(tt,ct),l=Math.imul(tt,lt),l=l+Math.imul(et,ct)|0,g=Math.imul(et,lt),f=f+Math.imul(Y,ut)|0,l=l+Math.imul(Y,mt)|0,l=l+Math.imul(Z,ut)|0,g=g+Math.imul(Z,mt)|0,f=f+Math.imul(Q,pt)|0,l=l+Math.imul(Q,dt)|0,l=l+Math.imul(J,pt)|0,g=g+Math.imul(J,dt)|0,f=f+Math.imul(X,ft)|0,l=l+Math.imul(X,ht)|0,l=l+Math.imul(z,ft)|0,g=g+Math.imul(z,ht)|0,f=f+Math.imul(K,gt)|0,l=l+Math.imul(K,yt)|0,l=l+Math.imul($,gt)|0,g=g+Math.imul($,yt)|0,f=f+Math.imul(_,bt)|0,l=l+Math.imul(_,Tt)|0,l=l+Math.imul(F,bt)|0,g=g+Math.imul(F,Tt)|0,f=f+Math.imul(O,St)|0,l=l+Math.imul(O,wt)|0,l=l+Math.imul(P,St)|0,g=g+Math.imul(P,wt)|0;var zr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(zr>>>26)|0,zr&=67108863,f=Math.imul(nt,ct),l=Math.imul(nt,lt),l=l+Math.imul(ot,ct)|0,g=Math.imul(ot,lt),f=f+Math.imul(tt,ut)|0,l=l+Math.imul(tt,mt)|0,l=l+Math.imul(et,ut)|0,g=g+Math.imul(et,mt)|0,f=f+Math.imul(Y,pt)|0,l=l+Math.imul(Y,dt)|0,l=l+Math.imul(Z,pt)|0,g=g+Math.imul(Z,dt)|0,f=f+Math.imul(Q,ft)|0,l=l+Math.imul(Q,ht)|0,l=l+Math.imul(J,ft)|0,g=g+Math.imul(J,ht)|0,f=f+Math.imul(X,gt)|0,l=l+Math.imul(X,yt)|0,l=l+Math.imul(z,gt)|0,g=g+Math.imul(z,yt)|0,f=f+Math.imul(K,bt)|0,l=l+Math.imul(K,Tt)|0,l=l+Math.imul($,bt)|0,g=g+Math.imul($,Tt)|0,f=f+Math.imul(_,St)|0,l=l+Math.imul(_,wt)|0,l=l+Math.imul(F,St)|0,g=g+Math.imul(F,wt)|0,f=f+Math.imul(O,It)|0,l=l+Math.imul(O,Ct)|0,l=l+Math.imul(P,It)|0,g=g+Math.imul(P,Ct)|0;var Qr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Qr>>>26)|0,Qr&=67108863,f=Math.imul(at,ct),l=Math.imul(at,lt),l=l+Math.imul(it,ct)|0,g=Math.imul(it,lt),f=f+Math.imul(nt,ut)|0,l=l+Math.imul(nt,mt)|0,l=l+Math.imul(ot,ut)|0,g=g+Math.imul(ot,mt)|0,f=f+Math.imul(tt,pt)|0,l=l+Math.imul(tt,dt)|0,l=l+Math.imul(et,pt)|0,g=g+Math.imul(et,dt)|0,f=f+Math.imul(Y,ft)|0,l=l+Math.imul(Y,ht)|0,l=l+Math.imul(Z,ft)|0,g=g+Math.imul(Z,ht)|0,f=f+Math.imul(Q,gt)|0,l=l+Math.imul(Q,yt)|0,l=l+Math.imul(J,gt)|0,g=g+Math.imul(J,yt)|0,f=f+Math.imul(X,bt)|0,l=l+Math.imul(X,Tt)|0,l=l+Math.imul(z,bt)|0,g=g+Math.imul(z,Tt)|0,f=f+Math.imul(K,St)|0,l=l+Math.imul(K,wt)|0,l=l+Math.imul($,St)|0,g=g+Math.imul($,wt)|0,f=f+Math.imul(_,It)|0,l=l+Math.imul(_,Ct)|0,l=l+Math.imul(F,It)|0,g=g+Math.imul(F,Ct)|0,f=f+Math.imul(O,xt)|0,l=l+Math.imul(O,Dt)|0,l=l+Math.imul(P,xt)|0,g=g+Math.imul(P,Dt)|0;var Jr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Jr>>>26)|0,Jr&=67108863,f=Math.imul(rt,ct),l=Math.imul(rt,lt),l=l+Math.imul(st,ct)|0,g=Math.imul(st,lt),f=f+Math.imul(at,ut)|0,l=l+Math.imul(at,mt)|0,l=l+Math.imul(it,ut)|0,g=g+Math.imul(it,mt)|0,f=f+Math.imul(nt,pt)|0,l=l+Math.imul(nt,dt)|0,l=l+Math.imul(ot,pt)|0,g=g+Math.imul(ot,dt)|0,f=f+Math.imul(tt,ft)|0,l=l+Math.imul(tt,ht)|0,l=l+Math.imul(et,ft)|0,g=g+Math.imul(et,ht)|0,f=f+Math.imul(Y,gt)|0,l=l+Math.imul(Y,yt)|0,l=l+Math.imul(Z,gt)|0,g=g+Math.imul(Z,yt)|0,f=f+Math.imul(Q,bt)|0,l=l+Math.imul(Q,Tt)|0,l=l+Math.imul(J,bt)|0,g=g+Math.imul(J,Tt)|0,f=f+Math.imul(X,St)|0,l=l+Math.imul(X,wt)|0,l=l+Math.imul(z,St)|0,g=g+Math.imul(z,wt)|0,f=f+Math.imul(K,It)|0,l=l+Math.imul(K,Ct)|0,l=l+Math.imul($,It)|0,g=g+Math.imul($,Ct)|0,f=f+Math.imul(_,xt)|0,l=l+Math.imul(_,Dt)|0,l=l+Math.imul(F,xt)|0,g=g+Math.imul(F,Dt)|0,f=f+Math.imul(O,kt)|0,l=l+Math.imul(O,vt)|0,l=l+Math.imul(P,kt)|0,g=g+Math.imul(P,vt)|0;var Yr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Yr>>>26)|0,Yr&=67108863,f=Math.imul(rt,ut),l=Math.imul(rt,mt),l=l+Math.imul(st,ut)|0,g=Math.imul(st,mt),f=f+Math.imul(at,pt)|0,l=l+Math.imul(at,dt)|0,l=l+Math.imul(it,pt)|0,g=g+Math.imul(it,dt)|0,f=f+Math.imul(nt,ft)|0,l=l+Math.imul(nt,ht)|0,l=l+Math.imul(ot,ft)|0,g=g+Math.imul(ot,ht)|0,f=f+Math.imul(tt,gt)|0,l=l+Math.imul(tt,yt)|0,l=l+Math.imul(et,gt)|0,g=g+Math.imul(et,yt)|0,f=f+Math.imul(Y,bt)|0,l=l+Math.imul(Y,Tt)|0,l=l+Math.imul(Z,bt)|0,g=g+Math.imul(Z,Tt)|0,f=f+Math.imul(Q,St)|0,l=l+Math.imul(Q,wt)|0,l=l+Math.imul(J,St)|0,g=g+Math.imul(J,wt)|0,f=f+Math.imul(X,It)|0,l=l+Math.imul(X,Ct)|0,l=l+Math.imul(z,It)|0,g=g+Math.imul(z,Ct)|0,f=f+Math.imul(K,xt)|0,l=l+Math.imul(K,Dt)|0,l=l+Math.imul($,xt)|0,g=g+Math.imul($,Dt)|0,f=f+Math.imul(_,kt)|0,l=l+Math.imul(_,vt)|0,l=l+Math.imul(F,kt)|0,g=g+Math.imul(F,vt)|0;var Zr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Zr>>>26)|0,Zr&=67108863,f=Math.imul(rt,pt),l=Math.imul(rt,dt),l=l+Math.imul(st,pt)|0,g=Math.imul(st,dt),f=f+Math.imul(at,ft)|0,l=l+Math.imul(at,ht)|0,l=l+Math.imul(it,ft)|0,g=g+Math.imul(it,ht)|0,f=f+Math.imul(nt,gt)|0,l=l+Math.imul(nt,yt)|0,l=l+Math.imul(ot,gt)|0,g=g+Math.imul(ot,yt)|0,f=f+Math.imul(tt,bt)|0,l=l+Math.imul(tt,Tt)|0,l=l+Math.imul(et,bt)|0,g=g+Math.imul(et,Tt)|0,f=f+Math.imul(Y,St)|0,l=l+Math.imul(Y,wt)|0,l=l+Math.imul(Z,St)|0,g=g+Math.imul(Z,wt)|0,f=f+Math.imul(Q,It)|0,l=l+Math.imul(Q,Ct)|0,l=l+Math.imul(J,It)|0,g=g+Math.imul(J,Ct)|0,f=f+Math.imul(X,xt)|0,l=l+Math.imul(X,Dt)|0,l=l+Math.imul(z,xt)|0,g=g+Math.imul(z,Dt)|0,f=f+Math.imul(K,kt)|0,l=l+Math.imul(K,vt)|0,l=l+Math.imul($,kt)|0,g=g+Math.imul($,vt)|0;var ts=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(ts>>>26)|0,ts&=67108863,f=Math.imul(rt,ft),l=Math.imul(rt,ht),l=l+Math.imul(st,ft)|0,g=Math.imul(st,ht),f=f+Math.imul(at,gt)|0,l=l+Math.imul(at,yt)|0,l=l+Math.imul(it,gt)|0,g=g+Math.imul(it,yt)|0,f=f+Math.imul(nt,bt)|0,l=l+Math.imul(nt,Tt)|0,l=l+Math.imul(ot,bt)|0,g=g+Math.imul(ot,Tt)|0,f=f+Math.imul(tt,St)|0,l=l+Math.imul(tt,wt)|0,l=l+Math.imul(et,St)|0,g=g+Math.imul(et,wt)|0,f=f+Math.imul(Y,It)|0,l=l+Math.imul(Y,Ct)|0,l=l+Math.imul(Z,It)|0,g=g+Math.imul(Z,Ct)|0,f=f+Math.imul(Q,xt)|0,l=l+Math.imul(Q,Dt)|0,l=l+Math.imul(J,xt)|0,g=g+Math.imul(J,Dt)|0,f=f+Math.imul(X,kt)|0,l=l+Math.imul(X,vt)|0,l=l+Math.imul(z,kt)|0,g=g+Math.imul(z,vt)|0;var es=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(es>>>26)|0,es&=67108863,f=Math.imul(rt,gt),l=Math.imul(rt,yt),l=l+Math.imul(st,gt)|0,g=Math.imul(st,yt),f=f+Math.imul(at,bt)|0,l=l+Math.imul(at,Tt)|0,l=l+Math.imul(it,bt)|0,g=g+Math.imul(it,Tt)|0,f=f+Math.imul(nt,St)|0,l=l+Math.imul(nt,wt)|0,l=l+Math.imul(ot,St)|0,g=g+Math.imul(ot,wt)|0,f=f+Math.imul(tt,It)|0,l=l+Math.imul(tt,Ct)|0,l=l+Math.imul(et,It)|0,g=g+Math.imul(et,Ct)|0,f=f+Math.imul(Y,xt)|0,l=l+Math.imul(Y,Dt)|0,l=l+Math.imul(Z,xt)|0,g=g+Math.imul(Z,Dt)|0,f=f+Math.imul(Q,kt)|0,l=l+Math.imul(Q,vt)|0,l=l+Math.imul(J,kt)|0,g=g+Math.imul(J,vt)|0;var ns=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(ns>>>26)|0,ns&=67108863,f=Math.imul(rt,bt),l=Math.imul(rt,Tt),l=l+Math.imul(st,bt)|0,g=Math.imul(st,Tt),f=f+Math.imul(at,St)|0,l=l+Math.imul(at,wt)|0,l=l+Math.imul(it,St)|0,g=g+Math.imul(it,wt)|0,f=f+Math.imul(nt,It)|0,l=l+Math.imul(nt,Ct)|0,l=l+Math.imul(ot,It)|0,g=g+Math.imul(ot,Ct)|0,f=f+Math.imul(tt,xt)|0,l=l+Math.imul(tt,Dt)|0,l=l+Math.imul(et,xt)|0,g=g+Math.imul(et,Dt)|0,f=f+Math.imul(Y,kt)|0,l=l+Math.imul(Y,vt)|0,l=l+Math.imul(Z,kt)|0,g=g+Math.imul(Z,vt)|0;var os=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(os>>>26)|0,os&=67108863,f=Math.imul(rt,St),l=Math.imul(rt,wt),l=l+Math.imul(st,St)|0,g=Math.imul(st,wt),f=f+Math.imul(at,It)|0,l=l+Math.imul(at,Ct)|0,l=l+Math.imul(it,It)|0,g=g+Math.imul(it,Ct)|0,f=f+Math.imul(nt,xt)|0,l=l+Math.imul(nt,Dt)|0,l=l+Math.imul(ot,xt)|0,g=g+Math.imul(ot,Dt)|0,f=f+Math.imul(tt,kt)|0,l=l+Math.imul(tt,vt)|0,l=l+Math.imul(et,kt)|0,g=g+Math.imul(et,vt)|0;var as=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(as>>>26)|0,as&=67108863,f=Math.imul(rt,It),l=Math.imul(rt,Ct),l=l+Math.imul(st,It)|0,g=Math.imul(st,Ct),f=f+Math.imul(at,xt)|0,l=l+Math.imul(at,Dt)|0,l=l+Math.imul(it,xt)|0,g=g+Math.imul(it,Dt)|0,f=f+Math.imul(nt,kt)|0,l=l+Math.imul(nt,vt)|0,l=l+Math.imul(ot,kt)|0,g=g+Math.imul(ot,vt)|0;var is=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(is>>>26)|0,is&=67108863,f=Math.imul(rt,xt),l=Math.imul(rt,Dt),l=l+Math.imul(st,xt)|0,g=Math.imul(st,Dt),f=f+Math.imul(at,kt)|0,l=l+Math.imul(at,vt)|0,l=l+Math.imul(it,kt)|0,g=g+Math.imul(it,vt)|0;var rs=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(rs>>>26)|0,rs&=67108863,f=Math.imul(rt,kt),l=Math.imul(rt,vt),l=l+Math.imul(st,kt)|0,g=Math.imul(st,vt);var ss=(C+f|0)+((l&8191)<<13)|0;return C=(g+(l>>>13)|0)+(ss>>>26)|0,ss&=67108863,T[0]=Kr,T[1]=Vr,T[2]=$r,T[3]=Hr,T[4]=Gr,T[5]=Xr,T[6]=zr,T[7]=Qr,T[8]=Jr,T[9]=Yr,T[10]=Zr,T[11]=ts,T[12]=es,T[13]=ns,T[14]=os,T[15]=as,T[16]=is,T[17]=rs,T[18]=ss,C!==0&&(T[19]=C,m.length++),m};Math.imul||(U=L);function q(y,r,u){u.negative=r.negative^y.negative,u.length=y.length+r.length;for(var m=0,d=0,h=0;h<u.length-1;h++){var T=d;d=0;for(var C=m&67108863,f=Math.min(h,r.length-1),l=Math.max(0,h-y.length+1);l<=f;l++){var g=h-l,v=y.words[g]|0,O=r.words[l]|0,P=v*O,B=P&67108863;T=T+(P/67108864|0)|0,B=B+C|0,C=B&67108863,T=T+(B>>>26)|0,d+=T>>>26,T&=67108863}u.words[h]=C,m=T,T=d}return m!==0?u.words[h]=m:u.length--,u._strip()}function Ot(y,r,u){return q(y,r,u)}o.prototype.mulTo=function(r,u){var m,d=this.length+r.length;return this.length===10&&r.length===10?m=U(this,r,u):d<63?m=L(this,r,u):d<1024?m=q(this,r,u):m=Ot(this,r,u),m};function W(y,r){this.x=y,this.y=r}W.prototype.makeRBT=function(r){for(var u=new Array(r),m=o.prototype._countBits(r)-1,d=0;d<r;d++)u[d]=this.revBin(d,m,r);return u},W.prototype.revBin=function(r,u,m){if(r===0||r===m-1)return r;for(var d=0,h=0;h<u;h++)d|=(r&1)<<u-h-1,r>>=1;return d},W.prototype.permute=function(r,u,m,d,h,T){for(var C=0;C<T;C++)d[C]=u[r[C]],h[C]=m[r[C]]},W.prototype.transform=function(r,u,m,d,h,T){this.permute(T,r,u,m,d,h);for(var C=1;C<h;C<<=1)for(var f=C<<1,l=Math.cos(2*Math.PI/f),g=Math.sin(2*Math.PI/f),v=0;v<h;v+=f)for(var O=l,P=g,B=0;B<C;B++){var _=m[v+B],F=d[v+B],pe=m[v+B+C],K=d[v+B+C],$=O*pe-P*K;K=O*K+P*pe,pe=$,m[v+B]=_+pe,d[v+B]=F+K,m[v+B+C]=_-pe,d[v+B+C]=F-K,B!==f&&($=l*O-g*P,P=l*P+g*O,O=$)}},W.prototype.guessLen13b=function(r,u){var m=Math.max(u,r)|1,d=m&1,h=0;for(m=m/2|0;m;m=m>>>1)h++;return 1<<h+1+d},W.prototype.conjugate=function(r,u,m){if(!(m<=1))for(var d=0;d<m/2;d++){var h=r[d];r[d]=r[m-d-1],r[m-d-1]=h,h=u[d],u[d]=-u[m-d-1],u[m-d-1]=-h}},W.prototype.normalize13b=function(r,u){for(var m=0,d=0;d<u/2;d++){var h=Math.round(r[2*d+1]/u)*8192+Math.round(r[2*d]/u)+m;r[d]=h&67108863,h<67108864?m=0:m=h/67108864|0}return r},W.prototype.convert13b=function(r,u,m,d){for(var h=0,T=0;T<u;T++)h=h+(r[T]|0),m[2*T]=h&8191,h=h>>>13,m[2*T+1]=h&8191,h=h>>>13;for(T=2*u;T<d;++T)m[T]=0;t(h===0),t((h&-8192)===0)},W.prototype.stub=function(r){for(var u=new Array(r),m=0;m<r;m++)u[m]=0;return u},W.prototype.mulp=function(r,u,m){var d=2*this.guessLen13b(r.length,u.length),h=this.makeRBT(d),T=this.stub(d),C=new Array(d),f=new Array(d),l=new Array(d),g=new Array(d),v=new Array(d),O=new Array(d),P=m.words;P.length=d,this.convert13b(r.words,r.length,C,d),this.convert13b(u.words,u.length,g,d),this.transform(C,T,f,l,d,h),this.transform(g,T,v,O,d,h);for(var B=0;B<d;B++){var _=f[B]*v[B]-l[B]*O[B];l[B]=f[B]*O[B]+l[B]*v[B],f[B]=_}return this.conjugate(f,l,d),this.transform(f,l,P,T,d,h),this.conjugate(P,T,d),this.normalize13b(P,d),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),Ot(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,d=0;d<this.length;d++){var h=(this.words[d]|0)*r,T=(h&67108863)+(m&67108863);m>>=26,m+=h/67108864|0,m+=T>>>26,this.words[d]=T&67108863}return m!==0&&(this.words[d]=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=M(r);if(u.length===0)return new o(1);for(var m=this,d=0;d<u.length&&u[d]===0;d++,m=m.sqr());if(++d<u.length)for(var h=m.sqr();d<u.length;d++,h=h.sqr())u[d]!==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,d=67108863>>>26-u<<26-u,h;if(u!==0){var T=0;for(h=0;h<this.length;h++){var C=this.words[h]&d,f=(this.words[h]|0)-C<<u;this.words[h]=f|T,T=C>>>26-u}T&&(this.words[h]=T,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 d;u?d=(u-u%26)/26:d=0;var h=r%26,T=Math.min((r-h)/26,this.length),C=67108863^67108863>>>h<<h,f=m;if(d-=T,d=Math.max(0,d),f){for(var l=0;l<T;l++)f.words[l]=this.words[l];f.length=T}if(T!==0)if(this.length>T)for(this.length-=T,l=0;l<this.length;l++)this.words[l]=this.words[l+T];else this.words[0]=0,this.length=1;var g=0;for(l=this.length-1;l>=0&&(g!==0||l>=d);l--){var v=this.words[l]|0;this.words[l]=g<<26-h|v>>>h,g=v&C}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,d=1<<u;if(this.length<=m)return!1;var h=this.words[m];return!!(h&d)},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 d=67108863^67108863>>>u<<u;this.words[this.length-1]&=d}return this.length===0&&(this.words[0]=0,this.length=1),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 d=r.length+m,h;this._expand(d);var T,C=0;for(h=0;h<r.length;h++){T=(this.words[h+m]|0)+C;var f=(r.words[h]|0)*u;T-=f&67108863,C=(T>>26)-(f/67108864|0),this.words[h+m]=T&67108863}for(;h<this.length-m;h++)T=(this.words[h+m]|0)+C,C=T>>26,this.words[h+m]=T&67108863;if(C===0)return this._strip();for(t(C===-1),C=0,h=0;h<this.length;h++)T=-(this.words[h]|0)+C,C=T>>26,this.words[h]=T&67108863;return this.negative=1,this._strip()},o.prototype._wordDiv=function(r,u){var m=this.length-r.length,d=this.clone(),h=r,T=h.words[h.length-1]|0,C=this._countBits(T);m=26-C,m!==0&&(h=h.ushln(m),d.iushln(m),T=h.words[h.length-1]|0);var f=d.length-h.length,l;if(u!=="mod"){l=new o(null),l.length=f+1,l.words=new Array(l.length);for(var g=0;g<l.length;g++)l.words[g]=0}var v=d.clone()._ishlnsubmul(h,1,f);v.negative===0&&(d=v,l&&(l.words[f]=1));for(var O=f-1;O>=0;O--){var P=(d.words[h.length+O]|0)*67108864+(d.words[h.length+O-1]|0);for(P=Math.min(P/T|0,67108863),d._ishlnsubmul(h,P,O);d.negative!==0;)P--,d.negative=0,d._ishlnsubmul(h,1,O),d.isZero()||(d.negative^=1);l&&(l.words[O]=P)}return l&&l._strip(),d._strip(),u!=="div"&&m!==0&&d.iushrn(m),{div:l||null,mod:d}},o.prototype.divmod=function(r,u,m){if(t(!r.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var d,h,T;return this.negative!==0&&r.negative===0?(T=this.neg().divmod(r,u),u!=="mod"&&(d=T.div.neg()),u!=="div"&&(h=T.mod.neg(),m&&h.negative!==0&&h.iadd(r)),{div:d,mod:h}):this.negative===0&&r.negative!==0?(T=this.divmod(r.neg(),u),u!=="mod"&&(d=T.div.neg()),{div:d,mod:T.mod}):(this.negative&r.negative)!==0?(T=this.neg().divmod(r.neg(),u),u!=="div"&&(h=T.mod.neg(),m&&h.negative!==0&&h.isub(r)),{div:T.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,d=r.ushrn(1),h=r.andln(1),T=m.cmp(d);return T<0||h===1&&T===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,d=0,h=this.length-1;h>=0;h--)d=(m*d+(this.words[h]|0))%r;return u?-d:d},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,d=this.length-1;d>=0;d--){var h=(this.words[d]|0)+m*67108864;this.words[d]=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 d=new o(1),h=new o(0),T=new o(0),C=new o(1),f=0;u.isEven()&&m.isEven();)u.iushrn(1),m.iushrn(1),++f;for(var l=m.clone(),g=u.clone();!u.isZero();){for(var v=0,O=1;(u.words[0]&O)===0&&v<26;++v,O<<=1);if(v>0)for(u.iushrn(v);v-- >0;)(d.isOdd()||h.isOdd())&&(d.iadd(l),h.isub(g)),d.iushrn(1),h.iushrn(1);for(var P=0,B=1;(m.words[0]&B)===0&&P<26;++P,B<<=1);if(P>0)for(m.iushrn(P);P-- >0;)(T.isOdd()||C.isOdd())&&(T.iadd(l),C.isub(g)),T.iushrn(1),C.iushrn(1);u.cmp(m)>=0?(u.isub(m),d.isub(T),h.isub(C)):(m.isub(u),T.isub(d),C.isub(h))}return{a:T,b:C,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 d=new o(1),h=new o(0),T=m.clone();u.cmpn(1)>0&&m.cmpn(1)>0;){for(var C=0,f=1;(u.words[0]&f)===0&&C<26;++C,f<<=1);if(C>0)for(u.iushrn(C);C-- >0;)d.isOdd()&&d.iadd(T),d.iushrn(1);for(var l=0,g=1;(m.words[0]&g)===0&&l<26;++l,g<<=1);if(l>0)for(m.iushrn(l);l-- >0;)h.isOdd()&&h.iadd(T),h.iushrn(1);u.cmp(m)>=0?(u.isub(m),d.isub(h)):(m.isub(u),h.isub(d))}var v;return u.cmpn(1)===0?v=d: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 d=0;u.isEven()&&m.isEven();d++)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 T=u;u=m,m=T}else if(h===0||m.cmpn(1)===0)break;u.isub(m)}while(!0);return m.iushln(d)},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,d=1<<u;if(this.length<=m)return this._expand(m+1),this.words[m]|=d,this;for(var h=d,T=m;h!==0&&T<this.length;T++){var C=this.words[T]|0;C+=h,h=C>>>26,C&=67108863,this.words[T]=C}return h!==0&&(this.words[T]=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 d=this.words[0]|0;m=d===r?0:d<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 d=this.words[m]|0,h=r.words[m]|0;if(d!==h){d<h?u=-1:d>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 H(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 Ke={k256:null,p224:null,p192:null,p25519:null};function Et(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()}Et.prototype._tmp=function(){var r=new o(null);return r.words=new Array(Math.ceil(this.n/13)),r},Et.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 d=m<this.n?-1:u.ucmp(this.p);return d===0?(u.words[0]=0,u.length=1):d>0?u.isub(this.p):u.strip!==void 0?u.strip():u._strip(),u},Et.prototype.split=function(r,u){r.iushrn(this.n,0,u)},Et.prototype.imulK=function(r){return r.imul(this.k)};function Ve(){Et.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Ve,Et),Ve.prototype.split=function(r,u){for(var m=4194303,d=Math.min(r.length,9),h=0;h<d;h++)u.words[h]=r.words[h];if(u.length=d,r.length<=9){r.words[0]=0,r.length=1;return}var T=r.words[9];for(u.words[u.length++]=T&m,h=10;h<r.length;h++){var C=r.words[h]|0;r.words[h-10]=(C&m)<<4|T>>>22,T=C}T>>>=22,r.words[h-10]=T,T===0&&r.length>10?r.length-=10:r.length-=9},Ve.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 d=r.words[m]|0;u+=d*977,r.words[m]=u&67108863,u=d*64+(u/67108864|0)}return r.words[r.length-1]===0&&(r.length--,r.words[r.length-1]===0&&r.length--),r};function Qn(){Et.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}n(Qn,Et);function Jn(){Et.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}n(Jn,Et);function yn(){Et.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}n(yn,Et),yn.prototype.imulK=function(r){for(var u=0,m=0;m<r.length;m++){var d=(r.words[m]|0)*19+u,h=d&67108863;d>>>=26,r.words[m]=h,u=d}return u!==0&&(r.words[r.length++]=u),r},o._prime=function(r){if(Ke[r])return Ke[r];var u;if(r==="k256")u=new Ve;else if(r==="p224")u=new Qn;else if(r==="p192")u=new Jn;else if(r==="p25519")u=new yn;else throw new Error("Unknown prime "+r);return Ke[r]=u,u};function H(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}H.prototype._verify1=function(r){t(r.negative===0,"red works only with positives"),t(r.red,"red works only with red numbers")},H.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")},H.prototype.imod=function(r){return this.prime?this.prime.ireduce(r)._forceRed(this):(b(r,r.umod(this.m)._forceRed(this)),r)},H.prototype.neg=function(r){return r.isZero()?r.clone():this.m.sub(r)._forceRed(this)},H.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)},H.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},H.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)},H.prototype.isub=function(r,u){this._verify2(r,u);var m=r.isub(u);return m.cmpn(0)<0&&m.iadd(this.m),m},H.prototype.shl=function(r,u){return this._verify1(r),this.imod(r.ushln(u))},H.prototype.imul=function(r,u){return this._verify2(r,u),this.imod(r.imul(u))},H.prototype.mul=function(r,u){return this._verify2(r,u),this.imod(r.mul(u))},H.prototype.isqr=function(r){return this.imul(r,r.clone())},H.prototype.sqr=function(r){return this.mul(r,r)},H.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 d=this.m.subn(1),h=0;!d.isZero()&&d.andln(1)===0;)h++,d.iushrn(1);t(!d.isZero());var T=new o(1).toRed(this),C=T.redNeg(),f=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);this.pow(l,f).cmp(C)!==0;)l.redIAdd(C);for(var g=this.pow(l,d),v=this.pow(r,d.addn(1).iushrn(1)),O=this.pow(r,d),P=h;O.cmp(T)!==0;){for(var B=O,_=0;B.cmp(T)!==0;_++)B=B.redSqr();t(_<P);var F=this.pow(g,new o(1).iushln(P-_-1));v=v.redMul(F),g=F.redSqr(),O=O.redMul(g),P=_}return v},H.prototype.invm=function(r){var u=r._invmp(this.m);return u.negative!==0?(u.negative=0,this.imod(u).redNeg()):this.imod(u)},H.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,d=new Array(1<<m);d[0]=new o(1).toRed(this),d[1]=r;for(var h=2;h<d.length;h++)d[h]=this.mul(d[h-1],r);var T=d[0],C=0,f=0,l=u.bitLength()%26;for(l===0&&(l=26),h=u.length-1;h>=0;h--){for(var g=u.words[h],v=l-1;v>=0;v--){var O=g>>v&1;if(T!==d[0]&&(T=this.sqr(T)),O===0&&C===0){f=0;continue}C<<=1,C|=O,f++,!(f!==m&&(h!==0||v!==0))&&(T=this.mul(T,d[C]),f=0,C=0)}l=26}return T},H.prototype.convertTo=function(r){var u=r.umod(this.m);return u===r?u.clone():u},H.prototype.convertFrom=function(r){var u=r.clone();return u.red=null,u},o.mont=function(r){return new Pe(r)};function Pe(y){H.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,H),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),d=m.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=m.isub(d).iushrn(this.shift),T=h;return h.cmp(this.m)>=0?T=h.isub(this.m):h.cmpn(0)<0&&(T=h.iadd(this.m)),T._forceRed(this)},Pe.prototype.mul=function(r,u){if(r.isZero()||u.isZero())return new o(0)._forceRed(this);var m=r.mul(u),d=m.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=m.isub(d).iushrn(this.shift),T=h;return h.cmp(this.m)>=0?T=h.isub(this.m):h.cmpn(0)<0&&(T=h.iadd(this.m)),T._forceRed(this)},Pe.prototype.invm=function(r){var u=this.imod(r._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(typeof rc>"u"||rc,Op)});var ih={};cs(ih,{appHelpers:()=>ah});module.exports=qd(ih);var Nc=require("@msafe/sui3-utils");var ie=require("@alphafi/alphafi-sdk"),$e=require("@msafe/sui3-utils"),Qt=require("@mysten/bcs");var Zn=class{constructor(e,t){this.transaction=e;this.simResult=t}transaction;simResult;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=ie.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&&ie.poolInfo[t].assetTypes.length===2}isSingleAssetDepositEvent(e,t){return e.event_type===0&&ie.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=Qt.bcs.u64().parse((0,Qt.fromBase64)(t)):t.length===24?n=Qt.bcs.u128().parse((0,Qt.fromBase64)(t)):t.length===44?n=Qt.bcs.u256().parse((0,Qt.fromBase64)(t)):n=Qt.bcs.u64().parse((0,Qt.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:$e.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}=ie.singleAssetPoolCoinMap[e],{expo:s}=ie.coinsList[i];n=Math.floor(Number(n)/10**(9-s)).toString()}return{txType:$e.TransactionType.Other,type:"depositSingleAsset",intentionData:{poolName:e,amount:n}}}decodeWithdraw(e){let t=this.extractXTokensAmount();return console.log("Decoder.decodeWithdraw",t),{txType:$e.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:$e.TransactionType.Other,type:"withdrawAlpha",intentionData:{withdrawFromLocked:Number(n)>0,xTokensAmount:t}}}decodeClaimReward(){return{txType:$e.TransactionType.Other,type:"claimReward",intentionData:{}}}};var Oc=require("@alphafi/alphafi-sdk");var Mc=At(require("sort-keys-recursive"),1),w=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify((0,Mc.default)(this.data))}};var to=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t;return await(0,Oc.claimRewardTxb)(n.address)}static fromData(t){return new a(t)}};var Pc=require("@alphafi/alphafi-sdk");var eo=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t,{poolName:o,amount:i,isAmountA:s}=this.data;return await(0,Pc.depositDoubleAssetTxb)(o,n.address,i,s)}static fromData(t){return console.log("DepositDoubleAssetIntention.fromData",t),new a(t)}};var Rc=require("@alphafi/alphafi-sdk");var no=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t,{poolName:o,amount:i}=this.data;return await(0,Rc.depositSingleAssetTxb)(o,n.address,i)}static fromData(t){return console.log("DepositSingleAssetIntention.fromData",t),new a(t)}};var Bc=require("@alphafi/alphafi-sdk");var oo=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t,{poolName:o,xTokensAmount:i}=this.data;return await(0,Bc.withdrawTxb)(i,o,n.address)}static fromData(t){return console.log("WithdrawIntention.fromData",t),new a(t)}};var Ec=require("@alphafi/alphafi-sdk");var ao=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t,{withdrawFromLocked:o,xTokensAmount:i}=this.data;return await(0,Ec.withdrawAlphaTxb)(i,o,n.address)}static fromData(t){return console.log("WithdrawAlphaIntention.fromData",t),new a(t)}};var io=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 c=new Zn(t,i).decode();return{txType:Nc.TransactionType.Other,txSubType:c.type,intentionData:c.intentionData}}async build(e){let{account:t}=e;console.log("AlphaFi build transaction type",e.txSubType);let n;switch(e.txSubType){case"depositSingleAsset":n=no.fromData(e.intentionData);break;case"depositDoubleAsset":n=eo.fromData(e.intentionData);break;case"withdraw":n=oo.fromData(e.intentionData);break;case"withdrawAlpha":n=ao.fromData(e.intentionData);break;case"claimReward":n=to.fromData(e.intentionData);break;default:throw new Error("not implemented")}return n.build({account:t})}};var rl=require("@msafe/sui3-utils");var jt=require("@msafe/sui3-utils"),ro=require("@mysten/sui/bcs"),so=require("bucket-protocol-sdk");var co=class{constructor(e){this.transaction=e}transaction;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(so.SBUCK_FOUNTAIN_PACKAGE_ID,"fountain_core","stake")}isSBUCKUnstakeTransaction(){return!!this.getMoveCallPackageModuleCommand(so.SBUCK_FOUNTAIN_PACKAGE_ID,"fountain_core","force_unstake")}isSBUCKClaimTransaction(){return!!this.getMoveCallPackageModuleCommand(so.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:jt.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 c=this.getMoveCallCommand("high_top_up").MoveCall;[e]=c.typeArguments;let p=c.arguments[1];p.$kind==="Input"&&(t=this.getPureInputU64(p.Input));let b=c.arguments[3];if(b.$kind==="Input"){let S=this.getPureAddresses(b.Input);S.length===1&&([n]=S)}}else if(this.getMoveCallCommand("high_borrow")){let c=this.getMoveCallCommand("high_borrow").MoveCall;[e]=c.typeArguments;let p=c.arguments[4];p.$kind==="Input"&&(t=this.getPureInputU64(p.Input));let b=c.arguments[5];if(b.$kind==="Input"){let S=this.getPureAddresses(b.Input);S.length===1&&([n]=S)}}else if(this.getMoveCallCommand("high_borrow_with_strap")){let c=this.getMoveCallCommand("high_borrow_with_strap").MoveCall;[e]=c.typeArguments;let p=c.arguments[5];p.$kind==="Input"&&(t=this.getPureInputU64(p.Input));let b=c.arguments[6];if(b.$kind==="Input"){let S=this.getPureAddresses(b.Input);S.length===1&&([n]=S)}}return{txType:jt.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 c=this.getMoveCallCommand("repay_and_withdraw").MoveCall;[e]=c.typeArguments;let p=c.arguments[4];p.$kind==="Input"&&(n=this.getPureInputU64(p.Input));let b=c.arguments[5];if(b.$kind==="Input"){let I=this.getPureAddresses(b.Input);I.length===1&&([i]=I)}let S=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];S.$kind==="Input"&&(t=this.getPureInputU64(S.Input))}else if(this.getMoveCallCommand("repay_and_withdraw_with_strap")){let c=this.getMoveCallCommand("repay_and_withdraw_with_strap").MoveCall;[e]=c.typeArguments;let p=c.arguments[5];p.$kind==="Input"&&(n=this.getPureInputU64(p.Input));let b=c.arguments[6];if(b.$kind==="Input"){let I=this.getPureAddresses(b.Input);I.length===1&&([i]=I)}let S=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];S.$kind==="Input"&&(t=this.getPureInputU64(S.Input))}return{txType:jt.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 c=i.arguments[5];if(c.$kind==="Input"){let p=this.getPureAddresses(c.Input);p.length===1&&([n]=p)}}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 c=i.arguments[4];if(c.$kind==="Input"){let p=this.getPureAddresses(c.Input);p.length===1&&([n]=p)}}return{txType:jt.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:jt.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:jt.TransactionType.Other,type:"sbuck-deposit",intentionData:{coinType:t,amount:n,isStake:s}}}decodeSBUCKUnstake(){let e="0",t=this.isSBUCKStakeTransaction();if(t){let p=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];p.$kind==="Input"&&(e=this.getPureInputU64(p.Input))}let n=[],o=this.getMoveCallModuleCommands("proof_rule","unlock");if(o.length>0)for(let c=0;c<o.length;c++){let p=o[c];n.push("")}else{let c=this.getMoveCallModuleCommands("fountain_core","force_unstake");for(let p=0;p<c.length;p++){let S=c[p].MoveCall.arguments[2];if(S.$kind==="Input"){let{objectId:I}=this.inputs[S.Input].UnresolvedObject;n.push(I)}}}let i=this.isSBUCKWithdrawTransaction(),s={stakeProofs:n,amount:e,isStake:t,toBuck:i};return console.log("Decoder.decodeSBUCKUnstake",s),{txType:jt.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:jt.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:jt.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:jt.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:jt.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:jt.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:jt.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 ro.bcs.U64.fromBase64(t.Pure.bytes)}getPureAddresses(e){let t=this.inputs[e];if(t.$kind!=="Pure")throw new Error("not pure argument");return ro.bcs.vector(ro.bcs.Address).fromBase64(t.Pure.bytes)}};var Uc=require("@msafe/sui3-utils");var _c=require("@mysten/sui/transactions"),Lc=require("bucket-protocol-sdk");var Wc=require("bucket-protocol-sdk"),Nt=(a,e)=>{let t=a==="sui:mainnet"?"mainnet":"testnet";return new Wc.BucketClient(t,e.address)};var jc=async(a,e,t)=>{let{coinType:n,amount:o,buckToCoin:i}=a,s=new _c.Transaction,c=Nt(t,e);return await(0,Lc.buildPsmTx)(c,s,n,o,i,e.address),s};var lo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Uc.TransactionType.Other;txSubType="psm";async build(t){let{account:n,network:o}=t;return await jc(this.data,n,o)}static fromData(t){return new a(t)}};var $c=require("@msafe/sui3-utils");var bn=require("@mysten/sui/transactions"),de=require("bucket-protocol-sdk");var qc=async(a,e,t)=>{let{collateralType:n,collateralAmount:o,borrowAmount:i,insertionPlace:s,strapId:c}=a,p=new bn.Transaction,b=Nt(t,e);return await(0,de.buildBorrowTx)(b,p,n,o,i,e.address,s,c),p},Fc=async(a,e,t)=>{let{collateralType:n,withdrawAmount:o,insertionPlace:i,strapId:s}=a,c=new bn.Transaction,p=Nt(t,e);return await(0,de.buildWithdrawTx)(p,c,n,o,e.address,i,s),c},Kc=async(a,e,t)=>{let{collateralType:n,repayAmount:o,withdrawAmount:i,isSurplus:s,insertionPlace:c,strapId:p}=a,b=new bn.Transaction,S=Nt(t,e);return await(0,de.buildRepayTx)(S,b,n,o,i,e.address,s,c,p),b},Vc=async(a,e,t)=>{let{collateralType:n,recipient:o,strapId:i}=a,s=new bn.Transaction,c=Nt(t,e);return await(0,de.buildCloseTx)(c,s,n,o,i),s};var uo=class a extends w{constructor(t){super(t);this.data=t}data;txType=$c.TransactionType.Other;txSubType="borrow";async build(t){let{account:n,network:o}=t;return await qc(this.data,n,o)}static fromData(t){return new a(t)}};var Hc=require("@msafe/sui3-utils");var mo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Hc.TransactionType.Other;txSubType="repay";async build(t){let{account:n,network:o}=t;return await Kc(this.data,n,o)}static fromData(t){return new a(t)}};var Gc=require("@msafe/sui3-utils");var po=class a extends w{constructor(t){super(t);this.data=t}data;txType=Gc.TransactionType.Other;txSubType="withdraw";async build(t){let{account:n,network:o}=t;return await Fc(this.data,n,o)}static fromData(t){return new a(t)}};var Xc=require("@msafe/sui3-utils");var fo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Xc.TransactionType.Other;txSubType="close";async build(t){let{account:n,network:o}=t;return await Vc(this.data,n,o)}static fromData(t){return new a(t)}};var Sn=require("@msafe/sui3-utils");var Tn=require("@mysten/sui/transactions"),fe=require("bucket-protocol-sdk");var zc=async(a,e,t)=>{let{coinType:n,amount:o,isStake:i}=a,s=new Tn.Transaction,c=Nt(t,e);return await(0,fe.buildSBUCKDepositTx)(c,s,n,o,e.address,i),s},Qc=async(a,e,t)=>{let{stakeProofs:n,amount:o,isStake:i,toBuck:s}=a,c=new Tn.Transaction,p=Nt(t,e);return await(0,fe.buildSBUCKUnstakeTx)(p,c,n,o,e.address,i,s),c},Jc=async(a,e,t)=>{let{amount:n}=a,o=new Tn.Transaction,i=Nt(t,e);return await(0,fe.buildSBUCKWithdrawTx)(i,o,n,e.address),o},Yc=async(a,e,t)=>{let{stakeProofs:n}=a,o=new Tn.Transaction,i=Nt(t,e);return await(0,fe.buildSBUCKClaimTx)(i,o,n,e.address),o};var ho=class a extends w{constructor(t){super(t);this.data=t}data;txType=Sn.TransactionType.Other;txSubType="sbuck-deposit";async build(t){let{account:n,network:o}=t;return await zc(this.data,n,o)}static fromData(t){return new a(t)}},go=class a extends w{constructor(t){super(t);this.data=t}data;txType=Sn.TransactionType.Other;txSubType="sbuck-unstake";async build(t){let{account:n,network:o}=t;return await Qc(this.data,n,o)}static fromData(t){return new a(t)}},yo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Sn.TransactionType.Other;txSubType="sbuck-withdraw";async build(t){let{account:n,network:o}=t;return await Jc(this.data,n,o)}static fromData(t){return new a(t)}},bo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Sn.TransactionType.Other;txSubType="sbuck-claim";async build(t){let{account:n,network:o}=t;return await Yc(this.data,n,o)}static fromData(t){return new a(t)}};var Co=require("@msafe/sui3-utils");var To=require("@mysten/sui/transactions"),He=require("bucket-protocol-sdk");var Zc=async(a,e,t)=>{let{coinType:n,amount:o}=a,i=new To.Transaction,s=Nt(t,e);return await(0,He.buildTankDepositTx)(s,i,n,o,e.address),i},tl=async(a,e,t)=>{let{coinType:n,amount:o}=a,i=new To.Transaction,s=Nt(t,e);return await(0,He.buildTankWithdrawTx)(s,i,n,o,e.address),i},el=async(a,e,t)=>{let{coinType:n}=a,o=new To.Transaction,i=Nt(t,e);return await(0,He.buildTankClaimTx)(i,o,n,e.address),o};var nl=require("@mysten/sui/transactions"),ol=require("bucket-protocol-sdk");var al=async(a,e,t)=>{let{coinType:n,proofCount:o}=a,i=new nl.Transaction,s=Nt(t,e);return await(0,ol.buildLockedClaimTx)(s,i,n,o,e.address),i};var So=class a extends w{constructor(t){super(t);this.data=t}data;txType=Co.TransactionType.Other;txSubType="tank-deposit";async build(t){let{account:n,network:o}=t;return await Zc(this.data,n,o)}static fromData(t){return new a(t)}},wo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Co.TransactionType.Other;txSubType="tank-withdraw";async build(t){let{account:n,network:o}=t;return await tl(this.data,n,o)}static fromData(t){return new a(t)}},Io=class a extends w{constructor(t){super(t);this.data=t}data;txType=Co.TransactionType.Other;txSubType="tank-claim";async build(t){let{account:n,network:o}=t;return await el(this.data,n,o)}static fromData(t){return new a(t)}};var il=require("@msafe/sui3-utils");var xo=class a extends w{constructor(t){super(t);this.data=t}data;txType=il.TransactionType.Other;txSubType="lock-claim";async build(t){let{account:n,network:o}=t;return await al(this.data,n,o)}static fromData(t){return new a(t)}};var Do=class{application="bucket";supportSDK="@mysten/sui";async deserialize(e){console.log("Bucket helper deserialize input: ",e);let{transaction:t}=e,o=new co(t).decode();return{txType:rl.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=lo.fromData(e.intentionData);break;case"borrow":i=uo.fromData(e.intentionData);break;case"withdraw":i=po.fromData(e.intentionData);break;case"repay":i=mo.fromData(e.intentionData);break;case"close":i=fo.fromData(e.intentionData);break;case"tank-deposit":i=So.fromData(e.intentionData);break;case"tank-withdraw":i=wo.fromData(e.intentionData);break;case"tank-claim":i=Io.fromData(e.intentionData);break;case"sbuck-deposit":i=ho.fromData(e.intentionData);break;case"sbuck-unstake":i=go.fromData(e.intentionData);break;case"sbuck-withdraw":i=yo.fromData(e.intentionData);break;case"sbuck-claim":i=bo.fromData(e.intentionData);break;case"lock-claim":i=xo.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};var cu=require("@msafe/sui3-utils");var fl=require("@msafe/sui3-utils");var Re=require("@mysten/sui/client"),Jt=async(a,e)=>{let{CetusClmmSDK:t}=await import("@cetusprotocol/sui-clmm-sdk"),n=t.createSDK({env:"mainnet",sui_client:new Re.SuiClient({url:(0,Re.getFullnodeUrl)("mainnet")})});return n.setSenderAddress(e.address),n},Ft=async(a,e)=>{let{CetusFarmsSDK:t}=await import("@cetusprotocol/farms-sdk"),n=t.createSDK({env:"mainnet",sui_client:new Re.SuiClient({url:(0,Re.getFullnodeUrl)("mainnet")})});return n.setSenderAddress(e.address),n},Kd="https://api-sui.cetus.zone/router_v2/find_routes",sl=async(a,e)=>{let{AggregatorClient:t,Env:n}=await import("@cetusprotocol/aggregator-sdk"),o=new Re.SuiClient({url:"https://fullnode.mainnet.sui.io/"});return new t({endpoint:Kd,signer:e.address,client:o,env:n.Mainnet})},wn=async(a,e)=>{let{CetusVaultsSDK:t}=await import("@cetusprotocol/vaults-sdk"),n=t.createSDK({env:"mainnet"});return n.setSenderAddress(e.address),n},Ge=async(a,e)=>{let{CetusXcetusSDK:t}=await import("@cetusprotocol/xcetus-sdk"),n=t.createSDK({env:"mainnet"});return n.setSenderAddress(e.address),n};var cl=async(a,e,t)=>await(await Jt(t,e)).Pool.createPoolPayload(a),ll=async(a,e,t)=>await(await Jt(t,e)).Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg),ul=async(a,e,t)=>await(await Jt(t,e)).Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg),ml=async(a,e,t)=>await(await Jt(t,e)).Position.closePositionPayload(a),pl=async(a,e,t)=>await(await Jt(t,e)).Position.removeLiquidityPayload(a),dl=async(a,e,t)=>await(await Jt(t,e)).Rewarder.collectRewarderPayload(a);var ko=class a extends w{constructor(t){super(t);this.data=t}data;txType=fl.TransactionType.Other;txSubType="OpenAndAddLiquidity";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 hl=require("@msafe/sui3-utils");var vo=class a extends w{constructor(t){super(t);this.data=t}data;txType=hl.TransactionType.Other;txSubType="ClaimFeeAndMining";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 gl=require("@msafe/sui3-utils");var Ao=class a extends w{constructor(t){super(t);this.data=t}data;txType=gl.TransactionType.Other;txSubType="CreatePool";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 yl=require("@msafe/sui3-utils");var Mo=class a extends w{constructor(t){super(t);this.data=t}data;txType=yl.TransactionType.Other;txSubType="DecreaseLiquidity";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 vl=require("@msafe/sui3-utils");var bl=async(a,e,t)=>await(await Ft(t,e)).Farms.openPositionAddLiquidityStakePayload(a),Tl=async(a,e,t)=>await(await Ft(t,e)).Farms.addLiquidityFixCoinPayload(a),Sl=async(a,e,t)=>await(await Ft(t,e)).Farms.removeLiquidityPayload(a);var wl=async(a,e,t)=>await(await Ft(t,e)).Farms.removeLiquidityPayload(a),Il=async(a,e,t)=>await(await Ft(t,e)).Farms.claimFeeAndClmmReward(a),Cl=async(a,e,t)=>await(await Ft(t,e)).Farms.harvestPayload(a),xl=async(a,e,t)=>{let n=await Ft(t,e),o=Object.values(a);return await n.Farms.batchHarvestPayload(o)},Dl=async(a,e,t)=>await(await Ft(t,e)).Farms.depositPayload(a),kl=async(a,e,t)=>await(await Ft(t,e)).Farms.withdrawPayload(a);var Oo=class a extends w{constructor(t){super(t);this.data=t}data;txType=vl.TransactionType.Other;txSubType="FarmingOpenAndAddLiquidity";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 Al=require("@msafe/sui3-utils");var Po=class a extends w{constructor(t){super(t);this.data=t}data;txType=Al.TransactionType.Other;txSubType="FarmingBatchHarvest";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 Ml=require("@msafe/sui3-utils");var Ro=class a extends w{constructor(t){super(t);this.data=t}data;txType=Ml.TransactionType.Other;txSubType="FarmingClaimFeeAndReward";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Il(i,n,o)}static fromData(t){return new a(t)}};var Ol=require("@msafe/sui3-utils");var Bo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Ol.TransactionType.Other;txSubType="FarmingDecreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Sl(i,n,o)}static fromData(t){return new a(t)}};var Pl=require("@msafe/sui3-utils");var Eo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Pl.TransactionType.Other;txSubType="FarmingHarvest";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 Rl=require("@msafe/sui3-utils");var No=class a extends w{constructor(t){super(t);this.data=t}data;txType=Rl.TransactionType.Other;txSubType="FarmingIncreaseLiquidity";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 Bl=require("@msafe/sui3-utils");var Wo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Bl.TransactionType.Other;txSubType="FarmingRemoveLiquidity";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 El=require("@msafe/sui3-utils");var _o=class a extends w{constructor(t){super(t);this.data=t}data;txType=El.TransactionType.Other;txSubType="FarmingStake";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 Nl=require("@msafe/sui3-utils");var Lo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Nl.TransactionType.Other;txSubType="FarmingUnstake";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 Wl=require("@msafe/sui3-utils");var jo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Wl.TransactionType.Other;txSubType="IncreaseLiquidity";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 jl=require("@msafe/sui3-utils");var Uo=async()=>{let{Transaction:a}=await import("@mysten/sui/transactions");return new a},Vd=async(a,e,t)=>{let n=await wn(t,e),o=await Uo();return o.setSender(e.address),n.Vest.buildRedeemPayload(a.params,o),o},$d=async(a,e)=>{let{default:t,vaults_mainnet:n}=await import("haedal-vault-sdk"),o=new t(n);o.senderAddress=e.address;let i=await Uo();return i.setSender(e.address),await o?.Vest.buildRedeemPayload(a.params,i),i},_l=async(a,e,t)=>{let n=await Jt(t,e),o=await Uo();return n?.Vest.buildRedeemPayload(a.params,o),o},Hd=async(a,e,t)=>{let n=await Jt(t,e),o=await Ft(t,e),i=await Uo(),s=await o.Farms.withdrawReturnPayload(a.withdrawParams,i);return n.Vest.buildRedeemPayload(a.redeemParms.map(c=>({...c,clmm_position_id:s})),i),o.Farms.depositPayload({...a.depositParams,clmm_position_id:s},i),i},Ll=async(a,e,t)=>a.type==="clmm"?_l(a,e,t):a.type==="farms"?Hd(a,e,t):a.type==="vaults"?Vd(a,e,t):a.type==="haedalVaults"?$d(a,e):_l(a,e,t);var qo=class a extends w{constructor(t){super(t);this.data=t}data;txType=jl.TransactionType.Other;txSubType="PosVestingRedeem";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 Ul=require("@msafe/sui3-utils");var Fo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Ul.TransactionType.Other;txSubType="RemoveLiquidity";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 Kl=require("@msafe/sui3-utils");var ql=require("@mysten/sui/transactions");var Fl=async(a,e,t)=>{let{restituteMsafeFastRouterSwapParams:n}=await import("@cetusprotocol/aggregator-sdk"),o=await sl(t,e),i=new ql.Transaction;return await o.fastRouterSwap({...a,router:n(a.router),txb:i}),i};var Ko=class a extends w{constructor(t){super(t);this.data=t}data;txType=Kl.TransactionType.Other;txSubType="AggregatorSwap";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 Hl=require("@msafe/sui3-utils");var ls=require("@mysten/sui/transactions");var Vl=async(a,e,t)=>{let n=await wn(t,e),o=new ls.Transaction;return o.setSender(e.address),await n.Vaults.deposit(a,o),o},$l=async(a,e,t)=>{let n=await wn(t,e),o=new ls.Transaction;return await n.Vaults.withdraw(a,o),o};var Vo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Hl.TransactionType.Other;txSubType="AddVaultsPosition";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 Gl=require("@msafe/sui3-utils");var $o=class a extends w{constructor(t){super(t);this.data=t}data;txType=Gl.TransactionType.Other;txSubType="RemoveVaultsPosition";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 Jl=require("@msafe/sui3-utils");var zl=require("@mysten/sui/transactions"),Xl={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,c=new zl.Transaction;return i.forEach(p=>{c.moveCall({target:`${Xl.published_at}::router::redeem`,typeArguments:[Xl.cetus_coin_type],arguments:[c.object(n),c.object(o),c.pure(p),c.object(s)]})}),c};var Ho=class a extends w{constructor(t){super(t);this.data=t}data;txType=Jl.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 ou=require("@msafe/sui3-utils");var Yl=async(a,e,t)=>await(await Ge(t,e)).XCetusModule.convertPayload(a),Zl=async(a,e,t)=>await(await Ge(t,e)).XCetusModule.redeemLockPayload(a),tu=async(a,e,t)=>await(await Ge(t,e)).XCetusModule.redeemDividendV3Payload(a.veNftId,a.rewardList),eu=async(a,e,t)=>await(await Ge(t,e)).XCetusModule.cancelRedeemPayload(a),nu=async(a,e,t)=>await(await Ge(t,e)).XCetusModule.redeemPayload(a);var Go=class a extends w{constructor(t){super(t);this.data=t}data;txType=ou.TransactionType.Other;txSubType="xCETUSCancelRedeem";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await eu(i,n,o)}static fromData(t){return new a(t)}};var au=require("@msafe/sui3-utils");var Xo=class a extends w{constructor(t){super(t);this.data=t}data;txType=au.TransactionType.Other;txSubType="xCETUSClaimStakingRwewards";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await tu(i,n,o)}static fromData(t){return new a(t)}};var iu=require("@msafe/sui3-utils");var zo=class a extends w{constructor(t){super(t);this.data=t}data;txType=iu.TransactionType.Other;txSubType="xCETUSConvert";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Yl(i,n,o)}static fromData(t){return new a(t)}};var ru=require("@msafe/sui3-utils");var Qo=class a extends w{constructor(t){super(t);this.data=t}data;txType=ru.TransactionType.Other;txSubType="xCETUSRedeem";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await nu(i,n,o)}static fromData(t){return new a(t)}};var su=require("@msafe/sui3-utils");var Jo=class a extends w{constructor(t){super(t);this.data=t}data;txType=su.TransactionType.Other;txSubType="xCETUSRedeemLock";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Zl(i,n,o)}static fromData(t){return new a(t)}};var Yo=class{application="cetus";supportSDK="@mysten/sui";async deserialize(e){console.log("Cetus helper deserialize input: ",e);let{txbParams:t,action:n}=e;return{txType:cu.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=ko.fromData(e.intentionData);break;case"IncreaseLiquidity":i=jo.fromData(e.intentionData);break;case"DecreaseLiquidity":i=Mo.fromData(e.intentionData);break;case"RemoveLiquidity":i=Fo.fromData(e.intentionData);break;case"ClaimFeeAndMining":i=vo.fromData(e.intentionData);break;case"FarmingOpenAndAddLiquidity":i=Oo.fromData(e.intentionData);break;case"FarmingIncreaseLiquidity":i=No.fromData(e.intentionData);break;case"FarmingDecreaseLiquidity":i=Bo.fromData(e.intentionData);break;case"FarmingRemoveLiquidity":i=Wo.fromData(e.intentionData);break;case"FarmingClaimFeeAndReward":i=Ro.fromData(e.intentionData);break;case"FarmingHarvest":i=Eo.fromData(e.intentionData);break;case"FarmingBatchHarvest":i=Po.fromData(e.intentionData);break;case"FarmingStake":i=_o.fromData(e.intentionData);break;case"FarmingUnstake":i=Lo.fromData(e.intentionData);break;case"xCETUSConvert":i=zo.fromData(e.intentionData);break;case"xCETUSRedeemLock":i=Jo.fromData(e.intentionData);break;case"xCETUSClaimStakingRwewards":i=Xo.fromData(e.intentionData);break;case"xCETUSCancelRedeem":i=Go.fromData(e.intentionData);break;case"xCETUSRedeem":i=Qo.fromData(e.intentionData);break;case"VestingRedeem":i=Ho.fromData(e.intentionData);break;case"AggregatorSwap":i=Ko.fromData(e.intentionData);break;case"AddVaultsPosition":i=Vo.fromData(e.intentionData);break;case"RemoveVaultsPosition":i=$o.fromData(e.intentionData);break;case"PosVestingRedeem":i=qo.fromData(e.intentionData);break;case"CreatePool":i=Ao.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};var Pu=require("@msafe/sui3-utils");var lu=At(require("sort-keys-recursive"),1),Yt=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify((0,lu.default)(this.data))}};var In=require("@mysten/sui.js/client");var us={};cs(us,{contractId:()=>zd,default:()=>tf,feeObjId:()=>Yd,roleObjId:()=>Qd,status:()=>Xd,transaction:()=>Gd,upgradeCapObjId:()=>Zd,vaultObjId:()=>Jd});var Gd="DiBZq4UmVVYiRL6ZJmFKYoHcxtxqrhsCXSkFyT7wUr3j",Xd="success",zd="0x81c960dc653975fbd0072deca8afb92d322898c911622898ba1b2e3ad0c4bd8d",Qd="0xc6ec0bdee0bb59a72077e9acd2f42457043cf47080b3d3fad4d39abf28bba63a",Jd="0xbc4021387fbac149119fd24e92be9e58f745774292f3a2a12e2ac6daf5363e1d",Yd="0x4178f63970fe2daeb256dc5730ad172e82b3e8eb45f31b33e0daae72cd35e1e1",Zd="0xe1e9aa7d222d151bfe6dd83358b0d7fdcb11260f710800cfaf7ccc1b1e245115",tf={transaction:Gd,status:Xd,contractId:zd,roleObjId:Qd,vaultObjId:Jd,feeObjId:Yd,upgradeCapObjId:Zd};var ms={};cs(ms,{contractId:()=>of,default:()=>lf,feeObjId:()=>sf,roleObjId:()=>af,status:()=>nf,transaction:()=>ef,upgradeCapObjId:()=>cf,vaultObjId:()=>rf});var ef="855FNDV8o8Z3fWULPnQo9qdhLJpsg7wZrkCpNyfw9KfB",nf="success",of="0xc357c3985e8fb875d6b37141497af660779aa1bab0ec489b2213efd74067d1fa",af="0x5ab49bdf9fd1413e328ef242b3f8d83dde791b38a0b627bfc87fb25c010d34f1",rf="0xb483558770d8eb26007f193b75db40f0a45f2e36863a687625885d4de6993378",sf="0x48453fc4d7cde3fe35aad89e5dfb496608a6a55ea529a1c0274681a808627f94",cf="0x34279779a0d0d36bd5044b04830d607fa1b0ecf316548c8ac3a44151e4f1a42a",lf={transaction:ef,status:nf,contractId:of,roleObjId:af,vaultObjId:rf,feeObjId:sf,upgradeCapObjId:cf};var uf=(0,In.getFullnodeUrl)("testnet"),mf=(0,In.getFullnodeUrl)("testnet"),pf=(0,In.getFullnodeUrl)("mainnet"),df=(0,In.getFullnodeUrl)("mainnet"),ff="https://bc3p6l5unl.execute-api.us-west-1.amazonaws.com/prod",hf="https://rolsbkota7.execute-api.us-west-1.amazonaws.com/prod",gf="https://6p6mkx33ne.execute-api.us-west-1.amazonaws.com/prod",yf="https://xrae3mrjv5.execute-api.us-west-1.amazonaws.com/prod",uu=us,mu=ms,bf=new Map([["dev",{env:"dev",rpc:{url:uf},backend:{url:ff},contract:uu}],["stg",{env:"stg",rpc:{url:mf},backend:{url:hf},contract:uu}],["prev",{env:"prev",rpc:{url:pf},backend:{url:gf},contract:mu}],["prod",{env:"prod",rpc:{url:df},backend:{url:yf},contract:mu}]]);function pu(a,e){let t=bf.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 du=require("@mysten/sui.js/client");var j=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 Zo=class extends j{constructor(){super(11,"Backend is not specified")}};var ta=class extends j{constructor(){super(1,"Wallet not connected")}};var se=At(require("axios"),1);var Xe=class extends j{constructor(e,t){super(10,e,{context:t})}};var ea=class a{constructor(e){this.apiURL=e}apiURL;static parseResponseData(e){if(e instanceof se.AxiosError)throw new Xe(e.response?.statusText);if(e.status===200){if(e.data.success)return e.data.data;throw new Xe(e.data.code)}throw new Xe(e.status.toString())}async getIncomingStreams(e,t){let n=await se.default.post(`${this.apiURL}/stream`,{recipient:e,...t});return a.parseResponseData(n)}async getOutgoingStreams(e,t){let n=await se.default.post(`${this.apiURL}/stream`,{sender:e,...t});return a.parseResponseData(n)}async getStreamHistory(e){let t=await se.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 se.default.post(`${this.apiURL}/stream-info`,{address:e});return a.parseResponseData(t)}async getAllRecipients(e,t){let n=await se.default.post(`${this.apiURL}/stream-info`,{sender:e,status:t});return a.parseResponseData(n)}async getAllSenders(e,t){let n=await se.default.post(`${this.apiURL}/stream-info`,{recipient:e,status:t});return a.parseResponseData(n)}};var ze=class a{signer;suiClient;envConfig;_backend;constructor(e){this.envConfig=e,this.suiClient=new du.SuiClient({url:e.rpc.url}),e.backend&&(this._backend=new ea(e.backend.url))}static new(e,t){let n=pu(e,t);return new a(n)}get walletType(){return this.wallet?this.wallet.type:"disconnected"}get backend(){if(!this._backend)throw new Zo;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 ta;return this.signer}async walletAddress(){return this.wallet.address()}};var Ee=require("@mysten/sui.js/utils");var An=require("@mysten/sui.js/transactions");var gs=require("@mysten/sui.js/transactions"),vn=require("@mysten/sui.js/utils");var ps=50n,na=10000n,fu=25n,ds=100000000n;var Zt=class{constructor(e){this.object=e}object;moveArg(e){return e.object(this.object)}},Cn=class{constructor(e){this.objects=e}objects;moveArgs(e){return e.makeMoveVec({objects:this.objects.map(t=>e.object(t))})}},ye=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)}})}result;moveArg(){return this.result}};var fs=require("buffer"),hu=require("@mysten/sui.js/utils");var xn=class extends j{constructor(e,t){super(3,e,{context:t})}};var oa=class{constructor(e){this.results=e}results;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 xn("Invalid contract return type.",{ctx:{expectType:"address",gotType:o}});return(0,hu.normalizeSuiAddress)(fs.Buffer.from(n).toString("hex"))}getU64(e=0,t=0){let[n,o]=this.getValue(e,t);if(o!=="u64")throw new xn("Invalid contract return type.",{ctx:{expectType:"u64",gotType:o}});return fs.Buffer.from(n).readBigInt64LE()}};var hs=require("@mysten/sui.js/bcs");var G=class extends j{constructor(e,t,n){super(2,`Invalid input: ${e}`,{context:{fieldKey:t,fieldValue:n}})}};var yu={groupId:"string",name:"string"},Tf=64;function bu(a){return Tu(a),hs.bcs.ser(yu,a).toString("base64")}function Dn(a){let e=hs.bcs.de(yu,a,"base64");return Tu(e),e}function Tu(a){if(!gu(a.name))throw new G("Invalid metadata: Name contains unknown character");if(!gu(a.groupId))throw new G("Invalid metadata: Group ID contains unknown character");if(a.name.length>Tf)throw new G("Invalid metadata: Name exceed max length 64")}function gu(a){return/^[\x00-\x7F]+$/.test(a)}var kn=require("@mysten/sui.js/utils");function aa(a,e){return(0,kn.normalizeStructTag)(a)===(0,kn.normalizeStructTag)(e)}function be(a,e){return(0,kn.normalizeStructTag)(a)===(0,kn.normalizeStructTag)(e)}var ia="txn.gas";var Su=require("nanoid");function wu(){return(0,Su.nanoid)()}var Be=class a{constructor(e,t,n){this.globals=e;this.feeContract=t;this.streamContract=n}globals;feeContract;streamContract;static convertCreateStreamInfoToInternal(e){return{metadata:bu({name:e.name,groupId:wu()}),coinType:(0,vn.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 gs.TransactionBlock,n=this.calculateFeesInternal(e),o=this.getCreateStreamCoinRequests(e,n),i=await this.wallet.requestCoins(o),s=await this.addMergeCoins(t,i[0]),c;o.length>1?c=await this.addMergeCoins(t,i[1]):c=s;for(let p=0;p<e.recipients.length;p++){let b=e.recipients[p],S=this.amountForRecipient(b,e.numberEpoch),I=this.getStreamFeeLocal(S),[x]=t.splitCoins(s,[t.pure(S+I,"u64")]),[D]=t.splitCoins(c,[t.pure(this.flatSuiFee,"u64")]);this.streamContract.createStream(t,{paymentCoin:new ye(x),flatFeeCoin:new ye(D),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:ps,denominator:na},claimFeePercent:{numerator:fu,denominator:na},flatFeePerStream:ds}}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===ia?n=e.gas:n=e.object(t.primaryCoin),n}getCreateStreamCoinRequests(e,t){let n=e.coinType;return aa(n,vn.SUI_TYPE_ARG)?[{coinType:n,amount:t.totalAmount+t.streamFeeAmount+t.flatFeeAmount}]:[{coinType:n,amount:t.totalAmount+t.streamFeeAmount},{coinType:vn.SUI_TYPE_ARG,amount:t.flatFeeAmount}]}calculateFeesInternal(e){let t=e.recipients.reduce((o,i)=>{let s=this.amountForRecipient(i,e.numberEpoch),c=this.getStreamFeeLocal(s);return{totalAmount:o.totalAmount+s,streamFeeAmount:o.streamFeeAmount+c}},{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 ds}getStreamFeeLocal(e){return e*ps/na}async getStreamFeeRemote(e){let t=this.feeContract.streamingFee(new gs.TransactionBlock,e),n=await this.globals.suiClient.devInspectTransactionBlock({sender:await this.globals.walletAddress(),transactionBlock:t});return new oa(n).getU64()}get wallet(){return this.globals.wallet}};var ys=require("@mysten/sui.js/transactions");var Iu="0x0000000000000000000000000000000000000000000000000000000000000006";var Qe=class{constructor(e,t,n){this.moduleName=e;this.config=t;this.globals=n}moduleName;config;globals;addContractCall(e,t){let n=`${this.config.contractId}::${this.moduleName}::${t.method}`;return e.add(ys.Transactions.MoveCall({target:n,arguments:t.arguments.map(o=>o instanceof Cn?o.moveArgs(e):o instanceof Zt?o.moveArg(e):o instanceof ye?o.moveArg():e.pure(o)),typeArguments:t.typeArgs})),e}addTransactionBlock(e,t,n=[],o=[]){e.add(ys.Transactions.MoveCall({target:t,arguments:n.map(i=>i instanceof Cn?i.moveArgs(e):i instanceof Zt?i.moveArg(e):i instanceof ye?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(Iu)}};var Je=class a extends Qe{constructor(t,n){super(a.ModuleName,t,n);this.config=t;this.globals=n}config;globals;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 Qe{constructor(t,n){super(a.ModuleName,t,n);this.config=t;this.globals=n}config;globals;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),c=this.makeObject(n.flatFeeCoin),p=this.clockObject();return this.addContractCall(t,{method:a.MethodName.create_stream,arguments:[o,i,s,c,n.metadata,n.recipient,n.timeStart,n.cliff,n.epochInterval,n.numEpoch,n.amountPerEpoch,n.cancelable,p],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(),c=this.clockObject();return this.addContractCall(t,{method:a.MethodName.claim_stream_by_proxy,arguments:[o,i,s,c],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 Ye=class{constructor(e){this.globals=e;let t=e.envConfig.contract;this.feeContract=new Je(t,e),this.streamContract=new te(t,e)}globals;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 An.TransactionBlock;return this.streamContract.setAutoClaim(o,{streamId:e,enabled:t,coinType:n})}claimStream(e,t){let n=new An.TransactionBlock;return this.streamContract.claimStream(n,{streamId:e,coinType:t})}claimStreamByProxy(e,t){let n=new An.TransactionBlock;return this.streamContract.claimStreamByProxy(n,{streamId:e,coinType:t})}cancelStream(e,t){let n=new An.TransactionBlock;return this.streamContract.cancelStream(n,{streamId:e,coinType:t}),n}};var Ze=require("@mysten/sui.js/utils"),bs=require("luxon");var ra=class extends j{constructor(e,t){super(12,`Transaction failed: ${t}`,{context:{status:e,msg:t}})}};var Sf=1e3,sa=class{constructor(e){this.globals=e;this.coinMetaHelper=new Ts(e.suiClient),this.createStreamHelper=new Ye(e).createStreamHelper()}globals;coinMetaHelper;createStreamHelper;getStreamIdsFromCreateStreamResponse(e){if(e.effects?.status.status!=="success")throw new ra(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 G("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 G("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 G("Invalid stream steps: 0");let t=BigInt(e.total.toMillis())/e.steps,n=e.timeStart.plus(bs.Duration.fromMillis(Number(t*e.steps))),o={timeStart:e.timeStart,timeEnd:n,interval:bs.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,Ze.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,Ze.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 G("Stream amount too small","totalAmount",t);if(e.cliffAmount>e.realTotalAmount)throw new G("Invalid cliff settings")}validateTimeline(e){if(e.interval.toMillis()<Sf)throw new G("Interval shall be at least 1 second","interval",e.interval)}},Ts=class{constructor(e){this.suiClient=e;this.coinMetaReg=new Map}suiClient;coinMetaReg;async getCoinMeta(e){let t=(0,Ze.normalizeStructTag)(e||Ze.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 Se=require("@mysten/sui.js/utils"),ks=require("luxon");var Pn=require("@mysten/sui.js/transactions"),Rn=require("@mysten/sui.js/utils"),xu=require("luxon");var ca=class extends j{constructor(){super(7,"Connected wallet is not creator")}};var Mn=class extends j{constructor(){super(8,"Connected wallet is not recipient")}};var On=class extends j{constructor(e,t){super(6,e,{context:t})}};var Pt=class extends j{constructor(e,t={}){super(0,e,t)}};var la=class extends j{constructor(e){super(5,"Stream not found",{context:{streamId:e}})}};var ma=require("luxon"),Cu=(1n<<64n)-1n,ua=1e3;function Ss(a){let e;typeof a=="number"?e=a:typeof a=="bigint"?e=Number(a):e=a.toMillis();let t=Math.round(e/ua);return ma.DateTime.fromMillis(t*ua)}function ws(a){let e;typeof a=="number"?e=a:typeof a=="bigint"?e=Number(a):e=a.toMillis();let t=Math.round(e/ua);return ma.Duration.fromMillis(t*ua)}var Te=class a{constructor(e,t,n){this.globals=e;this.streamId=t;this.rawData=n;this.streamContract=new te(e.envConfig.contract,e)}globals;streamId;rawData;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 Pt("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 ca;let e=new Pn.TransactionBlock;return this.streamContract.cancelStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async claim(){if(await this.globals.walletAddress()!==this.recipient)throw new Mn;let e=new Pn.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 Mn;let t=new Pn.TransactionBlock;return this.streamContract.setAutoClaim(t,{streamId:this.streamId,coinType:this.coinType,enabled:e}),t}async claimByProxy(){let e=new Pn.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,Rn.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 ws(this.rawData.config.epochInterval)}get groupId(){let{metadata:e}=this.rawData.config;return Dn(e).groupId}get name(){let{metadata:e}=this.rawData.config;return Dn(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 ws(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===Cu?0n:this.rawData.status.epochClaimed*this.amountPerEpoch+this.cliff}get currentEpoch(){let e=xu.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 la(e):new On(`get stream data: ${t.error.code}`,{streamId:e,...t.error});let n=t.data.content;if(n.dataType!=="moveObject")throw new On("Unexpected object type",{gotType:n.dataType});let{typeParams:o}=(0,Rn.parseStructTag)(n.type),i=(0,Rn.normalizeStructTag)(o[0]),s=n.fields,c=s.config.fields,p=s.status.fields;return{coinType:i,autoClaim:s.auto_claim,balance:BigInt(s.balance.fields.balance),config:{amountPerEpoch:BigInt(c.amount_per_epoch),cancelable:c.cancelable,cliff:BigInt(c.cliff),creator:c.creator,epochInterval:BigInt(c.epoch_interval),metadata:c.metadata,recipient:c.recipient,timeStart:BigInt(c.time_start),totalEpoch:BigInt(c.total_epoch)},status:{status:p.status,epochCanceled:BigInt(p.epoch_canceled),epochClaimed:BigInt(p.epoch_claimed)}}}};var tn=class extends j{constructor(e,t){super(9,`Invalid stream group: ${e}`,{context:t})}};async function Cs(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 Is=class{constructor(e){this.requester=e;this.curPage=void 0,this.init=!0}requester;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)}},en=class{constructor(e){this.requester=e;this.pager=new Is(e),this.curData=[],this.cursor=0}requester;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 wf=25;async function Ds(a,e,t){let n=new Bn(e),o=new En(a,n,t);return await Cs(o)}var Bn=class{constructor(e){this.ids=e;this.cursor=-1}ids;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]}},En=class extends en{constructor(t,n,o){super(new xs(t,n,o));this.suiClient=t;this.idIter=n;this.options=o}suiClient;idIter;options},xs=class{constructor(e,t,n){this.suiClient=e;this.stringIter=t;this.options=n;this.filter=n?.filter,this.pageSize=n?.pageSize||wf,this.objectOptions=n?.objectOptions||{showType:!0,showContent:!0}}suiClient;stringIter;options;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 pa=class a{constructor(e,t){this.globals=e;this.streams=t;if(t.length===0)throw new tn("stream size 0");let n=t.map(i=>i.groupId);if(new Set(n).size!==1)throw new G("Stream does not have same group ID")}globals;streams;type="StreamGroup";static async new(e,t){let n=await Ds(e.suiClient,t);return n.forEach(o=>{if(!o)throw new Pt("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=>{If(n,i)||(o=!1)}),o}async refresh(){let e=await Ds(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)=>Te.fromObjectData(e,t[s],i)).filter(i=>!!i);if(new Set(o.map(i=>i.groupId)).size!==1)throw new tn("Not same group ID");if(!this.checkStreamGroup(o))throw new tn("Not same stream settings");return o}};function If(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 Nn=class a{constructor(e,t){this.it=e;this.pageSize=t}it;pageSize;static async newIncoming(e){let t=await da.newIncoming(e);return new a(t,e.pageSize)}static async newOutgoing(e){let t=await da.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}},da=class a{constructor(e){this.requester=e}requester;cachedNext;static async newIncoming(e){let t=await fa.newIncomingQuery(e);return new a(t)}static async newOutgoing(e){let t=await fa.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 Pt("No more results");return t}let e=this.cachedNext;if(this.cachedNext=void 0,e===null)throw new Pt("No more results");return e}},fa=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 Bn(n.flat().map(s=>s.streamId));this.objectIter=new En(e.suiClient,i)}globals;recipient;groupRefs;query;current=0;objectIter;static async newIncomingQuery(e){let t=vf(e.query),n=await e.globals.walletAddress(),i=(await e.globals.backend.getIncomingStreams(n,t)).filter(c=>(0,Se.normalizeSuiAddress)(c.recipient)===(0,Se.normalizeSuiAddress)(n)),s=Du(i);return new a(e.globals,n,s,e.query)}static async newOutgoingQuery(e){let t=Af(e.query),n=await e.globals.walletAddress(),o=await e.globals.backend.getOutgoingStreams(n,t),i=Du(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 Df(this.globals,e[0].streamId,this.objectIter);return this.current++,ku(t,this.query)?t:this.doNextRequest()}if(e.length>1){let t=await kf(this.globals,e.map(n=>n.streamId),this.objectIter);return this.current++,xf(t,this.query)?t:this.doNextRequest()}throw new Pt("Stream group with no stream")}};function Du(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)=>ks.DateTime.fromISO(n[0].createDate).toMillis()-ks.DateTime.fromISO(t[0].createDate).toMillis())}function ku(a,e){if(e===void 0)return!0;let t=Cf(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 Cf(a,e){return e===void 0?!0:Array.isArray(e)?e.includes(a.progress.status):a.progress.status===e}function xf(a,e){if(!e)return!0;let t=!1;return a.streams.forEach(n=>{ku(n,e)&&(t=!0)}),t}async function Df(a,e,t){let n=await vu(t,e);return Te.fromObjectData(a,e,n)}async function kf(a,e,t){let n=[];for(;n.length<e.length;){let o=await vu(t,e[n.length]);n.push(o)}return pa.newFromObjectResponse(a,e,n)}async function vu(a,e){if(!await a.hasNext())throw new Pt("object iterator has been consumed");let t=await a.next();if(!t||t.error||t.data===void 0||t.data===null)throw new Pt("object iterator undefined response",{cause:t?.error});if(t?.data?.objectId!==e)throw new Pt("stream id not aligned");return t}function vf(a){return{status:vs(a?.status),coinType:Au(a?.coinType),sender:Mu(a?.sender)}}function Af(a){return{status:vs(a?.status),coinType:Au(a?.coinType),recipient:Mu(a?.recipient)}}function vs(a){return a===void 0||a.length===0?"all":Array.isArray(a)?a.reduce((e,t)=>{let n=vs(t);return!e||e===n?n:"all"},void 0):Mf(a)}function Mf(a){switch(a){case"STREAMING":case"STREAMED":case"CANCELED":return"active";case"COMPLETED":case"SETTLED":return"inactive";default:throw new G("Unknown stream filtered status")}}function Au(a){if(a)return Array.isArray(a)?a.length!==0?a.map(e=>(0,Se.normalizeStructTag)(e)):void 0:(0,Se.normalizeStructTag)(a)}function Mu(a){if(a)return Array.isArray(a)?a.length!==0?a.map(e=>(0,Se.normalizeSuiAddress)(e)):void 0:(0,Se.normalizeSuiAddress)(a)}var ha=class extends j{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}coinType;requestAmount;gotAmount};var Of=25;async function Ou(a,e,t,n="0x2::sui::SUI",o=Of){let i=new As(a,e,n,o),s=BigInt(0),c=[];for(;await i.hasNext()&&s<t;){let p=await i.next();p&&(c.push(p),s+=BigInt(p.balance))}if(s<t)throw new ha(n,t,s);return c}var As=class extends en{constructor(t,n,o,i){super(new Ms(t,n,o,i));this.suiClient=t;this.owner=n;this.coinType=o;this.reqPageSize=i}suiClient;owner;coinType;reqPageSize},Ms=class{constructor(e,t,n,o){this.suiClient=e;this.owner=t;this.coinType=n;this.reqPageSize=o;if(o<=0)throw new Pt("Invalid reqPageSize")}suiClient;owner;coinType;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 Os=class{constructor(e){this.msafe=e}msafe;get type(){return"msafe"}async address(){return this.msafe.address()}async requestCoins(e){return this.msafe.requestCoins(e)}},ga=class{constructor(e){this.account=e}account;async address(){return this.account.address}},Ps=class{constructor(e,t){this.singleWallet=e;this.suiClient=t}singleWallet;suiClient;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(aa(e.coinType,Ee.SUI_TYPE_ARG))return{primaryCoin:ia};if(e.amount<=0)throw new G("Invalid coin request","coinAmount",e.amount);let t=await Ou(this.suiClient,await this.address(),e.amount,e.coinType);if(t.length===0)throw new Pt("no coins available");return{primaryCoin:t[0].coinObjectId,mergedCoins:t.slice(1).map(n=>n.coinObjectId)}}},ya=class{globals;helper;constructor(e,t){this.globals=ze.new(e,t),this.helper=new sa(this.globals)}connectSingleWallet(e){let t=new Ps(e,this.globals.suiClient);this.globals.connectWallet(t)}connectMSafeAccount(e){let t=new Os(e);this.globals.connectWallet(t)}async createStream(e){return this.builder().createStreams(e)}async getStream(e){return Te.new(this.globals,e)}async getIncomingStreams(e,t=10){return Nn.newIncoming({globals:this.globals,query:e,pageSize:t})}async getOutgoingStreams(e,t=10){return Nn.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 Ye(this.globals)}};var Vt=class extends Yt{application="mpay";getClient(e,t){let n=new ya(e==="sui:mainnet"?"prod":"dev");return n.connectSingleWallet(new ga(t)),n}};var Wn=class extends Vt{constructor(t){super(t);this.data=t}data;txType=Pu.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 Ru=require("@msafe/sui3-utils");var _n=class extends Vt{constructor(t){super(t);this.data=t}data;txType=Ru.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 Bu=require("@msafe/sui3-utils");var Ln=class extends Vt{constructor(t){super(t);this.data=t}data;txType=Bu.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 Eu=require("@msafe/sui3-utils");var jn=class extends Vt{constructor(t){super(t);this.data=t}data;txType=Eu.TransactionType.Stream;txSubType="CreateStream";async build(t){let{network:n,account:o}=t;return this.getClient(n,o).createStream(this.data)}};var Rs=require("@mysten/sui.js/bcs"),we=require("@mysten/sui.js/utils"),nn=class a{constructor(e,t){this.moveCall=e;this.txb=t}moveCall;txb;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,we.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 Rs.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,we.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,we.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,we.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,we.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 Rs.bcs.de(t,new Uint8Array(n))}typeArg(e){return(0,we.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};var ba=class{constructor(e,t){this.globals=e;this.txb=t}globals;txb;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"&&be(t.target,this.contract.createStreamTarget));if(e.length===0)throw new Pt("No create stream transactions");return e.map(t=>new nn(t,this.txb))}getCreationInfoFromMoveCall(e){let t=e.decodeInputString(4),{name:n,groupId:o}=Dn(t),i=e.decodeInputAddress(5),s=e.decodeInputU64(6),c=e.decodeInputU64(7),p=e.decodeInputU64(8),b=e.decodeInputU64(9),S=e.decodeInputU64(10),I=e.decodeInputBool(11),x=e.typeArg(0);return{name:n,groupId:o,recipient:i,timeStart:s,cliff:c,epochInterval:p,totalEpoch:b,amountPerEpoch:S,cancelable:I,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 G("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 Je(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 Ta=class{constructor(e,t){this.globals=e;this.txb=t;this.contract=new te(e.envConfig.contract,e)}globals;txb;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"&&be(t.target,this.contract.createStreamTarget))!==-1}isSetAutoClaimTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&be(this.transactions[0].target,this.contract.setAutoClaimTarget)}isCancelStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&be(this.transactions[0].target,this.contract.cancelStreamTarget)}isClaimStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&be(this.transactions[0].target,this.contract.claimStreamTarget)}isClaimByProxyTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&be(this.transactions[0].target,this.contract.claimStreamByProxyTarget)}decodeCreateStreamTransaction(){return new ba(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 nn(e,this.txb)}};var Nu=require("@msafe/sui3-utils");var Un=class extends Vt{constructor(t){super(t);this.data=t}data;txType=Nu.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 Sa=class{application="mpay";supportSDK="@mysten/sui.js";async deserialize(e){let{network:t,transactionBlock:n}=e,o=ze.new(t==="sui:mainnet"?"prod":"dev"),s=new Ta(o,n).decode(),c;switch(s.type){case"CreateStream":c=new jn(s.info);break;case"SetAutoClaim":c=new Un({streamId:s.streamId,enabled:s.enabled});break;case"Claim":c=new Ln({streamId:s.streamId});break;case"ClaimByProxy":c=new _n({streamId:s.streamId});break;case"Cancel":c=new Wn({streamId:s.streamId});break;default:throw new Error(`Unknown transaction type: ${s}`)}return{txType:c.txType,txSubType:c.txSubType,intentionData:c.data}}async build(e){let{intentionData:t}=e,n;switch(e.txSubType){case"CreateStream":n=new jn(t);break;case"Claim":n=new Ln(t);break;case"ClaimByProxy":n=new _n(t);break;case"SetAutoClaim":n=new Un(t);break;case"Cancel":n=new Wn(t);break;default:throw new Error("not implemented")}return n.build({...e})}};var qn=require("@msafe/sui3-utils");var _u=require("@msafe/sui3-utils");var Wu=At(require("sort-keys-recursive"),1),on=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify((0,Wu.default)(this.data))}};var wa=class a extends on{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiGrpcClient:n,account:o}=t;return(0,_u.buildCoinTransferTxb)(n,this.data,o.address)}static fromData(t){return new a(t)}};var Lu=require("@msafe/sui3-utils");var Ia=class a extends on{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiGrpcClient:n,account:o}=t;return(0,Lu.buildObjectTransferTxb)(n,this.data,o.address)}static fromData(t){return new a(t)}};var Ca=class{application="msafe-core";supportSDK="@mysten/sui-v2";constructor(){this.application=qn.TransactionDefaultApplication}deserialize(){throw new Error("MSafe core transaction intention should be build from API")}async build(e){let{account:t,network:n,suiGrpcClient:o}=e,i;switch(e.txSubType){case qn.TransactionSubTypes.assets.coin.send:i=wa.fromData(e.intentionData);break;case qn.TransactionSubTypes.assets.object.send:i=Ia.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiGrpcClient:o,account:t,network:n})}};var Ls=require("@msafe/sui3-utils");var ju=!1,Fn={ProtocolPackage:"0x1e4a13a0494d5facdbe8473e74127b838c2d446ecec0ce262e2eddafa77259cb",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 Bs(){if(!ju)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&&(Fn.ProtocolPackage=e),t&&(Fn.borrowFee=t),n&&(Fn.borrowFeeAddress=n),o&&(Fn.pool=o),ju=!0}catch(a){console.error(a.message)}}var Gt=Fn;var Ie=require("@msafe/sui3-utils"),Ce=require("@mysten/sui/utils"),Ns=require("@mysten/sui.js/bcs");var Uu=require("@mysten/bcs");function Rf(a){let e=typeof a=="string"?(0,Uu.fromBase64)(a):a;return Array.from(e)}function Bf(a){let e=a.$kind;if(e==="Pure"||"Pure"in a){let t=a.Pure,n=t?.bytes??t;return{type:"pure",value:{Pure:Rf(n)}}}if(e==="Object"||"Object"in a){let t=a.Object,n=t.$kind;if(n==="ImmOrOwnedObject"||"ImmOrOwnedObject"in t){let o=t.ImmOrOwnedObject??t;return{type:"object",objectType:"immOrOwned",value:{Object:{ImmOrOwned:{objectId:o.objectId,version:o.version,digest:o.digest}}}}}if(n==="SharedObject"||"SharedObject"in t){let o=t.SharedObject??t;return{type:"object",objectType:"shared",value:{Object:{Shared:{objectId:o.objectId,initialSharedVersion:o.initialSharedVersion,mutable:o.mutable}}}}}}if(e==="UnresolvedObject"||"UnresolvedObject"in a)return{type:"object",objectType:"immOrOwned",value:{Object:{ImmOrOwned:{objectId:a.UnresolvedObject.objectId}}}};if(e==="UnresolvedPure"||"UnresolvedPure"in a)return{type:"pure",value:a.UnresolvedPure.value};throw new Error(`Unsupported transaction input: ${JSON.stringify(a)}`)}function Ef(a){let e=a.$kind;if(e==="Input"||"Input"in a)return{kind:"Input",index:a.Input};if(e==="GasCoin"||a.GasCoin===!0)return{kind:"GasCoin"};if(e==="Result"||"Result"in a)return{kind:"Result",index:a.Result};if(e==="NestedResult"||"NestedResult"in a){let[t,n]=a.NestedResult;return{kind:"NestedResult",index:t,value:n}}throw new Error(`Unsupported move call argument: ${JSON.stringify(a)}`)}function Nf(a){let e=a.$kind;if(e==="MoveCall"||"MoveCall"in a){let n=a.MoveCall;return{kind:"MoveCall",target:`${n.package}::${n.module}::${n.function}`,typeArguments:n.typeArguments??[],arguments:(n.arguments??[]).map(o=>Ef(o))}}if(!e)throw new Error(`Unsupported transaction command: ${JSON.stringify(a)}`);let t=a[e];return{kind:e,...typeof t=="object"&&t!==null?t:{}}}function Es(a){let e=a.blockData;if(e)return e;let t=a.getData();return{sender:t.sender,version:t.version,gasConfig:{budget:t.gasData.budget,price:t.gasData.price,owner:t.gasData.owner,payment:t.gasData.payment},inputs:t.inputs.map(n=>Bf(n)),transactions:t.commands.map(n=>Nf(n))}}var xa=class{constructor(e){this.txb=e}txb;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 blockData(){return Es(this.txb)}get transactions(){return this.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(`${Gt.ProtocolPackage}::incentive_v3::entry_borrow_v2`)}isEntryBorrowWithFeeTransaction(){return!!this.getMoveCallTransaction(`${Gt.ProtocolPackage}::incentive_v3::borrow_v2`)}isEntryMultiDepositTransaction(){let e=`${Gt.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=`${Gt.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(`${Gt.ProtocolPackage}::incentive_v3::entry_deposit`)}isEntryRepayTransaction(){return!!this.getMoveCallTransaction(`${Gt.ProtocolPackage}::incentive_v3::entry_repay`)}isEntryWithdrawTransaction(){return!!this.getMoveCallTransaction(`${Gt.ProtocolPackage}::incentive_v3::withdraw_v2`)}findPoolByAssetId(e){let t=Object.values(Gt.pool).find(n=>n.assetId===e);if(!t)throw new Error("Pool not found");return t}decodeEntryClaimAndDeposit(){return{txType:Ie.TransactionType.Other,type:"EntryClaimAndDeposit",intentionData:{type:"entry_claim_and_deposit"}}}decodeClaimReward(){return console.log("decode claims"),{txType:Ie.TransactionType.Other,type:"ClaimReward",intentionData:{type:"claim_reward"}}}decodeEntryBorrow(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(5);return{txType:Ie.TransactionType.Other,type:"EntryBorrow",intentionData:{amount:t,assetId:e}}}decodeEntryMultiDeposit(){let e=[],t=`${Gt.ProtocolPackage}::incentive_v3::entry_deposit`;return this.transactions.forEach(n=>{if(n.kind==="MoveCall"&&n.target===t){let o=new Da(n,this.txb),i=o.decodeInputU8(3),s=o.decodeInputU64(5);e.push({assetId:i,amount:s})}}),{txType:Ie.TransactionType.Other,type:"EntryMultiDeposit",intentionData:{list:e}}}decodeEntryDeposit(){let e=this.helper.decodeInputU8(3),t=this.helper.decodeInputU64(5);return{txType:Ie.TransactionType.Other,type:"EntryDeposit",intentionData:{amount:t,assetId:e}}}decodeEntryRepay(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(6);return{txType:Ie.TransactionType.Other,type:"EntryRepay",intentionData:{amount:t,assetId:e}}}decodeEntryWithdraw(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(5);return{txType:Ie.TransactionType.Other,type:"EntryWithdraw",intentionData:{amount:t,assetId:e}}}get helper(){let e=this.transactions.find(t=>t.kind==="MoveCall"&&t.target.startsWith(Gt.ProtocolPackage));return new Da(e,this.txb)}},Da=class a{constructor(e,t){this.moveCall=e;this.txb=t}moveCall;txb;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,Ce.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 Es(this.txb).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 Ns.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,Ce.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Ce.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,Ce.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Ce.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 Ns.bcs.de(t,new Uint8Array(n))}typeArg(e){return(0,Ce.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};var Ws=require("@mysten/sui/transactions"),Ut=require("@naviprotocol/lending");async function an(a,e,t,n){return await(0,Ut.depositCoinPTB)(a,e,t,{amount:n}),a}async function qu(a,e,t,n){let[o]=await(0,Ut.withdrawCoinPTB)(a,e,t);return a.transferObjects([o],a.pure.address(n)),a}async function Fu(a,e,t,n){let[o]=await(0,Ut.borrowCoinPTB)(a,e,t);return a.transferObjects([o],a.pure.address(n)),a}async function _s(a,e,t,n){return await(0,Ut.repayCoinPTB)(a,e,t,{amount:n}),a}async function Ku(a,e){let t=new Ws.Transaction,n=await(0,Ut.getUserAvailableLendingRewards)(e,{client:a});return await(0,Ut.claimLendingRewardsPTB)(t,n),t}async function Vu(a,e){let t=new Ws.Transaction,n=await(0,Ut.getUserAvailableLendingRewards)(e,{client:a});return await(0,Ut.claimLendingRewardsPTB)(t,n,{customCoinReceive:{type:"depositNAVI",depositNAVI:{fallbackReceiveAddress:e}}}),t}var ka=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{type:n}=this.data;return console.log("claim reward",n),await Ku(t.suiClient,t.account.address)}static fromData(t){return new a(t)}};var va=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{type:n}=this.data;return console.log("claim reward and supply",n),await Vu(t.suiClient,t.account.address)}static fromData(t){return new a(t)}};var Hu=require("@mysten/sui/transactions");var $u=require("@naviprotocol/lending");async function ee(a){return(0,$u.getPool)(a)}var Aa=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{assetId:n,amount:o}=this.data,i=new Hu.Transaction;console.log("build",this.data);let s=await ee(n);return await Fu(i,s,o,t.account.address)}static fromData(t){return new a(t)}};var Gu=require("@mysten/sui/transactions");async function rn(a,e,t){let n=await a.getCoins({owner:e,coinType:t});return console.log("getTokenObjs",e,n),n}var Ma=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{assetId:i,amount:s}=this.data,c=new Gu.Transaction;console.log("build",this.data);let p=await ee(i);if(i===0){let[x]=c.splitCoins(c.gas,[s]);return await an(c,p,x,s)}let b=await rn(n,o.address,p.suiCoinType);if(!b.data[0])throw new Error(`Insufficient balance for ${p.suiCoinType} Token`);let S=b.data[0].coinObjectId;if(b.data.length>=2){let x=1;for(;x<b.data.length;)c.mergeCoins(S,[b.data[x].coinObjectId]),x++}return await an(c,p,c.object(S),s)}static fromData(t){return new a(t)}};var Xu=require("@mysten/sui/transactions");var Oa=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{assetId:i,amount:s}=this.data,c=new Xu.Transaction;console.log("build",this.data);let p=await ee(i);if(i===0){let[I]=c.splitCoins(c.gas,[s]);return _s(c,p,I,s)}let b=await rn(n,o.address,p.suiCoinType);if(!b.data[0])throw new Error(`Insufficient balance for ${p.suiCoinType} Token`);let S=b.data[0].coinObjectId;if(b.data.length>=2){let I=1;for(;I<b.data.length;)c.mergeCoins(S,[b.data[I].coinObjectId]),I++}return _s(c,p,c.object(S),s)}static fromData(t){return new a(t)}};var zu=require("@mysten/sui/transactions");var Pa=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{assetId:n,amount:o}=this.data,i=new zu.Transaction;console.log("build",this.data);let s=await ee(n);return await qu(i,s,o,t.account.address)}static fromData(t){return new a(t)}};var Qu=require("@mysten/sui/transactions");var Ra=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{list:i}=this.data,s=new Qu.Transaction;console.log("build",this.data);for(let c=0;c<i.length;c++){let{assetId:p,amount:b}=i[c],S=await ee(p);if(p===0){let[D]=s.splitCoins(s.gas,[b]);await an(s,S,D,b);continue}let I=await rn(n,o.address,S.suiCoinType);if(!I.data[0])throw new Error(`Insufficient balance for ${S.suiCoinType} Token`);let x=I.data[0].coinObjectId;if(I.data.length>=2){let D=1;for(;D<I.data.length;)s.mergeCoins(x,[I.data[D].coinObjectId]),D++}await an(s,S,s.object(x),b)}return s}static fromData(t){return new a(t)}};var Ju=require("@mysten/sui/transactions");var Ba=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return console.log("build",this.data),Ju.Transaction.from(this.data.content)}static fromData(t){return new a(t)}};var Ea=class{application="navi";supportSDK="@mysten/sui";async deserialize(e){if(await Bs(),e.appContext?.content)return{txType:Ls.TransactionType.Other,txSubType:"PlainTransaction",intentionData:{content:e.appContext.content,scene:e.appContext.scene||"unknown"}};let{transaction:t}=e,o=new xa(t).decode();return{txType:Ls.TransactionType.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n}=e,o;switch(await Bs(),e.txSubType){case"EntryDeposit":o=Ma.fromData(e.intentionData);break;case"EntryBorrow":o=Aa.fromData(e.intentionData);break;case"EntryRepay":o=Oa.fromData(e.intentionData);break;case"EntryWithdraw":o=Pa.fromData(e.intentionData);break;case"EntryMultiDeposit":o=Ra.fromData(e.intentionData);break;case"ClaimReward":o=ka.fromData(e.intentionData);break;case"EntryClaimAndDeposit":o=va.fromData(e.intentionData);break;case"PlainTransaction":o=Ba.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};var Kn=require("@msafe/sui3-utils"),Yu=require("@mysten/bcs"),Zu=require("@mysten/sui/transactions"),tm=At(require("sort-keys-recursive"),1),em="msafe-plain-tx",nm=Kn.TransactionSubTypes.others.plain,js=class a{constructor(e){this.data=e}data;application=em;txType=Kn.TransactionType.Other;txSubType=nm;serialize(){return JSON.stringify((0,tm.default)(this.data))}async build(e){return Zu.Transaction.from((0,Yu.fromHex)(this.data.content))}static fromData(e){return new a(e)}},Na=class{application;supportSDK="@mysten/sui";constructor(){this.application=em}async deserialize(e){let{content:t}=e.appContext;return{txType:Kn.TransactionType.Other,txSubType:nm,intentionData:{content:t}}}async build(e){let{suiClient:t,network:n,account:o}=e;return js.fromData(e.intentionData).build({suiClient:t,network:n,account:o})}};var Ks=require("@mysten/sui/client"),cn=require("@mysten/sui/transactions"),$n=require("@mysten/sui.js/client");var _f={"sui:mainnet":"mainnet","sui:testnet":"testnet","sui:devnet":"devnet","sui:localnet":"localnet"};function Vn(a){return _f[a]}var sn=require("@open-rpc/client-js");var Lf={"-32700":"ParseError","-32600":"InvalidRequest","-32601":"MethodNotFound","-32602":"InvalidParams","-32603":"InternalError"},Us=class extends Error{},Wa=class extends Us{code;type;constructor(e,t){super(e),this.code=t,this.type=Lf[t]??"ServerError"}};function jf(a){let e=new URL(a);return e.protocol=e.protocol.replace("http","ws"),e.toString()}var Uf={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5},_a=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={...Uf,...t},this.endpoint&&this.endpoint.startsWith("http")&&(this.endpoint=jf(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 Wa(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 qs(e);return this.#i.add(t),await t.subscribe(this),()=>t.unsubscribe(this)}},qs=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 ce=class{rpcClient;websocketClient;constructor({url:e,websocket:{url:t,...n}={},rpc:o}){let i=new sn.HTTPTransport(o?.url??e,{headers:{"Content-Type":"application/json",...o?.headers}});this.rpcClient=new sn.Client(new sn.RequestManager([i])),this.websocketClient=new _a(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 om=require("@mysten/sui/grpc"),am=require("@mysten/sui/jsonRpc");function qf(a){return Object.assign(a,{getObject(e){return a.core.getObject(e)},listCoins(e){return a.core.listCoins({owner:e.owner,coinType:e.coinType,cursor:e.cursor})}})}function Fs(a,e){let t=Vn(a),n=new om.SuiGrpcClient({network:t,baseUrl:e??(0,am.getJsonRpcFullnodeUrl)(t)});return qf(n)}var Ff="0x2::sui::SUI",Gs=1e8,La=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;case"@mysten/sui-v2":t.addGrpcHelper(o);break;default:throw new Error(`${o.application}: ${o.supportSDK} SDK not supported`)}}return t}addLegacyHelper(e){this.apps.set(e.application,new Hs(e))}addHelper(e){this.apps.set(e.application,new Vs(e))}addGrpcHelper(e){this.apps.set(e.application,new $s(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}helper;async deserialize(e){let t=new Ks.SuiClient({network:Vn(e.network),transport:new ce({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=new $n.SuiClient({transport:new ce({url:e.clientUrl,rpc:{url:e.clientUrl}})}),o=await e.transactionBlock.build({client:n}),i=cn.Transaction.from(o);return this.helper.deserialize({...e,suiClient:t,transaction:i})}async build(e){let t=new Ks.SuiClient({network:Vn(e.network),transport:new ce({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=await t.getBalance({owner:e.account.address});if(Number(n.totalBalance)<Gs)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 cn.Transaction.from(i)}},$s=class{constructor(e){this.helper=e}helper;async deserialize(e){let t=Fs(e.network,e.clientUrl),n=new $n.SuiClient({transport:new ce({url:e.clientUrl,rpc:{url:e.clientUrl}})}),o=await e.transactionBlock.build({client:n}),i=cn.Transaction.from(o);return this.helper.deserialize({...e,suiGrpcClient:t,transaction:i})}async build(e){let t=Fs(e.network,e.clientUrl),{balance:n}=await t.core.getBalance({owner:e.account.address,coinType:Ff});if(Number(n.balance)<Gs)throw new Error("Insufficient gas fee");let o=await this.helper.build({...e,suiGrpcClient:t});o.setSender(e.account.address);let i=await o.build({client:t});return cn.Transaction.from(i)}},Hs=class{constructor(e){this.helper=e}helper;async deserialize(e){let t=new $n.SuiClient({transport:new ce({url:e.clientUrl,rpc:{url:e.clientUrl}})});return this.helper.deserialize({...e,transactionBlock:e.transactionBlock,suiClient:t})}async build(e){let t=new $n.SuiClient({transport:new ce({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=await t.getBalance({owner:e.account.address});if(Number(n.totalBalance)<Gs)throw new Error("Insufficient gas fee");let i=await(await this.helper.build({...e,suiClient:t})).build({client:t});return cn.Transaction.from(i)}};var fm=require("@msafe/sui3-utils"),hm=require("@mysten/sui/client"),gm=require("@scallop-io/sui-scallop-sdk");var Rt=require("@msafe/sui3-utils"),Qs=require("@scallop-io/sui-scallop-sdk");var im=require("@mysten/sui/utils"),xe=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}`))}transaction;scallopClient;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,im.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,c)=>(i[s]=c,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 ja=require("@mysten/sui/bcs"),De=require("@mysten/sui/utils"),Xs=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 c=`${i.MoveCall.package}::${i.MoveCall.module}::${i.MoveCall.function}`,p=`${e.MoveCall.package}::${e.MoveCall.module}::${e.MoveCall.function}`;return c===p?(o.push(s),!0):!1}return!1}),this.cmdIdx=o[n]}moveCall;transaction;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,De.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=ja.bcs[t];return ja.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,De.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,De.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,De.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,De.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 ja.bcs.U64.parse(new Uint8Array(t))}typeArg(e){return(0,De.normalizeStructTag)(this.txBlockTransactions.typeArguments[e])}txArg(e){return this.transaction.blockData.inputs[e]}},N=Xs;var zs=class{constructor(e,t){this.splitCoin=e;this.txb=t}splitCoin;txb;getAmountInput(){return this.splitCoin.amounts.map(e=>{if(e.kind==="Input")return Number(N.getPureInputValue(e,"U64"))}).filter(e=>e!==void 0)}},_t=zs;var ke=require("@mysten/sui/utils"),rm=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`},ln={id:"0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",incentivePools:"0x64972b713ccec45ec3964809e477cea6f97350c0c50ca3aec85bb631639266ec",incentiveAccounts:"0x3c0b707068bdcea8bb859d751ad3e2149a9f83c13fcf4054ef91372a00bccdd3"},$t={unstakeObligation:(a,e,t)=>a.moveCall(`${ln.id}::user::unstake`,[ln.incentivePools,ln.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(`${ln.id}::user::redeem_rewards`,[ln.incentivePools,ln.incentiveAccounts,a.object(e),a.object(t),ke.SUI_CLOCK_OBJECT_ID],[(0,ke.normalizeStructTag)(n)])};var sm=(a,e)=>{let t=[];for(let n=0;n<a.length;n+=e)t.push(a.slice(n,n+e));return t};var Ua=class extends xe{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(`${Qs.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,`${Qs.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:Rt.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:Rt.TransactionType.Other,type:"MigrateAndClaim",intentionData:{obligationKey:t,obligationId:n,rewardCoinName:o,veScaKey:e}}}decodeOpenObligation(){return{txType:Rt.TransactionType.Other,type:"OpenObligation",intentionData:{}}}decodeSupplyLending(){let e=this.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),t=this.helperMint.getNestedInputParam(2),n=new _t(t,this.transaction).getAmountInput().reduce((o,i)=>o+i,0);return{txType:Rt.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 _t(t,this.transaction).getAmountInput().reduce((o,i)=>o+i,0);return{txType:Rt.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 _t(t,this.transaction).getAmountInput().reduce((o,i)=>o+i,0);return{txType:Rt.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 _t(t,this.transaction).getAmountInput().reduce((i,s)=>i+s,0),o=this.helperDepositCollateral.decodeSharedObjectId(1);return{txType:Rt.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:Rt.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:Rt.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:Rt.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:Rt.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 _t(t,this.transaction).getAmountInput().reduce((i,s)=>i+s,0),o=this.helperRepay.decodeSharedObjectId(1);return{txType:Rt.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 _t(n,this.transaction).getAmountInput().reduce((s,c)=>s+c,0),i=this.helperRepay.decodeSharedObjectId(1);return{txType:Rt.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 _t(i,this.transaction).getAmountInput().reduce((s,c)=>s+c,0)}if(this.helperStake.moveCall&&t===0){let i=this.helperStake.getNestedInputParam(2);t=new _t(i,this.transaction).getAmountInput().reduce((s,c)=>s+c,0)}let n=this.helperStake.typeArg(0),o=this.utils.parseCoinNameFromType(n);return{txType:Rt.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:Rt.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 _t(t,this.transaction).getAmountInput().reduce((i,s)=>i+s,0),o;return this.isCreateStakeAccountTransaction()||(o=this.helperStake.decodeOwnedObjectId(1)),{txType:Rt.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 _t(o,this.transaction).getAmountInput().reduce((i,s)=>i+s,0)}return{txType:Rt.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),c=this.utils.parseCoinNameFromType(s);e.push({stakeMarketCoinName:c,stakeAccountId:i})}),this.helperClaimBorrowV2Reward.forEach(o=>{let i=o.decodeSharedObjectId(4),s=o.decodeOwnedObjectId(3),c=this.utils.parseCoinNameFromType(o.typeArg(0));t.push({obligationId:s,obligationKey:i,rewardCoinName:c})}),this.helperClaimBorrowReward.forEach(o=>{let i=o.decodeSharedObjectId(2),s=o.decodeOwnedObjectId(3),c=this.utils.parseCoinNameFromType(o.typeArg(0));n.push({obligationId:s,obligationKey:i,rewardCoinName:c})}),{txType:Rt.TransactionType.Other,type:"ClaimIncentiveReward",intentionData:{lendingIncentive:e,borrowIncentiveV2:t,borrowIncentive:n}}}};var qa=require("@msafe/sui3-utils");var Fa=class extends xe{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:qa.TransactionType.Other,type:"CreateReferralLink",intentionData:{}}}decodeClaimRevenueReferral(){let e=this.helperClaimRevenueReferral[0].decodeOwnedObjectId(2),t=this.helperClaimRevenueReferral.map(n=>n.typeArg(0));return{txType:qa.TransactionType.Other,type:"ClaimRevenueReferral",intentionData:{veScaKey:e,coins:t}}}decodeBindReferral(){let e=this.helperBindReferral.decodePureArg(1,"Address");return{txType:qa.TransactionType.Other,type:"BindReferral",intentionData:{veScaKey:e}}}};var ne=require("@msafe/sui3-utils"),cm=require("@scallop-io/sui-scallop-sdk");var Ka=class extends xe{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(c=>this.filterMoveCallCommands(c,`${this.coreId.borrowIncentivePkg}::user::unstake_v2`)),t=this.commands.filter(c=>this.filterMoveCallCommands(c,`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`)),n=this.commands.filter(c=>this.filterMoveCallCommands(c,`${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(p=>p.$kind==="TransferObjects");if(e.length!==1)return!1;let{objects:t}=e[0].TransferObjects,n=t.filter(p=>p.$kind==="Input").map(({Input:p})=>p);if(n.length!==t.length)return!1;let o=new Set(n),i=this.inputs.filter((p,b)=>p.$kind==="Object"&&o.has(b)).map(p=>p.Object.ImmOrOwnedObject),s=`${this.coreId.veScaObjId}::ve_sca::VeScaKey`,c=sm(i.map(({objectId:p})=>p),50);for(let p=0;p<c.length;p++){let b=c[p];if((await this.scallopClient.scallopSuiKit.queryGetObjects(b,{showType:!0})).some(I=>I.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 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,`${cm.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=[],i=0,s=0,c=0;return this.commands.forEach(p=>{this.filterMoveCallCommands(p,e)?(o.push({action:"unstake",helper:new N(p,this.transaction,i)}),i++):this.filterMoveCallCommands(p,t)?(o.push({action:"stake",helper:new N(p,this.transaction,s)}),s++):this.filterMoveCallCommands(p,n)&&(o.push({action:"deactivate",helper:new N(p,this.transaction,c)}),c++)}),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 _t(e,this.transaction).getAmountInput().reduce((k,M)=>k+M,0),o=this.helperRenewExpired.decodeOwnedObjectId(1),i=!!this.helperRedeemSca.moveCall,s=[],c=[],p=[];this.helperOldUnstakeObligation.moveCall&&(s=[this.helperOldUnstakeObligation.decodeOwnedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(c=[this.helperUnstakeObligation.decodeOwnedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeObligationWithVeSca.moveCall&&(p=[this.helperStakeObligationWithVeSca.decodeOwnedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let b=!1,S=!1,I,x,D=[{condition:s,isOld:!0},{condition:c,isOld:!1},{condition:p,isOld:!1}];for(let k=0;k<D.length;k++)D[k].condition.length>1&&([x,I]=D[k].condition,b=!0,S=D[k].isOld);return{txType:ne.TransactionType.Other,type:"RenewExpStakePeriod",intentionData:{amount:n,unlockTime:t,obligationId:I,obligationKey:x,veScaKey:o,isHaveRedeem:i,isObligationLocked:b,isOldBorrowIncentive:S}}}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,c=!1,p,b,S=[{condition:n,isOld:!0},{condition:o,isOld:!1},{condition:i,isOld:!1}];for(let I=0;I<S.length;I++)S[I].condition.length>1&&([b,p]=S[I].condition,s=!0,c=S[I].isOld);return{txType:ne.TransactionType.Other,type:"ExtendStakePeriod",intentionData:{unlockTime:e,obligationId:p,obligationKey:b,veScaKey:t,isObligationLocked:s,isOldBorrowIncentive:c}}}decodePeriodAndStakeMoreSca(){let e=this.helperStakeMoreSca.getNestedInputParam(4),t=this.helperExtendStakePeriod.decodeInputU64(4),n=new _t(e,this.transaction).getAmountInput().reduce((D,k)=>D+k,0),o=[],i=[],s,c=[];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&&(c=[this.helperStakeObligationWithVeSca.decodeOwnedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let p=!1,b=!1,S,I,x=[{condition:o,isOld:!0},{condition:i,isOld:!1},{condition:c,isOld:!1}];for(let D=0;D<x.length;D++)x[D].condition.length>1&&([I,S]=x[D].condition,p=!0,b=x[D].isOld);return{txType:ne.TransactionType.Other,type:"ExtendPeriodAndStakeMore",intentionData:{amount:n,veScaKey:s,unlockTime:t,obligationId:S,obligationKey:I,isOldBorrowIncentive:b,isObligationLocked:p}}}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 _t(e,this.transaction).getAmountInput().reduce((D,k)=>D+k,0),o=[],i=[],s,c=[];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&&(c=[this.helperStakeObligationWithVeSca.decodeOwnedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let p=!1,b=!1,S,I,x=[{condition:o,isOld:!0},{condition:i,isOld:!1},{condition:c,isOld:!1}];for(let D=0;D<x.length;D++)x[D].condition.length>1&&([I,S]=x[D].condition,p=!0,b=x[D].isOld);return{txType:ne.TransactionType.Other,type:"StakeSca",intentionData:{amount:n,unlockTime:t,obligationId:S,obligationKey:I,veScaKey:s,isObligationLocked:p,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,c)=>s.$kind==="Object"&&o.has(c)).map(s=>s.Object.ImmOrOwnedObject);return{xType:ne.TransactionType.Other,type:"TransferVeScaKeys",intentionData:{veScaKeys:i}}}};var lm=At(require("sort-keys-recursive"),1),A=class{constructor(e){this.data=e}data;get application(){return"msafe-core"}serialize(){return JSON.stringify((0,lm.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 Va=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async borrow({account:t,scallopClient:n}){let{coinName:o,amount:i,obligationId:s,obligationKey:c}=this.data,p=t.address;return(await this.buildTxWithRefreshObligation(n,{walletAddress:p,obligationId:s,obligationKey:c},async(S,I)=>{let x=await I.borrowQuick(+i,o,s,c);I.transferObjects([x],p)})).txBlock}async build(t){return this.borrow(t)}static fromData(t){return new a(t)}};var $a=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async borrowWithBoost(t,n){let{obligationId:o,obligationKey:i,veScaKey:s,amount:c,coinName:p}=this.data;return(await this.buildTxWithRefreshObligation(t,{walletAddress:n,obligationId:o,obligationKey:i,veScaKey:s},async(S,I)=>{let x=await I.borrowQuick(+c,p,o,i);I.transferObjects([x],n)})).txBlock}async build(t){return this.borrowWithBoost(t.scallopClient,t.account.address)}static fromData(t){return new a(t)}};var Ha=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async borrowWithReferral({account:t,scallopClient:n}){let o=t.address,{obligationId:i,obligationKey:s,veScaKey:c,coinName:p,amount:b}=this.data;return(await this.buildTxWithRefreshObligation(n,{walletAddress:o,obligationId:i,obligationKey:s,veScaKey:c},async(I,x)=>{let D=x.claimReferralTicket(p),k=await x.borrowWithReferralQuick(+b,p,D,i,s);x.burnReferralTicket(D,p),x.transferObjects([k],o)})).txBlock}async build(t){return this.borrowWithReferral(t)}static fromData(t){return new a(t)}};var um=require("@mysten/sui/utils");var Ga=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),c=Object.values(await e.query.getObligationAccounts(t)??[]),p=(()=>{let x=[...e.constants.whitelist.spool].map(D=>e.utils.parseCoinName(D));return Object.values(i??[]).filter(D=>!!D&&x.includes(D.coinName)).reduce((D,k)=>{let M=e.utils.parseMarketCoinName(k.coinName);return D[M]||(D[M]=0),D[M]+=k.availableClaimCoin,D},{})})(),b={};Object.entries(o).forEach(([x,D])=>{for(let k=0;k<D.length;k++){let M=D[k];if(!p[x])continue;let L=n.claim(M.id,x);b.sui?b.sui.push(L):b.sui=[L]}});let S=(()=>{let x={};return x.sui=Object.values(p).reduce((D,k)=>D+k,0),c.forEach(D=>{Object.values(D.borrowIncentives).forEach(k=>{k&&k.rewards.forEach(M=>{x[M.coinName]||(x[M.coinName]=0),x[M.coinName]?x[M.coinName]+=M.availableClaimCoin:x[M.coinName]=M.availableClaimCoin})})}),x})();if(s.length>0&&c.length>0)for(let x=0;x<c.length;x++){let D=c[x],k=!1,M=s.find(U=>U.id===D.obligationId)?.keyId,L={};if(M){if(Object.values(D.borrowIncentives).forEach(U=>{if(U){let q=U.rewards.filter(Ot=>{let W=Ot.coinName;return Ot.availableClaimCoin>0&&!L[W]});k=q.length>0,q.forEach(Ot=>{let W=n.claimBorrowIncentive(D.obligationId,M,Ot.coinName);L[Ot.coinName]=!0,b[Ot.coinName]?b[Ot.coinName].push(W):b[Ot.coinName]=[W]})}}),S.sui>0){let U=$t.redeem_rewards(n,M,D.obligationId,um.SUI_TYPE_ARG);b.sui?b.sui.push(U):b.sui=[U]}if(k&&await rm(e.query,D.obligationId)){n.unstakeObligation(D.obligationId,M);let q=await e.query.getBindedVeScaKey(D.obligationId);q?n.stakeObligationWithVesca(D.obligationId,M,q):n.stakeObligation(D.obligationId,M)}}}let I=(await Promise.all(Object.entries(b).map(async([x,D])=>{let k=D[0];if(D.length>1&&n.mergeCoins(k,D.slice(1)),x==="sui"){n.mergeCoins(n.gas,[k]);return}return await e.builder.utils.mergeSimilarCoins(n,k,e.utils.parseCoinType(x),t),k}))).filter(x=>!!x);return I.length>0&&n.transferObjects(I,t),n.txBlock}async build(e){return this.claimIncentiveRewards(e.scallopClient,e.account.address)}static fromData(e={}){return new a(e)}};var Xa=class a extends A{constructor(t){super(t);this.data=t}data;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 za=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async migrateAndClaim({account:t,scallopClient:n}){let o=t.address,{obligationKey:i,obligationId:s,rewardCoinName:c,veScaKey:p}=this.data,b=n.builder.createTxBlock();b.setSender(o);let S=$t.redeem_rewards(b,i,s,n.utils.parseCoinType(c));return b.transferObjects([S],o),await b.unstakeObligationQuick(s,i),p?await b.stakeObligationWithVeScaQuick(s,i,p):await b.stakeObligationQuick(s,i),b.txBlock}async build(t){return this.migrateAndClaim(t)}static fromData(t){return new a(t)}};var Qa=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return t.scallopClient.migrateAllMarketCoin(!1,!1)}static fromData(t){return new a(t)}};var Ja=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return t.scallopClient.openObligation(!1)}static fromData(t){return new a(t)}};var Ya=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async repay({account:t,scallopClient:n}){let o=t.address,{coinName:i,amount:s,obligationId:c,obligationKey:p}=this.data;return(await this.buildTxWithRefreshObligation(n,{walletAddress:o,obligationId:c,obligationKey:p},async(S,I)=>{await I.repayQuick(+s,i,c)})).txBlock}async build(t){return this.repay(t)}static fromData(t){return new a(t)}};var Za=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async repayWithBoost({account:t,scallopClient:n}){let o=t.address,{coinName:i,amount:s,obligationId:c,veScaKey:p}=this.data,b=n.builder.createTxBlock();b.setSender(o);let S=n.constants.whitelist.borrowing.has(i);return S&&await b.unstakeObligationQuick(c,void 0),await b.repayQuick(+s,i,c),S&&await b.stakeObligationWithVeScaQuick(c,void 0,p),b.txBlock}async build(t){return this.repayWithBoost(t)}static fromData(t){return new a(t)}};var ti=class a extends A{constructor(t){super(t);this.data=t}data;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 ei=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return t.scallopClient.unstake(this.data.marketCoinName,+this.data.amount,!1)}static fromData(t){return new a(t)}};var ni=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async unstakeAndWithdraw(t,n,o){let i=t.builder.createTxBlock();i.setSender(o);let{stakeAccountId:s,amount:c,coinName:p}=this.data,b=[];for(let S=0;S<s.length;S++){let{id:I,coin:x}=s[S],D=t.utils.parseMarketCoinName(p),[k]=await i.unstakeQuick(x,D,I);if(k){let M=i.withdraw(k,p);b.push(M)}}if(c>0){let S=await i.withdrawQuick(c,p);b.push(S)}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 oi=class a extends A{constructor(t){super(t);this.data=t}data;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 ai=class a extends A{constructor(t){super(t);this.data=t}data;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 ii=class a extends A{constructor(t){super(t);this.data=t}data;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 ri=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async claimRevenueReferral({account:t,scallopClient:n}){let{veScaKey:o,coins:i}=this.data,s=t.address,c=n.builder.createTxBlock();c.setSender(s);let p=i.map(b=>n.utils.parseCoinNameFromType(b));return await c.claimReferralRevenueQuick(o,p),c.txBlock}async build(t){return this.claimRevenueReferral(t)}static fromData(t){return new a(t)}};var si=class a extends A{constructor(t){super(t);this.data=t}data;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 mm=require("@scallop-io/sui-scallop-sdk");var ci=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async extendPeriodAndStakeMoreSca({account:t,scallopClient:n}){let{amount:o,veScaKey:i,unlockTime:s,obligationId:c,obligationKey:p,isOldBorrowIncentive:b,isObligationLocked:S}=this.data,I=t.address,x=n.builder.createTxBlock();x.setSender(I);let D=await n.utils.selectCoins(o,mm.SCA_COIN_TYPE,I),[k,M]=x.takeAmountFromCoins(D,o);return x.extendLockPeriod(i,s),x.extendLockAmount(i,k),x.transferObjects([M],I),!c||!p||(S&&(b?$t.unstakeObligation(x,c,p):x.unstakeObligation(c,p)),x.stakeObligationWithVesca(c,p,i)),x.txBlock}async build(t){return this.extendPeriodAndStakeMoreSca(t)}static fromData(t){return new a(t)}};var li=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async extendStakeScaLockPeriod({account:t,scallopClient:n}){let o=t.address,{veScaKey:i,unlockTime:s,obligationId:c,obligationKey:p,isObligationLocked:b,isOldBorrowIncentive:S}=this.data,I=n.builder.createTxBlock();return I.setSender(o),I.extendLockPeriod(i,s),c&&p&&(b&&(S?$t.unstakeObligation(I,p,c):I.unstakeObligation(c,p)),I.stakeObligationWithVesca(c,p,i)),I.txBlock}async build(t){return this.extendStakeScaLockPeriod(t)}static fromData(t){return new a(t)}};var ui=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async handleUnsubForKeys(t,n,o){let{targetVeScaKey:i,sourceVeScaKey:s}=this.data,[c,p]=await Promise.all([n.getBindedObligationId(i),n.getBindedObligationId(s)]);c&&await t.unstakeObligationQuick(c),p&&await t.unstakeObligationQuick(p),o(t,i,s),c&&await t.stakeObligationWithVeScaQuick(c,void 0,i),p&&await t.stakeObligationWithVeScaQuick(p,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,c,p)=>{s.mergeVeSca(i.object(c),i.object(p))}),i.txBlock}static fromData(t){return new a(t)}};var mi=class a extends A{constructor(t){super(t);this.data=t}data;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 pm=require("@scallop-io/sui-scallop-sdk");var pi=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async renewExpiredStakeSca({account:t,scallopClient:n}){let o=t.address,{amount:i,unlockTime:s,veScaKey:c,isHaveRedeem:p,obligation:b,obligationKey:S,isObligationLocked:I,isOldBorrowIncentive:x}=this.data,D=n.builder.createTxBlock();if(D.setSender(o),p){let U=D.redeemSca(c);D.transferObjects([U],o)}let k=await n.builder.utils.selectCoins(i,pm.SCA_COIN_TYPE,o),[M,L]=D.takeAmountFromCoins(k,i);return D.transferObjects([L],o),D.renewExpiredVeSca(c,M,s),!b||!S||(I&&(x?$t.unstakeObligation(D,S,b):D.unstakeObligation(b,S)),D.stakeObligationWithVesca(b,S,c)),D.txBlock}async build(t){return this.renewExpiredStakeSca(t)}static fromData(t){return new a(t)}};var di=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async handleUnsubForKeys(t,n,o){let{targetVeScaKey:i,splitAmount:s}=this.data,c=await n.getBindedObligationId(i);c&&await t.unstakeObligationQuick(c),o(t,i,s.toString()),c&&await t.stakeObligationWithVeScaQuick(c,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,c,p)=>{let b=s.splitVeSca(c,p.toString());s.transferObjects([b],o)}),i.txBlock}static fromData(t){return new a(t)}};var dm=require("@scallop-io/sui-scallop-sdk");var fi=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async stakeSca({account:t,scallopClient:n}){let o=t.address,{amount:i,isObligationLocked:s,isOldBorrowIncentive:c,obligationId:p,obligationKey:b,unlockTime:S,veScaKey:I}=this.data,x=n.builder.createTxBlock();x.setSender(o);let D=await n.utils.selectCoins(i,dm.SCA_COIN_TYPE,o),[k,M]=x.takeAmountFromCoins(D,i),L;return I?x.extendLockAmount(I,k):L=x.lockSca(k,S),p&&b&&(s&&(c?$t.unstakeObligation(x,b,p):x.unstakeObligation(p,b)),x.stakeObligationWithVesca(p,b,I||L)),I||x.transferObjects([L,M],o),x.txBlock}async build(t){return this.stakeSca(t)}static fromData(t){return new a(t)}};var hi=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async supplyAndStake({account:t,scallopClient:n}){let o=t.address,{amount:i,coinName:s,stakeAccountId:c}=this.data,p=n.builder.createTxBlock();p.setSender(o);let b=await p.depositQuick(+i,s),S=n.utils.parseMarketCoinName(s);if(n.constants.whitelist.spool.has(S))return p.txBlock;let I=await n.query.getStakeAccounts(S,o),x=c||(I.length>0?I[0].id:void 0);if(x)await p.stakeQuick(b,S,x);else{let D=p.createStakeAccount(S);await p.stakeQuick(b,S,D),p.transferObjects([D],o)}return p.txBlock}async build(t){return this.supplyAndStake(t)}static fromData(t){return new a(t)}};var gi=class a extends A{constructor(t){super(t);this.data=t}data;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(c=>this.handleAction(i,c)),i.txBlock}static fromData(t){return new a(t)}};var yi=class a extends A{constructor(t){super(t);this.data=t}data;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(c=>i.objectRef(c)),i.pure.address(o)),i.txBlock}static fromData(t){return new a(t)}};var bi=class a extends A{constructor(t){super(t);this.data=t}data;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 Ti=class{application="scallop";supportSDK="@mysten/sui";scallopClient;async initScallopClient(e,t){if(!this.scallopClient){let n=new gm.Scallop({addressId:"67c44a103fe1b8c454eb9699",walletAddress:e,suiClients:[t],fullnodeUrls:[t.transport.rpcClient.requestManager.transports[0]?.uri??(0,hm.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 Ua(t,this.scallopClient),s=new Fa(t,this.scallopClient),c=new Ka(t,this.scallopClient),p=i.decode()||s.decode()||await c.decode();if(!p)throw new Error("Unknown transaction type");return{txType:fm.TransactionType.Other,txSubType:p.type,intentionData:p.intentionData}}async build(e){let{suiClient:t,account:n,network:o,txSubType:i,intentionData:s}=e;await this.initScallopClient(n.address,t);let c;switch(i){case"SupplyLending":c=ti.fromData(s);break;case"WithdrawLending":c=ai.fromData(s);break;case"Borrow":c=Va.fromData(s);break;case"Repay":c=Ya.fromData(s);break;case"DepositCollateral":c=Xa.fromData(s);break;case"WithdrawCollateral":c=oi.fromData(s);break;case"OpenObligation":c=Ja.fromData(s);break;case"UnstakeSpool":c=ei.fromData(s);break;case"ClaimIncentiveReward":c=Ga.fromData(s);break;case"BorrowWithBoost":c=$a.fromData(s);break;case"StakeSca":c=fi.fromData(s);break;case"ExtendStakePeriod":c=li.fromData(s);break;case"ExtendPeriodAndStakeMore":c=ci.fromData(s);break;case"RenewExpStakePeriod":c=pi.fromData(s);break;case"WithdrawStakedSca":c=bi.fromData(s);break;case"SupplyAndStakeLending":c=hi.fromData(s);break;case"WithdrawAndUnstakeLending":c=ni.fromData(s);break;case"RedeemSca":c=mi.fromData(s);break;case"MigrateAndClaim":c=za.fromData(s);break;case"BorrowWithReferral":c=Ha.fromData(s);break;case"CreateReferralLink":c=si.fromData(s);break;case"ClaimRevenueReferral":c=ri.fromData(s);break;case"BindReferral":c=ii.fromData(s);break;case"MigrateScoin":c=Qa.fromData(s);break;case"RepayWithBoost":c=Za.fromData(s);break;case"MergeVeSca":c=ui.fromData(s);break;case"SplitVeSca":c=di.fromData(s);break;case"VeScaObligationBindings":{c=gi.fromData(s);break}case"TransferVeScaKeys":{c=yi.fromData(s);break}default:throw new Error("not implemented")}return c.build({suiClient:t,account:n,network:o,scallopClient:this.scallopClient})}};var Lm=require("@msafe/sui3-utils");var dn=require("@msafe/sui3-utils"),Ae=require("@mysten/sui/utils");var Am=require("@suilend/sui-fe");var vm=require("@msafe/sui3-utils"),ve=require("@suilend/sdk");var We=require("@msafe/sui3-utils"),mn=require("@mysten/bcs"),un=require("@mysten/sui/utils"),_e=require("@suilend/sui-fe"),Ys=At(require("bignumber.js"),1);var Si=class{constructor(e,t){this.transaction=e;this.simResult=t}transaction;simResult;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,un.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(p=>p.type.includes("lending_market::RedeemEvent"))},n=(0,un.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 Ys.default((0,mn.toHex)((0,mn.fromBase64)(this.inputs[i].Pure.bytes)),16).toString(),c=s===_e.MAX_U64.toString();return console.log("decodeWithdraw - isMax:",c,"inputIndex:",i,"inputValue:",s,"MAX_U64.toString():",_e.MAX_U64.toString()),c&&(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(p=>p.type.includes("lending_market::BorrowEvent"))},n=(0,un.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 Ys.default((0,mn.toHex)((0,mn.fromBase64)(this.inputs[i].Pure.bytes)),16).toString(),c=s===_e.MAX_U64.toString();return console.log("decodeBorrow - isMax:",c,"inputIndex:",i,"inputValue:",s,"MAX_U64.toString():",_e.MAX_U64.toString()),c&&(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,un.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],i=(0,un.normalizeStructTag)(o.parsedJson.coin_type.name),s=o.parsedJson.liquidity_amount;t[i]=`${+(t[i]??"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 bm=require("@mysten/sui/transactions");var ym=At(require("sort-keys-recursive"),1),qt=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify((0,ym.default)(this.data))}};var wi=class a extends qt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:c}=t;if(console.log("BorrowIntention.build",n,o,i,s,c),!s||!c)throw new Error("Obligation not found");let p=new bm.Transaction;return await i.borrowAndSendToUser(o.address,s.id,c.id,this.data.coinType,this.data.value,p),p}static fromData(t){return console.log("BorrowIntention.fromData",t),new a(t)}};var Im=require("@mysten/sui/transactions");var Tm=require("@mysten/sui/utils"),pn=require("@suilend/sdk"),Sm=require("@suilend/sui-fe"),wm=At(require("bignumber.js"),1),Vf=(a,e)=>{let t={[pn.Side.DEPOSIT]:[],[pn.Side.BORROW]:[]};return a.lendingMarket.reserves.forEach(n=>{[pn.Side.DEPOSIT,pn.Side.BORROW].forEach(o=>{let i=o===pn.Side.DEPOSIT?n.depositsPoolRewardManager:n.borrowsPoolRewardManager,s=e.userRewardManagers.find(c=>c.poolRewardManagerId===i.id);s&&(t[o]=i.poolRewards.map((c,p)=>({reserveArrayIndex:n.arrayIndex,rewardIndex:BigInt(p),rewardCoinType:(0,Tm.normalizeStructTag)(c.coinType.name),side:o})).filter(c=>!(0,Sm.isSendPoints)(c.rewardCoinType)&&!!s.rewards[Number(c.rewardIndex)]&&new wm.default(s.rewards[Number(c.rewardIndex)].earnedRewards.value.toString()).gt(0)))})}),Object.values(t).flat()},Ii=Vf;var Ci=class a extends qt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:c}=t;if(console.log("ClaimIntention.build",n,o,i,s,c),!s||!c)throw new Error("Obligation not found");let p=new Im.Transaction;return i.claimRewardsAndSendToUser(o.address,s.id,Ii(i,c),p),p}static fromData(t){return console.log("ClaimIntention.fromData",t),new a(t)}};var Cm=require("@mysten/sui/transactions");var xi=class a extends qt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:c}=t;if(console.log("ClaimAndDepositIntention.build",n,o,i,s,c),!s||!c)throw new Error("Obligation not found");let p=new Cm.Transaction;return i.claimRewardsAndDeposit(o.address,s.id,Ii(i,c),p),p}static fromData(t){return console.log("ClaimAndDepositIntention.fromData",t),new a(t)}};var xm=require("@mysten/sui/transactions");var Di=class a extends qt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:c}=t;console.log("DepositIntention.build",n,o,i,s,c);let p=new xm.Transaction;return await i.depositIntoObligation(o.address,this.data.coinType,this.data.value,p,s?.id),p}static fromData(t){return console.log("DepositIntention.fromData",t),new a(t)}};var Dm=require("@mysten/sui/transactions");var ki=class a extends qt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:c}=t;if(console.log("RepayIntention.build",n,o,i,s,c),!s||!c)throw new Error("Obligation not found");let p=new Dm.Transaction;return await i.repayIntoObligation(o.address,c.id,this.data.coinType,this.data.value,p),p}static fromData(t){return console.log("RepayIntention.fromData",t),new a(t)}};var km=require("@mysten/sui/transactions");var vi=class a extends qt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:c}=t;if(console.log("WithdrawIntention.build",n,o,i,s,c),!s||!c)throw new Error("Obligation not found");let p=new km.Transaction;return await i.withdrawAndSendToUser(o.address,s.id,c.id,this.data.coinType,this.data.value,p),p}static fromData(t){return console.log("WithdrawIntention.fromData",t),new a(t)}};var Ai=async(a,e)=>{let t=await ve.SuilendClient.initialize(ve.LENDING_MARKET_ID,ve.LENDING_MARKET_TYPE,a),n=await ve.SuilendClient.getObligationOwnerCaps(e.address,t.lendingMarket.$typeArgs,a),o=await Promise.all(n.map(i=>ve.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}},Mi=class{application="Suilend";supportSDK="@mysten/sui";utils;async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;this.utils||(this.utils=await Ai(n,o));let i=await n.devInspectTransactionBlock({sender:o.address,transactionBlock:t});console.log("SuilendAppHelper.deserialize - simResult:",i,"utils:",this.utils,"suiClient:",n);let c=new Si(t,i).decode();return{txType:vm.TransactionType.Other,txSubType:c.type,intentionData:c.intentionData}}async build(e){let{network:t,txSubType:n,intentionData:o,suiClient:i,account:s}=e;this.utils||(this.utils=await Ai(i,s));let c;switch(n){case"deposit":c=Di.fromData(o);break;case"withdraw":c=vi.fromData(o);break;case"borrow":c=wi.fromData(o);break;case"repay":c=ki.fromData(o);break;case"claim":c=Ci.fromData(o);break;case"claimAndDeposit":c=xi.fromData(o);break;default:throw new Error("not implemented")}let p=window.localStorage.getItem("obligationId"),b=this.utils.obligations?.find(I=>I.id===p)??this.utils.obligations?.[0],S=this.utils.obligationOwnerCaps?.find(I=>I.obligationId===b?.id);return c.build({network:t,suiClient:i,account:s,suilendClient:this.utils.suilendClient,obligationOwnerCap:S,obligation:b})}};var Zs=async(a,e)=>{let t=await Ai(a,e),n=await fetch(`${Am.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(c=>[c.LIQUID_STAKING_INFO.type,c.LIQUID_STAKING_INFO]));return{...t,LIQUID_STAKING_INFO_MAP:s}};var Oi=class{constructor(e,t){this.transaction=e;this.simResult=t}transaction;simResult;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,Ae.normalizeStructTag)(e.MintEvent.parsedJson.event.typename.name),n=e.MintEvent.parsedJson.event.sui_amount_in;return console.log("Decoder.decodeStake",n),{txType:dn.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,Ae.normalizeStructTag)(e.MintEvent.parsedJson.event.typename.name),n=e.MintEvent.parsedJson.event.sui_amount_in;return console.log("Decoder.decodeStakeAndDeposit",n),{txType:dn.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,Ae.normalizeStructTag)(e.RedeemEvent.parsedJson.event.typename.name),n=(0,Ae.normalizeStructTag)(e.MintEvent.parsedJson.event.typename.name),o=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeConvert",o),{txType:dn.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,Ae.normalizeStructTag)(e.RedeemEvent.parsedJson.event.typename.name),n=(0,Ae.normalizeStructTag)(e.MintEvent.parsedJson.event.typename.name),o=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeConvertAndDeposit",o),{txType:dn.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,Ae.normalizeStructTag)(e.RedeemEvent.parsedJson.event.typename.name),n=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeUnstake",n),{txType:dn.TransactionType.Other,type:"unstake",intentionData:{amount:n,inCoinType:t}}}};var Om=require("@mysten/sui/transactions"),Hn=require("@suilend/springsui-sdk");var Mm=At(require("sort-keys-recursive"),1),Ht=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify((0,Mm.default)(this.data))}};var Pi=class a extends Ht{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:c,obligation:p}=t;console.log("ConvertIntention.build",n,o,i,s,c,p);let b=await Hn.LstClient.initialize(n,Object.values(s).find(x=>x.type===this.data.inCoinType)),S=await Hn.LstClient.initialize(n,Object.values(s).find(x=>x.type===this.data.outCoinType)),I=new Om.Transaction;return(0,Hn.convertLstsAndRebalanceAndSendToUser)(b,S,I,o.address,this.data.amount),I}static fromData(t){return console.log("ConvertIntention.fromData",t),new a(t)}};var Pm=require("@mysten/sui/transactions"),Bi=require("@suilend/sdk"),Gn=require("@suilend/springsui-sdk");var Ri=class a extends Ht{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:c,obligation:p}=t;console.log("ConvertAndDepositIntention.build",n,o,i,s,c,p);let b=await Gn.LstClient.initialize(n,Object.values(s).find(M=>M.type===this.data.inCoinType)),S=await Gn.LstClient.initialize(n,Object.values(s).find(M=>M.type===this.data.outCoinType)),I=new Pm.Transaction,{obligationOwnerCapId:x,didCreate:D}=(0,Bi.createObligationIfNoneExists)(i,I,c),k=(0,Gn.convertLstsAndRebalance)(b,S,I,o.address,this.data.amount);return i.deposit(k,this.data.outCoinType,x,I),D&&(0,Bi.sendObligationToUser)(x,o.address,I),I}static fromData(t){return console.log("ConvertAndDepositIntention.fromData",t),new a(t)}};var Rm=require("@mysten/sui/transactions"),Bm=require("@suilend/springsui-sdk");var Ei=class a extends Ht{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:c,obligation:p}=t;console.log("StakeIntention.build",n,o,i,s,c,p);let b=await Bm.LstClient.initialize(n,Object.values(s).find(I=>I.type===this.data.outCoinType)),S=new Rm.Transaction;return b.mintAmountAndRebalanceAndSendToUser(S,o.address,this.data.amount),S}static fromData(t){return console.log("StakeIntention.fromData",t),new a(t)}};var Em=require("@mysten/sui/transactions"),Wi=require("@suilend/sdk"),Nm=require("@suilend/springsui-sdk");var Ni=class a extends Ht{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:c,obligation:p}=t;console.log("StakeAndDepositIntention.build",n,o,i,s,c,p);let b=await Nm.LstClient.initialize(n,Object.values(s).find(k=>k.type===this.data.outCoinType)),S=new Em.Transaction,{obligationOwnerCapId:I,didCreate:x}=(0,Wi.createObligationIfNoneExists)(i,S,c),D=b.mintAmountAndRebalance(S,o.address,this.data.amount);return i.deposit(D,this.data.outCoinType,I,S),x&&(0,Wi.sendObligationToUser)(I,o.address,S),S}static fromData(t){return console.log("StakeAndDepositIntention.fromData",t),new a(t)}};var Wm=require("@mysten/sui/transactions"),_m=require("@suilend/springsui-sdk");var _i=class a extends Ht{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:c,obligation:p}=t;console.log("UnstakeIntention.build",n,o,i,s,c,p);let b=await _m.LstClient.initialize(n,Object.values(s).find(I=>I.type===this.data.inCoinType)),S=new Wm.Transaction;return b.redeemAmountAndRebalanceAndSendToUser(S,o.address,this.data.amount),S}static fromData(t){return console.log("UnstakeIntention.fromData",t),new a(t)}};var Li=class{application="SpringSui";supportSDK="@mysten/sui";utils;async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;this.utils||(this.utils=await Zs(n,o));let i=await n.devInspectTransactionBlock({sender:o.address,transactionBlock:t});console.log("SpringSuiAppHelper.deserialize",i);let c=new Oi(t,i).decode();return{txType:Lm.TransactionType.Other,txSubType:c.type,intentionData:c.intentionData}}async build(e){let{network:t,txSubType:n,intentionData:o,suiClient:i,account:s}=e;this.utils||(this.utils=await Zs(i,s));let c;switch(n){case"stake":c=Ei.fromData(o);break;case"stakeAndDeposit":c=Ni.fromData(o);break;case"convert":c=Pi.fromData(o);break;case"convertAndDeposit":c=Ri.fromData(o);break;case"unstake":c=_i.fromData(o);break;default:throw new Error("not implemented")}return c.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 qm=require("@msafe/sui3-utils");var tc=require("@msafe/sui3-utils");var ji=class{constructor(e,t){this.transaction=e;this.simResult=t}transaction;simResult;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:tc.TransactionType.Other,type:"mint",intentionData:{amount:t}}}decodeRedeem(e){let{event:{lst_amount_in:t}}=e;return console.log("Decoder.decodeRedeem",t),{txType:tc.TransactionType.Other,type:"redeem",intentionData:{amount:t}}}};var jm=require("@alphafi/stsui-sdk");var Ui=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t,{amount:o}=this.data,i={lstInfo:"0x1adb343ab351458e151bc392fbf1558b3332467f23bda45ae67cd355a57fd5f5",lstCointype:"0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI"},c=await new jm.LST(i).mint(o,n.address);return c.setGasBudget(1e8),c}static fromData(t){return console.log("MintIntention.fromData",t),new a(t)}};var Um=require("@alphafi/stsui-sdk");var qi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t,{amount:o}=this.data,i={lstInfo:"0x1adb343ab351458e151bc392fbf1558b3332467f23bda45ae67cd355a57fd5f5",lstCointype:"0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI"},c=await new Um.LST(i).redeem(o,n.address);return c.setGasBudget(1e8),c}static fromData(t){return console.log("RedeemIntention.fromData",t),new a(t)}};var Fi=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 ji(t,o).decode();return{txType:qm.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=Ui.fromData(e.intentionData);break;case"redeem":n=qi.fromData(e.intentionData);break;default:throw new Error("build not implemented")}return n.build({account:t})}};var mp=require("@msafe/sui3-utils"),pp=require("turbos-clmm-sdk");var Lt=require("@msafe/sui3-utils"),Le=require("@mysten/bcs"),je=require("@mysten/sui/bcs"),Fm=require("turbos-clmm-sdk");var Xt={PackageId:"0x02fe4933f4521250e55a15441096d1d4a38a7311195b0bca126fc0138c1f5a97",Claim:"0x0c822cec42f7ca703696b4232f1c47b348330c23580172a29aab465bc071d894",turbosCoinType:"0x5d1f47ea69bb0de31c313d7acf89b890dbb8991ea8e03c6c355171f84bb1ba4a::turbos::TURBOS"},zt={PackageId:"0xdee9"};var Xf=(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}`)}},Ki=class{constructor(e,t,n){this.txb=e;this.turbosSdk=t;this.config=n}txb;turbosSdk;config;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(`${Xt.PackageId}::claim::join`)}isPrixClaimTransaction(){return!!this.getMoveCallTransaction(`${Xt.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(`${zt.PackageId}::clob_v2::swap_exact_base_for_quote`)}isSwapExactQuoteForBaseTransaction(){return!!this.getMoveCallTransaction(`${zt.PackageId}::clob_v2::swap_exact_quote_for_base`)}async decodeSwap(){let e=this.transactions.find(D=>D.$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=Xf(t,n,this.swap1Layer,this.swap2Layer),i=o.map((D,k)=>{let M=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(k)),L=this.helper.decodeInputU128(this.helper.getInputsIndex(4+k+t)),U=this.turbosSdk.math.sqrtPriceX64ToTickIndex(new Fm.BN(L.toString()));return{pool:M,a2b:D,nextTickIndex:U}}),s=o[0]||t===1?e.MoveCall.typeArguments[0]:e.MoveCall.typeArguments[1],c=t===1?e.MoveCall.typeArguments[4]:o[0]?e.MoveCall.typeArguments[1]:e.MoveCall.typeArguments[0],p=this.helper.decodeInputAddress(this.helper.getInputsIndex(6+2*t)),b=this.helper.decodeInputU64(this.helper.getInputsIndex(7+2*t)),S=this.helper.decodeInputBool(this.helper.getInputsIndex(5+2*t)),I=this.helper.decodeInputU64(this.helper.getInputsIndex(2+t)),x=this.helper.decodeInputU64(this.helper.getInputsIndex(3+t));return{txType:Lt.TransactionType.Other,type:"Swap",intentionData:{routes:i,coinTypeA:s,coinTypeB:c,address:p,amountA:S?I:x,amountB:S?x:I,amountSpecifiedIsInput:S,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)),c=this.helper.decodeInputU32(this.helper.getInputsIndex(6)),p=this.helper.decodeInputBool(this.helper.getInputsIndex(7)),b=this.helper.decodeInputU64(this.helper.getInputsIndex(13));return{txType:Lt.TransactionType.Other,type:"AddLiquidity",intentionData:{pool:e,slippage:30,address:t,amountA:n,amountB:o,tickLower:s?-i:i,tickUpper:p?-c:c,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:Lt.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)),c=this.helper.decodeInputU64(this.helper.getInputsIndex(6));return{txType:Lt.TransactionType.Other,type:"DecreaseLiquidity",intentionData:{pool:t,decreaseLiquidity:o,nft:n,amountA:i,amountB:s,slippage:10,address:e,deadline:c}}}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),c=this.helper.decodeInputU64(6);return{txType:Lt.TransactionType.Other,type:"DecreaseLiquidityWithReturn",intentionData:{pool:t,decreaseLiquidity:o,nft:n,amountA:i,amountB:s,slippage:10,address:e,deadline:c}}}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:Lt.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 c=s.decodeInputU64(s.getInputsIndex(4)),p=s.decodeInputU64(s.getInputsIndex(5));o[c]=p});let i=this.helper.decodeInputU64(7);return{txType:Lt.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:Lt.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)),c=this.decreaseLiquidityHelper.decodeInputU64(this.decreaseLiquidityHelper.getInputsIndex(5)),p=this.decreaseLiquidityHelper.decodeInputU64(this.decreaseLiquidityHelper.getInputsIndex(6)),b=[0,0,0];this.collectRewardHelper.forEach(x=>{let D=x.decodeInputU64(x.getInputsIndex(4)),k=x.decodeInputU64(x.getInputsIndex(5));b[D]=k});let S=this.collectFeeHelper.decodeInputU64(this.collectFeeHelper.getInputsIndex(3))||0,I=this.collectFeeHelper.decodeInputU64(this.collectFeeHelper.getInputsIndex(4))||0;return{txType:Lt.TransactionType.Other,type:"RemoveLiquidity",intentionData:{pool:n,decreaseLiquidity:i,nft:o,amountA:(s/(100-t)*100).toFixed(0),amountB:(c/(100-t)*100).toFixed(0),slippage:t,address:e,collectAmountA:S,collectAmountB:I,rewardAmounts:b,deadline:p}}}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),c=this.decreaseLiquidityHelper.decodeInputU64(6),p=this.collectRewardHelper.map(I=>I.decodeInputU64(5)),b=this.collectFeeHelper.decodeInputU64(3)||0,S=this.collectFeeHelper.decodeInputU64(4)||0;return{txType:Lt.TransactionType.Other,type:"removeLiquidityWithReturn",intentionData:{pool:t,decreaseLiquidity:o,nft:n,amountA:i,amountB:s,slippage:10,address:e,collectAmountA:b,collectAmountB:S,rewardAmounts:p,deadline:c}}}decodePrixClaim(){return{txType:Lt.TransactionType.Other,type:"PrixClaim",intentionData:{}}}decodePrixJoin(){return{txType:Lt.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:Lt.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:Lt.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 Me(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 Me(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 Me(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 Me(e,this.txb)}get swapExactBaseForQuoteHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${zt.PackageId}::clob_v2::swap_exact_base_for_quote`:!1);return new Me(e,this.txb)}get swapExactQuoteForBaseHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${zt.PackageId}::clob_v2::swap_exact_quote_for_base`:!1);return new Me(e,this.txb)}},Me=class{constructor(e,t){this.moveCall=e;this.txb=t}moveCall;txb;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 Km=require("turbos-clmm-sdk");var Vi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Km.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:p,tickLower:b,tickUpper:S,deadline:I,txb:x}=this.data;return n.pool.addLiquidity({pool:o,slippage:p,address:i,amountA:s,amountB:c,tickLower:b,tickUpper:S,deadline:I,txb:x})}static fromData(t){return new a(t)}};var Vm=require("turbos-clmm-sdk");var $i=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Vm.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 $m=require("turbos-clmm-sdk");var Hi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new $m.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,nft:s,collectAmountA:c,collectAmountB:p,deadline:b,txb:S}=this.data;return n.pool.collectFee({pool:o,address:i,collectAmountA:c,collectAmountB:p,nft:s,deadline:b,txb:S})}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}data;txType;txSubType;async build(t){let n=new Hm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,nft:s,rewardAmounts:c,deadline:p,txb:b}=this.data;return n.pool.collectReward({pool:o,address:i,rewardAmounts:c,nft:s,deadline:p,txb:b})}static fromData(t){return new a(t)}};var Gm=require("turbos-clmm-sdk");var Xi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Gm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{fee:o,address:i,tickLower:s,tickUpper:c,sqrtPrice:p,slippage:b,coinTypeA:S,coinTypeB:I,amountA:x,amountB:D,deadline:k,txb:M}=this.data;return n.pool.createPool({fee:o,amountA:x,amountB:D,address:i,tickLower:s,tickUpper:c,sqrtPrice:p,slippage:b,coinTypeA:S,coinTypeB:I,deadline:k,txb:M})}static fromData(t){return new a(t)}};var Xm=require("turbos-clmm-sdk");var zi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Xm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:p,nft:b,decreaseLiquidity:S,deadline:I,txb:x}=this.data;return n.pool.decreaseLiquidity({pool:o,slippage:p,address:i,amountA:s,amountB:c,nft:b,decreaseLiquidity:S,deadline:I,txb:x})}static fromData(t){return new a(t)}};var zm=require("turbos-clmm-sdk");var Qi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new zm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:p,nft:b,decreaseLiquidity:S,deadline:I}=this.data,{txb:x,coinA:D,coinB:k}=await n.pool.decreaseLiquidityWithReturn({pool:o,slippage:p,address:i,amountA:s,amountB:c,nft:b,decreaseLiquidity:S,deadline:I});return x.transferObjects([D,k],this.data.address),x}static fromData(t){return new a(t)}};var Qm=require("turbos-clmm-sdk");var Ji=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Qm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:p,nft:b,deadline:S,txb:I}=this.data;return n.pool.increaseLiquidity({pool:o,slippage:p,address:i,amountA:s,amountB:c,nft:b,deadline:S,txb:I})}static fromData(t){return new a(t)}};var Jm=require("@mysten/sui/transactions"),Ym=require("@mysten/sui/utils");var Yi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Jm.Transaction;return n.moveCall({target:`${Xt.PackageId}::claim::claim`,typeArguments:[Xt.turbosCoinType],arguments:[n.object(Xt.Claim),n.object(Ym.SUI_CLOCK_OBJECT_ID)]}),n}static fromData(t){return new a(t)}};var Zm=require("@mysten/sui/transactions");var Zi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Zm.Transaction;return n.moveCall({target:`${Xt.PackageId}::claim::join`,typeArguments:[Xt.turbosCoinType],arguments:[n.object(Xt.Claim)]}),n}static fromData(t){return new a(t)}};var tp=require("@mysten/sui/transactions"),ep=require("turbos-clmm-sdk");var tr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new ep.TurbosSdk(t.network.replace("sui:",""),t.suiClient),o=new tp.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 np=require("turbos-clmm-sdk");var er=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new np.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 op=require("turbos-clmm-sdk");var nr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(this.data,"this.data");let n=new op.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{routes:o,coinTypeA:i,coinTypeB:s,address:c,amountA:p,amountB:b,slippage:S,amountSpecifiedIsInput:I,deadline:x,txb:D}=this.data;return n.trade.swap({routes:o,coinTypeA:i,coinTypeB:s,address:c,amountA:p,amountB:b,amountSpecifiedIsInput:I,slippage:S,deadline:x,txb:D})}static fromData(t){return new a(t)}};var lp=require("turbos-clmm-sdk");var ec=require("@mysten/sui/transactions"),nc=require("@mysten/sui/utils");var ap=require("turbos-clmm-sdk");var Xn=class{constructor(e){this.turbosSdk=e}turbosSdk;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=[],c=0;return o.sort((p,b)=>Number(b.balance)-Number(p.balance)).some(p=>c>=n?!0:(c+=Number(p.balance),s.push(p),!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:`${zt.PackageId}::custodian_v2::AccountCap`}});return t.data[0]?.data?(0,ap.unstable_getObjectId)(t.data[0].data):void 0}createAccount(e){let[t]=e.moveCall({typeArguments:[],target:`${zt.PackageId}::clob_v2::create_account`,arguments:[]});return t}zero(e,t){return t.moveCall({typeArguments:[e],target:"0x2::coin::zero",arguments:[]})}};var ip=89,rp=1e6,sp=async a=>{let{token1:e,token2:t,poolId:n,amountIn:o,currentAddress:i,turbosSdk:s}=a,c=new ec.Transaction,p=new Xn(s),b=await p.getCoinsData(i,t,o),[S,I]=p.splitAndMergeCoin(b,o,c);if(!S)throw new Error(`Not enough balance: ${t}`);let x=await p.IsAccountCap(i),D=x?c.object(x):p.createAccount(c),[k,M,L]=c.moveCall({typeArguments:[e,t],target:`${zt.PackageId}::clob_v2::swap_exact_quote_for_base`,arguments:[c.object(String(n)),c.pure.u64(ip),D,c.pure.u64(o),c.object((0,nc.normalizeSuiObjectId)("0x6")),S]});return I&&c.transferObjects([I],c.pure.address(i)),c.transferObjects([k],c.pure.address(i)),c.transferObjects([M],c.pure.address(i)),x||c.transferObjects([D],c.pure.address(i)),c.setSenderIfNotSet(i),c.setGasBudget(rp),c},cp=async a=>{let{token1:e,token2:t,poolId:n,amountIn:o,currentAddress:i,turbosSdk:s}=a,c=new ec.Transaction,p=new Xn(s),b=await p.getCoinsData(i,e,o),[S,I]=p.splitAndMergeCoin(b,o,c);if(!S)throw new Error(`Not enough balance: ${e}`);let x=await p.IsAccountCap(i),D=x?c.object(x):p.createAccount(c),k=p.zero(t,c),[M,L,U]=c.moveCall({typeArguments:[e,t],target:`${zt.PackageId}::clob_v2::swap_exact_base_for_quote`,arguments:[c.object(String(n)),c.pure.u64(ip),D,c.pure.u64(o),S,k,c.object((0,nc.normalizeSuiObjectId)("0x6"))]});return I&&c.transferObjects([I],c.pure.address(i)),c.transferObjects([M],c.pure.address(i)),c.transferObjects([L],c.pure.address(i)),x||c.transferObjects([D],c.pure.address(i)),c.setSenderIfNotSet(i),c.setGasBudget(rp),c};var or=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new lp.TurbosSdk(t.network.replace("sui:",""),t.suiClient);return await cp({...this.data,turbosSdk:n,currentAddress:t.account.address})}static fromData(t){return new a(t)}};var up=require("turbos-clmm-sdk");var ar=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new up.TurbosSdk(t.network.replace("sui:",""),t.suiClient);return await sp({...this.data,turbosSdk:n,currentAddress:t.account.address})}static fromData(t){return new a(t)}};var ir=class{application="turbos";supportSDK="@mysten/sui";async deserialize(e){console.log(e,"input");let t=new pp.TurbosSdk(e.network.replace("sui:","")),n=await t.contract.getConfig(),{transaction:o,account:i}=e,c=await new Ki(o,t,n).decode(i.address);return{txType:mp.TransactionType.Other,txSubType:c.type,intentionData:c.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=Xi.fromData(e.intentionData);break;case"AddLiquidity":i=Vi.fromData(e.intentionData);break;case"IncreaseLiquidity":i=Ji.fromData(e.intentionData);break;case"DecreaseLiquidity":i=zi.fromData(e.intentionData);break;case"DecreaseLiquidityWithReturn":i=Qi.fromData(e.intentionData);break;case"RemoveLiquidity":i=tr.fromData(e.intentionData);break;case"removeLiquidityWithReturn":i=er.fromData(e.intentionData);break;case"CollectFee":i=Hi.fromData(e.intentionData);break;case"CollectReward":i=Gi.fromData(e.intentionData);break;case"Burn":i=$i.fromData(e.intentionData);break;case"Swap":i=nr.fromData(e.intentionData);break;case"PrixJoin":i=Zi.fromData(e.intentionData);break;case"PrixClaim":i=Yi.fromData(e.intentionData);break;case"SwapExactBaseForQuote":i=or.fromData(e.intentionData);break;case"SwapExactQuoteForBase":i=ar.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};var gp=require("@msafe/sui3-utils");var rr=require("@msafe/sui3-utils"),oc=require("@mysten/sui.js/bcs"),Oe=require("@mysten/sui.js/utils");var zf={packageId:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",poolObjectId:"0x7fa2faa111b8c65bea48a23049bfd81ca8f971a262d981dcd9a17c3825cb5baf",metadataObjectId:"0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",systemStateObjectId:"0x0000000000000000000000000000000000000000000000000000000000000005",certType:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",gasBudget:5e7},Mt=zf;var sr=class{constructor(e){this.txb=e}txb;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(`${Mt.packageId}::native_pool::stake`)}isUnStakeTransaction(){return!!this.getMoveCallTransaction(`${Mt.packageId}::native_pool::unstake`)}isClaimTicketTransaction(){return!!this.getMoveCallTransaction(`${Mt.packageId}::native_pool::burn_ticket`)}decodeStake(){let e=this.transactions[0].amounts[0].value.toNumber();return{txType:rr.TransactionType.Other,type:"Stake",intentionData:{amount:e}}}decodeUnStake(){let t=this.transactions.find(n=>n.kind==="SplitCoins").amounts[0].value.toNumber();return{txType:rr.TransactionType.Other,type:"UnStake",intentionData:{amount:t}}}decodeClaimTicket(){let e=this.helper.decodeOwnedObjectId(2);return console.log(e),{txType:rr.TransactionType.Other,type:"ClaimTicket",intentionData:{ticketId:e}}}get helper(){let e=this.transactions.find(t=>t.kind==="MoveCall"&&t.target.startsWith(Mt.packageId));return new ac(e,this.txb)}},ac=class a{constructor(e,t){this.moveCall=e;this.txb=t}moveCall;txb;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,Oe.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 oc.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,Oe.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Oe.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,Oe.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Oe.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 oc.bcs.de(t,new Uint8Array(n))}typeArg(e){return(0,Oe.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};var dp=require("@mysten/sui.js/transactions");var cr=class a extends Yt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(t);let n=new dp.TransactionBlock,{ticketId:o}=this.data;return n.moveCall({target:`${Mt.packageId}::native_pool::burn_ticket`,arguments:[n.object(Mt.poolObjectId),n.object(Mt.systemStateObjectId),n.object(o)]}),n}static fromData(t){return new a(t)}};var fp=require("@mysten/sui.js/transactions");var lr=class a extends Yt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(t);let n=new fp.TransactionBlock,{amount:o}=this.data,[i]=n.splitCoins(n.gas,[n.pure(o)]);return n.moveCall({target:`${Mt.packageId}::native_pool::stake`,arguments:[n.object(Mt.poolObjectId),n.object(Mt.metadataObjectId),n.object(Mt.systemStateObjectId),i]}),n}static fromData(t){return new a(t)}};var hp=require("@mysten/sui.js/transactions");var ur=class a extends Yt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(t);let n=new hp.TransactionBlock,{amount:o}=this.data,i=(await t.suiClient.getAllCoins({owner:t.account.address,limit:100})).data,[s,...c]=i.filter(S=>S.coinType.split("::")[0]===Mt.certType.split("::")[0]),p=n.object(s.coinObjectId);c.length&&n.mergeCoins(p,c.map(S=>n.object(S.coinObjectId)));let b=n.splitCoins(n.object(s.coinObjectId),[n.pure(o)]);return n.moveCall({target:`${Mt.packageId}::native_pool::unstake`,arguments:[n.object(Mt.poolObjectId),n.object(Mt.metadataObjectId),n.object(Mt.systemStateObjectId),b]}),n}static fromData(t){return new a(t)}};var mr=class{application="volo";supportSDK="@mysten/sui.js";async deserialize(e){let{transactionBlock:t}=e,o=new sr(t).decode();return{txType:gp.TransactionType.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n}=e,o;switch(e.txSubType){case"Stake":o=lr.fromData(e.intentionData);break;case"UnStake":o=ur.fromData(e.intentionData);break;case"ClaimTicket":o=cr.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};var Mp=require("@msafe/sui3-utils");var ic=require("@cetusprotocol/common-sdk"),le=require("@msafe/sui3-utils"),fn=require("@mysten/bcs"),hn=require("@mysten/sui/bcs");var pr=class{constructor(e,t){this.transaction=e;this.appContext=t}transaction;appContext;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:le.TransactionType.Other,type:"OpenPosition",intentionData:{pool:this.getSharedObjectID(this.getInputIndex(e,1)),lowerTick:Number((0,ic.asIntN)(BigInt(this.getU32(this.getInputIndex(e,2)))).toString()),upperTick:Number((0,ic.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:le.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:le.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:le.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:le.TransactionType.Other,type:"CollectRewards",intentionData:{pool:e[0].pool,position:e[0].position,collectRewardTokens:e.map(t=>t.rewardCoinType)}}}decodeCollectFeeTx(){return{txType:le.TransactionType.Other,type:"CollectFee",intentionData:this.getFeeCallData()}}decodeCollectRewardsAndFeeTx(){let e=this.getFeeCallData();return{txType:le.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:le.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(hn.bcs.u32().parse(Uint8Array.from((0,fn.fromBase64)(this.inputs[e].Pure.bytes))))}getU64(e){return hn.bcs.u64().parse(Uint8Array.from((0,fn.fromBase64)(this.inputs[e].Pure.bytes)))}getU128(e){return hn.bcs.u128().parse(Uint8Array.from((0,fn.fromBase64)(this.inputs[e].Pure.bytes)))}getBoolean(e){return hn.bcs.bool().parse(Uint8Array.from((0,fn.fromBase64)(this.inputs[e].Pure.bytes)))}getAddress(e){return hn.bcs.Address.parse(Uint8Array.from((0,fn.fromBase64)(this.inputs[e].Pure.bytes)))}getTypeArguments(e){return e.MoveCall.typeArguments||[]}getInputIndex(e,t){return e.MoveCall.arguments[t].Input}};var wp=require("@msafe/sui3-utils");var dr=require("@bluefin-exchange/bluefin7k-aggregator-sdk"),oe=require("@firefly-exchange/library-sui"),Sp=require("turbos-clmm-sdk");var bp=require("@firefly-exchange/library-sui"),Tp=require("@firefly-exchange/library-sui/spot"),yp={rpc:"https://fullnode.mainnet.sui.io/",objects:{GlobalConfig:"0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",BasePackage:"0x3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267",CurrentPackage:"0x67b34b728c4e28e704dcfecf7c5cf55c7fc593b6c65c20d1836d97c209c1928a"}},me=(a,e)=>{if(a!=="sui:mainnet")throw new Error("Bluefin spot protocol is only available on sui::mainnet");let t=new bp.SuiClient({url:yp.rpc});return new Tp.OnChainCalls(t,yp.objects,{address:e.address,isUIWallet:!1})};var Bt=class{static async OpenPosition(e,t,n){let o=me(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=me(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=me(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=me(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=me(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=me(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=me(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=me(n,t),i=await(0,dr.getQuote)({tokenIn:e.tokenIn.address,tokenOut:e.tokenOut.address,amountIn:new Sp.Decimal(e.amountIn).mul(10**e.tokenIn.decimals).toString()}),s=await(0,dr.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 fr=class a extends w{constructor(t){super(t);this.data=t}data;txType=wp.TransactionType.Other;txSubType="Aggregator7KSwap";async build(t){let{account:n,network:o}=t;return console.log(this.data),Bt.aggregator7KSwap(this.data,n,o)}static fromData(t){return new a(t)}};var Ip=require("@msafe/sui3-utils");var hr=class a extends w{constructor(t){super(t);this.data=t}data;txType=Ip.TransactionType.Other;txSubType="ClosePosition";async build(t){let{account:n,network:o}=t;return console.log(this.data),Bt.closePosition(this.data,n,o)}static fromData(t){return new a(t)}};var Cp=require("@msafe/sui3-utils");var gr=class a extends w{constructor(t){super(t);this.data=t}data;txType=Cp.TransactionType.Other;txSubType="CollectFee";async build(t){let{account:n,network:o}=t;return console.log(this.data),Bt.collectFee(this.data,n,o)}static fromData(t){return new a(t)}};var xp=require("@msafe/sui3-utils");var yr=class a extends w{constructor(t){super(t);this.data=t}data;txType=xp.TransactionType.Other;txSubType="CollectRewards";async build(t){let{account:n,network:o}=t;return console.log(this.data),Bt.collectRewards(this.data,n,o)}static fromData(t){return new a(t)}};var Dp=require("@msafe/sui3-utils");var br=class a extends w{constructor(t){super(t);this.data=t}data;txType=Dp.TransactionType.Other;txSubType="CollectRewardsAndFee";async build(t){let{account:n,network:o}=t;return console.log(this.data),Bt.collectRewardsAndFee(this.data,n,o)}static fromData(t){return new a(t)}};var kp=require("@msafe/sui3-utils");var Tr=class a extends w{constructor(t){super(t);this.data=t}data;txType=kp.TransactionType.Other;txSubType="OpenPosition";async build(t){let{account:n,network:o}=t;return console.log(this.data),Bt.OpenPosition(this.data,n,o)}static fromData(t){return new a(t)}};var vp=require("@msafe/sui3-utils");var Sr=class a extends w{constructor(t){super(t);this.data=t}data;txType=vp.TransactionType.Other;txSubType="ProvideLiquidity";async build(t){let{account:n,network:o}=t;return console.log(this.data),Bt.provideLiquidity(this.data,n,o)}static fromData(t){return new a(t)}};var Ap=require("@msafe/sui3-utils");var wr=class a extends w{constructor(t){super(t);this.data=t}data;txType=Ap.TransactionType.Other;txSubType="RemoveLiquidity";async build(t){let{account:n,network:o}=t;return console.log(this.data),Bt.removeLiquidity(this.data,n,o)}static fromData(t){return new a(t)}};var Ir=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 pr(t,n).decode();return{txType:Mp.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=Tr.fromData(e.intentionData);break;case"ProvideLiquidity":i=Sr.fromData(e.intentionData);break;case"RemoveLiquidity":i=wr.fromData(e.intentionData);break;case"ClosePosition":i=hr.fromData(e.intentionData);break;case"CollectFee":i=gr.fromData(e.intentionData);break;case"CollectRewards":i=yr.fromData(e.intentionData);break;case"CollectRewardsAndFee":i=br.fromData(e.intentionData);break;case"Aggregator7KSwap":i=fr.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};var Od=require("@msafe/sui3-utils");var $p=require("@mmt-finance/clmm-sdk"),Hp=require("@mysten/sui/transactions");var qe=require("@mmt-finance/clmm-sdk/dist/utils/math/tickMath"),Np=At(require("bignumber.js"),1),R=At(Pp(),1);var Jf="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",Wt=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},Zf=(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")},th=(a,e,t,n)=>{if(a===Jf){let[o]=n.splitCoins(n.gas,[n.pure.u64(t)]);return o}else{let o=Zf(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 Rp(a,e,t,n,o){let i=await Yf({suiClient:a.rpcClient,address:e,type:t});return th(Wt(t),i.map(c=>({balance:BigInt(c.balance),objectId:c.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 Bp({sdk:a,address:e,positionId:t,pool:n,txb:o,targetCoinType:i,slippage:s}){let c={objectId:n.poolId,tokenXType:n.tokenXType,tokenYType:n.tokenYType},p=n.rewarders.map(S=>S.coinType);p.length>0&&(console.log("claimRewardsAsTargetCoin input",{pool:c,positionId:t,rewarderCoinTypes:p,targetCoinType:i,slippage:s,toAddress:e}),await a.Pool.claimRewardsAs({txb:o,pool:c,positionId:t,rewarderCoinTypes:p,targetCoinType:i,slippage:s,toAddress:e}));let b=await a.Pool.getAllPools();return await a.Pool.claimFeeAs({txb:o,pool:c,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 eh(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 nh(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 Ep=(a,e,t)=>{let n=(0,qe.convertI32ToSigned)(t?a+a%(e??1):a-a%(e??1));return n>0?new R.default(eh(n)):new R.default(nh(n))};function Wp(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 ae({address:a,coinType:e,coinAmount:t,coinDecimals:n,tx:o,mmt:i}){let s=Wp(t,n),c;return Number(t)?c=await Rp(i,a,Wt(e),s,o):[c]=o.moveCall({target:"0x2::coin::zero",typeArguments:[e],arguments:[]}),c}function _p({mmt:a,tx:e,poolModel:t,selectedLowTick:n,selectedHighTick:o}){let i=Ep((0,qe.convertI32ToSigned)(n),t.tickSpacing),s=Ep((0,qe.convertI32ToSigned)(o),t.tickSpacing);return a.Position.openPosition(e,t,i.toString(),s.toString())}var oh=(a,e)=>{let n=1e4-Math.floor(e*100);return a*BigInt(n)/BigInt(1e4)};function Cr(a,e,t){let n=Wp(a,e);return Number(a)===0?BigInt(0):oh(n,t)}async function Fe({poolId:a,currentSqrtPrice:e,tokenX:t,tokenY:n,slippagePercentage:o,isTokenX:i,suiClient:s}){let p=(await s.getObject({id:a,options:{showContent:!0}}))?.data?.content?.fields?.sqrt_price??e,b=qe.TickMath.sqrtPriceX64ToPrice(new R.default(p?.toString()),t.decimals,n.decimals),S=i?(100-o)/100:(100+o)/100,I=qe.TickMath.priceToSqrtPriceX64(b.mul(S),t.decimals,n.decimals);return BigInt(I.toString())}var Lp=async(a,e,t,n,o,i,s,c,p,b)=>{let S=await ae({mmt:a,address:t,coinType:i.tokenX.coinType,coinAmount:n,coinDecimals:i.tokenX.decimals,tx:e}),I=await ae({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},D=_p({mmt:a,tx:e,poolModel:x,selectedLowTick:c,selectedHighTick:p}),k=Cr(n,i.tokenX.decimals,b),M=Cr(o,i.tokenY.decimals,b);a.Pool.addLiquidity(e,x,D,S,I,k,M,t),e.transferObjects([D],e.pure.address(t))},jp=async(a,e,t,n,o,i,s,c,p,b,S)=>{try{let I=await ae({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:Wt(s.tokenX.coinType),tokenYType:Wt(s.tokenY.coinType),tickSpacing:s.tickSpacing},D=_p({mmt:a,tx:e,poolModel:x,selectedLowTick:c,selectedHighTick:p}),k=await Fe({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:D,inputCoin:I,isXtoY:i,limitSqrtPrice:k,slippagePercentage:S,transferToAddress:n,useMvr:!0}),e.transferObjects([D],e.pure.address(n))}catch(I){console.error(I)}},Up=async(a,e,t,n,o,i,s,c)=>{let p=await ae({mmt:a,address:t,coinType:i.tokenX.coinType,coinAmount:n,coinDecimals:i.tokenX.decimals,tx:e}),b=await ae({mmt:a,address:t,coinType:i.tokenY.coinType,coinAmount:o,coinDecimals:i.tokenY.decimals,tx:e}),S={objectId:i.poolId,tokenXType:i.tokenXType,tokenYType:i.tokenYType,tickSpacing:i.tickSpacing},I=Cr(n,i.tokenX.decimals,c),x=Cr(o,i.tokenY.decimals,c);a.Pool.addLiquidity(e,S,s,p,b,I,x,t)},qp=async(a,e,t,n,o,i,s,c,p)=>{try{let b=await ae({mmt:a,address:t,coinType:o?i.tokenX.coinType:i.tokenY.coinType,coinAmount:n,coinDecimals:o?i.tokenX.decimals:i.tokenY.decimals,tx:e}),S={objectId:i.poolId,tokenXType:i.tokenX.coinType,tokenYType:i.tokenY.coinType,tickSpacing:i.tickSpacing},I=await Fe({suiClient:a.rpcClient,poolId:i.poolId,currentSqrtPrice:i.currentSqrtPrice,tokenX:i.tokenX,tokenY:i.tokenY,slippagePercentage:c,isTokenX:o});await a.Pool.addLiquiditySingleSidedV2({txb:e,pool:S,position:s,inputCoin:b,isXtoY:o,limitSqrtPrice:I,slippagePercentage:p,transferToAddress:t})}catch(b){throw console.error(b),b}},Fp=(a,e)=>BigInt(e===100?a:new Np.default(a).multipliedBy(e/100).toFixed(0)),Kp=async(a,e,t,n,o,i)=>{let s=Fp(t.liquidity,o),c=n.tokenX.coinType,p=n.tokenY.coinType,b={objectId:n?.poolId,tokenXType:c,tokenYType:p};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)},Vp=async({sdk:a,address:e,position:t,pool:n,withdrawPercentage:o,txb:i,targetCoinType:s,slippage:c})=>{let p=Fp(t.liquidity,o),b=Wt(n.tokenX.coinType),S=Wt(n.tokenY.coinType),I=Wt(s)===S,x={objectId:n?.poolId,tokenXType:b,tokenYType:S},{removeLpCoinA:D,removeLpCoinB:k}=a.Pool.removeLiquidity(i,x,t.objectId,p,BigInt(0),BigInt(0)),M=await Fe({suiClient:a.rpcClient,poolId:n.poolId,currentSqrtPrice:n.currentSqrtPrice,tokenX:n.tokenX,tokenY:n.tokenY,isTokenX:I,slippagePercentage:c}),L=I?D:k,U=i.moveCall({target:"0x2::coin::value",arguments:[L],typeArguments:[I?b:S]});i.transferObjects([I?k:D],e),a.Pool.swapV2({txb:i,transferToAddress:e,pool:x,limitSqrtPrice:M,amount:U,inputCoin:L,isXtoY:I}),Ue(a,e,t,n,i),o===100&&a.Position.closePosition(i,t.objectId)};var xr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=$p.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amountA:i,amountB:s,pool:c,selectedLowTick:p,selectedHighTick:b,slippage:S}=n,I=new Hp.Transaction;return await Lp(t,I,o,i,s,c,c.poolId,p,b,S),I}static fromData(t){return new a(t)}};var Gp=require("@mmt-finance/clmm-sdk"),Xp=require("@mysten/sui/transactions");var Dr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=Gp.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amount:i,isTokenX:s,pool:c,selectedLowTick:p,selectedHighTick:b,swapSlippage:S,addLiquiditySlippage:I}=n,x=new Xp.Transaction;return await jp(t,x,t.rpcClient,o,i,s,c,p,b,S,I),x}static fromData(t){return new a(t)}};var ed=require("@mmt-finance/clmm-sdk"),nd=require("@mmt-finance/ve-sdk-v1"),od=require("@mysten/sui/transactions");var gn="0x35169bc93e1fddfcf3a82a9eae726d349689ed59e4b065369af8789fe59f8608::mmt::MMT";var zn=async a=>{let e=await a.getSyncEpochInfo();if(!e)throw new Error("Failed to sync epoch");return e},zp=async(a,e,t,n,o,i,s,c)=>{let p=Number(n);if(!n||Number.isNaN(p)||p<=0)throw new Error(`Bond Failed: Invalid amount: ${n}. Amount must be greater than 0`);if(!i&&!s)throw new Error("Bond Failed: Failed to calculate unbond date");if(typeof s!="number"&&!i)throw new Error("Bond Failed: Invalid unbond date");let b=await ae({mmt:a,tx:c,address:o,coinType:t.coinType,coinAmount:n,coinDecimals:t.decimals});if(!b)throw new Error(`Bond Failed: Failed to get coin object for ${t.coinType}, amount: ${n}`);let S=await zn(e);await e.syncOrAdvanceEpoch(c,S.currentEpoch,S.syncedEpoch);let I=c.getData().commands.length;i?await e.createMaxBond(c,b,o):await e.createBond(c,b,BigInt(s),o);let D=c.getData().commands.length;if(D===0)throw new Error(`Bond Failed: Transaction has no commands. enableAutoMaxBond: ${i}, unbondAt: ${s}, amount: ${n}`);if(D===I)throw new Error(`Bond Failed: No new commands were added by bond operation. Commands before: ${I}, after: ${D}`)},Qp=async(a,e,t,n,o,i,s,c)=>{let p=await zn(a);if(await a.syncOrAdvanceEpoch(c,p.currentEpoch,p.syncedEpoch),await a.claimReward(c,t,e),o)i||await a.setNormal(c,t);else if(i)await a.setMaxBond(c,t);else{if(typeof s!="number")throw new Error("Extend Failed: Failed to calculate unbond date");if(s<n)throw new Error("Extend Failed: New duration cannot be less than current duration");await a.extend(c,t,s)}},Jp=async(a,e,t,n,o)=>{let i=await zn(a);await a.syncOrAdvanceEpoch(o,i.currentEpoch,i.syncedEpoch),await a.claimReward(o,t,e),await n.reduce(async(s,c)=>{await s,await a.claimReward(o,c,e),await a.merge(o,t,c)},Promise.resolve())},Yp=async(a,e,t,n)=>{let o=await zn(a);await a.syncOrAdvanceEpoch(n,o.currentEpoch,o.syncedEpoch),await a.claimReward(n,t,e),await a.unbond(n,t,e)},Zp=async(a,e,t,n)=>{if(t.length>0&&t.some(o=>o.userRewardAmount>0)){let o=await zn(a);await a.syncOrAdvanceEpoch(n,o.currentEpoch,o.syncedEpoch),await t.reduce(async(i,s)=>{await i,s.userRewardAmount>0&&await a.claimReward(n,s.veId,e)},Promise.resolve())}},td=async(a,e,t,n,o,i,s,c,p)=>{let b=Wt(i),S=[];for(let q of n)if(q.userRewardAmount>0){let Ot=await e.buildClaimRewardCoin(o,q.veId);S.push(Ot)}let I=[];for(let q of S)Array.isArray(q)?I.push(...q):I.push(q);if(I.length===0)return;if(i===Wt(gn)){o.transferObjects(I,o.pure.address(t));return}let x=c?.[i]?.[gn];if(!x||x.length===0)throw new Error(`No swap route found from ${gn} to ${i}`);let[D,...k]=I;k.length>0&&o.mergeCoins(D,k);let M=D,L=o.moveCall({target:"0x2::coin::value",arguments:[M],typeArguments:[gn]}),U=Wt(gn);for(let q=0;q<x.length;q++){let Ot=x[q],W=p.find(H=>H.poolId===Ot);if(!W)throw new Error(`Pool ${Ot} not found`);let Et=Wt(W.tokenXType||W.tokenX?.coinType||"")===U,Ve={objectId:W.poolId,tokenXType:W.tokenXType||W.tokenX?.coinType||"",tokenYType:W.tokenYType||W.tokenY?.coinType||""},Qn=await Fe({suiClient:a.rpcClient,poolId:W.poolId,currentSqrtPrice:W.currentSqrtPrice,tokenX:W.tokenX,tokenY:W.tokenY,slippagePercentage:s,isTokenX:Et}),{outputCoin:Jn,leftoverCoin:yn}=a.Pool.swapV2({txb:o,pool:Ve,amount:L,inputCoin:M,isXtoY:Et,limitSqrtPrice:Qn});if(o.transferObjects([yn],o.pure.address(t)),M=Jn,U=Et?Wt(W.tokenYType||W.tokenY?.coinType||""):Wt(W.tokenXType||W.tokenX?.coinType||""),U===i){o.transferObjects([M],o.pure.address(t));return}L=o.moveCall({target:"0x2::coin::value",arguments:[M],typeArguments:[U]})}o.transferObjects([M],o.pure.address(t))};var kr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=ed.MmtSDK.NEW({network:"mainnet"}),o=new nd.VeMMT(t.suiClient,"mainnet"),{params:i}=this.data,{address:s,positions:c,pools:p,veMMTs:b}=i,S=new od.Transaction;for(let I of c){let x=p.find(D=>D.poolId===I.poolId);x&&Ue(n,s,I,x,S)}return await Zp(o,s,b,S),S}static fromData(t){return new a(t)}};var ad=require("@mmt-finance/clmm-sdk"),id=require("@mmt-finance/ve-sdk-v1"),rd=require("@mysten/sui/transactions");var vr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=ad.MmtSDK.NEW({network:"mainnet"}),o=new id.VeMMT(t.suiClient,"mainnet"),{params:i}=this.data,{claimVeMMTParams:s}=i,{address:c,veMMTs:p,targetCoinType:b,slippage:S,claimRoutes:I,pools:x}=s,D=new rd.Transaction;return await Promise.all(i.claimParams.map(k=>Bp({...k,sdk:n,txb:D}))),await td(n,o,c,p,D,b,S,I,x),D}static fromData(t){return new a(t)}};var sd=require("@mmt-finance/clmm-sdk"),cd=require("@mysten/sui/transactions");var Ar=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=sd.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,position:i,pool:s}=n,c=new cd.Transaction;return Ue(t,o,i,s,c),c}static fromData(t){return new a(t)}};var ld=require("@mmt-finance/clmm-sdk"),ud=require("@mysten/sui/transactions");var Mr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=ld.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amountA:i,amountB:s,pool:c,positionObjectId:p,slippage:b}=n,S=new ud.Transaction;return await Up(t,S,o,i,s,c,p,b),S}static fromData(t){return new a(t)}};var md=require("@mmt-finance/clmm-sdk"),pd=require("@mysten/sui/transactions");var Or=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=md.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amount:i,isTokenX:s,pool:c,positionObjectId:p,swapSlippage:b,addLiquiditySlippage:S}=n,I=new pd.Transaction;return await qp(t,I,o,i,s,c,p,b,S),I}static fromData(t){return new a(t)}};var dd=require("@mmt-finance/clmm-sdk"),fd=require("@mysten/sui/transactions");var Pr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=dd.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{pool:o,position:i,address:s,withdrawPercentage:c,zapOutOn:p,targetCoinType:b,slippage:S}=n,I=new fd.Transaction;return p?await Vp({sdk:t,address:s,position:i,pool:o,withdrawPercentage:c,txb:I,targetCoinType:b,slippage:S}):await Kp(t,s,i,o,c,I),I}static fromData(t){return new a(t)}};var cc=require("@mysten/sui/transactions"),lc=require("@suilend/springsui-sdk"),sc={id:"0x0431232199873db77a92aa645cd43521437e9cc5c6fff07fd03edb88afe0b25a",type:"0x2b6602099970374cf58a2a1b9d96f005fccceb81e92eb059873baf420eb6c717::x_sui::X_SUI",weightHookId:"0x9e35c13dbb0bc437e8ad5a95ec463622f58763e060552ae8d100db77f4904601"},hd=async(a,e,t)=>{let n=await lc.LstClient.initialize(a,sc),o=new cc.Transaction,[i]=o.splitCoins(o.gas,[BigInt(t)]),s=n.mint(o,i);return o.transferObjects([s],e),o},gd=async(a,e,t)=>{let n=await lc.LstClient.initialize(a,sc),o=await a.getCoins({owner:e,coinType:sc.type,limit:1e3});if(o.data.length===0)throw new Error("No lst coins found");let i=new cc.Transaction,s=o.data[0];o.data.length>1&&i.mergeCoins(s.coinObjectId,o.data.slice(1).map(b=>b.coinObjectId));let[c]=i.splitCoins(s.coinObjectId,[BigInt(t)]),p=n.redeem(i,c);return i.transferObjects([p],e),i};var Rr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{params:n}=this.data,{address:o,amount:i}=n;return await hd(t.suiClient,o,i)}static fromData(t){return new a(t)}};var Td=require("@mmt-finance/clmm-sdk"),Sd=require("@mysten/sui/transactions");var yd=require("@mmt-finance/clmm-sdk/dist/utils/poolUtils");var bd=async(a,e,t,n,o,i,s)=>{let c=await ae({mmt:a,tx:i,address:o,coinType:t.coinType,coinAmount:n,coinDecimals:t.decimals}),p=i.moveCall({target:"0x2::coin::value",typeArguments:[t.coinType],arguments:[c]}),b=t.coinType;for(let S=0;S<e.length;S+=1){let{poolId:I,tokenX:x,tokenY:D,isStable:k,currentSqrtPrice:M}=e[S],{id:L,isReverse:U}=yd.mappedMmtV3Pool[I]||{id:I,isReverse:!1},q=Wt(x.coinType)===Wt(b);q=U?!q:q;let Ot=U?D.coinType:x.coinType,W=U?x.coinType:D.coinType,Ke=await Fe({poolId:L,tokenX:x,tokenY:D,slippagePercentage:s,isTokenX:q,suiClient:a.rpcClient,currentSqrtPrice:M}),Et=a.Pool.swap(i,{objectId:L,tokenXType:Ot,tokenYType:W,isStable:k},p,c,q,void 0,Ke,!1);i.transferObjects([c],i.pure.address(o)),c=Et,b=q?W:Ot,p=i.moveCall({target:"0x2::coin::value",typeArguments:[b],arguments:[c]})}i.transferObjects([c],i.pure.address(o))};var Br=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=Td.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{route:o,tokenIn:i,amountIn:s,address:c,slippage:p}=n,b=new Sd.Transaction;return await bd(t,o,i,s,c,b,p),b}static fromData(t){return new a(t)}};var Er=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{params:n}=this.data,{address:o,amount:i}=n;return await gd(t.suiClient,o,i)}static fromData(t){return new a(t)}};var wd=require("@mmt-finance/clmm-sdk"),Id=require("@mmt-finance/ve-sdk-v1"),Cd=require("@mysten/sui/transactions");var Nr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=wd.MmtSDK.NEW({network:"mainnet"}),o=new Id.VeMMT(t.suiClient,"mainnet"),{params:i}=this.data,{token:s,amount:c,address:p,enableAutoMaxBond:b,unbondAt:S}=i,I=new Cd.Transaction;return await zp(n,o,s,c,p,b,S,I),I}static fromData(t){return new a(t)}};var xd=require("@mmt-finance/ve-sdk-v1"),Dd=require("@mysten/sui/transactions");var Wr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new xd.VeMMT(t.suiClient,"mainnet"),{params:o}=this.data,{address:i,veId:s,currentUnbondAt:c,isCurrentlyMaxBond:p,enableAutoMaxBond:b,unbondAt:S}=o,I=new Dd.Transaction;return await Qp(n,i,s,c,p,b,S,I),I}static fromData(t){return new a(t)}};var kd=require("@mmt-finance/ve-sdk-v1"),vd=require("@mysten/sui/transactions");var _r=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new kd.VeMMT(t.suiClient,"mainnet"),{params:o}=this.data,{address:i,veId:s,selectedVeMMTIds:c}=o,p=new vd.Transaction;return await Jp(n,i,s,c,p),p}static fromData(t){return new a(t)}};var Ad=require("@mmt-finance/ve-sdk-v1"),Md=require("@mysten/sui/transactions");var Lr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Ad.VeMMT(t.suiClient,"mainnet"),{params:o}=this.data,{address:i,veId:s}=o,c=new Md.Transaction;return await Yp(n,i,s,c),c}static fromData(t){return new a(t)}};var jr=class{application="mmt-dex";supportSDK="@mysten/sui";async deserialize(e){let{appContext:t}=e;return{txType:Od.TransactionType.Other,txSubType:t.action,intentionData:t}}async build(e){let t;switch(e.txSubType){case"Swap":t=Br.fromData(e.intentionData);break;case"AddLiquidity":t=xr.fromData(e.intentionData);break;case"AddLiquiditySingleSide":t=Dr.fromData(e.intentionData);break;case"ClaimRewards":t=Ar.fromData(e.intentionData);break;case"ClaimAllRewards":t=kr.fromData(e.intentionData);break;case"ClaimRewardsAs":t=vr.fromData(e.intentionData);break;case"RemoveLiquidity":t=Pr.fromData(e.intentionData);break;case"StakeXSui":t=Rr.fromData(e.intentionData);break;case"UnstakeXSui":t=Er.fromData(e.intentionData);break;case"ManageLiquidity":t=Mr.fromData(e.intentionData);break;case"ManageLiquiditySingleSide":t=Or.fromData(e.intentionData);break;case"Bond":t=Nr.fromData(e.intentionData);break;case"Extend":t=Wr.fromData(e.intentionData);break;case"Merge":t=_r.fromData(e.intentionData);break;case"Unbond":t=Lr.fromData(e.intentionData);break;default:throw new Error(`not implemented ${e.txSubType}`)}return t.build({suiClient:e.suiClient})}};var uc=require("@msafe/sui3-utils");var Pd=require("@mysten/sui/transactions"),Rd=require("@nemoprotocol/vaults-sdk");var Ur=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o}=t,i=Rd.Vaults.createSDK({client:n}),s=new Pd.Transaction;return await i.deposit(this.data,o.address,s),s}static fromData(t){return new a(t)}};var Bd=require("@mysten/sui/transactions"),Ed=require("@nemoprotocol/vaults-sdk");var qr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o}=t,i=Ed.Vaults.createSDK({client:n}),s=new Bd.Transaction;return await i.withdraw(this.data,o.address,s),s}static fromData(t){return new a(t)}};var Fr=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:uc.TransactionType.Other,txSubType:"VaultDeposit",intentionData:e.appContext};if(n)return{txType:uc.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=Ur.fromData(e.intentionData);break;case"VaultWithdraw":o=qr.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};var ah=La.fromHelpers([new Ca,new Ea,new Sa,new Na,new Yo,new ir,new jr,new Ti,new mr,new Do,new Mi,new Li,new io,new Ir,new Fi,new Fr]);
2
2
  //# sourceMappingURL=index.js.map