@msafe/sui-app-store 0.0.331 → 0.0.332
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.d.mts +32 -4
- package/dist/index.d.ts +32 -4
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -4
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var ru=Object.create;var vr=Object.defineProperty;var su=Object.getOwnPropertyDescriptor;var cu=Object.getOwnPropertyNames;var lu=Object.getPrototypeOf,uu=Object.prototype.hasOwnProperty;var mu=(a=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')});var pu=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports),Bs=(a,e)=>{for(var t in e)vr(a,t,{get:e[t],enumerable:!0})},du=(a,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of cu(e))!uu.call(a,o)&&o!==t&&vr(a,o,{get:()=>e[o],enumerable:!(n=su(e,o))||n.enumerable});return a};var fu=(a,e,t)=>(t=a!=null?ru(lu(a)):{},du(e||!a||!a.__esModule?vr(t,"default",{value:a,enumerable:!0}):t,a));var El=pu((Bl,ds)=>{"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=mu("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"],D=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],x=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(r,u){r=r||10,u=u|0||1;var m;if(r===16||r==="hex"){m="";for(var 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=D[r],g=x[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,ae=d[2]|0,K=ae&8191,$=ae>>>13,gs=d[3]|0,z=gs&8191,G=gs>>>13,ys=d[4]|0,Q=ys&8191,Y=ys>>>13,bs=d[5]|0,J=bs&8191,Z=bs>>>13,Ts=d[6]|0,tt=Ts&8191,et=Ts>>>13,Ss=d[7]|0,nt=Ss&8191,ot=Ss>>>13,ws=d[8]|0,at=ws&8191,it=ws>>>13,Is=d[9]|0,rt=Is&8191,st=Is>>>13,Cs=h[0]|0,ct=Cs&8191,lt=Cs>>>13,Ds=h[1]|0,ut=Ds&8191,mt=Ds>>>13,xs=h[2]|0,pt=xs&8191,dt=xs>>>13,ks=h[3]|0,ft=ks&8191,ht=ks>>>13,vs=h[4]|0,gt=vs&8191,yt=vs>>>13,As=h[5]|0,bt=As&8191,Tt=As>>>13,Ms=h[6]|0,St=Ms&8191,wt=Ms>>>13,Os=h[7]|0,It=Os&8191,Ct=Os>>>13,Ps=h[8]|0,Dt=Ps&8191,xt=Ps>>>13,Rs=h[9]|0,kt=Rs&8191,vt=Rs>>>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 cr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(cr>>>26)|0,cr&=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 lr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(lr>>>26)|0,lr&=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 ur=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(ur>>>26)|0,ur&=67108863,f=Math.imul(z,ct),l=Math.imul(z,lt),l=l+Math.imul(G,ct)|0,g=Math.imul(G,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 mr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(mr>>>26)|0,mr&=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(z,ut)|0,l=l+Math.imul(z,mt)|0,l=l+Math.imul(G,ut)|0,g=g+Math.imul(G,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 pr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(pr>>>26)|0,pr&=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(z,pt)|0,l=l+Math.imul(z,dt)|0,l=l+Math.imul(G,pt)|0,g=g+Math.imul(G,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 dr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(dr>>>26)|0,dr&=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(z,ft)|0,l=l+Math.imul(z,ht)|0,l=l+Math.imul(G,ft)|0,g=g+Math.imul(G,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 fr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(fr>>>26)|0,fr&=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(z,gt)|0,l=l+Math.imul(z,yt)|0,l=l+Math.imul(G,gt)|0,g=g+Math.imul(G,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 hr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(hr>>>26)|0,hr&=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(z,bt)|0,l=l+Math.imul(z,Tt)|0,l=l+Math.imul(G,bt)|0,g=g+Math.imul(G,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,Dt)|0,l=l+Math.imul(O,xt)|0,l=l+Math.imul(P,Dt)|0,g=g+Math.imul(P,xt)|0;var gr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(gr>>>26)|0,gr&=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(z,St)|0,l=l+Math.imul(z,wt)|0,l=l+Math.imul(G,St)|0,g=g+Math.imul(G,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(_,Dt)|0,l=l+Math.imul(_,xt)|0,l=l+Math.imul(F,Dt)|0,g=g+Math.imul(F,xt)|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(z,It)|0,l=l+Math.imul(z,Ct)|0,l=l+Math.imul(G,It)|0,g=g+Math.imul(G,Ct)|0,f=f+Math.imul(K,Dt)|0,l=l+Math.imul(K,xt)|0,l=l+Math.imul($,Dt)|0,g=g+Math.imul($,xt)|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 br=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(br>>>26)|0,br&=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(z,Dt)|0,l=l+Math.imul(z,xt)|0,l=l+Math.imul(G,Dt)|0,g=g+Math.imul(G,xt)|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 Tr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Tr>>>26)|0,Tr&=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,Dt)|0,l=l+Math.imul(Q,xt)|0,l=l+Math.imul(Y,Dt)|0,g=g+Math.imul(Y,xt)|0,f=f+Math.imul(z,kt)|0,l=l+Math.imul(z,vt)|0,l=l+Math.imul(G,kt)|0,g=g+Math.imul(G,vt)|0;var Sr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Sr>>>26)|0,Sr&=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,Dt)|0,l=l+Math.imul(J,xt)|0,l=l+Math.imul(Z,Dt)|0,g=g+Math.imul(Z,xt)|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 wr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(wr>>>26)|0,wr&=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,Dt)|0,l=l+Math.imul(tt,xt)|0,l=l+Math.imul(et,Dt)|0,g=g+Math.imul(et,xt)|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 Ir=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Ir>>>26)|0,Ir&=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,Dt)|0,l=l+Math.imul(nt,xt)|0,l=l+Math.imul(ot,Dt)|0,g=g+Math.imul(ot,xt)|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 Cr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Cr>>>26)|0,Cr&=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,Dt)|0,l=l+Math.imul(at,xt)|0,l=l+Math.imul(it,Dt)|0,g=g+Math.imul(it,xt)|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 Dr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Dr>>>26)|0,Dr&=67108863,f=Math.imul(rt,Dt),l=Math.imul(rt,xt),l=l+Math.imul(st,Dt)|0,g=Math.imul(st,xt),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 xr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(xr>>>26)|0,xr&=67108863,f=Math.imul(rt,kt),l=Math.imul(rt,vt),l=l+Math.imul(st,kt)|0,g=Math.imul(st,vt);var kr=(C+f|0)+((l&8191)<<13)|0;return C=(g+(l>>>13)|0)+(kr>>>26)|0,kr&=67108863,T[0]=cr,T[1]=lr,T[2]=ur,T[3]=mr,T[4]=pr,T[5]=dr,T[6]=fr,T[7]=hr,T[8]=gr,T[9]=yr,T[10]=br,T[11]=Tr,T[12]=Sr,T[13]=wr,T[14]=Ir,T[15]=Cr,T[16]=Dr,T[17]=xr,T[18]=kr,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 Mt(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=Mt(this,r,u),m};function N(y,r){this.x=y,this.y=r}N.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},N.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},N.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]]},N.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],ae=m[v+B+C],K=d[v+B+C],$=O*ae-P*K;K=O*K+P*ae,ae=$,m[v+B]=_+ae,d[v+B]=F+K,m[v+B+C]=_-ae,d[v+B+C]=F-K,B!==f&&($=l*O-g*P,P=l*P+g*O,O=$)}},N.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},N.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}},N.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},N.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)},N.prototype.stub=function(r){for(var u=new Array(r),m=0;m<r;m++)u[m]=0;return u},N.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),Mt(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._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 Ie={k256:null,p224:null,p192:null,p25519:null};function Rt(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()}Rt.prototype._tmp=function(){var r=new o(null);return r.words=new Array(Math.ceil(this.n/13)),r},Rt.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},Rt.prototype.split=function(r,u){r.iushrn(this.n,0,u)},Rt.prototype.imulK=function(r){return r.imul(this.k)};function Ce(){Rt.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Ce,Rt),Ce.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},Ce.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 yn(){Rt.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}n(yn,Rt);function bn(){Rt.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}n(bn,Rt);function Fe(){Rt.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}n(Fe,Rt),Fe.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(Ie[r])return Ie[r];var u;if(r==="k256")u=new Ce;else if(r==="p224")u=new yn;else if(r==="p192")u=new bn;else if(r==="p25519")u=new Fe;else throw new Error("Unknown prime "+r);return Ie[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 fe(r)};function fe(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(fe,H),fe.prototype.convertTo=function(r){return this.imod(r.ushln(this.shift))},fe.prototype.convertFrom=function(r){var u=this.imod(r.mul(this.rinv));return u.red=null,u},fe.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)},fe.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)},fe.prototype.invm=function(r){var u=this.imod(r._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(typeof ds>"u"||ds,Bl)});import{TransactionType as xu}from"@msafe/sui3-utils";import{coinsList as gu,poolIdPoolNameMap as yu,poolInfo as Es,singleAssetPoolCoinMap as bu}from"@alphafi/alphafi-sdk";import{TransactionType as Ke}from"@msafe/sui3-utils";import{bcs as Tn,fromBase64 as Sn}from"@mysten/bcs";var wn=class{constructor(e,t){this.transaction=e;this.simResult=t}decode(){if(this.isClaimRewardTransaction())return this.decodeClaimReward();let e=this.getLiquidityChangeEvent();if(!e)throw new Error("No liquidity change event found. Unable to decode transaction.");let t=e.parsedJson,n=t.pool_id,o=yu[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&&Es[t].assetTypes.length===2}isSingleAssetDepositEvent(e,t){return e.event_type===0&&Es[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=Tn.u64().parse(Sn(t)):t.length===24?n=Tn.u128().parse(Sn(t)):t.length===44?n=Tn.u256().parse(Sn(t)):n=Tn.u64().parse(Sn(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:Ke.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}=bu[e],{expo:s}=gu[i];n=Math.floor(Number(n)/10**(9-s)).toString()}return{txType:Ke.Other,type:"depositSingleAsset",intentionData:{poolName:e,amount:n}}}decodeWithdraw(e){let t=this.extractXTokensAmount();return console.log("Decoder.decodeWithdraw",t),{txType:Ke.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:Ke.Other,type:"withdrawAlpha",intentionData:{withdrawFromLocked:Number(n)>0,xTokensAmount:t}}}decodeClaimReward(){return{txType:Ke.Other,type:"claimReward",intentionData:{}}}};import{claimRewardTxb as Su}from"@alphafi/alphafi-sdk";import Tu from"sort-keys-recursive";var w=class{constructor(e){this.data=e}serialize(){return JSON.stringify(Tu(this.data))}};var In=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t;return await Su(n.address)}static fromData(t){return new a(t)}};import{depositDoubleAssetTxb as wu}from"@alphafi/alphafi-sdk";var Cn=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{poolName:o,amount:i,isAmountA:s}=this.data;return await wu(o,n.address,i,s)}static fromData(t){return console.log("DepositDoubleAssetIntention.fromData",t),new a(t)}};import{depositSingleAssetTxb as Iu}from"@alphafi/alphafi-sdk";var Dn=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{poolName:o,amount:i}=this.data;return await Iu(o,n.address,i)}static fromData(t){return console.log("DepositSingleAssetIntention.fromData",t),new a(t)}};import{withdrawTxb as Cu}from"@alphafi/alphafi-sdk";var xn=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{poolName:o,xTokensAmount:i}=this.data;return await Cu(i,o,n.address)}static fromData(t){return console.log("WithdrawIntention.fromData",t),new a(t)}};import{withdrawAlphaTxb as Du}from"@alphafi/alphafi-sdk";var kn=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{withdrawFromLocked:o,xTokensAmount:i}=this.data;return await Du(i,o,n.address)}static fromData(t){return console.log("WithdrawAlphaIntention.fromData",t),new a(t)}};var vn=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 wn(t,i).decode();return{txType:xu.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=Dn.fromData(e.intentionData);break;case"depositDoubleAsset":n=Cn.fromData(e.intentionData);break;case"withdraw":n=xn.fromData(e.intentionData);break;case"withdrawAlpha":n=kn.fromData(e.intentionData);break;case"claimReward":n=In.fromData(e.intentionData);break;default:throw new Error("not implemented")}return n.build({account:t})}};import{TransactionType as zu}from"@msafe/sui3-utils";import{TransactionType as Ut}from"@msafe/sui3-utils";import{bcs as Ar}from"@mysten/sui/bcs";import{SBUCK_FOUNTAIN_PACKAGE_ID as Mr}from"bucket-protocol-sdk";var An=class{constructor(e){this.transaction=e}decode(){if(this.isSBUCKDepositTransaction())return this.decodeSBUCKDeposit();if(this.isSBUCKUnstakeTransaction())return this.decodeSBUCKUnstake();if(this.isSBUCKWithdrawTransaction())return this.decodeSBUCKWithdraw();if(this.isSBUCKClaimTransaction())return this.decodeSBUCKClaim();if(this.isLockedClaimTransaction())return this.decodeLockedClaim();if(this.isBorrowTransaction())return this.decodeBorrow();if(this.isRepayTransaction())return this.decodeRepay();if(this.isWithdrawTransaction())return this.decodeWithdraw();if(this.isCloseTransaction())return this.decodeClose();if(this.isTankDepositTransaction())return this.decodeTankDeposit();if(this.isTankWithdrawTransaction())return this.decodeTankWithdraw();if(this.isTankClaimTransaction())return this.decodeTankClaim();if(this.isPsmTransaction())return this.decodePsm();throw new Error("Unknown transaction type")}get commands(){return this.transaction.getData().commands}get inputs(){return this.transaction.getData().inputs}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}getMoveCallModuleCommand(e,t){return this.commands.find(n=>n.$kind==="MoveCall"&&n.MoveCall.module===e&&n.MoveCall.function===t)}getMoveCallPackageModuleCommand(e,t,n){return this.commands.find(o=>o.$kind==="MoveCall"&&o.MoveCall.package===e&&o.MoveCall.module===t&&o.MoveCall.function===n)}getMoveCallModuleCommands(e,t){return this.commands.filter(n=>n.$kind==="MoveCall"&&n.MoveCall.module===e&&n.MoveCall.function===t)}getSplitCoinsCommands(){return this.commands.filter(e=>e.$kind==="SplitCoins")}getTransferCommands(){return this.commands.filter(e=>e.$kind==="TransferObjects")}isPsmTransaction(){return!!this.getMoveCallCommand("charge_reservoir")||!!this.getMoveCallCommand("discharge_reservoir")}isStrapNewTransaction(){return!!this.getMoveCallModuleCommand("strap","new")}isBorrowTransaction(){return!!this.getMoveCallModuleCommand("bucket_operations","high_top_up")||!!this.getMoveCallModuleCommand("bucket_operations","high_borrow")||!!this.getMoveCallModuleCommand("bucket_operations","high_borrow_with_strap")}isRepayTransaction(){return!!this.getMoveCallModuleCommand("bucket_operations","fully_repay")||!!this.getMoveCallModuleCommand("bucket_operations","fully_repay_with_strap")||!!this.getMoveCallModuleCommand("bucket_operations","repay_and_withdraw")||!!this.getMoveCallModuleCommand("bucket_operations","repay_and_withdraw_with_strap")}isWithdrawTransaction(){return!!this.getMoveCallModuleCommand("buck","withdraw")||!!this.getMoveCallModuleCommand("buck","withdraw_with_strap")}isCloseTransaction(){return!!this.getMoveCallModuleCommand("bucket_operations","destroy_empty_strap")}isTankDepositTransaction(){return!!this.getMoveCallModuleCommand("tank_operations","deposit")}isTankWithdrawTransaction(){return!!this.getMoveCallModuleCommand("tank_operations","withdraw")}isTankClaimTransaction(){return!!this.getMoveCallModuleCommand("tank_operations","claim")}isSBUCKDepositTransaction(){return!!this.getMoveCallModuleCommand("buck","buck_to_sbuck")}isSBUCKWithdrawTransaction(){return!!this.getMoveCallModuleCommand("buck","sbuck_to_buck")}isSBUCKStakeTransaction(){return!!this.getMoveCallPackageModuleCommand(Mr,"fountain_core","stake")}isSBUCKUnstakeTransaction(){return!!this.getMoveCallPackageModuleCommand(Mr,"fountain_core","force_unstake")}isSBUCKClaimTransaction(){return!!this.getMoveCallPackageModuleCommand(Mr,"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:Ut.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:Ut.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:Ut.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:Ut.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:Ut.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:Ut.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:Ut.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:Ut.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:Ut.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:Ut.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:Ut.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:Ut.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:Ut.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 Ar.U64.fromBase64(t.Pure.bytes)}getPureAddresses(e){let t=this.inputs[e];if(t.$kind!=="Pure")throw new Error("not pure argument");return Ar.vector(Ar.Address).fromBase64(t.Pure.bytes)}};import{TransactionType as Mu}from"@msafe/sui3-utils";import{Transaction as vu}from"@mysten/sui/transactions";import{buildPsmTx as Au}from"bucket-protocol-sdk";import{BucketClient as ku}from"bucket-protocol-sdk";var Bt=(a,e)=>{let t=a==="sui:mainnet"?"mainnet":"testnet";return new ku(t,e.address)};var Ws=async(a,e,t)=>{let{coinType:n,amount:o,buckToCoin:i}=a,s=new vu,c=Bt(t,e);return await Au(c,s,n,o,i,e.address),s};var Mn=class a extends w{constructor(t){super(t);this.data=t}txType=Mu.Other;txSubType="psm";async build(t){let{account:n,network:o}=t;return await Ws(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Eu}from"@msafe/sui3-utils";import{Transaction as On}from"@mysten/sui/transactions";import{buildBorrowTx as Ou,buildCloseTx as Pu,buildRepayTx as Ru,buildWithdrawTx as Bu}from"bucket-protocol-sdk";var Ns=async(a,e,t)=>{let{collateralType:n,collateralAmount:o,borrowAmount:i,insertionPlace:s,strapId:c}=a,p=new On,b=Bt(t,e);return await Ou(b,p,n,o,i,e.address,s,c),p},_s=async(a,e,t)=>{let{collateralType:n,withdrawAmount:o,insertionPlace:i,strapId:s}=a,c=new On,p=Bt(t,e);return await Bu(p,c,n,o,e.address,i,s),c},Ls=async(a,e,t)=>{let{collateralType:n,repayAmount:o,withdrawAmount:i,isSurplus:s,insertionPlace:c,strapId:p}=a,b=new On,S=Bt(t,e);return await Ru(S,b,n,o,i,e.address,s,c,p),b},js=async(a,e,t)=>{let{collateralType:n,recipient:o,strapId:i}=a,s=new On,c=Bt(t,e);return await Pu(c,s,n,o,i),s};var Pn=class a extends w{constructor(t){super(t);this.data=t}txType=Eu.Other;txSubType="borrow";async build(t){let{account:n,network:o}=t;return await Ns(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Wu}from"@msafe/sui3-utils";var Rn=class a extends w{constructor(t){super(t);this.data=t}txType=Wu.Other;txSubType="repay";async build(t){let{account:n,network:o}=t;return await Ls(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Nu}from"@msafe/sui3-utils";var Bn=class a extends w{constructor(t){super(t);this.data=t}txType=Nu.Other;txSubType="withdraw";async build(t){let{account:n,network:o}=t;return await _s(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as _u}from"@msafe/sui3-utils";var En=class a extends w{constructor(t){super(t);this.data=t}txType=_u.Other;txSubType="close";async build(t){let{account:n,network:o}=t;return await js(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Un}from"@msafe/sui3-utils";import{Transaction as Wn}from"@mysten/sui/transactions";import{buildSBUCKClaimTx as Lu,buildSBUCKDepositTx as ju,buildSBUCKUnstakeTx as Uu,buildSBUCKWithdrawTx as qu}from"bucket-protocol-sdk";var Us=async(a,e,t)=>{let{coinType:n,amount:o,isStake:i}=a,s=new Wn,c=Bt(t,e);return await ju(c,s,n,o,e.address,i),s},qs=async(a,e,t)=>{let{stakeProofs:n,amount:o,isStake:i,toBuck:s}=a,c=new Wn,p=Bt(t,e);return await Uu(p,c,n,o,e.address,i,s),c},Fs=async(a,e,t)=>{let{amount:n}=a,o=new Wn,i=Bt(t,e);return await qu(i,o,n,e.address),o},Ks=async(a,e,t)=>{let{stakeProofs:n}=a,o=new Wn,i=Bt(t,e);return await Lu(i,o,n,e.address),o};var Nn=class a extends w{constructor(t){super(t);this.data=t}txType=Un.Other;txSubType="sbuck-deposit";async build(t){let{account:n,network:o}=t;return await Us(this.data,n,o)}static fromData(t){return new a(t)}},_n=class a extends w{constructor(t){super(t);this.data=t}txType=Un.Other;txSubType="sbuck-unstake";async build(t){let{account:n,network:o}=t;return await qs(this.data,n,o)}static fromData(t){return new a(t)}},Ln=class a extends w{constructor(t){super(t);this.data=t}txType=Un.Other;txSubType="sbuck-withdraw";async build(t){let{account:n,network:o}=t;return await Fs(this.data,n,o)}static fromData(t){return new a(t)}},jn=class a extends w{constructor(t){super(t);this.data=t}txType=Un.Other;txSubType="sbuck-claim";async build(t){let{account:n,network:o}=t;return await Ks(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Pr}from"@msafe/sui3-utils";import{Transaction as Or}from"@mysten/sui/transactions";import{buildTankClaimTx as Fu,buildTankDepositTx as Ku,buildTankWithdrawTx as Vu}from"bucket-protocol-sdk";var Vs=async(a,e,t)=>{let{coinType:n,amount:o}=a,i=new Or,s=Bt(t,e);return await Ku(s,i,n,o,e.address),i},$s=async(a,e,t)=>{let{coinType:n,amount:o}=a,i=new Or,s=Bt(t,e);return await Vu(s,i,n,o,e.address),i},Hs=async(a,e,t)=>{let{coinType:n}=a,o=new Or,i=Bt(t,e);return await Fu(i,o,n,e.address),o};import{Transaction as $u}from"@mysten/sui/transactions";import{buildLockedClaimTx as Hu}from"bucket-protocol-sdk";var Xs=async(a,e,t)=>{let{coinType:n,proofCount:o}=a,i=new $u,s=Bt(t,e);return await Hu(s,i,n,o,e.address),i};var qn=class a extends w{constructor(t){super(t);this.data=t}txType=Pr.Other;txSubType="tank-deposit";async build(t){let{account:n,network:o}=t;return await Vs(this.data,n,o)}static fromData(t){return new a(t)}},Fn=class a extends w{constructor(t){super(t);this.data=t}txType=Pr.Other;txSubType="tank-withdraw";async build(t){let{account:n,network:o}=t;return await $s(this.data,n,o)}static fromData(t){return new a(t)}},Kn=class a extends w{constructor(t){super(t);this.data=t}txType=Pr.Other;txSubType="tank-claim";async build(t){let{account:n,network:o}=t;return await Hs(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Xu}from"@msafe/sui3-utils";var Vn=class a extends w{constructor(t){super(t);this.data=t}txType=Xu.Other;txSubType="lock-claim";async build(t){let{account:n,network:o}=t;return await Xs(this.data,n,o)}static fromData(t){return new a(t)}};var $n=class{application="bucket";supportSDK="@mysten/sui";async deserialize(e){console.log("Bucket helper deserialize input: ",e);let{transaction:t}=e,o=new An(t).decode();return{txType:zu.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=Mn.fromData(e.intentionData);break;case"borrow":i=Pn.fromData(e.intentionData);break;case"withdraw":i=Bn.fromData(e.intentionData);break;case"repay":i=Rn.fromData(e.intentionData);break;case"close":i=En.fromData(e.intentionData);break;case"tank-deposit":i=qn.fromData(e.intentionData);break;case"tank-withdraw":i=Fn.fromData(e.intentionData);break;case"tank-claim":i=Kn.fromData(e.intentionData);break;case"sbuck-deposit":i=Nn.fromData(e.intentionData);break;case"sbuck-unstake":i=_n.fromData(e.intentionData);break;case"sbuck-withdraw":i=Ln.fromData(e.intentionData);break;case"sbuck-claim":i=jn.fromData(e.intentionData);break;case"lock-claim":i=Vn.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};import{TransactionType as km}from"@msafe/sui3-utils";import{TransactionType as Qu}from"@msafe/sui3-utils";import{SuiClient as Rr,getFullnodeUrl as zs}from"@mysten/sui/client";var Gt=async(a,e)=>{let{CetusClmmSDK:t}=await import("@cetusprotocol/sui-clmm-sdk"),n=t.createSDK({env:"mainnet",sui_client:new Rr({url:zs("mainnet")})});return n.setSenderAddress(e.address),n},qt=async(a,e)=>{let{CetusFarmsSDK:t}=await import("@cetusprotocol/farms-sdk"),n=t.createSDK({env:"mainnet",sui_client:new Rr({url:zs("mainnet")})});return n.setSenderAddress(e.address),n},Gu="https://api-sui.cetus.zone/router_v2/find_routes",Gs=async(a,e)=>{let{AggregatorClient:t,Env:n}=await import("@cetusprotocol/aggregator-sdk"),o=new Rr({url:"https://fullnode.mainnet.sui.io/"});return new t({endpoint:Gu,signer:e.address,client:o,env:n.Mainnet})},Ve=async(a,e)=>{let{CetusVaultsSDK:t}=await import("@cetusprotocol/vaults-sdk"),n=t.createSDK({env:"mainnet"});return n.setSenderAddress(e.address),n},De=async(a,e)=>{let{CetusXcetusSDK:t}=await import("@cetusprotocol/xcetus-sdk"),n=t.createSDK({env:"mainnet"});return n.setSenderAddress(e.address),n};var Qs=async(a,e,t)=>await(await Gt(t,e)).Pool.createPoolPayload(a),Ys=async(a,e,t)=>await(await Gt(t,e)).Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg),Js=async(a,e,t)=>await(await Gt(t,e)).Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg),Zs=async(a,e,t)=>await(await Gt(t,e)).Position.closePositionPayload(a),tc=async(a,e,t)=>await(await Gt(t,e)).Position.removeLiquidityPayload(a),ec=async(a,e,t)=>await(await Gt(t,e)).Rewarder.collectRewarderPayload(a);var Hn=class a extends w{constructor(t){super(t);this.data=t}txType=Qu.Other;txSubType="OpenAndAddLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Ys(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Yu}from"@msafe/sui3-utils";var Xn=class a extends w{constructor(t){super(t);this.data=t}txType=Yu.Other;txSubType="ClaimFeeAndMining";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await ec(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Ju}from"@msafe/sui3-utils";var zn=class a extends w{constructor(t){super(t);this.data=t}txType=Ju.Other;txSubType="CreatePool";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Qs(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Zu}from"@msafe/sui3-utils";var Gn=class a extends w{constructor(t){super(t);this.data=t}txType=Zu.Other;txSubType="DecreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await tc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as tm}from"@msafe/sui3-utils";var nc=async(a,e,t)=>await(await qt(t,e)).Farms.openPositionAddLiquidityStakePayload(a),oc=async(a,e,t)=>await(await qt(t,e)).Farms.addLiquidityFixCoinPayload(a),ac=async(a,e,t)=>await(await qt(t,e)).Farms.removeLiquidityPayload(a);var ic=async(a,e,t)=>await(await qt(t,e)).Farms.removeLiquidityPayload(a),rc=async(a,e,t)=>await(await qt(t,e)).Farms.claimFeeAndClmmReward(a),sc=async(a,e,t)=>await(await qt(t,e)).Farms.harvestPayload(a),cc=async(a,e,t)=>{let n=await qt(t,e),o=Object.values(a);return await n.Farms.batchHarvestPayload(o)},lc=async(a,e,t)=>await(await qt(t,e)).Farms.depositPayload(a),uc=async(a,e,t)=>await(await qt(t,e)).Farms.withdrawPayload(a);var Qn=class a extends w{constructor(t){super(t);this.data=t}txType=tm.Other;txSubType="FarmingOpenAndAddLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await nc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as em}from"@msafe/sui3-utils";var Yn=class a extends w{constructor(t){super(t);this.data=t}txType=em.Other;txSubType="FarmingBatchHarvest";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await cc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as nm}from"@msafe/sui3-utils";var Jn=class a extends w{constructor(t){super(t);this.data=t}txType=nm.Other;txSubType="FarmingClaimFeeAndReward";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await rc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as om}from"@msafe/sui3-utils";var Zn=class a extends w{constructor(t){super(t);this.data=t}txType=om.Other;txSubType="FarmingDecreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await ac(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as am}from"@msafe/sui3-utils";var to=class a extends w{constructor(t){super(t);this.data=t}txType=am.Other;txSubType="FarmingHarvest";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await sc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as im}from"@msafe/sui3-utils";var eo=class a extends w{constructor(t){super(t);this.data=t}txType=im.Other;txSubType="FarmingIncreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await oc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as rm}from"@msafe/sui3-utils";var no=class a extends w{constructor(t){super(t);this.data=t}txType=rm.Other;txSubType="FarmingRemoveLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await ic(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as sm}from"@msafe/sui3-utils";var oo=class a extends w{constructor(t){super(t);this.data=t}txType=sm.Other;txSubType="FarmingStake";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await lc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as cm}from"@msafe/sui3-utils";var ao=class a extends w{constructor(t){super(t);this.data=t}txType=cm.Other;txSubType="FarmingUnstake";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await uc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as lm}from"@msafe/sui3-utils";var io=class a extends w{constructor(t){super(t);this.data=t}txType=lm.Other;txSubType="IncreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Js(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as dm}from"@msafe/sui3-utils";var ro=async()=>{let{Transaction:a}=await import("@mysten/sui/transactions");return new a},um=async(a,e,t)=>{let n=await Ve(t,e),o=await ro();return o.setSender(e.address),n.Vest.buildRedeemPayload(a.params,o),o},mm=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 ro();return i.setSender(e.address),await o?.Vest.buildRedeemPayload(a.params,i),i},mc=async(a,e,t)=>{let n=await Gt(t,e),o=await ro();return n?.Vest.buildRedeemPayload(a.params,o),o},pm=async(a,e,t)=>{let n=await Gt(t,e),o=await qt(t,e),i=await ro(),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},pc=async(a,e,t)=>a.type==="clmm"?mc(a,e,t):a.type==="farms"?pm(a,e,t):a.type==="vaults"?um(a,e,t):a.type==="haedalVaults"?mm(a,e):mc(a,e,t);var so=class a extends w{constructor(t){super(t);this.data=t}txType=dm.Other;txSubType="PosVestingRedeem";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await pc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as fm}from"@msafe/sui3-utils";var co=class a extends w{constructor(t){super(t);this.data=t}txType=fm.Other;txSubType="RemoveLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Zs(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as gm}from"@msafe/sui3-utils";import{Transaction as hm}from"@mysten/sui/transactions";var dc=async(a,e,t)=>{let{restituteMsafeFastRouterSwapParams:n}=await import("@cetusprotocol/aggregator-sdk"),o=await Gs(t,e),i=new hm;return await o.fastRouterSwap({...a,router:n(a.router),txb:i}),i};var lo=class a extends w{constructor(t){super(t);this.data=t}txType=gm.Other;txSubType="AggregatorSwap";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await dc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as ym}from"@msafe/sui3-utils";import{Transaction as fc}from"@mysten/sui/transactions";var hc=async(a,e,t)=>{let n=await Ve(t,e),o=new fc;return o.setSender(e.address),await n.Vaults.deposit(a,o),o},gc=async(a,e,t)=>{let n=await Ve(t,e),o=new fc;return await n.Vaults.withdraw(a,o),o};var uo=class a extends w{constructor(t){super(t);this.data=t}txType=ym.Other;txSubType="AddVaultsPosition";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await hc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as bm}from"@msafe/sui3-utils";var mo=class a extends w{constructor(t){super(t);this.data=t}txType=bm.Other;txSubType="RemoveVaultsPosition";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await gc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Sm}from"@msafe/sui3-utils";import{Transaction as Tm}from"@mysten/sui/transactions";var yc={package_id:"0x355714a1eeb7ab1d80902da6c92001170cda1212edf524c32aa308a3ac177c31",published_at:"0x355714a1eeb7ab1d80902da6c92001170cda1212edf524c32aa308a3ac177c31",cetus_coin_type:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS"},bc=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 Tm;return i.forEach(p=>{c.moveCall({target:`${yc.published_at}::router::redeem`,typeArguments:[yc.cetus_coin_type],arguments:[c.object(n),c.object(o),c.pure(p),c.object(s)]})}),c};var po=class a extends w{constructor(t){super(t);this.data=t}txType=Sm.Other;txSubType="VestingRedeem";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await bc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as wm}from"@msafe/sui3-utils";var Tc=async(a,e,t)=>await(await De(t,e)).XCetusModule.convertPayload(a),Sc=async(a,e,t)=>await(await De(t,e)).XCetusModule.redeemLockPayload(a),wc=async(a,e,t)=>await(await De(t,e)).XCetusModule.redeemDividendV3Payload(a.veNftId,a.rewardList),Ic=async(a,e,t)=>await(await De(t,e)).XCetusModule.cancelRedeemPayload(a),Cc=async(a,e,t)=>await(await De(t,e)).XCetusModule.redeemPayload(a);var fo=class a extends w{constructor(t){super(t);this.data=t}txType=wm.Other;txSubType="xCETUSCancelRedeem";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Ic(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Im}from"@msafe/sui3-utils";var ho=class a extends w{constructor(t){super(t);this.data=t}txType=Im.Other;txSubType="xCETUSClaimStakingRwewards";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await wc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Cm}from"@msafe/sui3-utils";var go=class a extends w{constructor(t){super(t);this.data=t}txType=Cm.Other;txSubType="xCETUSConvert";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Tc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Dm}from"@msafe/sui3-utils";var yo=class a extends w{constructor(t){super(t);this.data=t}txType=Dm.Other;txSubType="xCETUSRedeem";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Cc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as xm}from"@msafe/sui3-utils";var bo=class a extends w{constructor(t){super(t);this.data=t}txType=xm.Other;txSubType="xCETUSRedeemLock";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Sc(i,n,o)}static fromData(t){return new a(t)}};var To=class{application="cetus";supportSDK="@mysten/sui";async deserialize(e){console.log("Cetus helper deserialize input: ",e);let{txbParams:t,action:n}=e;return{txType:km.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=Hn.fromData(e.intentionData);break;case"IncreaseLiquidity":i=io.fromData(e.intentionData);break;case"DecreaseLiquidity":i=Gn.fromData(e.intentionData);break;case"RemoveLiquidity":i=co.fromData(e.intentionData);break;case"ClaimFeeAndMining":i=Xn.fromData(e.intentionData);break;case"FarmingOpenAndAddLiquidity":i=Qn.fromData(e.intentionData);break;case"FarmingIncreaseLiquidity":i=eo.fromData(e.intentionData);break;case"FarmingDecreaseLiquidity":i=Zn.fromData(e.intentionData);break;case"FarmingRemoveLiquidity":i=no.fromData(e.intentionData);break;case"FarmingClaimFeeAndReward":i=Jn.fromData(e.intentionData);break;case"FarmingHarvest":i=to.fromData(e.intentionData);break;case"FarmingBatchHarvest":i=Yn.fromData(e.intentionData);break;case"FarmingStake":i=oo.fromData(e.intentionData);break;case"FarmingUnstake":i=ao.fromData(e.intentionData);break;case"xCETUSConvert":i=go.fromData(e.intentionData);break;case"xCETUSRedeemLock":i=bo.fromData(e.intentionData);break;case"xCETUSClaimStakingRwewards":i=ho.fromData(e.intentionData);break;case"xCETUSCancelRedeem":i=fo.fromData(e.intentionData);break;case"xCETUSRedeem":i=yo.fromData(e.intentionData);break;case"VestingRedeem":i=po.fromData(e.intentionData);break;case"AggregatorSwap":i=lo.fromData(e.intentionData);break;case"AddVaultsPosition":i=uo.fromData(e.intentionData);break;case"RemoveVaultsPosition":i=mo.fromData(e.intentionData);break;case"PosVestingRedeem":i=so.fromData(e.intentionData);break;case"CreatePool":i=zn.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};import{TransactionType as Dp}from"@msafe/sui3-utils";import vm from"sort-keys-recursive";var _t=class{constructor(e){this.data=e}serialize(){return JSON.stringify(vm(this.data))}};import{getFullnodeUrl as So}from"@mysten/sui.js/client";var Br={};Bs(Br,{contractId:()=>Om,default:()=>Wm,feeObjId:()=>Bm,roleObjId:()=>Pm,status:()=>Mm,transaction:()=>Am,upgradeCapObjId:()=>Em,vaultObjId:()=>Rm});var Am="DiBZq4UmVVYiRL6ZJmFKYoHcxtxqrhsCXSkFyT7wUr3j",Mm="success",Om="0x81c960dc653975fbd0072deca8afb92d322898c911622898ba1b2e3ad0c4bd8d",Pm="0xc6ec0bdee0bb59a72077e9acd2f42457043cf47080b3d3fad4d39abf28bba63a",Rm="0xbc4021387fbac149119fd24e92be9e58f745774292f3a2a12e2ac6daf5363e1d",Bm="0x4178f63970fe2daeb256dc5730ad172e82b3e8eb45f31b33e0daae72cd35e1e1",Em="0xe1e9aa7d222d151bfe6dd83358b0d7fdcb11260f710800cfaf7ccc1b1e245115",Wm={transaction:Am,status:Mm,contractId:Om,roleObjId:Pm,vaultObjId:Rm,feeObjId:Bm,upgradeCapObjId:Em};var Er={};Bs(Er,{contractId:()=>Lm,default:()=>Km,feeObjId:()=>qm,roleObjId:()=>jm,status:()=>_m,transaction:()=>Nm,upgradeCapObjId:()=>Fm,vaultObjId:()=>Um});var Nm="855FNDV8o8Z3fWULPnQo9qdhLJpsg7wZrkCpNyfw9KfB",_m="success",Lm="0xc357c3985e8fb875d6b37141497af660779aa1bab0ec489b2213efd74067d1fa",jm="0x5ab49bdf9fd1413e328ef242b3f8d83dde791b38a0b627bfc87fb25c010d34f1",Um="0xb483558770d8eb26007f193b75db40f0a45f2e36863a687625885d4de6993378",qm="0x48453fc4d7cde3fe35aad89e5dfb496608a6a55ea529a1c0274681a808627f94",Fm="0x34279779a0d0d36bd5044b04830d607fa1b0ecf316548c8ac3a44151e4f1a42a",Km={transaction:Nm,status:_m,contractId:Lm,roleObjId:jm,vaultObjId:Um,feeObjId:qm,upgradeCapObjId:Fm};var Vm=So("testnet"),$m=So("testnet"),Hm=So("mainnet"),Xm=So("mainnet"),zm="https://bc3p6l5unl.execute-api.us-west-1.amazonaws.com/prod",Gm="https://rolsbkota7.execute-api.us-west-1.amazonaws.com/prod",Qm="https://6p6mkx33ne.execute-api.us-west-1.amazonaws.com/prod",Ym="https://xrae3mrjv5.execute-api.us-west-1.amazonaws.com/prod",Dc=Br,xc=Er,Jm=new Map([["dev",{env:"dev",rpc:{url:Vm},backend:{url:zm},contract:Dc}],["stg",{env:"stg",rpc:{url:$m},backend:{url:Gm},contract:Dc}],["prev",{env:"prev",rpc:{url:Hm},backend:{url:Qm},contract:xc}],["prod",{env:"prod",rpc:{url:Xm},backend:{url:Ym},contract:xc}]]);function kc(a,e){let t=Jm.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}import{SuiClient as tp}from"@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 wo=class extends j{constructor(){super(11,"Backend is not specified")}};var Io=class extends j{constructor(){super(1,"Wallet not connected")}};import ke,{AxiosError as Zm}from"axios";var xe=class extends j{constructor(e,t){super(10,e,{context:t})}};var Co=class a{constructor(e){this.apiURL=e}static parseResponseData(e){if(e instanceof Zm)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 ke.post(`${this.apiURL}/stream`,{recipient:e,...t});return a.parseResponseData(n)}async getOutgoingStreams(e,t){let n=await ke.post(`${this.apiURL}/stream`,{sender:e,...t});return a.parseResponseData(n)}async getStreamHistory(e){let t=await ke.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 ke.post(`${this.apiURL}/stream-info`,{address:e});return a.parseResponseData(t)}async getAllRecipients(e,t){let n=await ke.post(`${this.apiURL}/stream-info`,{sender:e,status:t});return a.parseResponseData(n)}async getAllSenders(e,t){let n=await ke.post(`${this.apiURL}/stream-info`,{recipient:e,status:t});return a.parseResponseData(n)}};var ve=class a{signer;suiClient;envConfig;_backend;constructor(e){this.envConfig=e,this.suiClient=new tp({url:e.rpc.url}),e.backend&&(this._backend=new Co(e.backend.url))}static new(e,t){let n=kc(e,t);return new a(n)}get walletType(){return this.wallet?this.wallet.type:"disconnected"}get backend(){if(!this._backend)throw new wo;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 Io;return this.signer}async walletAddress(){return this.wallet.address()}};import{SUI_TYPE_ARG as wp,normalizeStructTag as Ip,normalizeSuiAddress as Qc}from"@mysten/sui.js/utils";import{TransactionBlock as Mo}from"@mysten/sui.js/transactions";import{TransactionBlock as Wc}from"@mysten/sui.js/transactions";import{SUI_TYPE_ARG as Nc,normalizeStructTag as ap}from"@mysten/sui.js/utils";var Wr=50n,Do=10000n,vc=25n,Nr=100000000n;var Qt=class{constructor(e){this.object=e}moveArg(e){return e.object(this.object)}},$e=class{constructor(e){this.objects=e}moveArgs(e){return e.makeMoveVec({objects:this.objects.map(t=>e.object(t))})}},se=class a{constructor(e){this.result=e;return new Proxy(this,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(t,n){if(n in t)return Reflect.get(t,n);let o=s=>new a(t.result[s]);if(n===Symbol.iterator)return function*(){let s=0;for(;;)yield o(s),s++};if(typeof n=="symbol")return;let i=parseInt(n,10);if(!(Number.isNaN(i)||i<0))return o(i)}})}moveArg(){return this.result}};import{Buffer as Ac}from"buffer";import{normalizeSuiAddress as ep}from"@mysten/sui.js/utils";var He=class extends j{constructor(e,t){super(3,e,{context:t})}};var xo=class{constructor(e){this.results=e}callResult(e){return this.results.results[e]}returnValue(e,t){return e.returnValues[t]}getValue(e=0,t=0){let n=this.callResult(e);return this.returnValue(n,t)}getAddress(e=0,t=0){let[n,o]=this.getValue(e,t);if(o!=="address")throw new He("Invalid contract return type.",{ctx:{expectType:"address",gotType:o}});return ep(Ac.from(n).toString("hex"))}getU64(e=0,t=0){let[n,o]=this.getValue(e,t);if(o!=="u64")throw new He("Invalid contract return type.",{ctx:{expectType:"u64",gotType:o}});return Ac.from(n).readBigInt64LE()}};import{bcs as Oc}from"@mysten/sui.js/bcs";var X=class extends j{constructor(e,t,n){super(2,`Invalid input: ${e}`,{context:{fieldKey:t,fieldValue:n}})}};var Pc={groupId:"string",name:"string"},np=64;function Rc(a){return Bc(a),Oc.ser(Pc,a).toString("base64")}function Xe(a){let e=Oc.de(Pc,a,"base64");return Bc(e),e}function Bc(a){if(!Mc(a.name))throw new X("Invalid metadata: Name contains unknown character");if(!Mc(a.groupId))throw new X("Invalid metadata: Group ID contains unknown character");if(a.name.length>np)throw new X("Invalid metadata: Name exceed max length 64")}function Mc(a){return/^[\x00-\x7F]+$/.test(a)}import{normalizeStructTag as ko}from"@mysten/sui.js/utils";function vo(a,e){return ko(a)===ko(e)}function ce(a,e){return ko(a)===ko(e)}var Ao="txn.gas";import{nanoid as op}from"nanoid";function Ec(){return op()}var he=class a{constructor(e,t,n){this.globals=e;this.feeContract=t;this.streamContract=n}static convertCreateStreamInfoToInternal(e){return{metadata:Rc({name:e.name,groupId:Ec()}),coinType:ap(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 Wc,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),[D]=t.splitCoins(s,[t.pure(S+I,"u64")]),[x]=t.splitCoins(c,[t.pure(this.flatSuiFee,"u64")]);this.streamContract.createStream(t,{paymentCoin:new se(D),flatFeeCoin:new se(x),metadata:e.metadata,recipient:b.address,timeStart:e.startTime,cliff:b.cliffAmount,epochInterval:e.epochInterval,numEpoch:e.numberEpoch,amountPerEpoch:b.amountPerEpoch,cancelable:e.cancelable,coinType:e.coinType})}return t}calculateCreateStreamFees(e){let t=a.convertCreateStreamInfoToInternal(e);return this.calculateFeesInternal(t)}feeParams(){return{createFeePercent:{numerator:Wr,denominator:Do},claimFeePercent:{numerator:vc,denominator:Do},flatFeePerStream:Nr}}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===Ao?n=e.gas:n=e.object(t.primaryCoin),n}getCreateStreamCoinRequests(e,t){let n=e.coinType;return vo(n,Nc)?[{coinType:n,amount:t.totalAmount+t.streamFeeAmount+t.flatFeeAmount}]:[{coinType:n,amount:t.totalAmount+t.streamFeeAmount},{coinType:Nc,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 Nr}getStreamFeeLocal(e){return e*Wr/Do}async getStreamFeeRemote(e){let t=this.feeContract.streamingFee(new Wc,e),n=await this.globals.suiClient.devInspectTransactionBlock({sender:await this.globals.walletAddress(),transactionBlock:t});return new xo(n).getU64()}get wallet(){return this.globals.wallet}};import{Transactions as Lc}from"@mysten/sui.js/transactions";var _c="0x0000000000000000000000000000000000000000000000000000000000000006";var Ae=class{constructor(e,t,n){this.moduleName=e;this.config=t;this.globals=n}addContractCall(e,t){let n=`${this.config.contractId}::${this.moduleName}::${t.method}`;return e.add(Lc.MoveCall({target:n,arguments:t.arguments.map(o=>o instanceof $e?o.moveArgs(e):o instanceof Qt?o.moveArg(e):o instanceof se?o.moveArg():e.pure(o)),typeArguments:t.typeArgs})),e}addTransactionBlock(e,t,n=[],o=[]){e.add(Lc.MoveCall({target:t,arguments:n.map(i=>i instanceof $e?i.moveArgs(e):i instanceof Qt?i.moveArg(e):i instanceof se?i.moveArg():e.pure(i)),typeArguments:o}))}makeObject(e){return typeof e=="string"?new Qt(e):e}vaultObject(){return new Qt(this.config.vaultObjId)}roleObject(){return new Qt(this.config.roleObjId)}feeObject(){return new Qt(this.config.feeObjId)}clockObject(){return new Qt(_c)}};var Me=class a extends Ae{constructor(t,n){super(a.ModuleName,t,n);this.config=t;this.globals=n}static ModuleName="fee_module";static MethodName={set_streaming_fee:"set_streaming_fee",set_claim_fee:"set_claim_fee",set_streaming_flat_fee:"set_streaming_flat_fee",streaming_flat_fee:"streaming_flat_fee",streaming_fee:"streaming_fee",claim_fee:"claim_fee",fee_denominator:"fee_denominator"};setStreamingFee(t,n){let o=this.roleObject(),i=this.feeObject();return this.addContractCall(t,{method:a.MethodName.set_streaming_fee,arguments:[o,i,n],typeArgs:[]})}setStreamingFlatFee(t,n){let o=this.roleObject(),i=this.feeObject();return this.addContractCall(t,{method:a.MethodName.set_streaming_flat_fee,arguments:[o,i,n],typeArgs:[]})}setClaimFee(t,n){let o=this.roleObject(),i=this.feeObject();return this.addContractCall(t,{method:a.MethodName.set_claim_fee,arguments:[o,i,n],typeArgs:[]})}streamingFee(t,n){let o=this.feeObject();return this.addContractCall(t,{method:a.MethodName.streaming_fee,arguments:[o,n],typeArgs:[]})}claimFee(t,n){return this.addContractCall(t,{method:a.MethodName.claim_fee,arguments:[this.feeObject(),n],typeArgs:[]})}feeDenominator(t){return this.addContractCall(t,{method:a.MethodName.fee_denominator,arguments:[this.feeObject()],typeArgs:[]})}};var Yt=class a extends Ae{constructor(t,n){super(a.ModuleName,t,n);this.config=t;this.globals=n}static ModuleName="stream";static MethodName={create_stream:"create_stream",set_auto_claim:"set_auto_claim",cancel_stream:"cancel_stream",claim_stream:"claim_stream",claim_stream_by_proxy:"claim_stream_by_proxy",stream_current_epoch:"stream_current_epoch",now_milli_seconds:"now_milli_seconds"};createStream(t,n){let o=this.feeObject(),i=this.vaultObject(),s=this.makeObject(n.paymentCoin),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 Oe=class{constructor(e){this.globals=e;let t=e.envConfig.contract;this.feeContract=new Me(t,e),this.streamContract=new Yt(t,e)}feeContract;streamContract;async createStreams(e){let t=he.convertCreateStreamInfoToInternal(e);return this.createStreamHelper().buildCreateStreamTransactionBlock(t)}createStreamHelper(){return new he(this.globals,this.feeContract,this.streamContract)}setAutoClaim(e,t,n){let o=new Mo;return this.streamContract.setAutoClaim(o,{streamId:e,enabled:t,coinType:n})}claimStream(e,t){let n=new Mo;return this.streamContract.claimStream(n,{streamId:e,coinType:t})}claimStreamByProxy(e,t){let n=new Mo;return this.streamContract.claimStreamByProxy(n,{streamId:e,coinType:t})}cancelStream(e,t){let n=new Mo;return this.streamContract.cancelStream(n,{streamId:e,coinType:t}),n}};import{normalizeStructTag as _r,SUI_TYPE_ARG as ip}from"@mysten/sui.js/utils";import{Duration as jc}from"luxon";var Oo=class extends j{constructor(e,t){super(12,`Transaction failed: ${t}`,{context:{status:e,msg:t}})}};var rp=1e3,Po=class{constructor(e){this.globals=e;this.coinMetaHelper=new Lr(e.suiClient),this.createStreamHelper=new Oe(e).createStreamHelper()}coinMetaHelper;createStreamHelper;getStreamIdsFromCreateStreamResponse(e){if(e.effects?.status.status!=="success")throw new Oo(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 X("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 X("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 X("Invalid stream steps: 0");let t=BigInt(e.total.toMillis())/e.steps,n=e.timeStart.plus(jc.fromMillis(Number(t*e.steps))),o={timeStart:e.timeStart,timeEnd:n,interval:jc.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:_r(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:_r(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 X("Stream amount too small","totalAmount",t);if(e.cliffAmount>e.realTotalAmount)throw new X("Invalid cliff settings")}validateTimeline(e){if(e.interval.toMillis()<rp)throw new X("Interval shall be at least 1 second","interval",e.interval)}},Lr=class{constructor(e){this.suiClient=e;this.coinMetaReg=new Map}coinMetaReg;async getCoinMeta(e){let t=_r(e||ip);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}};import{normalizeStructTag as Fc,normalizeSuiAddress as _o}from"@mysten/sui.js/utils";import{DateTime as Kc}from"luxon";import{TransactionBlock as Wo}from"@mysten/sui.js/transactions";import{normalizeStructTag as qc,parseStructTag as lp}from"@mysten/sui.js/utils";import{DateTime as up}from"luxon";var Ro=class extends j{constructor(){super(7,"Connected wallet is not creator")}};var ze=class extends j{constructor(){super(8,"Connected wallet is not recipient")}};var Ge=class extends j{constructor(e,t){super(6,e,{context:t})}};var Ot=class extends j{constructor(e,t={}){super(0,e,t)}};var Bo=class extends j{constructor(e){super(5,"Stream not found",{context:{streamId:e}})}};import{DateTime as sp,Duration as cp}from"luxon";var Uc=(1n<<64n)-1n,Eo=1e3;function jr(a){let e;typeof a=="number"?e=a:typeof a=="bigint"?e=Number(a):e=a.toMillis();let t=Math.round(e/Eo);return sp.fromMillis(t*Eo)}function Ur(a){let e;typeof a=="number"?e=a:typeof a=="bigint"?e=Number(a):e=a.toMillis();let t=Math.round(e/Eo);return cp.fromMillis(t*Eo)}var le=class a{constructor(e,t,n){this.globals=e;this.streamId=t;this.rawData=n;this.streamContract=new Yt(e.envConfig.contract,e)}streamContract;type="Stream";static async new(e,t){let n=await a.fetchStreamData(e,t);return new a(e,t,n)}static fromObjectData(e,t,n){let o=a.parseRawStreamData(t,n);return new a(e,t,o)}get info(){return{name:this.name,creator:this.creator,coinType:this.coinType,totalAmount:this.totalAmount,start:this.timeStart,end:this.timeEnd,cancelable:this.cancelable,cliffAmount:this.cliff,duration:this.duration,interval:this.interval,steps:this.totalSteps,nextReleaseDate:this.nextReleaseDate,nextReleaseAmount:this.nextReleaseAmount,groupId:this.groupId,streamId:this.streamId,recipient:this.recipient,progress:this.progress,autoClaim:this.autoClaim}}get groupCommonInfo(){return{name:this.name,groupId:this.groupId,creator:this.creator,start:this.timeStart,interval:this.interval,steps:this.totalSteps,cancelable:this.cancelable}}async refresh(){this.rawData=await a.fetchStreamData(this.globals,this.streamId)}refreshWithData(e){if(e.data?.objectId!==this.streamId)throw new Ot("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 Ro;let e=new Wo;return this.streamContract.cancelStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async claim(){if(await this.globals.walletAddress()!==this.recipient)throw new ze;let e=new Wo;return this.streamContract.claimStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async setAutoClaim(e){if(await this.globals.walletAddress()!==this.recipient)throw new ze;let t=new Wo;return this.streamContract.setAutoClaim(t,{streamId:this.streamId,coinType:this.coinType,enabled:e}),t}async claimByProxy(){let e=new Wo;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 qc(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 Ur(this.rawData.config.epochInterval)}get groupId(){let{metadata:e}=this.rawData.config;return Xe(e).groupId}get name(){let{metadata:e}=this.rawData.config;return Xe(e).name}get recipient(){return this.rawData.config.recipient}get timeStart(){return jr(this.rawData.config.timeStart)}get duration(){let e=this.rawData.config,t=e.epochInterval*e.totalEpoch;return Ur(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:jr((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===Uc?0n:this.rawData.status.epochClaimed*this.amountPerEpoch+this.cliff}get currentEpoch(){let e=up.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 Bo(e):new Ge(`get stream data: ${t.error.code}`,{streamId:e,...t.error});let n=t.data.content;if(n.dataType!=="moveObject")throw new Ge("Unexpected object type",{gotType:n.dataType});let{typeParams:o}=lp(n.type),i=qc(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 Pe=class extends j{constructor(e,t){super(9,`Invalid stream group: ${e}`,{context:t})}};async function Fr(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 qr=class{constructor(e){this.requester=e;this.curPage=void 0,this.init=!0}curPage;init;async hasNext(){if(this.init)return this.curPage||(this.curPage=await this.requester.doNextRequest()),!!this.curPage.data?.length||this.curPage.hasNext;if(!this.curPage)throw new Error("invalid implementation of iterator");return this.curPage.hasNext}async next(){return this.init?(this.init=!1,this.curPage||(this.curPage=await this.requester.doNextRequest()),this.curPage.data):(this.curPage=await this.requester.doNextRequest(),this.curPage.data)}},Re=class{constructor(e){this.requester=e;this.pager=new qr(e),this.curData=[],this.cursor=0}cursor;pager;curData;async hasNext(){return this.cursor<this.curData.length-1?!0:this.pager.hasNext()}async next(){for(this.cursor+=1;this.cursor>=this.curData.length;)if(await this.pager.hasNext())this.curData=await this.pager.next(),this.cursor=0;else throw new Error("not more data");return this.curData[this.cursor]}};var mp=25;async function Vr(a,e,t){let n=new Qe(e),o=new Ye(a,n,t);return await Fr(o)}var Qe=class{constructor(e){this.ids=e;this.cursor=-1}cursor;async hasNext(){return this.cursor<this.ids.length-1}async next(){if(this.cursor+=1,this.cursor>=this.ids.length)throw new Error("invalid iterator implementation");return this.ids[this.cursor]}},Ye=class extends Re{constructor(t,n,o){super(new Kr(t,n,o));this.suiClient=t;this.idIter=n;this.options=o}},Kr=class{constructor(e,t,n){this.suiClient=e;this.stringIter=t;this.options=n;this.filter=n?.filter,this.pageSize=n?.pageSize||mp,this.objectOptions=n?.objectOptions||{showType:!0,showContent:!0}}filter;pageSize;objectOptions;async doNextRequest(){let e=[];for(;e.length<this.pageSize&&await this.stringIter.hasNext();){let i=await this.stringIter.next();i&&e.push(i)}let t=await this.suiClient.multiGetObjects({ids:e,options:this.objectOptions}),n;if(this.filter){let{filter:o}=this;n=t.filter(i=>o?.(i))}else n=t;return{data:n,hasNext:await this.stringIter.hasNext()}}};var No=class a{constructor(e,t){this.globals=e;this.streams=t;if(t.length===0)throw new Pe("stream size 0");let n=t.map(i=>i.groupId);if(new Set(n).size!==1)throw new X("Stream does not have same group ID")}type="StreamGroup";static async new(e,t){let n=await Vr(e.suiClient,t);return n.forEach(o=>{if(!o)throw new Ot("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=>{pp(n,i)||(o=!1)}),o}async refresh(){let e=await Vr(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)=>le.fromObjectData(e,t[s],i)).filter(i=>!!i);if(new Set(o.map(i=>i.groupId)).size!==1)throw new Pe("Not same group ID");if(!this.checkStreamGroup(o))throw new Pe("Not same stream settings");return o}};function pp(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 Je=class a{constructor(e,t){this.it=e;this.pageSize=t}static async newIncoming(e){let t=await Lo.newIncoming(e);return new a(t,e.pageSize)}static async newOutgoing(e){let t=await Lo.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}},Lo=class a{constructor(e){this.requester=e}cachedNext;static async newIncoming(e){let t=await jo.newIncomingQuery(e);return new a(t)}static async newOutgoing(e){let t=await jo.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 Ot("No more results");return t}let e=this.cachedNext;if(this.cachedNext=void 0,e===null)throw new Ot("No more results");return e}},jo=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 Qe(n.flat().map(s=>s.streamId));this.objectIter=new Ye(e.suiClient,i)}current=0;objectIter;static async newIncomingQuery(e){let t=yp(e.query),n=await e.globals.walletAddress(),i=(await e.globals.backend.getIncomingStreams(n,t)).filter(c=>_o(c.recipient)===_o(n)),s=Vc(i);return new a(e.globals,n,s,e.query)}static async newOutgoingQuery(e){let t=bp(e.query),n=await e.globals.walletAddress(),o=await e.globals.backend.getOutgoingStreams(n,t),i=Vc(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 hp(this.globals,e[0].streamId,this.objectIter);return this.current++,$c(t,this.query)?t:this.doNextRequest()}if(e.length>1){let t=await gp(this.globals,e.map(n=>n.streamId),this.objectIter);return this.current++,fp(t,this.query)?t:this.doNextRequest()}throw new Ot("Stream group with no stream")}};function Vc(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)=>Kc.fromISO(n[0].createDate).toMillis()-Kc.fromISO(t[0].createDate).toMillis())}function $c(a,e){if(e===void 0)return!0;let t=dp(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 dp(a,e){return e===void 0?!0:Array.isArray(e)?e.includes(a.progress.status):a.progress.status===e}function fp(a,e){if(!e)return!0;let t=!1;return a.streams.forEach(n=>{$c(n,e)&&(t=!0)}),t}async function hp(a,e,t){let n=await Hc(t,e);return le.fromObjectData(a,e,n)}async function gp(a,e,t){let n=[];for(;n.length<e.length;){let o=await Hc(t,e[n.length]);n.push(o)}return No.newFromObjectResponse(a,e,n)}async function Hc(a,e){if(!await a.hasNext())throw new Ot("object iterator has been consumed");let t=await a.next();if(!t||t.error||t.data===void 0||t.data===null)throw new Ot("object iterator undefined response",{cause:t?.error});if(t?.data?.objectId!==e)throw new Ot("stream id not aligned");return t}function yp(a){return{status:$r(a?.status),coinType:Xc(a?.coinType),sender:zc(a?.sender)}}function bp(a){return{status:$r(a?.status),coinType:Xc(a?.coinType),recipient:zc(a?.recipient)}}function $r(a){return a===void 0||a.length===0?"all":Array.isArray(a)?a.reduce((e,t)=>{let n=$r(t);return!e||e===n?n:"all"},void 0):Tp(a)}function Tp(a){switch(a){case"STREAMING":case"STREAMED":case"CANCELED":return"active";case"COMPLETED":case"SETTLED":return"inactive";default:throw new X("Unknown stream filtered status")}}function Xc(a){if(a)return Array.isArray(a)?a.length!==0?a.map(e=>Fc(e)):void 0:Fc(a)}function zc(a){if(a)return Array.isArray(a)?a.length!==0?a.map(e=>_o(e)):void 0:_o(a)}var Uo=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}};var Sp=25;async function Gc(a,e,t,n="0x2::sui::SUI",o=Sp){let i=new Hr(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 Uo(n,t,s);return c}var Hr=class extends Re{constructor(t,n,o,i){super(new Xr(t,n,o,i));this.suiClient=t;this.owner=n;this.coinType=o;this.reqPageSize=i}},Xr=class{constructor(e,t,n,o){this.suiClient=e;this.owner=t;this.coinType=n;this.reqPageSize=o;if(o<=0)throw new Ot("Invalid reqPageSize")}nextCursor;async doNextRequest(){let e=await this.suiClient.getCoins({owner:this.owner,coinType:this.coinType,cursor:this.nextCursor,limit:this.reqPageSize});return this.nextCursor=e.nextCursor,{data:e.data,hasNext:e.hasNextPage}}};var zr=class{constructor(e){this.msafe=e}get type(){return"msafe"}async address(){return this.msafe.address()}async requestCoins(e){return this.msafe.requestCoins(e)}},qo=class{constructor(e){this.account=e}async address(){return this.account.address}},Gr=class{constructor(e,t){this.singleWallet=e;this.suiClient=t}get type(){return"single"}async address(){return this.singleWallet.address()}async requestCoins(e){return Promise.all(e.map(t=>this.requestCoin(t)))}async requestCoin(e){if(vo(e.coinType,wp))return{primaryCoin:Ao};if(e.amount<=0)throw new X("Invalid coin request","coinAmount",e.amount);let t=await Gc(this.suiClient,await this.address(),e.amount,e.coinType);if(t.length===0)throw new Ot("no coins available");return{primaryCoin:t[0].coinObjectId,mergedCoins:t.slice(1).map(n=>n.coinObjectId)}}},Fo=class{globals;helper;constructor(e,t){this.globals=ve.new(e,t),this.helper=new Po(this.globals)}connectSingleWallet(e){let t=new Gr(e,this.globals.suiClient);this.globals.connectWallet(t)}connectMSafeAccount(e){let t=new zr(e);this.globals.connectWallet(t)}async createStream(e){return this.builder().createStreams(e)}async getStream(e){return le.new(this.globals,e)}async getIncomingStreams(e,t=10){return Je.newIncoming({globals:this.globals,query:e,pageSize:t})}async getOutgoingStreams(e,t=10){return Je.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=>Ip(n))}async getRecipientsForStreamFilter(e){let t=await this.wallet.address();return(await this.globals.backend.getAllRecipients(t,e)).map(o=>Qc(o))}async getCreatorsForStreamFilter(e){let t=await this.wallet.address();return(await this.globals.backend.getAllSenders(t,e)).map(o=>Qc(o))}get wallet(){return this.globals.wallet}builder(){return new Oe(this.globals)}};var Kt=class extends _t{application="mpay";getClient(e,t){let n=new Fo(e==="sui:mainnet"?"prod":"dev");return n.connectSingleWallet(new qo(t)),n}};var Ze=class extends Kt{constructor(t){super(t);this.data=t}txType=Dp.Stream;txSubType="Cancel";async build(t){let{network:n,account:o}=t;return(await this.getClient(n,o).getStream(this.data.streamId)).cancel()}};import{TransactionType as xp}from"@msafe/sui3-utils";var tn=class extends Kt{constructor(t){super(t);this.data=t}txType=xp.Stream;txSubType="ClaimByProxy";async build(t){let{network:n,account:o}=t;return(await this.getClient(n,o).getStream(this.data.streamId)).claimByProxy()}};import{TransactionType as kp}from"@msafe/sui3-utils";var en=class extends Kt{constructor(t){super(t);this.data=t}txType=kp.Stream;txSubType="Claim";async build(t){let{network:n,account:o}=t;return(await this.getClient(n,o).getStream(this.data.streamId)).claim()}};import{TransactionType as vp}from"@msafe/sui3-utils";var nn=class extends Kt{constructor(t){super(t);this.data=t}txType=vp.Stream;txSubType="CreateStream";async build(t){let{network:n,account:o}=t;return this.getClient(n,o).createStream(this.data)}};import{bcs as Yc}from"@mysten/sui.js/bcs";import{normalizeStructTag as Ap,normalizeSuiAddress as on}from"@mysten/sui.js/utils";var Be=class a{constructor(e,t){this.moveCall=e;this.txb=t}decodeSharedObjectId(e){let t=this.getInputParam(e);return a.getSharedObjectId(t)}decodeOwnedObjectId(e){let t=this.getInputParam(e);return a.getOwnedObjectId(t)}decodeInputU64(e){let t=this.decodePureArg(e,"u64");return BigInt(t)}decodeInputAddress(e){let t=this.decodePureArg(e,"address");return on(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 Yc.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 on(e.value.Object.ImmOrOwned.objectId)}return on(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return on(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return on(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 Yc.de(t,new Uint8Array(n))}typeArg(e){return Ap(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};var Ko=class{constructor(e,t){this.globals=e;this.txb=t}decode(){let e=this.decodeCreateStreamInfo(),t=this.createStreamHelper().calculateCreateStreamFees(e);return{type:"CreateStream",info:e,fees:t}}decodeCreateStreamInfo(){let t=this.createStreamTransactions().map(n=>this.getCreationInfoFromMoveCall(n));return this.aggregateGroupStreamInfo(t)}createStreamTransactions(){let e=this.transactions.filter(t=>t.kind==="MoveCall"&&ce(t.target,this.contract.createStreamTarget));if(e.length===0)throw new Ot("No create stream transactions");return e.map(t=>new Be(t,this.txb))}getCreationInfoFromMoveCall(e){let t=e.decodeInputString(4),{name:n,groupId:o}=Xe(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),D=e.typeArg(0);return{name:n,groupId:o,recipient:i,timeStart:s,cliff:c,epochInterval:p,totalEpoch:b,amountPerEpoch:S,cancelable:I,coinType:D}}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 X("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 Yt(this.globals.envConfig.contract,this.globals)}get feeContract(){return new Me(this.globals.envConfig.contract,this.globals)}createStreamHelper(){return new he(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 Vo=class{constructor(e,t){this.globals=e;this.txb=t;this.contract=new Yt(e.envConfig.contract,e)}contract;decode(){if(this.isCreateStreamTransaction())return this.decodeCreateStreamTransaction();if(this.isClaimByProxyTransaction())return this.decodeClaimByProxyTransaction();if(this.isSetAutoClaimTransaction())return this.decodeSetAutoClaimTransaction();if(this.isCancelStreamTransaction())return this.decodeCancelStreamTransaction();if(this.isClaimStreamTransaction())return this.decodeClaimTransaction();throw new Error("Unknown stream transaction type")}get transactions(){return this.txb.blockData.transactions}isCreateStreamTransaction(){return this.transactions.findIndex(t=>t.kind==="MoveCall"&&ce(t.target,this.contract.createStreamTarget))!==-1}isSetAutoClaimTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&ce(this.transactions[0].target,this.contract.setAutoClaimTarget)}isCancelStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&ce(this.transactions[0].target,this.contract.cancelStreamTarget)}isClaimStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&ce(this.transactions[0].target,this.contract.claimStreamTarget)}isClaimByProxyTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&ce(this.transactions[0].target,this.contract.claimStreamByProxyTarget)}decodeCreateStreamTransaction(){return new Ko(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 Be(e,this.txb)}};import{TransactionType as Mp}from"@msafe/sui3-utils";var an=class extends Kt{constructor(t){super(t);this.data=t}txType=Mp.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 $o=class{application="mpay";supportSDK="@mysten/sui.js";async deserialize(e){let{network:t,transactionBlock:n}=e,o=ve.new(t==="sui:mainnet"?"prod":"dev"),s=new Vo(o,n).decode(),c;switch(s.type){case"CreateStream":c=new nn(s.info);break;case"SetAutoClaim":c=new an({streamId:s.streamId,enabled:s.enabled});break;case"Claim":c=new en({streamId:s.streamId});break;case"ClaimByProxy":c=new tn({streamId:s.streamId});break;case"Cancel":c=new Ze({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 nn(t);break;case"Claim":n=new en(t);break;case"ClaimByProxy":n=new tn(t);break;case"SetAutoClaim":n=new an(t);break;case"Cancel":n=new Ze(t);break;default:throw new Error("not implemented")}return n.build({...e})}};import{TransactionDefaultApplication as Rp,TransactionSubTypes as Jc}from"@msafe/sui3-utils";import{buildCoinTransferTxb as Op}from"@msafe/sui3-utils";var Ho=class a extends _t{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t;return Op(n,this.data,o.address)}static fromData(t){return new a(t)}};import{buildObjectTransferTxb as Pp}from"@msafe/sui3-utils";var Xo=class a extends _t{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t;return Pp(n,this.data,o.address)}static fromData(t){return new a(t)}};var zo=class{application="msafe-core";supportSDK="@mysten/sui.js";constructor(){this.application=Rp}deserialize(){throw new Error("MSafe core transaction intention should be build from API")}async build(e){let{suiClient:t,account:n}=e,o;switch(e.txSubType){case Jc.assets.coin.send:o=Ho.fromData(e.intentionData);break;case Jc.assets.object.send:o=Xo.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};import{TransactionType as cl}from"@msafe/sui3-utils";var Zc=!1,rn={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 Qr(){if(!Zc)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&&(rn.ProtocolPackage=e),t&&(rn.borrowFee=t),n&&(rn.borrowFeeAddress=n),o&&(rn.pool=o),Zc=!0}catch(a){console.error(a.message)}}var Ht=rn;import{TransactionType as ye}from"@msafe/sui3-utils";import{normalizeStructTag as Ep,normalizeSuiAddress as sn}from"@mysten/sui/utils";import{bcs as tl}from"@mysten/sui.js/bcs";var Go=class{constructor(e){this.txb=e}decode(){if(console.log("txb",this.txb),this.isClaimRewardTransaction())return this.decodeClaimReward();if(this.isEntryBorrowTransaction())return this.decodeEntryBorrow();if(this.isEntryBorrowWithFeeTransaction())return this.decodeEntryBorrow();if(this.isEntryMultiDepositTransaction())return this.decodeEntryMultiDeposit();if(this.isEntryDepositTransaction())return this.decodeEntryDeposit();if(this.isEntryRepayTransaction())return this.decodeEntryRepay();if(this.isEntryWithdrawTransaction())return this.decodeEntryWithdraw();if(this.isEntryClaimAndDepositTransaction())return this.decodeEntryClaimAndDeposit();throw new Error("Unknown transaction type")}get transactions(){return this.txb.blockData.transactions}getMoveCallTransaction(e){return this.transactions.find(t=>t.kind==="MoveCall"&&t.target===e)}isClaimRewardTransaction(){return!!this.transactions.find(t=>!!(t.kind==="MoveCall"&&t.target.includes("claim_reward")))}isEntryBorrowTransaction(){return!!this.getMoveCallTransaction(`${Ht.ProtocolPackage}::incentive_v3::entry_borrow_v2`)}isEntryBorrowWithFeeTransaction(){return!!this.getMoveCallTransaction(`${Ht.ProtocolPackage}::incentive_v3::borrow_v2`)}isEntryMultiDepositTransaction(){let e=`${Ht.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=`${Ht.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(`${Ht.ProtocolPackage}::incentive_v3::entry_deposit`)}isEntryRepayTransaction(){return!!this.getMoveCallTransaction(`${Ht.ProtocolPackage}::incentive_v3::entry_repay`)}isEntryWithdrawTransaction(){return!!this.getMoveCallTransaction(`${Ht.ProtocolPackage}::incentive_v3::withdraw_v2`)}findPoolByAssetId(e){let t=Object.values(Ht.pool).find(n=>n.assetId===e);if(!t)throw new Error("Pool not found");return t}decodeEntryClaimAndDeposit(){return{txType:ye.Other,type:"EntryClaimAndDeposit",intentionData:{type:"entry_claim_and_deposit"}}}decodeClaimReward(){return console.log("decode claims"),{txType:ye.Other,type:"ClaimReward",intentionData:{type:"claim_reward"}}}decodeEntryBorrow(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(5);return{txType:ye.Other,type:"EntryBorrow",intentionData:{amount:t,assetId:e}}}decodeEntryMultiDeposit(){let e=[],t=`${Ht.ProtocolPackage}::incentive_v3::entry_deposit`;return this.transactions.forEach(n=>{if(n.kind==="MoveCall"&&n.target===t){let o=new Qo(n,this.txb),i=o.decodeInputU8(3),s=o.decodeInputU64(5);e.push({assetId:i,amount:s})}}),{txType:ye.Other,type:"EntryMultiDeposit",intentionData:{list:e}}}decodeEntryDeposit(){let e=this.helper.decodeInputU8(3),t=this.helper.decodeInputU64(5);return{txType:ye.Other,type:"EntryDeposit",intentionData:{amount:t,assetId:e}}}decodeEntryRepay(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(6);return{txType:ye.Other,type:"EntryRepay",intentionData:{amount:t,assetId:e}}}decodeEntryWithdraw(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(5);return{txType:ye.Other,type:"EntryWithdraw",intentionData:{amount:t,assetId:e}}}get helper(){let e=this.transactions.find(t=>t.kind==="MoveCall"&&t.target.startsWith(Ht.ProtocolPackage));return new Qo(e,this.txb)}},Qo=class a{constructor(e,t){this.moveCall=e;this.txb=t}decodeSharedObjectId(e){let t=this.getInputParam(e);return a.getSharedObjectId(t)}decodeOwnedObjectId(e){let t=this.getInputParam(e);return a.getOwnedObjectId(t)}decodeInputU64(e){let t=this.decodePureArg(e,"u64");return Number(t)}decodeInputU8(e){let t=this.decodePureArg(e,"u8");return Number(t)}decodeInputAddress(e){let t=this.decodePureArg(e,"address");return sn(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 tl.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 sn(e.value.Object.ImmOrOwned.objectId)}return sn(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return sn(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return sn(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 tl.de(t,new Uint8Array(n))}typeArg(e){return Ep(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};import{Transaction as el}from"@mysten/sui/transactions";import{depositCoinPTB as Wp,withdrawCoinPTB as Np,repayCoinPTB as _p,borrowCoinPTB as Lp,claimLendingRewardsPTB as nl,getUserAvailableLendingRewards as ol}from"@naviprotocol/lending";async function Ee(a,e,t,n){return await Wp(a,e,t,{amount:n}),a}async function al(a,e,t,n){let[o]=await Np(a,e,t);return a.transferObjects([o],a.pure.address(n)),a}async function il(a,e,t,n){let[o]=await Lp(a,e,t);return a.transferObjects([o],a.pure.address(n)),a}async function Yr(a,e,t,n){return await _p(a,e,t,{amount:n}),a}async function rl(a,e){let t=new el,n=await ol(e,{client:a});return await nl(t,n),t}async function sl(a,e){let t=new el,n=await ol(e,{client:a});return await nl(t,n,{customCoinReceive:{type:"depositNAVI",depositNAVI:{fallbackReceiveAddress:e}}}),t}var Yo=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{type:n}=this.data;return console.log("claim reward",n),await rl(t.suiClient,t.account.address)}static fromData(t){return new a(t)}};var Jo=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{type:n}=this.data;return console.log("claim reward and supply",n),await sl(t.suiClient,t.account.address)}static fromData(t){return new a(t)}};import{Transaction as Up}from"@mysten/sui/transactions";import{getPool as jp}from"@naviprotocol/lending";async function Jt(a){return jp(a)}var Zo=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{assetId:n,amount:o}=this.data,i=new Up;console.log("build",this.data);let s=await Jt(n);return await il(i,s,o,t.account.address)}static fromData(t){return new a(t)}};import{Transaction as qp}from"@mysten/sui/transactions";async function We(a,e,t){let n=await a.getCoins({owner:e,coinType:t});return console.log("getTokenObjs",e,n),n}var ta=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{assetId:i,amount:s}=this.data,c=new qp;console.log("build",this.data);let p=await Jt(i);if(i===0){let[D]=c.splitCoins(c.gas,[s]);return await Ee(c,p,D,s)}let b=await We(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 D=1;for(;D<b.data.length;)c.mergeCoins(S,[b.data[D].coinObjectId]),D++}return await Ee(c,p,c.object(S),s)}static fromData(t){return new a(t)}};import{Transaction as Fp}from"@mysten/sui/transactions";var ea=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{assetId:i,amount:s}=this.data,c=new Fp;console.log("build",this.data);let p=await Jt(i);if(i===0){let[I]=c.splitCoins(c.gas,[s]);return Yr(c,p,I,s)}let b=await We(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 Yr(c,p,c.object(S),s)}static fromData(t){return new a(t)}};import{Transaction as Kp}from"@mysten/sui/transactions";var na=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{assetId:n,amount:o}=this.data,i=new Kp;console.log("build",this.data);let s=await Jt(n);return await al(i,s,o,t.account.address)}static fromData(t){return new a(t)}};import{Transaction as Vp}from"@mysten/sui/transactions";var oa=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{list:i}=this.data,s=new Vp;console.log("build",this.data);for(let c=0;c<i.length;c++){let{assetId:p,amount:b}=i[c],S=await Jt(p);if(p===0){let[x]=s.splitCoins(s.gas,[b]);await Ee(s,S,x,b);continue}let I=await We(n,o.address,S.suiCoinType);if(!I.data[0])throw new Error(`Insufficient balance for ${S.suiCoinType} Token`);let D=I.data[0].coinObjectId;if(I.data.length>=2){let x=1;for(;x<I.data.length;)s.mergeCoins(D,[I.data[x].coinObjectId]),x++}await Ee(s,S,s.object(D),b)}return s}static fromData(t){return new a(t)}};import{Transaction as $p}from"@mysten/sui/transactions";var aa=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return console.log("build",this.data),$p.from(this.data.content)}static fromData(t){return new a(t)}};var ia=class{application="navi";supportSDK="@mysten/sui";async deserialize(e){if(await Qr(),e.appContext?.content)return{txType:cl.Other,txSubType:"PlainTransaction",intentionData:{content:e.appContext.content,scene:e.appContext.scene||"unknown"}};let{transaction:t}=e,o=new Go(t).decode();return{txType:cl.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n}=e,o;switch(await Qr(),e.txSubType){case"EntryDeposit":o=ta.fromData(e.intentionData);break;case"EntryBorrow":o=Zo.fromData(e.intentionData);break;case"EntryRepay":o=ea.fromData(e.intentionData);break;case"EntryWithdraw":o=na.fromData(e.intentionData);break;case"EntryMultiDeposit":o=oa.fromData(e.intentionData);break;case"ClaimReward":o=Yo.fromData(e.intentionData);break;case"EntryClaimAndDeposit":o=Jo.fromData(e.intentionData);break;case"PlainTransaction":o=aa.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};import{TransactionSubTypes as Hp,TransactionType as ll}from"@msafe/sui3-utils";import{fromHex as Xp}from"@mysten/bcs";import{Transaction as zp}from"@mysten/sui/transactions";import Gp from"sort-keys-recursive";var ul="msafe-plain-tx",ml=Hp.others.plain,Jr=class a{constructor(e){this.data=e}application=ul;txType=ll.Other;txSubType=ml;serialize(){return JSON.stringify(Gp(this.data))}async build(e){return zp.from(Xp(this.data.content))}static fromData(e){return new a(e)}},ra=class{application;supportSDK="@mysten/sui";constructor(){this.application=ul}async deserialize(e){let{content:t}=e.appContext;return{txType:ll.Other,txSubType:ml,intentionData:{content:t}}}async build(e){let{suiClient:t,network:n,account:o}=e;return Jr.fromData(e.intentionData).build({suiClient:t,network:n,account:o})}};import{SuiClient as pl}from"@mysten/sui/client";import{Transaction as nd}from"@mysten/sui/transactions";import{SuiClient as es}from"@mysten/sui.js/client";import{TransactionBlock as od}from"@mysten/sui.js/transactions";import{RequestManager as Zp,HTTPTransport as td,Client as ed}from"@open-rpc/client-js";var Qp={"-32700":"ParseError","-32600":"InvalidRequest","-32601":"MethodNotFound","-32602":"InvalidParams","-32603":"InternalError"},Zr=class extends Error{},sa=class extends Zr{code;type;constructor(e,t){super(e),this.code=t,this.type=Qp[t]??"ServerError"}};function Yp(a){let e=new URL(a);return e.protocol=e.protocol.replace("http","ws"),e.toString()}var Jp={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5},ca=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={...Jp,...t},this.endpoint&&this.endpoint.startsWith("http")&&(this.endpoint=Yp(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 sa(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 ts(e);return this.#i.add(t),await t.subscribe(this),()=>t.unsubscribe(this)}},ts=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 ue=class{rpcClient;websocketClient;constructor({url:e,websocket:{url:t,...n}={},rpc:o}){let i=new td(o?.url??e,{headers:{"Content-Type":"application/json",...o?.headers}});this.rpcClient=new ed(new Zp([i])),this.websocketClient=new ca(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 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;default:throw new Error(`${o.application}: ${o.supportSDK} SDK not supported`)}}return t}addLegacyHelper(e){this.apps.set(e.application,new os(e))}addHelper(e){this.apps.set(e.application,new ns(e))}getAppHelper(e){let t=this.apps.get(e);if(!t)throw new Error(`${e} not registered`);return t}},ns=class{constructor(e){this.helper=e}async deserialize(e){let t=new pl({transport:new ue({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=new es({transport:new ue({url:e.clientUrl,rpc:{url:e.clientUrl}})}),o=await e.transactionBlock.build({client:n}),i=nd.from(o);return this.helper.deserialize({...e,suiClient:t,transaction:i})}async build(e){let t=new pl({transport:new ue({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=await t.getBalance({owner:e.account.address});if(Number(n.totalBalance)<1e8)throw new Error("Insufficient gas fee");let o=await this.helper.build({...e,suiClient:t});o.setSender(e.account.address);let i=await o.build({client:t});return od.from(i)}},os=class{constructor(e){this.helper=e}async deserialize(e){let t=new es({transport:new ue({url:e.clientUrl,rpc:{url:e.clientUrl}})});return this.helper.deserialize({...e,transactionBlock:e.transactionBlock,suiClient:t})}async build(e){let t=new es({transport:new ue({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=await t.getBalance({owner:e.account.address});if(Number(n.totalBalance)<1e8)throw new Error("Insufficient gas fee");return this.helper.build({...e,suiClient:t})}};import{TransactionType as dd}from"@msafe/sui3-utils";import{getFullnodeUrl as fd}from"@mysten/sui/client";import{Scallop as hd}from"@scallop-io/sui-scallop-sdk";import{TransactionType as Et}from"@msafe/sui3-utils";import{OLD_BORROW_INCENTIVE_PROTOCOL_ID as yl}from"@scallop-io/sui-scallop-sdk";import{parseStructTag as ad}from"@mysten/sui/utils";var me=class{constructor(e,t){this.transaction=e;this.scallopClient=t;this.scallopClient=t,this.inputs=e.getData().inputs,this.commands=e.getData().commands,this.movecallsAsSet=new Set(this.commands.filter(this.isMoveCall).map(n=>`${n.MoveCall.package}::${n.MoveCall.module}::${n.MoveCall.function}`))}inputs;commands;movecallsAsSet;get address(){return this.scallopClient.address}get utils(){return this.scallopClient.utils}get coreId(){return{protocolPkg:this.address.get("core.packages.protocol.id"),market:this.address.get("core.market"),version:this.address.get("core.version"),coinDecimalsRegistry:this.address.get("core.coinDecimalsRegistry"),xOracle:this.address.get("core.oracles.xOracle"),spoolPkg:this.address.get("spool.id"),borrowIncentivePkg:this.address.get("borrowIncentive.id"),veScaPkgId:this.address.get("vesca.id"),veScaObjId:this.address.get("vesca.object"),scoin:this.address.get("scoin.id"),referral:this.address.get("referral.id")}}matchMoveCallCommand(e,t){let{address:n,module:o,name:i}=ad(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)}};import{bcs as as}from"@mysten/sui/bcs";import{normalizeStructTag as id,normalizeSuiAddress as cn}from"@mysten/sui/utils";var is=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]}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 cn(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=as[t];return as[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 cn(e.value.Object.ImmOrOwned.objectId)}return cn(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return cn(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return cn(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 as.U64.parse(new Uint8Array(t))}typeArg(e){return id(this.txBlockTransactions.typeArguments[e])}txArg(e){return this.transaction.blockData.inputs[e]}},W=is;var rs=class{constructor(e,t){this.splitCoin=e;this.txb=t}getAmountInput(){return this.splitCoin.amounts.map(e=>{if(e.kind==="Input")return Number(W.getPureInputValue(e,"U64"))}).filter(e=>e!==void 0)}},Nt=rs;import{normalizeStructTag as dl,SUI_CLOCK_OBJECT_ID as fl,SUI_TYPE_ARG as rd}from"@mysten/sui/utils";var hl=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`},Ne={id:"0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",incentivePools:"0x64972b713ccec45ec3964809e477cea6f97350c0c50ca3aec85bb631639266ec",incentiveAccounts:"0x3c0b707068bdcea8bb859d751ad3e2149a9f83c13fcf4054ef91372a00bccdd3"},Vt={unstakeObligation:(a,e,t)=>a.moveCall(`${Ne.id}::user::unstake`,[Ne.incentivePools,Ne.incentiveAccounts,a.object(e),a.object(t),fl],[dl(rd)]),redeem_rewards:(a,e,t,n)=>a.moveCall(`${Ne.id}::user::redeem_rewards`,[Ne.incentivePools,Ne.incentiveAccounts,a.object(e),a.object(t),fl],[dl(n)])};var gl=(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 me{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(`${yl}::user::redeem_rewards`),t=this.hasMoveCallCommand(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`),n=this.hasMoveCallCommand(`${this.coreId.borrowIncentivePkg}::user::stake`);return e&&(t||n)}get helperClaimLendingReward(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${this.coreId.spoolPkg}::user::redeem_rewards`)).map(t=>new W(t,this.transaction))}get helperClaimBorrowV2Reward(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${this.coreId.borrowIncentivePkg}::user::redeem_rewards`)).map(t=>new W(t,this.transaction))}get helperStakeObligationWithVeSca(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`));return new W(e,this.transaction)}get helperClaimBorrowReward(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${yl}::user::redeem_rewards`)).map(t=>new W(t,this.transaction))}get helperMint(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::mint::mint`));return new W(e,this.transaction)}get helperUnstakes(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${this.coreId.spoolPkg}::user::unstake`)).map(t=>new W(t,this.transaction))}get helperRedeems(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::redeem::redeem`)).map(t=>new W(t,this.transaction))}get helperRedeem(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::redeem::redeem`));return new W(e,this.transaction)}get helperBurnScoin(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.scoin}::s_coin_converter::burn_s_coin`));return new W(e,this.transaction)}get helperStake(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.spoolPkg}::user::stake`));return new W(e,this.transaction)}get helperUnstake(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.spoolPkg}::user::unstake`));return new W(e,this.transaction)}get helperDepositCollateral(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::deposit_collateral::deposit_collateral`));return new W(e,this.transaction)}get helperWithdrawCollateral(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::withdraw_collateral::withdraw_collateral`));return new W(e,this.transaction)}get helperBorrow(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::borrow::borrow`));return new W(e,this.transaction)}get helperBorrowWithReferral(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::borrow::borrow_with_referral`));return new W(e,this.transaction)}get helperRepay(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::repay::repay`));return new W(e,this.transaction)}decodeMigrateScoin(){return{txType:Et.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:Et.Other,type:"MigrateAndClaim",intentionData:{obligationKey:t,obligationId:n,rewardCoinName:o,veScaKey:e}}}decodeOpenObligation(){return{txType:Et.Other,type:"OpenObligation",intentionData:{}}}decodeSupplyLending(){let e=this.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),t=this.helperMint.getNestedInputParam(2),n=new Nt(t,this.transaction).getAmountInput().reduce((o,i)=>o+i,0);return{txType:Et.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 Nt(t,this.transaction).getAmountInput().reduce((o,i)=>o+i,0);return{txType:Et.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 Nt(t,this.transaction).getAmountInput().reduce((o,i)=>o+i,0);return{txType:Et.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 Nt(t,this.transaction).getAmountInput().reduce((i,s)=>i+s,0),o=this.helperDepositCollateral.decodeSharedObjectId(1);return{txType:Et.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:Et.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:Et.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:Et.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:Et.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 Nt(t,this.transaction).getAmountInput().reduce((i,s)=>i+s,0),o=this.helperRepay.decodeSharedObjectId(1);return{txType:Et.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 Nt(n,this.transaction).getAmountInput().reduce((s,c)=>s+c,0),i=this.helperRepay.decodeSharedObjectId(1);return{txType:Et.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 Nt(i,this.transaction).getAmountInput().reduce((s,c)=>s+c,0)}if(this.helperStake.moveCall&&t===0){let i=this.helperStake.getNestedInputParam(2);t=new Nt(i,this.transaction).getAmountInput().reduce((s,c)=>s+c,0)}let n=this.helperStake.typeArg(0),o=this.utils.parseCoinNameFromType(n);return{txType:Et.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:Et.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 Nt(t,this.transaction).getAmountInput().reduce((i,s)=>i+s,0),o;return this.isCreateStakeAccountTransaction()||(o=this.helperStake.decodeOwnedObjectId(1)),{txType:Et.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 Nt(o,this.transaction).getAmountInput().reduce((i,s)=>i+s,0)}return{txType:Et.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:Et.Other,type:"ClaimIncentiveReward",intentionData:{lendingIncentive:e,borrowIncentiveV2:t,borrowIncentive:n}}}};import{TransactionType as cs}from"@msafe/sui3-utils";var ma=class extends me{decode(){if(this.isCreateReferralLink())return this.decodeCreateReferralLink();if(this.isClaimRevenueReferral())return this.decodeClaimRevenueReferral();if(this.isBindReferral())return this.decodeBindReferral()}isClaimRevenueReferral(){return this.hasMoveCallCommand(`${this.coreId.referral}::referral_revenue_pool::claim_revenue_with_ve_sca_key`)}isCreateReferralLink(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_placeholder_key`)}isBindReferral(){return this.hasMoveCallCommand(`${this.coreId.referral}::referral_bindings::bind_ve_sca_referrer`)}get helperClaimRevenueReferral(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${this.coreId.referral}::referral_revenue_pool::claim_revenue_with_ve_sca_key`)).map(t=>new W(t,this.transaction))}get helperBindReferral(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.referral}::referral_bindings::bind_ve_sca_referrer`));return new W(e,this.transaction)}decodeCreateReferralLink(){return{txType:cs.Other,type:"CreateReferralLink",intentionData:{}}}decodeClaimRevenueReferral(){let e=this.helperClaimRevenueReferral[0].decodeOwnedObjectId(2),t=this.helperClaimRevenueReferral.map(n=>n.typeArg(0));return{txType:cs.Other,type:"ClaimRevenueReferral",intentionData:{veScaKey:e,coins:t}}}decodeBindReferral(){let e=this.helperBindReferral.decodePureArg(1,"Address");return{txType:cs.Other,type:"BindReferral",intentionData:{veScaKey:e}}}};import{TransactionType as ee}from"@msafe/sui3-utils";import{OLD_BORROW_INCENTIVE_PROTOCOL_ID as sd}from"@scallop-io/sui-scallop-sdk";var pa=class extends me{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=gl(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 W(e,this.transaction)}get helperStakeSca(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_key`));return new W(e,this.transaction)}get helperExtendStakePeriod(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`));return new W(e,this.transaction)}get helperRedeemSca(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.veScaPkgId}::ve_sca::redeem`));return new W(e,this.transaction)}get helperRenewExpired(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.veScaPkgId}::ve_sca::renew_expired_ve_sca`));return new W(e,this.transaction)}get helperOldUnstakeObligation(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${sd}::user::unstake`));return new W(e,this.transaction)}get helperUnstakeObligation(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.borrowIncentivePkg}::user::unstake_v2`));return new W(e,this.transaction)}get helperStakeObligationWithVeSca(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`));return new W(e,this.transaction)}getMergeSplitVeScaHelper(e){let t=this.commands.find(n=>this.filterMoveCallCommands(n,`${this.coreId.veScaPkgId}::ve_sca::${e}`));return new W(t,this.transaction)}getVeScaObligationBindingHelpers(){let e=`${this.coreId.borrowIncentivePkg}::user::unstake_v2`,t=`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`,n=`${this.coreId.borrowIncentivePkg}::user::deactivate_boost_v2`,o=[],i=0,s=0,c=0;return this.commands.forEach(p=>{this.filterMoveCallCommands(p,e)?(o.push({action:"unstake",helper:new W(p,this.transaction,i)}),i++):this.filterMoveCallCommands(p,t)?(o.push({action:"stake",helper:new W(p,this.transaction,s)}),s++):this.filterMoveCallCommands(p,n)&&(o.push({action:"deactivate",helper:new W(p,this.transaction,c)}),c++)}),o}decodeRedeemSca(){let e=this.helperRedeemSca.decodeOwnedObjectId(1);return{txType:ee.Other,type:"RedeemSca",intentionData:{veScaKey:e}}}decodeRenewExpiredVeSca(){let e=this.helperRenewExpired.getNestedInputParam(4),t=this.helperRenewExpired.decodeInputU64(5),n=new Nt(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,D,x=[{condition:s,isOld:!0},{condition:c,isOld:!1},{condition:p,isOld:!1}];for(let k=0;k<x.length;k++)x[k].condition.length>1&&([D,I]=x[k].condition,b=!0,S=x[k].isOld);return{txType:ee.Other,type:"RenewExpStakePeriod",intentionData:{amount:n,unlockTime:t,obligationId:I,obligationKey:D,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:ee.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 Nt(e,this.transaction).getAmountInput().reduce((x,k)=>x+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,D=[{condition:o,isOld:!0},{condition:i,isOld:!1},{condition:c,isOld:!1}];for(let x=0;x<D.length;x++)D[x].condition.length>1&&([I,S]=D[x].condition,p=!0,b=D[x].isOld);return{txType:ee.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 Nt(e,this.transaction).getAmountInput().reduce((x,k)=>x+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,D=[{condition:o,isOld:!0},{condition:i,isOld:!1},{condition:c,isOld:!1}];for(let x=0;x<D.length;x++)D[x].condition.length>1&&([I,S]=D[x].condition,p=!0,b=D[x].isOld);return{txType:ee.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:ee.Other,type:"MergeVeSca",intentionData:t}}decodeSplitVesca(){let e=this.getMergeSplitVeScaHelper("split"),t={targetVeScaKey:e.decodeOwnedObjectId(1),splitAmount:e.decodeInputU64(4)};return{txType:ee.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:ee.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:ee.Other,type:"TransferVeScaKeys",intentionData:{veScaKeys:i}}}};import cd from"sort-keys-recursive";var A=class{constructor(e){this.data=e}get application(){return"msafe-core"}serialize(){return JSON.stringify(cd(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 da=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async borrow({account:t,scallopClient:n}){let{coinName:o,amount:i,obligationId:s,obligationKey:c}=this.data,p=t.address;return(await this.buildTxWithRefreshObligation(n,{walletAddress:p,obligationId:s,obligationKey:c},async(S,I)=>{let D=await I.borrowQuick(+i,o,s,c);I.transferObjects([D],p)})).txBlock}async build(t){return this.borrow(t)}static fromData(t){return new a(t)}};var fa=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async borrowWithBoost(t,n){let{obligationId:o,obligationKey:i,veScaKey:s,amount:c,coinName:p}=this.data;return(await this.buildTxWithRefreshObligation(t,{walletAddress:n,obligationId:o,obligationKey:i,veScaKey:s},async(S,I)=>{let D=await I.borrowQuick(+c,p,o,i);I.transferObjects([D],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}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,D)=>{let x=D.claimReferralTicket(p),k=await D.borrowWithReferralQuick(+b,p,x,i,s);D.burnReferralTicket(x,p),D.transferObjects([k],o)})).txBlock}async build(t){return this.borrowWithReferral(t)}static fromData(t){return new a(t)}};import{SUI_TYPE_ARG as ld}from"@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 D=[...e.constants.whitelist.spool].map(x=>e.utils.parseCoinName(x));return Object.values(i??[]).filter(x=>!!x&&D.includes(x.coinName)).reduce((x,k)=>{let M=e.utils.parseMarketCoinName(k.coinName);return x[M]||(x[M]=0),x[M]+=k.availableClaimCoin,x},{})})(),b={};Object.entries(o).forEach(([D,x])=>{for(let k=0;k<x.length;k++){let M=x[k];if(!p[D])continue;let L=n.claim(M.id,D);b.sui?b.sui.push(L):b.sui=[L]}});let S=(()=>{let D={};return D.sui=Object.values(p).reduce((x,k)=>x+k,0),c.forEach(x=>{Object.values(x.borrowIncentives).forEach(k=>{k&&k.rewards.forEach(M=>{D[M.coinName]||(D[M.coinName]=0),D[M.coinName]?D[M.coinName]+=M.availableClaimCoin:D[M.coinName]=M.availableClaimCoin})})}),D})();if(s.length>0&&c.length>0)for(let D=0;D<c.length;D++){let x=c[D],k=!1,M=s.find(U=>U.id===x.obligationId)?.keyId,L={};if(M){if(Object.values(x.borrowIncentives).forEach(U=>{if(U){let q=U.rewards.filter(Mt=>{let N=Mt.coinName;return Mt.availableClaimCoin>0&&!L[N]});k=q.length>0,q.forEach(Mt=>{let N=n.claimBorrowIncentive(x.obligationId,M,Mt.coinName);L[Mt.coinName]=!0,b[Mt.coinName]?b[Mt.coinName].push(N):b[Mt.coinName]=[N]})}}),S.sui>0){let U=Vt.redeem_rewards(n,M,x.obligationId,ld);b.sui?b.sui.push(U):b.sui=[U]}if(k&&await hl(e.query,x.obligationId)){n.unstakeObligation(x.obligationId,M);let q=await e.query.getBindedVeScaKey(x.obligationId);q?n.stakeObligationWithVesca(x.obligationId,M,q):n.stakeObligation(x.obligationId,M)}}}let I=(await Promise.all(Object.entries(b).map(async([D,x])=>{let k=x[0];if(x.length>1&&n.mergeCoins(k,x.slice(1)),D==="sui"){n.mergeCoins(n.gas,[k]);return}return await e.builder.utils.mergeSimilarCoins(n,k,e.utils.parseCoinType(D),t),k}))).filter(D=>!!D);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 ya=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.depositCollateral(this.data.collateralCoinName,+this.data.amount,!1,this.data.obligationId)}static fromData(t){return new a(t)}};var ba=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async migrateAndClaim({account:t,scallopClient:n}){let o=t.address,{obligationKey:i,obligationId:s,rewardCoinName:c,veScaKey:p}=this.data,b=n.builder.createTxBlock();b.setSender(o);let S=Vt.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 Ta=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.migrateAllMarketCoin(!1,!1)}static fromData(t){return new a(t)}};var Sa=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.openObligation(!1)}static fromData(t){return new a(t)}};var wa=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async repay({account:t,scallopClient:n}){let o=t.address,{coinName:i,amount:s,obligationId: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 Ia=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async repayWithBoost({account:t,scallopClient:n}){let o=t.address,{coinName:i,amount:s,obligationId: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 Ca=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.deposit(this.data.coinName,+this.data.amount,!1,t.account.address)}static fromData(t){return new a(t)}};var Da=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.unstake(this.data.marketCoinName,+this.data.amount,!1)}static fromData(t){return new a(t)}};var xa=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async unstakeAndWithdraw(t,n,o){let i=t.builder.createTxBlock();i.setSender(o);let{stakeAccountId:s,amount:c,coinName:p}=this.data,b=[];for(let S=0;S<s.length;S++){let{id:I,coin:D}=s[S],x=t.utils.parseMarketCoinName(p),[k]=await i.unstakeQuick(D,x,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 ka=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.withdrawCollateral(this.data.collateralCoinName,Number(this.data.amount),!1,this.data.obligationId,this.data.obligationKey,t.account.address)}static fromData(t){return new a(t)}};var va=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.withdraw(this.data.coinName,Number(this.data.amount),!1,t.account.address)}static fromData(t){return new a(t)}};var Aa=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async bindReferral({account:t,scallopClient:n}){let o=t.address,i=n.builder.createTxBlock();return i.setSender(o),i.bindToReferral(this.data.veScaKey),i.txBlock}async build(t){return this.bindReferral(t)}static fromData(t){return new a(t)}};var Ma=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async claimRevenueReferral({account:t,scallopClient:n}){let{veScaKey:o,coins:i}=this.data,s=t.address,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 Oa=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async createReferralLink({account:t,scallopClient:n}){let o=t.address,i=n.builder.createTxBlock();i.setSender(o);let s=i.mintEmptyVeSca();return i.transferObjects([s],o),i.txBlock}async build(t){return this.createReferralLink(t)}static fromData(t){return new a(t)}};import{SCA_COIN_TYPE as ud}from"@scallop-io/sui-scallop-sdk";var Pa=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async extendPeriodAndStakeMoreSca({account:t,scallopClient:n}){let{amount:o,veScaKey:i,unlockTime:s,obligationId:c,obligationKey:p,isOldBorrowIncentive:b,isObligationLocked:S}=this.data,I=t.address,D=n.builder.createTxBlock();D.setSender(I);let x=await n.utils.selectCoins(o,ud,I),[k,M]=D.takeAmountFromCoins(x,o);return D.extendLockPeriod(i,s),D.extendLockAmount(i,k),D.transferObjects([M],I),!c||!p||(S&&(b?Vt.unstakeObligation(D,c,p):D.unstakeObligation(c,p)),D.stakeObligationWithVesca(c,p,i)),D.txBlock}async build(t){return this.extendPeriodAndStakeMoreSca(t)}static fromData(t){return new a(t)}};var Ra=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async extendStakeScaLockPeriod({account:t,scallopClient:n}){let o=t.address,{veScaKey:i,unlockTime:s,obligationId: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?Vt.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 Ba=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async handleUnsubForKeys(t,n,o){let{targetVeScaKey:i,sourceVeScaKey:s}=this.data,[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 Ea=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async redeemSca({account:t,scallopClient:n}){let{veScaKey:o}=this.data,i=t.address,s=n.builder.createTxBlock();return s.setSender(i),await s.redeemScaQuick({veScaKey:o}),s.txBlock}async build(t){return this.redeemSca(t)}static fromData(t){return new a(t)}};import{SCA_COIN_TYPE as md}from"@scallop-io/sui-scallop-sdk";var Wa=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async renewExpiredStakeSca({account:t,scallopClient:n}){let o=t.address,{amount:i,unlockTime:s,veScaKey:c,isHaveRedeem:p,obligation:b,obligationKey:S,isObligationLocked:I,isOldBorrowIncentive:D}=this.data,x=n.builder.createTxBlock();if(x.setSender(o),p){let U=x.redeemSca(c);x.transferObjects([U],o)}let k=await n.builder.utils.selectCoins(i,md,o),[M,L]=x.takeAmountFromCoins(k,i);return x.transferObjects([L],o),x.renewExpiredVeSca(c,M,s),!b||!S||(I&&(D?Vt.unstakeObligation(x,S,b):x.unstakeObligation(b,S)),x.stakeObligationWithVesca(b,S,c)),x.txBlock}async build(t){return this.renewExpiredStakeSca(t)}static fromData(t){return new a(t)}};var Na=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async handleUnsubForKeys(t,n,o){let{targetVeScaKey:i,splitAmount:s}=this.data,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)}};import{SCA_COIN_TYPE as pd}from"@scallop-io/sui-scallop-sdk";var _a=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async stakeSca({account:t,scallopClient:n}){let o=t.address,{amount:i,isObligationLocked:s,isOldBorrowIncentive:c,obligationId:p,obligationKey:b,unlockTime:S,veScaKey:I}=this.data,D=n.builder.createTxBlock();D.setSender(o);let x=await n.utils.selectCoins(i,pd,o),[k,M]=D.takeAmountFromCoins(x,i),L;return I?D.extendLockAmount(I,k):L=D.lockSca(k,S),p&&b&&(s&&(c?Vt.unstakeObligation(D,b,p):D.unstakeObligation(p,b)),D.stakeObligationWithVesca(p,b,I||L)),I||D.transferObjects([L,M],o),D.txBlock}async build(t){return this.stakeSca(t)}static fromData(t){return new a(t)}};var La=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async supplyAndStake({account:t,scallopClient:n}){let o=t.address,{amount:i,coinName:s,stakeAccountId: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),D=c||(I.length>0?I[0].id:void 0);if(D)await p.stakeQuick(b,S,D);else{let x=p.createStakeAccount(S);await p.stakeQuick(b,S,x),p.transferObjects([x],o)}return p.txBlock}async build(t){return this.supplyAndStake(t)}static fromData(t){return new a(t)}};var ja=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;handleAction(t,{action:n,args:o}){switch(n){case"deactivate":return t.deactivateBoost(o.obligationId,o.veScaKey);case"stake":return t.stakeObligationWithVesca(o.obligationId,o.obligationKey,o.veScaKey);case"unstake":return t.unstakeObligation(o.obligationId,o.obligationKey);default:throw new Error("Invalid action")}}async build(t){let{scallopClient:n,account:{address:o}}=t,i=n.builder.createTxBlock();i.setSender(o);let{bindingDatas:s}=this.data;return s.forEach(c=>this.handleAction(i,c)),i.txBlock}static fromData(t){return new a(t)}};var Ua=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{scallopClient:n,account:{address:o}}=t,i=n.builder.createTxBlock();i.setSender(o);let{veScaKeys:s}=this.data;return i.transferObjects(s.map(c=>i.objectRef(c)),i.pure.address(o)),i.txBlock}static fromData(t){return new a(t)}};var qa=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async withdrawUnlockedSca({account:t,scallopClient:n}){let{vescaKey:o}=this.data,i=t.address,s=n.builder.createTxBlock();return s.setSender(i),await s.redeemScaQuick({veScaKey:o}),s.txBlock}async build(t){return this.withdrawUnlockedSca(t)}static fromData(t){return new a(t)}};var Fa=class{application="scallop";supportSDK="@mysten/sui";scallopClient;async initScallopClient(e,t){if(!this.scallopClient){let n=new hd({addressId:"67c44a103fe1b8c454eb9699",walletAddress:e,suiClients:[t],fullnodeUrls:[t.transport.rpcClient.requestManager.transports[0]?.uri??fd("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 ma(t,this.scallopClient),c=new pa(t,this.scallopClient),p=i.decode()||s.decode()||await c.decode();if(!p)throw new Error("Unknown transaction type");return{txType:dd.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=Ca.fromData(s);break;case"WithdrawLending":c=va.fromData(s);break;case"Borrow":c=da.fromData(s);break;case"Repay":c=wa.fromData(s);break;case"DepositCollateral":c=ya.fromData(s);break;case"WithdrawCollateral":c=ka.fromData(s);break;case"OpenObligation":c=Sa.fromData(s);break;case"UnstakeSpool":c=Da.fromData(s);break;case"ClaimIncentiveReward":c=ga.fromData(s);break;case"BorrowWithBoost":c=fa.fromData(s);break;case"StakeSca":c=_a.fromData(s);break;case"ExtendStakePeriod":c=Ra.fromData(s);break;case"ExtendPeriodAndStakeMore":c=Pa.fromData(s);break;case"RenewExpStakePeriod":c=Wa.fromData(s);break;case"WithdrawStakedSca":c=qa.fromData(s);break;case"SupplyAndStakeLending":c=La.fromData(s);break;case"WithdrawAndUnstakeLending":c=xa.fromData(s);break;case"RedeemSca":c=Ea.fromData(s);break;case"MigrateAndClaim":c=ba.fromData(s);break;case"BorrowWithReferral":c=ha.fromData(s);break;case"CreateReferralLink":c=Oa.fromData(s);break;case"ClaimRevenueReferral":c=Ma.fromData(s);break;case"BindReferral":c=Aa.fromData(s);break;case"MigrateScoin":c=Ta.fromData(s);break;case"RepayWithBoost":c=Ia.fromData(s);break;case"MergeVeSca":c=Ba.fromData(s);break;case"SplitVeSca":c=Na.fromData(s);break;case"VeScaObligationBindings":{c=ja.fromData(s);break}case"TransferVeScaKeys":{c=Ua.fromData(s);break}default:throw new Error("not implemented")}return c.build({suiClient:t,account:n,network:o,scallopClient:this.scallopClient})}};import{TransactionType as zd}from"@msafe/sui3-utils";import{TransactionType as mn}from"@msafe/sui3-utils";import{normalizeStructTag as be}from"@mysten/sui/utils";import{API_URL as Pd}from"@suilend/sui-fe";import{TransactionType as Ad}from"@msafe/sui3-utils";import{LENDING_MARKET_ID as Md,LENDING_MARKET_TYPE as Od,SuilendClient as ls}from"@suilend/sdk";import{TransactionType as _e}from"@msafe/sui3-utils";import{fromBase64 as bl,toHex as Tl}from"@mysten/bcs";import{normalizeStructTag as ln}from"@mysten/sui/utils";import{MAX_U64 as Le}from"@suilend/sui-fe";import Sl from"bignumber.js";var Ka=class{constructor(e,t){this.transaction=e;this.simResult=t}decode(){if(this.isDepositTransaction())return this.decodeDeposit();if(this.isWithdrawTransaction())return this.decodeWithdraw();if(this.isBorrowTransaction())return this.decodeBorrow();if(this.isRepayTransaction())return this.decodeRepay();if(this.isClaimTransaction())return this.decodeClaim();if(this.isClaimAndDepositTransaction())return this.decodeClaimAndDeposit();throw new Error("Unknown transaction type")}get inputs(){return console.log("this.transaction.getData().inputs",this.transaction.getData().inputs),this.transaction.getData().inputs}get commands(){return console.log("this.transaction.getData().commands",this.transaction.getData().commands),this.transaction.getData().commands}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}hasDepositTransactionMoveCallCommands(){return!!this.getMoveCallCommand("deposit_liquidity_and_mint_ctokens")&&!!this.getMoveCallCommand("deposit_ctokens_into_obligation")}hasClaimTransactionMoveCallCommands(){return!!this.getMoveCallCommand("claim_rewards")}isDepositTransaction(){return!this.hasClaimTransactionMoveCallCommands()&&this.hasDepositTransactionMoveCallCommands()}isWithdrawTransaction(){return!!this.getMoveCallCommand("withdraw_ctokens")&&!!this.getMoveCallCommand("redeem_ctokens_and_withdraw_liquidity_request")}isBorrowTransaction(){return!!this.getMoveCallCommand("borrow_request")}isRepayTransaction(){return!!this.getMoveCallCommand("repay")}isClaimTransaction(){return this.hasClaimTransactionMoveCallCommands()&&!this.hasDepositTransactionMoveCallCommands()}isClaimAndDepositTransaction(){return this.hasClaimTransactionMoveCallCommands()&&this.hasDepositTransactionMoveCallCommands()}decodeDeposit(){let e={MintEvent:this.simResult.events.find(o=>o.type.includes("lending_market::MintEvent"))},t=ln(e.MintEvent.parsedJson.coin_type.name),n=e.MintEvent.parsedJson.liquidity_amount;return console.log("Decoder.decodeDeposit",t,n),{txType:_e.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=ln(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 Sl(Tl(bl(this.inputs[i].Pure.bytes)),16).toString(),c=s===Le.toString();return console.log("decodeWithdraw - isMax:",c,"inputIndex:",i,"inputValue:",s,"MAX_U64.toString():",Le.toString()),c&&(o=Le.toString()),{txType:_e.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=ln(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 Sl(Tl(bl(this.inputs[i].Pure.bytes)),16).toString(),c=s===Le.toString();return console.log("decodeBorrow - isMax:",c,"inputIndex:",i,"inputValue:",s,"MAX_U64.toString():",Le.toString()),c&&(o=Le.toString()),{txType:_e.Other,type:"borrow",intentionData:{coinType:n,value:o}}}decodeRepay(){let e={RepayEvent:this.simResult.events.find(o=>o.type.includes("lending_market::RepayEvent"))},t=ln(e.RepayEvent.parsedJson.coin_type.name),n=e.RepayEvent.parsedJson.liquidity_amount;return console.log("Decoder.decodeRepay",t,n),{txType:_e.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=ln(o.parsedJson.coin_type.name),s=o.parsedJson.liquidity_amount;t[i]=`${+(t[i]??"0")+ +s}`}return console.log("Decoder.decodeClaimRewards",t),{txType:_e.Other,type:"claim",intentionData:{value:t}}}decodeClaimAndDeposit(){return{txType:_e.Other,type:"claimAndDeposit",intentionData:this.decodeClaim().intentionData}}};import{Transaction as bd}from"@mysten/sui/transactions";import yd from"sort-keys-recursive";var Lt=class{constructor(e){this.data=e}serialize(){return JSON.stringify(yd(this.data))}};var Va=class a extends Lt{constructor(t){super(t);this.data=t}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 bd;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)}};import{Transaction as Cd}from"@mysten/sui/transactions";import{normalizeStructTag as Td}from"@mysten/sui/utils";import{Side as un}from"@suilend/sdk";import{isSendPoints as Sd}from"@suilend/sui-fe";import wd from"bignumber.js";var Id=(a,e)=>{let t={[un.DEPOSIT]:[],[un.BORROW]:[]};return a.lendingMarket.reserves.forEach(n=>{[un.DEPOSIT,un.BORROW].forEach(o=>{let i=o===un.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:Td(c.coinType.name),side:o})).filter(c=>!Sd(c.rewardCoinType)&&!!s.rewards[Number(c.rewardIndex)]&&new wd(s.rewards[Number(c.rewardIndex)].earnedRewards.value.toString()).gt(0)))})}),Object.values(t).flat()},$a=Id;var Ha=class a extends Lt{constructor(t){super(t);this.data=t}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 Cd;return i.claimRewardsAndSendToUser(o.address,s.id,$a(i,c),p),p}static fromData(t){return console.log("ClaimIntention.fromData",t),new a(t)}};import{Transaction as Dd}from"@mysten/sui/transactions";var Xa=class a extends Lt{constructor(t){super(t);this.data=t}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 Dd;return i.claimRewardsAndDeposit(o.address,s.id,$a(i,c),p),p}static fromData(t){return console.log("ClaimAndDepositIntention.fromData",t),new a(t)}};import{Transaction as xd}from"@mysten/sui/transactions";var za=class a extends Lt{constructor(t){super(t);this.data=t}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 xd;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)}};import{Transaction as kd}from"@mysten/sui/transactions";var Ga=class a extends Lt{constructor(t){super(t);this.data=t}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 kd;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)}};import{Transaction as vd}from"@mysten/sui/transactions";var Qa=class a extends Lt{constructor(t){super(t);this.data=t}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 vd;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 Ya=async(a,e)=>{let t=await ls.initialize(Md,Od,a),n=await ls.getObligationOwnerCaps(e.address,t.lendingMarket.$typeArgs,a),o=await Promise.all(n.map(i=>ls.getObligation(i.obligationId,t.lendingMarket.$typeArgs,a)));return console.log("XXX getUtils - suilendClient:",t,"obligations:",o,"obligationOwnerCaps:",n),{suilendClient:t,obligationOwnerCaps:n,obligations:o}},Ja=class{application="Suilend";supportSDK="@mysten/sui";utils;async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;this.utils||(this.utils=await Ya(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 Ka(t,i).decode();return{txType:Ad.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 Ya(i,s));let c;switch(n){case"deposit":c=za.fromData(o);break;case"withdraw":c=Qa.fromData(o);break;case"borrow":c=Va.fromData(o);break;case"repay":c=Ga.fromData(o);break;case"claim":c=Ha.fromData(o);break;case"claimAndDeposit":c=Xa.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 us=async(a,e)=>{let t=await Ya(a,e),n=await fetch(`${Pd}/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 Za=class{constructor(e,t){this.transaction=e;this.simResult=t}decode(){if(this.isStakeTransaction())return this.decodeStake();if(this.isStakeAndDepositTransaction())return this.decodeStakeAndDeposit();if(this.isConvertTransaction())return this.decodeConvert();if(this.isConvertAndDepositTransaction())return this.decodeConvertAndDeposit();if(this.isUnstakeTransaction())return this.decodeUnstake();throw new Error("Unknown transaction type")}get commands(){return this.transaction.getData().commands}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}hasSuilendDepositTransactionMoveCallCommands(){return!!this.getMoveCallCommand("deposit_liquidity_and_mint_ctokens")&&!!this.getMoveCallCommand("deposit_ctokens_into_obligation")}hasMintMoveCallCommands(){return!!this.getMoveCallCommand("mint")}hasRedeemMoveCallCommands(){return!!this.getMoveCallCommand("redeem")}isStakeTransaction(){return this.hasMintMoveCallCommands()&&!this.hasRedeemMoveCallCommands()&&!this.hasSuilendDepositTransactionMoveCallCommands()}isStakeAndDepositTransaction(){return this.hasMintMoveCallCommands()&&!this.hasRedeemMoveCallCommands()&&this.hasSuilendDepositTransactionMoveCallCommands()}isConvertTransaction(){return this.hasMintMoveCallCommands()&&this.hasRedeemMoveCallCommands()&&!this.hasSuilendDepositTransactionMoveCallCommands()}isConvertAndDepositTransaction(){return this.hasMintMoveCallCommands()&&this.hasRedeemMoveCallCommands()&&this.hasSuilendDepositTransactionMoveCallCommands()}isUnstakeTransaction(){return!this.hasMintMoveCallCommands()&&this.hasRedeemMoveCallCommands()&&!this.hasSuilendDepositTransactionMoveCallCommands()}decodeStake(){let e={MintEvent:this.simResult.events.find(o=>o.type.includes("liquid_staking::MintEvent"))},t=be(e.MintEvent.parsedJson.event.typename.name),n=e.MintEvent.parsedJson.event.sui_amount_in;return console.log("Decoder.decodeStake",n),{txType:mn.Other,type:"stake",intentionData:{amount:n,outCoinType:t}}}decodeStakeAndDeposit(){let e={MintEvent:this.simResult.events.find(o=>o.type.includes("liquid_staking::MintEvent"))},t=be(e.MintEvent.parsedJson.event.typename.name),n=e.MintEvent.parsedJson.event.sui_amount_in;return console.log("Decoder.decodeStakeAndDeposit",n),{txType:mn.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=be(e.RedeemEvent.parsedJson.event.typename.name),n=be(e.MintEvent.parsedJson.event.typename.name),o=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeConvert",o),{txType:mn.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=be(e.RedeemEvent.parsedJson.event.typename.name),n=be(e.MintEvent.parsedJson.event.typename.name),o=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeConvertAndDeposit",o),{txType:mn.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=be(e.RedeemEvent.parsedJson.event.typename.name),n=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeUnstake",n),{txType:mn.Other,type:"unstake",intentionData:{amount:n,inCoinType:t}}}};import{Transaction as Ed}from"@mysten/sui/transactions";import{LstClient as wl,convertLstsAndRebalanceAndSendToUser as Wd}from"@suilend/springsui-sdk";import Bd from"sort-keys-recursive";var $t=class{constructor(e){this.data=e}serialize(){return JSON.stringify(Bd(this.data))}};var ti=class a extends $t{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:c,obligation:p}=t;console.log("ConvertIntention.build",n,o,i,s,c,p);let b=await wl.initialize(n,Object.values(s).find(D=>D.type===this.data.inCoinType)),S=await wl.initialize(n,Object.values(s).find(D=>D.type===this.data.outCoinType)),I=new Ed;return Wd(b,S,I,o.address,this.data.amount),I}static fromData(t){return console.log("ConvertIntention.fromData",t),new a(t)}};import{Transaction as Nd}from"@mysten/sui/transactions";import{createObligationIfNoneExists as _d,sendObligationToUser as Ld}from"@suilend/sdk";import{LstClient as Il,convertLstsAndRebalance as jd}from"@suilend/springsui-sdk";var ei=class a extends $t{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:c,obligation:p}=t;console.log("ConvertAndDepositIntention.build",n,o,i,s,c,p);let b=await Il.initialize(n,Object.values(s).find(M=>M.type===this.data.inCoinType)),S=await Il.initialize(n,Object.values(s).find(M=>M.type===this.data.outCoinType)),I=new Nd,{obligationOwnerCapId:D,didCreate:x}=_d(i,I,c),k=jd(b,S,I,o.address,this.data.amount);return i.deposit(k,this.data.outCoinType,D,I),x&&Ld(D,o.address,I),I}static fromData(t){return console.log("ConvertAndDepositIntention.fromData",t),new a(t)}};import{Transaction as Ud}from"@mysten/sui/transactions";import{LstClient as qd}from"@suilend/springsui-sdk";var ni=class a extends $t{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:c,obligation:p}=t;console.log("StakeIntention.build",n,o,i,s,c,p);let b=await qd.initialize(n,Object.values(s).find(I=>I.type===this.data.outCoinType)),S=new Ud;return b.mintAmountAndRebalanceAndSendToUser(S,o.address,this.data.amount),S}static fromData(t){return console.log("StakeIntention.fromData",t),new a(t)}};import{Transaction as Fd}from"@mysten/sui/transactions";import{createObligationIfNoneExists as Kd,sendObligationToUser as Vd}from"@suilend/sdk";import{LstClient as $d}from"@suilend/springsui-sdk";var oi=class a extends $t{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:c,obligation:p}=t;console.log("StakeAndDepositIntention.build",n,o,i,s,c,p);let b=await $d.initialize(n,Object.values(s).find(k=>k.type===this.data.outCoinType)),S=new Fd,{obligationOwnerCapId:I,didCreate:D}=Kd(i,S,c),x=b.mintAmountAndRebalance(S,o.address,this.data.amount);return i.deposit(x,this.data.outCoinType,I,S),D&&Vd(I,o.address,S),S}static fromData(t){return console.log("StakeAndDepositIntention.fromData",t),new a(t)}};import{Transaction as Hd}from"@mysten/sui/transactions";import{LstClient as Xd}from"@suilend/springsui-sdk";var ai=class a extends $t{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:c,obligation:p}=t;console.log("UnstakeIntention.build",n,o,i,s,c,p);let b=await Xd.initialize(n,Object.values(s).find(I=>I.type===this.data.inCoinType)),S=new Hd;return b.redeemAmountAndRebalanceAndSendToUser(S,o.address,this.data.amount),S}static fromData(t){return console.log("UnstakeIntention.fromData",t),new a(t)}};var ii=class{application="SpringSui";supportSDK="@mysten/sui";utils;async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;this.utils||(this.utils=await us(n,o));let i=await n.devInspectTransactionBlock({sender:o.address,transactionBlock:t});console.log("SpringSuiAppHelper.deserialize",i);let c=new Za(t,i).decode();return{txType:zd.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 us(i,s));let c;switch(n){case"stake":c=ni.fromData(o);break;case"stakeAndDeposit":c=oi.fromData(o);break;case"convert":c=ti.fromData(o);break;case"convertAndDeposit":c=ei.fromData(o);break;case"unstake":c=ai.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]})}};import{TransactionType as Jd}from"@msafe/sui3-utils";import{TransactionType as Cl}from"@msafe/sui3-utils";var ri=class{constructor(e,t){this.transaction=e;this.simResult=t}decode(){if(this.isMintTransaction()){let e=this.getLiquidityChangeEvent("MintEvent");if(!e)throw new Error("No liquidity change event found. Unable to decode transaction.");let t=e.parsedJson;return console.log("Decoder event data - ",t),this.decodeMint(t)}if(this.isRedeemTransaction()){let e=this.getLiquidityChangeEvent("RedeemEvent");if(!e)throw new Error("No liquidity change event found. Unable to decode transaction.");let t=e.parsedJson;return console.log("Decoder event data - ",t),this.decodeRedeem(t)}throw new Error("Unknown transaction type")}get commands(){return this.transaction.getData().commands}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}getLiquidityChangeEvent(e){return this.simResult.events.find(t=>this.isLiquidityChangeEventType(t.type,e))}isLiquidityChangeEventType(e,t){return e.includes(t)}isMintTransaction(){return!!this.getMoveCallCommand("mint")}isRedeemTransaction(){return!!this.getMoveCallCommand("redeem")}decodeMint(e){let{event:{sui_amount_in:t}}=e;return console.log("Decoder.decodeMint",t),{txType:Cl.Other,type:"mint",intentionData:{amount:t}}}decodeRedeem(e){let{event:{lst_amount_in:t}}=e;return console.log("Decoder.decodeRedeem",t),{txType:Cl.Other,type:"redeem",intentionData:{amount:t}}}};import{LST as Qd}from"@alphafi/stsui-sdk";var si=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{amount:o}=this.data,i={lstInfo:"0x1adb343ab351458e151bc392fbf1558b3332467f23bda45ae67cd355a57fd5f5",lstCointype:"0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI"},c=await new Qd(i).mint(o,n.address);return c.setGasBudget(1e8),c}static fromData(t){return console.log("MintIntention.fromData",t),new a(t)}};import{LST as Yd}from"@alphafi/stsui-sdk";var ci=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{amount:o}=this.data,i={lstInfo:"0x1adb343ab351458e151bc392fbf1558b3332467f23bda45ae67cd355a57fd5f5",lstCointype:"0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI"},c=await new Yd(i).redeem(o,n.address);return c.setGasBudget(1e8),c}static fromData(t){return console.log("RedeemIntention.fromData",t),new a(t)}};var li=class{application="stsui";supportSDK="@mysten/sui";async deserialize(e){let{transaction:t,suiClient:n}=e,o=await n.devInspectTransactionBlock({sender:t.getData().sender,transactionBlock:t});console.log("StSuiHelper Sim result - ",o);let s=new ri(t,o).decode();return{txType:Jd.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=si.fromData(e.intentionData);break;case"redeem":n=ci.fromData(e.intentionData);break;default:throw new Error("build not implemented")}return n.build({account:t})}};import{TransactionType as wf}from"@msafe/sui3-utils";import{TurbosSdk as If}from"turbos-clmm-sdk";import{TransactionType as jt}from"@msafe/sui3-utils";import{fromBase64 as je}from"@mysten/bcs";import{bcs as Ue}from"@mysten/sui/bcs";import{BN as tf}from"turbos-clmm-sdk";var Xt={PackageId:"0x02fe4933f4521250e55a15441096d1d4a38a7311195b0bca126fc0138c1f5a97",Claim:"0x0c822cec42f7ca703696b4232f1c47b348330c23580172a29aab465bc071d894",turbosCoinType:"0x5d1f47ea69bb0de31c313d7acf89b890dbb8991ea8e03c6c355171f84bb1ba4a::turbos::TURBOS"},zt={PackageId:"0xdee9"};var ef=(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}`)}},ui=class{constructor(e,t,n){this.txb=e;this.turbosSdk=t;this.config=n}get transactions(){return this.txb.getData().commands}get swap1Layer(){return[`${this.config.PackageId}::swap_router::swap_a_b`,`${this.config.PackageId}::swap_router::swap_b_a`]}get swap2Layer(){return[`${this.config.PackageId}::swap_router::swap_a_b_b_c`,`${this.config.PackageId}::swap_router::swap_a_b_c_b`,`${this.config.PackageId}::swap_router::swap_b_a_b_c`,`${this.config.PackageId}::swap_router::swap_b_a_c_b`]}async decode(e){if(this.isSwapTransaction())return this.decodeSwap();if(this.isAddLiquidityTransaction())return this.decodeAddLiquidity();if(this.isIncreaseLiquidityTransaction())return this.decodeIncreaseLiquidity(e);if(this.isRemoveLiquidityTransaction())return this.decodeRemoveLiquidity(e);if(this.isDecreaseLiquidityTransaction())return this.decodeDecreaseLiquidity(e);if(this.isRemoveLiquidityWithReturnTransaction())return this.decodeRemoveLiquidityWithReturn(e);if(this.isDecreaseLiquidityWithReturnTransaction())return this.decodeDecreaseLiquidityWithReturn(e);if(this.isCollectFeeTransaction())return this.decodeCollectFee();if(this.isCollectRewardTransaction())return this.decodeCollectReward();if(this.isBurnTransaction())return this.decodeBurn();if(this.isPrixClaimTransaction())return this.decodePrixClaim();if(this.isPrixJoinTransaction())return this.decodePrixJoin();if(this.isSwapExactBaseForQuoteTransaction())return this.decodeSwapExactBaseForQuote();if(this.isSwapExactQuoteForBaseTransaction())return this.decodeSwapExactQuoteForBase();throw new Error("Unknown transaction type")}getMoveCallTransaction(e){return this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===e:!1)}getMoveCallsTransaction(e){return e.every(t=>this.transactions.find(n=>n.$kind==="MoveCall"?`${n.MoveCall.package}::${n.MoveCall.module}::${n.MoveCall.function}`===t:!1))}getSwapMoveCallTransaction(e){return this.transactions.find(t=>{if(t.$kind==="MoveCall"){let n=`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`;return!!e.includes(n)}return!1})}isSwapTransaction(){return!!this.getSwapMoveCallTransaction([...this.swap1Layer,...this.swap2Layer])}isAddLiquidityTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::mint`)}isIncreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::increase_liquidity`)}isDecreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::decrease_liquidity`)}isDecreaseLiquidityWithReturnTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::decrease_liquidity_with_return_`)}isCollectFeeTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::collect`)}isCollectRewardTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::collect_reward`)}isBurnTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::burn`)}isPrixJoinTransaction(){return!!this.getMoveCallTransaction(`${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(x=>x.$kind==="MoveCall"),t=0,n=`${e.MoveCall.package}::${e.MoveCall.module}::${e.MoveCall.function}`;console.log(n,"moveCallTarget"),this.swap2Layer.includes(n)&&(t=1);let o=ef(t,n,this.swap1Layer,this.swap2Layer),i=o.map((x,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 tf(L.toString()));return{pool:M,a2b:x,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)),D=this.helper.decodeInputU64(this.helper.getInputsIndex(3+t));return{txType:jt.Other,type:"Swap",intentionData:{routes:i,coinTypeA:s,coinTypeB:c,address:p,amountA:S?I:D,amountB:S?D: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:jt.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:jt.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:jt.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:jt.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:jt.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:jt.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:jt.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(D=>{let x=D.decodeInputU64(D.getInputsIndex(4)),k=D.decodeInputU64(D.getInputsIndex(5));b[x]=k});let S=this.collectFeeHelper.decodeInputU64(this.collectFeeHelper.getInputsIndex(3))||0,I=this.collectFeeHelper.decodeInputU64(this.collectFeeHelper.getInputsIndex(4))||0;return{txType:jt.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:jt.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:jt.Other,type:"PrixClaim",intentionData:{}}}decodePrixJoin(){return{txType:jt.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:jt.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:jt.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 pe(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 pe(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 pe(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 pe(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 pe(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 pe(e,this.txb)}},pe=class{constructor(e,t){this.moveCall=e;this.txb=t}get inputs(){return this.txb.getData().inputs}getInputsIndex(e){return this.moveCall.MoveCall.arguments[e].Input}decodeSharedObjectId(e){return this.inputs[e].Object?.SharedObject?.objectId||this.inputs[e].UnresolvedObject.objectId}decodeOwnedObjectId(e){return this.inputs[e].Object?.ImmOrOwnedObject?.objectId||this.inputs[e].UnresolvedObject.objectId}decodeInputU128(e){return Number(Ue.u128().parse(Uint8Array.from(je(this.inputs[e].Pure.bytes))))}decodeInputU64(e){return Number(Ue.u64().parse(Uint8Array.from(je(this.inputs[e].Pure.bytes))))}decodeInputU32(e){return Number(Ue.u32().parse(Uint8Array.from(je(this.inputs[e].Pure.bytes))))}decodeInputU8(e){return Number(Ue.u8().parse(Uint8Array.from(je(this.inputs[e].Pure.bytes))))}decodeInputAddress(e){return Ue.Address.parse(Uint8Array.from(je(this.inputs[e].Pure.bytes)))}decodeInputBool(e){return Ue.bool().parse(Uint8Array.from(je(this.inputs[e].Pure.bytes)))}shortTypeArg(e){return this.moveCall.MoveCall.typeArguments[e]}txArg(e){return this.moveCall.MoveCall.arguments[e]}};import{TurbosSdk as nf}from"turbos-clmm-sdk";var mi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new nf(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:p,tickLower:b,tickUpper:S,deadline:I,txb:D}=this.data;return n.pool.addLiquidity({pool:o,slippage:p,address:i,amountA:s,amountB:c,tickLower:b,tickUpper:S,deadline:I,txb:D})}static fromData(t){return new a(t)}};import{TurbosSdk as of}from"turbos-clmm-sdk";var pi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new of(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)}};import{TurbosSdk as af}from"turbos-clmm-sdk";var di=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new af(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)}};import{TurbosSdk as rf}from"turbos-clmm-sdk";var fi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new rf(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)}};import{TurbosSdk as sf}from"turbos-clmm-sdk";var hi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new sf(t.network.replace("sui:",""),t.suiClient),{fee:o,address:i,tickLower:s,tickUpper:c,sqrtPrice:p,slippage:b,coinTypeA:S,coinTypeB:I,amountA:D,amountB:x,deadline:k,txb:M}=this.data;return n.pool.createPool({fee:o,amountA:D,amountB:x,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)}};import{TurbosSdk as cf}from"turbos-clmm-sdk";var gi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new cf(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:p,nft:b,decreaseLiquidity:S,deadline:I,txb:D}=this.data;return n.pool.decreaseLiquidity({pool:o,slippage:p,address:i,amountA:s,amountB:c,nft:b,decreaseLiquidity:S,deadline:I,txb:D})}static fromData(t){return new a(t)}};import{TurbosSdk as lf}from"turbos-clmm-sdk";var yi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new lf(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:D,coinA:x,coinB:k}=await n.pool.decreaseLiquidityWithReturn({pool:o,slippage:p,address:i,amountA:s,amountB:c,nft:b,decreaseLiquidity:S,deadline:I});return D.transferObjects([x,k],this.data.address),D}static fromData(t){return new a(t)}};import{TurbosSdk as uf}from"turbos-clmm-sdk";var bi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new uf(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)}};import{Transaction as mf}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as pf}from"@mysten/sui/utils";var Ti=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new mf;return n.moveCall({target:`${Xt.PackageId}::claim::claim`,typeArguments:[Xt.turbosCoinType],arguments:[n.object(Xt.Claim),n.object(pf)]}),n}static fromData(t){return new a(t)}};import{Transaction as df}from"@mysten/sui/transactions";var Si=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new df;return n.moveCall({target:`${Xt.PackageId}::claim::join`,typeArguments:[Xt.turbosCoinType],arguments:[n.object(Xt.Claim)]}),n}static fromData(t){return new a(t)}};import{Transaction as ff}from"@mysten/sui/transactions";import{TurbosSdk as hf}from"turbos-clmm-sdk";var wi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new hf(t.network.replace("sui:",""),t.suiClient),o=new ff;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)}};import{TurbosSdk as gf}from"turbos-clmm-sdk";var Ii=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new gf(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)}};import{TurbosSdk as yf}from"turbos-clmm-sdk";var Ci=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){console.log(this.data,"this.data");let n=new yf(t.network.replace("sui:",""),t.suiClient),{routes:o,coinTypeA:i,coinTypeB:s,address:c,amountA:p,amountB:b,slippage:S,amountSpecifiedIsInput:I,deadline:D,txb:x}=this.data;return n.trade.swap({routes:o,coinTypeA:i,coinTypeB:s,address:c,amountA:p,amountB:b,amountSpecifiedIsInput:I,slippage:S,deadline:D,txb:x})}static fromData(t){return new a(t)}};import{TurbosSdk as Tf}from"turbos-clmm-sdk";import{Transaction as Dl}from"@mysten/sui/transactions";import{normalizeSuiObjectId as xl}from"@mysten/sui/utils";import{unstable_getObjectId as bf}from"turbos-clmm-sdk";var pn=class{constructor(e){this.turbosSdk=e}async getCoinsData(e,t,n){let o=[],i;do i=await this.turbosSdk.provider.getCoins({owner:e,coinType:t,cursor:i?.nextCursor}),o.push(...i.data);while(i.hasNextPage);let s=[],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?bf(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 kl=89,vl=1e6,Al=async a=>{let{token1:e,token2:t,poolId:n,amountIn:o,currentAddress:i,turbosSdk:s}=a,c=new Dl,p=new pn(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 D=await p.IsAccountCap(i),x=D?c.object(D):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(kl),x,c.pure.u64(o),c.object(xl("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)),D||c.transferObjects([x],c.pure.address(i)),c.setSenderIfNotSet(i),c.setGasBudget(vl),c},Ml=async a=>{let{token1:e,token2:t,poolId:n,amountIn:o,currentAddress:i,turbosSdk:s}=a,c=new Dl,p=new pn(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 D=await p.IsAccountCap(i),x=D?c.object(D):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(kl),x,c.pure.u64(o),S,k,c.object(xl("0x6"))]});return I&&c.transferObjects([I],c.pure.address(i)),c.transferObjects([M],c.pure.address(i)),c.transferObjects([L],c.pure.address(i)),D||c.transferObjects([x],c.pure.address(i)),c.setSenderIfNotSet(i),c.setGasBudget(vl),c};var Di=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Tf(t.network.replace("sui:",""),t.suiClient);return await Ml({...this.data,turbosSdk:n,currentAddress:t.account.address})}static fromData(t){return new a(t)}};import{TurbosSdk as Sf}from"turbos-clmm-sdk";var xi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Sf(t.network.replace("sui:",""),t.suiClient);return await Al({...this.data,turbosSdk:n,currentAddress:t.account.address})}static fromData(t){return new a(t)}};var ki=class{application="turbos";supportSDK="@mysten/sui";async deserialize(e){console.log(e,"input");let t=new If(e.network.replace("sui:","")),n=await t.contract.getConfig(),{transaction:o,account:i}=e,c=await new ui(o,t,n).decode(i.address);return{txType:wf.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=hi.fromData(e.intentionData);break;case"AddLiquidity":i=mi.fromData(e.intentionData);break;case"IncreaseLiquidity":i=bi.fromData(e.intentionData);break;case"DecreaseLiquidity":i=gi.fromData(e.intentionData);break;case"DecreaseLiquidityWithReturn":i=yi.fromData(e.intentionData);break;case"RemoveLiquidity":i=wi.fromData(e.intentionData);break;case"removeLiquidityWithReturn":i=Ii.fromData(e.intentionData);break;case"CollectFee":i=di.fromData(e.intentionData);break;case"CollectReward":i=fi.fromData(e.intentionData);break;case"Burn":i=pi.fromData(e.intentionData);break;case"Swap":i=Ci.fromData(e.intentionData);break;case"PrixJoin":i=Si.fromData(e.intentionData);break;case"PrixClaim":i=Ti.fromData(e.intentionData);break;case"SwapExactBaseForQuote":i=Di.fromData(e.intentionData);break;case"SwapExactQuoteForBase":i=xi.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};import{TransactionType as Mf}from"@msafe/sui3-utils";import{TransactionType as ms}from"@msafe/sui3-utils";import{bcs as Ol}from"@mysten/sui.js/bcs";import{normalizeStructTag as xf,normalizeSuiAddress as dn}from"@mysten/sui.js/utils";var Cf={packageId:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",poolObjectId:"0x7fa2faa111b8c65bea48a23049bfd81ca8f971a262d981dcd9a17c3825cb5baf",metadataObjectId:"0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",systemStateObjectId:"0x0000000000000000000000000000000000000000000000000000000000000005",certType:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",gasBudget:5e7},At=Cf;var vi=class{constructor(e){this.txb=e}decode(){if(console.log("txb",this.txb),this.isStakeTransaction())return this.decodeStake();if(this.isUnStakeTransaction())return this.decodeUnStake();if(this.isClaimTicketTransaction())return this.decodeClaimTicket();throw new Error("Unknown transaction type")}get transactions(){return this.txb.blockData.transactions}getMoveCallTransaction(e){return this.transactions.find(t=>t.kind==="MoveCall"&&t.target===e)}isStakeTransaction(){return!!this.getMoveCallTransaction(`${At.packageId}::native_pool::stake`)}isUnStakeTransaction(){return!!this.getMoveCallTransaction(`${At.packageId}::native_pool::unstake`)}isClaimTicketTransaction(){return!!this.getMoveCallTransaction(`${At.packageId}::native_pool::burn_ticket`)}decodeStake(){let e=this.transactions[0].amounts[0].value.toNumber();return{txType:ms.Other,type:"Stake",intentionData:{amount:e}}}decodeUnStake(){let t=this.transactions.find(n=>n.kind==="SplitCoins").amounts[0].value.toNumber();return{txType:ms.Other,type:"UnStake",intentionData:{amount:t}}}decodeClaimTicket(){let e=this.helper.decodeOwnedObjectId(2);return console.log(e),{txType:ms.Other,type:"ClaimTicket",intentionData:{ticketId:e}}}get helper(){let e=this.transactions.find(t=>t.kind==="MoveCall"&&t.target.startsWith(At.packageId));return new ps(e,this.txb)}},ps=class a{constructor(e,t){this.moveCall=e;this.txb=t}decodeSharedObjectId(e){let t=this.getInputParam(e);return a.getSharedObjectId(t)}decodeOwnedObjectId(e){let t=this.getInputParam(e);return a.getOwnedObjectId(t)}decodeInputU64(e){let t=this.decodePureArg(e,"u64");return Number(t)}decodeInputU8(e){let t=this.decodePureArg(e,"u8");return Number(t)}decodeInputAddress(e){let t=this.decodePureArg(e,"address");return dn(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 Ol.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 dn(e.value.Object.ImmOrOwned.objectId)}return dn(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return dn(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return dn(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 Ol.de(t,new Uint8Array(n))}typeArg(e){return xf(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};import{TransactionBlock as kf}from"@mysten/sui.js/transactions";var Ai=class a extends _t{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){console.log(t);let n=new kf,{ticketId:o}=this.data;return n.moveCall({target:`${At.packageId}::native_pool::burn_ticket`,arguments:[n.object(At.poolObjectId),n.object(At.systemStateObjectId),n.object(o)]}),n}static fromData(t){return new a(t)}};import{TransactionBlock as vf}from"@mysten/sui.js/transactions";var Mi=class a extends _t{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){console.log(t);let n=new vf,{amount:o}=this.data,[i]=n.splitCoins(n.gas,[n.pure(o)]);return n.moveCall({target:`${At.packageId}::native_pool::stake`,arguments:[n.object(At.poolObjectId),n.object(At.metadataObjectId),n.object(At.systemStateObjectId),i]}),n}static fromData(t){return new a(t)}};import{TransactionBlock as Af}from"@mysten/sui.js/transactions";var Oi=class a extends _t{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){console.log(t);let n=new Af,{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]===At.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:`${At.packageId}::native_pool::unstake`,arguments:[n.object(At.poolObjectId),n.object(At.metadataObjectId),n.object(At.systemStateObjectId),b]}),n}static fromData(t){return new a(t)}};var Pi=class{application="volo";supportSDK="@mysten/sui.js";async deserialize(e){let{transactionBlock:t}=e,o=new vi(t).decode();return{txType:Mf.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n}=e,o;switch(e.txSubType){case"Stake":o=Mi.fromData(e.intentionData);break;case"UnStake":o=Oi.fromData(e.intentionData);break;case"ClaimTicket":o=Ai.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};import{TransactionType as Vf}from"@msafe/sui3-utils";import{asIntN as Pl}from"@cetusprotocol/common-sdk";import{TransactionType as de}from"@msafe/sui3-utils";import{fromBase64 as fn}from"@mysten/bcs";import{bcs as hn}from"@mysten/sui/bcs";var Ri=class{constructor(e,t){this.transaction=e;this.appContext=t}async decode(){if(this.isOpenPositionTx())return this.decodeOpenPositionTx();if(this.isClosePositionTx())return this.decodeClosePositionTx();if(this.isProvideLiquidityTx())return this.decodeProvideLiquidityTx();if(this.isRemoveLiquidityTx())return this.decodeRemoveLiquidityTx();if(this.isCollectRewardsAndFeeTx())return this.decodeCollectRewardsAndFeeTx();if(this.isCollectRewardsTx())return this.decodeCollectRewardsTx();if(this.isCollectFeeTx())return this.decodeCollectFeeTx();if(this.isAggregator7KSwapTx())return this.decodeAggregator7KSwapTx();throw new Error("Unknown transaction type")}decodeOpenPositionTx(){let e=this.getMoveCallCommand("open_position"),t=this.getMoveCallCommand("provide_liquidity_with_fixed_amount");return{txType:de.Other,type:"OpenPosition",intentionData:{pool:this.getSharedObjectID(this.getInputIndex(e,1)),lowerTick:Number(Pl(BigInt(this.getU32(this.getInputIndex(e,2)))).toString()),upperTick:Number(Pl(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:de.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:de.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:de.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:de.Other,type:"CollectRewards",intentionData:{pool:e[0].pool,position:e[0].position,collectRewardTokens:e.map(t=>t.rewardCoinType)}}}decodeCollectFeeTx(){return{txType:de.Other,type:"CollectFee",intentionData:this.getFeeCallData()}}decodeCollectRewardsAndFeeTx(){let e=this.getFeeCallData();return{txType:de.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:de.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.u32().parse(Uint8Array.from(fn(this.inputs[e].Pure.bytes))))}getU64(e){return hn.u64().parse(Uint8Array.from(fn(this.inputs[e].Pure.bytes)))}getU128(e){return hn.u128().parse(Uint8Array.from(fn(this.inputs[e].Pure.bytes)))}getBoolean(e){return hn.bool().parse(Uint8Array.from(fn(this.inputs[e].Pure.bytes)))}getAddress(e){return hn.Address.parse(Uint8Array.from(fn(this.inputs[e].Pure.bytes)))}getTypeArguments(e){return e.MoveCall.typeArguments||[]}getInputIndex(e,t){return e.MoveCall.arguments[t].Input}};import{TransactionType as Nf}from"@msafe/sui3-utils";import{buildTx as Rf,getQuote as Bf}from"@bluefin-exchange/bluefin7k-aggregator-sdk";import{BN as Te,ClmmPoolUtil as Ef}from"@firefly-exchange/library-sui";import{Decimal as Wf}from"turbos-clmm-sdk";import{SuiClient as Of}from"@firefly-exchange/library-sui";import{OnChainCalls as Pf}from"@firefly-exchange/library-sui/spot";var Rl={rpc:"https://fullnode.mainnet.sui.io/",objects:{GlobalConfig:"0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",BasePackage:"0x3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267",CurrentPackage:"0x67b34b728c4e28e704dcfecf7c5cf55c7fc593b6c65c20d1836d97c209c1928a"}},oe=(a,e)=>{if(a!=="sui:mainnet")throw new Error("Bluefin spot protocol is only available on sui::mainnet");let t=new Of({url:Rl.rpc});return new Pf(t,Rl.objects,{address:e.address,isUIWallet:!1})};var Pt=class{static async OpenPosition(e,t,n){let o=oe(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=oe(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=oe(n,t),i=await o.queryChain.getPool(e.pool);return await o.removeLiquidity(i,e.position,{liquidityAmount:new Te(e.liquidity),tokenMaxA:new Te(e.maxAmountTokenA),tokenMaxB:new Te(e.maxAmountTokenB)},{returnTx:!0,sender:t.address})}static async closePosition(e,t,n){let o=oe(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=oe(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=oe(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=oe(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=oe(n,t),i=await Bf({tokenIn:e.tokenIn.address,tokenOut:e.tokenOut.address,amountIn:new Wf(e.amountIn).mul(10**e.tokenIn.decimals).toString()}),s=await Rf({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{...Ef.estLiquidityAndCoinAmountFromOneAmounts(t.lowerTick,t.upperTick,new Te(t.tokenAmount),t.isTokenAFixed,!0,0,new Te(e.current_sqrt_price)),tokenMaxA:new Te(t.maxAmountTokenA),tokenMaxB:new Te(t.maxAmountTokenB)}}};var Bi=class a extends w{constructor(t){super(t);this.data=t}txType=Nf.Other;txSubType="Aggregator7KSwap";async build(t){let{account:n,network:o}=t;return console.log(this.data),Pt.aggregator7KSwap(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as _f}from"@msafe/sui3-utils";var Ei=class a extends w{constructor(t){super(t);this.data=t}txType=_f.Other;txSubType="ClosePosition";async build(t){let{account:n,network:o}=t;return console.log(this.data),Pt.closePosition(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Lf}from"@msafe/sui3-utils";var Wi=class a extends w{constructor(t){super(t);this.data=t}txType=Lf.Other;txSubType="CollectFee";async build(t){let{account:n,network:o}=t;return console.log(this.data),Pt.collectFee(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as jf}from"@msafe/sui3-utils";var Ni=class a extends w{constructor(t){super(t);this.data=t}txType=jf.Other;txSubType="CollectRewards";async build(t){let{account:n,network:o}=t;return console.log(this.data),Pt.collectRewards(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Uf}from"@msafe/sui3-utils";var _i=class a extends w{constructor(t){super(t);this.data=t}txType=Uf.Other;txSubType="CollectRewardsAndFee";async build(t){let{account:n,network:o}=t;return console.log(this.data),Pt.collectRewardsAndFee(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as qf}from"@msafe/sui3-utils";var Li=class a extends w{constructor(t){super(t);this.data=t}txType=qf.Other;txSubType="OpenPosition";async build(t){let{account:n,network:o}=t;return console.log(this.data),Pt.OpenPosition(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Ff}from"@msafe/sui3-utils";var ji=class a extends w{constructor(t){super(t);this.data=t}txType=Ff.Other;txSubType="ProvideLiquidity";async build(t){let{account:n,network:o}=t;return console.log(this.data),Pt.provideLiquidity(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Kf}from"@msafe/sui3-utils";var Ui=class a extends w{constructor(t){super(t);this.data=t}txType=Kf.Other;txSubType="RemoveLiquidity";async build(t){let{account:n,network:o}=t;return console.log(this.data),Pt.removeLiquidity(this.data,n,o)}static fromData(t){return new a(t)}};var qi=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 Ri(t,n).decode();return{txType:Vf.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=Li.fromData(e.intentionData);break;case"ProvideLiquidity":i=ji.fromData(e.intentionData);break;case"RemoveLiquidity":i=Ui.fromData(e.intentionData);break;case"ClosePosition":i=Ei.fromData(e.intentionData);break;case"CollectFee":i=Wi.fromData(e.intentionData);break;case"CollectRewards":i=Ni.fromData(e.intentionData);break;case"CollectRewardsAndFee":i=_i.fromData(e.intentionData);break;case"Aggregator7KSwap":i=Bi.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};import{TransactionType as Mh}from"@msafe/sui3-utils";import{MmtSDK as Zf}from"@mmt-finance/clmm-sdk";import{Transaction as th}from"@mysten/sui/transactions";var R=fu(El());import{convertI32ToSigned as fs,TickMath as _l}from"@mmt-finance/clmm-sdk/dist/utils/math/tickMath";import Gf from"bignumber.js";var $f="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",Wt=a=>a!=="0x2::sui::SUI"?a:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",Hf=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},Xf=(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")},zf=(a,e,t,n)=>{if(a===$f){let[o]=n.splitCoins(n.gas,[n.pure.u64(t)]);return o}else{let o=Xf(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 Wl(a,e,t,n,o){let i=await Hf({suiClient:a.rpcClient,address:e,type:t});return zf(Wt(t),i.map(c=>({balance:BigInt(c.balance),objectId:c.coinObjectId})),n,o)}var Se=(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 Nl({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 Qf(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 Yf(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 Ll=(a,e,t)=>{let n=fs(t?a+a%(e??1):a-a%(e??1));return n>0?new R.default(Qf(n)):new R.default(Yf(n))};function jl(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 Zt({address:a,coinType:e,coinAmount:t,coinDecimals:n,tx:o,mmt:i}){let s=jl(t,n),c;return Number(t)?c=await Wl(i,a,Wt(e),s,o):[c]=o.moveCall({target:"0x2::coin::zero",typeArguments:[e],arguments:[]}),c}function Ul({mmt:a,tx:e,poolModel:t,selectedLowTick:n,selectedHighTick:o}){let i=Ll(fs(n),t.tickSpacing),s=Ll(fs(o),t.tickSpacing);return a.Position.openPosition(e,t,i.toString(),s.toString())}var Jf=(a,e)=>{let n=1e4-Math.floor(e*100);return a*BigInt(n)/BigInt(1e4)};function Fi(a,e,t){let n=jl(a,e);return Number(a)===0?BigInt(0):Jf(n,t)}async function we({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=_l.sqrtPriceX64ToPrice(new R.default(p?.toString()),t.decimals,n.decimals),S=i?(100-o)/100:(100+o)/100,I=_l.priceToSqrtPriceX64(b.mul(S),t.decimals,n.decimals);return BigInt(I.toString())}var ql=async(a,e,t,n,o,i,s,c,p,b)=>{let S=await Zt({mmt:a,address:t,coinType:i.tokenX.coinType,coinAmount:n,coinDecimals:i.tokenX.decimals,tx:e}),I=await Zt({mmt:a,address:t,coinType:i.tokenY.coinType,coinAmount:o,coinDecimals:i.tokenY.decimals,tx:e}),D={objectId:s,tokenXType:i.tokenXType,tokenYType:i.tokenYType,tickSpacing:i.tickSpacing},x=Ul({mmt:a,tx:e,poolModel:D,selectedLowTick:c,selectedHighTick:p}),k=Fi(n,i.tokenX.decimals,b),M=Fi(o,i.tokenY.decimals,b);a.Pool.addLiquidity(e,D,x,S,I,k,M,t),e.transferObjects([x],e.pure.address(t))},Fl=async(a,e,t,n,o,i,s,c,p,b,S)=>{try{let I=await Zt({mmt:a,address:n,coinType:i?s.tokenX.coinType:s.tokenY.coinType,coinAmount:o,coinDecimals:i?s.tokenX.decimals:s.tokenY.decimals,tx:e}),D={objectId:s.poolId,tokenXType:Wt(s.tokenX.coinType),tokenYType:Wt(s.tokenY.coinType),tickSpacing:s.tickSpacing},x=Ul({mmt:a,tx:e,poolModel:D,selectedLowTick:c,selectedHighTick:p}),k=await we({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:D,position:x,inputCoin:I,isXtoY:i,limitSqrtPrice:k,slippagePercentage:S,transferToAddress:n,useMvr:!0}),e.transferObjects([x],e.pure.address(n))}catch(I){console.error(I)}},Kl=async(a,e,t,n,o,i,s,c)=>{let p=await Zt({mmt:a,address:t,coinType:i.tokenX.coinType,coinAmount:n,coinDecimals:i.tokenX.decimals,tx:e}),b=await Zt({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=Fi(n,i.tokenX.decimals,c),D=Fi(o,i.tokenY.decimals,c);a.Pool.addLiquidity(e,S,s,p,b,I,D,t)},Vl=async(a,e,t,n,o,i,s,c,p)=>{try{let b=await Zt({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 we({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}},$l=(a,e)=>BigInt(e===100?a:new Gf(a).multipliedBy(e/100).toFixed(0)),Hl=async(a,e,t,n,o,i)=>{let s=$l(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),Se(a,e,t,n,i),o===100&&a.Position.closePosition(i,t.objectId)},Xl=async({sdk:a,address:e,position:t,pool:n,withdrawPercentage:o,txb:i,targetCoinType:s,slippage:c})=>{let p=$l(t.liquidity,o),b=Wt(n.tokenX.coinType),S=Wt(n.tokenY.coinType),I=Wt(s)===S,D={objectId:n?.poolId,tokenXType:b,tokenYType:S},{removeLpCoinA:x,removeLpCoinB:k}=a.Pool.removeLiquidity(i,D,t.objectId,p,BigInt(0),BigInt(0)),M=await we({suiClient:a.rpcClient,poolId:n.poolId,currentSqrtPrice:n.currentSqrtPrice,tokenX:n.tokenX,tokenY:n.tokenY,isTokenX:I,slippagePercentage:c}),L=I?x:k,U=i.moveCall({target:"0x2::coin::value",arguments:[L],typeArguments:[I?b:S]});i.transferObjects([I?k:x],e),a.Pool.swapV2({txb:i,transferToAddress:e,pool:D,limitSqrtPrice:M,amount:U,inputCoin:L,isXtoY:I}),Se(a,e,t,n,i),o===100&&a.Position.closePosition(i,t.objectId)};var Ki=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=Zf.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amountA:i,amountB:s,pool:c,selectedLowTick:p,selectedHighTick:b,slippage:S}=n,I=new th;return await ql(t,I,o,i,s,c,c.poolId,p,b,S),I}static fromData(t){return new a(t)}};import{MmtSDK as eh}from"@mmt-finance/clmm-sdk";import{Transaction as nh}from"@mysten/sui/transactions";var Vi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=eh.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amount:i,isTokenX:s,pool:c,selectedLowTick:p,selectedHighTick:b,swapSlippage:S,addLiquiditySlippage:I}=n,D=new nh;return await Fl(t,D,t.rpcClient,o,i,s,c,p,b,S,I),D}static fromData(t){return new a(t)}};import{MmtSDK as oh}from"@mmt-finance/clmm-sdk";import{VeMMT as ah}from"@mmt-finance/ve-sdk-v1";import{Transaction as ih}from"@mysten/sui/transactions";var qe="0x35169bc93e1fddfcf3a82a9eae726d349689ed59e4b065369af8789fe59f8608::mmt::MMT";var gn=async a=>{let e=await a.getSyncEpochInfo();if(!e)throw new Error("Failed to sync epoch");return e},zl=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 Zt({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 gn(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 x=c.getData().commands.length;if(x===0)throw new Error(`Bond Failed: Transaction has no commands. enableAutoMaxBond: ${i}, unbondAt: ${s}, amount: ${n}`);if(x===I)throw new Error(`Bond Failed: No new commands were added by bond operation. Commands before: ${I}, after: ${x}`)},Gl=async(a,e,t,n,o,i,s,c)=>{let p=await gn(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)}},Ql=async(a,e,t,n,o)=>{let i=await gn(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())},Yl=async(a,e,t,n)=>{let o=await gn(a);await a.syncOrAdvanceEpoch(n,o.currentEpoch,o.syncedEpoch),await a.claimReward(n,t,e),await a.unbond(n,t,e)},Jl=async(a,e,t,n)=>{if(t.length>0&&t.some(o=>o.userRewardAmount>0)){let o=await gn(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())}},Zl=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 Mt=await e.buildClaimRewardCoin(o,q.veId);S.push(Mt)}let I=[];for(let q of S)Array.isArray(q)?I.push(...q):I.push(q);if(I.length===0)return;if(i===Wt(qe)){o.transferObjects(I,o.pure.address(t));return}let D=c?.[i]?.[qe];if(!D||D.length===0)throw new Error(`No swap route found from ${qe} to ${i}`);let[x,...k]=I;k.length>0&&o.mergeCoins(x,k);let M=x,L=o.moveCall({target:"0x2::coin::value",arguments:[M],typeArguments:[qe]}),U=Wt(qe);for(let q=0;q<D.length;q++){let Mt=D[q],N=p.find(H=>H.poolId===Mt);if(!N)throw new Error(`Pool ${Mt} not found`);let Rt=Wt(N.tokenXType||N.tokenX?.coinType||"")===U,Ce={objectId:N.poolId,tokenXType:N.tokenXType||N.tokenX?.coinType||"",tokenYType:N.tokenYType||N.tokenY?.coinType||""},yn=await we({suiClient:a.rpcClient,poolId:N.poolId,currentSqrtPrice:N.currentSqrtPrice,tokenX:N.tokenX,tokenY:N.tokenY,slippagePercentage:s,isTokenX:Rt}),{outputCoin:bn,leftoverCoin:Fe}=a.Pool.swapV2({txb:o,pool:Ce,amount:L,inputCoin:M,isXtoY:Rt,limitSqrtPrice:yn});if(o.transferObjects([Fe],o.pure.address(t)),M=bn,U=Rt?Wt(N.tokenYType||N.tokenY?.coinType||""):Wt(N.tokenXType||N.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 $i=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=oh.NEW({network:"mainnet"}),o=new ah(t.suiClient,"mainnet"),{params:i}=this.data,{address:s,positions:c,pools:p,veMMTs:b}=i,S=new ih;for(let I of c){let D=p.find(x=>x.poolId===I.poolId);D&&Se(n,s,I,D,S)}return await Jl(o,s,b,S),S}static fromData(t){return new a(t)}};import{MmtSDK as rh}from"@mmt-finance/clmm-sdk";import{VeMMT as sh}from"@mmt-finance/ve-sdk-v1";import{Transaction as ch}from"@mysten/sui/transactions";var Hi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=rh.NEW({network:"mainnet"}),o=new sh(t.suiClient,"mainnet"),{params:i}=this.data,{claimVeMMTParams:s}=i,{address:c,veMMTs:p,targetCoinType:b,slippage:S,claimRoutes:I,pools:D}=s,x=new ch;return await Promise.all(i.claimParams.map(k=>Nl({...k,sdk:n,txb:x}))),await Zl(n,o,c,p,x,b,S,I,D),x}static fromData(t){return new a(t)}};import{MmtSDK as lh}from"@mmt-finance/clmm-sdk";import{Transaction as uh}from"@mysten/sui/transactions";var Xi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=lh.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,position:i,pool:s}=n,c=new uh;return Se(t,o,i,s,c),c}static fromData(t){return new a(t)}};import{MmtSDK as mh}from"@mmt-finance/clmm-sdk";import{Transaction as ph}from"@mysten/sui/transactions";var zi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=mh.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amountA:i,amountB:s,pool:c,positionObjectId:p,slippage:b}=n,S=new ph;return await Kl(t,S,o,i,s,c,p,b),S}static fromData(t){return new a(t)}};import{MmtSDK as dh}from"@mmt-finance/clmm-sdk";import{Transaction as fh}from"@mysten/sui/transactions";var Gi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=dh.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amount:i,isTokenX:s,pool:c,positionObjectId:p,swapSlippage:b,addLiquiditySlippage:S}=n,I=new fh;return await Vl(t,I,o,i,s,c,p,b,S),I}static fromData(t){return new a(t)}};import{MmtSDK as hh}from"@mmt-finance/clmm-sdk";import{Transaction as gh}from"@mysten/sui/transactions";var Qi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=hh.NEW({network:"mainnet"}),{params:n}=this.data,{pool:o,position:i,address:s,withdrawPercentage:c,zapOutOn:p,targetCoinType:b,slippage:S}=n,I=new gh;return p?await Xl({sdk:t,address:s,position:i,pool:o,withdrawPercentage:c,txb:I,targetCoinType:b,slippage:S}):await Hl(t,s,i,o,c,I),I}static fromData(t){return new a(t)}};import{Transaction as tu}from"@mysten/sui/transactions";import{LstClient as eu}from"@suilend/springsui-sdk";var hs={id:"0x0431232199873db77a92aa645cd43521437e9cc5c6fff07fd03edb88afe0b25a",type:"0x2b6602099970374cf58a2a1b9d96f005fccceb81e92eb059873baf420eb6c717::x_sui::X_SUI",weightHookId:"0x9e35c13dbb0bc437e8ad5a95ec463622f58763e060552ae8d100db77f4904601"},nu=async(a,e,t)=>{let n=await eu.initialize(a,hs),o=new tu,[i]=o.splitCoins(o.gas,[BigInt(t)]),s=n.mint(o,i);return o.transferObjects([s],e),o},ou=async(a,e,t)=>{let n=await eu.initialize(a,hs),o=await a.getCoins({owner:e,coinType:hs.type,limit:1e3});if(o.data.length===0)throw new Error("No lst coins found");let i=new tu,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 Yi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{params:n}=this.data,{address:o,amount:i}=n;return await nu(t.suiClient,o,i)}static fromData(t){return new a(t)}};import{MmtSDK as bh}from"@mmt-finance/clmm-sdk";import{Transaction as Th}from"@mysten/sui/transactions";import{mappedMmtV3Pool as yh}from"@mmt-finance/clmm-sdk/dist/utils/poolUtils";var au=async(a,e,t,n,o,i,s)=>{let c=await Zt({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:D,tokenY:x,isStable:k,currentSqrtPrice:M}=e[S],{id:L,isReverse:U}=yh[I]||{id:I,isReverse:!1},q=Wt(D.coinType)===Wt(b);q=U?!q:q;let Mt=U?x.coinType:D.coinType,N=U?D.coinType:x.coinType,Ie=await we({poolId:L,tokenX:D,tokenY:x,slippagePercentage:s,isTokenX:q,suiClient:a.rpcClient,currentSqrtPrice:M}),Rt=a.Pool.swap(i,{objectId:L,tokenXType:Mt,tokenYType:N,isStable:k},p,c,q,void 0,Ie,!1);i.transferObjects([c],i.pure.address(o)),c=Rt,b=q?N:Mt,p=i.moveCall({target:"0x2::coin::value",typeArguments:[b],arguments:[c]})}i.transferObjects([c],i.pure.address(o))};var Ji=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=bh.NEW({network:"mainnet"}),{params:n}=this.data,{route:o,tokenIn:i,amountIn:s,address:c,slippage:p}=n,b=new Th;return await au(t,o,i,s,c,b,p),b}static fromData(t){return new a(t)}};var Zi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{params:n}=this.data,{address:o,amount:i}=n;return await ou(t.suiClient,o,i)}static fromData(t){return new a(t)}};import{MmtSDK as Sh}from"@mmt-finance/clmm-sdk";import{VeMMT as wh}from"@mmt-finance/ve-sdk-v1";import{Transaction as Ih}from"@mysten/sui/transactions";var tr=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=Sh.NEW({network:"mainnet"}),o=new wh(t.suiClient,"mainnet"),{params:i}=this.data,{token:s,amount:c,address:p,enableAutoMaxBond:b,unbondAt:S}=i,I=new Ih;return await zl(n,o,s,c,p,b,S,I),I}static fromData(t){return new a(t)}};import{VeMMT as Ch}from"@mmt-finance/ve-sdk-v1";import{Transaction as Dh}from"@mysten/sui/transactions";var er=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Ch(t.suiClient,"mainnet"),{params:o}=this.data,{address:i,veId:s,currentUnbondAt:c,isCurrentlyMaxBond:p,enableAutoMaxBond:b,unbondAt:S}=o,I=new Dh;return await Gl(n,i,s,c,p,b,S,I),I}static fromData(t){return new a(t)}};import{VeMMT as xh}from"@mmt-finance/ve-sdk-v1";import{Transaction as kh}from"@mysten/sui/transactions";var nr=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new xh(t.suiClient,"mainnet"),{params:o}=this.data,{address:i,veId:s,selectedVeMMTIds:c}=o,p=new kh;return await Ql(n,i,s,c,p),p}static fromData(t){return new a(t)}};import{VeMMT as vh}from"@mmt-finance/ve-sdk-v1";import{Transaction as Ah}from"@mysten/sui/transactions";var or=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new vh(t.suiClient,"mainnet"),{params:o}=this.data,{address:i,veId:s}=o,c=new Ah;return await Yl(n,i,s,c),c}static fromData(t){return new a(t)}};var ar=class{application="mmt-dex";supportSDK="@mysten/sui";async deserialize(e){let{appContext:t}=e;return{txType:Mh.Other,txSubType:t.action,intentionData:t}}async build(e){let t;switch(e.txSubType){case"Swap":t=Ji.fromData(e.intentionData);break;case"AddLiquidity":t=Ki.fromData(e.intentionData);break;case"AddLiquiditySingleSide":t=Vi.fromData(e.intentionData);break;case"ClaimRewards":t=Xi.fromData(e.intentionData);break;case"ClaimAllRewards":t=$i.fromData(e.intentionData);break;case"ClaimRewardsAs":t=Hi.fromData(e.intentionData);break;case"RemoveLiquidity":t=Qi.fromData(e.intentionData);break;case"StakeXSui":t=Yi.fromData(e.intentionData);break;case"UnstakeXSui":t=Zi.fromData(e.intentionData);break;case"ManageLiquidity":t=zi.fromData(e.intentionData);break;case"ManageLiquiditySingleSide":t=Gi.fromData(e.intentionData);break;case"Bond":t=tr.fromData(e.intentionData);break;case"Extend":t=er.fromData(e.intentionData);break;case"Merge":t=nr.fromData(e.intentionData);break;case"Unbond":t=or.fromData(e.intentionData);break;default:throw new Error(`not implemented ${e.txSubType}`)}return t.build({suiClient:e.suiClient})}};import{TransactionType as iu}from"@msafe/sui3-utils";import{Transaction as Oh}from"@mysten/sui/transactions";import{Vaults as Ph}from"@nemoprotocol/vaults-sdk";var ir=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t,i=Ph.createSDK({client:n}),s=new Oh;return await i.deposit(this.data,o.address,s),s}static fromData(t){return new a(t)}};import{Transaction as Rh}from"@mysten/sui/transactions";import{Vaults as Bh}from"@nemoprotocol/vaults-sdk";var rr=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t,i=Bh.createSDK({client:n}),s=new Rh;return await i.withdraw(this.data,o.address,s),s}static fromData(t){return new a(t)}};var sr=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:iu.Other,txSubType:"VaultDeposit",intentionData:e.appContext};if(n)return{txType:iu.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=ir.fromData(e.intentionData);break;case"VaultWithdraw":o=rr.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};var L4=la.fromHelpers([new zo,new ia,new $o,new ra,new To,new ki,new ar,new Fa,new Pi,new $n,new Ja,new ii,new vn,new qi,new li,new sr]);export{L4 as appHelpers};
|
|
1
|
+
var mu=Object.create;var Or=Object.defineProperty;var pu=Object.getOwnPropertyDescriptor;var du=Object.getOwnPropertyNames;var fu=Object.getPrototypeOf,hu=Object.prototype.hasOwnProperty;var gu=(a=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')});var yu=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports),Ls=(a,e)=>{for(var t in e)Or(a,t,{get:e[t],enumerable:!0})},bu=(a,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of du(e))!hu.call(a,o)&&o!==t&&Or(a,o,{get:()=>e[o],enumerable:!(n=pu(e,o))||n.enumerable});return a};var Tu=(a,e,t)=>(t=a!=null?mu(fu(a)):{},bu(e||!a||!a.__esModule?Or(t,"default",{value:a,enumerable:!0}):t,a));var jl=yu((Ll,bs)=>{"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=gu("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,ie=d[2]|0,K=ie&8191,$=ie>>>13,ws=d[3]|0,X=ws&8191,z=ws>>>13,Is=d[4]|0,Q=Is&8191,Y=Is>>>13,Cs=d[5]|0,J=Cs&8191,Z=Cs>>>13,xs=d[6]|0,tt=xs&8191,et=xs>>>13,Ds=d[7]|0,nt=Ds&8191,ot=Ds>>>13,ks=d[8]|0,at=ks&8191,it=ks>>>13,vs=d[9]|0,rt=vs&8191,st=vs>>>13,As=h[0]|0,ct=As&8191,lt=As>>>13,Ms=h[1]|0,ut=Ms&8191,mt=Ms>>>13,Os=h[2]|0,pt=Os&8191,dt=Os>>>13,Ps=h[3]|0,ft=Ps&8191,ht=Ps>>>13,Rs=h[4]|0,gt=Rs&8191,yt=Rs>>>13,Bs=h[5]|0,bt=Bs&8191,Tt=Bs>>>13,Es=h[6]|0,St=Es&8191,wt=Es>>>13,Ns=h[7]|0,It=Ns&8191,Ct=Ns>>>13,Ws=h[8]|0,xt=Ws&8191,Dt=Ws>>>13,_s=h[9]|0,kt=_s&8191,vt=_s>>>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 mr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(mr>>>26)|0,mr&=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 pr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(pr>>>26)|0,pr&=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 dr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(dr>>>26)|0,dr&=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 fr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(fr>>>26)|0,fr&=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 yr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(yr>>>26)|0,yr&=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 br=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(br>>>26)|0,br&=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 Tr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Tr>>>26)|0,Tr&=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 Sr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Sr>>>26)|0,Sr&=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 wr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(wr>>>26)|0,wr&=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 Ir=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Ir>>>26)|0,Ir&=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 Cr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Cr>>>26)|0,Cr&=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 xr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(xr>>>26)|0,xr&=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 Dr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Dr>>>26)|0,Dr&=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 kr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(kr>>>26)|0,kr&=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 vr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(vr>>>26)|0,vr&=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 Ar=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Ar>>>26)|0,Ar&=67108863,f=Math.imul(rt,kt),l=Math.imul(rt,vt),l=l+Math.imul(st,kt)|0,g=Math.imul(st,vt);var Mr=(C+f|0)+((l&8191)<<13)|0;return C=(g+(l>>>13)|0)+(Mr>>>26)|0,Mr&=67108863,T[0]=mr,T[1]=pr,T[2]=dr,T[3]=fr,T[4]=hr,T[5]=gr,T[6]=yr,T[7]=br,T[8]=Tr,T[9]=Sr,T[10]=wr,T[11]=Ir,T[12]=Cr,T[13]=xr,T[14]=Dr,T[15]=kr,T[16]=vr,T[17]=Ar,T[18]=Mr,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 Mt(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=Mt(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],ie=m[v+B+C],K=d[v+B+C],$=O*ie-P*K;K=O*K+P*ie,ie=$,m[v+B]=_+ie,d[v+B]=F+K,m[v+B+C]=_-ie,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),Mt(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 Ie={k256:null,p224:null,p192:null,p25519:null};function Rt(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()}Rt.prototype._tmp=function(){var r=new o(null);return r.words=new Array(Math.ceil(this.n/13)),r},Rt.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},Rt.prototype.split=function(r,u){r.iushrn(this.n,0,u)},Rt.prototype.imulK=function(r){return r.imul(this.k)};function Ce(){Rt.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Ce,Rt),Ce.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},Ce.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 Tn(){Rt.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}n(Tn,Rt);function Sn(){Rt.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}n(Sn,Rt);function Ke(){Rt.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}n(Ke,Rt),Ke.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(Ie[r])return Ie[r];var u;if(r==="k256")u=new Ce;else if(r==="p224")u=new Tn;else if(r==="p192")u=new Sn;else if(r==="p25519")u=new Ke;else throw new Error("Unknown prime "+r);return Ie[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 fe(r)};function fe(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(fe,H),fe.prototype.convertTo=function(r){return this.imod(r.ushln(this.shift))},fe.prototype.convertFrom=function(r){var u=this.imod(r.mul(this.rinv));return u.red=null,u},fe.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)},fe.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)},fe.prototype.invm=function(r){var u=this.imod(r._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(typeof bs>"u"||bs,Ll)});import{TransactionType as Ou}from"@msafe/sui3-utils";import{coinsList as wu,poolIdPoolNameMap as Iu,poolInfo as js,singleAssetPoolCoinMap as Cu}from"@alphafi/alphafi-sdk";import{TransactionType as Ve}from"@msafe/sui3-utils";import{bcs as wn,fromBase64 as In}from"@mysten/bcs";var Cn=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=Iu[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&&js[t].assetTypes.length===2}isSingleAssetDepositEvent(e,t){return e.event_type===0&&js[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=wn.u64().parse(In(t)):t.length===24?n=wn.u128().parse(In(t)):t.length===44?n=wn.u256().parse(In(t)):n=wn.u64().parse(In(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:Ve.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}=Cu[e],{expo:s}=wu[i];n=Math.floor(Number(n)/10**(9-s)).toString()}return{txType:Ve.Other,type:"depositSingleAsset",intentionData:{poolName:e,amount:n}}}decodeWithdraw(e){let t=this.extractXTokensAmount();return console.log("Decoder.decodeWithdraw",t),{txType:Ve.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:Ve.Other,type:"withdrawAlpha",intentionData:{withdrawFromLocked:Number(n)>0,xTokensAmount:t}}}decodeClaimReward(){return{txType:Ve.Other,type:"claimReward",intentionData:{}}}};import{claimRewardTxb as Du}from"@alphafi/alphafi-sdk";import xu from"sort-keys-recursive";var w=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify(xu(this.data))}};var xn=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t;return await Du(n.address)}static fromData(t){return new a(t)}};import{depositDoubleAssetTxb as ku}from"@alphafi/alphafi-sdk";var Dn=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 ku(o,n.address,i,s)}static fromData(t){return console.log("DepositDoubleAssetIntention.fromData",t),new a(t)}};import{depositSingleAssetTxb as vu}from"@alphafi/alphafi-sdk";var kn=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 vu(o,n.address,i)}static fromData(t){return console.log("DepositSingleAssetIntention.fromData",t),new a(t)}};import{withdrawTxb as Au}from"@alphafi/alphafi-sdk";var vn=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 Au(i,o,n.address)}static fromData(t){return console.log("WithdrawIntention.fromData",t),new a(t)}};import{withdrawAlphaTxb as Mu}from"@alphafi/alphafi-sdk";var An=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 Mu(i,o,n.address)}static fromData(t){return console.log("WithdrawAlphaIntention.fromData",t),new a(t)}};var Mn=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 Cn(t,i).decode();return{txType:Ou.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=kn.fromData(e.intentionData);break;case"depositDoubleAsset":n=Dn.fromData(e.intentionData);break;case"withdraw":n=vn.fromData(e.intentionData);break;case"withdrawAlpha":n=An.fromData(e.intentionData);break;case"claimReward":n=xn.fromData(e.intentionData);break;default:throw new Error("not implemented")}return n.build({account:t})}};import{TransactionType as Zu}from"@msafe/sui3-utils";import{TransactionType as jt}from"@msafe/sui3-utils";import{bcs as Pr}from"@mysten/sui/bcs";import{SBUCK_FOUNTAIN_PACKAGE_ID as Rr}from"bucket-protocol-sdk";var On=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(Rr,"fountain_core","stake")}isSBUCKUnstakeTransaction(){return!!this.getMoveCallPackageModuleCommand(Rr,"fountain_core","force_unstake")}isSBUCKClaimTransaction(){return!!this.getMoveCallPackageModuleCommand(Rr,"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.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.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.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.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.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.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.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.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.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.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.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.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.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 Pr.U64.fromBase64(t.Pure.bytes)}getPureAddresses(e){let t=this.inputs[e];if(t.$kind!=="Pure")throw new Error("not pure argument");return Pr.vector(Pr.Address).fromBase64(t.Pure.bytes)}};import{TransactionType as Eu}from"@msafe/sui3-utils";import{Transaction as Ru}from"@mysten/sui/transactions";import{buildPsmTx as Bu}from"bucket-protocol-sdk";import{BucketClient as Pu}from"bucket-protocol-sdk";var Bt=(a,e)=>{let t=a==="sui:mainnet"?"mainnet":"testnet";return new Pu(t,e.address)};var Us=async(a,e,t)=>{let{coinType:n,amount:o,buckToCoin:i}=a,s=new Ru,c=Bt(t,e);return await Bu(c,s,n,o,i,e.address),s};var Pn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Eu.Other;txSubType="psm";async build(t){let{account:n,network:o}=t;return await Us(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as ju}from"@msafe/sui3-utils";import{Transaction as Rn}from"@mysten/sui/transactions";import{buildBorrowTx as Nu,buildCloseTx as Wu,buildRepayTx as _u,buildWithdrawTx as Lu}from"bucket-protocol-sdk";var qs=async(a,e,t)=>{let{collateralType:n,collateralAmount:o,borrowAmount:i,insertionPlace:s,strapId:c}=a,p=new Rn,b=Bt(t,e);return await Nu(b,p,n,o,i,e.address,s,c),p},Fs=async(a,e,t)=>{let{collateralType:n,withdrawAmount:o,insertionPlace:i,strapId:s}=a,c=new Rn,p=Bt(t,e);return await Lu(p,c,n,o,e.address,i,s),c},Ks=async(a,e,t)=>{let{collateralType:n,repayAmount:o,withdrawAmount:i,isSurplus:s,insertionPlace:c,strapId:p}=a,b=new Rn,S=Bt(t,e);return await _u(S,b,n,o,i,e.address,s,c,p),b},Vs=async(a,e,t)=>{let{collateralType:n,recipient:o,strapId:i}=a,s=new Rn,c=Bt(t,e);return await Wu(c,s,n,o,i),s};var Bn=class a extends w{constructor(t){super(t);this.data=t}data;txType=ju.Other;txSubType="borrow";async build(t){let{account:n,network:o}=t;return await qs(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Uu}from"@msafe/sui3-utils";var En=class a extends w{constructor(t){super(t);this.data=t}data;txType=Uu.Other;txSubType="repay";async build(t){let{account:n,network:o}=t;return await Ks(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as qu}from"@msafe/sui3-utils";var Nn=class a extends w{constructor(t){super(t);this.data=t}data;txType=qu.Other;txSubType="withdraw";async build(t){let{account:n,network:o}=t;return await Fs(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Fu}from"@msafe/sui3-utils";var Wn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Fu.Other;txSubType="close";async build(t){let{account:n,network:o}=t;return await Vs(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Fn}from"@msafe/sui3-utils";import{Transaction as _n}from"@mysten/sui/transactions";import{buildSBUCKClaimTx as Ku,buildSBUCKDepositTx as Vu,buildSBUCKUnstakeTx as $u,buildSBUCKWithdrawTx as Hu}from"bucket-protocol-sdk";var $s=async(a,e,t)=>{let{coinType:n,amount:o,isStake:i}=a,s=new _n,c=Bt(t,e);return await Vu(c,s,n,o,e.address,i),s},Hs=async(a,e,t)=>{let{stakeProofs:n,amount:o,isStake:i,toBuck:s}=a,c=new _n,p=Bt(t,e);return await $u(p,c,n,o,e.address,i,s),c},Gs=async(a,e,t)=>{let{amount:n}=a,o=new _n,i=Bt(t,e);return await Hu(i,o,n,e.address),o},Xs=async(a,e,t)=>{let{stakeProofs:n}=a,o=new _n,i=Bt(t,e);return await Ku(i,o,n,e.address),o};var Ln=class a extends w{constructor(t){super(t);this.data=t}data;txType=Fn.Other;txSubType="sbuck-deposit";async build(t){let{account:n,network:o}=t;return await $s(this.data,n,o)}static fromData(t){return new a(t)}},jn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Fn.Other;txSubType="sbuck-unstake";async build(t){let{account:n,network:o}=t;return await Hs(this.data,n,o)}static fromData(t){return new a(t)}},Un=class a extends w{constructor(t){super(t);this.data=t}data;txType=Fn.Other;txSubType="sbuck-withdraw";async build(t){let{account:n,network:o}=t;return await Gs(this.data,n,o)}static fromData(t){return new a(t)}},qn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Fn.Other;txSubType="sbuck-claim";async build(t){let{account:n,network:o}=t;return await Xs(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Er}from"@msafe/sui3-utils";import{Transaction as Br}from"@mysten/sui/transactions";import{buildTankClaimTx as Gu,buildTankDepositTx as Xu,buildTankWithdrawTx as zu}from"bucket-protocol-sdk";var zs=async(a,e,t)=>{let{coinType:n,amount:o}=a,i=new Br,s=Bt(t,e);return await Xu(s,i,n,o,e.address),i},Qs=async(a,e,t)=>{let{coinType:n,amount:o}=a,i=new Br,s=Bt(t,e);return await zu(s,i,n,o,e.address),i},Ys=async(a,e,t)=>{let{coinType:n}=a,o=new Br,i=Bt(t,e);return await Gu(i,o,n,e.address),o};import{Transaction as Qu}from"@mysten/sui/transactions";import{buildLockedClaimTx as Yu}from"bucket-protocol-sdk";var Js=async(a,e,t)=>{let{coinType:n,proofCount:o}=a,i=new Qu,s=Bt(t,e);return await Yu(s,i,n,o,e.address),i};var Kn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Er.Other;txSubType="tank-deposit";async build(t){let{account:n,network:o}=t;return await zs(this.data,n,o)}static fromData(t){return new a(t)}},Vn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Er.Other;txSubType="tank-withdraw";async build(t){let{account:n,network:o}=t;return await Qs(this.data,n,o)}static fromData(t){return new a(t)}},$n=class a extends w{constructor(t){super(t);this.data=t}data;txType=Er.Other;txSubType="tank-claim";async build(t){let{account:n,network:o}=t;return await Ys(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Ju}from"@msafe/sui3-utils";var Hn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Ju.Other;txSubType="lock-claim";async build(t){let{account:n,network:o}=t;return await Js(this.data,n,o)}static fromData(t){return new a(t)}};var Gn=class{application="bucket";supportSDK="@mysten/sui";async deserialize(e){console.log("Bucket helper deserialize input: ",e);let{transaction:t}=e,o=new On(t).decode();return{txType:Zu.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=Pn.fromData(e.intentionData);break;case"borrow":i=Bn.fromData(e.intentionData);break;case"withdraw":i=Nn.fromData(e.intentionData);break;case"repay":i=En.fromData(e.intentionData);break;case"close":i=Wn.fromData(e.intentionData);break;case"tank-deposit":i=Kn.fromData(e.intentionData);break;case"tank-withdraw":i=Vn.fromData(e.intentionData);break;case"tank-claim":i=$n.fromData(e.intentionData);break;case"sbuck-deposit":i=Ln.fromData(e.intentionData);break;case"sbuck-unstake":i=jn.fromData(e.intentionData);break;case"sbuck-withdraw":i=Un.fromData(e.intentionData);break;case"sbuck-claim":i=qn.fromData(e.intentionData);break;case"lock-claim":i=Hn.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};import{TransactionType as Pm}from"@msafe/sui3-utils";import{TransactionType as em}from"@msafe/sui3-utils";import{SuiClient as Nr,getFullnodeUrl as Zs}from"@mysten/sui/client";var Xt=async(a,e)=>{let{CetusClmmSDK:t}=await import("@cetusprotocol/sui-clmm-sdk"),n=t.createSDK({env:"mainnet",sui_client:new Nr({url:Zs("mainnet")})});return n.setSenderAddress(e.address),n},Ut=async(a,e)=>{let{CetusFarmsSDK:t}=await import("@cetusprotocol/farms-sdk"),n=t.createSDK({env:"mainnet",sui_client:new Nr({url:Zs("mainnet")})});return n.setSenderAddress(e.address),n},tm="https://api-sui.cetus.zone/router_v2/find_routes",tc=async(a,e)=>{let{AggregatorClient:t,Env:n}=await import("@cetusprotocol/aggregator-sdk"),o=new Nr({url:"https://fullnode.mainnet.sui.io/"});return new t({endpoint:tm,signer:e.address,client:o,env:n.Mainnet})},$e=async(a,e)=>{let{CetusVaultsSDK:t}=await import("@cetusprotocol/vaults-sdk"),n=t.createSDK({env:"mainnet"});return n.setSenderAddress(e.address),n},xe=async(a,e)=>{let{CetusXcetusSDK:t}=await import("@cetusprotocol/xcetus-sdk"),n=t.createSDK({env:"mainnet"});return n.setSenderAddress(e.address),n};var ec=async(a,e,t)=>await(await Xt(t,e)).Pool.createPoolPayload(a),nc=async(a,e,t)=>await(await Xt(t,e)).Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg),oc=async(a,e,t)=>await(await Xt(t,e)).Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg),ac=async(a,e,t)=>await(await Xt(t,e)).Position.closePositionPayload(a),ic=async(a,e,t)=>await(await Xt(t,e)).Position.removeLiquidityPayload(a),rc=async(a,e,t)=>await(await Xt(t,e)).Rewarder.collectRewarderPayload(a);var Xn=class a extends w{constructor(t){super(t);this.data=t}data;txType=em.Other;txSubType="OpenAndAddLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await nc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as nm}from"@msafe/sui3-utils";var zn=class a extends w{constructor(t){super(t);this.data=t}data;txType=nm.Other;txSubType="ClaimFeeAndMining";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await rc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as om}from"@msafe/sui3-utils";var Qn=class a extends w{constructor(t){super(t);this.data=t}data;txType=om.Other;txSubType="CreatePool";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await ec(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as am}from"@msafe/sui3-utils";var Yn=class a extends w{constructor(t){super(t);this.data=t}data;txType=am.Other;txSubType="DecreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await ic(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as im}from"@msafe/sui3-utils";var sc=async(a,e,t)=>await(await Ut(t,e)).Farms.openPositionAddLiquidityStakePayload(a),cc=async(a,e,t)=>await(await Ut(t,e)).Farms.addLiquidityFixCoinPayload(a),lc=async(a,e,t)=>await(await Ut(t,e)).Farms.removeLiquidityPayload(a);var uc=async(a,e,t)=>await(await Ut(t,e)).Farms.removeLiquidityPayload(a),mc=async(a,e,t)=>await(await Ut(t,e)).Farms.claimFeeAndClmmReward(a),pc=async(a,e,t)=>await(await Ut(t,e)).Farms.harvestPayload(a),dc=async(a,e,t)=>{let n=await Ut(t,e),o=Object.values(a);return await n.Farms.batchHarvestPayload(o)},fc=async(a,e,t)=>await(await Ut(t,e)).Farms.depositPayload(a),hc=async(a,e,t)=>await(await Ut(t,e)).Farms.withdrawPayload(a);var Jn=class a extends w{constructor(t){super(t);this.data=t}data;txType=im.Other;txSubType="FarmingOpenAndAddLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await sc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as rm}from"@msafe/sui3-utils";var Zn=class a extends w{constructor(t){super(t);this.data=t}data;txType=rm.Other;txSubType="FarmingBatchHarvest";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await dc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as sm}from"@msafe/sui3-utils";var to=class a extends w{constructor(t){super(t);this.data=t}data;txType=sm.Other;txSubType="FarmingClaimFeeAndReward";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await mc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as cm}from"@msafe/sui3-utils";var eo=class a extends w{constructor(t){super(t);this.data=t}data;txType=cm.Other;txSubType="FarmingDecreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await lc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as lm}from"@msafe/sui3-utils";var no=class a extends w{constructor(t){super(t);this.data=t}data;txType=lm.Other;txSubType="FarmingHarvest";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await pc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as um}from"@msafe/sui3-utils";var oo=class a extends w{constructor(t){super(t);this.data=t}data;txType=um.Other;txSubType="FarmingIncreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await cc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as mm}from"@msafe/sui3-utils";var ao=class a extends w{constructor(t){super(t);this.data=t}data;txType=mm.Other;txSubType="FarmingRemoveLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await uc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as pm}from"@msafe/sui3-utils";var io=class a extends w{constructor(t){super(t);this.data=t}data;txType=pm.Other;txSubType="FarmingStake";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await fc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as dm}from"@msafe/sui3-utils";var ro=class a extends w{constructor(t){super(t);this.data=t}data;txType=dm.Other;txSubType="FarmingUnstake";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await hc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as fm}from"@msafe/sui3-utils";var so=class a extends w{constructor(t){super(t);this.data=t}data;txType=fm.Other;txSubType="IncreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await oc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as bm}from"@msafe/sui3-utils";var co=async()=>{let{Transaction:a}=await import("@mysten/sui/transactions");return new a},hm=async(a,e,t)=>{let n=await $e(t,e),o=await co();return o.setSender(e.address),n.Vest.buildRedeemPayload(a.params,o),o},gm=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 co();return i.setSender(e.address),await o?.Vest.buildRedeemPayload(a.params,i),i},gc=async(a,e,t)=>{let n=await Xt(t,e),o=await co();return n?.Vest.buildRedeemPayload(a.params,o),o},ym=async(a,e,t)=>{let n=await Xt(t,e),o=await Ut(t,e),i=await co(),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},yc=async(a,e,t)=>a.type==="clmm"?gc(a,e,t):a.type==="farms"?ym(a,e,t):a.type==="vaults"?hm(a,e,t):a.type==="haedalVaults"?gm(a,e):gc(a,e,t);var lo=class a extends w{constructor(t){super(t);this.data=t}data;txType=bm.Other;txSubType="PosVestingRedeem";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await yc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Tm}from"@msafe/sui3-utils";var uo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Tm.Other;txSubType="RemoveLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await ac(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as wm}from"@msafe/sui3-utils";import{Transaction as Sm}from"@mysten/sui/transactions";var bc=async(a,e,t)=>{let{restituteMsafeFastRouterSwapParams:n}=await import("@cetusprotocol/aggregator-sdk"),o=await tc(t,e),i=new Sm;return await o.fastRouterSwap({...a,router:n(a.router),txb:i}),i};var mo=class a extends w{constructor(t){super(t);this.data=t}data;txType=wm.Other;txSubType="AggregatorSwap";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await bc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Im}from"@msafe/sui3-utils";import{Transaction as Tc}from"@mysten/sui/transactions";var Sc=async(a,e,t)=>{let n=await $e(t,e),o=new Tc;return o.setSender(e.address),await n.Vaults.deposit(a,o),o},wc=async(a,e,t)=>{let n=await $e(t,e),o=new Tc;return await n.Vaults.withdraw(a,o),o};var po=class a extends w{constructor(t){super(t);this.data=t}data;txType=Im.Other;txSubType="AddVaultsPosition";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Sc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Cm}from"@msafe/sui3-utils";var fo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Cm.Other;txSubType="RemoveVaultsPosition";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await wc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Dm}from"@msafe/sui3-utils";import{Transaction as xm}from"@mysten/sui/transactions";var Ic={package_id:"0x355714a1eeb7ab1d80902da6c92001170cda1212edf524c32aa308a3ac177c31",published_at:"0x355714a1eeb7ab1d80902da6c92001170cda1212edf524c32aa308a3ac177c31",cetus_coin_type:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS"},Cc=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 xm;return i.forEach(p=>{c.moveCall({target:`${Ic.published_at}::router::redeem`,typeArguments:[Ic.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=Dm.Other;txSubType="VestingRedeem";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Cc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as km}from"@msafe/sui3-utils";var xc=async(a,e,t)=>await(await xe(t,e)).XCetusModule.convertPayload(a),Dc=async(a,e,t)=>await(await xe(t,e)).XCetusModule.redeemLockPayload(a),kc=async(a,e,t)=>await(await xe(t,e)).XCetusModule.redeemDividendV3Payload(a.veNftId,a.rewardList),vc=async(a,e,t)=>await(await xe(t,e)).XCetusModule.cancelRedeemPayload(a),Ac=async(a,e,t)=>await(await xe(t,e)).XCetusModule.redeemPayload(a);var go=class a extends w{constructor(t){super(t);this.data=t}data;txType=km.Other;txSubType="xCETUSCancelRedeem";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await vc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as vm}from"@msafe/sui3-utils";var yo=class a extends w{constructor(t){super(t);this.data=t}data;txType=vm.Other;txSubType="xCETUSClaimStakingRwewards";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await kc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Am}from"@msafe/sui3-utils";var bo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Am.Other;txSubType="xCETUSConvert";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await xc(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Mm}from"@msafe/sui3-utils";var To=class a extends w{constructor(t){super(t);this.data=t}data;txType=Mm.Other;txSubType="xCETUSRedeem";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Ac(i,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Om}from"@msafe/sui3-utils";var So=class a extends w{constructor(t){super(t);this.data=t}data;txType=Om.Other;txSubType="xCETUSRedeemLock";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Dc(i,n,o)}static fromData(t){return new a(t)}};var wo=class{application="cetus";supportSDK="@mysten/sui";async deserialize(e){console.log("Cetus helper deserialize input: ",e);let{txbParams:t,action:n}=e;return{txType:Pm.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=Xn.fromData(e.intentionData);break;case"IncreaseLiquidity":i=so.fromData(e.intentionData);break;case"DecreaseLiquidity":i=Yn.fromData(e.intentionData);break;case"RemoveLiquidity":i=uo.fromData(e.intentionData);break;case"ClaimFeeAndMining":i=zn.fromData(e.intentionData);break;case"FarmingOpenAndAddLiquidity":i=Jn.fromData(e.intentionData);break;case"FarmingIncreaseLiquidity":i=oo.fromData(e.intentionData);break;case"FarmingDecreaseLiquidity":i=eo.fromData(e.intentionData);break;case"FarmingRemoveLiquidity":i=ao.fromData(e.intentionData);break;case"FarmingClaimFeeAndReward":i=to.fromData(e.intentionData);break;case"FarmingHarvest":i=no.fromData(e.intentionData);break;case"FarmingBatchHarvest":i=Zn.fromData(e.intentionData);break;case"FarmingStake":i=io.fromData(e.intentionData);break;case"FarmingUnstake":i=ro.fromData(e.intentionData);break;case"xCETUSConvert":i=bo.fromData(e.intentionData);break;case"xCETUSRedeemLock":i=So.fromData(e.intentionData);break;case"xCETUSClaimStakingRwewards":i=yo.fromData(e.intentionData);break;case"xCETUSCancelRedeem":i=go.fromData(e.intentionData);break;case"xCETUSRedeem":i=To.fromData(e.intentionData);break;case"VestingRedeem":i=ho.fromData(e.intentionData);break;case"AggregatorSwap":i=mo.fromData(e.intentionData);break;case"AddVaultsPosition":i=po.fromData(e.intentionData);break;case"RemoveVaultsPosition":i=fo.fromData(e.intentionData);break;case"PosVestingRedeem":i=lo.fromData(e.intentionData);break;case"CreatePool":i=Qn.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};import{TransactionType as Mp}from"@msafe/sui3-utils";import Rm from"sort-keys-recursive";var zt=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify(Rm(this.data))}};import{getFullnodeUrl as Io}from"@mysten/sui.js/client";var Wr={};Ls(Wr,{contractId:()=>Nm,default:()=>Um,feeObjId:()=>Lm,roleObjId:()=>Wm,status:()=>Em,transaction:()=>Bm,upgradeCapObjId:()=>jm,vaultObjId:()=>_m});var Bm="DiBZq4UmVVYiRL6ZJmFKYoHcxtxqrhsCXSkFyT7wUr3j",Em="success",Nm="0x81c960dc653975fbd0072deca8afb92d322898c911622898ba1b2e3ad0c4bd8d",Wm="0xc6ec0bdee0bb59a72077e9acd2f42457043cf47080b3d3fad4d39abf28bba63a",_m="0xbc4021387fbac149119fd24e92be9e58f745774292f3a2a12e2ac6daf5363e1d",Lm="0x4178f63970fe2daeb256dc5730ad172e82b3e8eb45f31b33e0daae72cd35e1e1",jm="0xe1e9aa7d222d151bfe6dd83358b0d7fdcb11260f710800cfaf7ccc1b1e245115",Um={transaction:Bm,status:Em,contractId:Nm,roleObjId:Wm,vaultObjId:_m,feeObjId:Lm,upgradeCapObjId:jm};var _r={};Ls(_r,{contractId:()=>Km,default:()=>Xm,feeObjId:()=>Hm,roleObjId:()=>Vm,status:()=>Fm,transaction:()=>qm,upgradeCapObjId:()=>Gm,vaultObjId:()=>$m});var qm="855FNDV8o8Z3fWULPnQo9qdhLJpsg7wZrkCpNyfw9KfB",Fm="success",Km="0xc357c3985e8fb875d6b37141497af660779aa1bab0ec489b2213efd74067d1fa",Vm="0x5ab49bdf9fd1413e328ef242b3f8d83dde791b38a0b627bfc87fb25c010d34f1",$m="0xb483558770d8eb26007f193b75db40f0a45f2e36863a687625885d4de6993378",Hm="0x48453fc4d7cde3fe35aad89e5dfb496608a6a55ea529a1c0274681a808627f94",Gm="0x34279779a0d0d36bd5044b04830d607fa1b0ecf316548c8ac3a44151e4f1a42a",Xm={transaction:qm,status:Fm,contractId:Km,roleObjId:Vm,vaultObjId:$m,feeObjId:Hm,upgradeCapObjId:Gm};var zm=Io("testnet"),Qm=Io("testnet"),Ym=Io("mainnet"),Jm=Io("mainnet"),Zm="https://bc3p6l5unl.execute-api.us-west-1.amazonaws.com/prod",tp="https://rolsbkota7.execute-api.us-west-1.amazonaws.com/prod",ep="https://6p6mkx33ne.execute-api.us-west-1.amazonaws.com/prod",np="https://xrae3mrjv5.execute-api.us-west-1.amazonaws.com/prod",Mc=Wr,Oc=_r,op=new Map([["dev",{env:"dev",rpc:{url:zm},backend:{url:Zm},contract:Mc}],["stg",{env:"stg",rpc:{url:Qm},backend:{url:tp},contract:Mc}],["prev",{env:"prev",rpc:{url:Ym},backend:{url:ep},contract:Oc}],["prod",{env:"prod",rpc:{url:Jm},backend:{url:np},contract:Oc}]]);function Pc(a,e){let t=op.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}import{SuiClient as ip}from"@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 Co=class extends j{constructor(){super(11,"Backend is not specified")}};var xo=class extends j{constructor(){super(1,"Wallet not connected")}};import ke,{AxiosError as ap}from"axios";var De=class extends j{constructor(e,t){super(10,e,{context:t})}};var Do=class a{constructor(e){this.apiURL=e}apiURL;static parseResponseData(e){if(e instanceof ap)throw new De(e.response?.statusText);if(e.status===200){if(e.data.success)return e.data.data;throw new De(e.data.code)}throw new De(e.status.toString())}async getIncomingStreams(e,t){let n=await ke.post(`${this.apiURL}/stream`,{recipient:e,...t});return a.parseResponseData(n)}async getOutgoingStreams(e,t){let n=await ke.post(`${this.apiURL}/stream`,{sender:e,...t});return a.parseResponseData(n)}async getStreamHistory(e){let t=await ke.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 ke.post(`${this.apiURL}/stream-info`,{address:e});return a.parseResponseData(t)}async getAllRecipients(e,t){let n=await ke.post(`${this.apiURL}/stream-info`,{sender:e,status:t});return a.parseResponseData(n)}async getAllSenders(e,t){let n=await ke.post(`${this.apiURL}/stream-info`,{recipient:e,status:t});return a.parseResponseData(n)}};var ve=class a{signer;suiClient;envConfig;_backend;constructor(e){this.envConfig=e,this.suiClient=new ip({url:e.rpc.url}),e.backend&&(this._backend=new Do(e.backend.url))}static new(e,t){let n=Pc(e,t);return new a(n)}get walletType(){return this.wallet?this.wallet.type:"disconnected"}get backend(){if(!this._backend)throw new Co;return this._backend}set backend(e){this._backend=e}connectWallet(e){this.signer=e}disconnect(){this.signer=void 0}get wallet(){if(!this.signer)throw new xo;return this.signer}async walletAddress(){return this.wallet.address()}};import{SUI_TYPE_ARG as kp,normalizeStructTag as vp,normalizeSuiAddress as el}from"@mysten/sui.js/utils";import{TransactionBlock as Po}from"@mysten/sui.js/transactions";import{TransactionBlock as Uc}from"@mysten/sui.js/transactions";import{SUI_TYPE_ARG as qc,normalizeStructTag as lp}from"@mysten/sui.js/utils";var Lr=50n,ko=10000n,Rc=25n,jr=100000000n;var Qt=class{constructor(e){this.object=e}object;moveArg(e){return e.object(this.object)}},He=class{constructor(e){this.objects=e}objects;moveArgs(e){return e.makeMoveVec({objects:this.objects.map(t=>e.object(t))})}},ce=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}};import{Buffer as Bc}from"buffer";import{normalizeSuiAddress as rp}from"@mysten/sui.js/utils";var Ge=class extends j{constructor(e,t){super(3,e,{context:t})}};var vo=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 Ge("Invalid contract return type.",{ctx:{expectType:"address",gotType:o}});return rp(Bc.from(n).toString("hex"))}getU64(e=0,t=0){let[n,o]=this.getValue(e,t);if(o!=="u64")throw new Ge("Invalid contract return type.",{ctx:{expectType:"u64",gotType:o}});return Bc.from(n).readBigInt64LE()}};import{bcs as Nc}from"@mysten/sui.js/bcs";var G=class extends j{constructor(e,t,n){super(2,`Invalid input: ${e}`,{context:{fieldKey:t,fieldValue:n}})}};var Wc={groupId:"string",name:"string"},sp=64;function _c(a){return Lc(a),Nc.ser(Wc,a).toString("base64")}function Xe(a){let e=Nc.de(Wc,a,"base64");return Lc(e),e}function Lc(a){if(!Ec(a.name))throw new G("Invalid metadata: Name contains unknown character");if(!Ec(a.groupId))throw new G("Invalid metadata: Group ID contains unknown character");if(a.name.length>sp)throw new G("Invalid metadata: Name exceed max length 64")}function Ec(a){return/^[\x00-\x7F]+$/.test(a)}import{normalizeStructTag as Ao}from"@mysten/sui.js/utils";function Mo(a,e){return Ao(a)===Ao(e)}function le(a,e){return Ao(a)===Ao(e)}var Oo="txn.gas";import{nanoid as cp}from"nanoid";function jc(){return cp()}var he=class a{constructor(e,t,n){this.globals=e;this.feeContract=t;this.streamContract=n}globals;feeContract;streamContract;static convertCreateStreamInfoToInternal(e){return{metadata:_c({name:e.name,groupId:jc()}),coinType:lp(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 Uc,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 ce(x),flatFeeCoin:new ce(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:Lr,denominator:ko},claimFeePercent:{numerator:Rc,denominator:ko},flatFeePerStream:jr}}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===Oo?n=e.gas:n=e.object(t.primaryCoin),n}getCreateStreamCoinRequests(e,t){let n=e.coinType;return Mo(n,qc)?[{coinType:n,amount:t.totalAmount+t.streamFeeAmount+t.flatFeeAmount}]:[{coinType:n,amount:t.totalAmount+t.streamFeeAmount},{coinType:qc,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 jr}getStreamFeeLocal(e){return e*Lr/ko}async getStreamFeeRemote(e){let t=this.feeContract.streamingFee(new Uc,e),n=await this.globals.suiClient.devInspectTransactionBlock({sender:await this.globals.walletAddress(),transactionBlock:t});return new vo(n).getU64()}get wallet(){return this.globals.wallet}};import{Transactions as Kc}from"@mysten/sui.js/transactions";var Fc="0x0000000000000000000000000000000000000000000000000000000000000006";var Ae=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(Kc.MoveCall({target:n,arguments:t.arguments.map(o=>o instanceof He?o.moveArgs(e):o instanceof Qt?o.moveArg(e):o instanceof ce?o.moveArg():e.pure(o)),typeArguments:t.typeArgs})),e}addTransactionBlock(e,t,n=[],o=[]){e.add(Kc.MoveCall({target:t,arguments:n.map(i=>i instanceof He?i.moveArgs(e):i instanceof Qt?i.moveArg(e):i instanceof ce?i.moveArg():e.pure(i)),typeArguments:o}))}makeObject(e){return typeof e=="string"?new Qt(e):e}vaultObject(){return new Qt(this.config.vaultObjId)}roleObject(){return new Qt(this.config.roleObjId)}feeObject(){return new Qt(this.config.feeObjId)}clockObject(){return new Qt(Fc)}};var Me=class a extends Ae{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 Yt=class a extends Ae{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 Oe=class{constructor(e){this.globals=e;let t=e.envConfig.contract;this.feeContract=new Me(t,e),this.streamContract=new Yt(t,e)}globals;feeContract;streamContract;async createStreams(e){let t=he.convertCreateStreamInfoToInternal(e);return this.createStreamHelper().buildCreateStreamTransactionBlock(t)}createStreamHelper(){return new he(this.globals,this.feeContract,this.streamContract)}setAutoClaim(e,t,n){let o=new Po;return this.streamContract.setAutoClaim(o,{streamId:e,enabled:t,coinType:n})}claimStream(e,t){let n=new Po;return this.streamContract.claimStream(n,{streamId:e,coinType:t})}claimStreamByProxy(e,t){let n=new Po;return this.streamContract.claimStreamByProxy(n,{streamId:e,coinType:t})}cancelStream(e,t){let n=new Po;return this.streamContract.cancelStream(n,{streamId:e,coinType:t}),n}};import{normalizeStructTag as Ur,SUI_TYPE_ARG as up}from"@mysten/sui.js/utils";import{Duration as Vc}from"luxon";var Ro=class extends j{constructor(e,t){super(12,`Transaction failed: ${t}`,{context:{status:e,msg:t}})}};var mp=1e3,Bo=class{constructor(e){this.globals=e;this.coinMetaHelper=new qr(e.suiClient),this.createStreamHelper=new Oe(e).createStreamHelper()}globals;coinMetaHelper;createStreamHelper;getStreamIdsFromCreateStreamResponse(e){if(e.effects?.status.status!=="success")throw new Ro(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(Vc.fromMillis(Number(t*e.steps))),o={timeStart:e.timeStart,timeEnd:n,interval:Vc.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:Ur(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:Ur(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()<mp)throw new G("Interval shall be at least 1 second","interval",e.interval)}},qr=class{constructor(e){this.suiClient=e;this.coinMetaReg=new Map}suiClient;coinMetaReg;async getCoinMeta(e){let t=Ur(e||up);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}};import{normalizeStructTag as Gc,normalizeSuiAddress as jo}from"@mysten/sui.js/utils";import{DateTime as Xc}from"luxon";import{TransactionBlock as _o}from"@mysten/sui.js/transactions";import{normalizeStructTag as Hc,parseStructTag as fp}from"@mysten/sui.js/utils";import{DateTime as hp}from"luxon";var Eo=class extends j{constructor(){super(7,"Connected wallet is not creator")}};var ze=class extends j{constructor(){super(8,"Connected wallet is not recipient")}};var Qe=class extends j{constructor(e,t){super(6,e,{context:t})}};var Ot=class extends j{constructor(e,t={}){super(0,e,t)}};var No=class extends j{constructor(e){super(5,"Stream not found",{context:{streamId:e}})}};import{DateTime as pp,Duration as dp}from"luxon";var $c=(1n<<64n)-1n,Wo=1e3;function Fr(a){let e;typeof a=="number"?e=a:typeof a=="bigint"?e=Number(a):e=a.toMillis();let t=Math.round(e/Wo);return pp.fromMillis(t*Wo)}function Kr(a){let e;typeof a=="number"?e=a:typeof a=="bigint"?e=Number(a):e=a.toMillis();let t=Math.round(e/Wo);return dp.fromMillis(t*Wo)}var ue=class a{constructor(e,t,n){this.globals=e;this.streamId=t;this.rawData=n;this.streamContract=new Yt(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 Ot("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 Eo;let e=new _o;return this.streamContract.cancelStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async claim(){if(await this.globals.walletAddress()!==this.recipient)throw new ze;let e=new _o;return this.streamContract.claimStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async setAutoClaim(e){if(await this.globals.walletAddress()!==this.recipient)throw new ze;let t=new _o;return this.streamContract.setAutoClaim(t,{streamId:this.streamId,coinType:this.coinType,enabled:e}),t}async claimByProxy(){let e=new _o;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 Hc(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 Kr(this.rawData.config.epochInterval)}get groupId(){let{metadata:e}=this.rawData.config;return Xe(e).groupId}get name(){let{metadata:e}=this.rawData.config;return Xe(e).name}get recipient(){return this.rawData.config.recipient}get timeStart(){return Fr(this.rawData.config.timeStart)}get duration(){let e=this.rawData.config,t=e.epochInterval*e.totalEpoch;return Kr(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:Fr((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===$c?0n:this.rawData.status.epochClaimed*this.amountPerEpoch+this.cliff}get currentEpoch(){let e=hp.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 No(e):new Qe(`get stream data: ${t.error.code}`,{streamId:e,...t.error});let n=t.data.content;if(n.dataType!=="moveObject")throw new Qe("Unexpected object type",{gotType:n.dataType});let{typeParams:o}=fp(n.type),i=Hc(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 Pe=class extends j{constructor(e,t){super(9,`Invalid stream group: ${e}`,{context:t})}};async function $r(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 Vr=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)}},Re=class{constructor(e){this.requester=e;this.pager=new Vr(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 gp=25;async function Gr(a,e,t){let n=new Ye(e),o=new Je(a,n,t);return await $r(o)}var Ye=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]}},Je=class extends Re{constructor(t,n,o){super(new Hr(t,n,o));this.suiClient=t;this.idIter=n;this.options=o}suiClient;idIter;options},Hr=class{constructor(e,t,n){this.suiClient=e;this.stringIter=t;this.options=n;this.filter=n?.filter,this.pageSize=n?.pageSize||gp,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 Lo=class a{constructor(e,t){this.globals=e;this.streams=t;if(t.length===0)throw new Pe("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 Gr(e.suiClient,t);return n.forEach(o=>{if(!o)throw new Ot("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=>{yp(n,i)||(o=!1)}),o}async refresh(){let e=await Gr(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)=>ue.fromObjectData(e,t[s],i)).filter(i=>!!i);if(new Set(o.map(i=>i.groupId)).size!==1)throw new Pe("Not same group ID");if(!this.checkStreamGroup(o))throw new Pe("Not same stream settings");return o}};function yp(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 Ze=class a{constructor(e,t){this.it=e;this.pageSize=t}it;pageSize;static async newIncoming(e){let t=await Uo.newIncoming(e);return new a(t,e.pageSize)}static async newOutgoing(e){let t=await Uo.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}},Uo=class a{constructor(e){this.requester=e}requester;cachedNext;static async newIncoming(e){let t=await qo.newIncomingQuery(e);return new a(t)}static async newOutgoing(e){let t=await qo.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 Ot("No more results");return t}let e=this.cachedNext;if(this.cachedNext=void 0,e===null)throw new Ot("No more results");return e}},qo=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 Ye(n.flat().map(s=>s.streamId));this.objectIter=new Je(e.suiClient,i)}globals;recipient;groupRefs;query;current=0;objectIter;static async newIncomingQuery(e){let t=Ip(e.query),n=await e.globals.walletAddress(),i=(await e.globals.backend.getIncomingStreams(n,t)).filter(c=>jo(c.recipient)===jo(n)),s=zc(i);return new a(e.globals,n,s,e.query)}static async newOutgoingQuery(e){let t=Cp(e.query),n=await e.globals.walletAddress(),o=await e.globals.backend.getOutgoingStreams(n,t),i=zc(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 Sp(this.globals,e[0].streamId,this.objectIter);return this.current++,Qc(t,this.query)?t:this.doNextRequest()}if(e.length>1){let t=await wp(this.globals,e.map(n=>n.streamId),this.objectIter);return this.current++,Tp(t,this.query)?t:this.doNextRequest()}throw new Ot("Stream group with no stream")}};function zc(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)=>Xc.fromISO(n[0].createDate).toMillis()-Xc.fromISO(t[0].createDate).toMillis())}function Qc(a,e){if(e===void 0)return!0;let t=bp(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 bp(a,e){return e===void 0?!0:Array.isArray(e)?e.includes(a.progress.status):a.progress.status===e}function Tp(a,e){if(!e)return!0;let t=!1;return a.streams.forEach(n=>{Qc(n,e)&&(t=!0)}),t}async function Sp(a,e,t){let n=await Yc(t,e);return ue.fromObjectData(a,e,n)}async function wp(a,e,t){let n=[];for(;n.length<e.length;){let o=await Yc(t,e[n.length]);n.push(o)}return Lo.newFromObjectResponse(a,e,n)}async function Yc(a,e){if(!await a.hasNext())throw new Ot("object iterator has been consumed");let t=await a.next();if(!t||t.error||t.data===void 0||t.data===null)throw new Ot("object iterator undefined response",{cause:t?.error});if(t?.data?.objectId!==e)throw new Ot("stream id not aligned");return t}function Ip(a){return{status:Xr(a?.status),coinType:Jc(a?.coinType),sender:Zc(a?.sender)}}function Cp(a){return{status:Xr(a?.status),coinType:Jc(a?.coinType),recipient:Zc(a?.recipient)}}function Xr(a){return a===void 0||a.length===0?"all":Array.isArray(a)?a.reduce((e,t)=>{let n=Xr(t);return!e||e===n?n:"all"},void 0):xp(a)}function xp(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 Jc(a){if(a)return Array.isArray(a)?a.length!==0?a.map(e=>Gc(e)):void 0:Gc(a)}function Zc(a){if(a)return Array.isArray(a)?a.length!==0?a.map(e=>jo(e)):void 0:jo(a)}var Fo=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 Dp=25;async function tl(a,e,t,n="0x2::sui::SUI",o=Dp){let i=new zr(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 Fo(n,t,s);return c}var zr=class extends Re{constructor(t,n,o,i){super(new Qr(t,n,o,i));this.suiClient=t;this.owner=n;this.coinType=o;this.reqPageSize=i}suiClient;owner;coinType;reqPageSize},Qr=class{constructor(e,t,n,o){this.suiClient=e;this.owner=t;this.coinType=n;this.reqPageSize=o;if(o<=0)throw new Ot("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 Yr=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)}},Ko=class{constructor(e){this.account=e}account;async address(){return this.account.address}},Jr=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(Mo(e.coinType,kp))return{primaryCoin:Oo};if(e.amount<=0)throw new G("Invalid coin request","coinAmount",e.amount);let t=await tl(this.suiClient,await this.address(),e.amount,e.coinType);if(t.length===0)throw new Ot("no coins available");return{primaryCoin:t[0].coinObjectId,mergedCoins:t.slice(1).map(n=>n.coinObjectId)}}},Vo=class{globals;helper;constructor(e,t){this.globals=ve.new(e,t),this.helper=new Bo(this.globals)}connectSingleWallet(e){let t=new Jr(e,this.globals.suiClient);this.globals.connectWallet(t)}connectMSafeAccount(e){let t=new Yr(e);this.globals.connectWallet(t)}async createStream(e){return this.builder().createStreams(e)}async getStream(e){return ue.new(this.globals,e)}async getIncomingStreams(e,t=10){return Ze.newIncoming({globals:this.globals,query:e,pageSize:t})}async getOutgoingStreams(e,t=10){return Ze.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=>vp(n))}async getRecipientsForStreamFilter(e){let t=await this.wallet.address();return(await this.globals.backend.getAllRecipients(t,e)).map(o=>el(o))}async getCreatorsForStreamFilter(e){let t=await this.wallet.address();return(await this.globals.backend.getAllSenders(t,e)).map(o=>el(o))}get wallet(){return this.globals.wallet}builder(){return new Oe(this.globals)}};var Ft=class extends zt{application="mpay";getClient(e,t){let n=new Vo(e==="sui:mainnet"?"prod":"dev");return n.connectSingleWallet(new Ko(t)),n}};var tn=class extends Ft{constructor(t){super(t);this.data=t}data;txType=Mp.Stream;txSubType="Cancel";async build(t){let{network:n,account:o}=t;return(await this.getClient(n,o).getStream(this.data.streamId)).cancel()}};import{TransactionType as Op}from"@msafe/sui3-utils";var en=class extends Ft{constructor(t){super(t);this.data=t}data;txType=Op.Stream;txSubType="ClaimByProxy";async build(t){let{network:n,account:o}=t;return(await this.getClient(n,o).getStream(this.data.streamId)).claimByProxy()}};import{TransactionType as Pp}from"@msafe/sui3-utils";var nn=class extends Ft{constructor(t){super(t);this.data=t}data;txType=Pp.Stream;txSubType="Claim";async build(t){let{network:n,account:o}=t;return(await this.getClient(n,o).getStream(this.data.streamId)).claim()}};import{TransactionType as Rp}from"@msafe/sui3-utils";var on=class extends Ft{constructor(t){super(t);this.data=t}data;txType=Rp.Stream;txSubType="CreateStream";async build(t){let{network:n,account:o}=t;return this.getClient(n,o).createStream(this.data)}};import{bcs as nl}from"@mysten/sui.js/bcs";import{normalizeStructTag as Bp,normalizeSuiAddress as an}from"@mysten/sui.js/utils";var Be=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 an(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 nl.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 an(e.value.Object.ImmOrOwned.objectId)}return an(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return an(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return an(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 nl.de(t,new Uint8Array(n))}typeArg(e){return Bp(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};var $o=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"&&le(t.target,this.contract.createStreamTarget));if(e.length===0)throw new Ot("No create stream transactions");return e.map(t=>new Be(t,this.txb))}getCreationInfoFromMoveCall(e){let t=e.decodeInputString(4),{name:n,groupId:o}=Xe(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 Yt(this.globals.envConfig.contract,this.globals)}get feeContract(){return new Me(this.globals.envConfig.contract,this.globals)}createStreamHelper(){return new he(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 Ho=class{constructor(e,t){this.globals=e;this.txb=t;this.contract=new Yt(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"&&le(t.target,this.contract.createStreamTarget))!==-1}isSetAutoClaimTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&le(this.transactions[0].target,this.contract.setAutoClaimTarget)}isCancelStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&le(this.transactions[0].target,this.contract.cancelStreamTarget)}isClaimStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&le(this.transactions[0].target,this.contract.claimStreamTarget)}isClaimByProxyTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&le(this.transactions[0].target,this.contract.claimStreamByProxyTarget)}decodeCreateStreamTransaction(){return new $o(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 Be(e,this.txb)}};import{TransactionType as Ep}from"@msafe/sui3-utils";var rn=class extends Ft{constructor(t){super(t);this.data=t}data;txType=Ep.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 Go=class{application="mpay";supportSDK="@mysten/sui.js";async deserialize(e){let{network:t,transactionBlock:n}=e,o=ve.new(t==="sui:mainnet"?"prod":"dev"),s=new Ho(o,n).decode(),c;switch(s.type){case"CreateStream":c=new on(s.info);break;case"SetAutoClaim":c=new rn({streamId:s.streamId,enabled:s.enabled});break;case"Claim":c=new nn({streamId:s.streamId});break;case"ClaimByProxy":c=new en({streamId:s.streamId});break;case"Cancel":c=new tn({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 on(t);break;case"Claim":n=new nn(t);break;case"ClaimByProxy":n=new en(t);break;case"SetAutoClaim":n=new rn(t);break;case"Cancel":n=new tn(t);break;default:throw new Error("not implemented")}return n.build({...e})}};import{TransactionDefaultApplication as Lp,TransactionSubTypes as ol}from"@msafe/sui3-utils";import{buildCoinTransferTxb as Wp}from"@msafe/sui3-utils";import Np from"sort-keys-recursive";var Ee=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify(Np(this.data))}};var Xo=class a extends Ee{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiGrpcClient:n,account:o}=t;return Wp(n,this.data,o.address)}static fromData(t){return new a(t)}};import{buildObjectTransferTxb as _p}from"@msafe/sui3-utils";var zo=class a extends Ee{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiGrpcClient:n,account:o}=t;return _p(n,this.data,o.address)}static fromData(t){return new a(t)}};var Qo=class{application="msafe-core";supportSDK="@mysten/sui-v2";constructor(){this.application=Lp}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 ol.assets.coin.send:i=Xo.fromData(e.intentionData);break;case ol.assets.object.send:i=zo.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiGrpcClient:o,account:t,network:n})}};import{TransactionType as dl}from"@msafe/sui3-utils";var al=!1,sn={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 Zr(){if(!al)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&&(sn.ProtocolPackage=e),t&&(sn.borrowFee=t),n&&(sn.borrowFeeAddress=n),o&&(sn.pool=o),al=!0}catch(a){console.error(a.message)}}var $t=sn;import{TransactionType as ye}from"@msafe/sui3-utils";import{normalizeStructTag as Up,normalizeSuiAddress as cn}from"@mysten/sui/utils";import{bcs as il}from"@mysten/sui.js/bcs";var Yo=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(`${$t.ProtocolPackage}::incentive_v3::entry_borrow_v2`)}isEntryBorrowWithFeeTransaction(){return!!this.getMoveCallTransaction(`${$t.ProtocolPackage}::incentive_v3::borrow_v2`)}isEntryMultiDepositTransaction(){let e=`${$t.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=`${$t.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(`${$t.ProtocolPackage}::incentive_v3::entry_deposit`)}isEntryRepayTransaction(){return!!this.getMoveCallTransaction(`${$t.ProtocolPackage}::incentive_v3::entry_repay`)}isEntryWithdrawTransaction(){return!!this.getMoveCallTransaction(`${$t.ProtocolPackage}::incentive_v3::withdraw_v2`)}findPoolByAssetId(e){let t=Object.values($t.pool).find(n=>n.assetId===e);if(!t)throw new Error("Pool not found");return t}decodeEntryClaimAndDeposit(){return{txType:ye.Other,type:"EntryClaimAndDeposit",intentionData:{type:"entry_claim_and_deposit"}}}decodeClaimReward(){return console.log("decode claims"),{txType:ye.Other,type:"ClaimReward",intentionData:{type:"claim_reward"}}}decodeEntryBorrow(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(5);return{txType:ye.Other,type:"EntryBorrow",intentionData:{amount:t,assetId:e}}}decodeEntryMultiDeposit(){let e=[],t=`${$t.ProtocolPackage}::incentive_v3::entry_deposit`;return this.transactions.forEach(n=>{if(n.kind==="MoveCall"&&n.target===t){let o=new Jo(n,this.txb),i=o.decodeInputU8(3),s=o.decodeInputU64(5);e.push({assetId:i,amount:s})}}),{txType:ye.Other,type:"EntryMultiDeposit",intentionData:{list:e}}}decodeEntryDeposit(){let e=this.helper.decodeInputU8(3),t=this.helper.decodeInputU64(5);return{txType:ye.Other,type:"EntryDeposit",intentionData:{amount:t,assetId:e}}}decodeEntryRepay(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(6);return{txType:ye.Other,type:"EntryRepay",intentionData:{amount:t,assetId:e}}}decodeEntryWithdraw(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(5);return{txType:ye.Other,type:"EntryWithdraw",intentionData:{amount:t,assetId:e}}}get helper(){let e=this.transactions.find(t=>t.kind==="MoveCall"&&t.target.startsWith($t.ProtocolPackage));return new Jo(e,this.txb)}},Jo=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 cn(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 il.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 cn(e.value.Object.ImmOrOwned.objectId)}return cn(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return cn(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return cn(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 il.de(t,new Uint8Array(n))}typeArg(e){return Up(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};import{Transaction as rl}from"@mysten/sui/transactions";import{depositCoinPTB as qp,withdrawCoinPTB as Fp,repayCoinPTB as Kp,borrowCoinPTB as Vp,claimLendingRewardsPTB as sl,getUserAvailableLendingRewards as cl}from"@naviprotocol/lending";async function Ne(a,e,t,n){return await qp(a,e,t,{amount:n}),a}async function ll(a,e,t,n){let[o]=await Fp(a,e,t);return a.transferObjects([o],a.pure.address(n)),a}async function ul(a,e,t,n){let[o]=await Vp(a,e,t);return a.transferObjects([o],a.pure.address(n)),a}async function ts(a,e,t,n){return await Kp(a,e,t,{amount:n}),a}async function ml(a,e){let t=new rl,n=await cl(e,{client:a});return await sl(t,n),t}async function pl(a,e){let t=new rl,n=await cl(e,{client:a});return await sl(t,n,{customCoinReceive:{type:"depositNAVI",depositNAVI:{fallbackReceiveAddress:e}}}),t}var Zo=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 ml(t.suiClient,t.account.address)}static fromData(t){return new a(t)}};var ta=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 pl(t.suiClient,t.account.address)}static fromData(t){return new a(t)}};import{Transaction as Hp}from"@mysten/sui/transactions";import{getPool as $p}from"@naviprotocol/lending";async function Jt(a){return $p(a)}var ea=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 Hp;console.log("build",this.data);let s=await Jt(n);return await ul(i,s,o,t.account.address)}static fromData(t){return new a(t)}};import{Transaction as Gp}from"@mysten/sui/transactions";async function We(a,e,t){let n=await a.getCoins({owner:e,coinType:t});return console.log("getTokenObjs",e,n),n}var na=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 Gp;console.log("build",this.data);let p=await Jt(i);if(i===0){let[x]=c.splitCoins(c.gas,[s]);return await Ne(c,p,x,s)}let b=await We(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 Ne(c,p,c.object(S),s)}static fromData(t){return new a(t)}};import{Transaction as Xp}from"@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 Xp;console.log("build",this.data);let p=await Jt(i);if(i===0){let[I]=c.splitCoins(c.gas,[s]);return ts(c,p,I,s)}let b=await We(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 ts(c,p,c.object(S),s)}static fromData(t){return new a(t)}};import{Transaction as zp}from"@mysten/sui/transactions";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 zp;console.log("build",this.data);let s=await Jt(n);return await ll(i,s,o,t.account.address)}static fromData(t){return new a(t)}};import{Transaction as Qp}from"@mysten/sui/transactions";var ia=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 Qp;console.log("build",this.data);for(let c=0;c<i.length;c++){let{assetId:p,amount:b}=i[c],S=await Jt(p);if(p===0){let[D]=s.splitCoins(s.gas,[b]);await Ne(s,S,D,b);continue}let I=await We(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 Ne(s,S,s.object(x),b)}return s}static fromData(t){return new a(t)}};import{Transaction as Yp}from"@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),Yp.from(this.data.content)}static fromData(t){return new a(t)}};var sa=class{application="navi";supportSDK="@mysten/sui";async deserialize(e){if(await Zr(),e.appContext?.content)return{txType:dl.Other,txSubType:"PlainTransaction",intentionData:{content:e.appContext.content,scene:e.appContext.scene||"unknown"}};let{transaction:t}=e,o=new Yo(t).decode();return{txType:dl.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n}=e,o;switch(await Zr(),e.txSubType){case"EntryDeposit":o=na.fromData(e.intentionData);break;case"EntryBorrow":o=ea.fromData(e.intentionData);break;case"EntryRepay":o=oa.fromData(e.intentionData);break;case"EntryWithdraw":o=aa.fromData(e.intentionData);break;case"EntryMultiDeposit":o=ia.fromData(e.intentionData);break;case"ClaimReward":o=Zo.fromData(e.intentionData);break;case"EntryClaimAndDeposit":o=ta.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})}};import{TransactionSubTypes as Jp,TransactionType as fl}from"@msafe/sui3-utils";import{fromHex as Zp}from"@mysten/bcs";import{Transaction as td}from"@mysten/sui/transactions";import ed from"sort-keys-recursive";var hl="msafe-plain-tx",gl=Jp.others.plain,es=class a{constructor(e){this.data=e}data;application=hl;txType=fl.Other;txSubType=gl;serialize(){return JSON.stringify(ed(this.data))}async build(e){return td.from(Zp(this.data.content))}static fromData(e){return new a(e)}},ca=class{application;supportSDK="@mysten/sui";constructor(){this.application=hl}async deserialize(e){let{content:t}=e.appContext;return{txType:fl.Other,txSubType:gl,intentionData:{content:t}}}async build(e){let{suiClient:t,network:n,account:o}=e;return es.fromData(e.intentionData).build({suiClient:t,network:n,account:o})}};import{SuiClient as yl}from"@mysten/sui/client";import{Transaction as ln}from"@mysten/sui/transactions";import{SuiClient as ma}from"@mysten/sui.js/client";import{RequestManager as id,HTTPTransport as rd,Client as sd}from"@open-rpc/client-js";var nd={"-32700":"ParseError","-32600":"InvalidRequest","-32601":"MethodNotFound","-32602":"InvalidParams","-32603":"InternalError"},ns=class extends Error{},la=class extends ns{code;type;constructor(e,t){super(e),this.code=t,this.type=nd[t]??"ServerError"}};function od(a){let e=new URL(a);return e.protocol=e.protocol.replace("http","ws"),e.toString()}var ad={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5},ua=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={...ad,...t},this.endpoint&&this.endpoint.startsWith("http")&&(this.endpoint=od(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 la(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 os(e);return this.#i.add(t),await t.subscribe(this),()=>t.unsubscribe(this)}},os=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 ee=class{rpcClient;websocketClient;constructor({url:e,websocket:{url:t,...n}={},rpc:o}){let i=new rd(o?.url??e,{headers:{"Content-Type":"application/json",...o?.headers}});this.rpcClient=new sd(new id([i])),this.websocketClient=new ua(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()}};import{getFullnodeUrl as cd}from"@mysten/sui/client";import{SuiGrpcClient as ld}from"@mysten/sui/grpc";var ud={"sui:mainnet":"mainnet","sui:testnet":"testnet","sui:devnet":"devnet","sui:localnet":"localnet"};function md(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 as(a,e){let t=ud[a],n=new ld({network:t,baseUrl:e??cd(t)});return md(n)}var pd="0x2::sui::SUI",cs=1e8,pa=class a{apps;constructor(){this.apps=new Map}static fromHelpers(e){let t=new a;for(let n=0;n<e.length;n++){let o=e[n];switch(o.supportSDK){case"@mysten/sui.js":t.addLegacyHelper(o);break;case"@mysten/sui":t.addHelper(o);break;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 ss(e))}addHelper(e){this.apps.set(e.application,new is(e))}addGrpcHelper(e){this.apps.set(e.application,new rs(e))}getAppHelper(e){let t=this.apps.get(e);if(!t)throw new Error(`${e} not registered`);return t}},is=class{constructor(e){this.helper=e}helper;async deserialize(e){let t=new yl({transport:new ee({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=new ma({transport:new ee({url:e.clientUrl,rpc:{url:e.clientUrl}})}),o=await e.transactionBlock.build({client:n}),i=ln.from(o);return this.helper.deserialize({...e,suiClient:t,transaction:i})}async build(e){let t=new yl({transport:new ee({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=await t.getBalance({owner:e.account.address});if(Number(n.totalBalance)<cs)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 ln.from(i)}},rs=class{constructor(e){this.helper=e}helper;async deserialize(e){let t=as(e.network,e.clientUrl),n=new ma({transport:new ee({url:e.clientUrl,rpc:{url:e.clientUrl}})}),o=await e.transactionBlock.build({client:n}),i=ln.from(o);return this.helper.deserialize({...e,suiGrpcClient:t,transaction:i})}async build(e){let t=as(e.network,e.clientUrl),{balance:n}=await t.core.getBalance({address:e.account.address,coinType:pd});if(Number(n.balance)<cs)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 ln.from(i)}},ss=class{constructor(e){this.helper=e}helper;async deserialize(e){let t=new ma({transport:new ee({url:e.clientUrl,rpc:{url:e.clientUrl}})});return this.helper.deserialize({...e,transactionBlock:e.transactionBlock,suiClient:t})}async build(e){let t=new ma({transport:new ee({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=await t.getBalance({owner:e.account.address});if(Number(n.totalBalance)<cs)throw new Error("Insufficient gas fee");let i=await(await this.helper.build({...e,suiClient:t})).build({client:t});return ln.from(i)}};import{TransactionType as Id}from"@msafe/sui3-utils";import{getFullnodeUrl as Cd}from"@mysten/sui/client";import{Scallop as xd}from"@scallop-io/sui-scallop-sdk";import{TransactionType as Et}from"@msafe/sui3-utils";import{OLD_BORROW_INCENTIVE_PROTOCOL_ID as Il}from"@scallop-io/sui-scallop-sdk";import{parseStructTag as dd}from"@mysten/sui/utils";var me=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}=dd(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)}};import{bcs as ls}from"@mysten/sui/bcs";import{normalizeStructTag as fd,normalizeSuiAddress as un}from"@mysten/sui/utils";var us=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 un(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=ls[t];return ls[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 un(e.value.Object.ImmOrOwned.objectId)}return un(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return un(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return un(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 ls.U64.parse(new Uint8Array(t))}typeArg(e){return fd(this.txBlockTransactions.typeArguments[e])}txArg(e){return this.transaction.blockData.inputs[e]}},N=us;var ms=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)}},Wt=ms;import{normalizeStructTag as bl,SUI_CLOCK_OBJECT_ID as Tl,SUI_TYPE_ARG as hd}from"@mysten/sui/utils";var Sl=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`},_e={id:"0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",incentivePools:"0x64972b713ccec45ec3964809e477cea6f97350c0c50ca3aec85bb631639266ec",incentiveAccounts:"0x3c0b707068bdcea8bb859d751ad3e2149a9f83c13fcf4054ef91372a00bccdd3"},Kt={unstakeObligation:(a,e,t)=>a.moveCall(`${_e.id}::user::unstake`,[_e.incentivePools,_e.incentiveAccounts,a.object(e),a.object(t),Tl],[bl(hd)]),redeem_rewards:(a,e,t,n)=>a.moveCall(`${_e.id}::user::redeem_rewards`,[_e.incentivePools,_e.incentiveAccounts,a.object(e),a.object(t),Tl],[bl(n)])};var wl=(a,e)=>{let t=[];for(let n=0;n<a.length;n+=e)t.push(a.slice(n,n+e));return t};var da=class extends me{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(`${Il}::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,`${Il}::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:Et.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:Et.Other,type:"MigrateAndClaim",intentionData:{obligationKey:t,obligationId:n,rewardCoinName:o,veScaKey:e}}}decodeOpenObligation(){return{txType:Et.Other,type:"OpenObligation",intentionData:{}}}decodeSupplyLending(){let e=this.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),t=this.helperMint.getNestedInputParam(2),n=new Wt(t,this.transaction).getAmountInput().reduce((o,i)=>o+i,0);return{txType:Et.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 Wt(t,this.transaction).getAmountInput().reduce((o,i)=>o+i,0);return{txType:Et.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 Wt(t,this.transaction).getAmountInput().reduce((o,i)=>o+i,0);return{txType:Et.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 Wt(t,this.transaction).getAmountInput().reduce((i,s)=>i+s,0),o=this.helperDepositCollateral.decodeSharedObjectId(1);return{txType:Et.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:Et.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:Et.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:Et.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:Et.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 Wt(t,this.transaction).getAmountInput().reduce((i,s)=>i+s,0),o=this.helperRepay.decodeSharedObjectId(1);return{txType:Et.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 Wt(n,this.transaction).getAmountInput().reduce((s,c)=>s+c,0),i=this.helperRepay.decodeSharedObjectId(1);return{txType:Et.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 Wt(i,this.transaction).getAmountInput().reduce((s,c)=>s+c,0)}if(this.helperStake.moveCall&&t===0){let i=this.helperStake.getNestedInputParam(2);t=new Wt(i,this.transaction).getAmountInput().reduce((s,c)=>s+c,0)}let n=this.helperStake.typeArg(0),o=this.utils.parseCoinNameFromType(n);return{txType:Et.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:Et.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 Wt(t,this.transaction).getAmountInput().reduce((i,s)=>i+s,0),o;return this.isCreateStakeAccountTransaction()||(o=this.helperStake.decodeOwnedObjectId(1)),{txType:Et.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 Wt(o,this.transaction).getAmountInput().reduce((i,s)=>i+s,0)}return{txType:Et.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:Et.Other,type:"ClaimIncentiveReward",intentionData:{lendingIncentive:e,borrowIncentiveV2:t,borrowIncentive:n}}}};import{TransactionType as ds}from"@msafe/sui3-utils";var fa=class extends me{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:ds.Other,type:"CreateReferralLink",intentionData:{}}}decodeClaimRevenueReferral(){let e=this.helperClaimRevenueReferral[0].decodeOwnedObjectId(2),t=this.helperClaimRevenueReferral.map(n=>n.typeArg(0));return{txType:ds.Other,type:"ClaimRevenueReferral",intentionData:{veScaKey:e,coins:t}}}decodeBindReferral(){let e=this.helperBindReferral.decodePureArg(1,"Address");return{txType:ds.Other,type:"BindReferral",intentionData:{veScaKey:e}}}};import{TransactionType as ne}from"@msafe/sui3-utils";import{OLD_BORROW_INCENTIVE_PROTOCOL_ID as gd}from"@scallop-io/sui-scallop-sdk";var ha=class extends me{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=wl(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,`${gd}::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.Other,type:"RedeemSca",intentionData:{veScaKey:e}}}decodeRenewExpiredVeSca(){let e=this.helperRenewExpired.getNestedInputParam(4),t=this.helperRenewExpired.decodeInputU64(5),n=new Wt(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.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.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 Wt(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.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 Wt(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.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.Other,type:"MergeVeSca",intentionData:t}}decodeSplitVesca(){let e=this.getMergeSplitVeScaHelper("split"),t={targetVeScaKey:e.decodeOwnedObjectId(1),splitAmount:e.decodeInputU64(4)};return{txType:ne.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.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.Other,type:"TransferVeScaKeys",intentionData:{veScaKeys:i}}}};import yd from"sort-keys-recursive";var A=class{constructor(e){this.data=e}data;get application(){return"msafe-core"}serialize(){return JSON.stringify(yd(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 ga=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 ya=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 ba=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)}};import{SUI_TYPE_ARG as bd}from"@mysten/sui/utils";var Ta=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(Mt=>{let W=Mt.coinName;return Mt.availableClaimCoin>0&&!L[W]});k=q.length>0,q.forEach(Mt=>{let W=n.claimBorrowIncentive(D.obligationId,M,Mt.coinName);L[Mt.coinName]=!0,b[Mt.coinName]?b[Mt.coinName].push(W):b[Mt.coinName]=[W]})}}),S.sui>0){let U=Kt.redeem_rewards(n,M,D.obligationId,bd);b.sui?b.sui.push(U):b.sui=[U]}if(k&&await Sl(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 Sa=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 wa=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=Kt.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 Ia=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 Ca=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 xa=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 Da=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 ka=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 va=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 Aa=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 Ma=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 Oa=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 Pa=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 Ra=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 Ba=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)}};import{SCA_COIN_TYPE as Td}from"@scallop-io/sui-scallop-sdk";var Ea=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,Td,I),[k,M]=x.takeAmountFromCoins(D,o);return x.extendLockPeriod(i,s),x.extendLockAmount(i,k),x.transferObjects([M],I),!c||!p||(S&&(b?Kt.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 Na=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?Kt.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 Wa=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 _a=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)}};import{SCA_COIN_TYPE as Sd}from"@scallop-io/sui-scallop-sdk";var La=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,Sd,o),[M,L]=D.takeAmountFromCoins(k,i);return D.transferObjects([L],o),D.renewExpiredVeSca(c,M,s),!b||!S||(I&&(x?Kt.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 ja=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)}};import{SCA_COIN_TYPE as wd}from"@scallop-io/sui-scallop-sdk";var Ua=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,wd,o),[k,M]=x.takeAmountFromCoins(D,i),L;return I?x.extendLockAmount(I,k):L=x.lockSca(k,S),p&&b&&(s&&(c?Kt.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 qa=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 Fa=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 Ka=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 Va=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 $a=class{application="scallop";supportSDK="@mysten/sui";scallopClient;async initScallopClient(e,t){if(!this.scallopClient){let n=new xd({addressId:"67c44a103fe1b8c454eb9699",walletAddress:e,suiClients:[t],fullnodeUrls:[t.transport.rpcClient.requestManager.transports[0]?.uri??Cd("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 da(t,this.scallopClient),s=new fa(t,this.scallopClient),c=new ha(t,this.scallopClient),p=i.decode()||s.decode()||await c.decode();if(!p)throw new Error("Unknown transaction type");return{txType:Id.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=ka.fromData(s);break;case"WithdrawLending":c=Oa.fromData(s);break;case"Borrow":c=ga.fromData(s);break;case"Repay":c=xa.fromData(s);break;case"DepositCollateral":c=Sa.fromData(s);break;case"WithdrawCollateral":c=Ma.fromData(s);break;case"OpenObligation":c=Ca.fromData(s);break;case"UnstakeSpool":c=va.fromData(s);break;case"ClaimIncentiveReward":c=Ta.fromData(s);break;case"BorrowWithBoost":c=ya.fromData(s);break;case"StakeSca":c=Ua.fromData(s);break;case"ExtendStakePeriod":c=Na.fromData(s);break;case"ExtendPeriodAndStakeMore":c=Ea.fromData(s);break;case"RenewExpStakePeriod":c=La.fromData(s);break;case"WithdrawStakedSca":c=Va.fromData(s);break;case"SupplyAndStakeLending":c=qa.fromData(s);break;case"WithdrawAndUnstakeLending":c=Aa.fromData(s);break;case"RedeemSca":c=_a.fromData(s);break;case"MigrateAndClaim":c=wa.fromData(s);break;case"BorrowWithReferral":c=ba.fromData(s);break;case"CreateReferralLink":c=Ba.fromData(s);break;case"ClaimRevenueReferral":c=Ra.fromData(s);break;case"BindReferral":c=Pa.fromData(s);break;case"MigrateScoin":c=Ia.fromData(s);break;case"RepayWithBoost":c=Da.fromData(s);break;case"MergeVeSca":c=Wa.fromData(s);break;case"SplitVeSca":c=ja.fromData(s);break;case"VeScaObligationBindings":{c=Fa.fromData(s);break}case"TransferVeScaKeys":{c=Ka.fromData(s);break}default:throw new Error("not implemented")}return c.build({suiClient:t,account:n,network:o,scallopClient:this.scallopClient})}};import{TransactionType as of}from"@msafe/sui3-utils";import{TransactionType as dn}from"@msafe/sui3-utils";import{normalizeStructTag as be}from"@mysten/sui/utils";import{API_URL as Ud}from"@suilend/sui-fe";import{TransactionType as _d}from"@msafe/sui3-utils";import{LENDING_MARKET_ID as Ld,LENDING_MARKET_TYPE as jd,SuilendClient as fs}from"@suilend/sdk";import{TransactionType as Le}from"@msafe/sui3-utils";import{fromBase64 as Cl,toHex as xl}from"@mysten/bcs";import{normalizeStructTag as mn}from"@mysten/sui/utils";import{MAX_U64 as je}from"@suilend/sui-fe";import Dl from"bignumber.js";var Ha=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=mn(e.MintEvent.parsedJson.coin_type.name),n=e.MintEvent.parsedJson.liquidity_amount;return console.log("Decoder.decodeDeposit",t,n),{txType:Le.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=mn(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 Dl(xl(Cl(this.inputs[i].Pure.bytes)),16).toString(),c=s===je.toString();return console.log("decodeWithdraw - isMax:",c,"inputIndex:",i,"inputValue:",s,"MAX_U64.toString():",je.toString()),c&&(o=je.toString()),{txType:Le.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=mn(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 Dl(xl(Cl(this.inputs[i].Pure.bytes)),16).toString(),c=s===je.toString();return console.log("decodeBorrow - isMax:",c,"inputIndex:",i,"inputValue:",s,"MAX_U64.toString():",je.toString()),c&&(o=je.toString()),{txType:Le.Other,type:"borrow",intentionData:{coinType:n,value:o}}}decodeRepay(){let e={RepayEvent:this.simResult.events.find(o=>o.type.includes("lending_market::RepayEvent"))},t=mn(e.RepayEvent.parsedJson.coin_type.name),n=e.RepayEvent.parsedJson.liquidity_amount;return console.log("Decoder.decodeRepay",t,n),{txType:Le.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=mn(o.parsedJson.coin_type.name),s=o.parsedJson.liquidity_amount;t[i]=`${+(t[i]??"0")+ +s}`}return console.log("Decoder.decodeClaimRewards",t),{txType:Le.Other,type:"claim",intentionData:{value:t}}}decodeClaimAndDeposit(){return{txType:Le.Other,type:"claimAndDeposit",intentionData:this.decodeClaim().intentionData}}};import{Transaction as vd}from"@mysten/sui/transactions";import kd from"sort-keys-recursive";var _t=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify(kd(this.data))}};var Ga=class a extends _t{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 vd;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)}};import{Transaction as Rd}from"@mysten/sui/transactions";import{normalizeStructTag as Ad}from"@mysten/sui/utils";import{Side as pn}from"@suilend/sdk";import{isSendPoints as Md}from"@suilend/sui-fe";import Od from"bignumber.js";var Pd=(a,e)=>{let t={[pn.DEPOSIT]:[],[pn.BORROW]:[]};return a.lendingMarket.reserves.forEach(n=>{[pn.DEPOSIT,pn.BORROW].forEach(o=>{let i=o===pn.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:Ad(c.coinType.name),side:o})).filter(c=>!Md(c.rewardCoinType)&&!!s.rewards[Number(c.rewardIndex)]&&new Od(s.rewards[Number(c.rewardIndex)].earnedRewards.value.toString()).gt(0)))})}),Object.values(t).flat()},Xa=Pd;var za=class a extends _t{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 Rd;return i.claimRewardsAndSendToUser(o.address,s.id,Xa(i,c),p),p}static fromData(t){return console.log("ClaimIntention.fromData",t),new a(t)}};import{Transaction as Bd}from"@mysten/sui/transactions";var Qa=class a extends _t{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 Bd;return i.claimRewardsAndDeposit(o.address,s.id,Xa(i,c),p),p}static fromData(t){return console.log("ClaimAndDepositIntention.fromData",t),new a(t)}};import{Transaction as Ed}from"@mysten/sui/transactions";var Ya=class a extends _t{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 Ed;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)}};import{Transaction as Nd}from"@mysten/sui/transactions";var Ja=class a extends _t{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 Nd;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)}};import{Transaction as Wd}from"@mysten/sui/transactions";var Za=class a extends _t{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 Wd;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 ti=async(a,e)=>{let t=await fs.initialize(Ld,jd,a),n=await fs.getObligationOwnerCaps(e.address,t.lendingMarket.$typeArgs,a),o=await Promise.all(n.map(i=>fs.getObligation(i.obligationId,t.lendingMarket.$typeArgs,a)));return console.log("XXX getUtils - suilendClient:",t,"obligations:",o,"obligationOwnerCaps:",n),{suilendClient:t,obligationOwnerCaps:n,obligations:o}},ei=class{application="Suilend";supportSDK="@mysten/sui";utils;async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;this.utils||(this.utils=await ti(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 Ha(t,i).decode();return{txType:_d.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 ti(i,s));let c;switch(n){case"deposit":c=Ya.fromData(o);break;case"withdraw":c=Za.fromData(o);break;case"borrow":c=Ga.fromData(o);break;case"repay":c=Ja.fromData(o);break;case"claim":c=za.fromData(o);break;case"claimAndDeposit":c=Qa.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 hs=async(a,e)=>{let t=await ti(a,e),n=await fetch(`${Ud}/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 ni=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=be(e.MintEvent.parsedJson.event.typename.name),n=e.MintEvent.parsedJson.event.sui_amount_in;return console.log("Decoder.decodeStake",n),{txType:dn.Other,type:"stake",intentionData:{amount:n,outCoinType:t}}}decodeStakeAndDeposit(){let e={MintEvent:this.simResult.events.find(o=>o.type.includes("liquid_staking::MintEvent"))},t=be(e.MintEvent.parsedJson.event.typename.name),n=e.MintEvent.parsedJson.event.sui_amount_in;return console.log("Decoder.decodeStakeAndDeposit",n),{txType:dn.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=be(e.RedeemEvent.parsedJson.event.typename.name),n=be(e.MintEvent.parsedJson.event.typename.name),o=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeConvert",o),{txType:dn.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=be(e.RedeemEvent.parsedJson.event.typename.name),n=be(e.MintEvent.parsedJson.event.typename.name),o=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeConvertAndDeposit",o),{txType:dn.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=be(e.RedeemEvent.parsedJson.event.typename.name),n=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeUnstake",n),{txType:dn.Other,type:"unstake",intentionData:{amount:n,inCoinType:t}}}};import{Transaction as Kd}from"@mysten/sui/transactions";import{LstClient as kl,convertLstsAndRebalanceAndSendToUser as Vd}from"@suilend/springsui-sdk";import Fd from"sort-keys-recursive";var Vt=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify(Fd(this.data))}};var oi=class a extends Vt{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 kl.initialize(n,Object.values(s).find(x=>x.type===this.data.inCoinType)),S=await kl.initialize(n,Object.values(s).find(x=>x.type===this.data.outCoinType)),I=new Kd;return Vd(b,S,I,o.address,this.data.amount),I}static fromData(t){return console.log("ConvertIntention.fromData",t),new a(t)}};import{Transaction as $d}from"@mysten/sui/transactions";import{createObligationIfNoneExists as Hd,sendObligationToUser as Gd}from"@suilend/sdk";import{LstClient as vl,convertLstsAndRebalance as Xd}from"@suilend/springsui-sdk";var ai=class a extends Vt{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 vl.initialize(n,Object.values(s).find(M=>M.type===this.data.inCoinType)),S=await vl.initialize(n,Object.values(s).find(M=>M.type===this.data.outCoinType)),I=new $d,{obligationOwnerCapId:x,didCreate:D}=Hd(i,I,c),k=Xd(b,S,I,o.address,this.data.amount);return i.deposit(k,this.data.outCoinType,x,I),D&&Gd(x,o.address,I),I}static fromData(t){return console.log("ConvertAndDepositIntention.fromData",t),new a(t)}};import{Transaction as zd}from"@mysten/sui/transactions";import{LstClient as Qd}from"@suilend/springsui-sdk";var ii=class a extends Vt{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 Qd.initialize(n,Object.values(s).find(I=>I.type===this.data.outCoinType)),S=new zd;return b.mintAmountAndRebalanceAndSendToUser(S,o.address,this.data.amount),S}static fromData(t){return console.log("StakeIntention.fromData",t),new a(t)}};import{Transaction as Yd}from"@mysten/sui/transactions";import{createObligationIfNoneExists as Jd,sendObligationToUser as Zd}from"@suilend/sdk";import{LstClient as tf}from"@suilend/springsui-sdk";var ri=class a extends Vt{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 tf.initialize(n,Object.values(s).find(k=>k.type===this.data.outCoinType)),S=new Yd,{obligationOwnerCapId:I,didCreate:x}=Jd(i,S,c),D=b.mintAmountAndRebalance(S,o.address,this.data.amount);return i.deposit(D,this.data.outCoinType,I,S),x&&Zd(I,o.address,S),S}static fromData(t){return console.log("StakeAndDepositIntention.fromData",t),new a(t)}};import{Transaction as ef}from"@mysten/sui/transactions";import{LstClient as nf}from"@suilend/springsui-sdk";var si=class a extends Vt{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 nf.initialize(n,Object.values(s).find(I=>I.type===this.data.inCoinType)),S=new ef;return b.redeemAmountAndRebalanceAndSendToUser(S,o.address,this.data.amount),S}static fromData(t){return console.log("UnstakeIntention.fromData",t),new a(t)}};var ci=class{application="SpringSui";supportSDK="@mysten/sui";utils;async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;this.utils||(this.utils=await hs(n,o));let i=await n.devInspectTransactionBlock({sender:o.address,transactionBlock:t});console.log("SpringSuiAppHelper.deserialize",i);let c=new ni(t,i).decode();return{txType:of.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 hs(i,s));let c;switch(n){case"stake":c=ii.fromData(o);break;case"stakeAndDeposit":c=ri.fromData(o);break;case"convert":c=oi.fromData(o);break;case"convertAndDeposit":c=ai.fromData(o);break;case"unstake":c=si.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]})}};import{TransactionType as cf}from"@msafe/sui3-utils";import{TransactionType as Al}from"@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:Al.Other,type:"mint",intentionData:{amount:t}}}decodeRedeem(e){let{event:{lst_amount_in:t}}=e;return console.log("Decoder.decodeRedeem",t),{txType:Al.Other,type:"redeem",intentionData:{amount:t}}}};import{LST as rf}from"@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 rf(i).mint(o,n.address);return c.setGasBudget(1e8),c}static fromData(t){return console.log("MintIntention.fromData",t),new a(t)}};import{LST as sf}from"@alphafi/stsui-sdk";var mi=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 sf(i).redeem(o,n.address);return c.setGasBudget(1e8),c}static fromData(t){return console.log("RedeemIntention.fromData",t),new a(t)}};var pi=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:cf.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=mi.fromData(e.intentionData);break;default:throw new Error("build not implemented")}return n.build({account:t})}};import{TransactionType as Of}from"@msafe/sui3-utils";import{TurbosSdk as Pf}from"turbos-clmm-sdk";import{TransactionType as Lt}from"@msafe/sui3-utils";import{fromBase64 as Ue}from"@mysten/bcs";import{bcs as qe}from"@mysten/sui/bcs";import{BN as uf}from"turbos-clmm-sdk";var Ht={PackageId:"0x02fe4933f4521250e55a15441096d1d4a38a7311195b0bca126fc0138c1f5a97",Claim:"0x0c822cec42f7ca703696b4232f1c47b348330c23580172a29aab465bc071d894",turbosCoinType:"0x5d1f47ea69bb0de31c313d7acf89b890dbb8991ea8e03c6c355171f84bb1ba4a::turbos::TURBOS"},Gt={PackageId:"0xdee9"};var mf=(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}`)}},di=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(`${Ht.PackageId}::claim::join`)}isPrixClaimTransaction(){return!!this.getMoveCallTransaction(`${Ht.PackageId}::claim::claim`)}isRemoveLiquidityTransaction(){return!!this.getMoveCallsTransaction([`${this.config.PackageId}::position_manager::decrease_liquidity`,`${this.config.PackageId}::position_manager::burn`])}isRemoveLiquidityWithReturnTransaction(){return!!this.getMoveCallsTransaction([`${this.config.PackageId}::position_manager::decrease_liquidity_with_return_`,`${this.config.PackageId}::position_manager::burn`])}isSwapExactBaseForQuoteTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::clob_v2::swap_exact_base_for_quote`)}isSwapExactQuoteForBaseTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::clob_v2::swap_exact_quote_for_base`)}async decodeSwap(){let e=this.transactions.find(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=mf(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 uf(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.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.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.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.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.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.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.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.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.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.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.Other,type:"PrixClaim",intentionData:{}}}decodePrixJoin(){return{txType:Lt.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.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.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 pe(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 pe(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 pe(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 pe(e,this.txb)}get swapExactBaseForQuoteHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${Gt.PackageId}::clob_v2::swap_exact_base_for_quote`:!1);return new pe(e,this.txb)}get swapExactQuoteForBaseHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${Gt.PackageId}::clob_v2::swap_exact_quote_for_base`:!1);return new pe(e,this.txb)}},pe=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(qe.u128().parse(Uint8Array.from(Ue(this.inputs[e].Pure.bytes))))}decodeInputU64(e){return Number(qe.u64().parse(Uint8Array.from(Ue(this.inputs[e].Pure.bytes))))}decodeInputU32(e){return Number(qe.u32().parse(Uint8Array.from(Ue(this.inputs[e].Pure.bytes))))}decodeInputU8(e){return Number(qe.u8().parse(Uint8Array.from(Ue(this.inputs[e].Pure.bytes))))}decodeInputAddress(e){return qe.Address.parse(Uint8Array.from(Ue(this.inputs[e].Pure.bytes)))}decodeInputBool(e){return qe.bool().parse(Uint8Array.from(Ue(this.inputs[e].Pure.bytes)))}shortTypeArg(e){return this.moveCall.MoveCall.typeArguments[e]}txArg(e){return this.moveCall.MoveCall.arguments[e]}};import{TurbosSdk as pf}from"turbos-clmm-sdk";var fi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new pf(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)}};import{TurbosSdk as df}from"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 df(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)}};import{TurbosSdk as ff}from"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 ff(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)}};import{TurbosSdk as hf}from"turbos-clmm-sdk";var yi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new hf(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)}};import{TurbosSdk as gf}from"turbos-clmm-sdk";var bi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new gf(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)}};import{TurbosSdk as yf}from"turbos-clmm-sdk";var Ti=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new yf(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)}};import{TurbosSdk as bf}from"turbos-clmm-sdk";var Si=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new bf(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)}};import{TurbosSdk as Tf}from"turbos-clmm-sdk";var wi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Tf(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)}};import{Transaction as Sf}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as wf}from"@mysten/sui/utils";var Ii=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Sf;return n.moveCall({target:`${Ht.PackageId}::claim::claim`,typeArguments:[Ht.turbosCoinType],arguments:[n.object(Ht.Claim),n.object(wf)]}),n}static fromData(t){return new a(t)}};import{Transaction as If}from"@mysten/sui/transactions";var Ci=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new If;return n.moveCall({target:`${Ht.PackageId}::claim::join`,typeArguments:[Ht.turbosCoinType],arguments:[n.object(Ht.Claim)]}),n}static fromData(t){return new a(t)}};import{Transaction as Cf}from"@mysten/sui/transactions";import{TurbosSdk as xf}from"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 xf(t.network.replace("sui:",""),t.suiClient),o=new Cf;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)}};import{TurbosSdk as Df}from"turbos-clmm-sdk";var Di=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Df(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)}};import{TurbosSdk as kf}from"turbos-clmm-sdk";var ki=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 kf(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)}};import{TurbosSdk as Af}from"turbos-clmm-sdk";import{Transaction as Ml}from"@mysten/sui/transactions";import{normalizeSuiObjectId as Ol}from"@mysten/sui/utils";import{unstable_getObjectId as vf}from"turbos-clmm-sdk";var fn=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:`${Gt.PackageId}::custodian_v2::AccountCap`}});return t.data[0]?.data?vf(t.data[0].data):void 0}createAccount(e){let[t]=e.moveCall({typeArguments:[],target:`${Gt.PackageId}::clob_v2::create_account`,arguments:[]});return t}zero(e,t){return t.moveCall({typeArguments:[e],target:"0x2::coin::zero",arguments:[]})}};var Pl=89,Rl=1e6,Bl=async a=>{let{token1:e,token2:t,poolId:n,amountIn:o,currentAddress:i,turbosSdk:s}=a,c=new Ml,p=new fn(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:`${Gt.PackageId}::clob_v2::swap_exact_quote_for_base`,arguments:[c.object(String(n)),c.pure.u64(Pl),D,c.pure.u64(o),c.object(Ol("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(Rl),c},El=async a=>{let{token1:e,token2:t,poolId:n,amountIn:o,currentAddress:i,turbosSdk:s}=a,c=new Ml,p=new fn(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:`${Gt.PackageId}::clob_v2::swap_exact_base_for_quote`,arguments:[c.object(String(n)),c.pure.u64(Pl),D,c.pure.u64(o),S,k,c.object(Ol("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(Rl),c};var vi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Af(t.network.replace("sui:",""),t.suiClient);return await El({...this.data,turbosSdk:n,currentAddress:t.account.address})}static fromData(t){return new a(t)}};import{TurbosSdk as Mf}from"turbos-clmm-sdk";var Ai=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Mf(t.network.replace("sui:",""),t.suiClient);return await Bl({...this.data,turbosSdk:n,currentAddress:t.account.address})}static fromData(t){return new a(t)}};var Mi=class{application="turbos";supportSDK="@mysten/sui";async deserialize(e){console.log(e,"input");let t=new Pf(e.network.replace("sui:","")),n=await t.contract.getConfig(),{transaction:o,account:i}=e,c=await new di(o,t,n).decode(i.address);return{txType:Of.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=bi.fromData(e.intentionData);break;case"AddLiquidity":i=fi.fromData(e.intentionData);break;case"IncreaseLiquidity":i=wi.fromData(e.intentionData);break;case"DecreaseLiquidity":i=Ti.fromData(e.intentionData);break;case"DecreaseLiquidityWithReturn":i=Si.fromData(e.intentionData);break;case"RemoveLiquidity":i=xi.fromData(e.intentionData);break;case"removeLiquidityWithReturn":i=Di.fromData(e.intentionData);break;case"CollectFee":i=gi.fromData(e.intentionData);break;case"CollectReward":i=yi.fromData(e.intentionData);break;case"Burn":i=hi.fromData(e.intentionData);break;case"Swap":i=ki.fromData(e.intentionData);break;case"PrixJoin":i=Ci.fromData(e.intentionData);break;case"PrixClaim":i=Ii.fromData(e.intentionData);break;case"SwapExactBaseForQuote":i=vi.fromData(e.intentionData);break;case"SwapExactQuoteForBase":i=Ai.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};import{TransactionType as Lf}from"@msafe/sui3-utils";import{TransactionType as gs}from"@msafe/sui3-utils";import{bcs as Nl}from"@mysten/sui.js/bcs";import{normalizeStructTag as Ef,normalizeSuiAddress as hn}from"@mysten/sui.js/utils";var Rf={packageId:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",poolObjectId:"0x7fa2faa111b8c65bea48a23049bfd81ca8f971a262d981dcd9a17c3825cb5baf",metadataObjectId:"0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",systemStateObjectId:"0x0000000000000000000000000000000000000000000000000000000000000005",certType:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",gasBudget:5e7},At=Rf;var Oi=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(`${At.packageId}::native_pool::stake`)}isUnStakeTransaction(){return!!this.getMoveCallTransaction(`${At.packageId}::native_pool::unstake`)}isClaimTicketTransaction(){return!!this.getMoveCallTransaction(`${At.packageId}::native_pool::burn_ticket`)}decodeStake(){let e=this.transactions[0].amounts[0].value.toNumber();return{txType:gs.Other,type:"Stake",intentionData:{amount:e}}}decodeUnStake(){let t=this.transactions.find(n=>n.kind==="SplitCoins").amounts[0].value.toNumber();return{txType:gs.Other,type:"UnStake",intentionData:{amount:t}}}decodeClaimTicket(){let e=this.helper.decodeOwnedObjectId(2);return console.log(e),{txType:gs.Other,type:"ClaimTicket",intentionData:{ticketId:e}}}get helper(){let e=this.transactions.find(t=>t.kind==="MoveCall"&&t.target.startsWith(At.packageId));return new ys(e,this.txb)}},ys=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 hn(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 Nl.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 hn(e.value.Object.ImmOrOwned.objectId)}return hn(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return hn(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return hn(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 Nl.de(t,new Uint8Array(n))}typeArg(e){return Ef(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};import{TransactionBlock as Nf}from"@mysten/sui.js/transactions";var Pi=class a extends zt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(t);let n=new Nf,{ticketId:o}=this.data;return n.moveCall({target:`${At.packageId}::native_pool::burn_ticket`,arguments:[n.object(At.poolObjectId),n.object(At.systemStateObjectId),n.object(o)]}),n}static fromData(t){return new a(t)}};import{TransactionBlock as Wf}from"@mysten/sui.js/transactions";var Ri=class a extends zt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(t);let n=new Wf,{amount:o}=this.data,[i]=n.splitCoins(n.gas,[n.pure(o)]);return n.moveCall({target:`${At.packageId}::native_pool::stake`,arguments:[n.object(At.poolObjectId),n.object(At.metadataObjectId),n.object(At.systemStateObjectId),i]}),n}static fromData(t){return new a(t)}};import{TransactionBlock as _f}from"@mysten/sui.js/transactions";var Bi=class a extends zt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(t);let n=new _f,{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]===At.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:`${At.packageId}::native_pool::unstake`,arguments:[n.object(At.poolObjectId),n.object(At.metadataObjectId),n.object(At.systemStateObjectId),b]}),n}static fromData(t){return new a(t)}};var Ei=class{application="volo";supportSDK="@mysten/sui.js";async deserialize(e){let{transactionBlock:t}=e,o=new Oi(t).decode();return{txType:Lf.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n}=e,o;switch(e.txSubType){case"Stake":o=Ri.fromData(e.intentionData);break;case"UnStake":o=Bi.fromData(e.intentionData);break;case"ClaimTicket":o=Pi.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};import{TransactionType as Zf}from"@msafe/sui3-utils";import{asIntN as Wl}from"@cetusprotocol/common-sdk";import{TransactionType as de}from"@msafe/sui3-utils";import{fromBase64 as gn}from"@mysten/bcs";import{bcs as yn}from"@mysten/sui/bcs";var Ni=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:de.Other,type:"OpenPosition",intentionData:{pool:this.getSharedObjectID(this.getInputIndex(e,1)),lowerTick:Number(Wl(BigInt(this.getU32(this.getInputIndex(e,2)))).toString()),upperTick:Number(Wl(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:de.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:de.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:de.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:de.Other,type:"CollectRewards",intentionData:{pool:e[0].pool,position:e[0].position,collectRewardTokens:e.map(t=>t.rewardCoinType)}}}decodeCollectFeeTx(){return{txType:de.Other,type:"CollectFee",intentionData:this.getFeeCallData()}}decodeCollectRewardsAndFeeTx(){let e=this.getFeeCallData();return{txType:de.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:de.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(yn.u32().parse(Uint8Array.from(gn(this.inputs[e].Pure.bytes))))}getU64(e){return yn.u64().parse(Uint8Array.from(gn(this.inputs[e].Pure.bytes)))}getU128(e){return yn.u128().parse(Uint8Array.from(gn(this.inputs[e].Pure.bytes)))}getBoolean(e){return yn.bool().parse(Uint8Array.from(gn(this.inputs[e].Pure.bytes)))}getAddress(e){return yn.Address.parse(Uint8Array.from(gn(this.inputs[e].Pure.bytes)))}getTypeArguments(e){return e.MoveCall.typeArguments||[]}getInputIndex(e,t){return e.MoveCall.arguments[t].Input}};import{TransactionType as $f}from"@msafe/sui3-utils";import{buildTx as qf,getQuote as Ff}from"@bluefin-exchange/bluefin7k-aggregator-sdk";import{BN as Te,ClmmPoolUtil as Kf}from"@firefly-exchange/library-sui";import{Decimal as Vf}from"turbos-clmm-sdk";import{SuiClient as jf}from"@firefly-exchange/library-sui";import{OnChainCalls as Uf}from"@firefly-exchange/library-sui/spot";var _l={rpc:"https://fullnode.mainnet.sui.io/",objects:{GlobalConfig:"0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",BasePackage:"0x3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267",CurrentPackage:"0x67b34b728c4e28e704dcfecf7c5cf55c7fc593b6c65c20d1836d97c209c1928a"}},ae=(a,e)=>{if(a!=="sui:mainnet")throw new Error("Bluefin spot protocol is only available on sui::mainnet");let t=new jf({url:_l.rpc});return new Uf(t,_l.objects,{address:e.address,isUIWallet:!1})};var Pt=class{static async OpenPosition(e,t,n){let o=ae(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=ae(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=ae(n,t),i=await o.queryChain.getPool(e.pool);return await o.removeLiquidity(i,e.position,{liquidityAmount:new Te(e.liquidity),tokenMaxA:new Te(e.maxAmountTokenA),tokenMaxB:new Te(e.maxAmountTokenB)},{returnTx:!0,sender:t.address})}static async closePosition(e,t,n){let o=ae(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=ae(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=ae(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=ae(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=ae(n,t),i=await Ff({tokenIn:e.tokenIn.address,tokenOut:e.tokenOut.address,amountIn:new Vf(e.amountIn).mul(10**e.tokenIn.decimals).toString()}),s=await qf({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{...Kf.estLiquidityAndCoinAmountFromOneAmounts(t.lowerTick,t.upperTick,new Te(t.tokenAmount),t.isTokenAFixed,!0,0,new Te(e.current_sqrt_price)),tokenMaxA:new Te(t.maxAmountTokenA),tokenMaxB:new Te(t.maxAmountTokenB)}}};var Wi=class a extends w{constructor(t){super(t);this.data=t}data;txType=$f.Other;txSubType="Aggregator7KSwap";async build(t){let{account:n,network:o}=t;return console.log(this.data),Pt.aggregator7KSwap(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Hf}from"@msafe/sui3-utils";var _i=class a extends w{constructor(t){super(t);this.data=t}data;txType=Hf.Other;txSubType="ClosePosition";async build(t){let{account:n,network:o}=t;return console.log(this.data),Pt.closePosition(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Gf}from"@msafe/sui3-utils";var Li=class a extends w{constructor(t){super(t);this.data=t}data;txType=Gf.Other;txSubType="CollectFee";async build(t){let{account:n,network:o}=t;return console.log(this.data),Pt.collectFee(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Xf}from"@msafe/sui3-utils";var ji=class a extends w{constructor(t){super(t);this.data=t}data;txType=Xf.Other;txSubType="CollectRewards";async build(t){let{account:n,network:o}=t;return console.log(this.data),Pt.collectRewards(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as zf}from"@msafe/sui3-utils";var Ui=class a extends w{constructor(t){super(t);this.data=t}data;txType=zf.Other;txSubType="CollectRewardsAndFee";async build(t){let{account:n,network:o}=t;return console.log(this.data),Pt.collectRewardsAndFee(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Qf}from"@msafe/sui3-utils";var qi=class a extends w{constructor(t){super(t);this.data=t}data;txType=Qf.Other;txSubType="OpenPosition";async build(t){let{account:n,network:o}=t;return console.log(this.data),Pt.OpenPosition(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Yf}from"@msafe/sui3-utils";var Fi=class a extends w{constructor(t){super(t);this.data=t}data;txType=Yf.Other;txSubType="ProvideLiquidity";async build(t){let{account:n,network:o}=t;return console.log(this.data),Pt.provideLiquidity(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Jf}from"@msafe/sui3-utils";var Ki=class a extends w{constructor(t){super(t);this.data=t}data;txType=Jf.Other;txSubType="RemoveLiquidity";async build(t){let{account:n,network:o}=t;return console.log(this.data),Pt.removeLiquidity(this.data,n,o)}static fromData(t){return new a(t)}};var Vi=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 Ni(t,n).decode();return{txType:Zf.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=qi.fromData(e.intentionData);break;case"ProvideLiquidity":i=Fi.fromData(e.intentionData);break;case"RemoveLiquidity":i=Ki.fromData(e.intentionData);break;case"ClosePosition":i=_i.fromData(e.intentionData);break;case"CollectFee":i=Li.fromData(e.intentionData);break;case"CollectRewards":i=ji.fromData(e.intentionData);break;case"CollectRewardsAndFee":i=Ui.fromData(e.intentionData);break;case"Aggregator7KSwap":i=Wi.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};import{TransactionType as Lh}from"@msafe/sui3-utils";import{MmtSDK as ch}from"@mmt-finance/clmm-sdk";import{Transaction as lh}from"@mysten/sui/transactions";var R=Tu(jl());import{convertI32ToSigned as Ts,TickMath as Fl}from"@mmt-finance/clmm-sdk/dist/utils/math/tickMath";import ah from"bignumber.js";var th="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",Nt=a=>a!=="0x2::sui::SUI"?a:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",eh=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},nh=(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")},oh=(a,e,t,n)=>{if(a===th){let[o]=n.splitCoins(n.gas,[n.pure.u64(t)]);return o}else{let o=nh(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 Ul(a,e,t,n,o){let i=await eh({suiClient:a.rpcClient,address:e,type:t});return oh(Nt(t),i.map(c=>({balance:BigInt(c.balance),objectId:c.coinObjectId})),n,o)}var Se=(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 ql({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 ih(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 rh(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 Kl=(a,e,t)=>{let n=Ts(t?a+a%(e??1):a-a%(e??1));return n>0?new R.default(ih(n)):new R.default(rh(n))};function Vl(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 Zt({address:a,coinType:e,coinAmount:t,coinDecimals:n,tx:o,mmt:i}){let s=Vl(t,n),c;return Number(t)?c=await Ul(i,a,Nt(e),s,o):[c]=o.moveCall({target:"0x2::coin::zero",typeArguments:[e],arguments:[]}),c}function $l({mmt:a,tx:e,poolModel:t,selectedLowTick:n,selectedHighTick:o}){let i=Kl(Ts(n),t.tickSpacing),s=Kl(Ts(o),t.tickSpacing);return a.Position.openPosition(e,t,i.toString(),s.toString())}var sh=(a,e)=>{let n=1e4-Math.floor(e*100);return a*BigInt(n)/BigInt(1e4)};function $i(a,e,t){let n=Vl(a,e);return Number(a)===0?BigInt(0):sh(n,t)}async function we({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=Fl.sqrtPriceX64ToPrice(new R.default(p?.toString()),t.decimals,n.decimals),S=i?(100-o)/100:(100+o)/100,I=Fl.priceToSqrtPriceX64(b.mul(S),t.decimals,n.decimals);return BigInt(I.toString())}var Hl=async(a,e,t,n,o,i,s,c,p,b)=>{let S=await Zt({mmt:a,address:t,coinType:i.tokenX.coinType,coinAmount:n,coinDecimals:i.tokenX.decimals,tx:e}),I=await Zt({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=$l({mmt:a,tx:e,poolModel:x,selectedLowTick:c,selectedHighTick:p}),k=$i(n,i.tokenX.decimals,b),M=$i(o,i.tokenY.decimals,b);a.Pool.addLiquidity(e,x,D,S,I,k,M,t),e.transferObjects([D],e.pure.address(t))},Gl=async(a,e,t,n,o,i,s,c,p,b,S)=>{try{let I=await Zt({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:Nt(s.tokenX.coinType),tokenYType:Nt(s.tokenY.coinType),tickSpacing:s.tickSpacing},D=$l({mmt:a,tx:e,poolModel:x,selectedLowTick:c,selectedHighTick:p}),k=await we({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)}},Xl=async(a,e,t,n,o,i,s,c)=>{let p=await Zt({mmt:a,address:t,coinType:i.tokenX.coinType,coinAmount:n,coinDecimals:i.tokenX.decimals,tx:e}),b=await Zt({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=$i(n,i.tokenX.decimals,c),x=$i(o,i.tokenY.decimals,c);a.Pool.addLiquidity(e,S,s,p,b,I,x,t)},zl=async(a,e,t,n,o,i,s,c,p)=>{try{let b=await Zt({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 we({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}},Ql=(a,e)=>BigInt(e===100?a:new ah(a).multipliedBy(e/100).toFixed(0)),Yl=async(a,e,t,n,o,i)=>{let s=Ql(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),Se(a,e,t,n,i),o===100&&a.Position.closePosition(i,t.objectId)},Jl=async({sdk:a,address:e,position:t,pool:n,withdrawPercentage:o,txb:i,targetCoinType:s,slippage:c})=>{let p=Ql(t.liquidity,o),b=Nt(n.tokenX.coinType),S=Nt(n.tokenY.coinType),I=Nt(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 we({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}),Se(a,e,t,n,i),o===100&&a.Position.closePosition(i,t.objectId)};var Hi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=ch.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amountA:i,amountB:s,pool:c,selectedLowTick:p,selectedHighTick:b,slippage:S}=n,I=new lh;return await Hl(t,I,o,i,s,c,c.poolId,p,b,S),I}static fromData(t){return new a(t)}};import{MmtSDK as uh}from"@mmt-finance/clmm-sdk";import{Transaction as mh}from"@mysten/sui/transactions";var Gi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=uh.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 mh;return await Gl(t,x,t.rpcClient,o,i,s,c,p,b,S,I),x}static fromData(t){return new a(t)}};import{MmtSDK as ph}from"@mmt-finance/clmm-sdk";import{VeMMT as dh}from"@mmt-finance/ve-sdk-v1";import{Transaction as fh}from"@mysten/sui/transactions";var Fe="0x35169bc93e1fddfcf3a82a9eae726d349689ed59e4b065369af8789fe59f8608::mmt::MMT";var bn=async a=>{let e=await a.getSyncEpochInfo();if(!e)throw new Error("Failed to sync epoch");return e},Zl=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 Zt({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 bn(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}`)},tu=async(a,e,t,n,o,i,s,c)=>{let p=await bn(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)}},eu=async(a,e,t,n,o)=>{let i=await bn(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())},nu=async(a,e,t,n)=>{let o=await bn(a);await a.syncOrAdvanceEpoch(n,o.currentEpoch,o.syncedEpoch),await a.claimReward(n,t,e),await a.unbond(n,t,e)},ou=async(a,e,t,n)=>{if(t.length>0&&t.some(o=>o.userRewardAmount>0)){let o=await bn(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())}},au=async(a,e,t,n,o,i,s,c,p)=>{let b=Nt(i),S=[];for(let q of n)if(q.userRewardAmount>0){let Mt=await e.buildClaimRewardCoin(o,q.veId);S.push(Mt)}let I=[];for(let q of S)Array.isArray(q)?I.push(...q):I.push(q);if(I.length===0)return;if(i===Nt(Fe)){o.transferObjects(I,o.pure.address(t));return}let x=c?.[i]?.[Fe];if(!x||x.length===0)throw new Error(`No swap route found from ${Fe} 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:[Fe]}),U=Nt(Fe);for(let q=0;q<x.length;q++){let Mt=x[q],W=p.find(H=>H.poolId===Mt);if(!W)throw new Error(`Pool ${Mt} not found`);let Rt=Nt(W.tokenXType||W.tokenX?.coinType||"")===U,Ce={objectId:W.poolId,tokenXType:W.tokenXType||W.tokenX?.coinType||"",tokenYType:W.tokenYType||W.tokenY?.coinType||""},Tn=await we({suiClient:a.rpcClient,poolId:W.poolId,currentSqrtPrice:W.currentSqrtPrice,tokenX:W.tokenX,tokenY:W.tokenY,slippagePercentage:s,isTokenX:Rt}),{outputCoin:Sn,leftoverCoin:Ke}=a.Pool.swapV2({txb:o,pool:Ce,amount:L,inputCoin:M,isXtoY:Rt,limitSqrtPrice:Tn});if(o.transferObjects([Ke],o.pure.address(t)),M=Sn,U=Rt?Nt(W.tokenYType||W.tokenY?.coinType||""):Nt(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 Xi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=ph.NEW({network:"mainnet"}),o=new dh(t.suiClient,"mainnet"),{params:i}=this.data,{address:s,positions:c,pools:p,veMMTs:b}=i,S=new fh;for(let I of c){let x=p.find(D=>D.poolId===I.poolId);x&&Se(n,s,I,x,S)}return await ou(o,s,b,S),S}static fromData(t){return new a(t)}};import{MmtSDK as hh}from"@mmt-finance/clmm-sdk";import{VeMMT as gh}from"@mmt-finance/ve-sdk-v1";import{Transaction as yh}from"@mysten/sui/transactions";var zi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=hh.NEW({network:"mainnet"}),o=new gh(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 yh;return await Promise.all(i.claimParams.map(k=>ql({...k,sdk:n,txb:D}))),await au(n,o,c,p,D,b,S,I,x),D}static fromData(t){return new a(t)}};import{MmtSDK as bh}from"@mmt-finance/clmm-sdk";import{Transaction as Th}from"@mysten/sui/transactions";var Qi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=bh.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,position:i,pool:s}=n,c=new Th;return Se(t,o,i,s,c),c}static fromData(t){return new a(t)}};import{MmtSDK as Sh}from"@mmt-finance/clmm-sdk";import{Transaction as wh}from"@mysten/sui/transactions";var Yi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=Sh.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amountA:i,amountB:s,pool:c,positionObjectId:p,slippage:b}=n,S=new wh;return await Xl(t,S,o,i,s,c,p,b),S}static fromData(t){return new a(t)}};import{MmtSDK as Ih}from"@mmt-finance/clmm-sdk";import{Transaction as Ch}from"@mysten/sui/transactions";var Ji=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=Ih.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amount:i,isTokenX:s,pool:c,positionObjectId:p,swapSlippage:b,addLiquiditySlippage:S}=n,I=new Ch;return await zl(t,I,o,i,s,c,p,b,S),I}static fromData(t){return new a(t)}};import{MmtSDK as xh}from"@mmt-finance/clmm-sdk";import{Transaction as Dh}from"@mysten/sui/transactions";var Zi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=xh.NEW({network:"mainnet"}),{params:n}=this.data,{pool:o,position:i,address:s,withdrawPercentage:c,zapOutOn:p,targetCoinType:b,slippage:S}=n,I=new Dh;return p?await Jl({sdk:t,address:s,position:i,pool:o,withdrawPercentage:c,txb:I,targetCoinType:b,slippage:S}):await Yl(t,s,i,o,c,I),I}static fromData(t){return new a(t)}};import{Transaction as iu}from"@mysten/sui/transactions";import{LstClient as ru}from"@suilend/springsui-sdk";var Ss={id:"0x0431232199873db77a92aa645cd43521437e9cc5c6fff07fd03edb88afe0b25a",type:"0x2b6602099970374cf58a2a1b9d96f005fccceb81e92eb059873baf420eb6c717::x_sui::X_SUI",weightHookId:"0x9e35c13dbb0bc437e8ad5a95ec463622f58763e060552ae8d100db77f4904601"},su=async(a,e,t)=>{let n=await ru.initialize(a,Ss),o=new iu,[i]=o.splitCoins(o.gas,[BigInt(t)]),s=n.mint(o,i);return o.transferObjects([s],e),o},cu=async(a,e,t)=>{let n=await ru.initialize(a,Ss),o=await a.getCoins({owner:e,coinType:Ss.type,limit:1e3});if(o.data.length===0)throw new Error("No lst coins found");let i=new iu,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 tr=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 su(t.suiClient,o,i)}static fromData(t){return new a(t)}};import{MmtSDK as vh}from"@mmt-finance/clmm-sdk";import{Transaction as Ah}from"@mysten/sui/transactions";import{mappedMmtV3Pool as kh}from"@mmt-finance/clmm-sdk/dist/utils/poolUtils";var lu=async(a,e,t,n,o,i,s)=>{let c=await Zt({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}=kh[I]||{id:I,isReverse:!1},q=Nt(x.coinType)===Nt(b);q=U?!q:q;let Mt=U?D.coinType:x.coinType,W=U?x.coinType:D.coinType,Ie=await we({poolId:L,tokenX:x,tokenY:D,slippagePercentage:s,isTokenX:q,suiClient:a.rpcClient,currentSqrtPrice:M}),Rt=a.Pool.swap(i,{objectId:L,tokenXType:Mt,tokenYType:W,isStable:k},p,c,q,void 0,Ie,!1);i.transferObjects([c],i.pure.address(o)),c=Rt,b=q?W:Mt,p=i.moveCall({target:"0x2::coin::value",typeArguments:[b],arguments:[c]})}i.transferObjects([c],i.pure.address(o))};var er=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=vh.NEW({network:"mainnet"}),{params:n}=this.data,{route:o,tokenIn:i,amountIn:s,address:c,slippage:p}=n,b=new Ah;return await lu(t,o,i,s,c,b,p),b}static fromData(t){return new a(t)}};var nr=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 cu(t.suiClient,o,i)}static fromData(t){return new a(t)}};import{MmtSDK as Mh}from"@mmt-finance/clmm-sdk";import{VeMMT as Oh}from"@mmt-finance/ve-sdk-v1";import{Transaction as Ph}from"@mysten/sui/transactions";var or=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=Mh.NEW({network:"mainnet"}),o=new Oh(t.suiClient,"mainnet"),{params:i}=this.data,{token:s,amount:c,address:p,enableAutoMaxBond:b,unbondAt:S}=i,I=new Ph;return await Zl(n,o,s,c,p,b,S,I),I}static fromData(t){return new a(t)}};import{VeMMT as Rh}from"@mmt-finance/ve-sdk-v1";import{Transaction as Bh}from"@mysten/sui/transactions";var ar=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Rh(t.suiClient,"mainnet"),{params:o}=this.data,{address:i,veId:s,currentUnbondAt:c,isCurrentlyMaxBond:p,enableAutoMaxBond:b,unbondAt:S}=o,I=new Bh;return await tu(n,i,s,c,p,b,S,I),I}static fromData(t){return new a(t)}};import{VeMMT as Eh}from"@mmt-finance/ve-sdk-v1";import{Transaction as Nh}from"@mysten/sui/transactions";var ir=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Eh(t.suiClient,"mainnet"),{params:o}=this.data,{address:i,veId:s,selectedVeMMTIds:c}=o,p=new Nh;return await eu(n,i,s,c,p),p}static fromData(t){return new a(t)}};import{VeMMT as Wh}from"@mmt-finance/ve-sdk-v1";import{Transaction as _h}from"@mysten/sui/transactions";var rr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Wh(t.suiClient,"mainnet"),{params:o}=this.data,{address:i,veId:s}=o,c=new _h;return await nu(n,i,s,c),c}static fromData(t){return new a(t)}};var sr=class{application="mmt-dex";supportSDK="@mysten/sui";async deserialize(e){let{appContext:t}=e;return{txType:Lh.Other,txSubType:t.action,intentionData:t}}async build(e){let t;switch(e.txSubType){case"Swap":t=er.fromData(e.intentionData);break;case"AddLiquidity":t=Hi.fromData(e.intentionData);break;case"AddLiquiditySingleSide":t=Gi.fromData(e.intentionData);break;case"ClaimRewards":t=Qi.fromData(e.intentionData);break;case"ClaimAllRewards":t=Xi.fromData(e.intentionData);break;case"ClaimRewardsAs":t=zi.fromData(e.intentionData);break;case"RemoveLiquidity":t=Zi.fromData(e.intentionData);break;case"StakeXSui":t=tr.fromData(e.intentionData);break;case"UnstakeXSui":t=nr.fromData(e.intentionData);break;case"ManageLiquidity":t=Yi.fromData(e.intentionData);break;case"ManageLiquiditySingleSide":t=Ji.fromData(e.intentionData);break;case"Bond":t=or.fromData(e.intentionData);break;case"Extend":t=ar.fromData(e.intentionData);break;case"Merge":t=ir.fromData(e.intentionData);break;case"Unbond":t=rr.fromData(e.intentionData);break;default:throw new Error(`not implemented ${e.txSubType}`)}return t.build({suiClient:e.suiClient})}};import{TransactionType as uu}from"@msafe/sui3-utils";import{Transaction as jh}from"@mysten/sui/transactions";import{Vaults as Uh}from"@nemoprotocol/vaults-sdk";var cr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o}=t,i=Uh.createSDK({client:n}),s=new jh;return await i.deposit(this.data,o.address,s),s}static fromData(t){return new a(t)}};import{Transaction as qh}from"@mysten/sui/transactions";import{Vaults as Fh}from"@nemoprotocol/vaults-sdk";var lr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o}=t,i=Fh.createSDK({client:n}),s=new qh;return await i.withdraw(this.data,o.address,s),s}static fromData(t){return new a(t)}};var ur=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:uu.Other,txSubType:"VaultDeposit",intentionData:e.appContext};if(n)return{txType:uu.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=cr.fromData(e.intentionData);break;case"VaultWithdraw":o=lr.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};var J4=pa.fromHelpers([new Qo,new sa,new Go,new ca,new wo,new Mi,new sr,new $a,new Ei,new Gn,new ei,new ci,new Mn,new Vi,new pi,new ur]);export{J4 as appHelpers};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|