@msafe/sui-app-store 0.0.338 → 0.0.342
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 +26 -26
- package/dist/index.d.ts +26 -26
- 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 +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var pu=Object.create;var Er=Object.defineProperty;var mu=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),Fs=(a,e)=>{for(var t in e)Er(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&&Er(a,o,{get:()=>e[o],enumerable:!(n=mu(e,o))||n.enumerable});return a};var Tu=(a,e,t)=>(t=a!=null?pu(fu(a)):{},bu(e||!a||!a.__esModule?Er(t,"default",{value:a,enumerable:!0}):t,a));var Ul=yu((jl,Is)=>{"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,p){if(typeof r=="number")return this._initNumber(r,u,p);if(typeof r=="object")return this._initArray(r,u,p);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,p):(this._parseBase(r,u,d),p==="le"&&this._initArray(this.toArray(),u,p)))},o.prototype._initNumber=function(r,u,p){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),p==="le"&&this._initArray(this.toArray(),u,p)},o.prototype._initArray=function(r,u,p){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(p==="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(p==="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 p=s(y,u);return u-1>=r&&(p|=s(y,u-1)<<4),p}o.prototype._parseHex=function(r,u,p){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(p==="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 m(y,r,u,p){for(var d=0,h=0,T=Math.min(y.length,u),C=r;C<T;C++){var f=y.charCodeAt(C)-48;d*=p,f>=49?h=f-49+10:f>=17?h=f-17+10:h=f,t(f>=0&&h<p,"Invalid character"),d+=h}return d}o.prototype._parseBase=function(r,u,p){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-p,C=T%d,f=Math.min(T,T-C)+p,l=0,g=p;g<f;g+=d)l=m(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=m(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],k=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(r,u){r=r||10,u=u|0||1;var p;if(r===16||r==="hex"){p="";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?p=I[6-f.length]+f+p:p=f+p}for(h!==0&&(p=h.toString(16)+p);p.length%u!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}if(r===(r|0)&&r>=2&&r<=36){var l=x[r],g=k[r];p="";var v=this.clone();for(v.negative=0;!v.isZero();){var O=v.modrn(g).toString(r);v=v.idivn(g),v.isZero()?p=O+p:p=I[l-O.length]+O+p}for(this.isZero()&&(p="0"+p);p.length%u!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}t(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var r=this.words[0];return this.length===2?r+=this.words[1]*67108864:this.length===3&&this.words[2]===1?r+=4503599627370496+this.words[1]*67108864:this.length>2&&t(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-r:r},o.prototype.toJSON=function(){return this.toString(16,2)},i&&(o.prototype.toBuffer=function(r,u){return this.toArrayLike(i,r,u)}),o.prototype.toArray=function(r,u){return this.toArrayLike(Array,r,u)};var D=function(r,u){return r.allocUnsafe?r.allocUnsafe(u):new r(u)};o.prototype.toArrayLike=function(r,u,p){this._strip();var d=this.byteLength(),h=p||Math.max(1,d);t(d<=h,"byte array longer than desired length"),t(h>0,"Requested array length <= 0");var T=D(r,h),C=u==="le"?"LE":"BE";return this["_toArrayLike"+C](T,d),T},o.prototype._toArrayLikeLE=function(r,u){for(var p=0,d=0,h=0,T=0;h<this.length;h++){var C=this.words[h]<<T|d;r[p++]=C&255,p<r.length&&(r[p++]=C>>8&255),p<r.length&&(r[p++]=C>>16&255),T===6?(p<r.length&&(r[p++]=C>>24&255),d=0,T=0):(d=C>>>24,T+=2)}if(p<r.length)for(r[p++]=d;p<r.length;)r[p++]=0},o.prototype._toArrayLikeBE=function(r,u){for(var p=r.length-1,d=0,h=0,T=0;h<this.length;h++){var C=this.words[h]<<T|d;r[p--]=C&255,p>=0&&(r[p--]=C>>8&255),p>=0&&(r[p--]=C>>16&255),T===6?(p>=0&&(r[p--]=C>>24&255),d=0,T=0):(d=C>>>24,T+=2)}if(p>=0)for(r[p--]=d;p>=0;)r[p--]=0},Math.clz32?o.prototype._countBits=function(r){return 32-Math.clz32(r)}:o.prototype._countBits=function(r){var u=r,p=0;return u>=4096&&(p+=13,u>>>=13),u>=64&&(p+=7,u>>>=7),u>=8&&(p+=4,u>>>=4),u>=2&&(p+=2,u>>>=2),p+u},o.prototype._zeroBits=function(r){if(r===0)return 26;var u=r,p=0;return(u&8191)===0&&(p+=13,u>>>=13),(u&127)===0&&(p+=7,u>>>=7),(u&15)===0&&(p+=4,u>>>=4),(u&3)===0&&(p+=2,u>>>=2),(u&1)===0&&p++,p},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 p=u/26|0,d=u%26;r[u]=y.words[p]>>>d&1}return r}o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var r=0,u=0;u<this.length;u++){var p=this._zeroBits(this.words[u]);if(r+=p,p!==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 p=0;p<u.length;p++)this.words[p]=this.words[p]&r.words[p];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,p;this.length>r.length?(u=this,p=r):(u=r,p=this);for(var d=0;d<p.length;d++)this.words[d]=u.words[d]^p.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,p=r%26;this._expand(u),p>0&&u--;for(var d=0;d<u;d++)this.words[d]=~this.words[d]&67108863;return p>0&&(this.words[d]=~this.words[d]&67108863>>26-p),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 p=r/26|0,d=r%26;return this._expand(p+1),u?this.words[p]=this.words[p]|1<<d:this.words[p]=this.words[p]&~(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 p,d;this.length>r.length?(p=this,d=r):(p=r,d=this);for(var h=0,T=0;T<d.length;T++)u=(p.words[T]|0)+(d.words[T]|0)+h,this.words[T]=u&67108863,h=u>>>26;for(;h!==0&&T<p.length;T++)u=(p.words[T]|0)+h,this.words[T]=u&67108863,h=u>>>26;if(this.length=p.length,h!==0)this.words[this.length]=h,this.length++;else if(p!==this)for(;T<p.length;T++)this.words[T]=p.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 p=this.cmp(r);if(p===0)return this.negative=0,this.length=1,this.words[0]=0,this;var d,h;p>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 p=y.length+r.length|0;u.length=p,p=p-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<p;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,p){var d=r.words,h=u.words,T=p.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,ks=d[3]|0,X=ks&8191,z=ks>>>13,Ds=d[4]|0,Q=Ds&8191,J=Ds>>>13,vs=d[5]|0,Y=vs&8191,Z=vs>>>13,As=d[6]|0,tt=As&8191,et=As>>>13,Ms=d[7]|0,nt=Ms&8191,ot=Ms>>>13,Os=d[8]|0,at=Os&8191,it=Os>>>13,Ps=d[9]|0,rt=Ps&8191,st=Ps>>>13,Rs=h[0]|0,ct=Rs&8191,lt=Rs>>>13,Bs=h[1]|0,ut=Bs&8191,pt=Bs>>>13,Es=h[2]|0,mt=Es&8191,dt=Es>>>13,Ns=h[3]|0,ft=Ns&8191,ht=Ns>>>13,Ws=h[4]|0,gt=Ws&8191,yt=Ws>>>13,_s=h[5]|0,bt=_s&8191,Tt=_s>>>13,Ls=h[6]|0,St=Ls&8191,wt=Ls>>>13,js=h[7]|0,It=js&8191,Ct=js>>>13,Us=h[8]|0,xt=Us&8191,kt=Us>>>13,qs=h[9]|0,Dt=qs&8191,vt=qs>>>13;p.negative=r.negative^u.negative,p.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 hr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(hr>>>26)|0,hr&=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,pt)|0,l=l+Math.imul(P,ut)|0,g=g+Math.imul(P,pt)|0;var gr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(gr>>>26)|0,gr&=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(_,pt)|0,l=l+Math.imul(F,ut)|0,g=g+Math.imul(F,pt)|0,f=f+Math.imul(O,mt)|0,l=l+Math.imul(O,dt)|0,l=l+Math.imul(P,mt)|0,g=g+Math.imul(P,dt)|0;var yr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(yr>>>26)|0,yr&=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,pt)|0,l=l+Math.imul($,ut)|0,g=g+Math.imul($,pt)|0,f=f+Math.imul(_,mt)|0,l=l+Math.imul(_,dt)|0,l=l+Math.imul(F,mt)|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 br=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(br>>>26)|0,br&=67108863,f=Math.imul(Q,ct),l=Math.imul(Q,lt),l=l+Math.imul(J,ct)|0,g=Math.imul(J,lt),f=f+Math.imul(X,ut)|0,l=l+Math.imul(X,pt)|0,l=l+Math.imul(z,ut)|0,g=g+Math.imul(z,pt)|0,f=f+Math.imul(K,mt)|0,l=l+Math.imul(K,dt)|0,l=l+Math.imul($,mt)|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 Tr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Tr>>>26)|0,Tr&=67108863,f=Math.imul(Y,ct),l=Math.imul(Y,lt),l=l+Math.imul(Z,ct)|0,g=Math.imul(Z,lt),f=f+Math.imul(Q,ut)|0,l=l+Math.imul(Q,pt)|0,l=l+Math.imul(J,ut)|0,g=g+Math.imul(J,pt)|0,f=f+Math.imul(X,mt)|0,l=l+Math.imul(X,dt)|0,l=l+Math.imul(z,mt)|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 Sr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Sr>>>26)|0,Sr&=67108863,f=Math.imul(tt,ct),l=Math.imul(tt,lt),l=l+Math.imul(et,ct)|0,g=Math.imul(et,lt),f=f+Math.imul(Y,ut)|0,l=l+Math.imul(Y,pt)|0,l=l+Math.imul(Z,ut)|0,g=g+Math.imul(Z,pt)|0,f=f+Math.imul(Q,mt)|0,l=l+Math.imul(Q,dt)|0,l=l+Math.imul(J,mt)|0,g=g+Math.imul(J,dt)|0,f=f+Math.imul(X,ft)|0,l=l+Math.imul(X,ht)|0,l=l+Math.imul(z,ft)|0,g=g+Math.imul(z,ht)|0,f=f+Math.imul(K,gt)|0,l=l+Math.imul(K,yt)|0,l=l+Math.imul($,gt)|0,g=g+Math.imul($,yt)|0,f=f+Math.imul(_,bt)|0,l=l+Math.imul(_,Tt)|0,l=l+Math.imul(F,bt)|0,g=g+Math.imul(F,Tt)|0,f=f+Math.imul(O,St)|0,l=l+Math.imul(O,wt)|0,l=l+Math.imul(P,St)|0,g=g+Math.imul(P,wt)|0;var wr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(wr>>>26)|0,wr&=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,pt)|0,l=l+Math.imul(et,ut)|0,g=g+Math.imul(et,pt)|0,f=f+Math.imul(Y,mt)|0,l=l+Math.imul(Y,dt)|0,l=l+Math.imul(Z,mt)|0,g=g+Math.imul(Z,dt)|0,f=f+Math.imul(Q,ft)|0,l=l+Math.imul(Q,ht)|0,l=l+Math.imul(J,ft)|0,g=g+Math.imul(J,ht)|0,f=f+Math.imul(X,gt)|0,l=l+Math.imul(X,yt)|0,l=l+Math.imul(z,gt)|0,g=g+Math.imul(z,yt)|0,f=f+Math.imul(K,bt)|0,l=l+Math.imul(K,Tt)|0,l=l+Math.imul($,bt)|0,g=g+Math.imul($,Tt)|0,f=f+Math.imul(_,St)|0,l=l+Math.imul(_,wt)|0,l=l+Math.imul(F,St)|0,g=g+Math.imul(F,wt)|0,f=f+Math.imul(O,It)|0,l=l+Math.imul(O,Ct)|0,l=l+Math.imul(P,It)|0,g=g+Math.imul(P,Ct)|0;var Ir=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Ir>>>26)|0,Ir&=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,pt)|0,l=l+Math.imul(ot,ut)|0,g=g+Math.imul(ot,pt)|0,f=f+Math.imul(tt,mt)|0,l=l+Math.imul(tt,dt)|0,l=l+Math.imul(et,mt)|0,g=g+Math.imul(et,dt)|0,f=f+Math.imul(Y,ft)|0,l=l+Math.imul(Y,ht)|0,l=l+Math.imul(Z,ft)|0,g=g+Math.imul(Z,ht)|0,f=f+Math.imul(Q,gt)|0,l=l+Math.imul(Q,yt)|0,l=l+Math.imul(J,gt)|0,g=g+Math.imul(J,yt)|0,f=f+Math.imul(X,bt)|0,l=l+Math.imul(X,Tt)|0,l=l+Math.imul(z,bt)|0,g=g+Math.imul(z,Tt)|0,f=f+Math.imul(K,St)|0,l=l+Math.imul(K,wt)|0,l=l+Math.imul($,St)|0,g=g+Math.imul($,wt)|0,f=f+Math.imul(_,It)|0,l=l+Math.imul(_,Ct)|0,l=l+Math.imul(F,It)|0,g=g+Math.imul(F,Ct)|0,f=f+Math.imul(O,xt)|0,l=l+Math.imul(O,kt)|0,l=l+Math.imul(P,xt)|0,g=g+Math.imul(P,kt)|0;var Cr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Cr>>>26)|0,Cr&=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,pt)|0,l=l+Math.imul(it,ut)|0,g=g+Math.imul(it,pt)|0,f=f+Math.imul(nt,mt)|0,l=l+Math.imul(nt,dt)|0,l=l+Math.imul(ot,mt)|0,g=g+Math.imul(ot,dt)|0,f=f+Math.imul(tt,ft)|0,l=l+Math.imul(tt,ht)|0,l=l+Math.imul(et,ft)|0,g=g+Math.imul(et,ht)|0,f=f+Math.imul(Y,gt)|0,l=l+Math.imul(Y,yt)|0,l=l+Math.imul(Z,gt)|0,g=g+Math.imul(Z,yt)|0,f=f+Math.imul(Q,bt)|0,l=l+Math.imul(Q,Tt)|0,l=l+Math.imul(J,bt)|0,g=g+Math.imul(J,Tt)|0,f=f+Math.imul(X,St)|0,l=l+Math.imul(X,wt)|0,l=l+Math.imul(z,St)|0,g=g+Math.imul(z,wt)|0,f=f+Math.imul(K,It)|0,l=l+Math.imul(K,Ct)|0,l=l+Math.imul($,It)|0,g=g+Math.imul($,Ct)|0,f=f+Math.imul(_,xt)|0,l=l+Math.imul(_,kt)|0,l=l+Math.imul(F,xt)|0,g=g+Math.imul(F,kt)|0,f=f+Math.imul(O,Dt)|0,l=l+Math.imul(O,vt)|0,l=l+Math.imul(P,Dt)|0,g=g+Math.imul(P,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,ut),l=Math.imul(rt,pt),l=l+Math.imul(st,ut)|0,g=Math.imul(st,pt),f=f+Math.imul(at,mt)|0,l=l+Math.imul(at,dt)|0,l=l+Math.imul(it,mt)|0,g=g+Math.imul(it,dt)|0,f=f+Math.imul(nt,ft)|0,l=l+Math.imul(nt,ht)|0,l=l+Math.imul(ot,ft)|0,g=g+Math.imul(ot,ht)|0,f=f+Math.imul(tt,gt)|0,l=l+Math.imul(tt,yt)|0,l=l+Math.imul(et,gt)|0,g=g+Math.imul(et,yt)|0,f=f+Math.imul(Y,bt)|0,l=l+Math.imul(Y,Tt)|0,l=l+Math.imul(Z,bt)|0,g=g+Math.imul(Z,Tt)|0,f=f+Math.imul(Q,St)|0,l=l+Math.imul(Q,wt)|0,l=l+Math.imul(J,St)|0,g=g+Math.imul(J,wt)|0,f=f+Math.imul(X,It)|0,l=l+Math.imul(X,Ct)|0,l=l+Math.imul(z,It)|0,g=g+Math.imul(z,Ct)|0,f=f+Math.imul(K,xt)|0,l=l+Math.imul(K,kt)|0,l=l+Math.imul($,xt)|0,g=g+Math.imul($,kt)|0,f=f+Math.imul(_,Dt)|0,l=l+Math.imul(_,vt)|0,l=l+Math.imul(F,Dt)|0,g=g+Math.imul(F,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,mt),l=Math.imul(rt,dt),l=l+Math.imul(st,mt)|0,g=Math.imul(st,dt),f=f+Math.imul(at,ft)|0,l=l+Math.imul(at,ht)|0,l=l+Math.imul(it,ft)|0,g=g+Math.imul(it,ht)|0,f=f+Math.imul(nt,gt)|0,l=l+Math.imul(nt,yt)|0,l=l+Math.imul(ot,gt)|0,g=g+Math.imul(ot,yt)|0,f=f+Math.imul(tt,bt)|0,l=l+Math.imul(tt,Tt)|0,l=l+Math.imul(et,bt)|0,g=g+Math.imul(et,Tt)|0,f=f+Math.imul(Y,St)|0,l=l+Math.imul(Y,wt)|0,l=l+Math.imul(Z,St)|0,g=g+Math.imul(Z,wt)|0,f=f+Math.imul(Q,It)|0,l=l+Math.imul(Q,Ct)|0,l=l+Math.imul(J,It)|0,g=g+Math.imul(J,Ct)|0,f=f+Math.imul(X,xt)|0,l=l+Math.imul(X,kt)|0,l=l+Math.imul(z,xt)|0,g=g+Math.imul(z,kt)|0,f=f+Math.imul(K,Dt)|0,l=l+Math.imul(K,vt)|0,l=l+Math.imul($,Dt)|0,g=g+Math.imul($,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,ft),l=Math.imul(rt,ht),l=l+Math.imul(st,ft)|0,g=Math.imul(st,ht),f=f+Math.imul(at,gt)|0,l=l+Math.imul(at,yt)|0,l=l+Math.imul(it,gt)|0,g=g+Math.imul(it,yt)|0,f=f+Math.imul(nt,bt)|0,l=l+Math.imul(nt,Tt)|0,l=l+Math.imul(ot,bt)|0,g=g+Math.imul(ot,Tt)|0,f=f+Math.imul(tt,St)|0,l=l+Math.imul(tt,wt)|0,l=l+Math.imul(et,St)|0,g=g+Math.imul(et,wt)|0,f=f+Math.imul(Y,It)|0,l=l+Math.imul(Y,Ct)|0,l=l+Math.imul(Z,It)|0,g=g+Math.imul(Z,Ct)|0,f=f+Math.imul(Q,xt)|0,l=l+Math.imul(Q,kt)|0,l=l+Math.imul(J,xt)|0,g=g+Math.imul(J,kt)|0,f=f+Math.imul(X,Dt)|0,l=l+Math.imul(X,vt)|0,l=l+Math.imul(z,Dt)|0,g=g+Math.imul(z,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,gt),l=Math.imul(rt,yt),l=l+Math.imul(st,gt)|0,g=Math.imul(st,yt),f=f+Math.imul(at,bt)|0,l=l+Math.imul(at,Tt)|0,l=l+Math.imul(it,bt)|0,g=g+Math.imul(it,Tt)|0,f=f+Math.imul(nt,St)|0,l=l+Math.imul(nt,wt)|0,l=l+Math.imul(ot,St)|0,g=g+Math.imul(ot,wt)|0,f=f+Math.imul(tt,It)|0,l=l+Math.imul(tt,Ct)|0,l=l+Math.imul(et,It)|0,g=g+Math.imul(et,Ct)|0,f=f+Math.imul(Y,xt)|0,l=l+Math.imul(Y,kt)|0,l=l+Math.imul(Z,xt)|0,g=g+Math.imul(Z,kt)|0,f=f+Math.imul(Q,Dt)|0,l=l+Math.imul(Q,vt)|0,l=l+Math.imul(J,Dt)|0,g=g+Math.imul(J,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,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,kt)|0,l=l+Math.imul(et,xt)|0,g=g+Math.imul(et,kt)|0,f=f+Math.imul(Y,Dt)|0,l=l+Math.imul(Y,vt)|0,l=l+Math.imul(Z,Dt)|0,g=g+Math.imul(Z,vt)|0;var Mr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Mr>>>26)|0,Mr&=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,kt)|0,l=l+Math.imul(ot,xt)|0,g=g+Math.imul(ot,kt)|0,f=f+Math.imul(tt,Dt)|0,l=l+Math.imul(tt,vt)|0,l=l+Math.imul(et,Dt)|0,g=g+Math.imul(et,vt)|0;var Or=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Or>>>26)|0,Or&=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,kt)|0,l=l+Math.imul(it,xt)|0,g=g+Math.imul(it,kt)|0,f=f+Math.imul(nt,Dt)|0,l=l+Math.imul(nt,vt)|0,l=l+Math.imul(ot,Dt)|0,g=g+Math.imul(ot,vt)|0;var Pr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Pr>>>26)|0,Pr&=67108863,f=Math.imul(rt,xt),l=Math.imul(rt,kt),l=l+Math.imul(st,xt)|0,g=Math.imul(st,kt),f=f+Math.imul(at,Dt)|0,l=l+Math.imul(at,vt)|0,l=l+Math.imul(it,Dt)|0,g=g+Math.imul(it,vt)|0;var Rr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Rr>>>26)|0,Rr&=67108863,f=Math.imul(rt,Dt),l=Math.imul(rt,vt),l=l+Math.imul(st,Dt)|0,g=Math.imul(st,vt);var Br=(C+f|0)+((l&8191)<<13)|0;return C=(g+(l>>>13)|0)+(Br>>>26)|0,Br&=67108863,T[0]=hr,T[1]=gr,T[2]=yr,T[3]=br,T[4]=Tr,T[5]=Sr,T[6]=wr,T[7]=Ir,T[8]=Cr,T[9]=xr,T[10]=kr,T[11]=Dr,T[12]=vr,T[13]=Ar,T[14]=Mr,T[15]=Or,T[16]=Pr,T[17]=Rr,T[18]=Br,C!==0&&(T[19]=C,p.length++),p};Math.imul||(U=L);function q(y,r,u){u.negative=r.negative^y.negative,u.length=y.length+r.length;for(var p=0,d=0,h=0;h<u.length-1;h++){var T=d;d=0;for(var C=p&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,p=T,T=d}return p!==0?u.words[h]=p:u.length--,u._strip()}function Mt(y,r,u){return q(y,r,u)}o.prototype.mulTo=function(r,u){var p,d=this.length+r.length;return this.length===10&&r.length===10?p=U(this,r,u):d<63?p=L(this,r,u):d<1024?p=q(this,r,u):p=Mt(this,r,u),p};function W(y,r){this.x=y,this.y=r}W.prototype.makeRBT=function(r){for(var u=new Array(r),p=o.prototype._countBits(r)-1,d=0;d<r;d++)u[d]=this.revBin(d,p,r);return u},W.prototype.revBin=function(r,u,p){if(r===0||r===p-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,p,d,h,T){for(var C=0;C<T;C++)d[C]=u[r[C]],h[C]=p[r[C]]},W.prototype.transform=function(r,u,p,d,h,T){this.permute(T,r,u,p,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 _=p[v+B],F=d[v+B],ie=p[v+B+C],K=d[v+B+C],$=O*ie-P*K;K=O*K+P*ie,ie=$,p[v+B]=_+ie,d[v+B]=F+K,p[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 p=Math.max(u,r)|1,d=p&1,h=0;for(p=p/2|0;p;p=p>>>1)h++;return 1<<h+1+d},W.prototype.conjugate=function(r,u,p){if(!(p<=1))for(var d=0;d<p/2;d++){var h=r[d];r[d]=r[p-d-1],r[p-d-1]=h,h=u[d],u[d]=-u[p-d-1],u[p-d-1]=-h}},W.prototype.normalize13b=function(r,u){for(var p=0,d=0;d<u/2;d++){var h=Math.round(r[2*d+1]/u)*8192+Math.round(r[2*d]/u)+p;r[d]=h&67108863,h<67108864?p=0:p=h/67108864|0}return r},W.prototype.convert13b=function(r,u,p,d){for(var h=0,T=0;T<u;T++)h=h+(r[T]|0),p[2*T]=h&8191,h=h>>>13,p[2*T+1]=h&8191,h=h>>>13;for(T=2*u;T<d;++T)p[T]=0;t(h===0),t((h&-8192)===0)},W.prototype.stub=function(r){for(var u=new Array(r),p=0;p<r;p++)u[p]=0;return u},W.prototype.mulp=function(r,u,p){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=p.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),p.negative=r.negative^u.negative,p.length=r.length+u.length,p._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 p=0,d=0;d<this.length;d++){var h=(this.words[d]|0)*r,T=(h&67108863)+(p&67108863);p>>=26,p+=h/67108864|0,p+=T>>>26,this.words[d]=T&67108863}return p!==0&&(this.words[d]=p,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 p=this,d=0;d<u.length&&u[d]===0;d++,p=p.sqr());if(++d<u.length)for(var h=p.sqr();d<u.length;d++,h=h.sqr())u[d]!==0&&(p=p.mul(h));return p},o.prototype.iushln=function(r){t(typeof r=="number"&&r>=0);var u=r%26,p=(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(p!==0){for(h=this.length-1;h>=0;h--)this.words[h+p]=this.words[h];for(h=0;h<p;h++)this.words[h]=0;this.length+=p}return this._strip()},o.prototype.ishln=function(r){return t(this.negative===0),this.iushln(r)},o.prototype.iushrn=function(r,u,p){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=p;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,p){return t(this.negative===0),this.iushrn(r,u,p)},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,p=(r-u)/26,d=1<<u;if(this.length<=p)return!1;var h=this.words[p];return!!(h&d)},o.prototype.imaskn=function(r){t(typeof r=="number"&&r>=0);var u=r%26,p=(r-u)/26;if(t(this.negative===0,"imaskn works only with positive numbers"),this.length<=p)return this;if(u!==0&&p++,this.length=Math.min(p,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,p){var d=r.length+p,h;this._expand(d);var T,C=0;for(h=0;h<r.length;h++){T=(this.words[h+p]|0)+C;var f=(r.words[h]|0)*u;T-=f&67108863,C=(T>>26)-(f/67108864|0),this.words[h+p]=T&67108863}for(;h<this.length-p;h++)T=(this.words[h+p]|0)+C,C=T>>26,this.words[h+p]=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 p=this.length-r.length,d=this.clone(),h=r,T=h.words[h.length-1]|0,C=this._countBits(T);p=26-C,p!==0&&(h=h.ushln(p),d.iushln(p),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"&&p!==0&&d.iushrn(p),{div:l||null,mod:d}},o.prototype.divmod=function(r,u,p){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(),p&&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(),p&&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 p=u.div.negative!==0?u.mod.isub(r):u.mod,d=r.ushrn(1),h=r.andln(1),T=p.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 p=(1<<26)%r,d=0,h=this.length-1;h>=0;h--)d=(p*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 p=0,d=this.length-1;d>=0;d--){var h=(this.words[d]|0)+p*67108864;this.words[d]=h/r|0,p=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,p=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()&&p.isEven();)u.iushrn(1),p.iushrn(1),++f;for(var l=p.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;(p.words[0]&B)===0&&P<26;++P,B<<=1);if(P>0)for(p.iushrn(P);P-- >0;)(T.isOdd()||C.isOdd())&&(T.iadd(l),C.isub(g)),T.iushrn(1),C.iushrn(1);u.cmp(p)>=0?(u.isub(p),d.isub(T),h.isub(C)):(p.isub(u),T.isub(d),C.isub(h))}return{a:T,b:C,gcd:p.iushln(f)}},o.prototype._invmp=function(r){t(r.negative===0),t(!r.isZero());var u=this,p=r.clone();u.negative!==0?u=u.umod(r):u=u.clone();for(var d=new o(1),h=new o(0),T=p.clone();u.cmpn(1)>0&&p.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;(p.words[0]&g)===0&&l<26;++l,g<<=1);if(l>0)for(p.iushrn(l);l-- >0;)h.isOdd()&&h.iadd(T),h.iushrn(1);u.cmp(p)>=0?(u.isub(p),d.isub(h)):(p.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(),p=r.clone();u.negative=0,p.negative=0;for(var d=0;u.isEven()&&p.isEven();d++)u.iushrn(1),p.iushrn(1);do{for(;u.isEven();)u.iushrn(1);for(;p.isEven();)p.iushrn(1);var h=u.cmp(p);if(h<0){var T=u;u=p,p=T}else if(h===0||p.cmpn(1)===0)break;u.isub(p)}while(!0);return p.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,p=(r-u)/26,d=1<<u;if(this.length<=p)return this._expand(p+1),this.words[p]|=d,this;for(var h=d,T=p;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 p;if(this.length>1)p=1;else{u&&(r=-r),t(r<=67108863,"Number is too big");var d=this.words[0]|0;p=d===r?0:d<r?-1:1}return this.negative!==0?-p|0:p},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,p=this.length-1;p>=0;p--){var d=this.words[p]|0,h=r.words[p]|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 xe={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,p;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),p=u.bitLength();while(p>this.n);var d=p<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 ke(){Rt.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(ke,Rt),ke.prototype.split=function(r,u){for(var p=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&p,h=10;h<r.length;h++){var C=r.words[h]|0;r.words[h-10]=(C&p)<<4|T>>>22,T=C}T>>>=22,r.words[h-10]=T,T===0&&r.length>10?r.length-=10:r.length-=9},ke.prototype.imulK=function(r){r.words[r.length]=0,r.words[r.length+1]=0,r.length+=2;for(var u=0,p=0;p<r.length;p++){var d=r.words[p]|0;u+=d*977,r.words[p]=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 xn(){Rt.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}n(xn,Rt);function kn(){Rt.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}n(kn,Rt);function He(){Rt.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}n(He,Rt),He.prototype.imulK=function(r){for(var u=0,p=0;p<r.length;p++){var d=(r.words[p]|0)*19+u,h=d&67108863;d>>>=26,r.words[p]=h,u=d}return u!==0&&(r.words[r.length++]=u),r},o._prime=function(r){if(xe[r])return xe[r];var u;if(r==="k256")u=new ke;else if(r==="p224")u=new xn;else if(r==="p192")u=new kn;else if(r==="p25519")u=new He;else throw new Error("Unknown prime "+r);return xe[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 p=r.add(u);return p.cmp(this.m)>=0&&p.isub(this.m),p._forceRed(this)},H.prototype.iadd=function(r,u){this._verify2(r,u);var p=r.iadd(u);return p.cmp(this.m)>=0&&p.isub(this.m),p},H.prototype.sub=function(r,u){this._verify2(r,u);var p=r.sub(u);return p.cmpn(0)<0&&p.iadd(this.m),p._forceRed(this)},H.prototype.isub=function(r,u){this._verify2(r,u);var p=r.isub(u);return p.cmpn(0)<0&&p.iadd(this.m),p},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 p=this.m.add(new o(1)).iushrn(2);return this.pow(r,p)}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 p=4,d=new Array(1<<p);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!==p&&(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 p=r.imul(u),d=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=p.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 p=r.mul(u),d=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=p.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 Is>"u"||Is,jl)});import{TransactionType as Ou}from"@msafe/sui3-utils";import{coinsList as wu,poolIdPoolNameMap as Iu,poolInfo as Ks,singleAssetPoolCoinMap as Cu}from"@alphafi/alphafi-sdk";import{TransactionType as Ge}from"@msafe/sui3-utils";import{bcs as Dn,fromBase64 as vn}from"@mysten/bcs";var An=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&&Ks[t].assetTypes.length===2}isSingleAssetDepositEvent(e,t){return e.event_type===0&&Ks[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=Dn.u64().parse(vn(t)):t.length===24?n=Dn.u128().parse(vn(t)):t.length===44?n=Dn.u256().parse(vn(t)):n=Dn.u64().parse(vn(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:Ge.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:Ge.Other,type:"depositSingleAsset",intentionData:{poolName:e,amount:n}}}decodeWithdraw(e){let t=this.extractXTokensAmount();return console.log("Decoder.decodeWithdraw",t),{txType:Ge.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:Ge.Other,type:"withdrawAlpha",intentionData:{withdrawFromLocked:Number(n)>0,xTokensAmount:t}}}decodeClaimReward(){return{txType:Ge.Other,type:"claimReward",intentionData:{}}}};import{claimRewardTxb as ku}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 Mn=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t;return await ku(n.address)}static fromData(t){return new a(t)}};import{depositDoubleAssetTxb as Du}from"@alphafi/alphafi-sdk";var On=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 Du(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 Pn=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 Rn=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 Bn=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 En=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 An(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=Pn.fromData(e.intentionData);break;case"depositDoubleAsset":n=On.fromData(e.intentionData);break;case"withdraw":n=Rn.fromData(e.intentionData);break;case"withdrawAlpha":n=Bn.fromData(e.intentionData);break;case"claimReward":n=Mn.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 Nr}from"@mysten/sui/bcs";import{SBUCK_FOUNTAIN_PACKAGE_ID as Wr}from"bucket-protocol-sdk";var Nn=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(Wr,"fountain_core","stake")}isSBUCKUnstakeTransaction(){return!!this.getMoveCallPackageModuleCommand(Wr,"fountain_core","force_unstake")}isSBUCKClaimTransaction(){return!!this.getMoveCallPackageModuleCommand(Wr,"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 m=c.arguments[1];m.$kind==="Input"&&(t=this.getPureInputU64(m.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 m=c.arguments[4];m.$kind==="Input"&&(t=this.getPureInputU64(m.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 m=c.arguments[5];m.$kind==="Input"&&(t=this.getPureInputU64(m.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 m=c.arguments[4];m.$kind==="Input"&&(n=this.getPureInputU64(m.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 m=c.arguments[5];m.$kind==="Input"&&(n=this.getPureInputU64(m.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 m=this.getPureAddresses(c.Input);m.length===1&&([n]=m)}}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 m=this.getPureAddresses(c.Input);m.length===1&&([n]=m)}}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 m=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];m.$kind==="Input"&&(e=this.getPureInputU64(m.Input))}let n=[],o=this.getMoveCallModuleCommands("proof_rule","unlock");if(o.length>0)for(let c=0;c<o.length;c++){let m=o[c];n.push("")}else{let c=this.getMoveCallModuleCommands("fountain_core","force_unstake");for(let m=0;m<c.length;m++){let S=c[m].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 Nr.U64.fromBase64(t.Pure.bytes)}getPureAddresses(e){let t=this.inputs[e];if(t.$kind!=="Pure")throw new Error("not pure argument");return Nr.vector(Nr.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 Vs=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 _n=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 Vs(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as ju}from"@msafe/sui3-utils";import{Transaction as Ln}from"@mysten/sui/transactions";import{buildBorrowTx as Nu,buildCloseTx as Wu,buildRepayTx as _u,buildWithdrawTx as Lu}from"bucket-protocol-sdk";var $s=async(a,e,t)=>{let{collateralType:n,collateralAmount:o,borrowAmount:i,insertionPlace:s,strapId:c}=a,m=new Ln,b=Bt(t,e);return await Nu(b,m,n,o,i,e.address,s,c),m},Hs=async(a,e,t)=>{let{collateralType:n,withdrawAmount:o,insertionPlace:i,strapId:s}=a,c=new Ln,m=Bt(t,e);return await Lu(m,c,n,o,e.address,i,s),c},Gs=async(a,e,t)=>{let{collateralType:n,repayAmount:o,withdrawAmount:i,isSurplus:s,insertionPlace:c,strapId:m}=a,b=new Ln,S=Bt(t,e);return await _u(S,b,n,o,i,e.address,s,c,m),b},Xs=async(a,e,t)=>{let{collateralType:n,recipient:o,strapId:i}=a,s=new Ln,c=Bt(t,e);return await Wu(c,s,n,o,i),s};var jn=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 $s(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Uu}from"@msafe/sui3-utils";var Un=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 Gs(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as qu}from"@msafe/sui3-utils";var qn=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 Hs(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Fu}from"@msafe/sui3-utils";var Fn=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 Xs(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Xn}from"@msafe/sui3-utils";import{Transaction as Kn}from"@mysten/sui/transactions";import{buildSBUCKClaimTx as Ku,buildSBUCKDepositTx as Vu,buildSBUCKUnstakeTx as $u,buildSBUCKWithdrawTx as Hu}from"bucket-protocol-sdk";var zs=async(a,e,t)=>{let{coinType:n,amount:o,isStake:i}=a,s=new Kn,c=Bt(t,e);return await Vu(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 Kn,m=Bt(t,e);return await $u(m,c,n,o,e.address,i,s),c},Js=async(a,e,t)=>{let{amount:n}=a,o=new Kn,i=Bt(t,e);return await Hu(i,o,n,e.address),o},Ys=async(a,e,t)=>{let{stakeProofs:n}=a,o=new Kn,i=Bt(t,e);return await Ku(i,o,n,e.address),o};var Vn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Xn.Other;txSubType="sbuck-deposit";async build(t){let{account:n,network:o}=t;return await zs(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=Xn.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)}},Hn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Xn.Other;txSubType="sbuck-withdraw";async build(t){let{account:n,network:o}=t;return await Js(this.data,n,o)}static fromData(t){return new a(t)}},Gn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Xn.Other;txSubType="sbuck-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 Lr}from"@msafe/sui3-utils";import{Transaction as _r}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 _r,s=Bt(t,e);return await Xu(s,i,n,o,e.address),i},tc=async(a,e,t)=>{let{coinType:n,amount:o}=a,i=new _r,s=Bt(t,e);return await zu(s,i,n,o,e.address),i},ec=async(a,e,t)=>{let{coinType:n}=a,o=new _r,i=Bt(t,e);return await Gu(i,o,n,e.address),o};import{Transaction as Qu}from"@mysten/sui/transactions";import{buildLockedClaimTx as Ju}from"bucket-protocol-sdk";var nc=async(a,e,t)=>{let{coinType:n,proofCount:o}=a,i=new Qu,s=Bt(t,e);return await Ju(s,i,n,o,e.address),i};var zn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Lr.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)}},Qn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Lr.Other;txSubType="tank-withdraw";async build(t){let{account:n,network:o}=t;return await tc(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=Lr.Other;txSubType="tank-claim";async build(t){let{account:n,network:o}=t;return await ec(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Yu}from"@msafe/sui3-utils";var Yn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Yu.Other;txSubType="lock-claim";async build(t){let{account:n,network:o}=t;return await nc(this.data,n,o)}static fromData(t){return new a(t)}};var Zn=class{application="bucket";supportSDK="@mysten/sui";async deserialize(e){console.log("Bucket helper deserialize input: ",e);let{transaction:t}=e,o=new Nn(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=_n.fromData(e.intentionData);break;case"borrow":i=jn.fromData(e.intentionData);break;case"withdraw":i=qn.fromData(e.intentionData);break;case"repay":i=Un.fromData(e.intentionData);break;case"close":i=Fn.fromData(e.intentionData);break;case"tank-deposit":i=zn.fromData(e.intentionData);break;case"tank-withdraw":i=Qn.fromData(e.intentionData);break;case"tank-claim":i=Jn.fromData(e.intentionData);break;case"sbuck-deposit":i=Vn.fromData(e.intentionData);break;case"sbuck-unstake":i=$n.fromData(e.intentionData);break;case"sbuck-withdraw":i=Hn.fromData(e.intentionData);break;case"sbuck-claim":i=Gn.fromData(e.intentionData);break;case"lock-claim":i=Yn.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};import{TransactionType as Rp}from"@msafe/sui3-utils";import{TransactionType as np}from"@msafe/sui3-utils";import{SuiJsonRpcClient as he,isSuiJsonRpcClient as xb,JsonRpcHTTPTransport as kb,getJsonRpcFullnodeUrl as ge}from"@mysten/sui/jsonRpc";var tp={"sui:mainnet":"mainnet","sui:testnet":"testnet","sui:devnet":"devnet","sui:localnet":"localnet"};function Xe(a){return tp[a]}var Gt=async(a,e)=>{let{CetusClmmSDK:t}=await import("@cetusprotocol/sui-clmm-sdk"),n=t.createSDK({env:"mainnet",sui_client:new he({url:ge("mainnet"),network:"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 he({url:ge("mainnet"),network:"mainnet"})});return n.setSenderAddress(e.address),n},ep="https://api-sui.cetus.zone/router_v2/find_routes",oc=async(a,e)=>{let{AggregatorClient:t,Env:n}=await import("@cetusprotocol/aggregator-sdk"),o=new he({url:"https://fullnode.mainnet.sui.io/",network:"mainnet"});return new t({endpoint:ep,signer:e.address,client:o,env:n.Mainnet})},ze=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 ac=async(a,e,t)=>await(await Gt(t,e)).Pool.createPoolPayload(a),ic=async(a,e,t)=>await(await Gt(t,e)).Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg),rc=async(a,e,t)=>await(await Gt(t,e)).Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg),sc=async(a,e,t)=>await(await Gt(t,e)).Position.closePositionPayload(a),cc=async(a,e,t)=>await(await Gt(t,e)).Position.removeLiquidityPayload(a),lc=async(a,e,t)=>await(await Gt(t,e)).Rewarder.collectRewarderPayload(a);var to=class a extends w{constructor(t){super(t);this.data=t}data;txType=np.Other;txSubType="OpenAndAddLiquidity";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 op}from"@msafe/sui3-utils";var eo=class a extends w{constructor(t){super(t);this.data=t}data;txType=op.Other;txSubType="ClaimFeeAndMining";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 ap}from"@msafe/sui3-utils";var no=class a extends w{constructor(t){super(t);this.data=t}data;txType=ap.Other;txSubType="CreatePool";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 ip}from"@msafe/sui3-utils";var oo=class a extends w{constructor(t){super(t);this.data=t}data;txType=ip.Other;txSubType="DecreaseLiquidity";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 rp}from"@msafe/sui3-utils";var uc=async(a,e,t)=>await(await Ut(t,e)).Farms.openPositionAddLiquidityStakePayload(a),pc=async(a,e,t)=>await(await Ut(t,e)).Farms.addLiquidityFixCoinPayload(a),mc=async(a,e,t)=>await(await Ut(t,e)).Farms.removeLiquidityPayload(a);var dc=async(a,e,t)=>await(await Ut(t,e)).Farms.removeLiquidityPayload(a),fc=async(a,e,t)=>await(await Ut(t,e)).Farms.claimFeeAndClmmReward(a),hc=async(a,e,t)=>await(await Ut(t,e)).Farms.harvestPayload(a),gc=async(a,e,t)=>{let n=await Ut(t,e),o=Object.values(a);return await n.Farms.batchHarvestPayload(o)},yc=async(a,e,t)=>await(await Ut(t,e)).Farms.depositPayload(a),bc=async(a,e,t)=>await(await Ut(t,e)).Farms.withdrawPayload(a);var ao=class a extends w{constructor(t){super(t);this.data=t}data;txType=rp.Other;txSubType="FarmingOpenAndAddLiquidity";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 sp}from"@msafe/sui3-utils";var io=class a extends w{constructor(t){super(t);this.data=t}data;txType=sp.Other;txSubType="FarmingBatchHarvest";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 cp}from"@msafe/sui3-utils";var ro=class a extends w{constructor(t){super(t);this.data=t}data;txType=cp.Other;txSubType="FarmingClaimFeeAndReward";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 lp}from"@msafe/sui3-utils";var so=class a extends w{constructor(t){super(t);this.data=t}data;txType=lp.Other;txSubType="FarmingDecreaseLiquidity";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 up}from"@msafe/sui3-utils";var co=class a extends w{constructor(t){super(t);this.data=t}data;txType=up.Other;txSubType="FarmingHarvest";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 pp}from"@msafe/sui3-utils";var lo=class a extends w{constructor(t){super(t);this.data=t}data;txType=pp.Other;txSubType="FarmingIncreaseLiquidity";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 mp}from"@msafe/sui3-utils";var uo=class a extends w{constructor(t){super(t);this.data=t}data;txType=mp.Other;txSubType="FarmingRemoveLiquidity";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 dp}from"@msafe/sui3-utils";var po=class a extends w{constructor(t){super(t);this.data=t}data;txType=dp.Other;txSubType="FarmingStake";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 fp}from"@msafe/sui3-utils";var mo=class a extends w{constructor(t){super(t);this.data=t}data;txType=fp.Other;txSubType="FarmingUnstake";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 hp}from"@msafe/sui3-utils";var fo=class a extends w{constructor(t){super(t);this.data=t}data;txType=hp.Other;txSubType="IncreaseLiquidity";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 Tp}from"@msafe/sui3-utils";var ho=async()=>{let{Transaction:a}=await import("@mysten/sui/transactions");return new a},gp=async(a,e,t)=>{let n=await ze(t,e),o=await ho();return o.setSender(e.address),n.Vest.buildRedeemPayload(a.params,o),o},yp=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 ho();return i.setSender(e.address),await o?.Vest.buildRedeemPayload(a.params,i),i},Tc=async(a,e,t)=>{let n=await Gt(t,e),o=await ho();return n?.Vest.buildRedeemPayload(a.params,o),o},bp=async(a,e,t)=>{let n=await Gt(t,e),o=await Ut(t,e),i=await ho(),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},Sc=async(a,e,t)=>a.type==="clmm"?Tc(a,e,t):a.type==="farms"?bp(a,e,t):a.type==="vaults"?gp(a,e,t):a.type==="haedalVaults"?yp(a,e):Tc(a,e,t);var go=class a extends w{constructor(t){super(t);this.data=t}data;txType=Tp.Other;txSubType="PosVestingRedeem";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 Sp}from"@msafe/sui3-utils";var yo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Sp.Other;txSubType="RemoveLiquidity";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 Ip}from"@msafe/sui3-utils";import{Transaction as wp}from"@mysten/sui/transactions";var wc=async(a,e,t)=>{let{restituteMsafeFastRouterSwapParams:n}=await import("@cetusprotocol/aggregator-sdk"),o=await oc(t,e),i=new wp;return await o.fastRouterSwap({...a,router:n(a.router),txb:i}),i};var bo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Ip.Other;txSubType="AggregatorSwap";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 Cp}from"@msafe/sui3-utils";import{Transaction as Ic}from"@mysten/sui/transactions";var Cc=async(a,e,t)=>{let n=await ze(t,e),o=new Ic;return o.setSender(e.address),await n.Vaults.deposit(a,o),o},xc=async(a,e,t)=>{let n=await ze(t,e),o=new Ic;return await n.Vaults.withdraw(a,o),o};var To=class a extends w{constructor(t){super(t);this.data=t}data;txType=Cp.Other;txSubType="AddVaultsPosition";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 xp}from"@msafe/sui3-utils";var So=class a extends w{constructor(t){super(t);this.data=t}data;txType=xp.Other;txSubType="RemoveVaultsPosition";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 Dp}from"@msafe/sui3-utils";import{Transaction as kp}from"@mysten/sui/transactions";var kc={package_id:"0x355714a1eeb7ab1d80902da6c92001170cda1212edf524c32aa308a3ac177c31",published_at:"0x355714a1eeb7ab1d80902da6c92001170cda1212edf524c32aa308a3ac177c31",cetus_coin_type:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS"},Dc=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 kp;return i.forEach(m=>{c.moveCall({target:`${kc.published_at}::router::redeem`,typeArguments:[kc.cetus_coin_type],arguments:[c.object(n),c.object(o),c.pure(m),c.object(s)]})}),c};var wo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Dp.Other;txSubType="VestingRedeem";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 vp}from"@msafe/sui3-utils";var vc=async(a,e,t)=>await(await De(t,e)).XCetusModule.convertPayload(a),Ac=async(a,e,t)=>await(await De(t,e)).XCetusModule.redeemLockPayload(a),Mc=async(a,e,t)=>await(await De(t,e)).XCetusModule.redeemDividendV3Payload(a.veNftId,a.rewardList),Oc=async(a,e,t)=>await(await De(t,e)).XCetusModule.cancelRedeemPayload(a),Pc=async(a,e,t)=>await(await De(t,e)).XCetusModule.redeemPayload(a);var Io=class a extends w{constructor(t){super(t);this.data=t}data;txType=vp.Other;txSubType="xCETUSCancelRedeem";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 Ap}from"@msafe/sui3-utils";var Co=class a extends w{constructor(t){super(t);this.data=t}data;txType=Ap.Other;txSubType="xCETUSClaimStakingRwewards";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 Mp}from"@msafe/sui3-utils";var xo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Mp.Other;txSubType="xCETUSConvert";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 Op}from"@msafe/sui3-utils";var ko=class a extends w{constructor(t){super(t);this.data=t}data;txType=Op.Other;txSubType="xCETUSRedeem";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 Pp}from"@msafe/sui3-utils";var Do=class a extends w{constructor(t){super(t);this.data=t}data;txType=Pp.Other;txSubType="xCETUSRedeemLock";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)}};var vo=class{application="cetus";supportSDK="@mysten/sui";async deserialize(e){console.log("Cetus helper deserialize input: ",e);let{txbParams:t,action:n}=e;return{txType:Rp.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=to.fromData(e.intentionData);break;case"IncreaseLiquidity":i=fo.fromData(e.intentionData);break;case"DecreaseLiquidity":i=oo.fromData(e.intentionData);break;case"RemoveLiquidity":i=yo.fromData(e.intentionData);break;case"ClaimFeeAndMining":i=eo.fromData(e.intentionData);break;case"FarmingOpenAndAddLiquidity":i=ao.fromData(e.intentionData);break;case"FarmingIncreaseLiquidity":i=lo.fromData(e.intentionData);break;case"FarmingDecreaseLiquidity":i=so.fromData(e.intentionData);break;case"FarmingRemoveLiquidity":i=uo.fromData(e.intentionData);break;case"FarmingClaimFeeAndReward":i=ro.fromData(e.intentionData);break;case"FarmingHarvest":i=co.fromData(e.intentionData);break;case"FarmingBatchHarvest":i=io.fromData(e.intentionData);break;case"FarmingStake":i=po.fromData(e.intentionData);break;case"FarmingUnstake":i=mo.fromData(e.intentionData);break;case"xCETUSConvert":i=xo.fromData(e.intentionData);break;case"xCETUSRedeemLock":i=Do.fromData(e.intentionData);break;case"xCETUSClaimStakingRwewards":i=Co.fromData(e.intentionData);break;case"xCETUSCancelRedeem":i=Io.fromData(e.intentionData);break;case"xCETUSRedeem":i=ko.fromData(e.intentionData);break;case"VestingRedeem":i=wo.fromData(e.intentionData);break;case"AggregatorSwap":i=bo.fromData(e.intentionData);break;case"AddVaultsPosition":i=To.fromData(e.intentionData);break;case"RemoveVaultsPosition":i=So.fromData(e.intentionData);break;case"PosVestingRedeem":i=go.fromData(e.intentionData);break;case"CreatePool":i=no.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};import{TransactionType as Om}from"@msafe/sui3-utils";import Bp from"sort-keys-recursive";var Xt=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify(Bp(this.data))}};import{getFullnodeUrl as Ao}from"@mysten/sui.js/client";var jr={};Fs(jr,{contractId:()=>Wp,default:()=>qp,feeObjId:()=>jp,roleObjId:()=>_p,status:()=>Np,transaction:()=>Ep,upgradeCapObjId:()=>Up,vaultObjId:()=>Lp});var Ep="DiBZq4UmVVYiRL6ZJmFKYoHcxtxqrhsCXSkFyT7wUr3j",Np="success",Wp="0x81c960dc653975fbd0072deca8afb92d322898c911622898ba1b2e3ad0c4bd8d",_p="0xc6ec0bdee0bb59a72077e9acd2f42457043cf47080b3d3fad4d39abf28bba63a",Lp="0xbc4021387fbac149119fd24e92be9e58f745774292f3a2a12e2ac6daf5363e1d",jp="0x4178f63970fe2daeb256dc5730ad172e82b3e8eb45f31b33e0daae72cd35e1e1",Up="0xe1e9aa7d222d151bfe6dd83358b0d7fdcb11260f710800cfaf7ccc1b1e245115",qp={transaction:Ep,status:Np,contractId:Wp,roleObjId:_p,vaultObjId:Lp,feeObjId:jp,upgradeCapObjId:Up};var Ur={};Fs(Ur,{contractId:()=>Vp,default:()=>zp,feeObjId:()=>Gp,roleObjId:()=>$p,status:()=>Kp,transaction:()=>Fp,upgradeCapObjId:()=>Xp,vaultObjId:()=>Hp});var Fp="855FNDV8o8Z3fWULPnQo9qdhLJpsg7wZrkCpNyfw9KfB",Kp="success",Vp="0xc357c3985e8fb875d6b37141497af660779aa1bab0ec489b2213efd74067d1fa",$p="0x5ab49bdf9fd1413e328ef242b3f8d83dde791b38a0b627bfc87fb25c010d34f1",Hp="0xb483558770d8eb26007f193b75db40f0a45f2e36863a687625885d4de6993378",Gp="0x48453fc4d7cde3fe35aad89e5dfb496608a6a55ea529a1c0274681a808627f94",Xp="0x34279779a0d0d36bd5044b04830d607fa1b0ecf316548c8ac3a44151e4f1a42a",zp={transaction:Fp,status:Kp,contractId:Vp,roleObjId:$p,vaultObjId:Hp,feeObjId:Gp,upgradeCapObjId:Xp};var Qp=Ao("testnet"),Jp=Ao("testnet"),Yp=Ao("mainnet"),Zp=Ao("mainnet"),tm="https://bc3p6l5unl.execute-api.us-west-1.amazonaws.com/prod",em="https://rolsbkota7.execute-api.us-west-1.amazonaws.com/prod",nm="https://6p6mkx33ne.execute-api.us-west-1.amazonaws.com/prod",om="https://xrae3mrjv5.execute-api.us-west-1.amazonaws.com/prod",Rc=jr,Bc=Ur,am=new Map([["dev",{env:"dev",rpc:{url:Qp},backend:{url:tm},contract:Rc}],["stg",{env:"stg",rpc:{url:Jp},backend:{url:em},contract:Rc}],["prev",{env:"prev",rpc:{url:Yp},backend:{url:nm},contract:Bc}],["prod",{env:"prod",rpc:{url:Zp},backend:{url:om},contract:Bc}]]);function Ec(a,e){let t=am.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 rm}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 Mo=class extends j{constructor(){super(11,"Backend is not specified")}};var Oo=class extends j{constructor(){super(1,"Wallet not connected")}};import Ae,{AxiosError as im}from"axios";var ve=class extends j{constructor(e,t){super(10,e,{context:t})}};var Po=class a{constructor(e){this.apiURL=e}apiURL;static parseResponseData(e){if(e instanceof im)throw new ve(e.response?.statusText);if(e.status===200){if(e.data.success)return e.data.data;throw new ve(e.data.code)}throw new ve(e.status.toString())}async getIncomingStreams(e,t){let n=await Ae.post(`${this.apiURL}/stream`,{recipient:e,...t});return a.parseResponseData(n)}async getOutgoingStreams(e,t){let n=await Ae.post(`${this.apiURL}/stream`,{sender:e,...t});return a.parseResponseData(n)}async getStreamHistory(e){let t=await Ae.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 Ae.post(`${this.apiURL}/stream-info`,{address:e});return a.parseResponseData(t)}async getAllRecipients(e,t){let n=await Ae.post(`${this.apiURL}/stream-info`,{sender:e,status:t});return a.parseResponseData(n)}async getAllSenders(e,t){let n=await Ae.post(`${this.apiURL}/stream-info`,{recipient:e,status:t});return a.parseResponseData(n)}};var Me=class a{signer;suiClient;envConfig;_backend;constructor(e){this.envConfig=e,this.suiClient=new rm({url:e.rpc.url}),e.backend&&(this._backend=new Po(e.backend.url))}static new(e,t){let n=Ec(e,t);return new a(n)}get walletType(){return this.wallet?this.wallet.type:"disconnected"}get backend(){if(!this._backend)throw new Mo;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 Oo;return this.signer}async walletAddress(){return this.wallet.address()}};import{SUI_TYPE_ARG as vm,normalizeStructTag as Am,normalizeSuiAddress as al}from"@mysten/sui.js/utils";import{TransactionBlock as _o}from"@mysten/sui.js/transactions";import{TransactionBlock as Kc}from"@mysten/sui.js/transactions";import{SUI_TYPE_ARG as Vc,normalizeStructTag as um}from"@mysten/sui.js/utils";var qr=50n,Ro=10000n,Nc=25n,Fr=100000000n;var zt=class{constructor(e){this.object=e}object;moveArg(e){return e.object(this.object)}},Qe=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 Wc}from"buffer";import{normalizeSuiAddress as sm}from"@mysten/sui.js/utils";var Je=class extends j{constructor(e,t){super(3,e,{context:t})}};var Bo=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 Je("Invalid contract return type.",{ctx:{expectType:"address",gotType:o}});return sm(Wc.from(n).toString("hex"))}getU64(e=0,t=0){let[n,o]=this.getValue(e,t);if(o!=="u64")throw new Je("Invalid contract return type.",{ctx:{expectType:"u64",gotType:o}});return Wc.from(n).readBigInt64LE()}};import{bcs as Lc}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 jc={groupId:"string",name:"string"},cm=64;function Uc(a){return qc(a),Lc.ser(jc,a).toString("base64")}function Ye(a){let e=Lc.de(jc,a,"base64");return qc(e),e}function qc(a){if(!_c(a.name))throw new G("Invalid metadata: Name contains unknown character");if(!_c(a.groupId))throw new G("Invalid metadata: Group ID contains unknown character");if(a.name.length>cm)throw new G("Invalid metadata: Name exceed max length 64")}function _c(a){return/^[\x00-\x7F]+$/.test(a)}import{normalizeStructTag as Eo}from"@mysten/sui.js/utils";function No(a,e){return Eo(a)===Eo(e)}function le(a,e){return Eo(a)===Eo(e)}var Wo="txn.gas";import{nanoid as lm}from"nanoid";function Fc(){return lm()}var ye=class a{constructor(e,t,n){this.globals=e;this.feeContract=t;this.streamContract=n}globals;feeContract;streamContract;static convertCreateStreamInfoToInternal(e){return{metadata:Uc({name:e.name,groupId:Fc()}),coinType:um(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 Kc,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 m=0;m<e.recipients.length;m++){let b=e.recipients[m],S=this.amountForRecipient(b,e.numberEpoch),I=this.getStreamFeeLocal(S),[x]=t.splitCoins(s,[t.pure(S+I,"u64")]),[k]=t.splitCoins(c,[t.pure(this.flatSuiFee,"u64")]);this.streamContract.createStream(t,{paymentCoin:new ce(x),flatFeeCoin:new ce(k),metadata:e.metadata,recipient:b.address,timeStart:e.startTime,cliff:b.cliffAmount,epochInterval:e.epochInterval,numEpoch:e.numberEpoch,amountPerEpoch:b.amountPerEpoch,cancelable:e.cancelable,coinType:e.coinType})}return t}calculateCreateStreamFees(e){let t=a.convertCreateStreamInfoToInternal(e);return this.calculateFeesInternal(t)}feeParams(){return{createFeePercent:{numerator:qr,denominator:Ro},claimFeePercent:{numerator:Nc,denominator:Ro},flatFeePerStream:Fr}}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===Wo?n=e.gas:n=e.object(t.primaryCoin),n}getCreateStreamCoinRequests(e,t){let n=e.coinType;return No(n,Vc)?[{coinType:n,amount:t.totalAmount+t.streamFeeAmount+t.flatFeeAmount}]:[{coinType:n,amount:t.totalAmount+t.streamFeeAmount},{coinType:Vc,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 Fr}getStreamFeeLocal(e){return e*qr/Ro}async getStreamFeeRemote(e){let t=this.feeContract.streamingFee(new Kc,e),n=await this.globals.suiClient.devInspectTransactionBlock({sender:await this.globals.walletAddress(),transactionBlock:t});return new Bo(n).getU64()}get wallet(){return this.globals.wallet}};import{Transactions as Hc}from"@mysten/sui.js/transactions";var $c="0x0000000000000000000000000000000000000000000000000000000000000006";var Oe=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(Hc.MoveCall({target:n,arguments:t.arguments.map(o=>o instanceof Qe?o.moveArgs(e):o instanceof zt?o.moveArg(e):o instanceof ce?o.moveArg():e.pure(o)),typeArguments:t.typeArgs})),e}addTransactionBlock(e,t,n=[],o=[]){e.add(Hc.MoveCall({target:t,arguments:n.map(i=>i instanceof Qe?i.moveArgs(e):i instanceof zt?i.moveArg(e):i instanceof ce?i.moveArg():e.pure(i)),typeArguments:o}))}makeObject(e){return typeof e=="string"?new zt(e):e}vaultObject(){return new zt(this.config.vaultObjId)}roleObject(){return new zt(this.config.roleObjId)}feeObject(){return new zt(this.config.feeObjId)}clockObject(){return new zt($c)}};var Pe=class a extends Oe{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 Qt=class a extends Oe{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),m=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,m],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 Re=class{constructor(e){this.globals=e;let t=e.envConfig.contract;this.feeContract=new Pe(t,e),this.streamContract=new Qt(t,e)}globals;feeContract;streamContract;async createStreams(e){let t=ye.convertCreateStreamInfoToInternal(e);return this.createStreamHelper().buildCreateStreamTransactionBlock(t)}createStreamHelper(){return new ye(this.globals,this.feeContract,this.streamContract)}setAutoClaim(e,t,n){let o=new _o;return this.streamContract.setAutoClaim(o,{streamId:e,enabled:t,coinType:n})}claimStream(e,t){let n=new _o;return this.streamContract.claimStream(n,{streamId:e,coinType:t})}claimStreamByProxy(e,t){let n=new _o;return this.streamContract.claimStreamByProxy(n,{streamId:e,coinType:t})}cancelStream(e,t){let n=new _o;return this.streamContract.cancelStream(n,{streamId:e,coinType:t}),n}};import{normalizeStructTag as Kr,SUI_TYPE_ARG as pm}from"@mysten/sui.js/utils";import{Duration as Gc}from"luxon";var Lo=class extends j{constructor(e,t){super(12,`Transaction failed: ${t}`,{context:{status:e,msg:t}})}};var mm=1e3,jo=class{constructor(e){this.globals=e;this.coinMetaHelper=new Vr(e.suiClient),this.createStreamHelper=new Re(e).createStreamHelper()}globals;coinMetaHelper;createStreamHelper;getStreamIdsFromCreateStreamResponse(e){if(e.effects?.status.status!=="success")throw new Lo(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(Gc.fromMillis(Number(t*e.steps))),o={timeStart:e.timeStart,timeEnd:n,interval:Gc.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:Kr(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:Kr(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()<mm)throw new G("Interval shall be at least 1 second","interval",e.interval)}},Vr=class{constructor(e){this.suiClient=e;this.coinMetaReg=new Map}suiClient;coinMetaReg;async getCoinMeta(e){let t=Kr(e||pm);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 Qc,normalizeSuiAddress as $o}from"@mysten/sui.js/utils";import{DateTime as Jc}from"luxon";import{TransactionBlock as Ko}from"@mysten/sui.js/transactions";import{normalizeStructTag as zc,parseStructTag as hm}from"@mysten/sui.js/utils";import{DateTime as gm}from"luxon";var Uo=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 tn=class extends j{constructor(e,t){super(6,e,{context:t})}};var Ot=class extends j{constructor(e,t={}){super(0,e,t)}};var qo=class extends j{constructor(e){super(5,"Stream not found",{context:{streamId:e}})}};import{DateTime as dm,Duration as fm}from"luxon";var Xc=(1n<<64n)-1n,Fo=1e3;function $r(a){let e;typeof a=="number"?e=a:typeof a=="bigint"?e=Number(a):e=a.toMillis();let t=Math.round(e/Fo);return dm.fromMillis(t*Fo)}function Hr(a){let e;typeof a=="number"?e=a:typeof a=="bigint"?e=Number(a):e=a.toMillis();let t=Math.round(e/Fo);return fm.fromMillis(t*Fo)}var ue=class a{constructor(e,t,n){this.globals=e;this.streamId=t;this.rawData=n;this.streamContract=new Qt(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 Uo;let e=new Ko;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 Ko;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 Ko;return this.streamContract.setAutoClaim(t,{streamId:this.streamId,coinType:this.coinType,enabled:e}),t}async claimByProxy(){let e=new Ko;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 zc(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 Hr(this.rawData.config.epochInterval)}get groupId(){let{metadata:e}=this.rawData.config;return Ye(e).groupId}get name(){let{metadata:e}=this.rawData.config;return Ye(e).name}get recipient(){return this.rawData.config.recipient}get timeStart(){return $r(this.rawData.config.timeStart)}get duration(){let e=this.rawData.config,t=e.epochInterval*e.totalEpoch;return Hr(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:$r((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===Xc?0n:this.rawData.status.epochClaimed*this.amountPerEpoch+this.cliff}get currentEpoch(){let e=gm.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 qo(e):new tn(`get stream data: ${t.error.code}`,{streamId:e,...t.error});let n=t.data.content;if(n.dataType!=="moveObject")throw new tn("Unexpected object type",{gotType:n.dataType});let{typeParams:o}=hm(n.type),i=zc(o[0]),s=n.fields,c=s.config.fields,m=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:m.status,epochCanceled:BigInt(m.epoch_canceled),epochClaimed:BigInt(m.epoch_claimed)}}}};var Be=class extends j{constructor(e,t){super(9,`Invalid stream group: ${e}`,{context:t})}};async function Xr(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 Gr=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)}},Ee=class{constructor(e){this.requester=e;this.pager=new Gr(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 ym=25;async function Qr(a,e,t){let n=new en(e),o=new nn(a,n,t);return await Xr(o)}var en=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]}},nn=class extends Ee{constructor(t,n,o){super(new zr(t,n,o));this.suiClient=t;this.idIter=n;this.options=o}suiClient;idIter;options},zr=class{constructor(e,t,n){this.suiClient=e;this.stringIter=t;this.options=n;this.filter=n?.filter,this.pageSize=n?.pageSize||ym,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 Vo=class a{constructor(e,t){this.globals=e;this.streams=t;if(t.length===0)throw new Be("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 Qr(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=>{bm(n,i)||(o=!1)}),o}async refresh(){let e=await Qr(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 Be("Not same group ID");if(!this.checkStreamGroup(o))throw new Be("Not same stream settings");return o}};function bm(a,e){return a.name===e.name&&a.groupId===e.groupId&&a.creator===e.creator&&a.start.toMillis()===e.start.toMillis()&&a.interval.toMillis()===e.interval.toMillis()&&a.steps===e.steps&&a.cancelable===e.cancelable}var on=class a{constructor(e,t){this.it=e;this.pageSize=t}it;pageSize;static async newIncoming(e){let t=await Ho.newIncoming(e);return new a(t,e.pageSize)}static async newOutgoing(e){let t=await Ho.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}},Ho=class a{constructor(e){this.requester=e}requester;cachedNext;static async newIncoming(e){let t=await Go.newIncomingQuery(e);return new a(t)}static async newOutgoing(e){let t=await Go.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}},Go=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 en(n.flat().map(s=>s.streamId));this.objectIter=new nn(e.suiClient,i)}globals;recipient;groupRefs;query;current=0;objectIter;static async newIncomingQuery(e){let t=Cm(e.query),n=await e.globals.walletAddress(),i=(await e.globals.backend.getIncomingStreams(n,t)).filter(c=>$o(c.recipient)===$o(n)),s=Yc(i);return new a(e.globals,n,s,e.query)}static async newOutgoingQuery(e){let t=xm(e.query),n=await e.globals.walletAddress(),o=await e.globals.backend.getOutgoingStreams(n,t),i=Yc(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 wm(this.globals,e[0].streamId,this.objectIter);return this.current++,Zc(t,this.query)?t:this.doNextRequest()}if(e.length>1){let t=await Im(this.globals,e.map(n=>n.streamId),this.objectIter);return this.current++,Sm(t,this.query)?t:this.doNextRequest()}throw new Ot("Stream group with no stream")}};function Yc(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)=>Jc.fromISO(n[0].createDate).toMillis()-Jc.fromISO(t[0].createDate).toMillis())}function Zc(a,e){if(e===void 0)return!0;let t=Tm(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 Tm(a,e){return e===void 0?!0:Array.isArray(e)?e.includes(a.progress.status):a.progress.status===e}function Sm(a,e){if(!e)return!0;let t=!1;return a.streams.forEach(n=>{Zc(n,e)&&(t=!0)}),t}async function wm(a,e,t){let n=await tl(t,e);return ue.fromObjectData(a,e,n)}async function Im(a,e,t){let n=[];for(;n.length<e.length;){let o=await tl(t,e[n.length]);n.push(o)}return Vo.newFromObjectResponse(a,e,n)}async function tl(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 Cm(a){return{status:Jr(a?.status),coinType:el(a?.coinType),sender:nl(a?.sender)}}function xm(a){return{status:Jr(a?.status),coinType:el(a?.coinType),recipient:nl(a?.recipient)}}function Jr(a){return a===void 0||a.length===0?"all":Array.isArray(a)?a.reduce((e,t)=>{let n=Jr(t);return!e||e===n?n:"all"},void 0):km(a)}function km(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 el(a){if(a)return Array.isArray(a)?a.length!==0?a.map(e=>Qc(e)):void 0:Qc(a)}function nl(a){if(a)return Array.isArray(a)?a.length!==0?a.map(e=>$o(e)):void 0:$o(a)}var Xo=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 Dm=25;async function ol(a,e,t,n="0x2::sui::SUI",o=Dm){let i=new Yr(a,e,n,o),s=BigInt(0),c=[];for(;await i.hasNext()&&s<t;){let m=await i.next();m&&(c.push(m),s+=BigInt(m.balance))}if(s<t)throw new Xo(n,t,s);return c}var Yr=class extends Ee{constructor(t,n,o,i){super(new Zr(t,n,o,i));this.suiClient=t;this.owner=n;this.coinType=o;this.reqPageSize=i}suiClient;owner;coinType;reqPageSize},Zr=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 ts=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)}},zo=class{constructor(e){this.account=e}account;async address(){return this.account.address}},es=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(No(e.coinType,vm))return{primaryCoin:Wo};if(e.amount<=0)throw new G("Invalid coin request","coinAmount",e.amount);let t=await ol(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)}}},Qo=class{globals;helper;constructor(e,t){this.globals=Me.new(e,t),this.helper=new jo(this.globals)}connectSingleWallet(e){let t=new es(e,this.globals.suiClient);this.globals.connectWallet(t)}connectMSafeAccount(e){let t=new ts(e);this.globals.connectWallet(t)}async createStream(e){return this.builder().createStreams(e)}async getStream(e){return ue.new(this.globals,e)}async getIncomingStreams(e,t=10){return on.newIncoming({globals:this.globals,query:e,pageSize:t})}async getOutgoingStreams(e,t=10){return on.newOutgoing({globals:this.globals,query:e,pageSize:t})}async getCoinTypesForStreamFilter(){let e=await this.wallet.address();return(await this.globals.backend.getAllCoinTypes(e)).map(n=>Am(n))}async getRecipientsForStreamFilter(e){let t=await this.wallet.address();return(await this.globals.backend.getAllRecipients(t,e)).map(o=>al(o))}async getCreatorsForStreamFilter(e){let t=await this.wallet.address();return(await this.globals.backend.getAllSenders(t,e)).map(o=>al(o))}get wallet(){return this.globals.wallet}builder(){return new Re(this.globals)}};var Ft=class extends Xt{application="mpay";getClient(e,t){let n=new Qo(e==="sui:mainnet"?"prod":"dev");return n.connectSingleWallet(new zo(t)),n}};var an=class extends Ft{constructor(t){super(t);this.data=t}data;txType=Om.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 Pm}from"@msafe/sui3-utils";var rn=class extends Ft{constructor(t){super(t);this.data=t}data;txType=Pm.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 Rm}from"@msafe/sui3-utils";var sn=class extends Ft{constructor(t){super(t);this.data=t}data;txType=Rm.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 Bm}from"@msafe/sui3-utils";var cn=class extends Ft{constructor(t){super(t);this.data=t}data;txType=Bm.Stream;txSubType="CreateStream";async build(t){let{network:n,account:o}=t;return this.getClient(n,o).createStream(this.data)}};import{bcs as il}from"@mysten/sui.js/bcs";import{normalizeStructTag as Em,normalizeSuiAddress as ln}from"@mysten/sui.js/utils";var Ne=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 ln(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 ln(e.value.Object.ImmOrOwned.objectId)}return ln(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return ln(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return ln(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 Em(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};var Jo=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 Ne(t,this.txb))}getCreationInfoFromMoveCall(e){let t=e.decodeInputString(4),{name:n,groupId:o}=Ye(t),i=e.decodeInputAddress(5),s=e.decodeInputU64(6),c=e.decodeInputU64(7),m=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:m,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 Qt(this.globals.envConfig.contract,this.globals)}get feeContract(){return new Pe(this.globals.envConfig.contract,this.globals)}createStreamHelper(){return new ye(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 Yo=class{constructor(e,t){this.globals=e;this.txb=t;this.contract=new Qt(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 Jo(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 Ne(e,this.txb)}};import{TransactionType as Nm}from"@msafe/sui3-utils";var un=class extends Ft{constructor(t){super(t);this.data=t}data;txType=Nm.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 Zo=class{application="mpay";supportSDK="@mysten/sui.js";async deserialize(e){let{network:t,transactionBlock:n}=e,o=Me.new(t==="sui:mainnet"?"prod":"dev"),s=new Yo(o,n).decode(),c;switch(s.type){case"CreateStream":c=new cn(s.info);break;case"SetAutoClaim":c=new un({streamId:s.streamId,enabled:s.enabled});break;case"Claim":c=new sn({streamId:s.streamId});break;case"ClaimByProxy":c=new rn({streamId:s.streamId});break;case"Cancel":c=new an({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 cn(t);break;case"Claim":n=new sn(t);break;case"ClaimByProxy":n=new rn(t);break;case"SetAutoClaim":n=new un(t);break;case"Cancel":n=new an(t);break;default:throw new Error("not implemented")}return n.build({...e})}};import{TransactionDefaultApplication as jm,TransactionSubTypes as rl}from"@msafe/sui3-utils";import{buildCoinTransferTxb as _m}from"@msafe/sui3-utils";import Wm from"sort-keys-recursive";var We=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify(Wm(this.data))}};var ta=class a extends We{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiGrpcClient:n,account:o}=t;return _m(n,this.data,o.address)}static fromData(t){return new a(t)}};import{buildObjectTransferTxb as Lm}from"@msafe/sui3-utils";var ea=class a extends We{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiGrpcClient:n,account:o}=t;return Lm(n,this.data,o.address)}static fromData(t){return new a(t)}};var na=class{application="msafe-core";supportSDK="@mysten/sui-v2";constructor(){this.application=jm}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 rl.assets.coin.send:i=ta.fromData(e.intentionData);break;case rl.assets.object.send:i=ea.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiGrpcClient:o,account:t,network:n})}};import{TransactionType as hl}from"@msafe/sui3-utils";var sl=!1,pn={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 ns(){if(!sl)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&&(pn.ProtocolPackage=e),t&&(pn.borrowFee=t),n&&(pn.borrowFeeAddress=n),o&&(pn.pool=o),sl=!0}catch(a){console.error(a.message)}}var Jt=pn;import{TransactionType as Te}from"@msafe/sui3-utils";import{bcs as mn,fromBase64 as dn}from"@mysten/bcs";import{normalizeStructTag as qm,normalizeSuiAddress as os}from"@mysten/sui/utils";function oa(a){if(a.$kind!=="MoveCall")return null;let{package:e,module:t,function:n}=a.MoveCall;return`${e}::${t}::${n}`}var aa=class{constructor(e){this.txb=e}txb;decode(){if(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 commands(){return this.txb.getData().commands}getMoveCallCommand(e){return this.commands.find(t=>oa(t)===e)}isClaimRewardTransaction(){return this.commands.some(e=>e.$kind==="MoveCall"&&e.MoveCall.function.includes("claim_reward"))}isEntryBorrowTransaction(){return!!this.getMoveCallCommand(`${Jt.ProtocolPackage}::incentive_v3::entry_borrow_v2`)}isEntryBorrowWithFeeTransaction(){return!!this.getMoveCallCommand(`${Jt.ProtocolPackage}::incentive_v3::borrow_v2`)}isEntryMultiDepositTransaction(){let e=`${Jt.ProtocolPackage}::incentive_v3::entry_deposit`,t=this.commands.filter(o=>oa(o)===e);return this.commands.find(o=>o.$kind==="MoveCall"&&o.MoveCall.function.includes("claim_reward"))?!1:t.length>1}isEntryClaimAndDepositTransaction(){let e=`${Jt.ProtocolPackage}::incentive_v3::entry_deposit`,t=this.commands.filter(o=>oa(o)===e);return!!(this.commands.find(o=>o.$kind==="MoveCall"&&o.MoveCall.function.includes("claim_reward"))&&t.length>0)}isEntryDepositTransaction(){return!!this.getMoveCallCommand(`${Jt.ProtocolPackage}::incentive_v3::entry_deposit`)}isEntryRepayTransaction(){return!!this.getMoveCallCommand(`${Jt.ProtocolPackage}::incentive_v3::entry_repay`)}isEntryWithdrawTransaction(){return!!this.getMoveCallCommand(`${Jt.ProtocolPackage}::incentive_v3::withdraw_v2`)}decodeEntryClaimAndDeposit(){return{txType:Te.Other,type:"EntryClaimAndDeposit",intentionData:{type:"entry_claim_and_deposit"}}}decodeClaimReward(){return{txType:Te.Other,type:"ClaimReward",intentionData:{type:"claim_reward"}}}decodeEntryBorrow(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(5);return{txType:Te.Other,type:"EntryBorrow",intentionData:{amount:t,assetId:e}}}decodeEntryMultiDeposit(){let e=[],t=`${Jt.ProtocolPackage}::incentive_v3::entry_deposit`;return this.commands.forEach(n=>{if(oa(n)===t){let o=new ia(n,this.txb),i=o.decodeInputU8(3),s=o.decodeInputU64(5);e.push({assetId:i,amount:s})}}),{txType:Te.Other,type:"EntryMultiDeposit",intentionData:{list:e}}}decodeEntryDeposit(){let e=this.helper.decodeInputU8(3),t=this.helper.decodeInputU64(5);return{txType:Te.Other,type:"EntryDeposit",intentionData:{amount:t,assetId:e}}}decodeEntryRepay(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(6);return{txType:Te.Other,type:"EntryRepay",intentionData:{amount:t,assetId:e}}}decodeEntryWithdraw(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(5);return{txType:Te.Other,type:"EntryWithdraw",intentionData:{amount:t,assetId:e}}}get helper(){let e=this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.package===Jt.ProtocolPackage);if(!e)throw new Error("MoveCall not found");return new ia(e,this.txb)}},ia=class a{constructor(e,t){this.moveCall=e;this.txb=t}moveCall;txb;get moveCallData(){if(this.moveCall.$kind!=="MoveCall")throw new Error("not move call command");return this.moveCall.MoveCall}get inputs(){return this.txb.getData().inputs}getInputIndex(e){let t=this.moveCallData.arguments[e];if(t.$kind!=="Input")throw new Error("not input type");return t.Input}getInputParam(e){return this.inputs[this.getInputIndex(e)]}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.getInputParam(e);return Number(mn.u64().parse(Uint8Array.from(dn(t.Pure.bytes))))}decodeInputU8(e){let t=this.getInputParam(e);return Number(mn.u8().parse(Uint8Array.from(dn(t.Pure.bytes))))}decodeInputAddress(e){let t=this.getInputParam(e);return os(mn.Address.parse(Uint8Array.from(dn(t.Pure.bytes))))}decodeInputString(e){let t=this.getInputParam(e);return mn.string().parse(Uint8Array.from(dn(t.Pure.bytes)))}decodeInputBool(e){let t=this.getInputParam(e);return mn.bool().parse(Uint8Array.from(dn(t.Pure.bytes)))}static getOwnedObjectId(e){let t=e.Object?.ImmOrOwnedObject?.objectId??e.Object?.Receiving?.objectId??e.UnresolvedObject?.objectId;if(!t)throw new Error(`not object argument: ${JSON.stringify(e)}`);return os(t)}static getSharedObjectId(e){let t=e.Object?.SharedObject?.objectId??e.UnresolvedObject?.objectId;if(!t)throw new Error(`not shared object argument: ${JSON.stringify(e)}`);return os(t)}typeArg(e){return qm(this.moveCallData.typeArguments[e])}txArg(e){return this.moveCallData.arguments[e]}};import{Transaction as cl}from"@mysten/sui/transactions";import{depositCoinPTB as Fm,withdrawCoinPTB as Km,repayCoinPTB as Vm,borrowCoinPTB as $m,claimLendingRewardsPTB as ll,getUserAvailableLendingRewards as ul}from"@naviprotocol/lending";async function _e(a,e,t,n){return await Fm(a,e,t,{amount:n}),a}async function pl(a,e,t,n){let[o]=await Km(a,e,t);return a.transferObjects([o],a.pure.address(n)),a}async function ml(a,e,t,n){let[o]=await $m(a,e,t);return a.transferObjects([o],a.pure.address(n)),a}async function as(a,e,t,n){return await Vm(a,e,t,{amount:n}),a}async function dl(a,e){let t=new cl,n=await ul(e,{client:a});return await ll(t,n),t}async function fl(a,e){let t=new cl,n=await ul(e,{client:a});return await ll(t,n,{customCoinReceive:{type:"depositNAVI",depositNAVI:{fallbackReceiveAddress:e}}}),t}var ra=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 dl(t.suiClient,t.account.address)}static fromData(t){return new a(t)}};var sa=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 fl(t.suiClient,t.account.address)}static fromData(t){return new a(t)}};import{Transaction as Gm}from"@mysten/sui/transactions";import{getPool as Hm}from"@naviprotocol/lending";async function Yt(a){return Hm(a)}var ca=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 Gm;console.log("build",this.data);let s=await Yt(n);return await ml(i,s,o,t.account.address)}static fromData(t){return new a(t)}};import{Transaction as Xm}from"@mysten/sui/transactions";async function Le(a,e,t){let n=await a.getCoins({owner:e,coinType:t});return console.log("getTokenObjs",e,n),n}var la=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 Xm;console.log("build",this.data);let m=await Yt(i);if(i===0){let[x]=c.splitCoins(c.gas,[s]);return await _e(c,m,x,s)}let b=await Le(n,o.address,m.suiCoinType);if(!b.data[0])throw new Error(`Insufficient balance for ${m.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 _e(c,m,c.object(S),s)}static fromData(t){return new a(t)}};import{Transaction as zm}from"@mysten/sui/transactions";var ua=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 zm;console.log("build",this.data);let m=await Yt(i);if(i===0){let[I]=c.splitCoins(c.gas,[s]);return as(c,m,I,s)}let b=await Le(n,o.address,m.suiCoinType);if(!b.data[0])throw new Error(`Insufficient balance for ${m.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 as(c,m,c.object(S),s)}static fromData(t){return new a(t)}};import{Transaction as Qm}from"@mysten/sui/transactions";var pa=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{assetId:n,amount:o}=this.data,i=new Qm;console.log("build",this.data);let s=await Yt(n);return await pl(i,s,o,t.account.address)}static fromData(t){return new a(t)}};import{Transaction as Jm}from"@mysten/sui/transactions";var ma=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{list:i}=this.data,s=new Jm;console.log("build",this.data);for(let c=0;c<i.length;c++){let{assetId:m,amount:b}=i[c],S=await Yt(m);if(m===0){let[k]=s.splitCoins(s.gas,[b]);await _e(s,S,k,b);continue}let I=await Le(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 k=1;for(;k<I.data.length;)s.mergeCoins(x,[I.data[k].coinObjectId]),k++}await _e(s,S,s.object(x),b)}return s}static fromData(t){return new a(t)}};import{Transaction as Ym}from"@mysten/sui/transactions";var da=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return console.log("build",this.data),Ym.from(this.data.content)}static fromData(t){return new a(t)}};var fa=class{application="navi";supportSDK="@mysten/sui";async deserialize(e){if(await ns(),e.appContext?.content)return{txType:hl.Other,txSubType:"PlainTransaction",intentionData:{content:e.appContext.content,scene:e.appContext.scene||"unknown"}};let{transaction:t}=e,o=new aa(t).decode();return{txType:hl.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n}=e,o;switch(await ns(),e.txSubType){case"EntryDeposit":o=la.fromData(e.intentionData);break;case"EntryBorrow":o=ca.fromData(e.intentionData);break;case"EntryRepay":o=ua.fromData(e.intentionData);break;case"EntryWithdraw":o=pa.fromData(e.intentionData);break;case"EntryMultiDeposit":o=ma.fromData(e.intentionData);break;case"ClaimReward":o=ra.fromData(e.intentionData);break;case"EntryClaimAndDeposit":o=sa.fromData(e.intentionData);break;case"PlainTransaction":o=da.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};import{TransactionSubTypes as Zm,TransactionType as gl}from"@msafe/sui3-utils";import{fromHex as td}from"@mysten/bcs";import{Transaction as ed}from"@mysten/sui/transactions";import nd from"sort-keys-recursive";var yl="msafe-plain-tx",bl=Zm.others.plain,is=class a{constructor(e){this.data=e}data;application=yl;txType=gl.Other;txSubType=bl;serialize(){return JSON.stringify(nd(this.data))}async build(e){return ed.from(td(this.data.content))}static fromData(e){return new a(e)}},ha=class{application;supportSDK="@mysten/sui";constructor(){this.application=yl}async deserialize(e){let{content:t}=e.appContext;return{txType:gl.Other,txSubType:bl,intentionData:{content:t}}}async build(e){let{suiClient:t,network:n,account:o}=e;return is.fromData(e.intentionData).build({suiClient:t,network:n,account:o})}};import{Transaction as fn}from"@mysten/sui/transactions";import{SuiClient as ba}from"@mysten/sui.js/client";import{RequestManager as rd,HTTPTransport as sd,Client as cd}from"@open-rpc/client-js";var od={"-32700":"ParseError","-32600":"InvalidRequest","-32601":"MethodNotFound","-32602":"InvalidParams","-32603":"InternalError"},rs=class extends Error{},ga=class extends rs{code;type;constructor(e,t){super(e),this.code=t,this.type=od[t]??"ServerError"}};function ad(a){let e=new URL(a);return e.protocol=e.protocol.replace("http","ws"),e.toString()}var id={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5},ya=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={...id,...t},this.endpoint&&this.endpoint.startsWith("http")&&(this.endpoint=ad(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 ga(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 ss(e);return this.#i.add(t),await t.subscribe(this),()=>t.unsubscribe(this)}},ss=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 sd(o?.url??e,{headers:{"Content-Type":"application/json",...o?.headers}});this.rpcClient=new cd(new rd([i])),this.websocketClient=new ya(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{SuiGrpcClient as ld}from"@mysten/sui/grpc";function ud(a){return Object.assign(a,{getObject(e){return a.core.getObject(e)},async listCoins(e){let t=await a.core.listCoins({owner:e.owner,coinType:e.coinType,cursor:e.cursor??void 0});return{objects:t.objects.map(n=>({coinType:e.coinType??"",objectId:n.objectId,version:n.version,digest:n.digest,balance:n.balance??"0"})),hasNextPage:t.hasNextPage,cursor:t.cursor}}})}function cs(a,e){let t=Xe(a),n=new ld({network:t,baseUrl:e??ge(t)});return ud(n)}var pd="0x2::sui::SUI",ms=1e8,Ta=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:{let i=o;throw new Error(`${i.application}: ${i.supportSDK} SDK not supported`)}}}return t}addLegacyHelper(e){this.setApp(e.application,new ps(e))}addHelper(e){this.setApp(e.application,new ls(e))}addGrpcHelper(e){this.setApp(e.application,new us(e))}getAppHelper(e){let t=this.apps.get(e);if(!t)throw new Error(`${e} not registered`);return t}setApp(e,t){this.apps.set(e,t)}},ls=class{constructor(e){this.helper=e}helper;async deserialize(e){let t=new he({network:Xe(e.network),transport:new ee({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=new ba({transport:new ee({url:e.clientUrl,rpc:{url:e.clientUrl}})}),o=await e.transactionBlock.build({client:n}),i=fn.from(o);return this.helper.deserialize({...e,suiClient:t,transaction:i})}async build(e){let t=new he({network:Xe(e.network),transport:new ee({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=await t.getBalance({owner:e.account.address});if(Number(n.totalBalance)<ms)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 fn.from(i)}},us=class{constructor(e){this.helper=e}helper;async deserialize(e){let t=cs(e.network,e.clientUrl),n=new ba({transport:new ee({url:e.clientUrl,rpc:{url:e.clientUrl}})}),o=await e.transactionBlock.build({client:n}),i=fn.from(o);return this.helper.deserialize({...e,suiGrpcClient:t,transaction:i})}async build(e){let t=cs(e.network,e.clientUrl),{balance:n}=await t.core.getBalance({owner:e.account.address,coinType:pd});if(Number(n.balance)<ms)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 fn.from(i)}},ps=class{constructor(e){this.helper=e}helper;async deserialize(e){let t=new ba({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 ba({transport:new ee({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=await t.getBalance({owner:e.account.address});if(Number(n.totalBalance)<ms)throw new Error("Insufficient gas fee");let i=await(await this.helper.build({...e,suiClient:t})).build({client:t});return fn.from(i)}};import{TransactionType as wd}from"@msafe/sui3-utils";import{Scallop as Id}from"@scallop-io/sui-scallop-sdk";import{TransactionType as Et}from"@msafe/sui3-utils";import{OLD_BORROW_INCENTIVE_PROTOCOL_ID as Cl}from"@scallop-io/sui-scallop-sdk";import{parseStructTag as md}from"@mysten/sui/utils";var pe=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}=md(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 ds}from"@mysten/sui/bcs";import{normalizeStructTag as dd,normalizeSuiAddress as hn}from"@mysten/sui/utils";var fs=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}`,m=`${e.MoveCall.package}::${e.MoveCall.module}::${e.MoveCall.function}`;return c===m?(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 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.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"&&t.kind!=="Result")throw new Error("not nested or result 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=ds[t];return ds[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 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){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 ds.U64.parse(new Uint8Array(t))}typeArg(e){return dd(this.txBlockTransactions.typeArguments[e])}txArg(e){return this.transaction.blockData.inputs[e]}},N=fs;var hs=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=hs;import{normalizeStructTag as Tl,SUI_CLOCK_OBJECT_ID as Sl,SUI_TYPE_ARG as fd}from"@mysten/sui/utils";var wl=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`},je={id:"0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",incentivePools:"0x64972b713ccec45ec3964809e477cea6f97350c0c50ca3aec85bb631639266ec",incentiveAccounts:"0x3c0b707068bdcea8bb859d751ad3e2149a9f83c13fcf4054ef91372a00bccdd3"},Kt={unstakeObligation:(a,e,t)=>a.moveCall(`${je.id}::user::unstake`,[je.incentivePools,je.incentiveAccounts,a.object(e),a.object(t),Sl],[Tl(fd)]),redeem_rewards:(a,e,t,n)=>a.moveCall(`${je.id}::user::redeem_rewards`,[je.incentivePools,je.incentiveAccounts,a.object(e),a.object(t),Sl],[Tl(n)])};var Il=(a,e)=>{let t=[];for(let n=0;n<a.length;n+=e)t.push(a.slice(n,n+e));return t};var Sa=class extends pe{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(`${Cl}::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,`${Cl}::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)),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 ys}from"@msafe/sui3-utils";var wa=class extends pe{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:ys.Other,type:"CreateReferralLink",intentionData:{}}}decodeClaimRevenueReferral(){let e=this.helperClaimRevenueReferral[0].decodeOwnedObjectId(2),t=this.helperClaimRevenueReferral.map(n=>n.typeArg(0));return{txType:ys.Other,type:"ClaimRevenueReferral",intentionData:{veScaKey:e,coins:t}}}decodeBindReferral(){let e=this.helperBindReferral.decodePureArg(1,"Address");return{txType:ys.Other,type:"BindReferral",intentionData:{veScaKey:e}}}};import{TransactionType as ne}from"@msafe/sui3-utils";import{OLD_BORROW_INCENTIVE_PROTOCOL_ID as hd}from"@scallop-io/sui-scallop-sdk";var Ia=class extends pe{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(m=>m.$kind==="TransferObjects");if(e.length!==1)return!1;let{objects:t}=e[0].TransferObjects,n=t.filter(m=>m.$kind==="Input").map(({Input:m})=>m);if(n.length!==t.length)return!1;let o=new Set(n),i=this.inputs.filter((m,b)=>m.$kind==="Object"&&o.has(b)).map(m=>m.Object.ImmOrOwnedObject),s=`${this.coreId.veScaObjId}::ve_sca::VeScaKey`,c=Il(i.map(({objectId:m})=>m),50);for(let m=0;m<c.length;m++){let b=c[m];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,`${hd}::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(m=>{this.filterMoveCallCommands(m,e)?(o.push({action:"unstake",helper:new N(m,this.transaction,i)}),i++):this.filterMoveCallCommands(m,t)?(o.push({action:"stake",helper:new N(m,this.transaction,s)}),s++):this.filterMoveCallCommands(m,n)&&(o.push({action:"deactivate",helper:new N(m,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((D,M)=>D+M,0),o=this.helperRenewExpired.decodeOwnedObjectId(1),i=!!this.helperRedeemSca.moveCall,s=[],c=[],m=[];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&&(m=[this.helperStakeObligationWithVeSca.decodeOwnedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let b=!1,S=!1,I,x,k=[{condition:s,isOld:!0},{condition:c,isOld:!1},{condition:m,isOld:!1}];for(let D=0;D<k.length;D++)k[D].condition.length>1&&([x,I]=k[D].condition,b=!0,S=k[D].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,m,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,m]=S[I].condition,s=!0,c=S[I].isOld);return{txType:ne.Other,type:"ExtendStakePeriod",intentionData:{unlockTime:e,obligationId:m,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((k,D)=>k+D,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 m=!1,b=!1,S,I,x=[{condition:o,isOld:!0},{condition:i,isOld:!1},{condition:c,isOld:!1}];for(let k=0;k<x.length;k++)x[k].condition.length>1&&([I,S]=x[k].condition,m=!0,b=x[k].isOld);return{txType:ne.Other,type:"ExtendPeriodAndStakeMore",intentionData:{amount:n,veScaKey:s,unlockTime:t,obligationId:S,obligationKey:I,isOldBorrowIncentive:b,isObligationLocked:m}}}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((k,D)=>k+D,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 m=!1,b=!1,S,I,x=[{condition:o,isOld:!0},{condition:i,isOld:!1},{condition:c,isOld:!1}];for(let k=0;k<x.length;k++)x[k].condition.length>1&&([I,S]=x[k].condition,m=!0,b=x[k].isOld);return{txType:ne.Other,type:"StakeSca",intentionData:{amount:n,unlockTime:t,obligationId:S,obligationKey:I,veScaKey:s,isObligationLocked:m,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 gd from"sort-keys-recursive";var A=class{constructor(e){this.data=e}data;get application(){return"msafe-core"}serialize(){return JSON.stringify(gd(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 Ca=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,m=t.address;return(await this.buildTxWithRefreshObligation(n,{walletAddress:m,obligationId:s,obligationKey:c},async(S,I)=>{let x=await I.borrowQuick(+i,o,s,c);I.transferObjects([x],m)})).txBlock}async build(t){return this.borrow(t)}static fromData(t){return new a(t)}};var xa=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:m}=this.data;return(await this.buildTxWithRefreshObligation(t,{walletAddress:n,obligationId:o,obligationKey:i,veScaKey:s},async(S,I)=>{let x=await I.borrowQuick(+c,m,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 ka=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:m,amount:b}=this.data;return(await this.buildTxWithRefreshObligation(n,{walletAddress:o,obligationId:i,obligationKey:s,veScaKey:c},async(I,x)=>{let k=x.claimReferralTicket(m),D=await x.borrowWithReferralQuick(+b,m,k,i,s);x.burnReferralTicket(k,m),x.transferObjects([D],o)})).txBlock}async build(t){return this.borrowWithReferral(t)}static fromData(t){return new a(t)}};import{SUI_TYPE_ARG as yd}from"@mysten/sui/utils";var Da=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)??[]),m=(()=>{let x=[...e.constants.whitelist.spool].map(k=>e.utils.parseCoinName(k));return Object.values(i??[]).filter(k=>!!k&&x.includes(k.coinName)).reduce((k,D)=>{let M=e.utils.parseMarketCoinName(D.coinName);return k[M]||(k[M]=0),k[M]+=D.availableClaimCoin,k},{})})(),b={};Object.entries(o).forEach(([x,k])=>{for(let D=0;D<k.length;D++){let M=k[D];if(!m[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(m).reduce((k,D)=>k+D,0),c.forEach(k=>{Object.values(k.borrowIncentives).forEach(D=>{D&&D.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 k=c[x],D=!1,M=s.find(U=>U.id===k.obligationId)?.keyId,L={};if(M){if(Object.values(k.borrowIncentives).forEach(U=>{if(U){let q=U.rewards.filter(Mt=>{let W=Mt.coinName;return Mt.availableClaimCoin>0&&!L[W]});D=q.length>0,q.forEach(Mt=>{let W=n.claimBorrowIncentive(k.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,k.obligationId,yd);b.sui?b.sui.push(U):b.sui=[U]}if(D&&await wl(e.query,k.obligationId)){n.unstakeObligation(k.obligationId,M);let q=await e.query.getBindedVeScaKey(k.obligationId);q?n.stakeObligationWithVesca(k.obligationId,M,q):n.stakeObligation(k.obligationId,M)}}}let I=(await Promise.all(Object.entries(b).map(async([x,k])=>{let D=k[0];if(k.length>1&&n.mergeCoins(D,k.slice(1)),x==="sui"){n.mergeCoins(n.gas,[D]);return}return await e.builder.utils.mergeSimilarCoins(n,D,e.utils.parseCoinType(x),t),D}))).filter(x=>!!x);return 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 va=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return await t.scallopClient.depositCollateral(this.data.collateralCoinName,+this.data.amount,!1,this.data.obligationId)}static fromData(t){return new a(t)}};var Aa=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:m}=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),m?await b.stakeObligationWithVeScaQuick(s,i,m):await b.stakeObligationQuick(s,i),b.txBlock}async build(t){return this.migrateAndClaim(t)}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 await t.scallopClient.migrateAllMarketCoin(!1,!1)}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 await t.scallopClient.openObligation(!1)}static fromData(t){return new a(t)}};var Pa=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:m}=this.data;return(await this.buildTxWithRefreshObligation(n,{walletAddress:o,obligationId:c,obligationKey:m},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 Ra=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:m}=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,m),b.txBlock}async build(t){return this.repayWithBoost(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 build(t){return await t.scallopClient.deposit(this.data.coinName,+this.data.amount,!1,t.account.address)}static fromData(t){return new a(t)}};var Ea=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return await t.scallopClient.unstake(this.data.marketCoinName,+this.data.amount,!1)}static fromData(t){return new a(t)}};var Na=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:m}=this.data,b=[];for(let S=0;S<s.length;S++){let{id:I,coin:x}=s[S],k=t.utils.parseMarketCoinName(m),[D]=await i.unstakeQuick(x,k,I,!1);if(D){let M=i.withdraw(D,m);b.push(M)}}if(c>0){let S=await i.withdrawQuick(c,m);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 Wa=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return await 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 _a=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return await t.scallopClient.withdraw(this.data.coinName,Number(this.data.amount),!1,t.account.address)}static fromData(t){return new a(t)}};var La=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 ja=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 m=i.map(b=>n.utils.parseCoinNameFromType(b));return await c.claimReferralRevenueQuick(o,m),c.txBlock}async build(t){return this.claimRevenueReferral(t)}static fromData(t){return new a(t)}};var Ua=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 bd}from"@scallop-io/sui-scallop-sdk";var qa=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:m,isOldBorrowIncentive:b,isObligationLocked:S}=this.data,I=t.address,x=n.builder.createTxBlock();x.setSender(I);let k=await n.utils.selectCoins(o,bd,I),[D,M]=x.takeAmountFromCoins(k,o);return x.extendLockPeriod(i,s),x.extendLockAmount(i,D),x.transferObjects([M],I),!c||!m||(S&&(b?Kt.unstakeObligation(x,c,m):x.unstakeObligation(c,m)),x.stakeObligationWithVesca(c,m,i)),x.txBlock}async build(t){return this.extendPeriodAndStakeMoreSca(t)}static fromData(t){return new a(t)}};var Fa=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:m,isObligationLocked:b,isOldBorrowIncentive:S}=this.data,I=n.builder.createTxBlock();return I.setSender(o),I.extendLockPeriod(i,s),c&&m&&(b&&(S?Kt.unstakeObligation(I,m,c):I.unstakeObligation(c,m)),I.stakeObligationWithVesca(c,m,i)),I.txBlock}async build(t){return this.extendStakeScaLockPeriod(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 handleUnsubForKeys(t,n,o){let{targetVeScaKey:i,sourceVeScaKey:s}=this.data,[c,m]=await Promise.all([n.getBindedObligationId(i),n.getBindedObligationId(s)]);c&&await t.unstakeObligationQuick(c),m&&await t.unstakeObligationQuick(m),o(t,i,s),c&&await t.stakeObligationWithVeScaQuick(c,void 0,i),m&&await t.stakeObligationWithVeScaQuick(m,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,m)=>{s.mergeVeSca(i.object(c),i.object(m))}),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 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 Td}from"@scallop-io/sui-scallop-sdk";var $a=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:m,obligation:b,obligationKey:S,isObligationLocked:I,isOldBorrowIncentive:x}=this.data,k=n.builder.createTxBlock();if(k.setSender(o),m){let U=k.redeemSca(c);k.transferObjects([U],o)}let D=await n.builder.utils.selectCoins(i,Td,o),[M,L]=k.takeAmountFromCoins(D,i);return k.transferObjects([L],o),k.renewExpiredVeSca(c,M,s),!b||!S||(I&&(x?Kt.unstakeObligation(k,S,b):k.unstakeObligation(b,S)),k.stakeObligationWithVesca(b,S,c)),k.txBlock}async build(t){return this.renewExpiredStakeSca(t)}static fromData(t){return new a(t)}};var Ha=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,m)=>{let b=s.splitVeSca(c,m.toString());s.transferObjects([b],o)}),i.txBlock}static fromData(t){return new a(t)}};import{SCA_COIN_TYPE as Sd}from"@scallop-io/sui-scallop-sdk";var Ga=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:m,obligationKey:b,unlockTime:S,veScaKey:I}=this.data,x=n.builder.createTxBlock();x.setSender(o);let k=await n.utils.selectCoins(i,Sd,o),[D,M]=x.takeAmountFromCoins(k,i),L;return I?x.extendLockAmount(I,D):L=x.lockSca(D,S),m&&b&&(s&&(c?Kt.unstakeObligation(x,b,m):x.unstakeObligation(m,b)),x.stakeObligationWithVesca(m,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 Xa=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,m=n.builder.createTxBlock();m.setSender(o);let b=await m.depositQuick(+i,s),S=n.utils.parseMarketCoinName(s);if(n.constants.whitelist.spool.has(S))return m.txBlock;let I=await n.query.getStakeAccounts(S,o),x=c||(I.length>0?I[0].id:void 0);if(x)await m.stakeQuick(b,S,x);else{let k=m.createStakeAccount(S);await m.stakeQuick(b,S,k),m.transferObjects([k],o)}return m.txBlock}async build(t){return this.supplyAndStake(t)}static fromData(t){return new a(t)}};var za=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 Qa=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 Ja=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 Ya=class{application="scallop";supportSDK="@mysten/sui";scallopClient;async initScallopClient(e,t){if(!this.scallopClient){let n=new Id({addressId:"695fcdc084f790c04eb068dc",walletAddress:e,suiClients:[t],fullnodeUrls:[t.transport.rpcClient.requestManager.transports[0]?.uri??ge("mainnet")]});this.scallopClient=await n.createScallopClient()}}async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;await this.initScallopClient(o.address,n);let i=new Sa(t,this.scallopClient),s=new wa(t,this.scallopClient),c=new Ia(t,this.scallopClient),m=i.decode()||s.decode()||await c.decode();if(!m)throw new Error("Unknown transaction type");return{txType:wd.Other,txSubType:m.type,intentionData:m.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=Ba.fromData(s);break;case"WithdrawLending":c=_a.fromData(s);break;case"Borrow":c=Ca.fromData(s);break;case"Repay":c=Pa.fromData(s);break;case"DepositCollateral":c=va.fromData(s);break;case"WithdrawCollateral":c=Wa.fromData(s);break;case"OpenObligation":c=Oa.fromData(s);break;case"UnstakeSpool":c=Ea.fromData(s);break;case"ClaimIncentiveReward":c=Da.fromData(s);break;case"BorrowWithBoost":c=xa.fromData(s);break;case"StakeSca":c=Ga.fromData(s);break;case"ExtendStakePeriod":c=Fa.fromData(s);break;case"ExtendPeriodAndStakeMore":c=qa.fromData(s);break;case"RenewExpStakePeriod":c=$a.fromData(s);break;case"WithdrawStakedSca":c=Ja.fromData(s);break;case"SupplyAndStakeLending":c=Xa.fromData(s);break;case"WithdrawAndUnstakeLending":c=Na.fromData(s);break;case"RedeemSca":c=Va.fromData(s);break;case"MigrateAndClaim":c=Aa.fromData(s);break;case"BorrowWithReferral":c=ka.fromData(s);break;case"CreateReferralLink":c=Ua.fromData(s);break;case"ClaimRevenueReferral":c=ja.fromData(s);break;case"BindReferral":c=La.fromData(s);break;case"MigrateScoin":c=Ma.fromData(s);break;case"RepayWithBoost":c=Ra.fromData(s);break;case"MergeVeSca":c=Ka.fromData(s);break;case"SplitVeSca":c=Ha.fromData(s);break;case"VeScaObligationBindings":{c=za.fromData(s);break}case"TransferVeScaKeys":{c=Qa.fromData(s);break}default:throw new Error("not implemented")}return c.build({suiClient:t,account:n,network:o,scallopClient:this.scallopClient})}};import{TransactionType as ef}from"@msafe/sui3-utils";import{TransactionType as bn}from"@msafe/sui3-utils";import{normalizeStructTag as Se}from"@mysten/sui/utils";import{API_URL as Ld}from"@suilend/sui-fe";import{TransactionType as Nd}from"@msafe/sui3-utils";import{LENDING_MARKET_ID as Wd,LENDING_MARKET_TYPE as _d,SuilendClient as bs}from"@suilend/sdk";import{TransactionType as qe}from"@msafe/sui3-utils";import{fromBase64 as xl,toHex as kl}from"@mysten/bcs";import{normalizeStructTag as gn}from"@mysten/sui/utils";import{MAX_U64 as Fe}from"@suilend/sui-fe";import Dl from"bignumber.js";var Za=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=gn(e.MintEvent.parsedJson.coin_type.name),n=e.MintEvent.parsedJson.liquidity_amount;return console.log("Decoder.decodeDeposit",t,n),{txType:qe.Other,type:"deposit",intentionData:{coinType:t,value:n}}}decodeWithdraw(){let e={withdraw_ctokens:this.getMoveCallCommand("withdraw_ctokens")},t={RedeemEvent:this.simResult.events.find(m=>m.type.includes("lending_market::RedeemEvent"))},n=gn(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(kl(xl(this.inputs[i].Pure.bytes)),16).toString(),c=s===Fe.toString();return console.log("decodeWithdraw - isMax:",c,"inputIndex:",i,"inputValue:",s,"MAX_U64.toString():",Fe.toString()),c&&(o=Fe.toString()),{txType:qe.Other,type:"withdraw",intentionData:{coinType:n,value:o}}}decodeBorrow(){let e={borrow_request:this.getMoveCallCommand("borrow_request")},t={BorrowEvent:this.simResult.events.find(m=>m.type.includes("lending_market::BorrowEvent"))},n=gn(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(kl(xl(this.inputs[i].Pure.bytes)),16).toString(),c=s===Fe.toString();return console.log("decodeBorrow - isMax:",c,"inputIndex:",i,"inputValue:",s,"MAX_U64.toString():",Fe.toString()),c&&(o=Fe.toString()),{txType:qe.Other,type:"borrow",intentionData:{coinType:n,value:o}}}decodeRepay(){let e={RepayEvent:this.simResult.events.find(o=>o.type.includes("lending_market::RepayEvent"))},t=gn(e.RepayEvent.parsedJson.coin_type.name),n=e.RepayEvent.parsedJson.liquidity_amount;return console.log("Decoder.decodeRepay",t,n),{txType:qe.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=gn(o.parsedJson.coin_type.name),s=o.parsedJson.liquidity_amount;t[i]=`${+(t[i]??"0")+ +s}`}return console.log("Decoder.decodeClaimRewards",t),{txType:qe.Other,type:"claim",intentionData:{value:t}}}decodeClaimAndDeposit(){return{txType:qe.Other,type:"claimAndDeposit",intentionData:this.decodeClaim().intentionData}}};import{Transaction as kd}from"@mysten/sui/transactions";import xd from"sort-keys-recursive";var _t=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify(xd(this.data))}};var ti=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 m=new kd;return await i.borrowAndSendToUser(o.address,s.id,c.id,this.data.coinType,this.data.value,m),m}static fromData(t){return console.log("BorrowIntention.fromData",t),new a(t)}};import{Transaction as Od}from"@mysten/sui/transactions";import{normalizeStructTag as Dd}from"@mysten/sui/utils";import{Side as yn}from"@suilend/sdk";import{isSendPoints as vd}from"@suilend/sui-fe";import Ad from"bignumber.js";var Md=(a,e)=>{let t={[yn.DEPOSIT]:[],[yn.BORROW]:[]};return a.lendingMarket.reserves.forEach(n=>{[yn.DEPOSIT,yn.BORROW].forEach(o=>{let i=o===yn.DEPOSIT?n.depositsPoolRewardManager:n.borrowsPoolRewardManager,s=e.userRewardManagers.find(c=>c.poolRewardManagerId===i.id);s&&(t[o]=i.poolRewards.map((c,m)=>({reserveArrayIndex:n.arrayIndex,rewardIndex:BigInt(m),rewardCoinType:Dd(c.coinType.name),side:o})).filter(c=>!vd(c.rewardCoinType)&&!!s.rewards[Number(c.rewardIndex)]&&new Ad(s.rewards[Number(c.rewardIndex)].earnedRewards.value.toString()).gt(0)))})}),Object.values(t).flat()},ei=Md;var ni=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 m=new Od;return i.claimRewardsAndSendToUser(o.address,s.id,ei(i,c),m),m}static fromData(t){return console.log("ClaimIntention.fromData",t),new a(t)}};import{Transaction as Pd}from"@mysten/sui/transactions";var oi=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 m=new Pd;return i.claimRewardsAndDeposit(o.address,s.id,ei(i,c),m),m}static fromData(t){return console.log("ClaimAndDepositIntention.fromData",t),new a(t)}};import{Transaction as Rd}from"@mysten/sui/transactions";var ai=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 m=new Rd;return await i.depositIntoObligation(o.address,this.data.coinType,this.data.value,m,s?.id),m}static fromData(t){return console.log("DepositIntention.fromData",t),new a(t)}};import{Transaction as Bd}from"@mysten/sui/transactions";var ii=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 m=new Bd;return await i.repayIntoObligation(o.address,c.id,this.data.coinType,this.data.value,m),m}static fromData(t){return console.log("RepayIntention.fromData",t),new a(t)}};import{Transaction as Ed}from"@mysten/sui/transactions";var ri=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 m=new Ed;return await i.withdrawAndSendToUser(o.address,s.id,c.id,this.data.coinType,this.data.value,m),m}static fromData(t){return console.log("WithdrawIntention.fromData",t),new a(t)}};var si=async(a,e)=>{let t=await bs.initialize(Wd,_d,a),n=await bs.getObligationOwnerCaps(e.address,t.lendingMarket.$typeArgs,a),o=await Promise.all(n.map(i=>bs.getObligation(i.obligationId,t.lendingMarket.$typeArgs,a)));return console.log("XXX getUtils - suilendClient:",t,"obligations:",o,"obligationOwnerCaps:",n),{suilendClient:t,obligationOwnerCaps:n,obligations:o}},ci=class{application="Suilend";supportSDK="@mysten/sui";utils;async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;this.utils||(this.utils=await si(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 Za(t,i).decode();return{txType:Nd.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 si(i,s));let c;switch(n){case"deposit":c=ai.fromData(o);break;case"withdraw":c=ri.fromData(o);break;case"borrow":c=ti.fromData(o);break;case"repay":c=ii.fromData(o);break;case"claim":c=ni.fromData(o);break;case"claimAndDeposit":c=oi.fromData(o);break;default:throw new Error("not implemented")}let m=window.localStorage.getItem("obligationId"),b=this.utils.obligations?.find(I=>I.id===m)??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 Ts=async(a,e)=>{let t=await si(a,e),n=await fetch(`${Ld}/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 li=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=Se(e.MintEvent.parsedJson.event.typename.name),n=e.MintEvent.parsedJson.event.sui_amount_in;return console.log("Decoder.decodeStake",n),{txType:bn.Other,type:"stake",intentionData:{amount:n,outCoinType:t}}}decodeStakeAndDeposit(){let e={MintEvent:this.simResult.events.find(o=>o.type.includes("liquid_staking::MintEvent"))},t=Se(e.MintEvent.parsedJson.event.typename.name),n=e.MintEvent.parsedJson.event.sui_amount_in;return console.log("Decoder.decodeStakeAndDeposit",n),{txType:bn.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=Se(e.RedeemEvent.parsedJson.event.typename.name),n=Se(e.MintEvent.parsedJson.event.typename.name),o=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeConvert",o),{txType:bn.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=Se(e.RedeemEvent.parsedJson.event.typename.name),n=Se(e.MintEvent.parsedJson.event.typename.name),o=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeConvertAndDeposit",o),{txType:bn.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=Se(e.RedeemEvent.parsedJson.event.typename.name),n=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeUnstake",n),{txType:bn.Other,type:"unstake",intentionData:{amount:n,inCoinType:t}}}};import{Transaction as qd}from"@mysten/sui/transactions";import{LstClient as vl,convertLstsAndRebalanceAndSendToUser as Fd}from"@suilend/springsui-sdk";import Ud from"sort-keys-recursive";var Vt=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify(Ud(this.data))}};var ui=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:m}=t;console.log("ConvertIntention.build",n,o,i,s,c,m);let b=await vl.initialize(n,Object.values(s).find(x=>x.type===this.data.inCoinType)),S=await vl.initialize(n,Object.values(s).find(x=>x.type===this.data.outCoinType)),I=new qd;return Fd(b,S,I,o.address,this.data.amount),I}static fromData(t){return console.log("ConvertIntention.fromData",t),new a(t)}};import{Transaction as Kd}from"@mysten/sui/transactions";import{createObligationIfNoneExists as Vd,sendObligationToUser as $d}from"@suilend/sdk";import{LstClient as Al,convertLstsAndRebalance as Hd}from"@suilend/springsui-sdk";var pi=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:m}=t;console.log("ConvertAndDepositIntention.build",n,o,i,s,c,m);let b=await Al.initialize(n,Object.values(s).find(M=>M.type===this.data.inCoinType)),S=await Al.initialize(n,Object.values(s).find(M=>M.type===this.data.outCoinType)),I=new Kd,{obligationOwnerCapId:x,didCreate:k}=Vd(i,I,c),D=Hd(b,S,I,o.address,this.data.amount);return i.deposit(D,this.data.outCoinType,x,I),k&&$d(x,o.address,I),I}static fromData(t){return console.log("ConvertAndDepositIntention.fromData",t),new a(t)}};import{Transaction as Gd}from"@mysten/sui/transactions";import{LstClient as Xd}from"@suilend/springsui-sdk";var mi=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:m}=t;console.log("StakeIntention.build",n,o,i,s,c,m);let b=await Xd.initialize(n,Object.values(s).find(I=>I.type===this.data.outCoinType)),S=new Gd;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 zd}from"@mysten/sui/transactions";import{createObligationIfNoneExists as Qd,sendObligationToUser as Jd}from"@suilend/sdk";import{LstClient as Yd}from"@suilend/springsui-sdk";var di=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:m}=t;console.log("StakeAndDepositIntention.build",n,o,i,s,c,m);let b=await Yd.initialize(n,Object.values(s).find(D=>D.type===this.data.outCoinType)),S=new zd,{obligationOwnerCapId:I,didCreate:x}=Qd(i,S,c),k=b.mintAmountAndRebalance(S,o.address,this.data.amount);return i.deposit(k,this.data.outCoinType,I,S),x&&Jd(I,o.address,S),S}static fromData(t){return console.log("StakeAndDepositIntention.fromData",t),new a(t)}};import{Transaction as Zd}from"@mysten/sui/transactions";import{LstClient as tf}from"@suilend/springsui-sdk";var fi=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:m}=t;console.log("UnstakeIntention.build",n,o,i,s,c,m);let b=await tf.initialize(n,Object.values(s).find(I=>I.type===this.data.inCoinType)),S=new Zd;return b.redeemAmountAndRebalanceAndSendToUser(S,o.address,this.data.amount),S}static fromData(t){return console.log("UnstakeIntention.fromData",t),new a(t)}};var hi=class{application="SpringSui";supportSDK="@mysten/sui";utils;async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;this.utils||(this.utils=await Ts(n,o));let i=await n.devInspectTransactionBlock({sender:o.address,transactionBlock:t});console.log("SpringSuiAppHelper.deserialize",i);let c=new li(t,i).decode();return{txType:ef.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 Ts(i,s));let c;switch(n){case"stake":c=mi.fromData(o);break;case"stakeAndDeposit":c=di.fromData(o);break;case"convert":c=ui.fromData(o);break;case"convertAndDeposit":c=pi.fromData(o);break;case"unstake":c=fi.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 rf}from"@msafe/sui3-utils";import{TransactionType as Ml}from"@msafe/sui3-utils";var gi=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:Ml.Other,type:"mint",intentionData:{amount:t}}}decodeRedeem(e){let{event:{lst_amount_in:t}}=e;return console.log("Decoder.decodeRedeem",t),{txType:Ml.Other,type:"redeem",intentionData:{amount:t}}}};import{LST as of}from"@alphafi/stsui-sdk";var yi=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 of(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 af}from"@alphafi/stsui-sdk";var bi=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 af(i).redeem(o,n.address);return c.setGasBudget(1e8),c}static fromData(t){return console.log("RedeemIntention.fromData",t),new a(t)}};var Ti=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 gi(t,o).decode();return{txType:rf.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=yi.fromData(e.intentionData);break;case"redeem":n=bi.fromData(e.intentionData);break;default:throw new Error("build not implemented")}return n.build({account:t})}};import{TransactionType as Af}from"@msafe/sui3-utils";import{TurbosSdk as Mf}from"turbos-clmm-sdk";import{TransactionType as Lt}from"@msafe/sui3-utils";import{fromBase64 as Ke}from"@mysten/bcs";import{bcs as Ve}from"@mysten/sui/bcs";import{BN as cf}from"turbos-clmm-sdk";var $t={PackageId:"0x02fe4933f4521250e55a15441096d1d4a38a7311195b0bca126fc0138c1f5a97",Claim:"0x0c822cec42f7ca703696b4232f1c47b348330c23580172a29aab465bc071d894",turbosCoinType:"0x5d1f47ea69bb0de31c313d7acf89b890dbb8991ea8e03c6c355171f84bb1ba4a::turbos::TURBOS"},Ht={PackageId:"0xdee9"};var lf=(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}`)}},Si=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(`${$t.PackageId}::claim::join`)}isPrixClaimTransaction(){return!!this.getMoveCallTransaction(`${$t.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(`${Ht.PackageId}::clob_v2::swap_exact_base_for_quote`)}isSwapExactQuoteForBaseTransaction(){return!!this.getMoveCallTransaction(`${Ht.PackageId}::clob_v2::swap_exact_quote_for_base`)}async decodeSwap(){let e=this.transactions.find(k=>k.$kind==="MoveCall"),t=0,n=`${e.MoveCall.package}::${e.MoveCall.module}::${e.MoveCall.function}`;console.log(n,"moveCallTarget"),this.swap2Layer.includes(n)&&(t=1);let o=lf(t,n,this.swap1Layer,this.swap2Layer),i=o.map((k,D)=>{let M=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(D)),L=this.helper.decodeInputU128(this.helper.getInputsIndex(4+D+t)),U=this.turbosSdk.math.sqrtPriceX64ToTickIndex(new cf(L.toString()));return{pool:M,a2b:k,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],m=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:m,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)),m=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:m?-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)),m=s.decodeInputU64(s.getInputsIndex(5));o[c]=m});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)),m=this.decreaseLiquidityHelper.decodeInputU64(this.decreaseLiquidityHelper.getInputsIndex(6)),b=[0,0,0];this.collectRewardHelper.forEach(x=>{let k=x.decodeInputU64(x.getInputsIndex(4)),D=x.decodeInputU64(x.getInputsIndex(5));b[k]=D});let 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:m}}}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),m=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:m,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 me(e,this.txb)}get collectRewardHelper(){return this.transactions.filter(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${this.config.PackageId}::position_manager::collect_reward`:!1).map(t=>new me(t,this.txb))}get collectFeeHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${this.config.PackageId}::position_manager::collect`:!1);return new me(e,this.txb)}get decreaseLiquidityHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${this.config.PackageId}::position_manager::decrease_liquidity`:!1);return new me(e,this.txb)}get swapExactBaseForQuoteHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${Ht.PackageId}::clob_v2::swap_exact_base_for_quote`:!1);return new me(e,this.txb)}get swapExactQuoteForBaseHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${Ht.PackageId}::clob_v2::swap_exact_quote_for_base`:!1);return new me(e,this.txb)}},me=class{constructor(e,t){this.moveCall=e;this.txb=t}moveCall;txb;get inputs(){return this.txb.getData().inputs}getInputsIndex(e){return this.moveCall.MoveCall.arguments[e].Input}decodeSharedObjectId(e){return this.inputs[e].Object?.SharedObject?.objectId||this.inputs[e].UnresolvedObject.objectId}decodeOwnedObjectId(e){return this.inputs[e].Object?.ImmOrOwnedObject?.objectId||this.inputs[e].UnresolvedObject.objectId}decodeInputU128(e){return Number(Ve.u128().parse(Uint8Array.from(Ke(this.inputs[e].Pure.bytes))))}decodeInputU64(e){return Number(Ve.u64().parse(Uint8Array.from(Ke(this.inputs[e].Pure.bytes))))}decodeInputU32(e){return Number(Ve.u32().parse(Uint8Array.from(Ke(this.inputs[e].Pure.bytes))))}decodeInputU8(e){return Number(Ve.u8().parse(Uint8Array.from(Ke(this.inputs[e].Pure.bytes))))}decodeInputAddress(e){return Ve.Address.parse(Uint8Array.from(Ke(this.inputs[e].Pure.bytes)))}decodeInputBool(e){return Ve.bool().parse(Uint8Array.from(Ke(this.inputs[e].Pure.bytes)))}shortTypeArg(e){return this.moveCall.MoveCall.typeArguments[e]}txArg(e){return this.moveCall.MoveCall.arguments[e]}};import{TurbosSdk as uf}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 uf(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:m,tickLower:b,tickUpper:S,deadline:I,txb:x}=this.data;return n.pool.addLiquidity({pool:o,slippage:m,address:i,amountA:s,amountB:c,tickLower:b,tickUpper:S,deadline:I,txb:x})}static fromData(t){return new a(t)}};import{TurbosSdk as pf}from"turbos-clmm-sdk";var Ii=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,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 mf}from"turbos-clmm-sdk";var Ci=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),{pool:o,address:i,nft:s,collectAmountA:c,collectAmountB:m,deadline:b,txb:S}=this.data;return n.pool.collectFee({pool:o,address:i,collectAmountA:c,collectAmountB:m,nft:s,deadline:b,txb:S})}static fromData(t){return new a(t)}};import{TurbosSdk as df}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 df(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,nft:s,rewardAmounts:c,deadline:m,txb:b}=this.data;return n.pool.collectReward({pool:o,address:i,rewardAmounts:c,nft:s,deadline:m,txb:b})}static fromData(t){return new a(t)}};import{TurbosSdk as ff}from"turbos-clmm-sdk";var ki=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new ff(t.network.replace("sui:",""),t.suiClient),{fee:o,address:i,tickLower:s,tickUpper:c,sqrtPrice:m,slippage:b,coinTypeA:S,coinTypeB:I,amountA:x,amountB:k,deadline:D,txb:M}=this.data;return n.pool.createPool({fee:o,amountA:x,amountB:k,address:i,tickLower:s,tickUpper:c,sqrtPrice:m,slippage:b,coinTypeA:S,coinTypeB:I,deadline:D,txb:M})}static fromData(t){return new a(t)}};import{TurbosSdk as hf}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 hf(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:m,nft:b,decreaseLiquidity:S,deadline:I,txb:x}=this.data;return n.pool.decreaseLiquidity({pool:o,slippage:m,address:i,amountA:s,amountB:c,nft:b,decreaseLiquidity:S,deadline:I,txb:x})}static fromData(t){return new a(t)}};import{TurbosSdk as gf}from"turbos-clmm-sdk";var vi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new gf(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:m,nft:b,decreaseLiquidity:S,deadline:I}=this.data,{txb:x,coinA:k,coinB:D}=await n.pool.decreaseLiquidityWithReturn({pool:o,slippage:m,address:i,amountA:s,amountB:c,nft:b,decreaseLiquidity:S,deadline:I});return x.transferObjects([k,D],this.data.address),x}static fromData(t){return new a(t)}};import{TurbosSdk as yf}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 yf(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:m,nft:b,deadline:S,txb:I}=this.data;return n.pool.increaseLiquidity({pool:o,slippage:m,address:i,amountA:s,amountB:c,nft:b,deadline:S,txb:I})}static fromData(t){return new a(t)}};import{Transaction as bf}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as Tf}from"@mysten/sui/utils";var Mi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new bf;return n.moveCall({target:`${$t.PackageId}::claim::claim`,typeArguments:[$t.turbosCoinType],arguments:[n.object($t.Claim),n.object(Tf)]}),n}static fromData(t){return new a(t)}};import{Transaction as Sf}from"@mysten/sui/transactions";var Oi=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:`${$t.PackageId}::claim::join`,typeArguments:[$t.turbosCoinType],arguments:[n.object($t.Claim)]}),n}static fromData(t){return new a(t)}};import{Transaction as wf}from"@mysten/sui/transactions";import{TurbosSdk as If}from"turbos-clmm-sdk";var Pi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new If(t.network.replace("sui:",""),t.suiClient),o=new wf;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 Cf}from"turbos-clmm-sdk";var Ri=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Cf(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 xf}from"turbos-clmm-sdk";var Bi=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 xf(t.network.replace("sui:",""),t.suiClient),{routes:o,coinTypeA:i,coinTypeB:s,address:c,amountA:m,amountB:b,slippage:S,amountSpecifiedIsInput:I,deadline:x,txb:k}=this.data;return n.trade.swap({routes:o,coinTypeA:i,coinTypeB:s,address:c,amountA:m,amountB:b,amountSpecifiedIsInput:I,slippage:S,deadline:x,txb:k})}static fromData(t){return new a(t)}};import{TurbosSdk as Df}from"turbos-clmm-sdk";import{Transaction as Ol}from"@mysten/sui/transactions";import{normalizeSuiObjectId as Pl}from"@mysten/sui/utils";import{unstable_getObjectId as kf}from"turbos-clmm-sdk";var Tn=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((m,b)=>Number(b.balance)-Number(m.balance)).some(m=>c>=n?!0:(c+=Number(m.balance),s.push(m),!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:`${Ht.PackageId}::custodian_v2::AccountCap`}});return t.data[0]?.data?kf(t.data[0].data):void 0}createAccount(e){let[t]=e.moveCall({typeArguments:[],target:`${Ht.PackageId}::clob_v2::create_account`,arguments:[]});return t}zero(e,t){return t.moveCall({typeArguments:[e],target:"0x2::coin::zero",arguments:[]})}};var Rl=89,Bl=1e6,El=async a=>{let{token1:e,token2:t,poolId:n,amountIn:o,currentAddress:i,turbosSdk:s}=a,c=new Ol,m=new Tn(s),b=await m.getCoinsData(i,t,o),[S,I]=m.splitAndMergeCoin(b,o,c);if(!S)throw new Error(`Not enough balance: ${t}`);let x=await m.IsAccountCap(i),k=x?c.object(x):m.createAccount(c),[D,M,L]=c.moveCall({typeArguments:[e,t],target:`${Ht.PackageId}::clob_v2::swap_exact_quote_for_base`,arguments:[c.object(String(n)),c.pure.u64(Rl),k,c.pure.u64(o),c.object(Pl("0x6")),S]});return I&&c.transferObjects([I],c.pure.address(i)),c.transferObjects([D],c.pure.address(i)),c.transferObjects([M],c.pure.address(i)),x||c.transferObjects([k],c.pure.address(i)),c.setSenderIfNotSet(i),c.setGasBudget(Bl),c},Nl=async a=>{let{token1:e,token2:t,poolId:n,amountIn:o,currentAddress:i,turbosSdk:s}=a,c=new Ol,m=new Tn(s),b=await m.getCoinsData(i,e,o),[S,I]=m.splitAndMergeCoin(b,o,c);if(!S)throw new Error(`Not enough balance: ${e}`);let x=await m.IsAccountCap(i),k=x?c.object(x):m.createAccount(c),D=m.zero(t,c),[M,L,U]=c.moveCall({typeArguments:[e,t],target:`${Ht.PackageId}::clob_v2::swap_exact_base_for_quote`,arguments:[c.object(String(n)),c.pure.u64(Rl),k,c.pure.u64(o),S,D,c.object(Pl("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([k],c.pure.address(i)),c.setSenderIfNotSet(i),c.setGasBudget(Bl),c};var Ei=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);return await Nl({...this.data,turbosSdk:n,currentAddress:t.account.address})}static fromData(t){return new a(t)}};import{TurbosSdk as vf}from"turbos-clmm-sdk";var Ni=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new vf(t.network.replace("sui:",""),t.suiClient);return await El({...this.data,turbosSdk:n,currentAddress:t.account.address})}static fromData(t){return new a(t)}};var Wi=class{application="turbos";supportSDK="@mysten/sui";async deserialize(e){console.log(e,"input");let t=new Mf(e.network.replace("sui:","")),n=await t.contract.getConfig(),{transaction:o,account:i}=e,c=await new Si(o,t,n).decode(i.address);return{txType:Af.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=ki.fromData(e.intentionData);break;case"AddLiquidity":i=wi.fromData(e.intentionData);break;case"IncreaseLiquidity":i=Ai.fromData(e.intentionData);break;case"DecreaseLiquidity":i=Di.fromData(e.intentionData);break;case"DecreaseLiquidityWithReturn":i=vi.fromData(e.intentionData);break;case"RemoveLiquidity":i=Pi.fromData(e.intentionData);break;case"removeLiquidityWithReturn":i=Ri.fromData(e.intentionData);break;case"CollectFee":i=Ci.fromData(e.intentionData);break;case"CollectReward":i=xi.fromData(e.intentionData);break;case"Burn":i=Ii.fromData(e.intentionData);break;case"Swap":i=Bi.fromData(e.intentionData);break;case"PrixJoin":i=Oi.fromData(e.intentionData);break;case"PrixClaim":i=Mi.fromData(e.intentionData);break;case"SwapExactBaseForQuote":i=Ei.fromData(e.intentionData);break;case"SwapExactQuoteForBase":i=Ni.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};import{TransactionType as Wf}from"@msafe/sui3-utils";import{TransactionType as Ss}from"@msafe/sui3-utils";import{bcs as Wl}from"@mysten/sui.js/bcs";import{normalizeStructTag as Rf,normalizeSuiAddress as Sn}from"@mysten/sui.js/utils";var Of={packageId:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",poolObjectId:"0x7fa2faa111b8c65bea48a23049bfd81ca8f971a262d981dcd9a17c3825cb5baf",metadataObjectId:"0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",systemStateObjectId:"0x0000000000000000000000000000000000000000000000000000000000000005",certType:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",gasBudget:5e7},At=Of;var _i=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:Ss.Other,type:"Stake",intentionData:{amount:e}}}decodeUnStake(){let t=this.transactions.find(n=>n.kind==="SplitCoins").amounts[0].value.toNumber();return{txType:Ss.Other,type:"UnStake",intentionData:{amount:t}}}decodeClaimTicket(){let e=this.helper.decodeOwnedObjectId(2);return console.log(e),{txType:Ss.Other,type:"ClaimTicket",intentionData:{ticketId:e}}}get helper(){let e=this.transactions.find(t=>t.kind==="MoveCall"&&t.target.startsWith(At.packageId));return new ws(e,this.txb)}},ws=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 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 Wl.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 Wl.de(t,new Uint8Array(n))}typeArg(e){return Rf(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};import{TransactionBlock as Bf}from"@mysten/sui.js/transactions";var Li=class a extends Xt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(t);let n=new Bf,{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 Ef}from"@mysten/sui.js/transactions";var ji=class a extends Xt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(t);let n=new Ef,{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 Nf}from"@mysten/sui.js/transactions";var Ui=class a extends Xt{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(t);let n=new Nf,{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]),m=n.object(s.coinObjectId);c.length&&n.mergeCoins(m,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 qi=class{application="volo";supportSDK="@mysten/sui.js";async deserialize(e){let{transactionBlock:t}=e,o=new _i(t).decode();return{txType:Wf.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n}=e,o;switch(e.txSubType){case"Stake":o=ji.fromData(e.intentionData);break;case"UnStake":o=Ui.fromData(e.intentionData);break;case"ClaimTicket":o=Li.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};import{TransactionType as Jf}from"@msafe/sui3-utils";import{asIntN as _l}from"@cetusprotocol/common-sdk";import{TransactionType as de}from"@msafe/sui3-utils";import{fromBase64 as wn}from"@mysten/bcs";import{bcs as In}from"@mysten/sui/bcs";var Fi=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(_l(BigInt(this.getU32(this.getInputIndex(e,2)))).toString()),upperTick:Number(_l(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(In.u32().parse(Uint8Array.from(wn(this.inputs[e].Pure.bytes))))}getU64(e){return In.u64().parse(Uint8Array.from(wn(this.inputs[e].Pure.bytes)))}getU128(e){return In.u128().parse(Uint8Array.from(wn(this.inputs[e].Pure.bytes)))}getBoolean(e){return In.bool().parse(Uint8Array.from(wn(this.inputs[e].Pure.bytes)))}getAddress(e){return In.Address.parse(Uint8Array.from(wn(this.inputs[e].Pure.bytes)))}getTypeArguments(e){return e.MoveCall.typeArguments||[]}getInputIndex(e,t){return e.MoveCall.arguments[t].Input}};import{TransactionType as Kf}from"@msafe/sui3-utils";import{buildTx as jf,getQuote as Uf}from"@bluefin-exchange/bluefin7k-aggregator-sdk";import{BN as we,ClmmPoolUtil as qf}from"@firefly-exchange/library-sui";import{Decimal as Ff}from"turbos-clmm-sdk";import{SuiClient as _f}from"@firefly-exchange/library-sui";import{OnChainCalls as Lf}from"@firefly-exchange/library-sui/spot";var Ll={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 _f({url:Ll.rpc});return new Lf(t,Ll.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 we(e.liquidity),tokenMaxA:new we(e.maxAmountTokenA),tokenMaxB:new we(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 Uf({tokenIn:e.tokenIn.address,tokenOut:e.tokenOut.address,amountIn:new Ff(e.amountIn).mul(10**e.tokenIn.decimals).toString()}),s=await jf({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{...qf.estLiquidityAndCoinAmountFromOneAmounts(t.lowerTick,t.upperTick,new we(t.tokenAmount),t.isTokenAFixed,!0,0,new we(e.current_sqrt_price)),tokenMaxA:new we(t.maxAmountTokenA),tokenMaxB:new we(t.maxAmountTokenB)}}};var Ki=class a extends w{constructor(t){super(t);this.data=t}data;txType=Kf.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 Vf}from"@msafe/sui3-utils";var Vi=class a extends w{constructor(t){super(t);this.data=t}data;txType=Vf.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 $f}from"@msafe/sui3-utils";var $i=class a extends w{constructor(t){super(t);this.data=t}data;txType=$f.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 Hf}from"@msafe/sui3-utils";var Hi=class a extends w{constructor(t){super(t);this.data=t}data;txType=Hf.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 Gf}from"@msafe/sui3-utils";var Gi=class a extends w{constructor(t){super(t);this.data=t}data;txType=Gf.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 Xf}from"@msafe/sui3-utils";var Xi=class a extends w{constructor(t){super(t);this.data=t}data;txType=Xf.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 zf}from"@msafe/sui3-utils";var zi=class a extends w{constructor(t){super(t);this.data=t}data;txType=zf.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 Qf}from"@msafe/sui3-utils";var Qi=class a extends w{constructor(t){super(t);this.data=t}data;txType=Qf.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 Ji=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 Fi(t,n).decode();return{txType:Jf.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=Xi.fromData(e.intentionData);break;case"ProvideLiquidity":i=zi.fromData(e.intentionData);break;case"RemoveLiquidity":i=Qi.fromData(e.intentionData);break;case"ClosePosition":i=Vi.fromData(e.intentionData);break;case"CollectFee":i=$i.fromData(e.intentionData);break;case"CollectRewards":i=Hi.fromData(e.intentionData);break;case"CollectRewardsAndFee":i=Gi.fromData(e.intentionData);break;case"Aggregator7KSwap":i=Ki.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};import{TransactionType as Wh}from"@msafe/sui3-utils";import{MmtSDK as rh}from"@mmt-finance/clmm-sdk";import{Transaction as sh}from"@mysten/sui/transactions";var R=Tu(Ul());import{convertI32ToSigned as Cs,TickMath as Kl}from"@mmt-finance/clmm-sdk/dist/utils/math/tickMath";import nh from"bignumber.js";var Yf="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",Nt=a=>a!=="0x2::sui::SUI"?a:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",Zf=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},th=(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")},eh=(a,e,t,n)=>{if(a===Yf){let[o]=n.splitCoins(n.gas,[n.pure.u64(t)]);return o}else{let o=th(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 ql(a,e,t,n,o){let i=await Zf({suiClient:a.rpcClient,address:e,type:t});return eh(Nt(t),i.map(c=>({balance:BigInt(c.balance),objectId:c.coinObjectId})),n,o)}var Ie=(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 Fl({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},m=n.rewarders.map(S=>S.coinType);m.length>0&&(console.log("claimRewardsAsTargetCoin input",{pool:c,positionId:t,rewarderCoinTypes:m,targetCoinType:i,slippage:s,toAddress:e}),await a.Pool.claimRewardsAs({txb:o,pool:c,positionId:t,rewarderCoinTypes:m,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 oh(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 ah(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 Vl=(a,e,t)=>{let n=Cs(t?a+a%(e??1):a-a%(e??1));return n>0?new R.default(oh(n)):new R.default(ah(n))};function $l(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=$l(t,n),c;return Number(t)?c=await ql(i,a,Nt(e),s,o):[c]=o.moveCall({target:"0x2::coin::zero",typeArguments:[e],arguments:[]}),c}function Hl({mmt:a,tx:e,poolModel:t,selectedLowTick:n,selectedHighTick:o}){let i=Vl(Cs(n),t.tickSpacing),s=Vl(Cs(o),t.tickSpacing);return a.Position.openPosition(e,t,i.toString(),s.toString())}var ih=(a,e)=>{let n=1e4-Math.floor(e*100);return a*BigInt(n)/BigInt(1e4)};function Yi(a,e,t){let n=$l(a,e);return Number(a)===0?BigInt(0):ih(n,t)}async function Ce({poolId:a,currentSqrtPrice:e,tokenX:t,tokenY:n,slippagePercentage:o,isTokenX:i,suiClient:s}){let m=(await s.getObject({id:a,options:{showContent:!0}}))?.data?.content?.fields?.sqrt_price??e,b=Kl.sqrtPriceX64ToPrice(new R.default(m?.toString()),t.decimals,n.decimals),S=i?(100-o)/100:(100+o)/100,I=Kl.priceToSqrtPriceX64(b.mul(S),t.decimals,n.decimals);return BigInt(I.toString())}var Gl=async(a,e,t,n,o,i,s,c,m,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},k=Hl({mmt:a,tx:e,poolModel:x,selectedLowTick:c,selectedHighTick:m}),D=Yi(n,i.tokenX.decimals,b),M=Yi(o,i.tokenY.decimals,b);a.Pool.addLiquidity(e,x,k,S,I,D,M,t),e.transferObjects([k],e.pure.address(t))},Xl=async(a,e,t,n,o,i,s,c,m,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},k=Hl({mmt:a,tx:e,poolModel:x,selectedLowTick:c,selectedHighTick:m}),D=await Ce({suiClient:t,poolId:s.poolId,currentSqrtPrice:s.currentSqrtPrice,tokenX:s.tokenX,tokenY:s.tokenY,slippagePercentage:b,isTokenX:i});await a.Pool.addLiquiditySingleSidedV2({txb:e,pool:x,position:k,inputCoin:I,isXtoY:i,limitSqrtPrice:D,slippagePercentage:S,transferToAddress:n,useMvr:!0}),e.transferObjects([k],e.pure.address(n))}catch(I){console.error(I)}},zl=async(a,e,t,n,o,i,s,c)=>{let m=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=Yi(n,i.tokenX.decimals,c),x=Yi(o,i.tokenY.decimals,c);a.Pool.addLiquidity(e,S,s,m,b,I,x,t)},Ql=async(a,e,t,n,o,i,s,c,m)=>{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 Ce({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:m,transferToAddress:t})}catch(b){throw console.error(b),b}},Jl=(a,e)=>BigInt(e===100?a:new nh(a).multipliedBy(e/100).toFixed(0)),Yl=async(a,e,t,n,o,i)=>{let s=Jl(t.liquidity,o),c=n.tokenX.coinType,m=n.tokenY.coinType,b={objectId:n?.poolId,tokenXType:c,tokenYType:m};a.Pool.removeLiquidity(i,b,t.objectId,s,BigInt(0),BigInt(0),e),Ie(a,e,t,n,i),o===100&&a.Position.closePosition(i,t.objectId)},Zl=async({sdk:a,address:e,position:t,pool:n,withdrawPercentage:o,txb:i,targetCoinType:s,slippage:c})=>{let m=Jl(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:k,removeLpCoinB:D}=a.Pool.removeLiquidity(i,x,t.objectId,m,BigInt(0),BigInt(0)),M=await Ce({suiClient:a.rpcClient,poolId:n.poolId,currentSqrtPrice:n.currentSqrtPrice,tokenX:n.tokenX,tokenY:n.tokenY,isTokenX:I,slippagePercentage:c}),L=I?k:D,U=i.moveCall({target:"0x2::coin::value",arguments:[L],typeArguments:[I?b:S]});i.transferObjects([I?D:k],e),a.Pool.swapV2({txb:i,transferToAddress:e,pool:x,limitSqrtPrice:M,amount:U,inputCoin:L,isXtoY:I}),Ie(a,e,t,n,i),o===100&&a.Position.closePosition(i,t.objectId)};var Zi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=rh.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amountA:i,amountB:s,pool:c,selectedLowTick:m,selectedHighTick:b,slippage:S}=n,I=new sh;return await Gl(t,I,o,i,s,c,c.poolId,m,b,S),I}static fromData(t){return new a(t)}};import{MmtSDK as ch}from"@mmt-finance/clmm-sdk";import{Transaction as lh}from"@mysten/sui/transactions";var tr=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,amount:i,isTokenX:s,pool:c,selectedLowTick:m,selectedHighTick:b,swapSlippage:S,addLiquiditySlippage:I}=n,x=new lh;return await Xl(t,x,t.rpcClient,o,i,s,c,m,b,S,I),x}static fromData(t){return new a(t)}};import{MmtSDK as uh}from"@mmt-finance/clmm-sdk";import{VeMMT as ph}from"@mmt-finance/ve-sdk-v1";import{Transaction as mh}from"@mysten/sui/transactions";var $e="0x35169bc93e1fddfcf3a82a9eae726d349689ed59e4b065369af8789fe59f8608::mmt::MMT";var Cn=async a=>{let e=await a.getSyncEpochInfo();if(!e)throw new Error("Failed to sync epoch");return e},tu=async(a,e,t,n,o,i,s,c)=>{let m=Number(n);if(!n||Number.isNaN(m)||m<=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 Cn(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 k=c.getData().commands.length;if(k===0)throw new Error(`Bond Failed: Transaction has no commands. enableAutoMaxBond: ${i}, unbondAt: ${s}, amount: ${n}`);if(k===I)throw new Error(`Bond Failed: No new commands were added by bond operation. Commands before: ${I}, after: ${k}`)},eu=async(a,e,t,n,o,i,s,c)=>{let m=await Cn(a);if(await a.syncOrAdvanceEpoch(c,m.currentEpoch,m.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)}},nu=async(a,e,t,n,o)=>{let i=await Cn(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())},ou=async(a,e,t,n)=>{let o=await Cn(a);await a.syncOrAdvanceEpoch(n,o.currentEpoch,o.syncedEpoch),await a.claimReward(n,t,e),await a.unbond(n,t,e)},au=async(a,e,t,n)=>{if(t.length>0&&t.some(o=>o.userRewardAmount>0)){let o=await Cn(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())}},iu=async(a,e,t,n,o,i,s,c,m)=>{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($e)){o.transferObjects(I,o.pure.address(t));return}let x=c?.[i]?.[$e];if(!x||x.length===0)throw new Error(`No swap route found from ${$e} to ${i}`);let[k,...D]=I;D.length>0&&o.mergeCoins(k,D);let M=k,L=o.moveCall({target:"0x2::coin::value",arguments:[M],typeArguments:[$e]}),U=Nt($e);for(let q=0;q<x.length;q++){let Mt=x[q],W=m.find(H=>H.poolId===Mt);if(!W)throw new Error(`Pool ${Mt} not found`);let Rt=Nt(W.tokenXType||W.tokenX?.coinType||"")===U,ke={objectId:W.poolId,tokenXType:W.tokenXType||W.tokenX?.coinType||"",tokenYType:W.tokenYType||W.tokenY?.coinType||""},xn=await Ce({suiClient:a.rpcClient,poolId:W.poolId,currentSqrtPrice:W.currentSqrtPrice,tokenX:W.tokenX,tokenY:W.tokenY,slippagePercentage:s,isTokenX:Rt}),{outputCoin:kn,leftoverCoin:He}=a.Pool.swapV2({txb:o,pool:ke,amount:L,inputCoin:M,isXtoY:Rt,limitSqrtPrice:xn});if(o.transferObjects([He],o.pure.address(t)),M=kn,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 er=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=uh.NEW({network:"mainnet"}),o=new ph(t.suiClient,"mainnet"),{params:i}=this.data,{address:s,positions:c,pools:m,veMMTs:b}=i,S=new mh;for(let I of c){let x=m.find(k=>k.poolId===I.poolId);x&&Ie(n,s,I,x,S)}return await au(o,s,b,S),S}static fromData(t){return new a(t)}};import{MmtSDK as dh}from"@mmt-finance/clmm-sdk";import{VeMMT as fh}from"@mmt-finance/ve-sdk-v1";import{Transaction as hh}from"@mysten/sui/transactions";var nr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=dh.NEW({network:"mainnet"}),o=new fh(t.suiClient,"mainnet"),{params:i}=this.data,{claimVeMMTParams:s}=i,{address:c,veMMTs:m,targetCoinType:b,slippage:S,claimRoutes:I,pools:x}=s,k=new hh;return await Promise.all(i.claimParams.map(D=>Fl({...D,sdk:n,txb:k}))),await iu(n,o,c,m,k,b,S,I,x),k}static fromData(t){return new a(t)}};import{MmtSDK as gh}from"@mmt-finance/clmm-sdk";import{Transaction as yh}from"@mysten/sui/transactions";var or=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=gh.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,position:i,pool:s}=n,c=new yh;return Ie(t,o,i,s,c),c}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 ar=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,amountA:i,amountB:s,pool:c,positionObjectId:m,slippage:b}=n,S=new Th;return await zl(t,S,o,i,s,c,m,b),S}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 ir=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,amount:i,isTokenX:s,pool:c,positionObjectId:m,swapSlippage:b,addLiquiditySlippage:S}=n,I=new wh;return await Ql(t,I,o,i,s,c,m,b,S),I}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 rr=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,{pool:o,position:i,address:s,withdrawPercentage:c,zapOutOn:m,targetCoinType:b,slippage:S}=n,I=new Ch;return m?await Zl({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 ru}from"@mysten/sui/transactions";import{LstClient as su}from"@suilend/springsui-sdk";var xs={id:"0x0431232199873db77a92aa645cd43521437e9cc5c6fff07fd03edb88afe0b25a",type:"0x2b6602099970374cf58a2a1b9d96f005fccceb81e92eb059873baf420eb6c717::x_sui::X_SUI",weightHookId:"0x9e35c13dbb0bc437e8ad5a95ec463622f58763e060552ae8d100db77f4904601"},cu=async(a,e,t)=>{let n=await su.initialize(a,xs),o=new ru,[i]=o.splitCoins(o.gas,[BigInt(t)]),s=n.mint(o,i);return o.transferObjects([s],e),o},lu=async(a,e,t)=>{let n=await su.initialize(a,xs),o=await a.getCoins({owner:e,coinType:xs.type,limit:1e3});if(o.data.length===0)throw new Error("No lst coins found");let i=new ru,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)]),m=n.redeem(i,c);return i.transferObjects([m],e),i};var sr=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 kh}from"@mmt-finance/clmm-sdk";import{Transaction as Dh}from"@mysten/sui/transactions";import{mappedMmtV3Pool as xh}from"@mmt-finance/clmm-sdk/dist/utils/poolUtils";var uu=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}),m=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:k,isStable:D,currentSqrtPrice:M}=e[S],{id:L,isReverse:U}=xh[I]||{id:I,isReverse:!1},q=Nt(x.coinType)===Nt(b);q=U?!q:q;let Mt=U?k.coinType:x.coinType,W=U?x.coinType:k.coinType,xe=await Ce({poolId:L,tokenX:x,tokenY:k,slippagePercentage:s,isTokenX:q,suiClient:a.rpcClient,currentSqrtPrice:M}),Rt=a.Pool.swap(i,{objectId:L,tokenXType:Mt,tokenYType:W,isStable:D},m,c,q,void 0,xe,!1);i.transferObjects([c],i.pure.address(o)),c=Rt,b=q?W:Mt,m=i.moveCall({target:"0x2::coin::value",typeArguments:[b],arguments:[c]})}i.transferObjects([c],i.pure.address(o))};var cr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=kh.NEW({network:"mainnet"}),{params:n}=this.data,{route:o,tokenIn:i,amountIn:s,address:c,slippage:m}=n,b=new Dh;return await uu(t,o,i,s,c,b,m),b}static fromData(t){return new a(t)}};var lr=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 lu(t.suiClient,o,i)}static fromData(t){return new a(t)}};import{MmtSDK as vh}from"@mmt-finance/clmm-sdk";import{VeMMT as Ah}from"@mmt-finance/ve-sdk-v1";import{Transaction as Mh}from"@mysten/sui/transactions";var ur=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=vh.NEW({network:"mainnet"}),o=new Ah(t.suiClient,"mainnet"),{params:i}=this.data,{token:s,amount:c,address:m,enableAutoMaxBond:b,unbondAt:S}=i,I=new Mh;return await tu(n,o,s,c,m,b,S,I),I}static fromData(t){return new a(t)}};import{VeMMT as Oh}from"@mmt-finance/ve-sdk-v1";import{Transaction as Ph}from"@mysten/sui/transactions";var pr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Oh(t.suiClient,"mainnet"),{params:o}=this.data,{address:i,veId:s,currentUnbondAt:c,isCurrentlyMaxBond:m,enableAutoMaxBond:b,unbondAt:S}=o,I=new Ph;return await eu(n,i,s,c,m,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 mr=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,selectedVeMMTIds:c}=o,m=new Bh;return await nu(n,i,s,c,m),m}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 dr=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}=o,c=new Nh;return await ou(n,i,s,c),c}static fromData(t){return new a(t)}};var fr=class{application="mmt-dex";supportSDK="@mysten/sui";async deserialize(e){let{appContext:t}=e;return{txType:Wh.Other,txSubType:t.action,intentionData:t}}async build(e){let t;switch(e.txSubType){case"Swap":t=cr.fromData(e.intentionData);break;case"AddLiquidity":t=Zi.fromData(e.intentionData);break;case"AddLiquiditySingleSide":t=tr.fromData(e.intentionData);break;case"ClaimRewards":t=or.fromData(e.intentionData);break;case"ClaimAllRewards":t=er.fromData(e.intentionData);break;case"ClaimRewardsAs":t=nr.fromData(e.intentionData);break;case"RemoveLiquidity":t=rr.fromData(e.intentionData);break;case"StakeXSui":t=sr.fromData(e.intentionData);break;case"UnstakeXSui":t=lr.fromData(e.intentionData);break;case"ManageLiquidity":t=ar.fromData(e.intentionData);break;case"ManageLiquiditySingleSide":t=ir.fromData(e.intentionData);break;case"Bond":t=ur.fromData(e.intentionData);break;case"Extend":t=pr.fromData(e.intentionData);break;case"Merge":t=mr.fromData(e.intentionData);break;case"Unbond":t=dr.fromData(e.intentionData);break;default:throw new Error(`not implemented ${e.txSubType}`)}return t.build({suiClient:e.suiClient})}};var F4=Ta.fromHelpers([new na,new fa,new Zo,new ha,new vo,new Wi,new fr,new Ya,new qi,new Zn,new ci,new hi,new En,new Ji,new Ti]);export{F4 as appHelpers};
|
|
1
|
+
var Du=Object.create;var _r=Object.defineProperty;var ku=Object.getOwnPropertyDescriptor;var vu=Object.getOwnPropertyNames;var Au=Object.getPrototypeOf,Mu=Object.prototype.hasOwnProperty;var Ou=(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),Hs=(a,e)=>{for(var t in e)_r(a,t,{get:e[t],enumerable:!0})},Ru=(a,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of vu(e))!Mu.call(a,o)&&o!==t&&_r(a,o,{get:()=>e[o],enumerable:!(n=ku(e,o))||n.enumerable});return a};var Bu=(a,e,t)=>(t=a!=null?Du(Au(a)):{},Ru(e||!a||!a.__esModule?_r(t,"default",{value:a,enumerable:!0}):t,a));var tu=Pu((Zl,vs)=>{"use strict";(function(a,e){"use strict";function t(y,r){if(!y)throw new Error(r||"Assertion failed")}function n(y,r){y.super_=r;var u=function(){};u.prototype=r.prototype,y.prototype=new u,y.prototype.constructor=y}function o(y,r,u){if(o.isBN(y))return y;this.negative=0,this.words=null,this.length=0,this.red=null,y!==null&&((r==="le"||r==="be")&&(u=r,r=10),this._init(y||0,r||10,u||"be"))}typeof a=="object"?a.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var i;try{typeof window<"u"&&typeof window.Buffer<"u"?i=window.Buffer:i=Ou("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,p){if(typeof r=="number")return this._initNumber(r,u,p);if(typeof r=="object")return this._initArray(r,u,p);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,p):(this._parseBase(r,u,d),p==="le"&&this._initArray(this.toArray(),u,p)))},o.prototype._initNumber=function(r,u,p){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),p==="le"&&this._initArray(this.toArray(),u,p)},o.prototype._initArray=function(r,u,p){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(p==="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(p==="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 p=s(y,u);return u-1>=r&&(p|=s(y,u-1)<<4),p}o.prototype._parseHex=function(r,u,p){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(p==="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 m(y,r,u,p){for(var d=0,h=0,T=Math.min(y.length,u),C=r;C<T;C++){var f=y.charCodeAt(C)-48;d*=p,f>=49?h=f-49+10:f>=17?h=f-17+10:h=f,t(f>=0&&h<p,"Invalid character"),d+=h}return d}o.prototype._parseBase=function(r,u,p){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-p,C=T%d,f=Math.min(T,T-C)+p,l=0,g=p;g<f;g+=d)l=m(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=m(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 p;if(r===16||r==="hex"){p="";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?p=I[6-f.length]+f+p:p=f+p}for(h!==0&&(p=h.toString(16)+p);p.length%u!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}if(r===(r|0)&&r>=2&&r<=36){var l=x[r],g=D[r];p="";var v=this.clone();for(v.negative=0;!v.isZero();){var O=v.modrn(g).toString(r);v=v.idivn(g),v.isZero()?p=O+p:p=I[l-O.length]+O+p}for(this.isZero()&&(p="0"+p);p.length%u!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}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,p){this._strip();var d=this.byteLength(),h=p||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 p=0,d=0,h=0,T=0;h<this.length;h++){var C=this.words[h]<<T|d;r[p++]=C&255,p<r.length&&(r[p++]=C>>8&255),p<r.length&&(r[p++]=C>>16&255),T===6?(p<r.length&&(r[p++]=C>>24&255),d=0,T=0):(d=C>>>24,T+=2)}if(p<r.length)for(r[p++]=d;p<r.length;)r[p++]=0},o.prototype._toArrayLikeBE=function(r,u){for(var p=r.length-1,d=0,h=0,T=0;h<this.length;h++){var C=this.words[h]<<T|d;r[p--]=C&255,p>=0&&(r[p--]=C>>8&255),p>=0&&(r[p--]=C>>16&255),T===6?(p>=0&&(r[p--]=C>>24&255),d=0,T=0):(d=C>>>24,T+=2)}if(p>=0)for(r[p--]=d;p>=0;)r[p--]=0},Math.clz32?o.prototype._countBits=function(r){return 32-Math.clz32(r)}:o.prototype._countBits=function(r){var u=r,p=0;return u>=4096&&(p+=13,u>>>=13),u>=64&&(p+=7,u>>>=7),u>=8&&(p+=4,u>>>=4),u>=2&&(p+=2,u>>>=2),p+u},o.prototype._zeroBits=function(r){if(r===0)return 26;var u=r,p=0;return(u&8191)===0&&(p+=13,u>>>=13),(u&127)===0&&(p+=7,u>>>=7),(u&15)===0&&(p+=4,u>>>=4),(u&3)===0&&(p+=2,u>>>=2),(u&1)===0&&p++,p},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 p=u/26|0,d=u%26;r[u]=y.words[p]>>>d&1}return r}o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var r=0,u=0;u<this.length;u++){var p=this._zeroBits(this.words[u]);if(r+=p,p!==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 p=0;p<u.length;p++)this.words[p]=this.words[p]&r.words[p];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,p;this.length>r.length?(u=this,p=r):(u=r,p=this);for(var d=0;d<p.length;d++)this.words[d]=u.words[d]^p.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,p=r%26;this._expand(u),p>0&&u--;for(var d=0;d<u;d++)this.words[d]=~this.words[d]&67108863;return p>0&&(this.words[d]=~this.words[d]&67108863>>26-p),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 p=r/26|0,d=r%26;return this._expand(p+1),u?this.words[p]=this.words[p]|1<<d:this.words[p]=this.words[p]&~(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 p,d;this.length>r.length?(p=this,d=r):(p=r,d=this);for(var h=0,T=0;T<d.length;T++)u=(p.words[T]|0)+(d.words[T]|0)+h,this.words[T]=u&67108863,h=u>>>26;for(;h!==0&&T<p.length;T++)u=(p.words[T]|0)+h,this.words[T]=u&67108863,h=u>>>26;if(this.length=p.length,h!==0)this.words[this.length]=h,this.length++;else if(p!==this)for(;T<p.length;T++)this.words[T]=p.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 p=this.cmp(r);if(p===0)return this.negative=0,this.length=1,this.words[0]=0,this;var d,h;p>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 p=y.length+r.length|0;u.length=p,p=p-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<p;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,p){var d=r.words,h=u.words,T=p.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,Os=d[3]|0,X=Os&8191,z=Os>>>13,Ps=d[4]|0,Q=Ps&8191,J=Ps>>>13,Rs=d[5]|0,Y=Rs&8191,Z=Rs>>>13,Bs=d[6]|0,tt=Bs&8191,et=Bs>>>13,Es=d[7]|0,nt=Es&8191,ot=Es>>>13,Ns=d[8]|0,at=Ns&8191,it=Ns>>>13,Ws=d[9]|0,rt=Ws&8191,st=Ws>>>13,_s=h[0]|0,ct=_s&8191,lt=_s>>>13,Ls=h[1]|0,ut=Ls&8191,pt=Ls>>>13,js=h[2]|0,mt=js&8191,dt=js>>>13,Us=h[3]|0,ft=Us&8191,ht=Us>>>13,qs=h[4]|0,gt=qs&8191,yt=qs>>>13,Fs=h[5]|0,bt=Fs&8191,Tt=Fs>>>13,Ks=h[6]|0,St=Ks&8191,wt=Ks>>>13,Vs=h[7]|0,It=Vs&8191,Ct=Vs>>>13,$s=h[8]|0,xt=$s&8191,Dt=$s>>>13,Gs=h[9]|0,kt=Gs&8191,vt=Gs>>>13;p.negative=r.negative^u.negative,p.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 br=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(br>>>26)|0,br&=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,pt)|0,l=l+Math.imul(P,ut)|0,g=g+Math.imul(P,pt)|0;var Tr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Tr>>>26)|0,Tr&=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(_,pt)|0,l=l+Math.imul(F,ut)|0,g=g+Math.imul(F,pt)|0,f=f+Math.imul(O,mt)|0,l=l+Math.imul(O,dt)|0,l=l+Math.imul(P,mt)|0,g=g+Math.imul(P,dt)|0;var Sr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Sr>>>26)|0,Sr&=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,pt)|0,l=l+Math.imul($,ut)|0,g=g+Math.imul($,pt)|0,f=f+Math.imul(_,mt)|0,l=l+Math.imul(_,dt)|0,l=l+Math.imul(F,mt)|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 wr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(wr>>>26)|0,wr&=67108863,f=Math.imul(Q,ct),l=Math.imul(Q,lt),l=l+Math.imul(J,ct)|0,g=Math.imul(J,lt),f=f+Math.imul(X,ut)|0,l=l+Math.imul(X,pt)|0,l=l+Math.imul(z,ut)|0,g=g+Math.imul(z,pt)|0,f=f+Math.imul(K,mt)|0,l=l+Math.imul(K,dt)|0,l=l+Math.imul($,mt)|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 Ir=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Ir>>>26)|0,Ir&=67108863,f=Math.imul(Y,ct),l=Math.imul(Y,lt),l=l+Math.imul(Z,ct)|0,g=Math.imul(Z,lt),f=f+Math.imul(Q,ut)|0,l=l+Math.imul(Q,pt)|0,l=l+Math.imul(J,ut)|0,g=g+Math.imul(J,pt)|0,f=f+Math.imul(X,mt)|0,l=l+Math.imul(X,dt)|0,l=l+Math.imul(z,mt)|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 Cr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Cr>>>26)|0,Cr&=67108863,f=Math.imul(tt,ct),l=Math.imul(tt,lt),l=l+Math.imul(et,ct)|0,g=Math.imul(et,lt),f=f+Math.imul(Y,ut)|0,l=l+Math.imul(Y,pt)|0,l=l+Math.imul(Z,ut)|0,g=g+Math.imul(Z,pt)|0,f=f+Math.imul(Q,mt)|0,l=l+Math.imul(Q,dt)|0,l=l+Math.imul(J,mt)|0,g=g+Math.imul(J,dt)|0,f=f+Math.imul(X,ft)|0,l=l+Math.imul(X,ht)|0,l=l+Math.imul(z,ft)|0,g=g+Math.imul(z,ht)|0,f=f+Math.imul(K,gt)|0,l=l+Math.imul(K,yt)|0,l=l+Math.imul($,gt)|0,g=g+Math.imul($,yt)|0,f=f+Math.imul(_,bt)|0,l=l+Math.imul(_,Tt)|0,l=l+Math.imul(F,bt)|0,g=g+Math.imul(F,Tt)|0,f=f+Math.imul(O,St)|0,l=l+Math.imul(O,wt)|0,l=l+Math.imul(P,St)|0,g=g+Math.imul(P,wt)|0;var xr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(xr>>>26)|0,xr&=67108863,f=Math.imul(nt,ct),l=Math.imul(nt,lt),l=l+Math.imul(ot,ct)|0,g=Math.imul(ot,lt),f=f+Math.imul(tt,ut)|0,l=l+Math.imul(tt,pt)|0,l=l+Math.imul(et,ut)|0,g=g+Math.imul(et,pt)|0,f=f+Math.imul(Y,mt)|0,l=l+Math.imul(Y,dt)|0,l=l+Math.imul(Z,mt)|0,g=g+Math.imul(Z,dt)|0,f=f+Math.imul(Q,ft)|0,l=l+Math.imul(Q,ht)|0,l=l+Math.imul(J,ft)|0,g=g+Math.imul(J,ht)|0,f=f+Math.imul(X,gt)|0,l=l+Math.imul(X,yt)|0,l=l+Math.imul(z,gt)|0,g=g+Math.imul(z,yt)|0,f=f+Math.imul(K,bt)|0,l=l+Math.imul(K,Tt)|0,l=l+Math.imul($,bt)|0,g=g+Math.imul($,Tt)|0,f=f+Math.imul(_,St)|0,l=l+Math.imul(_,wt)|0,l=l+Math.imul(F,St)|0,g=g+Math.imul(F,wt)|0,f=f+Math.imul(O,It)|0,l=l+Math.imul(O,Ct)|0,l=l+Math.imul(P,It)|0,g=g+Math.imul(P,Ct)|0;var Dr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Dr>>>26)|0,Dr&=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,pt)|0,l=l+Math.imul(ot,ut)|0,g=g+Math.imul(ot,pt)|0,f=f+Math.imul(tt,mt)|0,l=l+Math.imul(tt,dt)|0,l=l+Math.imul(et,mt)|0,g=g+Math.imul(et,dt)|0,f=f+Math.imul(Y,ft)|0,l=l+Math.imul(Y,ht)|0,l=l+Math.imul(Z,ft)|0,g=g+Math.imul(Z,ht)|0,f=f+Math.imul(Q,gt)|0,l=l+Math.imul(Q,yt)|0,l=l+Math.imul(J,gt)|0,g=g+Math.imul(J,yt)|0,f=f+Math.imul(X,bt)|0,l=l+Math.imul(X,Tt)|0,l=l+Math.imul(z,bt)|0,g=g+Math.imul(z,Tt)|0,f=f+Math.imul(K,St)|0,l=l+Math.imul(K,wt)|0,l=l+Math.imul($,St)|0,g=g+Math.imul($,wt)|0,f=f+Math.imul(_,It)|0,l=l+Math.imul(_,Ct)|0,l=l+Math.imul(F,It)|0,g=g+Math.imul(F,Ct)|0,f=f+Math.imul(O,xt)|0,l=l+Math.imul(O,Dt)|0,l=l+Math.imul(P,xt)|0,g=g+Math.imul(P,Dt)|0;var kr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(kr>>>26)|0,kr&=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,pt)|0,l=l+Math.imul(it,ut)|0,g=g+Math.imul(it,pt)|0,f=f+Math.imul(nt,mt)|0,l=l+Math.imul(nt,dt)|0,l=l+Math.imul(ot,mt)|0,g=g+Math.imul(ot,dt)|0,f=f+Math.imul(tt,ft)|0,l=l+Math.imul(tt,ht)|0,l=l+Math.imul(et,ft)|0,g=g+Math.imul(et,ht)|0,f=f+Math.imul(Y,gt)|0,l=l+Math.imul(Y,yt)|0,l=l+Math.imul(Z,gt)|0,g=g+Math.imul(Z,yt)|0,f=f+Math.imul(Q,bt)|0,l=l+Math.imul(Q,Tt)|0,l=l+Math.imul(J,bt)|0,g=g+Math.imul(J,Tt)|0,f=f+Math.imul(X,St)|0,l=l+Math.imul(X,wt)|0,l=l+Math.imul(z,St)|0,g=g+Math.imul(z,wt)|0,f=f+Math.imul(K,It)|0,l=l+Math.imul(K,Ct)|0,l=l+Math.imul($,It)|0,g=g+Math.imul($,Ct)|0,f=f+Math.imul(_,xt)|0,l=l+Math.imul(_,Dt)|0,l=l+Math.imul(F,xt)|0,g=g+Math.imul(F,Dt)|0,f=f+Math.imul(O,kt)|0,l=l+Math.imul(O,vt)|0,l=l+Math.imul(P,kt)|0,g=g+Math.imul(P,vt)|0;var vr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(vr>>>26)|0,vr&=67108863,f=Math.imul(rt,ut),l=Math.imul(rt,pt),l=l+Math.imul(st,ut)|0,g=Math.imul(st,pt),f=f+Math.imul(at,mt)|0,l=l+Math.imul(at,dt)|0,l=l+Math.imul(it,mt)|0,g=g+Math.imul(it,dt)|0,f=f+Math.imul(nt,ft)|0,l=l+Math.imul(nt,ht)|0,l=l+Math.imul(ot,ft)|0,g=g+Math.imul(ot,ht)|0,f=f+Math.imul(tt,gt)|0,l=l+Math.imul(tt,yt)|0,l=l+Math.imul(et,gt)|0,g=g+Math.imul(et,yt)|0,f=f+Math.imul(Y,bt)|0,l=l+Math.imul(Y,Tt)|0,l=l+Math.imul(Z,bt)|0,g=g+Math.imul(Z,Tt)|0,f=f+Math.imul(Q,St)|0,l=l+Math.imul(Q,wt)|0,l=l+Math.imul(J,St)|0,g=g+Math.imul(J,wt)|0,f=f+Math.imul(X,It)|0,l=l+Math.imul(X,Ct)|0,l=l+Math.imul(z,It)|0,g=g+Math.imul(z,Ct)|0,f=f+Math.imul(K,xt)|0,l=l+Math.imul(K,Dt)|0,l=l+Math.imul($,xt)|0,g=g+Math.imul($,Dt)|0,f=f+Math.imul(_,kt)|0,l=l+Math.imul(_,vt)|0,l=l+Math.imul(F,kt)|0,g=g+Math.imul(F,vt)|0;var Ar=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Ar>>>26)|0,Ar&=67108863,f=Math.imul(rt,mt),l=Math.imul(rt,dt),l=l+Math.imul(st,mt)|0,g=Math.imul(st,dt),f=f+Math.imul(at,ft)|0,l=l+Math.imul(at,ht)|0,l=l+Math.imul(it,ft)|0,g=g+Math.imul(it,ht)|0,f=f+Math.imul(nt,gt)|0,l=l+Math.imul(nt,yt)|0,l=l+Math.imul(ot,gt)|0,g=g+Math.imul(ot,yt)|0,f=f+Math.imul(tt,bt)|0,l=l+Math.imul(tt,Tt)|0,l=l+Math.imul(et,bt)|0,g=g+Math.imul(et,Tt)|0,f=f+Math.imul(Y,St)|0,l=l+Math.imul(Y,wt)|0,l=l+Math.imul(Z,St)|0,g=g+Math.imul(Z,wt)|0,f=f+Math.imul(Q,It)|0,l=l+Math.imul(Q,Ct)|0,l=l+Math.imul(J,It)|0,g=g+Math.imul(J,Ct)|0,f=f+Math.imul(X,xt)|0,l=l+Math.imul(X,Dt)|0,l=l+Math.imul(z,xt)|0,g=g+Math.imul(z,Dt)|0,f=f+Math.imul(K,kt)|0,l=l+Math.imul(K,vt)|0,l=l+Math.imul($,kt)|0,g=g+Math.imul($,vt)|0;var Mr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Mr>>>26)|0,Mr&=67108863,f=Math.imul(rt,ft),l=Math.imul(rt,ht),l=l+Math.imul(st,ft)|0,g=Math.imul(st,ht),f=f+Math.imul(at,gt)|0,l=l+Math.imul(at,yt)|0,l=l+Math.imul(it,gt)|0,g=g+Math.imul(it,yt)|0,f=f+Math.imul(nt,bt)|0,l=l+Math.imul(nt,Tt)|0,l=l+Math.imul(ot,bt)|0,g=g+Math.imul(ot,Tt)|0,f=f+Math.imul(tt,St)|0,l=l+Math.imul(tt,wt)|0,l=l+Math.imul(et,St)|0,g=g+Math.imul(et,wt)|0,f=f+Math.imul(Y,It)|0,l=l+Math.imul(Y,Ct)|0,l=l+Math.imul(Z,It)|0,g=g+Math.imul(Z,Ct)|0,f=f+Math.imul(Q,xt)|0,l=l+Math.imul(Q,Dt)|0,l=l+Math.imul(J,xt)|0,g=g+Math.imul(J,Dt)|0,f=f+Math.imul(X,kt)|0,l=l+Math.imul(X,vt)|0,l=l+Math.imul(z,kt)|0,g=g+Math.imul(z,vt)|0;var Or=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Or>>>26)|0,Or&=67108863,f=Math.imul(rt,gt),l=Math.imul(rt,yt),l=l+Math.imul(st,gt)|0,g=Math.imul(st,yt),f=f+Math.imul(at,bt)|0,l=l+Math.imul(at,Tt)|0,l=l+Math.imul(it,bt)|0,g=g+Math.imul(it,Tt)|0,f=f+Math.imul(nt,St)|0,l=l+Math.imul(nt,wt)|0,l=l+Math.imul(ot,St)|0,g=g+Math.imul(ot,wt)|0,f=f+Math.imul(tt,It)|0,l=l+Math.imul(tt,Ct)|0,l=l+Math.imul(et,It)|0,g=g+Math.imul(et,Ct)|0,f=f+Math.imul(Y,xt)|0,l=l+Math.imul(Y,Dt)|0,l=l+Math.imul(Z,xt)|0,g=g+Math.imul(Z,Dt)|0,f=f+Math.imul(Q,kt)|0,l=l+Math.imul(Q,vt)|0,l=l+Math.imul(J,kt)|0,g=g+Math.imul(J,vt)|0;var Pr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Pr>>>26)|0,Pr&=67108863,f=Math.imul(rt,bt),l=Math.imul(rt,Tt),l=l+Math.imul(st,bt)|0,g=Math.imul(st,Tt),f=f+Math.imul(at,St)|0,l=l+Math.imul(at,wt)|0,l=l+Math.imul(it,St)|0,g=g+Math.imul(it,wt)|0,f=f+Math.imul(nt,It)|0,l=l+Math.imul(nt,Ct)|0,l=l+Math.imul(ot,It)|0,g=g+Math.imul(ot,Ct)|0,f=f+Math.imul(tt,xt)|0,l=l+Math.imul(tt,Dt)|0,l=l+Math.imul(et,xt)|0,g=g+Math.imul(et,Dt)|0,f=f+Math.imul(Y,kt)|0,l=l+Math.imul(Y,vt)|0,l=l+Math.imul(Z,kt)|0,g=g+Math.imul(Z,vt)|0;var Rr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Rr>>>26)|0,Rr&=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 Br=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Br>>>26)|0,Br&=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 Er=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Er>>>26)|0,Er&=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 Nr=(C+f|0)+((l&8191)<<13)|0;C=(g+(l>>>13)|0)+(Nr>>>26)|0,Nr&=67108863,f=Math.imul(rt,kt),l=Math.imul(rt,vt),l=l+Math.imul(st,kt)|0,g=Math.imul(st,vt);var Wr=(C+f|0)+((l&8191)<<13)|0;return C=(g+(l>>>13)|0)+(Wr>>>26)|0,Wr&=67108863,T[0]=br,T[1]=Tr,T[2]=Sr,T[3]=wr,T[4]=Ir,T[5]=Cr,T[6]=xr,T[7]=Dr,T[8]=kr,T[9]=vr,T[10]=Ar,T[11]=Mr,T[12]=Or,T[13]=Pr,T[14]=Rr,T[15]=Br,T[16]=Er,T[17]=Nr,T[18]=Wr,C!==0&&(T[19]=C,p.length++),p};Math.imul||(U=L);function q(y,r,u){u.negative=r.negative^y.negative,u.length=y.length+r.length;for(var p=0,d=0,h=0;h<u.length-1;h++){var T=d;d=0;for(var C=p&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,p=T,T=d}return p!==0?u.words[h]=p:u.length--,u._strip()}function Mt(y,r,u){return q(y,r,u)}o.prototype.mulTo=function(r,u){var p,d=this.length+r.length;return this.length===10&&r.length===10?p=U(this,r,u):d<63?p=L(this,r,u):d<1024?p=q(this,r,u):p=Mt(this,r,u),p};function W(y,r){this.x=y,this.y=r}W.prototype.makeRBT=function(r){for(var u=new Array(r),p=o.prototype._countBits(r)-1,d=0;d<r;d++)u[d]=this.revBin(d,p,r);return u},W.prototype.revBin=function(r,u,p){if(r===0||r===p-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,p,d,h,T){for(var C=0;C<T;C++)d[C]=u[r[C]],h[C]=p[r[C]]},W.prototype.transform=function(r,u,p,d,h,T){this.permute(T,r,u,p,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 _=p[v+B],F=d[v+B],ie=p[v+B+C],K=d[v+B+C],$=O*ie-P*K;K=O*K+P*ie,ie=$,p[v+B]=_+ie,d[v+B]=F+K,p[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 p=Math.max(u,r)|1,d=p&1,h=0;for(p=p/2|0;p;p=p>>>1)h++;return 1<<h+1+d},W.prototype.conjugate=function(r,u,p){if(!(p<=1))for(var d=0;d<p/2;d++){var h=r[d];r[d]=r[p-d-1],r[p-d-1]=h,h=u[d],u[d]=-u[p-d-1],u[p-d-1]=-h}},W.prototype.normalize13b=function(r,u){for(var p=0,d=0;d<u/2;d++){var h=Math.round(r[2*d+1]/u)*8192+Math.round(r[2*d]/u)+p;r[d]=h&67108863,h<67108864?p=0:p=h/67108864|0}return r},W.prototype.convert13b=function(r,u,p,d){for(var h=0,T=0;T<u;T++)h=h+(r[T]|0),p[2*T]=h&8191,h=h>>>13,p[2*T+1]=h&8191,h=h>>>13;for(T=2*u;T<d;++T)p[T]=0;t(h===0),t((h&-8192)===0)},W.prototype.stub=function(r){for(var u=new Array(r),p=0;p<r;p++)u[p]=0;return u},W.prototype.mulp=function(r,u,p){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=p.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),p.negative=r.negative^u.negative,p.length=r.length+u.length,p._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 p=0,d=0;d<this.length;d++){var h=(this.words[d]|0)*r,T=(h&67108863)+(p&67108863);p>>=26,p+=h/67108864|0,p+=T>>>26,this.words[d]=T&67108863}return p!==0&&(this.words[d]=p,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 p=this,d=0;d<u.length&&u[d]===0;d++,p=p.sqr());if(++d<u.length)for(var h=p.sqr();d<u.length;d++,h=h.sqr())u[d]!==0&&(p=p.mul(h));return p},o.prototype.iushln=function(r){t(typeof r=="number"&&r>=0);var u=r%26,p=(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(p!==0){for(h=this.length-1;h>=0;h--)this.words[h+p]=this.words[h];for(h=0;h<p;h++)this.words[h]=0;this.length+=p}return this._strip()},o.prototype.ishln=function(r){return t(this.negative===0),this.iushln(r)},o.prototype.iushrn=function(r,u,p){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=p;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,p){return t(this.negative===0),this.iushrn(r,u,p)},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,p=(r-u)/26,d=1<<u;if(this.length<=p)return!1;var h=this.words[p];return!!(h&d)},o.prototype.imaskn=function(r){t(typeof r=="number"&&r>=0);var u=r%26,p=(r-u)/26;if(t(this.negative===0,"imaskn works only with positive numbers"),this.length<=p)return this;if(u!==0&&p++,this.length=Math.min(p,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,p){var d=r.length+p,h;this._expand(d);var T,C=0;for(h=0;h<r.length;h++){T=(this.words[h+p]|0)+C;var f=(r.words[h]|0)*u;T-=f&67108863,C=(T>>26)-(f/67108864|0),this.words[h+p]=T&67108863}for(;h<this.length-p;h++)T=(this.words[h+p]|0)+C,C=T>>26,this.words[h+p]=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 p=this.length-r.length,d=this.clone(),h=r,T=h.words[h.length-1]|0,C=this._countBits(T);p=26-C,p!==0&&(h=h.ushln(p),d.iushln(p),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"&&p!==0&&d.iushrn(p),{div:l||null,mod:d}},o.prototype.divmod=function(r,u,p){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(),p&&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(),p&&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 p=u.div.negative!==0?u.mod.isub(r):u.mod,d=r.ushrn(1),h=r.andln(1),T=p.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 p=(1<<26)%r,d=0,h=this.length-1;h>=0;h--)d=(p*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 p=0,d=this.length-1;d>=0;d--){var h=(this.words[d]|0)+p*67108864;this.words[d]=h/r|0,p=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,p=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()&&p.isEven();)u.iushrn(1),p.iushrn(1),++f;for(var l=p.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;(p.words[0]&B)===0&&P<26;++P,B<<=1);if(P>0)for(p.iushrn(P);P-- >0;)(T.isOdd()||C.isOdd())&&(T.iadd(l),C.isub(g)),T.iushrn(1),C.iushrn(1);u.cmp(p)>=0?(u.isub(p),d.isub(T),h.isub(C)):(p.isub(u),T.isub(d),C.isub(h))}return{a:T,b:C,gcd:p.iushln(f)}},o.prototype._invmp=function(r){t(r.negative===0),t(!r.isZero());var u=this,p=r.clone();u.negative!==0?u=u.umod(r):u=u.clone();for(var d=new o(1),h=new o(0),T=p.clone();u.cmpn(1)>0&&p.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;(p.words[0]&g)===0&&l<26;++l,g<<=1);if(l>0)for(p.iushrn(l);l-- >0;)h.isOdd()&&h.iadd(T),h.iushrn(1);u.cmp(p)>=0?(u.isub(p),d.isub(h)):(p.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(),p=r.clone();u.negative=0,p.negative=0;for(var d=0;u.isEven()&&p.isEven();d++)u.iushrn(1),p.iushrn(1);do{for(;u.isEven();)u.iushrn(1);for(;p.isEven();)p.iushrn(1);var h=u.cmp(p);if(h<0){var T=u;u=p,p=T}else if(h===0||p.cmpn(1)===0)break;u.isub(p)}while(!0);return p.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,p=(r-u)/26,d=1<<u;if(this.length<=p)return this._expand(p+1),this.words[p]|=d,this;for(var h=d,T=p;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 p;if(this.length>1)p=1;else{u&&(r=-r),t(r<=67108863,"Number is too big");var d=this.words[0]|0;p=d===r?0:d<r?-1:1}return this.negative!==0?-p|0:p},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,p=this.length-1;p>=0;p--){var d=this.words[p]|0,h=r.words[p]|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 G(r)},o.prototype.toRed=function(r){return t(!this.red,"Already a number in reduction context"),t(this.negative===0,"red works only with positives"),r.convertTo(this)._forceRed(r)},o.prototype.fromRed=function(){return t(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(r){return this.red=r,this},o.prototype.forceRed=function(r){return t(!this.red,"Already a number in reduction context"),this._forceRed(r)},o.prototype.redAdd=function(r){return t(this.red,"redAdd works only with red numbers"),this.red.add(this,r)},o.prototype.redIAdd=function(r){return t(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,r)},o.prototype.redSub=function(r){return t(this.red,"redSub works only with red numbers"),this.red.sub(this,r)},o.prototype.redISub=function(r){return t(this.red,"redISub works only with red numbers"),this.red.isub(this,r)},o.prototype.redShl=function(r){return t(this.red,"redShl works only with red numbers"),this.red.shl(this,r)},o.prototype.redMul=function(r){return t(this.red,"redMul works only with red numbers"),this.red._verify2(this,r),this.red.mul(this,r)},o.prototype.redIMul=function(r){return t(this.red,"redMul works only with red numbers"),this.red._verify2(this,r),this.red.imul(this,r)},o.prototype.redSqr=function(){return t(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return t(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return t(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return t(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return t(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(r){return t(this.red&&!r.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,r)};var ke={k256:null,p224:null,p192:null,p25519:null};function 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,p;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),p=u.bitLength();while(p>this.n);var d=p<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 ve(){Rt.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(ve,Rt),ve.prototype.split=function(r,u){for(var p=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&p,h=10;h<r.length;h++){var C=r.words[h]|0;r.words[h-10]=(C&p)<<4|T>>>22,T=C}T>>>=22,r.words[h-10]=T,T===0&&r.length>10?r.length-=10:r.length-=9},ve.prototype.imulK=function(r){r.words[r.length]=0,r.words[r.length+1]=0,r.length+=2;for(var u=0,p=0;p<r.length;p++){var d=r.words[p]|0;u+=d*977,r.words[p]=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 xn(){Rt.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}n(xn,Rt);function Dn(){Rt.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}n(Dn,Rt);function Xe(){Rt.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}n(Xe,Rt),Xe.prototype.imulK=function(r){for(var u=0,p=0;p<r.length;p++){var d=(r.words[p]|0)*19+u,h=d&67108863;d>>>=26,r.words[p]=h,u=d}return u!==0&&(r.words[r.length++]=u),r},o._prime=function(r){if(ke[r])return ke[r];var u;if(r==="k256")u=new ve;else if(r==="p224")u=new xn;else if(r==="p192")u=new Dn;else if(r==="p25519")u=new Xe;else throw new Error("Unknown prime "+r);return ke[r]=u,u};function G(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}G.prototype._verify1=function(r){t(r.negative===0,"red works only with positives"),t(r.red,"red works only with red numbers")},G.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")},G.prototype.imod=function(r){return this.prime?this.prime.ireduce(r)._forceRed(this):(b(r,r.umod(this.m)._forceRed(this)),r)},G.prototype.neg=function(r){return r.isZero()?r.clone():this.m.sub(r)._forceRed(this)},G.prototype.add=function(r,u){this._verify2(r,u);var p=r.add(u);return p.cmp(this.m)>=0&&p.isub(this.m),p._forceRed(this)},G.prototype.iadd=function(r,u){this._verify2(r,u);var p=r.iadd(u);return p.cmp(this.m)>=0&&p.isub(this.m),p},G.prototype.sub=function(r,u){this._verify2(r,u);var p=r.sub(u);return p.cmpn(0)<0&&p.iadd(this.m),p._forceRed(this)},G.prototype.isub=function(r,u){this._verify2(r,u);var p=r.isub(u);return p.cmpn(0)<0&&p.iadd(this.m),p},G.prototype.shl=function(r,u){return this._verify1(r),this.imod(r.ushln(u))},G.prototype.imul=function(r,u){return this._verify2(r,u),this.imod(r.imul(u))},G.prototype.mul=function(r,u){return this._verify2(r,u),this.imod(r.mul(u))},G.prototype.isqr=function(r){return this.imul(r,r.clone())},G.prototype.sqr=function(r){return this.mul(r,r)},G.prototype.sqrt=function(r){if(r.isZero())return r.clone();var u=this.m.andln(3);if(t(u%2===1),u===3){var p=this.m.add(new o(1)).iushrn(2);return this.pow(r,p)}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},G.prototype.invm=function(r){var u=r._invmp(this.m);return u.negative!==0?(u.negative=0,this.imod(u).redNeg()):this.imod(u)},G.prototype.pow=function(r,u){if(u.isZero())return new o(1).toRed(this);if(u.cmpn(1)===0)return r.clone();var p=4,d=new Array(1<<p);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!==p&&(h!==0||v!==0))&&(T=this.mul(T,d[C]),f=0,C=0)}l=26}return T},G.prototype.convertTo=function(r){var u=r.umod(this.m);return u===r?u.clone():u},G.prototype.convertFrom=function(r){var u=r.clone();return u.red=null,u},o.mont=function(r){return new ge(r)};function ge(y){G.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(ge,G),ge.prototype.convertTo=function(r){return this.imod(r.ushln(this.shift))},ge.prototype.convertFrom=function(r){var u=this.imod(r.mul(this.rinv));return u.red=null,u},ge.prototype.imul=function(r,u){if(r.isZero()||u.isZero())return r.words[0]=0,r.length=1,r;var p=r.imul(u),d=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=p.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)},ge.prototype.mul=function(r,u){if(r.isZero()||u.isZero())return new o(0)._forceRed(this);var p=r.mul(u),d=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=p.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)},ge.prototype.invm=function(r){var u=this.imod(r._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(typeof vs>"u"||vs,Zl)});import{TransactionType as Vu}from"@msafe/sui3-utils";import{coinsList as Nu,poolIdPoolNameMap as Wu,poolInfo as Xs,singleAssetPoolCoinMap as _u}from"@alphafi/alphafi-sdk";import{TransactionType as ze}from"@msafe/sui3-utils";import{bcs as kn,fromBase64 as vn}from"@mysten/bcs";var An=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=Wu[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&&Xs[t].assetTypes.length===2}isSingleAssetDepositEvent(e,t){return e.event_type===0&&Xs[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=kn.u64().parse(vn(t)):t.length===24?n=kn.u128().parse(vn(t)):t.length===44?n=kn.u256().parse(vn(t)):n=kn.u64().parse(vn(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:ze.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}=_u[e],{expo:s}=Nu[i];n=Math.floor(Number(n)/10**(9-s)).toString()}return{txType:ze.Other,type:"depositSingleAsset",intentionData:{poolName:e,amount:n}}}decodeWithdraw(e){let t=this.extractXTokensAmount();return console.log("Decoder.decodeWithdraw",t),{txType:ze.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:ze.Other,type:"withdrawAlpha",intentionData:{withdrawFromLocked:Number(n)>0,xTokensAmount:t}}}decodeClaimReward(){return{txType:ze.Other,type:"claimReward",intentionData:{}}}};import{claimRewardTxb as ju}from"@alphafi/alphafi-sdk";import Lu from"sort-keys-recursive";var w=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify(Lu(this.data))}};var Mn=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{account:n}=t;return await ju(n.address)}static fromData(t){return new a(t)}};import{depositDoubleAssetTxb as Uu}from"@alphafi/alphafi-sdk";var On=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 Uu(o,n.address,i,s)}static fromData(t){return console.log("DepositDoubleAssetIntention.fromData",t),new a(t)}};import{depositSingleAssetTxb as qu}from"@alphafi/alphafi-sdk";var Pn=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 qu(o,n.address,i)}static fromData(t){return console.log("DepositSingleAssetIntention.fromData",t),new a(t)}};import{withdrawTxb as Fu}from"@alphafi/alphafi-sdk";var Rn=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 Fu(i,o,n.address)}static fromData(t){return console.log("WithdrawIntention.fromData",t),new a(t)}};import{withdrawAlphaTxb as Ku}from"@alphafi/alphafi-sdk";var Bn=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 Ku(i,o,n.address)}static fromData(t){return console.log("WithdrawAlphaIntention.fromData",t),new a(t)}};var En=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 An(t,i).decode();return{txType:Vu.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=Pn.fromData(e.intentionData);break;case"depositDoubleAsset":n=On.fromData(e.intentionData);break;case"withdraw":n=Rn.fromData(e.intentionData);break;case"withdrawAlpha":n=Bn.fromData(e.intentionData);break;case"claimReward":n=Mn.fromData(e.intentionData);break;default:throw new Error("not implemented")}return n.build({account:t})}};import{TransactionType as dp}from"@msafe/sui3-utils";import{TransactionType as jt}from"@msafe/sui3-utils";import{bcs as Lr}from"@mysten/sui/bcs";import{SBUCK_FOUNTAIN_PACKAGE_ID as jr}from"bucket-protocol-sdk";var Nn=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(jr,"fountain_core","stake")}isSBUCKUnstakeTransaction(){return!!this.getMoveCallPackageModuleCommand(jr,"fountain_core","force_unstake")}isSBUCKClaimTransaction(){return!!this.getMoveCallPackageModuleCommand(jr,"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 m=c.arguments[1];m.$kind==="Input"&&(t=this.getPureInputU64(m.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 m=c.arguments[4];m.$kind==="Input"&&(t=this.getPureInputU64(m.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 m=c.arguments[5];m.$kind==="Input"&&(t=this.getPureInputU64(m.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 m=c.arguments[4];m.$kind==="Input"&&(n=this.getPureInputU64(m.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 m=c.arguments[5];m.$kind==="Input"&&(n=this.getPureInputU64(m.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 m=this.getPureAddresses(c.Input);m.length===1&&([n]=m)}}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 m=this.getPureAddresses(c.Input);m.length===1&&([n]=m)}}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 m=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];m.$kind==="Input"&&(e=this.getPureInputU64(m.Input))}let n=[],o=this.getMoveCallModuleCommands("proof_rule","unlock");if(o.length>0)for(let c=0;c<o.length;c++){let m=o[c];n.push("")}else{let c=this.getMoveCallModuleCommands("fountain_core","force_unstake");for(let m=0;m<c.length;m++){let S=c[m].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 Lr.U64.fromBase64(t.Pure.bytes)}getPureAddresses(e){let t=this.inputs[e];if(t.$kind!=="Pure")throw new Error("not pure argument");return Lr.vector(Lr.Address).fromBase64(t.Pure.bytes)}};import{TransactionType as Xu}from"@msafe/sui3-utils";import{Transaction as Gu}from"@mysten/sui/transactions";import{buildPsmTx as Hu}from"bucket-protocol-sdk";import{BucketClient as $u}from"bucket-protocol-sdk";var Bt=(a,e)=>{let t=a==="sui:mainnet"?"mainnet":"testnet";return new $u(t,e.address)};var zs=async(a,e,t)=>{let{coinType:n,amount:o,buckToCoin:i}=a,s=new Gu,c=Bt(t,e);return await Hu(c,s,n,o,i,e.address),s};var _n=class a extends w{constructor(t){super(t);this.data=t}data;txType=Xu.Other;txSubType="psm";async build(t){let{account:n,network:o}=t;return await zs(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Zu}from"@msafe/sui3-utils";import{Transaction as Ln}from"@mysten/sui/transactions";import{buildBorrowTx as zu,buildCloseTx as Qu,buildRepayTx as Ju,buildWithdrawTx as Yu}from"bucket-protocol-sdk";var Qs=async(a,e,t)=>{let{collateralType:n,collateralAmount:o,borrowAmount:i,insertionPlace:s,strapId:c}=a,m=new Ln,b=Bt(t,e);return await zu(b,m,n,o,i,e.address,s,c),m},Js=async(a,e,t)=>{let{collateralType:n,withdrawAmount:o,insertionPlace:i,strapId:s}=a,c=new Ln,m=Bt(t,e);return await Yu(m,c,n,o,e.address,i,s),c},Ys=async(a,e,t)=>{let{collateralType:n,repayAmount:o,withdrawAmount:i,isSurplus:s,insertionPlace:c,strapId:m}=a,b=new Ln,S=Bt(t,e);return await Ju(S,b,n,o,i,e.address,s,c,m),b},Zs=async(a,e,t)=>{let{collateralType:n,recipient:o,strapId:i}=a,s=new Ln,c=Bt(t,e);return await Qu(c,s,n,o,i),s};var jn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Zu.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 tp}from"@msafe/sui3-utils";var Un=class a extends w{constructor(t){super(t);this.data=t}data;txType=tp.Other;txSubType="repay";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 ep}from"@msafe/sui3-utils";var qn=class a extends w{constructor(t){super(t);this.data=t}data;txType=ep.Other;txSubType="withdraw";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 np}from"@msafe/sui3-utils";var Fn=class a extends w{constructor(t){super(t);this.data=t}data;txType=np.Other;txSubType="close";async build(t){let{account:n,network:o}=t;return await Zs(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as Xn}from"@msafe/sui3-utils";import{Transaction as Kn}from"@mysten/sui/transactions";import{buildSBUCKClaimTx as op,buildSBUCKDepositTx as ap,buildSBUCKUnstakeTx as ip,buildSBUCKWithdrawTx as rp}from"bucket-protocol-sdk";var tc=async(a,e,t)=>{let{coinType:n,amount:o,isStake:i}=a,s=new Kn,c=Bt(t,e);return await ap(c,s,n,o,e.address,i),s},ec=async(a,e,t)=>{let{stakeProofs:n,amount:o,isStake:i,toBuck:s}=a,c=new Kn,m=Bt(t,e);return await ip(m,c,n,o,e.address,i,s),c},nc=async(a,e,t)=>{let{amount:n}=a,o=new Kn,i=Bt(t,e);return await rp(i,o,n,e.address),o},oc=async(a,e,t)=>{let{stakeProofs:n}=a,o=new Kn,i=Bt(t,e);return await op(i,o,n,e.address),o};var Vn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Xn.Other;txSubType="sbuck-deposit";async build(t){let{account:n,network:o}=t;return await tc(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=Xn.Other;txSubType="sbuck-unstake";async build(t){let{account:n,network:o}=t;return await ec(this.data,n,o)}static fromData(t){return new a(t)}},Gn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Xn.Other;txSubType="sbuck-withdraw";async build(t){let{account:n,network:o}=t;return await nc(this.data,n,o)}static fromData(t){return new a(t)}},Hn=class a extends w{constructor(t){super(t);this.data=t}data;txType=Xn.Other;txSubType="sbuck-claim";async build(t){let{account:n,network:o}=t;return await oc(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as qr}from"@msafe/sui3-utils";import{Transaction as Ur}from"@mysten/sui/transactions";import{buildTankClaimTx as sp,buildTankDepositTx as cp,buildTankWithdrawTx as lp}from"bucket-protocol-sdk";var ac=async(a,e,t)=>{let{coinType:n,amount:o}=a,i=new Ur,s=Bt(t,e);return await cp(s,i,n,o,e.address),i},ic=async(a,e,t)=>{let{coinType:n,amount:o}=a,i=new Ur,s=Bt(t,e);return await lp(s,i,n,o,e.address),i},rc=async(a,e,t)=>{let{coinType:n}=a,o=new Ur,i=Bt(t,e);return await sp(i,o,n,e.address),o};import{Transaction as up}from"@mysten/sui/transactions";import{buildLockedClaimTx as pp}from"bucket-protocol-sdk";var sc=async(a,e,t)=>{let{coinType:n,proofCount:o}=a,i=new up,s=Bt(t,e);return await pp(s,i,n,o,e.address),i};var zn=class a extends w{constructor(t){super(t);this.data=t}data;txType=qr.Other;txSubType="tank-deposit";async build(t){let{account:n,network:o}=t;return await ac(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=qr.Other;txSubType="tank-withdraw";async build(t){let{account:n,network:o}=t;return await ic(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=qr.Other;txSubType="tank-claim";async build(t){let{account:n,network:o}=t;return await rc(this.data,n,o)}static fromData(t){return new a(t)}};import{TransactionType as mp}from"@msafe/sui3-utils";var Yn=class a extends w{constructor(t){super(t);this.data=t}data;txType=mp.Other;txSubType="lock-claim";async build(t){let{account:n,network:o}=t;return await sc(this.data,n,o)}static fromData(t){return new a(t)}};var Zn=class{application="bucket";supportSDK="@mysten/sui";async deserialize(e){console.log("Bucket helper deserialize input: ",e);let{transaction:t}=e,o=new Nn(t).decode();return{txType:dp.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=_n.fromData(e.intentionData);break;case"borrow":i=jn.fromData(e.intentionData);break;case"withdraw":i=qn.fromData(e.intentionData);break;case"repay":i=Un.fromData(e.intentionData);break;case"close":i=Fn.fromData(e.intentionData);break;case"tank-deposit":i=zn.fromData(e.intentionData);break;case"tank-withdraw":i=Qn.fromData(e.intentionData);break;case"tank-claim":i=Jn.fromData(e.intentionData);break;case"sbuck-deposit":i=Vn.fromData(e.intentionData);break;case"sbuck-unstake":i=$n.fromData(e.intentionData);break;case"sbuck-withdraw":i=Gn.fromData(e.intentionData);break;case"sbuck-claim":i=Hn.fromData(e.intentionData);break;case"lock-claim":i=Yn.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};import{TransactionType as Gp}from"@msafe/sui3-utils";import{TransactionType as gp}from"@msafe/sui3-utils";import{SuiJsonRpcClient as ye,isSuiJsonRpcClient as Kb,JsonRpcHTTPTransport as Vb,getJsonRpcFullnodeUrl as Ut}from"@mysten/sui/jsonRpc";var fp={"sui:mainnet":"mainnet","sui:testnet":"testnet","sui:devnet":"devnet","sui:localnet":"localnet"};function Qe(a){return fp[a]}var Xt=async(a,e)=>{let{CetusClmmSDK:t}=await import("@cetusprotocol/sui-clmm-sdk"),n=t.createSDK({env:"mainnet",sui_client:new ye({url:Ut("mainnet"),network:"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 ye({url:Ut("mainnet"),network:"mainnet"})});return n.setSenderAddress(e.address),n},hp="https://api-sui.cetus.zone/router_v2/find_routes",cc=async(a,e)=>{let{AggregatorClient:t,Env:n}=await import("@cetusprotocol/aggregator-sdk"),o=new ye({url:"https://fullnode.mainnet.sui.io/",network:"mainnet"});return new t({endpoint:hp,signer:e.address,client:o,env:n.Mainnet})},Je=async(a,e)=>{let{CetusVaultsSDK:t}=await import("@cetusprotocol/vaults-sdk"),n=t.createSDK({env:"mainnet"});return n.setSenderAddress(e.address),n},Ae=async(a,e)=>{let{CetusXcetusSDK:t}=await import("@cetusprotocol/xcetus-sdk"),n=t.createSDK({env:"mainnet"});return n.setSenderAddress(e.address),n};var lc=async(a,e,t)=>await(await Xt(t,e)).Pool.createPoolPayload(a),uc=async(a,e,t)=>await(await Xt(t,e)).Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg),pc=async(a,e,t)=>await(await Xt(t,e)).Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg),mc=async(a,e,t)=>await(await Xt(t,e)).Position.closePositionPayload(a),dc=async(a,e,t)=>await(await Xt(t,e)).Position.removeLiquidityPayload(a),fc=async(a,e,t)=>await(await Xt(t,e)).Rewarder.collectRewarderPayload(a);var to=class a extends w{constructor(t){super(t);this.data=t}data;txType=gp.Other;txSubType="OpenAndAddLiquidity";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 yp}from"@msafe/sui3-utils";var eo=class a extends w{constructor(t){super(t);this.data=t}data;txType=yp.Other;txSubType="ClaimFeeAndMining";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 bp}from"@msafe/sui3-utils";var no=class a extends w{constructor(t){super(t);this.data=t}data;txType=bp.Other;txSubType="CreatePool";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 Tp}from"@msafe/sui3-utils";var oo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Tp.Other;txSubType="DecreaseLiquidity";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 Sp}from"@msafe/sui3-utils";var hc=async(a,e,t)=>await(await qt(t,e)).Farms.openPositionAddLiquidityStakePayload(a),gc=async(a,e,t)=>await(await qt(t,e)).Farms.addLiquidityFixCoinPayload(a),yc=async(a,e,t)=>await(await qt(t,e)).Farms.removeLiquidityPayload(a);var bc=async(a,e,t)=>await(await qt(t,e)).Farms.removeLiquidityPayload(a),Tc=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),wc=async(a,e,t)=>{let n=await qt(t,e),o=Object.values(a);return await n.Farms.batchHarvestPayload(o)},Ic=async(a,e,t)=>await(await qt(t,e)).Farms.depositPayload(a),Cc=async(a,e,t)=>await(await qt(t,e)).Farms.withdrawPayload(a);var ao=class a extends w{constructor(t){super(t);this.data=t}data;txType=Sp.Other;txSubType="FarmingOpenAndAddLiquidity";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 wp}from"@msafe/sui3-utils";var io=class a extends w{constructor(t){super(t);this.data=t}data;txType=wp.Other;txSubType="FarmingBatchHarvest";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 Ip}from"@msafe/sui3-utils";var ro=class a extends w{constructor(t){super(t);this.data=t}data;txType=Ip.Other;txSubType="FarmingClaimFeeAndReward";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 Cp}from"@msafe/sui3-utils";var so=class a extends w{constructor(t){super(t);this.data=t}data;txType=Cp.Other;txSubType="FarmingDecreaseLiquidity";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 xp}from"@msafe/sui3-utils";var co=class a extends w{constructor(t){super(t);this.data=t}data;txType=xp.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 Dp}from"@msafe/sui3-utils";var lo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Dp.Other;txSubType="FarmingIncreaseLiquidity";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 kp}from"@msafe/sui3-utils";var uo=class a extends w{constructor(t){super(t);this.data=t}data;txType=kp.Other;txSubType="FarmingRemoveLiquidity";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 vp}from"@msafe/sui3-utils";var po=class a extends w{constructor(t){super(t);this.data=t}data;txType=vp.Other;txSubType="FarmingStake";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 Ap}from"@msafe/sui3-utils";var mo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Ap.Other;txSubType="FarmingUnstake";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 Mp}from"@msafe/sui3-utils";var fo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Mp.Other;txSubType="IncreaseLiquidity";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 Bp}from"@msafe/sui3-utils";var ho=async()=>{let{Transaction:a}=await import("@mysten/sui/transactions");return new a},Op=async(a,e,t)=>{let n=await Je(t,e),o=await ho();return o.setSender(e.address),n.Vest.buildRedeemPayload(a.params,o),o},Pp=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 ho();return i.setSender(e.address),await o?.Vest.buildRedeemPayload(a.params,i),i},xc=async(a,e,t)=>{let n=await Xt(t,e),o=await ho();return n?.Vest.buildRedeemPayload(a.params,o),o},Rp=async(a,e,t)=>{let n=await Xt(t,e),o=await qt(t,e),i=await ho(),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},Dc=async(a,e,t)=>a.type==="clmm"?xc(a,e,t):a.type==="farms"?Rp(a,e,t):a.type==="vaults"?Op(a,e,t):a.type==="haedalVaults"?Pp(a,e):xc(a,e,t);var go=class a extends w{constructor(t){super(t);this.data=t}data;txType=Bp.Other;txSubType="PosVestingRedeem";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 Ep}from"@msafe/sui3-utils";var yo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Ep.Other;txSubType="RemoveLiquidity";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 Wp}from"@msafe/sui3-utils";import{Transaction as Np}from"@mysten/sui/transactions";var kc=async(a,e,t)=>{let{restituteMsafeFastRouterSwapParams:n}=await import("@cetusprotocol/aggregator-sdk"),o=await cc(t,e),i=new Np;return await o.fastRouterSwap({...a,router:n(a.router),txb:i}),i};var bo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Wp.Other;txSubType="AggregatorSwap";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 _p}from"@msafe/sui3-utils";import{Transaction as vc}from"@mysten/sui/transactions";var Ac=async(a,e,t)=>{let n=await Je(t,e),o=new vc;return o.setSender(e.address),await n.Vaults.deposit(a,o),o},Mc=async(a,e,t)=>{let n=await Je(t,e),o=new vc;return await n.Vaults.withdraw(a,o),o};var To=class a extends w{constructor(t){super(t);this.data=t}data;txType=_p.Other;txSubType="AddVaultsPosition";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 Lp}from"@msafe/sui3-utils";var So=class a extends w{constructor(t){super(t);this.data=t}data;txType=Lp.Other;txSubType="RemoveVaultsPosition";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 Up}from"@msafe/sui3-utils";import{Transaction as jp}from"@mysten/sui/transactions";var Oc={package_id:"0x355714a1eeb7ab1d80902da6c92001170cda1212edf524c32aa308a3ac177c31",published_at:"0x355714a1eeb7ab1d80902da6c92001170cda1212edf524c32aa308a3ac177c31",cetus_coin_type:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS"},Pc=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 jp;return i.forEach(m=>{c.moveCall({target:`${Oc.published_at}::router::redeem`,typeArguments:[Oc.cetus_coin_type],arguments:[c.object(n),c.object(o),c.pure(m),c.object(s)]})}),c};var wo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Up.Other;txSubType="VestingRedeem";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 qp}from"@msafe/sui3-utils";var Rc=async(a,e,t)=>await(await Ae(t,e)).XCetusModule.convertPayload(a),Bc=async(a,e,t)=>await(await Ae(t,e)).XCetusModule.redeemLockPayload(a),Ec=async(a,e,t)=>await(await Ae(t,e)).XCetusModule.redeemDividendV3Payload(a.veNftId,a.rewardList),Nc=async(a,e,t)=>await(await Ae(t,e)).XCetusModule.cancelRedeemPayload(a),Wc=async(a,e,t)=>await(await Ae(t,e)).XCetusModule.redeemPayload(a);var Io=class a extends w{constructor(t){super(t);this.data=t}data;txType=qp.Other;txSubType="xCETUSCancelRedeem";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 Fp}from"@msafe/sui3-utils";var Co=class a extends w{constructor(t){super(t);this.data=t}data;txType=Fp.Other;txSubType="xCETUSClaimStakingRwewards";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 Kp}from"@msafe/sui3-utils";var xo=class a extends w{constructor(t){super(t);this.data=t}data;txType=Kp.Other;txSubType="xCETUSConvert";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 Vp}from"@msafe/sui3-utils";var Do=class a extends w{constructor(t){super(t);this.data=t}data;txType=Vp.Other;txSubType="xCETUSRedeem";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 $p}from"@msafe/sui3-utils";var ko=class a extends w{constructor(t){super(t);this.data=t}data;txType=$p.Other;txSubType="xCETUSRedeemLock";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)}};var vo=class{application="cetus";supportSDK="@mysten/sui";async deserialize(e){console.log("Cetus helper deserialize input: ",e);let{txbParams:t,action:n}=e;return{txType:Gp.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=to.fromData(e.intentionData);break;case"IncreaseLiquidity":i=fo.fromData(e.intentionData);break;case"DecreaseLiquidity":i=oo.fromData(e.intentionData);break;case"RemoveLiquidity":i=yo.fromData(e.intentionData);break;case"ClaimFeeAndMining":i=eo.fromData(e.intentionData);break;case"FarmingOpenAndAddLiquidity":i=ao.fromData(e.intentionData);break;case"FarmingIncreaseLiquidity":i=lo.fromData(e.intentionData);break;case"FarmingDecreaseLiquidity":i=so.fromData(e.intentionData);break;case"FarmingRemoveLiquidity":i=uo.fromData(e.intentionData);break;case"FarmingClaimFeeAndReward":i=ro.fromData(e.intentionData);break;case"FarmingHarvest":i=co.fromData(e.intentionData);break;case"FarmingBatchHarvest":i=io.fromData(e.intentionData);break;case"FarmingStake":i=po.fromData(e.intentionData);break;case"FarmingUnstake":i=mo.fromData(e.intentionData);break;case"xCETUSConvert":i=xo.fromData(e.intentionData);break;case"xCETUSRedeemLock":i=ko.fromData(e.intentionData);break;case"xCETUSClaimStakingRwewards":i=Co.fromData(e.intentionData);break;case"xCETUSCancelRedeem":i=Io.fromData(e.intentionData);break;case"xCETUSRedeem":i=Do.fromData(e.intentionData);break;case"VestingRedeem":i=wo.fromData(e.intentionData);break;case"AggregatorSwap":i=bo.fromData(e.intentionData);break;case"AddVaultsPosition":i=To.fromData(e.intentionData);break;case"RemoveVaultsPosition":i=So.fromData(e.intentionData);break;case"PosVestingRedeem":i=go.fromData(e.intentionData);break;case"CreatePool":i=no.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};import{TransactionType as Hm}from"@msafe/sui3-utils";import Hp from"sort-keys-recursive";var re=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify(Hp(this.data))}};var Fr={};Hs(Fr,{contractId:()=>Qp,default:()=>em,feeObjId:()=>Zp,roleObjId:()=>Jp,status:()=>zp,transaction:()=>Xp,upgradeCapObjId:()=>tm,vaultObjId:()=>Yp});var Xp="DiBZq4UmVVYiRL6ZJmFKYoHcxtxqrhsCXSkFyT7wUr3j",zp="success",Qp="0x81c960dc653975fbd0072deca8afb92d322898c911622898ba1b2e3ad0c4bd8d",Jp="0xc6ec0bdee0bb59a72077e9acd2f42457043cf47080b3d3fad4d39abf28bba63a",Yp="0xbc4021387fbac149119fd24e92be9e58f745774292f3a2a12e2ac6daf5363e1d",Zp="0x4178f63970fe2daeb256dc5730ad172e82b3e8eb45f31b33e0daae72cd35e1e1",tm="0xe1e9aa7d222d151bfe6dd83358b0d7fdcb11260f710800cfaf7ccc1b1e245115",em={transaction:Xp,status:zp,contractId:Qp,roleObjId:Jp,vaultObjId:Yp,feeObjId:Zp,upgradeCapObjId:tm};var Kr={};Hs(Kr,{contractId:()=>am,default:()=>lm,feeObjId:()=>sm,roleObjId:()=>im,status:()=>om,transaction:()=>nm,upgradeCapObjId:()=>cm,vaultObjId:()=>rm});var nm="855FNDV8o8Z3fWULPnQo9qdhLJpsg7wZrkCpNyfw9KfB",om="success",am="0xc357c3985e8fb875d6b37141497af660779aa1bab0ec489b2213efd74067d1fa",im="0x5ab49bdf9fd1413e328ef242b3f8d83dde791b38a0b627bfc87fb25c010d34f1",rm="0xb483558770d8eb26007f193b75db40f0a45f2e36863a687625885d4de6993378",sm="0x48453fc4d7cde3fe35aad89e5dfb496608a6a55ea529a1c0274681a808627f94",cm="0x34279779a0d0d36bd5044b04830d607fa1b0ecf316548c8ac3a44151e4f1a42a",lm={transaction:nm,status:om,contractId:am,roleObjId:im,vaultObjId:rm,feeObjId:sm,upgradeCapObjId:cm};var um=Ut("testnet"),pm=Ut("testnet"),mm=Ut("mainnet"),dm=Ut("mainnet"),fm="https://bc3p6l5unl.execute-api.us-west-1.amazonaws.com/prod",hm="https://rolsbkota7.execute-api.us-west-1.amazonaws.com/prod",gm="https://6p6mkx33ne.execute-api.us-west-1.amazonaws.com/prod",ym="https://xrae3mrjv5.execute-api.us-west-1.amazonaws.com/prod",_c=Fr,Lc=Kr,bm=new Map([["dev",{env:"dev",rpc:{url:um},backend:{url:fm},contract:_c}],["stg",{env:"stg",rpc:{url:pm},backend:{url:hm},contract:_c}],["prev",{env:"prev",rpc:{url:mm},backend:{url:gm},contract:Lc}],["prod",{env:"prod",rpc:{url:dm},backend:{url:ym},contract:Lc}]]);function jc(a,e){let t=bm.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{SuiGrpcClient as Tm}from"@mysten/sui/grpc";function Sm(a){return Object.assign(a,{getObject(e){return a.core.getObject(e)},async listCoins(e){let t=await a.core.listCoins({owner:e.owner,coinType:e.coinType,cursor:e.cursor??void 0});return{objects:t.objects.map(n=>({coinType:e.coinType??"",objectId:n.objectId,version:n.version,digest:n.digest,balance:n.balance??"0"})),hasNextPage:t.hasNextPage,cursor:t.cursor}}})}function Ye(a,e){let t=Qe(a),n=new Tm({network:t,baseUrl:e??Ut(t)});return Sm(n)}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 Ao=class extends j{constructor(){super(11,"Backend is not specified")}};var Mo=class extends j{constructor(){super(1,"Wallet not connected")}};import Oe,{AxiosError as wm}from"axios";var Me=class extends j{constructor(e,t){super(10,e,{context:t})}};var Oo=class a{constructor(e){this.apiURL=e}apiURL;static parseResponseData(e){if(e instanceof wm)throw new Me(e.response?.statusText);if(e.status===200){if(e.data.success)return e.data.data;throw new Me(e.data.code)}throw new Me(e.status.toString())}async getIncomingStreams(e,t){let n=await Oe.post(`${this.apiURL}/stream`,{recipient:e,...t});return a.parseResponseData(n)}async getOutgoingStreams(e,t){let n=await Oe.post(`${this.apiURL}/stream`,{sender:e,...t});return a.parseResponseData(n)}async getStreamHistory(e){let t=await Oe.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 Oe.post(`${this.apiURL}/stream-info`,{address:e});return a.parseResponseData(t)}async getAllRecipients(e,t){let n=await Oe.post(`${this.apiURL}/stream-info`,{sender:e,status:t});return a.parseResponseData(n)}async getAllSenders(e,t){let n=await Oe.post(`${this.apiURL}/stream-info`,{recipient:e,status:t});return a.parseResponseData(n)}};var Im={dev:"sui:testnet",stg:"sui:testnet",prev:"sui:mainnet",prod:"sui:mainnet"},Pe=class a{signer;suiClient;envConfig;_backend;constructor(e,t){this.envConfig=e,this.suiClient=t??Ye(Im[e.env],e.rpc.url),e.backend&&(this._backend=new Oo(e.backend.url))}static new(e,t){let n=jc(e,t);return new a(n,t?.suiGrpcClient)}get walletType(){return this.wallet?this.wallet.type:"disconnected"}get backend(){if(!this._backend)throw new Ao;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 Mo;return this.signer}async walletAddress(){return this.wallet.address()}};import{SUI_TYPE_ARG as $m,normalizeStructTag as Gm,normalizeSuiAddress as bl}from"@mysten/sui/utils";import{Transaction as jo}from"@mysten/sui/transactions";import{Transaction as al}from"@mysten/sui/transactions";import{SUI_TYPE_ARG as il,normalizeStructTag as Am}from"@mysten/sui/utils";var Vr=50n,Po=10000n,qc=25n,$r=100000000n;var ee=class{constructor(e){this.object=e}object;moveArg(e){return e.object(this.object)}},Ro=class{constructor(e){this.objects=e}objects;moveArgs(e){return e.makeMoveVec({elements:this.objects.map(t=>e.object(t))})}},be=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}};function Fc(a,e){if(typeof e=="bigint"||typeof e=="number")return a.pure.u64(e);if(typeof e=="boolean")return a.pure.bool(e);if(typeof e=="string")return/^0x[0-9a-fA-F]+$/.test(e)?a.pure.address(e):a.pure.string(e);throw new Error(`Unsupported pure argument type: ${typeof e}`)}import{bcs as Dm}from"@mysten/bcs";var Ze=class extends j{constructor(e,t){super(3,e,{context:t})}};import{bcs as Cm}from"@mysten/bcs";var zt=class extends j{constructor(e,t){super(6,e,{context:t})}};function Bo(a){if(a==null)throw new zt("Missing move object field");if(typeof a=="object"&&"fields"in a){let e=a.fields;if(e&&typeof e=="object")return e}if(typeof a=="object")return a;throw new zt("Unexpected move object field shape",{value:String(a)})}function Kc(a){return a.fields&&typeof a.fields=="object"&&!("balance"in a)&&!("config"in a)&&!("status"in a)?a.fields:a}function Vc(a,e="balance"){if(a==null)throw new zt(`Stream object missing ${e} field`);if(typeof a=="string"||typeof a=="number"||typeof a=="bigint")return BigInt(a);let t=Bo(a),n=t.balance??t.value;if(n==null)throw new zt(`Stream object ${e} field has unexpected shape`,{value:JSON.stringify(a)});return BigInt(String(n))}async function $c(a,e){let t=await a.listCoins({owner:e.owner,coinType:e.coinType,cursor:e.cursor??void 0,limit:e.limit});return{data:t.objects.map(n=>({coinObjectId:n.objectId,balance:n.balance,coinType:n.type})),hasNextPage:t.hasNextPage,nextCursor:t.cursor}}function xm(a){return a.core?.getObject?a.core.getObject.bind(a.core):a.getObject.bind(a)}function Gc(a){return a.json&&typeof a.json=="object"?Kc(a.json):null}async function Hc(a,e){try{let t=xm(a),{object:n}=await t({objectId:e,include:{json:!0,type:!0}}),o=Gc(n);return o?{data:{objectId:n.objectId,type:n.type,content:{dataType:"moveObject",type:n.type,fields:o}}}:{error:{code:"notExists"}}}catch{return{error:{code:"notExists"}}}}async function Xc(a,e){if(e.length===0)return[];let{objects:t}=await a.getObjects({objectIds:e,include:{json:!0,type:!0}});return t.map(n=>{if(!("objectId"in n))return{error:{code:String(n.code??"unknown")}};let o=Gc(n);if(o)return{data:{objectId:n.objectId,type:n.type,content:{dataType:"moveObject",type:n.type,fields:o}}}})}async function zc(a,e){let{balance:t}=await a.getBalance({owner:e.owner,coinType:e.coinType??void 0});return{coinType:t.coinType,totalBalance:t.balance}}async function Qc(a,e){return(await a.listBalances({owner:e})).balances.map(n=>({coinType:n.coinType,totalBalance:n.balance}))}async function Jc(a,e){let{coinMetadata:t}=await a.getCoinMetadata({coinType:e});return t}async function Eo(a,e){e.transaction.setSenderIfNotSet(e.sender);let t=await a.simulateTransaction({transaction:e.transaction,include:{effects:!0,commandResults:!0}}),n=t.$kind==="Transaction"?t.Transaction:t.FailedTransaction;return{effects:n.effects?{status:{status:n.effects.status.success?"success":"failure",error:n.effects.status.error?.message}}:void 0,commandResults:t.commandResults,results:t.commandResults?.map(o=>({returnValues:o.returnValues.map(i=>[Array.from(i.bcs),"u64"])}))}}function Yc(a,e=0,t=0){let n=a.commandResults?.[e]?.returnValues?.[t];if(!n)throw new Error("Missing command result");return BigInt(Cm.u64().parse(n.bcs))}var No=class{constructor(e){this.results=e}results;getU64(e=0,t=0){try{return Yc(this.results,e,t)}catch{let[n,o]=this.getLegacyValue(e,t);if(o!=="u64")throw new Ze("Invalid contract return type.",{ctx:{expectType:"u64",gotType:o}});return Dm.u64().parse(Uint8Array.from(n))}}getLegacyValue(e=0,t=0){let o=this.results.results?.[e]?.returnValues;if(!o?.[t])throw new Ze("Invalid contract return type.",{ctx:{expectType:"u64",gotType:"missing"}});return o[t]}};import{bcs as Gr}from"@mysten/bcs";var H=class extends j{constructor(e,t,n){super(2,`Invalid input: ${e}`,{context:{fieldKey:t,fieldValue:n}})}};var tl=Gr.struct("StreamMetadata",{groupId:Gr.string(),name:Gr.string()}),km=64;function el(a){return nl(a),tl.serialize(a).toBase64()}function tn(a){let e=tl.fromBase64(a);return nl(e),e}function nl(a){if(!Zc(a.name))throw new H("Invalid metadata: Name contains unknown character");if(!Zc(a.groupId))throw new H("Invalid metadata: Group ID contains unknown character");if(a.name.length>km)throw new H("Invalid metadata: Name exceed max length 64")}function Zc(a){return/^[\x00-\x7F]+$/.test(a)}import{normalizeStructTag as Wo}from"@mysten/sui/utils";function _o(a,e){return Wo(a)===Wo(e)}function le(a,e){return Wo(a)===Wo(e)}function ue(a){if(a.$kind!=="MoveCall"||!a.MoveCall)return null;let{package:e,module:t,function:n}=a.MoveCall;return`${e}::${t}::${n}`}var Lo="txn.gas";import{nanoid as vm}from"nanoid";function ol(){return vm()}var Te=class a{constructor(e,t,n){this.globals=e;this.feeContract=t;this.streamContract=n}globals;feeContract;streamContract;static convertCreateStreamInfoToInternal(e){return{metadata:el({name:e.name,groupId:ol()}),coinType:Am(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 al,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 m=0;m<e.recipients.length;m++){let b=e.recipients[m],S=this.amountForRecipient(b,e.numberEpoch),I=this.getStreamFeeLocal(S),[x]=t.splitCoins(s,[t.pure.u64(S+I)]),[D]=t.splitCoins(c,[t.pure.u64(this.flatSuiFee)]);this.streamContract.createStream(t,{paymentCoin:new be(x),flatFeeCoin:new be(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:Vr,denominator:Po},claimFeePercent:{numerator:qc,denominator:Po},flatFeePerStream:$r}}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===Lo?n=e.gas:n=e.object(t.primaryCoin),n}getCreateStreamCoinRequests(e,t){let n=e.coinType;return _o(n,il)?[{coinType:n,amount:t.totalAmount+t.streamFeeAmount+t.flatFeeAmount}]:[{coinType:n,amount:t.totalAmount+t.streamFeeAmount},{coinType:il,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 $r}getStreamFeeLocal(e){return e*Vr/Po}async getStreamFeeRemote(e){let t=this.feeContract.streamingFee(new al,e),n=await Eo(this.globals.suiClient,{sender:await this.globals.walletAddress(),transaction:t});return new No(n).getU64()}get wallet(){return this.globals.wallet}};var rl="0x0000000000000000000000000000000000000000000000000000000000000006";var Re=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.moveCall({target:n,arguments:t.arguments.map(o=>o instanceof Ro?o.moveArgs(e):o instanceof ee?o.moveArg(e):o instanceof be?o.moveArg():Fc(e,o)),typeArguments:t.typeArgs}),e}makeObject(e){return typeof e=="string"?new ee(e):e}vaultObject(){return new ee(this.config.vaultObjId)}roleObject(){return new ee(this.config.roleObjId)}feeObject(){return new ee(this.config.feeObjId)}clockObject(){return new ee(rl)}};var Be=class a extends Re{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 Qt=class a extends Re{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),m=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,m],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 Ee=class{constructor(e){this.globals=e;let t=e.envConfig.contract;this.feeContract=new Be(t,e),this.streamContract=new Qt(t,e)}globals;feeContract;streamContract;async createStreams(e){let t=Te.convertCreateStreamInfoToInternal(e);return this.createStreamHelper().buildCreateStreamTransactionBlock(t)}createStreamHelper(){return new Te(this.globals,this.feeContract,this.streamContract)}setAutoClaim(e,t,n){let o=new jo;return this.streamContract.setAutoClaim(o,{streamId:e,enabled:t,coinType:n})}claimStream(e,t){let n=new jo;return this.streamContract.claimStream(n,{streamId:e,coinType:t})}claimStreamByProxy(e,t){let n=new jo;return this.streamContract.claimStreamByProxy(n,{streamId:e,coinType:t})}cancelStream(e,t){let n=new jo;return this.streamContract.cancelStream(n,{streamId:e,coinType:t}),n}};import{normalizeStructTag as Hr,SUI_TYPE_ARG as Mm}from"@mysten/sui/utils";import{Duration as sl}from"luxon";var Uo=class extends j{constructor(e,t){super(12,`Transaction failed: ${t}`,{context:{status:e,msg:t}})}};var Om=1e3,qo=class{constructor(e){this.globals=e;this.coinMetaHelper=new Xr(e.suiClient),this.createStreamHelper=new Ee(e).createStreamHelper()}globals;coinMetaHelper;createStreamHelper;getStreamIdsFromCreateStreamResponse(e){if(e.effects?.status.status!=="success")throw new Uo(e.effects?.status.status,e.effects?.status.error);return Object.entries(e.objectTypes??{}).filter(([,t])=>t.startsWith(`${this.globals.envConfig.contract.contractId}::stream::Stream`)).map(([t])=>t)}calculateCreateStreamFees(e){return this.createStreamHelper.calculateCreateStreamFees(e)}feeParams(){return this.createStreamHelper.feeParams()}calculateStreamAmount(e){if(e.steps===0n)throw new H("Invalid stream steps: 0");let t=e.cliff?e.cliff:{numerator:0n,denominator:100n},n=e.totalAmount*t.numerator/t.denominator,o=(e.totalAmount-n)/e.steps,s={realTotalAmount:o*e.steps+n,cliffAmount:n,amountPerStep:o};return this.validateStreamAmount(s,e.totalAmount),s}calculateTimelineByInterval(e){if(e.steps===0n)throw new H("Invalid stream steps: 0");let t=e.timeStart.plus(e.interval.toMillis()*Number(e.steps)),n={timeStart:e.timeStart,timeEnd:t,interval:e.interval,steps:e.steps};return this.validateTimeline(n),n}calculateTimelineByTotalDuration(e){if(e.steps===0n)throw new H("Invalid stream steps: 0");let t=BigInt(e.total.toMillis())/e.steps,n=e.timeStart.plus(sl.fromMillis(Number(t*e.steps))),o={timeStart:e.timeStart,timeEnd:n,interval:sl.fromMillis(Number(t)),steps:e.steps};return this.validateTimeline(o),o}async getBalance(e,t){let n=await zc(this.globals.suiClient,{owner:e,coinType:t}),o=await this.getCoinMeta(t);return{...n,coinType:Hr(n.coinType),coinMeta:o}}async getAllBalance(e){let t=await Qc(this.globals.suiClient,e),n=await Promise.all(t.map(o=>this.getCoinMeta(o.coinType)));return t.map((o,i)=>({...o,coinType:Hr(o.coinType),coinMeta:n[i]}))}async getCoinMeta(e){return this.coinMetaHelper.getCoinMeta(e)}async simulateTransactionBlock(e){return Eo(this.globals.suiClient,{transaction:e,sender:await this.globals.wallet.address()})}validateStreamAmount(e,t){if(e.amountPerStep===0n)throw new H("Stream amount too small","totalAmount",t);if(e.cliffAmount>e.realTotalAmount)throw new H("Invalid cliff settings")}validateTimeline(e){if(e.interval.toMillis()<Om)throw new H("Interval shall be at least 1 second","interval",e.interval)}},Xr=class{constructor(e){this.suiClient=e;this.coinMetaReg=new Map}suiClient;coinMetaReg;async getCoinMeta(e){let t=Hr(e||Mm);if(this.coinMetaReg.has(t))return this.coinMetaReg.get(t);let n=await this.queryCoinMeta(t);return n&&this.coinMetaReg.set(t,n),n??void 0}async queryCoinMeta(e){return Jc(this.suiClient,e)}};import{normalizeStructTag as ul,normalizeSuiAddress as Ho}from"@mysten/sui/utils";import{DateTime as pl}from"luxon";import{Transaction as $o}from"@mysten/sui/transactions";import{normalizeStructTag as ll,parseStructTag as Bm}from"@mysten/sui/utils";import{DateTime as Em}from"luxon";var Fo=class extends j{constructor(){super(7,"Connected wallet is not creator")}};var en=class extends j{constructor(){super(8,"Connected wallet is not recipient")}};var Ot=class extends j{constructor(e,t={}){super(0,e,t)}};var Ko=class extends j{constructor(e){super(5,"Stream not found",{context:{streamId:e}})}};import{DateTime as Pm,Duration as Rm}from"luxon";var cl=(1n<<64n)-1n,Vo=1e3;function zr(a){let e;typeof a=="number"?e=a:typeof a=="bigint"?e=Number(a):e=a.toMillis();let t=Math.round(e/Vo);return Pm.fromMillis(t*Vo)}function Qr(a){let e;typeof a=="number"?e=a:typeof a=="bigint"?e=Number(a):e=a.toMillis();let t=Math.round(e/Vo);return Rm.fromMillis(t*Vo)}var pe=class a{constructor(e,t,n){this.globals=e;this.streamId=t;this.rawData=n;this.streamContract=new Qt(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 Fo;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 en;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 en;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 ll(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 Qr(this.rawData.config.epochInterval)}get groupId(){let{metadata:e}=this.rawData.config;return tn(e).groupId}get name(){let{metadata:e}=this.rawData.config;return tn(e).name}get recipient(){return this.rawData.config.recipient}get timeStart(){return zr(this.rawData.config.timeStart)}get duration(){let e=this.rawData.config,t=e.epochInterval*e.totalEpoch;return Qr(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:zr((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===cl?0n:this.rawData.status.epochClaimed*this.amountPerEpoch+this.cliff}get currentEpoch(){let e=Em.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 Hc(e.suiClient,t);return a.parseRawStreamData(t,n)}static parseRawStreamData(e,t){if(t.error)throw t.error.code==="notExists"?new Ko(e):new zt(`get stream data: ${t.error.code}`,{streamId:e,...t.error});let n=t.data?.content;if(!n||n.dataType!=="moveObject")throw new zt("Unexpected object type",{gotType:n?.dataType});let{typeParams:o}=Bm(n.type),i=ll(o[0]),s=n.fields,c=Bo(s.config),m=Bo(s.status);return{coinType:i,autoClaim:s.auto_claim,balance:Vc(s.balance),config:{amountPerEpoch:BigInt(String(c.amount_per_epoch)),cancelable:c.cancelable,cliff:BigInt(String(c.cliff)),creator:String(c.creator),epochInterval:BigInt(String(c.epoch_interval)),metadata:String(c.metadata),recipient:String(c.recipient),timeStart:BigInt(String(c.time_start)),totalEpoch:BigInt(String(c.total_epoch))},status:{status:m.status,epochCanceled:BigInt(String(m.epoch_canceled)),epochClaimed:BigInt(String(m.epoch_claimed))}}}};var Ne=class extends j{constructor(e,t){super(9,`Invalid stream group: ${e}`,{context:t})}};async function Yr(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 Jr=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)}},We=class{constructor(e){this.requester=e;this.pager=new Jr(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 Nm=25;async function ts(a,e,t){let n=new nn(e),o=new on(a,n,t);return await Yr(o)}var nn=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]}},on=class extends We{constructor(t,n,o){super(new Zr(t,n,o));this.suiClient=t;this.idIter=n;this.options=o}suiClient;idIter;options},Zr=class{constructor(e,t,n){this.suiClient=e;this.stringIter=t;this.options=n;this.filter=n?.filter,this.pageSize=n?.pageSize||Nm,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 Xc(this.suiClient,e),n;if(this.filter){let{filter:o}=this;n=t.filter(i=>!!i&&o(i))}else n=t.filter(o=>!!o);return{data:n,hasNext:await this.stringIter.hasNext()}}};var Go=class a{constructor(e,t){this.globals=e;this.streams=t;if(t.length===0)throw new Ne("stream size 0");let n=t.map(i=>i.groupId);if(new Set(n).size!==1)throw new H("Stream does not have same group ID")}globals;streams;type="StreamGroup";static async new(e,t){let n=await ts(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=>{Wm(n,i)||(o=!1)}),o}async refresh(){let e=await ts(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)=>pe.fromObjectData(e,t[s],i)).filter(i=>!!i);if(new Set(o.map(i=>i.groupId)).size!==1)throw new Ne("Not same group ID");if(!this.checkStreamGroup(o))throw new Ne("Not same stream settings");return o}};function Wm(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 an=class a{constructor(e,t){this.it=e;this.pageSize=t}it;pageSize;static async newIncoming(e){let t=await Xo.newIncoming(e);return new a(t,e.pageSize)}static async newOutgoing(e){let t=await Xo.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}},Xo=class a{constructor(e){this.requester=e}requester;cachedNext;static async newIncoming(e){let t=await zo.newIncomingQuery(e);return new a(t)}static async newOutgoing(e){let t=await zo.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}},zo=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 nn(n.flat().map(s=>s.streamId));this.objectIter=new on(e.suiClient,i)}globals;recipient;groupRefs;query;current=0;objectIter;static async newIncomingQuery(e){let t=qm(e.query),n=await e.globals.walletAddress(),i=(await e.globals.backend.getIncomingStreams(n,t)).filter(c=>Ho(c.recipient)===Ho(n)),s=ml(i);return new a(e.globals,n,s,e.query)}static async newOutgoingQuery(e){let t=Fm(e.query),n=await e.globals.walletAddress(),o=await e.globals.backend.getOutgoingStreams(n,t),i=ml(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 jm(this.globals,e[0].streamId,this.objectIter);return this.current++,dl(t,this.query)?t:this.doNextRequest()}if(e.length>1){let t=await Um(this.globals,e.map(n=>n.streamId),this.objectIter);return this.current++,Lm(t,this.query)?t:this.doNextRequest()}throw new Ot("Stream group with no stream")}};function ml(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)=>pl.fromISO(n[0].createDate).toMillis()-pl.fromISO(t[0].createDate).toMillis())}function dl(a,e){if(e===void 0)return!0;let t=_m(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 _m(a,e){return e===void 0?!0:Array.isArray(e)?e.includes(a.progress.status):a.progress.status===e}function Lm(a,e){if(!e)return!0;let t=!1;return a.streams.forEach(n=>{dl(n,e)&&(t=!0)}),t}async function jm(a,e,t){let n=await fl(t,e);return pe.fromObjectData(a,e,n)}async function Um(a,e,t){let n=[];for(;n.length<e.length;){let o=await fl(t,e[n.length]);n.push(o)}return Go.newFromObjectResponse(a,e,n)}async function fl(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 qm(a){return{status:es(a?.status),coinType:hl(a?.coinType),sender:gl(a?.sender)}}function Fm(a){return{status:es(a?.status),coinType:hl(a?.coinType),recipient:gl(a?.recipient)}}function es(a){return a===void 0||a.length===0?"all":Array.isArray(a)?a.reduce((e,t)=>{let n=es(t);return!e||e===n?n:"all"},void 0):Km(a)}function Km(a){switch(a){case"STREAMING":case"STREAMED":case"CANCELED":return"active";case"COMPLETED":case"SETTLED":return"inactive";default:throw new H("Unknown stream filtered status")}}function hl(a){if(a)return Array.isArray(a)?a.length!==0?a.map(e=>ul(e)):void 0:ul(a)}function gl(a){if(a)return Array.isArray(a)?a.length!==0?a.map(e=>Ho(e)):void 0:Ho(a)}var Qo=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 Vm=25;async function yl(a,e,t,n="0x2::sui::SUI",o=Vm){let i=new ns(a,e,n,o),s=BigInt(0),c=[];for(;await i.hasNext()&&s<t;){let m=await i.next();m&&(c.push(m),s+=BigInt(m.balance))}if(s<t)throw new Qo(n,t,s);return c}var ns=class extends We{constructor(t,n,o,i){super(new os(t,n,o,i));this.suiClient=t;this.owner=n;this.coinType=o;this.reqPageSize=i}suiClient;owner;coinType;reqPageSize},os=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 $c(this.suiClient,{owner:this.owner,coinType:this.coinType,cursor:this.nextCursor,limit:this.reqPageSize});return this.nextCursor=e.nextCursor,{data:e.data,hasNext:e.hasNextPage}}};var as=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)}},Jo=class{constructor(e){this.account=e}account;async address(){return this.account.address}},is=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(_o(e.coinType,$m))return{primaryCoin:Lo};if(e.amount<=0)throw new H("Invalid coin request","coinAmount",e.amount);let t=await yl(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)}}},Yo=class{globals;helper;constructor(e,t){this.globals=Pe.new(e,t),this.helper=new qo(this.globals)}connectSingleWallet(e){let t=new is(e,this.globals.suiClient);this.globals.connectWallet(t)}connectMSafeAccount(e){let t=new as(e);this.globals.connectWallet(t)}async createStream(e){return this.builder().createStreams(e)}async getStream(e){return pe.new(this.globals,e)}async getIncomingStreams(e,t=10){return an.newIncoming({globals:this.globals,query:e,pageSize:t})}async getOutgoingStreams(e,t=10){return an.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=>Gm(n))}async getRecipientsForStreamFilter(e){let t=await this.wallet.address();return(await this.globals.backend.getAllRecipients(t,e)).map(o=>bl(o))}async getCreatorsForStreamFilter(e){let t=await this.wallet.address();return(await this.globals.backend.getAllSenders(t,e)).map(o=>bl(o))}get wallet(){return this.globals.wallet}builder(){return new Ee(this.globals)}};var Kt=class extends re{application="mpay";getClient(e,t,n){let o=new Yo(e==="sui:mainnet"?"prod":"dev",{suiGrpcClient:n});return o.connectSingleWallet(new Jo(t)),o}};var rn=class extends Kt{constructor(t){super(t);this.data=t}data;txType=Hm.Stream;txSubType="Cancel";async build(t){let{network:n,account:o,suiGrpcClient:i}=t;return(await this.getClient(n,o,i).getStream(this.data.streamId)).cancel()}};import{TransactionType as Xm}from"@msafe/sui3-utils";var sn=class extends Kt{constructor(t){super(t);this.data=t}data;txType=Xm.Stream;txSubType="ClaimByProxy";async build(t){let{network:n,account:o,suiGrpcClient:i}=t;return(await this.getClient(n,o,i).getStream(this.data.streamId)).claimByProxy()}};import{TransactionType as zm}from"@msafe/sui3-utils";var cn=class extends Kt{constructor(t){super(t);this.data=t}data;txType=zm.Stream;txSubType="Claim";async build(t){let{network:n,account:o,suiGrpcClient:i}=t;return(await this.getClient(n,o,i).getStream(this.data.streamId)).claim()}};import{TransactionType as Qm}from"@msafe/sui3-utils";var ln=class extends Kt{constructor(t){super(t);this.data=t}data;txType=Qm.Stream;txSubType="CreateStream";async build(t){let{network:n,account:o,suiGrpcClient:i}=t;return this.getClient(n,o,i).createStream(this.data)}};import{bcs as Zo,pureBcsSchemaFromTypeName as Jm}from"@mysten/sui/bcs";import{fromBase64 as Ym}from"@mysten/bcs";import{normalizeStructTag as Zm,normalizeSuiAddress as rs}from"@mysten/sui/utils";function un(a){if(!a.Pure)throw new Error("not pure argument");return Ym(a.Pure.bytes)}var _e=class a{constructor(e,t){this.moveCall=e;this.txb=t}moveCall;txb;get moveCallData(){if(this.moveCall.$kind!=="MoveCall")throw new Error("not move call command");return this.moveCall.MoveCall}get inputs(){return this.txb.getData().inputs}getInputIndex(e){let t=this.moveCallData.arguments[e];if(t.$kind!=="Input")throw new Error("not input type");return t.Input}getInputParam(e){return this.inputs[this.getInputIndex(e)]}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.getInputParam(e);return BigInt(Zo.U64.parse(un(t)))}decodeInputAddress(e){let t=this.getInputParam(e);return rs(Zo.Address.parse(un(t)))}decodeInputString(e){let t=this.getInputParam(e);return Zo.String.parse(un(t))}decodeInputBool(e){let t=this.getInputParam(e);return Zo.Bool.parse(un(t))}decodePureArg(e,t){let n=this.getInputParam(e);return a.getPureInputValue(n,t)}static getPureInputValue(e,t){return a.getPureInput(e,t)}static getOwnedObjectId(e){let t=e.Object?.ImmOrOwnedObject?.objectId??e.Object?.Receiving?.objectId??e.UnresolvedObject?.objectId;if(!t)throw new Error(`not object argument: ${JSON.stringify(e)}`);return rs(t)}static getSharedObjectId(e){let t=e.Object?.SharedObject?.objectId??e.UnresolvedObject?.objectId;if(!t)throw new Error(`not shared object argument: ${JSON.stringify(e)}`);return rs(t)}static getPureInput(e,t){return Jm(t).parse(un(e))}typeArg(e){return Zm(this.moveCallData.typeArguments[e])}txArg(e){return this.moveCallData.arguments[e]}};var ta=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.commands.filter(t=>t.$kind==="MoveCall"&&le(ue(t),this.contract.createStreamTarget));if(e.length===0)throw new Ot("No create stream transactions");return e.map(t=>new _e(t,this.txb))}getCreationInfoFromMoveCall(e){let t=e.decodeInputString(4),{name:n,groupId:o}=tn(t),i=e.decodeInputAddress(5),s=e.decodeInputU64(6),c=e.decodeInputU64(7),m=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:m,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 H("Stream group not have common info");let n=e.map(o=>({address:o.recipient,amountPerStep:o.amountPerEpoch,cliffAmount:o.cliff}));return{name:e[0].name,coinType:e[0].coinType,recipients:n,interval:e[0].epochInterval,steps:e[0].totalEpoch,startTimeMs:e[0].timeStart,cancelable:e[0].cancelable}}get commands(){return this.txb.getData().commands}get contract(){return new Qt(this.globals.envConfig.contract,this.globals)}get feeContract(){return new Be(this.globals.envConfig.contract,this.globals)}createStreamHelper(){return new Te(this.globals,this.feeContract,this.contract)}};var ea=class{constructor(e,t){this.globals=e;this.txb=t;this.contract=new Qt(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 commands(){return this.txb.getData().commands}isCreateStreamTransaction(){return this.commands.findIndex(t=>t.$kind==="MoveCall"&&le(ue(t),this.contract.createStreamTarget))!==-1}isSetAutoClaimTransaction(){return this.commands.length===1&&this.commands[0].$kind==="MoveCall"&&le(ue(this.commands[0]),this.contract.setAutoClaimTarget)}isCancelStreamTransaction(){return this.commands.length===1&&this.commands[0].$kind==="MoveCall"&&le(ue(this.commands[0]),this.contract.cancelStreamTarget)}isClaimStreamTransaction(){return this.commands.length===1&&this.commands[0].$kind==="MoveCall"&&le(ue(this.commands[0]),this.contract.claimStreamTarget)}isClaimByProxyTransaction(){return this.commands.length===1&&this.commands[0].$kind==="MoveCall"&&le(ue(this.commands[0]),this.contract.claimStreamByProxyTarget)}decodeCreateStreamTransaction(){return new ta(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.commands[0];if(e.$kind!=="MoveCall")throw new Error("MoveCall not found");return new _e(e,this.txb)}};import{TransactionType as td}from"@msafe/sui3-utils";var pn=class extends Kt{constructor(t){super(t);this.data=t}data;txType=td.Stream;txSubType="SetAutoClaim";async build(t){let{network:n,account:o,suiGrpcClient:i}=t;return(await this.getClient(n,o,i).getStream(this.data.streamId)).setAutoClaim(this.data.enabled)}};var na=class{application="mpay";supportSDK="@mysten/sui-v2";async deserialize(e){let{network:t,transaction:n,suiGrpcClient:o}=e,i=Pe.new(t==="sui:mainnet"?"prod":"dev",{suiGrpcClient:o}),c=new ea(i,n).decode(),m;switch(c.type){case"CreateStream":m=new ln(c.info);break;case"SetAutoClaim":m=new pn({streamId:c.streamId,enabled:c.enabled});break;case"Claim":m=new cn({streamId:c.streamId});break;case"ClaimByProxy":m=new sn({streamId:c.streamId});break;case"Cancel":m=new rn({streamId:c.streamId});break;default:throw new Error(`Unknown transaction type: ${c}`)}return{txType:m.txType,txSubType:m.txSubType,intentionData:m.data}}async build(e){let{intentionData:t}=e,n;switch(e.txSubType){case"CreateStream":n=new ln(t);break;case"Claim":n=new cn(t);break;case"ClaimByProxy":n=new sn(t);break;case"SetAutoClaim":n=new pn(t);break;case"Cancel":n=new rn(t);break;default:throw new Error("not implemented")}return n.build({...e})}};import{TransactionDefaultApplication as od,TransactionSubTypes as Tl}from"@msafe/sui3-utils";import{buildCoinTransferTxb as ed}from"@msafe/sui3-utils";var oa=class a extends re{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiGrpcClient:n,account:o}=t;return ed(n,this.data,o.address)}static fromData(t){return new a(t)}};import{buildObjectTransferTxb as nd}from"@msafe/sui3-utils";var aa=class a extends re{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiGrpcClient:n,account:o}=t;return nd(n,this.data,o.address)}static fromData(t){return new a(t)}};var ia=class{application="msafe-core";supportSDK="@mysten/sui-v2";constructor(){this.application=od}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 Tl.assets.coin.send:i=oa.fromData(e.intentionData);break;case Tl.assets.object.send:i=aa.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiGrpcClient:o,account:t,network:n})}};import{TransactionType as Al}from"@msafe/sui3-utils";var Sl=!1,mn={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 ss(){if(!Sl)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&&(mn.ProtocolPackage=e),t&&(mn.borrowFee=t),n&&(mn.borrowFeeAddress=n),o&&(mn.pool=o),Sl=!0}catch(a){console.error(a.message)}}var Jt=mn;import{TransactionType as we}from"@msafe/sui3-utils";import{bcs as dn,fromBase64 as fn}from"@mysten/bcs";import{normalizeStructTag as id,normalizeSuiAddress as cs}from"@mysten/sui/utils";function ra(a){if(a.$kind!=="MoveCall")return null;let{package:e,module:t,function:n}=a.MoveCall;return`${e}::${t}::${n}`}var sa=class{constructor(e){this.txb=e}txb;decode(){if(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 commands(){return this.txb.getData().commands}getMoveCallCommand(e){return this.commands.find(t=>ra(t)===e)}isClaimRewardTransaction(){return this.commands.some(e=>e.$kind==="MoveCall"&&e.MoveCall.function.includes("claim_reward"))}isEntryBorrowTransaction(){return!!this.getMoveCallCommand(`${Jt.ProtocolPackage}::incentive_v3::entry_borrow_v2`)}isEntryBorrowWithFeeTransaction(){return!!this.getMoveCallCommand(`${Jt.ProtocolPackage}::incentive_v3::borrow_v2`)}isEntryMultiDepositTransaction(){let e=`${Jt.ProtocolPackage}::incentive_v3::entry_deposit`,t=this.commands.filter(o=>ra(o)===e);return this.commands.find(o=>o.$kind==="MoveCall"&&o.MoveCall.function.includes("claim_reward"))?!1:t.length>1}isEntryClaimAndDepositTransaction(){let e=`${Jt.ProtocolPackage}::incentive_v3::entry_deposit`,t=this.commands.filter(o=>ra(o)===e);return!!(this.commands.find(o=>o.$kind==="MoveCall"&&o.MoveCall.function.includes("claim_reward"))&&t.length>0)}isEntryDepositTransaction(){return!!this.getMoveCallCommand(`${Jt.ProtocolPackage}::incentive_v3::entry_deposit`)}isEntryRepayTransaction(){return!!this.getMoveCallCommand(`${Jt.ProtocolPackage}::incentive_v3::entry_repay`)}isEntryWithdrawTransaction(){return!!this.getMoveCallCommand(`${Jt.ProtocolPackage}::incentive_v3::withdraw_v2`)}decodeEntryClaimAndDeposit(){return{txType:we.Other,type:"EntryClaimAndDeposit",intentionData:{type:"entry_claim_and_deposit"}}}decodeClaimReward(){return{txType:we.Other,type:"ClaimReward",intentionData:{type:"claim_reward"}}}decodeEntryBorrow(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(5);return{txType:we.Other,type:"EntryBorrow",intentionData:{amount:t,assetId:e}}}decodeEntryMultiDeposit(){let e=[],t=`${Jt.ProtocolPackage}::incentive_v3::entry_deposit`;return this.commands.forEach(n=>{if(ra(n)===t){let o=new ca(n,this.txb),i=o.decodeInputU8(3),s=o.decodeInputU64(5);e.push({assetId:i,amount:s})}}),{txType:we.Other,type:"EntryMultiDeposit",intentionData:{list:e}}}decodeEntryDeposit(){let e=this.helper.decodeInputU8(3),t=this.helper.decodeInputU64(5);return{txType:we.Other,type:"EntryDeposit",intentionData:{amount:t,assetId:e}}}decodeEntryRepay(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(6);return{txType:we.Other,type:"EntryRepay",intentionData:{amount:t,assetId:e}}}decodeEntryWithdraw(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(5);return{txType:we.Other,type:"EntryWithdraw",intentionData:{amount:t,assetId:e}}}get helper(){let e=this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.package===Jt.ProtocolPackage);if(!e)throw new Error("MoveCall not found");return new ca(e,this.txb)}},ca=class a{constructor(e,t){this.moveCall=e;this.txb=t}moveCall;txb;get moveCallData(){if(this.moveCall.$kind!=="MoveCall")throw new Error("not move call command");return this.moveCall.MoveCall}get inputs(){return this.txb.getData().inputs}getInputIndex(e){let t=this.moveCallData.arguments[e];if(t.$kind!=="Input")throw new Error("not input type");return t.Input}getInputParam(e){return this.inputs[this.getInputIndex(e)]}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.getInputParam(e);return Number(dn.u64().parse(Uint8Array.from(fn(t.Pure.bytes))))}decodeInputU8(e){let t=this.getInputParam(e);return Number(dn.u8().parse(Uint8Array.from(fn(t.Pure.bytes))))}decodeInputAddress(e){let t=this.getInputParam(e);return cs(dn.Address.parse(Uint8Array.from(fn(t.Pure.bytes))))}decodeInputString(e){let t=this.getInputParam(e);return dn.string().parse(Uint8Array.from(fn(t.Pure.bytes)))}decodeInputBool(e){let t=this.getInputParam(e);return dn.bool().parse(Uint8Array.from(fn(t.Pure.bytes)))}static getOwnedObjectId(e){let t=e.Object?.ImmOrOwnedObject?.objectId??e.Object?.Receiving?.objectId??e.UnresolvedObject?.objectId;if(!t)throw new Error(`not object argument: ${JSON.stringify(e)}`);return cs(t)}static getSharedObjectId(e){let t=e.Object?.SharedObject?.objectId??e.UnresolvedObject?.objectId;if(!t)throw new Error(`not shared object argument: ${JSON.stringify(e)}`);return cs(t)}typeArg(e){return id(this.moveCallData.typeArguments[e])}txArg(e){return this.moveCallData.arguments[e]}};import{Transaction as wl}from"@mysten/sui/transactions";import{depositCoinPTB as rd,withdrawCoinPTB as sd,repayCoinPTB as cd,borrowCoinPTB as ld,claimLendingRewardsPTB as Il,getUserAvailableLendingRewards as Cl}from"@naviprotocol/lending";async function Le(a,e,t,n){return await rd(a,e,t,{amount:n}),a}async function xl(a,e,t,n){let[o]=await sd(a,e,t);return a.transferObjects([o],a.pure.address(n)),a}async function Dl(a,e,t,n){let[o]=await ld(a,e,t);return a.transferObjects([o],a.pure.address(n)),a}async function ls(a,e,t,n){return await cd(a,e,t,{amount:n}),a}async function kl(a,e){let t=new wl,n=await Cl(e,{client:a});return await Il(t,n),t}async function vl(a,e){let t=new wl,n=await Cl(e,{client:a});return await Il(t,n,{customCoinReceive:{type:"depositNAVI",depositNAVI:{fallbackReceiveAddress:e}}}),t}var la=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 kl(t.suiClient,t.account.address)}static fromData(t){return new a(t)}};var ua=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 vl(t.suiClient,t.account.address)}static fromData(t){return new a(t)}};import{Transaction as pd}from"@mysten/sui/transactions";import{getPool as ud}from"@naviprotocol/lending";async function Yt(a){return ud(a)}var pa=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{assetId:n,amount:o}=this.data,i=new pd;console.log("build",this.data);let s=await Yt(n);return await Dl(i,s,o,t.account.address)}static fromData(t){return new a(t)}};import{Transaction as md}from"@mysten/sui/transactions";async function je(a,e,t){let n=await a.getCoins({owner:e,coinType:t});return console.log("getTokenObjs",e,n),n}var ma=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{assetId:i,amount:s}=this.data,c=new md;console.log("build",this.data);let m=await Yt(i);if(i===0){let[x]=c.splitCoins(c.gas,[s]);return await Le(c,m,x,s)}let b=await je(n,o.address,m.suiCoinType);if(!b.data[0])throw new Error(`Insufficient balance for ${m.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 Le(c,m,c.object(S),s)}static fromData(t){return new a(t)}};import{Transaction as dd}from"@mysten/sui/transactions";var da=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 dd;console.log("build",this.data);let m=await Yt(i);if(i===0){let[I]=c.splitCoins(c.gas,[s]);return ls(c,m,I,s)}let b=await je(n,o.address,m.suiCoinType);if(!b.data[0])throw new Error(`Insufficient balance for ${m.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 ls(c,m,c.object(S),s)}static fromData(t){return new a(t)}};import{Transaction as fd}from"@mysten/sui/transactions";var fa=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 fd;console.log("build",this.data);let s=await Yt(n);return await xl(i,s,o,t.account.address)}static fromData(t){return new a(t)}};import{Transaction as hd}from"@mysten/sui/transactions";var ha=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 hd;console.log("build",this.data);for(let c=0;c<i.length;c++){let{assetId:m,amount:b}=i[c],S=await Yt(m);if(m===0){let[D]=s.splitCoins(s.gas,[b]);await Le(s,S,D,b);continue}let I=await je(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 Le(s,S,s.object(x),b)}return s}static fromData(t){return new a(t)}};import{Transaction as gd}from"@mysten/sui/transactions";var ga=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return console.log("build",this.data),gd.from(this.data.content)}static fromData(t){return new a(t)}};var ya=class{application="navi";supportSDK="@mysten/sui";async deserialize(e){if(await ss(),e.appContext?.content)return{txType:Al.Other,txSubType:"PlainTransaction",intentionData:{content:e.appContext.content,scene:e.appContext.scene||"unknown"}};let{transaction:t}=e,o=new sa(t).decode();return{txType:Al.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n}=e,o;switch(await ss(),e.txSubType){case"EntryDeposit":o=ma.fromData(e.intentionData);break;case"EntryBorrow":o=pa.fromData(e.intentionData);break;case"EntryRepay":o=da.fromData(e.intentionData);break;case"EntryWithdraw":o=fa.fromData(e.intentionData);break;case"EntryMultiDeposit":o=ha.fromData(e.intentionData);break;case"ClaimReward":o=la.fromData(e.intentionData);break;case"EntryClaimAndDeposit":o=ua.fromData(e.intentionData);break;case"PlainTransaction":o=ga.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};import{TransactionSubTypes as yd,TransactionType as Ml}from"@msafe/sui3-utils";import{fromHex as bd}from"@mysten/bcs";import{Transaction as Td}from"@mysten/sui/transactions";import Sd from"sort-keys-recursive";var Ol="msafe-plain-tx",Pl=yd.others.plain,us=class a{constructor(e){this.data=e}data;application=Ol;txType=Ml.Other;txSubType=Pl;serialize(){return JSON.stringify(Sd(this.data))}async build(e){return Td.from(bd(this.data.content))}static fromData(e){return new a(e)}},ba=class{application;supportSDK="@mysten/sui";constructor(){this.application=Ol}async deserialize(e){let{content:t}=e.appContext;return{txType:Ml.Other,txSubType:Pl,intentionData:{content:t}}}async build(e){let{suiClient:t,network:n,account:o}=e;return us.fromData(e.intentionData).build({suiClient:t,network:n,account:o})}};import{Transaction as Ia,isTransaction as vd}from"@mysten/sui/transactions";import{SuiClient as Ad}from"@mysten/sui.js/client";import{RequestManager as xd,HTTPTransport as Dd,Client as kd}from"@open-rpc/client-js";var wd={"-32700":"ParseError","-32600":"InvalidRequest","-32601":"MethodNotFound","-32602":"InvalidParams","-32603":"InternalError"},ps=class extends Error{},Ta=class extends ps{code;type;constructor(e,t){super(e),this.code=t,this.type=wd[t]??"ServerError"}};function Id(a){let e=new URL(a);return e.protocol=e.protocol.replace("http","ws"),e.toString()}var Cd={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5},Sa=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={...Cd,...t},this.endpoint&&this.endpoint.startsWith("http")&&(this.endpoint=Id(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 Ta(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 ms(e);return this.#i.add(t),await t.subscribe(this),()=>t.unsubscribe(this)}},ms=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 Dd(o?.url??e,{headers:{"Content-Type":"application/json",...o?.headers}});this.rpcClient=new kd(new xd([i])),this.websocketClient=new Sa(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 Md="0x2::sui::SUI",ys=1e8;function ds(a){return new Ad({transport:new Ue({url:a,rpc:{url:a}})})}async function Rl(a,e){if(vd(a))return a;let t=ds(e),n=await a.build({client:t});return Ia.from(n)}var wa=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:{let i=o;throw new Error(`${i.application}: ${i.supportSDK} SDK not supported`)}}}return t}addLegacyHelper(e){this.setApp(e.application,new gs(e))}addHelper(e){this.setApp(e.application,new fs(e))}addGrpcHelper(e){this.setApp(e.application,new hs(e))}getAppHelper(e){let t=this.apps.get(e);if(!t)throw new Error(`${e} not registered`);return t}setApp(e,t){this.apps.set(e,t)}},fs=class{constructor(e){this.helper=e}helper;async deserialize(e){let t=new ye({network:Qe(e.network),transport:new Ue({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=await Rl(e.transactionBlock,e.clientUrl);return this.helper.deserialize({...e,suiClient:t,transaction:n})}async build(e){let t=new ye({network:Qe(e.network),transport:new Ue({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=await t.getBalance({owner:e.account.address});if(Number(n.totalBalance)<ys)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 Ia.from(i)}},hs=class{constructor(e){this.helper=e}helper;async deserialize(e){let t=Ye(e.network,e.clientUrl),n=await Rl(e.transactionBlock,e.clientUrl);return this.helper.deserialize({...e,suiGrpcClient:t,transaction:n})}async build(e){let t=Ye(e.network,e.clientUrl),{balance:n}=await t.core.getBalance({owner:e.account.address,coinType:Md});if(Number(n.balance)<ys)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 Ia.from(i)}},gs=class{constructor(e){this.helper=e}helper;async deserialize(e){let t=ds(e.clientUrl);return this.helper.deserialize({...e,transactionBlock:e.transactionBlock,suiClient:t})}async build(e){let t=ds(e.clientUrl),n=await t.getBalance({owner:e.account.address});if(Number(n.totalBalance)<ys)throw new Error("Insufficient gas fee");let i=await(await this.helper.build({...e,suiClient:t})).build({client:t});return Ia.from(i)}};import{TransactionType as jd}from"@msafe/sui3-utils";import{Scallop as Ud}from"@scallop-io/sui-scallop-sdk";import{TransactionType as Et}from"@msafe/sui3-utils";import{OLD_BORROW_INCENTIVE_PROTOCOL_ID as _l}from"@scallop-io/sui-scallop-sdk";import{parseStructTag as Od}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}=Od(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 bs}from"@mysten/sui/bcs";import{normalizeStructTag as Pd,normalizeSuiAddress as hn}from"@mysten/sui/utils";var Ts=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}`,m=`${e.MoveCall.package}::${e.MoveCall.module}::${e.MoveCall.function}`;return c===m?(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 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.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"&&t.kind!=="Result")throw new Error("not nested or result 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=bs[t];return bs[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 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){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 bs.U64.parse(new Uint8Array(t))}typeArg(e){return Pd(this.txBlockTransactions.typeArguments[e])}txArg(e){return this.transaction.blockData.inputs[e]}},N=Ts;var Ss=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=Ss;import{normalizeStructTag as Bl,SUI_CLOCK_OBJECT_ID as El,SUI_TYPE_ARG as Rd}from"@mysten/sui/utils";var Nl=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`},qe={id:"0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",incentivePools:"0x64972b713ccec45ec3964809e477cea6f97350c0c50ca3aec85bb631639266ec",incentiveAccounts:"0x3c0b707068bdcea8bb859d751ad3e2149a9f83c13fcf4054ef91372a00bccdd3"},Vt={unstakeObligation:(a,e,t)=>a.moveCall(`${qe.id}::user::unstake`,[qe.incentivePools,qe.incentiveAccounts,a.object(e),a.object(t),El],[Bl(Rd)]),redeem_rewards:(a,e,t,n)=>a.moveCall(`${qe.id}::user::redeem_rewards`,[qe.incentivePools,qe.incentiveAccounts,a.object(e),a.object(t),El],[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 Ca=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(`${_l}::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,`${_l}::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)),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 Is}from"@msafe/sui3-utils";var xa=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:Is.Other,type:"CreateReferralLink",intentionData:{}}}decodeClaimRevenueReferral(){let e=this.helperClaimRevenueReferral[0].decodeOwnedObjectId(2),t=this.helperClaimRevenueReferral.map(n=>n.typeArg(0));return{txType:Is.Other,type:"ClaimRevenueReferral",intentionData:{veScaKey:e,coins:t}}}decodeBindReferral(){let e=this.helperBindReferral.decodePureArg(1,"Address");return{txType:Is.Other,type:"BindReferral",intentionData:{veScaKey:e}}}};import{TransactionType as ne}from"@msafe/sui3-utils";import{OLD_BORROW_INCENTIVE_PROTOCOL_ID as Bd}from"@scallop-io/sui-scallop-sdk";var Da=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(m=>m.$kind==="TransferObjects");if(e.length!==1)return!1;let{objects:t}=e[0].TransferObjects,n=t.filter(m=>m.$kind==="Input").map(({Input:m})=>m);if(n.length!==t.length)return!1;let o=new Set(n),i=this.inputs.filter((m,b)=>m.$kind==="Object"&&o.has(b)).map(m=>m.Object.ImmOrOwnedObject),s=`${this.coreId.veScaObjId}::ve_sca::VeScaKey`,c=Wl(i.map(({objectId:m})=>m),50);for(let m=0;m<c.length;m++){let b=c[m];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,`${Bd}::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(m=>{this.filterMoveCallCommands(m,e)?(o.push({action:"unstake",helper:new N(m,this.transaction,i)}),i++):this.filterMoveCallCommands(m,t)?(o.push({action:"stake",helper:new N(m,this.transaction,s)}),s++):this.filterMoveCallCommands(m,n)&&(o.push({action:"deactivate",helper:new N(m,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=[],m=[];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&&(m=[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:m,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,m,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,m]=S[I].condition,s=!0,c=S[I].isOld);return{txType:ne.Other,type:"ExtendStakePeriod",intentionData:{unlockTime:e,obligationId:m,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 m=!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,m=!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:m}}}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 m=!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,m=!0,b=x[D].isOld);return{txType:ne.Other,type:"StakeSca",intentionData:{amount:n,unlockTime:t,obligationId:S,obligationKey:I,veScaKey:s,isObligationLocked:m,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 Ed from"sort-keys-recursive";var A=class{constructor(e){this.data=e}data;get application(){return"msafe-core"}serialize(){return JSON.stringify(Ed(this.data))}isObligationLocked=async(e,t)=>{let n=await e.getObject({id:typeof t=="string"?t:t.objectId,options:{showContent:!0}}),o=!1;return n&&n?.data.content?.dataType==="moveObject"&&"lock_key"in n.data.content.fields&&(o=!!n.data.content.fields.lock_key),o};async buildTxWithRefreshObligation(e,t,n){let o=e.builder.createTxBlock();o.setSender(t.walletAddress);let{obligationId:i,obligationKey:s}=t;return await this.isObligationLocked(e.scallopSuiKit.client,i)?(await o.unstakeObligationQuick(i,s),await n(e,o,t),await o.stakeObligationWithVeScaQuick(i,s,t.veScaKey)):await n(e,o,t),o}};var ka=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async borrow({account:t,scallopClient:n}){let{coinName:o,amount:i,obligationId:s,obligationKey:c}=this.data,m=t.address;return(await this.buildTxWithRefreshObligation(n,{walletAddress:m,obligationId:s,obligationKey:c},async(S,I)=>{let x=await I.borrowQuick(+i,o,s,c);I.transferObjects([x],m)})).txBlock}async build(t){return this.borrow(t)}static fromData(t){return new a(t)}};var va=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async borrowWithBoost(t,n){let{obligationId:o,obligationKey:i,veScaKey:s,amount:c,coinName:m}=this.data;return(await this.buildTxWithRefreshObligation(t,{walletAddress:n,obligationId:o,obligationKey:i,veScaKey:s},async(S,I)=>{let x=await I.borrowQuick(+c,m,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 Aa=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:m,amount:b}=this.data;return(await this.buildTxWithRefreshObligation(n,{walletAddress:o,obligationId:i,obligationKey:s,veScaKey:c},async(I,x)=>{let D=x.claimReferralTicket(m),k=await x.borrowWithReferralQuick(+b,m,D,i,s);x.burnReferralTicket(D,m),x.transferObjects([k],o)})).txBlock}async build(t){return this.borrowWithReferral(t)}static fromData(t){return new a(t)}};import{SUI_TYPE_ARG as Nd}from"@mysten/sui/utils";var Ma=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)??[]),m=(()=>{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(!m[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(m).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=Vt.redeem_rewards(n,M,D.obligationId,Nd);b.sui?b.sui.push(U):b.sui=[U]}if(k&&await Nl(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 Oa=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return await t.scallopClient.depositCollateral(this.data.collateralCoinName,+this.data.amount,!1,this.data.obligationId)}static fromData(t){return new a(t)}};var Pa=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:m}=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),m?await b.stakeObligationWithVeScaQuick(s,i,m):await b.stakeObligationQuick(s,i),b.txBlock}async build(t){return this.migrateAndClaim(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 build(t){return await t.scallopClient.migrateAllMarketCoin(!1,!1)}static fromData(t){return new a(t)}};var Ba=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return await t.scallopClient.openObligation(!1)}static fromData(t){return new a(t)}};var Ea=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:m}=this.data;return(await this.buildTxWithRefreshObligation(n,{walletAddress:o,obligationId:c,obligationKey:m},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 Na=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:m}=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,m),b.txBlock}async build(t){return this.repayWithBoost(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 build(t){return await t.scallopClient.deposit(this.data.coinName,+this.data.amount,!1,t.account.address)}static fromData(t){return new a(t)}};var _a=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return await t.scallopClient.unstake(this.data.marketCoinName,+this.data.amount,!1)}static fromData(t){return new a(t)}};var La=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:m}=this.data,b=[];for(let S=0;S<s.length;S++){let{id:I,coin:x}=s[S],D=t.utils.parseMarketCoinName(m),[k]=await i.unstakeQuick(x,D,I,!1);if(k){let M=i.withdraw(k,m);b.push(M)}}if(c>0){let S=await i.withdrawQuick(c,m);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 ja=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return await 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 Ua=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){return await t.scallopClient.withdraw(this.data.coinName,Number(this.data.amount),!1,t.account.address)}static fromData(t){return new a(t)}};var qa=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 Fa=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 m=i.map(b=>n.utils.parseCoinNameFromType(b));return await c.claimReferralRevenueQuick(o,m),c.txBlock}async build(t){return this.claimRevenueReferral(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 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 Wd}from"@scallop-io/sui-scallop-sdk";var Va=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:m,isOldBorrowIncentive:b,isObligationLocked:S}=this.data,I=t.address,x=n.builder.createTxBlock();x.setSender(I);let D=await n.utils.selectCoins(o,Wd,I),[k,M]=x.takeAmountFromCoins(D,o);return x.extendLockPeriod(i,s),x.extendLockAmount(i,k),x.transferObjects([M],I),!c||!m||(S&&(b?Vt.unstakeObligation(x,c,m):x.unstakeObligation(c,m)),x.stakeObligationWithVesca(c,m,i)),x.txBlock}async build(t){return this.extendPeriodAndStakeMoreSca(t)}static fromData(t){return new a(t)}};var $a=class a extends A{constructor(t){super(t);this.data=t}data;txType;txSubType;async extendStakeScaLockPeriod({account:t,scallopClient:n}){let o=t.address,{veScaKey:i,unlockTime:s,obligationId:c,obligationKey:m,isObligationLocked:b,isOldBorrowIncentive:S}=this.data,I=n.builder.createTxBlock();return I.setSender(o),I.extendLockPeriod(i,s),c&&m&&(b&&(S?Vt.unstakeObligation(I,m,c):I.unstakeObligation(c,m)),I.stakeObligationWithVesca(c,m,i)),I.txBlock}async build(t){return this.extendStakeScaLockPeriod(t)}static fromData(t){return new a(t)}};var Ga=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,m]=await Promise.all([n.getBindedObligationId(i),n.getBindedObligationId(s)]);c&&await t.unstakeObligationQuick(c),m&&await t.unstakeObligationQuick(m),o(t,i,s),c&&await t.stakeObligationWithVeScaQuick(c,void 0,i),m&&await t.stakeObligationWithVeScaQuick(m,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,m)=>{s.mergeVeSca(i.object(c),i.object(m))}),i.txBlock}static fromData(t){return new a(t)}};var Ha=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 _d}from"@scallop-io/sui-scallop-sdk";var Xa=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:m,obligation:b,obligationKey:S,isObligationLocked:I,isOldBorrowIncentive:x}=this.data,D=n.builder.createTxBlock();if(D.setSender(o),m){let U=D.redeemSca(c);D.transferObjects([U],o)}let k=await n.builder.utils.selectCoins(i,_d,o),[M,L]=D.takeAmountFromCoins(k,i);return D.transferObjects([L],o),D.renewExpiredVeSca(c,M,s),!b||!S||(I&&(x?Vt.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 za=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,m)=>{let b=s.splitVeSca(c,m.toString());s.transferObjects([b],o)}),i.txBlock}static fromData(t){return new a(t)}};import{SCA_COIN_TYPE as Ld}from"@scallop-io/sui-scallop-sdk";var Qa=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:m,obligationKey:b,unlockTime:S,veScaKey:I}=this.data,x=n.builder.createTxBlock();x.setSender(o);let D=await n.utils.selectCoins(i,Ld,o),[k,M]=x.takeAmountFromCoins(D,i),L;return I?x.extendLockAmount(I,k):L=x.lockSca(k,S),m&&b&&(s&&(c?Vt.unstakeObligation(x,b,m):x.unstakeObligation(m,b)),x.stakeObligationWithVesca(m,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 Ja=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,m=n.builder.createTxBlock();m.setSender(o);let b=await m.depositQuick(+i,s),S=n.utils.parseMarketCoinName(s);if(n.constants.whitelist.spool.has(S))return m.txBlock;let I=await n.query.getStakeAccounts(S,o),x=c||(I.length>0?I[0].id:void 0);if(x)await m.stakeQuick(b,S,x);else{let D=m.createStakeAccount(S);await m.stakeQuick(b,S,D),m.transferObjects([D],o)}return m.txBlock}async build(t){return this.supplyAndStake(t)}static fromData(t){return new a(t)}};var Ya=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 Za=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 ti=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 ei=class{application="scallop";supportSDK="@mysten/sui";scallopClient;async initScallopClient(e,t){if(!this.scallopClient){let n=new Ud({addressId:"695fcdc084f790c04eb068dc",walletAddress:e,suiClients:[t],fullnodeUrls:[t.transport.rpcClient.requestManager.transports[0]?.uri??Ut("mainnet")]});this.scallopClient=await n.createScallopClient()}}async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;await this.initScallopClient(o.address,n);let i=new Ca(t,this.scallopClient),s=new xa(t,this.scallopClient),c=new Da(t,this.scallopClient),m=i.decode()||s.decode()||await c.decode();if(!m)throw new Error("Unknown transaction type");return{txType:jd.Other,txSubType:m.type,intentionData:m.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=Wa.fromData(s);break;case"WithdrawLending":c=Ua.fromData(s);break;case"Borrow":c=ka.fromData(s);break;case"Repay":c=Ea.fromData(s);break;case"DepositCollateral":c=Oa.fromData(s);break;case"WithdrawCollateral":c=ja.fromData(s);break;case"OpenObligation":c=Ba.fromData(s);break;case"UnstakeSpool":c=_a.fromData(s);break;case"ClaimIncentiveReward":c=Ma.fromData(s);break;case"BorrowWithBoost":c=va.fromData(s);break;case"StakeSca":c=Qa.fromData(s);break;case"ExtendStakePeriod":c=$a.fromData(s);break;case"ExtendPeriodAndStakeMore":c=Va.fromData(s);break;case"RenewExpStakePeriod":c=Xa.fromData(s);break;case"WithdrawStakedSca":c=ti.fromData(s);break;case"SupplyAndStakeLending":c=Ja.fromData(s);break;case"WithdrawAndUnstakeLending":c=La.fromData(s);break;case"RedeemSca":c=Ha.fromData(s);break;case"MigrateAndClaim":c=Pa.fromData(s);break;case"BorrowWithReferral":c=Aa.fromData(s);break;case"CreateReferralLink":c=Ka.fromData(s);break;case"ClaimRevenueReferral":c=Fa.fromData(s);break;case"BindReferral":c=qa.fromData(s);break;case"MigrateScoin":c=Ra.fromData(s);break;case"RepayWithBoost":c=Na.fromData(s);break;case"MergeVeSca":c=Ga.fromData(s);break;case"SplitVeSca":c=za.fromData(s);break;case"VeScaObligationBindings":{c=Ya.fromData(s);break}case"TransferVeScaKeys":{c=Za.fromData(s);break}default:throw new Error("not implemented")}return c.build({suiClient:t,account:n,network:o,scallopClient:this.scallopClient})}};import{TransactionType as Sf}from"@msafe/sui3-utils";import{TransactionType as bn}from"@msafe/sui3-utils";import{normalizeStructTag as Ie}from"@mysten/sui/utils";import{API_URL as nf}from"@suilend/sui-fe";import{TransactionType as Zd}from"@msafe/sui3-utils";import{LENDING_MARKET_ID as tf,LENDING_MARKET_TYPE as ef,SuilendClient as Cs}from"@suilend/sdk";import{TransactionType as Ke}from"@msafe/sui3-utils";import{fromBase64 as Ll,toHex as jl}from"@mysten/bcs";import{normalizeStructTag as gn}from"@mysten/sui/utils";import{MAX_U64 as Ve}from"@suilend/sui-fe";import Ul from"bignumber.js";var ni=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=gn(e.MintEvent.parsedJson.coin_type.name),n=e.MintEvent.parsedJson.liquidity_amount;return console.log("Decoder.decodeDeposit",t,n),{txType:Ke.Other,type:"deposit",intentionData:{coinType:t,value:n}}}decodeWithdraw(){let e={withdraw_ctokens:this.getMoveCallCommand("withdraw_ctokens")},t={RedeemEvent:this.simResult.events.find(m=>m.type.includes("lending_market::RedeemEvent"))},n=gn(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 Ul(jl(Ll(this.inputs[i].Pure.bytes)),16).toString(),c=s===Ve.toString();return console.log("decodeWithdraw - isMax:",c,"inputIndex:",i,"inputValue:",s,"MAX_U64.toString():",Ve.toString()),c&&(o=Ve.toString()),{txType:Ke.Other,type:"withdraw",intentionData:{coinType:n,value:o}}}decodeBorrow(){let e={borrow_request:this.getMoveCallCommand("borrow_request")},t={BorrowEvent:this.simResult.events.find(m=>m.type.includes("lending_market::BorrowEvent"))},n=gn(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 Ul(jl(Ll(this.inputs[i].Pure.bytes)),16).toString(),c=s===Ve.toString();return console.log("decodeBorrow - isMax:",c,"inputIndex:",i,"inputValue:",s,"MAX_U64.toString():",Ve.toString()),c&&(o=Ve.toString()),{txType:Ke.Other,type:"borrow",intentionData:{coinType:n,value:o}}}decodeRepay(){let e={RepayEvent:this.simResult.events.find(o=>o.type.includes("lending_market::RepayEvent"))},t=gn(e.RepayEvent.parsedJson.coin_type.name),n=e.RepayEvent.parsedJson.liquidity_amount;return console.log("Decoder.decodeRepay",t,n),{txType:Ke.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=gn(o.parsedJson.coin_type.name),s=o.parsedJson.liquidity_amount;t[i]=`${+(t[i]??"0")+ +s}`}return console.log("Decoder.decodeClaimRewards",t),{txType:Ke.Other,type:"claim",intentionData:{value:t}}}decodeClaimAndDeposit(){return{txType:Ke.Other,type:"claimAndDeposit",intentionData:this.decodeClaim().intentionData}}};import{Transaction as Kd}from"@mysten/sui/transactions";import Fd from"sort-keys-recursive";var _t=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify(Fd(this.data))}};var oi=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 m=new Kd;return await i.borrowAndSendToUser(o.address,s.id,c.id,this.data.coinType,this.data.value,m),m}static fromData(t){return console.log("BorrowIntention.fromData",t),new a(t)}};import{Transaction as Xd}from"@mysten/sui/transactions";import{normalizeStructTag as Vd}from"@mysten/sui/utils";import{Side as yn}from"@suilend/sdk";import{isSendPoints as $d}from"@suilend/sui-fe";import Gd from"bignumber.js";var Hd=(a,e)=>{let t={[yn.DEPOSIT]:[],[yn.BORROW]:[]};return a.lendingMarket.reserves.forEach(n=>{[yn.DEPOSIT,yn.BORROW].forEach(o=>{let i=o===yn.DEPOSIT?n.depositsPoolRewardManager:n.borrowsPoolRewardManager,s=e.userRewardManagers.find(c=>c.poolRewardManagerId===i.id);s&&(t[o]=i.poolRewards.map((c,m)=>({reserveArrayIndex:n.arrayIndex,rewardIndex:BigInt(m),rewardCoinType:Vd(c.coinType.name),side:o})).filter(c=>!$d(c.rewardCoinType)&&!!s.rewards[Number(c.rewardIndex)]&&new Gd(s.rewards[Number(c.rewardIndex)].earnedRewards.value.toString()).gt(0)))})}),Object.values(t).flat()},ai=Hd;var ii=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 m=new Xd;return i.claimRewardsAndSendToUser(o.address,s.id,ai(i,c),m),m}static fromData(t){return console.log("ClaimIntention.fromData",t),new a(t)}};import{Transaction as zd}from"@mysten/sui/transactions";var ri=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 m=new zd;return i.claimRewardsAndDeposit(o.address,s.id,ai(i,c),m),m}static fromData(t){return console.log("ClaimAndDepositIntention.fromData",t),new a(t)}};import{Transaction as Qd}from"@mysten/sui/transactions";var si=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 m=new Qd;return await i.depositIntoObligation(o.address,this.data.coinType,this.data.value,m,s?.id),m}static fromData(t){return console.log("DepositIntention.fromData",t),new a(t)}};import{Transaction as Jd}from"@mysten/sui/transactions";var ci=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 m=new Jd;return await i.repayIntoObligation(o.address,c.id,this.data.coinType,this.data.value,m),m}static fromData(t){return console.log("RepayIntention.fromData",t),new a(t)}};import{Transaction as Yd}from"@mysten/sui/transactions";var li=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 m=new Yd;return await i.withdrawAndSendToUser(o.address,s.id,c.id,this.data.coinType,this.data.value,m),m}static fromData(t){return console.log("WithdrawIntention.fromData",t),new a(t)}};var ui=async(a,e)=>{let t=await Cs.initialize(tf,ef,a),n=await Cs.getObligationOwnerCaps(e.address,t.lendingMarket.$typeArgs,a),o=await Promise.all(n.map(i=>Cs.getObligation(i.obligationId,t.lendingMarket.$typeArgs,a)));return console.log("XXX getUtils - suilendClient:",t,"obligations:",o,"obligationOwnerCaps:",n),{suilendClient:t,obligationOwnerCaps:n,obligations:o}},pi=class{application="Suilend";supportSDK="@mysten/sui";utils;async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;this.utils||(this.utils=await ui(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 ni(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 ui(i,s));let c;switch(n){case"deposit":c=si.fromData(o);break;case"withdraw":c=li.fromData(o);break;case"borrow":c=oi.fromData(o);break;case"repay":c=ci.fromData(o);break;case"claim":c=ii.fromData(o);break;case"claimAndDeposit":c=ri.fromData(o);break;default:throw new Error("not implemented")}let m=window.localStorage.getItem("obligationId"),b=this.utils.obligations?.find(I=>I.id===m)??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 xs=async(a,e)=>{let t=await ui(a,e),n=await fetch(`${nf}/springsui/lst-info`),o=await n.json();if(n?.statusCode===500)throw new Error("Failed to fetch SpringSui LST data");let s=Object.fromEntries(Object.values(o).map(c=>[c.LIQUID_STAKING_INFO.type,c.LIQUID_STAKING_INFO]));return{...t,LIQUID_STAKING_INFO_MAP:s}};var mi=class{constructor(e,t){this.transaction=e;this.simResult=t}transaction;simResult;decode(){if(this.isStakeTransaction())return this.decodeStake();if(this.isStakeAndDepositTransaction())return this.decodeStakeAndDeposit();if(this.isConvertTransaction())return this.decodeConvert();if(this.isConvertAndDepositTransaction())return this.decodeConvertAndDeposit();if(this.isUnstakeTransaction())return this.decodeUnstake();throw new Error("Unknown transaction type")}get commands(){return this.transaction.getData().commands}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}hasSuilendDepositTransactionMoveCallCommands(){return!!this.getMoveCallCommand("deposit_liquidity_and_mint_ctokens")&&!!this.getMoveCallCommand("deposit_ctokens_into_obligation")}hasMintMoveCallCommands(){return!!this.getMoveCallCommand("mint")}hasRedeemMoveCallCommands(){return!!this.getMoveCallCommand("redeem")}isStakeTransaction(){return this.hasMintMoveCallCommands()&&!this.hasRedeemMoveCallCommands()&&!this.hasSuilendDepositTransactionMoveCallCommands()}isStakeAndDepositTransaction(){return this.hasMintMoveCallCommands()&&!this.hasRedeemMoveCallCommands()&&this.hasSuilendDepositTransactionMoveCallCommands()}isConvertTransaction(){return this.hasMintMoveCallCommands()&&this.hasRedeemMoveCallCommands()&&!this.hasSuilendDepositTransactionMoveCallCommands()}isConvertAndDepositTransaction(){return this.hasMintMoveCallCommands()&&this.hasRedeemMoveCallCommands()&&this.hasSuilendDepositTransactionMoveCallCommands()}isUnstakeTransaction(){return!this.hasMintMoveCallCommands()&&this.hasRedeemMoveCallCommands()&&!this.hasSuilendDepositTransactionMoveCallCommands()}decodeStake(){let e={MintEvent:this.simResult.events.find(o=>o.type.includes("liquid_staking::MintEvent"))},t=Ie(e.MintEvent.parsedJson.event.typename.name),n=e.MintEvent.parsedJson.event.sui_amount_in;return console.log("Decoder.decodeStake",n),{txType:bn.Other,type:"stake",intentionData:{amount:n,outCoinType:t}}}decodeStakeAndDeposit(){let e={MintEvent:this.simResult.events.find(o=>o.type.includes("liquid_staking::MintEvent"))},t=Ie(e.MintEvent.parsedJson.event.typename.name),n=e.MintEvent.parsedJson.event.sui_amount_in;return console.log("Decoder.decodeStakeAndDeposit",n),{txType:bn.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=Ie(e.RedeemEvent.parsedJson.event.typename.name),n=Ie(e.MintEvent.parsedJson.event.typename.name),o=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeConvert",o),{txType:bn.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=Ie(e.RedeemEvent.parsedJson.event.typename.name),n=Ie(e.MintEvent.parsedJson.event.typename.name),o=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeConvertAndDeposit",o),{txType:bn.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=Ie(e.RedeemEvent.parsedJson.event.typename.name),n=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeUnstake",n),{txType:bn.Other,type:"unstake",intentionData:{amount:n,inCoinType:t}}}};import{Transaction as rf}from"@mysten/sui/transactions";import{LstClient as ql,convertLstsAndRebalanceAndSendToUser as sf}from"@suilend/springsui-sdk";import af from"sort-keys-recursive";var $t=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify(af(this.data))}};var di=class a extends $t{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:m}=t;console.log("ConvertIntention.build",n,o,i,s,c,m);let b=await ql.initialize(n,Object.values(s).find(x=>x.type===this.data.inCoinType)),S=await ql.initialize(n,Object.values(s).find(x=>x.type===this.data.outCoinType)),I=new rf;return sf(b,S,I,o.address,this.data.amount),I}static fromData(t){return console.log("ConvertIntention.fromData",t),new a(t)}};import{Transaction as cf}from"@mysten/sui/transactions";import{createObligationIfNoneExists as lf,sendObligationToUser as uf}from"@suilend/sdk";import{LstClient as Fl,convertLstsAndRebalance as pf}from"@suilend/springsui-sdk";var fi=class a extends $t{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:m}=t;console.log("ConvertAndDepositIntention.build",n,o,i,s,c,m);let b=await Fl.initialize(n,Object.values(s).find(M=>M.type===this.data.inCoinType)),S=await Fl.initialize(n,Object.values(s).find(M=>M.type===this.data.outCoinType)),I=new cf,{obligationOwnerCapId:x,didCreate:D}=lf(i,I,c),k=pf(b,S,I,o.address,this.data.amount);return i.deposit(k,this.data.outCoinType,x,I),D&&uf(x,o.address,I),I}static fromData(t){return console.log("ConvertAndDepositIntention.fromData",t),new a(t)}};import{Transaction as mf}from"@mysten/sui/transactions";import{LstClient as df}from"@suilend/springsui-sdk";var hi=class a extends $t{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:m}=t;console.log("StakeIntention.build",n,o,i,s,c,m);let b=await df.initialize(n,Object.values(s).find(I=>I.type===this.data.outCoinType)),S=new mf;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 ff}from"@mysten/sui/transactions";import{createObligationIfNoneExists as hf,sendObligationToUser as gf}from"@suilend/sdk";import{LstClient as yf}from"@suilend/springsui-sdk";var gi=class a extends $t{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:m}=t;console.log("StakeAndDepositIntention.build",n,o,i,s,c,m);let b=await yf.initialize(n,Object.values(s).find(k=>k.type===this.data.outCoinType)),S=new ff,{obligationOwnerCapId:I,didCreate:x}=hf(i,S,c),D=b.mintAmountAndRebalance(S,o.address,this.data.amount);return i.deposit(D,this.data.outCoinType,I,S),x&&gf(I,o.address,S),S}static fromData(t){return console.log("StakeAndDepositIntention.fromData",t),new a(t)}};import{Transaction as bf}from"@mysten/sui/transactions";import{LstClient as Tf}from"@suilend/springsui-sdk";var yi=class a extends $t{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:m}=t;console.log("UnstakeIntention.build",n,o,i,s,c,m);let b=await Tf.initialize(n,Object.values(s).find(I=>I.type===this.data.inCoinType)),S=new bf;return b.redeemAmountAndRebalanceAndSendToUser(S,o.address,this.data.amount),S}static fromData(t){return console.log("UnstakeIntention.fromData",t),new a(t)}};var bi=class{application="SpringSui";supportSDK="@mysten/sui";utils;async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;this.utils||(this.utils=await xs(n,o));let i=await n.devInspectTransactionBlock({sender:o.address,transactionBlock:t});console.log("SpringSuiAppHelper.deserialize",i);let c=new mi(t,i).decode();return{txType:Sf.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 xs(i,s));let c;switch(n){case"stake":c=hi.fromData(o);break;case"stakeAndDeposit":c=gi.fromData(o);break;case"convert":c=di.fromData(o);break;case"convertAndDeposit":c=fi.fromData(o);break;case"unstake":c=yi.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 xf}from"@msafe/sui3-utils";import{TransactionType as Kl}from"@msafe/sui3-utils";var Ti=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:Kl.Other,type:"mint",intentionData:{amount:t}}}decodeRedeem(e){let{event:{lst_amount_in:t}}=e;return console.log("Decoder.decodeRedeem",t),{txType:Kl.Other,type:"redeem",intentionData:{amount:t}}}};import{LST as If}from"@alphafi/stsui-sdk";var Si=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 If(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 Cf}from"@alphafi/stsui-sdk";var wi=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 Cf(i).redeem(o,n.address);return c.setGasBudget(1e8),c}static fromData(t){return console.log("RedeemIntention.fromData",t),new a(t)}};var Ii=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 Ti(t,o).decode();return{txType:xf.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=wi.fromData(e.intentionData);break;default:throw new Error("build not implemented")}return n.build({account:t})}};import{TransactionType as Gf}from"@msafe/sui3-utils";import{TurbosSdk as Hf}from"turbos-clmm-sdk";import{TransactionType as Lt}from"@msafe/sui3-utils";import{fromBase64 as $e}from"@mysten/bcs";import{bcs as Ge}from"@mysten/sui/bcs";import{BN as kf}from"turbos-clmm-sdk";var Gt={PackageId:"0x02fe4933f4521250e55a15441096d1d4a38a7311195b0bca126fc0138c1f5a97",Claim:"0x0c822cec42f7ca703696b4232f1c47b348330c23580172a29aab465bc071d894",turbosCoinType:"0x5d1f47ea69bb0de31c313d7acf89b890dbb8991ea8e03c6c355171f84bb1ba4a::turbos::TURBOS"},Ht={PackageId:"0xdee9"};var vf=(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}`)}},Ci=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(`${Gt.PackageId}::claim::join`)}isPrixClaimTransaction(){return!!this.getMoveCallTransaction(`${Gt.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(`${Ht.PackageId}::clob_v2::swap_exact_base_for_quote`)}isSwapExactQuoteForBaseTransaction(){return!!this.getMoveCallTransaction(`${Ht.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=vf(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 kf(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],m=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:m,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)),m=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:m?-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)),m=s.decodeInputU64(s.getInputsIndex(5));o[c]=m});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)),m=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:m}}}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),m=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:m,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 de(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 de(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 de(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 de(e,this.txb)}get swapExactBaseForQuoteHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${Ht.PackageId}::clob_v2::swap_exact_base_for_quote`:!1);return new de(e,this.txb)}get swapExactQuoteForBaseHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${Ht.PackageId}::clob_v2::swap_exact_quote_for_base`:!1);return new de(e,this.txb)}},de=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(Ge.u128().parse(Uint8Array.from($e(this.inputs[e].Pure.bytes))))}decodeInputU64(e){return Number(Ge.u64().parse(Uint8Array.from($e(this.inputs[e].Pure.bytes))))}decodeInputU32(e){return Number(Ge.u32().parse(Uint8Array.from($e(this.inputs[e].Pure.bytes))))}decodeInputU8(e){return Number(Ge.u8().parse(Uint8Array.from($e(this.inputs[e].Pure.bytes))))}decodeInputAddress(e){return Ge.Address.parse(Uint8Array.from($e(this.inputs[e].Pure.bytes)))}decodeInputBool(e){return Ge.bool().parse(Uint8Array.from($e(this.inputs[e].Pure.bytes)))}shortTypeArg(e){return this.moveCall.MoveCall.typeArguments[e]}txArg(e){return this.moveCall.MoveCall.arguments[e]}};import{TurbosSdk as Af}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 Af(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:m,tickLower:b,tickUpper:S,deadline:I,txb:x}=this.data;return n.pool.addLiquidity({pool:o,slippage:m,address:i,amountA:s,amountB:c,tickLower:b,tickUpper:S,deadline:I,txb:x})}static fromData(t){return new a(t)}};import{TurbosSdk as Mf}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 Mf(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 Of}from"turbos-clmm-sdk";var ki=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Of(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,nft:s,collectAmountA:c,collectAmountB:m,deadline:b,txb:S}=this.data;return n.pool.collectFee({pool:o,address:i,collectAmountA:c,collectAmountB:m,nft:s,deadline:b,txb:S})}static fromData(t){return new a(t)}};import{TurbosSdk as Pf}from"turbos-clmm-sdk";var vi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Pf(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,nft:s,rewardAmounts:c,deadline:m,txb:b}=this.data;return n.pool.collectReward({pool:o,address:i,rewardAmounts:c,nft:s,deadline:m,txb:b})}static fromData(t){return new a(t)}};import{TurbosSdk as Rf}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 Rf(t.network.replace("sui:",""),t.suiClient),{fee:o,address:i,tickLower:s,tickUpper:c,sqrtPrice:m,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:m,slippage:b,coinTypeA:S,coinTypeB:I,deadline:k,txb:M})}static fromData(t){return new a(t)}};import{TurbosSdk as Bf}from"turbos-clmm-sdk";var Mi=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:m,nft:b,decreaseLiquidity:S,deadline:I,txb:x}=this.data;return n.pool.decreaseLiquidity({pool:o,slippage:m,address:i,amountA:s,amountB:c,nft:b,decreaseLiquidity:S,deadline:I,txb:x})}static fromData(t){return new a(t)}};import{TurbosSdk as Ef}from"turbos-clmm-sdk";var Oi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Ef(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:m,nft:b,decreaseLiquidity:S,deadline:I}=this.data,{txb:x,coinA:D,coinB:k}=await n.pool.decreaseLiquidityWithReturn({pool:o,slippage:m,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 Nf}from"turbos-clmm-sdk";var Pi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Nf(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:c,slippage:m,nft:b,deadline:S,txb:I}=this.data;return n.pool.increaseLiquidity({pool:o,slippage:m,address:i,amountA:s,amountB:c,nft:b,deadline:S,txb:I})}static fromData(t){return new a(t)}};import{Transaction as Wf}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as _f}from"@mysten/sui/utils";var Ri=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Wf;return n.moveCall({target:`${Gt.PackageId}::claim::claim`,typeArguments:[Gt.turbosCoinType],arguments:[n.object(Gt.Claim),n.object(_f)]}),n}static fromData(t){return new a(t)}};import{Transaction as Lf}from"@mysten/sui/transactions";var Bi=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Lf;return n.moveCall({target:`${Gt.PackageId}::claim::join`,typeArguments:[Gt.turbosCoinType],arguments:[n.object(Gt.Claim)]}),n}static fromData(t){return new a(t)}};import{Transaction as jf}from"@mysten/sui/transactions";import{TurbosSdk as Uf}from"turbos-clmm-sdk";var Ei=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Uf(t.network.replace("sui:",""),t.suiClient),o=new jf;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 qf}from"turbos-clmm-sdk";var Ni=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new qf(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 Ff}from"turbos-clmm-sdk";var Wi=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 Ff(t.network.replace("sui:",""),t.suiClient),{routes:o,coinTypeA:i,coinTypeB:s,address:c,amountA:m,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:m,amountB:b,amountSpecifiedIsInput:I,slippage:S,deadline:x,txb:D})}static fromData(t){return new a(t)}};import{TurbosSdk as Vf}from"turbos-clmm-sdk";import{Transaction as Vl}from"@mysten/sui/transactions";import{normalizeSuiObjectId as $l}from"@mysten/sui/utils";import{unstable_getObjectId as Kf}from"turbos-clmm-sdk";var Tn=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((m,b)=>Number(b.balance)-Number(m.balance)).some(m=>c>=n?!0:(c+=Number(m.balance),s.push(m),!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:`${Ht.PackageId}::custodian_v2::AccountCap`}});return t.data[0]?.data?Kf(t.data[0].data):void 0}createAccount(e){let[t]=e.moveCall({typeArguments:[],target:`${Ht.PackageId}::clob_v2::create_account`,arguments:[]});return t}zero(e,t){return t.moveCall({typeArguments:[e],target:"0x2::coin::zero",arguments:[]})}};var Gl=89,Hl=1e6,Xl=async a=>{let{token1:e,token2:t,poolId:n,amountIn:o,currentAddress:i,turbosSdk:s}=a,c=new Vl,m=new Tn(s),b=await m.getCoinsData(i,t,o),[S,I]=m.splitAndMergeCoin(b,o,c);if(!S)throw new Error(`Not enough balance: ${t}`);let x=await m.IsAccountCap(i),D=x?c.object(x):m.createAccount(c),[k,M,L]=c.moveCall({typeArguments:[e,t],target:`${Ht.PackageId}::clob_v2::swap_exact_quote_for_base`,arguments:[c.object(String(n)),c.pure.u64(Gl),D,c.pure.u64(o),c.object($l("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(Hl),c},zl=async a=>{let{token1:e,token2:t,poolId:n,amountIn:o,currentAddress:i,turbosSdk:s}=a,c=new Vl,m=new Tn(s),b=await m.getCoinsData(i,e,o),[S,I]=m.splitAndMergeCoin(b,o,c);if(!S)throw new Error(`Not enough balance: ${e}`);let x=await m.IsAccountCap(i),D=x?c.object(x):m.createAccount(c),k=m.zero(t,c),[M,L,U]=c.moveCall({typeArguments:[e,t],target:`${Ht.PackageId}::clob_v2::swap_exact_base_for_quote`,arguments:[c.object(String(n)),c.pure.u64(Gl),D,c.pure.u64(o),S,k,c.object($l("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(Hl),c};var _i=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Vf(t.network.replace("sui:",""),t.suiClient);return await zl({...this.data,turbosSdk:n,currentAddress:t.account.address})}static fromData(t){return new a(t)}};import{TurbosSdk as $f}from"turbos-clmm-sdk";var Li=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new $f(t.network.replace("sui:",""),t.suiClient);return await Xl({...this.data,turbosSdk:n,currentAddress:t.account.address})}static fromData(t){return new a(t)}};var ji=class{application="turbos";supportSDK="@mysten/sui";async deserialize(e){console.log(e,"input");let t=new Hf(e.network.replace("sui:","")),n=await t.contract.getConfig(),{transaction:o,account:i}=e,c=await new Ci(o,t,n).decode(i.address);return{txType:Gf.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=Ai.fromData(e.intentionData);break;case"AddLiquidity":i=xi.fromData(e.intentionData);break;case"IncreaseLiquidity":i=Pi.fromData(e.intentionData);break;case"DecreaseLiquidity":i=Mi.fromData(e.intentionData);break;case"DecreaseLiquidityWithReturn":i=Oi.fromData(e.intentionData);break;case"RemoveLiquidity":i=Ei.fromData(e.intentionData);break;case"removeLiquidityWithReturn":i=Ni.fromData(e.intentionData);break;case"CollectFee":i=ki.fromData(e.intentionData);break;case"CollectReward":i=vi.fromData(e.intentionData);break;case"Burn":i=Di.fromData(e.intentionData);break;case"Swap":i=Wi.fromData(e.intentionData);break;case"PrixJoin":i=Bi.fromData(e.intentionData);break;case"PrixClaim":i=Ri.fromData(e.intentionData);break;case"SwapExactBaseForQuote":i=_i.fromData(e.intentionData);break;case"SwapExactQuoteForBase":i=Li.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};import{TransactionType as eh}from"@msafe/sui3-utils";import{TransactionType as Ds}from"@msafe/sui3-utils";import{bcs as Ql}from"@mysten/sui.js/bcs";import{normalizeStructTag as Qf,normalizeSuiAddress as Sn}from"@mysten/sui.js/utils";var Xf={packageId:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",poolObjectId:"0x7fa2faa111b8c65bea48a23049bfd81ca8f971a262d981dcd9a17c3825cb5baf",metadataObjectId:"0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",systemStateObjectId:"0x0000000000000000000000000000000000000000000000000000000000000005",certType:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",gasBudget:5e7},At=Xf;var Ui=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:Ds.Other,type:"Stake",intentionData:{amount:e}}}decodeUnStake(){let t=this.transactions.find(n=>n.kind==="SplitCoins").amounts[0].value.toNumber();return{txType:Ds.Other,type:"UnStake",intentionData:{amount:t}}}decodeClaimTicket(){let e=this.helper.decodeOwnedObjectId(2);return console.log(e),{txType:Ds.Other,type:"ClaimTicket",intentionData:{ticketId:e}}}get helper(){let e=this.transactions.find(t=>t.kind==="MoveCall"&&t.target.startsWith(At.packageId));return new ks(e,this.txb)}},ks=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 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 Ql.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 Ql.de(t,new Uint8Array(n))}typeArg(e){return Qf(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};import{TransactionBlock as Yf}from"@mysten/sui.js/transactions";import Jf from"sort-keys-recursive";var fe=class{constructor(e){this.data=e}data;serialize(){return JSON.stringify(Jf(this.data))}};var qi=class a extends fe{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(t);let n=new Yf,{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 Zf}from"@mysten/sui.js/transactions";var Fi=class a extends fe{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(t);let n=new Zf,{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 th}from"@mysten/sui.js/transactions";var Ki=class a extends fe{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){console.log(t);let n=new th,{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]),m=n.object(s.coinObjectId);c.length&&n.mergeCoins(m,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 Vi=class{application="volo";supportSDK="@mysten/sui.js";async deserialize(e){let{transactionBlock:t}=e,o=new Ui(t).decode();return{txType:eh.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n}=e,o;switch(e.txSubType){case"Stake":o=Fi.fromData(e.intentionData);break;case"UnStake":o=Ki.fromData(e.intentionData);break;case"ClaimTicket":o=qi.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};import{TransactionType as gh}from"@msafe/sui3-utils";import{asIntN as Jl}from"@cetusprotocol/common-sdk";import{TransactionType as he}from"@msafe/sui3-utils";import{fromBase64 as wn}from"@mysten/bcs";import{bcs as In}from"@mysten/sui/bcs";var $i=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:he.Other,type:"OpenPosition",intentionData:{pool:this.getSharedObjectID(this.getInputIndex(e,1)),lowerTick:Number(Jl(BigInt(this.getU32(this.getInputIndex(e,2)))).toString()),upperTick:Number(Jl(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:he.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:he.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:he.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:he.Other,type:"CollectRewards",intentionData:{pool:e[0].pool,position:e[0].position,collectRewardTokens:e.map(t=>t.rewardCoinType)}}}decodeCollectFeeTx(){return{txType:he.Other,type:"CollectFee",intentionData:this.getFeeCallData()}}decodeCollectRewardsAndFeeTx(){let e=this.getFeeCallData();return{txType:he.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:he.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(In.u32().parse(Uint8Array.from(wn(this.inputs[e].Pure.bytes))))}getU64(e){return In.u64().parse(Uint8Array.from(wn(this.inputs[e].Pure.bytes)))}getU128(e){return In.u128().parse(Uint8Array.from(wn(this.inputs[e].Pure.bytes)))}getBoolean(e){return In.bool().parse(Uint8Array.from(wn(this.inputs[e].Pure.bytes)))}getAddress(e){return In.Address.parse(Uint8Array.from(wn(this.inputs[e].Pure.bytes)))}getTypeArguments(e){return e.MoveCall.typeArguments||[]}getInputIndex(e,t){return e.MoveCall.arguments[t].Input}};import{TransactionType as ch}from"@msafe/sui3-utils";import{buildTx as ah,getQuote as ih}from"@bluefin-exchange/bluefin7k-aggregator-sdk";import{BN as Ce,ClmmPoolUtil as rh}from"@firefly-exchange/library-sui";import{Decimal as sh}from"turbos-clmm-sdk";import{SuiClient as nh}from"@firefly-exchange/library-sui";import{OnChainCalls as oh}from"@firefly-exchange/library-sui/spot";var Yl={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 nh({url:Yl.rpc});return new oh(t,Yl.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 Ce(e.liquidity),tokenMaxA:new Ce(e.maxAmountTokenA),tokenMaxB:new Ce(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 ih({tokenIn:e.tokenIn.address,tokenOut:e.tokenOut.address,amountIn:new sh(e.amountIn).mul(10**e.tokenIn.decimals).toString()}),s=await ah({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{...rh.estLiquidityAndCoinAmountFromOneAmounts(t.lowerTick,t.upperTick,new Ce(t.tokenAmount),t.isTokenAFixed,!0,0,new Ce(e.current_sqrt_price)),tokenMaxA:new Ce(t.maxAmountTokenA),tokenMaxB:new Ce(t.maxAmountTokenB)}}};var Gi=class a extends w{constructor(t){super(t);this.data=t}data;txType=ch.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 lh}from"@msafe/sui3-utils";var Hi=class a extends w{constructor(t){super(t);this.data=t}data;txType=lh.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 uh}from"@msafe/sui3-utils";var Xi=class a extends w{constructor(t){super(t);this.data=t}data;txType=uh.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 ph}from"@msafe/sui3-utils";var zi=class a extends w{constructor(t){super(t);this.data=t}data;txType=ph.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 mh}from"@msafe/sui3-utils";var Qi=class a extends w{constructor(t){super(t);this.data=t}data;txType=mh.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 dh}from"@msafe/sui3-utils";var Ji=class a extends w{constructor(t){super(t);this.data=t}data;txType=dh.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 fh}from"@msafe/sui3-utils";var Yi=class a extends w{constructor(t){super(t);this.data=t}data;txType=fh.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 hh}from"@msafe/sui3-utils";var Zi=class a extends w{constructor(t){super(t);this.data=t}data;txType=hh.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 tr=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 $i(t,n).decode();return{txType:gh.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=Ji.fromData(e.intentionData);break;case"ProvideLiquidity":i=Yi.fromData(e.intentionData);break;case"RemoveLiquidity":i=Zi.fromData(e.intentionData);break;case"ClosePosition":i=Hi.fromData(e.intentionData);break;case"CollectFee":i=Xi.fromData(e.intentionData);break;case"CollectRewards":i=zi.fromData(e.intentionData);break;case"CollectRewardsAndFee":i=Qi.fromData(e.intentionData);break;case"Aggregator7KSwap":i=Gi.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};import{TransactionType as eg}from"@msafe/sui3-utils";import{MmtSDK as Dh}from"@mmt-finance/clmm-sdk";import{Transaction as kh}from"@mysten/sui/transactions";var R=Bu(tu());import{convertI32ToSigned as As,TickMath as ou}from"@mmt-finance/clmm-sdk/dist/utils/math/tickMath";import wh from"bignumber.js";var yh="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",Nt=a=>a!=="0x2::sui::SUI"?a:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",bh=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},Th=(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")},Sh=(a,e,t,n)=>{if(a===yh){let[o]=n.splitCoins(n.gas,[n.pure.u64(t)]);return o}else{let o=Th(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 eu(a,e,t,n,o){let i=await bh({suiClient:a.rpcClient,address:e,type:t});return Sh(Nt(t),i.map(c=>({balance:BigInt(c.balance),objectId:c.coinObjectId})),n,o)}var xe=(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 nu({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},m=n.rewarders.map(S=>S.coinType);m.length>0&&(console.log("claimRewardsAsTargetCoin input",{pool:c,positionId:t,rewarderCoinTypes:m,targetCoinType:i,slippage:s,toAddress:e}),await a.Pool.claimRewardsAs({txb:o,pool:c,positionId:t,rewarderCoinTypes:m,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 Ch(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 au=(a,e,t)=>{let n=As(t?a+a%(e??1):a-a%(e??1));return n>0?new R.default(Ih(n)):new R.default(Ch(n))};function iu(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=iu(t,n),c;return Number(t)?c=await eu(i,a,Nt(e),s,o):[c]=o.moveCall({target:"0x2::coin::zero",typeArguments:[e],arguments:[]}),c}function ru({mmt:a,tx:e,poolModel:t,selectedLowTick:n,selectedHighTick:o}){let i=au(As(n),t.tickSpacing),s=au(As(o),t.tickSpacing);return a.Position.openPosition(e,t,i.toString(),s.toString())}var xh=(a,e)=>{let n=1e4-Math.floor(e*100);return a*BigInt(n)/BigInt(1e4)};function er(a,e,t){let n=iu(a,e);return Number(a)===0?BigInt(0):xh(n,t)}async function De({poolId:a,currentSqrtPrice:e,tokenX:t,tokenY:n,slippagePercentage:o,isTokenX:i,suiClient:s}){let m=(await s.getObject({id:a,options:{showContent:!0}}))?.data?.content?.fields?.sqrt_price??e,b=ou.sqrtPriceX64ToPrice(new R.default(m?.toString()),t.decimals,n.decimals),S=i?(100-o)/100:(100+o)/100,I=ou.priceToSqrtPriceX64(b.mul(S),t.decimals,n.decimals);return BigInt(I.toString())}var su=async(a,e,t,n,o,i,s,c,m,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=ru({mmt:a,tx:e,poolModel:x,selectedLowTick:c,selectedHighTick:m}),k=er(n,i.tokenX.decimals,b),M=er(o,i.tokenY.decimals,b);a.Pool.addLiquidity(e,x,D,S,I,k,M,t),e.transferObjects([D],e.pure.address(t))},cu=async(a,e,t,n,o,i,s,c,m,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=ru({mmt:a,tx:e,poolModel:x,selectedLowTick:c,selectedHighTick:m}),k=await De({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)}},lu=async(a,e,t,n,o,i,s,c)=>{let m=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=er(n,i.tokenX.decimals,c),x=er(o,i.tokenY.decimals,c);a.Pool.addLiquidity(e,S,s,m,b,I,x,t)},uu=async(a,e,t,n,o,i,s,c,m)=>{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 De({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:m,transferToAddress:t})}catch(b){throw console.error(b),b}},pu=(a,e)=>BigInt(e===100?a:new wh(a).multipliedBy(e/100).toFixed(0)),mu=async(a,e,t,n,o,i)=>{let s=pu(t.liquidity,o),c=n.tokenX.coinType,m=n.tokenY.coinType,b={objectId:n?.poolId,tokenXType:c,tokenYType:m};a.Pool.removeLiquidity(i,b,t.objectId,s,BigInt(0),BigInt(0),e),xe(a,e,t,n,i),o===100&&a.Position.closePosition(i,t.objectId)},du=async({sdk:a,address:e,position:t,pool:n,withdrawPercentage:o,txb:i,targetCoinType:s,slippage:c})=>{let m=pu(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,m,BigInt(0),BigInt(0)),M=await De({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}),xe(a,e,t,n,i),o===100&&a.Position.closePosition(i,t.objectId)};var nr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=Dh.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amountA:i,amountB:s,pool:c,selectedLowTick:m,selectedHighTick:b,slippage:S}=n,I=new kh;return await su(t,I,o,i,s,c,c.poolId,m,b,S),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";var or=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,{address:o,amount:i,isTokenX:s,pool:c,selectedLowTick:m,selectedHighTick:b,swapSlippage:S,addLiquiditySlippage:I}=n,x=new Ah;return await cu(t,x,t.rpcClient,o,i,s,c,m,b,S,I),x}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 He="0x35169bc93e1fddfcf3a82a9eae726d349689ed59e4b065369af8789fe59f8608::mmt::MMT";var Cn=async a=>{let e=await a.getSyncEpochInfo();if(!e)throw new Error("Failed to sync epoch");return e},fu=async(a,e,t,n,o,i,s,c)=>{let m=Number(n);if(!n||Number.isNaN(m)||m<=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 Cn(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}`)},hu=async(a,e,t,n,o,i,s,c)=>{let m=await Cn(a);if(await a.syncOrAdvanceEpoch(c,m.currentEpoch,m.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)}},gu=async(a,e,t,n,o)=>{let i=await Cn(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())},yu=async(a,e,t,n)=>{let o=await Cn(a);await a.syncOrAdvanceEpoch(n,o.currentEpoch,o.syncedEpoch),await a.claimReward(n,t,e),await a.unbond(n,t,e)},bu=async(a,e,t,n)=>{if(t.length>0&&t.some(o=>o.userRewardAmount>0)){let o=await Cn(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())}},Tu=async(a,e,t,n,o,i,s,c,m)=>{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(He)){o.transferObjects(I,o.pure.address(t));return}let x=c?.[i]?.[He];if(!x||x.length===0)throw new Error(`No swap route found from ${He} 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:[He]}),U=Nt(He);for(let q=0;q<x.length;q++){let Mt=x[q],W=m.find(G=>G.poolId===Mt);if(!W)throw new Error(`Pool ${Mt} not found`);let Rt=Nt(W.tokenXType||W.tokenX?.coinType||"")===U,ve={objectId:W.poolId,tokenXType:W.tokenXType||W.tokenX?.coinType||"",tokenYType:W.tokenYType||W.tokenY?.coinType||""},xn=await De({suiClient:a.rpcClient,poolId:W.poolId,currentSqrtPrice:W.currentSqrtPrice,tokenX:W.tokenX,tokenY:W.tokenY,slippagePercentage:s,isTokenX:Rt}),{outputCoin:Dn,leftoverCoin:Xe}=a.Pool.swapV2({txb:o,pool:ve,amount:L,inputCoin:M,isXtoY:Rt,limitSqrtPrice:xn});if(o.transferObjects([Xe],o.pure.address(t)),M=Dn,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 ar=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,{address:s,positions:c,pools:m,veMMTs:b}=i,S=new Ph;for(let I of c){let x=m.find(D=>D.poolId===I.poolId);x&&xe(n,s,I,x,S)}return await bu(o,s,b,S),S}static fromData(t){return new a(t)}};import{MmtSDK as Rh}from"@mmt-finance/clmm-sdk";import{VeMMT as Bh}from"@mmt-finance/ve-sdk-v1";import{Transaction as Eh}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=Rh.NEW({network:"mainnet"}),o=new Bh(t.suiClient,"mainnet"),{params:i}=this.data,{claimVeMMTParams:s}=i,{address:c,veMMTs:m,targetCoinType:b,slippage:S,claimRoutes:I,pools:x}=s,D=new Eh;return await Promise.all(i.claimParams.map(k=>nu({...k,sdk:n,txb:D}))),await Tu(n,o,c,m,D,b,S,I,x),D}static fromData(t){return new a(t)}};import{MmtSDK as Nh}from"@mmt-finance/clmm-sdk";import{Transaction as Wh}from"@mysten/sui/transactions";var rr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=Nh.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,position:i,pool:s}=n,c=new Wh;return xe(t,o,i,s,c),c}static fromData(t){return new a(t)}};import{MmtSDK as _h}from"@mmt-finance/clmm-sdk";import{Transaction as Lh}from"@mysten/sui/transactions";var sr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=_h.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amountA:i,amountB:s,pool:c,positionObjectId:m,slippage:b}=n,S=new Lh;return await lu(t,S,o,i,s,c,m,b),S}static fromData(t){return new a(t)}};import{MmtSDK as jh}from"@mmt-finance/clmm-sdk";import{Transaction as Uh}from"@mysten/sui/transactions";var cr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=jh.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amount:i,isTokenX:s,pool:c,positionObjectId:m,swapSlippage:b,addLiquiditySlippage:S}=n,I=new Uh;return await uu(t,I,o,i,s,c,m,b,S),I}static fromData(t){return new a(t)}};import{MmtSDK as qh}from"@mmt-finance/clmm-sdk";import{Transaction as Fh}from"@mysten/sui/transactions";var lr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(){let t=qh.NEW({network:"mainnet"}),{params:n}=this.data,{pool:o,position:i,address:s,withdrawPercentage:c,zapOutOn:m,targetCoinType:b,slippage:S}=n,I=new Fh;return m?await du({sdk:t,address:s,position:i,pool:o,withdrawPercentage:c,txb:I,targetCoinType:b,slippage:S}):await mu(t,s,i,o,c,I),I}static fromData(t){return new a(t)}};import{Transaction as Su}from"@mysten/sui/transactions";import{LstClient as wu}from"@suilend/springsui-sdk";var Ms={id:"0x0431232199873db77a92aa645cd43521437e9cc5c6fff07fd03edb88afe0b25a",type:"0x2b6602099970374cf58a2a1b9d96f005fccceb81e92eb059873baf420eb6c717::x_sui::X_SUI",weightHookId:"0x9e35c13dbb0bc437e8ad5a95ec463622f58763e060552ae8d100db77f4904601"},Iu=async(a,e,t)=>{let n=await wu.initialize(a,Ms),o=new Su,[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 wu.initialize(a,Ms),o=await a.getCoins({owner:e,coinType:Ms.type,limit:1e3});if(o.data.length===0)throw new Error("No lst coins found");let i=new Su,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)]),m=n.redeem(i,c);return i.transferObjects([m],e),i};var ur=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 Iu(t.suiClient,o,i)}static fromData(t){return new a(t)}};import{MmtSDK as Vh}from"@mmt-finance/clmm-sdk";import{Transaction as $h}from"@mysten/sui/transactions";import{mappedMmtV3Pool as Kh}from"@mmt-finance/clmm-sdk/dist/utils/poolUtils";var xu=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}),m=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,ke=await De({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},m,c,q,void 0,ke,!1);i.transferObjects([c],i.pure.address(o)),c=Rt,b=q?W:Mt,m=i.moveCall({target:"0x2::coin::value",typeArguments:[b],arguments:[c]})}i.transferObjects([c],i.pure.address(o))};var pr=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:m}=n,b=new $h;return await xu(t,o,i,s,c,b,m),b}static fromData(t){return new a(t)}};var mr=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 Gh}from"@mmt-finance/clmm-sdk";import{VeMMT as Hh}from"@mmt-finance/ve-sdk-v1";import{Transaction as Xh}from"@mysten/sui/transactions";var dr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=Gh.NEW({network:"mainnet"}),o=new Hh(t.suiClient,"mainnet"),{params:i}=this.data,{token:s,amount:c,address:m,enableAutoMaxBond:b,unbondAt:S}=i,I=new Xh;return await fu(n,o,s,c,m,b,S,I),I}static fromData(t){return new a(t)}};import{VeMMT as zh}from"@mmt-finance/ve-sdk-v1";import{Transaction as Qh}from"@mysten/sui/transactions";var fr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new zh(t.suiClient,"mainnet"),{params:o}=this.data,{address:i,veId:s,currentUnbondAt:c,isCurrentlyMaxBond:m,enableAutoMaxBond:b,unbondAt:S}=o,I=new Qh;return await hu(n,i,s,c,m,b,S,I),I}static fromData(t){return new a(t)}};import{VeMMT as Jh}from"@mmt-finance/ve-sdk-v1";import{Transaction as Yh}from"@mysten/sui/transactions";var hr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Jh(t.suiClient,"mainnet"),{params:o}=this.data,{address:i,veId:s,selectedVeMMTIds:c}=o,m=new Yh;return await gu(n,i,s,c,m),m}static fromData(t){return new a(t)}};import{VeMMT as Zh}from"@mmt-finance/ve-sdk-v1";import{Transaction as tg}from"@mysten/sui/transactions";var gr=class a extends w{constructor(t){super(t);this.data=t}data;txType;txSubType;async build(t){let n=new Zh(t.suiClient,"mainnet"),{params:o}=this.data,{address:i,veId:s}=o,c=new tg;return await yu(n,i,s,c),c}static fromData(t){return new a(t)}};var yr=class{application="mmt-dex";supportSDK="@mysten/sui";async deserialize(e){let{appContext:t}=e;return{txType:eg.Other,txSubType:t.action,intentionData:t}}async build(e){let t;switch(e.txSubType){case"Swap":t=pr.fromData(e.intentionData);break;case"AddLiquidity":t=nr.fromData(e.intentionData);break;case"AddLiquiditySingleSide":t=or.fromData(e.intentionData);break;case"ClaimRewards":t=rr.fromData(e.intentionData);break;case"ClaimAllRewards":t=ar.fromData(e.intentionData);break;case"ClaimRewardsAs":t=ir.fromData(e.intentionData);break;case"RemoveLiquidity":t=lr.fromData(e.intentionData);break;case"StakeXSui":t=ur.fromData(e.intentionData);break;case"UnstakeXSui":t=mr.fromData(e.intentionData);break;case"ManageLiquidity":t=sr.fromData(e.intentionData);break;case"ManageLiquiditySingleSide":t=cr.fromData(e.intentionData);break;case"Bond":t=dr.fromData(e.intentionData);break;case"Extend":t=fr.fromData(e.intentionData);break;case"Merge":t=hr.fromData(e.intentionData);break;case"Unbond":t=gr.fromData(e.intentionData);break;default:throw new Error(`not implemented ${e.txSubType}`)}return t.build({suiClient:e.suiClient})}};var w3=wa.fromHelpers([new ia,new ya,new na,new ba,new vo,new ji,new yr,new ei,new Vi,new Zn,new pi,new bi,new En,new tr,new Ii]);export{w3 as appHelpers};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|