@msafe/sui3-sdk 0.0.49-pre-abf64fa.0 → 0.0.49-pre-5d12cd8.0

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.cjs CHANGED
@@ -1,8 +1,8 @@
1
- "use strict";var E_=Object.create;var bs=Object.defineProperty;var M_=Object.getOwnPropertyDescriptor;var j_=Object.getOwnPropertyNames;var B_=Object.getPrototypeOf,N_=Object.prototype.hasOwnProperty;var F_=(t,e)=>()=>(t&&(e=t(t=0)),e);var Ln=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),wd=(t,e)=>{for(var i in e)bs(t,i,{get:e[i],enumerable:!0})},vd=(t,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of j_(e))!N_.call(t,r)&&r!==i&&bs(t,r,{get:()=>e[r],enumerable:!(n=M_(e,r))||n.enumerable});return t};var we=(t,e,i)=>(i=t!=null?E_(B_(t)):{},vd(e||!t||!t.__esModule?bs(i,"default",{value:t,enumerable:!0}):i,t)),kd=t=>vd(bs({},"__esModule",{value:!0}),t);var Sd=Ln((IS,Td)=>{"use strict";Td.exports=t=>{if(Object.prototype.toString.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.prototype}});var Ad=Ln((OS,xd)=>{"use strict";var Bc=Sd();xd.exports=(t,e={})=>{if(!Bc(t)&&!Array.isArray(t))throw new TypeError("Expected a plain object or array");let{deep:i}=e,n=[],r=[],o=a=>{let l=n.indexOf(a);if(l!==-1)return r[l];let u=[];return n.push(a),r.push(u),u.push(...a.map(h=>Array.isArray(h)?o(h):Bc(h)?s(h):h)),u},s=a=>{let l=n.indexOf(a);if(l!==-1)return r[l];let u={},h=Object.keys(a).sort(e.compare);n.push(a),r.push(u);for(let y of h){let v=a[y],T;i&&Array.isArray(v)?T=o(v):T=i&&Bc(v)?s(v):v,Object.defineProperty(u,y,{...Object.getOwnPropertyDescriptor(a,y),value:T})}return u};return Array.isArray(t)?i?o(t):t.slice():s(t)}});var Pd=Ln((PS,Od)=>{"use strict";var R_=Object.prototype.toString;Od.exports=function(e){if(e===void 0)return"undefined";if(e===null)return"null";var i=typeof e;if(i==="boolean")return"boolean";if(i==="string")return"string";if(i==="number")return"number";if(i==="symbol")return"symbol";if(i==="function")return K_(e)?"generatorfunction":"function";if(q_(e))return"array";if(z_(e))return"buffer";if(W_(e))return"arguments";if($_(e))return"date";if(L_(e))return"error";if(U_(e))return"regexp";switch(Id(e)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(V_(e))return"generator";switch(i=R_.call(e),i){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return i.slice(8,-1).toLowerCase().replace(/\s/g,"")};function Id(t){return typeof t.constructor=="function"?t.constructor.name:null}function q_(t){return Array.isArray?Array.isArray(t):t instanceof Array}function L_(t){return t instanceof Error||typeof t.message=="string"&&t.constructor&&typeof t.constructor.stackTraceLimit=="number"}function $_(t){return t instanceof Date?!0:typeof t.toDateString=="function"&&typeof t.getDate=="function"&&typeof t.setDate=="function"}function U_(t){return t instanceof RegExp?!0:typeof t.flags=="string"&&typeof t.ignoreCase=="boolean"&&typeof t.multiline=="boolean"&&typeof t.global=="boolean"}function K_(t,e){return Id(t)==="GeneratorFunction"}function V_(t){return typeof t.throw=="function"&&typeof t.return=="function"&&typeof t.next=="function"}function W_(t){try{if(typeof t.length=="number"&&typeof t.callee=="function")return!0}catch(e){if(e.message.indexOf("callee")!==-1)return!0}return!1}function z_(t){return t.constructor&&typeof t.constructor.isBuffer=="function"?t.constructor.isBuffer(t):!1}});var ws=Ln((DS,jd)=>{"use strict";var G_=Ad(),Nc=Pd(),Dd=(t,e)=>!e||Nc(e)!=="array"?!1:e.indexOf(t)>-1,H_=(t,e)=>G_(t,{compare:e}),Ed=(t,e)=>{let i=e&&e.compareFunction;return t.slice().sort(i)};function Md(t,e){let i=e&&e.compareFunction,n=H_(t,i);return Object.keys(t).forEach(function(r){let o=n[r],s=Nc(o);if(s==="object"){(!e||!Dd(r,e.ignoreObjectAtKeys))&&(n[r]=Md(o,e));return}s==="array"&&(!e||!Dd(r,e.ignoreArrayAtKeys))&&(n[r]=Ed(o,e))}),n}var oo=(t,e)=>{let i=Nc(t);return oo[i]?oo[i](t,e):t};oo.array=Ed;oo.object=Md;jd.exports=oo});var Se=Ln((Bd,Fc)=>{"use strict";(function(t,e){"use strict";function i(S,c){if(!S)throw new Error(c||"Assertion failed")}function n(S,c){S.super_=c;var d=function(){};d.prototype=c.prototype,S.prototype=new d,S.prototype.constructor=S}function r(S,c,d){if(r.isBN(S))return S;this.negative=0,this.words=null,this.length=0,this.red=null,S!==null&&((c==="le"||c==="be")&&(d=c,c=10),this._init(S||0,c||10,d||"be"))}typeof t=="object"?t.exports=r:e.BN=r,r.BN=r,r.wordSize=26;var o;try{typeof window<"u"&&typeof window.Buffer<"u"?o=window.Buffer:o=require("buffer").Buffer}catch{}r.isBN=function(c){return c instanceof r?!0:c!==null&&typeof c=="object"&&c.constructor.wordSize===r.wordSize&&Array.isArray(c.words)},r.max=function(c,d){return c.cmp(d)>0?c:d},r.min=function(c,d){return c.cmp(d)<0?c:d},r.prototype._init=function(c,d,f){if(typeof c=="number")return this._initNumber(c,d,f);if(typeof c=="object")return this._initArray(c,d,f);d==="hex"&&(d=16),i(d===(d|0)&&d>=2&&d<=36),c=c.toString().replace(/\s+/g,"");var b=0;c[0]==="-"&&(b++,this.negative=1),b<c.length&&(d===16?this._parseHex(c,b,f):(this._parseBase(c,d,b),f==="le"&&this._initArray(this.toArray(),d,f)))},r.prototype._initNumber=function(c,d,f){c<0&&(this.negative=1,c=-c),c<67108864?(this.words=[c&67108863],this.length=1):c<4503599627370496?(this.words=[c&67108863,c/67108864&67108863],this.length=2):(i(c<9007199254740992),this.words=[c&67108863,c/67108864&67108863,1],this.length=3),f==="le"&&this._initArray(this.toArray(),d,f)},r.prototype._initArray=function(c,d,f){if(i(typeof c.length=="number"),c.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(c.length/3),this.words=new Array(this.length);for(var b=0;b<this.length;b++)this.words[b]=0;var p,g,w=0;if(f==="be")for(b=c.length-1,p=0;b>=0;b-=3)g=c[b]|c[b-1]<<8|c[b-2]<<16,this.words[p]|=g<<w&67108863,this.words[p+1]=g>>>26-w&67108863,w+=24,w>=26&&(w-=26,p++);else if(f==="le")for(b=0,p=0;b<c.length;b+=3)g=c[b]|c[b+1]<<8|c[b+2]<<16,this.words[p]|=g<<w&67108863,this.words[p+1]=g>>>26-w&67108863,w+=24,w>=26&&(w-=26,p++);return this._strip()};function s(S,c){var d=S.charCodeAt(c);if(d>=48&&d<=57)return d-48;if(d>=65&&d<=70)return d-55;if(d>=97&&d<=102)return d-87;i(!1,"Invalid character in "+S)}function a(S,c,d){var f=s(S,d);return d-1>=c&&(f|=s(S,d-1)<<4),f}r.prototype._parseHex=function(c,d,f){this.length=Math.ceil((c.length-d)/6),this.words=new Array(this.length);for(var b=0;b<this.length;b++)this.words[b]=0;var p=0,g=0,w;if(f==="be")for(b=c.length-1;b>=d;b-=2)w=a(c,d,b)<<p,this.words[g]|=w&67108863,p>=18?(p-=18,g+=1,this.words[g]|=w>>>26):p+=8;else{var _=c.length-d;for(b=_%2===0?d+1:d;b<c.length;b+=2)w=a(c,d,b)<<p,this.words[g]|=w&67108863,p>=18?(p-=18,g+=1,this.words[g]|=w>>>26):p+=8}this._strip()};function l(S,c,d,f){for(var b=0,p=0,g=Math.min(S.length,d),w=c;w<g;w++){var _=S.charCodeAt(w)-48;b*=f,_>=49?p=_-49+10:_>=17?p=_-17+10:p=_,i(_>=0&&p<f,"Invalid character"),b+=p}return b}r.prototype._parseBase=function(c,d,f){this.words=[0],this.length=1;for(var b=0,p=1;p<=67108863;p*=d)b++;b--,p=p/d|0;for(var g=c.length-f,w=g%b,_=Math.min(g,g-w)+f,m=0,C=f;C<_;C+=b)m=l(c,C,C+b,d),this.imuln(p),this.words[0]+m<67108864?this.words[0]+=m:this._iaddn(m);if(w!==0){var N=1;for(m=l(c,C,c.length,d),C=0;C<w;C++)N*=d;this.imuln(N),this.words[0]+m<67108864?this.words[0]+=m:this._iaddn(m)}this._strip()},r.prototype.copy=function(c){c.words=new Array(this.length);for(var d=0;d<this.length;d++)c.words[d]=this.words[d];c.length=this.length,c.negative=this.negative,c.red=this.red};function u(S,c){S.words=c.words,S.length=c.length,S.negative=c.negative,S.red=c.red}if(r.prototype._move=function(c){u(c,this)},r.prototype.clone=function(){var c=new r(null);return this.copy(c),c},r.prototype._expand=function(c){for(;this.length<c;)this.words[this.length++]=0;return this},r.prototype._strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},r.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{r.prototype[Symbol.for("nodejs.util.inspect.custom")]=h}catch{r.prototype.inspect=h}else r.prototype.inspect=h;function h(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var y=["","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"],v=[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],T=[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];r.prototype.toString=function(c,d){c=c||10,d=d|0||1;var f;if(c===16||c==="hex"){f="";for(var b=0,p=0,g=0;g<this.length;g++){var w=this.words[g],_=((w<<b|p)&16777215).toString(16);p=w>>>24-b&16777215,b+=2,b>=26&&(b-=26,g--),p!==0||g!==this.length-1?f=y[6-_.length]+_+f:f=_+f}for(p!==0&&(f=p.toString(16)+f);f.length%d!==0;)f="0"+f;return this.negative!==0&&(f="-"+f),f}if(c===(c|0)&&c>=2&&c<=36){var m=v[c],C=T[c];f="";var N=this.clone();for(N.negative=0;!N.isZero();){var R=N.modrn(C).toString(c);N=N.idivn(C),N.isZero()?f=R+f:f=y[m-R.length]+R+f}for(this.isZero()&&(f="0"+f);f.length%d!==0;)f="0"+f;return this.negative!==0&&(f="-"+f),f}i(!1,"Base should be between 2 and 36")},r.prototype.toNumber=function(){var c=this.words[0];return this.length===2?c+=this.words[1]*67108864:this.length===3&&this.words[2]===1?c+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-c:c},r.prototype.toJSON=function(){return this.toString(16,2)},o&&(r.prototype.toBuffer=function(c,d){return this.toArrayLike(o,c,d)}),r.prototype.toArray=function(c,d){return this.toArrayLike(Array,c,d)};var O=function(c,d){return c.allocUnsafe?c.allocUnsafe(d):new c(d)};r.prototype.toArrayLike=function(c,d,f){this._strip();var b=this.byteLength(),p=f||Math.max(1,b);i(b<=p,"byte array longer than desired length"),i(p>0,"Requested array length <= 0");var g=O(c,p),w=d==="le"?"LE":"BE";return this["_toArrayLike"+w](g,b),g},r.prototype._toArrayLikeLE=function(c,d){for(var f=0,b=0,p=0,g=0;p<this.length;p++){var w=this.words[p]<<g|b;c[f++]=w&255,f<c.length&&(c[f++]=w>>8&255),f<c.length&&(c[f++]=w>>16&255),g===6?(f<c.length&&(c[f++]=w>>24&255),b=0,g=0):(b=w>>>24,g+=2)}if(f<c.length)for(c[f++]=b;f<c.length;)c[f++]=0},r.prototype._toArrayLikeBE=function(c,d){for(var f=c.length-1,b=0,p=0,g=0;p<this.length;p++){var w=this.words[p]<<g|b;c[f--]=w&255,f>=0&&(c[f--]=w>>8&255),f>=0&&(c[f--]=w>>16&255),g===6?(f>=0&&(c[f--]=w>>24&255),b=0,g=0):(b=w>>>24,g+=2)}if(f>=0)for(c[f--]=b;f>=0;)c[f--]=0},Math.clz32?r.prototype._countBits=function(c){return 32-Math.clz32(c)}:r.prototype._countBits=function(c){var d=c,f=0;return d>=4096&&(f+=13,d>>>=13),d>=64&&(f+=7,d>>>=7),d>=8&&(f+=4,d>>>=4),d>=2&&(f+=2,d>>>=2),f+d},r.prototype._zeroBits=function(c){if(c===0)return 26;var d=c,f=0;return d&8191||(f+=13,d>>>=13),d&127||(f+=7,d>>>=7),d&15||(f+=4,d>>>=4),d&3||(f+=2,d>>>=2),d&1||f++,f},r.prototype.bitLength=function(){var c=this.words[this.length-1],d=this._countBits(c);return(this.length-1)*26+d};function P(S){for(var c=new Array(S.bitLength()),d=0;d<c.length;d++){var f=d/26|0,b=d%26;c[d]=S.words[f]>>>b&1}return c}r.prototype.zeroBits=function(){if(this.isZero())return 0;for(var c=0,d=0;d<this.length;d++){var f=this._zeroBits(this.words[d]);if(c+=f,f!==26)break}return c},r.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},r.prototype.toTwos=function(c){return this.negative!==0?this.abs().inotn(c).iaddn(1):this.clone()},r.prototype.fromTwos=function(c){return this.testn(c-1)?this.notn(c).iaddn(1).ineg():this.clone()},r.prototype.isNeg=function(){return this.negative!==0},r.prototype.neg=function(){return this.clone().ineg()},r.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},r.prototype.iuor=function(c){for(;this.length<c.length;)this.words[this.length++]=0;for(var d=0;d<c.length;d++)this.words[d]=this.words[d]|c.words[d];return this._strip()},r.prototype.ior=function(c){return i((this.negative|c.negative)===0),this.iuor(c)},r.prototype.or=function(c){return this.length>c.length?this.clone().ior(c):c.clone().ior(this)},r.prototype.uor=function(c){return this.length>c.length?this.clone().iuor(c):c.clone().iuor(this)},r.prototype.iuand=function(c){var d;this.length>c.length?d=c:d=this;for(var f=0;f<d.length;f++)this.words[f]=this.words[f]&c.words[f];return this.length=d.length,this._strip()},r.prototype.iand=function(c){return i((this.negative|c.negative)===0),this.iuand(c)},r.prototype.and=function(c){return this.length>c.length?this.clone().iand(c):c.clone().iand(this)},r.prototype.uand=function(c){return this.length>c.length?this.clone().iuand(c):c.clone().iuand(this)},r.prototype.iuxor=function(c){var d,f;this.length>c.length?(d=this,f=c):(d=c,f=this);for(var b=0;b<f.length;b++)this.words[b]=d.words[b]^f.words[b];if(this!==d)for(;b<d.length;b++)this.words[b]=d.words[b];return this.length=d.length,this._strip()},r.prototype.ixor=function(c){return i((this.negative|c.negative)===0),this.iuxor(c)},r.prototype.xor=function(c){return this.length>c.length?this.clone().ixor(c):c.clone().ixor(this)},r.prototype.uxor=function(c){return this.length>c.length?this.clone().iuxor(c):c.clone().iuxor(this)},r.prototype.inotn=function(c){i(typeof c=="number"&&c>=0);var d=Math.ceil(c/26)|0,f=c%26;this._expand(d),f>0&&d--;for(var b=0;b<d;b++)this.words[b]=~this.words[b]&67108863;return f>0&&(this.words[b]=~this.words[b]&67108863>>26-f),this._strip()},r.prototype.notn=function(c){return this.clone().inotn(c)},r.prototype.setn=function(c,d){i(typeof c=="number"&&c>=0);var f=c/26|0,b=c%26;return this._expand(f+1),d?this.words[f]=this.words[f]|1<<b:this.words[f]=this.words[f]&~(1<<b),this._strip()},r.prototype.iadd=function(c){var d;if(this.negative!==0&&c.negative===0)return this.negative=0,d=this.isub(c),this.negative^=1,this._normSign();if(this.negative===0&&c.negative!==0)return c.negative=0,d=this.isub(c),c.negative=1,d._normSign();var f,b;this.length>c.length?(f=this,b=c):(f=c,b=this);for(var p=0,g=0;g<b.length;g++)d=(f.words[g]|0)+(b.words[g]|0)+p,this.words[g]=d&67108863,p=d>>>26;for(;p!==0&&g<f.length;g++)d=(f.words[g]|0)+p,this.words[g]=d&67108863,p=d>>>26;if(this.length=f.length,p!==0)this.words[this.length]=p,this.length++;else if(f!==this)for(;g<f.length;g++)this.words[g]=f.words[g];return this},r.prototype.add=function(c){var d;return c.negative!==0&&this.negative===0?(c.negative=0,d=this.sub(c),c.negative^=1,d):c.negative===0&&this.negative!==0?(this.negative=0,d=c.sub(this),this.negative=1,d):this.length>c.length?this.clone().iadd(c):c.clone().iadd(this)},r.prototype.isub=function(c){if(c.negative!==0){c.negative=0;var d=this.iadd(c);return c.negative=1,d._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(c),this.negative=1,this._normSign();var f=this.cmp(c);if(f===0)return this.negative=0,this.length=1,this.words[0]=0,this;var b,p;f>0?(b=this,p=c):(b=c,p=this);for(var g=0,w=0;w<p.length;w++)d=(b.words[w]|0)-(p.words[w]|0)+g,g=d>>26,this.words[w]=d&67108863;for(;g!==0&&w<b.length;w++)d=(b.words[w]|0)+g,g=d>>26,this.words[w]=d&67108863;if(g===0&&w<b.length&&b!==this)for(;w<b.length;w++)this.words[w]=b.words[w];return this.length=Math.max(this.length,w),b!==this&&(this.negative=1),this._strip()},r.prototype.sub=function(c){return this.clone().isub(c)};function j(S,c,d){d.negative=c.negative^S.negative;var f=S.length+c.length|0;d.length=f,f=f-1|0;var b=S.words[0]|0,p=c.words[0]|0,g=b*p,w=g&67108863,_=g/67108864|0;d.words[0]=w;for(var m=1;m<f;m++){for(var C=_>>>26,N=_&67108863,R=Math.min(m,c.length-1),$=Math.max(0,m-S.length+1);$<=R;$++){var L=m-$|0;b=S.words[L]|0,p=c.words[$]|0,g=b*p+N,C+=g/67108864|0,N=g&67108863}d.words[m]=N|0,_=C|0}return _!==0?d.words[m]=_|0:d.length--,d._strip()}var B=function(c,d,f){var b=c.words,p=d.words,g=f.words,w=0,_,m,C,N=b[0]|0,R=N&8191,$=N>>>13,L=b[1]|0,H=L&8191,ee=L>>>13,ge=b[2]|0,ne=ge&8191,me=ge>>>13,xe=b[3]|0,_e=xe&8191,he=xe>>>13,fr=b[4]|0,qe=fr&8191,Le=fr>>>13,_s=b[5]|0,Ze=_s&8191,Xe=_s>>>13,sd=b[6]|0,Je=sd&8191,Ye=sd>>>13,ad=b[7]|0,Qe=ad&8191,et=ad>>>13,cd=b[8]|0,tt=cd&8191,it=cd>>>13,ld=b[9]|0,nt=ld&8191,rt=ld>>>13,ud=p[0]|0,ot=ud&8191,st=ud>>>13,dd=p[1]|0,at=dd&8191,ct=dd>>>13,fd=p[2]|0,lt=fd&8191,ut=fd>>>13,hd=p[3]|0,dt=hd&8191,ft=hd>>>13,pd=p[4]|0,ht=pd&8191,pt=pd>>>13,md=p[5]|0,mt=md&8191,gt=md>>>13,gd=p[6]|0,_t=gd&8191,bt=gd>>>13,_d=p[7]|0,yt=_d&8191,wt=_d>>>13,bd=p[8]|0,vt=bd&8191,kt=bd>>>13,yd=p[9]|0,Ct=yd&8191,Tt=yd>>>13;f.negative=c.negative^d.negative,f.length=19,_=Math.imul(R,ot),m=Math.imul(R,st),m=m+Math.imul($,ot)|0,C=Math.imul($,st);var gc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(gc>>>26)|0,gc&=67108863,_=Math.imul(H,ot),m=Math.imul(H,st),m=m+Math.imul(ee,ot)|0,C=Math.imul(ee,st),_=_+Math.imul(R,at)|0,m=m+Math.imul(R,ct)|0,m=m+Math.imul($,at)|0,C=C+Math.imul($,ct)|0;var _c=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(_c>>>26)|0,_c&=67108863,_=Math.imul(ne,ot),m=Math.imul(ne,st),m=m+Math.imul(me,ot)|0,C=Math.imul(me,st),_=_+Math.imul(H,at)|0,m=m+Math.imul(H,ct)|0,m=m+Math.imul(ee,at)|0,C=C+Math.imul(ee,ct)|0,_=_+Math.imul(R,lt)|0,m=m+Math.imul(R,ut)|0,m=m+Math.imul($,lt)|0,C=C+Math.imul($,ut)|0;var bc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(bc>>>26)|0,bc&=67108863,_=Math.imul(_e,ot),m=Math.imul(_e,st),m=m+Math.imul(he,ot)|0,C=Math.imul(he,st),_=_+Math.imul(ne,at)|0,m=m+Math.imul(ne,ct)|0,m=m+Math.imul(me,at)|0,C=C+Math.imul(me,ct)|0,_=_+Math.imul(H,lt)|0,m=m+Math.imul(H,ut)|0,m=m+Math.imul(ee,lt)|0,C=C+Math.imul(ee,ut)|0,_=_+Math.imul(R,dt)|0,m=m+Math.imul(R,ft)|0,m=m+Math.imul($,dt)|0,C=C+Math.imul($,ft)|0;var yc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(yc>>>26)|0,yc&=67108863,_=Math.imul(qe,ot),m=Math.imul(qe,st),m=m+Math.imul(Le,ot)|0,C=Math.imul(Le,st),_=_+Math.imul(_e,at)|0,m=m+Math.imul(_e,ct)|0,m=m+Math.imul(he,at)|0,C=C+Math.imul(he,ct)|0,_=_+Math.imul(ne,lt)|0,m=m+Math.imul(ne,ut)|0,m=m+Math.imul(me,lt)|0,C=C+Math.imul(me,ut)|0,_=_+Math.imul(H,dt)|0,m=m+Math.imul(H,ft)|0,m=m+Math.imul(ee,dt)|0,C=C+Math.imul(ee,ft)|0,_=_+Math.imul(R,ht)|0,m=m+Math.imul(R,pt)|0,m=m+Math.imul($,ht)|0,C=C+Math.imul($,pt)|0;var wc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(wc>>>26)|0,wc&=67108863,_=Math.imul(Ze,ot),m=Math.imul(Ze,st),m=m+Math.imul(Xe,ot)|0,C=Math.imul(Xe,st),_=_+Math.imul(qe,at)|0,m=m+Math.imul(qe,ct)|0,m=m+Math.imul(Le,at)|0,C=C+Math.imul(Le,ct)|0,_=_+Math.imul(_e,lt)|0,m=m+Math.imul(_e,ut)|0,m=m+Math.imul(he,lt)|0,C=C+Math.imul(he,ut)|0,_=_+Math.imul(ne,dt)|0,m=m+Math.imul(ne,ft)|0,m=m+Math.imul(me,dt)|0,C=C+Math.imul(me,ft)|0,_=_+Math.imul(H,ht)|0,m=m+Math.imul(H,pt)|0,m=m+Math.imul(ee,ht)|0,C=C+Math.imul(ee,pt)|0,_=_+Math.imul(R,mt)|0,m=m+Math.imul(R,gt)|0,m=m+Math.imul($,mt)|0,C=C+Math.imul($,gt)|0;var vc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(vc>>>26)|0,vc&=67108863,_=Math.imul(Je,ot),m=Math.imul(Je,st),m=m+Math.imul(Ye,ot)|0,C=Math.imul(Ye,st),_=_+Math.imul(Ze,at)|0,m=m+Math.imul(Ze,ct)|0,m=m+Math.imul(Xe,at)|0,C=C+Math.imul(Xe,ct)|0,_=_+Math.imul(qe,lt)|0,m=m+Math.imul(qe,ut)|0,m=m+Math.imul(Le,lt)|0,C=C+Math.imul(Le,ut)|0,_=_+Math.imul(_e,dt)|0,m=m+Math.imul(_e,ft)|0,m=m+Math.imul(he,dt)|0,C=C+Math.imul(he,ft)|0,_=_+Math.imul(ne,ht)|0,m=m+Math.imul(ne,pt)|0,m=m+Math.imul(me,ht)|0,C=C+Math.imul(me,pt)|0,_=_+Math.imul(H,mt)|0,m=m+Math.imul(H,gt)|0,m=m+Math.imul(ee,mt)|0,C=C+Math.imul(ee,gt)|0,_=_+Math.imul(R,_t)|0,m=m+Math.imul(R,bt)|0,m=m+Math.imul($,_t)|0,C=C+Math.imul($,bt)|0;var kc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(kc>>>26)|0,kc&=67108863,_=Math.imul(Qe,ot),m=Math.imul(Qe,st),m=m+Math.imul(et,ot)|0,C=Math.imul(et,st),_=_+Math.imul(Je,at)|0,m=m+Math.imul(Je,ct)|0,m=m+Math.imul(Ye,at)|0,C=C+Math.imul(Ye,ct)|0,_=_+Math.imul(Ze,lt)|0,m=m+Math.imul(Ze,ut)|0,m=m+Math.imul(Xe,lt)|0,C=C+Math.imul(Xe,ut)|0,_=_+Math.imul(qe,dt)|0,m=m+Math.imul(qe,ft)|0,m=m+Math.imul(Le,dt)|0,C=C+Math.imul(Le,ft)|0,_=_+Math.imul(_e,ht)|0,m=m+Math.imul(_e,pt)|0,m=m+Math.imul(he,ht)|0,C=C+Math.imul(he,pt)|0,_=_+Math.imul(ne,mt)|0,m=m+Math.imul(ne,gt)|0,m=m+Math.imul(me,mt)|0,C=C+Math.imul(me,gt)|0,_=_+Math.imul(H,_t)|0,m=m+Math.imul(H,bt)|0,m=m+Math.imul(ee,_t)|0,C=C+Math.imul(ee,bt)|0,_=_+Math.imul(R,yt)|0,m=m+Math.imul(R,wt)|0,m=m+Math.imul($,yt)|0,C=C+Math.imul($,wt)|0;var Cc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Cc>>>26)|0,Cc&=67108863,_=Math.imul(tt,ot),m=Math.imul(tt,st),m=m+Math.imul(it,ot)|0,C=Math.imul(it,st),_=_+Math.imul(Qe,at)|0,m=m+Math.imul(Qe,ct)|0,m=m+Math.imul(et,at)|0,C=C+Math.imul(et,ct)|0,_=_+Math.imul(Je,lt)|0,m=m+Math.imul(Je,ut)|0,m=m+Math.imul(Ye,lt)|0,C=C+Math.imul(Ye,ut)|0,_=_+Math.imul(Ze,dt)|0,m=m+Math.imul(Ze,ft)|0,m=m+Math.imul(Xe,dt)|0,C=C+Math.imul(Xe,ft)|0,_=_+Math.imul(qe,ht)|0,m=m+Math.imul(qe,pt)|0,m=m+Math.imul(Le,ht)|0,C=C+Math.imul(Le,pt)|0,_=_+Math.imul(_e,mt)|0,m=m+Math.imul(_e,gt)|0,m=m+Math.imul(he,mt)|0,C=C+Math.imul(he,gt)|0,_=_+Math.imul(ne,_t)|0,m=m+Math.imul(ne,bt)|0,m=m+Math.imul(me,_t)|0,C=C+Math.imul(me,bt)|0,_=_+Math.imul(H,yt)|0,m=m+Math.imul(H,wt)|0,m=m+Math.imul(ee,yt)|0,C=C+Math.imul(ee,wt)|0,_=_+Math.imul(R,vt)|0,m=m+Math.imul(R,kt)|0,m=m+Math.imul($,vt)|0,C=C+Math.imul($,kt)|0;var Tc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Tc>>>26)|0,Tc&=67108863,_=Math.imul(nt,ot),m=Math.imul(nt,st),m=m+Math.imul(rt,ot)|0,C=Math.imul(rt,st),_=_+Math.imul(tt,at)|0,m=m+Math.imul(tt,ct)|0,m=m+Math.imul(it,at)|0,C=C+Math.imul(it,ct)|0,_=_+Math.imul(Qe,lt)|0,m=m+Math.imul(Qe,ut)|0,m=m+Math.imul(et,lt)|0,C=C+Math.imul(et,ut)|0,_=_+Math.imul(Je,dt)|0,m=m+Math.imul(Je,ft)|0,m=m+Math.imul(Ye,dt)|0,C=C+Math.imul(Ye,ft)|0,_=_+Math.imul(Ze,ht)|0,m=m+Math.imul(Ze,pt)|0,m=m+Math.imul(Xe,ht)|0,C=C+Math.imul(Xe,pt)|0,_=_+Math.imul(qe,mt)|0,m=m+Math.imul(qe,gt)|0,m=m+Math.imul(Le,mt)|0,C=C+Math.imul(Le,gt)|0,_=_+Math.imul(_e,_t)|0,m=m+Math.imul(_e,bt)|0,m=m+Math.imul(he,_t)|0,C=C+Math.imul(he,bt)|0,_=_+Math.imul(ne,yt)|0,m=m+Math.imul(ne,wt)|0,m=m+Math.imul(me,yt)|0,C=C+Math.imul(me,wt)|0,_=_+Math.imul(H,vt)|0,m=m+Math.imul(H,kt)|0,m=m+Math.imul(ee,vt)|0,C=C+Math.imul(ee,kt)|0,_=_+Math.imul(R,Ct)|0,m=m+Math.imul(R,Tt)|0,m=m+Math.imul($,Ct)|0,C=C+Math.imul($,Tt)|0;var Sc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Sc>>>26)|0,Sc&=67108863,_=Math.imul(nt,at),m=Math.imul(nt,ct),m=m+Math.imul(rt,at)|0,C=Math.imul(rt,ct),_=_+Math.imul(tt,lt)|0,m=m+Math.imul(tt,ut)|0,m=m+Math.imul(it,lt)|0,C=C+Math.imul(it,ut)|0,_=_+Math.imul(Qe,dt)|0,m=m+Math.imul(Qe,ft)|0,m=m+Math.imul(et,dt)|0,C=C+Math.imul(et,ft)|0,_=_+Math.imul(Je,ht)|0,m=m+Math.imul(Je,pt)|0,m=m+Math.imul(Ye,ht)|0,C=C+Math.imul(Ye,pt)|0,_=_+Math.imul(Ze,mt)|0,m=m+Math.imul(Ze,gt)|0,m=m+Math.imul(Xe,mt)|0,C=C+Math.imul(Xe,gt)|0,_=_+Math.imul(qe,_t)|0,m=m+Math.imul(qe,bt)|0,m=m+Math.imul(Le,_t)|0,C=C+Math.imul(Le,bt)|0,_=_+Math.imul(_e,yt)|0,m=m+Math.imul(_e,wt)|0,m=m+Math.imul(he,yt)|0,C=C+Math.imul(he,wt)|0,_=_+Math.imul(ne,vt)|0,m=m+Math.imul(ne,kt)|0,m=m+Math.imul(me,vt)|0,C=C+Math.imul(me,kt)|0,_=_+Math.imul(H,Ct)|0,m=m+Math.imul(H,Tt)|0,m=m+Math.imul(ee,Ct)|0,C=C+Math.imul(ee,Tt)|0;var xc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(xc>>>26)|0,xc&=67108863,_=Math.imul(nt,lt),m=Math.imul(nt,ut),m=m+Math.imul(rt,lt)|0,C=Math.imul(rt,ut),_=_+Math.imul(tt,dt)|0,m=m+Math.imul(tt,ft)|0,m=m+Math.imul(it,dt)|0,C=C+Math.imul(it,ft)|0,_=_+Math.imul(Qe,ht)|0,m=m+Math.imul(Qe,pt)|0,m=m+Math.imul(et,ht)|0,C=C+Math.imul(et,pt)|0,_=_+Math.imul(Je,mt)|0,m=m+Math.imul(Je,gt)|0,m=m+Math.imul(Ye,mt)|0,C=C+Math.imul(Ye,gt)|0,_=_+Math.imul(Ze,_t)|0,m=m+Math.imul(Ze,bt)|0,m=m+Math.imul(Xe,_t)|0,C=C+Math.imul(Xe,bt)|0,_=_+Math.imul(qe,yt)|0,m=m+Math.imul(qe,wt)|0,m=m+Math.imul(Le,yt)|0,C=C+Math.imul(Le,wt)|0,_=_+Math.imul(_e,vt)|0,m=m+Math.imul(_e,kt)|0,m=m+Math.imul(he,vt)|0,C=C+Math.imul(he,kt)|0,_=_+Math.imul(ne,Ct)|0,m=m+Math.imul(ne,Tt)|0,m=m+Math.imul(me,Ct)|0,C=C+Math.imul(me,Tt)|0;var Ac=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Ac>>>26)|0,Ac&=67108863,_=Math.imul(nt,dt),m=Math.imul(nt,ft),m=m+Math.imul(rt,dt)|0,C=Math.imul(rt,ft),_=_+Math.imul(tt,ht)|0,m=m+Math.imul(tt,pt)|0,m=m+Math.imul(it,ht)|0,C=C+Math.imul(it,pt)|0,_=_+Math.imul(Qe,mt)|0,m=m+Math.imul(Qe,gt)|0,m=m+Math.imul(et,mt)|0,C=C+Math.imul(et,gt)|0,_=_+Math.imul(Je,_t)|0,m=m+Math.imul(Je,bt)|0,m=m+Math.imul(Ye,_t)|0,C=C+Math.imul(Ye,bt)|0,_=_+Math.imul(Ze,yt)|0,m=m+Math.imul(Ze,wt)|0,m=m+Math.imul(Xe,yt)|0,C=C+Math.imul(Xe,wt)|0,_=_+Math.imul(qe,vt)|0,m=m+Math.imul(qe,kt)|0,m=m+Math.imul(Le,vt)|0,C=C+Math.imul(Le,kt)|0,_=_+Math.imul(_e,Ct)|0,m=m+Math.imul(_e,Tt)|0,m=m+Math.imul(he,Ct)|0,C=C+Math.imul(he,Tt)|0;var Ic=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Ic>>>26)|0,Ic&=67108863,_=Math.imul(nt,ht),m=Math.imul(nt,pt),m=m+Math.imul(rt,ht)|0,C=Math.imul(rt,pt),_=_+Math.imul(tt,mt)|0,m=m+Math.imul(tt,gt)|0,m=m+Math.imul(it,mt)|0,C=C+Math.imul(it,gt)|0,_=_+Math.imul(Qe,_t)|0,m=m+Math.imul(Qe,bt)|0,m=m+Math.imul(et,_t)|0,C=C+Math.imul(et,bt)|0,_=_+Math.imul(Je,yt)|0,m=m+Math.imul(Je,wt)|0,m=m+Math.imul(Ye,yt)|0,C=C+Math.imul(Ye,wt)|0,_=_+Math.imul(Ze,vt)|0,m=m+Math.imul(Ze,kt)|0,m=m+Math.imul(Xe,vt)|0,C=C+Math.imul(Xe,kt)|0,_=_+Math.imul(qe,Ct)|0,m=m+Math.imul(qe,Tt)|0,m=m+Math.imul(Le,Ct)|0,C=C+Math.imul(Le,Tt)|0;var Oc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Oc>>>26)|0,Oc&=67108863,_=Math.imul(nt,mt),m=Math.imul(nt,gt),m=m+Math.imul(rt,mt)|0,C=Math.imul(rt,gt),_=_+Math.imul(tt,_t)|0,m=m+Math.imul(tt,bt)|0,m=m+Math.imul(it,_t)|0,C=C+Math.imul(it,bt)|0,_=_+Math.imul(Qe,yt)|0,m=m+Math.imul(Qe,wt)|0,m=m+Math.imul(et,yt)|0,C=C+Math.imul(et,wt)|0,_=_+Math.imul(Je,vt)|0,m=m+Math.imul(Je,kt)|0,m=m+Math.imul(Ye,vt)|0,C=C+Math.imul(Ye,kt)|0,_=_+Math.imul(Ze,Ct)|0,m=m+Math.imul(Ze,Tt)|0,m=m+Math.imul(Xe,Ct)|0,C=C+Math.imul(Xe,Tt)|0;var Pc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Pc>>>26)|0,Pc&=67108863,_=Math.imul(nt,_t),m=Math.imul(nt,bt),m=m+Math.imul(rt,_t)|0,C=Math.imul(rt,bt),_=_+Math.imul(tt,yt)|0,m=m+Math.imul(tt,wt)|0,m=m+Math.imul(it,yt)|0,C=C+Math.imul(it,wt)|0,_=_+Math.imul(Qe,vt)|0,m=m+Math.imul(Qe,kt)|0,m=m+Math.imul(et,vt)|0,C=C+Math.imul(et,kt)|0,_=_+Math.imul(Je,Ct)|0,m=m+Math.imul(Je,Tt)|0,m=m+Math.imul(Ye,Ct)|0,C=C+Math.imul(Ye,Tt)|0;var Dc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Dc>>>26)|0,Dc&=67108863,_=Math.imul(nt,yt),m=Math.imul(nt,wt),m=m+Math.imul(rt,yt)|0,C=Math.imul(rt,wt),_=_+Math.imul(tt,vt)|0,m=m+Math.imul(tt,kt)|0,m=m+Math.imul(it,vt)|0,C=C+Math.imul(it,kt)|0,_=_+Math.imul(Qe,Ct)|0,m=m+Math.imul(Qe,Tt)|0,m=m+Math.imul(et,Ct)|0,C=C+Math.imul(et,Tt)|0;var Ec=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Ec>>>26)|0,Ec&=67108863,_=Math.imul(nt,vt),m=Math.imul(nt,kt),m=m+Math.imul(rt,vt)|0,C=Math.imul(rt,kt),_=_+Math.imul(tt,Ct)|0,m=m+Math.imul(tt,Tt)|0,m=m+Math.imul(it,Ct)|0,C=C+Math.imul(it,Tt)|0;var Mc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Mc>>>26)|0,Mc&=67108863,_=Math.imul(nt,Ct),m=Math.imul(nt,Tt),m=m+Math.imul(rt,Ct)|0,C=Math.imul(rt,Tt);var jc=(w+_|0)+((m&8191)<<13)|0;return w=(C+(m>>>13)|0)+(jc>>>26)|0,jc&=67108863,g[0]=gc,g[1]=_c,g[2]=bc,g[3]=yc,g[4]=wc,g[5]=vc,g[6]=kc,g[7]=Cc,g[8]=Tc,g[9]=Sc,g[10]=xc,g[11]=Ac,g[12]=Ic,g[13]=Oc,g[14]=Pc,g[15]=Dc,g[16]=Ec,g[17]=Mc,g[18]=jc,w!==0&&(g[19]=w,f.length++),f};Math.imul||(B=j);function D(S,c,d){d.negative=c.negative^S.negative,d.length=S.length+c.length;for(var f=0,b=0,p=0;p<d.length-1;p++){var g=b;b=0;for(var w=f&67108863,_=Math.min(p,c.length-1),m=Math.max(0,p-S.length+1);m<=_;m++){var C=p-m,N=S.words[C]|0,R=c.words[m]|0,$=N*R,L=$&67108863;g=g+($/67108864|0)|0,L=L+w|0,w=L&67108863,g=g+(L>>>26)|0,b+=g>>>26,g&=67108863}d.words[p]=w,f=g,g=b}return f!==0?d.words[p]=f:d.length--,d._strip()}function q(S,c,d){return D(S,c,d)}r.prototype.mulTo=function(c,d){var f,b=this.length+c.length;return this.length===10&&c.length===10?f=B(this,c,d):b<63?f=j(this,c,d):b<1024?f=D(this,c,d):f=q(this,c,d),f};function K(S,c){this.x=S,this.y=c}K.prototype.makeRBT=function(c){for(var d=new Array(c),f=r.prototype._countBits(c)-1,b=0;b<c;b++)d[b]=this.revBin(b,f,c);return d},K.prototype.revBin=function(c,d,f){if(c===0||c===f-1)return c;for(var b=0,p=0;p<d;p++)b|=(c&1)<<d-p-1,c>>=1;return b},K.prototype.permute=function(c,d,f,b,p,g){for(var w=0;w<g;w++)b[w]=d[c[w]],p[w]=f[c[w]]},K.prototype.transform=function(c,d,f,b,p,g){this.permute(g,c,d,f,b,p);for(var w=1;w<p;w<<=1)for(var _=w<<1,m=Math.cos(2*Math.PI/_),C=Math.sin(2*Math.PI/_),N=0;N<p;N+=_)for(var R=m,$=C,L=0;L<w;L++){var H=f[N+L],ee=b[N+L],ge=f[N+L+w],ne=b[N+L+w],me=R*ge-$*ne;ne=R*ne+$*ge,ge=me,f[N+L]=H+ge,b[N+L]=ee+ne,f[N+L+w]=H-ge,b[N+L+w]=ee-ne,L!==_&&(me=m*R-C*$,$=m*$+C*R,R=me)}},K.prototype.guessLen13b=function(c,d){var f=Math.max(d,c)|1,b=f&1,p=0;for(f=f/2|0;f;f=f>>>1)p++;return 1<<p+1+b},K.prototype.conjugate=function(c,d,f){if(!(f<=1))for(var b=0;b<f/2;b++){var p=c[b];c[b]=c[f-b-1],c[f-b-1]=p,p=d[b],d[b]=-d[f-b-1],d[f-b-1]=-p}},K.prototype.normalize13b=function(c,d){for(var f=0,b=0;b<d/2;b++){var p=Math.round(c[2*b+1]/d)*8192+Math.round(c[2*b]/d)+f;c[b]=p&67108863,p<67108864?f=0:f=p/67108864|0}return c},K.prototype.convert13b=function(c,d,f,b){for(var p=0,g=0;g<d;g++)p=p+(c[g]|0),f[2*g]=p&8191,p=p>>>13,f[2*g+1]=p&8191,p=p>>>13;for(g=2*d;g<b;++g)f[g]=0;i(p===0),i((p&-8192)===0)},K.prototype.stub=function(c){for(var d=new Array(c),f=0;f<c;f++)d[f]=0;return d},K.prototype.mulp=function(c,d,f){var b=2*this.guessLen13b(c.length,d.length),p=this.makeRBT(b),g=this.stub(b),w=new Array(b),_=new Array(b),m=new Array(b),C=new Array(b),N=new Array(b),R=new Array(b),$=f.words;$.length=b,this.convert13b(c.words,c.length,w,b),this.convert13b(d.words,d.length,C,b),this.transform(w,g,_,m,b,p),this.transform(C,g,N,R,b,p);for(var L=0;L<b;L++){var H=_[L]*N[L]-m[L]*R[L];m[L]=_[L]*R[L]+m[L]*N[L],_[L]=H}return this.conjugate(_,m,b),this.transform(_,m,$,g,b,p),this.conjugate($,g,b),this.normalize13b($,b),f.negative=c.negative^d.negative,f.length=c.length+d.length,f._strip()},r.prototype.mul=function(c){var d=new r(null);return d.words=new Array(this.length+c.length),this.mulTo(c,d)},r.prototype.mulf=function(c){var d=new r(null);return d.words=new Array(this.length+c.length),q(this,c,d)},r.prototype.imul=function(c){return this.clone().mulTo(c,this)},r.prototype.imuln=function(c){var d=c<0;d&&(c=-c),i(typeof c=="number"),i(c<67108864);for(var f=0,b=0;b<this.length;b++){var p=(this.words[b]|0)*c,g=(p&67108863)+(f&67108863);f>>=26,f+=p/67108864|0,f+=g>>>26,this.words[b]=g&67108863}return f!==0&&(this.words[b]=f,this.length++),d?this.ineg():this},r.prototype.muln=function(c){return this.clone().imuln(c)},r.prototype.sqr=function(){return this.mul(this)},r.prototype.isqr=function(){return this.imul(this.clone())},r.prototype.pow=function(c){var d=P(c);if(d.length===0)return new r(1);for(var f=this,b=0;b<d.length&&d[b]===0;b++,f=f.sqr());if(++b<d.length)for(var p=f.sqr();b<d.length;b++,p=p.sqr())d[b]!==0&&(f=f.mul(p));return f},r.prototype.iushln=function(c){i(typeof c=="number"&&c>=0);var d=c%26,f=(c-d)/26,b=67108863>>>26-d<<26-d,p;if(d!==0){var g=0;for(p=0;p<this.length;p++){var w=this.words[p]&b,_=(this.words[p]|0)-w<<d;this.words[p]=_|g,g=w>>>26-d}g&&(this.words[p]=g,this.length++)}if(f!==0){for(p=this.length-1;p>=0;p--)this.words[p+f]=this.words[p];for(p=0;p<f;p++)this.words[p]=0;this.length+=f}return this._strip()},r.prototype.ishln=function(c){return i(this.negative===0),this.iushln(c)},r.prototype.iushrn=function(c,d,f){i(typeof c=="number"&&c>=0);var b;d?b=(d-d%26)/26:b=0;var p=c%26,g=Math.min((c-p)/26,this.length),w=67108863^67108863>>>p<<p,_=f;if(b-=g,b=Math.max(0,b),_){for(var m=0;m<g;m++)_.words[m]=this.words[m];_.length=g}if(g!==0)if(this.length>g)for(this.length-=g,m=0;m<this.length;m++)this.words[m]=this.words[m+g];else this.words[0]=0,this.length=1;var C=0;for(m=this.length-1;m>=0&&(C!==0||m>=b);m--){var N=this.words[m]|0;this.words[m]=C<<26-p|N>>>p,C=N&w}return _&&C!==0&&(_.words[_.length++]=C),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},r.prototype.ishrn=function(c,d,f){return i(this.negative===0),this.iushrn(c,d,f)},r.prototype.shln=function(c){return this.clone().ishln(c)},r.prototype.ushln=function(c){return this.clone().iushln(c)},r.prototype.shrn=function(c){return this.clone().ishrn(c)},r.prototype.ushrn=function(c){return this.clone().iushrn(c)},r.prototype.testn=function(c){i(typeof c=="number"&&c>=0);var d=c%26,f=(c-d)/26,b=1<<d;if(this.length<=f)return!1;var p=this.words[f];return!!(p&b)},r.prototype.imaskn=function(c){i(typeof c=="number"&&c>=0);var d=c%26,f=(c-d)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=f)return this;if(d!==0&&f++,this.length=Math.min(f,this.length),d!==0){var b=67108863^67108863>>>d<<d;this.words[this.length-1]&=b}return this._strip()},r.prototype.maskn=function(c){return this.clone().imaskn(c)},r.prototype.iaddn=function(c){return i(typeof c=="number"),i(c<67108864),c<0?this.isubn(-c):this.negative!==0?this.length===1&&(this.words[0]|0)<=c?(this.words[0]=c-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(c),this.negative=1,this):this._iaddn(c)},r.prototype._iaddn=function(c){this.words[0]+=c;for(var d=0;d<this.length&&this.words[d]>=67108864;d++)this.words[d]-=67108864,d===this.length-1?this.words[d+1]=1:this.words[d+1]++;return this.length=Math.max(this.length,d+1),this},r.prototype.isubn=function(c){if(i(typeof c=="number"),i(c<67108864),c<0)return this.iaddn(-c);if(this.negative!==0)return this.negative=0,this.iaddn(c),this.negative=1,this;if(this.words[0]-=c,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var d=0;d<this.length&&this.words[d]<0;d++)this.words[d]+=67108864,this.words[d+1]-=1;return this._strip()},r.prototype.addn=function(c){return this.clone().iaddn(c)},r.prototype.subn=function(c){return this.clone().isubn(c)},r.prototype.iabs=function(){return this.negative=0,this},r.prototype.abs=function(){return this.clone().iabs()},r.prototype._ishlnsubmul=function(c,d,f){var b=c.length+f,p;this._expand(b);var g,w=0;for(p=0;p<c.length;p++){g=(this.words[p+f]|0)+w;var _=(c.words[p]|0)*d;g-=_&67108863,w=(g>>26)-(_/67108864|0),this.words[p+f]=g&67108863}for(;p<this.length-f;p++)g=(this.words[p+f]|0)+w,w=g>>26,this.words[p+f]=g&67108863;if(w===0)return this._strip();for(i(w===-1),w=0,p=0;p<this.length;p++)g=-(this.words[p]|0)+w,w=g>>26,this.words[p]=g&67108863;return this.negative=1,this._strip()},r.prototype._wordDiv=function(c,d){var f=this.length-c.length,b=this.clone(),p=c,g=p.words[p.length-1]|0,w=this._countBits(g);f=26-w,f!==0&&(p=p.ushln(f),b.iushln(f),g=p.words[p.length-1]|0);var _=b.length-p.length,m;if(d!=="mod"){m=new r(null),m.length=_+1,m.words=new Array(m.length);for(var C=0;C<m.length;C++)m.words[C]=0}var N=b.clone()._ishlnsubmul(p,1,_);N.negative===0&&(b=N,m&&(m.words[_]=1));for(var R=_-1;R>=0;R--){var $=(b.words[p.length+R]|0)*67108864+(b.words[p.length+R-1]|0);for($=Math.min($/g|0,67108863),b._ishlnsubmul(p,$,R);b.negative!==0;)$--,b.negative=0,b._ishlnsubmul(p,1,R),b.isZero()||(b.negative^=1);m&&(m.words[R]=$)}return m&&m._strip(),b._strip(),d!=="div"&&f!==0&&b.iushrn(f),{div:m||null,mod:b}},r.prototype.divmod=function(c,d,f){if(i(!c.isZero()),this.isZero())return{div:new r(0),mod:new r(0)};var b,p,g;return this.negative!==0&&c.negative===0?(g=this.neg().divmod(c,d),d!=="mod"&&(b=g.div.neg()),d!=="div"&&(p=g.mod.neg(),f&&p.negative!==0&&p.iadd(c)),{div:b,mod:p}):this.negative===0&&c.negative!==0?(g=this.divmod(c.neg(),d),d!=="mod"&&(b=g.div.neg()),{div:b,mod:g.mod}):this.negative&c.negative?(g=this.neg().divmod(c.neg(),d),d!=="div"&&(p=g.mod.neg(),f&&p.negative!==0&&p.isub(c)),{div:g.div,mod:p}):c.length>this.length||this.cmp(c)<0?{div:new r(0),mod:this}:c.length===1?d==="div"?{div:this.divn(c.words[0]),mod:null}:d==="mod"?{div:null,mod:new r(this.modrn(c.words[0]))}:{div:this.divn(c.words[0]),mod:new r(this.modrn(c.words[0]))}:this._wordDiv(c,d)},r.prototype.div=function(c){return this.divmod(c,"div",!1).div},r.prototype.mod=function(c){return this.divmod(c,"mod",!1).mod},r.prototype.umod=function(c){return this.divmod(c,"mod",!0).mod},r.prototype.divRound=function(c){var d=this.divmod(c);if(d.mod.isZero())return d.div;var f=d.div.negative!==0?d.mod.isub(c):d.mod,b=c.ushrn(1),p=c.andln(1),g=f.cmp(b);return g<0||p===1&&g===0?d.div:d.div.negative!==0?d.div.isubn(1):d.div.iaddn(1)},r.prototype.modrn=function(c){var d=c<0;d&&(c=-c),i(c<=67108863);for(var f=(1<<26)%c,b=0,p=this.length-1;p>=0;p--)b=(f*b+(this.words[p]|0))%c;return d?-b:b},r.prototype.modn=function(c){return this.modrn(c)},r.prototype.idivn=function(c){var d=c<0;d&&(c=-c),i(c<=67108863);for(var f=0,b=this.length-1;b>=0;b--){var p=(this.words[b]|0)+f*67108864;this.words[b]=p/c|0,f=p%c}return this._strip(),d?this.ineg():this},r.prototype.divn=function(c){return this.clone().idivn(c)},r.prototype.egcd=function(c){i(c.negative===0),i(!c.isZero());var d=this,f=c.clone();d.negative!==0?d=d.umod(c):d=d.clone();for(var b=new r(1),p=new r(0),g=new r(0),w=new r(1),_=0;d.isEven()&&f.isEven();)d.iushrn(1),f.iushrn(1),++_;for(var m=f.clone(),C=d.clone();!d.isZero();){for(var N=0,R=1;!(d.words[0]&R)&&N<26;++N,R<<=1);if(N>0)for(d.iushrn(N);N-- >0;)(b.isOdd()||p.isOdd())&&(b.iadd(m),p.isub(C)),b.iushrn(1),p.iushrn(1);for(var $=0,L=1;!(f.words[0]&L)&&$<26;++$,L<<=1);if($>0)for(f.iushrn($);$-- >0;)(g.isOdd()||w.isOdd())&&(g.iadd(m),w.isub(C)),g.iushrn(1),w.iushrn(1);d.cmp(f)>=0?(d.isub(f),b.isub(g),p.isub(w)):(f.isub(d),g.isub(b),w.isub(p))}return{a:g,b:w,gcd:f.iushln(_)}},r.prototype._invmp=function(c){i(c.negative===0),i(!c.isZero());var d=this,f=c.clone();d.negative!==0?d=d.umod(c):d=d.clone();for(var b=new r(1),p=new r(0),g=f.clone();d.cmpn(1)>0&&f.cmpn(1)>0;){for(var w=0,_=1;!(d.words[0]&_)&&w<26;++w,_<<=1);if(w>0)for(d.iushrn(w);w-- >0;)b.isOdd()&&b.iadd(g),b.iushrn(1);for(var m=0,C=1;!(f.words[0]&C)&&m<26;++m,C<<=1);if(m>0)for(f.iushrn(m);m-- >0;)p.isOdd()&&p.iadd(g),p.iushrn(1);d.cmp(f)>=0?(d.isub(f),b.isub(p)):(f.isub(d),p.isub(b))}var N;return d.cmpn(1)===0?N=b:N=p,N.cmpn(0)<0&&N.iadd(c),N},r.prototype.gcd=function(c){if(this.isZero())return c.abs();if(c.isZero())return this.abs();var d=this.clone(),f=c.clone();d.negative=0,f.negative=0;for(var b=0;d.isEven()&&f.isEven();b++)d.iushrn(1),f.iushrn(1);do{for(;d.isEven();)d.iushrn(1);for(;f.isEven();)f.iushrn(1);var p=d.cmp(f);if(p<0){var g=d;d=f,f=g}else if(p===0||f.cmpn(1)===0)break;d.isub(f)}while(!0);return f.iushln(b)},r.prototype.invm=function(c){return this.egcd(c).a.umod(c)},r.prototype.isEven=function(){return(this.words[0]&1)===0},r.prototype.isOdd=function(){return(this.words[0]&1)===1},r.prototype.andln=function(c){return this.words[0]&c},r.prototype.bincn=function(c){i(typeof c=="number");var d=c%26,f=(c-d)/26,b=1<<d;if(this.length<=f)return this._expand(f+1),this.words[f]|=b,this;for(var p=b,g=f;p!==0&&g<this.length;g++){var w=this.words[g]|0;w+=p,p=w>>>26,w&=67108863,this.words[g]=w}return p!==0&&(this.words[g]=p,this.length++),this},r.prototype.isZero=function(){return this.length===1&&this.words[0]===0},r.prototype.cmpn=function(c){var d=c<0;if(this.negative!==0&&!d)return-1;if(this.negative===0&&d)return 1;this._strip();var f;if(this.length>1)f=1;else{d&&(c=-c),i(c<=67108863,"Number is too big");var b=this.words[0]|0;f=b===c?0:b<c?-1:1}return this.negative!==0?-f|0:f},r.prototype.cmp=function(c){if(this.negative!==0&&c.negative===0)return-1;if(this.negative===0&&c.negative!==0)return 1;var d=this.ucmp(c);return this.negative!==0?-d|0:d},r.prototype.ucmp=function(c){if(this.length>c.length)return 1;if(this.length<c.length)return-1;for(var d=0,f=this.length-1;f>=0;f--){var b=this.words[f]|0,p=c.words[f]|0;if(b!==p){b<p?d=-1:b>p&&(d=1);break}}return d},r.prototype.gtn=function(c){return this.cmpn(c)===1},r.prototype.gt=function(c){return this.cmp(c)===1},r.prototype.gten=function(c){return this.cmpn(c)>=0},r.prototype.gte=function(c){return this.cmp(c)>=0},r.prototype.ltn=function(c){return this.cmpn(c)===-1},r.prototype.lt=function(c){return this.cmp(c)===-1},r.prototype.lten=function(c){return this.cmpn(c)<=0},r.prototype.lte=function(c){return this.cmp(c)<=0},r.prototype.eqn=function(c){return this.cmpn(c)===0},r.prototype.eq=function(c){return this.cmp(c)===0},r.red=function(c){return new M(c)},r.prototype.toRed=function(c){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),c.convertTo(this)._forceRed(c)},r.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},r.prototype._forceRed=function(c){return this.red=c,this},r.prototype.forceRed=function(c){return i(!this.red,"Already a number in reduction context"),this._forceRed(c)},r.prototype.redAdd=function(c){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,c)},r.prototype.redIAdd=function(c){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,c)},r.prototype.redSub=function(c){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,c)},r.prototype.redISub=function(c){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,c)},r.prototype.redShl=function(c){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,c)},r.prototype.redMul=function(c){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,c),this.red.mul(this,c)},r.prototype.redIMul=function(c){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,c),this.red.imul(this,c)},r.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},r.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},r.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},r.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},r.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},r.prototype.redPow=function(c){return i(this.red&&!c.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,c)};var Z={k256:null,p224:null,p192:null,p25519:null};function G(S,c){this.name=S,this.p=new r(c,16),this.n=this.p.bitLength(),this.k=new r(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}G.prototype._tmp=function(){var c=new r(null);return c.words=new Array(Math.ceil(this.n/13)),c},G.prototype.ireduce=function(c){var d=c,f;do this.split(d,this.tmp),d=this.imulK(d),d=d.iadd(this.tmp),f=d.bitLength();while(f>this.n);var b=f<this.n?-1:d.ucmp(this.p);return b===0?(d.words[0]=0,d.length=1):b>0?d.isub(this.p):d.strip!==void 0?d.strip():d._strip(),d},G.prototype.split=function(c,d){c.iushrn(this.n,0,d)},G.prototype.imulK=function(c){return c.imul(this.k)};function J(){G.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(J,G),J.prototype.split=function(c,d){for(var f=4194303,b=Math.min(c.length,9),p=0;p<b;p++)d.words[p]=c.words[p];if(d.length=b,c.length<=9){c.words[0]=0,c.length=1;return}var g=c.words[9];for(d.words[d.length++]=g&f,p=10;p<c.length;p++){var w=c.words[p]|0;c.words[p-10]=(w&f)<<4|g>>>22,g=w}g>>>=22,c.words[p-10]=g,g===0&&c.length>10?c.length-=10:c.length-=9},J.prototype.imulK=function(c){c.words[c.length]=0,c.words[c.length+1]=0,c.length+=2;for(var d=0,f=0;f<c.length;f++){var b=c.words[f]|0;d+=b*977,c.words[f]=d&67108863,d=b*64+(d/67108864|0)}return c.words[c.length-1]===0&&(c.length--,c.words[c.length-1]===0&&c.length--),c};function x(){G.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}n(x,G);function I(){G.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}n(I,G);function A(){G.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}n(A,G),A.prototype.imulK=function(c){for(var d=0,f=0;f<c.length;f++){var b=(c.words[f]|0)*19+d,p=b&67108863;b>>>=26,c.words[f]=p,d=b}return d!==0&&(c.words[c.length++]=d),c},r._prime=function(c){if(Z[c])return Z[c];var d;if(c==="k256")d=new J;else if(c==="p224")d=new x;else if(c==="p192")d=new I;else if(c==="p25519")d=new A;else throw new Error("Unknown prime "+c);return Z[c]=d,d};function M(S){if(typeof S=="string"){var c=r._prime(S);this.m=c.p,this.prime=c}else i(S.gtn(1),"modulus must be greater than 1"),this.m=S,this.prime=null}M.prototype._verify1=function(c){i(c.negative===0,"red works only with positives"),i(c.red,"red works only with red numbers")},M.prototype._verify2=function(c,d){i((c.negative|d.negative)===0,"red works only with positives"),i(c.red&&c.red===d.red,"red works only with red numbers")},M.prototype.imod=function(c){return this.prime?this.prime.ireduce(c)._forceRed(this):(u(c,c.umod(this.m)._forceRed(this)),c)},M.prototype.neg=function(c){return c.isZero()?c.clone():this.m.sub(c)._forceRed(this)},M.prototype.add=function(c,d){this._verify2(c,d);var f=c.add(d);return f.cmp(this.m)>=0&&f.isub(this.m),f._forceRed(this)},M.prototype.iadd=function(c,d){this._verify2(c,d);var f=c.iadd(d);return f.cmp(this.m)>=0&&f.isub(this.m),f},M.prototype.sub=function(c,d){this._verify2(c,d);var f=c.sub(d);return f.cmpn(0)<0&&f.iadd(this.m),f._forceRed(this)},M.prototype.isub=function(c,d){this._verify2(c,d);var f=c.isub(d);return f.cmpn(0)<0&&f.iadd(this.m),f},M.prototype.shl=function(c,d){return this._verify1(c),this.imod(c.ushln(d))},M.prototype.imul=function(c,d){return this._verify2(c,d),this.imod(c.imul(d))},M.prototype.mul=function(c,d){return this._verify2(c,d),this.imod(c.mul(d))},M.prototype.isqr=function(c){return this.imul(c,c.clone())},M.prototype.sqr=function(c){return this.mul(c,c)},M.prototype.sqrt=function(c){if(c.isZero())return c.clone();var d=this.m.andln(3);if(i(d%2===1),d===3){var f=this.m.add(new r(1)).iushrn(2);return this.pow(c,f)}for(var b=this.m.subn(1),p=0;!b.isZero()&&b.andln(1)===0;)p++,b.iushrn(1);i(!b.isZero());var g=new r(1).toRed(this),w=g.redNeg(),_=this.m.subn(1).iushrn(1),m=this.m.bitLength();for(m=new r(2*m*m).toRed(this);this.pow(m,_).cmp(w)!==0;)m.redIAdd(w);for(var C=this.pow(m,b),N=this.pow(c,b.addn(1).iushrn(1)),R=this.pow(c,b),$=p;R.cmp(g)!==0;){for(var L=R,H=0;L.cmp(g)!==0;H++)L=L.redSqr();i(H<$);var ee=this.pow(C,new r(1).iushln($-H-1));N=N.redMul(ee),C=ee.redSqr(),R=R.redMul(C),$=H}return N},M.prototype.invm=function(c){var d=c._invmp(this.m);return d.negative!==0?(d.negative=0,this.imod(d).redNeg()):this.imod(d)},M.prototype.pow=function(c,d){if(d.isZero())return new r(1).toRed(this);if(d.cmpn(1)===0)return c.clone();var f=4,b=new Array(1<<f);b[0]=new r(1).toRed(this),b[1]=c;for(var p=2;p<b.length;p++)b[p]=this.mul(b[p-1],c);var g=b[0],w=0,_=0,m=d.bitLength()%26;for(m===0&&(m=26),p=d.length-1;p>=0;p--){for(var C=d.words[p],N=m-1;N>=0;N--){var R=C>>N&1;if(g!==b[0]&&(g=this.sqr(g)),R===0&&w===0){_=0;continue}w<<=1,w|=R,_++,!(_!==f&&(p!==0||N!==0))&&(g=this.mul(g,b[w]),_=0,w=0)}m=26}return g},M.prototype.convertTo=function(c){var d=c.umod(this.m);return d===c?d.clone():d},M.prototype.convertFrom=function(c){var d=c.clone();return d.red=null,d},r.mont=function(c){return new k(c)};function k(S){M.call(this,S),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new r(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(k,M),k.prototype.convertTo=function(c){return this.imod(c.ushln(this.shift))},k.prototype.convertFrom=function(c){var d=this.imod(c.mul(this.rinv));return d.red=null,d},k.prototype.imul=function(c,d){if(c.isZero()||d.isZero())return c.words[0]=0,c.length=1,c;var f=c.imul(d),b=f.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=f.isub(b).iushrn(this.shift),g=p;return p.cmp(this.m)>=0?g=p.isub(this.m):p.cmpn(0)<0&&(g=p.iadd(this.m)),g._forceRed(this)},k.prototype.mul=function(c,d){if(c.isZero()||d.isZero())return new r(0)._forceRed(this);var f=c.mul(d),b=f.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=f.isub(b).iushrn(this.shift),g=p;return p.cmp(this.m)>=0?g=p.isub(this.m):p.cmpn(0)<0&&(g=p.iadd(this.m)),g._forceRed(this)},k.prototype.invm=function(c){var d=this.imod(c._invmp(this.m).mul(this.r2));return d._forceRed(this)}})(typeof Fc>"u"||Fc,Bd)});var yf={};wd(yf,{__addDisposableResource:()=>_f,__assign:()=>Is,__asyncDelegator:()=>lf,__asyncGenerator:()=>cf,__asyncValues:()=>uf,__await:()=>_r,__awaiter:()=>tf,__classPrivateFieldGet:()=>pf,__classPrivateFieldIn:()=>gf,__classPrivateFieldSet:()=>mf,__createBinding:()=>Ps,__decorate:()=>Yd,__disposeResources:()=>bf,__esDecorate:()=>Ub,__exportStar:()=>rf,__extends:()=>Xd,__generator:()=>nf,__importDefault:()=>hf,__importStar:()=>ff,__makeTemplateObject:()=>df,__metadata:()=>ef,__param:()=>Qd,__propKey:()=>Vb,__read:()=>Gc,__rest:()=>Jd,__runInitializers:()=>Kb,__setFunctionName:()=>Wb,__spread:()=>of,__spreadArray:()=>af,__spreadArrays:()=>sf,__values:()=>Os,default:()=>Hb});function Xd(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");zc(t,e);function i(){this.constructor=t}t.prototype=e===null?Object.create(e):(i.prototype=e.prototype,new i)}function Jd(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(i[n]=t[n]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,n=Object.getOwnPropertySymbols(t);r<n.length;r++)e.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(t,n[r])&&(i[n[r]]=t[n[r]]);return i}function Yd(t,e,i,n){var r=arguments.length,o=r<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,i):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(t,e,i,n);else for(var a=t.length-1;a>=0;a--)(s=t[a])&&(o=(r<3?s(o):r>3?s(e,i,o):s(e,i))||o);return r>3&&o&&Object.defineProperty(e,i,o),o}function Qd(t,e){return function(i,n){e(i,n,t)}}function Ub(t,e,i,n,r,o){function s(B){if(B!==void 0&&typeof B!="function")throw new TypeError("Function expected");return B}for(var a=n.kind,l=a==="getter"?"get":a==="setter"?"set":"value",u=!e&&t?n.static?t:t.prototype:null,h=e||(u?Object.getOwnPropertyDescriptor(u,n.name):{}),y,v=!1,T=i.length-1;T>=0;T--){var O={};for(var P in n)O[P]=P==="access"?{}:n[P];for(var P in n.access)O.access[P]=n.access[P];O.addInitializer=function(B){if(v)throw new TypeError("Cannot add initializers after decoration has completed");o.push(s(B||null))};var j=(0,i[T])(a==="accessor"?{get:h.get,set:h.set}:h[l],O);if(a==="accessor"){if(j===void 0)continue;if(j===null||typeof j!="object")throw new TypeError("Object expected");(y=s(j.get))&&(h.get=y),(y=s(j.set))&&(h.set=y),(y=s(j.init))&&r.unshift(y)}else(y=s(j))&&(a==="field"?r.unshift(y):h[l]=y)}u&&Object.defineProperty(u,n.name,h),v=!0}function Kb(t,e,i){for(var n=arguments.length>2,r=0;r<e.length;r++)i=n?e[r].call(t,i):e[r].call(t);return n?i:void 0}function Vb(t){return typeof t=="symbol"?t:"".concat(t)}function Wb(t,e,i){return typeof e=="symbol"&&(e=e.description?"[".concat(e.description,"]"):""),Object.defineProperty(t,"name",{configurable:!0,value:i?"".concat(i," ",e):e})}function ef(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function tf(t,e,i,n){function r(o){return o instanceof i?o:new i(function(s){s(o)})}return new(i||(i=Promise))(function(o,s){function a(h){try{u(n.next(h))}catch(y){s(y)}}function l(h){try{u(n.throw(h))}catch(y){s(y)}}function u(h){h.done?o(h.value):r(h.value).then(a,l)}u((n=n.apply(t,e||[])).next())})}function nf(t,e){var i={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,r,o,s;return s={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function a(u){return function(h){return l([u,h])}}function l(u){if(n)throw new TypeError("Generator is already executing.");for(;s&&(s=0,u[0]&&(i=0)),i;)try{if(n=1,r&&(o=u[0]&2?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[u[0]&2,o.value]),u[0]){case 0:case 1:o=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(o=i.trys,!(o=o.length>0&&o[o.length-1])&&(u[0]===6||u[0]===2)){i=0;continue}if(u[0]===3&&(!o||u[1]>o[0]&&u[1]<o[3])){i.label=u[1];break}if(u[0]===6&&i.label<o[1]){i.label=o[1],o=u;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(u);break}o[2]&&i.ops.pop(),i.trys.pop();continue}u=e.call(t,i)}catch(h){u=[6,h],r=0}finally{n=o=0}if(u[0]&5)throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}function rf(t,e){for(var i in t)i!=="default"&&!Object.prototype.hasOwnProperty.call(e,i)&&Ps(e,t,i)}function Os(t){var e=typeof Symbol=="function"&&Symbol.iterator,i=e&&t[e],n=0;if(i)return i.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function Gc(t,e){var i=typeof Symbol=="function"&&t[Symbol.iterator];if(!i)return t;var n=i.call(t),r,o=[],s;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(a){s={error:a}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(s)throw s.error}}return o}function of(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(Gc(arguments[e]));return t}function sf(){for(var t=0,e=0,i=arguments.length;e<i;e++)t+=arguments[e].length;for(var n=Array(t),r=0,e=0;e<i;e++)for(var o=arguments[e],s=0,a=o.length;s<a;s++,r++)n[r]=o[s];return n}function af(t,e,i){if(i||arguments.length===2)for(var n=0,r=e.length,o;n<r;n++)(o||!(n in e))&&(o||(o=Array.prototype.slice.call(e,0,n)),o[n]=e[n]);return t.concat(o||Array.prototype.slice.call(e))}function _r(t){return this instanceof _r?(this.v=t,this):new _r(t)}function cf(t,e,i){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=i.apply(t,e||[]),r,o=[];return r={},s("next"),s("throw"),s("return"),r[Symbol.asyncIterator]=function(){return this},r;function s(v){n[v]&&(r[v]=function(T){return new Promise(function(O,P){o.push([v,T,O,P])>1||a(v,T)})})}function a(v,T){try{l(n[v](T))}catch(O){y(o[0][3],O)}}function l(v){v.value instanceof _r?Promise.resolve(v.value.v).then(u,h):y(o[0][2],v)}function u(v){a("next",v)}function h(v){a("throw",v)}function y(v,T){v(T),o.shift(),o.length&&a(o[0][0],o[0][1])}}function lf(t){var e,i;return e={},n("next"),n("throw",function(r){throw r}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(r,o){e[r]=t[r]?function(s){return(i=!i)?{value:_r(t[r](s)),done:!1}:o?o(s):s}:o}}function uf(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],i;return e?e.call(t):(t=typeof Os=="function"?Os(t):t[Symbol.iterator](),i={},n("next"),n("throw"),n("return"),i[Symbol.asyncIterator]=function(){return this},i);function n(o){i[o]=t[o]&&function(s){return new Promise(function(a,l){s=t[o](s),r(a,l,s.done,s.value)})}}function r(o,s,a,l){Promise.resolve(l).then(function(u){o({value:u,done:a})},s)}}function df(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function ff(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var i in t)i!=="default"&&Object.prototype.hasOwnProperty.call(t,i)&&Ps(e,t,i);return zb(e,t),e}function hf(t){return t&&t.__esModule?t:{default:t}}function pf(t,e,i,n){if(i==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return i==="m"?n:i==="a"?n.call(t):n?n.value:e.get(t)}function mf(t,e,i,n,r){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!r)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?t!==e||!r:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?r.call(t,i):r?r.value=i:e.set(t,i),i}function gf(t,e){if(e===null||typeof e!="object"&&typeof e!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof t=="function"?e===t:t.has(e)}function _f(t,e,i){if(e!=null){if(typeof e!="object"&&typeof e!="function")throw new TypeError("Object expected.");var n;if(i){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");n=e[Symbol.asyncDispose]}if(n===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");n=e[Symbol.dispose]}if(typeof n!="function")throw new TypeError("Object not disposable.");t.stack.push({value:e,dispose:n,async:i})}else i&&t.stack.push({async:!0});return e}function bf(t){function e(n){t.error=t.hasError?new Gb(n,t.error,"An error was suppressed during disposal."):n,t.hasError=!0}function i(){for(;t.stack.length;){var n=t.stack.pop();try{var r=n.dispose&&n.dispose.call(n.value);if(n.async)return Promise.resolve(r).then(i,function(o){return e(o),i()})}catch(o){e(o)}}if(t.hasError)throw t.error}return i()}var zc,Is,Ps,zb,Gb,Hb,wf=F_(()=>{"use strict";zc=function(t,e){return zc=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(i[r]=n[r])},zc(t,e)};Is=function(){return Is=Object.assign||function(e){for(var i,n=1,r=arguments.length;n<r;n++){i=arguments[n];for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(e[o]=i[o])}return e},Is.apply(this,arguments)};Ps=Object.create?function(t,e,i,n){n===void 0&&(n=i);var r=Object.getOwnPropertyDescriptor(e,i);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[i]}}),Object.defineProperty(t,n,r)}:function(t,e,i,n){n===void 0&&(n=i),t[n]=e[i]};zb=Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e};Gb=typeof SuppressedError=="function"?SuppressedError:function(t,e,i){var n=new Error(i);return n.name="SuppressedError",n.error=t,n.suppressed=e,n};Hb={__extends:Xd,__assign:Is,__rest:Jd,__decorate:Yd,__param:Qd,__metadata:ef,__awaiter:tf,__generator:nf,__createBinding:Ps,__exportStar:rf,__values:Os,__read:Gc,__spread:of,__spreadArrays:sf,__spreadArray:af,__await:_r,__asyncGenerator:cf,__asyncDelegator:lf,__asyncValues:uf,__makeTemplateObject:df,__importStar:ff,__importDefault:hf,__classPrivateFieldGet:pf,__classPrivateFieldSet:mf,__classPrivateFieldIn:gf,__addDisposableResource:_f,__disposeResources:bf}});var kf=Ln((Ds,vf)=>{"use strict";(function(t,e){typeof Ds=="object"&&typeof vf<"u"?e(Ds,(wf(),kd(yf))):typeof define=="function"&&define.amd?define(["exports","tslib"],e):e(t.ssGraph={},t.tslib)})(Ds,function(t,e){"use strict";var i=function(){function p(g,w,_){_===void 0&&(_=0),this.startVertex=g,this.endVertex=w,this.weight=_}return p.prototype.getKey=function(){var g=this.startVertex.getKey(),w=this.endVertex.getKey();return g+"_"+w},p.prototype.reverse=function(){var g=this.startVertex;return this.startVertex=this.endVertex,this.endVertex=g,this},p.prototype.clone=function(){return new p(this.startVertex,this.endVertex,this.weight)},p.prototype.toString=function(){return this.getKey()},p}();function n(p,g,w){if(w===void 0&&(w="cc-graph"),!p)throw new Error((w?"["+w+"]":"")+" Invariant failed: "+g)}function r(p,g){g===void 0&&(g=!0);var w=typeof p<"u"&&p!==null;return g?w&&p!=="undefined"&&p!=="null":w}var o=function(){function p(g){n(r(g),"Graph vertex must have a value"),this.value=g,this.edges=new Map}return p.prototype.addEdge=function(g){return this.edges.set(g.getKey(),g),this},p.prototype.deleteEdge=function(g){this.edges.delete(g.getKey())},p.prototype.getNeighbors=function(){var g=this,w=this.getEdges(),_=function(m){return m.startVertex===g?m.endVertex:m.startVertex};return w.map(_)},p.prototype.getEdges=function(){return Array.from(this.edges.values())},p.prototype.getDegree=function(){return this.getEdges().length},p.prototype.hasEdge=function(g){var w=this.getEdges().find(function(_){return _===g});return!!w},p.prototype.hasNeighbor=function(g){var w=this.getEdges().find(function(_){return _.startVertex===g||_.endVertex===g});return!!w},p.prototype.findEdge=function(g){var w=function(m){return m.startVertex===g||m.endVertex===g},_=this.getEdges().find(w);return _||null},p.prototype.getKey=function(){return this.value},p.prototype.deleteAllEdges=function(){var g=this;return this.getEdges().forEach(function(w){return g.deleteEdge(w)}),this},p.prototype.toString=function(g){return g?g(this.value):""+this.value},p}(),s;(function(p){p[p.EQUAL=0]="EQUAL",p[p.GREATER=1]="GREATER",p[p.LESS=-1]="LESS"})(s||(s={}));var a=function(){function p(g){this.compare=g||p.defaultCompareFunction}return p.defaultCompareFunction=function(g,w){return g===w?s.EQUAL:g<w?s.LESS:s.GREATER},p.prototype.equal=function(g,w){return this.compare(g,w)===s.EQUAL},p.prototype.lessThan=function(g,w){return this.compare(g,w)===s.LESS},p.prototype.greaterThan=function(g,w){return this.compare(g,w)===s.GREATER},p.prototype.lessThanOrEqual=function(g,w){return this.lessThan(g,w)||this.equal(g,w)},p.prototype.greaterThanOrEqual=function(g,w){return this.greaterThan(g,w)||this.equal(g,w)},p.prototype.reverse=function(){var g=this.compare;this.compare=function(w,_){return g(_,w)}},p}(),l=function(){function p(g){this.value=g,this.next=null}return p}(),u=function(){function p(g){this.value=g,this.next=null,this.prev=null}return p}();var h=function(p,g){return h=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(w,_){w.__proto__=_}||function(w,_){for(var m in _)_.hasOwnProperty(m)&&(w[m]=_[m])},h(p,g)};function y(p,g){h(p,g);function w(){this.constructor=p}p.prototype=g===null?Object.create(g):(w.prototype=g.prototype,new w)}function v(p,g){var w={label:0,sent:function(){if(C[0]&1)throw C[1];return C[1]},trys:[],ops:[]},_,m,C,N;return N={next:R(0),throw:R(1),return:R(2)},typeof Symbol=="function"&&(N[Symbol.iterator]=function(){return this}),N;function R(L){return function(H){return $([L,H])}}function $(L){if(_)throw new TypeError("Generator is already executing.");for(;w;)try{if(_=1,m&&(C=L[0]&2?m.return:L[0]?m.throw||((C=m.return)&&C.call(m),0):m.next)&&!(C=C.call(m,L[1])).done)return C;switch(m=0,C&&(L=[L[0]&2,C.value]),L[0]){case 0:case 1:C=L;break;case 4:return w.label++,{value:L[1],done:!1};case 5:w.label++,m=L[1],L=[0];continue;case 7:L=w.ops.pop(),w.trys.pop();continue;default:if(C=w.trys,!(C=C.length>0&&C[C.length-1])&&(L[0]===6||L[0]===2)){w=0;continue}if(L[0]===3&&(!C||L[1]>C[0]&&L[1]<C[3])){w.label=L[1];break}if(L[0]===6&&w.label<C[1]){w.label=C[1],C=L;break}if(C&&w.label<C[2]){w.label=C[2],w.ops.push(L);break}C[2]&&w.ops.pop(),w.trys.pop();continue}L=g.call(p,w)}catch(H){L=[6,H],m=0}finally{_=C=0}if(L[0]&5)throw L[1];return{value:L[0]?L[1]:void 0,done:!0}}}function T(p,g){var w=typeof Symbol=="function"&&p[Symbol.iterator];if(!w)return p;var _=w.call(p),m,C=[],N;try{for(;(g===void 0||g-- >0)&&!(m=_.next()).done;)C.push(m.value)}catch(R){N={error:R}}finally{try{m&&!m.done&&(w=_.return)&&w.call(_)}finally{if(N)throw N.error}}return C}function O(){for(var p=[],g=0;g<arguments.length;g++)p=p.concat(T(arguments[g]));return p}var P="obfuse error occur";function j(p,g){if(!p)throw new Error("[linked-list] "+(g||P))}var B=-1,D=function(){function p(){for(var g=this,w=[],_=0;_<arguments.length;_++)w[_]=arguments[_];this._head=null,this._tail=null,this._length=0,this.compare=new a,w.length>0&&w.forEach(function(m){g.append(m)})}return Object.defineProperty(p.prototype,"head",{get:function(){return this._head?this._head.value:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(p.prototype,"tail",{get:function(){return this._tail?this._tail.value:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(p.prototype,"length",{get:function(){return this._length},enumerable:!0,configurable:!0}),Object.defineProperty(p.prototype,"loopLength",{get:function(){var g=!1,w=1;if(!this._head)return 0;for(var _=this._head,m=this._head;m.next&&m.next.next;)if(m=m.next.next,_=_.next,_===m){g=!0;break}if(g){for(m=m.next;_!==m;)w++,m=m.next;return w}else return 0},enumerable:!0,configurable:!0}),p.prototype.getNode=function(g){var w=this._length;j(w>0&&g>=0&&g<w,"[linked-list] index "+g+" out of scope of list, which length is "+w);for(var _=this._head,m=0;m<g;)_=_.next,m++;return _},p.prototype.get=function(g){var w=this.getNode(g);return w?w.value:null},p.prototype.find=function(g){var w=g.value,_=g.callback;if(!this._head)return null;for(var m=this._head;m;){if(_&&_(m.value)||w!==void 0&&this.compare.equal(m.value,w))return m;m=m.next}return null},p.prototype.indexOf=function(g){if(!this._head)return B;for(var w=this._head,_=-1;w.next;){if(_++,this.compare.equal(w.value,g))return _;w=w.next}return w===this._tail&&this.compare.equal(w.value,g)&&(_+=1),_},p.prototype.first=function(g){j(g>=0,"[linked-list] param 'num' ("+g+") should not less than 0");for(var w=this.iterator(),_=[],m=Math.min(g,this.length),C=0;C<m;C++){var N=w.next();_.push(N.value)}return _},p.prototype.toArray=function(){return O(this)},p.prototype.isEmpty=function(){return this._head===null},p.prototype.iterator=function(){var g;return v(this,function(w){switch(w.label){case 0:g=this._head,w.label=1;case 1:return g?[4,g.value]:[3,3];case 2:return w.sent(),g=g.next,[3,1];case 3:return[2]}})},p.prototype[Symbol.iterator]=function(){return this.iterator()},p}(),q=function(p){y(g,p);function g(){for(var w=[],_=0;_<arguments.length;_++)w[_]=arguments[_];return p.apply(this,O(w))||this}return g.prototype.append=function(w){var _=new l(w);return this._tail?(this._tail.next=_,this._tail=_):this._head=this._tail=_,this._length++,!0},g.prototype.prepend=function(w){var _=new l(w);return this._head?(_.next=this._head,this._head=_):this._head=this._tail=_,this._length++,!0},g.prototype.remove=function(w){var _=this._head;if(_){if(this.compare.equal(_.value,w))return _.next?(this._head=_.next,_.next=null):this._head=this._tail=null,this._length--,w;for(var m=_;;){if(this.compare.equal(_.value,w))return _.next?m.next=_.next:(this._tail=m,this._tail.next=null),_.next=null,this._length--,w;if(_.next)m=_,_=_.next;else return}}},g.prototype.removeHead=function(){var w=this._head;if(w)return this._head.next?(this._head=w.next,w.next=null):(this._head=null,this._tail=null),this._length--,w.value},g.prototype.removeTail=function(){var w=this._tail;if(w){if(!this._head.next)this._head=null,this._tail=null;else{for(var _=this._head;_.next!==w;)_=_.next;_.next=null,this._tail=_}return this._length--,w.value}},g.prototype.reverse=function(){if(this._head){var w=this._head,_=null,m;for(this._tail=this._head;w!==null;)m=w.next,w.next=_,_=w,w=m;this._head=_}},g.prototype.clone=function(){var w=this.toArray();return new(g.bind.apply(g,O([void 0],w)))},g}(D),K=function(p){y(g,p);function g(){for(var w=[],_=0;_<arguments.length;_++)w[_]=arguments[_];var m=p.apply(this,O(w))||this;return m.cyclization(),m}return g.prototype.iterator=function(){var w;return v(this,function(_){switch(_.label){case 0:w=this._head,_.label=1;case 1:return w?[4,w.value]:[3,3];case 2:return _.sent(),w=w.next,w===this._head&&(w=null),[3,1];case 3:return[2]}})},g.prototype.circleIterator=function(){var w;return v(this,function(_){switch(_.label){case 0:w=this._head,_.label=1;case 1:return w?[4,w.value]:[3,3];case 2:return _.sent(),w=w.next,[3,1];case 3:return[2]}})},g.prototype[Symbol.iterator]=function(){return this.iterator()},g.prototype.mapToNormalListFn=function(w){for(var _=[],m=1;m<arguments.length;m++)_[m-1]=arguments[m];this.breakCircle();var C=p.prototype[w].apply(this,_);return this.cyclization(),C},g.prototype.getNode=function(w){return this.mapToNormalListFn("getNode",w)},g.prototype.append=function(w){return this.mapToNormalListFn("append",w)},g.prototype.prepend=function(w){return this.mapToNormalListFn("prepend",w)},g.prototype.find=function(w){return this.mapToNormalListFn("find",w)},g.prototype.indexOf=function(w){return this.mapToNormalListFn("indexOf",w)},g.prototype.remove=function(w){return this.mapToNormalListFn("remove",w)},g.prototype.removeHead=function(){return this.mapToNormalListFn("removeHead")},g.prototype.removeTail=function(){return this.mapToNormalListFn("removeTail")},g.prototype.first=function(w){j(w>=0,"[linked-list] param 'num' ("+w+") should not less than 0");for(var _=this.circleIterator(),m=[],C=0;C<w;C++){var N=_.next();m.push(N.value)}return m},g.prototype.toArray=function(){return this.mapToNormalListFn("toArray")},g.prototype.reverse=function(){return this.mapToNormalListFn("reverse")},g}(q),Z=function(p){y(g,p);function g(){for(var w=[],_=0;_<arguments.length;_++)w[_]=arguments[_];var m=p.apply(this,O(w))||this;return m.cyclization(),m}return g.prototype.breakCircle=function(){this._tail&&this._tail.next===this._head&&(this._tail.next=null)},g.prototype.cyclization=function(){this._tail&&this._tail.next===null&&(this._tail.next=this._head)},g.prototype.clone=function(){var w=this.toArray();return new(g.bind.apply(g,O([void 0],w)))},g}(K),G=function(p){y(g,p);function g(){for(var w=[],_=0;_<arguments.length;_++)w[_]=arguments[_];return p.apply(this,O(w))||this}return g.prototype.append=function(w){var _=new u(w);return this._tail?(this._tail.next=_,_.prev=this._tail,this._tail=_):this._head=this._tail=_,this._length++,!0},g.prototype.prepend=function(w){var _=new u(w);return this._head?(_.next=this._head,this._head.prev=_,this._head=_):this._head=this._tail=_,this._length++,!0},g.prototype.remove=function(w){var _=this._head;if(_){if(this.compare.equal(_.value,w))return _.next?(this._head=_.next,this._head.prev=null,_.next=_.prev=null):this._head=this._tail=null,this._length--,w;for(;;){if(this.compare.equal(_.value,w))return _.next?(_.prev.next=_.next,_.next.prev=_.prev,_.next=_.prev=null):(_.prev.next=null,this._tail=_.prev,_.next=_.prev=null),this._length--,_.value;if(_.next)_=_.next;else return}}},g.prototype.removeHead=function(){var w=this._head;if(w)return this._head.next?(w.next.prev=null,this._head=w.next,w.next=null):(this._head=null,this._tail=null),this._length--,w.value},g.prototype.removeTail=function(){var w=this._tail;if(w)return this._head.next?(w.prev.next=null,this._tail=w.prev,w.next=w.prev=null):(this._head=null,this._tail=null),this._length--,w.value},g.prototype.reverse=function(){if(this._head){var w=this._head,_=null,m;for(this._tail=this._head;w!==null;)m=w.next,w.next=_,w.prev=m,_=w,w=m;this._head=_}},g.prototype.clone=function(){var w=this.toArray();return new(g.bind.apply(g,O([void 0],w)))},g}(D),J=function(p){y(g,p);function g(){for(var w=[],_=0;_<arguments.length;_++)w[_]=arguments[_];var m=p.apply(this,O(w))||this;return m.cyclization(),m}return g.prototype.iterator=function(){var w;return v(this,function(_){switch(_.label){case 0:w=this._head,_.label=1;case 1:return w?[4,w.value]:[3,3];case 2:return _.sent(),w=w.next,w===this._head&&(w=null),[3,1];case 3:return[2]}})},g.prototype.circleIterator=function(){var w;return v(this,function(_){switch(_.label){case 0:w=this._head,_.label=1;case 1:return w?[4,w.value]:[3,3];case 2:return _.sent(),w=w.next,[3,1];case 3:return[2]}})},g.prototype[Symbol.iterator]=function(){return this.iterator()},g.prototype.mapToNormalListFn=function(w){for(var _=[],m=1;m<arguments.length;m++)_[m-1]=arguments[m];this.breakCircle();var C=p.prototype[w].apply(this,_);return this.cyclization(),C},g.prototype.getNode=function(w){return this.mapToNormalListFn("getNode",w)},g.prototype.append=function(w){return this.mapToNormalListFn("append",w)},g.prototype.prepend=function(w){return this.mapToNormalListFn("prepend",w)},g.prototype.find=function(w){return this.mapToNormalListFn("find",w)},g.prototype.indexOf=function(w){return this.mapToNormalListFn("indexOf",w)},g.prototype.remove=function(w){return this.mapToNormalListFn("remove",w)},g.prototype.removeHead=function(){return this.mapToNormalListFn("removeHead")},g.prototype.removeTail=function(){return this.mapToNormalListFn("removeTail")},g.prototype.first=function(w){j(w>=0,"[linked-list] param 'num' ("+w+") should not less than 0");for(var _=this.circleIterator(),m=[],C=0;C<w;C++){var N=_.next();m.push(N.value)}return m},g.prototype.toArray=function(){return this.mapToNormalListFn("toArray")},g.prototype.reverse=function(){return this.mapToNormalListFn("reverse")},g}(G),x=function(p){y(g,p);function g(){for(var w=[],_=0;_<arguments.length;_++)w[_]=arguments[_];var m=p.apply(this,O(w))||this;return m.cyclization(),m}return g.prototype.breakCircle=function(){this._tail&&this._head&&this._tail.next===this._head&&(this._tail.next=null,this._head.prev=null)},g.prototype.cyclization=function(){this._head&&this._tail&&this._tail.next===null&&(this._tail.next=this._head,this._head.prev=this._tail)},g.prototype.clone=function(){var w=this.toArray();return new(g.bind.apply(g,O([void 0],w)))},g}(J);function I(p,g){var w=typeof Symbol=="function"&&p[Symbol.iterator];if(!w)return p;var _=w.call(p),m,C=[],N;try{for(;(g===void 0||g-- >0)&&!(m=_.next()).done;)C.push(m.value)}catch(R){N={error:R}}finally{try{m&&!m.done&&(w=_.return)&&w.call(_)}finally{if(N)throw N.error}}return C}function A(){for(var p=[],g=0;g<arguments.length;g++)p=p.concat(I(arguments[g]));return p}var M=function(){function p(){for(var g=[],w=0;w<arguments.length;w++)g[w]=arguments[w];this.queue=new(q.bind.apply(q,A([void 0],g)))}return Object.defineProperty(p.prototype,"length",{get:function(){return this.queue.length},enumerable:!0,configurable:!0}),Object.defineProperty(p.prototype,"peek",{get:function(){return this.queue.head},enumerable:!0,configurable:!0}),p.prototype.isEmpty=function(){return this.queue.isEmpty()},p.prototype.enqueue=function(g){return this.queue.append(g)},p.prototype.dequeue=function(){var g=this.queue.removeHead();return typeof g<"u"?g:void 0},p.prototype.toArray=function(){return this.queue.toArray()},p}();function k(p,g){var w=typeof Symbol=="function"&&p[Symbol.iterator];if(!w)return p;var _=w.call(p),m,C=[],N;try{for(;(g===void 0||g-- >0)&&!(m=_.next()).done;)C.push(m.value)}catch(R){N={error:R}}finally{try{m&&!m.done&&(w=_.return)&&w.call(_)}finally{if(N)throw N.error}}return C}function S(){for(var p=[],g=0;g<arguments.length;g++)p=p.concat(k(arguments[g]));return p}var c=function(){function p(){for(var g=[],w=0;w<arguments.length;w++)g[w]=arguments[w];this.stack=new(q.bind.apply(q,S([void 0],g)))}return Object.defineProperty(p.prototype,"length",{get:function(){return this.stack.length},enumerable:!0,configurable:!0}),Object.defineProperty(p.prototype,"peek",{get:function(){return this.stack.tail},enumerable:!0,configurable:!0}),p.prototype.isEmpty=function(){return this.stack.isEmpty()},p.prototype.push=function(g){return this.stack.append(g)},p.prototype.pop=function(){var g=this.stack.removeTail();return typeof g<"u"?g:void 0},p.prototype.popBottom=function(){var g=this.stack.removeHead();return typeof g<"u"?g:void 0},p.prototype.toArray=function(){return this.stack.toArray()},p}();function d(p,g,w,_){if(p){g.push(p),_.set(p.getKey(),!0);var m=p.getNeighbors().filter(function(C){return!_.get(C.getKey())});w.push(m)}}function f(p,g,w){var _=p.pop();_&&w.set(_.getKey(),!1),g.pop()}var b=function(){function p(g){g===void 0&&(g=!1),this.vertices={},this.edges={},this.isDirected=g}return p.prototype.addVertex=function(g){return this.vertices[g.getKey()]=g,this},p.prototype.getVertexByKey=function(g){return this.vertices[g]},p.prototype.getNeighbors=function(g){return g.getNeighbors()},p.prototype.getAllVertices=function(){return Object.values(this.vertices)},p.prototype.getAllEdges=function(){return Object.values(this.edges)},p.prototype.addEdge=function(g,w){if(w===void 0&&(w=!1),this.edges[g.getKey()]){if(w)return this;n(!1,"Edge has already been added before")}var _=this.getVertexByKey(g.startVertex.getKey()),m=this.getVertexByKey(g.endVertex.getKey());if(_||(this.addVertex(g.startVertex),_=this.getVertexByKey(g.startVertex.getKey())),m||(this.addVertex(g.endVertex),m=this.getVertexByKey(g.endVertex.getKey())),this.edges[g.getKey()]=g,this.isDirected)_.addEdge(g);else{_.addEdge(g);var C=g.clone();m.addEdge(C.reverse())}return this},p.prototype.deleteEdge=function(g,w){if(w===void 0&&(w=!1),!this.edges[g.getKey()]){if(w)return this;n(!1,"Edge not found in graph")}delete this.edges[g.getKey()];var _=this.getVertexByKey(g.startVertex.getKey()),m=this.getVertexByKey(g.endVertex.getKey());return _.deleteEdge(g),m.deleteEdge(g),this},p.prototype.findEdge=function(g,w){var _=this.getVertexByKey(g.getKey());return _?_.findEdge(w):null},p.prototype.getWeight=function(){return this.getAllEdges().reduce(function(g,w){return g+w.weight},0)},p.prototype.reverse=function(){var g=this;return this.getAllEdges().forEach(function(w){g.deleteEdge(w),w.reverse(),g.addEdge(w)}),this},p.prototype.getVerticesIndices=function(){var g={};return this.getAllVertices().forEach(function(w,_){g[w.getKey()]=_}),g},p.prototype.getAdjacencyMatrix=function(){var g=this,w=this.getAllVertices(),_=this.getVerticesIndices(),m=Array(w.length).fill(null).map(function(){return Array(w.length).fill(1/0)});return w.forEach(function(C,N){C.getNeighbors().forEach(function(R){var $=_[R.getKey()],L=g.findEdge(C,R);L&&(m[N][$]=L.weight)})}),m},p.prototype.toString=function(){return Object.keys(this.vertices).toString()},p.prototype.bfs=function(g){var w,_,m;return e.__generator(this,function(C){switch(C.label){case 0:w=new Map,_=new M,_.enqueue(g),C.label=1;case 1:return _.isEmpty()?[3,4]:(m=_.dequeue(),m&&!w.has(m.getKey())?[4,m]:[3,3]);case 2:C.sent(),w.set(m.getKey(),m),m.getNeighbors().forEach(function(N){return _.enqueue(N)}),C.label=3;case 3:return[3,1];case 4:return[2]}})},p.prototype.dfs=function(g){var w,_,m;return e.__generator(this,function(C){switch(C.label){case 0:w=new Map,_=new c,_.push(g),C.label=1;case 1:return _.isEmpty()?[3,4]:(m=_.pop(),m&&!w.has(m.getKey())?[4,m]:[3,3]);case 2:C.sent(),w.set(m.getKey(),m),m.getNeighbors().forEach(function(N){return _.push(N)}),C.label=3;case 3:return[3,1];case 4:return[2]}})},p.prototype.findAllPath=function(g,w){var _,m,C,N,R,$,L;return e.__generator(this,function(H){switch(H.label){case 0:return _=[],g!==w?[3,2]:(_.push(g),[4,_]);case 1:return H.sent(),[2];case 2:m=new Map,C=new c,N=new c,d(g,C,N,m),H.label=3;case 3:if(C.isEmpty())return[3,6];if(R=N.pop(),R&&R.length)$=R.shift(),N.push(R),$&&d($,C,N,m);else return N.push(R),f(C,N,m),[3,3];return L=C.peek,L!==w?[3,5]:[4,C.toArray()];case 4:H.sent(),f(C,N,m),H.label=5;case 5:return[3,3];case 6:return[2]}})},p}();t.GraphEdge=i,t.GraphVertex=o,t.Graph=b,Object.defineProperty(t,"__esModule",{value:!0})})});var Vp=Ln((hu,pu)=>{"use strict";(function(t,e){typeof hu=="object"&&typeof pu<"u"?pu.exports=e():typeof define=="function"&&define.amd?define(e):(t=t||self,t.JSBI=e())})(hu,function(){"use strict";var t=Math.imul,e=Math.clz32;function i(x){"@babel/helpers - typeof";return i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(I){return typeof I}:function(I){return I&&typeof Symbol=="function"&&I.constructor===Symbol&&I!==Symbol.prototype?"symbol":typeof I},i(x)}function n(x,I){if(!(x instanceof I))throw new TypeError("Cannot call a class as a function")}function r(x,I){for(var A,M=0;M<I.length;M++)A=I[M],A.enumerable=A.enumerable||!1,A.configurable=!0,"value"in A&&(A.writable=!0),Object.defineProperty(x,A.key,A)}function o(x,I,A){return I&&r(x.prototype,I),A&&r(x,A),Object.defineProperty(x,"prototype",{writable:!1}),x}function s(x,I){if(typeof I!="function"&&I!==null)throw new TypeError("Super expression must either be null or a function");x.prototype=Object.create(I&&I.prototype,{constructor:{value:x,writable:!0,configurable:!0}}),Object.defineProperty(x,"prototype",{writable:!1}),I&&l(x,I)}function a(x){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(I){return I.__proto__||Object.getPrototypeOf(I)},a(x)}function l(x,I){return l=Object.setPrototypeOf||function(A,M){return A.__proto__=M,A},l(x,I)}function u(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function h(){return h=u()?Reflect.construct:function(x,I,A){var M=[null];M.push.apply(M,I);var k=Function.bind.apply(x,M),S=new k;return A&&l(S,A.prototype),S},h.apply(null,arguments)}function y(x){return Function.toString.call(x).indexOf("[native code]")!==-1}function v(x){var I=typeof Map=="function"?new Map:void 0;return v=function(A){function M(){return h(A,arguments,a(this).constructor)}if(A===null||!y(A))return A;if(typeof A!="function")throw new TypeError("Super expression must either be null or a function");if(typeof I<"u"){if(I.has(A))return I.get(A);I.set(A,M)}return M.prototype=Object.create(A.prototype,{constructor:{value:M,enumerable:!1,writable:!0,configurable:!0}}),l(M,A)},v(x)}function T(x){if(x===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return x}function O(x,I){if(I&&(typeof I=="object"||typeof I=="function"))return I;if(I!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return T(x)}function P(x){var I=u();return function(){var A,M=a(x);if(I){var k=a(this).constructor;A=Reflect.construct(M,arguments,k)}else A=M.apply(this,arguments);return O(this,A)}}function j(x,I){return B(x)||D(x,I)||q(x,I)||Z()}function B(x){if(Array.isArray(x))return x}function D(x,I){var A=x==null?null:typeof Symbol<"u"&&x[Symbol.iterator]||x["@@iterator"];if(A!=null){var M,k,S=[],c=!0,d=!1;try{for(A=A.call(x);!(c=(M=A.next()).done)&&(S.push(M.value),!(I&&S.length===I));c=!0);}catch(f){d=!0,k=f}finally{try{c||A.return==null||A.return()}finally{if(d)throw k}}return S}}function q(x,I){if(x){if(typeof x=="string")return K(x,I);var A=Object.prototype.toString.call(x).slice(8,-1);return A==="Object"&&x.constructor&&(A=x.constructor.name),A==="Map"||A==="Set"?Array.from(x):A==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(A)?K(x,I):void 0}}function K(x,I){(I==null||I>x.length)&&(I=x.length);for(var A=0,M=Array(I);A<I;A++)M[A]=x[A];return M}function Z(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
2
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function G(x,I){var A=typeof Symbol<"u"&&x[Symbol.iterator]||x["@@iterator"];if(!A){if(Array.isArray(x)||(A=q(x))||I&&x&&typeof x.length=="number"){A&&(x=A);var M=0,k=function(){};return{s:k,n:function(){return M>=x.length?{done:!0}:{done:!1,value:x[M++]}},e:function(f){throw f},f:k}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
3
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var S,c=!0,d=!1;return{s:function(){A=A.call(x)},n:function(){var f=A.next();return c=f.done,f},e:function(f){d=!0,S=f},f:function(){try{c||A.return==null||A.return()}finally{if(d)throw S}}}}var J=function(x){var I=Math.abs,A=Math.max,M=Math.floor;function k(c,d){var f;if(n(this,k),f=S.call(this,c),f.sign=d,Object.setPrototypeOf(T(f),k.prototype),c>k.__kMaxLength)throw new RangeError("Maximum BigInt size exceeded");return f}s(k,x);var S=P(k);return o(k,[{key:"toDebugString",value:function(){var c,d=["BigInt["],f=G(this);try{for(f.s();!(c=f.n()).done;){var b=c.value;d.push((b&&(b>>>0).toString(16))+", ")}}catch(p){f.e(p)}finally{f.f()}return d.push("]"),d.join("")}},{key:"toString",value:function(){var c=0<arguments.length&&arguments[0]!==void 0?arguments[0]:10;if(2>c||36<c)throw new RangeError("toString() radix argument must be between 2 and 36");return this.length===0?"0":c&c-1?k.__toStringGeneric(this,c,!1):k.__toStringBasePowerOfTwo(this,c)}},{key:"valueOf",value:function(){throw new Error("Convert JSBI instances to native numbers using `toNumber`.")}},{key:"__copy",value:function(){for(var c=new k(this.length,this.sign),d=0;d<this.length;d++)c[d]=this[d];return c}},{key:"__trim",value:function(){for(var c=this.length,d=this[c-1];d===0;)c--,d=this[c-1],this.pop();return c===0&&(this.sign=!1),this}},{key:"__initializeDigits",value:function(){for(var c=0;c<this.length;c++)this[c]=0}},{key:"__clzmsd",value:function(){return k.__clz30(this.__digit(this.length-1))}},{key:"__inplaceMultiplyAdd",value:function(c,d,f){f>this.length&&(f=this.length);for(var b=32767&c,p=c>>>15,g=0,w=d,_=0;_<f;_++){var m=this.__digit(_),C=32767&m,N=m>>>15,R=k.__imul(C,b),$=k.__imul(C,p),L=k.__imul(N,b),H=k.__imul(N,p),ee=w+R+g;g=ee>>>30,ee&=1073741823,ee+=((32767&$)<<15)+((32767&L)<<15),g+=ee>>>30,w=H+($>>>15)+(L>>>15),this.__setDigit(_,1073741823&ee)}if(g!==0||w!==0)throw new Error("implementation bug")}},{key:"__inplaceAdd",value:function(c,d,f){for(var b,p=0,g=0;g<f;g++)b=this.__halfDigit(d+g)+c.__halfDigit(g)+p,p=b>>>15,this.__setHalfDigit(d+g,32767&b);return p}},{key:"__inplaceSub",value:function(c,d,f){var b=0;if(1&d){d>>=1;for(var p=this.__digit(d),g=32767&p,w=0;w<f-1>>>1;w++){var _=c.__digit(w),m=(p>>>15)-(32767&_)-b;b=1&m>>>15,this.__setDigit(d+w,(32767&m)<<15|32767&g),p=this.__digit(d+w+1),g=(32767&p)-(_>>>15)-b,b=1&g>>>15}var C=c.__digit(w),N=(p>>>15)-(32767&C)-b;if(b=1&N>>>15,this.__setDigit(d+w,(32767&N)<<15|32767&g),d+w+1>=this.length)throw new RangeError("out of bounds");!(1&f)&&(p=this.__digit(d+w+1),g=(32767&p)-(C>>>15)-b,b=1&g>>>15,this.__setDigit(d+c.length,1073709056&p|32767&g))}else{d>>=1;for(var R=0;R<c.length-1;R++){var $=this.__digit(d+R),L=c.__digit(R),H=(32767&$)-(32767&L)-b;b=1&H>>>15;var ee=($>>>15)-(L>>>15)-b;b=1&ee>>>15,this.__setDigit(d+R,(32767&ee)<<15|32767&H)}var ge=this.__digit(d+R),ne=c.__digit(R),me=(32767&ge)-(32767&ne)-b;b=1&me>>>15;var xe=0;!(1&f)&&(xe=(ge>>>15)-(ne>>>15)-b,b=1&xe>>>15),this.__setDigit(d+R,(32767&xe)<<15|32767&me)}return b}},{key:"__inplaceRightShift",value:function(c){if(c!==0){for(var d,f=this.__digit(0)>>>c,b=this.length-1,p=0;p<b;p++)d=this.__digit(p+1),this.__setDigit(p,1073741823&d<<30-c|f),f=d>>>c;this.__setDigit(b,f)}}},{key:"__digit",value:function(c){return this[c]}},{key:"__unsignedDigit",value:function(c){return this[c]>>>0}},{key:"__setDigit",value:function(c,d){this[c]=0|d}},{key:"__setDigitGrow",value:function(c,d){this[c]=0|d}},{key:"__halfDigitLength",value:function(){var c=this.length;return 32767>=this.__unsignedDigit(c-1)?2*c-1:2*c}},{key:"__halfDigit",value:function(c){return 32767&this[c>>>1]>>>15*(1&c)}},{key:"__setHalfDigit",value:function(c,d){var f=c>>>1,b=this.__digit(f),p=1&c?32767&b|d<<15:1073709056&b|32767&d;this.__setDigit(f,p)}}],[{key:"BigInt",value:function(c){var d=Number.isFinite;if(typeof c=="number"){if(c===0)return k.__zero();if(k.__isOneDigitInt(c))return 0>c?k.__oneDigit(-c,!0):k.__oneDigit(c,!1);if(!d(c)||M(c)!==c)throw new RangeError("The number "+c+" cannot be converted to BigInt because it is not an integer");return k.__fromDouble(c)}if(typeof c=="string"){var f=k.__fromString(c);if(f===null)throw new SyntaxError("Cannot convert "+c+" to a BigInt");return f}if(typeof c=="boolean")return c===!0?k.__oneDigit(1,!1):k.__zero();if(i(c)==="object"){if(c.constructor===k)return c;var b=k.__toPrimitive(c);return k.BigInt(b)}throw new TypeError("Cannot convert "+c+" to a BigInt")}},{key:"toNumber",value:function(c){var d=c.length;if(d===0)return 0;if(d===1){var f=c.__unsignedDigit(0);return c.sign?-f:f}var b=c.__digit(d-1),p=k.__clz30(b),g=30*d-p;if(1024<g)return c.sign?-1/0:1/0;var w=g-1,_=b,m=d-1,C=p+3,N=C===32?0:_<<C;N>>>=12;var R=C-12,$=12<=C?0:_<<20+C,L=20+C;for(0<R&&0<m&&(m--,_=c.__digit(m),N|=_>>>30-R,$=_<<R+2,L=R+2);0<L&&0<m;)m--,_=c.__digit(m),$|=30<=L?_<<L-30:_>>>30-L,L-=30;var H=k.__decideRounding(c,L,m,_);if((H===1||H===0&&(1&$)==1)&&($=$+1>>>0,$===0&&(N++,N>>>20!=0&&(N=0,w++,1023<w))))return c.sign?-1/0:1/0;var ee=c.sign?-2147483648:0;return w=w+1023<<20,k.__kBitConversionInts[1]=ee|w|N,k.__kBitConversionInts[0]=$,k.__kBitConversionDouble[0]}},{key:"unaryMinus",value:function(c){if(c.length===0)return c;var d=c.__copy();return d.sign=!c.sign,d}},{key:"bitwiseNot",value:function(c){return c.sign?k.__absoluteSubOne(c).__trim():k.__absoluteAddOne(c,!0)}},{key:"exponentiate",value:function(c,d){if(d.sign)throw new RangeError("Exponent must be positive");if(d.length===0)return k.__oneDigit(1,!1);if(c.length===0)return c;if(c.length===1&&c.__digit(0)===1)return c.sign&&!(1&d.__digit(0))?k.unaryMinus(c):c;if(1<d.length)throw new RangeError("BigInt too big");var f=d.__unsignedDigit(0);if(f===1)return c;if(f>=k.__kMaxLengthBits)throw new RangeError("BigInt too big");if(c.length===1&&c.__digit(0)===2){var b=1+(0|f/30),p=c.sign&&(1&f)!=0,g=new k(b,p);g.__initializeDigits();var w=1<<f%30;return g.__setDigit(b-1,w),g}var _=null,m=c;for(1&f&&(_=c),f>>=1;f!==0;f>>=1)m=k.multiply(m,m),1&f&&(_===null?_=m:_=k.multiply(_,m));return _}},{key:"multiply",value:function(c,d){if(c.length===0)return c;if(d.length===0)return d;var f=c.length+d.length;30<=c.__clzmsd()+d.__clzmsd()&&f--;var b=new k(f,c.sign!==d.sign);b.__initializeDigits();for(var p=0;p<c.length;p++)k.__multiplyAccumulate(d,c.__digit(p),b,p);return b.__trim()}},{key:"divide",value:function(c,d){if(d.length===0)throw new RangeError("Division by zero");if(0>k.__absoluteCompare(c,d))return k.__zero();var f,b=c.sign!==d.sign,p=d.__unsignedDigit(0);if(d.length===1&&32767>=p){if(p===1)return b===c.sign?c:k.unaryMinus(c);f=k.__absoluteDivSmall(c,p,null)}else f=k.__absoluteDivLarge(c,d,!0,!1);return f.sign=b,f.__trim()}},{key:"remainder",value:function(d,f){if(f.length===0)throw new RangeError("Division by zero");if(0>k.__absoluteCompare(d,f))return d;var b=f.__unsignedDigit(0);if(f.length===1&&32767>=b){if(b===1)return k.__zero();var p=k.__absoluteModSmall(d,b);return p===0?k.__zero():k.__oneDigit(p,d.sign)}var g=k.__absoluteDivLarge(d,f,!1,!0);return g.sign=d.sign,g.__trim()}},{key:"add",value:function(c,d){var f=c.sign;return f===d.sign?k.__absoluteAdd(c,d,f):0<=k.__absoluteCompare(c,d)?k.__absoluteSub(c,d,f):k.__absoluteSub(d,c,!f)}},{key:"subtract",value:function(c,d){var f=c.sign;return f===d.sign?0<=k.__absoluteCompare(c,d)?k.__absoluteSub(c,d,f):k.__absoluteSub(d,c,!f):k.__absoluteAdd(c,d,f)}},{key:"leftShift",value:function(c,d){return d.length===0||c.length===0?c:d.sign?k.__rightShiftByAbsolute(c,d):k.__leftShiftByAbsolute(c,d)}},{key:"signedRightShift",value:function(c,d){return d.length===0||c.length===0?c:d.sign?k.__leftShiftByAbsolute(c,d):k.__rightShiftByAbsolute(c,d)}},{key:"unsignedRightShift",value:function(){throw new TypeError("BigInts have no unsigned right shift; use >> instead")}},{key:"lessThan",value:function(c,d){return 0>k.__compareToBigInt(c,d)}},{key:"lessThanOrEqual",value:function(c,d){return 0>=k.__compareToBigInt(c,d)}},{key:"greaterThan",value:function(c,d){return 0<k.__compareToBigInt(c,d)}},{key:"greaterThanOrEqual",value:function(c,d){return 0<=k.__compareToBigInt(c,d)}},{key:"equal",value:function(c,d){if(c.sign!==d.sign||c.length!==d.length)return!1;for(var f=0;f<c.length;f++)if(c.__digit(f)!==d.__digit(f))return!1;return!0}},{key:"notEqual",value:function(c,d){return!k.equal(c,d)}},{key:"bitwiseAnd",value:function(c,d){if(!c.sign&&!d.sign)return k.__absoluteAnd(c,d).__trim();if(c.sign&&d.sign){var f=A(c.length,d.length)+1,b=k.__absoluteSubOne(c,f),p=k.__absoluteSubOne(d);return b=k.__absoluteOr(b,p,b),k.__absoluteAddOne(b,!0,b).__trim()}if(c.sign){var g=[d,c];c=g[0],d=g[1]}return k.__absoluteAndNot(c,k.__absoluteSubOne(d)).__trim()}},{key:"bitwiseXor",value:function(c,d){if(!c.sign&&!d.sign)return k.__absoluteXor(c,d).__trim();if(c.sign&&d.sign){var f=A(c.length,d.length),b=k.__absoluteSubOne(c,f),p=k.__absoluteSubOne(d);return k.__absoluteXor(b,p,b).__trim()}var g=A(c.length,d.length)+1;if(c.sign){var w=[d,c];c=w[0],d=w[1]}var _=k.__absoluteSubOne(d,g);return _=k.__absoluteXor(_,c,_),k.__absoluteAddOne(_,!0,_).__trim()}},{key:"bitwiseOr",value:function(c,d){var f=A(c.length,d.length);if(!c.sign&&!d.sign)return k.__absoluteOr(c,d).__trim();if(c.sign&&d.sign){var b=k.__absoluteSubOne(c,f),p=k.__absoluteSubOne(d);return b=k.__absoluteAnd(b,p,b),k.__absoluteAddOne(b,!0,b).__trim()}if(c.sign){var g=[d,c];c=g[0],d=g[1]}var w=k.__absoluteSubOne(d,f);return w=k.__absoluteAndNot(w,c,w),k.__absoluteAddOne(w,!0,w).__trim()}},{key:"asIntN",value:function(c,d){if(d.length===0)return d;if(c=M(c),0>c)throw new RangeError("Invalid value: not (convertible to) a safe integer");if(c===0)return k.__zero();if(c>=k.__kMaxLengthBits)return d;var f=0|(c+29)/30;if(d.length<f)return d;var b=d.__unsignedDigit(f-1),p=1<<(c-1)%30;if(d.length===f&&b<p)return d;if((b&p)!==p)return k.__truncateToNBits(c,d);if(!d.sign)return k.__truncateAndSubFromPowerOfTwo(c,d,!0);if(!(b&p-1)){for(var g=f-2;0<=g;g--)if(d.__digit(g)!==0)return k.__truncateAndSubFromPowerOfTwo(c,d,!1);return d.length===f&&b===p?d:k.__truncateToNBits(c,d)}return k.__truncateAndSubFromPowerOfTwo(c,d,!1)}},{key:"asUintN",value:function(c,d){if(d.length===0)return d;if(c=M(c),0>c)throw new RangeError("Invalid value: not (convertible to) a safe integer");if(c===0)return k.__zero();if(d.sign){if(c>k.__kMaxLengthBits)throw new RangeError("BigInt too big");return k.__truncateAndSubFromPowerOfTwo(c,d,!1)}if(c>=k.__kMaxLengthBits)return d;var f=0|(c+29)/30;if(d.length<f)return d;var b=c%30;if(d.length==f){if(b===0)return d;var p=d.__digit(f-1);if(!(p>>>b))return d}return k.__truncateToNBits(c,d)}},{key:"ADD",value:function(c,d){if(c=k.__toPrimitive(c),d=k.__toPrimitive(d),typeof c=="string")return typeof d!="string"&&(d=d.toString()),c+d;if(typeof d=="string")return c.toString()+d;if(c=k.__toNumeric(c),d=k.__toNumeric(d),k.__isBigInt(c)&&k.__isBigInt(d))return k.add(c,d);if(typeof c=="number"&&typeof d=="number")return c+d;throw new TypeError("Cannot mix BigInt and other types, use explicit conversions")}},{key:"LT",value:function(c,d){return k.__compare(c,d,0)}},{key:"LE",value:function(c,d){return k.__compare(c,d,1)}},{key:"GT",value:function(c,d){return k.__compare(c,d,2)}},{key:"GE",value:function(c,d){return k.__compare(c,d,3)}},{key:"EQ",value:function(c,d){for(;;){if(k.__isBigInt(c))return k.__isBigInt(d)?k.equal(c,d):k.EQ(d,c);if(typeof c=="number"){if(k.__isBigInt(d))return k.__equalToNumber(d,c);if(i(d)!=="object")return c==d;d=k.__toPrimitive(d)}else if(typeof c=="string"){if(k.__isBigInt(d))return c=k.__fromString(c),c!==null&&k.equal(c,d);if(i(d)!=="object")return c==d;d=k.__toPrimitive(d)}else if(typeof c=="boolean"){if(k.__isBigInt(d))return k.__equalToNumber(d,+c);if(i(d)!=="object")return c==d;d=k.__toPrimitive(d)}else if(i(c)==="symbol"){if(k.__isBigInt(d))return!1;if(i(d)!=="object")return c==d;d=k.__toPrimitive(d)}else if(i(c)==="object"){if(i(d)==="object"&&d.constructor!==k)return c==d;c=k.__toPrimitive(c)}else return c==d}}},{key:"NE",value:function(c,d){return!k.EQ(c,d)}},{key:"DataViewGetBigInt64",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0&&arguments[2];return k.asIntN(64,k.DataViewGetBigUint64(c,d,f))}},{key:"DataViewGetBigUint64",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0&&arguments[2],b=f?[4,0]:[0,4],p=j(b,2),g=p[0],w=p[1],_=c.getUint32(d+g,f),m=c.getUint32(d+w,f),C=new k(3,!1);return C.__setDigit(0,1073741823&m),C.__setDigit(1,(268435455&_)<<2|m>>>30),C.__setDigit(2,_>>>28),C.__trim()}},{key:"DataViewSetBigInt64",value:function(c,d,f){var b=3<arguments.length&&arguments[3]!==void 0&&arguments[3];k.DataViewSetBigUint64(c,d,f,b)}},{key:"DataViewSetBigUint64",value:function(c,d,f){var b=3<arguments.length&&arguments[3]!==void 0&&arguments[3];f=k.asUintN(64,f);var p=0,g=0;if(0<f.length&&(g=f.__digit(0),1<f.length)){var w=f.__digit(1);g|=w<<30,p=w>>>2,2<f.length&&(p|=f.__digit(2)<<28)}var _=b?[4,0]:[0,4],m=j(_,2),C=m[0],N=m[1];c.setUint32(d+C,p,b),c.setUint32(d+N,g,b)}},{key:"__zero",value:function(){return new k(0,!1)}},{key:"__oneDigit",value:function(c,d){var f=new k(1,d);return f.__setDigit(0,c),f}},{key:"__decideRounding",value:function(c,d,f,b){if(0<d)return-1;var p;if(0>d)p=-d-1;else{if(f===0)return-1;f--,b=c.__digit(f),p=29}var g=1<<p;if(!(b&g))return-1;if(g-=1,(b&g)!=0)return 1;for(;0<f;)if(f--,c.__digit(f)!==0)return 1;return 0}},{key:"__fromDouble",value:function(c){k.__kBitConversionDouble[0]=c;var d,f=2047&k.__kBitConversionInts[1]>>>20,b=f-1023,p=(0|b/30)+1,g=new k(p,0>c),w=1048575&k.__kBitConversionInts[1]|1048576,_=k.__kBitConversionInts[0],m=20,C=b%30,N=0;if(C<m){var R=m-C;N=R+32,d=w>>>R,w=w<<32-R|_>>>R,_<<=32-R}else if(C===m)N=32,d=w,w=_,_=0;else{var $=C-m;N=32-$,d=w<<$|_>>>32-$,w=_<<$,_=0}g.__setDigit(p-1,d);for(var L=p-2;0<=L;L--)0<N?(N-=30,d=w>>>2,w=w<<30|_>>>2,_<<=30):d=0,g.__setDigit(L,d);return g.__trim()}},{key:"__isWhitespace",value:function(c){return 13>=c&&9<=c||(159>=c?c==32:131071>=c?c==160||c==5760:196607>=c?(c&=131071,10>=c||c==40||c==41||c==47||c==95||c==4096):c==65279)}},{key:"__fromString",value:function(c){var d=1<arguments.length&&arguments[1]!==void 0?arguments[1]:0,f=0,b=c.length,p=0;if(p===b)return k.__zero();for(var g=c.charCodeAt(p);k.__isWhitespace(g);){if(++p===b)return k.__zero();g=c.charCodeAt(p)}if(g===43){if(++p===b)return null;g=c.charCodeAt(p),f=1}else if(g===45){if(++p===b)return null;g=c.charCodeAt(p),f=-1}if(d===0){if(d=10,g===48){if(++p===b)return k.__zero();if(g=c.charCodeAt(p),g===88||g===120){if(d=16,++p===b)return null;g=c.charCodeAt(p)}else if(g===79||g===111){if(d=8,++p===b)return null;g=c.charCodeAt(p)}else if(g===66||g===98){if(d=2,++p===b)return null;g=c.charCodeAt(p)}}}else if(d===16&&g===48){if(++p===b)return k.__zero();if(g=c.charCodeAt(p),g===88||g===120){if(++p===b)return null;g=c.charCodeAt(p)}}if(f!==0&&d!==10)return null;for(;g===48;){if(++p===b)return k.__zero();g=c.charCodeAt(p)}var w=b-p,_=k.__kMaxBitsPerChar[d],m=k.__kBitsPerCharTableMultiplier-1;if(w>1073741824/_)return null;var C=_*w+m>>>k.__kBitsPerCharTableShift,N=new k(0|(C+29)/30,!1),R=10>d?d:10,$=10<d?d-10:0;if(d&d-1){N.__initializeDigits();var xe=!1,_e=0;do{for(var he,fr=0,qe=1;;){if(he=void 0,g-48>>>0<R)he=g-48;else if((32|g)-97>>>0<$)he=(32|g)-87;else{xe=!0;break}var Le=qe*d;if(1073741823<Le)break;if(qe=Le,fr=fr*d+he,_e++,++p===b){xe=!0;break}g=c.charCodeAt(p)}m=30*k.__kBitsPerCharTableMultiplier-1;var _s=0|(_*_e+m>>>k.__kBitsPerCharTableShift)/30;N.__inplaceMultiplyAdd(qe,fr,_s)}while(!xe)}else{_>>=k.__kBitsPerCharTableShift;var L=[],H=[],ee=!1;do{for(var ge,ne=0,me=0;;){if(ge=void 0,g-48>>>0<R)ge=g-48;else if((32|g)-97>>>0<$)ge=(32|g)-87;else{ee=!0;break}if(me+=_,ne=ne<<_|ge,++p===b){ee=!0;break}if(g=c.charCodeAt(p),30<me+_)break}L.push(ne),H.push(me)}while(!ee);k.__fillFromParts(N,L,H)}if(p!==b){if(!k.__isWhitespace(g))return null;for(p++;p<b;p++)if(g=c.charCodeAt(p),!k.__isWhitespace(g))return null}return N.sign=f===-1,N.__trim()}},{key:"__fillFromParts",value:function(c,d,f){for(var b=0,p=0,g=0,w=d.length-1;0<=w;w--){var _=d[w],m=f[w];p|=_<<g,g+=m,g===30?(c.__setDigit(b++,p),g=0,p=0):30<g&&(c.__setDigit(b++,1073741823&p),g-=30,p=_>>>m-g)}if(p!==0){if(b>=c.length)throw new Error("implementation bug");c.__setDigit(b++,p)}for(;b<c.length;b++)c.__setDigit(b,0)}},{key:"__toStringBasePowerOfTwo",value:function(c,d){var f=c.length,b=d-1;b=(85&b>>>1)+(85&b),b=(51&b>>>2)+(51&b),b=(15&b>>>4)+(15&b);var p=b,g=d-1,w=c.__digit(f-1),_=k.__clz30(w),m=0|(30*f-_+p-1)/p;if(c.sign&&m++,268435456<m)throw new Error("string too long");for(var C=Array(m),N=m-1,R=0,$=0,L=0;L<f-1;L++){var H=c.__digit(L),ee=(R|H<<$)&g;C[N--]=k.__kConversionChars[ee];var ge=p-$;for(R=H>>>ge,$=30-ge;$>=p;)C[N--]=k.__kConversionChars[R&g],R>>>=p,$-=p}var ne=(R|w<<$)&g;for(C[N--]=k.__kConversionChars[ne],R=w>>>p-$;R!==0;)C[N--]=k.__kConversionChars[R&g],R>>>=p;if(c.sign&&(C[N--]="-"),N!==-1)throw new Error("implementation bug");return C.join("")}},{key:"__toStringGeneric",value:function(c,d,f){var b=c.length;if(b===0)return"";if(b===1){var p=c.__unsignedDigit(0).toString(d);return f===!1&&c.sign&&(p="-"+p),p}var g=30*b-k.__clz30(c.__digit(b-1)),w=k.__kMaxBitsPerChar[d],_=w-1,m=g*k.__kBitsPerCharTableMultiplier;m+=_-1,m=0|m/_;var C,N,R=m+1>>1,$=k.exponentiate(k.__oneDigit(d,!1),k.__oneDigit(R,!1)),L=$.__unsignedDigit(0);if($.length===1&&32767>=L){C=new k(c.length,!1),C.__initializeDigits();for(var H,ee=0,ge=2*c.length-1;0<=ge;ge--)H=ee<<15|c.__halfDigit(ge),C.__setHalfDigit(ge,0|H/L),ee=0|H%L;N=ee.toString(d)}else{var ne=k.__absoluteDivLarge(c,$,!0,!0);C=ne.quotient;var me=ne.remainder.__trim();N=k.__toStringGeneric(me,d,!0)}C.__trim();for(var xe=k.__toStringGeneric(C,d,!0);N.length<R;)N="0"+N;return f===!1&&c.sign&&(xe="-"+xe),xe+N}},{key:"__unequalSign",value:function(c){return c?-1:1}},{key:"__absoluteGreater",value:function(c){return c?-1:1}},{key:"__absoluteLess",value:function(c){return c?1:-1}},{key:"__compareToBigInt",value:function(c,d){var f=c.sign;if(f!==d.sign)return k.__unequalSign(f);var b=k.__absoluteCompare(c,d);return 0<b?k.__absoluteGreater(f):0>b?k.__absoluteLess(f):0}},{key:"__compareToNumber",value:function(c,d){if(k.__isOneDigitInt(d)){var f=c.sign,b=0>d;if(f!==b)return k.__unequalSign(f);if(c.length===0){if(b)throw new Error("implementation bug");return d===0?0:-1}if(1<c.length)return k.__absoluteGreater(f);var p=I(d),g=c.__unsignedDigit(0);return g>p?k.__absoluteGreater(f):g<p?k.__absoluteLess(f):0}return k.__compareToDouble(c,d)}},{key:"__compareToDouble",value:function(c,d){if(d!==d)return d;if(d===1/0)return-1;if(d===-1/0)return 1;var f=c.sign;if(f!==0>d)return k.__unequalSign(f);if(d===0)throw new Error("implementation bug: should be handled elsewhere");if(c.length===0)return-1;k.__kBitConversionDouble[0]=d;var b=2047&k.__kBitConversionInts[1]>>>20;if(b==2047)throw new Error("implementation bug: handled elsewhere");var p=b-1023;if(0>p)return k.__absoluteGreater(f);var g=c.length,w=c.__digit(g-1),_=k.__clz30(w),m=30*g-_,C=p+1;if(m<C)return k.__absoluteLess(f);if(m>C)return k.__absoluteGreater(f);var N=1048576|1048575&k.__kBitConversionInts[1],R=k.__kBitConversionInts[0],$=20,L=29-_;if(L!==(0|(m-1)%30))throw new Error("implementation bug");var H,ee=0;if(L<$){var ge=$-L;ee=ge+32,H=N>>>ge,N=N<<32-ge|R>>>ge,R<<=32-ge}else if(L===$)ee=32,H=N,N=R,R=0;else{var ne=L-$;ee=32-ne,H=N<<ne|R>>>32-ne,N=R<<ne,R=0}if(w>>>=0,H>>>=0,w>H)return k.__absoluteGreater(f);if(w<H)return k.__absoluteLess(f);for(var me=g-2;0<=me;me--){0<ee?(ee-=30,H=N>>>2,N=N<<30|R>>>2,R<<=30):H=0;var xe=c.__unsignedDigit(me);if(xe>H)return k.__absoluteGreater(f);if(xe<H)return k.__absoluteLess(f)}if(N!==0||R!==0){if(ee===0)throw new Error("implementation bug");return k.__absoluteLess(f)}return 0}},{key:"__equalToNumber",value:function(c,d){return k.__isOneDigitInt(d)?d===0?c.length===0:c.length===1&&c.sign===0>d&&c.__unsignedDigit(0)===I(d):k.__compareToDouble(c,d)===0}},{key:"__comparisonResultToBool",value:function(c,d){return d===0?0>c:d===1?0>=c:d===2?0<c:d===3?0<=c:void 0}},{key:"__compare",value:function(c,d,f){if(c=k.__toPrimitive(c),d=k.__toPrimitive(d),typeof c=="string"&&typeof d=="string")switch(f){case 0:return c<d;case 1:return c<=d;case 2:return c>d;case 3:return c>=d}if(k.__isBigInt(c)&&typeof d=="string")return d=k.__fromString(d),d!==null&&k.__comparisonResultToBool(k.__compareToBigInt(c,d),f);if(typeof c=="string"&&k.__isBigInt(d))return c=k.__fromString(c),c!==null&&k.__comparisonResultToBool(k.__compareToBigInt(c,d),f);if(c=k.__toNumeric(c),d=k.__toNumeric(d),k.__isBigInt(c)){if(k.__isBigInt(d))return k.__comparisonResultToBool(k.__compareToBigInt(c,d),f);if(typeof d!="number")throw new Error("implementation bug");return k.__comparisonResultToBool(k.__compareToNumber(c,d),f)}if(typeof c!="number")throw new Error("implementation bug");if(k.__isBigInt(d))return k.__comparisonResultToBool(k.__compareToNumber(d,c),2^f);if(typeof d!="number")throw new Error("implementation bug");return f===0?c<d:f===1?c<=d:f===2?c>d:f===3?c>=d:void 0}},{key:"__absoluteAdd",value:function(c,d,f){if(c.length<d.length)return k.__absoluteAdd(d,c,f);if(c.length===0)return c;if(d.length===0)return c.sign===f?c:k.unaryMinus(c);var b=c.length;(c.__clzmsd()===0||d.length===c.length&&d.__clzmsd()===0)&&b++;for(var p,g=new k(b,f),w=0,_=0;_<d.length;_++)p=c.__digit(_)+d.__digit(_)+w,w=p>>>30,g.__setDigit(_,1073741823&p);for(;_<c.length;_++){var m=c.__digit(_)+w;w=m>>>30,g.__setDigit(_,1073741823&m)}return _<g.length&&g.__setDigit(_,w),g.__trim()}},{key:"__absoluteSub",value:function(c,d,f){if(c.length===0)return c;if(d.length===0)return c.sign===f?c:k.unaryMinus(c);for(var b,p=new k(c.length,f),g=0,w=0;w<d.length;w++)b=c.__digit(w)-d.__digit(w)-g,g=1&b>>>30,p.__setDigit(w,1073741823&b);for(;w<c.length;w++){var _=c.__digit(w)-g;g=1&_>>>30,p.__setDigit(w,1073741823&_)}return p.__trim()}},{key:"__absoluteAddOne",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,b=c.length;f===null?f=new k(b,d):f.sign=d;for(var p,g=1,w=0;w<b;w++)p=c.__digit(w)+g,g=p>>>30,f.__setDigit(w,1073741823&p);return g!==0&&f.__setDigitGrow(b,1),f}},{key:"__absoluteSubOne",value:function(c,d){var f=c.length;d=d||f;for(var b,p=new k(d,!1),g=1,w=0;w<f;w++)b=c.__digit(w)-g,g=1&b>>>30,p.__setDigit(w,1073741823&b);if(g!==0)throw new Error("implementation bug");for(var _=f;_<d;_++)p.__setDigit(_,0);return p}},{key:"__absoluteAnd",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,b=c.length,p=d.length,g=p;if(b<p){g=b;var w=c,_=b;c=d,b=p,d=w,p=_}var m=g;f===null?f=new k(m,!1):m=f.length;for(var C=0;C<g;C++)f.__setDigit(C,c.__digit(C)&d.__digit(C));for(;C<m;C++)f.__setDigit(C,0);return f}},{key:"__absoluteAndNot",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,b=c.length,p=d.length,g=p;b<p&&(g=b);var w=b;f===null?f=new k(w,!1):w=f.length;for(var _=0;_<g;_++)f.__setDigit(_,c.__digit(_)&~d.__digit(_));for(;_<b;_++)f.__setDigit(_,c.__digit(_));for(;_<w;_++)f.__setDigit(_,0);return f}},{key:"__absoluteOr",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,b=c.length,p=d.length,g=p;if(b<p){g=b;var w=c,_=b;c=d,b=p,d=w,p=_}var m=b;f===null?f=new k(m,!1):m=f.length;for(var C=0;C<g;C++)f.__setDigit(C,c.__digit(C)|d.__digit(C));for(;C<b;C++)f.__setDigit(C,c.__digit(C));for(;C<m;C++)f.__setDigit(C,0);return f}},{key:"__absoluteXor",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,b=c.length,p=d.length,g=p;if(b<p){g=b;var w=c,_=b;c=d,b=p,d=w,p=_}var m=b;f===null?f=new k(m,!1):m=f.length;for(var C=0;C<g;C++)f.__setDigit(C,c.__digit(C)^d.__digit(C));for(;C<b;C++)f.__setDigit(C,c.__digit(C));for(;C<m;C++)f.__setDigit(C,0);return f}},{key:"__absoluteCompare",value:function(c,d){var f=c.length-d.length;if(f!=0)return f;for(var b=c.length-1;0<=b&&c.__digit(b)===d.__digit(b);)b--;return 0>b?0:c.__unsignedDigit(b)>d.__unsignedDigit(b)?1:-1}},{key:"__multiplyAccumulate",value:function(c,d,f,b){if(d!==0){for(var p=32767&d,g=d>>>15,w=0,_=0,m=0;m<c.length;m++,b++){var C=f.__digit(b),N=c.__digit(m),R=32767&N,$=N>>>15,L=k.__imul(R,p),H=k.__imul(R,g),ee=k.__imul($,p),ge=k.__imul($,g);C+=_+L+w,w=C>>>30,C&=1073741823,C+=((32767&H)<<15)+((32767&ee)<<15),w+=C>>>30,_=ge+(H>>>15)+(ee>>>15),f.__setDigit(b,1073741823&C)}for(;w!==0||_!==0;b++){var ne=f.__digit(b);ne+=w+_,_=0,w=ne>>>30,f.__setDigit(b,1073741823&ne)}}}},{key:"__internalMultiplyAdd",value:function(c,d,f,b,p){for(var g=f,w=0,_=0;_<b;_++){var m=c.__digit(_),C=k.__imul(32767&m,d),N=k.__imul(m>>>15,d),R=C+((32767&N)<<15)+w+g;g=R>>>30,w=N>>>15,p.__setDigit(_,1073741823&R)}if(p.length>b)for(p.__setDigit(b++,g+w);b<p.length;)p.__setDigit(b++,0);else if(g+w!==0)throw new Error("implementation bug")}},{key:"__absoluteDivSmall",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;f===null&&(f=new k(c.length,!1));for(var b=0,p=2*c.length-1;0<=p;p-=2){var g=(b<<15|c.__halfDigit(p))>>>0,w=0|g/d;b=0|g%d,g=(b<<15|c.__halfDigit(p-1))>>>0;var _=0|g/d;b=0|g%d,f.__setDigit(p>>>1,w<<15|_)}return f}},{key:"__absoluteModSmall",value:function(c,d){for(var f,b=0,p=2*c.length-1;0<=p;p--)f=(b<<15|c.__halfDigit(p))>>>0,b=0|f%d;return b}},{key:"__absoluteDivLarge",value:function(c,d,f,b){var p=d.__halfDigitLength(),g=d.length,w=c.__halfDigitLength()-p,_=null;f&&(_=new k(w+2>>>1,!1),_.__initializeDigits());var m=new k(p+2>>>1,!1);m.__initializeDigits();var C=k.__clz15(d.__halfDigit(p-1));0<C&&(d=k.__specialLeftShift(d,C,0));for(var N=k.__specialLeftShift(c,C,1),R=d.__halfDigit(p-1),$=0,L=w;0<=L;L--){var H=32767,ee=N.__halfDigit(L+p);if(ee!==R){var ge=(ee<<15|N.__halfDigit(L+p-1))>>>0;H=0|ge/R;for(var ne=0|ge%R,me=d.__halfDigit(p-2),xe=N.__halfDigit(L+p-2);k.__imul(H,me)>>>0>(ne<<16|xe)>>>0&&(H--,ne+=R,!(32767<ne)););}k.__internalMultiplyAdd(d,H,0,g,m);var _e=N.__inplaceSub(m,L,p+1);_e!==0&&(_e=N.__inplaceAdd(d,L,p),N.__setHalfDigit(L+p,32767&N.__halfDigit(L+p)+_e),H--),f&&(1&L?$=H<<15:_.__setDigit(L>>>1,$|H))}if(b)return N.__inplaceRightShift(C),f?{quotient:_,remainder:N}:N;if(f)return _;throw new Error("unreachable")}},{key:"__clz15",value:function(c){return k.__clz30(c)-15}},{key:"__specialLeftShift",value:function(c,d,f){var b=c.length,p=new k(b+f,!1);if(d===0){for(var g=0;g<b;g++)p.__setDigit(g,c.__digit(g));return 0<f&&p.__setDigit(b,0),p}for(var w,_=0,m=0;m<b;m++)w=c.__digit(m),p.__setDigit(m,1073741823&w<<d|_),_=w>>>30-d;return 0<f&&p.__setDigit(b,_),p}},{key:"__leftShiftByAbsolute",value:function(c,d){var f=k.__toShiftAmount(d);if(0>f)throw new RangeError("BigInt too big");var b=0|f/30,p=f%30,g=c.length,w=p!==0&&c.__digit(g-1)>>>30-p!=0,_=g+b+(w?1:0),m=new k(_,c.sign);if(p===0){for(var C=0;C<b;C++)m.__setDigit(C,0);for(;C<_;C++)m.__setDigit(C,c.__digit(C-b))}else{for(var N=0,R=0;R<b;R++)m.__setDigit(R,0);for(var $,L=0;L<g;L++)$=c.__digit(L),m.__setDigit(L+b,1073741823&$<<p|N),N=$>>>30-p;if(w)m.__setDigit(g+b,N);else if(N!==0)throw new Error("implementation bug")}return m.__trim()}},{key:"__rightShiftByAbsolute",value:function(c,d){var f=c.length,b=c.sign,p=k.__toShiftAmount(d);if(0>p)return k.__rightShiftByMaximum(b);var g=0|p/30,w=p%30,_=f-g;if(0>=_)return k.__rightShiftByMaximum(b);var m=!1;if(b){if(c.__digit(g)&(1<<w)-1)m=!0;else for(var C=0;C<g;C++)if(c.__digit(C)!==0){m=!0;break}}if(m&&w===0){var N=c.__digit(f-1);!~N&&_++}var R=new k(_,b);if(w===0){R.__setDigit(_-1,0);for(var $=g;$<f;$++)R.__setDigit($-g,c.__digit($))}else{for(var L,H=c.__digit(g)>>>w,ee=f-g-1,ge=0;ge<ee;ge++)L=c.__digit(ge+g+1),R.__setDigit(ge,1073741823&L<<30-w|H),H=L>>>w;R.__setDigit(ee,H)}return m&&(R=k.__absoluteAddOne(R,!0,R)),R.__trim()}},{key:"__rightShiftByMaximum",value:function(c){return c?k.__oneDigit(1,!0):k.__zero()}},{key:"__toShiftAmount",value:function(c){if(1<c.length)return-1;var d=c.__unsignedDigit(0);return d>k.__kMaxLengthBits?-1:d}},{key:"__toPrimitive",value:function(c){var d=1<arguments.length&&arguments[1]!==void 0?arguments[1]:"default";if(i(c)!=="object"||c.constructor===k)return c;if(typeof Symbol<"u"&&i(Symbol.toPrimitive)==="symbol"){var f=c[Symbol.toPrimitive];if(f){var b=f(d);if(i(b)!=="object")return b;throw new TypeError("Cannot convert object to primitive value")}}var p=c.valueOf;if(p){var g=p.call(c);if(i(g)!=="object")return g}var w=c.toString;if(w){var _=w.call(c);if(i(_)!=="object")return _}throw new TypeError("Cannot convert object to primitive value")}},{key:"__toNumeric",value:function(c){return k.__isBigInt(c)?c:+c}},{key:"__isBigInt",value:function(c){return i(c)==="object"&&c!==null&&c.constructor===k}},{key:"__truncateToNBits",value:function(c,d){for(var f=0|(c+29)/30,b=new k(f,d.sign),p=f-1,g=0;g<p;g++)b.__setDigit(g,d.__digit(g));var w=d.__digit(p);if(c%30!=0){var _=32-c%30;w=w<<_>>>_}return b.__setDigit(p,w),b.__trim()}},{key:"__truncateAndSubFromPowerOfTwo",value:function(c,d,f){for(var b=Math.min,p,g=0|(c+29)/30,w=new k(g,f),_=0,m=g-1,C=0,N=b(m,d.length);_<N;_++)p=0-d.__digit(_)-C,C=1&p>>>30,w.__setDigit(_,1073741823&p);for(;_<m;_++)w.__setDigit(_,0|1073741823&-C);var R,$=m<d.length?d.__digit(m):0,L=c%30;if(L===0)R=0-$-C,R&=1073741823;else{var H=32-L;$=$<<H>>>H;var ee=1<<32-H;R=ee-$-C,R&=ee-1}return w.__setDigit(m,R),w.__trim()}},{key:"__digitPow",value:function(c,d){for(var f=1;0<d;)1&d&&(f*=c),d>>>=1,c*=c;return f}},{key:"__isOneDigitInt",value:function(c){return(1073741823&c)===c}}]),k}(v(Array));return J.__kMaxLength=33554432,J.__kMaxLengthBits=J.__kMaxLength<<5,J.__kMaxBitsPerChar=[0,0,32,51,64,75,83,90,96,102,107,111,115,119,122,126,128,131,134,136,139,141,143,145,147,149,151,153,154,156,158,159,160,162,163,165,166],J.__kBitsPerCharTableShift=5,J.__kBitsPerCharTableMultiplier=1<<J.__kBitsPerCharTableShift,J.__kConversionChars=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"],J.__kBitConversionBuffer=new ArrayBuffer(8),J.__kBitConversionDouble=new Float64Array(J.__kBitConversionBuffer),J.__kBitConversionInts=new Int32Array(J.__kBitConversionBuffer),J.__clz30=e?function(x){return e(x)-2}:function(x){var I=Math.LN2,A=Math.log;return x===0?30:0|29-(0|A(x>>>0)/I)},J.__imul=t||function(x,I){return 0|x*I},J})});var bS={};wd(bS,{AddressBookSDK:()=>pr,COIN_TYPE_ARG_REGEX:()=>Hu,Coin:()=>hs,CoinHelper:()=>fs,CreateHelper:()=>hr,DEV_API_URL:()=>x_,DEV_SYNCING_URL:()=>A_,ENV_CONFIGS:()=>P_,Formatter:()=>dn,HexToUint8Array:()=>rc,LOCAL_API_URL:()=>nd,LOCAL_SYNCING_URL:()=>rd,MAINNET_RPC_URL:()=>id,MSafeAccount:()=>dr,MSafeClient:()=>pc,MSafeEnv:()=>S_,MSafeGlobals:()=>gs,PREV_API_URL:()=>I_,PROD_API_URL:()=>O_,SUI_COIN:()=>mS,SignatureVerifier:()=>Xu,TESTNET_RPC_URL:()=>hc,Uint8ArrayToHex:()=>pS,addPrefix:()=>Zu,getAllCoins:()=>_S,getMSafeConfig:()=>od,getPublicKeyFromChain:()=>Ju,stringToBuffer:()=>nc});module.exports=kd(bS);var Hi=require("@msafe/sui3-utils"),hr=class{constructor(e,i){this.globals=e;this.pkHelper=i}async getPublicKeyBatch(e){return this.pkHelper.getPublicKeyBatch(e)}async calculateMSafeAddress(e){let i=await this.reduceCreationInfoToRawConfig(e);return new Hi.MultiSigAccount(i).address}async validateCreateInfo(e){return this.calculateMSafeAddress(e)}addPublicKey(e,i){let n=Hi.PublicKeySerde.de(i);if(!(0,Hi.isSameAddress)(e,n.toSuiAddress()))throw new Error("Public key not match");this.pkHelper.addPublicKey(e,n)}async submitMSafeCreation(e){let i=await this.validateCreateInfo(e),n=Hi.SigningMessageHelper.createMSafeMessage(i),r=await this.globals.wallet.signPersonalMessage({messageStr:n});return await this.submitToBackend(e,r.signature),i}async reduceCreationInfoToRawConfig(e){let i=await this.getPublicKeyBatch(e.owners.map(n=>n.address));return i.forEach((n,r)=>{if(n===void 0)throw new Error(`Unknown public key for address: ${e.owners[r].address}`)}),{threshold:e.threshold,ownersWithWeight:e.owners.map((n,r)=>({publicKey:i[r],weight:n.weight})),creationNonce:e.creationNonce}}async submitToBackend(e,i){let n=await this.pkHelper.getPublicKeyBatch(e.owners.map(r=>r.address));await this.globals.backend.createMSafeAccount({owners:e.owners.map((r,o)=>({address:r.address,weight:r.weight,...Hi.PublicKeySerde.ser(n[o])})),threshold:e.threshold,name:e.name,description:e.description,creationNonce:e.creationNonce,signature:i})}};var mc=require("@msafe/sui3-utils");var Cd=require("@msafe/sui3-utils"),pr=class{constructor(e){this.globals=e}async getEntries(e){return this.globals.backend.getAddressBookEntries(e)}async update(e){let i=Cd.SigningMessageHelper.updateAddressBookMessage(e),n=await this.globals.wallet.signPersonalMessage({messageStr:i});return this.globals.backend.updateAddressBook({updates:e,signature:n.signature})}async getMode(){return(await this.globals.backend.getAddressBookMode()).mode}async setMode(e){return this.globals.backend.setAddressBookMode({mode:e})}};var ys=class{constructor(e){this.globals=e}async getMSafeByStatus(e,i){return this.globals.backend.getOwnedMSafeByStatus({status:e,pagination:i})}async updateMSafeStatus(e,i){return this.globals.backend.updateMSafeStatus({msafeAddress:e,status:i})}};var Dm=require("@msafe/sui3-utils"),Em=require("@msafe/sui3-utils"),Mm=we(ws(),1);var lo=require("@mysten/sui.js/utils"),kr=require("@mysten/sui.js/transactions"),di=we(Se(),1);var Rc=8192;function qc(t){if(t.length<Rc)return btoa(String.fromCharCode(...t));let e="";for(var i=0;i<t.length;i+=Rc){let n=t.slice(i,i+Rc);e+=String.fromCharCode(...n)}return btoa(e)}var dy=require("@mysten/sui.js/keypairs/ed25519"),fy=require("@mysten/sui.js/keypairs/secp256k1"),gn=we(Se(),1),St=we(Se(),1);var mr=9e15,mn=1e9,Lc="0123456789abcdef",ks="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Cs="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",$c={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-mr,maxE:mr,crypto:!1},qd,Zi,pe=!0,Ss="[DecimalError] ",pn=Ss+"Invalid argument: ",Ld=Ss+"Precision limit exceeded",$d=Ss+"crypto unavailable",Ud="[object Decimal]",Vt=Math.floor,At=Math.pow,Z_=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,X_=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,J_=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Kd=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Si=1e7,de=7,Y_=9007199254740991,Q_=ks.length-1,Uc=Cs.length-1,W={toStringTag:Ud};W.absoluteValue=W.abs=function(){var t=new this.constructor(this);return t.s<0&&(t.s=1),se(t)};W.ceil=function(){return se(new this.constructor(this),this.e+1,2)};W.clampedTo=W.clamp=function(t,e){var i,n=this,r=n.constructor;if(t=new r(t),e=new r(e),!t.s||!e.s)return new r(NaN);if(t.gt(e))throw Error(pn+e);return i=n.cmp(t),i<0?t:n.cmp(e)>0?e:new r(n)};W.comparedTo=W.cmp=function(t){var e,i,n,r,o=this,s=o.d,a=(t=new o.constructor(t)).d,l=o.s,u=t.s;if(!s||!a)return!l||!u?NaN:l!==u?l:s===a?0:!s^l<0?1:-1;if(!s[0]||!a[0])return s[0]?l:a[0]?-u:0;if(l!==u)return l;if(o.e!==t.e)return o.e>t.e^l<0?1:-1;for(n=s.length,r=a.length,e=0,i=n<r?n:r;e<i;++e)if(s[e]!==a[e])return s[e]>a[e]^l<0?1:-1;return n===r?0:n>r^l<0?1:-1};W.cosine=W.cos=function(){var t,e,i=this,n=i.constructor;return i.d?i.d[0]?(t=n.precision,e=n.rounding,n.precision=t+Math.max(i.e,i.sd())+de,n.rounding=1,i=eb(n,Hd(n,i)),n.precision=t,n.rounding=e,se(Zi==2||Zi==3?i.neg():i,t,e,!0)):new n(1):new n(NaN)};W.cubeRoot=W.cbrt=function(){var t,e,i,n,r,o,s,a,l,u,h=this,y=h.constructor;if(!h.isFinite()||h.isZero())return new y(h);for(pe=!1,o=h.s*At(h.s*h,1/3),!o||Math.abs(o)==1/0?(i=Bt(h.d),t=h.e,(o=(t-i.length+1)%3)&&(i+=o==1||o==-2?"0":"00"),o=At(i,1/3),t=Vt((t+1)/3)-(t%3==(t<0?-1:2)),o==1/0?i="5e"+t:(i=o.toExponential(),i=i.slice(0,i.indexOf("e")+1)+t),n=new y(i),n.s=h.s):n=new y(o.toString()),s=(t=y.precision)+3;;)if(a=n,l=a.times(a).times(a),u=l.plus(h),n=Ne(u.plus(h).times(a),u.plus(l),s+2,1),Bt(a.d).slice(0,s)===(i=Bt(n.d)).slice(0,s))if(i=i.slice(s-3,s+1),i=="9999"||!r&&i=="4999"){if(!r&&(se(a,t+1,0),a.times(a).times(a).eq(h))){n=a;break}s+=4,r=1}else{(!+i||!+i.slice(1)&&i.charAt(0)=="5")&&(se(n,t+1,1),e=!n.times(n).times(n).eq(h));break}return pe=!0,se(n,t,y.rounding,e)};W.decimalPlaces=W.dp=function(){var t,e=this.d,i=NaN;if(e){if(t=e.length-1,i=(t-Vt(this.e/de))*de,t=e[t],t)for(;t%10==0;t/=10)i--;i<0&&(i=0)}return i};W.dividedBy=W.div=function(t){return Ne(this,new this.constructor(t))};W.dividedToIntegerBy=W.divToInt=function(t){var e=this,i=e.constructor;return se(Ne(e,new i(t),0,1,1),i.precision,i.rounding)};W.equals=W.eq=function(t){return this.cmp(t)===0};W.floor=function(){return se(new this.constructor(this),this.e+1,3)};W.greaterThan=W.gt=function(t){return this.cmp(t)>0};W.greaterThanOrEqualTo=W.gte=function(t){var e=this.cmp(t);return e==1||e===0};W.hyperbolicCosine=W.cosh=function(){var t,e,i,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;i=s.precision,n=s.rounding,s.precision=i+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(t=Math.ceil(r/3),e=(1/As(4,t)).toString()):(t=16,e="2.3283064365386962890625e-10"),o=gr(s,1,o.times(e),new s(1),!0);for(var l,u=t,h=new s(8);u--;)l=o.times(o),o=a.minus(l.times(h.minus(l.times(h))));return se(o,s.precision=i,s.rounding=n,!0)};W.hyperbolicSine=W.sinh=function(){var t,e,i,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,i=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=gr(o,2,r,r,!0);else{t=1.4*Math.sqrt(n),t=t>16?16:t|0,r=r.times(1/As(5,t)),r=gr(o,2,r,r,!0);for(var s,a=new o(5),l=new o(16),u=new o(20);t--;)s=r.times(r),r=r.times(a.plus(s.times(l.times(s).plus(u))))}return o.precision=e,o.rounding=i,se(r,e,i,!0)};W.hyperbolicTangent=W.tanh=function(){var t,e,i=this,n=i.constructor;return i.isFinite()?i.isZero()?new n(i):(t=n.precision,e=n.rounding,n.precision=t+7,n.rounding=1,Ne(i.sinh(),i.cosh(),n.precision=t,n.rounding=e)):new n(i.s)};W.inverseCosine=W.acos=function(){var t,e=this,i=e.constructor,n=e.abs().cmp(1),r=i.precision,o=i.rounding;return n!==-1?n===0?e.isNeg()?Ti(i,r,o):new i(0):new i(NaN):e.isZero()?Ti(i,r+4,o).times(.5):(i.precision=r+6,i.rounding=1,e=e.asin(),t=Ti(i,r+4,o).times(.5),i.precision=r,i.rounding=o,t.minus(e))};W.inverseHyperbolicCosine=W.acosh=function(){var t,e,i=this,n=i.constructor;return i.lte(1)?new n(i.eq(1)?0:NaN):i.isFinite()?(t=n.precision,e=n.rounding,n.precision=t+Math.max(Math.abs(i.e),i.sd())+4,n.rounding=1,pe=!1,i=i.times(i).minus(1).sqrt().plus(i),pe=!0,n.precision=t,n.rounding=e,i.ln()):new n(i)};W.inverseHyperbolicSine=W.asinh=function(){var t,e,i=this,n=i.constructor;return!i.isFinite()||i.isZero()?new n(i):(t=n.precision,e=n.rounding,n.precision=t+2*Math.max(Math.abs(i.e),i.sd())+6,n.rounding=1,pe=!1,i=i.times(i).plus(1).sqrt().plus(i),pe=!0,n.precision=t,n.rounding=e,i.ln())};W.inverseHyperbolicTangent=W.atanh=function(){var t,e,i,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(t=o.precision,e=o.rounding,n=r.sd(),Math.max(n,t)<2*-r.e-1?se(new o(r),t,e,!0):(o.precision=i=n-r.e,r=Ne(r.plus(1),new o(1).minus(r),i+t,1),o.precision=t+4,o.rounding=1,r=r.ln(),o.precision=t,o.rounding=e,r.times(.5))):new o(NaN)};W.inverseSine=W.asin=function(){var t,e,i,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),i=o.precision,n=o.rounding,e!==-1?e===0?(t=Ti(o,i+4,n).times(.5),t.s=r.s,t):new o(NaN):(o.precision=i+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=i,o.rounding=n,r.times(2)))};W.inverseTangent=W.atan=function(){var t,e,i,n,r,o,s,a,l,u=this,h=u.constructor,y=h.precision,v=h.rounding;if(u.isFinite()){if(u.isZero())return new h(u);if(u.abs().eq(1)&&y+4<=Uc)return s=Ti(h,y+4,v).times(.25),s.s=u.s,s}else{if(!u.s)return new h(NaN);if(y+4<=Uc)return s=Ti(h,y+4,v).times(.5),s.s=u.s,s}for(h.precision=a=y+10,h.rounding=1,i=Math.min(28,a/de+2|0),t=i;t;--t)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(pe=!1,e=Math.ceil(a/de),n=1,l=u.times(u),s=new h(u),r=u;t!==-1;)if(r=r.times(l),o=s.minus(r.div(n+=2)),r=r.times(l),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(t=e;s.d[t]===o.d[t]&&t--;);return i&&(s=s.times(2<<i-1)),pe=!0,se(s,h.precision=y,h.rounding=v,!0)};W.isFinite=function(){return!!this.d};W.isInteger=W.isInt=function(){return!!this.d&&Vt(this.e/de)>this.d.length-2};W.isNaN=function(){return!this.s};W.isNegative=W.isNeg=function(){return this.s<0};W.isPositive=W.isPos=function(){return this.s>0};W.isZero=function(){return!!this.d&&this.d[0]===0};W.lessThan=W.lt=function(t){return this.cmp(t)<0};W.lessThanOrEqualTo=W.lte=function(t){return this.cmp(t)<1};W.logarithm=W.log=function(t){var e,i,n,r,o,s,a,l,u=this,h=u.constructor,y=h.precision,v=h.rounding,T=5;if(t==null)t=new h(10),e=!0;else{if(t=new h(t),i=t.d,t.s<0||!i||!i[0]||t.eq(1))return new h(NaN);e=t.eq(10)}if(i=u.d,u.s<0||!i||!i[0]||u.eq(1))return new h(i&&!i[0]?-1/0:u.s!=1?NaN:i?0:1/0);if(e)if(i.length>1)o=!0;else{for(r=i[0];r%10===0;)r/=10;o=r!==1}if(pe=!1,a=y+T,s=hn(u,a),n=e?Ts(h,a+10):hn(t,a),l=Ne(s,n,a,1),so(l.d,r=y,v))do if(a+=10,s=hn(u,a),n=e?Ts(h,a+10):hn(t,a),l=Ne(s,n,a,1),!o){+Bt(l.d).slice(r+1,r+15)+1==1e14&&(l=se(l,y+1,0));break}while(so(l.d,r+=10,v));return pe=!0,se(l,y,v)};W.minus=W.sub=function(t){var e,i,n,r,o,s,a,l,u,h,y,v,T=this,O=T.constructor;if(t=new O(t),!T.d||!t.d)return!T.s||!t.s?t=new O(NaN):T.d?t.s=-t.s:t=new O(t.d||T.s!==t.s?T:NaN),t;if(T.s!=t.s)return t.s=-t.s,T.plus(t);if(u=T.d,v=t.d,a=O.precision,l=O.rounding,!u[0]||!v[0]){if(v[0])t.s=-t.s;else if(u[0])t=new O(T);else return new O(l===3?-0:0);return pe?se(t,a,l):t}if(i=Vt(t.e/de),h=Vt(T.e/de),u=u.slice(),o=h-i,o){for(y=o<0,y?(e=u,o=-o,s=v.length):(e=v,i=h,s=u.length),n=Math.max(Math.ceil(a/de),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=v.length,y=n<s,y&&(s=n),n=0;n<s;n++)if(u[n]!=v[n]){y=u[n]<v[n];break}o=0}for(y&&(e=u,u=v,v=e,t.s=-t.s),s=u.length,n=v.length-s;n>0;--n)u[s++]=0;for(n=v.length;n>o;){if(u[--n]<v[n]){for(r=n;r&&u[--r]===0;)u[r]=Si-1;--u[r],u[n]+=Si}u[n]-=v[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--i;return u[0]?(t.d=u,t.e=xs(u,i),pe?se(t,a,l):t):new O(l===3?-0:0)};W.modulo=W.mod=function(t){var e,i=this,n=i.constructor;return t=new n(t),!i.d||!t.s||t.d&&!t.d[0]?new n(NaN):!t.d||i.d&&!i.d[0]?se(new n(i),n.precision,n.rounding):(pe=!1,n.modulo==9?(e=Ne(i,t.abs(),0,3,1),e.s*=t.s):e=Ne(i,t,0,n.modulo,1),e=e.times(t),pe=!0,i.minus(e))};W.naturalExponential=W.exp=function(){return Kc(this)};W.naturalLogarithm=W.ln=function(){return hn(this)};W.negated=W.neg=function(){var t=new this.constructor(this);return t.s=-t.s,se(t)};W.plus=W.add=function(t){var e,i,n,r,o,s,a,l,u,h,y=this,v=y.constructor;if(t=new v(t),!y.d||!t.d)return!y.s||!t.s?t=new v(NaN):y.d||(t=new v(t.d||y.s===t.s?y:NaN)),t;if(y.s!=t.s)return t.s=-t.s,y.minus(t);if(u=y.d,h=t.d,a=v.precision,l=v.rounding,!u[0]||!h[0])return h[0]||(t=new v(y)),pe?se(t,a,l):t;if(o=Vt(y.e/de),n=Vt(t.e/de),u=u.slice(),r=o-n,r){for(r<0?(i=u,r=-r,s=h.length):(i=h,n=o,s=u.length),o=Math.ceil(a/de),s=o>s?o+1:s+1,r>s&&(r=s,i.length=1),i.reverse();r--;)i.push(0);i.reverse()}for(s=u.length,r=h.length,s-r<0&&(r=s,i=h,h=u,u=i),e=0;r;)e=(u[--r]=u[r]+h[r]+e)/Si|0,u[r]%=Si;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return t.d=u,t.e=xs(u,n),pe?se(t,a,l):t};W.precision=W.sd=function(t){var e,i=this;if(t!==void 0&&t!==!!t&&t!==1&&t!==0)throw Error(pn+t);return i.d?(e=Vd(i.d),t&&i.e+1>e&&(e=i.e+1)):e=NaN,e};W.round=function(){var t=this,e=t.constructor;return se(new e(t),t.e+1,e.rounding)};W.sine=W.sin=function(){var t,e,i=this,n=i.constructor;return i.isFinite()?i.isZero()?new n(i):(t=n.precision,e=n.rounding,n.precision=t+Math.max(i.e,i.sd())+de,n.rounding=1,i=ib(n,Hd(n,i)),n.precision=t,n.rounding=e,se(Zi>2?i.neg():i,t,e,!0)):new n(NaN)};W.squareRoot=W.sqrt=function(){var t,e,i,n,r,o,s=this,a=s.d,l=s.e,u=s.s,h=s.constructor;if(u!==1||!a||!a[0])return new h(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(pe=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=Bt(a),(e.length+l)%2==0&&(e+="0"),u=Math.sqrt(e),l=Vt((l+1)/2)-(l<0||l%2),u==1/0?e="5e"+l:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+l),n=new h(e)):n=new h(u.toString()),i=(l=h.precision)+3;;)if(o=n,n=o.plus(Ne(s,o,i+2,1)).times(.5),Bt(o.d).slice(0,i)===(e=Bt(n.d)).slice(0,i))if(e=e.slice(i-3,i+1),e=="9999"||!r&&e=="4999"){if(!r&&(se(o,l+1,0),o.times(o).eq(s))){n=o;break}i+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(se(n,l+1,1),t=!n.times(n).eq(s));break}return pe=!0,se(n,l,h.rounding,t)};W.tangent=W.tan=function(){var t,e,i=this,n=i.constructor;return i.isFinite()?i.isZero()?new n(i):(t=n.precision,e=n.rounding,n.precision=t+10,n.rounding=1,i=i.sin(),i.s=1,i=Ne(i,new n(1).minus(i.times(i)).sqrt(),t+10,0),n.precision=t,n.rounding=e,se(Zi==2||Zi==4?i.neg():i,t,e,!0)):new n(NaN)};W.times=W.mul=function(t){var e,i,n,r,o,s,a,l,u,h=this,y=h.constructor,v=h.d,T=(t=new y(t)).d;if(t.s*=h.s,!v||!v[0]||!T||!T[0])return new y(!t.s||v&&!v[0]&&!T||T&&!T[0]&&!v?NaN:!v||!T?t.s/0:t.s*0);for(i=Vt(h.e/de)+Vt(t.e/de),l=v.length,u=T.length,l<u&&(o=v,v=T,T=o,s=l,l=u,u=s),o=[],s=l+u,n=s;n--;)o.push(0);for(n=u;--n>=0;){for(e=0,r=l+n;r>n;)a=o[r]+T[n]*v[r-n-1]+e,o[r--]=a%Si|0,e=a/Si|0;o[r]=(o[r]+e)%Si|0}for(;!o[--s];)o.pop();return e?++i:o.shift(),t.d=o,t.e=xs(o,i),pe?se(t,y.precision,y.rounding):t};W.toBinary=function(t,e){return Wc(this,2,t,e)};W.toDecimalPlaces=W.toDP=function(t,e){var i=this,n=i.constructor;return i=new n(i),t===void 0?i:(Xt(t,0,mn),e===void 0?e=n.rounding:Xt(e,0,8),se(i,t+i.e+1,e))};W.toExponential=function(t,e){var i,n=this,r=n.constructor;return t===void 0?i=Fi(n,!0):(Xt(t,0,mn),e===void 0?e=r.rounding:Xt(e,0,8),n=se(new r(n),t+1,e),i=Fi(n,!0,t+1)),n.isNeg()&&!n.isZero()?"-"+i:i};W.toFixed=function(t,e){var i,n,r=this,o=r.constructor;return t===void 0?i=Fi(r):(Xt(t,0,mn),e===void 0?e=o.rounding:Xt(e,0,8),n=se(new o(r),t+r.e+1,e),i=Fi(n,!1,t+n.e+1)),r.isNeg()&&!r.isZero()?"-"+i:i};W.toFraction=function(t){var e,i,n,r,o,s,a,l,u,h,y,v,T=this,O=T.d,P=T.constructor;if(!O)return new P(T);if(u=i=new P(1),n=l=new P(0),e=new P(n),o=e.e=Vd(O)-T.e-1,s=o%de,e.d[0]=At(10,s<0?de+s:s),t==null)t=o>0?e:u;else{if(a=new P(t),!a.isInt()||a.lt(u))throw Error(pn+a);t=a.gt(e)?o>0?e:u:a}for(pe=!1,a=new P(Bt(O)),h=P.precision,P.precision=o=O.length*de*2;y=Ne(a,e,0,1,1),r=i.plus(y.times(n)),r.cmp(t)!=1;)i=n,n=r,r=u,u=l.plus(y.times(r)),l=r,r=e,e=a.minus(y.times(r)),a=r;return r=Ne(t.minus(i),n,0,1,1),l=l.plus(r.times(u)),i=i.plus(r.times(n)),l.s=u.s=T.s,v=Ne(u,n,o,1).minus(T).abs().cmp(Ne(l,i,o,1).minus(T).abs())<1?[u,n]:[l,i],P.precision=h,pe=!0,v};W.toHexadecimal=W.toHex=function(t,e){return Wc(this,16,t,e)};W.toNearest=function(t,e){var i=this,n=i.constructor;if(i=new n(i),t==null){if(!i.d)return i;t=new n(1),e=n.rounding}else{if(t=new n(t),e===void 0?e=n.rounding:Xt(e,0,8),!i.d)return t.s?i:t;if(!t.d)return t.s&&(t.s=i.s),t}return t.d[0]?(pe=!1,i=Ne(i,t,0,e,1).times(t),pe=!0,se(i)):(t.s=i.s,i=t),i};W.toNumber=function(){return+this};W.toOctal=function(t,e){return Wc(this,8,t,e)};W.toPower=W.pow=function(t){var e,i,n,r,o,s,a=this,l=a.constructor,u=+(t=new l(t));if(!a.d||!t.d||!a.d[0]||!t.d[0])return new l(At(+a,u));if(a=new l(a),a.eq(1))return a;if(n=l.precision,o=l.rounding,t.eq(1))return se(a,n,o);if(e=Vt(t.e/de),e>=t.d.length-1&&(i=u<0?-u:u)<=Y_)return r=Wd(l,a,i,n),t.s<0?new l(1).div(r):se(r,n,o);if(s=a.s,s<0){if(e<t.d.length-1)return new l(NaN);if(t.d[e]&1||(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return i=At(+a,u),e=i==0||!isFinite(i)?Vt(u*(Math.log("0."+Bt(a.d))/Math.LN10+a.e+1)):new l(i+"").e,e>l.maxE+1||e<l.minE-1?new l(e>0?s/0:0):(pe=!1,l.rounding=a.s=1,i=Math.min(12,(e+"").length),r=Kc(t.times(hn(a,n+i)),n),r.d&&(r=se(r,n+5,1),so(r.d,n,o)&&(e=n+10,r=se(Kc(t.times(hn(a,e+i)),e),e+5,1),+Bt(r.d).slice(n+1,n+15)+1==1e14&&(r=se(r,n+1,0)))),r.s=s,pe=!0,l.rounding=o,se(r,n,o))};W.toPrecision=function(t,e){var i,n=this,r=n.constructor;return t===void 0?i=Fi(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Xt(t,1,mn),e===void 0?e=r.rounding:Xt(e,0,8),n=se(new r(n),t,e),i=Fi(n,t<=n.e||n.e<=r.toExpNeg,t)),n.isNeg()&&!n.isZero()?"-"+i:i};W.toSignificantDigits=W.toSD=function(t,e){var i=this,n=i.constructor;return t===void 0?(t=n.precision,e=n.rounding):(Xt(t,1,mn),e===void 0?e=n.rounding:Xt(e,0,8)),se(new n(i),t,e)};W.toString=function(){var t=this,e=t.constructor,i=Fi(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()&&!t.isZero()?"-"+i:i};W.truncated=W.trunc=function(){return se(new this.constructor(this),this.e+1,1)};W.valueOf=W.toJSON=function(){var t=this,e=t.constructor,i=Fi(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()?"-"+i:i};function Bt(t){var e,i,n,r=t.length-1,o="",s=t[0];if(r>0){for(o+=s,e=1;e<r;e++)n=t[e]+"",i=de-n.length,i&&(o+=fn(i)),o+=n;s=t[e],n=s+"",i=de-n.length,i&&(o+=fn(i))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Xt(t,e,i){if(t!==~~t||t<e||t>i)throw Error(pn+t)}function so(t,e,i,n){var r,o,s,a;for(o=t[0];o>=10;o/=10)--e;return--e<0?(e+=de,r=0):(r=Math.ceil((e+1)/de),e%=de),o=At(10,de-e),a=t[r]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=i<4&&a==99999||i>3&&a==49999||a==5e4||a==0):s=(i<4&&a+1==o||i>3&&a+1==o/2)&&(t[r+1]/o/100|0)==At(10,e-2)-1||(a==o/2||a==0)&&(t[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||i<4)&&a==9999||!n&&i>3&&a==4999):s=((n||i<4)&&a+1==o||!n&&i>3&&a+1==o/2)&&(t[r+1]/o/1e3|0)==At(10,e-3)-1,s}function vs(t,e,i){for(var n,r=[0],o,s=0,a=t.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=Lc.indexOf(t.charAt(s++)),n=0;n<r.length;n++)r[n]>i-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/i|0,r[n]%=i)}return r.reverse()}function eb(t,e){var i,n,r;if(e.isZero())return e;n=e.d.length,n<32?(i=Math.ceil(n/3),r=(1/As(4,i)).toString()):(i=16,r="2.3283064365386962890625e-10"),t.precision+=i,e=gr(t,1,e.times(r),new t(1));for(var o=i;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return t.precision-=i,e}var Ne=function(){function t(n,r,o){var s,a=0,l=n.length;for(n=n.slice();l--;)s=n[l]*r+a,n[l]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,l;if(o!=s)l=o>s?1:-1;else for(a=l=0;a<o;a++)if(n[a]!=r[a]){l=n[a]>r[a]?1:-1;break}return l}function i(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,l){var u,h,y,v,T,O,P,j,B,D,q,K,Z,G,J,x,I,A,M,k,S=n.constructor,c=n.s==r.s?1:-1,d=n.d,f=r.d;if(!d||!d[0]||!f||!f[0])return new S(!n.s||!r.s||(d?f&&d[0]==f[0]:!f)?NaN:d&&d[0]==0||!f?c*0:c/0);for(l?(T=1,h=n.e-r.e):(l=Si,T=de,h=Vt(n.e/T)-Vt(r.e/T)),M=f.length,I=d.length,B=new S(c),D=B.d=[],y=0;f[y]==(d[y]||0);y++);if(f[y]>(d[y]||0)&&h--,o==null?(G=o=S.precision,s=S.rounding):a?G=o+(n.e-r.e)+1:G=o,G<0)D.push(1),O=!0;else{if(G=G/T+2|0,y=0,M==1){for(v=0,f=f[0],G++;(y<I||v)&&G--;y++)J=v*l+(d[y]||0),D[y]=J/f|0,v=J%f|0;O=v||y<I}else{for(v=l/(f[0]+1)|0,v>1&&(f=t(f,v,l),d=t(d,v,l),M=f.length,I=d.length),x=M,q=d.slice(0,M),K=q.length;K<M;)q[K++]=0;k=f.slice(),k.unshift(0),A=f[0],f[1]>=l/2&&++A;do v=0,u=e(f,q,M,K),u<0?(Z=q[0],M!=K&&(Z=Z*l+(q[1]||0)),v=Z/A|0,v>1?(v>=l&&(v=l-1),P=t(f,v,l),j=P.length,K=q.length,u=e(P,q,j,K),u==1&&(v--,i(P,M<j?k:f,j,l))):(v==0&&(u=v=1),P=f.slice()),j=P.length,j<K&&P.unshift(0),i(q,P,K,l),u==-1&&(K=q.length,u=e(f,q,M,K),u<1&&(v++,i(q,M<K?k:f,K,l))),K=q.length):u===0&&(v++,q=[0]),D[y++]=v,u&&q[0]?q[K++]=d[x]||0:(q=[d[x]],K=1);while((x++<I||q[0]!==void 0)&&G--);O=q[0]!==void 0}D[0]||D.shift()}if(T==1)B.e=h,qd=O;else{for(y=1,v=D[0];v>=10;v/=10)y++;B.e=y+h*T-1,se(B,a?o+B.e+1:o,s,O)}return B}}();function se(t,e,i,n){var r,o,s,a,l,u,h,y,v,T=t.constructor;e:if(e!=null){if(y=t.d,!y)return t;for(r=1,a=y[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=de,s=e,h=y[v=0],l=h/At(10,r-s-1)%10|0;else if(v=Math.ceil((o+1)/de),a=y.length,v>=a)if(n){for(;a++<=v;)y.push(0);h=l=0,r=1,o%=de,s=o-de+1}else break e;else{for(h=a=y[v],r=1;a>=10;a/=10)r++;o%=de,s=o-de+r,l=s<0?0:h/At(10,r-s-1)%10|0}if(n=n||e<0||y[v+1]!==void 0||(s<0?h:h%At(10,r-s-1)),u=i<4?(l||n)&&(i==0||i==(t.s<0?3:2)):l>5||l==5&&(i==4||n||i==6&&(o>0?s>0?h/At(10,r-s):0:y[v-1])%10&1||i==(t.s<0?8:7)),e<1||!y[0])return y.length=0,u?(e-=t.e+1,y[0]=At(10,(de-e%de)%de),t.e=-e||0):y[0]=t.e=0,t;if(o==0?(y.length=v,a=1,v--):(y.length=v+1,a=At(10,de-o),y[v]=s>0?(h/At(10,r-s)%At(10,s)|0)*a:0),u)for(;;)if(v==0){for(o=1,s=y[0];s>=10;s/=10)o++;for(s=y[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(t.e++,y[0]==Si&&(y[0]=1));break}else{if(y[v]+=a,y[v]!=Si)break;y[v--]=0,a=1}for(o=y.length;y[--o]===0;)y.pop()}return pe&&(t.e>T.maxE?(t.d=null,t.e=NaN):t.e<T.minE&&(t.e=0,t.d=[0])),t}function Fi(t,e,i){if(!t.isFinite())return Gd(t);var n,r=t.e,o=Bt(t.d),s=o.length;return e?(i&&(n=i-s)>0?o=o.charAt(0)+"."+o.slice(1)+fn(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(t.e<0?"e":"e+")+t.e):r<0?(o="0."+fn(-r-1)+o,i&&(n=i-s)>0&&(o+=fn(n))):r>=s?(o+=fn(r+1-s),i&&(n=i-r-1)>0&&(o=o+"."+fn(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),i&&(n=i-s)>0&&(r+1===s&&(o+="."),o+=fn(n))),o}function xs(t,e){var i=t[0];for(e*=de;i>=10;i/=10)e++;return e}function Ts(t,e,i){if(e>Q_)throw pe=!0,i&&(t.precision=i),Error(Ld);return se(new t(ks),e,1,!0)}function Ti(t,e,i){if(e>Uc)throw Error(Ld);return se(new t(Cs),e,i,!0)}function Vd(t){var e=t.length-1,i=e*de+1;if(e=t[e],e){for(;e%10==0;e/=10)i--;for(e=t[0];e>=10;e/=10)i++}return i}function fn(t){for(var e="";t--;)e+="0";return e}function Wd(t,e,i,n){var r,o=new t(1),s=Math.ceil(n/de+4);for(pe=!1;;){if(i%2&&(o=o.times(e),Fd(o.d,s)&&(r=!0)),i=Vt(i/2),i===0){i=o.d.length-1,r&&o.d[i]===0&&++o.d[i];break}e=e.times(e),Fd(e.d,s)}return pe=!0,o}function Nd(t){return t.d[t.d.length-1]&1}function zd(t,e,i){for(var n,r=new t(e[0]),o=0;++o<e.length;)if(n=new t(e[o]),n.s)r[i](n)&&(r=n);else{r=n;break}return r}function Kc(t,e){var i,n,r,o,s,a,l,u=0,h=0,y=0,v=t.constructor,T=v.rounding,O=v.precision;if(!t.d||!t.d[0]||t.e>17)return new v(t.d?t.d[0]?t.s<0?0:1/0:1:t.s?t.s<0?0:t:NaN);for(e==null?(pe=!1,l=O):l=e,a=new v(.03125);t.e>-2;)t=t.times(a),y+=5;for(n=Math.log(At(2,y))/Math.LN10*2+5|0,l+=n,i=o=s=new v(1),v.precision=l;;){if(o=se(o.times(t),l,1),i=i.times(++h),a=s.plus(Ne(o,i,l,1)),Bt(a.d).slice(0,l)===Bt(s.d).slice(0,l)){for(r=y;r--;)s=se(s.times(s),l,1);if(e==null)if(u<3&&so(s.d,l-n,T,u))v.precision=l+=10,i=o=a=new v(1),h=0,u++;else return se(s,v.precision=O,T,pe=!0);else return v.precision=O,s}s=a}}function hn(t,e){var i,n,r,o,s,a,l,u,h,y,v,T=1,O=10,P=t,j=P.d,B=P.constructor,D=B.rounding,q=B.precision;if(P.s<0||!j||!j[0]||!P.e&&j[0]==1&&j.length==1)return new B(j&&!j[0]?-1/0:P.s!=1?NaN:j?0:P);if(e==null?(pe=!1,h=q):h=e,B.precision=h+=O,i=Bt(j),n=i.charAt(0),Math.abs(o=P.e)<15e14){for(;n<7&&n!=1||n==1&&i.charAt(1)>3;)P=P.times(t),i=Bt(P.d),n=i.charAt(0),T++;o=P.e,n>1?(P=new B("0."+i),o++):P=new B(n+"."+i.slice(1))}else return u=Ts(B,h+2,q).times(o+""),P=hn(new B(n+"."+i.slice(1)),h-O).plus(u),B.precision=q,e==null?se(P,q,D,pe=!0):P;for(y=P,l=s=P=Ne(P.minus(1),P.plus(1),h,1),v=se(P.times(P),h,1),r=3;;){if(s=se(s.times(v),h,1),u=l.plus(Ne(s,new B(r),h,1)),Bt(u.d).slice(0,h)===Bt(l.d).slice(0,h))if(l=l.times(2),o!==0&&(l=l.plus(Ts(B,h+2,q).times(o+""))),l=Ne(l,new B(T),h,1),e==null)if(so(l.d,h-O,D,a))B.precision=h+=O,u=s=P=Ne(y.minus(1),y.plus(1),h,1),v=se(P.times(P),h,1),r=a=1;else return se(l,B.precision=q,D,pe=!0);else return B.precision=q,l;l=u,r+=2}}function Gd(t){return String(t.s*t.s/0)}function Vc(t,e){var i,n,r;for((i=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(i<0&&(i=n),i+=+e.slice(n+1),e=e.substring(0,n)):i<0&&(i=e.length),n=0;e.charCodeAt(n)===48;n++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,t.e=i=i-n-1,t.d=[],n=(i+1)%de,i<0&&(n+=de),n<r){for(n&&t.d.push(+e.slice(0,n)),r-=de;n<r;)t.d.push(+e.slice(n,n+=de));e=e.slice(n),n=de-e.length}else n-=r;for(;n--;)e+="0";t.d.push(+e),pe&&(t.e>t.constructor.maxE?(t.d=null,t.e=NaN):t.e<t.constructor.minE&&(t.e=0,t.d=[0]))}else t.e=0,t.d=[0];return t}function tb(t,e){var i,n,r,o,s,a,l,u,h;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Kd.test(e))return Vc(t,e)}else if(e==="Infinity"||e==="NaN")return+e||(t.s=NaN),t.e=NaN,t.d=null,t;if(X_.test(e))i=16,e=e.toLowerCase();else if(Z_.test(e))i=2;else if(J_.test(e))i=8;else throw Error(pn+e);for(o=e.search(/p/i),o>0?(l=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=t.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=Wd(n,new n(i),o,o*2)),u=vs(e,i,Si),h=u.length-1,o=h;u[o]===0;--o)u.pop();return o<0?new n(t.s*0):(t.e=xs(u,h),t.d=u,pe=!1,s&&(t=Ne(t,r,a*4)),l&&(t=t.times(Math.abs(l)<54?At(2,l):ao.pow(2,l))),pe=!0,t)}function ib(t,e){var i,n=e.d.length;if(n<3)return e.isZero()?e:gr(t,2,e,e);i=1.4*Math.sqrt(n),i=i>16?16:i|0,e=e.times(1/As(5,i)),e=gr(t,2,e,e);for(var r,o=new t(5),s=new t(16),a=new t(20);i--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function gr(t,e,i,n,r){var o,s,a,l,u=1,h=t.precision,y=Math.ceil(h/de);for(pe=!1,l=i.times(i),a=new t(n);;){if(s=Ne(a.times(l),new t(e++*e++),h,1),a=r?n.plus(s):n.minus(s),n=Ne(s.times(l),new t(e++*e++),h,1),s=a.plus(n),s.d[y]!==void 0){for(o=y;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return pe=!0,s.d.length=y+1,s}function As(t,e){for(var i=t;--e;)i*=t;return i}function Hd(t,e){var i,n=e.s<0,r=Ti(t,t.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return Zi=n?4:1,e;if(i=e.divToInt(r),i.isZero())Zi=n?3:2;else{if(e=e.minus(i.times(r)),e.lte(o))return Zi=Nd(i)?n?2:3:n?4:1,e;Zi=Nd(i)?n?1:4:n?3:2}return e.minus(r).abs()}function Wc(t,e,i,n){var r,o,s,a,l,u,h,y,v,T=t.constructor,O=i!==void 0;if(O?(Xt(i,1,mn),n===void 0?n=T.rounding:Xt(n,0,8)):(i=T.precision,n=T.rounding),!t.isFinite())h=Gd(t);else{for(h=Fi(t),s=h.indexOf("."),O?(r=2,e==16?i=i*4-3:e==8&&(i=i*3-2)):r=e,s>=0&&(h=h.replace(".",""),v=new T(1),v.e=h.length-s,v.d=vs(Fi(v),10,r),v.e=v.d.length),y=vs(h,10,r),o=l=y.length;y[--l]==0;)y.pop();if(!y[0])h=O?"0p+0":"0";else{if(s<0?o--:(t=new T(t),t.d=y,t.e=o,t=Ne(t,v,i,n,0,r),y=t.d,o=t.e,u=qd),s=y[i],a=r/2,u=u||y[i+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(t.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&y[i-1]&1||n===(t.s<0?8:7)),y.length=i,u)for(;++y[--i]>r-1;)y[i]=0,i||(++o,y.unshift(1));for(l=y.length;!y[l-1];--l);for(s=0,h="";s<l;s++)h+=Lc.charAt(y[s]);if(O){if(l>1)if(e==16||e==8){for(s=e==16?4:3,--l;l%s;l++)h+="0";for(y=vs(h,r,e),l=y.length;!y[l-1];--l);for(s=1,h="1.";s<l;s++)h+=Lc.charAt(y[s])}else h=h.charAt(0)+"."+h.slice(1);h=h+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)h="0"+h;h="0."+h}else if(++o>l)for(o-=l;o--;)h+="0";else o<l&&(h=h.slice(0,o)+"."+h.slice(o))}h=(e==16?"0x":e==2?"0b":e==8?"0o":"")+h}return t.s<0?"-"+h:h}function Fd(t,e){if(t.length>e)return t.length=e,!0}function nb(t){return new this(t).abs()}function rb(t){return new this(t).acos()}function ob(t){return new this(t).acosh()}function sb(t,e){return new this(t).plus(e)}function ab(t){return new this(t).asin()}function cb(t){return new this(t).asinh()}function lb(t){return new this(t).atan()}function ub(t){return new this(t).atanh()}function db(t,e){t=new this(t),e=new this(e);var i,n=this.precision,r=this.rounding,o=n+4;return!t.s||!e.s?i=new this(NaN):!t.d&&!e.d?(i=Ti(this,o,1).times(e.s>0?.25:.75),i.s=t.s):!e.d||t.isZero()?(i=e.s<0?Ti(this,n,r):new this(0),i.s=t.s):!t.d||e.isZero()?(i=Ti(this,o,1).times(.5),i.s=t.s):e.s<0?(this.precision=o,this.rounding=1,i=this.atan(Ne(t,e,o,1)),e=Ti(this,o,1),this.precision=n,this.rounding=r,i=t.s<0?i.minus(e):i.plus(e)):i=this.atan(Ne(t,e,o,1)),i}function fb(t){return new this(t).cbrt()}function hb(t){return se(t=new this(t),t.e+1,2)}function pb(t,e,i){return new this(t).clamp(e,i)}function mb(t){if(!t||typeof t!="object")throw Error(Ss+"Object expected");var e,i,n,r=t.defaults===!0,o=["precision",1,mn,"rounding",0,8,"toExpNeg",-mr,0,"toExpPos",0,mr,"maxE",0,mr,"minE",-mr,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(i=o[e],r&&(this[i]=$c[i]),(n=t[i])!==void 0)if(Vt(n)===n&&n>=o[e+1]&&n<=o[e+2])this[i]=n;else throw Error(pn+i+": "+n);if(i="crypto",r&&(this[i]=$c[i]),(n=t[i])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[i]=!0;else throw Error($d);else this[i]=!1;else throw Error(pn+i+": "+n);return this}function gb(t){return new this(t).cos()}function _b(t){return new this(t).cosh()}function Zd(t){var e,i,n;function r(o){var s,a,l,u=this;if(!(u instanceof r))return new r(o);if(u.constructor=r,Rd(o)){u.s=o.s,pe?!o.d||o.e>r.maxE?(u.e=NaN,u.d=null):o.e<r.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(l=typeof o,l==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;pe?s>r.maxE?(u.e=NaN,u.d=null):s<r.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return Vc(u,o.toString())}else if(l!=="string")throw Error(pn+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),Kd.test(o)?Vc(u,o):tb(u,o)}if(r.prototype=W,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=mb,r.clone=Zd,r.isDecimal=Rd,r.abs=nb,r.acos=rb,r.acosh=ob,r.add=sb,r.asin=ab,r.asinh=cb,r.atan=lb,r.atanh=ub,r.atan2=db,r.cbrt=fb,r.ceil=hb,r.clamp=pb,r.cos=gb,r.cosh=_b,r.div=bb,r.exp=yb,r.floor=wb,r.hypot=vb,r.ln=kb,r.log=Cb,r.log10=Sb,r.log2=Tb,r.max=xb,r.min=Ab,r.mod=Ib,r.mul=Ob,r.pow=Pb,r.random=Db,r.round=Eb,r.sign=Mb,r.sin=jb,r.sinh=Bb,r.sqrt=Nb,r.sub=Fb,r.sum=Rb,r.tan=qb,r.tanh=Lb,r.trunc=$b,t===void 0&&(t={}),t&&t.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)t.hasOwnProperty(i=n[e++])||(t[i]=this[i]);return r.config(t),r}function bb(t,e){return new this(t).div(e)}function yb(t){return new this(t).exp()}function wb(t){return se(t=new this(t),t.e+1,3)}function vb(){var t,e,i=new this(0);for(pe=!1,t=0;t<arguments.length;)if(e=new this(arguments[t++]),e.d)i.d&&(i=i.plus(e.times(e)));else{if(e.s)return pe=!0,new this(1/0);i=e}return pe=!0,i.sqrt()}function Rd(t){return t instanceof ao||t&&t.toStringTag===Ud||!1}function kb(t){return new this(t).ln()}function Cb(t,e){return new this(t).log(e)}function Tb(t){return new this(t).log(2)}function Sb(t){return new this(t).log(10)}function xb(){return zd(this,arguments,"lt")}function Ab(){return zd(this,arguments,"gt")}function Ib(t,e){return new this(t).mod(e)}function Ob(t,e){return new this(t).mul(e)}function Pb(t,e){return new this(t).pow(e)}function Db(t){var e,i,n,r,o=0,s=new this(1),a=[];if(t===void 0?t=this.precision:Xt(t,1,mn),n=Math.ceil(t/de),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=n/4}else throw Error($d);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],t%=de,n&&t&&(r=At(10,de-t),a[o]=(n/r|0)*r);a[o]===0;o--)a.pop();if(o<0)i=0,a=[0];else{for(i=-1;a[0]===0;i-=de)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<de&&(i-=de-n)}return s.e=i,s.d=a,s}function Eb(t){return se(t=new this(t),t.e+1,this.rounding)}function Mb(t){return t=new this(t),t.d?t.d[0]?t.s:0*t.s:t.s||NaN}function jb(t){return new this(t).sin()}function Bb(t){return new this(t).sinh()}function Nb(t){return new this(t).sqrt()}function Fb(t,e){return new this(t).sub(e)}function Rb(){var t=0,e=arguments,i=new this(e[t]);for(pe=!1;i.s&&++t<e.length;)i=i.plus(e[t]);return pe=!0,se(i,this.precision,this.rounding)}function qb(t){return new this(t).tan()}function Lb(t){return new this(t).tanh()}function $b(t){return se(t=new this(t),t.e+1,1)}W[Symbol.for("nodejs.util.inspect.custom")]=W.toString;W[Symbol.toStringTag]="Decimal";var ao=W.constructor=Zd($c);ks=new ao(ks);Cs=new ao(Cs);var U=ao;var Gf=we(Se(),1),fo=we(Se(),1);var ue=we(Se(),1),Ee=we(Se(),1),Xf=we(Se(),1),Gs=require("@mysten/sui.js/utils"),Ly=we(Se(),1),rl=we(Se(),1),$y=we(Se(),1);var $n=we(Se(),1),uo=we(Se(),1);var Un=require("@mysten/sui.js/transactions"),Jy=require("@mysten/sui.js/utils"),Yy=require("@mysten/sui.js/transactions"),Rt=we(Se(),1),qs=require("@mysten/sui.js/transactions"),sl=we(Se(),1),Kn=require("@mysten/sui.js/transactions"),oh=require("@mysten/sui.js/utils"),Fe=we(Se(),1),Ls=require("@mysten/sui.js/transactions"),ni=we(Se(),1),Wn=we(kf(),1),sh=require("@mysten/sui.js/transactions"),Vn=we(Se(),1);var al=require("@mysten/sui.js/transactions");var If="3.7.7",Zb=If,yr=typeof Buffer=="function",Cf=typeof TextDecoder=="function"?new TextDecoder:void 0,Tf=typeof TextEncoder=="function"?new TextEncoder:void 0,Xb="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",co=Array.prototype.slice.call(Xb),Es=(t=>{let e={};return t.forEach((i,n)=>e[i]=n),e})(co),Jb=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,Nt=String.fromCharCode.bind(String),Sf=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):t=>new Uint8Array(Array.prototype.slice.call(t,0)),Of=t=>t.replace(/=/g,"").replace(/[+\/]/g,e=>e=="+"?"-":"_"),Pf=t=>t.replace(/[^A-Za-z0-9\+\/]/g,""),Df=t=>{let e,i,n,r,o="",s=t.length%3;for(let a=0;a<t.length;){if((i=t.charCodeAt(a++))>255||(n=t.charCodeAt(a++))>255||(r=t.charCodeAt(a++))>255)throw new TypeError("invalid character found");e=i<<16|n<<8|r,o+=co[e>>18&63]+co[e>>12&63]+co[e>>6&63]+co[e&63]}return s?o.slice(0,s-3)+"===".substring(s):o},Xc=typeof btoa=="function"?t=>btoa(t):yr?t=>Buffer.from(t,"binary").toString("base64"):Df,Hc=yr?t=>Buffer.from(t).toString("base64"):t=>{let i=[];for(let n=0,r=t.length;n<r;n+=4096)i.push(Nt.apply(null,t.subarray(n,n+4096)));return Xc(i.join(""))},Ms=(t,e=!1)=>e?Of(Hc(t)):Hc(t),Yb=t=>{if(t.length<2){var e=t.charCodeAt(0);return e<128?t:e<2048?Nt(192|e>>>6)+Nt(128|e&63):Nt(224|e>>>12&15)+Nt(128|e>>>6&63)+Nt(128|e&63)}else{var e=65536+(t.charCodeAt(0)-55296)*1024+(t.charCodeAt(1)-56320);return Nt(240|e>>>18&7)+Nt(128|e>>>12&63)+Nt(128|e>>>6&63)+Nt(128|e&63)}},Qb=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,Ef=t=>t.replace(Qb,Yb),xf=yr?t=>Buffer.from(t,"utf8").toString("base64"):Tf?t=>Hc(Tf.encode(t)):t=>Xc(Ef(t)),br=(t,e=!1)=>e?Of(xf(t)):xf(t),Af=t=>br(t,!0),ey=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,ty=t=>{switch(t.length){case 4:var e=(7&t.charCodeAt(0))<<18|(63&t.charCodeAt(1))<<12|(63&t.charCodeAt(2))<<6|63&t.charCodeAt(3),i=e-65536;return Nt((i>>>10)+55296)+Nt((i&1023)+56320);case 3:return Nt((15&t.charCodeAt(0))<<12|(63&t.charCodeAt(1))<<6|63&t.charCodeAt(2));default:return Nt((31&t.charCodeAt(0))<<6|63&t.charCodeAt(1))}},Mf=t=>t.replace(ey,ty),jf=t=>{if(t=t.replace(/\s+/g,""),!Jb.test(t))throw new TypeError("malformed base64.");t+="==".slice(2-(t.length&3));let e,i="",n,r;for(let o=0;o<t.length;)e=Es[t.charAt(o++)]<<18|Es[t.charAt(o++)]<<12|(n=Es[t.charAt(o++)])<<6|(r=Es[t.charAt(o++)]),i+=n===64?Nt(e>>16&255):r===64?Nt(e>>16&255,e>>8&255):Nt(e>>16&255,e>>8&255,e&255);return i},Jc=typeof atob=="function"?t=>atob(Pf(t)):yr?t=>Buffer.from(t,"base64").toString("binary"):jf,Bf=yr?t=>Sf(Buffer.from(t,"base64")):t=>Sf(Jc(t).split("").map(e=>e.charCodeAt(0))),Nf=t=>Bf(Ff(t)),iy=yr?t=>Buffer.from(t,"base64").toString("utf8"):Cf?t=>Cf.decode(Bf(t)):t=>Mf(Jc(t)),Ff=t=>Pf(t.replace(/[-_]/g,e=>e=="-"?"+":"/")),Zc=t=>iy(Ff(t)),ny=t=>{if(typeof t!="string")return!1;let e=t.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(e)||!/[^\s0-9a-zA-Z\-_]/.test(e)},Rf=t=>({value:t,enumerable:!1,writable:!0,configurable:!0}),qf=function(){let t=(e,i)=>Object.defineProperty(String.prototype,e,Rf(i));t("fromBase64",function(){return Zc(this)}),t("toBase64",function(e){return br(this,e)}),t("toBase64URI",function(){return br(this,!0)}),t("toBase64URL",function(){return br(this,!0)}),t("toUint8Array",function(){return Nf(this)})},Lf=function(){let t=(e,i)=>Object.defineProperty(Uint8Array.prototype,e,Rf(i));t("toBase64",function(e){return Ms(this,e)}),t("toBase64URI",function(){return Ms(this,!0)}),t("toBase64URL",function(){return Ms(this,!0)})},ry=()=>{qf(),Lf()},wr={version:If,VERSION:Zb,atob:Jc,atobPolyfill:jf,btoa:Xc,btoaPolyfill:Df,fromBase64:Zc,toBase64:br,encode:br,encodeURI:Af,encodeURL:Af,utob:Ef,btou:Mf,decode:Zc,isValid:ny,fromUint8Array:Ms,toUint8Array:Nf,extendString:qf,extendUint8Array:Lf,extendBuiltins:ry};var cl=require("@mysten/sui.js/transactions"),ah=require("@mysten/sui.js/utils"),xi=we(Se(),1);var js,oy=new Uint8Array(16);function Yc(){if(!js&&(js=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!js))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return js(oy)}var Ft=[];for(let t=0;t<256;++t)Ft.push((t+256).toString(16).slice(1));function $f(t,e=0){return Ft[t[e+0]]+Ft[t[e+1]]+Ft[t[e+2]]+Ft[t[e+3]]+"-"+Ft[t[e+4]]+Ft[t[e+5]]+"-"+Ft[t[e+6]]+Ft[t[e+7]]+"-"+Ft[t[e+8]]+Ft[t[e+9]]+"-"+Ft[t[e+10]]+Ft[t[e+11]]+Ft[t[e+12]]+Ft[t[e+13]]+Ft[t[e+14]]+Ft[t[e+15]]}var sy=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Qc={randomUUID:sy};function ay(t,e,i){if(Qc.randomUUID&&!e&&!t)return Qc.randomUUID();t=t||{};let n=t.random||(t.rng||Yc)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,e){i=i||0;for(let r=0;r<16;++r)e[i+r]=n[r];return e}return $f(n)}var Bs=ay;var $s=require("@mysten/sui.js/utils"),ch=require("@mysten/sui.js/transactions"),lh=require("@mysten/sui.js/client"),uh=require("@mysten/sui.js/bcs");var cy=Object.defineProperty,ly=(t,e,i)=>e in t?cy(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,uy=(t,e,i)=>(ly(t,typeof e!="symbol"?e+"":e,i),i),Ge=5*60*1e3,X=24*60*60*1e3;function be(t){return Date.parse(new Date().toString())+t}var Re=class{overdueTime;value;constructor(t,e=0){this.overdueTime=e,this.value=t}isValid(){return this.value===null?!1:this.overdueTime===0?!0:!(Date.parse(new Date().toString())>this.overdueTime)}};U.config({precision:64,rounding:U.ROUND_DOWN,toExpNeg:-64,toExpPos:64});var qt=U,Y=class extends Error{message;errorCode;constructor(t,e){super(t),this.message=t,this.errorCode=e}static isClmmpoolsErrorCode(t,e){return t instanceof Y&&t.errorCode===e}},re=new St.default(0),Ri=new St.default(1),Vs=new St.default(2),ZS=Vs.pow(new St.default(128)),Sr=Vs.pow(new St.default(64)).sub(Ri),hy=Vs.pow(new St.default(128)).sub(Ri),Ae=class{static toX64_BN(t){return t.mul(new St.default(2).pow(new St.default(64)))}static toX64_Decimal(t){return t.mul(qt.pow(2,64))}static toX64(t){return new St.default(t.mul(qt.pow(2,64)).floor().toFixed())}static fromX64(t){return new qt(t.toString()).mul(qt.pow(2,-64))}static fromX64_Decimal(t){return t.mul(qt.pow(2,-64))}static fromX64_BN(t){return t.div(new St.default(2).pow(new St.default(64)))}static shiftRightRoundUp(t){let e=t.shrn(64);return t.mod(Sr).gt(re)&&(e=e.add(Ri)),e}static divRoundUp(t,e){return t.mod(e).eq(re)?t.div(e):t.div(e).add(new St.default(1))}static subUnderflowU128(t,e){return t.lt(e)?t.sub(e).add(hy):t.sub(e)}static checkUnsignedSub(t,e){let i=t.sub(e);if(i.isNeg())throw new Y("Unsigned integer sub overflow","UnsignedIntegerOverflow");return i}static checkMul(t,e,i){let n=t.mul(e);if(this.isOverflow(n,i))throw new Y("Multiplication overflow","MultiplicationOverflow");return n}static checkMulDivFloor(t,e,i,n){if(i.eq(re))throw new Y("Devide by zero","DivideByZero");let r=t.mul(e).div(i);if(this.isOverflow(r,n))throw new Y("Multiplication div overflow","MulDivOverflow");return r}static checkMulDivCeil(t,e,i,n){if(i.eq(re))throw new Y("Devide by zero","DivideByZero");let r=t.mul(e).add(i.sub(Ri)).div(i);if(this.isOverflow(r,n))throw new Y("Multiplication div overflow","MulDivOverflow");return r}static checkMulDivRound(t,e,i,n){if(i.eq(re))throw new Y("Devide by zero","DivideByZero");let r=t.mul(e.add(i.shrn(1))).div(i);if(this.isOverflow(r,n))throw new Y("Multiplication div overflow","MulDivOverflow");return r}static checkMulShiftRight(t,e,i,n){let r=t.mul(e).div(new St.default(2).pow(new St.default(i)));if(this.isOverflow(r,n))throw new Y("Multiplication shift right overflow","MulShiftRightOverflow");return r}static checkMulShiftRight64RoundUpIf(t,e,i,n){let r=t.mul(e),s=n&&r.and(Sr).gt(re)?r.shrn(64).add(Ri):r.shrn(64);if(this.isOverflow(s,i))throw new Y("Multiplication shift right overflow","MulShiftRightOverflow");return s}static checkMulShiftLeft(t,e,i,n){let r=t.mul(e).shln(i);if(this.isOverflow(r,n))throw new Y("Multiplication shift left overflow","MulShiftLeftOverflow");return r}static checkDivRoundUpIf(t,e,i){if(e.eq(re))throw new Y("Devide by zero","DivideByZero");return i?this.divRoundUp(t,e):t.div(e)}static isOverflow(t,e){return t.gte(Vs.pow(new St.default(e)))}static sign(t){return t.testn(127)?1:0}static is_neg(t){return this.sign(t)===1}static abs_u128(t){return t.gt(re)?t:this.u128_neg(t.subn(1))}static u128_neg(t){return t.uxor(new St.default("ffffffffffffffffffffffffffffffff",16))}static neg(t){return this.is_neg(t)?t.abs():this.neg_from(t)}static abs(t){return this.sign(t)===0?t:this.u128_neg(t.sub(new St.default(1)))}static neg_from(t){return t.eq(re)?t:this.u128_neg(t).add(new St.default(1)).or(new St.default(1).shln(127))}};function py(t){return{coinA:t.coinTypeA,coinB:t.coinTypeB,currentSqrtPrice:new gn.default(t.current_sqrt_price),currentTickIndex:t.current_tick_index,feeGrowthGlobalA:new gn.default(t.fee_growth_global_a),feeGrowthGlobalB:new gn.default(t.fee_growth_global_b),feeProtocolCoinA:new gn.default(t.fee_protocol_coin_a),feeProtocolCoinB:new gn.default(t.fee_protocol_coin_b),feeRate:new gn.default(t.fee_rate),liquidity:new gn.default(t.liquidity),tickIndexes:[],tickSpacing:Number(t.tickSpacing),ticks:[],collection_name:""}}var Hf=443636,Zf=-443636,Ws="79226673515401279992447579055";var zs="4295048016",Cr=new Gf.default(1e6),z="0x0000000000000000000000000000000000000000000000000000000000000006",my="partner",Tr="pool_script",Xi="pool_script_v2",_n="router",el="router_with_partner",Jt="fetcher_script",gy="expect_swap",Uf="utils";var tl="custodian_v2",_y="clob_v2",by="endpoints_v2";var ll=(t=>(t.Deleted="Deleted",t.Exists="Exists",t.NotExists="NotExists",t))(ll||{});function F(t){if(t.config===void 0)throw new Y(`package: ${t.package_id} not config in sdk SdkOptions`,"InvalidConfig");return t.config}var yy=14,wy="59543866431248",vy="184467440737095516",ky="15793534762490258745",Cy=443636;function Ty(t,e,i){let n=t.toTwos(i).shln(e);return n.imaskn(i+1),n.fromTwos(i)}function ve(t,e,i){let n=t.toTwos(i).shrn(e);return n.imaskn(i-e+1),n.fromTwos(i-e)}function Sy(t){let e;return t&1?e=new ue.default("79232123823359799118286999567"):e=new ue.default("79228162514264337593543950336"),t&2&&(e=ve(e.mul(new ue.default("79236085330515764027303304731")),96,256)),t&4&&(e=ve(e.mul(new ue.default("79244008939048815603706035061")),96,256)),t&8&&(e=ve(e.mul(new ue.default("79259858533276714757314932305")),96,256)),t&16&&(e=ve(e.mul(new ue.default("79291567232598584799939703904")),96,256)),t&32&&(e=ve(e.mul(new ue.default("79355022692464371645785046466")),96,256)),t&64&&(e=ve(e.mul(new ue.default("79482085999252804386437311141")),96,256)),t&128&&(e=ve(e.mul(new ue.default("79736823300114093921829183326")),96,256)),t&256&&(e=ve(e.mul(new ue.default("80248749790819932309965073892")),96,256)),t&512&&(e=ve(e.mul(new ue.default("81282483887344747381513967011")),96,256)),t&1024&&(e=ve(e.mul(new ue.default("83390072131320151908154831281")),96,256)),t&2048&&(e=ve(e.mul(new ue.default("87770609709833776024991924138")),96,256)),t&4096&&(e=ve(e.mul(new ue.default("97234110755111693312479820773")),96,256)),t&8192&&(e=ve(e.mul(new ue.default("119332217159966728226237229890")),96,256)),t&16384&&(e=ve(e.mul(new ue.default("179736315981702064433883588727")),96,256)),t&32768&&(e=ve(e.mul(new ue.default("407748233172238350107850275304")),96,256)),t&65536&&(e=ve(e.mul(new ue.default("2098478828474011932436660412517")),96,256)),t&131072&&(e=ve(e.mul(new ue.default("55581415166113811149459800483533")),96,256)),t&262144&&(e=ve(e.mul(new ue.default("38992368544603139932233054999993551")),96,256)),ve(e,32,256)}function xy(t){let e=Math.abs(t),i;return e&1?i=new ue.default("18445821805675392311"):i=new ue.default("18446744073709551616"),e&2&&(i=ve(i.mul(new ue.default("18444899583751176498")),64,256)),e&4&&(i=ve(i.mul(new ue.default("18443055278223354162")),64,256)),e&8&&(i=ve(i.mul(new ue.default("18439367220385604838")),64,256)),e&16&&(i=ve(i.mul(new ue.default("18431993317065449817")),64,256)),e&32&&(i=ve(i.mul(new ue.default("18417254355718160513")),64,256)),e&64&&(i=ve(i.mul(new ue.default("18387811781193591352")),64,256)),e&128&&(i=ve(i.mul(new ue.default("18329067761203520168")),64,256)),e&256&&(i=ve(i.mul(new ue.default("18212142134806087854")),64,256)),e&512&&(i=ve(i.mul(new ue.default("17980523815641551639")),64,256)),e&1024&&(i=ve(i.mul(new ue.default("17526086738831147013")),64,256)),e&2048&&(i=ve(i.mul(new ue.default("16651378430235024244")),64,256)),e&4096&&(i=ve(i.mul(new ue.default("15030750278693429944")),64,256)),e&8192&&(i=ve(i.mul(new ue.default("12247334978882834399")),64,256)),e&16384&&(i=ve(i.mul(new ue.default("8131365268884726200")),64,256)),e&32768&&(i=ve(i.mul(new ue.default("3584323654723342297")),64,256)),e&65536&&(i=ve(i.mul(new ue.default("696457651847595233")),64,256)),e&131072&&(i=ve(i.mul(new ue.default("26294789957452057")),64,256)),e&262144&&(i=ve(i.mul(new ue.default("37481735321082")),64,256)),i}var ie=class{static priceToSqrtPriceX64(t,e,i){return Ae.toX64(t.mul(qt.pow(10,i-e)).sqrt())}static sqrtPriceX64ToPrice(t,e,i){return Ae.fromX64(t).pow(2).mul(qt.pow(10,e-i))}static tickIndexToSqrtPriceX64(t){return t>0?new ue.default(Sy(t)):new ue.default(xy(t))}static sqrtPriceX64ToTickIndex(t){if(t.gt(new ue.default(Ws))||t.lt(new ue.default(zs)))throw new Y("Provided sqrtPrice is not within the supported sqrtPrice range.","InvalidSqrtPrice");let e=t.bitLength()-1,i=new ue.default(e-64),n=Ty(i,32,128),r=new ue.default("8000000000000000","hex"),o=0,s=new ue.default(0),a=e>=64?t.shrn(e-63):t.shln(63-e);for(;r.gt(new ue.default(0))&&o<yy;){a=a.mul(a);let O=a.shrn(127);a=a.shrn(63+O.toNumber()),s=s.add(r.mul(O)),r=r.shrn(1),o+=1}let l=s.shrn(32),h=n.add(l).mul(new ue.default(wy)),y=ve(h.sub(new ue.default(vy)),64,128).toNumber(),v=ve(h.add(new ue.default(ky)),64,128).toNumber();return y===v?y:ie.tickIndexToSqrtPriceX64(v).lte(t)?v:y}static tickIndexToPrice(t,e,i){return ie.sqrtPriceX64ToPrice(ie.tickIndexToSqrtPriceX64(t),e,i)}static priceToTickIndex(t,e,i){return ie.sqrtPriceX64ToTickIndex(ie.priceToSqrtPriceX64(t,e,i))}static priceToInitializableTickIndex(t,e,i,n){return ie.getInitializableTickIndex(ie.priceToTickIndex(t,e,i),n)}static getInitializableTickIndex(t,e){return t-t%e}static getNextInitializableTickIndex(t,e){return ie.getInitializableTickIndex(t,e)+e}static getPrevInitializableTickIndex(t,e){return ie.getInitializableTickIndex(t,e)-e}};function Ay(t){return E(t).add(E(Cy))}var JS=new fo.default(365),YS=new fo.default(24),QS=new fo.default(3600),e2=new fo.default(.5);var Ai=class{static getDefaultSqrtPriceLimit(t){return new Xf.default(t?zs:Ws)}static getDefaultOtherAmountThreshold(t){return t?re:Sr}};function Jf(t,e,i,n){if(i.eq(re))return t;let r=Ae.checkMulShiftLeft(t,e,64,256),o=e.shln(64),s=Ae.checkMul(t,i,256);if(!n&&o.lte(s))throw new Y("getNextSqrtPriceAUp - Unable to divide liquidityShl64 by product","DivideByZero");let a=n?Ae.checkDivRoundUpIf(r,o.add(s),!0):Ae.checkDivRoundUpIf(r,o.sub(s),!0);if(a.lt(new Ee.default(zs)))throw new Y("getNextSqrtPriceAUp - Next sqrt price less than min sqrt price","CoinAmountMinSubceeded ");if(a.gt(new Ee.default(Ws)))throw new Y("getNextSqrtPriceAUp - Next sqrt price greater than max sqrt price","CoinAmountMaxExceeded");return a}function Yf(t,e,i,n){let r=Ae.checkDivRoundUpIf(i.shln(64),e,!n),o=n?t.add(r):t.sub(r);if(o.lt(new Ee.default(zs))||o.gt(new Ee.default(Ws)))throw new Y("getNextSqrtPriceAUp - Next sqrt price out of bounds","SqrtPriceOutOfBounds");return o}function Iy(t,e,i,n){return n?Jf(t,e,i,!0):Yf(t,e,i,!0)}function Oy(t,e,i,n){return n?Yf(t,e,i,!1):Jf(t,e,i,!1)}function Kf(t,e,i,n){let r=t.gt(e)?t.sub(e):e.sub(t);if(i.lte(re)||r.eq(re))return re;let o;if(n){let s=new Ee.default(i).mul(new Ee.default(r)).shln(64),a=e.mul(t),l=s.div(a);o=s.mod(a).eq(re)?l:l.add(Ri)}else{let s=new Ee.default(i).mul(new Ee.default(r));o=s.and(Sr).gt(re)?s.shrn(64).add(Ri):s.shrn(64)}return o}function Vf(t,e,i,n){let r=t.gt(e)?t.sub(e):e.sub(t);if(i.lte(re)||r.eq(re))return re;let o;if(n)o=i.mul(r).shrn(64);else{let s=i.mul(r).shln(64),a=e.mul(t);o=s.div(a)}return o}function Py(t,e,i,n,r,o){if(i===re)return{amountIn:re,amountOut:re,nextSqrtPrice:e,feeAmount:re};let s=t.gte(e),a,l,u,h;if(o){let y=Ae.checkMulDivFloor(n,Ae.checkUnsignedSub(Cr,r),Cr,64),v=Kf(t,e,i,s);v.gt(y)?(a=y,h=Ae.checkUnsignedSub(n,y),u=Iy(t,i,y,s)):(a=v,h=Ae.checkMulDivCeil(a,r,Cr.sub(r),64),u=e),l=Vf(t,u,i,s)}else{let y=Vf(t,e,i,s);y.gt(n)?(l=n,u=Oy(t,i,n,s)):(l=y,u=e),a=Kf(t,u,i,s),h=Ae.checkMulDivCeil(a,r,Cr.sub(r),64)}return{amountIn:a,amountOut:l,nextSqrtPrice:u,feeAmount:h}}function Dy(t,e,i,n,r){let o=i,s=n.liquidity,{currentSqrtPrice:a}=n,l={amountIn:re,amountOut:re,feeAmount:re,refAmount:re,nextSqrtPrice:re,crossTickNum:0},u,h,y=Ai.getDefaultSqrtPriceLimit(t);for(let v of r){if(t&&n.currentTickIndex<v.index||!t&&n.currentTickIndex>=v.index||v===null)continue;t&&y.gt(v.sqrtPrice)||!t&&y.lt(v.sqrtPrice)?u=y:u=v.sqrtPrice;let T=Py(a,u,s,o,n.feeRate,e);if(T.amountIn.eq(re)||(o=e?o.sub(T.amountIn.add(T.feeAmount)):o.sub(T.amountOut)),l.amountIn=l.amountIn.add(T.amountIn),l.amountOut=l.amountOut.add(T.amountOut),l.feeAmount=l.feeAmount.add(T.feeAmount),T.nextSqrtPrice.eq(v.sqrtPrice)?(h=v.liquidityNet.mul(new Ee.default(-1)),t?Ae.is_neg(h)?s=s.add(new Ee.default(It(BigInt(h.toString()),128))):s=s.add(h):Ae.is_neg(h)?s=s.sub(new Ee.default(It(BigInt(h.toString()),128))):s=s.sub(h),a=v.sqrtPrice):a=T.nextSqrtPrice,l.crossTickNum+=1,o.eq(re))break}return l.amountIn=l.amountIn.add(l.feeAmount),l.nextSqrtPrice=a,l}function Ns(t,e,i){let n=Ee.default.min(t,e),r=Ee.default.max(t,e),o=Ae.fromX64_BN(i.mul(r).mul(n)),s=r.sub(n);return o.div(s)}function Fs(t,e,i){let n=Ee.default.min(t,e),o=Ee.default.max(t,e).sub(n);return i.shln(64).div(o)}var ze=class{static updateFeeRate(t,e,i,n,r){let o=Ae.checkMulDivCeil(e,new Ee.default(n),Cr,64),s=i===0?re:Ae.checkMulDivFloor(e,new Ee.default(i),Cr,64),a=e.mul(o).mul(s);if(r?t.feeProtocolCoinA=t.feeProtocolCoinA.add(o):t.feeProtocolCoinB=t.feeProtocolCoinB.add(o),a.eq(re)||t.liquidity.eq(re))return{refFee:s,clmm:t};let l=a.shln(64).div(t.liquidity);return r?t.feeGrowthGlobalA=t.feeGrowthGlobalA.add(l):t.feeGrowthGlobalB=t.feeGrowthGlobalB.add(l),{refFee:s,clmm:t}}static getCoinAmountFromLiquidity(t,e,i,n,r){let o=new qt(t.toString()),s=new qt(e.toString()),a=new qt(i.toString()),l=new qt(n.toString()),u,h;return e.lt(i)?(u=Ae.toX64_Decimal(o).mul(l.sub(a)).div(a.mul(l)),h=new qt(0)):e.lt(n)?(u=Ae.toX64_Decimal(o).mul(l.sub(s)).div(s.mul(l)),h=Ae.fromX64_Decimal(o.mul(s.sub(a)))):(u=new qt(0),h=Ae.fromX64_Decimal(o.mul(l.sub(a)))),r?{coinA:new Ee.default(u.ceil().toString()),coinB:new Ee.default(h.ceil().toString())}:{coinA:new Ee.default(u.floor().toString()),coinB:new Ee.default(h.floor().toString())}}static estLiquidityAndcoinAmountFromOneAmounts(t,e,i,n,r,o,s){let a=ie.sqrtPriceX64ToTickIndex(s),l=ie.tickIndexToSqrtPriceX64(t),u=ie.tickIndexToSqrtPriceX64(e),h;if(a<t){if(!n)throw new Y("lower tick cannot calculate liquidity by coinB","NotSupportedThisCoin");h=Ns(l,u,i)}else if(a>e){if(n)throw new Y("upper tick cannot calculate liquidity by coinA","NotSupportedThisCoin");h=Fs(u,l,i)}else n?h=Ns(s,u,i):h=Fs(s,l,i);let y=ze.getCoinAmountFromLiquidity(h,s,l,u,r),v=r?E(y.coinA.toString()).mul(1+o).toString():E(y.coinA.toString()).mul(1-o).toString(),T=r?E(y.coinB.toString()).mul(1+o).toString():E(y.coinB.toString()).mul(1-o).toString();return{coinAmountA:y.coinA,coinAmountB:y.coinB,tokenMaxA:r?new Ee.default(qt.ceil(v).toString()):new Ee.default(qt.floor(v).toString()),tokenMaxB:r?new Ee.default(qt.ceil(T).toString()):new Ee.default(qt.floor(T).toString()),liquidityAmount:h,fix_amount_a:n}}static estimateLiquidityFromcoinAmounts(t,e,i,n){if(e>i)throw new Y("lower tick cannot be greater than lower tick","InvalidTwoTickIndex");let r=ie.sqrtPriceX64ToTickIndex(t),o=ie.tickIndexToSqrtPriceX64(e),s=ie.tickIndexToSqrtPriceX64(i);if(r<e)return Ns(o,s,n.coinA);if(r>=i)return Fs(s,o,n.coinB);let a=Ns(t,s,n.coinA),l=Fs(t,o,n.coinB);return Ee.default.min(a,l)}static estCoinAmountsFromTotalAmount(t,e,i,n,r,o){let{ratioA:s,ratioB:a}=ze.calculateDepositRatioFixTokenA(t,e,i),l=E(n).mul(s).div(r),u=E(n).mul(a).div(o);return{amountA:l,amountB:u}}static calculateDepositRatioFixTokenA(t,e,i){let n=new Ee.default(1e8),{coinAmountB:r}=ze.estLiquidityAndcoinAmountFromOneAmounts(t,e,n,!0,!0,0,i),o=ie.sqrtPriceX64ToPrice(i,0,0),s=E(n.toString()).mul(o),a=s.add(r.toString()),l=s.div(a),u=E(r.toString()).div(a);return{ratioA:l,ratioB:u}}};function ul(t){return t.startsWith("0x")?`${t.slice(2)}`:t}var Ey=0,Qf=1,My=2;function Wf(t,e){return t===e?Ey:t<e?Qf:My}function jy(t,e){let i=0,n=t.length<=e.length?t.length:e.length,r=Wf(t.length,e.length);for(;i<n;){let o=Wf(t.charCodeAt(i),e.charCodeAt(i));if(i+=1,o!==0)return o}return r}function Us(t,e){return jy(t,e)===Qf}function xr(t,...e){let i=Array.isArray(e[e.length-1])?e.pop():[],r=[t,...e].filter(Boolean).join("::");return i&&i.length&&(r+=`<${i.join(", ")}>`),r}function V(t){try{let e=t.replace(/\s/g,""),n=e.match(/(<.+>)$/)?.[0]?.match(/(\w+::\w+::\w+)(?:<.*?>(?!>))?/g);if(n){e=e.slice(0,e.indexOf("<"));let l={...V(e),type_arguments:n.map(u=>V(u).source_address)};return l.type_arguments=l.type_arguments.map(u=>Ce.isSuiCoin(u)?u:V(u).source_address),l.source_address=xr(l.full_address,l.type_arguments),l}let r=e.split("::"),s={full_address:e,address:e===ho||e===qy?"0x2":(0,Gs.normalizeSuiObjectId)(r[0]),module:r[1],name:r[2],type_arguments:[],source_address:""};return s.full_address=`${s.address}::${s.module}::${s.name}`,s.source_address=xr(s.full_address,s.type_arguments),s}catch{return{full_address:t,address:"",module:"",name:"",type_arguments:[],source_address:t}}}function Lt(t){return V(t).source_address}function By(t){return t.toLowerCase().startsWith("0x")?(0,Gs.normalizeSuiObjectId)(t):t}var Ny=(t,e=!0)=>{let i=t.split("::"),n=i.shift(),r=(0,Gs.normalizeSuiObjectId)(n);return e&&(r=ul(r)),`${r}::${i.join("::")}`};function Hs(t){for(let e in t){let i=typeof t[e];if(i==="object")Hs(t[e]);else if(i==="string"){let n=t[e];n&&!n.includes("::")&&(t[e]=By(n))}}}var Fy="0x2::coin::Coin",Ry=/^0x2::coin::Coin<(.+)>$/;var ho="0x2::sui::SUI",qy="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI";var Ce=class{static getCoinTypeArg(t){let e=t.type.match(Ry);return e?e[1]:null}static isSUI(t){let e=Ce.getCoinTypeArg(t);return e?Ce.getCoinSymbol(e)==="SUI":!1}static getCoinSymbol(t){return t.substring(t.lastIndexOf(":")+1)}static getBalance(t){return BigInt(t.fields.balance)}static totalBalance(t,e){let i=BigInt(0);return t.forEach(n=>{e===n.coinAddress&&(i+=BigInt(n.balance))}),i}static getID(t){return t.fields.id.id}static getCoinTypeFromArg(t){return`${Fy}<${t}>`}static getFaucetCoins(t){let{events:e}=t,i=[];return e?.forEach(n=>{let{type:r}=n;if(V(r).name==="InitEvent"){let o=n.parsedJson;i.push({transactionModule:n.transactionModule,suplyID:o.suplyID,decimals:o.decimals})}}),i}static getCoinAssets(t,e){let i=[];return e.forEach(n=>{Lt(n.coinAddress)===Lt(t)&&i.push(n)}),i}static isSuiCoin(t){return V(t).full_address===ho}static selectCoinObjectIdGreaterThanOrEqual(t,e,i=[]){let n=Ce.selectCoinAssetGreaterThanOrEqual(t,e,i),r=n.selectedCoins.map(a=>a.coinObjectId),o=n.remainingCoins,s=n.selectedCoins.map(a=>a.balance.toString());return{objectArray:r,remainCoins:o,amountArray:s}}static selectCoinAssetGreaterThanOrEqual(t,e,i=[]){let n=Ce.sortByBalance(t.filter(l=>!i.includes(l.coinObjectId))),r=Ce.calculateTotalBalance(n);if(r<e)return{selectedCoins:[],remainingCoins:n};if(r===e)return{selectedCoins:n,remainingCoins:[]};let o=BigInt(0),s=[],a=[...n];for(;o<r;){let l=e-o,u=a.findIndex(y=>y.balance>=l);if(u!==-1){s.push(a[u]),a.splice(u,1);break}let h=a.pop();h.balance>0&&(s.push(h),o+=h.balance)}return{selectedCoins:Ce.sortByBalance(s),remainingCoins:Ce.sortByBalance(a)}}static sortByBalance(t){return t.sort((e,i)=>e.balance<i.balance?-1:e.balance>i.balance?1:0)}static sortByBalanceDes(t){return t.sort((e,i)=>e.balance>i.balance?-1:e.balance<i.balance?0:1)}static calculateTotalBalance(t){return t.reduce((e,i)=>e+i.balance,BigInt(0))}};var Ar=class{numerator;denominator;constructor(t,e){this.toString=()=>`${this.numerator.toString()}/${this.denominator.toString()}`,this.numerator=t,this.denominator=e}static fromDecimal(t){return Ar.fromFraction(t.toDecimalPlaces(1).mul(10).toNumber(),1e3)}static fromFraction(t,e){let i=typeof t=="number"?new rl.default(t.toString()):t,n=typeof e=="number"?new rl.default(e.toString()):e;return new Ar(i,n)}};function ol(t,{numerator:e,denominator:i},n){return n?t.mul(i.add(e)).div(i):t.mul(i).div(i.add(e))}function Zs(t,e,i){return{tokenMaxA:ol(t.coinA,e,i),tokenMaxB:ol(t.coinB,e,i)}}function E(t){return U.isDecimal(t)?t:new U(t===void 0?0:t)}function Uy(t){return E(10).pow(E(t).abs())}function po(t){return t.data}function eh(t){if(t.error&&"object_id"in t.error&&"version"in t.error&&"digest"in t.error){let{error:e}=t;return{objectId:e.object_id,version:e.version,digest:e.digest}}}function th(t){if(t.error&&"object_id"in t.error&&!("version"in t.error)&&!("digest"in t.error))return t.error.object_id}function Ky(t){if("reference"in t)return t.reference;let e=po(t);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:eh(t)}function Ht(t){return"objectId"in t?t.objectId:Ky(t)?.objectId??th(t)}function Vy(t){return t.data!==void 0}function Wy(t){return t.content!==void 0}function ih(t){let e="data"in t?po(t):t;if(!(!e||!Wy(e)||e.content.dataType!=="moveObject"))return e.content}function $t(t){return ih(t)?.type}function Ii(t){let e=Vy(t)?t.data:t;return!e?.type&&"data"in t?e?.content?.dataType==="package"?"package":$t(t):e?.type}function zn(t){return po(t)?.previousTransaction}function Ir(t){return po(t)?.owner}function zy(t){let e=po(t)?.display;return e||{data:null,error:null}}function te(t){let e=ih(t)?.fields;if(e)return"fields"in e?e.fields:e}function nh(t,e){let i=Uy(E(e));return Number(E(t).mul(i))}function It(t,e=32){return BigInt.asUintN(e,BigInt(t)).toString()}function $e(t,e=32){return Number(BigInt.asIntN(e,BigInt(t)))}function Gy(t,e,i){let n=V(t).name,r=V(e).name;return`${n}-${r}[${i}]`}function il(t){let e=$t(t),i=V(e),n=te(t);if(n==null)throw new Y(`Pool id ${Ht(t)} not exists.`,"InvalidPoolObject");let r=[];n.rewarder_manager.fields.rewarders.forEach(s=>{let{emissions_per_second:a}=s.fields,l=Ae.fromX64(new di.default(a)),u=Math.floor(l.toNumber()*60*60*24);r.push({emissions_per_second:a,coinAddress:V(s.fields.reward_coin.fields.name).source_address,growth_global:s.fields.growth_global,emissionsEveryDay:u})});let o={poolAddress:Ht(t),poolType:e,coinTypeA:i.type_arguments[0],coinTypeB:i.type_arguments[1],coinAmountA:n.coin_a,coinAmountB:n.coin_b,current_sqrt_price:n.current_sqrt_price,current_tick_index:$e(BigInt(n.current_tick_index.fields.bits)),fee_growth_global_a:n.fee_growth_global_a,fee_growth_global_b:n.fee_growth_global_b,fee_protocol_coin_a:n.fee_protocol_coin_a,fee_protocol_coin_b:n.fee_protocol_coin_b,fee_rate:n.fee_rate,is_pause:n.is_pause,liquidity:n.liquidity,position_manager:{positions_handle:n.position_manager.fields.positions.fields.id.id,size:n.position_manager.fields.positions.fields.size},rewarder_infos:r,rewarder_last_updated_time:n.rewarder_manager.fields.last_updated_time,tickSpacing:n.tick_spacing,ticks_handle:n.tick_manager.fields.ticks.fields.id.id,uri:n.url,index:Number(n.index),name:""};return o.name=Gy(o.coinTypeA,o.coinTypeB,o.tickSpacing),o}function Gn(t){let e=zy(t).data,i={creator:"",description:"",image_url:"",link:"",name:"",project_url:""};return e&&(i.creator=e.creator,i.description=e.description,i.image_url=e.image_url,i.link=e.link,i.name=e.name,i.project_url=e.project_url),i}function Ji(t){if(t.error!=null||t.data?.content?.dataType!=="moveObject")throw new Y(`Position not exists. Get Position error:${t.error}`,"InvalidPositionObject");let e={creator:"",description:"",image_url:"",link:"",name:"",project_url:""},i={...e,pos_object_id:"",owner:"",type:"",coin_type_a:"",coin_type_b:"",liquidity:"",tick_lower_index:0,tick_upper_index:0,index:0,pool:"",reward_amount_owed_0:"0",reward_amount_owed_1:"0",reward_amount_owed_2:"0",reward_growth_inside_0:"0",reward_growth_inside_1:"0",reward_growth_inside_2:"0",fee_growth_inside_a:"0",fee_owed_a:"0",fee_growth_inside_b:"0",fee_owed_b:"0",position_status:"Exists"},n=te(t);if(n){let s=$t(t),a=Ir(t);"nft"in n?(n=n.nft.fields,e.description=n.description,e.name=n.name,e.link=n.url):e=Gn(t),i={...e,pos_object_id:n.id.id,owner:a.AddressOwner,type:s,coin_type_a:n.coin_type_a.fields.name,coin_type_b:n.coin_type_b.fields.name,liquidity:n.liquidity,tick_lower_index:$e(BigInt(n.tick_lower_index.fields.bits)),tick_upper_index:$e(BigInt(n.tick_upper_index.fields.bits)),index:n.index,pool:n.pool,reward_amount_owed_0:"0",reward_amount_owed_1:"0",reward_amount_owed_2:"0",reward_growth_inside_0:"0",reward_growth_inside_1:"0",reward_growth_inside_2:"0",fee_growth_inside_a:"0",fee_owed_a:"0",fee_growth_inside_b:"0",fee_owed_b:"0",position_status:"Exists"}}let r=eh(t);r&&(i.pos_object_id=r.objectId,i.position_status="Deleted");let o=th(t);return o&&(i.pos_object_id=o,i.position_status="NotExists"),i}function rh(t){let e={reward_amount_owed_0:"0",reward_amount_owed_1:"0",reward_amount_owed_2:"0",reward_growth_inside_0:"0",reward_growth_inside_1:"0",reward_growth_inside_2:"0"};t="fields"in t?t.fields:t,t.rewards.forEach((o,s)=>{let{amount_owned:a,growth_inside:l}="fields"in o?o.fields:o;s===0?(e.reward_amount_owed_0=a,e.reward_growth_inside_0=l):s===1?(e.reward_amount_owed_1=a,e.reward_growth_inside_1=l):s===2&&(e.reward_amount_owed_2=a,e.reward_growth_inside_2=l)});let i="fields"in t.tick_lower_index?t.tick_lower_index.fields.bits:t.tick_lower_index.bits,n="fields"in t.tick_upper_index?t.tick_upper_index.fields.bits:t.tick_upper_index.bits;return{liquidity:t.liquidity,tick_lower_index:$e(BigInt(i)),tick_upper_index:$e(BigInt(n)),...e,fee_growth_inside_a:t.fee_growth_inside_a,fee_owed_a:t.fee_owned_a,fee_growth_inside_b:t.fee_growth_inside_b,fee_owed_b:t.fee_owned_b,pos_object_id:t.position_id}}function nl(t){if(t.error!=null||t.data?.content?.dataType!=="moveObject")throw new Y(`Tick not exists. Get tick data error:${t.error}`,"InvalidTickObject");let i=te(t).value.fields.value.fields;return{objectId:Ht(t),index:$e(BigInt(i.index.fields.bits)),sqrtPrice:new di.default(i.sqrt_price),liquidityNet:new di.default(i.liquidity_net.fields.bits),liquidityGross:new di.default(i.liquidity_gross),feeGrowthOutsideA:new di.default(i.fee_growth_outside_a),feeGrowthOutsideB:new di.default(i.fee_growth_outside_b),rewardersGrowthOutside:i.rewards_growth_outside}}function Hy(t){if(!t||!t.index||!t.sqrt_price||!t.liquidity_net||!t.liquidity_gross||!t.fee_growth_outside_a||!t.fee_growth_outside_b)throw new Y("Invalid tick fields.","InvalidTickFields");let e=$e(BigInt(t.index.bits)),i=new di.default(t.sqrt_price),n=new di.default(t.liquidity_net.bits),r=new di.default(t.liquidity_gross),o=new di.default(t.fee_growth_outside_a),s=new di.default(t.fee_growth_outside_b),a=t.rewards_growth_outside||[];return{objectId:"",index:e,sqrtPrice:i,liquidityNet:n,liquidityGross:r,feeGrowthOutsideA:o,feeGrowthOutsideB:s,rewardersGrowthOutside:a}}function Zy(t,e,i,n,r,o){let s=t.rewarder_infos,a=[];for(let l=0;l<s.length;l+=1){let u=o[l];e!==null&&(t.current_tick_index<n?u=o[l].sub(new $n.default(e.rewardersGrowthOutside[l])):u=e.rewardersGrowthOutside[l]);let h=new $n.default(0);i!==null&&(t.current_tick_index>=r?h=o[l].sub(new $n.default(i.rewardersGrowthOutside[l])):h=i.rewardersGrowthOutside[l]);let y=Ae.subUnderflowU128(Ae.subUnderflowU128(new $n.default(o[l]),new $n.default(u)),new $n.default(h));a.push(y)}return a}function Ks(t){let e=Ce.isSuiCoin(t.coinTypeA),i=Ce.isSuiCoin(t.coinTypeB);return{isAdjustCoinA:e,isAdjustCoinB:i}}function Xy(t,e){return U.ceil(E(t).div(1+e)).toString()}var ae=class{static createCollectRewarderAndFeeParams(t,e,i,n,r,o){r===void 0&&(r=[...n]),o===void 0&&(o=[...n]);let s=Lt(i.coinTypeA),a=Lt(i.coinTypeB);if(i.collect_fee){let u=ae.buildCoinForAmount(e,r,BigInt(0),s,!1);r=u.remainCoins;let h=ae.buildCoinForAmount(e,o,BigInt(0),a,!1);o=h.remainCoins,e=t.Position.createCollectFeePaylod({pool_id:i.pool_id,pos_id:i.pos_id,coinTypeA:i.coinTypeA,coinTypeB:i.coinTypeB},e,u.targetCoin,h.targetCoin)}let l=[];return i.rewarder_coin_types.forEach(u=>{switch(Lt(u)){case s:l.push(ae.buildCoinForAmount(e,r,BigInt(0),u,!1).targetCoin);break;case a:l.push(ae.buildCoinForAmount(e,o,BigInt(0),u,!1).targetCoin);break;default:l.push(ae.buildCoinForAmount(e,n,BigInt(0),u,!1).targetCoin);break}}),e=t.Rewarder.createCollectRewarderPaylod(i,e,l),e}static async adjustTransactionForGas(t,e,i,n){n.setSender(t.senderAddress);let r=Ce.selectCoinAssetGreaterThanOrEqual(e,i).selectedCoins;if(r.length===0)throw new Y("Insufficient balance","InsufficientBalance");let o=Ce.calculateTotalBalance(e);if(o-i>1e9)return{fixAmount:i};let s=await t.fullClient.calculationTxGas(n);if(Ce.selectCoinAssetGreaterThanOrEqual(e,BigInt(s),r.map(l=>l.coinObjectId)).selectedCoins.length===0){let l=BigInt(s)+BigInt(500);if(o-i<l){if(i-=l,i<0)throw new Y("gas Insufficient balance","InsufficientBalance");let u=new Un.TransactionBlock;return{fixAmount:i,newTx:u}}}return{fixAmount:i}}static async buildAddLiquidityFixTokenForGas(t,e,i,n){let r=await ae.buildAddLiquidityFixToken(t,e,i),{isAdjustCoinA:o}=Ks(i),s=o?i.amount_a:i.amount_b,a=await ae.adjustTransactionForGas(t,Ce.getCoinAssets(o?i.coinTypeA:i.coinTypeB,e),BigInt(s),r),{fixAmount:l}=a,{newTx:u}=a;if(u!==void 0){let h,y;if(o)i.amount_a=Number(l),h=ae.buildAddLiquidityFixTokenCoinInput(u,!i.fix_amount_a,l.toString(),i.slippage,i.coinTypeA,e,!1),y=ae.buildAddLiquidityFixTokenCoinInput(u,i.fix_amount_a,i.amount_b,i.slippage,i.coinTypeB,e,!1);else return i.amount_b=Number(l),h=ae.buildAddLiquidityFixTokenCoinInput(u,!i.fix_amount_a,i.amount_a,i.slippage,i.coinTypeA,e,!1),y=ae.buildAddLiquidityFixTokenCoinInput(u,i.fix_amount_a,l.toString(),i.slippage,i.coinTypeB,e,!1),i=ae.fixAddLiquidityFixTokenParams(i,n.slippage,n.curSqrtPrice),r=await ae.buildAddLiquidityFixTokenArgs(u,t,e,i,h,y),r}return r}static async buildAddLiquidityFixToken(t,e,i){if(t.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let n=new Un.TransactionBlock,r=ae.buildAddLiquidityFixTokenCoinInput(n,!i.fix_amount_a,i.amount_a,i.slippage,i.coinTypeA,e,!1),o=ae.buildAddLiquidityFixTokenCoinInput(n,i.fix_amount_a,i.amount_b,i.slippage,i.coinTypeB,e,!1);return n=ae.buildAddLiquidityFixTokenArgs(n,t,e,i,r,o),n}static buildAddLiquidityFixTokenCoinInput(t,e,i,n,r,o,s=!0){return e?ae.buildCoinForAmountInterval(t,o,{amountSecond:BigInt(Xy(i,n)),amountFirst:BigInt(i)},r,s):ae.buildCoinForAmount(t,o,BigInt(i),r,s)}static fixAddLiquidityFixTokenParams(t,e,i){let n=t.fix_amount_a?t.amount_a:t.amount_b,r=ze.estLiquidityAndcoinAmountFromOneAmounts(Number(t.tick_lower),Number(t.tick_upper),new uo.default(n),t.fix_amount_a,!0,e,i);return t.amount_a=t.fix_amount_a?t.amount_a:r.tokenMaxA.toNumber(),t.amount_b=t.fix_amount_a?r.tokenMaxB.toNumber():t.amount_b,t}static buildAddLiquidityFixTokenArgs(t,e,i,n,r,o){let s=[n.coinTypeA,n.coinTypeB],a=n.is_open?"open_position_with_liquidity_by_fix_coin":"add_liquidity_by_fix_coin",{clmm_pool:l,integrate:u}=e.sdkOptions;n.is_open||(t=ae.createCollectRewarderAndFeeParams(e,t,n,i,r.remainCoins,o.remainCoins));let h=F(l),y=n.is_open?[t.object(h.global_config_id),t.object(n.pool_id),t.pure(It(BigInt(n.tick_lower)).toString()),t.pure(It(BigInt(n.tick_upper)).toString()),r.targetCoin,o.targetCoin,t.pure(n.amount_a),t.pure(n.amount_b),t.pure(n.fix_amount_a),t.object(z)]:[t.object(h.global_config_id),t.object(n.pool_id),t.object(n.pos_id),r.targetCoin,o.targetCoin,t.pure(n.amount_a),t.pure(n.amount_b),t.pure(n.fix_amount_a),t.object(z)];return t.moveCall({target:`${u.published_at}::${Xi}::${a}`,typeArguments:s,arguments:y}),t}static async buildSwapTransactionForGas(t,e,i,n){let r=ae.buildSwapTransaction(t,e,i);r.setSender(t.senderAddress);let o=await ae.adjustTransactionForGas(t,Ce.getCoinAssets(e.a2b?e.coinTypeA:e.coinTypeB,i),BigInt(e.by_amount_in?e.amount:e.amount_limit),r),{fixAmount:s,newTx:a}=o;if(a!==void 0){a.setSender(t.senderAddress),e.by_amount_in?e.amount=s.toString():e.amount_limit=s.toString(),e=await ae.fixSwapParams(t,e,n);let l=ae.buildCoinForAmount(r,i,e.a2b?BigInt(e.by_amount_in?e.amount:e.amount_limit):BigInt(0),e.coinTypeA),u=ae.buildCoinForAmount(r,i,e.a2b?BigInt(0):BigInt(e.by_amount_in?e.amount:e.amount_limit),e.coinTypeB);r=ae.buildSwapTransactionArgs(a,e,t.sdkOptions,l,u)}return r}static buildSwapTransaction(t,e,i){let n=new Un.TransactionBlock;n.setSender(t.senderAddress);let r=ae.buildCoinForAmount(n,i,e.a2b?BigInt(e.by_amount_in?e.amount:e.amount_limit):BigInt(0),e.coinTypeA,!1),o=ae.buildCoinForAmount(n,i,e.a2b?BigInt(0):BigInt(e.by_amount_in?e.amount:e.amount_limit),e.coinTypeB,!1);return n=ae.buildSwapTransactionArgs(n,e,t.sdkOptions,r,o),n}static buildSwapTransactionArgs(t,e,i,n,r){let{clmm_pool:o,integrate:s}=i,a=Ai.getDefaultSqrtPriceLimit(e.a2b),l=[e.coinTypeA,e.coinTypeB],{global_config_id:u}=F(o);if(u===void 0)throw Error("clmm.config.global_config_id is undefined");let h=e.swap_partner!==void 0,y=h?e.a2b?"swap_a2b_with_partner":"swap_b2a_with_partner":e.a2b?"swap_a2b":"swap_b2a",v=h?[t.pure(u),t.pure(e.pool_id),t.pure(e.swap_partner),n.targetCoin,r.targetCoin,t.pure(e.by_amount_in),t.pure(e.amount),t.pure(e.amount_limit),t.pure(a.toString()),t.pure(z)]:[t.pure(u),t.pure(e.pool_id),n.targetCoin,r.targetCoin,t.pure(e.by_amount_in),t.pure(e.amount),t.pure(e.amount_limit),t.pure(a.toString()),t.pure(z)];return t.moveCall({target:`${s.published_at}::${Xi}::${y}`,typeArguments:l,arguments:v}),t}static async buildSwapTransactionWithoutTransferCoinsForGas(t,e,i,n){let{tx:r,coinABs:o}=ae.buildSwapTransactionWithoutTransferCoins(t,e,i);r.setSender(t.senderAddress);let s=await ae.adjustTransactionForGas(t,Ce.getCoinAssets(e.a2b?e.coinTypeA:e.coinTypeB,i),BigInt(e.by_amount_in?e.amount:e.amount_limit),r),{fixAmount:a,newTx:l}=s;if(l!==void 0){l.setSender(t.senderAddress),e.by_amount_in?e.amount=a.toString():e.amount_limit=a.toString(),e=await ae.fixSwapParams(t,e,n);let u=ae.buildCoinForAmount(r,i,e.a2b?BigInt(e.by_amount_in?e.amount:e.amount_limit):BigInt(0),e.coinTypeA,!1,!0),h=ae.buildCoinForAmount(r,i,e.a2b?BigInt(0):BigInt(e.by_amount_in?e.amount:e.amount_limit),e.coinTypeB,!1,!0),y=ae.buildSwapTransactionWithoutTransferCoinArgs(t,l,e,t.sdkOptions,u,h);r=y.tx,o=y.txRes}return{tx:r,coinABs:o}}static buildSwapTransactionWithoutTransferCoins(t,e,i){let n=new Un.TransactionBlock;n.setSender(t.senderAddress);let r=ae.buildCoinForAmount(n,i,e.a2b?BigInt(e.by_amount_in?e.amount:e.amount_limit):BigInt(0),e.coinTypeA,!1,!0),o=ae.buildCoinForAmount(n,i,e.a2b?BigInt(0):BigInt(e.by_amount_in?e.amount:e.amount_limit),e.coinTypeB,!1,!0),s=ae.buildSwapTransactionWithoutTransferCoinArgs(t,n,e,t.sdkOptions,r,o);return{tx:s.tx,coinABs:s.txRes}}static buildSwapTransactionWithoutTransferCoinArgs(t,e,i,n,r,o){let{clmm_pool:s,integrate:a}=n,l=Ai.getDefaultSqrtPriceLimit(i.a2b),{global_config_id:u}=F(s);if(u===void 0)throw Error("clmm.config.global_config_id is undefined");let h=i.swap_partner!==void 0,y=h?"swap_with_partner":"swap",v=h?el:_n,T=h?[e.pure(u),e.pure(i.pool_id),e.pure(i.swap_partner),r.targetCoin,o.targetCoin,e.pure(i.a2b),e.pure(i.by_amount_in),e.pure(i.amount),e.pure(l.toString()),e.pure(!1),e.pure(z)]:[e.pure(u),e.pure(i.pool_id),r.targetCoin,o.targetCoin,e.pure(i.a2b),e.pure(i.by_amount_in),e.pure(i.amount),e.pure(l.toString()),e.pure(!1),e.pure(z)],O=[i.coinTypeA,i.coinTypeB],P=e.moveCall({target:`${a.published_at}::${v}::${y}`,typeArguments:O,arguments:T});if(i.by_amount_in){let j=i.a2b?i.coinTypeB:i.coinTypeA,B=i.a2b?P[1]:P[0],D=Number(i.amount_limit);this.checkCoinThreshold(t,i.by_amount_in,e,B,D,j)}return{tx:e,txRes:P}}static async fixSwapParams(t,e,i){let{currentPool:n}=i;try{let r=await t.Swap.preswap({decimalsA:i.decimalsA,decimalsB:i.decimalsB,a2b:e.a2b,byAmountIn:e.by_amount_in,amount:e.amount,pool:n,currentSqrtPrice:n.current_sqrt_price,coinTypeA:n.coinTypeA,coinTypeB:n.coinTypeB}),o=i.byAmountIn?r.estimatedAmountOut:r.estimatedAmountIn,s=ol(o,i.slippage,!i.byAmountIn);e.amount_limit=s.toString()}catch(r){console.log("fixSwapParams",r)}return e}static async syncBuildCoinInputForAmount(t,e,i,n,r=!0){if(t.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let o=await t.getOwnerCoinAssets(t.senderAddress,n);return ae.buildCoinForAmount(e,o,i,n,r).targetCoin}static buildCoinForAmount(t,e,i,n,r=!0,o=!1){let s=Ce.getCoinAssets(n,e);if(i===BigInt(0)&&s.length===0)return ae.buildZeroValueCoin(e,t,n,r);let a=Ce.calculateTotalBalance(s);if(a<i)throw new Y(`The amount(${a}) is Insufficient balance for ${n} , expect ${i} `,"InsufficientBalance");return ae.buildCoin(t,e,s,i,n,r,o)}static buildCoin(t,e,i,n,r,o=!0,s=!1){if(Ce.isSuiCoin(r)){if(o){let D=t.splitCoins(t.gas,[t.pure(n.toString())]);return{targetCoin:t.makeMoveVec({objects:[D]}),remainCoins:e,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:t.gas}}if(n===0n&&i.length>1){let D=Ce.selectCoinObjectIdGreaterThanOrEqual(i,n);return{targetCoin:t.object(D.objectArray[0]),remainCoins:D.remainCoins,tragetCoinAmount:D.amountArray[0],isMintZeroCoin:!1}}let j=Ce.selectCoinObjectIdGreaterThanOrEqual(i,n);return{targetCoin:t.splitCoins(t.gas,[t.pure(n.toString())]),remainCoins:j.remainCoins,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:t.gas}}let a=Ce.selectCoinObjectIdGreaterThanOrEqual(i,n),l=a.amountArray.reduce((j,B)=>Number(j)+Number(B),0).toString(),u=a.objectArray;if(o)return{targetCoin:t.makeMoveVec({objects:u.map(j=>t.object(j))}),remainCoins:a.remainCoins,tragetCoinAmount:a.amountArray.reduce((j,B)=>Number(j)+Number(B),0).toString(),isMintZeroCoin:!1};let[h,...y]=u,v=t.object(h),T=v,O=a.amountArray.reduce((j,B)=>Number(j)+Number(B),0).toString(),P;return y.length>0&&t.mergeCoins(v,y.map(j=>t.object(j))),s&&Number(l)>Number(n)&&(T=t.splitCoins(v,[t.pure(n.toString())]),O=n.toString(),P=v),{targetCoin:T,remainCoins:a.remainCoins,originalSplitedCoin:P,tragetCoinAmount:O,isMintZeroCoin:!1}}static buildZeroValueCoin(t,e,i,n=!0){let r=ae.callMintZeroValueCoin(e,i),o;return n?o=e.makeMoveVec({objects:[r]}):o=r,{targetCoin:o,remainCoins:t,isMintZeroCoin:!0,tragetCoinAmount:"0"}}static buildCoinForAmountInterval(t,e,i,n,r=!0){let o=Ce.getCoinAssets(n,e);if(i.amountFirst===BigInt(0))return o.length>0?ae.buildCoin(t,[...e],[...o],i.amountFirst,n,r):ae.buildZeroValueCoin(e,t,n,r);let s=Ce.calculateTotalBalance(o);if(s>=i.amountFirst)return ae.buildCoin(t,[...e],[...o],i.amountFirst,n,r);if(s<i.amountSecond)throw new Y(`The amount(${s}) is Insufficient balance for ${n} , expect ${i.amountSecond} `,"InsufficientBalance");return ae.buildCoin(t,[...e],[...o],i.amountSecond,n,r)}static async buildRouterSwapTransaction(t,e,i,n,r){let o=new Un.TransactionBlock;return e.paths.length>1&&(e.partner=""),o=await this.buildRouterBasePathTx(t,e,i,n,o,r),o}static async buildRouterBasePathTx(t,e,i,n,r,o){let s=e.paths.filter(q=>q&&q.poolAddress),a=Number(s.reduce((q,K)=>q.add(K.amountIn),re).toString()),l=Number(s.reduce((q,K)=>q.add(K.amountOut),re).toString()),u=Math.round(i?Number(l.toString())*(1-e.priceSlippagePoint):Number(a.toString())*(1+e.priceSlippagePoint)),h=e.paths[0].coinType[0],y=e.paths[0].coinType[e.paths[0].coinType.length-1],v=ae.buildCoinForAmount(r,n,BigInt(i?a:u),h,!1,!0),T=v.originalSplitedCoin!==void 0,O=ae.buildCoinForAmount(r,n,0n,y,!1),P=await this.buildRouterBasePathReturnCoins(t,e,i,v,O,r),j=[],{toCoin:B,fromCoin:D}=P;if(r=P.tx,O.isMintZeroCoin?j.push({coinType:y,coin:B}):O.originalSplitedCoin!==void 0?r.mergeCoins(O.originalSplitedCoin,[B]):r.mergeCoins(O.targetCoin,[B]),T){let q=v?.originalSplitedCoin;r.mergeCoins(q,[D])}else j.push({coinType:h,coin:D});for(let q=0;q<j.length;q++)this.buildTransferCoin(t,r,j[q].coin,j[q].coinType,o);return r}static async buildRouterBasePathReturnCoins(t,e,i,n,r,o){let{clmm_pool:s,integrate:a}=t.sdkOptions,l=F(s).global_config_id,u=e.paths.filter(q=>q&&q.poolAddress),h=Number(u.reduce((q,K)=>q.add(K.amountIn),re).toString()),y=Number(u.reduce((q,K)=>q.add(K.amountOut),re).toString()),v=Math.round(i?Number(y.toString())*(1-e.priceSlippagePoint):Number(h.toString())*(1+e.priceSlippagePoint)),T=e.paths[0].coinType[0],O=e.paths[0].coinType[e.paths[0].coinType.length-1],P=n.targetCoin,j;r.isMintZeroCoin||r.originalSplitedCoin!==void 0?j=r.targetCoin:j=ae.callMintZeroValueCoin(o,O);let B=e.partner==="",D=B?_n:el;for(let q of u)if(q.poolAddress.length===1){let K=q.a2b[0],Z={amount:Number(q.amountIn.toString()),amountLimit:v,poolCoinA:q.a2b[0]?T:O,poolCoinB:q.a2b[0]?O:T},G=B?"swap":"swap_with_partner",J=K?P:j,x=K?j:P,I=i?q.amountIn.toString():q.amountOut.toString(),A=Ai.getDefaultSqrtPriceLimit(K).toString(),M=B?[o.object(l),o.object(q.poolAddress[0]),J,x,o.pure(K),o.pure(i),o.pure(I),o.pure(A),o.pure(!1),o.object(z)]:[o.object(l),o.object(q.poolAddress[0]),o.pure(e.partner),J,x,o.pure(K),o.pure(i),o.pure(I),o.pure(A),o.pure(!1),o.object(z)],k=[Z.poolCoinA,Z.poolCoinB],S=o.moveCall({target:`${t.sdkOptions.integrate.published_at}::${D}::${G}`,typeArguments:k,arguments:M});P=K?S[0]:S[1],j=K?S[1]:S[0]}else{let K=i?q.amountIn:q.rawAmountLimit[0],Z=i?0:q.amountOut,G="";q.a2b[0]?q.a2b[1]?G="swap_ab_bc":G="swap_ab_cb":q.a2b[1]?G="swap_ba_bc":G="swap_ba_cb",B||(G=`${G}_with_partner`);let J=Ai.getDefaultSqrtPriceLimit(q.a2b[0]),x=Ai.getDefaultSqrtPriceLimit(q.a2b[1]),I=B?[o.object(l),o.object(q.poolAddress[0]),o.object(q.poolAddress[1]),P,j,o.pure(i),o.pure(K.toString()),o.pure(Z.toString()),o.pure(J.toString()),o.pure(x.toString()),o.object(z)]:[o.object(l),o.object(q.poolAddress[0]),o.object(q.poolAddress[1]),o.pure(e.partner),P,j,o.pure(i),o.pure(K.toString()),o.pure(Z.toString()),o.pure(J.toString()),o.pure(x.toString()),o.object(z)],A=[q.coinType[0],q.coinType[1],q.coinType[2]],M=o.moveCall({target:`${a.published_at}::${D}::${G}`,typeArguments:A,arguments:I});P=M[0],j=M[1]}return this.checkCoinThreshold(t,i,o,j,v,O),{fromCoin:P,toCoin:j,tx:o}}static async buildAggregatorSwapReturnCoins(t,e,i,n,r,o,s,a){if(a==null){if(t.senderAddress.length===0)throw Error("recipient and this config sdk senderAddress all not set");a=t.senderAddress}e.splitPaths.length>1&&(r="");let l,u,h=e.splitPaths.some(y=>y.basePaths.some(v=>v.label==="Deepbook"));if((!e.byAmountIn||e.splitPaths.length===1)&&!h){let y=[];for(let O of e.splitPaths){let P=[],j=[],B=[],D=[];for(let K=0;K<O.basePaths.length;K+=1){let Z=O.basePaths[K];P.push(Z.direction),j.push(Z.poolAddress),B.push(new uo.default(Z.inputAmount.toString())),K===0?D.push(Z.fromCoin,Z.toCoin):D.push(Z.toCoin)}let q={amountIn:new uo.default(O.inputAmount.toString()),amountOut:new uo.default(O.outputAmount.toString()),poolAddress:j,a2b:P,rawAmountLimit:B,isExceed:!1,coinType:D};y.push(q)}let v={paths:y,partner:r,priceSlippagePoint:o},T=await this.buildRouterBasePathReturnCoins(t,v,e.byAmountIn,i,n,s);l=T.fromCoin,u=T.toCoin,s=T.tx}else{let y=Math.round(e.outputAmount*(1-o));l=i.targetCoin,n.isMintZeroCoin||n.originalSplitedCoin!==void 0?u=n.targetCoin:u=ae.callMintZeroValueCoin(s,e.toCoin);let v=!1,T;if(h){let[O,P]=zf.createAccountCap(a,t.sdkOptions,s);s=P,T=O,v=!0}for(let O=0;O<e.splitPaths.length;O+=1){let P=e.splitPaths[O],j;for(let B=0;B<P.basePaths.length;B+=1){let D=P.basePaths[B];if(D.label==="Deepbook")if(B===0)if(P.basePaths.length===1){let q=this.buildDeepbookBasePathTx(t,D,s,T,l,u,!1);l=q.from,u=q.to}else{j=ae.callMintZeroValueCoin(s,D.toCoin);let q=this.buildDeepbookBasePathTx(t,D,s,T,l,j,!1);l=q.from,j=q.to}else{let q=this.buildDeepbookBasePathTx(t,D,s,T,j,u,!0);j=q.from,u=q.to}if(D.label==="Cetus")if(B===0)if(P.basePaths.length===1){let q=this.buildClmmBasePathTx(t,D,s,e.byAmountIn,l,u,!1,r);l=q.from,u=q.to}else{j=ae.callMintZeroValueCoin(s,D.toCoin);let q=this.buildClmmBasePathTx(t,D,s,e.byAmountIn,l,j,!1,r);l=q.from,j=q.to}else{let q=this.buildClmmBasePathTx(t,D,s,e.byAmountIn,j,u,!0,r);j=q.from,u=q.to,s.moveCall({target:`${t.sdkOptions.integrate.published_at}::${Uf}::send_coin`,typeArguments:[D.fromCoin],arguments:[j,s.pure(a)]})}}}this.checkCoinThreshold(t,e.byAmountIn,s,u,y,e.toCoin),v&&(s=zf.deleteAccountCapByObject(T,t.sdkOptions,s))}return{fromCoin:l,toCoin:u,tx:s}}static async buildAggregatorSwapTransaction(t,e,i,n,r,o){let s=new Un.TransactionBlock,a=e.byAmountIn?Math.round(e.outputAmount*(1-r)):Math.round(e.inputAmount*(1+r)),l=ae.buildCoinForAmount(s,i,e.byAmountIn?BigInt(e.inputAmount):BigInt(a),e.fromCoin,!1,!0),u=l.originalSplitedCoin!=null,h=ae.buildCoinForAmount(s,i,0n,e.toCoin,!1),y=await this.buildAggregatorSwapReturnCoins(t,e,l,h,n,r,s,o),{fromCoin:v,toCoin:T}=y;s=y.tx;let O=[];if(h.isMintZeroCoin?O.push({coinType:e.toCoin,coin:T}):h.originalSplitedCoin!=null?s.mergeCoins(h.originalSplitedCoin,[T]):s.mergeCoins(h.targetCoin,[T]),u){let P=l.originalSplitedCoin;s.mergeCoins(P,[v])}else O.push({coinType:e.fromCoin,coin:v});for(let P=0;P<O.length;P++)this.buildTransferCoin(t,s,O[P].coin,O[P].coinType,o);return s}static checkCoinThreshold(t,e,i,n,r,o){e&&i.moveCall({target:`${t.sdkOptions.integrate.published_at}::${_n}::check_coin_threshold`,typeArguments:[o],arguments:[n,i.pure(r)]})}static buildDeepbookBasePathTx(t,e,i,n,r,o,s){let a=e.direction?r:o,l=e.direction?o:r,u=[i.object(e.poolAddress),n,i.pure(e.inputAmount),i.pure(0),i.pure(e.direction),a,l,i.pure(s),i.object(z)],h=e.direction?[e.fromCoin,e.toCoin]:[e.toCoin,e.fromCoin],y=i.moveCall({target:`${t.sdkOptions.deepbook_endpoint_v2.published_at}::endpoints_v2::swap`,typeArguments:h,arguments:u});return r=e.direction?y[0]:y[1],o=e.direction?y[1]:y[0],{from:r,to:o,tx:i}}static buildClmmBasePathTx(t,e,i,n,r,o,s,a){let{clmm_pool:l,integrate:u}=t.sdkOptions,h=F(l).global_config_id,y=e.direction?r:o,v=e.direction?o:r,T=a==="",O=T?_n:el,P=T?"swap":"swap_with_partner",j=n?e.inputAmount.toString():e.outputAmount.toString(),B=Ai.getDefaultSqrtPriceLimit(e.direction),D=T?[i.object(h),i.object(e.poolAddress),y,v,i.pure(e.direction),i.pure(n),i.pure(j),i.pure(B.toString()),i.pure(s),i.object(z)]:[i.object(h),i.object(e.poolAddress),i.pure(a),y,v,i.pure(e.direction),i.pure(n),i.pure(j),i.pure(B.toString()),i.pure(s),i.object(z)],q=e.direction?[e.fromCoin,e.toCoin]:[e.toCoin,e.fromCoin],K=i.moveCall({target:`${u.published_at}::${O}::${P}`,typeArguments:q,arguments:D});return y=K[0],v=K[1],r=e.direction?y:v,o=e.direction?v:y,{from:r,to:o,tx:i}}static buildCoinTypePair(t,e){let i=[];if(t.length===2){let n=[];n.push(t[0],t[1]),i.push(n)}else{let n=[];n.push(t[0],t[t.length-1]),i.push(n);for(let r=1;r<t.length-1;r+=1){if(e[r-1]===0)continue;let o=[];o.push(t[0],t[r],t[t.length-1]),i.push(o)}}return i}static buildTransferCoinToSender(t,e,i,n){e.moveCall({target:`${t.sdkOptions.integrate.published_at}::${Uf}::transfer_coin_to_sender`,typeArguments:[n],arguments:[i]})}static buildTransferCoin(t,e,i,n,r){r!=null?e.transferObjects([i],e.pure(r)):ae.buildTransferCoinToSender(t,e,i,n)}},oe=ae;uy(oe,"callMintZeroValueCoin",(t,e)=>t.moveCall({target:"0x2::coin::zero",typeArguments:[e]}));function Wt(t){return!(!t.startsWith("0x")||t.length!==66)}var vr=new Rt.default(1e9),zf=class{static createAccountCap(t,e,i,n=!1){if(t.length===0)throw Error("this config sdk senderAddress is empty");let{deepbook:r}=e,[o]=i.moveCall({target:`${r.published_at}::${_y}::create_account`,typeArguments:[],arguments:[]});return n&&i.transferObjects([o],i.pure(t)),[o,i]}static deleteAccountCap(t,e,i){let{deepbook:n}=e,r=[i.pure(t)];return i.moveCall({target:`${n.published_at}::${tl}::delete_account_cap`,typeArguments:[],arguments:r}),i}static deleteAccountCapByObject(t,e,i){let{deepbook:n}=e,r=[t];return i.moveCall({target:`${n.published_at}::${tl}::delete_account_cap`,typeArguments:[],arguments:r}),i}static async getAccountCap(t){let e=await t.fullClient.getOwnedObjectsByPage(t.senderAddress,{options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0},filter:{MoveModule:{package:t.sdkOptions.deepbook.package_id,module:tl}}});return e.data.length===0?"":e.data[0].data.objectId}static async getPools(t){let e=t.sdkOptions.deepbook.package_id,i=[];try{(await t.fullClient.queryEventsByPage({MoveEventType:`${e}::clob_v2::PoolCreated`})).data.forEach(r=>{let o=r.parsedJson;o&&i.push({poolID:o.pool_id,tickSize:Number(o.tick_size),lotSize:Number(o.lot_size),takerFeeRate:Number(o.taker_fee_rate),makerRebateRate:Number(o.maker_rebate_rate),baseAsset:o.base_asset.name,quoteAsset:o.quote_asset.name})})}catch(n){console.log("getPoolImmutables",n)}return i}static async getPoolAsks(t,e,i,n){let{simulationAccount:r}=t.sdkOptions,{deepbook_endpoint_v2:o}=t.sdkOptions,s=new qs.TransactionBlock,a=[],l=[i,n],u=[s.pure(e),s.pure("0"),s.pure("999999999999"),s.pure(z)];s.moveCall({target:`${o.published_at}::endpoints_v2::get_level2_book_status_ask_side`,arguments:u,typeArguments:l});let y=(await t.fullClient.devInspectTransactionBlock({transactionBlock:s,sender:r.address})).events?.filter(v=>V(v.type).name==="BookStatus");if(y.length===0)return a;for(let v=0;v<y[0].parsedJson.depths.length;v++){let T=y[0].parsedJson.price[v],O=y[0].parsedJson.depths[v],P={price:parseInt(T,10),quantity:parseInt(O,10)};a.push(P)}return a}static async getPoolBids(t,e,i,n){let{simulationAccount:r}=t.sdkOptions,{deepbook_endpoint_v2:o}=t.sdkOptions,s=new qs.TransactionBlock,a=[],l=[i,n],u=[s.pure(e),s.pure("0"),s.pure("999999999999"),s.pure(z)];s.moveCall({target:`${o.published_at}::endpoints_v2::get_level2_book_status_bid_side`,arguments:u,typeArguments:l});let y=(await t.fullClient.devInspectTransactionBlock({transactionBlock:s,sender:r.address})).events?.filter(v=>V(v.type).name==="BookStatus");if(y.length===0)return a;for(let v=0;v<y[0].parsedJson.depths.length;v++){let T=y[0].parsedJson.price[v],O=y[0].parsedJson.depths[v],P={price:parseInt(T,10),quantity:parseInt(O,10)};a.push(P)}return a}static async preSwap(t,e,i,n){let r=!1,o=re,s=new Rt.default(n),a=re,l=new Rt.default(n);if(i){let u=await this.getPoolBids(t,e.poolID,e.baseAsset,e.quoteAsset);u===null&&(r=!0),u=u.sort((h,y)=>y.price-h.price);for(let h=0;h<u.length;h+=1){let y=new Rt.default(u[h].quantity),v=new Rt.default(u[h].price),T=y.mul(new Rt.default(v)).mul(new Rt.default(e.takerFeeRate)).div(vr).div(vr);if(s.gt(y))s=s.sub(y),o=o.add(y.mul(v).div(vr).sub(T)),a=a.add(T);else{let O=s.mul(new Rt.default(u[h].price)).div(vr),P=O.mul(new Rt.default(e.takerFeeRate)).div(vr);o=o.add(O.sub(P)),s=s.sub(s),a=a.add(P)}if(s.eq(re))break}}else{let u=await this.getPoolAsks(t,e.poolID,e.baseAsset,e.quoteAsset);u===null&&(r=!0);for(let h=0;h<u.length;h+=1){let y=new Rt.default(u[h].price).mul(new Rt.default(u[h].quantity)).div(new Rt.default(1e9)),v=y.mul(new Rt.default(e.takerFeeRate)).div(vr),T=y.add(v);if(s.gt(y))o=o.add(new Rt.default(u[h].quantity)),s=s.sub(T),a=a.add(v);else{let O=new Rt.default(u[h].quantity).div(new Rt.default(e.lotSize)),P=T.div(O),j=s.div(P);o=o.add(j.muln(e.lotSize)),s=s.sub(j.mul(P)),a=a.add(j.div(O).mul(v))}if(s.eq(re))break}}return{poolAddress:e.poolID,estimatedAmountIn:l.sub(s).toNumber(),estimatedAmountOut:o.toNumber(),estimatedFeeAmount:a,isExceed:r,amount:Number(n),aToB:i,byAmountIn:!0}}static async simulateSwap(t,e,i,n,r,o){let{deepbook_endpoint_v2:s}=t.sdkOptions,a=new qs.TransactionBlock,l=await this.getAccountCap(t),u;if(l===""){let Z=this.createAccountCap(t.senderAddress,t.sdkOptions,a),G=Z[0];a=Z[1],u=G}else u=a.pure(l);let h=await t.getOwnerCoinAssets(t.senderAddress),v=oe.buildCoinForAmount(a,h,BigInt(o),i,!1)?.targetCoin,O=oe.buildCoinForAmount(a,h,BigInt(o),n,!1)?.targetCoin,P=[i,n],j=[a.pure(e),u,a.pure(o),a.pure(0),a.pure(r),v,O,a.pure(z)];a.moveCall({target:`${s.published_at}::${by}::swap`,arguments:j,typeArguments:P});let{simulationAccount:B}=t.sdkOptions,q=(await t.fullClient.devInspectTransactionBlock({transactionBlock:a,sender:B.address})).events?.filter(Z=>V(Z.type).name==="DeepbookSwapEvent");if(q.length===0)return null;let K=q[0].parsedJson;return{poolAddress:K.pool,estimatedAmountIn:K.amount_in,estimatedAmountOut:K.amount_out,aToB:K.atob}}},Qy=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPositionList(t,e="all"){let i={data:[],hasNextPage:!0},n=await this._sdk.fullClient.getDynamicFieldsByPage(t,e);i.hasNextPage=n.hasNextPage,i.nextCursor=n.nextCursor;let r=n.data.map(s=>{if(s.error!=null||s.data?.content?.dataType!=="moveObject")throw new Y(`when getPositionList get position objects error: ${s.error}, please check the rpc, contracts address config and position id.`,"InvalidConfig");return s.name.value}),o=await this._sdk.Position.getSipmlePositionList(r);return i.data=o,i}async getPoolImmutables(t=[],e=0,i=100,n=!1){let{package_id:r}=this._sdk.sdkOptions.clmm_pool,o=`${r}_getInitPoolEvent`,s=this.getCache(o,n),a=[],l=[];if(s!==void 0&&a.push(...s),a.length===0)try{(await this._sdk.fullClient.queryEventsByPage({MoveEventType:`${r}::factory::CreatePoolEvent`})).data.forEach(y=>{let v=y.parsedJson;v&&a.push({poolAddress:v.pool_id,tickSpacing:v.tick_spacing,coinTypeA:V(v.coin_type_a).full_address,coinTypeB:V(v.coin_type_b).full_address})}),this.updateCache(o,a,X)}catch(h){console.log("getPoolImmutables",h)}let u=t.length>0;for(let h=0;h<a.length;h+=1){let y=a[h];u&&!t.includes(y.poolAddress)||!u&&(h<e||h>=e+i)||l.push(y)}return l}async getPools(t=[],e=0,i=100){let n=[],r=[];t.length>0?r=[...t]:(await this.getPoolImmutables([],e,i,!1)).forEach(a=>r.push(a.poolAddress));let o=await this._sdk.fullClient.batchGetObjects(r,{showContent:!0,showType:!0});for(let s of o){if(s.error!=null||s.data?.content?.dataType!=="moveObject")throw new Y(`getPools error code: ${s.error?.code??"unknown error"}, please check config and object ids`,"InvalidPoolObject");let a=il(s);n.push(a);let l=`${a.poolAddress}_getPoolObject`;this.updateCache(l,a,X)}return n}async getPoolImmutablesWithPage(t="all",e=!1){let{package_id:i}=this._sdk.sdkOptions.clmm_pool,n=[],r={data:[],hasNextPage:!1},o=t==="all",s=`${i}_getPoolImmutables`;if(o){let a=this.getCache(s,e);a&&n.push(...a)}if(n.length===0)try{let a=`${i}::factory::CreatePoolEvent`,l=await this._sdk.fullClient.queryEventsByPage({MoveEventType:a},t);r.hasNextPage=l.hasNextPage,r.nextCursor=l.nextCursor,l.data.forEach(u=>{let h=u.parsedJson;if(h){let y={poolAddress:h.pool_id,tickSpacing:h.tick_spacing,coinTypeA:V(h.coin_type_a).full_address,coinTypeB:V(h.coin_type_b).full_address};n.push(y)}})}catch(a){console.log("getPoolImmutables",a)}return r.data=n,o&&this.updateCache(`${i}_getPoolImmutables`,n,X),r}async getPoolsWithPage(t=[]){let e=[],i=[];t.length>0?i=[...t]:(await this.getPoolImmutablesWithPage()).data.forEach(o=>i.push(o.poolAddress));let n=await this._sdk.fullClient.batchGetObjects(i,{showContent:!0,showType:!0});for(let r of n){if(r.error!=null||r.data?.content?.dataType!=="moveObject")throw new Y(`getPoolWithPages error code: ${r.error?.code??"unknown error"}, please check config and object ids`,"InvalidPoolObject");let o=il(r);e.push(o);let s=`${o.poolAddress}_getPoolObject`;this.updateCache(s,o,X)}return e}async getPool(t,e=!0){let i=`${t}_getPoolObject`,n=this.getCache(i,e);if(n!==void 0)return n;let r=await this._sdk.fullClient.getObject({id:t,options:{showType:!0,showContent:!0}});if(r.error!=null||r.data?.content?.dataType!=="moveObject")throw new Y(`getPool error code: ${r.error?.code??"unknown error"}, please check config and object id`,"InvalidPoolObject");let o=il(r);return this.updateCache(i,o),o}async creatPoolsTransactionPayload(t){for(let i of t)if(Us((0,lo.normalizeSuiAddress)(i.coinTypeA),(0,lo.normalizeSuiAddress)(i.coinTypeB))){let n=i.coinTypeB;i.coinTypeB=i.coinTypeA,i.coinTypeA=n}return await this.creatPool(t)}async creatPoolTransactionPayload(t){if(Us((0,lo.normalizeSuiAddress)(t.coinTypeA),(0,lo.normalizeSuiAddress)(t.coinTypeB))){let e=t.coinTypeB;t.coinTypeB=t.coinTypeA,t.coinTypeA=e}return"fix_amount_a"in t?await this.creatPoolAndAddLiquidity(t):await this.creatPool([t])}async getClmmConfigs(t=!1){let{package_id:e}=this._sdk.sdkOptions.clmm_pool,i=`${e}_getInitEvent`,n=this.getCache(i,t);if(n!==void 0)return n;let r=await this._sdk.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=zn(r),s=(await this._sdk.fullClient.queryEventsByPage({Transaction:o})).data,a={pools_id:"",global_config_id:"",global_vault_id:"",admin_cap_id:""};return s.length>0&&(s.forEach(l=>{let u=l.parsedJson;if(l.type)switch(V(l.type).full_address){case`${e}::config::InitConfigEvent`:a.global_config_id=u.global_config_id,a.admin_cap_id=u.admin_cap_id;break;case`${e}::factory::InitFactoryEvent`:a.pools_id=u.pools_id;break;case`${e}::rewarder::RewarderInitEvent`:a.global_vault_id=u.global_vault_id;break;case`${e}::partner::InitPartnerEvent`:a.partners_id=u.partners_id;break;default:break}}),this.updateCache(i,a,X)),a}async getSuiTransactionResponse(t,e=!1){let i=`${t}_getSuiTransactionResponse`,n=this.getCache(i,e);if(n!==void 0)return n;let r;try{r=await this._sdk.fullClient.getTransactionBlock({digest:t,options:{showEvents:!0,showEffects:!0,showBalanceChanges:!0,showInput:!0,showObjectChanges:!0}})}catch{r=await this._sdk.fullClient.getTransactionBlock({digest:t,options:{showEvents:!0,showEffects:!0}})}return this.updateCache(i,r,X),r}async creatPool(t){let e=new kr.TransactionBlock,{integrate:i,clmm_pool:n}=this.sdk.sdkOptions,r=F(n),o=r.global_config_id,s=r.pools_id;return t.forEach(a=>{let l=[e.object(o),e.object(s),e.pure(a.tick_spacing.toString()),e.pure(a.initialize_sqrt_price),e.pure(a.uri),e.object(z)];e.moveCall({target:`${i.published_at}::${Tr}::create_pool`,typeArguments:[a.coinTypeA,a.coinTypeB],arguments:l})}),e}async creatPoolAndAddLiquidity(t){if(!Wt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let e=new kr.TransactionBlock,{integrate:i,clmm_pool:n}=this.sdk.sdkOptions,r=F(n),o=r.global_config_id,s=r.pools_id,a=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress),l=oe.buildAddLiquidityFixTokenCoinInput(e,!t.fix_amount_a,t.amount_a,t.slippage,t.coinTypeA,a,!1),u=oe.buildAddLiquidityFixTokenCoinInput(e,t.fix_amount_a,t.amount_b,t.slippage,t.coinTypeB,a,!1),h=[e.pure(o),e.pure(s),e.pure(t.tick_spacing.toString()),e.pure(t.initialize_sqrt_price),e.pure(t.uri),l.targetCoin,u.targetCoin,e.pure(It(BigInt(t.tick_lower)).toString()),e.pure(It(BigInt(t.tick_upper)).toString()),e.pure(t.amount_a),e.pure(t.amount_b),e.pure(t.fix_amount_a),e.pure(z)];return e.moveCall({target:`${i.published_at}::${Xi}::create_pool_with_liquidity`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:h}),e}async fetchTicks(t){let e=[],i=[];for(;;){let r=await this.getTicks({pool_id:t.pool_id,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,start:i,limit:512});if(e=[...e,...r],r.length<512)break;i=[r[r.length-1].index]}return e}async getTicks(t){let{integrate:e,simulationAccount:i}=this.sdk.sdkOptions,n=[],r=[t.coinTypeA,t.coinTypeB],o=new kr.TransactionBlock,s=[o.pure(t.pool_id),o.pure(t.start),o.pure(t.limit.toString())];if(o.moveCall({target:`${e.published_at}::${Jt}::fetch_ticks`,arguments:s,typeArguments:r}),!Wt(i.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let a=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:o,sender:i.address});if(a.error!=null)throw new Y(`getTicks error code: ${a.error??"unknown error"}, please check config and tick object ids`,"InvalidTickObjectId");return a.events?.forEach(l=>{V(l.type).name==="FetchTicksResultEvent"&&l.parsedJson.ticks.forEach(u=>{n.push(Hy(u))})}),n}async fetchPositionRewardList(t){let{integrate:e,simulationAccount:i}=this.sdk.sdkOptions,n=[],r=[],o=512;for(;;){let s=[t.coinTypeA,t.coinTypeB],a=new kr.TransactionBlock,l=[a.object(t.pool_id),a.pure(r,"u64"),a.pure(o.toString(),"u64")];if(a.moveCall({target:`${e.published_at}::${Jt}::fetch_positions`,arguments:l,typeArguments:s}),!Wt(i.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let u=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:a,sender:i.address});if(u.error!=null)throw new Y(`fetch position reward error code: ${u.error??"unknown error"}, please check config and tick object ids`,"InvalidPositionRewardObject");let h=[];if(u?.events?.forEach(y=>{V(y.type).name==="FetchPositionsEvent"&&y.parsedJson.positions.forEach(v=>{let T=rh(v);h.push(T)})}),n.push(...h),h.length<o)break;r=[h[h.length-1].pos_object_id]}return n}async fetchTicksByRpc(t){let e=[],i=null,n=512;for(;;){let r=[],o=await this.sdk.fullClient.getDynamicFields({parentId:t,cursor:i,limit:n});if(i=o.nextCursor,o.data.forEach(s=>{V(s.objectType).module==="skip_list"&&r.push(s.objectId)}),e=[...e,...await this.getTicksByRpc(r)],i===null||o.data.length<n)break}return e}async getTicksByRpc(t){let e=[],i=await this.sdk.fullClient.batchGetObjects(t,{showContent:!0,showType:!0});for(let n of i){if(n.error!=null||n.data?.content?.dataType!=="moveObject")throw new Y(`getTicksByRpc error code: ${n.error?.code??"unknown error"}, please check config and tick object ids`,"InvalidTickObjectId");let r=nl(n);r!=null&&e.push(r)}return e}async getTickDataByIndex(t,e){let i={type:"u64",value:It(BigInt(Ay(e).toString())).toString()},n=await this.sdk.fullClient.getDynamicFieldObject({parentId:t,name:i});if(n.error!=null||n.data?.content?.dataType!=="moveObject")throw new Y(`get tick by index: ${e} error: ${n.error}`,"InvalidTickIndex");return nl(n)}async getTickDataByObjectId(t){let e=await this.sdk.fullClient.getObject({id:t,options:{showContent:!0}});if(e.error!=null||e.data?.content?.dataType!=="moveObject")throw new Y(`getTicksByRpc error code: ${e.error?.code??"unknown error"}, please check config and tick object ids`,"InvalidTickObjectId");return nl(e)}async getPartnerRefFeeAmount(t){let e=await this._sdk.fullClient.batchGetObjects([t],{showOwner:!0,showContent:!0,showDisplay:!0,showType:!0});if(e[0].error!=null||e[0].data?.content?.dataType!=="moveObject")throw new Y(`get partner by object id: ${t} error: ${e[0].error}`,"NotFoundPartnerObject");let i=e[0].data.content.fields.balances,n=await this._sdk.fullClient.getDynamicFieldsByPage(i.fields.id.id),r=[];n.data.forEach(a=>{if(a.error!=null||a.data?.content?.dataType!=="moveObject")throw new Y(`when getPartnerRefFeeAmount get partner object error: ${a.error}, please check the rpc, contracts address config and position id.`,"InvalidConfig");r.push(a.objectId)});let o=[];return(await this._sdk.fullClient.batchGetObjects(r,{showOwner:!0,showContent:!0,showDisplay:!0,showType:!0})).forEach(a=>{if(a.error!=null||a.data?.content?.dataType!=="moveObject")throw new Y(`get coin by object id: ${a.data.objectId} error: ${a.error}`,"InvalidParnterRefFeeFields");let l={coinAddress:a.data.content.fields.name,coinObjectId:a.data.objectId,balance:BigInt(a.data.content.fields.value)};o.push(l)}),o}async claimPartnerRefFeePayload(t,e,i){let n=new kr.TransactionBlock,{clmm_pool:r}=this.sdk.sdkOptions,{global_config_id:o}=F(r),s=[i],a=[n.object(o),n.object(t),n.object(e)];return n.moveCall({target:`${r.published_at}::${my}::claim_ref_fee`,arguments:a,typeArguments:s}),n}updateCache(t,e,i=Ge){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t],n=i?.isValid();if(!e&&n)return i.value;n||delete this._cache[t]}},ew=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}buildPositionType(){return`${this._sdk.sdkOptions.clmm_pool.package_id}::position::Position`}async getPositionList(t,e=[]){let i=[],n=await this._sdk.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0},filter:{Package:this._sdk.sdkOptions.clmm_pool.package_id}}),r=e.length>0;for(let o of n.data)if(V(o.data.type).full_address===this.buildPositionType()){let a=Ji(o),l=`${a.pos_object_id}_getPositionList`;this.updateCache(l,a,X),r?e.includes(a.pool)&&i.push(a):i.push(a)}return i}async getPosition(t,e,i=!0){let n=await this.getSimplePosition(e);return i&&(n=await this.updatePositionRewarders(t,n)),n}async getPositionById(t,e=!0){let i=await this.getSimplePosition(t);if(e){let n=await this._sdk.Pool.getPool(i.pool,!1);return await this.updatePositionRewarders(n.position_manager.positions_handle,i)}return i}async getSimplePosition(t){let e=`${t}_getPositionList`,i=this.getSimplePositionByCache(t);if(i===void 0){let n=await this.sdk.fullClient.getObject({id:t,options:{showContent:!0,showType:!0,showDisplay:!0,showOwner:!0}});i=Ji(n),this.updateCache(e,i,X)}return i}getSimplePositionByCache(t){let e=`${t}_getPositionList`;return this.getCache(e)}async getSipmlePositionList(t){let e=[],i=[];return t.forEach(n=>{let r=this.getSimplePositionByCache(n);r?e.push(r):i.push(n)}),i.length>0&&(await this._sdk.fullClient.batchGetObjects(i,{showOwner:!0,showContent:!0,showDisplay:!0,showType:!0})).forEach(r=>{let o=Ji(r);e.push(o);let s=`${o.pos_object_id}_getPositionList`;this.updateCache(s,o,X)}),e}async updatePositionRewarders(t,e){let i=await this.getPositionRewarders(t,e.pos_object_id);return{...e,...i}}async getPositionRewarders(t,e){try{let i=await this._sdk.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),r=te(i.data).value.fields.value;return rh(r)}catch(i){console.log(i);return}}async fetchPosFeeAmount(t){let{clmm_pool:e,integrate:i,simulationAccount:n}=this.sdk.sdkOptions,r=new Kn.TransactionBlock;for(let l of t){let u=[l.coinTypeA,l.coinTypeB],h=[r.object(F(e).global_config_id),r.object(l.poolAddress),r.pure(l.positionId)];r.moveCall({target:`${i.published_at}::${Jt}::fetch_position_fees`,arguments:h,typeArguments:u})}if(!Wt(n.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let o=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:r,sender:n.address});if(o.error!=null)throw new Y(`fetch position fee error code: ${o.error??"unknown error"}, please check config and postion and pool object ids`,"InvalidPoolObject");let s=o.events?.filter(l=>V(l.type).name==="FetchPositionFeesEvent");if(s.length===0)return[];let a=[];for(let l=0;l<s.length;l+=1){let{parsedJson:u}=s[l],h={feeOwedA:new sl.default(u.fee_owned_a),feeOwedB:new sl.default(u.fee_owned_b),position_id:u.position_id};a.push(h)}return a}async batchFetchPositionFees(t){let e=[];for(let n of t){let r=await this._sdk.Position.getPositionById(n,!1),o=await this._sdk.Pool.getPool(r.pool,!1);e.push({poolAddress:o.poolAddress,positionId:r.pos_object_id,coinTypeA:o.coinTypeA,coinTypeB:o.coinTypeB})}let i={};if(e.length>0){let n=await this.fetchPosFeeAmount(e);for(let r of n)i[r.position_id]=r;return i}return i}async createAddLiquidityFixTokenPayload(t,e){if(!Wt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let i=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);if(e){let{isAdjustCoinA:n,isAdjustCoinB:r}=Ks(t);if(t=t,t.fix_amount_a&&n||!t.fix_amount_a&&r)return await oe.buildAddLiquidityFixTokenForGas(this._sdk,i,t,e)}return oe.buildAddLiquidityFixToken(this._sdk,i,t)}async createAddLiquidityPayload(t){let{integrate:e,clmm_pool:i}=this._sdk.sdkOptions;if(!Wt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let n=It(BigInt(t.tick_lower)).toString(),r=It(BigInt(t.tick_upper)).toString(),o=[t.coinTypeA,t.coinTypeB],s=new Kn.TransactionBlock,a=!(0,oh.isValidSuiObjectId)(t.pos_id),l=BigInt(t.max_amount_a),u=BigInt(t.max_amount_b),h=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress),y=oe.buildCoinForAmount(s,h,l,t.coinTypeA,!1),v=oe.buildCoinForAmount(s,h,u,t.coinTypeB,!1);return a?s.moveCall({target:`${e.published_at}::${Xi}::open_position_with_liquidity`,typeArguments:o,arguments:[s.object(F(i).global_config_id),s.object(t.pool_id),s.pure(n),s.pure(r),y.targetCoin,v.targetCoin,s.pure(t.max_amount_a),s.pure(t.max_amount_b),s.pure(t.delta_liquidity),s.object(z)]}):(s=oe.createCollectRewarderAndFeeParams(this._sdk,s,t,h,y.remainCoins,v.remainCoins),s.moveCall({target:`${e.published_at}::${Xi}::add_liquidity`,typeArguments:o,arguments:[s.object(F(i).global_config_id),s.object(t.pool_id),s.object(t.pos_id),y.targetCoin,v.targetCoin,s.pure(t.max_amount_a),s.pure(t.max_amount_b),s.pure(t.delta_liquidity),s.object(z)]})),s}async removeLiquidityTransactionPayload(t){if(!Wt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let{clmm_pool:e,integrate:i}=this.sdk.sdkOptions,n="remove_liquidity",r=new Kn.TransactionBlock,o=[t.coinTypeA,t.coinTypeB],s=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);r=oe.createCollectRewarderAndFeeParams(this._sdk,r,t,s);let a=[r.object(F(e).global_config_id),r.object(t.pool_id),r.object(t.pos_id),r.pure(t.delta_liquidity),r.pure(t.min_amount_a),r.pure(t.min_amount_b),r.object(z)];return r.moveCall({target:`${i.published_at}::${Tr}::${n}`,typeArguments:o,arguments:a}),r}async closePositionTransactionPayload(t){if(!Wt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let{clmm_pool:e,integrate:i}=this.sdk.sdkOptions,n=new Kn.TransactionBlock,r=[t.coinTypeA,t.coinTypeB],o=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);return n=oe.createCollectRewarderAndFeeParams(this._sdk,n,t,o),n.moveCall({target:`${i.published_at}::${Tr}::close_position`,typeArguments:r,arguments:[n.object(F(e).global_config_id),n.object(t.pool_id),n.object(t.pos_id),n.pure(t.min_amount_a),n.pure(t.min_amount_b),n.object(z)]}),n}openPositionTransactionPayload(t){let{clmm_pool:e,integrate:i}=this.sdk.sdkOptions,n=new Kn.TransactionBlock,r=[t.coinTypeA,t.coinTypeB],o=It(BigInt(t.tick_lower)).toString(),s=It(BigInt(t.tick_upper)).toString(),a=[n.pure(F(e).global_config_id),n.pure(t.pool_id),n.pure(o),n.pure(s)];return n.moveCall({target:`${i.published_at}::${Tr}::open_position`,typeArguments:r,arguments:a}),n}async collectFeeTransactionPayload(t){if(!Wt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let e=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress,null,!0),i=new Kn.TransactionBlock,n=oe.buildCoinForAmount(i,e,BigInt(0),t.coinTypeA,!1),r=oe.buildCoinForAmount(i,e,BigInt(0),t.coinTypeB,!1);return this.createCollectFeePaylod(t,i,n.targetCoin,r.targetCoin),i}createCollectFeePaylod(t,e,i,n){let{clmm_pool:r,integrate:o}=this.sdk.sdkOptions,s=[t.coinTypeA,t.coinTypeB],a=[e.object(F(r).global_config_id),e.object(t.pool_id),e.object(t.pos_id),i,n];return e.moveCall({target:`${o.published_at}::${Xi}::collect_fee`,typeArguments:s,arguments:a}),e}async calculateFee(t){let e=await this.collectFeeTransactionPayload(t);if(!Wt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let i=await this._sdk.fullClient.devInspectTransactionBlock({transactionBlock:e,sender:this._sdk.senderAddress});for(let n of i.events)if(V(n.type).name==="CollectFeeEvent"){let r=n.parsedJson;return{feeOwedA:r.amount_a,feeOwedB:r.amount_b}}return{feeOwedA:"0",feeOwedB:"0"}}updateCache(t,e,i=Ge){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t],n=i?.isValid();if(!e&&n)return i.value;n||delete this._cache[t]}},tw=class{_sdk;growthGlobal;constructor(t){this._sdk=t,this.growthGlobal=[re,re,re]}get sdk(){return this._sdk}async emissionsEveryDay(t){let i=(await this.sdk.Pool.getPool(t)).rewarder_infos;if(!i)return null;let n=[];for(let r of i){let o=Ae.fromX64(new Fe.default(r.emissions_per_second));n.push({emissions:Math.floor(o.toNumber()*60*60*24),coin_address:r.coinAddress})}return n}async updatePoolRewarder(t,e){let i=await this.sdk.Pool.getPool(t),n=i.rewarder_last_updated_time;if(i.rewarder_last_updated_time=e.toString(),Number(i.liquidity)===0||e.eq(new Fe.default(n)))return i;let r=e.div(new Fe.default(1e3)).sub(new Fe.default(n)).add(new Fe.default(15)),o=i.rewarder_infos;for(let s=0;s<o.length;s+=1){let a=o[s],l=Ae.checkMulDivFloor(r,new Fe.default(a.emissions_per_second),new Fe.default(i.liquidity),128);this.growthGlobal[s]=new Fe.default(a.growth_global).add(new Fe.default(l))}return i}async posRewardersAmount(t,e,i){let n=Date.parse(new Date().toString()),r=await this.updatePoolRewarder(t,new Fe.default(n)),o=await this.sdk.Position.getPositionRewarders(e,i);if(o===void 0)return[];let s=r.ticks_handle,a=await this.sdk.Pool.getTickDataByIndex(s,o.tick_lower_index),l=await this.sdk.Pool.getTickDataByIndex(s,o.tick_upper_index);return this.posRewardersAmountInternal(r,o,a,l)}async poolRewardersAmount(t,e){let i=Date.parse(new Date().toString()),n=await this.updatePoolRewarder(e,new Fe.default(i)),r=await this.sdk.Position.getPositionList(t,[e]),o=await this.getPoolLowerAndUpperTicks(n.ticks_handle,r),s=[re,re,re];for(let a=0;a<r.length;a+=1){let l=await this.posRewardersAmountInternal(n,r[a],o[0][a],o[1][a]);for(let u=0;u<3;u+=1)s[u]=s[u].add(l[u].amount_owed)}return s}posRewardersAmountInternal(t,e,i,n){let r=e.tick_lower_index,o=e.tick_upper_index,s=Zy(t,i,n,r,o,this.growthGlobal),a=[],l=[];if(s.length>0){let u=Ae.subUnderflowU128(s[0],new Fe.default(e.reward_growth_inside_0));u.gt(new Fe.default("3402823669209384634633745948738404"))&&(u=Ri);let h=Ae.checkMulShiftRight(new Fe.default(e.liquidity),u,64,128);a.push(s[0]),l.push({amount_owed:new Fe.default(e.reward_amount_owed_0).add(h),coin_address:t.rewarder_infos[0].coinAddress})}if(s.length>1){let u=Ae.subUnderflowU128(s[1],new Fe.default(e.reward_growth_inside_1));u.gt(new Fe.default("3402823669209384634633745948738404"))&&(u=Ri);let h=Ae.checkMulShiftRight(new Fe.default(e.liquidity),u,64,128);a.push(s[1]),l.push({amount_owed:new Fe.default(e.reward_amount_owed_1).add(h),coin_address:t.rewarder_infos[1].coinAddress})}if(s.length>2){let u=Ae.subUnderflowU128(s[2],new Fe.default(e.reward_growth_inside_2));u.gt(new Fe.default("3402823669209384634633745948738404"))&&(u=Ri);let h=Ae.checkMulShiftRight(new Fe.default(e.liquidity),u,64,128);a.push(s[2]),l.push({amount_owed:new Fe.default(e.reward_amount_owed_2).add(h),coin_address:t.rewarder_infos[2].coinAddress})}return l}async batchFetchPositionRewarders(t){let e=[];for(let n of t){let r=await this._sdk.Position.getPositionById(n,!1),o=await this._sdk.Pool.getPool(r.pool,!1);e.push({poolAddress:o.poolAddress,positionId:r.pos_object_id,coinTypeA:o.coinTypeA,coinTypeB:o.coinTypeB,rewarderInfo:o.rewarder_infos})}let i={};if(e.length>0){let n=await this.fetchPosRewardersAmount(e);for(let r of n)i[r.positionId]=r.rewarderAmountOwed;return i}return i}async fetchPositionRewarders(t,e){let i={poolAddress:t.poolAddress,positionId:e,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,rewarderInfo:t.rewarder_infos};return(await this.fetchPosRewardersAmount([i]))[0].rewarderAmountOwed}async batchFetchPositionFees(t){let e=[];for(let n of t){let r=await this._sdk.Position.getPositionById(n,!1),o=await this._sdk.Pool.getPool(r.pool,!1);e.push({poolAddress:o.poolAddress,positionId:r.pos_object_id,coinTypeA:o.coinTypeA,coinTypeB:o.coinTypeB})}let i={};if(e.length>0){let n=await this.fetchPosFeeAmount(e);for(let r of n)i[r.position_id]=r;return i}return i}async fetchPosFeeAmount(t){let{clmm_pool:e,integrate:i,simulationAccount:n}=this.sdk.sdkOptions,r=new Ls.TransactionBlock;for(let l of t){let u=[l.coinTypeA,l.coinTypeB],h=[r.object(F(e).global_config_id),r.object(l.poolAddress),r.pure(l.positionId)];r.moveCall({target:`${i.published_at}::${Jt}::fetch_position_fees`,arguments:h,typeArguments:u})}let s=(await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:r,sender:n.address})).events?.filter(l=>V(l.type).name==="FetchPositionFeesEvent");if(s.length===0)return[];let a=[];for(let l=0;l<s.length;l+=1){let{parsedJson:u}=s[l],h={feeOwedA:new Fe.default(u.fee_owned_a),feeOwedB:new Fe.default(u.fee_owned_b),position_id:u.position_id};a.push(h)}return a}async fetchPosRewardersAmount(t){let{clmm_pool:e,integrate:i,simulationAccount:n}=this.sdk.sdkOptions,r=new Ls.TransactionBlock;for(let l of t){let u=[l.coinTypeA,l.coinTypeB],h=[r.object(F(e).global_config_id),r.object(l.poolAddress),r.pure(l.positionId),r.object(z)];r.moveCall({target:`${i.published_at}::${Jt}::fetch_position_rewards`,arguments:h,typeArguments:u})}if(!Wt(n.address))throw new Y(`this config simulationAccount: ${n.address} is not set right`,"InvalidSimulateAccount");let o=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:r,sender:n.address});if(o.error!=null)throw new Y(`fetch position rewards error code: ${o.error??"unknown error"}, please check config and params`,"InvalidConfig");let s=o.events?.filter(l=>V(l.type).name==="FetchPositionRewardsEvent");if(s.length===0)return[];if(s.length!==t.length)throw new Y("valueData.length !== params.pools.length");let a=[];for(let l=0;l<s.length;l+=1){let u={poolAddress:t[l].poolAddress,positionId:t[l].positionId,rewarderAmountOwed:[]};for(let h=0;h<t[l].rewarderInfo.length;h+=1)u.rewarderAmountOwed.push({amount_owed:new Fe.default(s[l].parsedJson.data[h]),coin_address:t[l].rewarderInfo[h].coinAddress});a.push(u)}return a}async fetchPoolRewardersAmount(t,e){let i=await this.sdk.Pool.getPool(e),n=await this.sdk.Position.getPositionList(t,[e]),r=[];for(let a of n)r.push({poolAddress:i.poolAddress,positionId:a.pos_object_id,rewarderInfo:i.rewarder_infos,coinTypeA:i.coinTypeA,coinTypeB:i.coinTypeB});let o=await this.fetchPosRewardersAmount(r),s=[re,re,re];if(o!=null)for(let a of o)for(let l=0;l<a.rewarderAmountOwed.length;l+=1)s[l]=s[l].add(a.rewarderAmountOwed[l].amount_owed);return s}async getPoolLowerAndUpperTicks(t,e){let i=[],n=[];for(let r of e){let o=await this.sdk.Pool.getTickDataByIndex(t,r.tick_lower_index),s=await this.sdk.Pool.getTickDataByIndex(t,r.tick_upper_index);i.push(o),n.push(s)}return[i,n]}async collectRewarderTransactionPayload(t){if(!Wt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let e=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress,null),i=new Ls.TransactionBlock;return i=oe.createCollectRewarderAndFeeParams(this._sdk,i,t,e),i}createCollectRewarderPaylod(t,e,i){let{clmm_pool:n,integrate:r}=this.sdk.sdkOptions,o=F(n),s=[t.coinTypeA,t.coinTypeB];return t.rewarder_coin_types.forEach((a,l)=>{e&&e.moveCall({target:`${r.published_at}::${Xi}::collect_reward`,typeArguments:[...s,a],arguments:[e.object(o.global_config_id),e.object(t.pool_id),e.object(t.pos_id),e.object(o.global_vault_id),i[l],e.object(z)]})}),e}};function Rs(t,e){return{pair:`${t}-${e}`,reversePair:`${e}-${t}`}}var iw=class{graph;pathProviders;coinProviders;_coinAddressMap;poolAddressMap;_sdk;constructor(t){this.pathProviders=[],this.coinProviders={coins:[]},this.graph=new Wn.Graph(!1),this._coinAddressMap=new Map,this.poolAddressMap=new Map,this._sdk=t,this.getPoolAddressMapAndDirection=this.getPoolAddressMapAndDirection.bind(this),this.setCoinList=this.setCoinList.bind(this),this.loadGraph=this.loadGraph.bind(this),this.addCoinProvider=this.addCoinProvider.bind(this),this.addPathProvider=this.addPathProvider.bind(this),this.preRouterSwapA2B2C=this.preRouterSwapA2B2C.bind(this),this.price=this.price.bind(this),this.getPoolWithTVL=this.getPoolWithTVL.bind(this)}get sdk(){return this._sdk}getPoolAddressMapAndDirection(t,e){let{pair:i,reversePair:n}=Rs(t,e),r=this.poolAddressMap.get(i);if(r!=null)return{addressMap:r,direction:!0};if(r=this.poolAddressMap.get(n),r!=null)return{addressMap:r,direction:!1}}setCoinList(){this.coinProviders.coins.forEach(t=>{this._coinAddressMap.set(t.address,t)})}loadGraph(t,e){this.addCoinProvider(t),this.addPathProvider(e),this.setCoinList(),this.pathProviders.forEach(i=>{let{paths:n}=i;n.forEach(r=>{let o=this.graph.getVertexByKey(r.base)??new Wn.GraphVertex(r.base),s=this.graph.getVertexByKey(r.quote)??new Wn.GraphVertex(r.quote);this.graph.addEdge(new Wn.GraphEdge(o,s));let a=this._coinAddressMap.get(r.base),l=this._coinAddressMap.get(r.quote);if(a!=null&&l!=null){let u=Rs(r.base,r.quote).pair;this.poolAddressMap.set(u,r.addressMap)}})})}addPathProvider(t){for(let e=0;e<t.paths.length;e+=1){let{base:i,quote:n}=t.paths[e];i.localeCompare(n)<0&&(t.paths[e].base=n,t.paths[e].quote=i),i==="0x2::sui::SUI"&&(t.paths[e].base=n,t.paths[e].quote=i),n==="0x2::sui::SUI"&&(t.paths[e].base=i,t.paths[e].quote=n)}return this.pathProviders.push(t),this}addCoinProvider(t){return this.coinProviders=t,this}tokenInfo(t){return this._coinAddressMap.get(t)}getFeeRate(t,e,i){let n=Rs(t,e).pair,r=this.poolAddressMap.get(n);if(r!=null){for(let[a,l]of r.entries())if(l===i)return a*100}let o=Rs(t,e).reversePair,s=this.poolAddressMap.get(o);if(s!=null){for(let[a,l]of s.entries())if(l===i)return a*100}return 0}async price(t,e,i,n,r,o,s){let a=this.tokenInfo(t),l=this.tokenInfo(e);if(a===void 0||l===void 0)throw new Y("From/To coin is undefined","InvalidCoin");let u=this.graph.getVertexByKey(a.address),h=this.graph.getVertexByKey(l.address),y=this.graph.findAllPath(u,h),v=Array.from(y);if(v.length===0)throw new Y("No find valid path in coin graph","NotFoundPath");let T=[];for(let A=0;A<v.length;A+=1){let M=v[A];if(M.length>3)continue;let k=[],S=[],c=[],d=[];for(let f=0;f<M.length-1;f+=1){let b=M[f].value.toString(),p=M[f+1].value.toString(),g=this.getPoolAddressMapAndDirection(b,p),w=g?.addressMap,_=g?.direction;w!=null&&_!=null&&(S.push(_),k.push(b),k.push(p),w.forEach(m=>{f===0?c.push(m):d.push(m)}))}for(let f of c)if(d.length>0)for(let b of d){let p={stepNums:2,poolAB:f,poolBC:b,a2b:S[0],b2c:S[1],amount:i,byAmountIn:n,coinTypeA:k[0],coinTypeB:k[1],coinTypeC:k[3]};T.push(p)}else{let b={stepNums:1,poolAB:f,poolBC:void 0,a2b:S[0],b2c:void 0,amount:i,byAmountIn:n,coinTypeA:k[0],coinTypeB:k[1],coinTypeC:void 0};T.push(b)}}let O=T.filter(A=>A.stepNums===1),P=T.filter(A=>A.stepNums!==1),j=[];try{j=await this.getPoolWithTVL()}catch{j=[]}if(j.length>0){let A=new Map(j.map(M=>[M.poolAddress,M]));P.sort((M,k)=>{let S=0,c=0;if(A.has(M.poolAB)&&A.has(M.poolBC)){let d=A.get(M.poolAB),f=A.get(M.poolBC);S=Math.min(d.tvl,f.tvl)}if(A.has(k.poolAB)&&A.has(k.poolBC)){let d=A.get(k.poolAB),f=A.get(k.poolBC);c=Math.min(d.tvl,f.tvl)}return c-S})}if(T=[...O,...P],T.length===0){if(s!=null){let A=await this.sdk.Swap.preSwapWithMultiPool(s),M={amountIn:new ni.default(A.estimatedAmountIn),amountOut:new ni.default(A.estimatedAmountOut),poolAddress:[A.poolAddress],a2b:[A.aToB],rawAmountLimit:n?[A.estimatedAmountOut]:[A.estimatedAmountIn],isExceed:A.isExceed,coinType:[t,e]},k={paths:[M],partner:o,priceSlippagePoint:r};return{amountIn:new ni.default(A.estimatedAmountIn),amountOut:new ni.default(A.estimatedAmountOut),paths:[M],a2b:A.aToB,b2c:void 0,byAmountIn:n,isExceed:A.isExceed,targetSqrtPrice:[A.estimatedEndSqrtPrice],currentSqrtPrice:[A.estimatedStartSqrtPrice],coinTypeA:t,coinTypeB:e,coinTypeC:void 0,createTxParams:k}}throw new Y("No parameters available for service downgrade","NoDowngradeNeedParams")}let B=await this.preRouterSwapA2B2C(T.slice(0,16));if(B==null){if(s!=null){let M=await this.sdk.Swap.preSwapWithMultiPool(s),k={amountIn:new ni.default(M.estimatedAmountIn),amountOut:new ni.default(M.estimatedAmountOut),poolAddress:[M.poolAddress],a2b:[M.aToB],rawAmountLimit:n?[M.estimatedAmountOut]:[M.estimatedAmountIn],isExceed:M.isExceed,coinType:[t,e]},S={paths:[k],partner:o,priceSlippagePoint:r};return{amountIn:new ni.default(M.estimatedAmountIn),amountOut:new ni.default(M.estimatedAmountOut),paths:[k],a2b:M.aToB,b2c:void 0,byAmountIn:n,isExceed:M.isExceed,targetSqrtPrice:[M.estimatedEndSqrtPrice],currentSqrtPrice:[M.estimatedStartSqrtPrice],coinTypeA:t,coinTypeB:e,coinTypeC:void 0,createTxParams:S}}return{amountIn:re,amountOut:re,paths:[],a2b:!1,b2c:!1,byAmountIn:n,isExceed:!0,targetSqrtPrice:[],currentSqrtPrice:[],coinTypeA:"",coinTypeB:"",coinTypeC:void 0,createTxParams:void 0}}let D=B.index,q=T[D].poolBC!=null?[T[D].poolAB,T[D].poolBC]:[T[D].poolAB],K=n?[B.amountMedium,B.amountOut]:[B.amountIn,B.amountMedium],Z=[];Z.push(T[D].a2b),B.stepNum>1&&Z.push(T[D].b2c);let G=[];G.push(T[D].coinTypeA),G.push(T[D].coinTypeB),B.stepNum>1&&G.push(T[D].coinTypeC);let J={amountIn:B.amountIn,amountOut:B.amountOut,poolAddress:q,a2b:Z,rawAmountLimit:K,isExceed:B.isExceed,coinType:G},x={paths:[J],partner:o,priceSlippagePoint:r};return{amountIn:B.amountIn,amountOut:B.amountOut,paths:[J],a2b:T[D].a2b,b2c:B.stepNum>1?T[D].b2c:void 0,byAmountIn:n,isExceed:B.isExceed,targetSqrtPrice:B.targetSqrtPrice,currentSqrtPrice:B.currentSqrtPrice,coinTypeA:T[D].coinTypeA,coinTypeB:T[D].coinTypeB,coinTypeC:B.stepNum>1?T[D].coinTypeC:void 0,createTxParams:x}}async preRouterSwapA2B2C(t){if(t.length===0)return null;let{integrate:e,simulationAccount:i}=this.sdk.sdkOptions,n=new sh.TransactionBlock;for(let y of t)if(y.stepNums>1){let v=[n.object(y.poolAB),n.object(y.poolBC),n.pure(y.a2b),n.pure(y.b2c),n.pure(y.byAmountIn),n.pure(y.amount.toString())],T=[];y.a2b?T.push(y.coinTypeA,y.coinTypeB):T.push(y.coinTypeB,y.coinTypeA),y.b2c?T.push(y.coinTypeB,y.coinTypeC):T.push(y.coinTypeC,y.coinTypeB),n.moveCall({target:`${e.published_at}::${_n}::calculate_router_swap_result`,typeArguments:T,arguments:v})}else{let v=[n.pure(y.poolAB),n.pure(y.a2b),n.pure(y.byAmountIn),n.pure(y.amount.toString())],T=y.a2b?[y.coinTypeA,y.coinTypeB]:[y.coinTypeB,y.coinTypeA];n.moveCall({target:`${e.published_at}::${gy}::get_expect_swap_result`,arguments:v,typeArguments:T})}if(!Wt(i.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let o=(await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:n,sender:i.address})).events?.filter(y=>V(y.type).name==="CalculatedRouterSwapResultEvent"||V(y.type).name==="ExpectSwapResultEvent");if(o.length===0)return null;let s=t[0].byAmountIn?re:Sr,a=0;for(let y=0;y<o.length;y+=1)if(!o[y].parsedJson.data.is_exceed)if(t[0].byAmountIn){let v=new ni.default(o[y].parsedJson.data.amount_out);v.gt(s)&&(a=y,s=v)}else{let v=t[y].stepNums>1?new ni.default(o[y].parsedJson.data.amount_in):new ni.default(o[y].parsedJson.data.amount_in).add(new ni.default(o[y].parsedJson.data.fee_amount));v.lt(s)&&(a=y,s=v)}let l=[],u=[];return t[a].stepNums>1?(u.push(o[a].parsedJson.data.target_sqrt_price_ab,o[a].parsedJson.data.target_sqrt_price_cd),l.push(o[a].parsedJson.data.current_sqrt_price_ab,o[a].parsedJson.data.current_sqrt_price_cd)):(u.push(o[a].parsedJson.data.after_sqrt_price),l.push(o[a].parsedJson.current_sqrt_price)),{index:a,amountIn:t[0].byAmountIn?t[a].amount:s,amountMedium:o[a].parsedJson.data.amount_medium,amountOut:t[0].byAmountIn?s:t[a].amount,targetSqrtPrice:u,currentSqrtPrice:l,isExceed:o[a].parsedJson.data.is_exceed,stepNum:t[a].stepNums}}async getPoolWithTVL(){let t=[],{swapCountUrl:e}=this._sdk.sdkOptions;if(!e)return t;let i;try{i=await fetch(e)}catch{throw new Y(`Failed to get pool list with liquidity from ${e}.`,"InvalidSwapCountUrl")}let n;try{n=await i.json()}catch{throw new Y(`Failed tp [arse response from ${e}].`,"InvalidSwapCountUrl")}if(n.code!==200)throw new Y(`Failed to get pool list from ${e}. Statu code is ${n.code}.`,"InvalidSwapCountUrl");let{pools:r}=n.data;for(let o of r)t.push({poolAddress:o.swap_account,tvl:Number(o.tvl_in_usd)});return t}};var nw=class{_sdk;constructor(t){this._sdk=t}get sdk(){return this._sdk}calculateSwapFee(t){let e=E(0);return t.forEach(i=>{let n=i.basePaths.length;if(n>0){let r=i.basePaths[0],o=r.label==="Cetus"?new U(r.feeRate).div(10**6):new U(r.feeRate).div(10**9),s=E(r.inputAmount).div(10**r.fromDecimal).mul(o);if(e=e.add(s),n>1){let a=i.basePaths[1],l=r.direction?r.currentPrice:new U(1).div(r.currentPrice),u=a.direction?a.currentPrice:new U(1).div(a.currentPrice),h=a.label==="Cetus"?new U(a.feeRate).div(10**6):new U(a.feeRate).div(10**9),v=E(a.outputAmount).div(10**a.toDecimal).mul(h).div(l.mul(u));e=e.add(v)}}}),e.toString()}calculateSwapPriceImpact(t){let e=E(0);return t.forEach(i=>{let n=i.basePaths.length;if(n===1){let r=i.basePaths[0],o=E(r.outputAmount).div(10**r.toDecimal),s=E(r.inputAmount).div(10**r.fromDecimal),a=o.div(s),l=r.direction?new U(r.currentPrice):new U(1).div(r.currentPrice);e=e.add(this.calculateSingleImpact(a,l))}if(n===2){let r=i.basePaths[0],o=i.basePaths[1],s=r.direction?new U(r.currentPrice):new U(1).div(r.currentPrice),a=o.direction?new U(o.currentPrice):new U(1).div(o.currentPrice),l=s.mul(a),u=new U(o.outputAmount).div(10**o.toDecimal),h=new U(r.inputAmount).div(10**r.fromDecimal),y=u.div(h);e=e.add(this.calculateSingleImpact(y,l))}}),e.toString()}calculateSingleImpact=(t,e)=>e.minus(t).div(e).mul(100);async preSwapWithMultiPool(t){let{integrate:e,simulationAccount:i}=this.sdk.sdkOptions,n=new al.TransactionBlock,r=[t.coinTypeA,t.coinTypeB];for(let u=0;u<t.poolAddresses.length;u+=1){let h=[n.pure(t.poolAddresses[u]),n.pure(t.a2b),n.pure(t.byAmountIn),n.pure(t.amount)];n.moveCall({target:`${e.published_at}::${Jt}::calculate_swap_result`,arguments:h,typeArguments:r})}if(!Wt(i.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let o=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:n,sender:i.address});if(o.error!=null)throw new Y(`pre swap with multi pools error code: ${o.error??"unknown error"}, please check config and params`,"InvalidConfig");let s=o.events?.filter(u=>V(u.type).name==="CalculatedSwapResultEvent");if(s.length===0)return null;if(s.length!==t.poolAddresses.length)throw new Y("valueData.length !== params.pools.length","ParamsLengthNotEqual");let a=t.byAmountIn?re:Sr,l=0;for(let u=0;u<s.length;u+=1)if(!s[u].parsedJson.data.is_exceed)if(t.byAmountIn){let h=new Vn.default(s[u].parsedJson.data.amount_out);h.gt(a)&&(l=u,a=h)}else{let h=new Vn.default(s[u].parsedJson.data.amount_out);h.lt(a)&&(l=u,a=h)}return this.transformSwapWithMultiPoolData({poolAddress:t.poolAddresses[l],a2b:t.a2b,byAmountIn:t.byAmountIn,amount:t.amount,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB},s[l].parsedJson)}async preswap(t){let{integrate:e,simulationAccount:i}=this.sdk.sdkOptions,n=new al.TransactionBlock,r=[t.coinTypeA,t.coinTypeB],o=[n.pure(t.pool.poolAddress),n.pure(t.a2b),n.pure(t.byAmountIn),n.pure(t.amount)];if(n.moveCall({target:`${e.published_at}::${Jt}::calculate_swap_result`,arguments:o,typeArguments:r}),!Wt(i.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let s=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:n,sender:i.address});if(s.error!=null)throw new Y(`preswap error code: ${s.error??"unknown error"}, please check config and params`,"InvalidConfig");let a=s.events?.filter(l=>V(l.type).name==="CalculatedSwapResultEvent");return a.length===0?null:this.transformSwapData(t,a[0].parsedJson.data)}transformSwapData(t,e){let i=e.amount_in&&e.fee_amount?new Vn.default(e.amount_in).add(new Vn.default(e.fee_amount)).toString():"";return{poolAddress:t.pool.poolAddress,currentSqrtPrice:t.currentSqrtPrice,estimatedAmountIn:i,estimatedAmountOut:e.amount_out,estimatedEndSqrtPrice:e.after_sqrt_price,estimatedFeeAmount:e.fee_amount,isExceed:e.is_exceed,amount:t.amount,aToB:t.a2b,byAmountIn:t.byAmountIn}}transformSwapWithMultiPoolData(t,e){let{data:i}=e,n=i.amount_in&&i.fee_amount?new Vn.default(i.amount_in).add(new Vn.default(i.fee_amount)).toString():"";return{poolAddress:t.poolAddress,estimatedAmountIn:n,estimatedAmountOut:i.amount_out,estimatedEndSqrtPrice:i.after_sqrt_price,estimatedStartSqrtPrice:e.current_sqrt_price,estimatedFeeAmount:i.fee_amount,isExceed:i.is_exceed,amount:t.amount,aToB:t.a2b,byAmountIn:t.byAmountIn}}calculateRates(t){let{currentPool:e}=t,i=py(e),n;t.a2b?n=t.swapTicks.sort((y,v)=>v.index-y.index):n=t.swapTicks.sort((y,v)=>y.index-v.index);let r=Dy(t.a2b,t.byAmountIn,t.amount,i,n),o=!1;t.byAmountIn?o=r.amountIn.lt(t.amount):o=r.amountOut.lt(t.amount);let s=Ai.getDefaultSqrtPriceLimit(t.a2b);t.a2b&&r.nextSqrtPrice.lt(s)&&(o=!0),!t.a2b&&r.nextSqrtPrice.gt(s)&&(o=!0);let a=0;r.crossTickNum>6&&r.crossTickNum<40&&(a=22e3*(r.crossTickNum-6)),r.crossTickNum>40&&(o=!0);let l=ie.sqrtPriceX64ToPrice(i.currentSqrtPrice,t.decimalsA,t.decimalsB).toNumber(),u=ie.sqrtPriceX64ToPrice(r.nextSqrtPrice,t.decimalsA,t.decimalsB).toNumber(),h=Math.abs(l-u)/l*100;return{estimatedAmountIn:r.amountIn,estimatedAmountOut:r.amountOut,estimatedEndSqrtPrice:r.nextSqrtPrice,estimatedFeeAmount:r.feeAmount,isExceed:o,extraComputeLimit:a,amount:t.amount,aToB:t.a2b,byAmountIn:t.byAmountIn,priceImpactPct:h}}async createSwapTransactionPayload(t,e){if(this._sdk.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let i=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);if(e){let{isAdjustCoinA:n,isAdjustCoinB:r}=Ks(t);if(t.a2b&&n||!t.a2b&&r)return await oe.buildSwapTransactionForGas(this._sdk,t,i,e)}return oe.buildSwapTransaction(this.sdk,t,i)}async createSwapTransactionWithoutTransferCoinsPayload(t,e){if(this._sdk.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let i=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);if(e){let{isAdjustCoinA:n,isAdjustCoinB:r}=Ks(t);if(t.a2b&&n||!t.a2b&&r)return await oe.buildSwapTransactionWithoutTransferCoinsForGas(this._sdk,t,i,e)}return oe.buildSwapTransactionWithoutTransferCoins(this.sdk,t,i)}},rw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getAllRegisteredTokenList(t=!1){return await this.factchTokenList("",t)}async getOwnerTokenList(t="",e=!1){return await this.factchTokenList(t,e)}async getAllRegisteredPoolList(t=!1){return await this.factchPoolList("",t)}async getOwnerPoolList(t="",e=!1){return await this.factchPoolList(t,e)}async getWarpPoolList(t=!1){return await this.factchWarpPoolList("","",t)}async getOwnerWarpPoolList(t="",e="",i=!1){return await this.factchWarpPoolList(t,e,i)}async getTokenListByCoinTypes(t){let e={},n=this.getCache("getAllRegisteredTokenList");if(n!==void 0){let o=n;for(let s of t)for(let a of o)if(Lt(s)===Lt(a.address)){e[s]=a;continue}}let r=t.filter(o=>e[o]===void 0);for(let o of r){let s=`${o}_metadata`,a=this.getCache(s);if(a!==void 0)e[o]=a;else{let l=await this._sdk.fullClient.getCoinMetadata({coinType:o});if(l){let u={id:l.id,name:l.name,symbol:l.symbol,official_symbol:l.symbol,coingecko_id:"",decimals:l.decimals,project_url:"",logo_url:l.iconUrl,address:o};e[o]=u,this.updateCache(s,u,X)}}}return e}async factchTokenList(t="",e=!1){let{simulationAccount:i,token:n}=this.sdk.sdkOptions,o=this.getCache("getAllRegisteredTokenList",e);if(o!==void 0)return o;let s=t.length>0,a=512,l=0,u=[];if(n===void 0)throw Error("please config token ofsdkOptions");let h=F(n);for(;;){let y=new cl.TransactionBlock;y.moveCall({target:`${n.published_at}::coin_list::${s?"fetch_full_list_with_limit":"fetch_all_registered_coin_info_with_limit"}`,arguments:s?[y.pure(h.coin_registry_id),y.pure(t),y.pure(l),y.pure(a)]:[y.pure(h.coin_registry_id),y.pure(l),y.pure(a)]});let v=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:y,sender:i.address}),T=[];if(v.events?.forEach(O=>{V(O.type).full_address===`${n.published_at}::coin_list::FetchCoinListEvent`&&O.parsedJson.full_list.value_list.forEach(j=>{T.push(this.transformData(j,!1))})}),u=[...u,...T],T.length<a)break;l=u.length}return u}async factchPoolList(t="",e=!1){let{simulationAccount:i,token:n}=this.sdk.sdkOptions,o=this.getCache("getAllRegisteredPoolList",e);if(o!==void 0)return o;let s=[],a=512,l=0,u=t.length>0;if(n===void 0)throw Error("please config token ofsdkOptions");let h=F(n);for(;;){let y=new cl.TransactionBlock;if(y.moveCall({target:`${n.published_at}::lp_list::${u?"fetch_full_list_with_limit":"fetch_all_registered_coin_info_with_limit"}`,arguments:u?[y.pure(h.pool_registry_id),y.pure(t),y.pure(l),y.pure(a)]:[y.pure(h.pool_registry_id),y.pure(l),y.pure(a)]}),!Wt(i.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let v=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:y,sender:i.address}),T=[];if(v.events?.forEach(O=>{V(O.type).full_address===`${n.published_at}::lp_list::FetchPoolListEvent`&&O.parsedJson.full_list.value_list.forEach(j=>{T.push(this.transformData(j,!0))})}),s=[...s,...T],T.length<a)break;l=s.length}return s}async factchWarpPoolList(t="",e="",i=!1){let n=await this.factchPoolList(t,i);if(n.length===0)return[];let r=await this.factchTokenList(e,i),o=[];for(let s of n){for(let a of r)a.address===s.coin_a_address&&(s.coinA=a),a.address===s.coin_b_address&&(s.coinB=a);o.push(s)}return o}async getTokenConfigEvent(t=!1){let e=this._sdk.sdkOptions.token.package_id,i=`${e}_getTokenConfigEvent`,n=this.getCache(i,t);if(n!==void 0)return n;let r=await this._sdk.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=zn(r),s=await this._sdk.fullClient.queryEventsByPage({Transaction:o}),a={coin_registry_id:"",pool_registry_id:"",coin_list_owner:"",pool_list_owner:""};return s.data.length>0&&s.data.forEach(l=>{let u=V(l.type);if(l.transactionModule==="coin_list")switch(u.name){case"InitListEvent":a.coin_list_owner=l.parsedJson.list_id;break;case"InitRegistryEvent":a.coin_registry_id=l.parsedJson.registry_id;break;default:break}else if(l.transactionModule==="lp_list")switch(u.name){case"InitListEvent<address>":a.pool_list_owner=l.parsedJson.list_id;break;case"InitRegistryEvent<address>":a.pool_registry_id=l.parsedJson.registry_id;break;default:break}}),a.coin_registry_id.length>0&&this.updateCache(i,a,X),a}transformData(t,e){let i={...t};if(e)try{i.coin_a_address=V(i.coin_a_address).full_address,i.coin_b_address=V(i.coin_b_address).full_address}catch{}else i.address=V(i.address).full_address;if(t.extensions){let n=t.extensions.contents;for(let r of n){let{key:o}=r,{value:s}=r;if(o==="labels")try{s=JSON.parse(decodeURIComponent(wr.decode(s)))}catch{}o==="pyth_id"&&(s=(0,ah.normalizeSuiObjectId)(s)),i[o]=s}delete i.extensions}return i}updateCache(t,e,i=Ge){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t],n=i?.isValid();if(!e&&n)return i.value;n||delete this._cache[t]}},ow=class{_sdk;constructor(t){this._sdk=t}get sdk(){return this._sdk}calculatePrice(t,e,i,n,r){let o=n?e:i,s=n?i:e;return r==="Cetus"?ie.sqrtPriceX64ToPrice(t,o,s):new U(t.toString()).div(new U(10).pow(new U(s+9-o)))}parseJsonResult(t){return{isExceed:t.is_exceed,isTimeout:t.is_timeout,inputAmount:t.input_amount,outputAmount:t.output_amount,fromCoin:t.from_coin,toCoin:t.to_coin,byAmountIn:t.by_amount_in,splitPaths:t.split_paths.map(i=>({pathIndex:i.path_index,lastQuoteOutput:i.last_quote_output,percent:i.percent,basePaths:i.best_path.map(r=>({direction:r.direction,label:r.label,poolAddress:r.provider,fromCoin:r.from_coin,toCoin:r.to_coin,outputAmount:r.output_amount,inputAmount:r.input_amount,feeRate:r.fee_rate,currentSqrtPrice:new xi.default(r.current_sqrt_price.toString()),afterSqrtPrice:r.label==="Cetus"?new xi.default(r.after_sqrt_price.toString()):re,fromDecimal:r.from_decimal,toDecimal:r.to_decimal,currentPrice:this.calculatePrice(new xi.default(r.current_sqrt_price.toString()),r.from_decimal,r.to_decimal,r.direction,r.label)})),inputAmount:i.input_amount,outputAmount:i.output_amount}))}}async fetchWithTimeout(t,e,i){let n=new AbortController,r=setTimeout(()=>n.abort(),i);try{let o=await fetch(t,{...e,signal:n.signal});return clearTimeout(r),o}catch{return null}}async fetchAndParseData(t,e){try{let n=await this.fetchWithTimeout(t,e,1500);return n.status===200?this.parseJsonResult(await n.json()):null}catch{return null}}async getBestRouter(t,e,i,n,r,o,s,a,l=!1,u=!1,h=[]){let y=null,v="v2",T={},O=this.sdk.sdkOptions.aggregatorUrl;if(h.length>0){let P=new URL(O);O=`${P.protocol}//${P.hostname}/router_with_lp_changes`,T={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:t,to:e,amount:i,by_amount_in:n,order_split:l,external_router:u,sender_address:"None",request_id:encodeURIComponent(Bs()),lp_changes:h})}}else O=`
1
+ "use strict";var j_=Object.create;var bs=Object.defineProperty;var B_=Object.getOwnPropertyDescriptor;var N_=Object.getOwnPropertyNames;var F_=Object.getPrototypeOf,R_=Object.prototype.hasOwnProperty;var q_=(t,e)=>()=>(t&&(e=t(t=0)),e);var Ln=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),wd=(t,e)=>{for(var i in e)bs(t,i,{get:e[i],enumerable:!0})},vd=(t,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of N_(e))!R_.call(t,r)&&r!==i&&bs(t,r,{get:()=>e[r],enumerable:!(n=B_(e,r))||n.enumerable});return t};var we=(t,e,i)=>(i=t!=null?j_(F_(t)):{},vd(e||!t||!t.__esModule?bs(i,"default",{value:t,enumerable:!0}):i,t)),kd=t=>vd(bs({},"__esModule",{value:!0}),t);var Sd=Ln((MS,Td)=>{"use strict";Td.exports=t=>{if(Object.prototype.toString.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.prototype}});var Ad=Ln((ES,xd)=>{"use strict";var Nc=Sd();xd.exports=(t,e={})=>{if(!Nc(t)&&!Array.isArray(t))throw new TypeError("Expected a plain object or array");let{deep:i}=e,n=[],r=[],o=a=>{let l=n.indexOf(a);if(l!==-1)return r[l];let u=[];return n.push(a),r.push(u),u.push(...a.map(h=>Array.isArray(h)?o(h):Nc(h)?s(h):h)),u},s=a=>{let l=n.indexOf(a);if(l!==-1)return r[l];let u={},h=Object.keys(a).sort(e.compare);n.push(a),r.push(u);for(let y of h){let v=a[y],T;i&&Array.isArray(v)?T=o(v):T=i&&Nc(v)?s(v):v,Object.defineProperty(u,y,{...Object.getOwnPropertyDescriptor(a,y),value:T})}return u};return Array.isArray(t)?i?o(t):t.slice():s(t)}});var Pd=Ln((jS,Od)=>{"use strict";var L_=Object.prototype.toString;Od.exports=function(e){if(e===void 0)return"undefined";if(e===null)return"null";var i=typeof e;if(i==="boolean")return"boolean";if(i==="string")return"string";if(i==="number")return"number";if(i==="symbol")return"symbol";if(i==="function")return W_(e)?"generatorfunction":"function";if($_(e))return"array";if(H_(e))return"buffer";if(G_(e))return"arguments";if(K_(e))return"date";if(U_(e))return"error";if(V_(e))return"regexp";switch(Id(e)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(z_(e))return"generator";switch(i=L_.call(e),i){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return i.slice(8,-1).toLowerCase().replace(/\s/g,"")};function Id(t){return typeof t.constructor=="function"?t.constructor.name:null}function $_(t){return Array.isArray?Array.isArray(t):t instanceof Array}function U_(t){return t instanceof Error||typeof t.message=="string"&&t.constructor&&typeof t.constructor.stackTraceLimit=="number"}function K_(t){return t instanceof Date?!0:typeof t.toDateString=="function"&&typeof t.getDate=="function"&&typeof t.setDate=="function"}function V_(t){return t instanceof RegExp?!0:typeof t.flags=="string"&&typeof t.ignoreCase=="boolean"&&typeof t.multiline=="boolean"&&typeof t.global=="boolean"}function W_(t,e){return Id(t)==="GeneratorFunction"}function z_(t){return typeof t.throw=="function"&&typeof t.return=="function"&&typeof t.next=="function"}function G_(t){try{if(typeof t.length=="number"&&typeof t.callee=="function")return!0}catch(e){if(e.message.indexOf("callee")!==-1)return!0}return!1}function H_(t){return t.constructor&&typeof t.constructor.isBuffer=="function"?t.constructor.isBuffer(t):!1}});var ws=Ln((BS,jd)=>{"use strict";var Z_=Ad(),Fc=Pd(),Dd=(t,e)=>!e||Fc(e)!=="array"?!1:e.indexOf(t)>-1,X_=(t,e)=>Z_(t,{compare:e}),Md=(t,e)=>{let i=e&&e.compareFunction;return t.slice().sort(i)};function Ed(t,e){let i=e&&e.compareFunction,n=X_(t,i);return Object.keys(t).forEach(function(r){let o=n[r],s=Fc(o);if(s==="object"){(!e||!Dd(r,e.ignoreObjectAtKeys))&&(n[r]=Ed(o,e));return}s==="array"&&(!e||!Dd(r,e.ignoreArrayAtKeys))&&(n[r]=Md(o,e))}),n}var so=(t,e)=>{let i=Fc(t);return so[i]?so[i](t,e):t};so.array=Md;so.object=Ed;jd.exports=so});var Se=Ln((Bd,Rc)=>{"use strict";(function(t,e){"use strict";function i(S,c){if(!S)throw new Error(c||"Assertion failed")}function n(S,c){S.super_=c;var d=function(){};d.prototype=c.prototype,S.prototype=new d,S.prototype.constructor=S}function r(S,c,d){if(r.isBN(S))return S;this.negative=0,this.words=null,this.length=0,this.red=null,S!==null&&((c==="le"||c==="be")&&(d=c,c=10),this._init(S||0,c||10,d||"be"))}typeof t=="object"?t.exports=r:e.BN=r,r.BN=r,r.wordSize=26;var o;try{typeof window<"u"&&typeof window.Buffer<"u"?o=window.Buffer:o=require("buffer").Buffer}catch{}r.isBN=function(c){return c instanceof r?!0:c!==null&&typeof c=="object"&&c.constructor.wordSize===r.wordSize&&Array.isArray(c.words)},r.max=function(c,d){return c.cmp(d)>0?c:d},r.min=function(c,d){return c.cmp(d)<0?c:d},r.prototype._init=function(c,d,f){if(typeof c=="number")return this._initNumber(c,d,f);if(typeof c=="object")return this._initArray(c,d,f);d==="hex"&&(d=16),i(d===(d|0)&&d>=2&&d<=36),c=c.toString().replace(/\s+/g,"");var b=0;c[0]==="-"&&(b++,this.negative=1),b<c.length&&(d===16?this._parseHex(c,b,f):(this._parseBase(c,d,b),f==="le"&&this._initArray(this.toArray(),d,f)))},r.prototype._initNumber=function(c,d,f){c<0&&(this.negative=1,c=-c),c<67108864?(this.words=[c&67108863],this.length=1):c<4503599627370496?(this.words=[c&67108863,c/67108864&67108863],this.length=2):(i(c<9007199254740992),this.words=[c&67108863,c/67108864&67108863,1],this.length=3),f==="le"&&this._initArray(this.toArray(),d,f)},r.prototype._initArray=function(c,d,f){if(i(typeof c.length=="number"),c.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(c.length/3),this.words=new Array(this.length);for(var b=0;b<this.length;b++)this.words[b]=0;var p,g,w=0;if(f==="be")for(b=c.length-1,p=0;b>=0;b-=3)g=c[b]|c[b-1]<<8|c[b-2]<<16,this.words[p]|=g<<w&67108863,this.words[p+1]=g>>>26-w&67108863,w+=24,w>=26&&(w-=26,p++);else if(f==="le")for(b=0,p=0;b<c.length;b+=3)g=c[b]|c[b+1]<<8|c[b+2]<<16,this.words[p]|=g<<w&67108863,this.words[p+1]=g>>>26-w&67108863,w+=24,w>=26&&(w-=26,p++);return this._strip()};function s(S,c){var d=S.charCodeAt(c);if(d>=48&&d<=57)return d-48;if(d>=65&&d<=70)return d-55;if(d>=97&&d<=102)return d-87;i(!1,"Invalid character in "+S)}function a(S,c,d){var f=s(S,d);return d-1>=c&&(f|=s(S,d-1)<<4),f}r.prototype._parseHex=function(c,d,f){this.length=Math.ceil((c.length-d)/6),this.words=new Array(this.length);for(var b=0;b<this.length;b++)this.words[b]=0;var p=0,g=0,w;if(f==="be")for(b=c.length-1;b>=d;b-=2)w=a(c,d,b)<<p,this.words[g]|=w&67108863,p>=18?(p-=18,g+=1,this.words[g]|=w>>>26):p+=8;else{var _=c.length-d;for(b=_%2===0?d+1:d;b<c.length;b+=2)w=a(c,d,b)<<p,this.words[g]|=w&67108863,p>=18?(p-=18,g+=1,this.words[g]|=w>>>26):p+=8}this._strip()};function l(S,c,d,f){for(var b=0,p=0,g=Math.min(S.length,d),w=c;w<g;w++){var _=S.charCodeAt(w)-48;b*=f,_>=49?p=_-49+10:_>=17?p=_-17+10:p=_,i(_>=0&&p<f,"Invalid character"),b+=p}return b}r.prototype._parseBase=function(c,d,f){this.words=[0],this.length=1;for(var b=0,p=1;p<=67108863;p*=d)b++;b--,p=p/d|0;for(var g=c.length-f,w=g%b,_=Math.min(g,g-w)+f,m=0,C=f;C<_;C+=b)m=l(c,C,C+b,d),this.imuln(p),this.words[0]+m<67108864?this.words[0]+=m:this._iaddn(m);if(w!==0){var N=1;for(m=l(c,C,c.length,d),C=0;C<w;C++)N*=d;this.imuln(N),this.words[0]+m<67108864?this.words[0]+=m:this._iaddn(m)}this._strip()},r.prototype.copy=function(c){c.words=new Array(this.length);for(var d=0;d<this.length;d++)c.words[d]=this.words[d];c.length=this.length,c.negative=this.negative,c.red=this.red};function u(S,c){S.words=c.words,S.length=c.length,S.negative=c.negative,S.red=c.red}if(r.prototype._move=function(c){u(c,this)},r.prototype.clone=function(){var c=new r(null);return this.copy(c),c},r.prototype._expand=function(c){for(;this.length<c;)this.words[this.length++]=0;return this},r.prototype._strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},r.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{r.prototype[Symbol.for("nodejs.util.inspect.custom")]=h}catch{r.prototype.inspect=h}else r.prototype.inspect=h;function h(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var y=["","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"],v=[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],T=[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];r.prototype.toString=function(c,d){c=c||10,d=d|0||1;var f;if(c===16||c==="hex"){f="";for(var b=0,p=0,g=0;g<this.length;g++){var w=this.words[g],_=((w<<b|p)&16777215).toString(16);p=w>>>24-b&16777215,b+=2,b>=26&&(b-=26,g--),p!==0||g!==this.length-1?f=y[6-_.length]+_+f:f=_+f}for(p!==0&&(f=p.toString(16)+f);f.length%d!==0;)f="0"+f;return this.negative!==0&&(f="-"+f),f}if(c===(c|0)&&c>=2&&c<=36){var m=v[c],C=T[c];f="";var N=this.clone();for(N.negative=0;!N.isZero();){var R=N.modrn(C).toString(c);N=N.idivn(C),N.isZero()?f=R+f:f=y[m-R.length]+R+f}for(this.isZero()&&(f="0"+f);f.length%d!==0;)f="0"+f;return this.negative!==0&&(f="-"+f),f}i(!1,"Base should be between 2 and 36")},r.prototype.toNumber=function(){var c=this.words[0];return this.length===2?c+=this.words[1]*67108864:this.length===3&&this.words[2]===1?c+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-c:c},r.prototype.toJSON=function(){return this.toString(16,2)},o&&(r.prototype.toBuffer=function(c,d){return this.toArrayLike(o,c,d)}),r.prototype.toArray=function(c,d){return this.toArrayLike(Array,c,d)};var O=function(c,d){return c.allocUnsafe?c.allocUnsafe(d):new c(d)};r.prototype.toArrayLike=function(c,d,f){this._strip();var b=this.byteLength(),p=f||Math.max(1,b);i(b<=p,"byte array longer than desired length"),i(p>0,"Requested array length <= 0");var g=O(c,p),w=d==="le"?"LE":"BE";return this["_toArrayLike"+w](g,b),g},r.prototype._toArrayLikeLE=function(c,d){for(var f=0,b=0,p=0,g=0;p<this.length;p++){var w=this.words[p]<<g|b;c[f++]=w&255,f<c.length&&(c[f++]=w>>8&255),f<c.length&&(c[f++]=w>>16&255),g===6?(f<c.length&&(c[f++]=w>>24&255),b=0,g=0):(b=w>>>24,g+=2)}if(f<c.length)for(c[f++]=b;f<c.length;)c[f++]=0},r.prototype._toArrayLikeBE=function(c,d){for(var f=c.length-1,b=0,p=0,g=0;p<this.length;p++){var w=this.words[p]<<g|b;c[f--]=w&255,f>=0&&(c[f--]=w>>8&255),f>=0&&(c[f--]=w>>16&255),g===6?(f>=0&&(c[f--]=w>>24&255),b=0,g=0):(b=w>>>24,g+=2)}if(f>=0)for(c[f--]=b;f>=0;)c[f--]=0},Math.clz32?r.prototype._countBits=function(c){return 32-Math.clz32(c)}:r.prototype._countBits=function(c){var d=c,f=0;return d>=4096&&(f+=13,d>>>=13),d>=64&&(f+=7,d>>>=7),d>=8&&(f+=4,d>>>=4),d>=2&&(f+=2,d>>>=2),f+d},r.prototype._zeroBits=function(c){if(c===0)return 26;var d=c,f=0;return d&8191||(f+=13,d>>>=13),d&127||(f+=7,d>>>=7),d&15||(f+=4,d>>>=4),d&3||(f+=2,d>>>=2),d&1||f++,f},r.prototype.bitLength=function(){var c=this.words[this.length-1],d=this._countBits(c);return(this.length-1)*26+d};function P(S){for(var c=new Array(S.bitLength()),d=0;d<c.length;d++){var f=d/26|0,b=d%26;c[d]=S.words[f]>>>b&1}return c}r.prototype.zeroBits=function(){if(this.isZero())return 0;for(var c=0,d=0;d<this.length;d++){var f=this._zeroBits(this.words[d]);if(c+=f,f!==26)break}return c},r.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},r.prototype.toTwos=function(c){return this.negative!==0?this.abs().inotn(c).iaddn(1):this.clone()},r.prototype.fromTwos=function(c){return this.testn(c-1)?this.notn(c).iaddn(1).ineg():this.clone()},r.prototype.isNeg=function(){return this.negative!==0},r.prototype.neg=function(){return this.clone().ineg()},r.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},r.prototype.iuor=function(c){for(;this.length<c.length;)this.words[this.length++]=0;for(var d=0;d<c.length;d++)this.words[d]=this.words[d]|c.words[d];return this._strip()},r.prototype.ior=function(c){return i((this.negative|c.negative)===0),this.iuor(c)},r.prototype.or=function(c){return this.length>c.length?this.clone().ior(c):c.clone().ior(this)},r.prototype.uor=function(c){return this.length>c.length?this.clone().iuor(c):c.clone().iuor(this)},r.prototype.iuand=function(c){var d;this.length>c.length?d=c:d=this;for(var f=0;f<d.length;f++)this.words[f]=this.words[f]&c.words[f];return this.length=d.length,this._strip()},r.prototype.iand=function(c){return i((this.negative|c.negative)===0),this.iuand(c)},r.prototype.and=function(c){return this.length>c.length?this.clone().iand(c):c.clone().iand(this)},r.prototype.uand=function(c){return this.length>c.length?this.clone().iuand(c):c.clone().iuand(this)},r.prototype.iuxor=function(c){var d,f;this.length>c.length?(d=this,f=c):(d=c,f=this);for(var b=0;b<f.length;b++)this.words[b]=d.words[b]^f.words[b];if(this!==d)for(;b<d.length;b++)this.words[b]=d.words[b];return this.length=d.length,this._strip()},r.prototype.ixor=function(c){return i((this.negative|c.negative)===0),this.iuxor(c)},r.prototype.xor=function(c){return this.length>c.length?this.clone().ixor(c):c.clone().ixor(this)},r.prototype.uxor=function(c){return this.length>c.length?this.clone().iuxor(c):c.clone().iuxor(this)},r.prototype.inotn=function(c){i(typeof c=="number"&&c>=0);var d=Math.ceil(c/26)|0,f=c%26;this._expand(d),f>0&&d--;for(var b=0;b<d;b++)this.words[b]=~this.words[b]&67108863;return f>0&&(this.words[b]=~this.words[b]&67108863>>26-f),this._strip()},r.prototype.notn=function(c){return this.clone().inotn(c)},r.prototype.setn=function(c,d){i(typeof c=="number"&&c>=0);var f=c/26|0,b=c%26;return this._expand(f+1),d?this.words[f]=this.words[f]|1<<b:this.words[f]=this.words[f]&~(1<<b),this._strip()},r.prototype.iadd=function(c){var d;if(this.negative!==0&&c.negative===0)return this.negative=0,d=this.isub(c),this.negative^=1,this._normSign();if(this.negative===0&&c.negative!==0)return c.negative=0,d=this.isub(c),c.negative=1,d._normSign();var f,b;this.length>c.length?(f=this,b=c):(f=c,b=this);for(var p=0,g=0;g<b.length;g++)d=(f.words[g]|0)+(b.words[g]|0)+p,this.words[g]=d&67108863,p=d>>>26;for(;p!==0&&g<f.length;g++)d=(f.words[g]|0)+p,this.words[g]=d&67108863,p=d>>>26;if(this.length=f.length,p!==0)this.words[this.length]=p,this.length++;else if(f!==this)for(;g<f.length;g++)this.words[g]=f.words[g];return this},r.prototype.add=function(c){var d;return c.negative!==0&&this.negative===0?(c.negative=0,d=this.sub(c),c.negative^=1,d):c.negative===0&&this.negative!==0?(this.negative=0,d=c.sub(this),this.negative=1,d):this.length>c.length?this.clone().iadd(c):c.clone().iadd(this)},r.prototype.isub=function(c){if(c.negative!==0){c.negative=0;var d=this.iadd(c);return c.negative=1,d._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(c),this.negative=1,this._normSign();var f=this.cmp(c);if(f===0)return this.negative=0,this.length=1,this.words[0]=0,this;var b,p;f>0?(b=this,p=c):(b=c,p=this);for(var g=0,w=0;w<p.length;w++)d=(b.words[w]|0)-(p.words[w]|0)+g,g=d>>26,this.words[w]=d&67108863;for(;g!==0&&w<b.length;w++)d=(b.words[w]|0)+g,g=d>>26,this.words[w]=d&67108863;if(g===0&&w<b.length&&b!==this)for(;w<b.length;w++)this.words[w]=b.words[w];return this.length=Math.max(this.length,w),b!==this&&(this.negative=1),this._strip()},r.prototype.sub=function(c){return this.clone().isub(c)};function j(S,c,d){d.negative=c.negative^S.negative;var f=S.length+c.length|0;d.length=f,f=f-1|0;var b=S.words[0]|0,p=c.words[0]|0,g=b*p,w=g&67108863,_=g/67108864|0;d.words[0]=w;for(var m=1;m<f;m++){for(var C=_>>>26,N=_&67108863,R=Math.min(m,c.length-1),$=Math.max(0,m-S.length+1);$<=R;$++){var L=m-$|0;b=S.words[L]|0,p=c.words[$]|0,g=b*p+N,C+=g/67108864|0,N=g&67108863}d.words[m]=N|0,_=C|0}return _!==0?d.words[m]=_|0:d.length--,d._strip()}var B=function(c,d,f){var b=c.words,p=d.words,g=f.words,w=0,_,m,C,N=b[0]|0,R=N&8191,$=N>>>13,L=b[1]|0,H=L&8191,ee=L>>>13,ge=b[2]|0,ne=ge&8191,me=ge>>>13,xe=b[3]|0,_e=xe&8191,he=xe>>>13,fr=b[4]|0,qe=fr&8191,Le=fr>>>13,_s=b[5]|0,Ze=_s&8191,Xe=_s>>>13,sd=b[6]|0,Je=sd&8191,Ye=sd>>>13,ad=b[7]|0,Qe=ad&8191,et=ad>>>13,cd=b[8]|0,tt=cd&8191,it=cd>>>13,ld=b[9]|0,nt=ld&8191,rt=ld>>>13,ud=p[0]|0,ot=ud&8191,st=ud>>>13,dd=p[1]|0,at=dd&8191,ct=dd>>>13,fd=p[2]|0,lt=fd&8191,ut=fd>>>13,hd=p[3]|0,dt=hd&8191,ft=hd>>>13,pd=p[4]|0,ht=pd&8191,pt=pd>>>13,md=p[5]|0,mt=md&8191,gt=md>>>13,gd=p[6]|0,_t=gd&8191,bt=gd>>>13,_d=p[7]|0,yt=_d&8191,wt=_d>>>13,bd=p[8]|0,vt=bd&8191,kt=bd>>>13,yd=p[9]|0,Ct=yd&8191,Tt=yd>>>13;f.negative=c.negative^d.negative,f.length=19,_=Math.imul(R,ot),m=Math.imul(R,st),m=m+Math.imul($,ot)|0,C=Math.imul($,st);var _c=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(_c>>>26)|0,_c&=67108863,_=Math.imul(H,ot),m=Math.imul(H,st),m=m+Math.imul(ee,ot)|0,C=Math.imul(ee,st),_=_+Math.imul(R,at)|0,m=m+Math.imul(R,ct)|0,m=m+Math.imul($,at)|0,C=C+Math.imul($,ct)|0;var bc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(bc>>>26)|0,bc&=67108863,_=Math.imul(ne,ot),m=Math.imul(ne,st),m=m+Math.imul(me,ot)|0,C=Math.imul(me,st),_=_+Math.imul(H,at)|0,m=m+Math.imul(H,ct)|0,m=m+Math.imul(ee,at)|0,C=C+Math.imul(ee,ct)|0,_=_+Math.imul(R,lt)|0,m=m+Math.imul(R,ut)|0,m=m+Math.imul($,lt)|0,C=C+Math.imul($,ut)|0;var yc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(yc>>>26)|0,yc&=67108863,_=Math.imul(_e,ot),m=Math.imul(_e,st),m=m+Math.imul(he,ot)|0,C=Math.imul(he,st),_=_+Math.imul(ne,at)|0,m=m+Math.imul(ne,ct)|0,m=m+Math.imul(me,at)|0,C=C+Math.imul(me,ct)|0,_=_+Math.imul(H,lt)|0,m=m+Math.imul(H,ut)|0,m=m+Math.imul(ee,lt)|0,C=C+Math.imul(ee,ut)|0,_=_+Math.imul(R,dt)|0,m=m+Math.imul(R,ft)|0,m=m+Math.imul($,dt)|0,C=C+Math.imul($,ft)|0;var wc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(wc>>>26)|0,wc&=67108863,_=Math.imul(qe,ot),m=Math.imul(qe,st),m=m+Math.imul(Le,ot)|0,C=Math.imul(Le,st),_=_+Math.imul(_e,at)|0,m=m+Math.imul(_e,ct)|0,m=m+Math.imul(he,at)|0,C=C+Math.imul(he,ct)|0,_=_+Math.imul(ne,lt)|0,m=m+Math.imul(ne,ut)|0,m=m+Math.imul(me,lt)|0,C=C+Math.imul(me,ut)|0,_=_+Math.imul(H,dt)|0,m=m+Math.imul(H,ft)|0,m=m+Math.imul(ee,dt)|0,C=C+Math.imul(ee,ft)|0,_=_+Math.imul(R,ht)|0,m=m+Math.imul(R,pt)|0,m=m+Math.imul($,ht)|0,C=C+Math.imul($,pt)|0;var vc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(vc>>>26)|0,vc&=67108863,_=Math.imul(Ze,ot),m=Math.imul(Ze,st),m=m+Math.imul(Xe,ot)|0,C=Math.imul(Xe,st),_=_+Math.imul(qe,at)|0,m=m+Math.imul(qe,ct)|0,m=m+Math.imul(Le,at)|0,C=C+Math.imul(Le,ct)|0,_=_+Math.imul(_e,lt)|0,m=m+Math.imul(_e,ut)|0,m=m+Math.imul(he,lt)|0,C=C+Math.imul(he,ut)|0,_=_+Math.imul(ne,dt)|0,m=m+Math.imul(ne,ft)|0,m=m+Math.imul(me,dt)|0,C=C+Math.imul(me,ft)|0,_=_+Math.imul(H,ht)|0,m=m+Math.imul(H,pt)|0,m=m+Math.imul(ee,ht)|0,C=C+Math.imul(ee,pt)|0,_=_+Math.imul(R,mt)|0,m=m+Math.imul(R,gt)|0,m=m+Math.imul($,mt)|0,C=C+Math.imul($,gt)|0;var kc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(kc>>>26)|0,kc&=67108863,_=Math.imul(Je,ot),m=Math.imul(Je,st),m=m+Math.imul(Ye,ot)|0,C=Math.imul(Ye,st),_=_+Math.imul(Ze,at)|0,m=m+Math.imul(Ze,ct)|0,m=m+Math.imul(Xe,at)|0,C=C+Math.imul(Xe,ct)|0,_=_+Math.imul(qe,lt)|0,m=m+Math.imul(qe,ut)|0,m=m+Math.imul(Le,lt)|0,C=C+Math.imul(Le,ut)|0,_=_+Math.imul(_e,dt)|0,m=m+Math.imul(_e,ft)|0,m=m+Math.imul(he,dt)|0,C=C+Math.imul(he,ft)|0,_=_+Math.imul(ne,ht)|0,m=m+Math.imul(ne,pt)|0,m=m+Math.imul(me,ht)|0,C=C+Math.imul(me,pt)|0,_=_+Math.imul(H,mt)|0,m=m+Math.imul(H,gt)|0,m=m+Math.imul(ee,mt)|0,C=C+Math.imul(ee,gt)|0,_=_+Math.imul(R,_t)|0,m=m+Math.imul(R,bt)|0,m=m+Math.imul($,_t)|0,C=C+Math.imul($,bt)|0;var Cc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Cc>>>26)|0,Cc&=67108863,_=Math.imul(Qe,ot),m=Math.imul(Qe,st),m=m+Math.imul(et,ot)|0,C=Math.imul(et,st),_=_+Math.imul(Je,at)|0,m=m+Math.imul(Je,ct)|0,m=m+Math.imul(Ye,at)|0,C=C+Math.imul(Ye,ct)|0,_=_+Math.imul(Ze,lt)|0,m=m+Math.imul(Ze,ut)|0,m=m+Math.imul(Xe,lt)|0,C=C+Math.imul(Xe,ut)|0,_=_+Math.imul(qe,dt)|0,m=m+Math.imul(qe,ft)|0,m=m+Math.imul(Le,dt)|0,C=C+Math.imul(Le,ft)|0,_=_+Math.imul(_e,ht)|0,m=m+Math.imul(_e,pt)|0,m=m+Math.imul(he,ht)|0,C=C+Math.imul(he,pt)|0,_=_+Math.imul(ne,mt)|0,m=m+Math.imul(ne,gt)|0,m=m+Math.imul(me,mt)|0,C=C+Math.imul(me,gt)|0,_=_+Math.imul(H,_t)|0,m=m+Math.imul(H,bt)|0,m=m+Math.imul(ee,_t)|0,C=C+Math.imul(ee,bt)|0,_=_+Math.imul(R,yt)|0,m=m+Math.imul(R,wt)|0,m=m+Math.imul($,yt)|0,C=C+Math.imul($,wt)|0;var Tc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Tc>>>26)|0,Tc&=67108863,_=Math.imul(tt,ot),m=Math.imul(tt,st),m=m+Math.imul(it,ot)|0,C=Math.imul(it,st),_=_+Math.imul(Qe,at)|0,m=m+Math.imul(Qe,ct)|0,m=m+Math.imul(et,at)|0,C=C+Math.imul(et,ct)|0,_=_+Math.imul(Je,lt)|0,m=m+Math.imul(Je,ut)|0,m=m+Math.imul(Ye,lt)|0,C=C+Math.imul(Ye,ut)|0,_=_+Math.imul(Ze,dt)|0,m=m+Math.imul(Ze,ft)|0,m=m+Math.imul(Xe,dt)|0,C=C+Math.imul(Xe,ft)|0,_=_+Math.imul(qe,ht)|0,m=m+Math.imul(qe,pt)|0,m=m+Math.imul(Le,ht)|0,C=C+Math.imul(Le,pt)|0,_=_+Math.imul(_e,mt)|0,m=m+Math.imul(_e,gt)|0,m=m+Math.imul(he,mt)|0,C=C+Math.imul(he,gt)|0,_=_+Math.imul(ne,_t)|0,m=m+Math.imul(ne,bt)|0,m=m+Math.imul(me,_t)|0,C=C+Math.imul(me,bt)|0,_=_+Math.imul(H,yt)|0,m=m+Math.imul(H,wt)|0,m=m+Math.imul(ee,yt)|0,C=C+Math.imul(ee,wt)|0,_=_+Math.imul(R,vt)|0,m=m+Math.imul(R,kt)|0,m=m+Math.imul($,vt)|0,C=C+Math.imul($,kt)|0;var Sc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Sc>>>26)|0,Sc&=67108863,_=Math.imul(nt,ot),m=Math.imul(nt,st),m=m+Math.imul(rt,ot)|0,C=Math.imul(rt,st),_=_+Math.imul(tt,at)|0,m=m+Math.imul(tt,ct)|0,m=m+Math.imul(it,at)|0,C=C+Math.imul(it,ct)|0,_=_+Math.imul(Qe,lt)|0,m=m+Math.imul(Qe,ut)|0,m=m+Math.imul(et,lt)|0,C=C+Math.imul(et,ut)|0,_=_+Math.imul(Je,dt)|0,m=m+Math.imul(Je,ft)|0,m=m+Math.imul(Ye,dt)|0,C=C+Math.imul(Ye,ft)|0,_=_+Math.imul(Ze,ht)|0,m=m+Math.imul(Ze,pt)|0,m=m+Math.imul(Xe,ht)|0,C=C+Math.imul(Xe,pt)|0,_=_+Math.imul(qe,mt)|0,m=m+Math.imul(qe,gt)|0,m=m+Math.imul(Le,mt)|0,C=C+Math.imul(Le,gt)|0,_=_+Math.imul(_e,_t)|0,m=m+Math.imul(_e,bt)|0,m=m+Math.imul(he,_t)|0,C=C+Math.imul(he,bt)|0,_=_+Math.imul(ne,yt)|0,m=m+Math.imul(ne,wt)|0,m=m+Math.imul(me,yt)|0,C=C+Math.imul(me,wt)|0,_=_+Math.imul(H,vt)|0,m=m+Math.imul(H,kt)|0,m=m+Math.imul(ee,vt)|0,C=C+Math.imul(ee,kt)|0,_=_+Math.imul(R,Ct)|0,m=m+Math.imul(R,Tt)|0,m=m+Math.imul($,Ct)|0,C=C+Math.imul($,Tt)|0;var xc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(xc>>>26)|0,xc&=67108863,_=Math.imul(nt,at),m=Math.imul(nt,ct),m=m+Math.imul(rt,at)|0,C=Math.imul(rt,ct),_=_+Math.imul(tt,lt)|0,m=m+Math.imul(tt,ut)|0,m=m+Math.imul(it,lt)|0,C=C+Math.imul(it,ut)|0,_=_+Math.imul(Qe,dt)|0,m=m+Math.imul(Qe,ft)|0,m=m+Math.imul(et,dt)|0,C=C+Math.imul(et,ft)|0,_=_+Math.imul(Je,ht)|0,m=m+Math.imul(Je,pt)|0,m=m+Math.imul(Ye,ht)|0,C=C+Math.imul(Ye,pt)|0,_=_+Math.imul(Ze,mt)|0,m=m+Math.imul(Ze,gt)|0,m=m+Math.imul(Xe,mt)|0,C=C+Math.imul(Xe,gt)|0,_=_+Math.imul(qe,_t)|0,m=m+Math.imul(qe,bt)|0,m=m+Math.imul(Le,_t)|0,C=C+Math.imul(Le,bt)|0,_=_+Math.imul(_e,yt)|0,m=m+Math.imul(_e,wt)|0,m=m+Math.imul(he,yt)|0,C=C+Math.imul(he,wt)|0,_=_+Math.imul(ne,vt)|0,m=m+Math.imul(ne,kt)|0,m=m+Math.imul(me,vt)|0,C=C+Math.imul(me,kt)|0,_=_+Math.imul(H,Ct)|0,m=m+Math.imul(H,Tt)|0,m=m+Math.imul(ee,Ct)|0,C=C+Math.imul(ee,Tt)|0;var Ac=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Ac>>>26)|0,Ac&=67108863,_=Math.imul(nt,lt),m=Math.imul(nt,ut),m=m+Math.imul(rt,lt)|0,C=Math.imul(rt,ut),_=_+Math.imul(tt,dt)|0,m=m+Math.imul(tt,ft)|0,m=m+Math.imul(it,dt)|0,C=C+Math.imul(it,ft)|0,_=_+Math.imul(Qe,ht)|0,m=m+Math.imul(Qe,pt)|0,m=m+Math.imul(et,ht)|0,C=C+Math.imul(et,pt)|0,_=_+Math.imul(Je,mt)|0,m=m+Math.imul(Je,gt)|0,m=m+Math.imul(Ye,mt)|0,C=C+Math.imul(Ye,gt)|0,_=_+Math.imul(Ze,_t)|0,m=m+Math.imul(Ze,bt)|0,m=m+Math.imul(Xe,_t)|0,C=C+Math.imul(Xe,bt)|0,_=_+Math.imul(qe,yt)|0,m=m+Math.imul(qe,wt)|0,m=m+Math.imul(Le,yt)|0,C=C+Math.imul(Le,wt)|0,_=_+Math.imul(_e,vt)|0,m=m+Math.imul(_e,kt)|0,m=m+Math.imul(he,vt)|0,C=C+Math.imul(he,kt)|0,_=_+Math.imul(ne,Ct)|0,m=m+Math.imul(ne,Tt)|0,m=m+Math.imul(me,Ct)|0,C=C+Math.imul(me,Tt)|0;var Ic=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Ic>>>26)|0,Ic&=67108863,_=Math.imul(nt,dt),m=Math.imul(nt,ft),m=m+Math.imul(rt,dt)|0,C=Math.imul(rt,ft),_=_+Math.imul(tt,ht)|0,m=m+Math.imul(tt,pt)|0,m=m+Math.imul(it,ht)|0,C=C+Math.imul(it,pt)|0,_=_+Math.imul(Qe,mt)|0,m=m+Math.imul(Qe,gt)|0,m=m+Math.imul(et,mt)|0,C=C+Math.imul(et,gt)|0,_=_+Math.imul(Je,_t)|0,m=m+Math.imul(Je,bt)|0,m=m+Math.imul(Ye,_t)|0,C=C+Math.imul(Ye,bt)|0,_=_+Math.imul(Ze,yt)|0,m=m+Math.imul(Ze,wt)|0,m=m+Math.imul(Xe,yt)|0,C=C+Math.imul(Xe,wt)|0,_=_+Math.imul(qe,vt)|0,m=m+Math.imul(qe,kt)|0,m=m+Math.imul(Le,vt)|0,C=C+Math.imul(Le,kt)|0,_=_+Math.imul(_e,Ct)|0,m=m+Math.imul(_e,Tt)|0,m=m+Math.imul(he,Ct)|0,C=C+Math.imul(he,Tt)|0;var Oc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Oc>>>26)|0,Oc&=67108863,_=Math.imul(nt,ht),m=Math.imul(nt,pt),m=m+Math.imul(rt,ht)|0,C=Math.imul(rt,pt),_=_+Math.imul(tt,mt)|0,m=m+Math.imul(tt,gt)|0,m=m+Math.imul(it,mt)|0,C=C+Math.imul(it,gt)|0,_=_+Math.imul(Qe,_t)|0,m=m+Math.imul(Qe,bt)|0,m=m+Math.imul(et,_t)|0,C=C+Math.imul(et,bt)|0,_=_+Math.imul(Je,yt)|0,m=m+Math.imul(Je,wt)|0,m=m+Math.imul(Ye,yt)|0,C=C+Math.imul(Ye,wt)|0,_=_+Math.imul(Ze,vt)|0,m=m+Math.imul(Ze,kt)|0,m=m+Math.imul(Xe,vt)|0,C=C+Math.imul(Xe,kt)|0,_=_+Math.imul(qe,Ct)|0,m=m+Math.imul(qe,Tt)|0,m=m+Math.imul(Le,Ct)|0,C=C+Math.imul(Le,Tt)|0;var Pc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Pc>>>26)|0,Pc&=67108863,_=Math.imul(nt,mt),m=Math.imul(nt,gt),m=m+Math.imul(rt,mt)|0,C=Math.imul(rt,gt),_=_+Math.imul(tt,_t)|0,m=m+Math.imul(tt,bt)|0,m=m+Math.imul(it,_t)|0,C=C+Math.imul(it,bt)|0,_=_+Math.imul(Qe,yt)|0,m=m+Math.imul(Qe,wt)|0,m=m+Math.imul(et,yt)|0,C=C+Math.imul(et,wt)|0,_=_+Math.imul(Je,vt)|0,m=m+Math.imul(Je,kt)|0,m=m+Math.imul(Ye,vt)|0,C=C+Math.imul(Ye,kt)|0,_=_+Math.imul(Ze,Ct)|0,m=m+Math.imul(Ze,Tt)|0,m=m+Math.imul(Xe,Ct)|0,C=C+Math.imul(Xe,Tt)|0;var Dc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Dc>>>26)|0,Dc&=67108863,_=Math.imul(nt,_t),m=Math.imul(nt,bt),m=m+Math.imul(rt,_t)|0,C=Math.imul(rt,bt),_=_+Math.imul(tt,yt)|0,m=m+Math.imul(tt,wt)|0,m=m+Math.imul(it,yt)|0,C=C+Math.imul(it,wt)|0,_=_+Math.imul(Qe,vt)|0,m=m+Math.imul(Qe,kt)|0,m=m+Math.imul(et,vt)|0,C=C+Math.imul(et,kt)|0,_=_+Math.imul(Je,Ct)|0,m=m+Math.imul(Je,Tt)|0,m=m+Math.imul(Ye,Ct)|0,C=C+Math.imul(Ye,Tt)|0;var Mc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Mc>>>26)|0,Mc&=67108863,_=Math.imul(nt,yt),m=Math.imul(nt,wt),m=m+Math.imul(rt,yt)|0,C=Math.imul(rt,wt),_=_+Math.imul(tt,vt)|0,m=m+Math.imul(tt,kt)|0,m=m+Math.imul(it,vt)|0,C=C+Math.imul(it,kt)|0,_=_+Math.imul(Qe,Ct)|0,m=m+Math.imul(Qe,Tt)|0,m=m+Math.imul(et,Ct)|0,C=C+Math.imul(et,Tt)|0;var Ec=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(Ec>>>26)|0,Ec&=67108863,_=Math.imul(nt,vt),m=Math.imul(nt,kt),m=m+Math.imul(rt,vt)|0,C=Math.imul(rt,kt),_=_+Math.imul(tt,Ct)|0,m=m+Math.imul(tt,Tt)|0,m=m+Math.imul(it,Ct)|0,C=C+Math.imul(it,Tt)|0;var jc=(w+_|0)+((m&8191)<<13)|0;w=(C+(m>>>13)|0)+(jc>>>26)|0,jc&=67108863,_=Math.imul(nt,Ct),m=Math.imul(nt,Tt),m=m+Math.imul(rt,Ct)|0,C=Math.imul(rt,Tt);var Bc=(w+_|0)+((m&8191)<<13)|0;return w=(C+(m>>>13)|0)+(Bc>>>26)|0,Bc&=67108863,g[0]=_c,g[1]=bc,g[2]=yc,g[3]=wc,g[4]=vc,g[5]=kc,g[6]=Cc,g[7]=Tc,g[8]=Sc,g[9]=xc,g[10]=Ac,g[11]=Ic,g[12]=Oc,g[13]=Pc,g[14]=Dc,g[15]=Mc,g[16]=Ec,g[17]=jc,g[18]=Bc,w!==0&&(g[19]=w,f.length++),f};Math.imul||(B=j);function D(S,c,d){d.negative=c.negative^S.negative,d.length=S.length+c.length;for(var f=0,b=0,p=0;p<d.length-1;p++){var g=b;b=0;for(var w=f&67108863,_=Math.min(p,c.length-1),m=Math.max(0,p-S.length+1);m<=_;m++){var C=p-m,N=S.words[C]|0,R=c.words[m]|0,$=N*R,L=$&67108863;g=g+($/67108864|0)|0,L=L+w|0,w=L&67108863,g=g+(L>>>26)|0,b+=g>>>26,g&=67108863}d.words[p]=w,f=g,g=b}return f!==0?d.words[p]=f:d.length--,d._strip()}function q(S,c,d){return D(S,c,d)}r.prototype.mulTo=function(c,d){var f,b=this.length+c.length;return this.length===10&&c.length===10?f=B(this,c,d):b<63?f=j(this,c,d):b<1024?f=D(this,c,d):f=q(this,c,d),f};function K(S,c){this.x=S,this.y=c}K.prototype.makeRBT=function(c){for(var d=new Array(c),f=r.prototype._countBits(c)-1,b=0;b<c;b++)d[b]=this.revBin(b,f,c);return d},K.prototype.revBin=function(c,d,f){if(c===0||c===f-1)return c;for(var b=0,p=0;p<d;p++)b|=(c&1)<<d-p-1,c>>=1;return b},K.prototype.permute=function(c,d,f,b,p,g){for(var w=0;w<g;w++)b[w]=d[c[w]],p[w]=f[c[w]]},K.prototype.transform=function(c,d,f,b,p,g){this.permute(g,c,d,f,b,p);for(var w=1;w<p;w<<=1)for(var _=w<<1,m=Math.cos(2*Math.PI/_),C=Math.sin(2*Math.PI/_),N=0;N<p;N+=_)for(var R=m,$=C,L=0;L<w;L++){var H=f[N+L],ee=b[N+L],ge=f[N+L+w],ne=b[N+L+w],me=R*ge-$*ne;ne=R*ne+$*ge,ge=me,f[N+L]=H+ge,b[N+L]=ee+ne,f[N+L+w]=H-ge,b[N+L+w]=ee-ne,L!==_&&(me=m*R-C*$,$=m*$+C*R,R=me)}},K.prototype.guessLen13b=function(c,d){var f=Math.max(d,c)|1,b=f&1,p=0;for(f=f/2|0;f;f=f>>>1)p++;return 1<<p+1+b},K.prototype.conjugate=function(c,d,f){if(!(f<=1))for(var b=0;b<f/2;b++){var p=c[b];c[b]=c[f-b-1],c[f-b-1]=p,p=d[b],d[b]=-d[f-b-1],d[f-b-1]=-p}},K.prototype.normalize13b=function(c,d){for(var f=0,b=0;b<d/2;b++){var p=Math.round(c[2*b+1]/d)*8192+Math.round(c[2*b]/d)+f;c[b]=p&67108863,p<67108864?f=0:f=p/67108864|0}return c},K.prototype.convert13b=function(c,d,f,b){for(var p=0,g=0;g<d;g++)p=p+(c[g]|0),f[2*g]=p&8191,p=p>>>13,f[2*g+1]=p&8191,p=p>>>13;for(g=2*d;g<b;++g)f[g]=0;i(p===0),i((p&-8192)===0)},K.prototype.stub=function(c){for(var d=new Array(c),f=0;f<c;f++)d[f]=0;return d},K.prototype.mulp=function(c,d,f){var b=2*this.guessLen13b(c.length,d.length),p=this.makeRBT(b),g=this.stub(b),w=new Array(b),_=new Array(b),m=new Array(b),C=new Array(b),N=new Array(b),R=new Array(b),$=f.words;$.length=b,this.convert13b(c.words,c.length,w,b),this.convert13b(d.words,d.length,C,b),this.transform(w,g,_,m,b,p),this.transform(C,g,N,R,b,p);for(var L=0;L<b;L++){var H=_[L]*N[L]-m[L]*R[L];m[L]=_[L]*R[L]+m[L]*N[L],_[L]=H}return this.conjugate(_,m,b),this.transform(_,m,$,g,b,p),this.conjugate($,g,b),this.normalize13b($,b),f.negative=c.negative^d.negative,f.length=c.length+d.length,f._strip()},r.prototype.mul=function(c){var d=new r(null);return d.words=new Array(this.length+c.length),this.mulTo(c,d)},r.prototype.mulf=function(c){var d=new r(null);return d.words=new Array(this.length+c.length),q(this,c,d)},r.prototype.imul=function(c){return this.clone().mulTo(c,this)},r.prototype.imuln=function(c){var d=c<0;d&&(c=-c),i(typeof c=="number"),i(c<67108864);for(var f=0,b=0;b<this.length;b++){var p=(this.words[b]|0)*c,g=(p&67108863)+(f&67108863);f>>=26,f+=p/67108864|0,f+=g>>>26,this.words[b]=g&67108863}return f!==0&&(this.words[b]=f,this.length++),d?this.ineg():this},r.prototype.muln=function(c){return this.clone().imuln(c)},r.prototype.sqr=function(){return this.mul(this)},r.prototype.isqr=function(){return this.imul(this.clone())},r.prototype.pow=function(c){var d=P(c);if(d.length===0)return new r(1);for(var f=this,b=0;b<d.length&&d[b]===0;b++,f=f.sqr());if(++b<d.length)for(var p=f.sqr();b<d.length;b++,p=p.sqr())d[b]!==0&&(f=f.mul(p));return f},r.prototype.iushln=function(c){i(typeof c=="number"&&c>=0);var d=c%26,f=(c-d)/26,b=67108863>>>26-d<<26-d,p;if(d!==0){var g=0;for(p=0;p<this.length;p++){var w=this.words[p]&b,_=(this.words[p]|0)-w<<d;this.words[p]=_|g,g=w>>>26-d}g&&(this.words[p]=g,this.length++)}if(f!==0){for(p=this.length-1;p>=0;p--)this.words[p+f]=this.words[p];for(p=0;p<f;p++)this.words[p]=0;this.length+=f}return this._strip()},r.prototype.ishln=function(c){return i(this.negative===0),this.iushln(c)},r.prototype.iushrn=function(c,d,f){i(typeof c=="number"&&c>=0);var b;d?b=(d-d%26)/26:b=0;var p=c%26,g=Math.min((c-p)/26,this.length),w=67108863^67108863>>>p<<p,_=f;if(b-=g,b=Math.max(0,b),_){for(var m=0;m<g;m++)_.words[m]=this.words[m];_.length=g}if(g!==0)if(this.length>g)for(this.length-=g,m=0;m<this.length;m++)this.words[m]=this.words[m+g];else this.words[0]=0,this.length=1;var C=0;for(m=this.length-1;m>=0&&(C!==0||m>=b);m--){var N=this.words[m]|0;this.words[m]=C<<26-p|N>>>p,C=N&w}return _&&C!==0&&(_.words[_.length++]=C),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},r.prototype.ishrn=function(c,d,f){return i(this.negative===0),this.iushrn(c,d,f)},r.prototype.shln=function(c){return this.clone().ishln(c)},r.prototype.ushln=function(c){return this.clone().iushln(c)},r.prototype.shrn=function(c){return this.clone().ishrn(c)},r.prototype.ushrn=function(c){return this.clone().iushrn(c)},r.prototype.testn=function(c){i(typeof c=="number"&&c>=0);var d=c%26,f=(c-d)/26,b=1<<d;if(this.length<=f)return!1;var p=this.words[f];return!!(p&b)},r.prototype.imaskn=function(c){i(typeof c=="number"&&c>=0);var d=c%26,f=(c-d)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=f)return this;if(d!==0&&f++,this.length=Math.min(f,this.length),d!==0){var b=67108863^67108863>>>d<<d;this.words[this.length-1]&=b}return this._strip()},r.prototype.maskn=function(c){return this.clone().imaskn(c)},r.prototype.iaddn=function(c){return i(typeof c=="number"),i(c<67108864),c<0?this.isubn(-c):this.negative!==0?this.length===1&&(this.words[0]|0)<=c?(this.words[0]=c-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(c),this.negative=1,this):this._iaddn(c)},r.prototype._iaddn=function(c){this.words[0]+=c;for(var d=0;d<this.length&&this.words[d]>=67108864;d++)this.words[d]-=67108864,d===this.length-1?this.words[d+1]=1:this.words[d+1]++;return this.length=Math.max(this.length,d+1),this},r.prototype.isubn=function(c){if(i(typeof c=="number"),i(c<67108864),c<0)return this.iaddn(-c);if(this.negative!==0)return this.negative=0,this.iaddn(c),this.negative=1,this;if(this.words[0]-=c,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var d=0;d<this.length&&this.words[d]<0;d++)this.words[d]+=67108864,this.words[d+1]-=1;return this._strip()},r.prototype.addn=function(c){return this.clone().iaddn(c)},r.prototype.subn=function(c){return this.clone().isubn(c)},r.prototype.iabs=function(){return this.negative=0,this},r.prototype.abs=function(){return this.clone().iabs()},r.prototype._ishlnsubmul=function(c,d,f){var b=c.length+f,p;this._expand(b);var g,w=0;for(p=0;p<c.length;p++){g=(this.words[p+f]|0)+w;var _=(c.words[p]|0)*d;g-=_&67108863,w=(g>>26)-(_/67108864|0),this.words[p+f]=g&67108863}for(;p<this.length-f;p++)g=(this.words[p+f]|0)+w,w=g>>26,this.words[p+f]=g&67108863;if(w===0)return this._strip();for(i(w===-1),w=0,p=0;p<this.length;p++)g=-(this.words[p]|0)+w,w=g>>26,this.words[p]=g&67108863;return this.negative=1,this._strip()},r.prototype._wordDiv=function(c,d){var f=this.length-c.length,b=this.clone(),p=c,g=p.words[p.length-1]|0,w=this._countBits(g);f=26-w,f!==0&&(p=p.ushln(f),b.iushln(f),g=p.words[p.length-1]|0);var _=b.length-p.length,m;if(d!=="mod"){m=new r(null),m.length=_+1,m.words=new Array(m.length);for(var C=0;C<m.length;C++)m.words[C]=0}var N=b.clone()._ishlnsubmul(p,1,_);N.negative===0&&(b=N,m&&(m.words[_]=1));for(var R=_-1;R>=0;R--){var $=(b.words[p.length+R]|0)*67108864+(b.words[p.length+R-1]|0);for($=Math.min($/g|0,67108863),b._ishlnsubmul(p,$,R);b.negative!==0;)$--,b.negative=0,b._ishlnsubmul(p,1,R),b.isZero()||(b.negative^=1);m&&(m.words[R]=$)}return m&&m._strip(),b._strip(),d!=="div"&&f!==0&&b.iushrn(f),{div:m||null,mod:b}},r.prototype.divmod=function(c,d,f){if(i(!c.isZero()),this.isZero())return{div:new r(0),mod:new r(0)};var b,p,g;return this.negative!==0&&c.negative===0?(g=this.neg().divmod(c,d),d!=="mod"&&(b=g.div.neg()),d!=="div"&&(p=g.mod.neg(),f&&p.negative!==0&&p.iadd(c)),{div:b,mod:p}):this.negative===0&&c.negative!==0?(g=this.divmod(c.neg(),d),d!=="mod"&&(b=g.div.neg()),{div:b,mod:g.mod}):this.negative&c.negative?(g=this.neg().divmod(c.neg(),d),d!=="div"&&(p=g.mod.neg(),f&&p.negative!==0&&p.isub(c)),{div:g.div,mod:p}):c.length>this.length||this.cmp(c)<0?{div:new r(0),mod:this}:c.length===1?d==="div"?{div:this.divn(c.words[0]),mod:null}:d==="mod"?{div:null,mod:new r(this.modrn(c.words[0]))}:{div:this.divn(c.words[0]),mod:new r(this.modrn(c.words[0]))}:this._wordDiv(c,d)},r.prototype.div=function(c){return this.divmod(c,"div",!1).div},r.prototype.mod=function(c){return this.divmod(c,"mod",!1).mod},r.prototype.umod=function(c){return this.divmod(c,"mod",!0).mod},r.prototype.divRound=function(c){var d=this.divmod(c);if(d.mod.isZero())return d.div;var f=d.div.negative!==0?d.mod.isub(c):d.mod,b=c.ushrn(1),p=c.andln(1),g=f.cmp(b);return g<0||p===1&&g===0?d.div:d.div.negative!==0?d.div.isubn(1):d.div.iaddn(1)},r.prototype.modrn=function(c){var d=c<0;d&&(c=-c),i(c<=67108863);for(var f=(1<<26)%c,b=0,p=this.length-1;p>=0;p--)b=(f*b+(this.words[p]|0))%c;return d?-b:b},r.prototype.modn=function(c){return this.modrn(c)},r.prototype.idivn=function(c){var d=c<0;d&&(c=-c),i(c<=67108863);for(var f=0,b=this.length-1;b>=0;b--){var p=(this.words[b]|0)+f*67108864;this.words[b]=p/c|0,f=p%c}return this._strip(),d?this.ineg():this},r.prototype.divn=function(c){return this.clone().idivn(c)},r.prototype.egcd=function(c){i(c.negative===0),i(!c.isZero());var d=this,f=c.clone();d.negative!==0?d=d.umod(c):d=d.clone();for(var b=new r(1),p=new r(0),g=new r(0),w=new r(1),_=0;d.isEven()&&f.isEven();)d.iushrn(1),f.iushrn(1),++_;for(var m=f.clone(),C=d.clone();!d.isZero();){for(var N=0,R=1;!(d.words[0]&R)&&N<26;++N,R<<=1);if(N>0)for(d.iushrn(N);N-- >0;)(b.isOdd()||p.isOdd())&&(b.iadd(m),p.isub(C)),b.iushrn(1),p.iushrn(1);for(var $=0,L=1;!(f.words[0]&L)&&$<26;++$,L<<=1);if($>0)for(f.iushrn($);$-- >0;)(g.isOdd()||w.isOdd())&&(g.iadd(m),w.isub(C)),g.iushrn(1),w.iushrn(1);d.cmp(f)>=0?(d.isub(f),b.isub(g),p.isub(w)):(f.isub(d),g.isub(b),w.isub(p))}return{a:g,b:w,gcd:f.iushln(_)}},r.prototype._invmp=function(c){i(c.negative===0),i(!c.isZero());var d=this,f=c.clone();d.negative!==0?d=d.umod(c):d=d.clone();for(var b=new r(1),p=new r(0),g=f.clone();d.cmpn(1)>0&&f.cmpn(1)>0;){for(var w=0,_=1;!(d.words[0]&_)&&w<26;++w,_<<=1);if(w>0)for(d.iushrn(w);w-- >0;)b.isOdd()&&b.iadd(g),b.iushrn(1);for(var m=0,C=1;!(f.words[0]&C)&&m<26;++m,C<<=1);if(m>0)for(f.iushrn(m);m-- >0;)p.isOdd()&&p.iadd(g),p.iushrn(1);d.cmp(f)>=0?(d.isub(f),b.isub(p)):(f.isub(d),p.isub(b))}var N;return d.cmpn(1)===0?N=b:N=p,N.cmpn(0)<0&&N.iadd(c),N},r.prototype.gcd=function(c){if(this.isZero())return c.abs();if(c.isZero())return this.abs();var d=this.clone(),f=c.clone();d.negative=0,f.negative=0;for(var b=0;d.isEven()&&f.isEven();b++)d.iushrn(1),f.iushrn(1);do{for(;d.isEven();)d.iushrn(1);for(;f.isEven();)f.iushrn(1);var p=d.cmp(f);if(p<0){var g=d;d=f,f=g}else if(p===0||f.cmpn(1)===0)break;d.isub(f)}while(!0);return f.iushln(b)},r.prototype.invm=function(c){return this.egcd(c).a.umod(c)},r.prototype.isEven=function(){return(this.words[0]&1)===0},r.prototype.isOdd=function(){return(this.words[0]&1)===1},r.prototype.andln=function(c){return this.words[0]&c},r.prototype.bincn=function(c){i(typeof c=="number");var d=c%26,f=(c-d)/26,b=1<<d;if(this.length<=f)return this._expand(f+1),this.words[f]|=b,this;for(var p=b,g=f;p!==0&&g<this.length;g++){var w=this.words[g]|0;w+=p,p=w>>>26,w&=67108863,this.words[g]=w}return p!==0&&(this.words[g]=p,this.length++),this},r.prototype.isZero=function(){return this.length===1&&this.words[0]===0},r.prototype.cmpn=function(c){var d=c<0;if(this.negative!==0&&!d)return-1;if(this.negative===0&&d)return 1;this._strip();var f;if(this.length>1)f=1;else{d&&(c=-c),i(c<=67108863,"Number is too big");var b=this.words[0]|0;f=b===c?0:b<c?-1:1}return this.negative!==0?-f|0:f},r.prototype.cmp=function(c){if(this.negative!==0&&c.negative===0)return-1;if(this.negative===0&&c.negative!==0)return 1;var d=this.ucmp(c);return this.negative!==0?-d|0:d},r.prototype.ucmp=function(c){if(this.length>c.length)return 1;if(this.length<c.length)return-1;for(var d=0,f=this.length-1;f>=0;f--){var b=this.words[f]|0,p=c.words[f]|0;if(b!==p){b<p?d=-1:b>p&&(d=1);break}}return d},r.prototype.gtn=function(c){return this.cmpn(c)===1},r.prototype.gt=function(c){return this.cmp(c)===1},r.prototype.gten=function(c){return this.cmpn(c)>=0},r.prototype.gte=function(c){return this.cmp(c)>=0},r.prototype.ltn=function(c){return this.cmpn(c)===-1},r.prototype.lt=function(c){return this.cmp(c)===-1},r.prototype.lten=function(c){return this.cmpn(c)<=0},r.prototype.lte=function(c){return this.cmp(c)<=0},r.prototype.eqn=function(c){return this.cmpn(c)===0},r.prototype.eq=function(c){return this.cmp(c)===0},r.red=function(c){return new E(c)},r.prototype.toRed=function(c){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),c.convertTo(this)._forceRed(c)},r.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},r.prototype._forceRed=function(c){return this.red=c,this},r.prototype.forceRed=function(c){return i(!this.red,"Already a number in reduction context"),this._forceRed(c)},r.prototype.redAdd=function(c){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,c)},r.prototype.redIAdd=function(c){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,c)},r.prototype.redSub=function(c){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,c)},r.prototype.redISub=function(c){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,c)},r.prototype.redShl=function(c){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,c)},r.prototype.redMul=function(c){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,c),this.red.mul(this,c)},r.prototype.redIMul=function(c){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,c),this.red.imul(this,c)},r.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},r.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},r.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},r.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},r.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},r.prototype.redPow=function(c){return i(this.red&&!c.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,c)};var Z={k256:null,p224:null,p192:null,p25519:null};function G(S,c){this.name=S,this.p=new r(c,16),this.n=this.p.bitLength(),this.k=new r(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}G.prototype._tmp=function(){var c=new r(null);return c.words=new Array(Math.ceil(this.n/13)),c},G.prototype.ireduce=function(c){var d=c,f;do this.split(d,this.tmp),d=this.imulK(d),d=d.iadd(this.tmp),f=d.bitLength();while(f>this.n);var b=f<this.n?-1:d.ucmp(this.p);return b===0?(d.words[0]=0,d.length=1):b>0?d.isub(this.p):d.strip!==void 0?d.strip():d._strip(),d},G.prototype.split=function(c,d){c.iushrn(this.n,0,d)},G.prototype.imulK=function(c){return c.imul(this.k)};function J(){G.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(J,G),J.prototype.split=function(c,d){for(var f=4194303,b=Math.min(c.length,9),p=0;p<b;p++)d.words[p]=c.words[p];if(d.length=b,c.length<=9){c.words[0]=0,c.length=1;return}var g=c.words[9];for(d.words[d.length++]=g&f,p=10;p<c.length;p++){var w=c.words[p]|0;c.words[p-10]=(w&f)<<4|g>>>22,g=w}g>>>=22,c.words[p-10]=g,g===0&&c.length>10?c.length-=10:c.length-=9},J.prototype.imulK=function(c){c.words[c.length]=0,c.words[c.length+1]=0,c.length+=2;for(var d=0,f=0;f<c.length;f++){var b=c.words[f]|0;d+=b*977,c.words[f]=d&67108863,d=b*64+(d/67108864|0)}return c.words[c.length-1]===0&&(c.length--,c.words[c.length-1]===0&&c.length--),c};function x(){G.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}n(x,G);function I(){G.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}n(I,G);function A(){G.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}n(A,G),A.prototype.imulK=function(c){for(var d=0,f=0;f<c.length;f++){var b=(c.words[f]|0)*19+d,p=b&67108863;b>>>=26,c.words[f]=p,d=b}return d!==0&&(c.words[c.length++]=d),c},r._prime=function(c){if(Z[c])return Z[c];var d;if(c==="k256")d=new J;else if(c==="p224")d=new x;else if(c==="p192")d=new I;else if(c==="p25519")d=new A;else throw new Error("Unknown prime "+c);return Z[c]=d,d};function E(S){if(typeof S=="string"){var c=r._prime(S);this.m=c.p,this.prime=c}else i(S.gtn(1),"modulus must be greater than 1"),this.m=S,this.prime=null}E.prototype._verify1=function(c){i(c.negative===0,"red works only with positives"),i(c.red,"red works only with red numbers")},E.prototype._verify2=function(c,d){i((c.negative|d.negative)===0,"red works only with positives"),i(c.red&&c.red===d.red,"red works only with red numbers")},E.prototype.imod=function(c){return this.prime?this.prime.ireduce(c)._forceRed(this):(u(c,c.umod(this.m)._forceRed(this)),c)},E.prototype.neg=function(c){return c.isZero()?c.clone():this.m.sub(c)._forceRed(this)},E.prototype.add=function(c,d){this._verify2(c,d);var f=c.add(d);return f.cmp(this.m)>=0&&f.isub(this.m),f._forceRed(this)},E.prototype.iadd=function(c,d){this._verify2(c,d);var f=c.iadd(d);return f.cmp(this.m)>=0&&f.isub(this.m),f},E.prototype.sub=function(c,d){this._verify2(c,d);var f=c.sub(d);return f.cmpn(0)<0&&f.iadd(this.m),f._forceRed(this)},E.prototype.isub=function(c,d){this._verify2(c,d);var f=c.isub(d);return f.cmpn(0)<0&&f.iadd(this.m),f},E.prototype.shl=function(c,d){return this._verify1(c),this.imod(c.ushln(d))},E.prototype.imul=function(c,d){return this._verify2(c,d),this.imod(c.imul(d))},E.prototype.mul=function(c,d){return this._verify2(c,d),this.imod(c.mul(d))},E.prototype.isqr=function(c){return this.imul(c,c.clone())},E.prototype.sqr=function(c){return this.mul(c,c)},E.prototype.sqrt=function(c){if(c.isZero())return c.clone();var d=this.m.andln(3);if(i(d%2===1),d===3){var f=this.m.add(new r(1)).iushrn(2);return this.pow(c,f)}for(var b=this.m.subn(1),p=0;!b.isZero()&&b.andln(1)===0;)p++,b.iushrn(1);i(!b.isZero());var g=new r(1).toRed(this),w=g.redNeg(),_=this.m.subn(1).iushrn(1),m=this.m.bitLength();for(m=new r(2*m*m).toRed(this);this.pow(m,_).cmp(w)!==0;)m.redIAdd(w);for(var C=this.pow(m,b),N=this.pow(c,b.addn(1).iushrn(1)),R=this.pow(c,b),$=p;R.cmp(g)!==0;){for(var L=R,H=0;L.cmp(g)!==0;H++)L=L.redSqr();i(H<$);var ee=this.pow(C,new r(1).iushln($-H-1));N=N.redMul(ee),C=ee.redSqr(),R=R.redMul(C),$=H}return N},E.prototype.invm=function(c){var d=c._invmp(this.m);return d.negative!==0?(d.negative=0,this.imod(d).redNeg()):this.imod(d)},E.prototype.pow=function(c,d){if(d.isZero())return new r(1).toRed(this);if(d.cmpn(1)===0)return c.clone();var f=4,b=new Array(1<<f);b[0]=new r(1).toRed(this),b[1]=c;for(var p=2;p<b.length;p++)b[p]=this.mul(b[p-1],c);var g=b[0],w=0,_=0,m=d.bitLength()%26;for(m===0&&(m=26),p=d.length-1;p>=0;p--){for(var C=d.words[p],N=m-1;N>=0;N--){var R=C>>N&1;if(g!==b[0]&&(g=this.sqr(g)),R===0&&w===0){_=0;continue}w<<=1,w|=R,_++,!(_!==f&&(p!==0||N!==0))&&(g=this.mul(g,b[w]),_=0,w=0)}m=26}return g},E.prototype.convertTo=function(c){var d=c.umod(this.m);return d===c?d.clone():d},E.prototype.convertFrom=function(c){var d=c.clone();return d.red=null,d},r.mont=function(c){return new k(c)};function k(S){E.call(this,S),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new r(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(k,E),k.prototype.convertTo=function(c){return this.imod(c.ushln(this.shift))},k.prototype.convertFrom=function(c){var d=this.imod(c.mul(this.rinv));return d.red=null,d},k.prototype.imul=function(c,d){if(c.isZero()||d.isZero())return c.words[0]=0,c.length=1,c;var f=c.imul(d),b=f.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=f.isub(b).iushrn(this.shift),g=p;return p.cmp(this.m)>=0?g=p.isub(this.m):p.cmpn(0)<0&&(g=p.iadd(this.m)),g._forceRed(this)},k.prototype.mul=function(c,d){if(c.isZero()||d.isZero())return new r(0)._forceRed(this);var f=c.mul(d),b=f.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=f.isub(b).iushrn(this.shift),g=p;return p.cmp(this.m)>=0?g=p.isub(this.m):p.cmpn(0)<0&&(g=p.iadd(this.m)),g._forceRed(this)},k.prototype.invm=function(c){var d=this.imod(c._invmp(this.m).mul(this.r2));return d._forceRed(this)}})(typeof Rc>"u"||Rc,Bd)});var yf={};wd(yf,{__addDisposableResource:()=>_f,__assign:()=>Is,__asyncDelegator:()=>lf,__asyncGenerator:()=>cf,__asyncValues:()=>uf,__await:()=>_r,__awaiter:()=>tf,__classPrivateFieldGet:()=>pf,__classPrivateFieldIn:()=>gf,__classPrivateFieldSet:()=>mf,__createBinding:()=>Ps,__decorate:()=>Yd,__disposeResources:()=>bf,__esDecorate:()=>Vb,__exportStar:()=>rf,__extends:()=>Xd,__generator:()=>nf,__importDefault:()=>hf,__importStar:()=>ff,__makeTemplateObject:()=>df,__metadata:()=>ef,__param:()=>Qd,__propKey:()=>zb,__read:()=>Hc,__rest:()=>Jd,__runInitializers:()=>Wb,__setFunctionName:()=>Gb,__spread:()=>of,__spreadArray:()=>af,__spreadArrays:()=>sf,__values:()=>Os,default:()=>Xb});function Xd(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");Gc(t,e);function i(){this.constructor=t}t.prototype=e===null?Object.create(e):(i.prototype=e.prototype,new i)}function Jd(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(i[n]=t[n]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,n=Object.getOwnPropertySymbols(t);r<n.length;r++)e.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(t,n[r])&&(i[n[r]]=t[n[r]]);return i}function Yd(t,e,i,n){var r=arguments.length,o=r<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,i):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(t,e,i,n);else for(var a=t.length-1;a>=0;a--)(s=t[a])&&(o=(r<3?s(o):r>3?s(e,i,o):s(e,i))||o);return r>3&&o&&Object.defineProperty(e,i,o),o}function Qd(t,e){return function(i,n){e(i,n,t)}}function Vb(t,e,i,n,r,o){function s(B){if(B!==void 0&&typeof B!="function")throw new TypeError("Function expected");return B}for(var a=n.kind,l=a==="getter"?"get":a==="setter"?"set":"value",u=!e&&t?n.static?t:t.prototype:null,h=e||(u?Object.getOwnPropertyDescriptor(u,n.name):{}),y,v=!1,T=i.length-1;T>=0;T--){var O={};for(var P in n)O[P]=P==="access"?{}:n[P];for(var P in n.access)O.access[P]=n.access[P];O.addInitializer=function(B){if(v)throw new TypeError("Cannot add initializers after decoration has completed");o.push(s(B||null))};var j=(0,i[T])(a==="accessor"?{get:h.get,set:h.set}:h[l],O);if(a==="accessor"){if(j===void 0)continue;if(j===null||typeof j!="object")throw new TypeError("Object expected");(y=s(j.get))&&(h.get=y),(y=s(j.set))&&(h.set=y),(y=s(j.init))&&r.unshift(y)}else(y=s(j))&&(a==="field"?r.unshift(y):h[l]=y)}u&&Object.defineProperty(u,n.name,h),v=!0}function Wb(t,e,i){for(var n=arguments.length>2,r=0;r<e.length;r++)i=n?e[r].call(t,i):e[r].call(t);return n?i:void 0}function zb(t){return typeof t=="symbol"?t:"".concat(t)}function Gb(t,e,i){return typeof e=="symbol"&&(e=e.description?"[".concat(e.description,"]"):""),Object.defineProperty(t,"name",{configurable:!0,value:i?"".concat(i," ",e):e})}function ef(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function tf(t,e,i,n){function r(o){return o instanceof i?o:new i(function(s){s(o)})}return new(i||(i=Promise))(function(o,s){function a(h){try{u(n.next(h))}catch(y){s(y)}}function l(h){try{u(n.throw(h))}catch(y){s(y)}}function u(h){h.done?o(h.value):r(h.value).then(a,l)}u((n=n.apply(t,e||[])).next())})}function nf(t,e){var i={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,r,o,s;return s={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function a(u){return function(h){return l([u,h])}}function l(u){if(n)throw new TypeError("Generator is already executing.");for(;s&&(s=0,u[0]&&(i=0)),i;)try{if(n=1,r&&(o=u[0]&2?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[u[0]&2,o.value]),u[0]){case 0:case 1:o=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(o=i.trys,!(o=o.length>0&&o[o.length-1])&&(u[0]===6||u[0]===2)){i=0;continue}if(u[0]===3&&(!o||u[1]>o[0]&&u[1]<o[3])){i.label=u[1];break}if(u[0]===6&&i.label<o[1]){i.label=o[1],o=u;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(u);break}o[2]&&i.ops.pop(),i.trys.pop();continue}u=e.call(t,i)}catch(h){u=[6,h],r=0}finally{n=o=0}if(u[0]&5)throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}function rf(t,e){for(var i in t)i!=="default"&&!Object.prototype.hasOwnProperty.call(e,i)&&Ps(e,t,i)}function Os(t){var e=typeof Symbol=="function"&&Symbol.iterator,i=e&&t[e],n=0;if(i)return i.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function Hc(t,e){var i=typeof Symbol=="function"&&t[Symbol.iterator];if(!i)return t;var n=i.call(t),r,o=[],s;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(a){s={error:a}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(s)throw s.error}}return o}function of(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(Hc(arguments[e]));return t}function sf(){for(var t=0,e=0,i=arguments.length;e<i;e++)t+=arguments[e].length;for(var n=Array(t),r=0,e=0;e<i;e++)for(var o=arguments[e],s=0,a=o.length;s<a;s++,r++)n[r]=o[s];return n}function af(t,e,i){if(i||arguments.length===2)for(var n=0,r=e.length,o;n<r;n++)(o||!(n in e))&&(o||(o=Array.prototype.slice.call(e,0,n)),o[n]=e[n]);return t.concat(o||Array.prototype.slice.call(e))}function _r(t){return this instanceof _r?(this.v=t,this):new _r(t)}function cf(t,e,i){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=i.apply(t,e||[]),r,o=[];return r={},s("next"),s("throw"),s("return"),r[Symbol.asyncIterator]=function(){return this},r;function s(v){n[v]&&(r[v]=function(T){return new Promise(function(O,P){o.push([v,T,O,P])>1||a(v,T)})})}function a(v,T){try{l(n[v](T))}catch(O){y(o[0][3],O)}}function l(v){v.value instanceof _r?Promise.resolve(v.value.v).then(u,h):y(o[0][2],v)}function u(v){a("next",v)}function h(v){a("throw",v)}function y(v,T){v(T),o.shift(),o.length&&a(o[0][0],o[0][1])}}function lf(t){var e,i;return e={},n("next"),n("throw",function(r){throw r}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(r,o){e[r]=t[r]?function(s){return(i=!i)?{value:_r(t[r](s)),done:!1}:o?o(s):s}:o}}function uf(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],i;return e?e.call(t):(t=typeof Os=="function"?Os(t):t[Symbol.iterator](),i={},n("next"),n("throw"),n("return"),i[Symbol.asyncIterator]=function(){return this},i);function n(o){i[o]=t[o]&&function(s){return new Promise(function(a,l){s=t[o](s),r(a,l,s.done,s.value)})}}function r(o,s,a,l){Promise.resolve(l).then(function(u){o({value:u,done:a})},s)}}function df(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function ff(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var i in t)i!=="default"&&Object.prototype.hasOwnProperty.call(t,i)&&Ps(e,t,i);return Hb(e,t),e}function hf(t){return t&&t.__esModule?t:{default:t}}function pf(t,e,i,n){if(i==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return i==="m"?n:i==="a"?n.call(t):n?n.value:e.get(t)}function mf(t,e,i,n,r){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!r)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?t!==e||!r:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?r.call(t,i):r?r.value=i:e.set(t,i),i}function gf(t,e){if(e===null||typeof e!="object"&&typeof e!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof t=="function"?e===t:t.has(e)}function _f(t,e,i){if(e!=null){if(typeof e!="object"&&typeof e!="function")throw new TypeError("Object expected.");var n;if(i){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");n=e[Symbol.asyncDispose]}if(n===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");n=e[Symbol.dispose]}if(typeof n!="function")throw new TypeError("Object not disposable.");t.stack.push({value:e,dispose:n,async:i})}else i&&t.stack.push({async:!0});return e}function bf(t){function e(n){t.error=t.hasError?new Zb(n,t.error,"An error was suppressed during disposal."):n,t.hasError=!0}function i(){for(;t.stack.length;){var n=t.stack.pop();try{var r=n.dispose&&n.dispose.call(n.value);if(n.async)return Promise.resolve(r).then(i,function(o){return e(o),i()})}catch(o){e(o)}}if(t.hasError)throw t.error}return i()}var Gc,Is,Ps,Hb,Zb,Xb,wf=q_(()=>{"use strict";Gc=function(t,e){return Gc=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(i[r]=n[r])},Gc(t,e)};Is=function(){return Is=Object.assign||function(e){for(var i,n=1,r=arguments.length;n<r;n++){i=arguments[n];for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(e[o]=i[o])}return e},Is.apply(this,arguments)};Ps=Object.create?function(t,e,i,n){n===void 0&&(n=i);var r=Object.getOwnPropertyDescriptor(e,i);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[i]}}),Object.defineProperty(t,n,r)}:function(t,e,i,n){n===void 0&&(n=i),t[n]=e[i]};Hb=Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e};Zb=typeof SuppressedError=="function"?SuppressedError:function(t,e,i){var n=new Error(i);return n.name="SuppressedError",n.error=t,n.suppressed=e,n};Xb={__extends:Xd,__assign:Is,__rest:Jd,__decorate:Yd,__param:Qd,__metadata:ef,__awaiter:tf,__generator:nf,__createBinding:Ps,__exportStar:rf,__values:Os,__read:Hc,__spread:of,__spreadArrays:sf,__spreadArray:af,__await:_r,__asyncGenerator:cf,__asyncDelegator:lf,__asyncValues:uf,__makeTemplateObject:df,__importStar:ff,__importDefault:hf,__classPrivateFieldGet:pf,__classPrivateFieldSet:mf,__classPrivateFieldIn:gf,__addDisposableResource:_f,__disposeResources:bf}});var kf=Ln((Ds,vf)=>{"use strict";(function(t,e){typeof Ds=="object"&&typeof vf<"u"?e(Ds,(wf(),kd(yf))):typeof define=="function"&&define.amd?define(["exports","tslib"],e):e(t.ssGraph={},t.tslib)})(Ds,function(t,e){"use strict";var i=function(){function p(g,w,_){_===void 0&&(_=0),this.startVertex=g,this.endVertex=w,this.weight=_}return p.prototype.getKey=function(){var g=this.startVertex.getKey(),w=this.endVertex.getKey();return g+"_"+w},p.prototype.reverse=function(){var g=this.startVertex;return this.startVertex=this.endVertex,this.endVertex=g,this},p.prototype.clone=function(){return new p(this.startVertex,this.endVertex,this.weight)},p.prototype.toString=function(){return this.getKey()},p}();function n(p,g,w){if(w===void 0&&(w="cc-graph"),!p)throw new Error((w?"["+w+"]":"")+" Invariant failed: "+g)}function r(p,g){g===void 0&&(g=!0);var w=typeof p<"u"&&p!==null;return g?w&&p!=="undefined"&&p!=="null":w}var o=function(){function p(g){n(r(g),"Graph vertex must have a value"),this.value=g,this.edges=new Map}return p.prototype.addEdge=function(g){return this.edges.set(g.getKey(),g),this},p.prototype.deleteEdge=function(g){this.edges.delete(g.getKey())},p.prototype.getNeighbors=function(){var g=this,w=this.getEdges(),_=function(m){return m.startVertex===g?m.endVertex:m.startVertex};return w.map(_)},p.prototype.getEdges=function(){return Array.from(this.edges.values())},p.prototype.getDegree=function(){return this.getEdges().length},p.prototype.hasEdge=function(g){var w=this.getEdges().find(function(_){return _===g});return!!w},p.prototype.hasNeighbor=function(g){var w=this.getEdges().find(function(_){return _.startVertex===g||_.endVertex===g});return!!w},p.prototype.findEdge=function(g){var w=function(m){return m.startVertex===g||m.endVertex===g},_=this.getEdges().find(w);return _||null},p.prototype.getKey=function(){return this.value},p.prototype.deleteAllEdges=function(){var g=this;return this.getEdges().forEach(function(w){return g.deleteEdge(w)}),this},p.prototype.toString=function(g){return g?g(this.value):""+this.value},p}(),s;(function(p){p[p.EQUAL=0]="EQUAL",p[p.GREATER=1]="GREATER",p[p.LESS=-1]="LESS"})(s||(s={}));var a=function(){function p(g){this.compare=g||p.defaultCompareFunction}return p.defaultCompareFunction=function(g,w){return g===w?s.EQUAL:g<w?s.LESS:s.GREATER},p.prototype.equal=function(g,w){return this.compare(g,w)===s.EQUAL},p.prototype.lessThan=function(g,w){return this.compare(g,w)===s.LESS},p.prototype.greaterThan=function(g,w){return this.compare(g,w)===s.GREATER},p.prototype.lessThanOrEqual=function(g,w){return this.lessThan(g,w)||this.equal(g,w)},p.prototype.greaterThanOrEqual=function(g,w){return this.greaterThan(g,w)||this.equal(g,w)},p.prototype.reverse=function(){var g=this.compare;this.compare=function(w,_){return g(_,w)}},p}(),l=function(){function p(g){this.value=g,this.next=null}return p}(),u=function(){function p(g){this.value=g,this.next=null,this.prev=null}return p}();var h=function(p,g){return h=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(w,_){w.__proto__=_}||function(w,_){for(var m in _)_.hasOwnProperty(m)&&(w[m]=_[m])},h(p,g)};function y(p,g){h(p,g);function w(){this.constructor=p}p.prototype=g===null?Object.create(g):(w.prototype=g.prototype,new w)}function v(p,g){var w={label:0,sent:function(){if(C[0]&1)throw C[1];return C[1]},trys:[],ops:[]},_,m,C,N;return N={next:R(0),throw:R(1),return:R(2)},typeof Symbol=="function"&&(N[Symbol.iterator]=function(){return this}),N;function R(L){return function(H){return $([L,H])}}function $(L){if(_)throw new TypeError("Generator is already executing.");for(;w;)try{if(_=1,m&&(C=L[0]&2?m.return:L[0]?m.throw||((C=m.return)&&C.call(m),0):m.next)&&!(C=C.call(m,L[1])).done)return C;switch(m=0,C&&(L=[L[0]&2,C.value]),L[0]){case 0:case 1:C=L;break;case 4:return w.label++,{value:L[1],done:!1};case 5:w.label++,m=L[1],L=[0];continue;case 7:L=w.ops.pop(),w.trys.pop();continue;default:if(C=w.trys,!(C=C.length>0&&C[C.length-1])&&(L[0]===6||L[0]===2)){w=0;continue}if(L[0]===3&&(!C||L[1]>C[0]&&L[1]<C[3])){w.label=L[1];break}if(L[0]===6&&w.label<C[1]){w.label=C[1],C=L;break}if(C&&w.label<C[2]){w.label=C[2],w.ops.push(L);break}C[2]&&w.ops.pop(),w.trys.pop();continue}L=g.call(p,w)}catch(H){L=[6,H],m=0}finally{_=C=0}if(L[0]&5)throw L[1];return{value:L[0]?L[1]:void 0,done:!0}}}function T(p,g){var w=typeof Symbol=="function"&&p[Symbol.iterator];if(!w)return p;var _=w.call(p),m,C=[],N;try{for(;(g===void 0||g-- >0)&&!(m=_.next()).done;)C.push(m.value)}catch(R){N={error:R}}finally{try{m&&!m.done&&(w=_.return)&&w.call(_)}finally{if(N)throw N.error}}return C}function O(){for(var p=[],g=0;g<arguments.length;g++)p=p.concat(T(arguments[g]));return p}var P="obfuse error occur";function j(p,g){if(!p)throw new Error("[linked-list] "+(g||P))}var B=-1,D=function(){function p(){for(var g=this,w=[],_=0;_<arguments.length;_++)w[_]=arguments[_];this._head=null,this._tail=null,this._length=0,this.compare=new a,w.length>0&&w.forEach(function(m){g.append(m)})}return Object.defineProperty(p.prototype,"head",{get:function(){return this._head?this._head.value:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(p.prototype,"tail",{get:function(){return this._tail?this._tail.value:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(p.prototype,"length",{get:function(){return this._length},enumerable:!0,configurable:!0}),Object.defineProperty(p.prototype,"loopLength",{get:function(){var g=!1,w=1;if(!this._head)return 0;for(var _=this._head,m=this._head;m.next&&m.next.next;)if(m=m.next.next,_=_.next,_===m){g=!0;break}if(g){for(m=m.next;_!==m;)w++,m=m.next;return w}else return 0},enumerable:!0,configurable:!0}),p.prototype.getNode=function(g){var w=this._length;j(w>0&&g>=0&&g<w,"[linked-list] index "+g+" out of scope of list, which length is "+w);for(var _=this._head,m=0;m<g;)_=_.next,m++;return _},p.prototype.get=function(g){var w=this.getNode(g);return w?w.value:null},p.prototype.find=function(g){var w=g.value,_=g.callback;if(!this._head)return null;for(var m=this._head;m;){if(_&&_(m.value)||w!==void 0&&this.compare.equal(m.value,w))return m;m=m.next}return null},p.prototype.indexOf=function(g){if(!this._head)return B;for(var w=this._head,_=-1;w.next;){if(_++,this.compare.equal(w.value,g))return _;w=w.next}return w===this._tail&&this.compare.equal(w.value,g)&&(_+=1),_},p.prototype.first=function(g){j(g>=0,"[linked-list] param 'num' ("+g+") should not less than 0");for(var w=this.iterator(),_=[],m=Math.min(g,this.length),C=0;C<m;C++){var N=w.next();_.push(N.value)}return _},p.prototype.toArray=function(){return O(this)},p.prototype.isEmpty=function(){return this._head===null},p.prototype.iterator=function(){var g;return v(this,function(w){switch(w.label){case 0:g=this._head,w.label=1;case 1:return g?[4,g.value]:[3,3];case 2:return w.sent(),g=g.next,[3,1];case 3:return[2]}})},p.prototype[Symbol.iterator]=function(){return this.iterator()},p}(),q=function(p){y(g,p);function g(){for(var w=[],_=0;_<arguments.length;_++)w[_]=arguments[_];return p.apply(this,O(w))||this}return g.prototype.append=function(w){var _=new l(w);return this._tail?(this._tail.next=_,this._tail=_):this._head=this._tail=_,this._length++,!0},g.prototype.prepend=function(w){var _=new l(w);return this._head?(_.next=this._head,this._head=_):this._head=this._tail=_,this._length++,!0},g.prototype.remove=function(w){var _=this._head;if(_){if(this.compare.equal(_.value,w))return _.next?(this._head=_.next,_.next=null):this._head=this._tail=null,this._length--,w;for(var m=_;;){if(this.compare.equal(_.value,w))return _.next?m.next=_.next:(this._tail=m,this._tail.next=null),_.next=null,this._length--,w;if(_.next)m=_,_=_.next;else return}}},g.prototype.removeHead=function(){var w=this._head;if(w)return this._head.next?(this._head=w.next,w.next=null):(this._head=null,this._tail=null),this._length--,w.value},g.prototype.removeTail=function(){var w=this._tail;if(w){if(!this._head.next)this._head=null,this._tail=null;else{for(var _=this._head;_.next!==w;)_=_.next;_.next=null,this._tail=_}return this._length--,w.value}},g.prototype.reverse=function(){if(this._head){var w=this._head,_=null,m;for(this._tail=this._head;w!==null;)m=w.next,w.next=_,_=w,w=m;this._head=_}},g.prototype.clone=function(){var w=this.toArray();return new(g.bind.apply(g,O([void 0],w)))},g}(D),K=function(p){y(g,p);function g(){for(var w=[],_=0;_<arguments.length;_++)w[_]=arguments[_];var m=p.apply(this,O(w))||this;return m.cyclization(),m}return g.prototype.iterator=function(){var w;return v(this,function(_){switch(_.label){case 0:w=this._head,_.label=1;case 1:return w?[4,w.value]:[3,3];case 2:return _.sent(),w=w.next,w===this._head&&(w=null),[3,1];case 3:return[2]}})},g.prototype.circleIterator=function(){var w;return v(this,function(_){switch(_.label){case 0:w=this._head,_.label=1;case 1:return w?[4,w.value]:[3,3];case 2:return _.sent(),w=w.next,[3,1];case 3:return[2]}})},g.prototype[Symbol.iterator]=function(){return this.iterator()},g.prototype.mapToNormalListFn=function(w){for(var _=[],m=1;m<arguments.length;m++)_[m-1]=arguments[m];this.breakCircle();var C=p.prototype[w].apply(this,_);return this.cyclization(),C},g.prototype.getNode=function(w){return this.mapToNormalListFn("getNode",w)},g.prototype.append=function(w){return this.mapToNormalListFn("append",w)},g.prototype.prepend=function(w){return this.mapToNormalListFn("prepend",w)},g.prototype.find=function(w){return this.mapToNormalListFn("find",w)},g.prototype.indexOf=function(w){return this.mapToNormalListFn("indexOf",w)},g.prototype.remove=function(w){return this.mapToNormalListFn("remove",w)},g.prototype.removeHead=function(){return this.mapToNormalListFn("removeHead")},g.prototype.removeTail=function(){return this.mapToNormalListFn("removeTail")},g.prototype.first=function(w){j(w>=0,"[linked-list] param 'num' ("+w+") should not less than 0");for(var _=this.circleIterator(),m=[],C=0;C<w;C++){var N=_.next();m.push(N.value)}return m},g.prototype.toArray=function(){return this.mapToNormalListFn("toArray")},g.prototype.reverse=function(){return this.mapToNormalListFn("reverse")},g}(q),Z=function(p){y(g,p);function g(){for(var w=[],_=0;_<arguments.length;_++)w[_]=arguments[_];var m=p.apply(this,O(w))||this;return m.cyclization(),m}return g.prototype.breakCircle=function(){this._tail&&this._tail.next===this._head&&(this._tail.next=null)},g.prototype.cyclization=function(){this._tail&&this._tail.next===null&&(this._tail.next=this._head)},g.prototype.clone=function(){var w=this.toArray();return new(g.bind.apply(g,O([void 0],w)))},g}(K),G=function(p){y(g,p);function g(){for(var w=[],_=0;_<arguments.length;_++)w[_]=arguments[_];return p.apply(this,O(w))||this}return g.prototype.append=function(w){var _=new u(w);return this._tail?(this._tail.next=_,_.prev=this._tail,this._tail=_):this._head=this._tail=_,this._length++,!0},g.prototype.prepend=function(w){var _=new u(w);return this._head?(_.next=this._head,this._head.prev=_,this._head=_):this._head=this._tail=_,this._length++,!0},g.prototype.remove=function(w){var _=this._head;if(_){if(this.compare.equal(_.value,w))return _.next?(this._head=_.next,this._head.prev=null,_.next=_.prev=null):this._head=this._tail=null,this._length--,w;for(;;){if(this.compare.equal(_.value,w))return _.next?(_.prev.next=_.next,_.next.prev=_.prev,_.next=_.prev=null):(_.prev.next=null,this._tail=_.prev,_.next=_.prev=null),this._length--,_.value;if(_.next)_=_.next;else return}}},g.prototype.removeHead=function(){var w=this._head;if(w)return this._head.next?(w.next.prev=null,this._head=w.next,w.next=null):(this._head=null,this._tail=null),this._length--,w.value},g.prototype.removeTail=function(){var w=this._tail;if(w)return this._head.next?(w.prev.next=null,this._tail=w.prev,w.next=w.prev=null):(this._head=null,this._tail=null),this._length--,w.value},g.prototype.reverse=function(){if(this._head){var w=this._head,_=null,m;for(this._tail=this._head;w!==null;)m=w.next,w.next=_,w.prev=m,_=w,w=m;this._head=_}},g.prototype.clone=function(){var w=this.toArray();return new(g.bind.apply(g,O([void 0],w)))},g}(D),J=function(p){y(g,p);function g(){for(var w=[],_=0;_<arguments.length;_++)w[_]=arguments[_];var m=p.apply(this,O(w))||this;return m.cyclization(),m}return g.prototype.iterator=function(){var w;return v(this,function(_){switch(_.label){case 0:w=this._head,_.label=1;case 1:return w?[4,w.value]:[3,3];case 2:return _.sent(),w=w.next,w===this._head&&(w=null),[3,1];case 3:return[2]}})},g.prototype.circleIterator=function(){var w;return v(this,function(_){switch(_.label){case 0:w=this._head,_.label=1;case 1:return w?[4,w.value]:[3,3];case 2:return _.sent(),w=w.next,[3,1];case 3:return[2]}})},g.prototype[Symbol.iterator]=function(){return this.iterator()},g.prototype.mapToNormalListFn=function(w){for(var _=[],m=1;m<arguments.length;m++)_[m-1]=arguments[m];this.breakCircle();var C=p.prototype[w].apply(this,_);return this.cyclization(),C},g.prototype.getNode=function(w){return this.mapToNormalListFn("getNode",w)},g.prototype.append=function(w){return this.mapToNormalListFn("append",w)},g.prototype.prepend=function(w){return this.mapToNormalListFn("prepend",w)},g.prototype.find=function(w){return this.mapToNormalListFn("find",w)},g.prototype.indexOf=function(w){return this.mapToNormalListFn("indexOf",w)},g.prototype.remove=function(w){return this.mapToNormalListFn("remove",w)},g.prototype.removeHead=function(){return this.mapToNormalListFn("removeHead")},g.prototype.removeTail=function(){return this.mapToNormalListFn("removeTail")},g.prototype.first=function(w){j(w>=0,"[linked-list] param 'num' ("+w+") should not less than 0");for(var _=this.circleIterator(),m=[],C=0;C<w;C++){var N=_.next();m.push(N.value)}return m},g.prototype.toArray=function(){return this.mapToNormalListFn("toArray")},g.prototype.reverse=function(){return this.mapToNormalListFn("reverse")},g}(G),x=function(p){y(g,p);function g(){for(var w=[],_=0;_<arguments.length;_++)w[_]=arguments[_];var m=p.apply(this,O(w))||this;return m.cyclization(),m}return g.prototype.breakCircle=function(){this._tail&&this._head&&this._tail.next===this._head&&(this._tail.next=null,this._head.prev=null)},g.prototype.cyclization=function(){this._head&&this._tail&&this._tail.next===null&&(this._tail.next=this._head,this._head.prev=this._tail)},g.prototype.clone=function(){var w=this.toArray();return new(g.bind.apply(g,O([void 0],w)))},g}(J);function I(p,g){var w=typeof Symbol=="function"&&p[Symbol.iterator];if(!w)return p;var _=w.call(p),m,C=[],N;try{for(;(g===void 0||g-- >0)&&!(m=_.next()).done;)C.push(m.value)}catch(R){N={error:R}}finally{try{m&&!m.done&&(w=_.return)&&w.call(_)}finally{if(N)throw N.error}}return C}function A(){for(var p=[],g=0;g<arguments.length;g++)p=p.concat(I(arguments[g]));return p}var E=function(){function p(){for(var g=[],w=0;w<arguments.length;w++)g[w]=arguments[w];this.queue=new(q.bind.apply(q,A([void 0],g)))}return Object.defineProperty(p.prototype,"length",{get:function(){return this.queue.length},enumerable:!0,configurable:!0}),Object.defineProperty(p.prototype,"peek",{get:function(){return this.queue.head},enumerable:!0,configurable:!0}),p.prototype.isEmpty=function(){return this.queue.isEmpty()},p.prototype.enqueue=function(g){return this.queue.append(g)},p.prototype.dequeue=function(){var g=this.queue.removeHead();return typeof g<"u"?g:void 0},p.prototype.toArray=function(){return this.queue.toArray()},p}();function k(p,g){var w=typeof Symbol=="function"&&p[Symbol.iterator];if(!w)return p;var _=w.call(p),m,C=[],N;try{for(;(g===void 0||g-- >0)&&!(m=_.next()).done;)C.push(m.value)}catch(R){N={error:R}}finally{try{m&&!m.done&&(w=_.return)&&w.call(_)}finally{if(N)throw N.error}}return C}function S(){for(var p=[],g=0;g<arguments.length;g++)p=p.concat(k(arguments[g]));return p}var c=function(){function p(){for(var g=[],w=0;w<arguments.length;w++)g[w]=arguments[w];this.stack=new(q.bind.apply(q,S([void 0],g)))}return Object.defineProperty(p.prototype,"length",{get:function(){return this.stack.length},enumerable:!0,configurable:!0}),Object.defineProperty(p.prototype,"peek",{get:function(){return this.stack.tail},enumerable:!0,configurable:!0}),p.prototype.isEmpty=function(){return this.stack.isEmpty()},p.prototype.push=function(g){return this.stack.append(g)},p.prototype.pop=function(){var g=this.stack.removeTail();return typeof g<"u"?g:void 0},p.prototype.popBottom=function(){var g=this.stack.removeHead();return typeof g<"u"?g:void 0},p.prototype.toArray=function(){return this.stack.toArray()},p}();function d(p,g,w,_){if(p){g.push(p),_.set(p.getKey(),!0);var m=p.getNeighbors().filter(function(C){return!_.get(C.getKey())});w.push(m)}}function f(p,g,w){var _=p.pop();_&&w.set(_.getKey(),!1),g.pop()}var b=function(){function p(g){g===void 0&&(g=!1),this.vertices={},this.edges={},this.isDirected=g}return p.prototype.addVertex=function(g){return this.vertices[g.getKey()]=g,this},p.prototype.getVertexByKey=function(g){return this.vertices[g]},p.prototype.getNeighbors=function(g){return g.getNeighbors()},p.prototype.getAllVertices=function(){return Object.values(this.vertices)},p.prototype.getAllEdges=function(){return Object.values(this.edges)},p.prototype.addEdge=function(g,w){if(w===void 0&&(w=!1),this.edges[g.getKey()]){if(w)return this;n(!1,"Edge has already been added before")}var _=this.getVertexByKey(g.startVertex.getKey()),m=this.getVertexByKey(g.endVertex.getKey());if(_||(this.addVertex(g.startVertex),_=this.getVertexByKey(g.startVertex.getKey())),m||(this.addVertex(g.endVertex),m=this.getVertexByKey(g.endVertex.getKey())),this.edges[g.getKey()]=g,this.isDirected)_.addEdge(g);else{_.addEdge(g);var C=g.clone();m.addEdge(C.reverse())}return this},p.prototype.deleteEdge=function(g,w){if(w===void 0&&(w=!1),!this.edges[g.getKey()]){if(w)return this;n(!1,"Edge not found in graph")}delete this.edges[g.getKey()];var _=this.getVertexByKey(g.startVertex.getKey()),m=this.getVertexByKey(g.endVertex.getKey());return _.deleteEdge(g),m.deleteEdge(g),this},p.prototype.findEdge=function(g,w){var _=this.getVertexByKey(g.getKey());return _?_.findEdge(w):null},p.prototype.getWeight=function(){return this.getAllEdges().reduce(function(g,w){return g+w.weight},0)},p.prototype.reverse=function(){var g=this;return this.getAllEdges().forEach(function(w){g.deleteEdge(w),w.reverse(),g.addEdge(w)}),this},p.prototype.getVerticesIndices=function(){var g={};return this.getAllVertices().forEach(function(w,_){g[w.getKey()]=_}),g},p.prototype.getAdjacencyMatrix=function(){var g=this,w=this.getAllVertices(),_=this.getVerticesIndices(),m=Array(w.length).fill(null).map(function(){return Array(w.length).fill(1/0)});return w.forEach(function(C,N){C.getNeighbors().forEach(function(R){var $=_[R.getKey()],L=g.findEdge(C,R);L&&(m[N][$]=L.weight)})}),m},p.prototype.toString=function(){return Object.keys(this.vertices).toString()},p.prototype.bfs=function(g){var w,_,m;return e.__generator(this,function(C){switch(C.label){case 0:w=new Map,_=new E,_.enqueue(g),C.label=1;case 1:return _.isEmpty()?[3,4]:(m=_.dequeue(),m&&!w.has(m.getKey())?[4,m]:[3,3]);case 2:C.sent(),w.set(m.getKey(),m),m.getNeighbors().forEach(function(N){return _.enqueue(N)}),C.label=3;case 3:return[3,1];case 4:return[2]}})},p.prototype.dfs=function(g){var w,_,m;return e.__generator(this,function(C){switch(C.label){case 0:w=new Map,_=new c,_.push(g),C.label=1;case 1:return _.isEmpty()?[3,4]:(m=_.pop(),m&&!w.has(m.getKey())?[4,m]:[3,3]);case 2:C.sent(),w.set(m.getKey(),m),m.getNeighbors().forEach(function(N){return _.push(N)}),C.label=3;case 3:return[3,1];case 4:return[2]}})},p.prototype.findAllPath=function(g,w){var _,m,C,N,R,$,L;return e.__generator(this,function(H){switch(H.label){case 0:return _=[],g!==w?[3,2]:(_.push(g),[4,_]);case 1:return H.sent(),[2];case 2:m=new Map,C=new c,N=new c,d(g,C,N,m),H.label=3;case 3:if(C.isEmpty())return[3,6];if(R=N.pop(),R&&R.length)$=R.shift(),N.push(R),$&&d($,C,N,m);else return N.push(R),f(C,N,m),[3,3];return L=C.peek,L!==w?[3,5]:[4,C.toArray()];case 4:H.sent(),f(C,N,m),H.label=5;case 5:return[3,3];case 6:return[2]}})},p}();t.GraphEdge=i,t.GraphVertex=o,t.Graph=b,Object.defineProperty(t,"__esModule",{value:!0})})});var Vp=Ln((pu,mu)=>{"use strict";(function(t,e){typeof pu=="object"&&typeof mu<"u"?mu.exports=e():typeof define=="function"&&define.amd?define(e):(t=t||self,t.JSBI=e())})(pu,function(){"use strict";var t=Math.imul,e=Math.clz32;function i(x){"@babel/helpers - typeof";return i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(I){return typeof I}:function(I){return I&&typeof Symbol=="function"&&I.constructor===Symbol&&I!==Symbol.prototype?"symbol":typeof I},i(x)}function n(x,I){if(!(x instanceof I))throw new TypeError("Cannot call a class as a function")}function r(x,I){for(var A,E=0;E<I.length;E++)A=I[E],A.enumerable=A.enumerable||!1,A.configurable=!0,"value"in A&&(A.writable=!0),Object.defineProperty(x,A.key,A)}function o(x,I,A){return I&&r(x.prototype,I),A&&r(x,A),Object.defineProperty(x,"prototype",{writable:!1}),x}function s(x,I){if(typeof I!="function"&&I!==null)throw new TypeError("Super expression must either be null or a function");x.prototype=Object.create(I&&I.prototype,{constructor:{value:x,writable:!0,configurable:!0}}),Object.defineProperty(x,"prototype",{writable:!1}),I&&l(x,I)}function a(x){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(I){return I.__proto__||Object.getPrototypeOf(I)},a(x)}function l(x,I){return l=Object.setPrototypeOf||function(A,E){return A.__proto__=E,A},l(x,I)}function u(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function h(){return h=u()?Reflect.construct:function(x,I,A){var E=[null];E.push.apply(E,I);var k=Function.bind.apply(x,E),S=new k;return A&&l(S,A.prototype),S},h.apply(null,arguments)}function y(x){return Function.toString.call(x).indexOf("[native code]")!==-1}function v(x){var I=typeof Map=="function"?new Map:void 0;return v=function(A){function E(){return h(A,arguments,a(this).constructor)}if(A===null||!y(A))return A;if(typeof A!="function")throw new TypeError("Super expression must either be null or a function");if(typeof I<"u"){if(I.has(A))return I.get(A);I.set(A,E)}return E.prototype=Object.create(A.prototype,{constructor:{value:E,enumerable:!1,writable:!0,configurable:!0}}),l(E,A)},v(x)}function T(x){if(x===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return x}function O(x,I){if(I&&(typeof I=="object"||typeof I=="function"))return I;if(I!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return T(x)}function P(x){var I=u();return function(){var A,E=a(x);if(I){var k=a(this).constructor;A=Reflect.construct(E,arguments,k)}else A=E.apply(this,arguments);return O(this,A)}}function j(x,I){return B(x)||D(x,I)||q(x,I)||Z()}function B(x){if(Array.isArray(x))return x}function D(x,I){var A=x==null?null:typeof Symbol<"u"&&x[Symbol.iterator]||x["@@iterator"];if(A!=null){var E,k,S=[],c=!0,d=!1;try{for(A=A.call(x);!(c=(E=A.next()).done)&&(S.push(E.value),!(I&&S.length===I));c=!0);}catch(f){d=!0,k=f}finally{try{c||A.return==null||A.return()}finally{if(d)throw k}}return S}}function q(x,I){if(x){if(typeof x=="string")return K(x,I);var A=Object.prototype.toString.call(x).slice(8,-1);return A==="Object"&&x.constructor&&(A=x.constructor.name),A==="Map"||A==="Set"?Array.from(x):A==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(A)?K(x,I):void 0}}function K(x,I){(I==null||I>x.length)&&(I=x.length);for(var A=0,E=Array(I);A<I;A++)E[A]=x[A];return E}function Z(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
2
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function G(x,I){var A=typeof Symbol<"u"&&x[Symbol.iterator]||x["@@iterator"];if(!A){if(Array.isArray(x)||(A=q(x))||I&&x&&typeof x.length=="number"){A&&(x=A);var E=0,k=function(){};return{s:k,n:function(){return E>=x.length?{done:!0}:{done:!1,value:x[E++]}},e:function(f){throw f},f:k}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
3
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var S,c=!0,d=!1;return{s:function(){A=A.call(x)},n:function(){var f=A.next();return c=f.done,f},e:function(f){d=!0,S=f},f:function(){try{c||A.return==null||A.return()}finally{if(d)throw S}}}}var J=function(x){var I=Math.abs,A=Math.max,E=Math.floor;function k(c,d){var f;if(n(this,k),f=S.call(this,c),f.sign=d,Object.setPrototypeOf(T(f),k.prototype),c>k.__kMaxLength)throw new RangeError("Maximum BigInt size exceeded");return f}s(k,x);var S=P(k);return o(k,[{key:"toDebugString",value:function(){var c,d=["BigInt["],f=G(this);try{for(f.s();!(c=f.n()).done;){var b=c.value;d.push((b&&(b>>>0).toString(16))+", ")}}catch(p){f.e(p)}finally{f.f()}return d.push("]"),d.join("")}},{key:"toString",value:function(){var c=0<arguments.length&&arguments[0]!==void 0?arguments[0]:10;if(2>c||36<c)throw new RangeError("toString() radix argument must be between 2 and 36");return this.length===0?"0":c&c-1?k.__toStringGeneric(this,c,!1):k.__toStringBasePowerOfTwo(this,c)}},{key:"valueOf",value:function(){throw new Error("Convert JSBI instances to native numbers using `toNumber`.")}},{key:"__copy",value:function(){for(var c=new k(this.length,this.sign),d=0;d<this.length;d++)c[d]=this[d];return c}},{key:"__trim",value:function(){for(var c=this.length,d=this[c-1];d===0;)c--,d=this[c-1],this.pop();return c===0&&(this.sign=!1),this}},{key:"__initializeDigits",value:function(){for(var c=0;c<this.length;c++)this[c]=0}},{key:"__clzmsd",value:function(){return k.__clz30(this.__digit(this.length-1))}},{key:"__inplaceMultiplyAdd",value:function(c,d,f){f>this.length&&(f=this.length);for(var b=32767&c,p=c>>>15,g=0,w=d,_=0;_<f;_++){var m=this.__digit(_),C=32767&m,N=m>>>15,R=k.__imul(C,b),$=k.__imul(C,p),L=k.__imul(N,b),H=k.__imul(N,p),ee=w+R+g;g=ee>>>30,ee&=1073741823,ee+=((32767&$)<<15)+((32767&L)<<15),g+=ee>>>30,w=H+($>>>15)+(L>>>15),this.__setDigit(_,1073741823&ee)}if(g!==0||w!==0)throw new Error("implementation bug")}},{key:"__inplaceAdd",value:function(c,d,f){for(var b,p=0,g=0;g<f;g++)b=this.__halfDigit(d+g)+c.__halfDigit(g)+p,p=b>>>15,this.__setHalfDigit(d+g,32767&b);return p}},{key:"__inplaceSub",value:function(c,d,f){var b=0;if(1&d){d>>=1;for(var p=this.__digit(d),g=32767&p,w=0;w<f-1>>>1;w++){var _=c.__digit(w),m=(p>>>15)-(32767&_)-b;b=1&m>>>15,this.__setDigit(d+w,(32767&m)<<15|32767&g),p=this.__digit(d+w+1),g=(32767&p)-(_>>>15)-b,b=1&g>>>15}var C=c.__digit(w),N=(p>>>15)-(32767&C)-b;if(b=1&N>>>15,this.__setDigit(d+w,(32767&N)<<15|32767&g),d+w+1>=this.length)throw new RangeError("out of bounds");!(1&f)&&(p=this.__digit(d+w+1),g=(32767&p)-(C>>>15)-b,b=1&g>>>15,this.__setDigit(d+c.length,1073709056&p|32767&g))}else{d>>=1;for(var R=0;R<c.length-1;R++){var $=this.__digit(d+R),L=c.__digit(R),H=(32767&$)-(32767&L)-b;b=1&H>>>15;var ee=($>>>15)-(L>>>15)-b;b=1&ee>>>15,this.__setDigit(d+R,(32767&ee)<<15|32767&H)}var ge=this.__digit(d+R),ne=c.__digit(R),me=(32767&ge)-(32767&ne)-b;b=1&me>>>15;var xe=0;!(1&f)&&(xe=(ge>>>15)-(ne>>>15)-b,b=1&xe>>>15),this.__setDigit(d+R,(32767&xe)<<15|32767&me)}return b}},{key:"__inplaceRightShift",value:function(c){if(c!==0){for(var d,f=this.__digit(0)>>>c,b=this.length-1,p=0;p<b;p++)d=this.__digit(p+1),this.__setDigit(p,1073741823&d<<30-c|f),f=d>>>c;this.__setDigit(b,f)}}},{key:"__digit",value:function(c){return this[c]}},{key:"__unsignedDigit",value:function(c){return this[c]>>>0}},{key:"__setDigit",value:function(c,d){this[c]=0|d}},{key:"__setDigitGrow",value:function(c,d){this[c]=0|d}},{key:"__halfDigitLength",value:function(){var c=this.length;return 32767>=this.__unsignedDigit(c-1)?2*c-1:2*c}},{key:"__halfDigit",value:function(c){return 32767&this[c>>>1]>>>15*(1&c)}},{key:"__setHalfDigit",value:function(c,d){var f=c>>>1,b=this.__digit(f),p=1&c?32767&b|d<<15:1073709056&b|32767&d;this.__setDigit(f,p)}}],[{key:"BigInt",value:function(c){var d=Number.isFinite;if(typeof c=="number"){if(c===0)return k.__zero();if(k.__isOneDigitInt(c))return 0>c?k.__oneDigit(-c,!0):k.__oneDigit(c,!1);if(!d(c)||E(c)!==c)throw new RangeError("The number "+c+" cannot be converted to BigInt because it is not an integer");return k.__fromDouble(c)}if(typeof c=="string"){var f=k.__fromString(c);if(f===null)throw new SyntaxError("Cannot convert "+c+" to a BigInt");return f}if(typeof c=="boolean")return c===!0?k.__oneDigit(1,!1):k.__zero();if(i(c)==="object"){if(c.constructor===k)return c;var b=k.__toPrimitive(c);return k.BigInt(b)}throw new TypeError("Cannot convert "+c+" to a BigInt")}},{key:"toNumber",value:function(c){var d=c.length;if(d===0)return 0;if(d===1){var f=c.__unsignedDigit(0);return c.sign?-f:f}var b=c.__digit(d-1),p=k.__clz30(b),g=30*d-p;if(1024<g)return c.sign?-1/0:1/0;var w=g-1,_=b,m=d-1,C=p+3,N=C===32?0:_<<C;N>>>=12;var R=C-12,$=12<=C?0:_<<20+C,L=20+C;for(0<R&&0<m&&(m--,_=c.__digit(m),N|=_>>>30-R,$=_<<R+2,L=R+2);0<L&&0<m;)m--,_=c.__digit(m),$|=30<=L?_<<L-30:_>>>30-L,L-=30;var H=k.__decideRounding(c,L,m,_);if((H===1||H===0&&(1&$)==1)&&($=$+1>>>0,$===0&&(N++,N>>>20!=0&&(N=0,w++,1023<w))))return c.sign?-1/0:1/0;var ee=c.sign?-2147483648:0;return w=w+1023<<20,k.__kBitConversionInts[1]=ee|w|N,k.__kBitConversionInts[0]=$,k.__kBitConversionDouble[0]}},{key:"unaryMinus",value:function(c){if(c.length===0)return c;var d=c.__copy();return d.sign=!c.sign,d}},{key:"bitwiseNot",value:function(c){return c.sign?k.__absoluteSubOne(c).__trim():k.__absoluteAddOne(c,!0)}},{key:"exponentiate",value:function(c,d){if(d.sign)throw new RangeError("Exponent must be positive");if(d.length===0)return k.__oneDigit(1,!1);if(c.length===0)return c;if(c.length===1&&c.__digit(0)===1)return c.sign&&!(1&d.__digit(0))?k.unaryMinus(c):c;if(1<d.length)throw new RangeError("BigInt too big");var f=d.__unsignedDigit(0);if(f===1)return c;if(f>=k.__kMaxLengthBits)throw new RangeError("BigInt too big");if(c.length===1&&c.__digit(0)===2){var b=1+(0|f/30),p=c.sign&&(1&f)!=0,g=new k(b,p);g.__initializeDigits();var w=1<<f%30;return g.__setDigit(b-1,w),g}var _=null,m=c;for(1&f&&(_=c),f>>=1;f!==0;f>>=1)m=k.multiply(m,m),1&f&&(_===null?_=m:_=k.multiply(_,m));return _}},{key:"multiply",value:function(c,d){if(c.length===0)return c;if(d.length===0)return d;var f=c.length+d.length;30<=c.__clzmsd()+d.__clzmsd()&&f--;var b=new k(f,c.sign!==d.sign);b.__initializeDigits();for(var p=0;p<c.length;p++)k.__multiplyAccumulate(d,c.__digit(p),b,p);return b.__trim()}},{key:"divide",value:function(c,d){if(d.length===0)throw new RangeError("Division by zero");if(0>k.__absoluteCompare(c,d))return k.__zero();var f,b=c.sign!==d.sign,p=d.__unsignedDigit(0);if(d.length===1&&32767>=p){if(p===1)return b===c.sign?c:k.unaryMinus(c);f=k.__absoluteDivSmall(c,p,null)}else f=k.__absoluteDivLarge(c,d,!0,!1);return f.sign=b,f.__trim()}},{key:"remainder",value:function(d,f){if(f.length===0)throw new RangeError("Division by zero");if(0>k.__absoluteCompare(d,f))return d;var b=f.__unsignedDigit(0);if(f.length===1&&32767>=b){if(b===1)return k.__zero();var p=k.__absoluteModSmall(d,b);return p===0?k.__zero():k.__oneDigit(p,d.sign)}var g=k.__absoluteDivLarge(d,f,!1,!0);return g.sign=d.sign,g.__trim()}},{key:"add",value:function(c,d){var f=c.sign;return f===d.sign?k.__absoluteAdd(c,d,f):0<=k.__absoluteCompare(c,d)?k.__absoluteSub(c,d,f):k.__absoluteSub(d,c,!f)}},{key:"subtract",value:function(c,d){var f=c.sign;return f===d.sign?0<=k.__absoluteCompare(c,d)?k.__absoluteSub(c,d,f):k.__absoluteSub(d,c,!f):k.__absoluteAdd(c,d,f)}},{key:"leftShift",value:function(c,d){return d.length===0||c.length===0?c:d.sign?k.__rightShiftByAbsolute(c,d):k.__leftShiftByAbsolute(c,d)}},{key:"signedRightShift",value:function(c,d){return d.length===0||c.length===0?c:d.sign?k.__leftShiftByAbsolute(c,d):k.__rightShiftByAbsolute(c,d)}},{key:"unsignedRightShift",value:function(){throw new TypeError("BigInts have no unsigned right shift; use >> instead")}},{key:"lessThan",value:function(c,d){return 0>k.__compareToBigInt(c,d)}},{key:"lessThanOrEqual",value:function(c,d){return 0>=k.__compareToBigInt(c,d)}},{key:"greaterThan",value:function(c,d){return 0<k.__compareToBigInt(c,d)}},{key:"greaterThanOrEqual",value:function(c,d){return 0<=k.__compareToBigInt(c,d)}},{key:"equal",value:function(c,d){if(c.sign!==d.sign||c.length!==d.length)return!1;for(var f=0;f<c.length;f++)if(c.__digit(f)!==d.__digit(f))return!1;return!0}},{key:"notEqual",value:function(c,d){return!k.equal(c,d)}},{key:"bitwiseAnd",value:function(c,d){if(!c.sign&&!d.sign)return k.__absoluteAnd(c,d).__trim();if(c.sign&&d.sign){var f=A(c.length,d.length)+1,b=k.__absoluteSubOne(c,f),p=k.__absoluteSubOne(d);return b=k.__absoluteOr(b,p,b),k.__absoluteAddOne(b,!0,b).__trim()}if(c.sign){var g=[d,c];c=g[0],d=g[1]}return k.__absoluteAndNot(c,k.__absoluteSubOne(d)).__trim()}},{key:"bitwiseXor",value:function(c,d){if(!c.sign&&!d.sign)return k.__absoluteXor(c,d).__trim();if(c.sign&&d.sign){var f=A(c.length,d.length),b=k.__absoluteSubOne(c,f),p=k.__absoluteSubOne(d);return k.__absoluteXor(b,p,b).__trim()}var g=A(c.length,d.length)+1;if(c.sign){var w=[d,c];c=w[0],d=w[1]}var _=k.__absoluteSubOne(d,g);return _=k.__absoluteXor(_,c,_),k.__absoluteAddOne(_,!0,_).__trim()}},{key:"bitwiseOr",value:function(c,d){var f=A(c.length,d.length);if(!c.sign&&!d.sign)return k.__absoluteOr(c,d).__trim();if(c.sign&&d.sign){var b=k.__absoluteSubOne(c,f),p=k.__absoluteSubOne(d);return b=k.__absoluteAnd(b,p,b),k.__absoluteAddOne(b,!0,b).__trim()}if(c.sign){var g=[d,c];c=g[0],d=g[1]}var w=k.__absoluteSubOne(d,f);return w=k.__absoluteAndNot(w,c,w),k.__absoluteAddOne(w,!0,w).__trim()}},{key:"asIntN",value:function(c,d){if(d.length===0)return d;if(c=E(c),0>c)throw new RangeError("Invalid value: not (convertible to) a safe integer");if(c===0)return k.__zero();if(c>=k.__kMaxLengthBits)return d;var f=0|(c+29)/30;if(d.length<f)return d;var b=d.__unsignedDigit(f-1),p=1<<(c-1)%30;if(d.length===f&&b<p)return d;if((b&p)!==p)return k.__truncateToNBits(c,d);if(!d.sign)return k.__truncateAndSubFromPowerOfTwo(c,d,!0);if(!(b&p-1)){for(var g=f-2;0<=g;g--)if(d.__digit(g)!==0)return k.__truncateAndSubFromPowerOfTwo(c,d,!1);return d.length===f&&b===p?d:k.__truncateToNBits(c,d)}return k.__truncateAndSubFromPowerOfTwo(c,d,!1)}},{key:"asUintN",value:function(c,d){if(d.length===0)return d;if(c=E(c),0>c)throw new RangeError("Invalid value: not (convertible to) a safe integer");if(c===0)return k.__zero();if(d.sign){if(c>k.__kMaxLengthBits)throw new RangeError("BigInt too big");return k.__truncateAndSubFromPowerOfTwo(c,d,!1)}if(c>=k.__kMaxLengthBits)return d;var f=0|(c+29)/30;if(d.length<f)return d;var b=c%30;if(d.length==f){if(b===0)return d;var p=d.__digit(f-1);if(!(p>>>b))return d}return k.__truncateToNBits(c,d)}},{key:"ADD",value:function(c,d){if(c=k.__toPrimitive(c),d=k.__toPrimitive(d),typeof c=="string")return typeof d!="string"&&(d=d.toString()),c+d;if(typeof d=="string")return c.toString()+d;if(c=k.__toNumeric(c),d=k.__toNumeric(d),k.__isBigInt(c)&&k.__isBigInt(d))return k.add(c,d);if(typeof c=="number"&&typeof d=="number")return c+d;throw new TypeError("Cannot mix BigInt and other types, use explicit conversions")}},{key:"LT",value:function(c,d){return k.__compare(c,d,0)}},{key:"LE",value:function(c,d){return k.__compare(c,d,1)}},{key:"GT",value:function(c,d){return k.__compare(c,d,2)}},{key:"GE",value:function(c,d){return k.__compare(c,d,3)}},{key:"EQ",value:function(c,d){for(;;){if(k.__isBigInt(c))return k.__isBigInt(d)?k.equal(c,d):k.EQ(d,c);if(typeof c=="number"){if(k.__isBigInt(d))return k.__equalToNumber(d,c);if(i(d)!=="object")return c==d;d=k.__toPrimitive(d)}else if(typeof c=="string"){if(k.__isBigInt(d))return c=k.__fromString(c),c!==null&&k.equal(c,d);if(i(d)!=="object")return c==d;d=k.__toPrimitive(d)}else if(typeof c=="boolean"){if(k.__isBigInt(d))return k.__equalToNumber(d,+c);if(i(d)!=="object")return c==d;d=k.__toPrimitive(d)}else if(i(c)==="symbol"){if(k.__isBigInt(d))return!1;if(i(d)!=="object")return c==d;d=k.__toPrimitive(d)}else if(i(c)==="object"){if(i(d)==="object"&&d.constructor!==k)return c==d;c=k.__toPrimitive(c)}else return c==d}}},{key:"NE",value:function(c,d){return!k.EQ(c,d)}},{key:"DataViewGetBigInt64",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0&&arguments[2];return k.asIntN(64,k.DataViewGetBigUint64(c,d,f))}},{key:"DataViewGetBigUint64",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0&&arguments[2],b=f?[4,0]:[0,4],p=j(b,2),g=p[0],w=p[1],_=c.getUint32(d+g,f),m=c.getUint32(d+w,f),C=new k(3,!1);return C.__setDigit(0,1073741823&m),C.__setDigit(1,(268435455&_)<<2|m>>>30),C.__setDigit(2,_>>>28),C.__trim()}},{key:"DataViewSetBigInt64",value:function(c,d,f){var b=3<arguments.length&&arguments[3]!==void 0&&arguments[3];k.DataViewSetBigUint64(c,d,f,b)}},{key:"DataViewSetBigUint64",value:function(c,d,f){var b=3<arguments.length&&arguments[3]!==void 0&&arguments[3];f=k.asUintN(64,f);var p=0,g=0;if(0<f.length&&(g=f.__digit(0),1<f.length)){var w=f.__digit(1);g|=w<<30,p=w>>>2,2<f.length&&(p|=f.__digit(2)<<28)}var _=b?[4,0]:[0,4],m=j(_,2),C=m[0],N=m[1];c.setUint32(d+C,p,b),c.setUint32(d+N,g,b)}},{key:"__zero",value:function(){return new k(0,!1)}},{key:"__oneDigit",value:function(c,d){var f=new k(1,d);return f.__setDigit(0,c),f}},{key:"__decideRounding",value:function(c,d,f,b){if(0<d)return-1;var p;if(0>d)p=-d-1;else{if(f===0)return-1;f--,b=c.__digit(f),p=29}var g=1<<p;if(!(b&g))return-1;if(g-=1,(b&g)!=0)return 1;for(;0<f;)if(f--,c.__digit(f)!==0)return 1;return 0}},{key:"__fromDouble",value:function(c){k.__kBitConversionDouble[0]=c;var d,f=2047&k.__kBitConversionInts[1]>>>20,b=f-1023,p=(0|b/30)+1,g=new k(p,0>c),w=1048575&k.__kBitConversionInts[1]|1048576,_=k.__kBitConversionInts[0],m=20,C=b%30,N=0;if(C<m){var R=m-C;N=R+32,d=w>>>R,w=w<<32-R|_>>>R,_<<=32-R}else if(C===m)N=32,d=w,w=_,_=0;else{var $=C-m;N=32-$,d=w<<$|_>>>32-$,w=_<<$,_=0}g.__setDigit(p-1,d);for(var L=p-2;0<=L;L--)0<N?(N-=30,d=w>>>2,w=w<<30|_>>>2,_<<=30):d=0,g.__setDigit(L,d);return g.__trim()}},{key:"__isWhitespace",value:function(c){return 13>=c&&9<=c||(159>=c?c==32:131071>=c?c==160||c==5760:196607>=c?(c&=131071,10>=c||c==40||c==41||c==47||c==95||c==4096):c==65279)}},{key:"__fromString",value:function(c){var d=1<arguments.length&&arguments[1]!==void 0?arguments[1]:0,f=0,b=c.length,p=0;if(p===b)return k.__zero();for(var g=c.charCodeAt(p);k.__isWhitespace(g);){if(++p===b)return k.__zero();g=c.charCodeAt(p)}if(g===43){if(++p===b)return null;g=c.charCodeAt(p),f=1}else if(g===45){if(++p===b)return null;g=c.charCodeAt(p),f=-1}if(d===0){if(d=10,g===48){if(++p===b)return k.__zero();if(g=c.charCodeAt(p),g===88||g===120){if(d=16,++p===b)return null;g=c.charCodeAt(p)}else if(g===79||g===111){if(d=8,++p===b)return null;g=c.charCodeAt(p)}else if(g===66||g===98){if(d=2,++p===b)return null;g=c.charCodeAt(p)}}}else if(d===16&&g===48){if(++p===b)return k.__zero();if(g=c.charCodeAt(p),g===88||g===120){if(++p===b)return null;g=c.charCodeAt(p)}}if(f!==0&&d!==10)return null;for(;g===48;){if(++p===b)return k.__zero();g=c.charCodeAt(p)}var w=b-p,_=k.__kMaxBitsPerChar[d],m=k.__kBitsPerCharTableMultiplier-1;if(w>1073741824/_)return null;var C=_*w+m>>>k.__kBitsPerCharTableShift,N=new k(0|(C+29)/30,!1),R=10>d?d:10,$=10<d?d-10:0;if(d&d-1){N.__initializeDigits();var xe=!1,_e=0;do{for(var he,fr=0,qe=1;;){if(he=void 0,g-48>>>0<R)he=g-48;else if((32|g)-97>>>0<$)he=(32|g)-87;else{xe=!0;break}var Le=qe*d;if(1073741823<Le)break;if(qe=Le,fr=fr*d+he,_e++,++p===b){xe=!0;break}g=c.charCodeAt(p)}m=30*k.__kBitsPerCharTableMultiplier-1;var _s=0|(_*_e+m>>>k.__kBitsPerCharTableShift)/30;N.__inplaceMultiplyAdd(qe,fr,_s)}while(!xe)}else{_>>=k.__kBitsPerCharTableShift;var L=[],H=[],ee=!1;do{for(var ge,ne=0,me=0;;){if(ge=void 0,g-48>>>0<R)ge=g-48;else if((32|g)-97>>>0<$)ge=(32|g)-87;else{ee=!0;break}if(me+=_,ne=ne<<_|ge,++p===b){ee=!0;break}if(g=c.charCodeAt(p),30<me+_)break}L.push(ne),H.push(me)}while(!ee);k.__fillFromParts(N,L,H)}if(p!==b){if(!k.__isWhitespace(g))return null;for(p++;p<b;p++)if(g=c.charCodeAt(p),!k.__isWhitespace(g))return null}return N.sign=f===-1,N.__trim()}},{key:"__fillFromParts",value:function(c,d,f){for(var b=0,p=0,g=0,w=d.length-1;0<=w;w--){var _=d[w],m=f[w];p|=_<<g,g+=m,g===30?(c.__setDigit(b++,p),g=0,p=0):30<g&&(c.__setDigit(b++,1073741823&p),g-=30,p=_>>>m-g)}if(p!==0){if(b>=c.length)throw new Error("implementation bug");c.__setDigit(b++,p)}for(;b<c.length;b++)c.__setDigit(b,0)}},{key:"__toStringBasePowerOfTwo",value:function(c,d){var f=c.length,b=d-1;b=(85&b>>>1)+(85&b),b=(51&b>>>2)+(51&b),b=(15&b>>>4)+(15&b);var p=b,g=d-1,w=c.__digit(f-1),_=k.__clz30(w),m=0|(30*f-_+p-1)/p;if(c.sign&&m++,268435456<m)throw new Error("string too long");for(var C=Array(m),N=m-1,R=0,$=0,L=0;L<f-1;L++){var H=c.__digit(L),ee=(R|H<<$)&g;C[N--]=k.__kConversionChars[ee];var ge=p-$;for(R=H>>>ge,$=30-ge;$>=p;)C[N--]=k.__kConversionChars[R&g],R>>>=p,$-=p}var ne=(R|w<<$)&g;for(C[N--]=k.__kConversionChars[ne],R=w>>>p-$;R!==0;)C[N--]=k.__kConversionChars[R&g],R>>>=p;if(c.sign&&(C[N--]="-"),N!==-1)throw new Error("implementation bug");return C.join("")}},{key:"__toStringGeneric",value:function(c,d,f){var b=c.length;if(b===0)return"";if(b===1){var p=c.__unsignedDigit(0).toString(d);return f===!1&&c.sign&&(p="-"+p),p}var g=30*b-k.__clz30(c.__digit(b-1)),w=k.__kMaxBitsPerChar[d],_=w-1,m=g*k.__kBitsPerCharTableMultiplier;m+=_-1,m=0|m/_;var C,N,R=m+1>>1,$=k.exponentiate(k.__oneDigit(d,!1),k.__oneDigit(R,!1)),L=$.__unsignedDigit(0);if($.length===1&&32767>=L){C=new k(c.length,!1),C.__initializeDigits();for(var H,ee=0,ge=2*c.length-1;0<=ge;ge--)H=ee<<15|c.__halfDigit(ge),C.__setHalfDigit(ge,0|H/L),ee=0|H%L;N=ee.toString(d)}else{var ne=k.__absoluteDivLarge(c,$,!0,!0);C=ne.quotient;var me=ne.remainder.__trim();N=k.__toStringGeneric(me,d,!0)}C.__trim();for(var xe=k.__toStringGeneric(C,d,!0);N.length<R;)N="0"+N;return f===!1&&c.sign&&(xe="-"+xe),xe+N}},{key:"__unequalSign",value:function(c){return c?-1:1}},{key:"__absoluteGreater",value:function(c){return c?-1:1}},{key:"__absoluteLess",value:function(c){return c?1:-1}},{key:"__compareToBigInt",value:function(c,d){var f=c.sign;if(f!==d.sign)return k.__unequalSign(f);var b=k.__absoluteCompare(c,d);return 0<b?k.__absoluteGreater(f):0>b?k.__absoluteLess(f):0}},{key:"__compareToNumber",value:function(c,d){if(k.__isOneDigitInt(d)){var f=c.sign,b=0>d;if(f!==b)return k.__unequalSign(f);if(c.length===0){if(b)throw new Error("implementation bug");return d===0?0:-1}if(1<c.length)return k.__absoluteGreater(f);var p=I(d),g=c.__unsignedDigit(0);return g>p?k.__absoluteGreater(f):g<p?k.__absoluteLess(f):0}return k.__compareToDouble(c,d)}},{key:"__compareToDouble",value:function(c,d){if(d!==d)return d;if(d===1/0)return-1;if(d===-1/0)return 1;var f=c.sign;if(f!==0>d)return k.__unequalSign(f);if(d===0)throw new Error("implementation bug: should be handled elsewhere");if(c.length===0)return-1;k.__kBitConversionDouble[0]=d;var b=2047&k.__kBitConversionInts[1]>>>20;if(b==2047)throw new Error("implementation bug: handled elsewhere");var p=b-1023;if(0>p)return k.__absoluteGreater(f);var g=c.length,w=c.__digit(g-1),_=k.__clz30(w),m=30*g-_,C=p+1;if(m<C)return k.__absoluteLess(f);if(m>C)return k.__absoluteGreater(f);var N=1048576|1048575&k.__kBitConversionInts[1],R=k.__kBitConversionInts[0],$=20,L=29-_;if(L!==(0|(m-1)%30))throw new Error("implementation bug");var H,ee=0;if(L<$){var ge=$-L;ee=ge+32,H=N>>>ge,N=N<<32-ge|R>>>ge,R<<=32-ge}else if(L===$)ee=32,H=N,N=R,R=0;else{var ne=L-$;ee=32-ne,H=N<<ne|R>>>32-ne,N=R<<ne,R=0}if(w>>>=0,H>>>=0,w>H)return k.__absoluteGreater(f);if(w<H)return k.__absoluteLess(f);for(var me=g-2;0<=me;me--){0<ee?(ee-=30,H=N>>>2,N=N<<30|R>>>2,R<<=30):H=0;var xe=c.__unsignedDigit(me);if(xe>H)return k.__absoluteGreater(f);if(xe<H)return k.__absoluteLess(f)}if(N!==0||R!==0){if(ee===0)throw new Error("implementation bug");return k.__absoluteLess(f)}return 0}},{key:"__equalToNumber",value:function(c,d){return k.__isOneDigitInt(d)?d===0?c.length===0:c.length===1&&c.sign===0>d&&c.__unsignedDigit(0)===I(d):k.__compareToDouble(c,d)===0}},{key:"__comparisonResultToBool",value:function(c,d){return d===0?0>c:d===1?0>=c:d===2?0<c:d===3?0<=c:void 0}},{key:"__compare",value:function(c,d,f){if(c=k.__toPrimitive(c),d=k.__toPrimitive(d),typeof c=="string"&&typeof d=="string")switch(f){case 0:return c<d;case 1:return c<=d;case 2:return c>d;case 3:return c>=d}if(k.__isBigInt(c)&&typeof d=="string")return d=k.__fromString(d),d!==null&&k.__comparisonResultToBool(k.__compareToBigInt(c,d),f);if(typeof c=="string"&&k.__isBigInt(d))return c=k.__fromString(c),c!==null&&k.__comparisonResultToBool(k.__compareToBigInt(c,d),f);if(c=k.__toNumeric(c),d=k.__toNumeric(d),k.__isBigInt(c)){if(k.__isBigInt(d))return k.__comparisonResultToBool(k.__compareToBigInt(c,d),f);if(typeof d!="number")throw new Error("implementation bug");return k.__comparisonResultToBool(k.__compareToNumber(c,d),f)}if(typeof c!="number")throw new Error("implementation bug");if(k.__isBigInt(d))return k.__comparisonResultToBool(k.__compareToNumber(d,c),2^f);if(typeof d!="number")throw new Error("implementation bug");return f===0?c<d:f===1?c<=d:f===2?c>d:f===3?c>=d:void 0}},{key:"__absoluteAdd",value:function(c,d,f){if(c.length<d.length)return k.__absoluteAdd(d,c,f);if(c.length===0)return c;if(d.length===0)return c.sign===f?c:k.unaryMinus(c);var b=c.length;(c.__clzmsd()===0||d.length===c.length&&d.__clzmsd()===0)&&b++;for(var p,g=new k(b,f),w=0,_=0;_<d.length;_++)p=c.__digit(_)+d.__digit(_)+w,w=p>>>30,g.__setDigit(_,1073741823&p);for(;_<c.length;_++){var m=c.__digit(_)+w;w=m>>>30,g.__setDigit(_,1073741823&m)}return _<g.length&&g.__setDigit(_,w),g.__trim()}},{key:"__absoluteSub",value:function(c,d,f){if(c.length===0)return c;if(d.length===0)return c.sign===f?c:k.unaryMinus(c);for(var b,p=new k(c.length,f),g=0,w=0;w<d.length;w++)b=c.__digit(w)-d.__digit(w)-g,g=1&b>>>30,p.__setDigit(w,1073741823&b);for(;w<c.length;w++){var _=c.__digit(w)-g;g=1&_>>>30,p.__setDigit(w,1073741823&_)}return p.__trim()}},{key:"__absoluteAddOne",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,b=c.length;f===null?f=new k(b,d):f.sign=d;for(var p,g=1,w=0;w<b;w++)p=c.__digit(w)+g,g=p>>>30,f.__setDigit(w,1073741823&p);return g!==0&&f.__setDigitGrow(b,1),f}},{key:"__absoluteSubOne",value:function(c,d){var f=c.length;d=d||f;for(var b,p=new k(d,!1),g=1,w=0;w<f;w++)b=c.__digit(w)-g,g=1&b>>>30,p.__setDigit(w,1073741823&b);if(g!==0)throw new Error("implementation bug");for(var _=f;_<d;_++)p.__setDigit(_,0);return p}},{key:"__absoluteAnd",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,b=c.length,p=d.length,g=p;if(b<p){g=b;var w=c,_=b;c=d,b=p,d=w,p=_}var m=g;f===null?f=new k(m,!1):m=f.length;for(var C=0;C<g;C++)f.__setDigit(C,c.__digit(C)&d.__digit(C));for(;C<m;C++)f.__setDigit(C,0);return f}},{key:"__absoluteAndNot",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,b=c.length,p=d.length,g=p;b<p&&(g=b);var w=b;f===null?f=new k(w,!1):w=f.length;for(var _=0;_<g;_++)f.__setDigit(_,c.__digit(_)&~d.__digit(_));for(;_<b;_++)f.__setDigit(_,c.__digit(_));for(;_<w;_++)f.__setDigit(_,0);return f}},{key:"__absoluteOr",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,b=c.length,p=d.length,g=p;if(b<p){g=b;var w=c,_=b;c=d,b=p,d=w,p=_}var m=b;f===null?f=new k(m,!1):m=f.length;for(var C=0;C<g;C++)f.__setDigit(C,c.__digit(C)|d.__digit(C));for(;C<b;C++)f.__setDigit(C,c.__digit(C));for(;C<m;C++)f.__setDigit(C,0);return f}},{key:"__absoluteXor",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,b=c.length,p=d.length,g=p;if(b<p){g=b;var w=c,_=b;c=d,b=p,d=w,p=_}var m=b;f===null?f=new k(m,!1):m=f.length;for(var C=0;C<g;C++)f.__setDigit(C,c.__digit(C)^d.__digit(C));for(;C<b;C++)f.__setDigit(C,c.__digit(C));for(;C<m;C++)f.__setDigit(C,0);return f}},{key:"__absoluteCompare",value:function(c,d){var f=c.length-d.length;if(f!=0)return f;for(var b=c.length-1;0<=b&&c.__digit(b)===d.__digit(b);)b--;return 0>b?0:c.__unsignedDigit(b)>d.__unsignedDigit(b)?1:-1}},{key:"__multiplyAccumulate",value:function(c,d,f,b){if(d!==0){for(var p=32767&d,g=d>>>15,w=0,_=0,m=0;m<c.length;m++,b++){var C=f.__digit(b),N=c.__digit(m),R=32767&N,$=N>>>15,L=k.__imul(R,p),H=k.__imul(R,g),ee=k.__imul($,p),ge=k.__imul($,g);C+=_+L+w,w=C>>>30,C&=1073741823,C+=((32767&H)<<15)+((32767&ee)<<15),w+=C>>>30,_=ge+(H>>>15)+(ee>>>15),f.__setDigit(b,1073741823&C)}for(;w!==0||_!==0;b++){var ne=f.__digit(b);ne+=w+_,_=0,w=ne>>>30,f.__setDigit(b,1073741823&ne)}}}},{key:"__internalMultiplyAdd",value:function(c,d,f,b,p){for(var g=f,w=0,_=0;_<b;_++){var m=c.__digit(_),C=k.__imul(32767&m,d),N=k.__imul(m>>>15,d),R=C+((32767&N)<<15)+w+g;g=R>>>30,w=N>>>15,p.__setDigit(_,1073741823&R)}if(p.length>b)for(p.__setDigit(b++,g+w);b<p.length;)p.__setDigit(b++,0);else if(g+w!==0)throw new Error("implementation bug")}},{key:"__absoluteDivSmall",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;f===null&&(f=new k(c.length,!1));for(var b=0,p=2*c.length-1;0<=p;p-=2){var g=(b<<15|c.__halfDigit(p))>>>0,w=0|g/d;b=0|g%d,g=(b<<15|c.__halfDigit(p-1))>>>0;var _=0|g/d;b=0|g%d,f.__setDigit(p>>>1,w<<15|_)}return f}},{key:"__absoluteModSmall",value:function(c,d){for(var f,b=0,p=2*c.length-1;0<=p;p--)f=(b<<15|c.__halfDigit(p))>>>0,b=0|f%d;return b}},{key:"__absoluteDivLarge",value:function(c,d,f,b){var p=d.__halfDigitLength(),g=d.length,w=c.__halfDigitLength()-p,_=null;f&&(_=new k(w+2>>>1,!1),_.__initializeDigits());var m=new k(p+2>>>1,!1);m.__initializeDigits();var C=k.__clz15(d.__halfDigit(p-1));0<C&&(d=k.__specialLeftShift(d,C,0));for(var N=k.__specialLeftShift(c,C,1),R=d.__halfDigit(p-1),$=0,L=w;0<=L;L--){var H=32767,ee=N.__halfDigit(L+p);if(ee!==R){var ge=(ee<<15|N.__halfDigit(L+p-1))>>>0;H=0|ge/R;for(var ne=0|ge%R,me=d.__halfDigit(p-2),xe=N.__halfDigit(L+p-2);k.__imul(H,me)>>>0>(ne<<16|xe)>>>0&&(H--,ne+=R,!(32767<ne)););}k.__internalMultiplyAdd(d,H,0,g,m);var _e=N.__inplaceSub(m,L,p+1);_e!==0&&(_e=N.__inplaceAdd(d,L,p),N.__setHalfDigit(L+p,32767&N.__halfDigit(L+p)+_e),H--),f&&(1&L?$=H<<15:_.__setDigit(L>>>1,$|H))}if(b)return N.__inplaceRightShift(C),f?{quotient:_,remainder:N}:N;if(f)return _;throw new Error("unreachable")}},{key:"__clz15",value:function(c){return k.__clz30(c)-15}},{key:"__specialLeftShift",value:function(c,d,f){var b=c.length,p=new k(b+f,!1);if(d===0){for(var g=0;g<b;g++)p.__setDigit(g,c.__digit(g));return 0<f&&p.__setDigit(b,0),p}for(var w,_=0,m=0;m<b;m++)w=c.__digit(m),p.__setDigit(m,1073741823&w<<d|_),_=w>>>30-d;return 0<f&&p.__setDigit(b,_),p}},{key:"__leftShiftByAbsolute",value:function(c,d){var f=k.__toShiftAmount(d);if(0>f)throw new RangeError("BigInt too big");var b=0|f/30,p=f%30,g=c.length,w=p!==0&&c.__digit(g-1)>>>30-p!=0,_=g+b+(w?1:0),m=new k(_,c.sign);if(p===0){for(var C=0;C<b;C++)m.__setDigit(C,0);for(;C<_;C++)m.__setDigit(C,c.__digit(C-b))}else{for(var N=0,R=0;R<b;R++)m.__setDigit(R,0);for(var $,L=0;L<g;L++)$=c.__digit(L),m.__setDigit(L+b,1073741823&$<<p|N),N=$>>>30-p;if(w)m.__setDigit(g+b,N);else if(N!==0)throw new Error("implementation bug")}return m.__trim()}},{key:"__rightShiftByAbsolute",value:function(c,d){var f=c.length,b=c.sign,p=k.__toShiftAmount(d);if(0>p)return k.__rightShiftByMaximum(b);var g=0|p/30,w=p%30,_=f-g;if(0>=_)return k.__rightShiftByMaximum(b);var m=!1;if(b){if(c.__digit(g)&(1<<w)-1)m=!0;else for(var C=0;C<g;C++)if(c.__digit(C)!==0){m=!0;break}}if(m&&w===0){var N=c.__digit(f-1);!~N&&_++}var R=new k(_,b);if(w===0){R.__setDigit(_-1,0);for(var $=g;$<f;$++)R.__setDigit($-g,c.__digit($))}else{for(var L,H=c.__digit(g)>>>w,ee=f-g-1,ge=0;ge<ee;ge++)L=c.__digit(ge+g+1),R.__setDigit(ge,1073741823&L<<30-w|H),H=L>>>w;R.__setDigit(ee,H)}return m&&(R=k.__absoluteAddOne(R,!0,R)),R.__trim()}},{key:"__rightShiftByMaximum",value:function(c){return c?k.__oneDigit(1,!0):k.__zero()}},{key:"__toShiftAmount",value:function(c){if(1<c.length)return-1;var d=c.__unsignedDigit(0);return d>k.__kMaxLengthBits?-1:d}},{key:"__toPrimitive",value:function(c){var d=1<arguments.length&&arguments[1]!==void 0?arguments[1]:"default";if(i(c)!=="object"||c.constructor===k)return c;if(typeof Symbol<"u"&&i(Symbol.toPrimitive)==="symbol"){var f=c[Symbol.toPrimitive];if(f){var b=f(d);if(i(b)!=="object")return b;throw new TypeError("Cannot convert object to primitive value")}}var p=c.valueOf;if(p){var g=p.call(c);if(i(g)!=="object")return g}var w=c.toString;if(w){var _=w.call(c);if(i(_)!=="object")return _}throw new TypeError("Cannot convert object to primitive value")}},{key:"__toNumeric",value:function(c){return k.__isBigInt(c)?c:+c}},{key:"__isBigInt",value:function(c){return i(c)==="object"&&c!==null&&c.constructor===k}},{key:"__truncateToNBits",value:function(c,d){for(var f=0|(c+29)/30,b=new k(f,d.sign),p=f-1,g=0;g<p;g++)b.__setDigit(g,d.__digit(g));var w=d.__digit(p);if(c%30!=0){var _=32-c%30;w=w<<_>>>_}return b.__setDigit(p,w),b.__trim()}},{key:"__truncateAndSubFromPowerOfTwo",value:function(c,d,f){for(var b=Math.min,p,g=0|(c+29)/30,w=new k(g,f),_=0,m=g-1,C=0,N=b(m,d.length);_<N;_++)p=0-d.__digit(_)-C,C=1&p>>>30,w.__setDigit(_,1073741823&p);for(;_<m;_++)w.__setDigit(_,0|1073741823&-C);var R,$=m<d.length?d.__digit(m):0,L=c%30;if(L===0)R=0-$-C,R&=1073741823;else{var H=32-L;$=$<<H>>>H;var ee=1<<32-H;R=ee-$-C,R&=ee-1}return w.__setDigit(m,R),w.__trim()}},{key:"__digitPow",value:function(c,d){for(var f=1;0<d;)1&d&&(f*=c),d>>>=1,c*=c;return f}},{key:"__isOneDigitInt",value:function(c){return(1073741823&c)===c}}]),k}(v(Array));return J.__kMaxLength=33554432,J.__kMaxLengthBits=J.__kMaxLength<<5,J.__kMaxBitsPerChar=[0,0,32,51,64,75,83,90,96,102,107,111,115,119,122,126,128,131,134,136,139,141,143,145,147,149,151,153,154,156,158,159,160,162,163,165,166],J.__kBitsPerCharTableShift=5,J.__kBitsPerCharTableMultiplier=1<<J.__kBitsPerCharTableShift,J.__kConversionChars=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"],J.__kBitConversionBuffer=new ArrayBuffer(8),J.__kBitConversionDouble=new Float64Array(J.__kBitConversionBuffer),J.__kBitConversionInts=new Int32Array(J.__kBitConversionBuffer),J.__clz30=e?function(x){return e(x)-2}:function(x){var I=Math.LN2,A=Math.log;return x===0?30:0|29-(0|A(x>>>0)/I)},J.__imul=t||function(x,I){return 0|x*I},J})});var kS={};wd(kS,{AddressBookSDK:()=>pr,COIN_TYPE_ARG_REGEX:()=>Hu,Coin:()=>hs,CoinHelper:()=>fs,CreateHelper:()=>hr,DEV_API_URL:()=>I_,DEV_SYNCING_URL:()=>O_,ENV_CONFIGS:()=>M_,Formatter:()=>dn,HexToUint8Array:()=>oc,LOCAL_API_URL:()=>nd,LOCAL_SYNCING_URL:()=>rd,MAINNET_RPC_URL:()=>id,MSafeAccount:()=>dr,MSafeClient:()=>mc,MSafeEnv:()=>A_,MSafeGlobals:()=>gs,PREV_API_URL:()=>P_,PROD_API_URL:()=>D_,SUI_COIN:()=>yS,SignatureVerifier:()=>Xu,TESTNET_RPC_URL:()=>pc,Uint8ArrayToHex:()=>bS,addPrefix:()=>Zu,getAllCoins:()=>vS,getMSafeConfig:()=>od,getPublicKeyFromChain:()=>Ju,stringToBuffer:()=>rc});module.exports=kd(kS);var Hi=require("@msafe/sui3-utils"),hr=class{constructor(e,i){this.globals=e;this.pkHelper=i}async getPublicKeyBatch(e){return this.pkHelper.getPublicKeyBatch(e)}async calculateMSafeAddress(e){let i=await this.reduceCreationInfoToRawConfig(e);return new Hi.MultiSigAccount(i).address}async validateCreateInfo(e){return this.calculateMSafeAddress(e)}addPublicKey(e,i){let n=Hi.PublicKeySerde.de(i);if(!(0,Hi.isSameAddress)(e,n.toSuiAddress()))throw new Error("Public key not match");this.pkHelper.addPublicKey(e,n)}async submitMSafeCreation(e){let i=await this.validateCreateInfo(e),n=Hi.SigningMessageHelper.createMSafeMessage(i),r=await this.globals.wallet.signPersonalMessage({messageStr:n});return await this.submitToBackend(e,r.signature),i}async reduceCreationInfoToRawConfig(e){let i=await this.getPublicKeyBatch(e.owners.map(n=>n.address));return i.forEach((n,r)=>{if(n===void 0)throw new Error(`Unknown public key for address: ${e.owners[r].address}`)}),{threshold:e.threshold,ownersWithWeight:e.owners.map((n,r)=>({publicKey:i[r],weight:n.weight})),creationNonce:e.creationNonce}}async submitToBackend(e,i){let n=await this.pkHelper.getPublicKeyBatch(e.owners.map(r=>r.address));await this.globals.backend.createMSafeAccount({owners:e.owners.map((r,o)=>({address:r.address,weight:r.weight,...Hi.PublicKeySerde.ser(n[o])})),threshold:e.threshold,name:e.name,description:e.description,creationNonce:e.creationNonce,signature:i})}};var gc=require("@msafe/sui3-utils");var Cd=require("@msafe/sui3-utils"),pr=class{constructor(e){this.globals=e}async getEntries(e){return this.globals.backend.getAddressBookEntries(e)}async update(e){let i=Cd.SigningMessageHelper.updateAddressBookMessage(e),n=await this.globals.wallet.signPersonalMessage({messageStr:i});return this.globals.backend.updateAddressBook({updates:e,signature:n.signature})}async getMode(){return(await this.globals.backend.getAddressBookMode()).mode}async setMode(e){return this.globals.backend.setAddressBookMode({mode:e})}};var ys=class{constructor(e){this.globals=e}async getMSafeByStatus(e,i){return this.globals.backend.getOwnedMSafeByStatus({status:e,pagination:i})}async updateMSafeStatus(e,i){return this.globals.backend.updateMSafeStatus({msafeAddress:e,status:i})}};var Dm=require("@msafe/sui3-utils"),Mm=require("@msafe/sui3-utils"),Em=we(ws(),1);var uo=require("@mysten/sui.js/utils"),kr=require("@mysten/sui.js/transactions"),di=we(Se(),1);var qc=8192;function Lc(t){if(t.length<qc)return btoa(String.fromCharCode(...t));let e="";for(var i=0;i<t.length;i+=qc){let n=t.slice(i,i+qc);e+=String.fromCharCode(...n)}return btoa(e)}var hy=require("@mysten/sui.js/keypairs/ed25519"),py=require("@mysten/sui.js/keypairs/secp256k1"),gn=we(Se(),1),St=we(Se(),1);var mr=9e15,mn=1e9,$c="0123456789abcdef",ks="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Cs="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Uc={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-mr,maxE:mr,crypto:!1},qd,Zi,pe=!0,Ss="[DecimalError] ",pn=Ss+"Invalid argument: ",Ld=Ss+"Precision limit exceeded",$d=Ss+"crypto unavailable",Ud="[object Decimal]",Vt=Math.floor,Ot=Math.pow,J_=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Y_=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Q_=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Kd=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Si=1e7,de=7,eb=9007199254740991,tb=ks.length-1,Kc=Cs.length-1,W={toStringTag:Ud};W.absoluteValue=W.abs=function(){var t=new this.constructor(this);return t.s<0&&(t.s=1),se(t)};W.ceil=function(){return se(new this.constructor(this),this.e+1,2)};W.clampedTo=W.clamp=function(t,e){var i,n=this,r=n.constructor;if(t=new r(t),e=new r(e),!t.s||!e.s)return new r(NaN);if(t.gt(e))throw Error(pn+e);return i=n.cmp(t),i<0?t:n.cmp(e)>0?e:new r(n)};W.comparedTo=W.cmp=function(t){var e,i,n,r,o=this,s=o.d,a=(t=new o.constructor(t)).d,l=o.s,u=t.s;if(!s||!a)return!l||!u?NaN:l!==u?l:s===a?0:!s^l<0?1:-1;if(!s[0]||!a[0])return s[0]?l:a[0]?-u:0;if(l!==u)return l;if(o.e!==t.e)return o.e>t.e^l<0?1:-1;for(n=s.length,r=a.length,e=0,i=n<r?n:r;e<i;++e)if(s[e]!==a[e])return s[e]>a[e]^l<0?1:-1;return n===r?0:n>r^l<0?1:-1};W.cosine=W.cos=function(){var t,e,i=this,n=i.constructor;return i.d?i.d[0]?(t=n.precision,e=n.rounding,n.precision=t+Math.max(i.e,i.sd())+de,n.rounding=1,i=ib(n,Hd(n,i)),n.precision=t,n.rounding=e,se(Zi==2||Zi==3?i.neg():i,t,e,!0)):new n(1):new n(NaN)};W.cubeRoot=W.cbrt=function(){var t,e,i,n,r,o,s,a,l,u,h=this,y=h.constructor;if(!h.isFinite()||h.isZero())return new y(h);for(pe=!1,o=h.s*Ot(h.s*h,1/3),!o||Math.abs(o)==1/0?(i=Nt(h.d),t=h.e,(o=(t-i.length+1)%3)&&(i+=o==1||o==-2?"0":"00"),o=Ot(i,1/3),t=Vt((t+1)/3)-(t%3==(t<0?-1:2)),o==1/0?i="5e"+t:(i=o.toExponential(),i=i.slice(0,i.indexOf("e")+1)+t),n=new y(i),n.s=h.s):n=new y(o.toString()),s=(t=y.precision)+3;;)if(a=n,l=a.times(a).times(a),u=l.plus(h),n=Ne(u.plus(h).times(a),u.plus(l),s+2,1),Nt(a.d).slice(0,s)===(i=Nt(n.d)).slice(0,s))if(i=i.slice(s-3,s+1),i=="9999"||!r&&i=="4999"){if(!r&&(se(a,t+1,0),a.times(a).times(a).eq(h))){n=a;break}s+=4,r=1}else{(!+i||!+i.slice(1)&&i.charAt(0)=="5")&&(se(n,t+1,1),e=!n.times(n).times(n).eq(h));break}return pe=!0,se(n,t,y.rounding,e)};W.decimalPlaces=W.dp=function(){var t,e=this.d,i=NaN;if(e){if(t=e.length-1,i=(t-Vt(this.e/de))*de,t=e[t],t)for(;t%10==0;t/=10)i--;i<0&&(i=0)}return i};W.dividedBy=W.div=function(t){return Ne(this,new this.constructor(t))};W.dividedToIntegerBy=W.divToInt=function(t){var e=this,i=e.constructor;return se(Ne(e,new i(t),0,1,1),i.precision,i.rounding)};W.equals=W.eq=function(t){return this.cmp(t)===0};W.floor=function(){return se(new this.constructor(this),this.e+1,3)};W.greaterThan=W.gt=function(t){return this.cmp(t)>0};W.greaterThanOrEqualTo=W.gte=function(t){var e=this.cmp(t);return e==1||e===0};W.hyperbolicCosine=W.cosh=function(){var t,e,i,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;i=s.precision,n=s.rounding,s.precision=i+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(t=Math.ceil(r/3),e=(1/As(4,t)).toString()):(t=16,e="2.3283064365386962890625e-10"),o=gr(s,1,o.times(e),new s(1),!0);for(var l,u=t,h=new s(8);u--;)l=o.times(o),o=a.minus(l.times(h.minus(l.times(h))));return se(o,s.precision=i,s.rounding=n,!0)};W.hyperbolicSine=W.sinh=function(){var t,e,i,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,i=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=gr(o,2,r,r,!0);else{t=1.4*Math.sqrt(n),t=t>16?16:t|0,r=r.times(1/As(5,t)),r=gr(o,2,r,r,!0);for(var s,a=new o(5),l=new o(16),u=new o(20);t--;)s=r.times(r),r=r.times(a.plus(s.times(l.times(s).plus(u))))}return o.precision=e,o.rounding=i,se(r,e,i,!0)};W.hyperbolicTangent=W.tanh=function(){var t,e,i=this,n=i.constructor;return i.isFinite()?i.isZero()?new n(i):(t=n.precision,e=n.rounding,n.precision=t+7,n.rounding=1,Ne(i.sinh(),i.cosh(),n.precision=t,n.rounding=e)):new n(i.s)};W.inverseCosine=W.acos=function(){var t,e=this,i=e.constructor,n=e.abs().cmp(1),r=i.precision,o=i.rounding;return n!==-1?n===0?e.isNeg()?Ti(i,r,o):new i(0):new i(NaN):e.isZero()?Ti(i,r+4,o).times(.5):(i.precision=r+6,i.rounding=1,e=e.asin(),t=Ti(i,r+4,o).times(.5),i.precision=r,i.rounding=o,t.minus(e))};W.inverseHyperbolicCosine=W.acosh=function(){var t,e,i=this,n=i.constructor;return i.lte(1)?new n(i.eq(1)?0:NaN):i.isFinite()?(t=n.precision,e=n.rounding,n.precision=t+Math.max(Math.abs(i.e),i.sd())+4,n.rounding=1,pe=!1,i=i.times(i).minus(1).sqrt().plus(i),pe=!0,n.precision=t,n.rounding=e,i.ln()):new n(i)};W.inverseHyperbolicSine=W.asinh=function(){var t,e,i=this,n=i.constructor;return!i.isFinite()||i.isZero()?new n(i):(t=n.precision,e=n.rounding,n.precision=t+2*Math.max(Math.abs(i.e),i.sd())+6,n.rounding=1,pe=!1,i=i.times(i).plus(1).sqrt().plus(i),pe=!0,n.precision=t,n.rounding=e,i.ln())};W.inverseHyperbolicTangent=W.atanh=function(){var t,e,i,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(t=o.precision,e=o.rounding,n=r.sd(),Math.max(n,t)<2*-r.e-1?se(new o(r),t,e,!0):(o.precision=i=n-r.e,r=Ne(r.plus(1),new o(1).minus(r),i+t,1),o.precision=t+4,o.rounding=1,r=r.ln(),o.precision=t,o.rounding=e,r.times(.5))):new o(NaN)};W.inverseSine=W.asin=function(){var t,e,i,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),i=o.precision,n=o.rounding,e!==-1?e===0?(t=Ti(o,i+4,n).times(.5),t.s=r.s,t):new o(NaN):(o.precision=i+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=i,o.rounding=n,r.times(2)))};W.inverseTangent=W.atan=function(){var t,e,i,n,r,o,s,a,l,u=this,h=u.constructor,y=h.precision,v=h.rounding;if(u.isFinite()){if(u.isZero())return new h(u);if(u.abs().eq(1)&&y+4<=Kc)return s=Ti(h,y+4,v).times(.25),s.s=u.s,s}else{if(!u.s)return new h(NaN);if(y+4<=Kc)return s=Ti(h,y+4,v).times(.5),s.s=u.s,s}for(h.precision=a=y+10,h.rounding=1,i=Math.min(28,a/de+2|0),t=i;t;--t)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(pe=!1,e=Math.ceil(a/de),n=1,l=u.times(u),s=new h(u),r=u;t!==-1;)if(r=r.times(l),o=s.minus(r.div(n+=2)),r=r.times(l),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(t=e;s.d[t]===o.d[t]&&t--;);return i&&(s=s.times(2<<i-1)),pe=!0,se(s,h.precision=y,h.rounding=v,!0)};W.isFinite=function(){return!!this.d};W.isInteger=W.isInt=function(){return!!this.d&&Vt(this.e/de)>this.d.length-2};W.isNaN=function(){return!this.s};W.isNegative=W.isNeg=function(){return this.s<0};W.isPositive=W.isPos=function(){return this.s>0};W.isZero=function(){return!!this.d&&this.d[0]===0};W.lessThan=W.lt=function(t){return this.cmp(t)<0};W.lessThanOrEqualTo=W.lte=function(t){return this.cmp(t)<1};W.logarithm=W.log=function(t){var e,i,n,r,o,s,a,l,u=this,h=u.constructor,y=h.precision,v=h.rounding,T=5;if(t==null)t=new h(10),e=!0;else{if(t=new h(t),i=t.d,t.s<0||!i||!i[0]||t.eq(1))return new h(NaN);e=t.eq(10)}if(i=u.d,u.s<0||!i||!i[0]||u.eq(1))return new h(i&&!i[0]?-1/0:u.s!=1?NaN:i?0:1/0);if(e)if(i.length>1)o=!0;else{for(r=i[0];r%10===0;)r/=10;o=r!==1}if(pe=!1,a=y+T,s=hn(u,a),n=e?Ts(h,a+10):hn(t,a),l=Ne(s,n,a,1),ao(l.d,r=y,v))do if(a+=10,s=hn(u,a),n=e?Ts(h,a+10):hn(t,a),l=Ne(s,n,a,1),!o){+Nt(l.d).slice(r+1,r+15)+1==1e14&&(l=se(l,y+1,0));break}while(ao(l.d,r+=10,v));return pe=!0,se(l,y,v)};W.minus=W.sub=function(t){var e,i,n,r,o,s,a,l,u,h,y,v,T=this,O=T.constructor;if(t=new O(t),!T.d||!t.d)return!T.s||!t.s?t=new O(NaN):T.d?t.s=-t.s:t=new O(t.d||T.s!==t.s?T:NaN),t;if(T.s!=t.s)return t.s=-t.s,T.plus(t);if(u=T.d,v=t.d,a=O.precision,l=O.rounding,!u[0]||!v[0]){if(v[0])t.s=-t.s;else if(u[0])t=new O(T);else return new O(l===3?-0:0);return pe?se(t,a,l):t}if(i=Vt(t.e/de),h=Vt(T.e/de),u=u.slice(),o=h-i,o){for(y=o<0,y?(e=u,o=-o,s=v.length):(e=v,i=h,s=u.length),n=Math.max(Math.ceil(a/de),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=v.length,y=n<s,y&&(s=n),n=0;n<s;n++)if(u[n]!=v[n]){y=u[n]<v[n];break}o=0}for(y&&(e=u,u=v,v=e,t.s=-t.s),s=u.length,n=v.length-s;n>0;--n)u[s++]=0;for(n=v.length;n>o;){if(u[--n]<v[n]){for(r=n;r&&u[--r]===0;)u[r]=Si-1;--u[r],u[n]+=Si}u[n]-=v[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--i;return u[0]?(t.d=u,t.e=xs(u,i),pe?se(t,a,l):t):new O(l===3?-0:0)};W.modulo=W.mod=function(t){var e,i=this,n=i.constructor;return t=new n(t),!i.d||!t.s||t.d&&!t.d[0]?new n(NaN):!t.d||i.d&&!i.d[0]?se(new n(i),n.precision,n.rounding):(pe=!1,n.modulo==9?(e=Ne(i,t.abs(),0,3,1),e.s*=t.s):e=Ne(i,t,0,n.modulo,1),e=e.times(t),pe=!0,i.minus(e))};W.naturalExponential=W.exp=function(){return Vc(this)};W.naturalLogarithm=W.ln=function(){return hn(this)};W.negated=W.neg=function(){var t=new this.constructor(this);return t.s=-t.s,se(t)};W.plus=W.add=function(t){var e,i,n,r,o,s,a,l,u,h,y=this,v=y.constructor;if(t=new v(t),!y.d||!t.d)return!y.s||!t.s?t=new v(NaN):y.d||(t=new v(t.d||y.s===t.s?y:NaN)),t;if(y.s!=t.s)return t.s=-t.s,y.minus(t);if(u=y.d,h=t.d,a=v.precision,l=v.rounding,!u[0]||!h[0])return h[0]||(t=new v(y)),pe?se(t,a,l):t;if(o=Vt(y.e/de),n=Vt(t.e/de),u=u.slice(),r=o-n,r){for(r<0?(i=u,r=-r,s=h.length):(i=h,n=o,s=u.length),o=Math.ceil(a/de),s=o>s?o+1:s+1,r>s&&(r=s,i.length=1),i.reverse();r--;)i.push(0);i.reverse()}for(s=u.length,r=h.length,s-r<0&&(r=s,i=h,h=u,u=i),e=0;r;)e=(u[--r]=u[r]+h[r]+e)/Si|0,u[r]%=Si;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return t.d=u,t.e=xs(u,n),pe?se(t,a,l):t};W.precision=W.sd=function(t){var e,i=this;if(t!==void 0&&t!==!!t&&t!==1&&t!==0)throw Error(pn+t);return i.d?(e=Vd(i.d),t&&i.e+1>e&&(e=i.e+1)):e=NaN,e};W.round=function(){var t=this,e=t.constructor;return se(new e(t),t.e+1,e.rounding)};W.sine=W.sin=function(){var t,e,i=this,n=i.constructor;return i.isFinite()?i.isZero()?new n(i):(t=n.precision,e=n.rounding,n.precision=t+Math.max(i.e,i.sd())+de,n.rounding=1,i=rb(n,Hd(n,i)),n.precision=t,n.rounding=e,se(Zi>2?i.neg():i,t,e,!0)):new n(NaN)};W.squareRoot=W.sqrt=function(){var t,e,i,n,r,o,s=this,a=s.d,l=s.e,u=s.s,h=s.constructor;if(u!==1||!a||!a[0])return new h(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(pe=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=Nt(a),(e.length+l)%2==0&&(e+="0"),u=Math.sqrt(e),l=Vt((l+1)/2)-(l<0||l%2),u==1/0?e="5e"+l:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+l),n=new h(e)):n=new h(u.toString()),i=(l=h.precision)+3;;)if(o=n,n=o.plus(Ne(s,o,i+2,1)).times(.5),Nt(o.d).slice(0,i)===(e=Nt(n.d)).slice(0,i))if(e=e.slice(i-3,i+1),e=="9999"||!r&&e=="4999"){if(!r&&(se(o,l+1,0),o.times(o).eq(s))){n=o;break}i+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(se(n,l+1,1),t=!n.times(n).eq(s));break}return pe=!0,se(n,l,h.rounding,t)};W.tangent=W.tan=function(){var t,e,i=this,n=i.constructor;return i.isFinite()?i.isZero()?new n(i):(t=n.precision,e=n.rounding,n.precision=t+10,n.rounding=1,i=i.sin(),i.s=1,i=Ne(i,new n(1).minus(i.times(i)).sqrt(),t+10,0),n.precision=t,n.rounding=e,se(Zi==2||Zi==4?i.neg():i,t,e,!0)):new n(NaN)};W.times=W.mul=function(t){var e,i,n,r,o,s,a,l,u,h=this,y=h.constructor,v=h.d,T=(t=new y(t)).d;if(t.s*=h.s,!v||!v[0]||!T||!T[0])return new y(!t.s||v&&!v[0]&&!T||T&&!T[0]&&!v?NaN:!v||!T?t.s/0:t.s*0);for(i=Vt(h.e/de)+Vt(t.e/de),l=v.length,u=T.length,l<u&&(o=v,v=T,T=o,s=l,l=u,u=s),o=[],s=l+u,n=s;n--;)o.push(0);for(n=u;--n>=0;){for(e=0,r=l+n;r>n;)a=o[r]+T[n]*v[r-n-1]+e,o[r--]=a%Si|0,e=a/Si|0;o[r]=(o[r]+e)%Si|0}for(;!o[--s];)o.pop();return e?++i:o.shift(),t.d=o,t.e=xs(o,i),pe?se(t,y.precision,y.rounding):t};W.toBinary=function(t,e){return zc(this,2,t,e)};W.toDecimalPlaces=W.toDP=function(t,e){var i=this,n=i.constructor;return i=new n(i),t===void 0?i:(Xt(t,0,mn),e===void 0?e=n.rounding:Xt(e,0,8),se(i,t+i.e+1,e))};W.toExponential=function(t,e){var i,n=this,r=n.constructor;return t===void 0?i=Ri(n,!0):(Xt(t,0,mn),e===void 0?e=r.rounding:Xt(e,0,8),n=se(new r(n),t+1,e),i=Ri(n,!0,t+1)),n.isNeg()&&!n.isZero()?"-"+i:i};W.toFixed=function(t,e){var i,n,r=this,o=r.constructor;return t===void 0?i=Ri(r):(Xt(t,0,mn),e===void 0?e=o.rounding:Xt(e,0,8),n=se(new o(r),t+r.e+1,e),i=Ri(n,!1,t+n.e+1)),r.isNeg()&&!r.isZero()?"-"+i:i};W.toFraction=function(t){var e,i,n,r,o,s,a,l,u,h,y,v,T=this,O=T.d,P=T.constructor;if(!O)return new P(T);if(u=i=new P(1),n=l=new P(0),e=new P(n),o=e.e=Vd(O)-T.e-1,s=o%de,e.d[0]=Ot(10,s<0?de+s:s),t==null)t=o>0?e:u;else{if(a=new P(t),!a.isInt()||a.lt(u))throw Error(pn+a);t=a.gt(e)?o>0?e:u:a}for(pe=!1,a=new P(Nt(O)),h=P.precision,P.precision=o=O.length*de*2;y=Ne(a,e,0,1,1),r=i.plus(y.times(n)),r.cmp(t)!=1;)i=n,n=r,r=u,u=l.plus(y.times(r)),l=r,r=e,e=a.minus(y.times(r)),a=r;return r=Ne(t.minus(i),n,0,1,1),l=l.plus(r.times(u)),i=i.plus(r.times(n)),l.s=u.s=T.s,v=Ne(u,n,o,1).minus(T).abs().cmp(Ne(l,i,o,1).minus(T).abs())<1?[u,n]:[l,i],P.precision=h,pe=!0,v};W.toHexadecimal=W.toHex=function(t,e){return zc(this,16,t,e)};W.toNearest=function(t,e){var i=this,n=i.constructor;if(i=new n(i),t==null){if(!i.d)return i;t=new n(1),e=n.rounding}else{if(t=new n(t),e===void 0?e=n.rounding:Xt(e,0,8),!i.d)return t.s?i:t;if(!t.d)return t.s&&(t.s=i.s),t}return t.d[0]?(pe=!1,i=Ne(i,t,0,e,1).times(t),pe=!0,se(i)):(t.s=i.s,i=t),i};W.toNumber=function(){return+this};W.toOctal=function(t,e){return zc(this,8,t,e)};W.toPower=W.pow=function(t){var e,i,n,r,o,s,a=this,l=a.constructor,u=+(t=new l(t));if(!a.d||!t.d||!a.d[0]||!t.d[0])return new l(Ot(+a,u));if(a=new l(a),a.eq(1))return a;if(n=l.precision,o=l.rounding,t.eq(1))return se(a,n,o);if(e=Vt(t.e/de),e>=t.d.length-1&&(i=u<0?-u:u)<=eb)return r=Wd(l,a,i,n),t.s<0?new l(1).div(r):se(r,n,o);if(s=a.s,s<0){if(e<t.d.length-1)return new l(NaN);if(t.d[e]&1||(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return i=Ot(+a,u),e=i==0||!isFinite(i)?Vt(u*(Math.log("0."+Nt(a.d))/Math.LN10+a.e+1)):new l(i+"").e,e>l.maxE+1||e<l.minE-1?new l(e>0?s/0:0):(pe=!1,l.rounding=a.s=1,i=Math.min(12,(e+"").length),r=Vc(t.times(hn(a,n+i)),n),r.d&&(r=se(r,n+5,1),ao(r.d,n,o)&&(e=n+10,r=se(Vc(t.times(hn(a,e+i)),e),e+5,1),+Nt(r.d).slice(n+1,n+15)+1==1e14&&(r=se(r,n+1,0)))),r.s=s,pe=!0,l.rounding=o,se(r,n,o))};W.toPrecision=function(t,e){var i,n=this,r=n.constructor;return t===void 0?i=Ri(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Xt(t,1,mn),e===void 0?e=r.rounding:Xt(e,0,8),n=se(new r(n),t,e),i=Ri(n,t<=n.e||n.e<=r.toExpNeg,t)),n.isNeg()&&!n.isZero()?"-"+i:i};W.toSignificantDigits=W.toSD=function(t,e){var i=this,n=i.constructor;return t===void 0?(t=n.precision,e=n.rounding):(Xt(t,1,mn),e===void 0?e=n.rounding:Xt(e,0,8)),se(new n(i),t,e)};W.toString=function(){var t=this,e=t.constructor,i=Ri(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()&&!t.isZero()?"-"+i:i};W.truncated=W.trunc=function(){return se(new this.constructor(this),this.e+1,1)};W.valueOf=W.toJSON=function(){var t=this,e=t.constructor,i=Ri(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()?"-"+i:i};function Nt(t){var e,i,n,r=t.length-1,o="",s=t[0];if(r>0){for(o+=s,e=1;e<r;e++)n=t[e]+"",i=de-n.length,i&&(o+=fn(i)),o+=n;s=t[e],n=s+"",i=de-n.length,i&&(o+=fn(i))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Xt(t,e,i){if(t!==~~t||t<e||t>i)throw Error(pn+t)}function ao(t,e,i,n){var r,o,s,a;for(o=t[0];o>=10;o/=10)--e;return--e<0?(e+=de,r=0):(r=Math.ceil((e+1)/de),e%=de),o=Ot(10,de-e),a=t[r]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=i<4&&a==99999||i>3&&a==49999||a==5e4||a==0):s=(i<4&&a+1==o||i>3&&a+1==o/2)&&(t[r+1]/o/100|0)==Ot(10,e-2)-1||(a==o/2||a==0)&&(t[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||i<4)&&a==9999||!n&&i>3&&a==4999):s=((n||i<4)&&a+1==o||!n&&i>3&&a+1==o/2)&&(t[r+1]/o/1e3|0)==Ot(10,e-3)-1,s}function vs(t,e,i){for(var n,r=[0],o,s=0,a=t.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=$c.indexOf(t.charAt(s++)),n=0;n<r.length;n++)r[n]>i-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/i|0,r[n]%=i)}return r.reverse()}function ib(t,e){var i,n,r;if(e.isZero())return e;n=e.d.length,n<32?(i=Math.ceil(n/3),r=(1/As(4,i)).toString()):(i=16,r="2.3283064365386962890625e-10"),t.precision+=i,e=gr(t,1,e.times(r),new t(1));for(var o=i;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return t.precision-=i,e}var Ne=function(){function t(n,r,o){var s,a=0,l=n.length;for(n=n.slice();l--;)s=n[l]*r+a,n[l]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,l;if(o!=s)l=o>s?1:-1;else for(a=l=0;a<o;a++)if(n[a]!=r[a]){l=n[a]>r[a]?1:-1;break}return l}function i(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,l){var u,h,y,v,T,O,P,j,B,D,q,K,Z,G,J,x,I,A,E,k,S=n.constructor,c=n.s==r.s?1:-1,d=n.d,f=r.d;if(!d||!d[0]||!f||!f[0])return new S(!n.s||!r.s||(d?f&&d[0]==f[0]:!f)?NaN:d&&d[0]==0||!f?c*0:c/0);for(l?(T=1,h=n.e-r.e):(l=Si,T=de,h=Vt(n.e/T)-Vt(r.e/T)),E=f.length,I=d.length,B=new S(c),D=B.d=[],y=0;f[y]==(d[y]||0);y++);if(f[y]>(d[y]||0)&&h--,o==null?(G=o=S.precision,s=S.rounding):a?G=o+(n.e-r.e)+1:G=o,G<0)D.push(1),O=!0;else{if(G=G/T+2|0,y=0,E==1){for(v=0,f=f[0],G++;(y<I||v)&&G--;y++)J=v*l+(d[y]||0),D[y]=J/f|0,v=J%f|0;O=v||y<I}else{for(v=l/(f[0]+1)|0,v>1&&(f=t(f,v,l),d=t(d,v,l),E=f.length,I=d.length),x=E,q=d.slice(0,E),K=q.length;K<E;)q[K++]=0;k=f.slice(),k.unshift(0),A=f[0],f[1]>=l/2&&++A;do v=0,u=e(f,q,E,K),u<0?(Z=q[0],E!=K&&(Z=Z*l+(q[1]||0)),v=Z/A|0,v>1?(v>=l&&(v=l-1),P=t(f,v,l),j=P.length,K=q.length,u=e(P,q,j,K),u==1&&(v--,i(P,E<j?k:f,j,l))):(v==0&&(u=v=1),P=f.slice()),j=P.length,j<K&&P.unshift(0),i(q,P,K,l),u==-1&&(K=q.length,u=e(f,q,E,K),u<1&&(v++,i(q,E<K?k:f,K,l))),K=q.length):u===0&&(v++,q=[0]),D[y++]=v,u&&q[0]?q[K++]=d[x]||0:(q=[d[x]],K=1);while((x++<I||q[0]!==void 0)&&G--);O=q[0]!==void 0}D[0]||D.shift()}if(T==1)B.e=h,qd=O;else{for(y=1,v=D[0];v>=10;v/=10)y++;B.e=y+h*T-1,se(B,a?o+B.e+1:o,s,O)}return B}}();function se(t,e,i,n){var r,o,s,a,l,u,h,y,v,T=t.constructor;e:if(e!=null){if(y=t.d,!y)return t;for(r=1,a=y[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=de,s=e,h=y[v=0],l=h/Ot(10,r-s-1)%10|0;else if(v=Math.ceil((o+1)/de),a=y.length,v>=a)if(n){for(;a++<=v;)y.push(0);h=l=0,r=1,o%=de,s=o-de+1}else break e;else{for(h=a=y[v],r=1;a>=10;a/=10)r++;o%=de,s=o-de+r,l=s<0?0:h/Ot(10,r-s-1)%10|0}if(n=n||e<0||y[v+1]!==void 0||(s<0?h:h%Ot(10,r-s-1)),u=i<4?(l||n)&&(i==0||i==(t.s<0?3:2)):l>5||l==5&&(i==4||n||i==6&&(o>0?s>0?h/Ot(10,r-s):0:y[v-1])%10&1||i==(t.s<0?8:7)),e<1||!y[0])return y.length=0,u?(e-=t.e+1,y[0]=Ot(10,(de-e%de)%de),t.e=-e||0):y[0]=t.e=0,t;if(o==0?(y.length=v,a=1,v--):(y.length=v+1,a=Ot(10,de-o),y[v]=s>0?(h/Ot(10,r-s)%Ot(10,s)|0)*a:0),u)for(;;)if(v==0){for(o=1,s=y[0];s>=10;s/=10)o++;for(s=y[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(t.e++,y[0]==Si&&(y[0]=1));break}else{if(y[v]+=a,y[v]!=Si)break;y[v--]=0,a=1}for(o=y.length;y[--o]===0;)y.pop()}return pe&&(t.e>T.maxE?(t.d=null,t.e=NaN):t.e<T.minE&&(t.e=0,t.d=[0])),t}function Ri(t,e,i){if(!t.isFinite())return Gd(t);var n,r=t.e,o=Nt(t.d),s=o.length;return e?(i&&(n=i-s)>0?o=o.charAt(0)+"."+o.slice(1)+fn(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(t.e<0?"e":"e+")+t.e):r<0?(o="0."+fn(-r-1)+o,i&&(n=i-s)>0&&(o+=fn(n))):r>=s?(o+=fn(r+1-s),i&&(n=i-r-1)>0&&(o=o+"."+fn(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),i&&(n=i-s)>0&&(r+1===s&&(o+="."),o+=fn(n))),o}function xs(t,e){var i=t[0];for(e*=de;i>=10;i/=10)e++;return e}function Ts(t,e,i){if(e>tb)throw pe=!0,i&&(t.precision=i),Error(Ld);return se(new t(ks),e,1,!0)}function Ti(t,e,i){if(e>Kc)throw Error(Ld);return se(new t(Cs),e,i,!0)}function Vd(t){var e=t.length-1,i=e*de+1;if(e=t[e],e){for(;e%10==0;e/=10)i--;for(e=t[0];e>=10;e/=10)i++}return i}function fn(t){for(var e="";t--;)e+="0";return e}function Wd(t,e,i,n){var r,o=new t(1),s=Math.ceil(n/de+4);for(pe=!1;;){if(i%2&&(o=o.times(e),Fd(o.d,s)&&(r=!0)),i=Vt(i/2),i===0){i=o.d.length-1,r&&o.d[i]===0&&++o.d[i];break}e=e.times(e),Fd(e.d,s)}return pe=!0,o}function Nd(t){return t.d[t.d.length-1]&1}function zd(t,e,i){for(var n,r=new t(e[0]),o=0;++o<e.length;)if(n=new t(e[o]),n.s)r[i](n)&&(r=n);else{r=n;break}return r}function Vc(t,e){var i,n,r,o,s,a,l,u=0,h=0,y=0,v=t.constructor,T=v.rounding,O=v.precision;if(!t.d||!t.d[0]||t.e>17)return new v(t.d?t.d[0]?t.s<0?0:1/0:1:t.s?t.s<0?0:t:NaN);for(e==null?(pe=!1,l=O):l=e,a=new v(.03125);t.e>-2;)t=t.times(a),y+=5;for(n=Math.log(Ot(2,y))/Math.LN10*2+5|0,l+=n,i=o=s=new v(1),v.precision=l;;){if(o=se(o.times(t),l,1),i=i.times(++h),a=s.plus(Ne(o,i,l,1)),Nt(a.d).slice(0,l)===Nt(s.d).slice(0,l)){for(r=y;r--;)s=se(s.times(s),l,1);if(e==null)if(u<3&&ao(s.d,l-n,T,u))v.precision=l+=10,i=o=a=new v(1),h=0,u++;else return se(s,v.precision=O,T,pe=!0);else return v.precision=O,s}s=a}}function hn(t,e){var i,n,r,o,s,a,l,u,h,y,v,T=1,O=10,P=t,j=P.d,B=P.constructor,D=B.rounding,q=B.precision;if(P.s<0||!j||!j[0]||!P.e&&j[0]==1&&j.length==1)return new B(j&&!j[0]?-1/0:P.s!=1?NaN:j?0:P);if(e==null?(pe=!1,h=q):h=e,B.precision=h+=O,i=Nt(j),n=i.charAt(0),Math.abs(o=P.e)<15e14){for(;n<7&&n!=1||n==1&&i.charAt(1)>3;)P=P.times(t),i=Nt(P.d),n=i.charAt(0),T++;o=P.e,n>1?(P=new B("0."+i),o++):P=new B(n+"."+i.slice(1))}else return u=Ts(B,h+2,q).times(o+""),P=hn(new B(n+"."+i.slice(1)),h-O).plus(u),B.precision=q,e==null?se(P,q,D,pe=!0):P;for(y=P,l=s=P=Ne(P.minus(1),P.plus(1),h,1),v=se(P.times(P),h,1),r=3;;){if(s=se(s.times(v),h,1),u=l.plus(Ne(s,new B(r),h,1)),Nt(u.d).slice(0,h)===Nt(l.d).slice(0,h))if(l=l.times(2),o!==0&&(l=l.plus(Ts(B,h+2,q).times(o+""))),l=Ne(l,new B(T),h,1),e==null)if(ao(l.d,h-O,D,a))B.precision=h+=O,u=s=P=Ne(y.minus(1),y.plus(1),h,1),v=se(P.times(P),h,1),r=a=1;else return se(l,B.precision=q,D,pe=!0);else return B.precision=q,l;l=u,r+=2}}function Gd(t){return String(t.s*t.s/0)}function Wc(t,e){var i,n,r;for((i=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(i<0&&(i=n),i+=+e.slice(n+1),e=e.substring(0,n)):i<0&&(i=e.length),n=0;e.charCodeAt(n)===48;n++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,t.e=i=i-n-1,t.d=[],n=(i+1)%de,i<0&&(n+=de),n<r){for(n&&t.d.push(+e.slice(0,n)),r-=de;n<r;)t.d.push(+e.slice(n,n+=de));e=e.slice(n),n=de-e.length}else n-=r;for(;n--;)e+="0";t.d.push(+e),pe&&(t.e>t.constructor.maxE?(t.d=null,t.e=NaN):t.e<t.constructor.minE&&(t.e=0,t.d=[0]))}else t.e=0,t.d=[0];return t}function nb(t,e){var i,n,r,o,s,a,l,u,h;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Kd.test(e))return Wc(t,e)}else if(e==="Infinity"||e==="NaN")return+e||(t.s=NaN),t.e=NaN,t.d=null,t;if(Y_.test(e))i=16,e=e.toLowerCase();else if(J_.test(e))i=2;else if(Q_.test(e))i=8;else throw Error(pn+e);for(o=e.search(/p/i),o>0?(l=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=t.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=Wd(n,new n(i),o,o*2)),u=vs(e,i,Si),h=u.length-1,o=h;u[o]===0;--o)u.pop();return o<0?new n(t.s*0):(t.e=xs(u,h),t.d=u,pe=!1,s&&(t=Ne(t,r,a*4)),l&&(t=t.times(Math.abs(l)<54?Ot(2,l):co.pow(2,l))),pe=!0,t)}function rb(t,e){var i,n=e.d.length;if(n<3)return e.isZero()?e:gr(t,2,e,e);i=1.4*Math.sqrt(n),i=i>16?16:i|0,e=e.times(1/As(5,i)),e=gr(t,2,e,e);for(var r,o=new t(5),s=new t(16),a=new t(20);i--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function gr(t,e,i,n,r){var o,s,a,l,u=1,h=t.precision,y=Math.ceil(h/de);for(pe=!1,l=i.times(i),a=new t(n);;){if(s=Ne(a.times(l),new t(e++*e++),h,1),a=r?n.plus(s):n.minus(s),n=Ne(s.times(l),new t(e++*e++),h,1),s=a.plus(n),s.d[y]!==void 0){for(o=y;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return pe=!0,s.d.length=y+1,s}function As(t,e){for(var i=t;--e;)i*=t;return i}function Hd(t,e){var i,n=e.s<0,r=Ti(t,t.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return Zi=n?4:1,e;if(i=e.divToInt(r),i.isZero())Zi=n?3:2;else{if(e=e.minus(i.times(r)),e.lte(o))return Zi=Nd(i)?n?2:3:n?4:1,e;Zi=Nd(i)?n?1:4:n?3:2}return e.minus(r).abs()}function zc(t,e,i,n){var r,o,s,a,l,u,h,y,v,T=t.constructor,O=i!==void 0;if(O?(Xt(i,1,mn),n===void 0?n=T.rounding:Xt(n,0,8)):(i=T.precision,n=T.rounding),!t.isFinite())h=Gd(t);else{for(h=Ri(t),s=h.indexOf("."),O?(r=2,e==16?i=i*4-3:e==8&&(i=i*3-2)):r=e,s>=0&&(h=h.replace(".",""),v=new T(1),v.e=h.length-s,v.d=vs(Ri(v),10,r),v.e=v.d.length),y=vs(h,10,r),o=l=y.length;y[--l]==0;)y.pop();if(!y[0])h=O?"0p+0":"0";else{if(s<0?o--:(t=new T(t),t.d=y,t.e=o,t=Ne(t,v,i,n,0,r),y=t.d,o=t.e,u=qd),s=y[i],a=r/2,u=u||y[i+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(t.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&y[i-1]&1||n===(t.s<0?8:7)),y.length=i,u)for(;++y[--i]>r-1;)y[i]=0,i||(++o,y.unshift(1));for(l=y.length;!y[l-1];--l);for(s=0,h="";s<l;s++)h+=$c.charAt(y[s]);if(O){if(l>1)if(e==16||e==8){for(s=e==16?4:3,--l;l%s;l++)h+="0";for(y=vs(h,r,e),l=y.length;!y[l-1];--l);for(s=1,h="1.";s<l;s++)h+=$c.charAt(y[s])}else h=h.charAt(0)+"."+h.slice(1);h=h+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)h="0"+h;h="0."+h}else if(++o>l)for(o-=l;o--;)h+="0";else o<l&&(h=h.slice(0,o)+"."+h.slice(o))}h=(e==16?"0x":e==2?"0b":e==8?"0o":"")+h}return t.s<0?"-"+h:h}function Fd(t,e){if(t.length>e)return t.length=e,!0}function ob(t){return new this(t).abs()}function sb(t){return new this(t).acos()}function ab(t){return new this(t).acosh()}function cb(t,e){return new this(t).plus(e)}function lb(t){return new this(t).asin()}function ub(t){return new this(t).asinh()}function db(t){return new this(t).atan()}function fb(t){return new this(t).atanh()}function hb(t,e){t=new this(t),e=new this(e);var i,n=this.precision,r=this.rounding,o=n+4;return!t.s||!e.s?i=new this(NaN):!t.d&&!e.d?(i=Ti(this,o,1).times(e.s>0?.25:.75),i.s=t.s):!e.d||t.isZero()?(i=e.s<0?Ti(this,n,r):new this(0),i.s=t.s):!t.d||e.isZero()?(i=Ti(this,o,1).times(.5),i.s=t.s):e.s<0?(this.precision=o,this.rounding=1,i=this.atan(Ne(t,e,o,1)),e=Ti(this,o,1),this.precision=n,this.rounding=r,i=t.s<0?i.minus(e):i.plus(e)):i=this.atan(Ne(t,e,o,1)),i}function pb(t){return new this(t).cbrt()}function mb(t){return se(t=new this(t),t.e+1,2)}function gb(t,e,i){return new this(t).clamp(e,i)}function _b(t){if(!t||typeof t!="object")throw Error(Ss+"Object expected");var e,i,n,r=t.defaults===!0,o=["precision",1,mn,"rounding",0,8,"toExpNeg",-mr,0,"toExpPos",0,mr,"maxE",0,mr,"minE",-mr,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(i=o[e],r&&(this[i]=Uc[i]),(n=t[i])!==void 0)if(Vt(n)===n&&n>=o[e+1]&&n<=o[e+2])this[i]=n;else throw Error(pn+i+": "+n);if(i="crypto",r&&(this[i]=Uc[i]),(n=t[i])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[i]=!0;else throw Error($d);else this[i]=!1;else throw Error(pn+i+": "+n);return this}function bb(t){return new this(t).cos()}function yb(t){return new this(t).cosh()}function Zd(t){var e,i,n;function r(o){var s,a,l,u=this;if(!(u instanceof r))return new r(o);if(u.constructor=r,Rd(o)){u.s=o.s,pe?!o.d||o.e>r.maxE?(u.e=NaN,u.d=null):o.e<r.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(l=typeof o,l==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;pe?s>r.maxE?(u.e=NaN,u.d=null):s<r.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return Wc(u,o.toString())}else if(l!=="string")throw Error(pn+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),Kd.test(o)?Wc(u,o):nb(u,o)}if(r.prototype=W,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=_b,r.clone=Zd,r.isDecimal=Rd,r.abs=ob,r.acos=sb,r.acosh=ab,r.add=cb,r.asin=lb,r.asinh=ub,r.atan=db,r.atanh=fb,r.atan2=hb,r.cbrt=pb,r.ceil=mb,r.clamp=gb,r.cos=bb,r.cosh=yb,r.div=wb,r.exp=vb,r.floor=kb,r.hypot=Cb,r.ln=Tb,r.log=Sb,r.log10=Ab,r.log2=xb,r.max=Ib,r.min=Ob,r.mod=Pb,r.mul=Db,r.pow=Mb,r.random=Eb,r.round=jb,r.sign=Bb,r.sin=Nb,r.sinh=Fb,r.sqrt=Rb,r.sub=qb,r.sum=Lb,r.tan=$b,r.tanh=Ub,r.trunc=Kb,t===void 0&&(t={}),t&&t.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)t.hasOwnProperty(i=n[e++])||(t[i]=this[i]);return r.config(t),r}function wb(t,e){return new this(t).div(e)}function vb(t){return new this(t).exp()}function kb(t){return se(t=new this(t),t.e+1,3)}function Cb(){var t,e,i=new this(0);for(pe=!1,t=0;t<arguments.length;)if(e=new this(arguments[t++]),e.d)i.d&&(i=i.plus(e.times(e)));else{if(e.s)return pe=!0,new this(1/0);i=e}return pe=!0,i.sqrt()}function Rd(t){return t instanceof co||t&&t.toStringTag===Ud||!1}function Tb(t){return new this(t).ln()}function Sb(t,e){return new this(t).log(e)}function xb(t){return new this(t).log(2)}function Ab(t){return new this(t).log(10)}function Ib(){return zd(this,arguments,"lt")}function Ob(){return zd(this,arguments,"gt")}function Pb(t,e){return new this(t).mod(e)}function Db(t,e){return new this(t).mul(e)}function Mb(t,e){return new this(t).pow(e)}function Eb(t){var e,i,n,r,o=0,s=new this(1),a=[];if(t===void 0?t=this.precision:Xt(t,1,mn),n=Math.ceil(t/de),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=n/4}else throw Error($d);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],t%=de,n&&t&&(r=Ot(10,de-t),a[o]=(n/r|0)*r);a[o]===0;o--)a.pop();if(o<0)i=0,a=[0];else{for(i=-1;a[0]===0;i-=de)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<de&&(i-=de-n)}return s.e=i,s.d=a,s}function jb(t){return se(t=new this(t),t.e+1,this.rounding)}function Bb(t){return t=new this(t),t.d?t.d[0]?t.s:0*t.s:t.s||NaN}function Nb(t){return new this(t).sin()}function Fb(t){return new this(t).sinh()}function Rb(t){return new this(t).sqrt()}function qb(t,e){return new this(t).sub(e)}function Lb(){var t=0,e=arguments,i=new this(e[t]);for(pe=!1;i.s&&++t<e.length;)i=i.plus(e[t]);return pe=!0,se(i,this.precision,this.rounding)}function $b(t){return new this(t).tan()}function Ub(t){return new this(t).tanh()}function Kb(t){return se(t=new this(t),t.e+1,1)}W[Symbol.for("nodejs.util.inspect.custom")]=W.toString;W[Symbol.toStringTag]="Decimal";var co=W.constructor=Zd(Uc);ks=new co(ks);Cs=new co(Cs);var U=co;var Gf=we(Se(),1),ho=we(Se(),1);var ue=we(Se(),1),Me=we(Se(),1),Xf=we(Se(),1),Gs=require("@mysten/sui.js/utils"),Uy=we(Se(),1),ol=we(Se(),1),Ky=we(Se(),1);var $n=we(Se(),1),fo=we(Se(),1);var Un=require("@mysten/sui.js/transactions"),Qy=require("@mysten/sui.js/utils"),ew=require("@mysten/sui.js/transactions"),qt=we(Se(),1),qs=require("@mysten/sui.js/transactions"),al=we(Se(),1),Kn=require("@mysten/sui.js/transactions"),oh=require("@mysten/sui.js/utils"),Fe=we(Se(),1),Ls=require("@mysten/sui.js/transactions"),ni=we(Se(),1),Wn=we(kf(),1),sh=require("@mysten/sui.js/transactions"),Vn=we(Se(),1);var cl=require("@mysten/sui.js/transactions");var If="3.7.7",Jb=If,yr=typeof Buffer=="function",Cf=typeof TextDecoder=="function"?new TextDecoder:void 0,Tf=typeof TextEncoder=="function"?new TextEncoder:void 0,Yb="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",lo=Array.prototype.slice.call(Yb),Ms=(t=>{let e={};return t.forEach((i,n)=>e[i]=n),e})(lo),Qb=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,Ft=String.fromCharCode.bind(String),Sf=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):t=>new Uint8Array(Array.prototype.slice.call(t,0)),Of=t=>t.replace(/=/g,"").replace(/[+\/]/g,e=>e=="+"?"-":"_"),Pf=t=>t.replace(/[^A-Za-z0-9\+\/]/g,""),Df=t=>{let e,i,n,r,o="",s=t.length%3;for(let a=0;a<t.length;){if((i=t.charCodeAt(a++))>255||(n=t.charCodeAt(a++))>255||(r=t.charCodeAt(a++))>255)throw new TypeError("invalid character found");e=i<<16|n<<8|r,o+=lo[e>>18&63]+lo[e>>12&63]+lo[e>>6&63]+lo[e&63]}return s?o.slice(0,s-3)+"===".substring(s):o},Jc=typeof btoa=="function"?t=>btoa(t):yr?t=>Buffer.from(t,"binary").toString("base64"):Df,Zc=yr?t=>Buffer.from(t).toString("base64"):t=>{let i=[];for(let n=0,r=t.length;n<r;n+=4096)i.push(Ft.apply(null,t.subarray(n,n+4096)));return Jc(i.join(""))},Es=(t,e=!1)=>e?Of(Zc(t)):Zc(t),ey=t=>{if(t.length<2){var e=t.charCodeAt(0);return e<128?t:e<2048?Ft(192|e>>>6)+Ft(128|e&63):Ft(224|e>>>12&15)+Ft(128|e>>>6&63)+Ft(128|e&63)}else{var e=65536+(t.charCodeAt(0)-55296)*1024+(t.charCodeAt(1)-56320);return Ft(240|e>>>18&7)+Ft(128|e>>>12&63)+Ft(128|e>>>6&63)+Ft(128|e&63)}},ty=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,Mf=t=>t.replace(ty,ey),xf=yr?t=>Buffer.from(t,"utf8").toString("base64"):Tf?t=>Zc(Tf.encode(t)):t=>Jc(Mf(t)),br=(t,e=!1)=>e?Of(xf(t)):xf(t),Af=t=>br(t,!0),iy=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,ny=t=>{switch(t.length){case 4:var e=(7&t.charCodeAt(0))<<18|(63&t.charCodeAt(1))<<12|(63&t.charCodeAt(2))<<6|63&t.charCodeAt(3),i=e-65536;return Ft((i>>>10)+55296)+Ft((i&1023)+56320);case 3:return Ft((15&t.charCodeAt(0))<<12|(63&t.charCodeAt(1))<<6|63&t.charCodeAt(2));default:return Ft((31&t.charCodeAt(0))<<6|63&t.charCodeAt(1))}},Ef=t=>t.replace(iy,ny),jf=t=>{if(t=t.replace(/\s+/g,""),!Qb.test(t))throw new TypeError("malformed base64.");t+="==".slice(2-(t.length&3));let e,i="",n,r;for(let o=0;o<t.length;)e=Ms[t.charAt(o++)]<<18|Ms[t.charAt(o++)]<<12|(n=Ms[t.charAt(o++)])<<6|(r=Ms[t.charAt(o++)]),i+=n===64?Ft(e>>16&255):r===64?Ft(e>>16&255,e>>8&255):Ft(e>>16&255,e>>8&255,e&255);return i},Yc=typeof atob=="function"?t=>atob(Pf(t)):yr?t=>Buffer.from(t,"base64").toString("binary"):jf,Bf=yr?t=>Sf(Buffer.from(t,"base64")):t=>Sf(Yc(t).split("").map(e=>e.charCodeAt(0))),Nf=t=>Bf(Ff(t)),ry=yr?t=>Buffer.from(t,"base64").toString("utf8"):Cf?t=>Cf.decode(Bf(t)):t=>Ef(Yc(t)),Ff=t=>Pf(t.replace(/[-_]/g,e=>e=="-"?"+":"/")),Xc=t=>ry(Ff(t)),oy=t=>{if(typeof t!="string")return!1;let e=t.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(e)||!/[^\s0-9a-zA-Z\-_]/.test(e)},Rf=t=>({value:t,enumerable:!1,writable:!0,configurable:!0}),qf=function(){let t=(e,i)=>Object.defineProperty(String.prototype,e,Rf(i));t("fromBase64",function(){return Xc(this)}),t("toBase64",function(e){return br(this,e)}),t("toBase64URI",function(){return br(this,!0)}),t("toBase64URL",function(){return br(this,!0)}),t("toUint8Array",function(){return Nf(this)})},Lf=function(){let t=(e,i)=>Object.defineProperty(Uint8Array.prototype,e,Rf(i));t("toBase64",function(e){return Es(this,e)}),t("toBase64URI",function(){return Es(this,!0)}),t("toBase64URL",function(){return Es(this,!0)})},sy=()=>{qf(),Lf()},wr={version:If,VERSION:Jb,atob:Yc,atobPolyfill:jf,btoa:Jc,btoaPolyfill:Df,fromBase64:Xc,toBase64:br,encode:br,encodeURI:Af,encodeURL:Af,utob:Mf,btou:Ef,decode:Xc,isValid:oy,fromUint8Array:Es,toUint8Array:Nf,extendString:qf,extendUint8Array:Lf,extendBuiltins:sy};var ll=require("@mysten/sui.js/transactions"),ah=require("@mysten/sui.js/utils"),xi=we(Se(),1);var js,ay=new Uint8Array(16);function Qc(){if(!js&&(js=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!js))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return js(ay)}var Rt=[];for(let t=0;t<256;++t)Rt.push((t+256).toString(16).slice(1));function $f(t,e=0){return Rt[t[e+0]]+Rt[t[e+1]]+Rt[t[e+2]]+Rt[t[e+3]]+"-"+Rt[t[e+4]]+Rt[t[e+5]]+"-"+Rt[t[e+6]]+Rt[t[e+7]]+"-"+Rt[t[e+8]]+Rt[t[e+9]]+"-"+Rt[t[e+10]]+Rt[t[e+11]]+Rt[t[e+12]]+Rt[t[e+13]]+Rt[t[e+14]]+Rt[t[e+15]]}var cy=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),el={randomUUID:cy};function ly(t,e,i){if(el.randomUUID&&!e&&!t)return el.randomUUID();t=t||{};let n=t.random||(t.rng||Qc)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,e){i=i||0;for(let r=0;r<16;++r)e[i+r]=n[r];return e}return $f(n)}var Bs=ly;var $s=require("@mysten/sui.js/utils"),ch=require("@mysten/sui.js/transactions"),lh=require("@mysten/sui.js/client"),uh=require("@mysten/sui.js/bcs");var uy=Object.defineProperty,dy=(t,e,i)=>e in t?uy(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,fy=(t,e,i)=>(dy(t,typeof e!="symbol"?e+"":e,i),i),He=5*60*1e3,X=24*60*60*1e3;function be(t){return Date.parse(new Date().toString())+t}var Re=class{overdueTime;value;constructor(t,e=0){this.overdueTime=e,this.value=t}isValid(){return this.value===null?!1:this.overdueTime===0?!0:!(Date.parse(new Date().toString())>this.overdueTime)}};U.config({precision:64,rounding:U.ROUND_DOWN,toExpNeg:-64,toExpPos:64});var Lt=U,Y=class extends Error{message;errorCode;constructor(t,e){super(t),this.message=t,this.errorCode=e}static isClmmpoolsErrorCode(t,e){return t instanceof Y&&t.errorCode===e}},re=new St.default(0),qi=new St.default(1),Vs=new St.default(2),QS=Vs.pow(new St.default(128)),Sr=Vs.pow(new St.default(64)).sub(qi),my=Vs.pow(new St.default(128)).sub(qi),Ae=class{static toX64_BN(t){return t.mul(new St.default(2).pow(new St.default(64)))}static toX64_Decimal(t){return t.mul(Lt.pow(2,64))}static toX64(t){return new St.default(t.mul(Lt.pow(2,64)).floor().toFixed())}static fromX64(t){return new Lt(t.toString()).mul(Lt.pow(2,-64))}static fromX64_Decimal(t){return t.mul(Lt.pow(2,-64))}static fromX64_BN(t){return t.div(new St.default(2).pow(new St.default(64)))}static shiftRightRoundUp(t){let e=t.shrn(64);return t.mod(Sr).gt(re)&&(e=e.add(qi)),e}static divRoundUp(t,e){return t.mod(e).eq(re)?t.div(e):t.div(e).add(new St.default(1))}static subUnderflowU128(t,e){return t.lt(e)?t.sub(e).add(my):t.sub(e)}static checkUnsignedSub(t,e){let i=t.sub(e);if(i.isNeg())throw new Y("Unsigned integer sub overflow","UnsignedIntegerOverflow");return i}static checkMul(t,e,i){let n=t.mul(e);if(this.isOverflow(n,i))throw new Y("Multiplication overflow","MultiplicationOverflow");return n}static checkMulDivFloor(t,e,i,n){if(i.eq(re))throw new Y("Devide by zero","DivideByZero");let r=t.mul(e).div(i);if(this.isOverflow(r,n))throw new Y("Multiplication div overflow","MulDivOverflow");return r}static checkMulDivCeil(t,e,i,n){if(i.eq(re))throw new Y("Devide by zero","DivideByZero");let r=t.mul(e).add(i.sub(qi)).div(i);if(this.isOverflow(r,n))throw new Y("Multiplication div overflow","MulDivOverflow");return r}static checkMulDivRound(t,e,i,n){if(i.eq(re))throw new Y("Devide by zero","DivideByZero");let r=t.mul(e.add(i.shrn(1))).div(i);if(this.isOverflow(r,n))throw new Y("Multiplication div overflow","MulDivOverflow");return r}static checkMulShiftRight(t,e,i,n){let r=t.mul(e).div(new St.default(2).pow(new St.default(i)));if(this.isOverflow(r,n))throw new Y("Multiplication shift right overflow","MulShiftRightOverflow");return r}static checkMulShiftRight64RoundUpIf(t,e,i,n){let r=t.mul(e),s=n&&r.and(Sr).gt(re)?r.shrn(64).add(qi):r.shrn(64);if(this.isOverflow(s,i))throw new Y("Multiplication shift right overflow","MulShiftRightOverflow");return s}static checkMulShiftLeft(t,e,i,n){let r=t.mul(e).shln(i);if(this.isOverflow(r,n))throw new Y("Multiplication shift left overflow","MulShiftLeftOverflow");return r}static checkDivRoundUpIf(t,e,i){if(e.eq(re))throw new Y("Devide by zero","DivideByZero");return i?this.divRoundUp(t,e):t.div(e)}static isOverflow(t,e){return t.gte(Vs.pow(new St.default(e)))}static sign(t){return t.testn(127)?1:0}static is_neg(t){return this.sign(t)===1}static abs_u128(t){return t.gt(re)?t:this.u128_neg(t.subn(1))}static u128_neg(t){return t.uxor(new St.default("ffffffffffffffffffffffffffffffff",16))}static neg(t){return this.is_neg(t)?t.abs():this.neg_from(t)}static abs(t){return this.sign(t)===0?t:this.u128_neg(t.sub(new St.default(1)))}static neg_from(t){return t.eq(re)?t:this.u128_neg(t).add(new St.default(1)).or(new St.default(1).shln(127))}};function gy(t){return{coinA:t.coinTypeA,coinB:t.coinTypeB,currentSqrtPrice:new gn.default(t.current_sqrt_price),currentTickIndex:t.current_tick_index,feeGrowthGlobalA:new gn.default(t.fee_growth_global_a),feeGrowthGlobalB:new gn.default(t.fee_growth_global_b),feeProtocolCoinA:new gn.default(t.fee_protocol_coin_a),feeProtocolCoinB:new gn.default(t.fee_protocol_coin_b),feeRate:new gn.default(t.fee_rate),liquidity:new gn.default(t.liquidity),tickIndexes:[],tickSpacing:Number(t.tickSpacing),ticks:[],collection_name:""}}var Hf=443636,Zf=-443636,Ws="79226673515401279992447579055";var zs="4295048016",Cr=new Gf.default(1e6),z="0x0000000000000000000000000000000000000000000000000000000000000006",_y="partner",Tr="pool_script",Xi="pool_script_v2",_n="router",tl="router_with_partner",Jt="fetcher_script",by="expect_swap",Uf="utils";var il="custodian_v2",yy="clob_v2",wy="endpoints_v2";var ul=(t=>(t.Deleted="Deleted",t.Exists="Exists",t.NotExists="NotExists",t))(ul||{});function F(t){if(t.config===void 0)throw new Y(`package: ${t.package_id} not config in sdk SdkOptions`,"InvalidConfig");return t.config}var vy=14,ky="59543866431248",Cy="184467440737095516",Ty="15793534762490258745",Sy=443636;function xy(t,e,i){let n=t.toTwos(i).shln(e);return n.imaskn(i+1),n.fromTwos(i)}function ve(t,e,i){let n=t.toTwos(i).shrn(e);return n.imaskn(i-e+1),n.fromTwos(i-e)}function Ay(t){let e;return t&1?e=new ue.default("79232123823359799118286999567"):e=new ue.default("79228162514264337593543950336"),t&2&&(e=ve(e.mul(new ue.default("79236085330515764027303304731")),96,256)),t&4&&(e=ve(e.mul(new ue.default("79244008939048815603706035061")),96,256)),t&8&&(e=ve(e.mul(new ue.default("79259858533276714757314932305")),96,256)),t&16&&(e=ve(e.mul(new ue.default("79291567232598584799939703904")),96,256)),t&32&&(e=ve(e.mul(new ue.default("79355022692464371645785046466")),96,256)),t&64&&(e=ve(e.mul(new ue.default("79482085999252804386437311141")),96,256)),t&128&&(e=ve(e.mul(new ue.default("79736823300114093921829183326")),96,256)),t&256&&(e=ve(e.mul(new ue.default("80248749790819932309965073892")),96,256)),t&512&&(e=ve(e.mul(new ue.default("81282483887344747381513967011")),96,256)),t&1024&&(e=ve(e.mul(new ue.default("83390072131320151908154831281")),96,256)),t&2048&&(e=ve(e.mul(new ue.default("87770609709833776024991924138")),96,256)),t&4096&&(e=ve(e.mul(new ue.default("97234110755111693312479820773")),96,256)),t&8192&&(e=ve(e.mul(new ue.default("119332217159966728226237229890")),96,256)),t&16384&&(e=ve(e.mul(new ue.default("179736315981702064433883588727")),96,256)),t&32768&&(e=ve(e.mul(new ue.default("407748233172238350107850275304")),96,256)),t&65536&&(e=ve(e.mul(new ue.default("2098478828474011932436660412517")),96,256)),t&131072&&(e=ve(e.mul(new ue.default("55581415166113811149459800483533")),96,256)),t&262144&&(e=ve(e.mul(new ue.default("38992368544603139932233054999993551")),96,256)),ve(e,32,256)}function Iy(t){let e=Math.abs(t),i;return e&1?i=new ue.default("18445821805675392311"):i=new ue.default("18446744073709551616"),e&2&&(i=ve(i.mul(new ue.default("18444899583751176498")),64,256)),e&4&&(i=ve(i.mul(new ue.default("18443055278223354162")),64,256)),e&8&&(i=ve(i.mul(new ue.default("18439367220385604838")),64,256)),e&16&&(i=ve(i.mul(new ue.default("18431993317065449817")),64,256)),e&32&&(i=ve(i.mul(new ue.default("18417254355718160513")),64,256)),e&64&&(i=ve(i.mul(new ue.default("18387811781193591352")),64,256)),e&128&&(i=ve(i.mul(new ue.default("18329067761203520168")),64,256)),e&256&&(i=ve(i.mul(new ue.default("18212142134806087854")),64,256)),e&512&&(i=ve(i.mul(new ue.default("17980523815641551639")),64,256)),e&1024&&(i=ve(i.mul(new ue.default("17526086738831147013")),64,256)),e&2048&&(i=ve(i.mul(new ue.default("16651378430235024244")),64,256)),e&4096&&(i=ve(i.mul(new ue.default("15030750278693429944")),64,256)),e&8192&&(i=ve(i.mul(new ue.default("12247334978882834399")),64,256)),e&16384&&(i=ve(i.mul(new ue.default("8131365268884726200")),64,256)),e&32768&&(i=ve(i.mul(new ue.default("3584323654723342297")),64,256)),e&65536&&(i=ve(i.mul(new ue.default("696457651847595233")),64,256)),e&131072&&(i=ve(i.mul(new ue.default("26294789957452057")),64,256)),e&262144&&(i=ve(i.mul(new ue.default("37481735321082")),64,256)),i}var ie=class{static priceToSqrtPriceX64(t,e,i){return Ae.toX64(t.mul(Lt.pow(10,i-e)).sqrt())}static sqrtPriceX64ToPrice(t,e,i){return Ae.fromX64(t).pow(2).mul(Lt.pow(10,e-i))}static tickIndexToSqrtPriceX64(t){return t>0?new ue.default(Ay(t)):new ue.default(Iy(t))}static sqrtPriceX64ToTickIndex(t){if(t.gt(new ue.default(Ws))||t.lt(new ue.default(zs)))throw new Y("Provided sqrtPrice is not within the supported sqrtPrice range.","InvalidSqrtPrice");let e=t.bitLength()-1,i=new ue.default(e-64),n=xy(i,32,128),r=new ue.default("8000000000000000","hex"),o=0,s=new ue.default(0),a=e>=64?t.shrn(e-63):t.shln(63-e);for(;r.gt(new ue.default(0))&&o<vy;){a=a.mul(a);let O=a.shrn(127);a=a.shrn(63+O.toNumber()),s=s.add(r.mul(O)),r=r.shrn(1),o+=1}let l=s.shrn(32),h=n.add(l).mul(new ue.default(ky)),y=ve(h.sub(new ue.default(Cy)),64,128).toNumber(),v=ve(h.add(new ue.default(Ty)),64,128).toNumber();return y===v?y:ie.tickIndexToSqrtPriceX64(v).lte(t)?v:y}static tickIndexToPrice(t,e,i){return ie.sqrtPriceX64ToPrice(ie.tickIndexToSqrtPriceX64(t),e,i)}static priceToTickIndex(t,e,i){return ie.sqrtPriceX64ToTickIndex(ie.priceToSqrtPriceX64(t,e,i))}static priceToInitializableTickIndex(t,e,i,n){return ie.getInitializableTickIndex(ie.priceToTickIndex(t,e,i),n)}static getInitializableTickIndex(t,e){return t-t%e}static getNextInitializableTickIndex(t,e){return ie.getInitializableTickIndex(t,e)+e}static getPrevInitializableTickIndex(t,e){return ie.getInitializableTickIndex(t,e)-e}};function Oy(t){return M(t).add(M(Sy))}var t2=new ho.default(365),i2=new ho.default(24),n2=new ho.default(3600),r2=new ho.default(.5);var Ai=class{static getDefaultSqrtPriceLimit(t){return new Xf.default(t?zs:Ws)}static getDefaultOtherAmountThreshold(t){return t?re:Sr}};function Jf(t,e,i,n){if(i.eq(re))return t;let r=Ae.checkMulShiftLeft(t,e,64,256),o=e.shln(64),s=Ae.checkMul(t,i,256);if(!n&&o.lte(s))throw new Y("getNextSqrtPriceAUp - Unable to divide liquidityShl64 by product","DivideByZero");let a=n?Ae.checkDivRoundUpIf(r,o.add(s),!0):Ae.checkDivRoundUpIf(r,o.sub(s),!0);if(a.lt(new Me.default(zs)))throw new Y("getNextSqrtPriceAUp - Next sqrt price less than min sqrt price","CoinAmountMinSubceeded ");if(a.gt(new Me.default(Ws)))throw new Y("getNextSqrtPriceAUp - Next sqrt price greater than max sqrt price","CoinAmountMaxExceeded");return a}function Yf(t,e,i,n){let r=Ae.checkDivRoundUpIf(i.shln(64),e,!n),o=n?t.add(r):t.sub(r);if(o.lt(new Me.default(zs))||o.gt(new Me.default(Ws)))throw new Y("getNextSqrtPriceAUp - Next sqrt price out of bounds","SqrtPriceOutOfBounds");return o}function Py(t,e,i,n){return n?Jf(t,e,i,!0):Yf(t,e,i,!0)}function Dy(t,e,i,n){return n?Yf(t,e,i,!1):Jf(t,e,i,!1)}function Kf(t,e,i,n){let r=t.gt(e)?t.sub(e):e.sub(t);if(i.lte(re)||r.eq(re))return re;let o;if(n){let s=new Me.default(i).mul(new Me.default(r)).shln(64),a=e.mul(t),l=s.div(a);o=s.mod(a).eq(re)?l:l.add(qi)}else{let s=new Me.default(i).mul(new Me.default(r));o=s.and(Sr).gt(re)?s.shrn(64).add(qi):s.shrn(64)}return o}function Vf(t,e,i,n){let r=t.gt(e)?t.sub(e):e.sub(t);if(i.lte(re)||r.eq(re))return re;let o;if(n)o=i.mul(r).shrn(64);else{let s=i.mul(r).shln(64),a=e.mul(t);o=s.div(a)}return o}function My(t,e,i,n,r,o){if(i===re)return{amountIn:re,amountOut:re,nextSqrtPrice:e,feeAmount:re};let s=t.gte(e),a,l,u,h;if(o){let y=Ae.checkMulDivFloor(n,Ae.checkUnsignedSub(Cr,r),Cr,64),v=Kf(t,e,i,s);v.gt(y)?(a=y,h=Ae.checkUnsignedSub(n,y),u=Py(t,i,y,s)):(a=v,h=Ae.checkMulDivCeil(a,r,Cr.sub(r),64),u=e),l=Vf(t,u,i,s)}else{let y=Vf(t,e,i,s);y.gt(n)?(l=n,u=Dy(t,i,n,s)):(l=y,u=e),a=Kf(t,u,i,s),h=Ae.checkMulDivCeil(a,r,Cr.sub(r),64)}return{amountIn:a,amountOut:l,nextSqrtPrice:u,feeAmount:h}}function Ey(t,e,i,n,r){let o=i,s=n.liquidity,{currentSqrtPrice:a}=n,l={amountIn:re,amountOut:re,feeAmount:re,refAmount:re,nextSqrtPrice:re,crossTickNum:0},u,h,y=Ai.getDefaultSqrtPriceLimit(t);for(let v of r){if(t&&n.currentTickIndex<v.index||!t&&n.currentTickIndex>=v.index||v===null)continue;t&&y.gt(v.sqrtPrice)||!t&&y.lt(v.sqrtPrice)?u=y:u=v.sqrtPrice;let T=My(a,u,s,o,n.feeRate,e);if(T.amountIn.eq(re)||(o=e?o.sub(T.amountIn.add(T.feeAmount)):o.sub(T.amountOut)),l.amountIn=l.amountIn.add(T.amountIn),l.amountOut=l.amountOut.add(T.amountOut),l.feeAmount=l.feeAmount.add(T.feeAmount),T.nextSqrtPrice.eq(v.sqrtPrice)?(h=v.liquidityNet.mul(new Me.default(-1)),t?Ae.is_neg(h)?s=s.add(new Me.default(Pt(BigInt(h.toString()),128))):s=s.add(h):Ae.is_neg(h)?s=s.sub(new Me.default(Pt(BigInt(h.toString()),128))):s=s.sub(h),a=v.sqrtPrice):a=T.nextSqrtPrice,l.crossTickNum+=1,o.eq(re))break}return l.amountIn=l.amountIn.add(l.feeAmount),l.nextSqrtPrice=a,l}function Ns(t,e,i){let n=Me.default.min(t,e),r=Me.default.max(t,e),o=Ae.fromX64_BN(i.mul(r).mul(n)),s=r.sub(n);return o.div(s)}function Fs(t,e,i){let n=Me.default.min(t,e),o=Me.default.max(t,e).sub(n);return i.shln(64).div(o)}var ze=class{static updateFeeRate(t,e,i,n,r){let o=Ae.checkMulDivCeil(e,new Me.default(n),Cr,64),s=i===0?re:Ae.checkMulDivFloor(e,new Me.default(i),Cr,64),a=e.mul(o).mul(s);if(r?t.feeProtocolCoinA=t.feeProtocolCoinA.add(o):t.feeProtocolCoinB=t.feeProtocolCoinB.add(o),a.eq(re)||t.liquidity.eq(re))return{refFee:s,clmm:t};let l=a.shln(64).div(t.liquidity);return r?t.feeGrowthGlobalA=t.feeGrowthGlobalA.add(l):t.feeGrowthGlobalB=t.feeGrowthGlobalB.add(l),{refFee:s,clmm:t}}static getCoinAmountFromLiquidity(t,e,i,n,r){let o=new Lt(t.toString()),s=new Lt(e.toString()),a=new Lt(i.toString()),l=new Lt(n.toString()),u,h;return e.lt(i)?(u=Ae.toX64_Decimal(o).mul(l.sub(a)).div(a.mul(l)),h=new Lt(0)):e.lt(n)?(u=Ae.toX64_Decimal(o).mul(l.sub(s)).div(s.mul(l)),h=Ae.fromX64_Decimal(o.mul(s.sub(a)))):(u=new Lt(0),h=Ae.fromX64_Decimal(o.mul(l.sub(a)))),r?{coinA:new Me.default(u.ceil().toString()),coinB:new Me.default(h.ceil().toString())}:{coinA:new Me.default(u.floor().toString()),coinB:new Me.default(h.floor().toString())}}static estLiquidityAndcoinAmountFromOneAmounts(t,e,i,n,r,o,s){let a=ie.sqrtPriceX64ToTickIndex(s),l=ie.tickIndexToSqrtPriceX64(t),u=ie.tickIndexToSqrtPriceX64(e),h;if(a<t){if(!n)throw new Y("lower tick cannot calculate liquidity by coinB","NotSupportedThisCoin");h=Ns(l,u,i)}else if(a>e){if(n)throw new Y("upper tick cannot calculate liquidity by coinA","NotSupportedThisCoin");h=Fs(u,l,i)}else n?h=Ns(s,u,i):h=Fs(s,l,i);let y=ze.getCoinAmountFromLiquidity(h,s,l,u,r),v=r?M(y.coinA.toString()).mul(1+o).toString():M(y.coinA.toString()).mul(1-o).toString(),T=r?M(y.coinB.toString()).mul(1+o).toString():M(y.coinB.toString()).mul(1-o).toString();return{coinAmountA:y.coinA,coinAmountB:y.coinB,tokenMaxA:r?new Me.default(Lt.ceil(v).toString()):new Me.default(Lt.floor(v).toString()),tokenMaxB:r?new Me.default(Lt.ceil(T).toString()):new Me.default(Lt.floor(T).toString()),liquidityAmount:h,fix_amount_a:n}}static estimateLiquidityFromcoinAmounts(t,e,i,n){if(e>i)throw new Y("lower tick cannot be greater than lower tick","InvalidTwoTickIndex");let r=ie.sqrtPriceX64ToTickIndex(t),o=ie.tickIndexToSqrtPriceX64(e),s=ie.tickIndexToSqrtPriceX64(i);if(r<e)return Ns(o,s,n.coinA);if(r>=i)return Fs(s,o,n.coinB);let a=Ns(t,s,n.coinA),l=Fs(t,o,n.coinB);return Me.default.min(a,l)}static estCoinAmountsFromTotalAmount(t,e,i,n,r,o){let{ratioA:s,ratioB:a}=ze.calculateDepositRatioFixTokenA(t,e,i),l=M(n).mul(s).div(r),u=M(n).mul(a).div(o);return{amountA:l,amountB:u}}static calculateDepositRatioFixTokenA(t,e,i){let n=new Me.default(1e8),{coinAmountB:r}=ze.estLiquidityAndcoinAmountFromOneAmounts(t,e,n,!0,!0,0,i),o=ie.sqrtPriceX64ToPrice(i,0,0),s=M(n.toString()).mul(o),a=s.add(r.toString()),l=s.div(a),u=M(r.toString()).div(a);return{ratioA:l,ratioB:u}}};function dl(t){return t.startsWith("0x")?`${t.slice(2)}`:t}var jy=0,Qf=1,By=2;function Wf(t,e){return t===e?jy:t<e?Qf:By}function Ny(t,e){let i=0,n=t.length<=e.length?t.length:e.length,r=Wf(t.length,e.length);for(;i<n;){let o=Wf(t.charCodeAt(i),e.charCodeAt(i));if(i+=1,o!==0)return o}return r}function Us(t,e){return Ny(t,e)===Qf}function xr(t,...e){let i=Array.isArray(e[e.length-1])?e.pop():[],r=[t,...e].filter(Boolean).join("::");return i&&i.length&&(r+=`<${i.join(", ")}>`),r}function V(t){try{let e=t.replace(/\s/g,""),n=e.match(/(<.+>)$/)?.[0]?.match(/(\w+::\w+::\w+)(?:<.*?>(?!>))?/g);if(n){e=e.slice(0,e.indexOf("<"));let l={...V(e),type_arguments:n.map(u=>V(u).source_address)};return l.type_arguments=l.type_arguments.map(u=>Ce.isSuiCoin(u)?u:V(u).source_address),l.source_address=xr(l.full_address,l.type_arguments),l}let r=e.split("::"),s={full_address:e,address:e===po||e===$y?"0x2":(0,Gs.normalizeSuiObjectId)(r[0]),module:r[1],name:r[2],type_arguments:[],source_address:""};return s.full_address=`${s.address}::${s.module}::${s.name}`,s.source_address=xr(s.full_address,s.type_arguments),s}catch{return{full_address:t,address:"",module:"",name:"",type_arguments:[],source_address:t}}}function $t(t){return V(t).source_address}function Fy(t){return t.toLowerCase().startsWith("0x")?(0,Gs.normalizeSuiObjectId)(t):t}var Ry=(t,e=!0)=>{let i=t.split("::"),n=i.shift(),r=(0,Gs.normalizeSuiObjectId)(n);return e&&(r=dl(r)),`${r}::${i.join("::")}`};function Hs(t){for(let e in t){let i=typeof t[e];if(i==="object")Hs(t[e]);else if(i==="string"){let n=t[e];n&&!n.includes("::")&&(t[e]=Fy(n))}}}var qy="0x2::coin::Coin",Ly=/^0x2::coin::Coin<(.+)>$/;var po="0x2::sui::SUI",$y="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI";var Ce=class{static getCoinTypeArg(t){let e=t.type.match(Ly);return e?e[1]:null}static isSUI(t){let e=Ce.getCoinTypeArg(t);return e?Ce.getCoinSymbol(e)==="SUI":!1}static getCoinSymbol(t){return t.substring(t.lastIndexOf(":")+1)}static getBalance(t){return BigInt(t.fields.balance)}static totalBalance(t,e){let i=BigInt(0);return t.forEach(n=>{e===n.coinAddress&&(i+=BigInt(n.balance))}),i}static getID(t){return t.fields.id.id}static getCoinTypeFromArg(t){return`${qy}<${t}>`}static getFaucetCoins(t){let{events:e}=t,i=[];return e?.forEach(n=>{let{type:r}=n;if(V(r).name==="InitEvent"){let o=n.parsedJson;i.push({transactionModule:n.transactionModule,suplyID:o.suplyID,decimals:o.decimals})}}),i}static getCoinAssets(t,e){let i=[];return e.forEach(n=>{$t(n.coinAddress)===$t(t)&&i.push(n)}),i}static isSuiCoin(t){return V(t).full_address===po}static selectCoinObjectIdGreaterThanOrEqual(t,e,i=[]){let n=Ce.selectCoinAssetGreaterThanOrEqual(t,e,i),r=n.selectedCoins.map(a=>a.coinObjectId),o=n.remainingCoins,s=n.selectedCoins.map(a=>a.balance.toString());return{objectArray:r,remainCoins:o,amountArray:s}}static selectCoinAssetGreaterThanOrEqual(t,e,i=[]){let n=Ce.sortByBalance(t.filter(l=>!i.includes(l.coinObjectId))),r=Ce.calculateTotalBalance(n);if(r<e)return{selectedCoins:[],remainingCoins:n};if(r===e)return{selectedCoins:n,remainingCoins:[]};let o=BigInt(0),s=[],a=[...n];for(;o<r;){let l=e-o,u=a.findIndex(y=>y.balance>=l);if(u!==-1){s.push(a[u]),a.splice(u,1);break}let h=a.pop();h.balance>0&&(s.push(h),o+=h.balance)}return{selectedCoins:Ce.sortByBalance(s),remainingCoins:Ce.sortByBalance(a)}}static sortByBalance(t){return t.sort((e,i)=>e.balance<i.balance?-1:e.balance>i.balance?1:0)}static sortByBalanceDes(t){return t.sort((e,i)=>e.balance>i.balance?-1:e.balance<i.balance?0:1)}static calculateTotalBalance(t){return t.reduce((e,i)=>e+i.balance,BigInt(0))}};var Ar=class{numerator;denominator;constructor(t,e){this.toString=()=>`${this.numerator.toString()}/${this.denominator.toString()}`,this.numerator=t,this.denominator=e}static fromDecimal(t){return Ar.fromFraction(t.toDecimalPlaces(1).mul(10).toNumber(),1e3)}static fromFraction(t,e){let i=typeof t=="number"?new ol.default(t.toString()):t,n=typeof e=="number"?new ol.default(e.toString()):e;return new Ar(i,n)}};function sl(t,{numerator:e,denominator:i},n){return n?t.mul(i.add(e)).div(i):t.mul(i).div(i.add(e))}function Zs(t,e,i){return{tokenMaxA:sl(t.coinA,e,i),tokenMaxB:sl(t.coinB,e,i)}}function M(t){return U.isDecimal(t)?t:new U(t===void 0?0:t)}function Vy(t){return M(10).pow(M(t).abs())}function mo(t){return t.data}function eh(t){if(t.error&&"object_id"in t.error&&"version"in t.error&&"digest"in t.error){let{error:e}=t;return{objectId:e.object_id,version:e.version,digest:e.digest}}}function th(t){if(t.error&&"object_id"in t.error&&!("version"in t.error)&&!("digest"in t.error))return t.error.object_id}function Wy(t){if("reference"in t)return t.reference;let e=mo(t);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:eh(t)}function Ht(t){return"objectId"in t?t.objectId:Wy(t)?.objectId??th(t)}function zy(t){return t.data!==void 0}function Gy(t){return t.content!==void 0}function ih(t){let e="data"in t?mo(t):t;if(!(!e||!Gy(e)||e.content.dataType!=="moveObject"))return e.content}function Ut(t){return ih(t)?.type}function Ii(t){let e=zy(t)?t.data:t;return!e?.type&&"data"in t?e?.content?.dataType==="package"?"package":Ut(t):e?.type}function zn(t){return mo(t)?.previousTransaction}function Ir(t){return mo(t)?.owner}function Hy(t){let e=mo(t)?.display;return e||{data:null,error:null}}function te(t){let e=ih(t)?.fields;if(e)return"fields"in e?e.fields:e}function nh(t,e){let i=Vy(M(e));return Number(M(t).mul(i))}function Pt(t,e=32){return BigInt.asUintN(e,BigInt(t)).toString()}function $e(t,e=32){return Number(BigInt.asIntN(e,BigInt(t)))}function Zy(t,e,i){let n=V(t).name,r=V(e).name;return`${n}-${r}[${i}]`}function nl(t){let e=Ut(t),i=V(e),n=te(t);if(n==null)throw new Y(`Pool id ${Ht(t)} not exists.`,"InvalidPoolObject");let r=[];n.rewarder_manager.fields.rewarders.forEach(s=>{let{emissions_per_second:a}=s.fields,l=Ae.fromX64(new di.default(a)),u=Math.floor(l.toNumber()*60*60*24);r.push({emissions_per_second:a,coinAddress:V(s.fields.reward_coin.fields.name).source_address,growth_global:s.fields.growth_global,emissionsEveryDay:u})});let o={poolAddress:Ht(t),poolType:e,coinTypeA:i.type_arguments[0],coinTypeB:i.type_arguments[1],coinAmountA:n.coin_a,coinAmountB:n.coin_b,current_sqrt_price:n.current_sqrt_price,current_tick_index:$e(BigInt(n.current_tick_index.fields.bits)),fee_growth_global_a:n.fee_growth_global_a,fee_growth_global_b:n.fee_growth_global_b,fee_protocol_coin_a:n.fee_protocol_coin_a,fee_protocol_coin_b:n.fee_protocol_coin_b,fee_rate:n.fee_rate,is_pause:n.is_pause,liquidity:n.liquidity,position_manager:{positions_handle:n.position_manager.fields.positions.fields.id.id,size:n.position_manager.fields.positions.fields.size},rewarder_infos:r,rewarder_last_updated_time:n.rewarder_manager.fields.last_updated_time,tickSpacing:n.tick_spacing,ticks_handle:n.tick_manager.fields.ticks.fields.id.id,uri:n.url,index:Number(n.index),name:""};return o.name=Zy(o.coinTypeA,o.coinTypeB,o.tickSpacing),o}function Gn(t){let e=Hy(t).data,i={creator:"",description:"",image_url:"",link:"",name:"",project_url:""};return e&&(i.creator=e.creator,i.description=e.description,i.image_url=e.image_url,i.link=e.link,i.name=e.name,i.project_url=e.project_url),i}function Ji(t){if(t.error!=null||t.data?.content?.dataType!=="moveObject")throw new Y(`Position not exists. Get Position error:${t.error}`,"InvalidPositionObject");let e={creator:"",description:"",image_url:"",link:"",name:"",project_url:""},i={...e,pos_object_id:"",owner:"",type:"",coin_type_a:"",coin_type_b:"",liquidity:"",tick_lower_index:0,tick_upper_index:0,index:0,pool:"",reward_amount_owed_0:"0",reward_amount_owed_1:"0",reward_amount_owed_2:"0",reward_growth_inside_0:"0",reward_growth_inside_1:"0",reward_growth_inside_2:"0",fee_growth_inside_a:"0",fee_owed_a:"0",fee_growth_inside_b:"0",fee_owed_b:"0",position_status:"Exists"},n=te(t);if(n){let s=Ut(t),a=Ir(t);"nft"in n?(n=n.nft.fields,e.description=n.description,e.name=n.name,e.link=n.url):e=Gn(t),i={...e,pos_object_id:n.id.id,owner:a.AddressOwner,type:s,coin_type_a:n.coin_type_a.fields.name,coin_type_b:n.coin_type_b.fields.name,liquidity:n.liquidity,tick_lower_index:$e(BigInt(n.tick_lower_index.fields.bits)),tick_upper_index:$e(BigInt(n.tick_upper_index.fields.bits)),index:n.index,pool:n.pool,reward_amount_owed_0:"0",reward_amount_owed_1:"0",reward_amount_owed_2:"0",reward_growth_inside_0:"0",reward_growth_inside_1:"0",reward_growth_inside_2:"0",fee_growth_inside_a:"0",fee_owed_a:"0",fee_growth_inside_b:"0",fee_owed_b:"0",position_status:"Exists"}}let r=eh(t);r&&(i.pos_object_id=r.objectId,i.position_status="Deleted");let o=th(t);return o&&(i.pos_object_id=o,i.position_status="NotExists"),i}function rh(t){let e={reward_amount_owed_0:"0",reward_amount_owed_1:"0",reward_amount_owed_2:"0",reward_growth_inside_0:"0",reward_growth_inside_1:"0",reward_growth_inside_2:"0"};t="fields"in t?t.fields:t,t.rewards.forEach((o,s)=>{let{amount_owned:a,growth_inside:l}="fields"in o?o.fields:o;s===0?(e.reward_amount_owed_0=a,e.reward_growth_inside_0=l):s===1?(e.reward_amount_owed_1=a,e.reward_growth_inside_1=l):s===2&&(e.reward_amount_owed_2=a,e.reward_growth_inside_2=l)});let i="fields"in t.tick_lower_index?t.tick_lower_index.fields.bits:t.tick_lower_index.bits,n="fields"in t.tick_upper_index?t.tick_upper_index.fields.bits:t.tick_upper_index.bits;return{liquidity:t.liquidity,tick_lower_index:$e(BigInt(i)),tick_upper_index:$e(BigInt(n)),...e,fee_growth_inside_a:t.fee_growth_inside_a,fee_owed_a:t.fee_owned_a,fee_growth_inside_b:t.fee_growth_inside_b,fee_owed_b:t.fee_owned_b,pos_object_id:t.position_id}}function rl(t){if(t.error!=null||t.data?.content?.dataType!=="moveObject")throw new Y(`Tick not exists. Get tick data error:${t.error}`,"InvalidTickObject");let i=te(t).value.fields.value.fields;return{objectId:Ht(t),index:$e(BigInt(i.index.fields.bits)),sqrtPrice:new di.default(i.sqrt_price),liquidityNet:new di.default(i.liquidity_net.fields.bits),liquidityGross:new di.default(i.liquidity_gross),feeGrowthOutsideA:new di.default(i.fee_growth_outside_a),feeGrowthOutsideB:new di.default(i.fee_growth_outside_b),rewardersGrowthOutside:i.rewards_growth_outside}}function Xy(t){if(!t||!t.index||!t.sqrt_price||!t.liquidity_net||!t.liquidity_gross||!t.fee_growth_outside_a||!t.fee_growth_outside_b)throw new Y("Invalid tick fields.","InvalidTickFields");let e=$e(BigInt(t.index.bits)),i=new di.default(t.sqrt_price),n=new di.default(t.liquidity_net.bits),r=new di.default(t.liquidity_gross),o=new di.default(t.fee_growth_outside_a),s=new di.default(t.fee_growth_outside_b),a=t.rewards_growth_outside||[];return{objectId:"",index:e,sqrtPrice:i,liquidityNet:n,liquidityGross:r,feeGrowthOutsideA:o,feeGrowthOutsideB:s,rewardersGrowthOutside:a}}function Jy(t,e,i,n,r,o){let s=t.rewarder_infos,a=[];for(let l=0;l<s.length;l+=1){let u=o[l];e!==null&&(t.current_tick_index<n?u=o[l].sub(new $n.default(e.rewardersGrowthOutside[l])):u=e.rewardersGrowthOutside[l]);let h=new $n.default(0);i!==null&&(t.current_tick_index>=r?h=o[l].sub(new $n.default(i.rewardersGrowthOutside[l])):h=i.rewardersGrowthOutside[l]);let y=Ae.subUnderflowU128(Ae.subUnderflowU128(new $n.default(o[l]),new $n.default(u)),new $n.default(h));a.push(y)}return a}function Ks(t){let e=Ce.isSuiCoin(t.coinTypeA),i=Ce.isSuiCoin(t.coinTypeB);return{isAdjustCoinA:e,isAdjustCoinB:i}}function Yy(t,e){return U.ceil(M(t).div(1+e)).toString()}var ce=class{static createCollectRewarderAndFeeParams(t,e,i,n,r,o){r===void 0&&(r=[...n]),o===void 0&&(o=[...n]);let s=$t(i.coinTypeA),a=$t(i.coinTypeB);if(i.collect_fee){let u=ce.buildCoinForAmount(e,r,BigInt(0),s,!1);r=u.remainCoins;let h=ce.buildCoinForAmount(e,o,BigInt(0),a,!1);o=h.remainCoins,e=t.Position.createCollectFeePaylod({pool_id:i.pool_id,pos_id:i.pos_id,coinTypeA:i.coinTypeA,coinTypeB:i.coinTypeB},e,u.targetCoin,h.targetCoin)}let l=[];return i.rewarder_coin_types.forEach(u=>{switch($t(u)){case s:l.push(ce.buildCoinForAmount(e,r,BigInt(0),u,!1).targetCoin);break;case a:l.push(ce.buildCoinForAmount(e,o,BigInt(0),u,!1).targetCoin);break;default:l.push(ce.buildCoinForAmount(e,n,BigInt(0),u,!1).targetCoin);break}}),e=t.Rewarder.createCollectRewarderPaylod(i,e,l),e}static async adjustTransactionForGas(t,e,i,n){n.setSender(t.senderAddress);let r=Ce.selectCoinAssetGreaterThanOrEqual(e,i).selectedCoins;if(r.length===0)throw new Y("Insufficient balance","InsufficientBalance");let o=Ce.calculateTotalBalance(e);if(o-i>1e9)return{fixAmount:i};let s=await t.fullClient.calculationTxGas(n);if(Ce.selectCoinAssetGreaterThanOrEqual(e,BigInt(s),r.map(l=>l.coinObjectId)).selectedCoins.length===0){let l=BigInt(s)+BigInt(500);if(o-i<l){if(i-=l,i<0)throw new Y("gas Insufficient balance","InsufficientBalance");let u=new Un.TransactionBlock;return{fixAmount:i,newTx:u}}}return{fixAmount:i}}static async buildAddLiquidityFixTokenForGas(t,e,i,n){let r=await ce.buildAddLiquidityFixToken(t,e,i),{isAdjustCoinA:o}=Ks(i),s=o?i.amount_a:i.amount_b,a=await ce.adjustTransactionForGas(t,Ce.getCoinAssets(o?i.coinTypeA:i.coinTypeB,e),BigInt(s),r),{fixAmount:l}=a,{newTx:u}=a;if(u!==void 0){let h,y;if(o)i.amount_a=Number(l),h=ce.buildAddLiquidityFixTokenCoinInput(u,!i.fix_amount_a,l.toString(),i.slippage,i.coinTypeA,e,!1),y=ce.buildAddLiquidityFixTokenCoinInput(u,i.fix_amount_a,i.amount_b,i.slippage,i.coinTypeB,e,!1);else return i.amount_b=Number(l),h=ce.buildAddLiquidityFixTokenCoinInput(u,!i.fix_amount_a,i.amount_a,i.slippage,i.coinTypeA,e,!1),y=ce.buildAddLiquidityFixTokenCoinInput(u,i.fix_amount_a,l.toString(),i.slippage,i.coinTypeB,e,!1),i=ce.fixAddLiquidityFixTokenParams(i,n.slippage,n.curSqrtPrice),r=await ce.buildAddLiquidityFixTokenArgs(u,t,e,i,h,y),r}return r}static async buildAddLiquidityFixToken(t,e,i){if(t.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let n=new Un.TransactionBlock,r=ce.buildAddLiquidityFixTokenCoinInput(n,!i.fix_amount_a,i.amount_a,i.slippage,i.coinTypeA,e,!1),o=ce.buildAddLiquidityFixTokenCoinInput(n,i.fix_amount_a,i.amount_b,i.slippage,i.coinTypeB,e,!1);return n=ce.buildAddLiquidityFixTokenArgs(n,t,e,i,r,o),n}static buildAddLiquidityFixTokenCoinInput(t,e,i,n,r,o,s=!0){return e?ce.buildCoinForAmountInterval(t,o,{amountSecond:BigInt(Yy(i,n)),amountFirst:BigInt(i)},r,s):ce.buildCoinForAmount(t,o,BigInt(i),r,s)}static fixAddLiquidityFixTokenParams(t,e,i){let n=t.fix_amount_a?t.amount_a:t.amount_b,r=ze.estLiquidityAndcoinAmountFromOneAmounts(Number(t.tick_lower),Number(t.tick_upper),new fo.default(n),t.fix_amount_a,!0,e,i);return t.amount_a=t.fix_amount_a?t.amount_a:r.tokenMaxA.toNumber(),t.amount_b=t.fix_amount_a?r.tokenMaxB.toNumber():t.amount_b,t}static buildAddLiquidityFixTokenArgs(t,e,i,n,r,o){let s=[n.coinTypeA,n.coinTypeB],a=n.is_open?"open_position_with_liquidity_by_fix_coin":"add_liquidity_by_fix_coin",{clmm_pool:l,integrate:u}=e.sdkOptions;n.is_open||(t=ce.createCollectRewarderAndFeeParams(e,t,n,i,r.remainCoins,o.remainCoins));let h=F(l),y=n.is_open?[t.object(h.global_config_id),t.object(n.pool_id),t.pure(Pt(BigInt(n.tick_lower)).toString()),t.pure(Pt(BigInt(n.tick_upper)).toString()),r.targetCoin,o.targetCoin,t.pure(n.amount_a),t.pure(n.amount_b),t.pure(n.fix_amount_a),t.object(z)]:[t.object(h.global_config_id),t.object(n.pool_id),t.object(n.pos_id),r.targetCoin,o.targetCoin,t.pure(n.amount_a),t.pure(n.amount_b),t.pure(n.fix_amount_a),t.object(z)];return t.moveCall({target:`${u.published_at}::${Xi}::${a}`,typeArguments:s,arguments:y}),t}static async buildSwapTransactionForGas(t,e,i,n){let r=ce.buildSwapTransaction(t,e,i);r.setSender(t.senderAddress);let o=await ce.adjustTransactionForGas(t,Ce.getCoinAssets(e.a2b?e.coinTypeA:e.coinTypeB,i),BigInt(e.by_amount_in?e.amount:e.amount_limit),r),{fixAmount:s,newTx:a}=o;if(a!==void 0){a.setSender(t.senderAddress),e.by_amount_in?e.amount=s.toString():e.amount_limit=s.toString(),e=await ce.fixSwapParams(t,e,n);let l=ce.buildCoinForAmount(r,i,e.a2b?BigInt(e.by_amount_in?e.amount:e.amount_limit):BigInt(0),e.coinTypeA),u=ce.buildCoinForAmount(r,i,e.a2b?BigInt(0):BigInt(e.by_amount_in?e.amount:e.amount_limit),e.coinTypeB);r=ce.buildSwapTransactionArgs(a,e,t.sdkOptions,l,u)}return r}static buildSwapTransaction(t,e,i){let n=new Un.TransactionBlock;n.setSender(t.senderAddress);let r=ce.buildCoinForAmount(n,i,e.a2b?BigInt(e.by_amount_in?e.amount:e.amount_limit):BigInt(0),e.coinTypeA,!1),o=ce.buildCoinForAmount(n,i,e.a2b?BigInt(0):BigInt(e.by_amount_in?e.amount:e.amount_limit),e.coinTypeB,!1);return n=ce.buildSwapTransactionArgs(n,e,t.sdkOptions,r,o),n}static buildSwapTransactionArgs(t,e,i,n,r){let{clmm_pool:o,integrate:s}=i,a=Ai.getDefaultSqrtPriceLimit(e.a2b),l=[e.coinTypeA,e.coinTypeB],{global_config_id:u}=F(o);if(u===void 0)throw Error("clmm.config.global_config_id is undefined");let h=e.swap_partner!==void 0,y=h?e.a2b?"swap_a2b_with_partner":"swap_b2a_with_partner":e.a2b?"swap_a2b":"swap_b2a",v=h?[t.pure(u),t.pure(e.pool_id),t.pure(e.swap_partner),n.targetCoin,r.targetCoin,t.pure(e.by_amount_in),t.pure(e.amount),t.pure(e.amount_limit),t.pure(a.toString()),t.pure(z)]:[t.pure(u),t.pure(e.pool_id),n.targetCoin,r.targetCoin,t.pure(e.by_amount_in),t.pure(e.amount),t.pure(e.amount_limit),t.pure(a.toString()),t.pure(z)];return t.moveCall({target:`${s.published_at}::${Xi}::${y}`,typeArguments:l,arguments:v}),t}static async buildSwapTransactionWithoutTransferCoinsForGas(t,e,i,n){let{tx:r,coinABs:o}=ce.buildSwapTransactionWithoutTransferCoins(t,e,i);r.setSender(t.senderAddress);let s=await ce.adjustTransactionForGas(t,Ce.getCoinAssets(e.a2b?e.coinTypeA:e.coinTypeB,i),BigInt(e.by_amount_in?e.amount:e.amount_limit),r),{fixAmount:a,newTx:l}=s;if(l!==void 0){l.setSender(t.senderAddress),e.by_amount_in?e.amount=a.toString():e.amount_limit=a.toString(),e=await ce.fixSwapParams(t,e,n);let u=ce.buildCoinForAmount(r,i,e.a2b?BigInt(e.by_amount_in?e.amount:e.amount_limit):BigInt(0),e.coinTypeA,!1,!0),h=ce.buildCoinForAmount(r,i,e.a2b?BigInt(0):BigInt(e.by_amount_in?e.amount:e.amount_limit),e.coinTypeB,!1,!0),y=ce.buildSwapTransactionWithoutTransferCoinArgs(t,l,e,t.sdkOptions,u,h);r=y.tx,o=y.txRes}return{tx:r,coinABs:o}}static buildSwapTransactionWithoutTransferCoins(t,e,i){let n=new Un.TransactionBlock;n.setSender(t.senderAddress);let r=ce.buildCoinForAmount(n,i,e.a2b?BigInt(e.by_amount_in?e.amount:e.amount_limit):BigInt(0),e.coinTypeA,!1,!0),o=ce.buildCoinForAmount(n,i,e.a2b?BigInt(0):BigInt(e.by_amount_in?e.amount:e.amount_limit),e.coinTypeB,!1,!0),s=ce.buildSwapTransactionWithoutTransferCoinArgs(t,n,e,t.sdkOptions,r,o);return{tx:s.tx,coinABs:s.txRes}}static buildSwapTransactionWithoutTransferCoinArgs(t,e,i,n,r,o){let{clmm_pool:s,integrate:a}=n,l=Ai.getDefaultSqrtPriceLimit(i.a2b),{global_config_id:u}=F(s);if(u===void 0)throw Error("clmm.config.global_config_id is undefined");let h=i.swap_partner!==void 0,y=h?"swap_with_partner":"swap",v=h?tl:_n,T=h?[e.pure(u),e.pure(i.pool_id),e.pure(i.swap_partner),r.targetCoin,o.targetCoin,e.pure(i.a2b),e.pure(i.by_amount_in),e.pure(i.amount),e.pure(l.toString()),e.pure(!1),e.pure(z)]:[e.pure(u),e.pure(i.pool_id),r.targetCoin,o.targetCoin,e.pure(i.a2b),e.pure(i.by_amount_in),e.pure(i.amount),e.pure(l.toString()),e.pure(!1),e.pure(z)],O=[i.coinTypeA,i.coinTypeB],P=e.moveCall({target:`${a.published_at}::${v}::${y}`,typeArguments:O,arguments:T});if(i.by_amount_in){let j=i.a2b?i.coinTypeB:i.coinTypeA,B=i.a2b?P[1]:P[0],D=Number(i.amount_limit);this.checkCoinThreshold(t,i.by_amount_in,e,B,D,j)}return{tx:e,txRes:P}}static async fixSwapParams(t,e,i){let{currentPool:n}=i;try{let r=await t.Swap.preswap({decimalsA:i.decimalsA,decimalsB:i.decimalsB,a2b:e.a2b,byAmountIn:e.by_amount_in,amount:e.amount,pool:n,currentSqrtPrice:n.current_sqrt_price,coinTypeA:n.coinTypeA,coinTypeB:n.coinTypeB}),o=i.byAmountIn?r.estimatedAmountOut:r.estimatedAmountIn,s=sl(o,i.slippage,!i.byAmountIn);e.amount_limit=s.toString()}catch(r){console.log("fixSwapParams",r)}return e}static async syncBuildCoinInputForAmount(t,e,i,n,r=!0){if(t.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let o=await t.getOwnerCoinAssets(t.senderAddress,n);return ce.buildCoinForAmount(e,o,i,n,r).targetCoin}static buildCoinForAmount(t,e,i,n,r=!0,o=!1){let s=Ce.getCoinAssets(n,e);if(i===BigInt(0)&&s.length===0)return ce.buildZeroValueCoin(e,t,n,r);let a=Ce.calculateTotalBalance(s);if(a<i)throw new Y(`The amount(${a}) is Insufficient balance for ${n} , expect ${i} `,"InsufficientBalance");return ce.buildCoin(t,e,s,i,n,r,o)}static buildCoin(t,e,i,n,r,o=!0,s=!1){if(Ce.isSuiCoin(r)){if(o){let D=t.splitCoins(t.gas,[t.pure(n.toString())]);return{targetCoin:t.makeMoveVec({objects:[D]}),remainCoins:e,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:t.gas}}if(n===0n&&i.length>1){let D=Ce.selectCoinObjectIdGreaterThanOrEqual(i,n);return{targetCoin:t.object(D.objectArray[0]),remainCoins:D.remainCoins,tragetCoinAmount:D.amountArray[0],isMintZeroCoin:!1}}let j=Ce.selectCoinObjectIdGreaterThanOrEqual(i,n);return{targetCoin:t.splitCoins(t.gas,[t.pure(n.toString())]),remainCoins:j.remainCoins,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:t.gas}}let a=Ce.selectCoinObjectIdGreaterThanOrEqual(i,n),l=a.amountArray.reduce((j,B)=>Number(j)+Number(B),0).toString(),u=a.objectArray;if(o)return{targetCoin:t.makeMoveVec({objects:u.map(j=>t.object(j))}),remainCoins:a.remainCoins,tragetCoinAmount:a.amountArray.reduce((j,B)=>Number(j)+Number(B),0).toString(),isMintZeroCoin:!1};let[h,...y]=u,v=t.object(h),T=v,O=a.amountArray.reduce((j,B)=>Number(j)+Number(B),0).toString(),P;return y.length>0&&t.mergeCoins(v,y.map(j=>t.object(j))),s&&Number(l)>Number(n)&&(T=t.splitCoins(v,[t.pure(n.toString())]),O=n.toString(),P=v),{targetCoin:T,remainCoins:a.remainCoins,originalSplitedCoin:P,tragetCoinAmount:O,isMintZeroCoin:!1}}static buildZeroValueCoin(t,e,i,n=!0){let r=ce.callMintZeroValueCoin(e,i),o;return n?o=e.makeMoveVec({objects:[r]}):o=r,{targetCoin:o,remainCoins:t,isMintZeroCoin:!0,tragetCoinAmount:"0"}}static buildCoinForAmountInterval(t,e,i,n,r=!0){let o=Ce.getCoinAssets(n,e);if(i.amountFirst===BigInt(0))return o.length>0?ce.buildCoin(t,[...e],[...o],i.amountFirst,n,r):ce.buildZeroValueCoin(e,t,n,r);let s=Ce.calculateTotalBalance(o);if(s>=i.amountFirst)return ce.buildCoin(t,[...e],[...o],i.amountFirst,n,r);if(s<i.amountSecond)throw new Y(`The amount(${s}) is Insufficient balance for ${n} , expect ${i.amountSecond} `,"InsufficientBalance");return ce.buildCoin(t,[...e],[...o],i.amountSecond,n,r)}static async buildRouterSwapTransaction(t,e,i,n,r){let o=new Un.TransactionBlock;return e.paths.length>1&&(e.partner=""),o=await this.buildRouterBasePathTx(t,e,i,n,o,r),o}static async buildRouterBasePathTx(t,e,i,n,r,o){let s=e.paths.filter(q=>q&&q.poolAddress),a=Number(s.reduce((q,K)=>q.add(K.amountIn),re).toString()),l=Number(s.reduce((q,K)=>q.add(K.amountOut),re).toString()),u=Math.round(i?Number(l.toString())*(1-e.priceSlippagePoint):Number(a.toString())*(1+e.priceSlippagePoint)),h=e.paths[0].coinType[0],y=e.paths[0].coinType[e.paths[0].coinType.length-1],v=ce.buildCoinForAmount(r,n,BigInt(i?a:u),h,!1,!0),T=v.originalSplitedCoin!==void 0,O=ce.buildCoinForAmount(r,n,0n,y,!1),P=await this.buildRouterBasePathReturnCoins(t,e,i,v,O,r),j=[],{toCoin:B,fromCoin:D}=P;if(r=P.tx,O.isMintZeroCoin?j.push({coinType:y,coin:B}):O.originalSplitedCoin!==void 0?r.mergeCoins(O.originalSplitedCoin,[B]):r.mergeCoins(O.targetCoin,[B]),T){let q=v?.originalSplitedCoin;r.mergeCoins(q,[D])}else j.push({coinType:h,coin:D});for(let q=0;q<j.length;q++)this.buildTransferCoin(t,r,j[q].coin,j[q].coinType,o);return r}static async buildRouterBasePathReturnCoins(t,e,i,n,r,o){let{clmm_pool:s,integrate:a}=t.sdkOptions,l=F(s).global_config_id,u=e.paths.filter(q=>q&&q.poolAddress),h=Number(u.reduce((q,K)=>q.add(K.amountIn),re).toString()),y=Number(u.reduce((q,K)=>q.add(K.amountOut),re).toString()),v=Math.round(i?Number(y.toString())*(1-e.priceSlippagePoint):Number(h.toString())*(1+e.priceSlippagePoint)),T=e.paths[0].coinType[0],O=e.paths[0].coinType[e.paths[0].coinType.length-1],P=n.targetCoin,j;r.isMintZeroCoin||r.originalSplitedCoin!==void 0?j=r.targetCoin:j=ce.callMintZeroValueCoin(o,O);let B=e.partner==="",D=B?_n:tl;for(let q of u)if(q.poolAddress.length===1){let K=q.a2b[0],Z={amount:Number(q.amountIn.toString()),amountLimit:v,poolCoinA:q.a2b[0]?T:O,poolCoinB:q.a2b[0]?O:T},G=B?"swap":"swap_with_partner",J=K?P:j,x=K?j:P,I=i?q.amountIn.toString():q.amountOut.toString(),A=Ai.getDefaultSqrtPriceLimit(K).toString(),E=B?[o.object(l),o.object(q.poolAddress[0]),J,x,o.pure(K),o.pure(i),o.pure(I),o.pure(A),o.pure(!1),o.object(z)]:[o.object(l),o.object(q.poolAddress[0]),o.pure(e.partner),J,x,o.pure(K),o.pure(i),o.pure(I),o.pure(A),o.pure(!1),o.object(z)],k=[Z.poolCoinA,Z.poolCoinB],S=o.moveCall({target:`${t.sdkOptions.integrate.published_at}::${D}::${G}`,typeArguments:k,arguments:E});P=K?S[0]:S[1],j=K?S[1]:S[0]}else{let K=i?q.amountIn:q.rawAmountLimit[0],Z=i?0:q.amountOut,G="";q.a2b[0]?q.a2b[1]?G="swap_ab_bc":G="swap_ab_cb":q.a2b[1]?G="swap_ba_bc":G="swap_ba_cb",B||(G=`${G}_with_partner`);let J=Ai.getDefaultSqrtPriceLimit(q.a2b[0]),x=Ai.getDefaultSqrtPriceLimit(q.a2b[1]),I=B?[o.object(l),o.object(q.poolAddress[0]),o.object(q.poolAddress[1]),P,j,o.pure(i),o.pure(K.toString()),o.pure(Z.toString()),o.pure(J.toString()),o.pure(x.toString()),o.object(z)]:[o.object(l),o.object(q.poolAddress[0]),o.object(q.poolAddress[1]),o.pure(e.partner),P,j,o.pure(i),o.pure(K.toString()),o.pure(Z.toString()),o.pure(J.toString()),o.pure(x.toString()),o.object(z)],A=[q.coinType[0],q.coinType[1],q.coinType[2]],E=o.moveCall({target:`${a.published_at}::${D}::${G}`,typeArguments:A,arguments:I});P=E[0],j=E[1]}return this.checkCoinThreshold(t,i,o,j,v,O),{fromCoin:P,toCoin:j,tx:o}}static async buildAggregatorSwapReturnCoins(t,e,i,n,r,o,s,a){if(a==null){if(t.senderAddress.length===0)throw Error("recipient and this config sdk senderAddress all not set");a=t.senderAddress}e.splitPaths.length>1&&(r="");let l,u,h=e.splitPaths.some(y=>y.basePaths.some(v=>v.label==="Deepbook"));if((!e.byAmountIn||e.splitPaths.length===1)&&!h){let y=[];for(let O of e.splitPaths){let P=[],j=[],B=[],D=[];for(let K=0;K<O.basePaths.length;K+=1){let Z=O.basePaths[K];P.push(Z.direction),j.push(Z.poolAddress),B.push(new fo.default(Z.inputAmount.toString())),K===0?D.push(Z.fromCoin,Z.toCoin):D.push(Z.toCoin)}let q={amountIn:new fo.default(O.inputAmount.toString()),amountOut:new fo.default(O.outputAmount.toString()),poolAddress:j,a2b:P,rawAmountLimit:B,isExceed:!1,coinType:D};y.push(q)}let v={paths:y,partner:r,priceSlippagePoint:o},T=await this.buildRouterBasePathReturnCoins(t,v,e.byAmountIn,i,n,s);l=T.fromCoin,u=T.toCoin,s=T.tx}else{let y=Math.round(e.outputAmount*(1-o));l=i.targetCoin,n.isMintZeroCoin||n.originalSplitedCoin!==void 0?u=n.targetCoin:u=ce.callMintZeroValueCoin(s,e.toCoin);let v=!1,T;if(h){let[O,P]=zf.createAccountCap(a,t.sdkOptions,s);s=P,T=O,v=!0}for(let O=0;O<e.splitPaths.length;O+=1){let P=e.splitPaths[O],j;for(let B=0;B<P.basePaths.length;B+=1){let D=P.basePaths[B];if(D.label==="Deepbook")if(B===0)if(P.basePaths.length===1){let q=this.buildDeepbookBasePathTx(t,D,s,T,l,u,!1);l=q.from,u=q.to}else{j=ce.callMintZeroValueCoin(s,D.toCoin);let q=this.buildDeepbookBasePathTx(t,D,s,T,l,j,!1);l=q.from,j=q.to}else{let q=this.buildDeepbookBasePathTx(t,D,s,T,j,u,!0);j=q.from,u=q.to}if(D.label==="Cetus")if(B===0)if(P.basePaths.length===1){let q=this.buildClmmBasePathTx(t,D,s,e.byAmountIn,l,u,!1,r);l=q.from,u=q.to}else{j=ce.callMintZeroValueCoin(s,D.toCoin);let q=this.buildClmmBasePathTx(t,D,s,e.byAmountIn,l,j,!1,r);l=q.from,j=q.to}else{let q=this.buildClmmBasePathTx(t,D,s,e.byAmountIn,j,u,!0,r);j=q.from,u=q.to,s.moveCall({target:`${t.sdkOptions.integrate.published_at}::${Uf}::send_coin`,typeArguments:[D.fromCoin],arguments:[j,s.pure(a)]})}}}this.checkCoinThreshold(t,e.byAmountIn,s,u,y,e.toCoin),v&&(s=zf.deleteAccountCapByObject(T,t.sdkOptions,s))}return{fromCoin:l,toCoin:u,tx:s}}static async buildAggregatorSwapTransaction(t,e,i,n,r,o){let s=new Un.TransactionBlock,a=e.byAmountIn?Math.round(e.outputAmount*(1-r)):Math.round(e.inputAmount*(1+r)),l=ce.buildCoinForAmount(s,i,e.byAmountIn?BigInt(e.inputAmount):BigInt(a),e.fromCoin,!1,!0),u=l.originalSplitedCoin!=null,h=ce.buildCoinForAmount(s,i,0n,e.toCoin,!1),y=await this.buildAggregatorSwapReturnCoins(t,e,l,h,n,r,s,o),{fromCoin:v,toCoin:T}=y;s=y.tx;let O=[];if(h.isMintZeroCoin?O.push({coinType:e.toCoin,coin:T}):h.originalSplitedCoin!=null?s.mergeCoins(h.originalSplitedCoin,[T]):s.mergeCoins(h.targetCoin,[T]),u){let P=l.originalSplitedCoin;s.mergeCoins(P,[v])}else O.push({coinType:e.fromCoin,coin:v});for(let P=0;P<O.length;P++)this.buildTransferCoin(t,s,O[P].coin,O[P].coinType,o);return s}static checkCoinThreshold(t,e,i,n,r,o){e&&i.moveCall({target:`${t.sdkOptions.integrate.published_at}::${_n}::check_coin_threshold`,typeArguments:[o],arguments:[n,i.pure(r)]})}static buildDeepbookBasePathTx(t,e,i,n,r,o,s){let a=e.direction?r:o,l=e.direction?o:r,u=[i.object(e.poolAddress),n,i.pure(e.inputAmount),i.pure(0),i.pure(e.direction),a,l,i.pure(s),i.object(z)],h=e.direction?[e.fromCoin,e.toCoin]:[e.toCoin,e.fromCoin],y=i.moveCall({target:`${t.sdkOptions.deepbook_endpoint_v2.published_at}::endpoints_v2::swap`,typeArguments:h,arguments:u});return r=e.direction?y[0]:y[1],o=e.direction?y[1]:y[0],{from:r,to:o,tx:i}}static buildClmmBasePathTx(t,e,i,n,r,o,s,a){let{clmm_pool:l,integrate:u}=t.sdkOptions,h=F(l).global_config_id,y=e.direction?r:o,v=e.direction?o:r,T=a==="",O=T?_n:tl,P=T?"swap":"swap_with_partner",j=n?e.inputAmount.toString():e.outputAmount.toString(),B=Ai.getDefaultSqrtPriceLimit(e.direction),D=T?[i.object(h),i.object(e.poolAddress),y,v,i.pure(e.direction),i.pure(n),i.pure(j),i.pure(B.toString()),i.pure(s),i.object(z)]:[i.object(h),i.object(e.poolAddress),i.pure(a),y,v,i.pure(e.direction),i.pure(n),i.pure(j),i.pure(B.toString()),i.pure(s),i.object(z)],q=e.direction?[e.fromCoin,e.toCoin]:[e.toCoin,e.fromCoin],K=i.moveCall({target:`${u.published_at}::${O}::${P}`,typeArguments:q,arguments:D});return y=K[0],v=K[1],r=e.direction?y:v,o=e.direction?v:y,{from:r,to:o,tx:i}}static buildCoinTypePair(t,e){let i=[];if(t.length===2){let n=[];n.push(t[0],t[1]),i.push(n)}else{let n=[];n.push(t[0],t[t.length-1]),i.push(n);for(let r=1;r<t.length-1;r+=1){if(e[r-1]===0)continue;let o=[];o.push(t[0],t[r],t[t.length-1]),i.push(o)}}return i}static buildTransferCoinToSender(t,e,i,n){e.moveCall({target:`${t.sdkOptions.integrate.published_at}::${Uf}::transfer_coin_to_sender`,typeArguments:[n],arguments:[i]})}static buildTransferCoin(t,e,i,n,r){r!=null?e.transferObjects([i],e.pure(r)):ce.buildTransferCoinToSender(t,e,i,n)}},oe=ce;fy(oe,"callMintZeroValueCoin",(t,e)=>t.moveCall({target:"0x2::coin::zero",typeArguments:[e]}));function Wt(t){return!(!t.startsWith("0x")||t.length!==66)}var vr=new qt.default(1e9),zf=class{static createAccountCap(t,e,i,n=!1){if(t.length===0)throw Error("this config sdk senderAddress is empty");let{deepbook:r}=e,[o]=i.moveCall({target:`${r.published_at}::${yy}::create_account`,typeArguments:[],arguments:[]});return n&&i.transferObjects([o],i.pure(t)),[o,i]}static deleteAccountCap(t,e,i){let{deepbook:n}=e,r=[i.pure(t)];return i.moveCall({target:`${n.published_at}::${il}::delete_account_cap`,typeArguments:[],arguments:r}),i}static deleteAccountCapByObject(t,e,i){let{deepbook:n}=e,r=[t];return i.moveCall({target:`${n.published_at}::${il}::delete_account_cap`,typeArguments:[],arguments:r}),i}static async getAccountCap(t){let e=await t.fullClient.getOwnedObjectsByPage(t.senderAddress,{options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0},filter:{MoveModule:{package:t.sdkOptions.deepbook.package_id,module:il}}});return e.data.length===0?"":e.data[0].data.objectId}static async getPools(t){let e=t.sdkOptions.deepbook.package_id,i=[];try{(await t.fullClient.queryEventsByPage({MoveEventType:`${e}::clob_v2::PoolCreated`})).data.forEach(r=>{let o=r.parsedJson;o&&i.push({poolID:o.pool_id,tickSize:Number(o.tick_size),lotSize:Number(o.lot_size),takerFeeRate:Number(o.taker_fee_rate),makerRebateRate:Number(o.maker_rebate_rate),baseAsset:o.base_asset.name,quoteAsset:o.quote_asset.name})})}catch(n){console.log("getPoolImmutables",n)}return i}static async getPoolAsks(t,e,i,n){let{simulationAccount:r}=t.sdkOptions,{deepbook_endpoint_v2:o}=t.sdkOptions,s=new qs.TransactionBlock,a=[],l=[i,n],u=[s.pure(e),s.pure("0"),s.pure("999999999999"),s.pure(z)];s.moveCall({target:`${o.published_at}::endpoints_v2::get_level2_book_status_ask_side`,arguments:u,typeArguments:l});let y=(await t.fullClient.devInspectTransactionBlock({transactionBlock:s,sender:r.address})).events?.filter(v=>V(v.type).name==="BookStatus");if(y.length===0)return a;for(let v=0;v<y[0].parsedJson.depths.length;v++){let T=y[0].parsedJson.price[v],O=y[0].parsedJson.depths[v],P={price:parseInt(T,10),quantity:parseInt(O,10)};a.push(P)}return a}static async getPoolBids(t,e,i,n){let{simulationAccount:r}=t.sdkOptions,{deepbook_endpoint_v2:o}=t.sdkOptions,s=new qs.TransactionBlock,a=[],l=[i,n],u=[s.pure(e),s.pure("0"),s.pure("999999999999"),s.pure(z)];s.moveCall({target:`${o.published_at}::endpoints_v2::get_level2_book_status_bid_side`,arguments:u,typeArguments:l});let y=(await t.fullClient.devInspectTransactionBlock({transactionBlock:s,sender:r.address})).events?.filter(v=>V(v.type).name==="BookStatus");if(y.length===0)return a;for(let v=0;v<y[0].parsedJson.depths.length;v++){let T=y[0].parsedJson.price[v],O=y[0].parsedJson.depths[v],P={price:parseInt(T,10),quantity:parseInt(O,10)};a.push(P)}return a}static async preSwap(t,e,i,n){let r=!1,o=re,s=new qt.default(n),a=re,l=new qt.default(n);if(i){let u=await this.getPoolBids(t,e.poolID,e.baseAsset,e.quoteAsset);u===null&&(r=!0),u=u.sort((h,y)=>y.price-h.price);for(let h=0;h<u.length;h+=1){let y=new qt.default(u[h].quantity),v=new qt.default(u[h].price),T=y.mul(new qt.default(v)).mul(new qt.default(e.takerFeeRate)).div(vr).div(vr);if(s.gt(y))s=s.sub(y),o=o.add(y.mul(v).div(vr).sub(T)),a=a.add(T);else{let O=s.mul(new qt.default(u[h].price)).div(vr),P=O.mul(new qt.default(e.takerFeeRate)).div(vr);o=o.add(O.sub(P)),s=s.sub(s),a=a.add(P)}if(s.eq(re))break}}else{let u=await this.getPoolAsks(t,e.poolID,e.baseAsset,e.quoteAsset);u===null&&(r=!0);for(let h=0;h<u.length;h+=1){let y=new qt.default(u[h].price).mul(new qt.default(u[h].quantity)).div(new qt.default(1e9)),v=y.mul(new qt.default(e.takerFeeRate)).div(vr),T=y.add(v);if(s.gt(y))o=o.add(new qt.default(u[h].quantity)),s=s.sub(T),a=a.add(v);else{let O=new qt.default(u[h].quantity).div(new qt.default(e.lotSize)),P=T.div(O),j=s.div(P);o=o.add(j.muln(e.lotSize)),s=s.sub(j.mul(P)),a=a.add(j.div(O).mul(v))}if(s.eq(re))break}}return{poolAddress:e.poolID,estimatedAmountIn:l.sub(s).toNumber(),estimatedAmountOut:o.toNumber(),estimatedFeeAmount:a,isExceed:r,amount:Number(n),aToB:i,byAmountIn:!0}}static async simulateSwap(t,e,i,n,r,o){let{deepbook_endpoint_v2:s}=t.sdkOptions,a=new qs.TransactionBlock,l=await this.getAccountCap(t),u;if(l===""){let Z=this.createAccountCap(t.senderAddress,t.sdkOptions,a),G=Z[0];a=Z[1],u=G}else u=a.pure(l);let h=await t.getOwnerCoinAssets(t.senderAddress),v=oe.buildCoinForAmount(a,h,BigInt(o),i,!1)?.targetCoin,O=oe.buildCoinForAmount(a,h,BigInt(o),n,!1)?.targetCoin,P=[i,n],j=[a.pure(e),u,a.pure(o),a.pure(0),a.pure(r),v,O,a.pure(z)];a.moveCall({target:`${s.published_at}::${wy}::swap`,arguments:j,typeArguments:P});let{simulationAccount:B}=t.sdkOptions,q=(await t.fullClient.devInspectTransactionBlock({transactionBlock:a,sender:B.address})).events?.filter(Z=>V(Z.type).name==="DeepbookSwapEvent");if(q.length===0)return null;let K=q[0].parsedJson;return{poolAddress:K.pool,estimatedAmountIn:K.amount_in,estimatedAmountOut:K.amount_out,aToB:K.atob}}},tw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPositionList(t,e="all"){let i={data:[],hasNextPage:!0},n=await this._sdk.fullClient.getDynamicFieldsByPage(t,e);i.hasNextPage=n.hasNextPage,i.nextCursor=n.nextCursor;let r=n.data.map(s=>{if(s.error!=null||s.data?.content?.dataType!=="moveObject")throw new Y(`when getPositionList get position objects error: ${s.error}, please check the rpc, contracts address config and position id.`,"InvalidConfig");return s.name.value}),o=await this._sdk.Position.getSipmlePositionList(r);return i.data=o,i}async getPoolImmutables(t=[],e=0,i=100,n=!1){let{package_id:r}=this._sdk.sdkOptions.clmm_pool,o=`${r}_getInitPoolEvent`,s=this.getCache(o,n),a=[],l=[];if(s!==void 0&&a.push(...s),a.length===0)try{(await this._sdk.fullClient.queryEventsByPage({MoveEventType:`${r}::factory::CreatePoolEvent`})).data.forEach(y=>{let v=y.parsedJson;v&&a.push({poolAddress:v.pool_id,tickSpacing:v.tick_spacing,coinTypeA:V(v.coin_type_a).full_address,coinTypeB:V(v.coin_type_b).full_address})}),this.updateCache(o,a,X)}catch(h){console.log("getPoolImmutables",h)}let u=t.length>0;for(let h=0;h<a.length;h+=1){let y=a[h];u&&!t.includes(y.poolAddress)||!u&&(h<e||h>=e+i)||l.push(y)}return l}async getPools(t=[],e=0,i=100){let n=[],r=[];t.length>0?r=[...t]:(await this.getPoolImmutables([],e,i,!1)).forEach(a=>r.push(a.poolAddress));let o=await this._sdk.fullClient.batchGetObjects(r,{showContent:!0,showType:!0});for(let s of o){if(s.error!=null||s.data?.content?.dataType!=="moveObject")throw new Y(`getPools error code: ${s.error?.code??"unknown error"}, please check config and object ids`,"InvalidPoolObject");let a=nl(s);n.push(a);let l=`${a.poolAddress}_getPoolObject`;this.updateCache(l,a,X)}return n}async getPoolImmutablesWithPage(t="all",e=!1){let{package_id:i}=this._sdk.sdkOptions.clmm_pool,n=[],r={data:[],hasNextPage:!1},o=t==="all",s=`${i}_getPoolImmutables`;if(o){let a=this.getCache(s,e);a&&n.push(...a)}if(n.length===0)try{let a=`${i}::factory::CreatePoolEvent`,l=await this._sdk.fullClient.queryEventsByPage({MoveEventType:a},t);r.hasNextPage=l.hasNextPage,r.nextCursor=l.nextCursor,l.data.forEach(u=>{let h=u.parsedJson;if(h){let y={poolAddress:h.pool_id,tickSpacing:h.tick_spacing,coinTypeA:V(h.coin_type_a).full_address,coinTypeB:V(h.coin_type_b).full_address};n.push(y)}})}catch(a){console.log("getPoolImmutables",a)}return r.data=n,o&&this.updateCache(`${i}_getPoolImmutables`,n,X),r}async getPoolsWithPage(t=[]){let e=[],i=[];t.length>0?i=[...t]:(await this.getPoolImmutablesWithPage()).data.forEach(o=>i.push(o.poolAddress));let n=await this._sdk.fullClient.batchGetObjects(i,{showContent:!0,showType:!0});for(let r of n){if(r.error!=null||r.data?.content?.dataType!=="moveObject")throw new Y(`getPoolWithPages error code: ${r.error?.code??"unknown error"}, please check config and object ids`,"InvalidPoolObject");let o=nl(r);e.push(o);let s=`${o.poolAddress}_getPoolObject`;this.updateCache(s,o,X)}return e}async getPool(t,e=!0){let i=`${t}_getPoolObject`,n=this.getCache(i,e);if(n!==void 0)return n;let r=await this._sdk.fullClient.getObject({id:t,options:{showType:!0,showContent:!0}});if(r.error!=null||r.data?.content?.dataType!=="moveObject")throw new Y(`getPool error code: ${r.error?.code??"unknown error"}, please check config and object id`,"InvalidPoolObject");let o=nl(r);return this.updateCache(i,o),o}async creatPoolsTransactionPayload(t){for(let i of t)if(Us((0,uo.normalizeSuiAddress)(i.coinTypeA),(0,uo.normalizeSuiAddress)(i.coinTypeB))){let n=i.coinTypeB;i.coinTypeB=i.coinTypeA,i.coinTypeA=n}return await this.creatPool(t)}async creatPoolTransactionPayload(t){if(Us((0,uo.normalizeSuiAddress)(t.coinTypeA),(0,uo.normalizeSuiAddress)(t.coinTypeB))){let e=t.coinTypeB;t.coinTypeB=t.coinTypeA,t.coinTypeA=e}return"fix_amount_a"in t?await this.creatPoolAndAddLiquidity(t):await this.creatPool([t])}async getClmmConfigs(t=!1){let{package_id:e}=this._sdk.sdkOptions.clmm_pool,i=`${e}_getInitEvent`,n=this.getCache(i,t);if(n!==void 0)return n;let r=await this._sdk.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=zn(r),s=(await this._sdk.fullClient.queryEventsByPage({Transaction:o})).data,a={pools_id:"",global_config_id:"",global_vault_id:"",admin_cap_id:""};return s.length>0&&(s.forEach(l=>{let u=l.parsedJson;if(l.type)switch(V(l.type).full_address){case`${e}::config::InitConfigEvent`:a.global_config_id=u.global_config_id,a.admin_cap_id=u.admin_cap_id;break;case`${e}::factory::InitFactoryEvent`:a.pools_id=u.pools_id;break;case`${e}::rewarder::RewarderInitEvent`:a.global_vault_id=u.global_vault_id;break;case`${e}::partner::InitPartnerEvent`:a.partners_id=u.partners_id;break;default:break}}),this.updateCache(i,a,X)),a}async getSuiTransactionResponse(t,e=!1){let i=`${t}_getSuiTransactionResponse`,n=this.getCache(i,e);if(n!==void 0)return n;let r;try{r=await this._sdk.fullClient.getTransactionBlock({digest:t,options:{showEvents:!0,showEffects:!0,showBalanceChanges:!0,showInput:!0,showObjectChanges:!0}})}catch{r=await this._sdk.fullClient.getTransactionBlock({digest:t,options:{showEvents:!0,showEffects:!0}})}return this.updateCache(i,r,X),r}async creatPool(t){let e=new kr.TransactionBlock,{integrate:i,clmm_pool:n}=this.sdk.sdkOptions,r=F(n),o=r.global_config_id,s=r.pools_id;return t.forEach(a=>{let l=[e.object(o),e.object(s),e.pure(a.tick_spacing.toString()),e.pure(a.initialize_sqrt_price),e.pure(a.uri),e.object(z)];e.moveCall({target:`${i.published_at}::${Tr}::create_pool`,typeArguments:[a.coinTypeA,a.coinTypeB],arguments:l})}),e}async creatPoolAndAddLiquidity(t){if(!Wt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let e=new kr.TransactionBlock,{integrate:i,clmm_pool:n}=this.sdk.sdkOptions,r=F(n),o=r.global_config_id,s=r.pools_id,a=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress),l=oe.buildAddLiquidityFixTokenCoinInput(e,!t.fix_amount_a,t.amount_a,t.slippage,t.coinTypeA,a,!1),u=oe.buildAddLiquidityFixTokenCoinInput(e,t.fix_amount_a,t.amount_b,t.slippage,t.coinTypeB,a,!1),h=[e.pure(o),e.pure(s),e.pure(t.tick_spacing.toString()),e.pure(t.initialize_sqrt_price),e.pure(t.uri),l.targetCoin,u.targetCoin,e.pure(Pt(BigInt(t.tick_lower)).toString()),e.pure(Pt(BigInt(t.tick_upper)).toString()),e.pure(t.amount_a),e.pure(t.amount_b),e.pure(t.fix_amount_a),e.pure(z)];return e.moveCall({target:`${i.published_at}::${Xi}::create_pool_with_liquidity`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:h}),e}async fetchTicks(t){let e=[],i=[];for(;;){let r=await this.getTicks({pool_id:t.pool_id,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,start:i,limit:512});if(e=[...e,...r],r.length<512)break;i=[r[r.length-1].index]}return e}async getTicks(t){let{integrate:e,simulationAccount:i}=this.sdk.sdkOptions,n=[],r=[t.coinTypeA,t.coinTypeB],o=new kr.TransactionBlock,s=[o.pure(t.pool_id),o.pure(t.start),o.pure(t.limit.toString())];if(o.moveCall({target:`${e.published_at}::${Jt}::fetch_ticks`,arguments:s,typeArguments:r}),!Wt(i.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let a=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:o,sender:i.address});if(a.error!=null)throw new Y(`getTicks error code: ${a.error??"unknown error"}, please check config and tick object ids`,"InvalidTickObjectId");return a.events?.forEach(l=>{V(l.type).name==="FetchTicksResultEvent"&&l.parsedJson.ticks.forEach(u=>{n.push(Xy(u))})}),n}async fetchPositionRewardList(t){let{integrate:e,simulationAccount:i}=this.sdk.sdkOptions,n=[],r=[],o=512;for(;;){let s=[t.coinTypeA,t.coinTypeB],a=new kr.TransactionBlock,l=[a.object(t.pool_id),a.pure(r,"u64"),a.pure(o.toString(),"u64")];if(a.moveCall({target:`${e.published_at}::${Jt}::fetch_positions`,arguments:l,typeArguments:s}),!Wt(i.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let u=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:a,sender:i.address});if(u.error!=null)throw new Y(`fetch position reward error code: ${u.error??"unknown error"}, please check config and tick object ids`,"InvalidPositionRewardObject");let h=[];if(u?.events?.forEach(y=>{V(y.type).name==="FetchPositionsEvent"&&y.parsedJson.positions.forEach(v=>{let T=rh(v);h.push(T)})}),n.push(...h),h.length<o)break;r=[h[h.length-1].pos_object_id]}return n}async fetchTicksByRpc(t){let e=[],i=null,n=512;for(;;){let r=[],o=await this.sdk.fullClient.getDynamicFields({parentId:t,cursor:i,limit:n});if(i=o.nextCursor,o.data.forEach(s=>{V(s.objectType).module==="skip_list"&&r.push(s.objectId)}),e=[...e,...await this.getTicksByRpc(r)],i===null||o.data.length<n)break}return e}async getTicksByRpc(t){let e=[],i=await this.sdk.fullClient.batchGetObjects(t,{showContent:!0,showType:!0});for(let n of i){if(n.error!=null||n.data?.content?.dataType!=="moveObject")throw new Y(`getTicksByRpc error code: ${n.error?.code??"unknown error"}, please check config and tick object ids`,"InvalidTickObjectId");let r=rl(n);r!=null&&e.push(r)}return e}async getTickDataByIndex(t,e){let i={type:"u64",value:Pt(BigInt(Oy(e).toString())).toString()},n=await this.sdk.fullClient.getDynamicFieldObject({parentId:t,name:i});if(n.error!=null||n.data?.content?.dataType!=="moveObject")throw new Y(`get tick by index: ${e} error: ${n.error}`,"InvalidTickIndex");return rl(n)}async getTickDataByObjectId(t){let e=await this.sdk.fullClient.getObject({id:t,options:{showContent:!0}});if(e.error!=null||e.data?.content?.dataType!=="moveObject")throw new Y(`getTicksByRpc error code: ${e.error?.code??"unknown error"}, please check config and tick object ids`,"InvalidTickObjectId");return rl(e)}async getPartnerRefFeeAmount(t){let e=await this._sdk.fullClient.batchGetObjects([t],{showOwner:!0,showContent:!0,showDisplay:!0,showType:!0});if(e[0].error!=null||e[0].data?.content?.dataType!=="moveObject")throw new Y(`get partner by object id: ${t} error: ${e[0].error}`,"NotFoundPartnerObject");let i=e[0].data.content.fields.balances,n=await this._sdk.fullClient.getDynamicFieldsByPage(i.fields.id.id),r=[];n.data.forEach(a=>{if(a.error!=null||a.data?.content?.dataType!=="moveObject")throw new Y(`when getPartnerRefFeeAmount get partner object error: ${a.error}, please check the rpc, contracts address config and position id.`,"InvalidConfig");r.push(a.objectId)});let o=[];return(await this._sdk.fullClient.batchGetObjects(r,{showOwner:!0,showContent:!0,showDisplay:!0,showType:!0})).forEach(a=>{if(a.error!=null||a.data?.content?.dataType!=="moveObject")throw new Y(`get coin by object id: ${a.data.objectId} error: ${a.error}`,"InvalidParnterRefFeeFields");let l={coinAddress:a.data.content.fields.name,coinObjectId:a.data.objectId,balance:BigInt(a.data.content.fields.value)};o.push(l)}),o}async claimPartnerRefFeePayload(t,e,i){let n=new kr.TransactionBlock,{clmm_pool:r}=this.sdk.sdkOptions,{global_config_id:o}=F(r),s=[i],a=[n.object(o),n.object(t),n.object(e)];return n.moveCall({target:`${r.published_at}::${_y}::claim_ref_fee`,arguments:a,typeArguments:s}),n}updateCache(t,e,i=He){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t],n=i?.isValid();if(!e&&n)return i.value;n||delete this._cache[t]}},iw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}buildPositionType(){return`${this._sdk.sdkOptions.clmm_pool.package_id}::position::Position`}async getPositionList(t,e=[]){let i=[],n=await this._sdk.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0},filter:{Package:this._sdk.sdkOptions.clmm_pool.package_id}}),r=e.length>0;for(let o of n.data)if(V(o.data.type).full_address===this.buildPositionType()){let a=Ji(o),l=`${a.pos_object_id}_getPositionList`;this.updateCache(l,a,X),r?e.includes(a.pool)&&i.push(a):i.push(a)}return i}async getPosition(t,e,i=!0){let n=await this.getSimplePosition(e);return i&&(n=await this.updatePositionRewarders(t,n)),n}async getPositionById(t,e=!0){let i=await this.getSimplePosition(t);if(e){let n=await this._sdk.Pool.getPool(i.pool,!1);return await this.updatePositionRewarders(n.position_manager.positions_handle,i)}return i}async getSimplePosition(t){let e=`${t}_getPositionList`,i=this.getSimplePositionByCache(t);if(i===void 0){let n=await this.sdk.fullClient.getObject({id:t,options:{showContent:!0,showType:!0,showDisplay:!0,showOwner:!0}});i=Ji(n),this.updateCache(e,i,X)}return i}getSimplePositionByCache(t){let e=`${t}_getPositionList`;return this.getCache(e)}async getSipmlePositionList(t){let e=[],i=[];return t.forEach(n=>{let r=this.getSimplePositionByCache(n);r?e.push(r):i.push(n)}),i.length>0&&(await this._sdk.fullClient.batchGetObjects(i,{showOwner:!0,showContent:!0,showDisplay:!0,showType:!0})).forEach(r=>{let o=Ji(r);e.push(o);let s=`${o.pos_object_id}_getPositionList`;this.updateCache(s,o,X)}),e}async updatePositionRewarders(t,e){let i=await this.getPositionRewarders(t,e.pos_object_id);return{...e,...i}}async getPositionRewarders(t,e){try{let i=await this._sdk.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),r=te(i.data).value.fields.value;return rh(r)}catch(i){console.log(i);return}}async fetchPosFeeAmount(t){let{clmm_pool:e,integrate:i,simulationAccount:n}=this.sdk.sdkOptions,r=new Kn.TransactionBlock;for(let l of t){let u=[l.coinTypeA,l.coinTypeB],h=[r.object(F(e).global_config_id),r.object(l.poolAddress),r.pure(l.positionId)];r.moveCall({target:`${i.published_at}::${Jt}::fetch_position_fees`,arguments:h,typeArguments:u})}if(!Wt(n.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let o=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:r,sender:n.address});if(o.error!=null)throw new Y(`fetch position fee error code: ${o.error??"unknown error"}, please check config and postion and pool object ids`,"InvalidPoolObject");let s=o.events?.filter(l=>V(l.type).name==="FetchPositionFeesEvent");if(s.length===0)return[];let a=[];for(let l=0;l<s.length;l+=1){let{parsedJson:u}=s[l],h={feeOwedA:new al.default(u.fee_owned_a),feeOwedB:new al.default(u.fee_owned_b),position_id:u.position_id};a.push(h)}return a}async batchFetchPositionFees(t){let e=[];for(let n of t){let r=await this._sdk.Position.getPositionById(n,!1),o=await this._sdk.Pool.getPool(r.pool,!1);e.push({poolAddress:o.poolAddress,positionId:r.pos_object_id,coinTypeA:o.coinTypeA,coinTypeB:o.coinTypeB})}let i={};if(e.length>0){let n=await this.fetchPosFeeAmount(e);for(let r of n)i[r.position_id]=r;return i}return i}async createAddLiquidityFixTokenPayload(t,e){if(!Wt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let i=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);if(e){let{isAdjustCoinA:n,isAdjustCoinB:r}=Ks(t);if(t=t,t.fix_amount_a&&n||!t.fix_amount_a&&r)return await oe.buildAddLiquidityFixTokenForGas(this._sdk,i,t,e)}return oe.buildAddLiquidityFixToken(this._sdk,i,t)}async createAddLiquidityPayload(t){let{integrate:e,clmm_pool:i}=this._sdk.sdkOptions;if(!Wt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let n=Pt(BigInt(t.tick_lower)).toString(),r=Pt(BigInt(t.tick_upper)).toString(),o=[t.coinTypeA,t.coinTypeB],s=new Kn.TransactionBlock,a=!(0,oh.isValidSuiObjectId)(t.pos_id),l=BigInt(t.max_amount_a),u=BigInt(t.max_amount_b),h=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress),y=oe.buildCoinForAmount(s,h,l,t.coinTypeA,!1),v=oe.buildCoinForAmount(s,h,u,t.coinTypeB,!1);return a?s.moveCall({target:`${e.published_at}::${Xi}::open_position_with_liquidity`,typeArguments:o,arguments:[s.object(F(i).global_config_id),s.object(t.pool_id),s.pure(n),s.pure(r),y.targetCoin,v.targetCoin,s.pure(t.max_amount_a),s.pure(t.max_amount_b),s.pure(t.delta_liquidity),s.object(z)]}):(s=oe.createCollectRewarderAndFeeParams(this._sdk,s,t,h,y.remainCoins,v.remainCoins),s.moveCall({target:`${e.published_at}::${Xi}::add_liquidity`,typeArguments:o,arguments:[s.object(F(i).global_config_id),s.object(t.pool_id),s.object(t.pos_id),y.targetCoin,v.targetCoin,s.pure(t.max_amount_a),s.pure(t.max_amount_b),s.pure(t.delta_liquidity),s.object(z)]})),s}async removeLiquidityTransactionPayload(t){if(!Wt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let{clmm_pool:e,integrate:i}=this.sdk.sdkOptions,n="remove_liquidity",r=new Kn.TransactionBlock,o=[t.coinTypeA,t.coinTypeB],s=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);r=oe.createCollectRewarderAndFeeParams(this._sdk,r,t,s);let a=[r.object(F(e).global_config_id),r.object(t.pool_id),r.object(t.pos_id),r.pure(t.delta_liquidity),r.pure(t.min_amount_a),r.pure(t.min_amount_b),r.object(z)];return r.moveCall({target:`${i.published_at}::${Tr}::${n}`,typeArguments:o,arguments:a}),r}async closePositionTransactionPayload(t){if(!Wt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let{clmm_pool:e,integrate:i}=this.sdk.sdkOptions,n=new Kn.TransactionBlock,r=[t.coinTypeA,t.coinTypeB],o=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);return n=oe.createCollectRewarderAndFeeParams(this._sdk,n,t,o),n.moveCall({target:`${i.published_at}::${Tr}::close_position`,typeArguments:r,arguments:[n.object(F(e).global_config_id),n.object(t.pool_id),n.object(t.pos_id),n.pure(t.min_amount_a),n.pure(t.min_amount_b),n.object(z)]}),n}openPositionTransactionPayload(t){let{clmm_pool:e,integrate:i}=this.sdk.sdkOptions,n=new Kn.TransactionBlock,r=[t.coinTypeA,t.coinTypeB],o=Pt(BigInt(t.tick_lower)).toString(),s=Pt(BigInt(t.tick_upper)).toString(),a=[n.pure(F(e).global_config_id),n.pure(t.pool_id),n.pure(o),n.pure(s)];return n.moveCall({target:`${i.published_at}::${Tr}::open_position`,typeArguments:r,arguments:a}),n}async collectFeeTransactionPayload(t){if(!Wt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let e=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress,null,!0),i=new Kn.TransactionBlock,n=oe.buildCoinForAmount(i,e,BigInt(0),t.coinTypeA,!1),r=oe.buildCoinForAmount(i,e,BigInt(0),t.coinTypeB,!1);return this.createCollectFeePaylod(t,i,n.targetCoin,r.targetCoin),i}createCollectFeePaylod(t,e,i,n){let{clmm_pool:r,integrate:o}=this.sdk.sdkOptions,s=[t.coinTypeA,t.coinTypeB],a=[e.object(F(r).global_config_id),e.object(t.pool_id),e.object(t.pos_id),i,n];return e.moveCall({target:`${o.published_at}::${Xi}::collect_fee`,typeArguments:s,arguments:a}),e}async calculateFee(t){let e=await this.collectFeeTransactionPayload(t);if(!Wt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let i=await this._sdk.fullClient.devInspectTransactionBlock({transactionBlock:e,sender:this._sdk.senderAddress});for(let n of i.events)if(V(n.type).name==="CollectFeeEvent"){let r=n.parsedJson;return{feeOwedA:r.amount_a,feeOwedB:r.amount_b}}return{feeOwedA:"0",feeOwedB:"0"}}updateCache(t,e,i=He){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t],n=i?.isValid();if(!e&&n)return i.value;n||delete this._cache[t]}},nw=class{_sdk;growthGlobal;constructor(t){this._sdk=t,this.growthGlobal=[re,re,re]}get sdk(){return this._sdk}async emissionsEveryDay(t){let i=(await this.sdk.Pool.getPool(t)).rewarder_infos;if(!i)return null;let n=[];for(let r of i){let o=Ae.fromX64(new Fe.default(r.emissions_per_second));n.push({emissions:Math.floor(o.toNumber()*60*60*24),coin_address:r.coinAddress})}return n}async updatePoolRewarder(t,e){let i=await this.sdk.Pool.getPool(t),n=i.rewarder_last_updated_time;if(i.rewarder_last_updated_time=e.toString(),Number(i.liquidity)===0||e.eq(new Fe.default(n)))return i;let r=e.div(new Fe.default(1e3)).sub(new Fe.default(n)).add(new Fe.default(15)),o=i.rewarder_infos;for(let s=0;s<o.length;s+=1){let a=o[s],l=Ae.checkMulDivFloor(r,new Fe.default(a.emissions_per_second),new Fe.default(i.liquidity),128);this.growthGlobal[s]=new Fe.default(a.growth_global).add(new Fe.default(l))}return i}async posRewardersAmount(t,e,i){let n=Date.parse(new Date().toString()),r=await this.updatePoolRewarder(t,new Fe.default(n)),o=await this.sdk.Position.getPositionRewarders(e,i);if(o===void 0)return[];let s=r.ticks_handle,a=await this.sdk.Pool.getTickDataByIndex(s,o.tick_lower_index),l=await this.sdk.Pool.getTickDataByIndex(s,o.tick_upper_index);return this.posRewardersAmountInternal(r,o,a,l)}async poolRewardersAmount(t,e){let i=Date.parse(new Date().toString()),n=await this.updatePoolRewarder(e,new Fe.default(i)),r=await this.sdk.Position.getPositionList(t,[e]),o=await this.getPoolLowerAndUpperTicks(n.ticks_handle,r),s=[re,re,re];for(let a=0;a<r.length;a+=1){let l=await this.posRewardersAmountInternal(n,r[a],o[0][a],o[1][a]);for(let u=0;u<3;u+=1)s[u]=s[u].add(l[u].amount_owed)}return s}posRewardersAmountInternal(t,e,i,n){let r=e.tick_lower_index,o=e.tick_upper_index,s=Jy(t,i,n,r,o,this.growthGlobal),a=[],l=[];if(s.length>0){let u=Ae.subUnderflowU128(s[0],new Fe.default(e.reward_growth_inside_0));u.gt(new Fe.default("3402823669209384634633745948738404"))&&(u=qi);let h=Ae.checkMulShiftRight(new Fe.default(e.liquidity),u,64,128);a.push(s[0]),l.push({amount_owed:new Fe.default(e.reward_amount_owed_0).add(h),coin_address:t.rewarder_infos[0].coinAddress})}if(s.length>1){let u=Ae.subUnderflowU128(s[1],new Fe.default(e.reward_growth_inside_1));u.gt(new Fe.default("3402823669209384634633745948738404"))&&(u=qi);let h=Ae.checkMulShiftRight(new Fe.default(e.liquidity),u,64,128);a.push(s[1]),l.push({amount_owed:new Fe.default(e.reward_amount_owed_1).add(h),coin_address:t.rewarder_infos[1].coinAddress})}if(s.length>2){let u=Ae.subUnderflowU128(s[2],new Fe.default(e.reward_growth_inside_2));u.gt(new Fe.default("3402823669209384634633745948738404"))&&(u=qi);let h=Ae.checkMulShiftRight(new Fe.default(e.liquidity),u,64,128);a.push(s[2]),l.push({amount_owed:new Fe.default(e.reward_amount_owed_2).add(h),coin_address:t.rewarder_infos[2].coinAddress})}return l}async batchFetchPositionRewarders(t){let e=[];for(let n of t){let r=await this._sdk.Position.getPositionById(n,!1),o=await this._sdk.Pool.getPool(r.pool,!1);e.push({poolAddress:o.poolAddress,positionId:r.pos_object_id,coinTypeA:o.coinTypeA,coinTypeB:o.coinTypeB,rewarderInfo:o.rewarder_infos})}let i={};if(e.length>0){let n=await this.fetchPosRewardersAmount(e);for(let r of n)i[r.positionId]=r.rewarderAmountOwed;return i}return i}async fetchPositionRewarders(t,e){let i={poolAddress:t.poolAddress,positionId:e,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,rewarderInfo:t.rewarder_infos};return(await this.fetchPosRewardersAmount([i]))[0].rewarderAmountOwed}async batchFetchPositionFees(t){let e=[];for(let n of t){let r=await this._sdk.Position.getPositionById(n,!1),o=await this._sdk.Pool.getPool(r.pool,!1);e.push({poolAddress:o.poolAddress,positionId:r.pos_object_id,coinTypeA:o.coinTypeA,coinTypeB:o.coinTypeB})}let i={};if(e.length>0){let n=await this.fetchPosFeeAmount(e);for(let r of n)i[r.position_id]=r;return i}return i}async fetchPosFeeAmount(t){let{clmm_pool:e,integrate:i,simulationAccount:n}=this.sdk.sdkOptions,r=new Ls.TransactionBlock;for(let l of t){let u=[l.coinTypeA,l.coinTypeB],h=[r.object(F(e).global_config_id),r.object(l.poolAddress),r.pure(l.positionId)];r.moveCall({target:`${i.published_at}::${Jt}::fetch_position_fees`,arguments:h,typeArguments:u})}let s=(await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:r,sender:n.address})).events?.filter(l=>V(l.type).name==="FetchPositionFeesEvent");if(s.length===0)return[];let a=[];for(let l=0;l<s.length;l+=1){let{parsedJson:u}=s[l],h={feeOwedA:new Fe.default(u.fee_owned_a),feeOwedB:new Fe.default(u.fee_owned_b),position_id:u.position_id};a.push(h)}return a}async fetchPosRewardersAmount(t){let{clmm_pool:e,integrate:i,simulationAccount:n}=this.sdk.sdkOptions,r=new Ls.TransactionBlock;for(let l of t){let u=[l.coinTypeA,l.coinTypeB],h=[r.object(F(e).global_config_id),r.object(l.poolAddress),r.pure(l.positionId),r.object(z)];r.moveCall({target:`${i.published_at}::${Jt}::fetch_position_rewards`,arguments:h,typeArguments:u})}if(!Wt(n.address))throw new Y(`this config simulationAccount: ${n.address} is not set right`,"InvalidSimulateAccount");let o=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:r,sender:n.address});if(o.error!=null)throw new Y(`fetch position rewards error code: ${o.error??"unknown error"}, please check config and params`,"InvalidConfig");let s=o.events?.filter(l=>V(l.type).name==="FetchPositionRewardsEvent");if(s.length===0)return[];if(s.length!==t.length)throw new Y("valueData.length !== params.pools.length");let a=[];for(let l=0;l<s.length;l+=1){let u={poolAddress:t[l].poolAddress,positionId:t[l].positionId,rewarderAmountOwed:[]};for(let h=0;h<t[l].rewarderInfo.length;h+=1)u.rewarderAmountOwed.push({amount_owed:new Fe.default(s[l].parsedJson.data[h]),coin_address:t[l].rewarderInfo[h].coinAddress});a.push(u)}return a}async fetchPoolRewardersAmount(t,e){let i=await this.sdk.Pool.getPool(e),n=await this.sdk.Position.getPositionList(t,[e]),r=[];for(let a of n)r.push({poolAddress:i.poolAddress,positionId:a.pos_object_id,rewarderInfo:i.rewarder_infos,coinTypeA:i.coinTypeA,coinTypeB:i.coinTypeB});let o=await this.fetchPosRewardersAmount(r),s=[re,re,re];if(o!=null)for(let a of o)for(let l=0;l<a.rewarderAmountOwed.length;l+=1)s[l]=s[l].add(a.rewarderAmountOwed[l].amount_owed);return s}async getPoolLowerAndUpperTicks(t,e){let i=[],n=[];for(let r of e){let o=await this.sdk.Pool.getTickDataByIndex(t,r.tick_lower_index),s=await this.sdk.Pool.getTickDataByIndex(t,r.tick_upper_index);i.push(o),n.push(s)}return[i,n]}async collectRewarderTransactionPayload(t){if(!Wt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let e=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress,null),i=new Ls.TransactionBlock;return i=oe.createCollectRewarderAndFeeParams(this._sdk,i,t,e),i}createCollectRewarderPaylod(t,e,i){let{clmm_pool:n,integrate:r}=this.sdk.sdkOptions,o=F(n),s=[t.coinTypeA,t.coinTypeB];return t.rewarder_coin_types.forEach((a,l)=>{e&&e.moveCall({target:`${r.published_at}::${Xi}::collect_reward`,typeArguments:[...s,a],arguments:[e.object(o.global_config_id),e.object(t.pool_id),e.object(t.pos_id),e.object(o.global_vault_id),i[l],e.object(z)]})}),e}};function Rs(t,e){return{pair:`${t}-${e}`,reversePair:`${e}-${t}`}}var rw=class{graph;pathProviders;coinProviders;_coinAddressMap;poolAddressMap;_sdk;constructor(t){this.pathProviders=[],this.coinProviders={coins:[]},this.graph=new Wn.Graph(!1),this._coinAddressMap=new Map,this.poolAddressMap=new Map,this._sdk=t,this.getPoolAddressMapAndDirection=this.getPoolAddressMapAndDirection.bind(this),this.setCoinList=this.setCoinList.bind(this),this.loadGraph=this.loadGraph.bind(this),this.addCoinProvider=this.addCoinProvider.bind(this),this.addPathProvider=this.addPathProvider.bind(this),this.preRouterSwapA2B2C=this.preRouterSwapA2B2C.bind(this),this.price=this.price.bind(this),this.getPoolWithTVL=this.getPoolWithTVL.bind(this)}get sdk(){return this._sdk}getPoolAddressMapAndDirection(t,e){let{pair:i,reversePair:n}=Rs(t,e),r=this.poolAddressMap.get(i);if(r!=null)return{addressMap:r,direction:!0};if(r=this.poolAddressMap.get(n),r!=null)return{addressMap:r,direction:!1}}setCoinList(){this.coinProviders.coins.forEach(t=>{this._coinAddressMap.set(t.address,t)})}loadGraph(t,e){this.addCoinProvider(t),this.addPathProvider(e),this.setCoinList(),this.pathProviders.forEach(i=>{let{paths:n}=i;n.forEach(r=>{let o=this.graph.getVertexByKey(r.base)??new Wn.GraphVertex(r.base),s=this.graph.getVertexByKey(r.quote)??new Wn.GraphVertex(r.quote);this.graph.addEdge(new Wn.GraphEdge(o,s));let a=this._coinAddressMap.get(r.base),l=this._coinAddressMap.get(r.quote);if(a!=null&&l!=null){let u=Rs(r.base,r.quote).pair;this.poolAddressMap.set(u,r.addressMap)}})})}addPathProvider(t){for(let e=0;e<t.paths.length;e+=1){let{base:i,quote:n}=t.paths[e];i.localeCompare(n)<0&&(t.paths[e].base=n,t.paths[e].quote=i),i==="0x2::sui::SUI"&&(t.paths[e].base=n,t.paths[e].quote=i),n==="0x2::sui::SUI"&&(t.paths[e].base=i,t.paths[e].quote=n)}return this.pathProviders.push(t),this}addCoinProvider(t){return this.coinProviders=t,this}tokenInfo(t){return this._coinAddressMap.get(t)}getFeeRate(t,e,i){let n=Rs(t,e).pair,r=this.poolAddressMap.get(n);if(r!=null){for(let[a,l]of r.entries())if(l===i)return a*100}let o=Rs(t,e).reversePair,s=this.poolAddressMap.get(o);if(s!=null){for(let[a,l]of s.entries())if(l===i)return a*100}return 0}async price(t,e,i,n,r,o,s){let a=this.tokenInfo(t),l=this.tokenInfo(e);if(a===void 0||l===void 0)throw new Y("From/To coin is undefined","InvalidCoin");let u=this.graph.getVertexByKey(a.address),h=this.graph.getVertexByKey(l.address),y=this.graph.findAllPath(u,h),v=Array.from(y);if(v.length===0)throw new Y("No find valid path in coin graph","NotFoundPath");let T=[];for(let A=0;A<v.length;A+=1){let E=v[A];if(E.length>3)continue;let k=[],S=[],c=[],d=[];for(let f=0;f<E.length-1;f+=1){let b=E[f].value.toString(),p=E[f+1].value.toString(),g=this.getPoolAddressMapAndDirection(b,p),w=g?.addressMap,_=g?.direction;w!=null&&_!=null&&(S.push(_),k.push(b),k.push(p),w.forEach(m=>{f===0?c.push(m):d.push(m)}))}for(let f of c)if(d.length>0)for(let b of d){let p={stepNums:2,poolAB:f,poolBC:b,a2b:S[0],b2c:S[1],amount:i,byAmountIn:n,coinTypeA:k[0],coinTypeB:k[1],coinTypeC:k[3]};T.push(p)}else{let b={stepNums:1,poolAB:f,poolBC:void 0,a2b:S[0],b2c:void 0,amount:i,byAmountIn:n,coinTypeA:k[0],coinTypeB:k[1],coinTypeC:void 0};T.push(b)}}let O=T.filter(A=>A.stepNums===1),P=T.filter(A=>A.stepNums!==1),j=[];try{j=await this.getPoolWithTVL()}catch{j=[]}if(j.length>0){let A=new Map(j.map(E=>[E.poolAddress,E]));P.sort((E,k)=>{let S=0,c=0;if(A.has(E.poolAB)&&A.has(E.poolBC)){let d=A.get(E.poolAB),f=A.get(E.poolBC);S=Math.min(d.tvl,f.tvl)}if(A.has(k.poolAB)&&A.has(k.poolBC)){let d=A.get(k.poolAB),f=A.get(k.poolBC);c=Math.min(d.tvl,f.tvl)}return c-S})}if(T=[...O,...P],T.length===0){if(s!=null){let A=await this.sdk.Swap.preSwapWithMultiPool(s),E={amountIn:new ni.default(A.estimatedAmountIn),amountOut:new ni.default(A.estimatedAmountOut),poolAddress:[A.poolAddress],a2b:[A.aToB],rawAmountLimit:n?[A.estimatedAmountOut]:[A.estimatedAmountIn],isExceed:A.isExceed,coinType:[t,e]},k={paths:[E],partner:o,priceSlippagePoint:r};return{amountIn:new ni.default(A.estimatedAmountIn),amountOut:new ni.default(A.estimatedAmountOut),paths:[E],a2b:A.aToB,b2c:void 0,byAmountIn:n,isExceed:A.isExceed,targetSqrtPrice:[A.estimatedEndSqrtPrice],currentSqrtPrice:[A.estimatedStartSqrtPrice],coinTypeA:t,coinTypeB:e,coinTypeC:void 0,createTxParams:k}}throw new Y("No parameters available for service downgrade","NoDowngradeNeedParams")}let B=await this.preRouterSwapA2B2C(T.slice(0,16));if(B==null){if(s!=null){let E=await this.sdk.Swap.preSwapWithMultiPool(s),k={amountIn:new ni.default(E.estimatedAmountIn),amountOut:new ni.default(E.estimatedAmountOut),poolAddress:[E.poolAddress],a2b:[E.aToB],rawAmountLimit:n?[E.estimatedAmountOut]:[E.estimatedAmountIn],isExceed:E.isExceed,coinType:[t,e]},S={paths:[k],partner:o,priceSlippagePoint:r};return{amountIn:new ni.default(E.estimatedAmountIn),amountOut:new ni.default(E.estimatedAmountOut),paths:[k],a2b:E.aToB,b2c:void 0,byAmountIn:n,isExceed:E.isExceed,targetSqrtPrice:[E.estimatedEndSqrtPrice],currentSqrtPrice:[E.estimatedStartSqrtPrice],coinTypeA:t,coinTypeB:e,coinTypeC:void 0,createTxParams:S}}return{amountIn:re,amountOut:re,paths:[],a2b:!1,b2c:!1,byAmountIn:n,isExceed:!0,targetSqrtPrice:[],currentSqrtPrice:[],coinTypeA:"",coinTypeB:"",coinTypeC:void 0,createTxParams:void 0}}let D=B.index,q=T[D].poolBC!=null?[T[D].poolAB,T[D].poolBC]:[T[D].poolAB],K=n?[B.amountMedium,B.amountOut]:[B.amountIn,B.amountMedium],Z=[];Z.push(T[D].a2b),B.stepNum>1&&Z.push(T[D].b2c);let G=[];G.push(T[D].coinTypeA),G.push(T[D].coinTypeB),B.stepNum>1&&G.push(T[D].coinTypeC);let J={amountIn:B.amountIn,amountOut:B.amountOut,poolAddress:q,a2b:Z,rawAmountLimit:K,isExceed:B.isExceed,coinType:G},x={paths:[J],partner:o,priceSlippagePoint:r};return{amountIn:B.amountIn,amountOut:B.amountOut,paths:[J],a2b:T[D].a2b,b2c:B.stepNum>1?T[D].b2c:void 0,byAmountIn:n,isExceed:B.isExceed,targetSqrtPrice:B.targetSqrtPrice,currentSqrtPrice:B.currentSqrtPrice,coinTypeA:T[D].coinTypeA,coinTypeB:T[D].coinTypeB,coinTypeC:B.stepNum>1?T[D].coinTypeC:void 0,createTxParams:x}}async preRouterSwapA2B2C(t){if(t.length===0)return null;let{integrate:e,simulationAccount:i}=this.sdk.sdkOptions,n=new sh.TransactionBlock;for(let y of t)if(y.stepNums>1){let v=[n.object(y.poolAB),n.object(y.poolBC),n.pure(y.a2b),n.pure(y.b2c),n.pure(y.byAmountIn),n.pure(y.amount.toString())],T=[];y.a2b?T.push(y.coinTypeA,y.coinTypeB):T.push(y.coinTypeB,y.coinTypeA),y.b2c?T.push(y.coinTypeB,y.coinTypeC):T.push(y.coinTypeC,y.coinTypeB),n.moveCall({target:`${e.published_at}::${_n}::calculate_router_swap_result`,typeArguments:T,arguments:v})}else{let v=[n.pure(y.poolAB),n.pure(y.a2b),n.pure(y.byAmountIn),n.pure(y.amount.toString())],T=y.a2b?[y.coinTypeA,y.coinTypeB]:[y.coinTypeB,y.coinTypeA];n.moveCall({target:`${e.published_at}::${by}::get_expect_swap_result`,arguments:v,typeArguments:T})}if(!Wt(i.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let o=(await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:n,sender:i.address})).events?.filter(y=>V(y.type).name==="CalculatedRouterSwapResultEvent"||V(y.type).name==="ExpectSwapResultEvent");if(o.length===0)return null;let s=t[0].byAmountIn?re:Sr,a=0;for(let y=0;y<o.length;y+=1)if(!o[y].parsedJson.data.is_exceed)if(t[0].byAmountIn){let v=new ni.default(o[y].parsedJson.data.amount_out);v.gt(s)&&(a=y,s=v)}else{let v=t[y].stepNums>1?new ni.default(o[y].parsedJson.data.amount_in):new ni.default(o[y].parsedJson.data.amount_in).add(new ni.default(o[y].parsedJson.data.fee_amount));v.lt(s)&&(a=y,s=v)}let l=[],u=[];return t[a].stepNums>1?(u.push(o[a].parsedJson.data.target_sqrt_price_ab,o[a].parsedJson.data.target_sqrt_price_cd),l.push(o[a].parsedJson.data.current_sqrt_price_ab,o[a].parsedJson.data.current_sqrt_price_cd)):(u.push(o[a].parsedJson.data.after_sqrt_price),l.push(o[a].parsedJson.current_sqrt_price)),{index:a,amountIn:t[0].byAmountIn?t[a].amount:s,amountMedium:o[a].parsedJson.data.amount_medium,amountOut:t[0].byAmountIn?s:t[a].amount,targetSqrtPrice:u,currentSqrtPrice:l,isExceed:o[a].parsedJson.data.is_exceed,stepNum:t[a].stepNums}}async getPoolWithTVL(){let t=[],{swapCountUrl:e}=this._sdk.sdkOptions;if(!e)return t;let i;try{i=await fetch(e)}catch{throw new Y(`Failed to get pool list with liquidity from ${e}.`,"InvalidSwapCountUrl")}let n;try{n=await i.json()}catch{throw new Y(`Failed tp [arse response from ${e}].`,"InvalidSwapCountUrl")}if(n.code!==200)throw new Y(`Failed to get pool list from ${e}. Statu code is ${n.code}.`,"InvalidSwapCountUrl");let{pools:r}=n.data;for(let o of r)t.push({poolAddress:o.swap_account,tvl:Number(o.tvl_in_usd)});return t}};var ow=class{_sdk;constructor(t){this._sdk=t}get sdk(){return this._sdk}calculateSwapFee(t){let e=M(0);return t.forEach(i=>{let n=i.basePaths.length;if(n>0){let r=i.basePaths[0],o=r.label==="Cetus"?new U(r.feeRate).div(10**6):new U(r.feeRate).div(10**9),s=M(r.inputAmount).div(10**r.fromDecimal).mul(o);if(e=e.add(s),n>1){let a=i.basePaths[1],l=r.direction?r.currentPrice:new U(1).div(r.currentPrice),u=a.direction?a.currentPrice:new U(1).div(a.currentPrice),h=a.label==="Cetus"?new U(a.feeRate).div(10**6):new U(a.feeRate).div(10**9),v=M(a.outputAmount).div(10**a.toDecimal).mul(h).div(l.mul(u));e=e.add(v)}}}),e.toString()}calculateSwapPriceImpact(t){let e=M(0);return t.forEach(i=>{let n=i.basePaths.length;if(n===1){let r=i.basePaths[0],o=M(r.outputAmount).div(10**r.toDecimal),s=M(r.inputAmount).div(10**r.fromDecimal),a=o.div(s),l=r.direction?new U(r.currentPrice):new U(1).div(r.currentPrice);e=e.add(this.calculateSingleImpact(a,l))}if(n===2){let r=i.basePaths[0],o=i.basePaths[1],s=r.direction?new U(r.currentPrice):new U(1).div(r.currentPrice),a=o.direction?new U(o.currentPrice):new U(1).div(o.currentPrice),l=s.mul(a),u=new U(o.outputAmount).div(10**o.toDecimal),h=new U(r.inputAmount).div(10**r.fromDecimal),y=u.div(h);e=e.add(this.calculateSingleImpact(y,l))}}),e.toString()}calculateSingleImpact=(t,e)=>e.minus(t).div(e).mul(100);async preSwapWithMultiPool(t){let{integrate:e,simulationAccount:i}=this.sdk.sdkOptions,n=new cl.TransactionBlock,r=[t.coinTypeA,t.coinTypeB];for(let u=0;u<t.poolAddresses.length;u+=1){let h=[n.pure(t.poolAddresses[u]),n.pure(t.a2b),n.pure(t.byAmountIn),n.pure(t.amount)];n.moveCall({target:`${e.published_at}::${Jt}::calculate_swap_result`,arguments:h,typeArguments:r})}if(!Wt(i.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let o=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:n,sender:i.address});if(o.error!=null)throw new Y(`pre swap with multi pools error code: ${o.error??"unknown error"}, please check config and params`,"InvalidConfig");let s=o.events?.filter(u=>V(u.type).name==="CalculatedSwapResultEvent");if(s.length===0)return null;if(s.length!==t.poolAddresses.length)throw new Y("valueData.length !== params.pools.length","ParamsLengthNotEqual");let a=t.byAmountIn?re:Sr,l=0;for(let u=0;u<s.length;u+=1)if(!s[u].parsedJson.data.is_exceed)if(t.byAmountIn){let h=new Vn.default(s[u].parsedJson.data.amount_out);h.gt(a)&&(l=u,a=h)}else{let h=new Vn.default(s[u].parsedJson.data.amount_out);h.lt(a)&&(l=u,a=h)}return this.transformSwapWithMultiPoolData({poolAddress:t.poolAddresses[l],a2b:t.a2b,byAmountIn:t.byAmountIn,amount:t.amount,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB},s[l].parsedJson)}async preswap(t){let{integrate:e,simulationAccount:i}=this.sdk.sdkOptions,n=new cl.TransactionBlock,r=[t.coinTypeA,t.coinTypeB],o=[n.pure(t.pool.poolAddress),n.pure(t.a2b),n.pure(t.byAmountIn),n.pure(t.amount)];if(n.moveCall({target:`${e.published_at}::${Jt}::calculate_swap_result`,arguments:o,typeArguments:r}),!Wt(i.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let s=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:n,sender:i.address});if(s.error!=null)throw new Y(`preswap error code: ${s.error??"unknown error"}, please check config and params`,"InvalidConfig");let a=s.events?.filter(l=>V(l.type).name==="CalculatedSwapResultEvent");return a.length===0?null:this.transformSwapData(t,a[0].parsedJson.data)}transformSwapData(t,e){let i=e.amount_in&&e.fee_amount?new Vn.default(e.amount_in).add(new Vn.default(e.fee_amount)).toString():"";return{poolAddress:t.pool.poolAddress,currentSqrtPrice:t.currentSqrtPrice,estimatedAmountIn:i,estimatedAmountOut:e.amount_out,estimatedEndSqrtPrice:e.after_sqrt_price,estimatedFeeAmount:e.fee_amount,isExceed:e.is_exceed,amount:t.amount,aToB:t.a2b,byAmountIn:t.byAmountIn}}transformSwapWithMultiPoolData(t,e){let{data:i}=e,n=i.amount_in&&i.fee_amount?new Vn.default(i.amount_in).add(new Vn.default(i.fee_amount)).toString():"";return{poolAddress:t.poolAddress,estimatedAmountIn:n,estimatedAmountOut:i.amount_out,estimatedEndSqrtPrice:i.after_sqrt_price,estimatedStartSqrtPrice:e.current_sqrt_price,estimatedFeeAmount:i.fee_amount,isExceed:i.is_exceed,amount:t.amount,aToB:t.a2b,byAmountIn:t.byAmountIn}}calculateRates(t){let{currentPool:e}=t,i=gy(e),n;t.a2b?n=t.swapTicks.sort((y,v)=>v.index-y.index):n=t.swapTicks.sort((y,v)=>y.index-v.index);let r=Ey(t.a2b,t.byAmountIn,t.amount,i,n),o=!1;t.byAmountIn?o=r.amountIn.lt(t.amount):o=r.amountOut.lt(t.amount);let s=Ai.getDefaultSqrtPriceLimit(t.a2b);t.a2b&&r.nextSqrtPrice.lt(s)&&(o=!0),!t.a2b&&r.nextSqrtPrice.gt(s)&&(o=!0);let a=0;r.crossTickNum>6&&r.crossTickNum<40&&(a=22e3*(r.crossTickNum-6)),r.crossTickNum>40&&(o=!0);let l=ie.sqrtPriceX64ToPrice(i.currentSqrtPrice,t.decimalsA,t.decimalsB).toNumber(),u=ie.sqrtPriceX64ToPrice(r.nextSqrtPrice,t.decimalsA,t.decimalsB).toNumber(),h=Math.abs(l-u)/l*100;return{estimatedAmountIn:r.amountIn,estimatedAmountOut:r.amountOut,estimatedEndSqrtPrice:r.nextSqrtPrice,estimatedFeeAmount:r.feeAmount,isExceed:o,extraComputeLimit:a,amount:t.amount,aToB:t.a2b,byAmountIn:t.byAmountIn,priceImpactPct:h}}async createSwapTransactionPayload(t,e){if(this._sdk.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let i=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);if(e){let{isAdjustCoinA:n,isAdjustCoinB:r}=Ks(t);if(t.a2b&&n||!t.a2b&&r)return await oe.buildSwapTransactionForGas(this._sdk,t,i,e)}return oe.buildSwapTransaction(this.sdk,t,i)}async createSwapTransactionWithoutTransferCoinsPayload(t,e){if(this._sdk.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let i=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);if(e){let{isAdjustCoinA:n,isAdjustCoinB:r}=Ks(t);if(t.a2b&&n||!t.a2b&&r)return await oe.buildSwapTransactionWithoutTransferCoinsForGas(this._sdk,t,i,e)}return oe.buildSwapTransactionWithoutTransferCoins(this.sdk,t,i)}},sw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getAllRegisteredTokenList(t=!1){return await this.factchTokenList("",t)}async getOwnerTokenList(t="",e=!1){return await this.factchTokenList(t,e)}async getAllRegisteredPoolList(t=!1){return await this.factchPoolList("",t)}async getOwnerPoolList(t="",e=!1){return await this.factchPoolList(t,e)}async getWarpPoolList(t=!1){return await this.factchWarpPoolList("","",t)}async getOwnerWarpPoolList(t="",e="",i=!1){return await this.factchWarpPoolList(t,e,i)}async getTokenListByCoinTypes(t){let e={},n=this.getCache("getAllRegisteredTokenList");if(n!==void 0){let o=n;for(let s of t)for(let a of o)if($t(s)===$t(a.address)){e[s]=a;continue}}let r=t.filter(o=>e[o]===void 0);for(let o of r){let s=`${o}_metadata`,a=this.getCache(s);if(a!==void 0)e[o]=a;else{let l=await this._sdk.fullClient.getCoinMetadata({coinType:o});if(l){let u={id:l.id,name:l.name,symbol:l.symbol,official_symbol:l.symbol,coingecko_id:"",decimals:l.decimals,project_url:"",logo_url:l.iconUrl,address:o};e[o]=u,this.updateCache(s,u,X)}}}return e}async factchTokenList(t="",e=!1){let{simulationAccount:i,token:n}=this.sdk.sdkOptions,o=this.getCache("getAllRegisteredTokenList",e);if(o!==void 0)return o;let s=t.length>0,a=512,l=0,u=[];if(n===void 0)throw Error("please config token ofsdkOptions");let h=F(n);for(;;){let y=new ll.TransactionBlock;y.moveCall({target:`${n.published_at}::coin_list::${s?"fetch_full_list_with_limit":"fetch_all_registered_coin_info_with_limit"}`,arguments:s?[y.pure(h.coin_registry_id),y.pure(t),y.pure(l),y.pure(a)]:[y.pure(h.coin_registry_id),y.pure(l),y.pure(a)]});let v=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:y,sender:i.address}),T=[];if(v.events?.forEach(O=>{V(O.type).full_address===`${n.published_at}::coin_list::FetchCoinListEvent`&&O.parsedJson.full_list.value_list.forEach(j=>{T.push(this.transformData(j,!1))})}),u=[...u,...T],T.length<a)break;l=u.length}return u}async factchPoolList(t="",e=!1){let{simulationAccount:i,token:n}=this.sdk.sdkOptions,o=this.getCache("getAllRegisteredPoolList",e);if(o!==void 0)return o;let s=[],a=512,l=0,u=t.length>0;if(n===void 0)throw Error("please config token ofsdkOptions");let h=F(n);for(;;){let y=new ll.TransactionBlock;if(y.moveCall({target:`${n.published_at}::lp_list::${u?"fetch_full_list_with_limit":"fetch_all_registered_coin_info_with_limit"}`,arguments:u?[y.pure(h.pool_registry_id),y.pure(t),y.pure(l),y.pure(a)]:[y.pure(h.pool_registry_id),y.pure(l),y.pure(a)]}),!Wt(i.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let v=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:y,sender:i.address}),T=[];if(v.events?.forEach(O=>{V(O.type).full_address===`${n.published_at}::lp_list::FetchPoolListEvent`&&O.parsedJson.full_list.value_list.forEach(j=>{T.push(this.transformData(j,!0))})}),s=[...s,...T],T.length<a)break;l=s.length}return s}async factchWarpPoolList(t="",e="",i=!1){let n=await this.factchPoolList(t,i);if(n.length===0)return[];let r=await this.factchTokenList(e,i),o=[];for(let s of n){for(let a of r)a.address===s.coin_a_address&&(s.coinA=a),a.address===s.coin_b_address&&(s.coinB=a);o.push(s)}return o}async getTokenConfigEvent(t=!1){let e=this._sdk.sdkOptions.token.package_id,i=`${e}_getTokenConfigEvent`,n=this.getCache(i,t);if(n!==void 0)return n;let r=await this._sdk.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=zn(r),s=await this._sdk.fullClient.queryEventsByPage({Transaction:o}),a={coin_registry_id:"",pool_registry_id:"",coin_list_owner:"",pool_list_owner:""};return s.data.length>0&&s.data.forEach(l=>{let u=V(l.type);if(l.transactionModule==="coin_list")switch(u.name){case"InitListEvent":a.coin_list_owner=l.parsedJson.list_id;break;case"InitRegistryEvent":a.coin_registry_id=l.parsedJson.registry_id;break;default:break}else if(l.transactionModule==="lp_list")switch(u.name){case"InitListEvent<address>":a.pool_list_owner=l.parsedJson.list_id;break;case"InitRegistryEvent<address>":a.pool_registry_id=l.parsedJson.registry_id;break;default:break}}),a.coin_registry_id.length>0&&this.updateCache(i,a,X),a}transformData(t,e){let i={...t};if(e)try{i.coin_a_address=V(i.coin_a_address).full_address,i.coin_b_address=V(i.coin_b_address).full_address}catch{}else i.address=V(i.address).full_address;if(t.extensions){let n=t.extensions.contents;for(let r of n){let{key:o}=r,{value:s}=r;if(o==="labels")try{s=JSON.parse(decodeURIComponent(wr.decode(s)))}catch{}o==="pyth_id"&&(s=(0,ah.normalizeSuiObjectId)(s)),i[o]=s}delete i.extensions}return i}updateCache(t,e,i=He){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t],n=i?.isValid();if(!e&&n)return i.value;n||delete this._cache[t]}},aw=class{_sdk;constructor(t){this._sdk=t}get sdk(){return this._sdk}calculatePrice(t,e,i,n,r){let o=n?e:i,s=n?i:e;return r==="Cetus"?ie.sqrtPriceX64ToPrice(t,o,s):new U(t.toString()).div(new U(10).pow(new U(s+9-o)))}parseJsonResult(t){return{isExceed:t.is_exceed,isTimeout:t.is_timeout,inputAmount:t.input_amount,outputAmount:t.output_amount,fromCoin:t.from_coin,toCoin:t.to_coin,byAmountIn:t.by_amount_in,splitPaths:t.split_paths.map(i=>({pathIndex:i.path_index,lastQuoteOutput:i.last_quote_output,percent:i.percent,basePaths:i.best_path.map(r=>({direction:r.direction,label:r.label,poolAddress:r.provider,fromCoin:r.from_coin,toCoin:r.to_coin,outputAmount:r.output_amount,inputAmount:r.input_amount,feeRate:r.fee_rate,currentSqrtPrice:new xi.default(r.current_sqrt_price.toString()),afterSqrtPrice:r.label==="Cetus"?new xi.default(r.after_sqrt_price.toString()):re,fromDecimal:r.from_decimal,toDecimal:r.to_decimal,currentPrice:this.calculatePrice(new xi.default(r.current_sqrt_price.toString()),r.from_decimal,r.to_decimal,r.direction,r.label)})),inputAmount:i.input_amount,outputAmount:i.output_amount}))}}async fetchWithTimeout(t,e,i){let n=new AbortController,r=setTimeout(()=>n.abort(),i);try{let o=await fetch(t,{...e,signal:n.signal});return clearTimeout(r),o}catch{return null}}async fetchAndParseData(t,e){try{let n=await this.fetchWithTimeout(t,e,1500);return n.status===200?this.parseJsonResult(await n.json()):null}catch{return null}}async getBestRouter(t,e,i,n,r,o,s,a,l=!1,u=!1,h=[]){let y=null,v="v2",T={},O=this.sdk.sdkOptions.aggregatorUrl;if(h.length>0){let P=new URL(O);O=`${P.protocol}//${P.hostname}/router_with_lp_changes`,T={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:t,to:e,amount:i,by_amount_in:n,order_split:l,external_router:u,sender_address:"None",request_id:encodeURIComponent(Bs()),lp_changes:h})}}else O=`
4
4
  ${O}?from=${encodeURIComponent(t)}&to=${encodeURIComponent(e)}&amount=${encodeURIComponent(i)}&by_amount_in=${encodeURIComponent(n)}&order_split=${encodeURIComponent(l)}&external_router=${encodeURIComponent(u)}&sender_address=''&request_id=${encodeURIComponent(Bs())}
5
- `;if(y=await this.fetchAndParseData(O,T),y?.isTimeout||y==null){let P=await this.sdk.Router.price(t,e,new xi.default(i),n,r,o,a),j=[];for(let D of P.paths){let q=[];if(D.poolAddress.length>1){let Z=this.sdk.Router.tokenInfo(D.coinType[0]).decimals,G=this.sdk.Router.tokenInfo(D.coinType[1]).decimals,J=D.a2b[0]?ie.sqrtPriceX64ToPrice(new xi.default(P.currentSqrtPrice[0]),Z,G):ie.sqrtPriceX64ToPrice(new xi.default(P.currentSqrtPrice[0]),G,Z),x={direction:D.a2b[0],label:"Cetus",poolAddress:D.poolAddress[0],fromCoin:D.coinType[0],toCoin:D.coinType[1],feeRate:this.sdk.Router.getFeeRate(D.coinType[0],D.coinType[1],D.poolAddress[0]),outputAmount:P.byAmountIn?D.rawAmountLimit[0].toString():D.rawAmountLimit[1].toString(),inputAmount:D.amountIn.toString(),currentSqrtPrice:P.currentSqrtPrice[0],currentPrice:J,fromDecimal:Z,toDecimal:G},I=this.sdk.Router.tokenInfo(D.coinType[1]).decimals,A=this.sdk.Router.tokenInfo(D.coinType[2]).decimals,M=D.a2b[1]?ie.sqrtPriceX64ToPrice(new xi.default(P.currentSqrtPrice[1]),I,A):ie.sqrtPriceX64ToPrice(new xi.default(P.currentSqrtPrice[1]),A,I),k={direction:D.a2b[1],label:"Cetus",poolAddress:D.poolAddress[1],fromCoin:D.coinType[1],toCoin:D.coinType[2],feeRate:this.sdk.Router.getFeeRate(D.coinType[1],D.coinType[2],D.poolAddress[1]),outputAmount:D.amountOut.toString(),inputAmount:P.byAmountIn?D.rawAmountLimit[0].toString():D.rawAmountLimit[1].toString(),currentSqrtPrice:P.currentSqrtPrice[1],currentPrice:M,fromDecimal:I,toDecimal:A};q.push(x,k)}else{let Z=this.sdk.Router.tokenInfo(D.coinType[0]).decimals,G=this.sdk.Router.tokenInfo(D.coinType[1]).decimals,J=D.a2b[0]?ie.sqrtPriceX64ToPrice(new xi.default(P.currentSqrtPrice[0]),Z,G):ie.sqrtPriceX64ToPrice(new xi.default(P.currentSqrtPrice[0]),G,Z),x={direction:D.a2b[0],label:"Cetus",poolAddress:D.poolAddress[0],fromCoin:D.coinType[0],toCoin:D.coinType[1],feeRate:this.sdk.Router.getFeeRate(D.coinType[0],D.coinType[1],D.poolAddress[0]),outputAmount:D.amountOut.toString(),inputAmount:D.amountIn.toString(),currentSqrtPrice:P.currentSqrtPrice[0],currentPrice:J,fromDecimal:Z,toDecimal:G};q.push(x)}let K={percent:Number(D.amountIn)/Number(P.amountIn)*100,inputAmount:Number(D.amountIn.toString()),outputAmount:Number(D.amountOut.toString()),pathIndex:0,lastQuoteOutput:0,basePaths:q};j.push(K)}let B={isExceed:P.isExceed,isTimeout:!0,inputAmount:Number(P.amountIn.toString()),outputAmount:Number(P.amountOut.toString()),fromCoin:P.coinTypeA,toCoin:P.coinTypeC!=null?P.coinTypeC:P.coinTypeB,byAmountIn:P.byAmountIn,splitPaths:j};v="v1",y=B}return{result:y,version:v}}},sw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}setTokenListCache(t){let{coin_list_handle:e}=F(this.sdk.sdkOptions.cetus_config),i=`${e}_getCoinConfigs`,n=this.getCache(i),r=n?[...n,...t]:t;this.updateCache(i,r,X)}async getTokenListByCoinTypes(t){let e={},{coin_list_handle:i}=F(this.sdk.sdkOptions.cetus_config),n=`${i}_getCoinConfigs`,r=this.getCache(n);if(r!==void 0){let s=r;for(let a of t)for(let l of s)if(Lt(a)===Lt(l.address)){e[a]=l;continue}}let o=t.filter(s=>e[s]===void 0);for(let s of o){let a=`${s}_metadata`,l=this.getCache(a);if(l!==void 0)e[s]=l;else{let u=await this._sdk.fullClient.getCoinMetadata({coinType:s});if(u){let h={id:u.id,pyth_id:"",name:u.name,symbol:u.symbol,official_symbol:u.symbol,coingecko_id:"",decimals:u.decimals,project_url:"",logo_url:u.iconUrl,address:s};e[s]=h,this.updateCache(a,h,X)}else console.log(`not found ${s}`)}}return e}async getCoinConfigs(t=!1,e=!0){let{coin_list_handle:i}=F(this.sdk.sdkOptions.cetus_config),n=`${i}_getCoinConfigs`,r=this.getCache(n,t);if(r)return r;let s=(await this._sdk.fullClient.getDynamicFieldsByPage(i)).data.map(u=>u.objectId),a=await this._sdk.fullClient.batchGetObjects(s,{showContent:!0}),l=[];return a.forEach(u=>{if(u.error!=null||u.data?.content?.dataType!=="moveObject")throw new Y(`when getCoinConfigs get objects error: ${u.error}, please check the rpc and contracts address config.`,"InvalidConfig");let h=this.buildCoinConfig(u,e);this.updateCache(`${i}_${h.address}_getCoinConfig`,h,X),l.push({...h})}),this.updateCache(n,l,X),l}async getCoinConfig(t,e=!1,i=!0){let{coin_list_handle:n}=F(this.sdk.sdkOptions.cetus_config),r=`${n}_${t}_getCoinConfig`,o=this.getCache(r,e);if(o)return o;let s=await this._sdk.fullClient.getDynamicFieldObject({parentId:n,name:{type:"0x1::type_name::TypeName",value:{name:Ny(t)}}});if(s.error!=null||s.data?.content?.dataType!=="moveObject")throw new Y(`when getCoinConfig get object error: ${s.error}, please check the rpc and contracts address config.`,"InvalidConfig");let a=this.buildCoinConfig(s,i);return this.updateCache(r,a,X),a}buildCoinConfig(t,e=!0){let i=te(t);i=i.value.fields;let n={...i};return n.id=Ht(t),n.address=V(i.coin_type.fields.name).full_address,i.pyth_id&&(n.pyth_id=(0,$s.normalizeSuiObjectId)(i.pyth_id)),this.transformExtensions(n,i.extension_fields.fields.contents,e),delete n.coin_type,n}async getClmmPoolConfigs(t=!1,e=!0){let{clmm_pools_handle:i}=F(this.sdk.sdkOptions.cetus_config),n=`${i}_getClmmPoolConfigs`,r=this.getCache(n,t);if(r)return r;let s=(await this._sdk.fullClient.getDynamicFieldsByPage(i)).data.map(u=>u.objectId),a=await this._sdk.fullClient.batchGetObjects(s,{showContent:!0}),l=[];return a.forEach(u=>{if(u.error!=null||u.data?.content?.dataType!=="moveObject")throw new Y(`when getClmmPoolsConfigs get objects error: ${u.error}, please check the rpc and contracts address config.`,"InvalidConfig");let h=this.buildClmmPoolConfig(u,e);this.updateCache(`${h.pool_address}_getClmmPoolConfig`,h,X),l.push({...h})}),this.updateCache(n,l,X),l}async getClmmPoolConfig(t,e=!1,i=!0){let{clmm_pools_handle:n}=F(this.sdk.sdkOptions.cetus_config),r=`${t}_getClmmPoolConfig`,o=this.getCache(r,e);if(o)return o;let s=await this._sdk.fullClient.getDynamicFieldObject({parentId:n,name:{type:"address",value:t}}),a=this.buildClmmPoolConfig(s,i);return this.updateCache(r,a,X),a}buildClmmPoolConfig(t,e=!0){let i=te(t);i=i.value.fields;let n={...i};return n.id=Ht(t),n.pool_address=(0,$s.normalizeSuiObjectId)(i.pool_address),this.transformExtensions(n,i.extension_fields.fields.contents,e),n}async getLaunchpadPoolConfigs(t=!1,e=!0){let{launchpad_pools_handle:i}=F(this.sdk.sdkOptions.cetus_config),n=`${i}_getLaunchpadPoolConfigs`,r=this.getCache(n,t);if(r)return r;let s=(await this._sdk.fullClient.getDynamicFieldsByPage(i)).data.map(u=>u.objectId),a=await this._sdk.fullClient.batchGetObjects(s,{showContent:!0}),l=[];return a.forEach(u=>{if(u.error!=null||u.data?.content?.dataType!=="moveObject")throw new Y(`when getCoinConfigs get objects error: ${u.error}, please check the rpc and contracts address config.`,"InvalidConfig");let h=this.buildLaunchpadPoolConfig(u,e);this.updateCache(`${h.pool_address}_getLaunchpadPoolConfig`,h,X),l.push({...h})}),this.updateCache(n,l,X),l}async getLaunchpadPoolConfig(t,e=!1,i=!0){let{launchpad_pools_handle:n}=F(this.sdk.sdkOptions.cetus_config),r=`${t}_getLaunchpadPoolConfig`,o=this.getCache(r,e);if(o)return o;let s=await this._sdk.fullClient.getDynamicFieldObject({parentId:n,name:{type:"address",value:t}}),a=this.buildLaunchpadPoolConfig(s,i);return this.updateCache(r,a,X),a}buildLaunchpadPoolConfig(t,e=!0){let i=te(t);i=i.value.fields;let n={...i};n.id=Ht(t),n.pool_address=(0,$s.normalizeSuiObjectId)(i.pool_address),this.transformExtensions(n,i.extension_fields.fields.contents,e);let r=[];i.social_media.fields.contents.forEach(o=>{r.push({name:o.fields.value.fields.name,link:o.fields.value.fields.link})}),n.social_media=r;try{n.regulation=decodeURIComponent(wr.decode(n.regulation).replace(/%/g,"%25"))}catch{n.regulation=wr.decode(n.regulation)}return n}transformExtensions(t,e,i=!0){let n=[];for(let r of e){let{key:o}=r.fields,{value:s}=r.fields;if(o==="labels")try{s=JSON.parse(decodeURIComponent(wr.decode(s)))}catch{}i&&(t[o]=s),n.push({key:o,value:s})}delete t.extension_fields,i||(t.extensions=n)}async getCetusConfig(t=!1){let e=this._sdk.sdkOptions.cetus_config.package_id,i=`${e}_getCetusConfig`,n=this.getCache(i,t);if(n!==void 0)return n;let r=await this._sdk.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=zn(r),s=await this._sdk.fullClient.queryEventsByPage({Transaction:o}),a={coin_list_id:"",launchpad_pools_id:"",clmm_pools_id:"",admin_cap_id:"",global_config_id:"",coin_list_handle:"",launchpad_pools_handle:"",clmm_pools_handle:""};if(s.data.length>0)for(let l of s.data)switch(V(l.type).name){case"InitCoinListEvent":a.coin_list_id=l.parsedJson.coin_list_id;break;case"InitLaunchpadPoolsEvent":a.launchpad_pools_id=l.parsedJson.launchpad_pools_id;break;case"InitClmmPoolsEvent":a.clmm_pools_id=l.parsedJson.pools_id;break;case"InitConfigEvent":a.global_config_id=l.parsedJson.global_config_id,a.admin_cap_id=l.parsedJson.admin_cap_id;break;default:break}return a=await this.getCetusConfigHandle(a),a.clmm_pools_id.length>0&&this.updateCache(i,a,X),a}async getCetusConfigHandle(t){let e=[t.clmm_pools_id,t.coin_list_id,t.launchpad_pools_id];return(await this._sdk.fullClient.multiGetObjects({ids:e,options:{showContent:!0}})).forEach(n=>{if(n.error!=null||n.data?.content?.dataType!=="moveObject")throw new Y(`when getCetusConfigHandle get objects error: ${n.error}, please check the rpc and contracts address config.`,"InvalidConfigHandle");let r=te(n),o=Ii(n);switch(V(o).name){case"ClmmPools":t.clmm_pools_handle=r.pools.fields.id.id;break;case"CoinList":t.coin_list_handle=r.coins.fields.id.id;break;case"LaunchpadPools":t.launchpad_pools_handle=r.pools.fields.id.id;break;default:break}}),t}updateCache(t,e,i=Ge){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){try{let i=this._cache[t];if(!i)return;if(e||!i.isValid()){delete this._cache[t];return}return i.value}catch(i){console.error(`Error accessing cache for key ${t}:`,i);return}}},aw=class extends lh.SuiClient{async queryEventsByPage(t,e="all"){let i=[],n=!0,r=e==="all",o=r?null:e.cursor;do{let s=await this.queryEvents({query:t,cursor:o,limit:r?null:e.limit});s.data?(i=[...i,...s.data],n=s.hasNextPage,o=s.nextCursor):n=!1}while(r&&n);return{data:i,nextCursor:o,hasNextPage:n}}async getOwnedObjectsByPage(t,e,i="all"){let n=[],r=!0,o=i==="all",s=o?null:i.cursor;do{let a=await this.getOwnedObjects({owner:t,...e,cursor:s,limit:o?null:i.limit});a.data?(n=[...n,...a.data],r=a.hasNextPage,s=a.nextCursor):r=!1}while(o&&r);return{data:n,nextCursor:s,hasNextPage:r}}async getDynamicFieldsByPage(t,e="all"){let i=[],n=!0,r=e==="all",o=r?null:e.cursor;do{let s=await this.getDynamicFields({parentId:t,cursor:o,limit:r?null:e.limit});s.data?(i=[...i,...s.data],n=s.hasNextPage,o=s.nextCursor):n=!1}while(r&&n);return{data:i,nextCursor:o,hasNextPage:n}}async batchGetObjects(t,e,i=50){let n=[];try{for(let r=0;r<Math.ceil(t.length/i);r++){let o=await this.multiGetObjects({ids:t.slice(r*i,i*(r+1)),options:e});n=[...n,...o]}}catch(r){console.log(r)}return n}async calculationTxGas(t){let{sender:e}=t.blockData;if(e===void 0)throw Error("sdk sender is empty");let i=await this.devInspectTransactionBlock({transactionBlock:t,sender:e}),{gasUsed:n}=i.effects;return Number(n.computationCost)+Number(n.storageCost)-Number(n.storageRebate)}async sendTransaction(t,e){try{return await this.signAndExecuteTransactionBlock({transactionBlock:e,signer:t,options:{showEffects:!0,showEvents:!0}})}catch(i){console.log("error: ",i)}}async sendSimulationTransaction(t,e,i=!0){try{if(i)return await this.devInspectTransactionBlock({transactionBlock:t,sender:e});let r={ProgrammableTransaction:{inputs:t.blockData.inputs.map(l=>{let{type:u,value:h}=l;return u==="object"?ch.Inputs.SharedObjectRef({objectId:h,initialSharedVersion:0,mutable:!0}):h}),transactions:t.blockData.transactions}},o=uh.bcs.TransactionKind.serialize(r,{maxSize:131072}).toBytes(),s=qc(o);return await this.transport.request({method:"sui_devInspectTransactionBlock",params:[e,s,null,null]})}catch(n){console.log("devInspectTransactionBlock error",n)}}},dh=class{_cache={};_rpcModule;_pool;_position;_swap;_rewarder;_router;_router_v2;_token;_config;_sdkOptions;_senderAddress="";constructor(t){this._sdkOptions=t,this._rpcModule=new aw({url:t.fullRpcUrl}),this._swap=new nw(this),this._pool=new Qy(this),this._position=new ew(this),this._rewarder=new tw(this),this._router=new iw(this),this._router_v2=new ow(this),this._token=new rw(this),this._config=new sw(this),Hs(this._sdkOptions)}get senderAddress(){return this._senderAddress}set senderAddress(t){this._senderAddress=t}get Swap(){return this._swap}get fullClient(){return this._rpcModule}get sdkOptions(){return this._sdkOptions}get Pool(){return this._pool}get Position(){return this._position}get Rewarder(){return this._rewarder}get Router(){return this._router}get RouterV2(){return this._router_v2}get CetusConfig(){return this._config}get Token(){return this._token}async getOwnerCoinAssets(t,e,i=!0){let n=[],r=null,o=`${this.sdkOptions.fullRpcUrl}_${t}_${e}_getOwnerCoinAssets`,s=this.getCache(o,i);if(s)return s;for(;;){let a=await(e?this.fullClient.getCoins({owner:t,coinType:e,cursor:r}):this.fullClient.getAllCoins({owner:t,cursor:r}));if(a.data.forEach(l=>{BigInt(l.balance)>0&&n.push({coinAddress:V(l.coinType).source_address,coinObjectId:l.coinObjectId,balance:BigInt(l.balance)})}),r=a.nextCursor,!a.hasNextPage)break}return this.updateCache(o,n,30*1e3),n}async getOwnerCoinBalances(t,e){let i=[];return e?i=[await this.fullClient.getBalance({owner:t,coinType:e})]:i=[...await this.fullClient.getAllBalances({owner:t})],i}updateCache(t,e,i=X){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t],n=i?.isValid();if(!e&&n)return i.value;n||delete this._cache[t]}};var ph=require("@mysten/sui.js/utils");var Qs=require("@mysten/sui.js/transactions");var ri=require("@mysten/sui.js/transactions"),Mr=require("@mysten/sui.js/utils"),_o=we(Se(),1);var mh=require("@mysten/sui.js/utils");var pl=require("@mysten/sui.js/transactions");var Yi=require("@mysten/sui.js/transactions");var $i=require("@mysten/sui.js/utils"),oi=require("@mysten/sui.js/transactions");var ml=require("@mysten/sui.js/utils");var _w=require("@mysten/sui.js/utils");var Ue=we(Se(),1);var bh=we(Se(),1);var gl=we(Se(),1);var Qi=require("@mysten/sui.js/transactions"),Hn=require("@mysten/sui.js/transactions");var Zn=require("@mysten/sui.js/transactions");var Me=we(Se(),1);var _l=require("@mysten/sui.js/bcs"),mo=require("@mysten/sui.js/utils"),ea=require("@mysten/sui.js/transactions");var si=require("@mysten/sui.js/transactions"),dl="router",Er=1e4,bn=class{static buildPoolImmutables(t){let{fields:e}=t.value.fields.value;return{clmm_pool_id:V(e.clmm_pool_id).address,booster_type:V(e.booster_type.fields.name).source_address,pool_id:V(e.pool_id).address,coinTypeA:V(e.coin_type_a.fields.name).source_address,coinTypeB:V(e.coin_type_b.fields.name).source_address}}static buildPoolState(t){let e=te(t),i=[];return e.config.fields.contents.forEach(r=>{i.push({lock_day:Number(r.fields.key),multiplier:Number(E(r.fields.value).div(Er))})}),{basic_percent:Number(E(e.basic_percent).div(Er)),balances:{balances_handle:e.balances.fields.id.id,size:e.balances.fields.size},config:i,lock_positions:{lock_positions_handle:e.lock_positions.fields.id.id,size:e.lock_positions.fields.size},is_open:e.is_open,index:Number(e.index),pool_id:Ht(t)}}static buildLockNFT(t){let e=V(Ht(t)).address;return{lock_clmm_position:Ji(t),locked_nft_id:e}}static buildLockPositionInfo(t){let e=te(t),{value:i}=e.value.fields;return{type:i.type,position_id:i.fields.position_id,start_time:Number(i.fields.start_time),lock_period:Number(i.fields.lock_period),end_time:Number(i.fields.end_time),growth_rewarder:i.fields.growth_rewarder,rewarder_owned:i.fields.rewarder_owned,is_settled:i.fields.is_settled}}static isLocked(t){return t.end_time>Date.parse(new Date().toString())/1e3}},cw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPoolImmutables(t=!1){let{booster:e}=this._sdk.sdkOptions,i=`${e.package_id}_getPoolImmutables`,n=this.getCache(i,t),r=[];if(n!==void 0)r.push(...n);else{let o=[];(await this._sdk.ClmmSDK.fullClient.getDynamicFieldsByPage(F(e).booster_pool_handle)).data?.forEach(l=>{o.push(l.objectId)});let a=await this._sdk.ClmmSDK.fullClient.batchGetObjects(o,{showContent:!0});for(let l of a){let u=te(l);if(u){let h=bn.buildPoolImmutables(u);this.updateCache(`${h.pool_id}_getPoolImmutable`,h,X),r.push(h)}}}return this.updateCache(i,r,X),r}async getPoolImmutable(t){let{booster:e}=this._sdk.sdkOptions,i=`${t}_getPoolImmutable`,n=this.getCache(i);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:F(e).booster_pool_handle,name:{type:"0x2::object::ID",value:t}}),o=te(r),s=bn.buildPoolImmutables(o);return this.updateCache(i,s,X),s}async getPools(){let t=[],i=(await this.getPoolImmutables()).map(r=>r.pool_id),n=await this._sdk.ClmmSDK.fullClient.batchGetObjects(i,{showType:!0,showContent:!0});for(let r of n){let o=bn.buildPoolState(r);if(o){let s={...await this.getPoolImmutable(o.pool_id),...o};t.push(s);let a=`${s.pool_id}_getPoolObject`;this.updateCache(a,s,X)}}return t}async getPool(t,e=!0){let i=`${t}_getPoolObject`,n=this.getCache(i,e),r=await this.getPoolImmutable(t);if(n!==void 0)return{...r,...n};let o=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),s=bn.buildPoolState(o),a={...r,...s};return this.updateCache(i,a,X),a}async getPoolHandleId(t){let e=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),i=te(e);return i?i.list.fields.id.id:""}async getBoosterInitConfigs(){let{package_id:t}=this.sdk.sdkOptions.booster,e=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::config::InitEvent`}))?.data,i={booster_config_id:"",booster_pool_handle:""};return e.length>0&&e.forEach(n=>{let r=n.parsedJson;r&&(i.booster_config_id=r.config_id)}),i.booster_pool_handle=await this.getPoolHandleId(i.booster_config_id),i}async getOwnerBoosterPositions(t,e,i){let{booster:n}=this.sdk.sdkOptions,r=[],o=[],s=`${n.package_id}::lock_nft::LockNFT<${this._sdk.ClmmSDK.Position.buildPositionType()}>`,a=await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0,showOwner:!0},filter:{StructType:s}});for(let u of a.data)if(V($t(u)).source_address===s&&u.data){let y=bn.buildLockNFT(u);this.updateCache(`${y.locked_nft_id}_getBoosterPositionById`,y,X),y&&(e===void 0||e===y.lock_clmm_position.pool)&&r.push(y)}let l=await this.getLockPositionInfos(i,r.map(u=>u.locked_nft_id));for(let u of r)for(let h of l)if(u.lock_clmm_position.pos_object_id===h.position_id){o.push({...u,...h});break}return o}async getBoosterPosition(t,e){let i=`${e}_getBoosterPositionById`,n=this.getCache(i),r;if(n!==void 0)r=n;else{let s=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0,showOwner:!0}});r=bn.buildLockNFT(s),this.updateCache(i,r,X)}let o=await this.getLockPositionInfo(t,e);return{...r,...o}}async getLockPositionInfos(t,e=[]){let i=await this._sdk.ClmmSDK.fullClient.getDynamicFieldsByPage(t),n=[],r=[];return i.data?.forEach(o=>{e.length>0?e.includes(o.name.value)&&n.push(o.objectId):n.push(o.objectId)}),n.length>0&&(await this._sdk.ClmmSDK.fullClient.batchGetObjects(n,{showContent:!0})).forEach(s=>{let a=bn.buildLockPositionInfo(s);a&&r.push(a)}),r}async getLockPositionInfo(t,e){let i=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}});return bn.buildLockPositionInfo(i)}calculateXCetusRewarder(t,e,i){let n=e.basic_percent,r="0";t.forEach(a=>{a.coin_address===e.booster_type&&(console.log("find ",e.booster_type),r=a.amount_owed.toString())}),i.is_settled||e.config.forEach(a=>{a.lock_day===i.lock_period&&(n=a.multiplier)});let o=E(r).sub(i.growth_rewarder).mul(n);return E(i.rewarder_owned).add(o).toString()}lockPositionPayload(t){let{booster:e}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions,n=new Qs.TransactionBlock;return n.moveCall({target:`${e.published_at}::${dl}::lock_position`,typeArguments:[t.booster_type,t.coinTypeA,t.coinTypeB],arguments:[n.pure(F(e).booster_config_id),n.pure(F(i).global_config_id),n.pure(t.booster_pool_id),n.pure(t.clmm_pool_id),n.pure(t.clmm_position_id),n.pure(t.lock_day),n.pure(z)]}),n}canceLockPositionPayload(t){let{booster:e}=this.sdk.sdkOptions,i=new Qs.TransactionBlock;return i.moveCall({target:`${e.published_at}::${dl}::cancel_lock`,typeArguments:[t.booster_type],arguments:[i.pure(F(e).booster_config_id),i.pure(t.booster_pool_id),i.pure(t.lock_nft_id),i.pure(z)]}),i}redeemPayload(t){let{booster:e,xcetus:i}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions,r=new Qs.TransactionBlock,o=F(i);return r.moveCall({target:`${e.published_at}::${dl}::redeem`,typeArguments:[t.booster_type,t.coinTypeA,t.coinTypeB],arguments:[r.pure(F(e).booster_config_id),r.pure(F(n).global_config_id),r.pure(t.booster_pool_id),r.pure(t.lock_nft_id),r.pure(t.clmm_pool_id),r.pure(o.lock_manager_id),r.pure(o.xcetus_manager_id),r.pure(t.ve_nft_id),r.pure(z)]}),r}updateCache(t,e,i=Ge){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t];if(!e&&i?.isValid())return i.value;delete this._cache[t]}},Yt="router",gh=1e9;var Li=class{static priceRealToFix(t,e,i){let n=E(e-i).toNumber();return Number(E(t).div(E(10).pow(E(n))).toString())}static priceFixToReal(t,e,i){let n=E(e-i).toNumber();return Number(E(t).mul(E(10).pow(E(n))).toString())}static raiseTotalAmount(t,e,i){let n=E(e-i).abs().toNumber();return e>i?Number(E(t.total_supply).mul(t.current_price).div(E(10).pow(E(n))).toString()):Number(E(t.total_supply).mul(t.current_price).mul(E(10).pow(E(n))).toString())}static buildLaunchPadPool(t){let e=$t(t),i=V(e),n=te(t),r={coin_type_sale:i.type_arguments[0],coin_type_raise:i.type_arguments[1],pool_address:(0,mh.normalizeSuiObjectId)(Ht(t)),is_settle:n.is_settle,current_price:E(n.initialize_price).div(E(gh)).toString(),price:n.initialize_price,min_price:"0",max_price:"0",sale_coin_amount:n.sale_coin,raise_coin_amount:n.raise_coin,total_purchase_amount:n.reality_raise_total,total_supply:n.sale_total,min_purchase:n.min_purchase,max_purchase:n.max_purchase,complete_raise_limit:n.least_raise_amount,softcap:n.softcap,max_raise_amount:n.hardcap,sale_decimals:0,raise_decimals:0,liquidity_injection_ratio:Number(n.liquidity_rate)/1e4,is_cancel:n.is_cancel,duration_summary:{start_time:Number(n.duration_manager.fields.start_time),end_time:0,settle_end_time:0,purchase_duration:Number(n.duration_manager.fields.activity_duration),settle_duration:Number(n.duration_manager.fields.settle_duration),lock_up_duration:Number(n.duration_manager.fields.locked_duration)},white_summary:{white_handle:n.white_list.fields.users.fields.id.id,protection_hard_cap:n.white_list.fields.hard_cap_total,protection_limit_used:n.white_list.fields.purchase_total,size:Number(n.white_list.fields.users.fields.size)},unused_sale:n.unused_sale,harvest_raise:n.harvest_raise,tick_spacing:Number(n.tick_spacing),owner:n.recipient,purchase_summary:{purchase_handle:n.purchase_list.fields.id.id,size:Number(n.purchase_list.fields.size)},pool_status:"Failed"};return Li.updatePoolStatus(r),r}static updatePoolStatus(t){let e=Number(E(Date.now()/1e3).toFixed(0)),{duration_summary:i}=t,n=i.start_time+i.purchase_duration,r=n+i.settle_duration;if(i.end_time=n,i.settle_end_time=r,t.is_settle)t.pool_status="Ended";else if(t.is_cancel)t.pool_status="Canceled";else if(e<i.start_time)t.pool_status="Upcoming";else if(e>i.start_time&&e<n)t.pool_status="Live";else if(e>n&&e<r){let o=t.raise_coin_amount;Number(o)<Number(t.complete_raise_limit)?t.pool_status="Failed":t.pool_status="Settle"}return t}static async calculatePoolPrice(t,e){let i=await t.ClmmSDK.CetusConfig.getTokenListByCoinTypes([e.coin_type_sale,e.coin_type_raise]),n=i[e.coin_type_sale].decimals,r=i[e.coin_type_raise].decimals;e.min_price=this.priceFixToReal(Number(E(e.softcap).div(E(e.total_supply))),n,r).toString(),e.max_price=this.priceFixToReal(Number(E(e.max_raise_amount).div(E(e.total_supply))),n,r).toString(),e.current_price=this.priceFixToReal(Number(e.current_price),n,r).toString(),e.sale_decimals=n,e.raise_decimals=r}static async getWithdrawRaise(t){return t.pool_status==="Ended"?t.harvest_raise:"0"}static async getWithdrawSale(t){return t.pool_status==="Ended"?t.unused_sale:t.sale_coin_amount}static async getHistoryWithdrawRaise(t,e){if(e.pool_status==="Ended"){if(E(e.harvest_raise).equals(E(0))){let n=await t.Launchpad.getSettleEvent(e.pool_address);n&&(e.harvest_raise=n.unused_raise)}let i=(0,_o.min)(new _o.default(e.total_purchase_amount),new _o.default(e.max_raise_amount));return E(i.toString()).mul(1-e.liquidity_injection_ratio).toString()}return"0"}static async getHistoryWithdrawSale(t,e){if(e.pool_status==="Ended"){let i=await t.Launchpad.getSettleEvent(e.pool_address);return i&&(e.unused_sale=i.unused_sale),e.unused_sale}return"0"}static async getOverrecruitReverseAmount(t,e){let i=await t.Launchpad.getPurchaseMarks(t.ClmmSDK.senderAddress,[e.pool_address],!1);if(i.length>0){let n=i[0].purchased_raise_amount,r=(await t.Launchpad.getPurchaseAmount(e.white_summary.white_handle,t.ClmmSDK.senderAddress)).safe_purchased_amount,{protection_limit_used:o}=e.white_summary;return E(n).sub(r).div(E(e.total_purchase_amount).sub(o)).mul(E(e.total_purchase_amount).sub(e.max_raise_amount)).toString()}return"0"}static async getCanPurchaseAmount(t,e){let i=await Li.getOverrecruitReverseAmount(t,e),n=await t.Launchpad.getPurchaseMarks(t.ClmmSDK.senderAddress,[e.pool_address],!1);if(n){let r=n[0].purchased_raise_amount;E(r).sub(i).div(e.current_price)}return"0"}},lw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPoolImmutables(t=[],e=0,i=100,n=!1){let{package_id:r}=this._sdk.sdkOptions.launchpad;if(r===void 0)throw Error("sdk.sdkOptions.launchpad is undefined");let o=`${r}_getPoolImmutables`,s=this.getCache(o,n),a=[],l=[];if(s!==void 0&&a.push(...s),a.length===0)try{((await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${r}::factory::CreatePoolEvent`}))?.data).forEach(y=>{let v=y.parsedJson;v&&a.push({pool_address:v.pool_id,coin_type_sale:V(v.sale_coin.name).full_address,coin_type_raise:V(v.raise_coin.name).full_address})}),this.updateCache(o,a,X)}catch(h){console.log("getPoolImmutables",h)}let u=t.length>0;for(let h=0;h<a.length;h+=1){let y=a[h];if(!(u&&!t.includes(y.pool_address))){if(!u){let v=h;if(v<e||v>=e+i)continue}l.push(y)}}return l}async getPoolImmutablesWithPage(t="all",e=!1){let{package_id:i}=this._sdk.sdkOptions.launchpad,n=`${i}_getPoolImmutables`,r=[],o={data:[],hasNextPage:!1},s=t==="all";if(s){let a=this.getCache(n,e);a&&r.push(...a)}if(r.length===0)try{let a=await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${i}::factory::CreatePoolEvent`},t);o.hasNextPage=a.hasNextPage,o.nextCursor=a.nextCursor,a.data.forEach(l=>{let u=l.parsedJson;u&&r.push({pool_address:u.pool_id,coin_type_sale:V(u.sale_coin.name).full_address,coin_type_raise:V(u.raise_coin.name).full_address})})}catch(a){console.log("getPoolImmutables",a)}return o.data=r,s&&this.updateCache(n,r,X),o}async getPools(t=[],e=0,i=100){let n=[],r=[];t.length>0?r=[...t]:(await this.getPoolImmutables([],e,i,!1)).forEach(a=>{r.push(a.pool_address)});let o=await this._sdk.ClmmSDK.fullClient.batchGetObjects(r,{showType:!0,showContent:!0});for(let s of o){let a=Li.buildLaunchPadPool(s);await Li.calculatePoolPrice(this._sdk,a),n.push(a);let l=`${a.pool_address}_getPoolObject`;this.updateCache(l,a,X)}return n}async getPool(t,e=!0){let i=`${t}_getPoolObject`,n=this.getCache(i,e);if(n!==void 0){let s=n;return Li.updatePoolStatus(s),s}let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),o=Li.buildLaunchPadPool(r);return await Li.calculatePoolPrice(this._sdk,o),this.updateCache(i,o),o}async getInitConfig(t=!1){let e=this._sdk.sdkOptions.launchpad.package_id,i=`${e}_getInitEvent`,n=this.getCache(i,t);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=zn(r),s=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({Transaction:o}))?.data,a={pools_id:"",admin_cap_id:"",config_cap_id:""};return s.length>0&&(s.forEach(l=>{let u=l.parsedJson;if(u)switch(V(l.type).full_address){case`${e}::config::InitConfigEvent`:a.admin_cap_id=u.admin_cap_id,a.config_cap_id=u.config_cap_id;break;case`${e}::factory::InitFactoryEvent`:a.pools_id=u.pools_id;break;default:break}}),this.updateCache(i,a,X)),a}async getLockNFT(t,e=!1){let i=`${t}_getLockNFT`,n=this.getCache(i,e);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}});if(!r.error)return Ji(r)}async getLockNFTList(t){let{package_id:e}=this._sdk.ClmmSDK.sdkOptions.clmm_pool,{sdkOptions:i}=this._sdk,n=[];try{let r=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${i.launchpad.package_id}::lock::LockNFTEvent`}))?.data;for(let o of r){let s=o.parsedJson;if(s){let a={locked_time:Number(s.locked_time),end_lock_time:Number(s.end_lock_time),nft_type:s.nft_type_name.name,lock_nft_id:s.lock_nft_id,recipient:s.recipient};if(t===a.recipient&&`${e}`===V(a.nft_type).address){let l=await this.getLockNFT(a.lock_nft_id);if(l){let u=V(l.coin_type_a).full_address,h=V(l.coin_type_b).full_address;n.push({...l,coin_type_a:u,coin_type_b:h,...a})}}}}return n}catch(r){return console.log("getLockNFTList:",r),[]}}async creatPoolTransactionPayload(t){let{launchpad:e}=this.sdk.sdkOptions,i=F(e);if(this.assertLuanchpadConfig(),this._sdk.ClmmSDK.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let n=Li.priceRealToFix(Number(t.initialize_price),t.sale_decimals,t.raise_decimals),r=new ri.TransactionBlock,o=E(t.total_supply).add(E(t.total_supply).mul(E(t.liquidity_rate))).toNumber(),s=await oe.syncBuildCoinInputForAmount(this._sdk.ClmmSDK,r,BigInt(o),t.coin_type_sale),a=[r.pure(i.admin_cap_id),r.pure(i.config_cap_id),r.pure(i.pools_id),r.pure((0,Mr.normalizeSuiAddress)(t.recipient)),r.pure((n*gh).toString()),s,r.pure(t.total_supply.toString()),r.pure(t.min_purchase.toString()),r.pure(t.max_purchase.toString()),r.pure(t.least_raise_amount.toString()),r.pure(t.hardcap.toString()),r.pure((t.liquidity_rate*1e3).toString()),r.pure(t.start_time.toString()),r.pure(t.activity_duration.toString()),r.pure(t.settle_duration.toString()),r.pure(t.locked_duration.toString()),r.pure(t.tick_spacing.toString()),r.pure(z)],l=[t.coin_type_sale,t.coin_type_raise];return r.moveCall({target:`${e.published_at}::${Yt}::create_launch_pool`,typeArguments:l,arguments:a}),r}async creatPurchasePayload(t){let{launchpad:e}=this.sdk.sdkOptions;if(this._sdk.ClmmSDK.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let i=new ri.TransactionBlock,n=await oe.syncBuildCoinInputForAmount(this._sdk.ClmmSDK,i,BigInt(t.purchase_amount),t.coin_type_raise),r=(await this.getPurchaseMarks(this._sdk.ClmmSDK.senderAddress,[t.pool_address],!1))[0],o=[t.coin_type_sale,t.coin_type_raise],s;return r?s=[i.pure(t.pool_address),i.pure(F(e).config_cap_id),i.pure(r.id),n,i.pure(t.purchase_amount.toString()),i.pure(z)]:s=[i.pure(t.pool_address),i.pure(F(e).config_cap_id),n,i.pure(t.purchase_amount.toString()),i.pure(z)],i.moveCall({target:`${e.published_at}::${Yt}::${r===void 0?"create_and_purchase":"purchase"}`,typeArguments:o,arguments:s}),i}async creatClaimPayload(t){let{launchpad:e}=this.sdk.sdkOptions;if(this._sdk.ClmmSDK.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let i=(await this.getPurchaseMarks(this._sdk.ClmmSDK.senderAddress,[t.pool_address],!1))[0],n=new ri.TransactionBlock,r=[t.coin_type_sale,t.coin_type_raise],o=[n.pure(t.pool_address),n.pure(F(e).config_cap_id),n.pure(i?.id),n.pure(z)];return n.moveCall({target:`${e.published_at}::${Yt}::claim`,typeArguments:r,arguments:o}),n}async creatSettlePayload(t){let{launchpad:e}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions;if(this._sdk.ClmmSDK.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");this.assertLuanchpadConfig();let n=F(i),{clmm_args:r}=t,o=new ri.TransactionBlock;o.setSender(this.sdk.ClmmSDK.senderAddress);let s=[t.coin_type_sale,t.coin_type_raise];if(r){let a=r.opposite?ie.priceToSqrtPriceX64(E(1).div(r.current_price),r.raise_decimals,r.sale_decimals).toString():ie.priceToSqrtPriceX64(E(r.current_price),r.sale_decimals,r.raise_decimals).toString(),l=BigInt(a)<BigInt(r.clmm_sqrt_price),u=r.opposite?l?t.coin_type_raise:t.coin_type_sale:l?t.coin_type_sale:t.coin_type_raise,h=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress,u),y=Ce.calculateTotalBalance(h);Ce.isSuiCoin(u)&&(y-=BigInt(2e8));let T=oe.buildCoinForAmount(o,h,y,u).targetCoin,O=r.opposite?l?"settle_with_reverse_clmm_only_with_a":"settle_with_reverse_clmm_only_with_b":l?"settle_only_with_a":"settle_only_with_b",P=[o.pure(t.pool_address),o.pure(F(e).config_cap_id),o.pure(r.clmm_pool_address),o.pure(n.global_config_id),o.pure(a),T,o.pure(z)];o.moveCall({target:`${e.published_at}::${Yt}::${O}`,typeArguments:s,arguments:P})}else o.moveCall({target:`${e.published_at}::${Yt}::settle`,typeArguments:s,arguments:[o.pure(t.pool_address),o.pure(F(e).config_cap_id),o.pure(z)]});return o}creatWithdrawPayload(t){let{launchpad:e}=this.sdk.sdkOptions,i=new ri.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise],r=[i.object(t.pool_address),i.object(F(e).config_cap_id),i.object(z)];return t.sale_amount>BigInt(0)&&i.moveCall({target:`${e.published_at}::${Yt}::withdraw_sale`,typeArguments:n,arguments:r}),t.raise_amount>BigInt(0)&&i.moveCall({target:`${e.published_at}::${Yt}::withdraw_raise`,typeArguments:n,arguments:r}),i}addUserToWhitelisPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let i=new ri.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise];return t.user_addrs.forEach(r=>{let o=[i.object(F(e).admin_cap_id),i.object(F(e).config_cap_id),i.object(t.pool_address),i.object(r),i.pure(t.safe_limit_amount),i.object(z)];i.moveCall({target:`${e.published_at}::${Yt}::add_user_to_whitelist`,typeArguments:n,arguments:o})}),i}updateWhitelistCapPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let i=new ri.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise];return t.safe_limit_amount>0&&i.moveCall({target:`${e.published_at}::${Yt}::update_whitelist_member_safe_limit_amount`,typeArguments:n,arguments:[i.object(F(e).admin_cap_id),i.object(F(e).config_cap_id),i.object(t.pool_address),i.pure(t.white_list_member),i.pure(t.safe_limit_amount),i.object(z)]}),t.hard_cap_total>0&&i.moveCall({target:`${e.published_at}::${Yt}::update_whitelist_hard_cap_total`,typeArguments:n,arguments:[i.object(F(e).admin_cap_id),i.object(F(e).config_cap_id),i.object(t.pool_address),i.pure(t.hard_cap_total),i.object(z)]}),i}creatRemoveWhitelistPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let i=new ri.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise];return t.user_addrs.forEach(r=>{let o=[i.object(F(e).admin_cap_id),i.object(F(e).config_cap_id),i.object(t.pool_address),i.object(r),i.object(z)];i.moveCall({target:`${e.published_at}::${Yt}::remove_user_from_whitelist`,typeArguments:n,arguments:o})}),i}creatCancelPoolPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let i=new ri.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise],r=[i.pure(F(e).admin_cap_id),i.pure(F(e).config_cap_id),i.pure(t.pool_address),i.pure(z)];return i.moveCall({target:`${e.published_at}::${Yt}::cancel`,typeArguments:n,arguments:r}),i}updateRecipientPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let i=new ri.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise],r=[i.pure(F(e).admin_cap_id),i.pure(F(e).config_cap_id),i.pure(t.pool_address),i.pure(t.new_recipient),i.pure(z)];return i.moveCall({target:`${e.published_at}::${Yt}::update_recipient_address`,typeArguments:n,arguments:r}),i}updatePoolDuractionPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let i=new ri.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise],r=[i.pure(F(e).admin_cap_id),i.pure(F(e).config_cap_id),i.pure(t.pool_address),i.pure(t.activity_duration),i.pure(t.settle_duration),i.pure(t.lock_duration),i.pure(z)];return i.moveCall({target:`${e.published_at}::${Yt}::update_pool_duration`,typeArguments:n,arguments:r}),i}creatUnlockNftPayload(t){let{launchpad:e}=this.sdk.sdkOptions;if(F(e)===void 0)throw Error("getPackagerConfigs(launchpad) is null");let i=new ri.TransactionBlock,n=[t.nft_type],r=[i.pure(t.lock_nft),i.pure(z)];return i.moveCall({target:`${e.published_at}::lock::unlock_nft`,typeArguments:n,arguments:r}),i}async isAdminCap(t){let{launchpad:e}=this._sdk.sdkOptions;if(F(e)===void 0)throw Error("launchpad config is empty");let i=`${t}_isAdminCap`,n=this.getCache(i);if(n)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:F(e).admin_cap_id,options:{showType:!0,showOwner:!0}});console.log(r);let o=Ii(r),s=Ir(r),a=!1;return s&&o&&V(o).source_address===`${e.package_id}::config::AdminCap`&&(a=(0,Mr.normalizeSuiAddress)(s.AddressOwner)===(0,Mr.normalizeSuiAddress)(t)),this.updateCache(i,a,X),a}async isWhiteListUser(t,e){let i={type:"address",value:e};try{let n=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:i});return!!(n&&n.data)}catch{return!1}}async getPurchaseAmount(t,e){let i={type:"address",value:e};try{let n=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:i}),r=te(n);if(console.log(r),r)return r?.value?.fields}catch{}return{safe_limit_amount:"0",safe_purchased_amount:"0"}}async getPurchaseMarks(t,e=[],i=!0){let{launchpad:n}=this._sdk.sdkOptions,r=`${e}_getPurchaseMark`,o=this.getCache(r,i);if(!i&&o!==void 0)return o;let s=null,a=[];for(;;){let l=await this._sdk.ClmmSDK.fullClient.getOwnedObjects({owner:t,options:{showType:!0,showContent:!0,showDisplay:!0},cursor:s});for(let u of l.data){let{fields:h}=u.data.content;if(V($t(u)).source_address===`${n.package_id}::pool::PurchaseMark`){console.log("fields: ",h);let v={id:h.id.id,pool_id:V(h.pool_id).address,purchased_raise_amount:h.purchase_total,obtain_sale_amount:h.obtain_sale_amount,used_raise_amount:h.used_raise_amount};e.length>0?e.includes(v.pool_id)&&a.push(v):a.push(v)}}if(l.hasNextPage)s=l.nextCursor;else break}return this.updateCache(r,a,X),a}async getSettleEvent(t){let{launchpad:e}=this._sdk.sdkOptions,i=`${t}_getPurchaseMark`,n=this.getCache(i);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${e.package_id}::pool::SettleEvent`});for(let o of r.data){let s=o.parsedJson;if(t===(0,Mr.normalizeSuiObjectId)(s.pool_id)){let a={pool_id:s.pool_id,settle_price:s.settle_price,unused_sale:s.unused_sale,unused_raise:s.unused_raise,white_purchase_total:s.white_purchase_total};return this.updateCache(i,a,X),a}}}buildLaunchpadCoinType(t,e){return xr(this._sdk.sdkOptions.launchpad.package_id,"pool","PoolLiquidityCoin",[t,e])}assertLuanchpadConfig(){let{launchpad:t}=this.sdk.sdkOptions;if(F(t)===void 0)throw Error("sdk getPackagerConfigs(launchpad) is null")}updateCache(t,e,i=Ge){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t];if(!e&&i?.isValid())return i.value;delete this._cache[t]}},yn=class{static buildPoolImmutables(t){let{fields:e}=t.value.fields.value;return{clmm_pool_id:V(e.clmm_pool_id).address,bonus_type:V(e.bonus_type.fields.name).source_address,pool_id:V(e.pool_id).address,coinTypeA:V(e.coin_type_a.fields.name).source_address,coinTypeB:V(e.coin_type_b.fields.name).source_address}}static buildPoolState(t){let e=te(t),i=[];return e.config.fields.contents.forEach(r=>{i.push({rate:Number(E(r.fields.key).div(Er)),multiplier:Number(E(r.fields.value).div(Er))})}),{balance:e.balance,config:i,is_open:e.is_open,index:Number(e.index),start_time:Number(e.start_time),interval_day:Number(e.interval_day),minimum_percent_to_reward:Number(E(e.minimum_percent_to_reward).div(Er)),rewarders:{rewarder_handle:e.rewarders.fields.id.id,size:Number(e.rewarders.fields.size)},whale_nfts:{whale_nfts_handle:e.whale_nfts.fields.id.id,size:Number(e.whale_nfts.fields.size)},points:{point_handle:e.points.fields.id.id,size:Number(e.points.fields.size)}}}static buildMarkerPositions(t){let{contents:e}=t.value.fields.value.fields,i=[],n=t.id.id;return e.forEach(r=>{let{key:o,value:s}=r.fields,a={id:o,period_id:n,bonus_num:s.fields.bonus_num,point:s.fields.point,is_burn:s.fields.is_burn,point_after_multiplier:s.fields.point_after_multiplier,percent:Number(E(s.fields.percent).div(Er)),fee_share_rate:0,is_redeemed:s.fields.is_redeemed};i.push(a)}),i}static buildPoolBonusInfo(t){let{fields:e,type:i}=t.value.fields.value;return{type:i,time:Number(e.time),settle_time:Number(e.settle_time),settled_num:e.settled_num,is_settled:e.is_settled,basis_bonus:e.basis_bonus,total_bonus:e.total_bonus,is_vacant:e.is_vacant,redeemed_num:e.redeemed_num}}static getBonusPercent(t,e){let i=0;for(let n of t)e>=n.rate&&n.rate>i&&(i=n.multiplier);return i}},fh="router",uw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPoolImmutables(t=!1){let{maker_bonus:e}=this._sdk.sdkOptions,i=`${e.package_id}_getPoolImmutables`,n=this.getCache(i,t),r=[];if(n!==void 0)r.push(...n);else{let o=[];(await this._sdk.ClmmSDK.fullClient.getDynamicFieldsByPage(F(e).maker_pool_handle)).data?.forEach(l=>{o.push(l.objectId)});let a=await this._sdk.ClmmSDK.fullClient.batchGetObjects(o,{showContent:!0});for(let l of a){let u=te(l);u&&r.push(yn.buildPoolImmutables(u))}}return r}async getPoolImmutable(t){let{maker_bonus:e}=this._sdk.sdkOptions,i=`${e.package_id}_getPoolImmutables`,n=this.getCache(i);if(n!==void 0){let s=n.filter(a=>t===a.pool_id);if(s.length>0)return s[0]}let r=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:F(e).maker_pool_handle,name:{type:"0x2::object::ID",value:t}}),o=te(r);return yn.buildPoolImmutables(o)}async getPools(){let t=[],e=await this.getPoolImmutables(),i=e.map(o=>o.pool_id),n=await this._sdk.ClmmSDK.fullClient.batchGetObjects(i,{showType:!0,showContent:!0}),r=0;for(let o of n){let s=yn.buildPoolState(o);if(s){let a={...e[r],...s};t.push(a);let l=`${a.pool_id}_getPoolObject`;this.updateCache(l,a,X)}r+=1}return t}async getPool(t,e=!0){let i=`${t}_getPoolObject`,n=this.getCache(i,e),r=await this.getPoolImmutable(t);if(n!==void 0)return n;let o=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),s=yn.buildPoolState(o),a={...r,...s};return this.updateCache(i,a,X),a}async getPoolHandleId(t){let e=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),i=te(e);return i?i.list.fields.id.id:""}async getMakerPoolPeriods(t,e=!1){let i=[],n=`${t.pool_id}_getMakerPoolPeriods`,r=this.getCache(n,e);return r!==void 0?r:((await this._sdk.ClmmSDK.fullClient.getDynamicFieldsByPage(t.whale_nfts.whale_nfts_handle)).data.forEach(s=>{let a={id:s.objectId,start_time:0,end_time:0,period:Number(s.name.value)};a.start_time=Number(E(t.start_time).add(E(t.interval_day).mul(24*3600).mul(a.period)).toFixed(0,U.ROUND_DOWN)),a.end_time=Number(E(a.start_time).add(E(t.interval_day).mul(24*3600)).toFixed(0,U.ROUND_DOWN)),i.push(a)}),this.updateCache(n,i,X),i)}async getMakerBonusInitConfigs(){let{package_id:t}=this.sdk.sdkOptions.maker_bonus,e=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::config::InitEvent`}))?.data,i={maker_config_id:"",maker_pool_handle:""};return e.length>0&&e.forEach(n=>{let r=n.parsedJson;r&&(i.maker_config_id=r.config_id)}),i.maker_pool_handle=await this.getPoolHandleId(i.maker_config_id),i}async getPoolMarkerPositionList(t,e,i=!1){let n={},r=[];i||e.forEach(o=>{let s=`${t}_${o.period}_getPoolMarkerPositionList`,a=this.getCache(s);a!==void 0?n[o.period]=a:(n[o.period]=[],r.push(o))});try{r.length>0&&(await this._sdk.ClmmSDK.fullClient.batchGetObjects(r.map(a=>a.id),{showContent:!0})).forEach(a=>{let l=te(a),u=yn.buildMarkerPositions(l);if(u.length>0){let{period_id:h}=u[0],y=e.filter(v=>v.id===h)[0];n[y.period]=u}});let o=[];for(let s in n)n[s].forEach(l=>{o.push(l)});if(o.length>0){let s=await this._sdk.ClmmSDK.Position.getSipmlePositionList(o.map(a=>a.id));for(let a of o)for(let l of s)if(a.id===l.pos_object_id){a.clmm_position=l;break}}}catch(o){console.log(o)}for(let o in n){let s=`${t}_${o}_getPoolMarkerPositionList`;this.updateCache(s,n[o],X)}return n}async updateXCetusRewarderAndFee(t,e,i){let n=await this.calculateTotalPointsAfterMultiper(t,i);for(let r of e)await this.calculateXCetusRewarder(t,r,i.period,n);return e}async calculateXCetusRewarder(t,e,i,n){let r=await this.getPoolBonusInfo(t.rewarders.rewarder_handle,i),{fee_share_rate:o}=this.calculateFeeShareRate(t,e,n),s=E(o).mul(r.total_bonus);return e.is_redeemed?e.bonus_num="0":e.bonus_num=s.toString(),e.bonus_num}calculateFeeShareRate(t,e,i){let n=yn.getBonusPercent(t.config,e.percent),r=E(e.point).mul(n),o=E(r).div(i);return e.point_after_multiplier=r.toString(),e.fee_share_rate=Number(o),{fee_share_rate:Number(o),points_after_multiper:r.toString()}}async calculateTotalPointsAfterMultiper(t,e){let i=await this.getPoolMarkerPositionList(t.whale_nfts.whale_nfts_handle,[e]),n=E(0),r=i[e.period];for(let o of r){let s=yn.getBonusPercent(t.config,o.percent),a=E(o.point).mul(s);n=n.add(a)}return n.toString()}async calculateAllXCetusRewarder(t){let e=this._sdk.ClmmSDK.senderAddress,i=E(0),n=[];for(let r of t){let o=await this._sdk.MakerModule.getMakerPoolPeriods(r),s=await this._sdk.MakerModule.getPoolMarkerPositionList(r.whale_nfts.whale_nfts_handle,o),a=[];for(let l of o){let u=s[l.period].filter(h=>e.length===0?!1:h.clmm_position?.owner===e);u.length>0&&(await this._sdk.MakerModule.updateXCetusRewarderAndFee(r,u,l),u.forEach(h=>{h.clmm_position?.position_status===ll.Exists&&E(h.bonus_num).greaterThan(0)&&(i=i.add(h.bonus_num),a.includes(h.clmm_position.pos_object_id)||a.push(h.clmm_position.pos_object_id))}))}n.push({bonus_type:r.bonus_type,pool_id:r.pool_id,nft_ids:a})}return{claimtotal:i,claimRecord:n}}async getPoolBonusInfo(t,e,i=!1){let n=`${t}_${e}_getPoolBonusInfo`,r=this.getCache(n,i);if(r!==void 0)return r;let o=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"u64",value:e.toString()}}),s=te(o),a=yn.buildPoolBonusInfo(s);return this.updateCache(n,a,Ge),a}claimPayload(t){let{maker_bonus:e,xcetus:i}=this.sdk.sdkOptions,n=new pl.TransactionBlock;return n.moveCall({target:`${e.published_at}::${fh}::claim`,typeArguments:[t.bonus_type],arguments:[n.pure(F(e).maker_config_id),n.pure(t.market_pool_id),n.pure(t.position_nft_id),n.pure(t.phase),n.pure(F(i).lock_manager_id),n.pure(F(i).xcetus_manager_id),n.pure(t.ve_nft_id)]}),n}claimAllPayload(t){let{maker_bonus:e,xcetus:i}=this.sdk.sdkOptions,n=new pl.TransactionBlock;return t.whale_nfts.forEach(r=>{r.nft_ids.forEach(o=>{n.moveCall({target:`${e.published_at}::${fh}::claim_all`,typeArguments:[r.bonus_type],arguments:[n.object(F(e).maker_config_id),n.object(r.pool_id),n.object(o),n.object(F(i).lock_manager_id),n.object(F(i).xcetus_manager_id),n.object(t.ve_nft_id)]})})}),n}updateCache(t,e,i=Ge){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t];if(!e&&i?.isValid())return i.value;delete this._cache[t]}},Or="router",fl="router",go=24*3600,ta=1e3,hi=1e11,Xn=class{static buildVeNFTDividendInfo(t){let e={id:t.id.id,ve_nft_id:t.name,rewards:[]};return t.value.fields.value.fields.dividends.fields.contents.forEach(i=>{let n=[];i.fields.value.fields.contents.forEach(r=>{n.push({coin_type:V(r.fields.key.fields.name).source_address,amount:r.fields.value})}),e.rewards.push({period:Number(i.fields.key),rewards:n})}),e}static buildDividendManager(t){let e={id:t.id.id,dividends:{id:t.dividends.fields.id.id,size:t.dividends.fields.size},venft_dividends:{id:t.venft_dividends.fields.id.id,size:t.venft_dividends.fields.size},bonus_types:[],start_time:Number(t.start_time),interval_day:Number(t.interval_day),balances:{id:t.balances.fields.id.id,size:t.balances.fields.size},is_open:t.is_open};return t.bonus_types.forEach(i=>{e.bonus_types.push(V(i.fields.name).source_address)}),e}static buildLockUpManager(t){return{id:t.id.id,balance:t.balance,treasury_manager:t.treasury_manager,extra_treasury:t.extra_treasury,lock_infos:{lock_handle_id:t.lock_infos.fields.id.id,size:Number(t.lock_infos.fields.size)},type_name:Lt(t.type_name.fields.name),min_lock_day:Number(t.min_lock_day),max_lock_day:Number(t.max_lock_day),package_version:Number(t.package_version),max_percent_numerator:Number(t.max_percent_numerator),min_percent_numerator:Number(t.min_percent_numerator)}}static buildLockCetus(t){let e=t.fields,i={id:e.id.id,type:V(t.type).source_address,locked_start_time:Number(e.locked_start_time),locked_until_time:Number(e.locked_until_time),cetus_amount:e.balance,xcetus_amount:"0",lock_day:0};return i.lock_day=(i.locked_until_time-i.locked_start_time)/go,i}static getAvailableXCetus(t,e){let i=E(0);return e.forEach(n=>{i=i.add(n.xcetus_amount)}),E(t.xcetus_balance).sub(i).toString()}static getWaitUnLockCetuss(t){return t.filter(e=>!Xn.isLocked(e))}static getLockingCetuss(t){return t.filter(e=>Xn.isLocked(e))}static isLocked(t){return t.locked_until_time>Date.parse(new Date().toString())/1e3}static buildDividendRewardTypeList(t){let e=new Set;return t.forEach(i=>{i.rewards.forEach(n=>{e.add(n.coin_type)})}),Array.from(e)}static getNextStartTime(t){let e=Date.now()/1e3,{start_time:i,interval_day:n}=t,r=Math.ceil((e-i)/(n*go));return i+r*n*go}},dw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getOwnerVeNFT(t,e=!0){let{xcetus:i}=this.sdk.sdkOptions,n=`${t}_getLockUpManagerEvent`,r=this.getCache(n,e);if(r!==void 0)return r;let o,s=`${i.package_id}::xcetus::VeNFT`;return(await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0,showDisplay:!0},filter:{StructType:s}})).data.forEach(l=>{let u=V($t(l)).source_address;if(u===s&&l.data&&l.data.content){let{fields:h}=l.data.content;o={...Gn(l),id:h.id.id,index:h.index,type:u,xcetus_balance:h.xcetus_balance},this.updateCache(n,o,X)}}),o}async getOwnerLockCetuss(t){let{xcetus:e}=this.sdk.sdkOptions,i=[],n=`${e.package_id}::lock_coin::LockedCoin<${this.buileCetusCoinType()}>`,r=await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0},filter:{StructType:n}});for(let o of r.data)if(V($t(o)).source_address===n&&o.data){let a=Xn.buildLockCetus(o.data.content);a.xcetus_amount=await this.getXCetusAmount(a.id),i.push(a)}return i}async getLockCetus(t){let e=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0}});if(e.data?.content){let i=Xn.buildLockCetus(e.data.content);return i.xcetus_amount=await this.getXCetusAmount(i.id),i}}async getOwnerCetusCoins(t){return await this._sdk.ClmmSDK.getOwnerCoinAssets(t,this.buileCetusCoinType())}mintVeNFTPayload(){let{xcetus:t}=this.sdk.sdkOptions,e=new Yi.TransactionBlock;return e.moveCall({target:`${t.published_at}::${Or}::mint_venft`,typeArguments:[],arguments:[e.pure(F(t).xcetus_manager_id)]}),e}async convertPayload(t){let{xcetus:e}=this.sdk.sdkOptions,i=new Yi.TransactionBlock,n=this.buileCetusCoinType(),r=await oe.syncBuildCoinInputForAmount(this._sdk.ClmmSDK,i,BigInt(t.amount),n);return t.venft_id===void 0?i.moveCall({target:`${e.published_at}::${Or}::mint_and_convert`,typeArguments:[],arguments:[i.object(F(e).lock_manager_id),i.object(F(e).xcetus_manager_id),r,i.pure(t.amount)]}):i.moveCall({target:`${e.published_at}::${Or}::convert`,typeArguments:[],arguments:[i.object(F(e).lock_manager_id),i.object(F(e).xcetus_manager_id),r,i.pure(t.amount),i.pure(t.venft_id)]}),i}redeemLockPayload(t){let{xcetus:e}=this.sdk.sdkOptions,i=new Yi.TransactionBlock;return i.moveCall({target:`${e.published_at}::${Or}::redeem_lock`,typeArguments:[],arguments:[i.pure(F(e).lock_manager_id),i.pure(F(e).xcetus_manager_id),i.pure(t.venft_id),i.pure(t.amount),i.pure(t.lock_day),i.pure(z)]}),i}redeemPayload(t){let{xcetus:e}=this.sdk.sdkOptions,i=new Yi.TransactionBlock;return i.moveCall({target:`${e.published_at}::${Or}::redeem`,typeArguments:[],arguments:[i.pure(F(e).lock_manager_id),i.pure(F(e).xcetus_manager_id),i.pure(t.venft_id),i.pure(t.lock_id),i.pure(z)]}),i}redeemDividendPayload(t,e){let{xcetus:i,xcetus_dividends:n}=this.sdk.sdkOptions,r=new Yi.TransactionBlock;return e.forEach(o=>{r.moveCall({target:`${i.published_at}::${fl}::redeem`,typeArguments:[o],arguments:[r.object(F(n).dividend_manager_id),r.object(t)]})}),r}redeemDividendV2Payload(t,e,i){let{xcetus_dividends:n}=this.sdk.sdkOptions,r=new Yi.TransactionBlock;return e.filter(s=>i.includes(s)).length>0&&(r=this.redeemDividendXTokenPayload(t,r)),e.forEach(s=>{i.includes(s)||r.moveCall({target:`${n.published_at}::${fl}::redeem_v2`,typeArguments:[s],arguments:[r.object(F(n).dividend_manager_id),r.object(t),r.object(z)]})}),r}redeemDividendXTokenPayload(t,e){let{xcetus_dividends:i,xcetus:n}=this.sdk.sdkOptions,{xcetus_manager_id:r,lock_manager_id:o}=F(n),{dividend_manager_id:s}=F(i);return e=e===void 0?new Yi.TransactionBlock:e,e.moveCall({target:`${i.published_at}::${fl}::redeem_xtoken`,typeArguments:[],arguments:[e.object(o),e.object(r),e.object(s),e.object(t),e.object(z)]}),e}buileCetusCoinType(){return`${this.sdk.sdkOptions.cetus_faucet.package_id}::cetus::CETUS`}buileXTokenCoinType(t=this._sdk.sdkOptions.xcetus.package_id,e="xcetus",i="XCETUS"){return`${t}::${e}::${i}`}cancelRedeemPayload(t){let{xcetus:e}=this.sdk.sdkOptions,i=new Yi.TransactionBlock;return i.moveCall({target:`${e.published_at}::${Or}::cancel_redeem_lock`,typeArguments:[],arguments:[i.pure(F(e).lock_manager_id),i.pure(F(e).xcetus_manager_id),i.pure(t.venft_id),i.pure(t.lock_id),i.pure(z)]}),i}async getInitConfigs(){let{package_id:t}=this.sdk.sdkOptions.xcetus,e=`${t}_getInitFactoryEvent`,i=this.getCache(e);if(i!==void 0)return i;let n=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::xcetus::InitEvent`}))?.data,r={xcetus_manager_id:"",lock_manager_id:"",lock_handle_id:""};n.length>0&&n.forEach(s=>{let a=s.parsedJson;a&&(r.xcetus_manager_id=a.xcetus_manager)});let o=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::locking::InitializeEvent`}))?.data;return o.length>0&&o.forEach(s=>{let a=s.parsedJson;a&&(r.lock_manager_id=a.lock_manager)}),r.lock_manager_id.length>0&&(r.lock_handle_id=(await this.getLockUpManager(r.lock_manager_id)).lock_infos.lock_handle_id),this.updateCache(e,r,X),r}async getLockUpManager(t=F(this.sdk.sdkOptions.xcetus).lock_manager_id,e=!1){let i=`${t}_getLockUpManager`,n=this.getCache(i,e);if(n!==void 0)return n;let r=await this.sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),o=Xn.buildLockUpManager(te(r));return this.updateCache(i,o,X),o}async getDividendConfigs(){let{package_id:t}=this.sdk.sdkOptions.xcetus_dividends,e=`${t}_getDividendManagerEvent`,i=this.getCache(e);if(i!==void 0)return i;let n=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::dividend::InitEvent`}))?.data,r={dividend_manager_id:"",dividend_admin_id:"",dividend_settle_id:""};return n.length>0&&n.forEach(o=>{let s=o.parsedJson;s&&(r.dividend_manager_id=s.manager_id,r.dividend_admin_id=s.admin_id,r.dividend_settle_id=s.settle_id,this.updateCache(e,r,X))}),r}async getDividendManager(t=!1){let{dividend_manager_id:e}=F(this._sdk.sdkOptions.xcetus_dividends),i=`${e}_getDividendManager`,n=this.getCache(i,t);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0}}),o=te(r),s=Xn.buildDividendManager(o);return this.updateCache(i,s,X),s}async getXcetusManager(t=!0){let{xcetus_manager_id:e}=F(this._sdk.sdkOptions.xcetus),i=`${e}_getXcetusManager`,n=this.getCache(i,t);if(n)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0}}),o=te(r),s={id:o.id.id,index:Number(o.index),has_venft:{handle:o.has_venft.fields.id.id,size:o.has_venft.fields.size},nfts:{handle:o.nfts.fields.id.id,size:o.nfts.fields.size},total_locked:o.total_locked,treasury:o.treasury.fields.total_supply.fields.value};return this.updateCache(i,s),s}async getVeNFTDividendInfo(t,e){try{let i=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),n=te(i);return Xn.buildVeNFTDividendInfo(n)}catch{return}}async redeemNum(t,e){if(BigInt(t)===BigInt(0))return{amountOut:"0",percent:"0"};let i=await this.getLockUpManager(F(this._sdk.sdkOptions.xcetus).lock_manager_id),n=E(hi).mul(E(i.max_lock_day).sub(E(e))).mul(E(i.max_percent_numerator).sub(E(i.min_percent_numerator))).div(E(i.max_lock_day).sub(E(i.min_lock_day))),r=E(hi).mul(E(i.max_percent_numerator)).sub(n).div(E(ta)).div(hi);return{amountOut:E(r).mul(E(t)).round().toString(),percent:r.toString()}}async reverseRedeemNum(t,e){if(BigInt(t)===BigInt(0))return{amountOut:"0",percent:"0"};let i=await this.getLockUpManager(F(this._sdk.sdkOptions.xcetus).lock_manager_id),n=E(hi).mul(E(i.max_lock_day).sub(E(e))).mul(E(i.max_percent_numerator).sub(E(i.min_percent_numerator))).div(E(i.max_lock_day).sub(E(i.min_lock_day))),r=E(hi).mul(E(i.max_percent_numerator)).sub(n).div(E(ta)).div(hi);return{amountOut:E(t).div(r).toFixed(0,U.ROUND_UP),percent:r.toString()}}async getXCetusAmount(t){let{lock_handle_id:e}=F(this._sdk.sdkOptions.xcetus),i=`${t}_getXCetusAmount`,n=this.getCache(i);if(n!==void 0)return n;try{let r=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:e,name:{type:"0x2::object::ID",value:t}}),o=te(r);if(o){let{xcetus_amount:s}=o.value.fields.value.fields;return this.updateCache(i,s,X),s}}catch{}return"0"}async getVeNftAmount(t,e){try{let i=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),n=te(i);if(n){let{lock_amount:r,xcetus_amount:o}=n.value.fields.value.fields;return{lock_amount:r,xcetus_amount:o}}}catch{}return{lock_amount:"0",xcetus_amount:"0"}}async getPhaseDividendInfo(t,e=!1){let n=(await this.getDividendManager()).dividends.id,r=`${n}_${t}_getPhaseDividendInfo`,o=this._sdk.getCache(r,e);if(o)return o;try{let s=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:n,name:{type:"u64",value:t}}),a=te(s),l=a.value.fields.value.fields,u=l.redeemed_num.fields.contents.map(T=>({name:T.fields.key.fields.name,value:T.fields.value})),h=l.bonus_types.map(T=>T.fields.name),y=l.bonus.fields.contents.map(T=>({name:T.fields.key.fields.name,value:T.fields.value})),v={id:Ht(s),phase:a.name,settled_num:l.settled_num,register_time:l.register_time,redeemed_num:u,is_settled:l.is_settled,bonus_types:h,bonus:y,phase_end_time:""};return this.updateCache(r,v),v}catch{}}updateCache(t,e,i=Ge){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t];if(!e&&i?.isValid())return i.value;delete this._cache[t]}},fw="factory",fi="oversubscribe_pool",_h=1e6,Dr=1e18;var Pr="router",hl="router",Xs="router";var hh={curve:{strategy:3,both_side:{div_width:10,ratios:[.333333,.266666,.2,.133333,.066666]},one_side:{div_width:5,ratios:[.333333,.266666,.2,.133333,.066666]}},bidAsk:{strategy:4,both_side:{div_width:10,ratios:[.172413793,.137931034,.103448276,.068965517,.034482759,.068965517,.103448276,.137931034,.172413793]},one_side:{div_width:5,ratios:[.066666667,.13333333,.2,.266666667,.333333333]}}};function hw(t){return"master_address"in t}var pw="router",mw="vaults",gw=1e4;var Zt=class{static buildIdoPoolImmutables(t){return{pool_address:(0,ml.normalizeSuiObjectId)(t.pool_id),coin_type_sale:V(t.sale_coin_type.name).full_address,coin_type_raise:V(t.raise_coin_type.name).full_address,tick_spacing:Number(t.tick_spacing),total_supply:t.total_supply,min_purchase:t.min_purchase_amount,max_purchase:t.max_purchase_amount}}static buildIdoPool(t){let e=$t(t),i=V(e),n=te(t);console.log("fields:",n);let r={pool_address:(0,ml.normalizeSuiObjectId)(n.id.id),coin_type_sale:i.type_arguments[0],coin_type_raise:i.type_arguments[1],tick_spacing:Number(n.tick_spacing),total_supply:n.total_supply,min_purchase:n.min_purchase_amount,max_purchase:n.max_purchase_amount},o={start_time:Number(n.duration_manager.fields.start_time),lock_up_duration:Number(n.duration_manager.fields.lock_up_duration),purchase_duration:Number(n.duration_manager.fields.purchase_duration),end_time:0};o.end_time=o.start_time+o.purchase_duration;let s={complete_raise_limit:n.complete_raise_limit,liquidity_injection_ratio:E(n.liquidity_injection_ratio).div(_h).toNumber(),current_sqrt_price_min:n.current_sqrt_price_min,current_sqrt_price_max:n.current_sqrt_price_max,owner:n.owner,sale_coin_amount:n.sale_coin,raise_coin_amount:n.raise_coin,price:n.price,current_price:n.price,duration_summary:o,is_cancelled:n.is_cancelled,is_liquidity_injected:n.is_liquidity_injected,liquidity_used_raise_amount:n.liquidity_used_raise_amount,liquidity_used_sale_amount:n.liquidity_used_sale_amount,purchase_summary:{size:Number(n.purchase_manager.fields.purchases.fields.size),purchase_handle:n.purchase_manager.fields.purchases.fields.id.id},total_purchase_amount:n.total_purchase_amount,white_summary:{white_list_id:n.white_list.fields.id.id,protection_limit_used:n.white_list.fields.protection_limit_used,protection_hard_cap:n.white_list.fields.protection_hard_cap,white_handle:n.white_list.fields.addresses.fields.id.id,size:Number(n.white_list.fields.addresses.fields.size)},pool_status:"Upcoming",max_raise_amount:"",sale_decimals:0,raise_decimals:0,is_withdrawn:n.is_withdrawn};return Zt.updatePoolStatus(s),{...r,...s}}static is_init_period(t){return Number(E(Date.now()/1e3).toFixed(0))<t.start_time}static is_purchase_period(t){let e=Number(E(Date.now()/1e3).toFixed(0));return e>=t.start_time&&e<=t.start_time+t.purchase_duration}static is_claim_period(t){let e=Number(E(Date.now()/1e3).toFixed(0)),i=t.start_time+t.purchase_duration;return e>i}static is_can_inject_liquidity(t){return!t.is_cancelled&&t.liquidity_injection_ratio!==0&&Zt.is_claim_period(t.duration_summary)&&!t.is_liquidity_injected}static is_can_withdraw(t){return t.is_withdrawn?!1:Zt.is_sale_failed(t)?!0:(t.liquidity_injection_ratio===0||t.is_liquidity_injected)&&Zt.is_claim_period(t.duration_summary)}static is_sale_failed(t){return!!(t.is_cancelled||Zt.is_claim_period(t.duration_summary)&&E(t.total_purchase_amount).lessThan(t.complete_raise_limit))}static buildPurchaseInfo(t){return{...t.value.fields.value.fields,owner:t.name}}static calculateRedeemAmount(t,e){let i,n;if(Zt.is_sale_failed(t))i="0",n="0";else if(e.is_redeemed)i=e.obtained_sale_amount,n=e.used_raise_amount;else if(E(t.total_purchase_amount).lessThanOrEqualTo(t.max_raise_amount))i=E(e.purchased_raise_amount).mul(Dr).div(t.price).toString(),n=e.purchased_raise_amount;else{let o=Zt.redeemForSaleOversubcribeV2(t,e);i=o.user_obtained_sale_amount,n=o.user_used_raise_amount_ceil}i=U.floor(i);let r=U.floor(E(e.purchased_raise_amount).sub(n).toString());return{obtained_sale_amount:i,refunded_raise_amount:r}}static calculateWithdrawAmount(t){let e,i,n=E(t.total_supply).mul(t.liquidity_injection_ratio);if(Zt.is_sale_failed(t))e="0",i=E(n).add(t.total_supply);else{let{max_raise_amount:r}=t;E(t.total_purchase_amount).greaterThanOrEqualTo(r)?(e=E(r).sub(t.liquidity_used_raise_amount).toString(),i="0"):(e=E(t.total_purchase_amount).sub(t.liquidity_used_raise_amount),i=E(t.total_supply).add(n).sub(t.liquidity_used_sale_amount).sub(Zt.get_sold_amount(t)))}return{obtained_raise_amount:U.floor(e).toString(),refunded_sale_amount:U.ceil(i).toString()}}static get_sold_amount(t){return E(t.total_purchase_amount).greaterThanOrEqualTo(t.max_raise_amount)?t.total_supply:E(t.total_purchase_amount).mul(Dr).div(t.price)}static redeemForSaleOversubcribe(t,e){let i=e.protection_raise_amount,n=E(e.purchased_raise_amount).sub(i),r=t.max_raise_amount,{protection_limit_used:o}=t.white_summary,s=E(r).sub(o),a=E(t.total_purchase_amount).sub(o),l=U.ceil(n.mul(s).div(a).add(i)),u=U.floor(n.mul(s).div(a).add(i));return{user_obtained_sale_amount:U.floor(E(t.total_supply).mul(u).div(r)),user_used_raise_amount_ceil:l}}static redeemForSaleOversubcribeV2(t,e){let i=e.protection_raise_amount,n=E(e.purchased_raise_amount).sub(i),r=t.max_raise_amount,{protection_limit_used:o}=t.white_summary,s=E(r).sub(o),a=E(t.total_purchase_amount).sub(o),l=E(i).mul(a).add(E(n).mul(s)).mul(Dr).div(E(a).mul(t.price)),u=U.ceil(l.mul(t.price).div(Dr));return{user_obtained_sale_amount:l,user_used_raise_amount_ceil:u}}static raiseTotalAmount(t){let e=E(t.sale_decimals-t.raise_decimals).abs().toNumber();return t.sale_decimals>t.raise_decimals?E(t.total_supply).mul(t.current_price).div(E(10).pow(E(e))).toString():E(t.total_supply).mul(t.current_price).mul(E(10).pow(E(e))).toString()}static updatePoolStatus(t){let e=Number(E(Date.now()/1e3).toFixed(0)),i=t.duration_summary,n=i.start_time+i.purchase_duration;t.is_cancelled?t.pool_status="Canceled":e<i.start_time?t.pool_status="Upcoming":e>i.start_time&&e<n?t.pool_status="Live":E(t.total_purchase_amount).lessThan(t.complete_raise_limit)?t.pool_status="Failed":t.pool_status="Ended"}static async calculatePoolUiPrice(t,e){let i=await t.ClmmSDK.CetusConfig.getTokenListByCoinTypes([e.coin_type_sale,e.coin_type_raise]),n=i[e.coin_type_sale].decimals,r=i[e.coin_type_raise].decimals;e.current_price=Li.priceFixToReal(Number(E(e.price).div(E(Dr)).toString()),n,r).toString(),e.sale_decimals=n,e.raise_decimals=r,e.max_raise_amount=this.raiseTotalAmount(e)}};var Jn=class{static buildVeNFTDividendInfo(t){let e={id:t.id.id,ve_nft_id:t.name,rewards:[]};return t.value.fields.value.fields.dividends.fields.contents.forEach(i=>{let n=[];i.fields.value.fields.contents.forEach(r=>{n.push({coin_type:V(r.fields.key.fields.name).source_address,amount:r.fields.value})}),e.rewards.push({period:Number(i.fields.key),rewards:n})}),e}static buildDividendManager(t){let e={id:t.id.id,dividends:{id:t.dividends.fields.id.id,size:t.dividends.fields.size},venft_dividends:{id:t.venft_dividends.fields.id.id,size:t.venft_dividends.fields.size},bonus_types:[],start_time:Number(t.start_time),interval_day:Number(t.interval_day),balances:{id:t.balances.fields.id.id,size:t.balances.fields.size},is_open:t.is_open};return t.bonus_types.forEach(i=>{e.bonus_types.push(V(i.fields.name).source_address)}),e}static buildLockUpManager(t){return{id:t.id.id,balance:t.balance,treasury_manager:t.treasury_manager,extra_treasury:t.extra_treasury,lock_infos:{lock_handle_id:t.lock_infos.fields.id.id,size:Number(t.lock_infos.fields.size)},type_name:Lt(t.type_name.fields.name),min_lock_day:Number(t.min_lock_day),max_lock_day:Number(t.max_lock_day),package_version:Number(t.package_version),max_percent_numerator:Number(t.max_percent_numerator),min_percent_numerator:Number(t.min_percent_numerator)}}static buildLockToken(t){let e=t.fields,i={id:e.id.id,type:V(t.type).source_address,locked_start_time:Number(e.locked_start_time),locked_until_time:Number(e.locked_until_time),token_amount:e.balance,xtoken_amount:"0",lock_day:0};return i.lock_day=(i.locked_until_time-i.locked_start_time)/go,i}static getAvailableXToken(t,e){let i=E(0);return e.forEach(n=>{i=i.add(n.xtoken_amount)}),E(t.xtoken_balance).sub(i).toString()}static getWaitUnLockTokens(t){return t.filter(e=>!Jn.isLocked(e))}static getLockingTokens(t){return t.filter(e=>Jn.isLocked(e))}static buildDividendRewardTypeList(t){let e=new Set;return t.forEach(i=>{i.rewards.forEach(n=>{e.add(n.coin_type)})}),Array.from(e)}static isLocked(t){return t.locked_until_time>Date.parse(new Date().toString())/1e3}static getNextStartTime(t,e=go){let i=Date.now()/1e3,{start_time:n,interval_day:r}=t,o=Math.ceil((i-n)/(r*e));return n+o*r*e}},en=class{static getDefaultStrategyConfig(t){let e;switch(t){case 4:e=hh.bidAsk;break;default:e=hh.curve;break}return e}static geTickIndexRange(t,e,i,n){let r,o;switch(t=ie.getInitializableTickIndex(t,e),n){case"left":t>0?(o=E(t).sub(e).toNumber(),r=E(t).mul(E(1).add(i)).toDecimalPlaces(0).toNumber()):(o=E(t).sub(e).toNumber(),r=E(t).mul(E(1).sub(i)).toDecimalPlaces(0).toNumber());break;case"right":t>0?(o=E(t).mul(E(1).add(i)).toDecimalPlaces(0).toNumber(),r=E(t).add(e).toNumber()):(o=E(t).mul(E(1).sub(i)).toDecimalPlaces(0).toNumber(),r=E(t).add(e).toNumber());break;default:t>0?(r=E(t).mul(E(1).sub(i)).toDecimalPlaces(0).toNumber(),o=E(t).mul(E(1).add(i)).toDecimalPlaces(0).toNumber()):(r=E(t).mul(E(1).add(i)).toDecimalPlaces(0).toNumber(),o=E(t).mul(E(1).sub(i)).toDecimalPlaces(0).toNumber());break}if(r=ie.getInitializableTickIndex(r,e),o=ie.getInitializableTickIndex(o,e),r<Zf)throw Error("Tick lower value is below the minimum allowed value.");if(o>Hf)throw Error("Tick upper value is above the maximum allowed value.");return{tick_lower:r,tick_upper:o}}static getCreateLiquidityBins(t,e){let i=[];switch(e){case 4:i=en.getCreateBidAskLiquidityBins(t);break;default:i=en.getCreateCurveLiquidityBins(t);break}return i}static getCreateBidAskLiquidityBins(t){let e=E(Math.floor(E(t.tick_upper).sub(t.tick_lower).div(t.div_width).toNumber())).abs(),i=[],n=t.ratios,r,o;for(let s=0;s<n.length;s++){let a,l;t.tick_upper<=t.curr_tick?(l=E(t.tick_upper).sub(e.mul(s)).toNumber(),a=E(l).sub(e).toNumber()):t.tick_lower>=t.curr_tick?(a=E(t.tick_lower).add(e.mul(s)).toNumber(),l=E(t.tick_lower).add(e.mul(s+1)).toNumber()):s===4?(a=E(t.tick_lower).add(e.mul(s)).toNumber(),l=E(a).add(e.mul(2)).toNumber()):s>4?(a=E(t.tick_lower).add(e.mul(s+1)).toNumber(),l=E(a).add(e).toNumber()):(a=E(t.tick_lower).add(e.mul(s)).toNumber(),l=E(a).add(e).toNumber()),r=ie.getInitializableTickIndex(a,t.tick_spacing),o=ie.getInitializableTickIndex(l,t.tick_spacing),i.push({tick_lower:r,tick_upper:o,ratio:n[s],liquidity:"0"})}return i}static getCreateCurveLiquidityBins(t){let e=E(Math.floor(E(t.tick_upper).sub(t.tick_lower).div(t.div_width).toNumber())).abs(),i=[],n=t.ratios;for(let r=0;r<n.length;r++){let o,s;t.tick_upper<=t.curr_tick?(s=t.tick_upper,o=E(t.tick_upper).sub(e.mul(r+1)).toNumber()):t.tick_lower>=t.curr_tick?(o=t.tick_lower,s=E(o).add(e.mul(r+1)).toNumber()):(o=E(t.curr_tick).sub(e.mul(r+1)).toNumber(),s=E(t.curr_tick).add(e.mul(r+1)).toNumber()),i.push({tick_lower:ie.getInitializableTickIndex(o,t.tick_spacing),tick_upper:ie.getInitializableTickIndex(s,t.tick_spacing),ratio:n[r],liquidity:"0"})}return i}static calculateAddLiquidityInputs(t){let e=new Ue.default(ie.tickIndexToSqrtPriceX64(t.curr_tick)),i=en.calculateCoinRatios(t.curr_tick,t.liquidity_bins),n=t.liquidity_bins.map((r,o)=>{let s=i[o],a=E(t.coin_amount).mul(t.fix_amount_a?s.coinRatioA:s.coinRatioB).toFixed(0).toString();try{return{...ze.estLiquidityAndcoinAmountFromOneAmounts(r.tick_lower,r.tick_upper,new Ue.default(a),t.fix_amount_a,!0,t.slippage,e),...r}}catch{return{coinAmountA:new Ue.default(0),coinAmountB:new Ue.default(0),tokenMaxA:new Ue.default(0),tokenMaxB:new Ue.default(0),liquidityAmount:new Ue.default(0),fix_amount_a:!t.fix_amount_a,...r}}});return en.fixLiquidityInputs(e,t.slippage,n,!0)}static fixLiquidityInputs(t,e,i,n){let r=i.filter(s=>s.liquidityAmount.gt(re));if(r.length===0)return[];let o=r[0];return i.map(s=>{if(s.liquidityAmount.eq(re)){let a=E(o.liquidityAmount.toString()).mul(s.ratio).div(o.ratio).toFixed(0),l=ie.tickIndexToSqrtPriceX64(s.tick_lower),u=ie.tickIndexToSqrtPriceX64(s.tick_upper),h=ze.getCoinAmountFromLiquidity(new Ue.default(a.toString()),t,l,u,!1);return{coinAmountA:h.coinA,coinAmountB:h.coinB,liquidityAmount:new Ue.default(a.toString()),fix_amount_a:s.fix_amount_a,...Zs(h,Ar.fromDecimal(E(e).mul(100)),n)}}return s})}static calculateCoinRatios(t,e){let i=new Ue.default(ie.tickIndexToSqrtPriceX64(t)),n=[],r=E(0),o=E(0),s=e.map(u=>{let h=E(nh(100,6).toString()).mul(u.ratio).toFixed(0).toString(),y=ie.tickIndexToSqrtPriceX64(u.tick_lower),v=ie.tickIndexToSqrtPriceX64(u.tick_upper),T=ze.getCoinAmountFromLiquidity(new Ue.default(h),i,y,v,!0);return r=r.add(T.coinA.toString()),o=o.add(T.coinB.toString()),{...T,liquidity:h}}),a=[],l=[];return s.forEach((u,h)=>{let y={coinRatioA:r.eq(E(0))?0:E(u.coinA.toString()).div(r).toNumber(),coinRatioB:o.eq(E(0))?0:E(u.coinB.toString()).div(o).toNumber(),liquiditys:u.liquidity,tick_lower:e[h].tick_lower,tick_upper:e[h].tick_upper};n.push(y),a.push(r.eq(E(0))?0:E(u.coinA.toString()).div(r).toNumber()),l.push(o.eq(E(0))?0:E(u.coinB.toString()).div(o).toNumber())}),n}static calculateCloseMasterLiquidityInputs(t){let e=new Ue.default(ie.tickIndexToSqrtPriceX64(t.curr_tick));return t.positions.map(n=>{let r=new Ue.default(n.liquidity),o=ie.tickIndexToSqrtPriceX64(n.tick_lower_index),s=ie.tickIndexToSqrtPriceX64(n.tick_upper_index),a=ze.getCoinAmountFromLiquidity(r,e,o,s,!1),l=Ar.fromDecimal(E(t.slippage).mul(100)),{tokenMaxA:u,tokenMaxB:h}=Zs(a,l,!1);return{coinAmountA:a.coinA,coinAmountB:a.coinB,tokenMaxA:u,tokenMaxB:h,liquidityAmount:r,fix_amount_a:!1}})}static calculateRemoveMasterLiquidityInputs(t){let e=new Ue.default(ie.tickIndexToSqrtPriceX64(t.curr_tick)),{fix_token:i}=t;if(i){let r=t.positions.map((a,l)=>({tick_lower:a.tick_lower_index,tick_upper:a.tick_upper_index,ratio:t.ratios[l]})),o=en.calculateCoinRatios(t.curr_tick,r),s=t.positions.map((a,l)=>{let u=o[l],h=E(i.coin_amount).mul(i.fix_amount_a?u.coinRatioA:u.coinRatioB).toFixed(0).toString();try{let y=ze.estLiquidityAndcoinAmountFromOneAmounts(a.tick_lower_index,a.tick_upper_index,new Ue.default(h),i.fix_amount_a,!1,t.slippage,e);return{...y,tick_lower:a.tick_lower_index,tick_upper:a.tick_upper_index,liquidity:y.liquidityAmount.toString(),ratio:t.ratios[l]}}catch{return{coinAmountA:new Ue.default(0),coinAmountB:new Ue.default(0),tokenMaxA:new Ue.default(0),tokenMaxB:new Ue.default(0),liquidityAmount:new Ue.default(0),fix_amount_a:!i.fix_amount_a,tick_lower:a.tick_lower_index,tick_upper:a.tick_upper_index,liquidity:"0",ratio:t.ratios[l]}}});return en.fixLiquidityInputs(e,t.slippage,s,!1)}return t.positions.map((r,o)=>{let s=t.ratios[o],a=E(t.liquidity).mul(s).toFixed(0);E(a).greaterThan(r.liquidity)&&(a=r.liquidity);let l=ie.tickIndexToSqrtPriceX64(r.tick_lower_index),u=ie.tickIndexToSqrtPriceX64(r.tick_upper_index),h=ze.getCoinAmountFromLiquidity(new Ue.default(a),e,l,u,!1),y=Ar.fromDecimal(E(t.slippage).mul(100)),{tokenMaxA:v,tokenMaxB:T}=Zs(h,y,!1);return{coinAmountA:h.coinA,coinAmountB:h.coinB,tokenMaxA:v,tokenMaxB:T,liquidityAmount:new Ue.default(a),fix_amount_a:!1}})}static buildMasterPosition(t){return{coin_type_a:V(t.coin_type_a.fields.name).full_address,coin_type_b:V(t.coin_type_b.fields.name).full_address,description:t.description,id:t.id.id,index:t.index,liquidity:t.liquidity,name:t.name,pool:t.pool,tick_lower_index:$e(BigInt(t.tick_lower_index.fields.bits)),tick_upper_index:$e(BigInt(t.tick_upper_index.fields.bits)),url:t.url}}static buildMasterNFT(t){let e=te(t);if(e){let i={id:e.id.id,pool_id:e.pool_id,index:Number(e.index),strategy:Number(e.strategy),tick_lower_index:$e(BigInt(e.tick_lower_index)),tick_upper_index:$e(BigInt(e.tick_upper_index)),positions:[],...Gn(t)};return i.positions=e.positions.map(n=>en.buildMasterPosition(n.fields)),i}}},qi=class{static generateNextTickRange(t,e,i){let n=t-e/2,r=t+e/2;return{new_tick_lower:qi.getValidTickIndex(n,i),new_tick_upper:qi.getValidTickIndex(r,i)}}static calculateDepositRatio(t,e,i){let n=ie.sqrtPriceX64ToTickIndex(i);if(n<t)return{ratioA:new U(1),ratioB:new U(0)};if(n>e)return{ratioA:new U(0),ratioB:new U(1)};let r=new bh.default(1e8),{coinAmountB:o}=ze.estLiquidityAndcoinAmountFromOneAmounts(t,e,r,!0,!0,0,i),s=ie.sqrtPriceX64ToPrice(i,0,0),a=E(r.toString()).mul(s),l=a.add(o.toString()),u=a.div(l),h=E(o.toString()).div(l);return{ratioA:u,ratioB:h}}static getValidTickIndex(t,e){if(t%e===0)return t;let i;if(t>0?i=t-t%e+e:t<0?i=t+Math.abs(t)%e-e:i=t,i%e!==0)throw new Error("Assertion failed: res % tickSpacing == 0");if(Math.abs(i)<Math.abs(t))throw new Error("Assertion failed: res.abs() >= tickIndex");return i}static get_lp_amount_by_liquidity(t,e){return t.total_supply==="0"?"0":E(t.total_supply).mul(e).div(t.liquidity).toFixed(0,U.ROUND_DOWN).toString()}static get_share_liquidity_by_amount(t,e){return t.total_supply==="0"?"0":E(e).mul(t.liquidity).div(t.total_supply).toFixed(0,U.ROUND_DOWN).toString()}static get_protocol_fee_amount(t,e){return E(e).mul(t.protocol_fee_rate).div(gw).toFixed(0,U.ROUND_CEIL)}static buildFramsPositionNFT(t){let e=t.clmm_postion.fields;return{id:t.id.id,url:e.url,pool_id:t.pool_id,coinTypeA:V(e.coin_type_a.fields.name).full_address,coinTypeB:V(e.coin_type_b.fields.name).full_address,description:e.description,name:e.name,liquidity:e.liquidity,clmm_position_id:e.id.id,clmm_pool_id:e.pool,tick_lower_index:$e(BigInt(e.tick_lower_index.fields.bits)),tick_upper_index:$e(BigInt(e.tick_upper_index.fields.bits)),rewards:[]}}static buildPool(t){let e=te(t),i=Ii(t),{positions:n}=e;if(e&&n.length>0){let r=qi.buildFramsPositionNFT(n[0].fields);return{id:e.id.id,pool_id:e.pool,protocol_fee_rate:e.protocol_fee_rate,is_pause:e.is_pause,harvest_assets:{harvest_assets_handle:e.harvest_assets.fields.id.id,size:Number(e.harvest_assets.fields.size)},lp_token_type:V(i).type_arguments[0],total_supply:e.lp_token_treasury.fields.total_supply.fields.value,liquidity:e.liquidity,max_quota:e.max_quota,status:e.status===1?"STATUS_RUNNING":"STATUS_REBALANCING",quota_based_type:e.quota_based_type.fields.name,position:r}}}},Js=class{static calculatePositionShare(t,e,i,n,r,o,s){if(e<=r||t>=o)return"0";let a=0;t<r?a=r:a=t;let l=0;e<o?l=e:l=o;let u=ie.tickIndexToSqrtPriceX64(a),h=ie.tickIndexToSqrtPriceX64(l),{coinA:y,coinB:v}=ze.getCoinAmountFromLiquidity(new gl.default(i),new gl.default(s),u,h,!0);return E(y.toString()).mul(n).div(1e12).add(v.toString()).toString()}static buildFramsPool(t){let e=te(t);if(e)try{let i=[];return e.rewarders.forEach(r=>{i.push({reward_coin:V(r.fields.name).full_address,last_reward_time:"",emission_per_second:"",total_allocate_point:"",allocate_point:""})}),{id:e.id.id,clmm_pool_id:e.clmm_pool_id,effective_tick_lower:$e(BigInt(e.effective_tick_lower.fields.bits)),effective_tick_upper:$e(BigInt(e.effective_tick_upper.fields.bits)),total_share:e.total_share,rewarders:i,positions:{positions_handle:e.positions.fields.id.id,size:e.positions.fields.size},sqrt_price:e.sqrt_price}}catch(i){console.log(i)}}static buildFramsPositionNFT(t){let e=te(t);if(e){let i=e.clmm_postion.fields;return{id:e.id.id,url:i.url,pool_id:e.pool_id,coinTypeA:V(i.coin_type_a.fields.name).full_address,coinTypeB:V(i.coin_type_b.fields.name).full_address,description:i.description,name:i.name,liquidity:i.liquidity,clmm_position_id:i.id.id,clmm_pool_id:i.pool,tick_lower_index:$e(BigInt(i.tick_lower_index.fields.bits)),tick_upper_index:$e(BigInt(i.tick_upper_index.fields.bits)),rewards:[]}}}},bw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPoolImmutables(t="all",e=!1){let{package_id:i}=this._sdk.sdkOptions.ido,n=`${i}_getPoolImmutables`,r=this.getCache(n,e),o={data:[],hasNextPage:!1},s=[];if(r!==void 0&&s.push(...r),s.length===0)try{let a=await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${i}::oversubscribe_pool::CreatePoolEvent`},t);a.data.forEach(l=>{let u=l.parsedJson;if(u){let h=Zt.buildIdoPoolImmutables(u);s.push(h)}}),o.hasNextPage=a.hasNextPage,o.nextCursor=a.nextCursor,this.updateCache(n,s,X)}catch(a){console.log("getPoolImmutables",a)}return o.data=s,o}async getPools(t=[],e=!1){let i=[],n=[];t.length>0?n=[...t]:(await this.getPoolImmutables("all",e)).data.forEach(s=>{n.push(s.pool_address)});let r=await this._sdk.ClmmSDK.fullClient.batchGetObjects(n,{showType:!0,showContent:!0});for(let o of r){let s=Zt.buildIdoPool(o);await Zt.calculatePoolUiPrice(this._sdk,s),i.push(s);let a=`${s.pool_address}_getPoolObject`;this.updateCache(a,s,X)}return i}async getPool(t,e=!0){let i=`${t}_getPoolObject`,n=this.getCache(i,e);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),o=Zt.buildIdoPool(r);return await Zt.calculatePoolUiPrice(this._sdk,o),this.updateCache(i,o),o}async getIdoConfigs(t=!1){let{package_id:e}=this._sdk.sdkOptions.ido,i=`${e}_getInitEvent`,n=this.getCache(i,t);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=zn(r),s=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({Transaction:o}))?.data,a={pools_id:"",admin_cap_id:"",package_version_id:""};return s.length>0&&(s.forEach(l=>{console.log("item: ",l);let u=l.parsedJson;if(u)switch(V(l.type).full_address){case`${e}::config::InitConfigEvent`:a.admin_cap_id=u.admin_cap_id,a.package_version_id=u.package_version_id;break;case`${e}::factory::InitFactoryEvent`:a.pools_id=u.pools_id;break;default:break}}),this.updateCache(i,a,X)),a}async getPurchaseInfo(t,e,i=!0){let n=`${t}_${e}_getPurchaseInfo`,r=this.getCache(n,i);if(r)return r;try{let o=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"address",value:e}}),s=Zt.buildPurchaseInfo(te(o));return this.updateCache(n,s,Ge),s}catch{return}}async getLockNFT(t,e=!1){let i=`${t}_getLockNFT`,n=this.getCache(i,e);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}});if(!r.error)return Ji(r)}async getLockNFTList(t){let{clmm_pool:e}=this._sdk.ClmmSDK.sdkOptions,{ido:i}=this._sdk.sdkOptions,n=[];try{let r=(await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{filter:{StructType:`${i.package_id}::lock::LockedNFT<${e.package_id}::position::Position>`},options:{showContent:!0}}))?.data;for(let o of r){let s=te(o);if(s){let a=s.nft.fields,l={locked_at:Number(s.locked_at),lock_duration:Number(s.lock_duration),lock_nft_id:s.id.id,type:s.nft.type,...a};l.end_lock_time=l.locked_at+l.lock_duration,l.coin_type_a=V(a.coin_type_a.fields.name).full_address,l.coin_type_b=V(a.coin_type_b.fields.name).full_address,l.id=a.id.id,l.tick_lower_index=$e(BigInt(a.tick_lower_index.fields.bits)),l.tick_upper_index=$e(BigInt(a.tick_upper_index.fields.bits)),n.push(l)}}return n}catch(r){return console.log("getLockNFTList:",r),[]}}async creatPool(t){let{ido:e}=this.sdk.sdkOptions;Us((0,$i.normalizeSuiAddress)(t.coin_type_sale),(0,$i.normalizeSuiAddress)(t.coin_type_raise))&&(t.price_min=E(1).div(t.price_max).toNumber(),t.price_max=E(1).div(t.price_min).toNumber());let n=Li.priceRealToFix(Number(t.price),t.sale_decimals,t.raise_decimals),r=ie.priceToSqrtPriceX64(E(t.price_min),t.sale_decimals,t.raise_decimals).toString(),o=ie.priceToSqrtPriceX64(E(t.price_max),t.sale_decimals,t.raise_decimals).toString(),s=new oi.TransactionBlock,a=E(t.total_supply).add(E(t.total_supply).mul(E(t.liquidity_injection_ratio))).toNumber(),l=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress,t.coin_type_sale),u=oe.buildCoinForAmount(s,l,BigInt(a),t.coin_type_sale,!1),h=[s.pure(F(e).admin_cap_id),s.pure(F(e).package_version_id),s.pure(F(e).pools_id),s.pure((0,$i.normalizeSuiAddress)(t.owner)),s.pure(E(n).mul(Dr).toString()),s.pure(t.total_supply),s.pure(t.complete_raise_limit),s.pure(t.min_purchase_amount),s.pure(t.max_purchase_amount),s.pure(t.start_time),s.pure(t.purchase_duration),s.pure(t.lock_up_duration),s.pure((t.liquidity_injection_ratio*_h).toString()),s.pure(r),s.pure(o),s.pure(t.tick_spacing.toString()),u.targetCoin,s.pure(t.protection_hard_cap.toString()),s.pure(z)],y=[t.coin_type_sale,t.coin_type_raise];return s.moveCall({target:`${e.published_at}::${fw}::create_oversubscribe_pool`,typeArguments:y,arguments:h}),s}async creatPurchasePayload(t){let{ido:e}=this.sdk.sdkOptions,i=new oi.TransactionBlock,n=await this.getPurchaseInfo(t.purchase_handle,this._sdk.ClmmSDK.senderAddress,!1),r=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress,t.coin_type_raise),o=oe.buildCoinForAmount(i,r,BigInt(t.raise_amount),t.coin_type_raise,!1),s=[t.coin_type_sale,t.coin_type_raise],a,l;return n?(l="purchase",a=[i.object(F(e).package_version_id),i.object(t.pool_address),i.object(n.purchase_certificate_id),i.pure(t.raise_amount.toString()),o.targetCoin,i.pure(z)]):(l="create_certificate_and_purchase",a=[i.object(F(e).package_version_id),i.object(t.pool_address),i.pure(t.raise_amount.toString()),o.targetCoin,i.pure(z)]),i.moveCall({target:`${e.published_at}::${fi}::${l}`,typeArguments:s,arguments:a}),i}async redeemPayload(t){let{ido:e}=this.sdk.sdkOptions,i=await this.getPurchaseInfo(t.purchase_handle,this._sdk.ClmmSDK.senderAddress,!1);if(i===void 0)throw Error("get purchase certificate fail");let n=new oi.TransactionBlock,r=[t.coin_type_sale,t.coin_type_raise],o=[n.pure(F(e).package_version_id),n.pure(t.pool_address),n.pure(i.purchase_certificate_id),n.pure(z)];return n.moveCall({target:`${e.published_at}::${fi}::redeem`,typeArguments:r,arguments:o}),n}injectLiquidityPayload(t){let{ido:e}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions,n=new oi.TransactionBlock,r=[t.coin_type_sale,t.coin_type_raise],o=t.is_reverse?"inject_liquidity_with_reverse_clmm_pool":"inject_liquidity_with_forward_clmm_pool",s=[n.pure(F(e).package_version_id),n.pure(t.pool_address),n.pure(F(i).global_config_id),n.pure(t.clmm_pool_address),n.pure(z)];return n.moveCall({target:`${e.published_at}::${fi}::${o}`,typeArguments:r,arguments:s}),n}unPauseInjectLiquidity(t){let{ido:e}=this.sdk.sdkOptions,{integrate:i,clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions,r=new oi.TransactionBlock;r.moveCall({target:`${i.published_at}::${Tr}::unpause_pool`,typeArguments:[t.coin_type_a,t.coin_type_b],arguments:[r.object(F(n).global_config_id),r.object(t.clmm_pool_address)]});let o=[t.coin_type_sale,t.coin_type_raise],s=t.is_reverse?"inject_liquidity_with_reverse_clmm_pool":"inject_liquidity_with_forward_clmm_pool",a=[r.object(F(e).package_version_id),r.object(t.pool_address),r.object(F(n).global_config_id),r.object(t.clmm_pool_address),r.object(z)];return r.moveCall({target:`${e.published_at}::${fi}::${s}`,typeArguments:o,arguments:a}),r}async findClmmPoolForLiquidity(t){let e=null,i=!1,n=await this.sdk.ClmmSDK.Pool.getPoolImmutables();for(let r of n){if(r.coinTypeA===t.coin_type_sale&&r.coinTypeB===t.coin_type_raise&&Number(r.tickSpacing)===t.tick_spacing){e=await this._sdk.ClmmSDK.Pool.getPool(r.poolAddress);break}if(r.coinTypeA===t.coin_type_raise&&r.coinTypeB===t.coin_type_sale&&Number(r.tickSpacing)===t.tick_spacing){e=await this._sdk.ClmmSDK.Pool.getPool(r.poolAddress),i=!0;break}}return e&&(E(e.current_sqrt_price).lessThanOrEqualTo(t.current_sqrt_price_min)||E(e.current_sqrt_price).greaterThanOrEqualTo(t.current_sqrt_price_max))?(console.log("clmmPool: ",e.poolAddress),{is_reverse:i,clmmPool:null}):{is_reverse:i,clmmPool:e}}withdrawPayload(t){let{ido:e}=this.sdk.sdkOptions,i=new oi.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise],r=[i.object(F(e).package_version_id),i.object(t.pool_address),i.object(z)];return i.moveCall({target:`${e.published_at}::${fi}::withdraw`,typeArguments:n,arguments:r}),i}updateWhitelistCapPayload(t){let{ido:e}=this.sdk.sdkOptions,i=new oi.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise];return t.add_whites&&t.add_whites.addresses.length>0&&i.moveCall({target:`${e.published_at}::${fi}::add_white_listed_addresses`,typeArguments:n,arguments:[i.object(F(e).admin_cap_id),i.object(F(e).package_version_id),i.object(t.pool_address),i.makeMoveVec({type:"address",objects:t.add_whites.addresses.map(r=>i.object((0,$i.normalizeSuiObjectId)(r)))}),i.pure(t.add_whites.protection_limit),i.object(z)]}),t.remove_whites&&t.remove_whites.length>0&&i.moveCall({target:`${e.published_at}::${fi}::remove_white_listed_addresses`,typeArguments:n,arguments:[i.object(F(e).admin_cap_id),i.object(F(e).package_version_id),i.object(t.pool_address),i.makeMoveVec({type:"address",objects:t.remove_whites.map(r=>i.object((0,$i.normalizeSuiObjectId)(r)))}),i.object(z)]}),t.update_whites&&t.update_whites.forEach(r=>{i.moveCall({target:`${e.published_at}::${fi}::update_white_listed_address`,typeArguments:n,arguments:[i.object(F(e).admin_cap_id),i.object(F(e).package_version_id),i.object(t.pool_address),i.object(r.address),i.pure(r.protection_limit),i.object(z)]})}),i}creatCancelPoolPayload(t){let{ido:e}=this.sdk.sdkOptions,i=new oi.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise],r=[i.pure(F(e).admin_cap_id),i.pure(F(e).package_version_id),i.pure(t.pool_address),i.pure(z)];return i.moveCall({target:`${e.published_at}::${fi}::cancel`,typeArguments:n,arguments:r}),i}updatePoolOwnerPayload(t,e){let{ido:i}=this.sdk.sdkOptions;e=e===void 0?new oi.TransactionBlock:e;let n=[t.coin_type_sale,t.coin_type_raise],r=[e.object(F(i).admin_cap_id),e.object(F(i).package_version_id),e.object(t.pool_address),e.object(t.new_owner),e.object(z)];return e.moveCall({target:`${i.published_at}::${fi}::update_pool_owner`,typeArguments:n,arguments:r}),e}updatePoolDuractionPayload(t,e){let{ido:i}=this.sdk.sdkOptions;e=e===void 0?new oi.TransactionBlock:e;let n=[t.coin_type_sale,t.coin_type_raise],r=[e.object(F(i).admin_cap_id),e.object(F(i).package_version_id),e.object(t.pool_address),e.pure(t.start_time),e.pure(t.purchase_duration),e.pure(t.lock_duration),e.object(z)];return e.moveCall({target:`${i.published_at}::${fi}::update_pool_duration`,typeArguments:n,arguments:r}),e}updateProtectionHardCapPayload(t,e){let{ido:i}=this.sdk.sdkOptions;e=e===void 0?new oi.TransactionBlock:e;let n=[t.coin_type_sale,t.coin_type_raise],r=[e.object(F(i).admin_cap_id),e.object(F(i).package_version_id),e.object(t.pool_address),e.pure(t.protection_hard_cap),e.object(z)];return e.moveCall({target:`${i.published_at}::${fi}::update_protection_hard_cap`,typeArguments:n,arguments:r}),e}unlockNftPayload(t){let{ido:e}=this.sdk.sdkOptions,i=new oi.TransactionBlock,n=[t.nft_type],r=[i.pure(t.lock_nft_id),i.pure(z)];return i.moveCall({target:`${e.published_at}::lock::unlock_nft`,typeArguments:n,arguments:r}),i}async isAdminCap(t){let{ido:e}=this._sdk.sdkOptions,i=`${e.package_id}_${t}_isAdminCap`,n=this.getCache(i);if(n)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:F(e).admin_cap_id,options:{showType:!0,showOwner:!0}});console.log(r);let o=Ii(r),s=Ir(r),a=!1;return s&&o&&V(o).source_address===`${e.package_id}::config::AdminCap`&&(a=(0,$i.normalizeSuiAddress)(s.AddressOwner)===(0,$i.normalizeSuiAddress)(t)),this.updateCache(i,a,X),a}async getWhiteProtectionLimit(t,e,i=!0){let n=`${t}_${e}_getWhiteProtectionLimit`,r=this._sdk.getCache(n,i);if(r)return r;try{let o=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"address",value:e}});if(o&&o.data){let s=te(o);return this._sdk.updateCache(n,s.value),s.value}return}catch{return}}async getWhiteList(t,e){let i={type:"address",value:e};try{let n=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:i}),r=te(n);if(console.log(r),r)return r?.value?.fields}catch{}return{safe_limit_amount:"0",safe_purchased_amount:"0"}}async getAdminAddress(){let{ido:t}=this._sdk.sdkOptions,e=`${F(t).admin_cap_id}_getAdminAddress`,i=this.getCache(e);if(i)return i;let n=await this._sdk.ClmmSDK.fullClient.getObject({id:F(t).admin_cap_id,options:{showType:!0,showOwner:!0}});console.log(n);let r=Ii(n),o=Ir(n);if(o&&r&&V(r).source_address===`${t.package_id}::config::AdminCap`){let a=(0,$i.normalizeSuiAddress)(o.AddressOwner);return this.updateCache(e,a,X),a}return""}updateCache(t,e,i=X){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t];if(!e&&i?.isValid())return i.value;delete this._cache[t]}},yw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getOwnerVeNFT(t,e=!0){let{xtoken:i}=this.sdk.sdkOptions,n=`${t}_getLockUpManagerEvent`,r=this.getCache(n,e);if(r!==void 0)return r;let o,s=`${i.package_id}::xtoken::VeNFT`;return(await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0,showDisplay:!0},filter:{StructType:s}})).data.forEach(l=>{let u=V($t(l)).source_address;if(u===s&&l.data&&l.data.content){let{fields:h}=l.data.content;o={...Gn(l),id:h.id.id,index:h.index,type:u,xtoken_balance:h.xtoken_balance},this.updateCache(n,o,X)}}),o}async getOwnerLockTokens(t){let{xtoken:e}=this.sdk.sdkOptions,i=[],n=`${e.package_id}::lock_coin::LockedCoin<${this.buileTokenCoinType()}>`,r=await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0},filter:{StructType:n}});for(let o of r.data)if(V($t(o)).source_address===n&&o.data){let a=Jn.buildLockToken(o.data.content),l=await this.getLockXToken(a.id);l&&(a.xtoken_amount=l.xtoken_amount),i.push(a)}return i}async getLockToken(t){let e=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0}});if(e.data?.content){let i=Jn.buildLockToken(e.data.content),n=await this.getLockXToken(i.id);return n&&(i.xtoken_amount=n.xtoken_amount),i}}async getOwnerTokenCoins(t){return await this._sdk.ClmmSDK.getOwnerCoinAssets(t,this.buileTokenCoinType())}mintVeNFTPayload(){let{xtoken:t}=this.sdk.sdkOptions,e=new Qi.TransactionBlock;return e.moveCall({target:`${t.published_at}::${Pr}::mint_venft`,typeArguments:[],arguments:[e.pure(F(t).xtoken_manager_id)]}),e}async convertPayload(t){let{xtoken:e}=this.sdk.sdkOptions,i=new Qi.TransactionBlock,n=this.buileTokenCoinType(),r=await oe.syncBuildCoinInputForAmount(this._sdk.ClmmSDK,i,BigInt(t.amount),n);return t.venft_id===void 0?i.moveCall({target:`${e.published_at}::${Pr}::mint_and_convert`,typeArguments:[],arguments:[i.object(F(e).lock_manager_id),i.object(F(e).xtoken_manager_id),r,i.pure(t.amount)]}):i.moveCall({target:`${e.published_at}::${Pr}::convert`,typeArguments:[],arguments:[i.object(F(e).lock_manager_id),i.object(F(e).xtoken_manager_id),r,i.pure(t.amount),i.pure(t.venft_id)]}),i}redeemLockPayload(t){let{xtoken:e}=this.sdk.sdkOptions,i=new Qi.TransactionBlock;return i.moveCall({target:`${e.published_at}::${Pr}::redeem_lock`,typeArguments:[],arguments:[i.pure(F(e).lock_manager_id),i.pure(F(e).xtoken_manager_id),i.pure(t.venft_id),i.pure(t.amount),i.pure(t.lock_day),i.pure(z)]}),i}redeemPayload(t){let{xtoken:e}=this.sdk.sdkOptions,i=new Qi.TransactionBlock;return i.moveCall({target:`${e.published_at}::${Pr}::redeem`,typeArguments:[],arguments:[i.pure(F(e).lock_manager_id),i.pure(F(e).xtoken_manager_id),i.pure(t.venft_id),i.pure(t.lock_id),i.pure(z)]}),i}redeemDividendPayload(t,e){let{xtoken_dividends:i}=this.sdk.sdkOptions,n=new Qi.TransactionBlock;return e.forEach(r=>{n.moveCall({target:`${i.published_at}::${hl}::redeem`,typeArguments:[r],arguments:[n.object(F(i).dividend_manager_id),n.object(t)]})}),n}redeemDividendV2Payload(t,e,i){let{xtoken_dividends:n}=this.sdk.sdkOptions,r=new Qi.TransactionBlock;return e.filter(s=>i.includes(s)).length>0&&(r=this.redeemDividendXTokenPayload(t,r)),e.forEach(s=>{i.includes(s)||r.moveCall({target:`${n.published_at}::${hl}::redeem_v2`,typeArguments:[s],arguments:[r.object(F(n).dividend_manager_id),r.object(t),r.object(z)]})}),r}redeemDividendXTokenPayload(t,e){let{xtoken_dividends:i,xtoken:n}=this.sdk.sdkOptions,{xtoken_manager_id:r,lock_manager_id:o}=F(n),{dividend_manager_id:s}=F(i);return e=e===void 0?new Qi.TransactionBlock:e,e.moveCall({target:`${i.published_at}::${hl}::redeem_xtoken`,typeArguments:[],arguments:[e.object(o),e.object(r),e.object(s),e.object(t),e.object(z)]}),e}buileTokenCoinType(){return`${this.sdk.sdkOptions.token_faucet.package_id}::token::TOKEN`}buileXTokenCoinType(t=this._sdk.sdkOptions.xtoken.package_id,e="xtoken",i="XTOKEN"){return`${t}::${e}::${i}`}cancelRedeemPayload(t){let{xtoken:e}=this.sdk.sdkOptions,i=new Qi.TransactionBlock;return i.moveCall({target:`${e.published_at}::${Pr}::cancel_redeem_lock`,typeArguments:[],arguments:[i.pure(F(e).lock_manager_id),i.pure(F(e).xtoken_manager_id),i.pure(t.venft_id),i.pure(t.lock_id),i.pure(z)]}),i}async getInitConfigs(){let{package_id:t}=this.sdk.sdkOptions.xtoken,e=`${t}_getInitFactoryEvent`,i=this.getCache(e);if(i!==void 0)return i;let n=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::xtoken::InitEvent`}))?.data,r={xtoken_manager_id:"",lock_manager_id:"",lock_handle_id:""};n.length>0&&n.forEach(s=>{let a=s.parsedJson;a&&(r.xtoken_manager_id=a.xtoken_manager)});let o=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::locking::InitializeEvent`}))?.data;return o.length>0&&o.forEach(s=>{let a=s.parsedJson;a&&(r.lock_manager_id=a.lock_manager)}),r.lock_handle_id=(await this.getLockUpManager(r.lock_manager_id)).lock_infos.lock_handle_id,this.updateCache(e,r,X),r}async getLockUpManager(t=F(this.sdk.sdkOptions.xtoken).lock_manager_id,e=!1){let i=`${t}_getLockUpManagerEvent`,n=this.getCache(i,e);if(n!==void 0)return n;let r=await this.sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),o=Jn.buildLockUpManager(te(r));return this.updateCache(i,o,X),o}async getLockInfoHandle(t){let e=`${t}_getLockInfoHandle`,i=this.getCache(e);if(i!==void 0)return i;let n="",r=await this.sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),o=te(r);return o&&(n=o.lock_infos.fields.id.id,this.updateCache(e,n,X)),n}async getDividendConfigs(){let{package_id:t}=this.sdk.sdkOptions.xtoken_dividends,e=`${t}_getDividendManagerEvent`,i=this.getCache(e);if(i!==void 0)return i;let n=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::dividend::InitEvent`}))?.data,r={dividend_manager_id:"",dividend_admin_id:"",dividend_settle_id:""};return n.length>0&&n.forEach(o=>{let s=o.parsedJson;s&&(r.dividend_manager_id=s.manager_id,r.dividend_admin_id=s.admin_id,r.dividend_settle_id=s.settle_id,this.updateCache(e,r,X))}),r}async getDividendManager(t=!1){let{dividend_manager_id:e}=F(this.sdk.sdkOptions.xtoken_dividends),i=`${e}_getDividendManager`,n=this.getCache(i,t);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0}}),o=te(r),s=Jn.buildDividendManager(o);return this.updateCache(i,s,X),s}async getXcetusManager(t=!0){let{xtoken_manager_id:e}=F(this.sdk.sdkOptions.xtoken),i=`${e}_getXcetusManager`,n=this.getCache(i,t);if(n)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0}}),o=te(r),s={id:o.id.id,index:Number(o.index),has_venft:{handle:o.has_venft.fields.id.id,size:o.has_venft.fields.size},nfts:{handle:o.nfts.fields.id.id,size:o.nfts.fields.size},total_locked:o.total_locked,treasury:o.treasury.fields.total_supply.fields.value};return this.updateCache(i,s),s}async getVeNFTDividendInfo(t,e){try{let i=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),n=te(i);return Jn.buildVeNFTDividendInfo(n)}catch{return}}async redeemNum(t,e){if(BigInt(t)===BigInt(0))return{amountOut:"0",percent:"0"};let i=await this.getLockUpManager(),n=E(hi).mul(E(i.max_lock_day).sub(E(e))).mul(E(i.max_percent_numerator).sub(E(i.min_percent_numerator))).div(E(i.max_lock_day).sub(E(i.min_lock_day))),r=E(hi).mul(E(i.max_percent_numerator)).sub(n).div(E(ta)).div(hi);return{amountOut:E(r).mul(E(t)).round().toString(),percent:r.toString()}}async reverseRedeemNum(t,e){if(BigInt(t)===BigInt(0))return{amountOut:"0",percent:"0"};let i=await this.getLockUpManager(),n=E(hi).mul(E(i.max_lock_day).sub(E(e))).mul(E(i.max_percent_numerator).sub(E(i.min_percent_numerator))).div(E(i.max_lock_day).sub(E(i.min_lock_day))),r=E(hi).mul(E(i.max_percent_numerator)).sub(n).div(E(ta)).div(hi);return{amountOut:E(t).div(r).toFixed(0,U.ROUND_UP),percent:r.toString()}}async getLockXToken(t){let{lock_handle_id:e}=F(this._sdk.sdkOptions.xtoken),i=`${t}_getXTokenAmount`,n=this.getCache(i);if(n)return n;try{let r=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:e,name:{type:"0x2::object::ID",value:t}}),o=te(r);if(o){let s=o.value.fields.value.fields;return this.updateCache(i,s,X),s}}catch{}}async getVeNftAmount(t,e){try{let i=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),n=te(i);if(n){let{lock_amount:r,xtoken_amount:o}=n.value.fields.value.fields;return{lock_amount:r,xtoken_amount:o}}}catch{}return{lock_amount:"0",xtoken_amount:"0"}}async getPhaseDividendInfo(t,e=!1){let n=(await this.getDividendManager()).dividends.id,r=`${n}_${t}_getPhaseDividendInfo`,o=this._sdk.getCache(r,e);if(o)return o;try{let s=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:n,name:{type:"u64",value:t}}),a=te(s),l=a.value.fields.value.fields,u=l.redeemed_num.fields.contents.map(T=>({name:T.fields.key.fields.name,value:T.fields.value})),h=l.bonus_types.map(T=>T.fields.name),y=l.bonus.fields.contents.map(T=>({name:T.fields.key.fields.name,value:T.fields.value})),v={id:Ht(s),phase:a.name,settled_num:l.settled_num,register_time:l.register_time,redeemed_num:u,is_settled:l.is_settled,bonus_types:h,bonus:y,phase_end_time:""};return this.updateCache(r,v),v}catch{}}updateCache(t,e,i=Ge){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t];if(!e&&i?.isValid())return i.value;delete this._cache[t]}},ww=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async addMasterLiquidity(t){let{liquidity_stratefy:e}=this._sdk.sdkOptions,{clmm_pool:i}=this._sdk.ClmmSDK.sdkOptions,n=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress),r=E(0),o=E(0),s=[],a=[],l=[],u=[],h=[];t.liquidity_bins.forEach((P,j)=>{let B=t.amounts_a[j],D=t.amounts_b[j],q=t.bins_fix_amount_a[j];r=r.add(B),o=o.add(D),s.push(B),a.push(D),l.push(It(BigInt(P.tick_lower)).toString()),u.push(It(BigInt(P.tick_upper)).toString()),h.push(q)});let y=[t.coinTypeA,t.coinTypeB],v=new Hn.TransactionBlock,T=oe.buildAddLiquidityFixTokenCoinInput(v,!t.fix_amount_a,r.toString(),t.slippage,t.coinTypeA,n,!1)?.targetCoin,O=oe.buildAddLiquidityFixTokenCoinInput(v,t.fix_amount_a,o.toString(),t.slippage,t.coinTypeB,n,!1)?.targetCoin;return hw(t)?v.moveCall({target:`${e.published_at}::router::increase_liquidity`,typeArguments:y,arguments:[v.object(F(e).master_manger_id),v.object(t.master_address),v.object(F(i).global_config_id),v.object(t.pool_address),T,O,v.pure(s.map(P=>v.pure(P,"u64"))),v.pure(a.map(P=>v.pure(P,"u64"))),v.pure(h.map(P=>v.pure(P,"bool"))),v.object(z)]}):v.moveCall({target:`${e.published_at}::router::create_master_liquidity`,typeArguments:y,arguments:[v.object(F(e).master_manger_id),v.object(F(i).global_config_id),v.object(t.pool_address),T,O,v.pure(l.map(P=>v.pure(P,"u32"))),v.pure(u.map(P=>v.pure(P,"u32"))),v.pure(s.map(P=>v.pure(P,"u64"))),v.pure(a.map(P=>v.pure(P,"u64"))),v.pure(h.map(P=>v.pure(P,"bool"))),v.pure(t.strategy),v.pure(It(BigInt(t.tick_lower)).toString()),v.pure(It(BigInt(t.tick_upper)).toString()),v.object(z)]}),v}buildMasterNFTType(){return`${this._sdk.sdkOptions.liquidity_stratefy.package_id}::master_liquidity::MasterLiquidity`}async getMasterNFTList(t,e=[]){let i=[],n=await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0},filter:{Package:this._sdk.sdkOptions.liquidity_stratefy.package_id}}),r=e.length>0;for(let o of n.data)if(V(o.data.type).full_address===this.buildMasterNFTType()){let a=en.buildMasterNFT(o);if(a){let l=`${a.id}_masterNFT`;this.updateCache(l,a,X),r?e.includes(a.pool_id)&&i.push(a):i.push(a)}}return i}async getMasterNFT(t,e=!1){let i="$masterId}_masterNFT",n=this.getCache(i,e);if(n)return n;try{let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}});if(V(r.data.type).full_address===this.buildMasterNFTType()){let s=en.buildMasterNFT(r);return s&&this.updateCache(i,s,X),s}}catch(r){console.log(r)}}async fetchMasterPositionInfos(t){let e={},{clmm_pool:i,integrate:n,simulationAccount:r}=this.sdk.ClmmSDK.sdkOptions,o=new Hn.TransactionBlock;return t.forEach(a=>{a.position_ids.forEach(l=>{let u=[a.coinTypeA,a.coinTypeB],h=[o.object(F(i).global_config_id),o.object(a.pool_id),o.object(l)];o.moveCall({target:`${n.published_at}::${Jt}::fetch_position_fees`,arguments:h,typeArguments:u}),o.moveCall({target:`${n.published_at}::${Jt}::fetch_position_rewards`,arguments:[...h,o.object(z)],typeArguments:u})})}),(await this.sdk.ClmmSDK.fullClient.devInspectTransactionBlock({transactionBlock:o,sender:r.address})).events?.forEach(a=>{let{parsedJson:l}=a,{position_id:u}=l,h=e[u];switch(h===void 0&&(h={position_id:u,feeOwedA:"0",feeOwedB:"0",rewarders:[]},e[u]=h),V(a.type).name){case"FetchPositionFeesEvent":h.feeOwedA=l.fee_owned_a,h.feeOwedB=l.fee_owned_b;break;case"FetchPositionRewardsEvent":h.rewarders=l.data;break}}),e}async getLiquidityStrategyConfigs(t=!1){let{package_id:e}=this._sdk.sdkOptions.liquidity_stratefy,i=`${e}_getLiquidityStrategyConfigst`,n=this.getCache(i,t);if(n!==void 0)return n;let r=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${e}::master_liquidity::MasterLiquidityManagerCreatedEvent`})).data,o={master_manger_id:"",master_liquidity_handle:""};if(r.length>0){for(let s of r){let a=s.parsedJson;o.master_manger_id=a.id;let l=await this._sdk.ClmmSDK.fullClient.getObject({id:a.id,options:{showContent:!0}}),u=te(l);o.master_liquidity_handle=u.position_maps.fields.id.id;break}this.updateCache(i,o,X)}return o}removeMasterLiquidity(t){let{clmm_pool:e}=this.sdk.ClmmSDK.sdkOptions,{liquidity_stratefy:i}=this.sdk.sdkOptions,n=new Hn.TransactionBlock,r=[t.coinTypeA,t.coinTypeB];this.collectReward({coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,collect_fee:!1,rewarder_coin_types:t.rewarder_coin_types,master_address:t.master_address,pool_address:t.pool_address},n);let o=[n.object(F(i).master_manger_id),n.object(t.pool_address),n.object(t.master_address),n.object(F(e).global_config_id),n.pure(t.delta_liquidities.map(s=>n.pure(s,"u128"))),n.pure(t.min_amounts_a.map(s=>n.pure(s,"u64"))),n.pure(t.min_amounts_b.map(s=>n.pure(s,"u64"))),n.object(z)];return n.moveCall({target:`${i.published_at}::${Xs}::remove_liquidity`,typeArguments:r,arguments:o}),n}closeMasterLiquidity(t){let{clmm_pool:e}=this.sdk.ClmmSDK.sdkOptions,{liquidity_stratefy:i}=this.sdk.sdkOptions,n=new Hn.TransactionBlock,r=[t.coinTypeA,t.coinTypeB];return this.collectReward({coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,collect_fee:!1,rewarder_coin_types:t.rewarder_coin_types,master_address:t.master_address,pool_address:t.pool_address},n),n.moveCall({target:`${i.published_at}::${Xs}::close_master_liquidity`,typeArguments:r,arguments:[n.object(F(i).master_manger_id),n.object(t.master_address),n.object(F(e).global_config_id),n.object(t.pool_address),n.pure(t.min_amounts_a.map(o=>n.pure(o,"u64"))),n.pure(t.min_amounts_b.map(o=>n.pure(o,"u64"))),n.object(z)]}),n}collectFee(t,e){let{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions,{liquidity_stratefy:n}=this.sdk.sdkOptions;e=e===void 0?new Hn.TransactionBlock:e;let r=[t.coinTypeA,t.coinTypeB],o=[e.object(F(n).master_manger_id),e.object(t.master_address),e.object(F(i).global_config_id),e.object(t.pool_address)];return e.moveCall({target:`${n.published_at}::${Xs}::collect_fee`,typeArguments:r,arguments:o}),e}collectReward(t,e){let{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions,{liquidity_stratefy:n}=this.sdk.sdkOptions;return e=e===void 0?new Hn.TransactionBlock:e,t.collect_fee&&this.collectFee({...t},e),t.rewarder_coin_types.forEach(r=>{let o=[t.coinTypeA,t.coinTypeB,r];if(e){let s=[e.object(F(n).master_manger_id),e.object(t.master_address),e.object(F(i).global_config_id),e.object(t.pool_address),e.object(F(i).global_vault_id),e.object(z)];e.moveCall({target:`${n.published_at}::${Xs}::collect_reward`,typeArguments:o,arguments:s})}}),e}updateCache(t,e,i=Ge){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t],n=i?.isValid();if(!e&&n)return i.value;n||delete this._cache[t]}},vw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}buildCoinInput(t,e,i,n,r){let{selectedCoins:o,remainingCoins:s}=Ce.selectCoinAssetGreaterThanOrEqual(e,BigInt(n)),a=Ce.calculateTotalBalance(o);if(a<BigInt(n))throw new Error(`The amount(${a}) is Insufficient balance for ${i} , expect ${n} `);let l=a-BigInt(n),u;if(Ce.isSuiCoin(i))u=t.splitCoins(t.gas,[t.pure(n)]);else{let[h,...y]=o.map(v=>v.coinObjectId);u=t.object(h),y.length>0?r?t.mergeCoins(u,[...y.map(v=>t.object(v)),r]):t.mergeCoins(u,[...y.map(v=>t.object(v))]):r&&t.mergeCoins(u,[r])}return{selectedUnusedAmount:l,coinInput:u,remainingCoins:s}}async deposit(t){console.log("1110 deposit \u53C2\u6570: ",{params:t});let{vaults:e,frams:i}=this._sdk.sdkOptions,{clmm_pool:n}=this._sdk.ClmmSDK.sdkOptions,r=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.getVerifySenderAddress()),o=new Zn.TransactionBlock,s,a;if(t.swapParams){let y=await this.handleDepositSwap(t,o,r);s=y.primaryCoinAInputs,a=y.primaryCoinBInputs}else s=oe.buildAddLiquidityFixTokenCoinInput(o,!t.fix_amount_a,t.amount_a,t.slippage,t.coinTypeA,r,!1)?.targetCoin,a=oe.buildAddLiquidityFixTokenCoinInput(o,t.fix_amount_a,t.amount_b,t.slippage,t.coinTypeB,r,!1)?.targetCoin;let l=F(e),u=F(i),h=F(n);return o.moveCall({target:`${e.published_at}::${pw}::deposit`,typeArguments:[t.coinTypeA,t.coinTypeB,t.lp_token_type],arguments:[o.object(l.vaults_manager_id),o.object(t.vault_id),o.object(u.rewarder_manager_id),o.object(u.global_config_id),o.object(t.farming_pool),o.object(h.global_config_id),o.object(t.clmm_pool),s,a,o.pure(t.amount_a),o.pure(t.amount_b),o.pure(t.fix_amount_a),o.object(z)]}),o}async handleDepositSwap(t,e,i){let{clmm_pool:n,integrate:r}=this._sdk.ClmmSDK.sdkOptions,{swap_amount:o,a2b:s,route_obj:a,staking_id:l}=t.swapParams,u=s?t.coinTypeA:t.coinTypeB,h=oe.buildCoinForAmount(e,i,BigInt(o),u,!1),y=BigInt(h.tragetCoinAmount)-BigInt(o),v=[];if(l){let B=this.requestStakeCoin(l,e,h.targetCoin),D=oe.buildCoinForAmount(e,h.remainCoins,BigInt(0),u,!1).targetCoin;v=s?[D,B]:[B,D]}else if(a){let B=oe.buildCoinForAmount(e,i,0n,s?t.coinTypeB:t.coinTypeA,!1),D=await oe.buildAggregatorSwapReturnCoins(this._sdk.ClmmSDK,a,h,B,"",t.slippage,e);v=s?[D.fromCoin,D.toCoin]:[D.toCoin,D.fromCoin],console.log("swapCoinInputTo.isMintZeroCoin: ",B),!B.isMintZeroCoin&&B.originalSplitedCoin===void 0&&e.transferObjects([B.targetCoin],e.pure(this._sdk.getVerifySenderAddress()))}else{let B=oe.buildCoinForAmount(e,i,0n,s?t.coinTypeB:t.coinTypeA,!1),D=Ai.getDefaultSqrtPriceLimit(s).toString();v=e.moveCall({target:`${r.published_at}::${_n}::swap`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(F(n).global_config_id),e.object(t.clmm_pool),s?h.targetCoin:B.targetCoin,s?B.targetCoin:h.targetCoin,e.pure(s),e.pure(!0),e.pure(o),e.pure(D),e.pure(!1),e.object(z)]})}let T,O,P=v[0],j=v[1];if(s){let B=BigInt(t.amount_a)-y;Ce.isSuiCoin(u)?(e.transferObjects([P],e.pure(this._sdk.getVerifySenderAddress())),T=e.splitCoins(e.gas,[e.pure(t.amount_a)])):B>0n?T=this.buildCoinInput(e,h.remainCoins,u,B,P).coinInput:T=P,O=j}else{T=P;let B=BigInt(t.amount_b)-y;Ce.isSuiCoin(u)?(e.transferObjects([j],e.pure(this._sdk.getVerifySenderAddress())),O=e.splitCoins(e.gas,[e.pure(t.amount_b)])):B>0n?O=this.buildCoinInput(e,h.remainCoins,u,B,j).coinInput:O=j}return{primaryCoinAInputs:T,primaryCoinBInputs:O}}async remove(t){console.log({params:t});let{vaults:e,frams:i}=this.sdk.sdkOptions,{clmm_pool:n,integrate:r}=this._sdk.ClmmSDK.sdkOptions,o=new Zn.TransactionBlock,s=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.getVerifySenderAddress(),t.lp_token_type),a=oe.buildCoinForAmount(o,s,BigInt(t.lp_token_amount),t.lp_token_type,!1).targetCoin,l=F(e),u=F(i),h=F(n),y=[t.coinTypeA,t.coinTypeB,t.lp_token_type],v=o.moveCall({target:`${e.published_at}::${mw}::remove`,typeArguments:y,arguments:[o.object(l.vaults_manager_id),o.object(t.vault_id),o.object(u.rewarder_manager_id),o.object(u.global_config_id),o.object(t.farming_pool),o.object(h.global_config_id),o.object(t.clmm_pool),a,o.pure(t.lp_token_amount),o.pure(t.min_amount_a),o.pure(t.min_amount_b),o.object(z)]}),T=v[0],O=v[1];if(t.swapParams){let{a2b:P,swap_amount:j,route_obj:B}=t.swapParams;if(B){let D={targetCoin:P?T:O,remainCoins:[],isMintZeroCoin:!1,tragetCoinAmount:""},q={targetCoin:P?O:T,remainCoins:[],isMintZeroCoin:!1,tragetCoinAmount:""},K=await oe.buildAggregatorSwapReturnCoins(this._sdk.ClmmSDK,B,D,q,"",t.slippage,o),Z=P?[K.fromCoin,K.toCoin]:[K.toCoin,K.fromCoin];P?o.mergeCoins(Z[1],[O]):o.mergeCoins(Z[0],[T]),o.transferObjects([...Z],o.pure(this._sdk.getVerifySenderAddress()))}else{let D=Ai.getDefaultSqrtPriceLimit(P).toString(),q=o.moveCall({target:`${r.published_at}::${_n}::swap`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[o.object(F(n).global_config_id),o.object(t.clmm_pool),T,O,o.pure(P),o.pure(!0),o.pure(j),o.pure(D),o.pure(!0),o.object(z)]});o.transferObjects([q[0],q[1]],o.pure(this._sdk.getVerifySenderAddress()))}}else o.transferObjects([T,O],o.pure(this._sdk.getVerifySenderAddress()));return o}async getVaultList(t="all"){let{vaults:e}=this._sdk.sdkOptions,i=await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${e.package_id}::vaults::CreateEvent`},t),n=i.data.map(s=>s.parsedJson.id),r=await this._sdk.ClmmSDK.fullClient.batchGetObjects(n,{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}),o=[];return r.forEach(s=>{let a=qi.buildPool(s);a&&(a.staking_id=this.findHaedalStakeId(a.position.coinTypeA,a.position.coinTypeB),this.savePoolToCache(a),o.push(a))}),i.data=o,i}findHaedalStakeId(t,e){let{haedal:i}=this._sdk.sdkOptions,{support_stakings:n}=F(i);return n.length===0?void 0:n.filter(o=>{let s=V(o.from_coin_type).full_address,a=V(o.to_coin_type).full_address,l=V(t).full_address,u=V(e).full_address;return l===s&&u===a||l===a&&u===s})[0]?.staking_id||void 0}savePoolToCache(t){let e=`${t.id}_mirrorPool`;this.updateCache(e,t,X)}readPoolFromCache(t,e=!1){let i=`${t}_mirrorPool`;return this.getCache(i,e)}async calculateMaxAvailable(t){let{integrate:e,simulationAccount:i}=this.sdk.ClmmSDK.sdkOptions,n=new Zn.TransactionBlock,r=ie.tickIndexToSqrtPriceX64(t.lowerTick),o=ie.tickIndexToSqrtPriceX64(t.upperTick),s=new Me.default(t.curSqrtPrice),a=ze.getCoinAmountFromLiquidity(new Me.default(t.input_amount),s,r,o,!1),l=[t.coinTypeA,t.coinTypeB];n.moveCall({target:`${e.published_at}::${Jt}::calculate_swap_result`,arguments:[n.object(t.clmm_pool),n.pure(!0),n.pure(!0),n.pure(a.coinA.toString())],typeArguments:l}),n.moveCall({target:`${e.published_at}::${Jt}::calculate_swap_result`,arguments:[n.object(t.clmm_pool),n.pure(!1),n.pure(!0),n.pure(a.coinB.toString())],typeArguments:l});let h=(await this.sdk.ClmmSDK.fullClient.devInspectTransactionBlock({transactionBlock:n,sender:i.address})).events?.filter(P=>V(P.type).name==="CalculatedSwapResultEvent");if(h.length===0)return null;let y=h[0].parsedJson.data,v=h[1].parsedJson.data,T=E(a.coinB.toString()).add(y.amount_out),O=E(a.coinA.toString()).add(v.amount_out);return{maxAmountB:T,maxAmountA:O}}async calculateRemoveSwapAmount(t,e){let i=qi.calculateDepositRatio(t.lowerTick,t.upperTick,new Me.default(t.curSqrtPrice)),n=t.fix_amount_a?i.ratioA:i.ratioB;console.log({fixRatio:n});let r=E(t.receive_amount).mul(n),o,s;if(t.removeLiquidity){let P=ie.tickIndexToSqrtPriceX64(t.lowerTick),j=ie.tickIndexToSqrtPriceX64(t.upperTick),B=ze.getCoinAmountFromLiquidity(new Me.default(t.removeLiquidity),new Me.default(t.curSqrtPrice),P,j,!1);s=t.removeLiquidity,o=t.fix_amount_a?B.coinB.toString():B.coinA.toString(),r=t.fix_amount_a?E(B.coinA.toString()):E(B.coinB.toString())}else{let P=ze.estLiquidityAndcoinAmountFromOneAmounts(t.lowerTick,t.upperTick,new Me.default(r.toFixed(0)),t.fix_amount_a,!1,.2,new Me.default(t.curSqrtPrice));s=P.liquidityAmount.toString(),o=t.fix_amount_a?P.coinAmountB.toString():P.coinAmountA.toString()}console.log({fixAmount:r,otherSideAmount:o});let a=!t.fix_amount_a,l=await this.clmmPreSwap(t.clmm_pool,t.curSqrtPrice,a,E(o),t.coinTypeA,t.coinTypeB,!0,t.priceSplitPoint,t.use_route,[{pool_id:t.clmm_pool,tick_lower:t.lowerTick,tick_upper:t.upperTick,delta_liquidity:Number(s),is_increase:!1}]);console.log({data:l,range:e});let u=r.add(l.amount_out),h=E(t.receive_amount),y=h.sub(u);if(console.log(`\u5B9E\u9645\u5F97\u5230: ${u.toString()} , \u671F\u671B\u5F97\u5230: ${t.receive_amount}, \u5269\u4F59: ${y.toString()} `),(!t.removeLiquidity||t.removeLiquidity&&e)&&y.abs().greaterThan(h.mul(.01))){let P=u.lessThan(h),j,B;e?P?(j=E(s),B=e.right):(j=e.left,B=E(s)):(j=P?E(s):E(0),B=P?E(t.maxLiquidity):E(s));let D=E(j).add(B).div(2).toFixed(0);if(console.log({left:j.toString(),right:B.toString(),midLiquidity:D.toString()}),!e||e&&e.count<15&&j<B)return await this.calculateRemoveSwapAmount({...t,removeLiquidity:D},{left:j,right:B,count:e?e.count+1:0})}let v=l.amount_in&&l.fee_amount?new Me.default(l.amount_in).add(new Me.default(l.fee_amount)).toString():l.amount_in,T=l.amount_out,{is_exceed:O}=l;return{swapInAmount:v,swapOutAmount:T,liquidity:s,is_exceed:O,routeObj:l.route_obj,request_id:t.request_id}}async calculateHaedalDepositFixSui(t){let e=t.inputSuiAmount.mul(t.remainRate),i=t.inputSuiAmount.sub(t.swapSuiAmount),n=t.exchangeRate?t.exchangeRate:await this.getExchangeRateForHaedal(t.staking_id,t.shouldRequestStake,Number(t.swapSuiAmount.toFixed(0))),r=t.swapSuiAmount.div(n).toFixed(0);console.log({swapAmount:t.swapSuiAmount.toString(),hasuiAmount:r.toString(),leftSuiAmount:t.leftSuiAmount.toString(),rightSuiAmount:t.rightSuiAmount.toString(),exchangeRate:n});let o=ze.estLiquidityAndcoinAmountFromOneAmounts(t.lowerTick,t.upperTick,new Me.default(r.toString()),!t.fixCoinA,!0,0,new Me.default(t.curSqrtPrice)),s=t.fixCoinA?o.coinAmountA.toString():o.coinAmountB.toString(),a=E(i).sub(s);return console.log({useSuiAmount:s.toString(),hasuiAmount:r.toString(),remainSui:i.toString(),remainSuiLimit:e.toString(),actRemainSui:a.toString(),rebalanceCount:t.rebalanceCount}),a.greaterThanOrEqualTo(0)&&a.lessThanOrEqualTo(e)||t.rebalanceCount>12||t.leftSuiAmount.greaterThanOrEqualTo(t.rightSuiAmount)?{swapInAmount:t.swapSuiAmount.toFixed(0),swapOutAmount:r,afterSqrtPrice:t.curSqrtPrice,fixAmountA:!t.fixCoinA,is_exceed:!0,request_id:"",staking_id:t.staking_id}:a.lessThan(0)?await this.calculateHaedalDepositFixSui({...t,rightSuiAmount:t.swapSuiAmount,swapSuiAmount:t.swapSuiAmount.add(t.leftSuiAmount).div(2),exchangeRate:n,rebalanceCount:t.rebalanceCount+1}):a.greaterThan(e)?await this.calculateHaedalDepositFixSui({...t,leftSuiAmount:t.swapSuiAmount,swapSuiAmount:t.swapSuiAmount.add(t.rightSuiAmount).div(2),exchangeRate:n,rebalanceCount:t.rebalanceCount+1}):null}async calculateDepositSwapAmount(t,e=!1){let i=ie.sqrtPriceX64ToTickIndex(new Me.default(t.curSqrtPrice)),{ratioA:n,ratioB:r}=qi.calculateDepositRatio(t.lowerTick,t.upperTick,new Me.default(t.curSqrtPrice));console.log("1110 calculateDepositSwapAmount params: ",{...t,currentTick:i,adjustBestAmount:e});let o=E(t.input_amount).mul(t.fix_amount_a?n:r),s=E(t.input_amount).sub(o);console.log("1110 ",{fixAmount:o.toString(),swapAmount:s.toString()});let a=t.fix_amount_a;if(s.toFixed(0)==="0")return null;if(t.staking_id){if(Ce.isSuiCoin(t.coinTypeA)&&t.fix_amount_a||Ce.isSuiCoin(t.coinTypeB)&&!t.fix_amount_a){let G=await this.calculateHaedalDepositFixSui({inputSuiAmount:E(t.input_amount),swapSuiAmount:s,lowerTick:t.lowerTick,upperTick:t.upperTick,curSqrtPrice:t.curSqrtPrice,remainRate:t.remainRate?t.remainRate:.01,fixCoinA:t.fix_amount_a,rebalanceCount:0,shouldRequestStake:t.shouldRequestStake,leftSuiAmount:a?new U(s.toFixed(0)):new U(0),rightSuiAmount:a?new U(t.input_amount):new U(s.toFixed(0)),staking_id:t.staking_id});return G?{...G,request_id:t.request_id}:null}throw Error("Only support fix sui")}let l=i<t.lowerTick||i>t.upperTick,u={clmm_pool:t.clmm_pool,curSqrtPrice:t.curSqrtPrice,a2b:a,amount_a:a?new U(t.input_amount):new U(0),amount_b:a?new U(0):new U(t.input_amount),amount_left:a?new U(s.toFixed(0)):new U(0),amount_right:a?new U(t.input_amount):new U(s.toFixed(0)),lowerTick:t.lowerTick,upperTick:t.upperTick,tick_spacing:2,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,useRoute:t.use_route,remainRate:t.remainRate?t.remainRate:.01,priceSplitPoint:t.priceSplitPoint},h=e&&i<=t.upperTick,y=h?await this.calculateRebalance(u):await this.clmmPreSwap(t.clmm_pool,t.curSqrtPrice,a,s,t.coinTypeA,t.coinTypeB,!0,t.priceSplitPoint,t.use_route),v=y.after_sqrt_price,T=ie.sqrtPriceX64ToTickIndex(new Me.default(v));console.log("1110 \u9996\u6B21\u8BA1\u7B97 \u7ED3\u679C: ",{...y,currentTick:T},null,2);let O=T<t.lowerTick||T>t.upperTick;if(l!==O&&!h&&T<=t.upperTick){console.log("1110 \u533A\u95F4\u53D1\u751F\u53D8\u5316, \u518D\u6B21\u8FDB\u884Cswap: ");let{ratioA:G,ratioB:J}=qi.calculateDepositRatio(t.lowerTick,t.upperTick,new Me.default(v));console.log("1110 ",{newAfterRatioA:G,newAfterRatioB:J}),s=E(t.input_amount).sub(E(t.input_amount).mul(t.fix_amount_a?G:J)),u.amount_left=a?new U(s.toFixed(0)):new U(0),u.amount_right=a?new U(t.input_amount):new U(s.toFixed(0)),y=await this.calculateRebalance(u),v=y.after_sqrt_price;let x=ie.sqrtPriceX64ToTickIndex(new Me.default(v));console.log("1110 \u518D\u6B21\u8BA1\u7B97\u53D8\u5316\u540E: ",{lowerTick:t.lowerTick,upperTick:t.upperTick,currentTick:x,afterSqrtPrice:v})}let{ratioA:P,ratioB:j}=qi.calculateDepositRatio(t.lowerTick,t.upperTick,new Me.default(v));console.log("1110 1",{afterRatioA:P,afterRatioB:j,data:y});let B=j.div(P).sub(r.div(n)).greaterThan("0"),D=y.amount_in&&y.fee_amount?new Me.default(y.amount_in).add(new Me.default(y.fee_amount)).toString():y.amount_in,q=y.amount_out,{is_exceed:K}=y;if(T<t.lowerTick)B=!0;else if(T>t.upperTick)B=!1;else{let G=B===a?new Me.default(E(t.input_amount).sub(D).toString()):new Me.default(q),J=ze.estLiquidityAndcoinAmountFromOneAmounts(t.lowerTick,t.upperTick,G,B,!0,0,new Me.default(v)),x=J.coinAmountA,I=J.coinAmountB,A=E(t.fix_amount_a?x.toString():I.toString()).add(D);console.log("1110 \u5B9E\u9645\u6D88\u8017:",{preAmountTotal:A.toString(),fixAmountA:B}),A.greaterThanOrEqualTo(t.input_amount)&&(B=!B)}let Z={swapInAmount:D,swapOutAmount:q,afterSqrtPrice:v,is_exceed:K,fixAmountA:B,routeObj:y.route_obj,request_id:t.request_id,use_Haedal_stake:!1};return console.log(Z),Z}async calculateHaedalDepositSwapAmount(t){let e=ie.sqrtPriceX64ToTickIndex(new Me.default(t.curSqrtPrice)),{ratioA:i,ratioB:n}=qi.calculateDepositRatio(t.lowerTick,t.upperTick,new Me.default(t.curSqrtPrice));console.log("1110 calculateDepositSwapAmount params: ",{...t,currentTick:e});let r=E(t.input_amount).mul(t.fix_amount_a?i:n),o=E(t.input_amount).sub(r);console.log("1110 ",{fixAmount:r.toString(),swapAmount:o.toString()});let s=t.fix_amount_a;if(o.toFixed(0)==="0")return null;if(t.staking_id){if(Ce.isSuiCoin(t.coinTypeA)&&t.fix_amount_a||Ce.isSuiCoin(t.coinTypeB)&&!t.fix_amount_a){let a=await this.calculateHaedalDepositFixSui({inputSuiAmount:E(t.input_amount),swapSuiAmount:o,lowerTick:t.lowerTick,upperTick:t.upperTick,curSqrtPrice:t.curSqrtPrice,remainRate:t.remainRate?t.remainRate:.01,fixCoinA:t.fix_amount_a,rebalanceCount:0,shouldRequestStake:t.shouldRequestStake,leftSuiAmount:s?new U(o.toFixed(0)):new U(0),rightSuiAmount:s?new U(t.input_amount):new U(o.toFixed(0)),staking_id:t.staking_id});return a?{...a,request_id:t.request_id}:null}throw Error("Only support fix sui")}return null}async calculateRebalance(t){let{clmm_pool:e,a2b:i,curSqrtPrice:n,amount_a:r,amount_b:o,lowerTick:s,upperTick:a,amount_left:l,amount_right:u,coinTypeA:h,coinTypeB:y,useRoute:v,priceSplitPoint:T,remainRate:O}=t,P=async(j,B,D)=>{let q=j.plus(B).div(2),K=await this.clmmPreSwap(e,n,i,q,h,y,!0,T,v);if(K.amount_out==="0")return K;if(K.after_sqrt_price||(K.after_sqrt_price=t.curSqrtPrice),K.is_exceed)return B=q,P(j,B,D+1);let Z=i?r.sub(K.amount_in):r.add(K.amount_out),G=i?o.add(K.amount_out):o.sub(K.amount_in),J=ie.sqrtPriceX64ToTickIndex(new Me.default(K.after_sqrt_price)),x=ze.estLiquidityAndcoinAmountFromOneAmounts(s,a,new Me.default(Z.toString()),!0,!0,1,new Me.default(K.after_sqrt_price)),I=new U(x.coinAmountA.toString()),A=new U(x.coinAmountB.toString());if(console.log("1110 swap\u9012\u5F52\u8BA1\u7B97 ",{preRes:K,left:j.toString(),right:B.toString(),mid:q.toString(),afterPoolTickIndex:J,afterA:Z.toString(),afterB:G.toString(),usedA:I.toString(),usedB:toString(),count:D}),I.toString()!==Z.toString())throw new Error("usedA does not match afterA");if(G.lessThan(A))i?j=q:B=q;else{i?B=q:j=q;let M=G.sub(A),k=G.mul(O);if(console.log("1110 \u5269\u4F59\u672A\u4F7F\u7528amount ",{remainingB:M.toString(),maxRemainingB:k.toString(),remainRate:O,count:D}),k.sub(M).greaterThanOrEqualTo(0))return console.log("break"),{...K,remainingB:M}}return j.greaterThan(B)||B.sub(j).lessThan(10)?K:P(j,B,D+1)};return l.greaterThanOrEqualTo(u)?P(new U(0),l,0):P(l,u,0)}async clmmPreSwap(t,e,i,n,r,o,s,a,l,u){if(l)try{let B=await this._sdk.ClmmSDK.RouterV2.getBestRouter(i?r:o,i?o:r,Number(n.toFixed(0)),s,a,"",void 0,void 0,!0,!1,u);if(!B.result)throw new Error("route unavailable");let{result:D}=B,q=e;return D.splitPaths.forEach(K=>{let Z=K.basePaths.find(G=>G.poolAddress.toLowerCase()===t.toLowerCase());Z&&(q=Z.afterSqrtPrice.toString())}),{amount_in:D.inputAmount.toString(),amount_out:D.outputAmount.toString(),after_sqrt_price:q,is_exceed:D.isExceed,route_obj:D}}catch{throw new Error("route unavailable")}let{integrate:h,simulationAccount:y}=this.sdk.ClmmSDK.sdkOptions,v=new Zn.TransactionBlock,T=[r,o],O=[v.pure(t),v.pure(i),v.pure(s),v.pure(n.toFixed(0))];v.moveCall({target:`${h.published_at}::${Jt}::calculate_swap_result`,arguments:O,typeArguments:T});let j=(await this.sdk.ClmmSDK.fullClient.devInspectTransactionBlock({transactionBlock:v,sender:y.address})).events?.filter(B=>V(B.type).name==="CalculatedSwapResultEvent");return j.length===0?null:j[0].parsedJson.data}async getVault(t,e=!1){let i=this.readPoolFromCache(t,e);if(i)return i;try{let n=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}}),r=qi.buildPool(n);if(r)return r.staking_id=this.findHaedalStakeId(r.position.coinTypeA,r.position.coinTypeB),this.savePoolToCache(r),r}catch(n){console.log(n)}}async getVaultsConfigs(t=!1){let{package_id:e}=this._sdk.sdkOptions.vaults,i=`${e}_getMirrorPoolConfigs`,n=this.getCache(i,t);if(n!==void 0)return n;let r=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${e}::vaults::InitEvent`})).data,o={admin_cap_id:"",vaults_manager_id:"",vaults_pool_handle:""};if(r.length>0){for(let s of r){let a=s.parsedJson;o.admin_cap_id=a.admin_cap_id,o.vaults_manager_id=a.manager_id;let l=await this._sdk.ClmmSDK.fullClient.getObject({id:o.vaults_manager_id,options:{showContent:!0}}),u=te(l);o.vaults_pool_handle=u.vault_to_pool_maps.fields.id.id;break}this.updateCache(i,o,X)}return o}async getExchangeRateForHaedal(t,e,i){let{haedal:n}=this._sdk.sdkOptions,{simulationAccount:r}=this._sdk.ClmmSDK.sdkOptions;try{let o=new Zn.TransactionBlock;e?await this.requestStake(t,i||1e9,o):o.moveCall({target:`${n.published_at}::staking::get_exchange_rate`,typeArguments:[],arguments:[o.object(t)]});let s=await this._sdk.ClmmSDK.fullClient.devInspectTransactionBlock({transactionBlock:o,sender:e?this._sdk.ClmmSDK.senderAddress:r.address});if(console.log("getExchangeRateForHaedal res: ",s),e){let u=s.events.find(T=>T.type.includes("UserStaked")),{sui_amount:h,st_amount:y}=u.parsedJson,v=E(h).div(y).toString();return console.log({st_amount:y,sui_amount:h,rate:v}),v}let a=s.results[0].returnValues[0][0],l=_l.bcs.de("u64",Uint8Array.from(a))/1e6;return console.log("rate ",_l.bcs.de("u64",Uint8Array.from(a))),l.toString()}catch(o){console.log("getExchangeRateForHaedal",o)}return"0"}requestStakeCoin(t,e,i){let{haedal:n}=this._sdk.sdkOptions;return e.moveCall({target:`${n.published_at}::staking::request_stake_coin`,typeArguments:[],arguments:[e.object((0,mo.normalizeSuiObjectId)("0x5")),e.object(t),i,e.pure((0,mo.normalizeSuiObjectId)("0x0"))]})}async requestStake(t,e,i){let{haedal:n}=this._sdk.sdkOptions,r=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.getVerifySenderAddress(),ho);i=i||new Zn.TransactionBlock;let o;if(e>95e10){let[s,...a]=r;a.length>0&&i.mergeCoins(i.object(s.coinObjectId),a.map(l=>i.object(l.coinObjectId))),o=i.splitCoins(i.object(s.coinObjectId),[e])}else o=oe.buildCoinForAmount(i,r,BigInt(e),ho,!1,!0).targetCoin;return i.moveCall({target:`${n.published_at}::interface::request_stake`,typeArguments:[],arguments:[i.object((0,mo.normalizeSuiObjectId)("0x5")),i.object(t),o,i.pure((0,mo.normalizeSuiObjectId)("0x0"))]}),i}updateCache(t,e,i=Ge){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t],n=i?.isValid();if(!e&&n)return i.value;n||delete this._cache[t]}},Ys=class{static buildOrderLimitEvent(t){let{events:e}=t,i=[];return e&&e.forEach(n=>{let r=V(n.type).name;if(r==="OrderPlacedEvent"||r==="OrderCanceledEvent"||r==="FlashLoanEvent"){let o={digest:t.digest,type:r,timestampMs:t.timestampMs,parsedJson:n.parsedJson};i.push(o)}}),i}static buildLimitOrderInfo(t){let e=te(t),i=Ii(t);if(e&&i)try{let n=V(i),r={pay_coin_type:n.type_arguments[0],target_coin_type:n.type_arguments[1],balance:e.balance,canceled_ts:e.canceled_ts==="18446744073709551615"?0:Number(e.canceled_ts),id:e.id.id,obtained_amount:e.obtained_amount,owner:e.owner,rate:e.rate,expire_ts:Number(e.expire_ts),total_pay_amount:e.total_pay_amount,status:"Running",created_ts:Number(e.created_ts)};if(r.canceled_ts===0)r.status="Running";else if(Number(r.obtained_amount)===0)r.status="Cancelled";else{let o=E(r.total_pay_amount).mul(1e20).div(r.rate).toFixed(0);r.obtained_amount===o?r.status="Completed":r.status="Cancelled"}return r}catch(n){console.log(n)}}static calculateFormatRate(t,e,i){let n=20+e-i;return E(t).mul(E(10).pow(n)).toString()}static calculateRate(t,e,i){let n=20+e-i;return Number(t)/10**n}},kw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getLimitOrderTokenList(){let{limit_order:t}=this._sdk.sdkOptions,{token_list_handle:e}=F(t),{fullClient:i}=this._sdk.ClmmSDK,r=(await i.getDynamicFieldsByPage(e)).data.map(s=>s.objectId);return(await i.batchGetObjects(r,{showContent:!0})).map(s=>{let{fields:a}=s.data.content;return{coin_type:V(a.name.fields.name).full_address,min_trade_amount:Number(a.value)}})}async getLimitOrderPoolList(){let{limit_order:t}=this._sdk.sdkOptions,{rate_orders_indexer_handle:e}=F(t),{fullClient:i}=this._sdk.ClmmSDK,r=(await i.getDynamicFieldsByPage(e)).data.map(s=>s.objectId);return(await i.batchGetObjects(r,{showContent:!0})).map(s=>{let{fields:a}=s.data.content.fields.value,l={pay_coin_type:V(a.pay_coin.fields.name).full_address,target_coin_type:V(a.target_coin.fields.name).full_address,indexer_id:a.indexer_id};return this._sdk.updateCache(`${l.pay_coin_type}_${l.target_coin_type}`,l.indexer_id),l})}async getPoolIndexerId(t,e){let i=this._sdk.getCache(`${t}_${e}`);try{if(i===void 0){let r=(await this.getLimitOrderPoolList()).filter(o=>o.pay_coin_type===t&&o.target_coin_type===e);if(r.length>0)return r[0].indexer_id}}catch{}return i}async getOwnerLimitOrderList(t,e){let{fullClient:i}=this._sdk.ClmmSDK,n={data:[],hasNextPage:!1};try{let r=await this.getUserIndexerHandle(t);if(!r)return n;let o=await i.getDynamicFieldsByPage(r,e);n.hasNextPage=o.hasNextPage,n.nextCursor=o.nextCursor;let s=o.data.map(u=>u.name.value),l=(await i.batchGetObjects(s,{showContent:!0})).map(u=>Ys.buildLimitOrderInfo(u)).filter(u=>u!==void 0);n.data=l}catch(r){console.error("Error in getOwnerLimitOrderList:",r)}return n}async getLimitOrderConfigs(){let{package_id:t}=this._sdk.sdkOptions.limit_order,e={rate_orders_indexer_id:"",rate_orders_indexer_handle:"",global_config_id:"",token_list_handle:"",user_orders_indexer_id:"",user_orders_indexer_handle:""},i=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::limit_order::InitEvent`})).data;if(i.length>0){let r=i[0].parsedJson;e.rate_orders_indexer_id=r.rate_orders_indexer_id,e.user_orders_indexer_id=r.user_orders_indexer_id;let o=await this._sdk.ClmmSDK.fullClient.getObject({id:e.rate_orders_indexer_id,options:{showContent:!0}});e.rate_orders_indexer_handle=te(o).list.fields.id.id;let s=await this._sdk.ClmmSDK.fullClient.getObject({id:e.user_orders_indexer_id,options:{showContent:!0}});e.user_orders_indexer_handle=te(s).indexer.fields.id.id}let n=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::config::InitFactoryEvent`})).data;if(n.length>0){let r=n[0].parsedJson;e.global_config_id=r.global_config_id;let o=await this._sdk.ClmmSDK.fullClient.getObject({id:e.global_config_id,options:{showContent:!0}}),s=te(o);e.token_list_handle=s.token_white_list.fields.id.id}return e}async getLimitOrder(t){let{fullClient:e}=this._sdk.ClmmSDK;try{let i=await e.getObject({id:t,options:{showContent:!0}});return Ys.buildLimitOrderInfo(i)}catch(i){console.error("Error in getLimitOrder:",i);return}}async getLimitOrderLogs(t){let{fullClient:e}=this._sdk.ClmmSDK;try{let i=await e.queryTransactionBlocks({filter:{ChangedObject:t},options:{showEvents:!0}}),n=[];return i.data.forEach(r=>{n.push(...Ys.buildOrderLimitEvent(r))}),n}catch(i){return console.error("Error in getLimitOrderLogs:",i),[]}}buildRateOrdersIndexerType(t){let{limit_order:e}=this._sdk.sdkOptions;return xr(`${e.package_id}::limit_order::RateOrdersIndexer`,[t.pay_coin_type,t.target_coin_type])}async placeLimitOrder(t){let{limit_order:e}=this._sdk.sdkOptions,{user_orders_indexer_id:i,global_config_id:n,rate_orders_indexer_id:r}=F(e),o=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress,t.pay_coin_type),s=new ea.TransactionBlock,a=await this.getPoolIndexerId(t.pay_coin_type,t.target_coin_type),l=oe.buildCoinForAmount(s,o,BigInt(t.pay_coin_amount),t.pay_coin_type,!1,!0);return s.moveCall({target:`${e.published_at}::limit_order::${a===void 0?"create_indexer_and_place_limit_order":"place_limit_order"}`,typeArguments:[t.pay_coin_type,t.target_coin_type],arguments:[s.object(n),a===void 0?s.object(r):s.object(a),s.object(i),l.targetCoin,s.pure(Ys.calculateFormatRate(t.rate,t.pay_decimal,t.target_decimal)),s.pure(t.expired_ts),s.object(z)]}),s}async cancelOrdersByOwner(t){let{limit_order:e}=this._sdk.sdkOptions,{global_config_id:i}=F(e),n=new ea.TransactionBlock,r=await this.getPoolIndexerId(t.pay_coin_type,t.target_coin_type);if(r===void 0)throw Error("not found indexerId");return t.order_ids.forEach(o=>{n.moveCall({target:`${e.published_at}::limit_order::cancel_order_by_owner`,typeArguments:[t.pay_coin_type,t.target_coin_type],arguments:[n.object(i),n.object(r),n.object(o),n.object(z)]})}),n}async getUserIndexerHandle(t){let{fullClient:e}=this._sdk.ClmmSDK,{limit_order:i}=this._sdk.sdkOptions,n=this.getUserIndexerHandleByCache(t);if(n===void 0){let r=new ea.TransactionBlock;r.moveCall({target:`${i.published_at}::limit_order::get_orders_indexer_by_owner`,typeArguments:[],arguments:[r.pure(t),r.object(F(i).user_orders_indexer_id)]}),n=(await e.devInspectTransactionBlock({transactionBlock:r,sender:this._sdk.ClmmSDK.sdkOptions.simulationAccount.address})).events[0].parsedJson.orders_table_id,n&&this.saveUserIndexerHandleByCache(t,n)}return n}getUserIndexerHandleByCache(t){let e=`getUserIndexerHandleByCache_${t}`;return this.getCache(e)}saveUserIndexerHandleByCache(t,e){let i=`getUserIndexerHandleByCache_${t}`;return this.updateCache(i,e)}updateCache(t,e,i=X){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t],n=i?.isValid();if(!e&&n)return i.value;n||delete this._cache[t]}},Cw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getFramsPoolList(t="all"){let{package_id:e}=this._sdk.sdkOptions.frams,i={data:[],hasNextPage:!1};try{let n=await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${e}::pool::CreatePoolEvent`},t),r=n.data.map(o=>o.parsedJson.pool_id);if(i.hasNextPage=n.hasNextPage,i.nextCursor=n.nextCursor,r.length>0){let o=await this._sdk.ClmmSDK.fullClient.batchGetObjects(r,{showType:!0,showContent:!0});for(let s of o){let a=Js.buildFramsPool(s);a&&(a.rewarders=await this.getFramsRewarderConfig(a.clmm_pool_id,a.rewarders.map(l=>l.reward_coin)),i.data.push(a),this.updateCache(a.id,a))}}}catch(n){console.log("getFramsPoolList error ",n)}return i}async getFramsPool(t,e=!1){let i=this.getCache(t,e);if(i)return i;let n=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0}}),r=Js.buildFramsPool(n.data);return r&&(r.rewarders=await this.getFramsRewarderConfig(r.clmm_pool_id,r.rewarders.map(o=>o.reward_coin)),this.updateCache(r.id,r)),r}async getFramsRewarderConfig(t,e,i=!1){let{frams:n}=this._sdk.sdkOptions,r=[];for(let o of e){let s=`getFramsRewarderConfig_${o}_${t}`,a=this.getCache(s,i);if(a)r.push(a);else try{let l=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:F(n).rewarder_manager_handle,name:{type:"0x1::type_name::TypeName",value:ul(o)}}),{fields:u}=l.data.content.fields.value.fields.value,h={reward_coin:o,last_reward_time:u.last_reward_time,emission_per_second:u.emission_per_second,total_allocate_point:u.total_allocate_point,allocate_point:""},y=u.pools.fields.id.id,v=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:y,name:{type:"0x2::object::ID",value:t}}),{allocate_point:T}=v.data.content.fields.value.fields.value.fields;h.allocate_point=T,this.updateCache(s,h),r.push(h)}catch(l){console.log(l)}}return r}async getOwnedFramsPositionNFTList(t,e=[],i=!1,n=!0,r="all"){let{package_id:o}=this._sdk.sdkOptions.frams,s={data:[],hasNextPage:!1},a={},l=[],u=e.length>0,h=await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{filter:{StructType:`${o}::pool::WrappedPositionNFT`},options:{showContent:!0}},r);s.hasNextPage=h.hasNextPage,s.nextCursor=h.nextCursor;for(let y of h.data){let v=Js.buildFramsPositionNFT(y);if(v)if(u){if(e.includes(v.pool_id)){l.push(v);let T=a[v.pool_id];T?T.push(v):T=[v],a[v.pool_id]=T}}else l.push(v)}if(i&&l.length>0){let y=await this.calculateFarmingRewards(l.map(v=>({pool_id:v.pool_id,position_nft_id:v.id,clmm_pool_id:v.clmm_pool_id})),n);u?(a={},l.forEach(v=>{y[v.id]&&(v.rewards=y[v.id]);let O=a[v.pool_id];O?O.push(v):O=[v],a[v.pool_id]=O})):l.forEach(v=>{y[v.id]&&(v.rewards=y[v.id])})}return u?a:(s.data=l,s)}async getFramsPositionNFT(t,e=!0){let i=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),n=Js.buildFramsPositionNFT(i);if(e&&n){let r=await this.calculateFarmingRewards([{pool_id:n.pool_id,position_nft_id:n.id}]);r[n.id]&&(n.rewards=r[n.id])}return n}async calculateFarmingRewards(t,e=!0){let{frams:i}=this._sdk.sdkOptions,n=new si.TransactionBlock,{rewarder_manager_id:r,global_config_id:o}=F(i);t.forEach(a=>{n.moveCall({target:`${i.published_at}::router::accumulated_position_rewards`,typeArguments:[],arguments:[n.object(o),n.object(r),n.object(a.pool_id),n.pure(a.position_nft_id,"address"),n.object(z)]})});let s={};try{let a=await this._sdk.ClmmSDK.fullClient.sendSimulationTransaction(n,this._sdk.ClmmSDK.senderAddress,e);console.log({simulateRes:a});let l=a?.events?.filter(u=>V(u.type).name==="AccumulatedPositionRewardsEvent");if(l&&l.length>0)for(let u=0;u<l.length;u+=1){let{parsedJson:h}=l[u],y=[];h.rewards.contents.forEach(v=>{y.push({rewarder_type:V(v.key.name).full_address,rewarder_amount:v.value})}),s[h.wrapped_position_id]=y}}catch(a){console.log(a)}return s}depositPayload(t,e){let{frams:i}=this.sdk.sdkOptions;e=e||new si.TransactionBlock;let{global_config_id:n,rewarder_manager_id:r}=F(i);return e.moveCall({target:`${i.published_at}::router::deposit`,typeArguments:[],arguments:[e.object(n),e.object(r),e.object(t.pool_id),e.object(t.clmm_position_id),e.object(z)]}),e}async withdrawPayload(t,e){let{frams:i}=this.sdk.sdkOptions,{global_config_id:n,rewarder_manager_id:r}=F(i);return e=e||new si.TransactionBlock,e=await this.harvestPayload({pool_id:t.pool_id,position_nft_id:t.position_nft_id},e),e.moveCall({target:`${i.published_at}::router::withdraw`,typeArguments:[],arguments:[e.object(n),e.object(r),e.object(t.pool_id),e.object(t.position_nft_id),e.object(z)]}),e}async batchHarvestPayload(t,e){e=e||new si.TransactionBlock;for(let i of t)await this.harvestPayload(i,e);return e}async harvestPayload(t,e){let{frams:i}=this.sdk.sdkOptions;e=e||new si.TransactionBlock;let n=await this.getFramsPool(t.pool_id,!1);if(n===void 0)throw Error(`not found ${t.pool_id}`);let{global_config_id:r,rewarder_manager_id:o}=F(i);if("collect_fee"in t&&(t.collect_fee||t.clmm_rewarder_types.length>0)){let a=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress);e=await this.buildCollectRewarderAndFeeParams({clmm_pool_id:t.clmm_pool_id,position_nft_id:t.position_nft_id,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,collectFee:t.collect_fee,clmm_rewarder_types:t.clmm_rewarder_types},e,a)}return n.rewarders.forEach(a=>{e&&e.moveCall({target:`${i.published_at}::router::harvest`,typeArguments:[a.reward_coin],arguments:[e.object(r),e.object(o),e.object(t.pool_id),e.object(t.position_nft_id),e.object(z)]})}),e}async claimFeeAndClmmReward(t){let e=new si.TransactionBlock,i=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress);return await this.buildCollectRewarderAndFeeParams({clmm_pool_id:t.clmm_pool_id,position_nft_id:t.position_nft_id,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,collectFee:t.collect_fee,clmm_rewarder_types:t.clmm_rewarder_types},e,i),e}async openPositionAddLiquidityStakePaylod(t){let e=new si.TransactionBlock,{clmm_pool:i,integrate:n}=this._sdk.ClmmSDK.sdkOptions,r=F(i),o=e.moveCall({target:`${i.published_at}::pool::open_position`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(r.global_config_id),e.object(t.clmm_pool_id),e.pure(It(BigInt(t.tick_lower)).toString()),e.pure(It(BigInt(t.tick_upper)).toString())]}),s=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress),a=oe.buildCoinForAmount(e,s,BigInt(t.amount_a),t.coinTypeA,!1),l=oe.buildCoinForAmount(e,s,BigInt(t.amount_b),t.coinTypeB,!1);e.moveCall({target:`${n.published_at}::${Xi}::add_liquidity_by_fix_coin`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(r.global_config_id),e.object(t.clmm_pool_id),o,a.targetCoin,l.targetCoin,e.pure(t.amount_a.toString()),e.pure(t.amount_b.toString()),e.pure(t.fix_amount_a),e.object(z)]});let{frams:u}=this.sdk.sdkOptions,{global_config_id:h,rewarder_manager_id:y}=F(u);return e.moveCall({target:`${u.published_at}::router::deposit`,typeArguments:[],arguments:[e.object(h),e.object(y),e.object(t.pool_id),o,e.object(z)]}),e}async addLiquidityPayload(t,e){let{frams:i}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions;e=e||new si.TransactionBlock;let r=F(i),o=F(n),s=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress),a=oe.buildCoinForAmount(e,s,BigInt(t.amount_limit_a),t.coinTypeA,!1),l=oe.buildCoinForAmount(e,s,BigInt(t.amount_limit_b),t.coinTypeB,!1);if(t.collect_rewarder&&(e=await this.harvestPayload({pool_id:t.pool_id,position_nft_id:t.position_nft_id,clmm_pool_id:t.clmm_pool_id},e)),t.collect_fee||t.clmm_rewarder_types.length>0){let u=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress);e=await this.buildCollectRewarderAndFeeParams({clmm_pool_id:t.clmm_pool_id,position_nft_id:t.position_nft_id,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,collectFee:t.collect_fee,clmm_rewarder_types:t.clmm_rewarder_types},e,u,a.remainCoins,l.remainCoins)}return e.moveCall({target:`${i.published_at}::router::add_liquidity`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(r.global_config_id),e.object(o.global_config_id),e.object(r.rewarder_manager_id),e.object(t.pool_id),e.object(t.clmm_pool_id),e.object(t.position_nft_id),a.targetCoin,l.targetCoin,e.pure(t.amount_limit_a),e.pure(t.amount_limit_b),e.pure(t.delta_liquidity),e.object(z)]}),e}async addLiquidityFixCoinPayload(t,e){let{frams:i}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions;e=e||new si.TransactionBlock;let r=F(i),o=F(n),s=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress),a=oe.buildCoinForAmount(e,s,BigInt(t.amount_a),t.coinTypeA,!1),l=oe.buildCoinForAmount(e,s,BigInt(t.amount_b),t.coinTypeB,!1);if(t.collect_rewarder&&(e=await this.harvestPayload({pool_id:t.pool_id,position_nft_id:t.position_nft_id,clmm_pool_id:t.clmm_pool_id},e)),t.collect_fee||t.clmm_rewarder_types.length>0){let u=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress);e=await this.buildCollectRewarderAndFeeParams({clmm_pool_id:t.clmm_pool_id,position_nft_id:t.position_nft_id,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,collectFee:t.collect_fee,clmm_rewarder_types:t.clmm_rewarder_types},e,u,a.remainCoins,l.remainCoins)}return e.moveCall({target:`${i.published_at}::router::add_liquidity_fix_coin`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(r.global_config_id),e.object(o.global_config_id),e.object(r.rewarder_manager_id),e.object(t.pool_id),e.object(t.clmm_pool_id),e.object(t.position_nft_id),a.targetCoin,l.targetCoin,e.pure(t.amount_a.toString()),e.pure(t.amount_b.toString()),e.pure(t.fix_amount_a),e.object(z)]}),e}async removeLiquidityPayload(t,e){let{frams:i}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions;e=e||new si.TransactionBlock;let r=F(i),o=F(n);if(t.collect_rewarder&&(!t.unstake||t.close_position)&&(e=await this.harvestPayload({pool_id:t.pool_id,position_nft_id:t.position_nft_id,clmm_pool_id:t.clmm_pool_id},e)),t.clmm_rewarder_types.length>0){let s=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress);e=await this.buildCollectRewarderAndFeeParams({clmm_pool_id:t.clmm_pool_id,position_nft_id:t.position_nft_id,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,collectFee:!1,clmm_rewarder_types:t.clmm_rewarder_types},e,s)}if(t.close_position){if(t.clmm_position_id===void 0)throw Error("close_position need clmm_position_id");e.moveCall({target:`${i.published_at}::router::close_position`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(r.global_config_id),e.object(r.rewarder_manager_id),e.object(t.pool_id),e.object(o.global_config_id),e.object(t.clmm_pool_id),e.object(t.position_nft_id),e.pure(t.min_amount_a),e.pure(t.min_amount_b),e.object(z)]})}else e.moveCall({target:`${i.published_at}::router::remove_liquidity`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(r.global_config_id),e.object(o.global_config_id),e.object(r.rewarder_manager_id),e.object(t.pool_id),e.object(t.clmm_pool_id),e.object(t.position_nft_id),e.pure(t.delta_liquidity),e.pure(t.min_amount_a),e.pure(t.min_amount_b),e.object(z)]}),t.unstake&&this.withdrawPayload({pool_id:t.pool_id,position_nft_id:t.position_nft_id});return e}async buildCollectRewarderAndFeeParams(t,e,i,n,r){n===void 0&&(n=[...i]),r===void 0&&(r=[...i]);let o=Lt(t.coinTypeA),s=Lt(t.coinTypeB);t.collectFee&&this.collectFeePayload({clmm_pool_id:t.clmm_pool_id,position_nft_id:t.position_nft_id,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB},e);let a=[];return t.clmm_rewarder_types.forEach(l=>{switch(Lt(l)){case o:a.push(oe.buildCoinForAmount(e,n,BigInt(0),l,!1).targetCoin);break;case s:a.push(oe.buildCoinForAmount(e,r,BigInt(0),l,!1).targetCoin);break;default:a.push(oe.buildCoinForAmount(e,i,BigInt(0),l,!1).targetCoin);break}}),this.collectClmmRewardPayload({clmm_pool_id:t.clmm_pool_id,position_nft_id:t.position_nft_id,clmm_rewarder_types:t.clmm_rewarder_types,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,reward_coins:a},e),e}collectFeePayload(t,e){let{frams:i}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions;e=e||new si.TransactionBlock;let r=F(i),o=F(n);return e.moveCall({target:`${i.published_at}::router::collect_fee`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(r.global_config_id),e.object(o.global_config_id),e.object(t.clmm_pool_id),e.object(t.position_nft_id)]}),e}async collectClmmRewardPayload(t,e){let{frams:i}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions;e=e||new si.TransactionBlock;let r=t.reward_coins;if(t.clmm_rewarder_types.length>0&&r===void 0){r=[];let a=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress);t.clmm_rewarder_types.forEach(l=>{r.push(oe.buildCoinForAmount(e,a,BigInt(0),l,!1).targetCoin)})}let o=F(i),s=F(n);return t.clmm_rewarder_types?.forEach((a,l)=>{e&&e.moveCall({target:`${i.published_at}::router::collect_clmm_reward`,typeArguments:[a,t.coinTypeA,t.coinTypeB],arguments:[e.object(o.global_config_id),e.object(s.global_config_id),e.object(t.clmm_pool_id),e.object(t.position_nft_id),e.object(s.global_vault_id),r[l],e.object(z)]})}),e}async getFrarmsConfigs(){let{package_id:t}=this._sdk.sdkOptions.frams,e={global_config_id:"",rewarder_manager_id:"",rewarder_manager_handle:""},i=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::config::InitConfigEvent`})).data;if(i.length>0){let r=i[0].parsedJson;e.global_config_id=r.global_config_id,e.admin_cap_id=r.admin_cap_id}let n=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::rewarder::InitRewarderManagerEvent`})).data;if(n.length>0){let r=n[0].parsedJson;e.rewarder_manager_id=r.id;let o=await this._sdk.ClmmSDK.fullClient.getObject({id:e.rewarder_manager_id,options:{showContent:!0}});e.rewarder_manager_handle=o.data.content.fields.rewarders.fields.id.id}return e}updateCache(t,e,i=X){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t];if(!e&&i?.isValid())return i.value;delete this._cache[t]}},yh=class{_cache={};_sdkOptions;_launchpad;_ido;_xcetusModule;_xtokenModule;_boosterModule;_makerModule;_clmmSDK;_liquidityStrategy;_vaults;_limitOrder;_farmsModule;constructor(t,e){this._sdkOptions=t,this._clmmSDK=e,this._launchpad=new lw(this),this._ido=new bw(this),this._xcetusModule=new dw(this),this._xtokenModule=new yw(this),this._boosterModule=new cw(this),this._makerModule=new uw(this),this._vaults=new vw(this),this._limitOrder=new kw(this),this._farmsModule=new Cw(this),this._liquidityStrategy=new ww(this),Hs(this._sdkOptions)}get ClmmSDK(){return this._clmmSDK}get sdkOptions(){return this._sdkOptions}get Launchpad(){return this._launchpad}get Ido(){return this._ido}get XToken(){return this._xtokenModule}get XCetusModule(){return this._xcetusModule}get BoosterModule(){return this._boosterModule}get MakerModule(){return this._makerModule}get LiquidityStrategy(){return this._liquidityStrategy}get Vaults(){return this._vaults}get LimitOrder(){return this._limitOrder}get Farms(){return this._farmsModule}getVerifySenderAddress(){let{senderAddress:t}=this.ClmmSDK;if(t.length===0||!(0,ph.isValidSuiAddress)(t))throw Error("this clmm config sdk senderAddess is illegal");return t}updateCache(t,e,i=X){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t];if(!e&&i?.isValid())return i.value;delete this._cache[t]}};var Bm=require("@msafe/sui3-utils"),Fm=require("@msafe/sui3-utils"),qm=require("@msafe/sui3-utils"),$m=require("@msafe/sui3-utils"),Km=require("@msafe/sui3-utils"),Wm=require("@msafe/sui3-utils"),Gm=require("@msafe/sui3-utils"),Zm=require("@msafe/sui3-utils"),Jm=require("@msafe/sui3-utils"),Qm=require("@msafe/sui3-utils"),tg=require("@msafe/sui3-utils"),ng=require("@msafe/sui3-utils"),og=require("@msafe/sui3-utils"),ag=require("@msafe/sui3-utils"),lg=require("@msafe/sui3-utils"),dg=require("@msafe/sui3-utils"),hg=require("@msafe/sui3-utils"),mg=require("@msafe/sui3-utils"),_g=require("@msafe/sui3-utils"),jg=require("@mysten/sui.js/client"),ln=we(require("axios"),1),ur=require("@mysten/sui.js/utils"),es=require("@mysten/sui.js/transactions"),Au=require("@mysten/sui.js/transactions"),rs=require("@mysten/sui.js/utils"),Iu=require("buffer"),Rg=require("@mysten/sui.js/utils"),$u=require("@mysten/sui.js/bcs"),os=require("@mysten/sui.js/utils");var wh=(t=21)=>crypto.getRandomValues(new Uint8Array(t)).reduce((e,i)=>(i&=63,i<36?e+=i.toString(36):i<62?e+=(i-26).toString(36).toUpperCase():i>62?e+="-":e+="_",e),"");var Du=require("@mysten/sui.js/transactions"),ts=require("@mysten/sui.js/transactions"),ss=require("@mysten/sui.js/utils");var tn=class extends Error{},ia=class extends tn{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},na=class extends tn{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},ra=class extends tn{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},Oi=class extends tn{},jr=class extends tn{constructor(e){super(`Invalid unit ${e}`)}},xt=class extends tn{},Pi=class extends tn{constructor(){super("Zone is an abstract class")}};var Q="numeric",Di="short",ai="long",wn={year:Q,month:Q,day:Q},bo={year:Q,month:Di,day:Q},bl={year:Q,month:Di,day:Q,weekday:Di},yo={year:Q,month:ai,day:Q},wo={year:Q,month:ai,day:Q,weekday:ai},vo={hour:Q,minute:Q},ko={hour:Q,minute:Q,second:Q},Co={hour:Q,minute:Q,second:Q,timeZoneName:Di},To={hour:Q,minute:Q,second:Q,timeZoneName:ai},So={hour:Q,minute:Q,hourCycle:"h23"},xo={hour:Q,minute:Q,second:Q,hourCycle:"h23"},Ao={hour:Q,minute:Q,second:Q,hourCycle:"h23",timeZoneName:Di},Io={hour:Q,minute:Q,second:Q,hourCycle:"h23",timeZoneName:ai},Oo={year:Q,month:Q,day:Q,hour:Q,minute:Q},Po={year:Q,month:Q,day:Q,hour:Q,minute:Q,second:Q},Do={year:Q,month:Di,day:Q,hour:Q,minute:Q},Eo={year:Q,month:Di,day:Q,hour:Q,minute:Q,second:Q},yl={year:Q,month:Di,day:Q,weekday:Di,hour:Q,minute:Q},Mo={year:Q,month:ai,day:Q,hour:Q,minute:Q,timeZoneName:Di},jo={year:Q,month:ai,day:Q,hour:Q,minute:Q,second:Q,timeZoneName:Di},Bo={year:Q,month:ai,day:Q,weekday:ai,hour:Q,minute:Q,timeZoneName:ai},No={year:Q,month:ai,day:Q,weekday:ai,hour:Q,minute:Q,second:Q,timeZoneName:ai};var Qt=class{get type(){throw new Pi}get name(){throw new Pi}get ianaName(){return this.name}get isUniversal(){throw new Pi}offsetName(e,i){throw new Pi}formatOffset(e,i){throw new Pi}offset(e){throw new Pi}equals(e){throw new Pi}get isValid(){throw new Pi}};var wl=null,vn=class t extends Qt{static get instance(){return wl===null&&(wl=new t),wl}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:i,locale:n}){return sa(e,i,n)}formatOffset(e,i){return kn(this.offset(e),i)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}};var ca={};function Tw(t){return ca[t]||(ca[t]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),ca[t]}var Sw={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function xw(t,e){let i=t.format(e).replace(/\u200E/g,""),n=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(i),[,r,o,s,a,l,u,h]=n;return[s,r,o,a,l,u,h]}function Aw(t,e){let i=t.formatToParts(e),n=[];for(let r=0;r<i.length;r++){let{type:o,value:s}=i[r],a=Sw[o];o==="era"?n[a]=s:fe(a)||(n[a]=parseInt(s,10))}return n}var aa={},zt=class t extends Qt{static create(e){return aa[e]||(aa[e]=new t(e)),aa[e]}static resetCache(){aa={},ca={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=t.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:i,locale:n}){return sa(e,i,n,this.name)}formatOffset(e,i){return kn(this.offset(e),i)}offset(e){let i=new Date(e);if(isNaN(i))return NaN;let n=Tw(this.name),[r,o,s,a,l,u,h]=n.formatToParts?Aw(n,i):xw(n,i);a==="BC"&&(r=-Math.abs(r)+1);let v=Br({year:r,month:o,day:s,hour:l===24?0:l,minute:u,second:h,millisecond:0}),T=+i,O=T%1e3;return T-=O>=0?O:1e3+O,(v-T)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}};var vh={};function Iw(t,e={}){let i=JSON.stringify([t,e]),n=vh[i];return n||(n=new Intl.ListFormat(t,e),vh[i]=n),n}var vl={};function kl(t,e={}){let i=JSON.stringify([t,e]),n=vl[i];return n||(n=new Intl.DateTimeFormat(t,e),vl[i]=n),n}var Cl={};function Ow(t,e={}){let i=JSON.stringify([t,e]),n=Cl[i];return n||(n=new Intl.NumberFormat(t,e),Cl[i]=n),n}var Tl={};function Pw(t,e={}){let{base:i,...n}=e,r=JSON.stringify([t,n]),o=Tl[r];return o||(o=new Intl.RelativeTimeFormat(t,e),Tl[r]=o),o}var Fo=null;function Dw(){return Fo||(Fo=new Intl.DateTimeFormat().resolvedOptions().locale,Fo)}var kh={};function Ew(t){let e=kh[t];if(!e){let i=new Intl.Locale(t);e="getWeekInfo"in i?i.getWeekInfo():i.weekInfo,kh[t]=e}return e}function Mw(t){let e=t.indexOf("-x-");e!==-1&&(t=t.substring(0,e));let i=t.indexOf("-u-");if(i===-1)return[t];{let n,r;try{n=kl(t).resolvedOptions(),r=t}catch{let l=t.substring(0,i);n=kl(l).resolvedOptions(),r=l}let{numberingSystem:o,calendar:s}=n;return[r,o,s]}}function jw(t,e,i){return(i||e)&&(t.includes("-u-")||(t+="-u"),i&&(t+=`-ca-${i}`),e&&(t+=`-nu-${e}`)),t}function Bw(t){let e=[];for(let i=1;i<=12;i++){let n=Te.utc(2009,i,1);e.push(t(n))}return e}function Nw(t){let e=[];for(let i=1;i<=7;i++){let n=Te.utc(2016,11,13+i);e.push(t(n))}return e}function la(t,e,i,n){let r=t.listingMode();return r==="error"?null:r==="en"?i(e):n(e)}function Fw(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||new Intl.DateTimeFormat(t.intl).resolvedOptions().numberingSystem==="latn"}var Sl=class{constructor(e,i,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:r,floor:o,...s}=n;if(!i||Object.keys(s).length>0){let a={useGrouping:!1,...n};n.padTo>0&&(a.minimumIntegerDigits=n.padTo),this.inf=Ow(e,a)}}format(e){if(this.inf){let i=this.floor?Math.floor(e):e;return this.inf.format(i)}else{let i=this.floor?Math.floor(e):Nr(e,3);return Ke(i,this.padTo)}}},xl=class{constructor(e,i,n){this.opts=n,this.originalZone=void 0;let r;if(this.opts.timeZone)this.dt=e;else if(e.zone.type==="fixed"){let s=-1*(e.offset/60),a=s>=0?`Etc/GMT+${s}`:`Etc/GMT${s}`;e.offset!==0&&zt.create(a).valid?(r=a,this.dt=e):(r="UTC",this.dt=e.offset===0?e:e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone)}else e.zone.type==="system"?this.dt=e:e.zone.type==="iana"?(this.dt=e,r=e.zone.name):(r="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);let o={...this.opts};o.timeZone=o.timeZone||r,this.dtf=kl(i,o)}format(){return this.originalZone?this.formatToParts().map(({value:e})=>e).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){let e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map(i=>{if(i.type==="timeZoneName"){let n=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...i,value:n}}else return i}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},Al=class{constructor(e,i,n){this.opts={style:"long",...n},!i&&ua()&&(this.rtf=Pw(e,n))}format(e,i){return this.rtf?this.rtf.format(e,i):Ch(i,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,i){return this.rtf?this.rtf.formatToParts(e,i):[]}},Rw={firstDay:1,minimalDays:4,weekend:[6,7]},De=class t{static fromOpts(e){return t.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,i,n,r,o=!1){let s=e||Ie.defaultLocale,a=s||(o?"en-US":Dw()),l=i||Ie.defaultNumberingSystem,u=n||Ie.defaultOutputCalendar,h=Ro(r)||Ie.defaultWeekSettings;return new t(a,l,u,h,s)}static resetCache(){Fo=null,vl={},Cl={},Tl={}}static fromObject({locale:e,numberingSystem:i,outputCalendar:n,weekSettings:r}={}){return t.create(e,i,n,r)}constructor(e,i,n,r,o){let[s,a,l]=Mw(e);this.locale=s,this.numberingSystem=i||a||null,this.outputCalendar=n||l||null,this.weekSettings=r,this.intl=jw(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=o,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=Fw(this)),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),i=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&i?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:t.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,Ro(e.weekSettings)||this.weekSettings,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,i=!1){return la(this,e,Il,()=>{let n=i?{month:e,day:"numeric"}:{month:e},r=i?"format":"standalone";return this.monthsCache[r][e]||(this.monthsCache[r][e]=Bw(o=>this.extract(o,n,"month"))),this.monthsCache[r][e]})}weekdays(e,i=!1){return la(this,e,Ol,()=>{let n=i?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},r=i?"format":"standalone";return this.weekdaysCache[r][e]||(this.weekdaysCache[r][e]=Nw(o=>this.extract(o,n,"weekday"))),this.weekdaysCache[r][e]})}meridiems(){return la(this,void 0,()=>Pl,()=>{if(!this.meridiemCache){let e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[Te.utc(2016,11,13,9),Te.utc(2016,11,13,19)].map(i=>this.extract(i,e,"dayperiod"))}return this.meridiemCache})}eras(e){return la(this,e,Dl,()=>{let i={era:e};return this.eraCache[e]||(this.eraCache[e]=[Te.utc(-40,1,1),Te.utc(2017,1,1)].map(n=>this.extract(n,i,"era"))),this.eraCache[e]})}extract(e,i,n){let r=this.dtFormatter(e,i),o=r.formatToParts(),s=o.find(a=>a.type.toLowerCase()===n);return s?s.value:null}numberFormatter(e={}){return new Sl(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,i={}){return new xl(e,this.intl,i)}relFormatter(e={}){return new Al(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Iw(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:da()?Ew(this.locale):Rw}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}};var Ml=null,Ot=class t extends Qt{static get utcInstance(){return Ml===null&&(Ml=new t(0)),Ml}static instance(e){return e===0?t.utcInstance:new t(e)}static parseSpecifier(e){if(e){let i=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(i)return new t(Yn(i[1],i[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${kn(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${kn(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,i){return kn(this.fixed,i)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}};var Fr=class extends Qt{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function Ei(t,e){let i;if(fe(t)||t===null)return e;if(t instanceof Qt)return t;if(Th(t)){let n=t.toLowerCase();return n==="default"?e:n==="local"||n==="system"?vn.instance:n==="utc"||n==="gmt"?Ot.utcInstance:Ot.parseSpecifier(n)||zt.create(t)}else return Ui(t)?Ot.instance(t):typeof t=="object"&&"offset"in t&&typeof t.offset=="function"?t:new Fr(t)}var Sh=()=>Date.now(),xh="system",Ah=null,Ih=null,Oh=null,Ph=60,Dh,Eh=null,Ie=class{static get now(){return Sh}static set now(e){Sh=e}static set defaultZone(e){xh=e}static get defaultZone(){return Ei(xh,vn.instance)}static get defaultLocale(){return Ah}static set defaultLocale(e){Ah=e}static get defaultNumberingSystem(){return Ih}static set defaultNumberingSystem(e){Ih=e}static get defaultOutputCalendar(){return Oh}static set defaultOutputCalendar(e){Oh=e}static get defaultWeekSettings(){return Eh}static set defaultWeekSettings(e){Eh=Ro(e)}static get twoDigitCutoffYear(){return Ph}static set twoDigitCutoffYear(e){Ph=e%100}static get throwOnInvalid(){return Dh}static set throwOnInvalid(e){Dh=e}static resetCaches(){De.resetCache(),zt.resetCache()}};var Pt=class{constructor(e,i){this.reason=e,this.explanation=i}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}};var Mh=[0,31,59,90,120,151,181,212,243,273,304,334],jh=[0,31,60,91,121,152,182,213,244,274,305,335];function pi(t,e){return new Pt("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function fa(t,e,i){let n=new Date(Date.UTC(t,e-1,i));t<100&&t>=0&&n.setUTCFullYear(n.getUTCFullYear()-1900);let r=n.getUTCDay();return r===0?7:r}function Bh(t,e,i){return i+(er(t)?jh:Mh)[e-1]}function Nh(t,e){let i=er(t)?jh:Mh,n=i.findIndex(o=>o<e),r=e-i[n];return{month:n+1,day:r}}function ha(t,e){return(t-e+7)%7+1}function qo(t,e=4,i=1){let{year:n,month:r,day:o}=t,s=Bh(n,r,o),a=ha(fa(n,r,o),i),l=Math.floor((s-a+14-e)/7),u;return l<1?(u=n-1,l=Qn(u,e,i)):l>Qn(n,e,i)?(u=n+1,l=1):u=n,{weekYear:u,weekNumber:l,weekday:a,...$o(t)}}function jl(t,e=4,i=1){let{weekYear:n,weekNumber:r,weekday:o}=t,s=ha(fa(n,1,e),i),a=Cn(n),l=r*7+o-s-7+e,u;l<1?(u=n-1,l+=Cn(u)):l>a?(u=n+1,l-=Cn(n)):u=n;let{month:h,day:y}=Nh(u,l);return{year:u,month:h,day:y,...$o(t)}}function pa(t){let{year:e,month:i,day:n}=t,r=Bh(e,i,n);return{year:e,ordinal:r,...$o(t)}}function Bl(t){let{year:e,ordinal:i}=t,{month:n,day:r}=Nh(e,i);return{year:e,month:n,day:r,...$o(t)}}function Nl(t,e){if(!fe(t.localWeekday)||!fe(t.localWeekNumber)||!fe(t.localWeekYear)){if(!fe(t.weekday)||!fe(t.weekNumber)||!fe(t.weekYear))throw new Oi("Cannot mix locale-based week fields with ISO-based week fields");return fe(t.localWeekday)||(t.weekday=t.localWeekday),fe(t.localWeekNumber)||(t.weekNumber=t.localWeekNumber),fe(t.localWeekYear)||(t.weekYear=t.localWeekYear),delete t.localWeekday,delete t.localWeekNumber,delete t.localWeekYear,{minDaysInFirstWeek:e.getMinDaysInFirstWeek(),startOfWeek:e.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}function Fh(t,e=4,i=1){let n=Lo(t.weekYear),r=ci(t.weekNumber,1,Qn(t.weekYear,e,i)),o=ci(t.weekday,1,7);return n?r?o?!1:pi("weekday",t.weekday):pi("week",t.weekNumber):pi("weekYear",t.weekYear)}function Rh(t){let e=Lo(t.year),i=ci(t.ordinal,1,Cn(t.year));return e?i?!1:pi("ordinal",t.ordinal):pi("year",t.year)}function Fl(t){let e=Lo(t.year),i=ci(t.month,1,12),n=ci(t.day,1,Rr(t.year,t.month));return e?i?n?!1:pi("day",t.day):pi("month",t.month):pi("year",t.year)}function Rl(t){let{hour:e,minute:i,second:n,millisecond:r}=t,o=ci(e,0,23)||e===24&&i===0&&n===0&&r===0,s=ci(i,0,59),a=ci(n,0,59),l=ci(r,0,999);return o?s?a?l?!1:pi("millisecond",r):pi("second",n):pi("minute",i):pi("hour",e)}function fe(t){return typeof t>"u"}function Ui(t){return typeof t=="number"}function Lo(t){return typeof t=="number"&&t%1===0}function Th(t){return typeof t=="string"}function Lh(t){return Object.prototype.toString.call(t)==="[object Date]"}function ua(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function da(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function $h(t){return Array.isArray(t)?t:[t]}function ql(t,e,i){if(t.length!==0)return t.reduce((n,r)=>{let o=[e(r),r];return n&&i(n[0],o[0])===n[0]?n:o},null)[1]}function Uh(t,e){return e.reduce((i,n)=>(i[n]=t[n],i),{})}function Tn(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Ro(t){if(t==null)return null;if(typeof t!="object")throw new xt("Week settings must be an object");if(!ci(t.firstDay,1,7)||!ci(t.minimalDays,1,7)||!Array.isArray(t.weekend)||t.weekend.some(e=>!ci(e,1,7)))throw new xt("Invalid week settings");return{firstDay:t.firstDay,minimalDays:t.minimalDays,weekend:Array.from(t.weekend)}}function ci(t,e,i){return Lo(t)&&t>=e&&t<=i}function qw(t,e){return t-e*Math.floor(t/e)}function Ke(t,e=2){let i=t<0,n;return i?n="-"+(""+-t).padStart(e,"0"):n=(""+t).padStart(e,"0"),n}function nn(t){if(!(fe(t)||t===null||t===""))return parseInt(t,10)}function Sn(t){if(!(fe(t)||t===null||t===""))return parseFloat(t)}function Uo(t){if(!(fe(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function Nr(t,e,i=!1){let n=10**e;return(i?Math.trunc:Math.round)(t*n)/n}function er(t){return t%4===0&&(t%100!==0||t%400===0)}function Cn(t){return er(t)?366:365}function Rr(t,e){let i=qw(e-1,12)+1,n=t+(e-i)/12;return i===2?er(n)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][i-1]}function Br(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(t.year,t.month-1,t.day)),+e}function qh(t,e,i){return-ha(fa(t,1,e),i)+e-1}function Qn(t,e=4,i=1){let n=qh(t,e,i),r=qh(t+1,e,i);return(Cn(t)-n+r)/7}function Ko(t){return t>99?t:t>Ie.twoDigitCutoffYear?1900+t:2e3+t}function sa(t,e,i,n=null){let r=new Date(t),o={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};n&&(o.timeZone=n);let s={timeZoneName:e,...o},a=new Intl.DateTimeFormat(i,s).formatToParts(r).find(l=>l.type.toLowerCase()==="timezonename");return a?a.value:null}function Yn(t,e){let i=parseInt(t,10);Number.isNaN(i)&&(i=0);let n=parseInt(e,10)||0,r=i<0||Object.is(i,-0)?-n:n;return i*60+r}function Ll(t){let e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new xt(`Invalid unit value ${t}`);return e}function qr(t,e){let i={};for(let n in t)if(Tn(t,n)){let r=t[n];if(r==null)continue;i[e(n)]=Ll(r)}return i}function kn(t,e){let i=Math.trunc(Math.abs(t/60)),n=Math.trunc(Math.abs(t%60)),r=t>=0?"+":"-";switch(e){case"short":return`${r}${Ke(i,2)}:${Ke(n,2)}`;case"narrow":return`${r}${i}${n>0?`:${n}`:""}`;case"techie":return`${r}${Ke(i,2)}${Ke(n,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function $o(t){return Uh(t,["hour","minute","second","millisecond"])}var Lw=["January","February","March","April","May","June","July","August","September","October","November","December"],$l=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],$w=["J","F","M","A","M","J","J","A","S","O","N","D"];function Il(t){switch(t){case"narrow":return[...$w];case"short":return[...$l];case"long":return[...Lw];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}var Ul=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],Kl=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],Uw=["M","T","W","T","F","S","S"];function Ol(t){switch(t){case"narrow":return[...Uw];case"short":return[...Kl];case"long":return[...Ul];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var Pl=["AM","PM"],Kw=["Before Christ","Anno Domini"],Vw=["BC","AD"],Ww=["B","A"];function Dl(t){switch(t){case"narrow":return[...Ww];case"short":return[...Vw];case"long":return[...Kw];default:return null}}function Kh(t){return Pl[t.hour<12?0:1]}function Vh(t,e){return Ol(e)[t.weekday-1]}function Wh(t,e){return Il(e)[t.month-1]}function zh(t,e){return Dl(e)[t.year<0?0:1]}function Ch(t,e,i="always",n=!1){let r={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},o=["hours","minutes","seconds"].indexOf(t)===-1;if(i==="auto"&&o){let y=t==="days";switch(e){case 1:return y?"tomorrow":`next ${r[t][0]}`;case-1:return y?"yesterday":`last ${r[t][0]}`;case 0:return y?"today":`this ${r[t][0]}`;default:}}let s=Object.is(e,-0)||e<0,a=Math.abs(e),l=a===1,u=r[t],h=n?l?u[1]:u[2]||u[1]:l?r[t][0]:t;return s?`${a} ${h} ago`:`in ${a} ${h}`}function Gh(t,e){let i="";for(let n of t)n.literal?i+=n.val:i+=e(n.val);return i}var zw={D:wn,DD:bo,DDD:yo,DDDD:wo,t:vo,tt:ko,ttt:Co,tttt:To,T:So,TT:xo,TTT:Ao,TTTT:Io,f:Oo,ff:Do,fff:Mo,ffff:Bo,F:Po,FF:Eo,FFF:jo,FFFF:No},Dt=class t{static create(e,i={}){return new t(e,i)}static parseFormat(e){let i=null,n="",r=!1,o=[];for(let s=0;s<e.length;s++){let a=e.charAt(s);a==="'"?(n.length>0&&o.push({literal:r||/^\s+$/.test(n),val:n}),i=null,n="",r=!r):r||a===i?n+=a:(n.length>0&&o.push({literal:/^\s+$/.test(n),val:n}),n=a,i=a)}return n.length>0&&o.push({literal:r||/^\s+$/.test(n),val:n}),o}static macroTokenToFormatOpts(e){return zw[e]}constructor(e,i){this.opts=i,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,i){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...i}).format()}dtFormatter(e,i={}){return this.loc.dtFormatter(e,{...this.opts,...i})}formatDateTime(e,i){return this.dtFormatter(e,i).format()}formatDateTimeParts(e,i){return this.dtFormatter(e,i).formatToParts()}formatInterval(e,i){return this.dtFormatter(e.start,i).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,i){return this.dtFormatter(e,i).resolvedOptions()}num(e,i=0){if(this.opts.forceSimple)return Ke(e,i);let n={...this.opts};return i>0&&(n.padTo=i),this.loc.numberFormatter(n).format(e)}formatDateTimeFromString(e,i){let n=this.loc.listingMode()==="en",r=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",o=(T,O)=>this.loc.extract(e,T,O),s=T=>e.isOffsetFixed&&e.offset===0&&T.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,T.format):"",a=()=>n?Kh(e):o({hour:"numeric",hourCycle:"h12"},"dayperiod"),l=(T,O)=>n?Wh(e,T):o(O?{month:T}:{month:T,day:"numeric"},"month"),u=(T,O)=>n?Vh(e,T):o(O?{weekday:T}:{weekday:T,month:"long",day:"numeric"},"weekday"),h=T=>{let O=t.macroTokenToFormatOpts(T);return O?this.formatWithSystemDefault(e,O):T},y=T=>n?zh(e,T):o({era:T},"era"),v=T=>{switch(T){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return s({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return s({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return s({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return a();case"d":return r?o({day:"numeric"},"day"):this.num(e.day);case"dd":return r?o({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return u("short",!0);case"cccc":return u("long",!0);case"ccccc":return u("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return u("short",!1);case"EEEE":return u("long",!1);case"EEEEE":return u("narrow",!1);case"L":return r?o({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return r?o({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return l("short",!0);case"LLLL":return l("long",!0);case"LLLLL":return l("narrow",!0);case"M":return r?o({month:"numeric"},"month"):this.num(e.month);case"MM":return r?o({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return l("short",!1);case"MMMM":return l("long",!1);case"MMMMM":return l("narrow",!1);case"y":return r?o({year:"numeric"},"year"):this.num(e.year);case"yy":return r?o({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return r?o({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return r?o({year:"numeric"},"year"):this.num(e.year,6);case"G":return y("short");case"GG":return y("long");case"GGGGG":return y("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"n":return this.num(e.localWeekNumber);case"nn":return this.num(e.localWeekNumber,2);case"ii":return this.num(e.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(e.localWeekYear,4);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return h(T)}};return Gh(t.parseFormat(i),v)}formatDurationFromString(e,i){let n=l=>{switch(l[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},r=l=>u=>{let h=n(u);return h?this.num(l.get(h),u.length):u},o=t.parseFormat(i),s=o.reduce((l,{literal:u,val:h})=>u?l:l.concat(h),[]),a=e.shiftTo(...s.map(n).filter(l=>l));return Gh(o,r(a))}};var Zh=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function $r(...t){let e=t.reduce((i,n)=>i+n.source,"");return RegExp(`^${e}$`)}function Ur(...t){return e=>t.reduce(([i,n,r],o)=>{let[s,a,l]=o(e,r);return[{...i,...s},a||n,l]},[{},null,1]).slice(0,2)}function Kr(t,...e){if(t==null)return[null,null];for(let[i,n]of e){let r=i.exec(t);if(r)return n(r)}return[null,null]}function Xh(...t){return(e,i)=>{let n={},r;for(r=0;r<t.length;r++)n[t[r]]=nn(e[i+r]);return[n,null,i+r]}}var Jh=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,Gw=`(?:${Jh.source}?(?:\\[(${Zh.source})\\])?)?`,Vl=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,Yh=RegExp(`${Vl.source}${Gw}`),Wl=RegExp(`(?:T${Yh.source})?`),Hw=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Zw=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Xw=/(\d{4})-?(\d{3})/,Jw=Xh("weekYear","weekNumber","weekDay"),Yw=Xh("year","ordinal"),Qw=/(\d{4})-(\d\d)-(\d\d)/,Qh=RegExp(`${Vl.source} ?(?:${Jh.source}|(${Zh.source}))?`),e1=RegExp(`(?: ${Qh.source})?`);function Lr(t,e,i){let n=t[e];return fe(n)?i:nn(n)}function t1(t,e){return[{year:Lr(t,e),month:Lr(t,e+1,1),day:Lr(t,e+2,1)},null,e+3]}function Vr(t,e){return[{hours:Lr(t,e,0),minutes:Lr(t,e+1,0),seconds:Lr(t,e+2,0),milliseconds:Uo(t[e+3])},null,e+4]}function Vo(t,e){let i=!t[e]&&!t[e+1],n=Yn(t[e+1],t[e+2]),r=i?null:Ot.instance(n);return[{},r,e+3]}function Wo(t,e){let i=t[e]?zt.create(t[e]):null;return[{},i,e+1]}var i1=RegExp(`^T?${Vl.source}$`),n1=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function r1(t){let[e,i,n,r,o,s,a,l,u]=t,h=e[0]==="-",y=l&&l[0]==="-",v=(T,O=!1)=>T!==void 0&&(O||T&&h)?-T:T;return[{years:v(Sn(i)),months:v(Sn(n)),weeks:v(Sn(r)),days:v(Sn(o)),hours:v(Sn(s)),minutes:v(Sn(a)),seconds:v(Sn(l),l==="-0"),milliseconds:v(Uo(u),y)}]}var o1={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function zl(t,e,i,n,r,o,s){let a={year:e.length===2?Ko(nn(e)):nn(e),month:$l.indexOf(i)+1,day:nn(n),hour:nn(r),minute:nn(o)};return s&&(a.second=nn(s)),t&&(a.weekday=t.length>3?Ul.indexOf(t)+1:Kl.indexOf(t)+1),a}var s1=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function a1(t){let[,e,i,n,r,o,s,a,l,u,h,y]=t,v=zl(e,r,n,i,o,s,a),T;return l?T=o1[l]:u?T=0:T=Yn(h,y),[v,new Ot(T)]}function c1(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var l1=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,u1=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,d1=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function Hh(t){let[,e,i,n,r,o,s,a]=t;return[zl(e,r,n,i,o,s,a),Ot.utcInstance]}function f1(t){let[,e,i,n,r,o,s,a]=t;return[zl(e,a,i,n,r,o,s),Ot.utcInstance]}var h1=$r(Hw,Wl),p1=$r(Zw,Wl),m1=$r(Xw,Wl),g1=$r(Yh),ep=Ur(t1,Vr,Vo,Wo),_1=Ur(Jw,Vr,Vo,Wo),b1=Ur(Yw,Vr,Vo,Wo),y1=Ur(Vr,Vo,Wo);function tp(t){return Kr(t,[h1,ep],[p1,_1],[m1,b1],[g1,y1])}function ip(t){return Kr(c1(t),[s1,a1])}function np(t){return Kr(t,[l1,Hh],[u1,Hh],[d1,f1])}function rp(t){return Kr(t,[n1,r1])}var w1=Ur(Vr);function op(t){return Kr(t,[i1,w1])}var v1=$r(Qw,e1),k1=$r(Qh),C1=Ur(Vr,Vo,Wo);function sp(t){return Kr(t,[v1,ep],[k1,C1])}var ap="Invalid Duration",lp={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},T1={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...lp},mi=146097/400,Wr=146097/4800,S1={years:{quarters:4,months:12,weeks:mi/7,days:mi,hours:mi*24,minutes:mi*24*60,seconds:mi*24*60*60,milliseconds:mi*24*60*60*1e3},quarters:{months:3,weeks:mi/28,days:mi/4,hours:mi*24/4,minutes:mi*24*60/4,seconds:mi*24*60*60/4,milliseconds:mi*24*60*60*1e3/4},months:{weeks:Wr/7,days:Wr,hours:Wr*24,minutes:Wr*24*60,seconds:Wr*24*60*60,milliseconds:Wr*24*60*60*1e3},...lp},tr=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],x1=tr.slice(0).reverse();function xn(t,e,i=!1){let n={values:i?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy,matrix:e.matrix||t.matrix};return new je(n)}function up(t,e){let i=e.milliseconds??0;for(let n of x1.slice(1))e[n]&&(i+=e[n]*t[n].milliseconds);return i}function cp(t,e){let i=up(t,e)<0?-1:1;tr.reduceRight((n,r)=>{if(fe(e[r]))return n;if(n){let o=e[n]*i,s=t[r][n],a=Math.floor(o/s);e[r]+=a*i,e[n]-=a*s*i}return r},null),tr.reduce((n,r)=>{if(fe(e[r]))return n;if(n){let o=e[n]%1;e[n]-=o,e[r]+=o*t[n][r]}return r},null)}function A1(t){let e={};for(let[i,n]of Object.entries(t))n!==0&&(e[i]=n);return e}var je=class t{constructor(e){let i=e.conversionAccuracy==="longterm"||!1,n=i?S1:T1;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||De.create(),this.conversionAccuracy=i?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,i){return t.fromObject({milliseconds:e},i)}static fromObject(e,i={}){if(e==null||typeof e!="object")throw new xt(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new t({values:qr(e,t.normalizeUnit),loc:De.fromObject(i),conversionAccuracy:i.conversionAccuracy,matrix:i.matrix})}static fromDurationLike(e){if(Ui(e))return t.fromMillis(e);if(t.isDuration(e))return e;if(typeof e=="object")return t.fromObject(e);throw new xt(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,i){let[n]=rp(e);return n?t.fromObject(n,i):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,i){let[n]=op(e);return n?t.fromObject(n,i):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,i=null){if(!e)throw new xt("need to specify a reason the Duration is invalid");let n=e instanceof Pt?e:new Pt(e,i);if(Ie.throwOnInvalid)throw new ra(n);return new t({invalid:n})}static normalizeUnit(e){let i={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!i)throw new jr(e);return i}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,i={}){let n={...i,floor:i.round!==!1&&i.floor!==!1};return this.isValid?Dt.create(this.loc,n).formatDurationFromString(this,e):ap}toHuman(e={}){if(!this.isValid)return ap;let i=tr.map(n=>{let r=this.values[n];return fe(r)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:n.slice(0,-1)}).format(r)}).filter(n=>n);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(i)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=Nr(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;let i=this.toMillis();return i<0||i>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1},Te.fromMillis(i,{zone:"UTC"}).toISOTime(e))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?up(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;let i=t.fromDurationLike(e),n={};for(let r of tr)(Tn(i.values,r)||Tn(this.values,r))&&(n[r]=i.get(r)+this.get(r));return xn(this,{values:n},!0)}minus(e){if(!this.isValid)return this;let i=t.fromDurationLike(e);return this.plus(i.negate())}mapUnits(e){if(!this.isValid)return this;let i={};for(let n of Object.keys(this.values))i[n]=Ll(e(this.values[n],n));return xn(this,{values:i},!0)}get(e){return this[t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let i={...this.values,...qr(e,t.normalizeUnit)};return xn(this,{values:i})}reconfigure({locale:e,numberingSystem:i,conversionAccuracy:n,matrix:r}={}){let s={loc:this.loc.clone({locale:e,numberingSystem:i}),matrix:r,conversionAccuracy:n};return xn(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return cp(this.matrix,e),xn(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=A1(this.normalize().shiftToAll().toObject());return xn(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(s=>t.normalizeUnit(s));let i={},n={},r=this.toObject(),o;for(let s of tr)if(e.indexOf(s)>=0){o=s;let a=0;for(let u in n)a+=this.matrix[u][s]*n[u],n[u]=0;Ui(r[s])&&(a+=r[s]);let l=Math.trunc(a);i[s]=l,n[s]=(a*1e3-l*1e3)/1e3}else Ui(r[s])&&(n[s]=r[s]);for(let s in n)n[s]!==0&&(i[o]+=s===o?n[s]:n[s]/this.matrix[o][s]);return cp(this.matrix,i),xn(this,{values:i},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;let e={};for(let i of Object.keys(this.values))e[i]=this.values[i]===0?0:-this.values[i];return xn(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function i(n,r){return n===void 0||n===0?r===void 0||r===0:n===r}for(let n of tr)if(!i(this.values[n],e.values[n]))return!1;return!0}};var zr="Invalid Interval";function I1(t,e){return!t||!t.isValid?rn.invalid("missing or invalid start"):!e||!e.isValid?rn.invalid("missing or invalid end"):e<t?rn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}var rn=class t{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,i=null){if(!e)throw new xt("need to specify a reason the Interval is invalid");let n=e instanceof Pt?e:new Pt(e,i);if(Ie.throwOnInvalid)throw new na(n);return new t({invalid:n})}static fromDateTimes(e,i){let n=Gr(e),r=Gr(i),o=I1(n,r);return o??new t({start:n,end:r})}static after(e,i){let n=je.fromDurationLike(i),r=Gr(e);return t.fromDateTimes(r,r.plus(n))}static before(e,i){let n=je.fromDurationLike(i),r=Gr(e);return t.fromDateTimes(r.minus(n),r)}static fromISO(e,i){let[n,r]=(e||"").split("/",2);if(n&&r){let o,s;try{o=Te.fromISO(n,i),s=o.isValid}catch{s=!1}let a,l;try{a=Te.fromISO(r,i),l=a.isValid}catch{l=!1}if(s&&l)return t.fromDateTimes(o,a);if(s){let u=je.fromISO(r,i);if(u.isValid)return t.after(o,u)}else if(l){let u=je.fromISO(n,i);if(u.isValid)return t.before(a,u)}}return t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds",i){if(!this.isValid)return NaN;let n=this.start.startOf(e,i),r;return i?.useLocaleWeeks?r=this.end.reconfigure({locale:n.locale}):r=this.end,r=r.startOf(e,i),Math.floor(r.diff(n,e).get(e))+(r.valueOf()!==this.end.valueOf())}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:i}={}){return this.isValid?t.fromDateTimes(e||this.s,i||this.e):this}splitAt(...e){if(!this.isValid)return[];let i=e.map(Gr).filter(s=>this.contains(s)).sort((s,a)=>s.toMillis()-a.toMillis()),n=[],{s:r}=this,o=0;for(;r<this.e;){let s=i[o]||this.e,a=+s>+this.e?this.e:s;n.push(t.fromDateTimes(r,a)),r=a,o+=1}return n}splitBy(e){let i=je.fromDurationLike(e);if(!this.isValid||!i.isValid||i.as("milliseconds")===0)return[];let{s:n}=this,r=1,o,s=[];for(;n<this.e;){let a=this.start.plus(i.mapUnits(l=>l*r));o=+a>+this.e?this.e:a,s.push(t.fromDateTimes(n,o)),n=o,r+=1}return s}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;let i=this.s>e.s?this.s:e.s,n=this.e<e.e?this.e:e.e;return i>=n?null:t.fromDateTimes(i,n)}union(e){if(!this.isValid)return this;let i=this.s<e.s?this.s:e.s,n=this.e>e.e?this.e:e.e;return t.fromDateTimes(i,n)}static merge(e){let[i,n]=e.sort((r,o)=>r.s-o.s).reduce(([r,o],s)=>o?o.overlaps(s)||o.abutsStart(s)?[r,o.union(s)]:[r.concat([o]),s]:[r,s],[[],null]);return n&&i.push(n),i}static xor(e){let i=null,n=0,r=[],o=e.map(l=>[{time:l.s,type:"s"},{time:l.e,type:"e"}]),s=Array.prototype.concat(...o),a=s.sort((l,u)=>l.time-u.time);for(let l of a)n+=l.type==="s"?1:-1,n===1?i=l.time:(i&&+i!=+l.time&&r.push(t.fromDateTimes(i,l.time)),i=null);return t.merge(r)}difference(...e){return t.xor([this].concat(e)).map(i=>this.intersection(i)).filter(i=>i&&!i.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \u2013 ${this.e.toISO()})`:zr}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=wn,i={}){return this.isValid?Dt.create(this.s.loc.clone(i),e).formatInterval(this):zr}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:zr}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:zr}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:zr}toFormat(e,{separator:i=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${i}${this.e.toFormat(e)}`:zr}toDuration(e,i){return this.isValid?this.e.diff(this.s,e,i):je.invalid(this.invalidReason)}mapEndpoints(e){return t.fromDateTimes(e(this.s),e(this.e))}};var on=class{static hasDST(e=Ie.defaultZone){let i=Te.now().setZone(e).set({month:12});return!e.isUniversal&&i.offset!==i.set({month:6}).offset}static isValidIANAZone(e){return zt.isValidZone(e)}static normalizeZone(e){return Ei(e,Ie.defaultZone)}static getStartOfWeek({locale:e=null,locObj:i=null}={}){return(i||De.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:i=null}={}){return(i||De.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:i=null}={}){return(i||De.create(e)).getWeekendDays().slice()}static months(e="long",{locale:i=null,numberingSystem:n=null,locObj:r=null,outputCalendar:o="gregory"}={}){return(r||De.create(i,n,o)).months(e)}static monthsFormat(e="long",{locale:i=null,numberingSystem:n=null,locObj:r=null,outputCalendar:o="gregory"}={}){return(r||De.create(i,n,o)).months(e,!0)}static weekdays(e="long",{locale:i=null,numberingSystem:n=null,locObj:r=null}={}){return(r||De.create(i,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:i=null,numberingSystem:n=null,locObj:r=null}={}){return(r||De.create(i,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return De.create(e).meridiems()}static eras(e="short",{locale:i=null}={}){return De.create(i,null,"gregory").eras(e)}static features(){return{relative:ua(),localeWeek:da()}}};function dp(t,e){let i=r=>r.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),n=i(e)-i(t);return Math.floor(je.fromMillis(n).as("days"))}function O1(t,e,i){let n=[["years",(l,u)=>u.year-l.year],["quarters",(l,u)=>u.quarter-l.quarter+(u.year-l.year)*4],["months",(l,u)=>u.month-l.month+(u.year-l.year)*12],["weeks",(l,u)=>{let h=dp(l,u);return(h-h%7)/7}],["days",dp]],r={},o=t,s,a;for(let[l,u]of n)i.indexOf(l)>=0&&(s=l,r[l]=u(t,e),a=o.plus(r),a>e?(r[l]--,t=o.plus(r),t>e&&(a=t,r[l]--,t=o.plus(r))):t=a);return[t,r,a,s]}function fp(t,e,i,n){let[r,o,s,a]=O1(t,e,i),l=e-r,u=i.filter(y=>["hours","minutes","seconds","milliseconds"].indexOf(y)>=0);u.length===0&&(s<e&&(s=r.plus({[a]:1})),s!==r&&(o[a]=(o[a]||0)+l/(s-r)));let h=je.fromObject(o,n);return u.length>0?je.fromMillis(l,n).shiftTo(...u).plus(h):h}var Gl={arab:"[\u0660-\u0669]",arabext:"[\u06F0-\u06F9]",bali:"[\u1B50-\u1B59]",beng:"[\u09E6-\u09EF]",deva:"[\u0966-\u096F]",fullwide:"[\uFF10-\uFF19]",gujr:"[\u0AE6-\u0AEF]",hanidec:"[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]",khmr:"[\u17E0-\u17E9]",knda:"[\u0CE6-\u0CEF]",laoo:"[\u0ED0-\u0ED9]",limb:"[\u1946-\u194F]",mlym:"[\u0D66-\u0D6F]",mong:"[\u1810-\u1819]",mymr:"[\u1040-\u1049]",orya:"[\u0B66-\u0B6F]",tamldec:"[\u0BE6-\u0BEF]",telu:"[\u0C66-\u0C6F]",thai:"[\u0E50-\u0E59]",tibt:"[\u0F20-\u0F29]",latn:"\\d"},hp={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},P1=Gl.hanidec.replace(/[\[|\]]/g,"").split("");function pp(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let i=0;i<t.length;i++){let n=t.charCodeAt(i);if(t[i].search(Gl.hanidec)!==-1)e+=P1.indexOf(t[i]);else for(let r in hp){let[o,s]=hp[r];n>=o&&n<=s&&(e+=n-o)}}return parseInt(e,10)}else return e}function gi({numberingSystem:t},e=""){return new RegExp(`${Gl[t||"latn"]}${e}`)}var D1="missing Intl.DateTimeFormat.formatToParts support";function Oe(t,e=i=>i){return{regex:t,deser:([i])=>e(pp(i))}}var E1="\xA0",_p=`[ ${E1}]`,bp=new RegExp(_p,"g");function M1(t){return t.replace(/\./g,"\\.?").replace(bp,_p)}function mp(t){return t.replace(/\./g,"").replace(bp," ").toLowerCase()}function Mi(t,e){return t===null?null:{regex:RegExp(t.map(M1).join("|")),deser:([i])=>t.findIndex(n=>mp(i)===mp(n))+e}}function gp(t,e){return{regex:t,deser:([,i,n])=>Yn(i,n),groups:e}}function ma(t){return{regex:t,deser:([e])=>e}}function j1(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function B1(t,e){let i=gi(e),n=gi(e,"{2}"),r=gi(e,"{3}"),o=gi(e,"{4}"),s=gi(e,"{6}"),a=gi(e,"{1,2}"),l=gi(e,"{1,3}"),u=gi(e,"{1,6}"),h=gi(e,"{1,9}"),y=gi(e,"{2,4}"),v=gi(e,"{4,6}"),T=j=>({regex:RegExp(j1(j.val)),deser:([B])=>B,literal:!0}),P=(j=>{if(t.literal)return T(j);switch(j.val){case"G":return Mi(e.eras("short"),0);case"GG":return Mi(e.eras("long"),0);case"y":return Oe(u);case"yy":return Oe(y,Ko);case"yyyy":return Oe(o);case"yyyyy":return Oe(v);case"yyyyyy":return Oe(s);case"M":return Oe(a);case"MM":return Oe(n);case"MMM":return Mi(e.months("short",!0),1);case"MMMM":return Mi(e.months("long",!0),1);case"L":return Oe(a);case"LL":return Oe(n);case"LLL":return Mi(e.months("short",!1),1);case"LLLL":return Mi(e.months("long",!1),1);case"d":return Oe(a);case"dd":return Oe(n);case"o":return Oe(l);case"ooo":return Oe(r);case"HH":return Oe(n);case"H":return Oe(a);case"hh":return Oe(n);case"h":return Oe(a);case"mm":return Oe(n);case"m":return Oe(a);case"q":return Oe(a);case"qq":return Oe(n);case"s":return Oe(a);case"ss":return Oe(n);case"S":return Oe(l);case"SSS":return Oe(r);case"u":return ma(h);case"uu":return ma(a);case"uuu":return Oe(i);case"a":return Mi(e.meridiems(),0);case"kkkk":return Oe(o);case"kk":return Oe(y,Ko);case"W":return Oe(a);case"WW":return Oe(n);case"E":case"c":return Oe(i);case"EEE":return Mi(e.weekdays("short",!1),1);case"EEEE":return Mi(e.weekdays("long",!1),1);case"ccc":return Mi(e.weekdays("short",!0),1);case"cccc":return Mi(e.weekdays("long",!0),1);case"Z":case"ZZ":return gp(new RegExp(`([+-]${a.source})(?::(${n.source}))?`),2);case"ZZZ":return gp(new RegExp(`([+-]${a.source})(${n.source})?`),2);case"z":return ma(/[a-z_+-/]{1,256}?/i);case" ":return ma(/[^\S\n\r]/);default:return T(j)}})(t)||{invalidReason:D1};return P.token=t,P}var N1={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};function F1(t,e,i){let{type:n,value:r}=t;if(n==="literal"){let l=/^\s+$/.test(r);return{literal:!l,val:l?" ":r}}let o=e[n],s=n;n==="hour"&&(e.hour12!=null?s=e.hour12?"hour12":"hour24":e.hourCycle!=null?e.hourCycle==="h11"||e.hourCycle==="h12"?s="hour12":s="hour24":s=i.hour12?"hour12":"hour24");let a=N1[s];if(typeof a=="object"&&(a=a[o]),a)return{literal:!1,val:a}}function R1(t){return[`^${t.map(i=>i.regex).reduce((i,n)=>`${i}(${n.source})`,"")}$`,t]}function q1(t,e,i){let n=t.match(e);if(n){let r={},o=1;for(let s in i)if(Tn(i,s)){let a=i[s],l=a.groups?a.groups+1:1;!a.literal&&a.token&&(r[a.token.val[0]]=a.deser(n.slice(o,o+l))),o+=l}return[n,r]}else return[n,{}]}function L1(t){let e=o=>{switch(o){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}},i=null,n;return fe(t.z)||(i=zt.create(t.z)),fe(t.Z)||(i||(i=new Ot(t.Z)),n=t.Z),fe(t.q)||(t.M=(t.q-1)*3+1),fe(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),fe(t.u)||(t.S=Uo(t.u)),[Object.keys(t).reduce((o,s)=>{let a=e(s);return a&&(o[a]=t[s]),o},{}),i,n]}var Hl=null;function $1(){return Hl||(Hl=Te.fromMillis(1555555555555)),Hl}function U1(t,e){if(t.literal)return t;let i=Dt.macroTokenToFormatOpts(t.val),n=Jl(i,e);return n==null||n.includes(void 0)?t:n}function Zl(t,e){return Array.prototype.concat(...t.map(i=>U1(i,e)))}function Xl(t,e,i){let n=Zl(Dt.parseFormat(i),t),r=n.map(s=>B1(s,t)),o=r.find(s=>s.invalidReason);if(o)return{input:e,tokens:n,invalidReason:o.invalidReason};{let[s,a]=R1(r),l=RegExp(s,"i"),[u,h]=q1(e,l,a),[y,v,T]=h?L1(h):[null,null,void 0];if(Tn(h,"a")&&Tn(h,"H"))throw new Oi("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:n,regex:l,rawMatches:u,matches:h,result:y,zone:v,specificOffset:T}}}function yp(t,e,i){let{result:n,zone:r,specificOffset:o,invalidReason:s}=Xl(t,e,i);return[n,r,o,s]}function Jl(t,e){if(!t)return null;let n=Dt.create(e,t).dtFormatter($1()),r=n.formatToParts(),o=n.resolvedOptions();return r.map(s=>F1(s,t,o))}var Yl="Invalid DateTime",wp=864e13;function ga(t){return new Pt("unsupported zone",`the zone "${t.name}" is not supported`)}function Ql(t){return t.weekData===null&&(t.weekData=qo(t.c)),t.weekData}function eu(t){return t.localWeekData===null&&(t.localWeekData=qo(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}function ir(t,e){let i={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new Te({...i,...e,old:i})}function Ap(t,e,i){let n=t-e*60*1e3,r=i.offset(n);if(e===r)return[n,e];n-=(r-e)*60*1e3;let o=i.offset(n);return r===o?[n,r]:[t-Math.min(r,o)*60*1e3,Math.max(r,o)]}function _a(t,e){t+=e*60*1e3;let i=new Date(t);return{year:i.getUTCFullYear(),month:i.getUTCMonth()+1,day:i.getUTCDate(),hour:i.getUTCHours(),minute:i.getUTCMinutes(),second:i.getUTCSeconds(),millisecond:i.getUTCMilliseconds()}}function ya(t,e,i){return Ap(Br(t),e,i)}function vp(t,e){let i=t.o,n=t.c.year+Math.trunc(e.years),r=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,o={...t.c,year:n,month:r,day:Math.min(t.c.day,Rr(n,r))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},s=je.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),a=Br(o),[l,u]=Ap(a,i,t.zone);return s!==0&&(l+=s,u=t.zone.offset(l)),{ts:l,o:u}}function zo(t,e,i,n,r,o){let{setZone:s,zone:a}=i;if(t&&Object.keys(t).length!==0||e){let l=e||a,u=Te.fromObject(t,{...i,zone:l,specificOffset:o});return s?u:u.setZone(a)}else return Te.invalid(new Pt("unparsable",`the input "${r}" can't be parsed as ${n}`))}function ba(t,e,i=!0){return t.isValid?Dt.create(De.create("en-US"),{allowZ:i,forceSimple:!0}).formatDateTimeFromString(t,e):null}function tu(t,e){let i=t.c.year>9999||t.c.year<0,n="";return i&&t.c.year>=0&&(n+="+"),n+=Ke(t.c.year,i?6:4),e?(n+="-",n+=Ke(t.c.month),n+="-",n+=Ke(t.c.day)):(n+=Ke(t.c.month),n+=Ke(t.c.day)),n}function kp(t,e,i,n,r,o){let s=Ke(t.c.hour);return e?(s+=":",s+=Ke(t.c.minute),(t.c.millisecond!==0||t.c.second!==0||!i)&&(s+=":")):s+=Ke(t.c.minute),(t.c.millisecond!==0||t.c.second!==0||!i)&&(s+=Ke(t.c.second),(t.c.millisecond!==0||!n)&&(s+=".",s+=Ke(t.c.millisecond,3))),r&&(t.isOffsetFixed&&t.offset===0&&!o?s+="Z":t.o<0?(s+="-",s+=Ke(Math.trunc(-t.o/60)),s+=":",s+=Ke(Math.trunc(-t.o%60))):(s+="+",s+=Ke(Math.trunc(t.o/60)),s+=":",s+=Ke(Math.trunc(t.o%60)))),o&&(s+="["+t.zone.ianaName+"]"),s}var Ip={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},K1={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},V1={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Op=["year","month","day","hour","minute","second","millisecond"],W1=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],z1=["year","ordinal","hour","minute","second","millisecond"];function G1(t){let e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[t.toLowerCase()];if(!e)throw new jr(t);return e}function Cp(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return G1(t)}}function Tp(t,e){let i=Ei(e.zone,Ie.defaultZone),n=De.fromObject(e),r=Ie.now(),o,s;if(fe(t.year))o=r;else{for(let u of Op)fe(t[u])&&(t[u]=Ip[u]);let a=Fl(t)||Rl(t);if(a)return Te.invalid(a);let l=i.offset(r);[o,s]=ya(t,l,i)}return new Te({ts:o,zone:i,loc:n,o:s})}function Sp(t,e,i){let n=fe(i.round)?!0:i.round,r=(s,a)=>(s=Nr(s,n||i.calendary?0:2,!0),e.loc.clone(i).relFormatter(i).format(s,a)),o=s=>i.calendary?e.hasSame(t,s)?0:e.startOf(s).diff(t.startOf(s),s).get(s):e.diff(t,s).get(s);if(i.unit)return r(o(i.unit),i.unit);for(let s of i.units){let a=o(s);if(Math.abs(a)>=1)return r(a,s)}return r(t>e?-0:0,i.units[i.units.length-1])}function xp(t){let e={},i;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],i=Array.from(t).slice(0,t.length-1)):i=Array.from(t),[e,i]}var Te=class t{constructor(e){let i=e.zone||Ie.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new Pt("invalid input"):null)||(i.isValid?null:ga(i));this.ts=fe(e.ts)?Ie.now():e.ts;let r=null,o=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(i))[r,o]=[e.old.c,e.old.o];else{let a=i.offset(this.ts);r=_a(this.ts,a),n=Number.isNaN(r.year)?new Pt("invalid input"):null,r=n?null:r,o=n?null:a}this._zone=i,this.loc=e.loc||De.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=r,this.o=o,this.isLuxonDateTime=!0}static now(){return new t({})}static local(){let[e,i]=xp(arguments),[n,r,o,s,a,l,u]=i;return Tp({year:n,month:r,day:o,hour:s,minute:a,second:l,millisecond:u},e)}static utc(){let[e,i]=xp(arguments),[n,r,o,s,a,l,u]=i;return e.zone=Ot.utcInstance,Tp({year:n,month:r,day:o,hour:s,minute:a,second:l,millisecond:u},e)}static fromJSDate(e,i={}){let n=Lh(e)?e.valueOf():NaN;if(Number.isNaN(n))return t.invalid("invalid input");let r=Ei(i.zone,Ie.defaultZone);return r.isValid?new t({ts:n,zone:r,loc:De.fromObject(i)}):t.invalid(ga(r))}static fromMillis(e,i={}){if(Ui(e))return e<-wp||e>wp?t.invalid("Timestamp out of range"):new t({ts:e,zone:Ei(i.zone,Ie.defaultZone),loc:De.fromObject(i)});throw new xt(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,i={}){if(Ui(e))return new t({ts:e*1e3,zone:Ei(i.zone,Ie.defaultZone),loc:De.fromObject(i)});throw new xt("fromSeconds requires a numerical input")}static fromObject(e,i={}){e=e||{};let n=Ei(i.zone,Ie.defaultZone);if(!n.isValid)return t.invalid(ga(n));let r=De.fromObject(i),o=qr(e,Cp),{minDaysInFirstWeek:s,startOfWeek:a}=Nl(o,r),l=Ie.now(),u=fe(i.specificOffset)?n.offset(l):i.specificOffset,h=!fe(o.ordinal),y=!fe(o.year),v=!fe(o.month)||!fe(o.day),T=y||v,O=o.weekYear||o.weekNumber;if((T||h)&&O)throw new Oi("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(v&&h)throw new Oi("Can't mix ordinal dates with month/day");let P=O||o.weekday&&!T,j,B,D=_a(l,u);P?(j=W1,B=K1,D=qo(D,s,a)):h?(j=z1,B=V1,D=pa(D)):(j=Op,B=Ip);let q=!1;for(let A of j){let M=o[A];fe(M)?q?o[A]=B[A]:o[A]=D[A]:q=!0}let K=P?Fh(o,s,a):h?Rh(o):Fl(o),Z=K||Rl(o);if(Z)return t.invalid(Z);let G=P?jl(o,s,a):h?Bl(o):o,[J,x]=ya(G,u,n),I=new t({ts:J,zone:n,o:x,loc:r});return o.weekday&&T&&e.weekday!==I.weekday?t.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${I.toISO()}`):I}static fromISO(e,i={}){let[n,r]=tp(e);return zo(n,r,i,"ISO 8601",e)}static fromRFC2822(e,i={}){let[n,r]=ip(e);return zo(n,r,i,"RFC 2822",e)}static fromHTTP(e,i={}){let[n,r]=np(e);return zo(n,r,i,"HTTP",i)}static fromFormat(e,i,n={}){if(fe(e)||fe(i))throw new xt("fromFormat requires an input string and a format");let{locale:r=null,numberingSystem:o=null}=n,s=De.fromOpts({locale:r,numberingSystem:o,defaultToEN:!0}),[a,l,u,h]=yp(s,e,i);return h?t.invalid(h):zo(a,l,n,`format ${i}`,e,u)}static fromString(e,i,n={}){return t.fromFormat(e,i,n)}static fromSQL(e,i={}){let[n,r]=sp(e);return zo(n,r,i,"SQL",e)}static invalid(e,i=null){if(!e)throw new xt("need to specify a reason the DateTime is invalid");let n=e instanceof Pt?e:new Pt(e,i);if(Ie.throwOnInvalid)throw new ia(n);return new t({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,i={}){let n=Jl(e,De.fromObject(i));return n?n.map(r=>r?r.val:null).join(""):null}static expandFormat(e,i={}){return Zl(Dt.parseFormat(e),De.fromObject(i)).map(r=>r.val).join("")}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?Ql(this).weekYear:NaN}get weekNumber(){return this.isValid?Ql(this).weekNumber:NaN}get weekday(){return this.isValid?Ql(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?eu(this).weekday:NaN}get localWeekNumber(){return this.isValid?eu(this).weekNumber:NaN}get localWeekYear(){return this.isValid?eu(this).weekYear:NaN}get ordinal(){return this.isValid?pa(this.c).ordinal:NaN}get monthShort(){return this.isValid?on.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?on.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?on.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?on.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let e=864e5,i=6e4,n=Br(this.c),r=this.zone.offset(n-e),o=this.zone.offset(n+e),s=this.zone.offset(n-r*i),a=this.zone.offset(n-o*i);if(s===a)return[this];let l=n-s*i,u=n-a*i,h=_a(l,s),y=_a(u,a);return h.hour===y.hour&&h.minute===y.minute&&h.second===y.second&&h.millisecond===y.millisecond?[ir(this,{ts:l}),ir(this,{ts:u})]:[this]}get isInLeapYear(){return er(this.year)}get daysInMonth(){return Rr(this.year,this.month)}get daysInYear(){return this.isValid?Cn(this.year):NaN}get weeksInWeekYear(){return this.isValid?Qn(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?Qn(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:i,numberingSystem:n,calendar:r}=Dt.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:i,numberingSystem:n,outputCalendar:r}}toUTC(e=0,i={}){return this.setZone(Ot.instance(e),i)}toLocal(){return this.setZone(Ie.defaultZone)}setZone(e,{keepLocalTime:i=!1,keepCalendarTime:n=!1}={}){if(e=Ei(e,Ie.defaultZone),e.equals(this.zone))return this;if(e.isValid){let r=this.ts;if(i||n){let o=e.offset(this.ts),s=this.toObject();[r]=ya(s,o,e)}return ir(this,{ts:r,zone:e})}else return t.invalid(ga(e))}reconfigure({locale:e,numberingSystem:i,outputCalendar:n}={}){let r=this.loc.clone({locale:e,numberingSystem:i,outputCalendar:n});return ir(this,{loc:r})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let i=qr(e,Cp),{minDaysInFirstWeek:n,startOfWeek:r}=Nl(i,this.loc),o=!fe(i.weekYear)||!fe(i.weekNumber)||!fe(i.weekday),s=!fe(i.ordinal),a=!fe(i.year),l=!fe(i.month)||!fe(i.day),u=a||l,h=i.weekYear||i.weekNumber;if((u||s)&&h)throw new Oi("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&s)throw new Oi("Can't mix ordinal dates with month/day");let y;o?y=jl({...qo(this.c,n,r),...i},n,r):fe(i.ordinal)?(y={...this.toObject(),...i},fe(i.day)&&(y.day=Math.min(Rr(y.year,y.month),y.day))):y=Bl({...pa(this.c),...i});let[v,T]=ya(y,this.o,this.zone);return ir(this,{ts:v,o:T})}plus(e){if(!this.isValid)return this;let i=je.fromDurationLike(e);return ir(this,vp(this,i))}minus(e){if(!this.isValid)return this;let i=je.fromDurationLike(e).negate();return ir(this,vp(this,i))}startOf(e,{useLocaleWeeks:i=!1}={}){if(!this.isValid)return this;let n={},r=je.normalizeUnit(e);switch(r){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break;case"milliseconds":break}if(r==="weeks")if(i){let o=this.loc.getStartOfWeek(),{weekday:s}=this;s<o&&(n.weekNumber=this.weekNumber-1),n.weekday=o}else n.weekday=1;if(r==="quarters"){let o=Math.ceil(this.month/3);n.month=(o-1)*3+1}return this.set(n)}endOf(e,i){return this.isValid?this.plus({[e]:1}).startOf(e,i).minus(1):this}toFormat(e,i={}){return this.isValid?Dt.create(this.loc.redefaultToEN(i)).formatDateTimeFromString(this,e):Yl}toLocaleString(e=wn,i={}){return this.isValid?Dt.create(this.loc.clone(i),e).formatDateTime(this):Yl}toLocaleParts(e={}){return this.isValid?Dt.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:i=!1,suppressMilliseconds:n=!1,includeOffset:r=!0,extendedZone:o=!1}={}){if(!this.isValid)return null;let s=e==="extended",a=tu(this,s);return a+="T",a+=kp(this,s,i,n,r,o),a}toISODate({format:e="extended"}={}){return this.isValid?tu(this,e==="extended"):null}toISOWeekDate(){return ba(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:i=!1,includeOffset:n=!0,includePrefix:r=!1,extendedZone:o=!1,format:s="extended"}={}){return this.isValid?(r?"T":"")+kp(this,s==="extended",i,e,n,o):null}toRFC2822(){return ba(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return ba(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?tu(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:i=!1,includeOffsetSpace:n=!0}={}){let r="HH:mm:ss.SSS";return(i||e)&&(n&&(r+=" "),i?r+="z":e&&(r+="ZZ")),ba(this,r,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():Yl}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`:`DateTime { Invalid, reason: ${this.invalidReason} }`}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};let i={...this.c};return e.includeConfig&&(i.outputCalendar=this.outputCalendar,i.numberingSystem=this.loc.numberingSystem,i.locale=this.loc.locale),i}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,i="milliseconds",n={}){if(!this.isValid||!e.isValid)return je.invalid("created by diffing an invalid DateTime");let r={locale:this.locale,numberingSystem:this.numberingSystem,...n},o=$h(i).map(je.normalizeUnit),s=e.valueOf()>this.valueOf(),a=s?this:e,l=s?e:this,u=fp(a,l,o,r);return s?u.negate():u}diffNow(e="milliseconds",i={}){return this.diff(t.now(),e,i)}until(e){return this.isValid?rn.fromDateTimes(this,e):this}hasSame(e,i,n){if(!this.isValid)return!1;let r=e.valueOf(),o=this.setZone(e.zone,{keepLocalTime:!0});return o.startOf(i,n)<=r&&r<=o.endOf(i,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;let i=e.base||t.fromObject({},{zone:this.zone}),n=e.padding?this<i?-e.padding:e.padding:0,r=["years","months","days","hours","minutes","seconds"],o=e.unit;return Array.isArray(e.unit)&&(r=e.unit,o=void 0),Sp(i,this.plus(n),{...e,numeric:"always",units:r,unit:o})}toRelativeCalendar(e={}){return this.isValid?Sp(e.base||t.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(t.isDateTime))throw new xt("min requires all arguments be DateTimes");return ql(e,i=>i.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new xt("max requires all arguments be DateTimes");return ql(e,i=>i.valueOf(),Math.max)}static fromFormatExplain(e,i,n={}){let{locale:r=null,numberingSystem:o=null}=n,s=De.fromOpts({locale:r,numberingSystem:o,defaultToEN:!0});return Xl(s,e,i)}static fromStringExplain(e,i,n={}){return t.fromFormatExplain(e,i,n)}static get DATE_SHORT(){return wn}static get DATE_MED(){return bo}static get DATE_MED_WITH_WEEKDAY(){return bl}static get DATE_FULL(){return yo}static get DATE_HUGE(){return wo}static get TIME_SIMPLE(){return vo}static get TIME_WITH_SECONDS(){return ko}static get TIME_WITH_SHORT_OFFSET(){return Co}static get TIME_WITH_LONG_OFFSET(){return To}static get TIME_24_SIMPLE(){return So}static get TIME_24_WITH_SECONDS(){return xo}static get TIME_24_WITH_SHORT_OFFSET(){return Ao}static get TIME_24_WITH_LONG_OFFSET(){return Io}static get DATETIME_SHORT(){return Oo}static get DATETIME_SHORT_WITH_SECONDS(){return Po}static get DATETIME_MED(){return Do}static get DATETIME_MED_WITH_SECONDS(){return Eo}static get DATETIME_MED_WITH_WEEKDAY(){return yl}static get DATETIME_FULL(){return Mo}static get DATETIME_FULL_WITH_SECONDS(){return jo}static get DATETIME_HUGE(){return Bo}static get DATETIME_HUGE_WITH_SECONDS(){return No}};function Gr(t){if(Te.isDateTime(t))return t;if(t&&t.valueOf&&Ui(t.valueOf()))return Te.fromJSDate(t);if(t&&typeof t=="object")return Te.fromObject(t);throw new xt(`Unknown datetime argument: ${t}, of type ${typeof t}`)}var no=require("@mysten/sui.js/utils");var Rn=require("@mysten/sui.js/utils");var e0=we(ws(),1),t0=require("@msafe/sui3-utils"),i0=require("@msafe/sui3-utils"),n0=require("@msafe/sui3-utils"),Bu=require("@mysten/sui.js/bcs"),jn=require("@mysten/sui.js/utils"),o0=require("@msafe/sui3-utils"),to=require("@msafe/sui3-utils"),s0=require("@msafe/sui3-utils"),c0=require("@msafe/sui3-utils"),u0=require("@msafe/sui3-utils"),d0=require("@mysten/sui.js/transactions"),h0=require("@msafe/sui3-utils"),Yr=require("@msafe/sui3-utils"),Nu=require("@mysten/sui.js/bcs"),Bn=require("@mysten/sui.js/utils"),p0=require("@mysten/sui.js/transactions"),g0=require("@mysten/sui.js/transactions"),b0=require("@mysten/sui.js/transactions"),v0=require("@mysten/sui.js/transactions"),C0=require("@mysten/sui.js/transactions"),Xa=require("@msafe/sui3-utils"),S0=require("@mysten/sui.js/transactions"),Ja=require("@mysten/sui.js/utils"),I4=we(ws(),1),x0=require("@msafe/sui3-utils"),Kt=require("@msafe/sui3-utils"),Ha=require("@mysten/sui.js/bcs"),Nn=require("@mysten/sui.js/utils"),He=require("@mysten/sui.js/transactions"),P0=require("@mysten/sui.js/utils");var H1=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,iu=Math.ceil,bi=Math.floor,ei="[BigNumber Error] ",Pp=ei+"Number primitive has more than 15 significant digits: ",ji=1e14,ye=14,nu=9007199254740991,ru=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],An=1e7,Et=1e9;function Dp(t){var e,i,n,r=D.prototype={constructor:D,toString:null,valueOf:null},o=new D(1),s=20,a=4,l=-7,u=21,h=-1e7,y=1e7,v=!1,T=1,O=0,P={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},j="0123456789abcdefghijklmnopqrstuvwxyz",B=!0;function D(x,I){var A,M,k,S,c,d,f,b,p=this;if(!(p instanceof D))return new D(x,I);if(I==null){if(x&&x._isBigNumber===!0){p.s=x.s,!x.c||x.e>y?p.c=p.e=null:x.e<h?p.c=[p.e=0]:(p.e=x.e,p.c=x.c.slice());return}if((d=typeof x=="number")&&x*0==0){if(p.s=1/x<0?(x=-x,-1):1,x===~~x){for(S=0,c=x;c>=10;c/=10,S++);S>y?p.c=p.e=null:(p.e=S,p.c=[x]);return}b=String(x)}else{if(!H1.test(b=String(x)))return n(p,b,d);p.s=b.charCodeAt(0)==45?(b=b.slice(1),-1):1}(S=b.indexOf("."))>-1&&(b=b.replace(".","")),(c=b.search(/e/i))>0?(S<0&&(S=c),S+=+b.slice(c+1),b=b.substring(0,c)):S<0&&(S=b.length)}else{if(Ve(I,2,j.length,"Base"),I==10&&B)return p=new D(x),G(p,s+p.e+1,a);if(b=String(x),d=typeof x=="number"){if(x*0!=0)return n(p,b,d,I);if(p.s=1/x<0?(b=b.slice(1),-1):1,D.DEBUG&&b.replace(/^0\.0*|\./,"").length>15)throw Error(Pp+x)}else p.s=b.charCodeAt(0)===45?(b=b.slice(1),-1):1;for(A=j.slice(0,I),S=c=0,f=b.length;c<f;c++)if(A.indexOf(M=b.charAt(c))<0){if(M=="."){if(c>S){S=f;continue}}else if(!k&&(b==b.toUpperCase()&&(b=b.toLowerCase())||b==b.toLowerCase()&&(b=b.toUpperCase()))){k=!0,c=-1,S=0;continue}return n(p,String(x),d,I)}d=!1,b=i(b,I,10,p.s),(S=b.indexOf("."))>-1?b=b.replace(".",""):S=b.length}for(c=0;b.charCodeAt(c)===48;c++);for(f=b.length;b.charCodeAt(--f)===48;);if(b=b.slice(c,++f)){if(f-=c,d&&D.DEBUG&&f>15&&(x>nu||x!==bi(x)))throw Error(Pp+p.s*x);if((S=S-c-1)>y)p.c=p.e=null;else if(S<h)p.c=[p.e=0];else{if(p.e=S,p.c=[],c=(S+1)%ye,S<0&&(c+=ye),c<f){for(c&&p.c.push(+b.slice(0,c)),f-=ye;c<f;)p.c.push(+b.slice(c,c+=ye));c=ye-(b=b.slice(c)).length}else c-=f;for(;c--;b+="0");p.c.push(+b)}}else p.c=[p.e=0]}D.clone=Dp,D.ROUND_UP=0,D.ROUND_DOWN=1,D.ROUND_CEIL=2,D.ROUND_FLOOR=3,D.ROUND_HALF_UP=4,D.ROUND_HALF_DOWN=5,D.ROUND_HALF_EVEN=6,D.ROUND_HALF_CEIL=7,D.ROUND_HALF_FLOOR=8,D.EUCLID=9,D.config=D.set=function(x){var I,A;if(x!=null)if(typeof x=="object"){if(x.hasOwnProperty(I="DECIMAL_PLACES")&&(A=x[I],Ve(A,0,Et,I),s=A),x.hasOwnProperty(I="ROUNDING_MODE")&&(A=x[I],Ve(A,0,8,I),a=A),x.hasOwnProperty(I="EXPONENTIAL_AT")&&(A=x[I],A&&A.pop?(Ve(A[0],-Et,0,I),Ve(A[1],0,Et,I),l=A[0],u=A[1]):(Ve(A,-Et,Et,I),l=-(u=A<0?-A:A))),x.hasOwnProperty(I="RANGE"))if(A=x[I],A&&A.pop)Ve(A[0],-Et,-1,I),Ve(A[1],1,Et,I),h=A[0],y=A[1];else if(Ve(A,-Et,Et,I),A)h=-(y=A<0?-A:A);else throw Error(ei+I+" cannot be zero: "+A);if(x.hasOwnProperty(I="CRYPTO"))if(A=x[I],A===!!A)if(A)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))v=A;else throw v=!A,Error(ei+"crypto unavailable");else v=A;else throw Error(ei+I+" not true or false: "+A);if(x.hasOwnProperty(I="MODULO_MODE")&&(A=x[I],Ve(A,0,9,I),T=A),x.hasOwnProperty(I="POW_PRECISION")&&(A=x[I],Ve(A,0,Et,I),O=A),x.hasOwnProperty(I="FORMAT"))if(A=x[I],typeof A=="object")P=A;else throw Error(ei+I+" not an object: "+A);if(x.hasOwnProperty(I="ALPHABET"))if(A=x[I],typeof A=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(A))B=A.slice(0,10)=="0123456789",j=A;else throw Error(ei+I+" invalid: "+A)}else throw Error(ei+"Object expected: "+x);return{DECIMAL_PLACES:s,ROUNDING_MODE:a,EXPONENTIAL_AT:[l,u],RANGE:[h,y],CRYPTO:v,MODULO_MODE:T,POW_PRECISION:O,FORMAT:P,ALPHABET:j}},D.isBigNumber=function(x){if(!x||x._isBigNumber!==!0)return!1;if(!D.DEBUG)return!0;var I,A,M=x.c,k=x.e,S=x.s;e:if({}.toString.call(M)=="[object Array]"){if((S===1||S===-1)&&k>=-Et&&k<=Et&&k===bi(k)){if(M[0]===0){if(k===0&&M.length===1)return!0;break e}if(I=(k+1)%ye,I<1&&(I+=ye),String(M[0]).length==I){for(I=0;I<M.length;I++)if(A=M[I],A<0||A>=ji||A!==bi(A))break e;if(A!==0)return!0}}}else if(M===null&&k===null&&(S===null||S===1||S===-1))return!0;throw Error(ei+"Invalid BigNumber: "+x)},D.maximum=D.max=function(){return K(arguments,-1)},D.minimum=D.min=function(){return K(arguments,1)},D.random=function(){var x=9007199254740992,I=Math.random()*x&2097151?function(){return bi(Math.random()*x)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(A){var M,k,S,c,d,f=0,b=[],p=new D(o);if(A==null?A=s:Ve(A,0,Et),c=iu(A/ye),v)if(crypto.getRandomValues){for(M=crypto.getRandomValues(new Uint32Array(c*=2));f<c;)d=M[f]*131072+(M[f+1]>>>11),d>=9e15?(k=crypto.getRandomValues(new Uint32Array(2)),M[f]=k[0],M[f+1]=k[1]):(b.push(d%1e14),f+=2);f=c/2}else if(crypto.randomBytes){for(M=crypto.randomBytes(c*=7);f<c;)d=(M[f]&31)*281474976710656+M[f+1]*1099511627776+M[f+2]*4294967296+M[f+3]*16777216+(M[f+4]<<16)+(M[f+5]<<8)+M[f+6],d>=9e15?crypto.randomBytes(7).copy(M,f):(b.push(d%1e14),f+=7);f=c/7}else throw v=!1,Error(ei+"crypto unavailable");if(!v)for(;f<c;)d=I(),d<9e15&&(b[f++]=d%1e14);for(c=b[--f],A%=ye,c&&A&&(d=ru[ye-A],b[f]=bi(c/d)*d);b[f]===0;b.pop(),f--);if(f<0)b=[S=0];else{for(S=-1;b[0]===0;b.splice(0,1),S-=ye);for(f=1,d=b[0];d>=10;d/=10,f++);f<ye&&(S-=ye-f)}return p.e=S,p.c=b,p}}(),D.sum=function(){for(var x=1,I=arguments,A=new D(I[0]);x<I.length;)A=A.plus(I[x++]);return A},i=function(){var x="0123456789";function I(A,M,k,S){for(var c,d=[0],f,b=0,p=A.length;b<p;){for(f=d.length;f--;d[f]*=M);for(d[0]+=S.indexOf(A.charAt(b++)),c=0;c<d.length;c++)d[c]>k-1&&(d[c+1]==null&&(d[c+1]=0),d[c+1]+=d[c]/k|0,d[c]%=k)}return d.reverse()}return function(A,M,k,S,c){var d,f,b,p,g,w,_,m,C=A.indexOf("."),N=s,R=a;for(C>=0&&(p=O,O=0,A=A.replace(".",""),m=new D(M),w=m.pow(A.length-C),O=p,m.c=I(sn(_i(w.c),w.e,"0"),10,k,x),m.e=m.c.length),_=I(A,M,k,c?(d=j,x):(d=x,j)),b=p=_.length;_[--p]==0;_.pop());if(!_[0])return d.charAt(0);if(C<0?--b:(w.c=_,w.e=b,w.s=S,w=e(w,m,N,R,k),_=w.c,g=w.r,b=w.e),f=b+N+1,C=_[f],p=k/2,g=g||f<0||_[f+1]!=null,g=R<4?(C!=null||g)&&(R==0||R==(w.s<0?3:2)):C>p||C==p&&(R==4||g||R==6&&_[f-1]&1||R==(w.s<0?8:7)),f<1||!_[0])A=g?sn(d.charAt(1),-N,d.charAt(0)):d.charAt(0);else{if(_.length=f,g)for(--k;++_[--f]>k;)_[f]=0,f||(++b,_=[1].concat(_));for(p=_.length;!_[--p];);for(C=0,A="";C<=p;A+=d.charAt(_[C++]));A=sn(A,b,d.charAt(0))}return A}}(),e=function(){function x(M,k,S){var c,d,f,b,p=0,g=M.length,w=k%An,_=k/An|0;for(M=M.slice();g--;)f=M[g]%An,b=M[g]/An|0,c=_*f+b*w,d=w*f+c%An*An+p,p=(d/S|0)+(c/An|0)+_*b,M[g]=d%S;return p&&(M=[p].concat(M)),M}function I(M,k,S,c){var d,f;if(S!=c)f=S>c?1:-1;else for(d=f=0;d<S;d++)if(M[d]!=k[d]){f=M[d]>k[d]?1:-1;break}return f}function A(M,k,S,c){for(var d=0;S--;)M[S]-=d,d=M[S]<k[S]?1:0,M[S]=d*c+M[S]-k[S];for(;!M[0]&&M.length>1;M.splice(0,1));}return function(M,k,S,c,d){var f,b,p,g,w,_,m,C,N,R,$,L,H,ee,ge,ne,me,xe=M.s==k.s?1:-1,_e=M.c,he=k.c;if(!_e||!_e[0]||!he||!he[0])return new D(!M.s||!k.s||(_e?he&&_e[0]==he[0]:!he)?NaN:_e&&_e[0]==0||!he?xe*0:xe/0);for(C=new D(xe),N=C.c=[],b=M.e-k.e,xe=S+b+1,d||(d=ji,b=yi(M.e/ye)-yi(k.e/ye),xe=xe/ye|0),p=0;he[p]==(_e[p]||0);p++);if(he[p]>(_e[p]||0)&&b--,xe<0)N.push(1),g=!0;else{for(ee=_e.length,ne=he.length,p=0,xe+=2,w=bi(d/(he[0]+1)),w>1&&(he=x(he,w,d),_e=x(_e,w,d),ne=he.length,ee=_e.length),H=ne,R=_e.slice(0,ne),$=R.length;$<ne;R[$++]=0);me=he.slice(),me=[0].concat(me),ge=he[0],he[1]>=d/2&&ge++;do{if(w=0,f=I(he,R,ne,$),f<0){if(L=R[0],ne!=$&&(L=L*d+(R[1]||0)),w=bi(L/ge),w>1)for(w>=d&&(w=d-1),_=x(he,w,d),m=_.length,$=R.length;I(_,R,m,$)==1;)w--,A(_,ne<m?me:he,m,d),m=_.length,f=1;else w==0&&(f=w=1),_=he.slice(),m=_.length;if(m<$&&(_=[0].concat(_)),A(R,_,$,d),$=R.length,f==-1)for(;I(he,R,ne,$)<1;)w++,A(R,ne<$?me:he,$,d),$=R.length}else f===0&&(w++,R=[0]);N[p++]=w,R[0]?R[$++]=_e[H]||0:(R=[_e[H]],$=1)}while((H++<ee||R[0]!=null)&&xe--);g=R[0]!=null,N[0]||N.splice(0,1)}if(d==ji){for(p=1,xe=N[0];xe>=10;xe/=10,p++);G(C,S+(C.e=p+b*ye-1)+1,c,g)}else C.e=b,C.r=+g;return C}}();function q(x,I,A,M){var k,S,c,d,f;if(A==null?A=a:Ve(A,0,8),!x.c)return x.toString();if(k=x.c[0],c=x.e,I==null)f=_i(x.c),f=M==1||M==2&&(c<=l||c>=u)?va(f,c):sn(f,c,"0");else if(x=G(new D(x),I,A),S=x.e,f=_i(x.c),d=f.length,M==1||M==2&&(I<=S||S<=l)){for(;d<I;f+="0",d++);f=va(f,S)}else if(I-=c,f=sn(f,S,"0"),S+1>d){if(--I>0)for(f+=".";I--;f+="0");}else if(I+=S-d,I>0)for(S+1==d&&(f+=".");I--;f+="0");return x.s<0&&k?"-"+f:f}function K(x,I){for(var A,M,k=1,S=new D(x[0]);k<x.length;k++)M=new D(x[k]),(!M.s||(A=nr(S,M))===I||A===0&&S.s===I)&&(S=M);return S}function Z(x,I,A){for(var M=1,k=I.length;!I[--k];I.pop());for(k=I[0];k>=10;k/=10,M++);return(A=M+A*ye-1)>y?x.c=x.e=null:A<h?x.c=[x.e=0]:(x.e=A,x.c=I),x}n=function(){var x=/^(-?)0([xbo])(?=\w[\w.]*$)/i,I=/^([^.]+)\.$/,A=/^\.([^.]+)$/,M=/^-?(Infinity|NaN)$/,k=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(S,c,d,f){var b,p=d?c:c.replace(k,"");if(M.test(p))S.s=isNaN(p)?null:p<0?-1:1;else{if(!d&&(p=p.replace(x,function(g,w,_){return b=(_=_.toLowerCase())=="x"?16:_=="b"?2:8,!f||f==b?w:g}),f&&(b=f,p=p.replace(I,"$1").replace(A,"0.$1")),c!=p))return new D(p,b);if(D.DEBUG)throw Error(ei+"Not a"+(f?" base "+f:"")+" number: "+c);S.s=null}S.c=S.e=null}}();function G(x,I,A,M){var k,S,c,d,f,b,p,g=x.c,w=ru;if(g){e:{for(k=1,d=g[0];d>=10;d/=10,k++);if(S=I-k,S<0)S+=ye,c=I,f=g[b=0],p=bi(f/w[k-c-1]%10);else if(b=iu((S+1)/ye),b>=g.length)if(M){for(;g.length<=b;g.push(0));f=p=0,k=1,S%=ye,c=S-ye+1}else break e;else{for(f=d=g[b],k=1;d>=10;d/=10,k++);S%=ye,c=S-ye+k,p=c<0?0:bi(f/w[k-c-1]%10)}if(M=M||I<0||g[b+1]!=null||(c<0?f:f%w[k-c-1]),M=A<4?(p||M)&&(A==0||A==(x.s<0?3:2)):p>5||p==5&&(A==4||M||A==6&&(S>0?c>0?f/w[k-c]:0:g[b-1])%10&1||A==(x.s<0?8:7)),I<1||!g[0])return g.length=0,M?(I-=x.e+1,g[0]=w[(ye-I%ye)%ye],x.e=-I||0):g[0]=x.e=0,x;if(S==0?(g.length=b,d=1,b--):(g.length=b+1,d=w[ye-S],g[b]=c>0?bi(f/w[k-c]%w[c])*d:0),M)for(;;)if(b==0){for(S=1,c=g[0];c>=10;c/=10,S++);for(c=g[0]+=d,d=1;c>=10;c/=10,d++);S!=d&&(x.e++,g[0]==ji&&(g[0]=1));break}else{if(g[b]+=d,g[b]!=ji)break;g[b--]=0,d=1}for(S=g.length;g[--S]===0;g.pop());}x.e>y?x.c=x.e=null:x.e<h&&(x.c=[x.e=0])}return x}function J(x){var I,A=x.e;return A===null?x.toString():(I=_i(x.c),I=A<=l||A>=u?va(I,A):sn(I,A,"0"),x.s<0?"-"+I:I)}return r.absoluteValue=r.abs=function(){var x=new D(this);return x.s<0&&(x.s=1),x},r.comparedTo=function(x,I){return nr(this,new D(x,I))},r.decimalPlaces=r.dp=function(x,I){var A,M,k,S=this;if(x!=null)return Ve(x,0,Et),I==null?I=a:Ve(I,0,8),G(new D(S),x+S.e+1,I);if(!(A=S.c))return null;if(M=((k=A.length-1)-yi(this.e/ye))*ye,k=A[k])for(;k%10==0;k/=10,M--);return M<0&&(M=0),M},r.dividedBy=r.div=function(x,I){return e(this,new D(x,I),s,a)},r.dividedToIntegerBy=r.idiv=function(x,I){return e(this,new D(x,I),0,1)},r.exponentiatedBy=r.pow=function(x,I){var A,M,k,S,c,d,f,b,p,g=this;if(x=new D(x),x.c&&!x.isInteger())throw Error(ei+"Exponent not an integer: "+J(x));if(I!=null&&(I=new D(I)),d=x.e>14,!g.c||!g.c[0]||g.c[0]==1&&!g.e&&g.c.length==1||!x.c||!x.c[0])return p=new D(Math.pow(+J(g),d?x.s*(2-wa(x)):+J(x))),I?p.mod(I):p;if(f=x.s<0,I){if(I.c?!I.c[0]:!I.s)return new D(NaN);M=!f&&g.isInteger()&&I.isInteger(),M&&(g=g.mod(I))}else{if(x.e>9&&(g.e>0||g.e<-1||(g.e==0?g.c[0]>1||d&&g.c[1]>=24e7:g.c[0]<8e13||d&&g.c[0]<=9999975e7)))return S=g.s<0&&wa(x)?-0:0,g.e>-1&&(S=1/S),new D(f?1/S:S);O&&(S=iu(O/ye+2))}for(d?(A=new D(.5),f&&(x.s=1),b=wa(x)):(k=Math.abs(+J(x)),b=k%2),p=new D(o);;){if(b){if(p=p.times(g),!p.c)break;S?p.c.length>S&&(p.c.length=S):M&&(p=p.mod(I))}if(k){if(k=bi(k/2),k===0)break;b=k%2}else if(x=x.times(A),G(x,x.e+1,1),x.e>14)b=wa(x);else{if(k=+J(x),k===0)break;b=k%2}g=g.times(g),S?g.c&&g.c.length>S&&(g.c.length=S):M&&(g=g.mod(I))}return M?p:(f&&(p=o.div(p)),I?p.mod(I):S?G(p,O,a,c):p)},r.integerValue=function(x){var I=new D(this);return x==null?x=a:Ve(x,0,8),G(I,I.e+1,x)},r.isEqualTo=r.eq=function(x,I){return nr(this,new D(x,I))===0},r.isFinite=function(){return!!this.c},r.isGreaterThan=r.gt=function(x,I){return nr(this,new D(x,I))>0},r.isGreaterThanOrEqualTo=r.gte=function(x,I){return(I=nr(this,new D(x,I)))===1||I===0},r.isInteger=function(){return!!this.c&&yi(this.e/ye)>this.c.length-2},r.isLessThan=r.lt=function(x,I){return nr(this,new D(x,I))<0},r.isLessThanOrEqualTo=r.lte=function(x,I){return(I=nr(this,new D(x,I)))===-1||I===0},r.isNaN=function(){return!this.s},r.isNegative=function(){return this.s<0},r.isPositive=function(){return this.s>0},r.isZero=function(){return!!this.c&&this.c[0]==0},r.minus=function(x,I){var A,M,k,S,c=this,d=c.s;if(x=new D(x,I),I=x.s,!d||!I)return new D(NaN);if(d!=I)return x.s=-I,c.plus(x);var f=c.e/ye,b=x.e/ye,p=c.c,g=x.c;if(!f||!b){if(!p||!g)return p?(x.s=-I,x):new D(g?c:NaN);if(!p[0]||!g[0])return g[0]?(x.s=-I,x):new D(p[0]?c:a==3?-0:0)}if(f=yi(f),b=yi(b),p=p.slice(),d=f-b){for((S=d<0)?(d=-d,k=p):(b=f,k=g),k.reverse(),I=d;I--;k.push(0));k.reverse()}else for(M=(S=(d=p.length)<(I=g.length))?d:I,d=I=0;I<M;I++)if(p[I]!=g[I]){S=p[I]<g[I];break}if(S&&(k=p,p=g,g=k,x.s=-x.s),I=(M=g.length)-(A=p.length),I>0)for(;I--;p[A++]=0);for(I=ji-1;M>d;){if(p[--M]<g[M]){for(A=M;A&&!p[--A];p[A]=I);--p[A],p[M]+=ji}p[M]-=g[M]}for(;p[0]==0;p.splice(0,1),--b);return p[0]?Z(x,p,b):(x.s=a==3?-1:1,x.c=[x.e=0],x)},r.modulo=r.mod=function(x,I){var A,M,k=this;return x=new D(x,I),!k.c||!x.s||x.c&&!x.c[0]?new D(NaN):!x.c||k.c&&!k.c[0]?new D(k):(T==9?(M=x.s,x.s=1,A=e(k,x,0,3),x.s=M,A.s*=M):A=e(k,x,0,T),x=k.minus(A.times(x)),!x.c[0]&&T==1&&(x.s=k.s),x)},r.multipliedBy=r.times=function(x,I){var A,M,k,S,c,d,f,b,p,g,w,_,m,C,N,R=this,$=R.c,L=(x=new D(x,I)).c;if(!$||!L||!$[0]||!L[0])return!R.s||!x.s||$&&!$[0]&&!L||L&&!L[0]&&!$?x.c=x.e=x.s=null:(x.s*=R.s,!$||!L?x.c=x.e=null:(x.c=[0],x.e=0)),x;for(M=yi(R.e/ye)+yi(x.e/ye),x.s*=R.s,f=$.length,g=L.length,f<g&&(m=$,$=L,L=m,k=f,f=g,g=k),k=f+g,m=[];k--;m.push(0));for(C=ji,N=An,k=g;--k>=0;){for(A=0,w=L[k]%N,_=L[k]/N|0,c=f,S=k+c;S>k;)b=$[--c]%N,p=$[c]/N|0,d=_*b+p*w,b=w*b+d%N*N+m[S]+A,A=(b/C|0)+(d/N|0)+_*p,m[S--]=b%C;m[S]=A}return A?++M:m.splice(0,1),Z(x,m,M)},r.negated=function(){var x=new D(this);return x.s=-x.s||null,x},r.plus=function(x,I){var A,M=this,k=M.s;if(x=new D(x,I),I=x.s,!k||!I)return new D(NaN);if(k!=I)return x.s=-I,M.minus(x);var S=M.e/ye,c=x.e/ye,d=M.c,f=x.c;if(!S||!c){if(!d||!f)return new D(k/0);if(!d[0]||!f[0])return f[0]?x:new D(d[0]?M:k*0)}if(S=yi(S),c=yi(c),d=d.slice(),k=S-c){for(k>0?(c=S,A=f):(k=-k,A=d),A.reverse();k--;A.push(0));A.reverse()}for(k=d.length,I=f.length,k-I<0&&(A=f,f=d,d=A,I=k),k=0;I;)k=(d[--I]=d[I]+f[I]+k)/ji|0,d[I]=ji===d[I]?0:d[I]%ji;return k&&(d=[k].concat(d),++c),Z(x,d,c)},r.precision=r.sd=function(x,I){var A,M,k,S=this;if(x!=null&&x!==!!x)return Ve(x,1,Et),I==null?I=a:Ve(I,0,8),G(new D(S),x,I);if(!(A=S.c))return null;if(k=A.length-1,M=k*ye+1,k=A[k]){for(;k%10==0;k/=10,M--);for(k=A[0];k>=10;k/=10,M++);}return x&&S.e+1>M&&(M=S.e+1),M},r.shiftedBy=function(x){return Ve(x,-nu,nu),this.times("1e"+x)},r.squareRoot=r.sqrt=function(){var x,I,A,M,k,S=this,c=S.c,d=S.s,f=S.e,b=s+4,p=new D("0.5");if(d!==1||!c||!c[0])return new D(!d||d<0&&(!c||c[0])?NaN:c?S:1/0);if(d=Math.sqrt(+J(S)),d==0||d==1/0?(I=_i(c),(I.length+f)%2==0&&(I+="0"),d=Math.sqrt(+I),f=yi((f+1)/2)-(f<0||f%2),d==1/0?I="5e"+f:(I=d.toExponential(),I=I.slice(0,I.indexOf("e")+1)+f),A=new D(I)):A=new D(d+""),A.c[0]){for(f=A.e,d=f+b,d<3&&(d=0);;)if(k=A,A=p.times(k.plus(e(S,k,b,1))),_i(k.c).slice(0,d)===(I=_i(A.c)).slice(0,d))if(A.e<f&&--d,I=I.slice(d-3,d+1),I=="9999"||!M&&I=="4999"){if(!M&&(G(k,k.e+s+2,0),k.times(k).eq(S))){A=k;break}b+=4,d+=4,M=1}else{(!+I||!+I.slice(1)&&I.charAt(0)=="5")&&(G(A,A.e+s+2,1),x=!A.times(A).eq(S));break}}return G(A,A.e+s+1,a,x)},r.toExponential=function(x,I){return x!=null&&(Ve(x,0,Et),x++),q(this,x,I,1)},r.toFixed=function(x,I){return x!=null&&(Ve(x,0,Et),x=x+this.e+1),q(this,x,I)},r.toFormat=function(x,I,A){var M,k=this;if(A==null)x!=null&&I&&typeof I=="object"?(A=I,I=null):x&&typeof x=="object"?(A=x,x=I=null):A=P;else if(typeof A!="object")throw Error(ei+"Argument not an object: "+A);if(M=k.toFixed(x,I),k.c){var S,c=M.split("."),d=+A.groupSize,f=+A.secondaryGroupSize,b=A.groupSeparator||"",p=c[0],g=c[1],w=k.s<0,_=w?p.slice(1):p,m=_.length;if(f&&(S=d,d=f,f=S,m-=S),d>0&&m>0){for(S=m%d||d,p=_.substr(0,S);S<m;S+=d)p+=b+_.substr(S,d);f>0&&(p+=b+_.slice(S)),w&&(p="-"+p)}M=g?p+(A.decimalSeparator||"")+((f=+A.fractionGroupSize)?g.replace(new RegExp("\\d{"+f+"}\\B","g"),"$&"+(A.fractionGroupSeparator||"")):g):p}return(A.prefix||"")+M+(A.suffix||"")},r.toFraction=function(x){var I,A,M,k,S,c,d,f,b,p,g,w,_=this,m=_.c;if(x!=null&&(d=new D(x),!d.isInteger()&&(d.c||d.s!==1)||d.lt(o)))throw Error(ei+"Argument "+(d.isInteger()?"out of range: ":"not an integer: ")+J(d));if(!m)return new D(_);for(I=new D(o),b=A=new D(o),M=f=new D(o),w=_i(m),S=I.e=w.length-_.e-1,I.c[0]=ru[(c=S%ye)<0?ye+c:c],x=!x||d.comparedTo(I)>0?S>0?I:b:d,c=y,y=1/0,d=new D(w),f.c[0]=0;p=e(d,I,0,1),k=A.plus(p.times(M)),k.comparedTo(x)!=1;)A=M,M=k,b=f.plus(p.times(k=b)),f=k,I=d.minus(p.times(k=I)),d=k;return k=e(x.minus(A),M,0,1),f=f.plus(k.times(b)),A=A.plus(k.times(M)),f.s=b.s=_.s,S=S*2,g=e(b,M,S,a).minus(_).abs().comparedTo(e(f,A,S,a).minus(_).abs())<1?[b,M]:[f,A],y=c,g},r.toNumber=function(){return+J(this)},r.toPrecision=function(x,I){return x!=null&&Ve(x,1,Et),q(this,x,I,2)},r.toString=function(x){var I,A=this,M=A.s,k=A.e;return k===null?M?(I="Infinity",M<0&&(I="-"+I)):I="NaN":(x==null?I=k<=l||k>=u?va(_i(A.c),k):sn(_i(A.c),k,"0"):x===10&&B?(A=G(new D(A),s+k+1,a),I=sn(_i(A.c),A.e,"0")):(Ve(x,2,j.length,"Base"),I=i(sn(_i(A.c),k,"0"),10,x,M,!0)),M<0&&A.c[0]&&(I="-"+I)),I},r.valueOf=r.toJSON=function(){return J(this)},r._isBigNumber=!0,r[Symbol.toStringTag]="BigNumber",r[Symbol.for("nodejs.util.inspect.custom")]=r.valueOf,t!=null&&D.set(t),D}function yi(t){var e=t|0;return t>0||t===e?e:e-1}function _i(t){for(var e,i,n=1,r=t.length,o=t[0]+"";n<r;){for(e=t[n++]+"",i=ye-e.length;i--;e="0"+e);o+=e}for(r=o.length;o.charCodeAt(--r)===48;);return o.slice(0,r+1||1)}function nr(t,e){var i,n,r=t.c,o=e.c,s=t.s,a=e.s,l=t.e,u=e.e;if(!s||!a)return null;if(i=r&&!r[0],n=o&&!o[0],i||n)return i?n?0:-a:s;if(s!=a)return s;if(i=s<0,n=l==u,!r||!o)return n?0:!r^i?1:-1;if(!n)return l>u^i?1:-1;for(a=(l=r.length)<(u=o.length)?l:u,s=0;s<a;s++)if(r[s]!=o[s])return r[s]>o[s]^i?1:-1;return l==u?0:l>u^i?1:-1}function Ve(t,e,i,n){if(t<e||t>i||t!==bi(t))throw Error(ei+(n||"Argument")+(typeof t=="number"?t<e||t>i?" out of range: ":" not an integer: ":" not a primitive number: ")+String(t))}function wa(t){var e=t.c.length-1;return yi(t.e/ye)==e&&t.c[e]%2!=0}function va(t,e){return(t.length>1?t.charAt(0)+"."+t.slice(1):t)+(e<0?"e":"e+")+e}function sn(t,e,i){var n,r;if(e<0){for(r=i+".";++e;r+=i);t=r+t}else if(n=t.length,++e>n){for(r=i,e-=n;--e;r+=i);t+=r}else e<n&&(t=t.slice(0,e)+"."+t.slice(e));return t}var Z1=Dp(),wi=Z1;var D0=require("@mysten/sui.js/transactions"),E0=require("@mysten/sui.js/utils"),as=require("@mysten/sui.js/utils"),us=require("@mysten/sui.js/utils");var M0=require("@mysten/sui.js/transactions");var Be=require("@mysten/sui.js/utils"),B0=require("@mysten/sui.js/transactions"),j4=require("@mysten/sui.js/utils");var un=require("@mysten/sui.js/utils"),an=require("@mysten/sui.js/utils"),ds=require("@mysten/sui.js/utils"),L0=we(require("axios"),1),Va=require("@mysten/sui.js/bcs"),is=require("@mysten/sui.js/utils"),ns=require("@mysten/sui.js/utils"),eo=require("@mysten/sui.js/utils"),o_=require("@msafe/sui3-utils"),cn=require("@msafe/sui3-utils"),qu=require("@mysten/sui.js/bcs"),Fn=require("@mysten/sui.js/utils");var yv=we(Se(),1);var ar=require("@mysten/sui.js/client"),Hp=require("@mysten/sui.js/keypairs/ed25519");function Ep(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(`Wrong positive integer: ${t}`)}function X1(t){return t instanceof Uint8Array||t!=null&&typeof t=="object"&&t.constructor.name==="Uint8Array"}function ou(t,...e){if(!X1(t))throw new Error("Expected Uint8Array");if(e.length>0&&!e.includes(t.length))throw new Error(`Expected Uint8Array of length ${e}, not of length=${t.length}`)}function su(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function Mp(t,e){ou(t);let i=e.outputLen;if(t.length<i)throw new Error(`digestInto() expects output buffer of length at least ${i}`)}var ka=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function J1(t){return t instanceof Uint8Array||t!=null&&typeof t=="object"&&t.constructor.name==="Uint8Array"}var Ta=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),Bi=(t,e)=>t<<32-e|t>>>e,Y1=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!Y1)throw new Error("Non little-endian hardware is not supported");function Q1(t){if(typeof t!="string")throw new Error(`utf8ToBytes expected string, got ${typeof t}`);return new Uint8Array(new TextEncoder().encode(t))}function au(t){if(typeof t=="string"&&(t=Q1(t)),!J1(t))throw new Error(`expected Uint8Array, got ${typeof t}`);return t}var Ca=class{clone(){return this._cloneInto()}},NI={}.toString;function jp(t){let e=n=>t().update(au(n)).digest(),i=t();return e.outputLen=i.outputLen,e.blockLen=i.blockLen,e.create=()=>t(),e}function Bp(t=32){if(ka&&typeof ka.getRandomValues=="function")return ka.getRandomValues(new Uint8Array(t));throw new Error("crypto.getRandomValues must be defined")}function ev(t,e,i,n){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,i,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(i>>r&o),a=Number(i&o),l=n?4:0,u=n?0:4;t.setUint32(e+l,s,n),t.setUint32(e+u,a,n)}var Sa=class extends Ca{constructor(e,i,n,r){super(),this.blockLen=e,this.outputLen=i,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Ta(this.buffer)}update(e){su(this);let{view:i,buffer:n,blockLen:r}=this;e=au(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let l=Ta(e);for(;r<=o-s;s+=r)this.process(l,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(i,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){su(this),Mp(e,this),this.finished=!0;let{buffer:i,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;i[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let y=s;y<r;y++)i[y]=0;ev(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=Ta(e),l=this.outputLen;if(l%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=l/4,h=this.get();if(u>h.length)throw new Error("_sha2: outputLen bigger than state");for(let y=0;y<u;y++)a.setUint32(4*y,h[y],o)}digest(){let{buffer:e,outputLen:i}=this;this.digestInto(e);let n=e.slice(0,i);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:i,buffer:n,length:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%i&&e.buffer.set(n),e}};var tv=(t,e,i)=>t&e^~t&i,iv=(t,e,i)=>t&e^t&i^e&i,nv=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),In=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),On=new Uint32Array(64),cu=class extends Sa{constructor(){super(64,32,8,!1),this.A=In[0]|0,this.B=In[1]|0,this.C=In[2]|0,this.D=In[3]|0,this.E=In[4]|0,this.F=In[5]|0,this.G=In[6]|0,this.H=In[7]|0}get(){let{A:e,B:i,C:n,D:r,E:o,F:s,G:a,H:l}=this;return[e,i,n,r,o,s,a,l]}set(e,i,n,r,o,s,a,l){this.A=e|0,this.B=i|0,this.C=n|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=l|0}process(e,i){for(let y=0;y<16;y++,i+=4)On[y]=e.getUint32(i,!1);for(let y=16;y<64;y++){let v=On[y-15],T=On[y-2],O=Bi(v,7)^Bi(v,18)^v>>>3,P=Bi(T,17)^Bi(T,19)^T>>>10;On[y]=P+On[y-7]+O+On[y-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:l,G:u,H:h}=this;for(let y=0;y<64;y++){let v=Bi(a,6)^Bi(a,11)^Bi(a,25),T=h+v+tv(a,l,u)+nv[y]+On[y]|0,P=(Bi(n,2)^Bi(n,13)^Bi(n,22))+iv(n,r,o)|0;h=u,u=l,l=a,a=s+T|0,s=o,o=r,r=n,n=T+P|0}n=n+this.A|0,r=r+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,l=l+this.F|0,u=u+this.G|0,h=h+this.H|0,this.set(n,r,o,s,a,l,u,h)}roundClean(){On.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Np=jp(()=>new cu);function rr(t){if(!Number.isSafeInteger(t))throw new Error(`Wrong integer: ${t}`)}function xa(t){return t instanceof Uint8Array||t!=null&&typeof t=="object"&&t.constructor.name==="Uint8Array"}function rv(...t){let e=o=>o,i=(o,s)=>a=>o(s(a)),n=t.map(o=>o.encode).reduceRight(i,e),r=t.map(o=>o.decode).reduce(i,e);return{encode:n,decode:r}}function ov(t){return{encode:e=>{if(!Array.isArray(e)||e.length&&typeof e[0]!="number")throw new Error("alphabet.encode input should be an array of numbers");return e.map(i=>{if(i<0||i>=t.length)throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${t.length})`);return t[i]})},decode:e=>{if(!Array.isArray(e)||e.length&&typeof e[0]!="string")throw new Error("alphabet.decode input should be array of strings");return e.map(i=>{if(typeof i!="string")throw new Error(`alphabet.decode: not string element=${i}`);let n=t.indexOf(i);if(n===-1)throw new Error(`Unknown letter: "${i}". Allowed: ${t}`);return n})}}}function sv(t=""){if(typeof t!="string")throw new Error("join separator should be string");return{encode:e=>{if(!Array.isArray(e)||e.length&&typeof e[0]!="string")throw new Error("join.encode input should be array of strings");for(let i of e)if(typeof i!="string")throw new Error(`join.encode: non-string input=${i}`);return e.join(t)},decode:e=>{if(typeof e!="string")throw new Error("join.decode input should be string");return e.split(t)}}}function av(t,e="="){if(typeof e!="string")throw new Error("padding chr should be string");return{encode(i){if(!Array.isArray(i)||i.length&&typeof i[0]!="string")throw new Error("padding.encode input should be array of strings");for(let n of i)if(typeof n!="string")throw new Error(`padding.encode: non-string input=${n}`);for(;i.length*t%8;)i.push(e);return i},decode(i){if(!Array.isArray(i)||i.length&&typeof i[0]!="string")throw new Error("padding.encode input should be array of strings");for(let r of i)if(typeof r!="string")throw new Error(`padding.decode: non-string input=${r}`);let n=i.length;if(n*t%8)throw new Error("Invalid padding: string should have whole number of bytes");for(;n>0&&i[n-1]===e;n--)if(!((n-1)*t%8))throw new Error("Invalid padding: string has too much padding");return i.slice(0,n)}}}function lu(t,e,i){if(e<2)throw new Error(`convertRadix: wrong from=${e}, base cannot be less than 2`);if(i<2)throw new Error(`convertRadix: wrong to=${i}, base cannot be less than 2`);if(!Array.isArray(t))throw new Error("convertRadix: data should be array");if(!t.length)return[];let n=0,r=[],o=Array.from(t);for(o.forEach(s=>{if(s<0||s>=e)throw new Error(`Wrong integer: ${s}`)});;){let s=0,a=!0;for(let l=n;l<o.length;l++){let u=o[l],h=e*s+u;if(!Number.isSafeInteger(h)||e*s/e!==s||h-u!==e*s)throw new Error("convertRadix: carry overflow");s=h%i;let y=Math.floor(h/i);if(o[l]=y,!Number.isSafeInteger(y)||y*i+s!==h)throw new Error("convertRadix: carry overflow");if(a)y?a=!1:n=l;else continue}if(r.push(s),a)break}for(let s=0;s<t.length-1&&t[s]===0;s++)r.push(0);return r.reverse()}var Fp=(t,e)=>e?Fp(e,t%e):t,Aa=(t,e)=>t+(e-Fp(t,e));function uu(t,e,i,n){if(!Array.isArray(t))throw new Error("convertRadix2: data should be array");if(e<=0||e>32)throw new Error(`convertRadix2: wrong from=${e}`);if(i<=0||i>32)throw new Error(`convertRadix2: wrong to=${i}`);if(Aa(e,i)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${i} carryBits=${Aa(e,i)}`);let r=0,o=0,s=2**i-1,a=[];for(let l of t){if(l>=2**e)throw new Error(`convertRadix2: invalid data word=${l} from=${e}`);if(r=r<<e|l,o+e>32)throw new Error(`convertRadix2: carry overflow pos=${o} from=${e}`);for(o+=e;o>=i;o-=i)a.push((r>>o-i&s)>>>0);r&=2**o-1}if(r=r<<i-o&s,!n&&o>=e)throw new Error("Excess padding");if(!n&&r)throw new Error(`Non-zero padding: ${r}`);return n&&o>0&&a.push(r>>>0),a}function cv(t){return{encode:e=>{if(!xa(e))throw new Error("radix.encode input should be Uint8Array");return lu(Array.from(e),2**8,t)},decode:e=>{if(!Array.isArray(e)||e.length&&typeof e[0]!="number")throw new Error("radix.decode input should be array of numbers");return Uint8Array.from(lu(e,t,2**8))}}}function lv(t,e=!1){if(t<=0||t>32)throw new Error("radix2: bits should be in (0..32]");if(Aa(8,t)>32||Aa(t,8)>32)throw new Error("radix2: carry overflow");return{encode:i=>{if(!xa(i))throw new Error("radix2.encode input should be Uint8Array");return uu(Array.from(i),8,t,!e)},decode:i=>{if(!Array.isArray(i)||i.length&&typeof i[0]!="number")throw new Error("radix2.decode input should be array of numbers");return Uint8Array.from(uu(i,t,8,e))}}}function uv(t,e){if(typeof e!="function")throw new Error("checksum fn should be function");return{encode(i){if(!xa(i))throw new Error("checksum.encode: input should be Uint8Array");let n=e(i).slice(0,t),r=new Uint8Array(i.length+t);return r.set(i),r.set(n,i.length),r},decode(i){if(!xa(i))throw new Error("checksum.decode: input should be Uint8Array");let n=i.slice(0,-t),r=e(n).slice(0,t),o=i.slice(-t);for(let s=0;s<t;s++)if(r[s]!==o[s])throw new Error("Invalid checksum");return n}}}var Go={alphabet:ov,chain:rv,checksum:uv,convertRadix:lu,convertRadix2:uu,radix:cv,radix2:lv,join:sv,padding:av};var dv=t=>t[0]==="\u3042\u3044\u3053\u304F\u3057\u3093";function fv(t){ou(t,16,20,24,28,32)}function Rp(t,e=128){if(Ep(e),e%32!==0||e>256)throw new TypeError("Invalid entropy");return mv(Bp(e/8),t)}var hv=t=>{let e=8-t.length/4;return new Uint8Array([Np(t)[0]>>e<<e])};function pv(t){if(!Array.isArray(t)||t.length!==2048||typeof t[0]!="string")throw new Error("Wordlist: expected array of 2048 strings");return t.forEach(e=>{if(typeof e!="string")throw new Error(`Wordlist: non-string element: ${e}`)}),Go.chain(Go.checksum(1,hv),Go.radix2(11,!0),Go.alphabet(t))}function mv(t,e){return fv(t),pv(e).encode(t).join(dv(e)?"\u3000":" ")}var qp=`abandon
5
+ `;if(y=await this.fetchAndParseData(O,T),y?.isTimeout||y==null){let P=await this.sdk.Router.price(t,e,new xi.default(i),n,r,o,a),j=[];for(let D of P.paths){let q=[];if(D.poolAddress.length>1){let Z=this.sdk.Router.tokenInfo(D.coinType[0]).decimals,G=this.sdk.Router.tokenInfo(D.coinType[1]).decimals,J=D.a2b[0]?ie.sqrtPriceX64ToPrice(new xi.default(P.currentSqrtPrice[0]),Z,G):ie.sqrtPriceX64ToPrice(new xi.default(P.currentSqrtPrice[0]),G,Z),x={direction:D.a2b[0],label:"Cetus",poolAddress:D.poolAddress[0],fromCoin:D.coinType[0],toCoin:D.coinType[1],feeRate:this.sdk.Router.getFeeRate(D.coinType[0],D.coinType[1],D.poolAddress[0]),outputAmount:P.byAmountIn?D.rawAmountLimit[0].toString():D.rawAmountLimit[1].toString(),inputAmount:D.amountIn.toString(),currentSqrtPrice:P.currentSqrtPrice[0],currentPrice:J,fromDecimal:Z,toDecimal:G},I=this.sdk.Router.tokenInfo(D.coinType[1]).decimals,A=this.sdk.Router.tokenInfo(D.coinType[2]).decimals,E=D.a2b[1]?ie.sqrtPriceX64ToPrice(new xi.default(P.currentSqrtPrice[1]),I,A):ie.sqrtPriceX64ToPrice(new xi.default(P.currentSqrtPrice[1]),A,I),k={direction:D.a2b[1],label:"Cetus",poolAddress:D.poolAddress[1],fromCoin:D.coinType[1],toCoin:D.coinType[2],feeRate:this.sdk.Router.getFeeRate(D.coinType[1],D.coinType[2],D.poolAddress[1]),outputAmount:D.amountOut.toString(),inputAmount:P.byAmountIn?D.rawAmountLimit[0].toString():D.rawAmountLimit[1].toString(),currentSqrtPrice:P.currentSqrtPrice[1],currentPrice:E,fromDecimal:I,toDecimal:A};q.push(x,k)}else{let Z=this.sdk.Router.tokenInfo(D.coinType[0]).decimals,G=this.sdk.Router.tokenInfo(D.coinType[1]).decimals,J=D.a2b[0]?ie.sqrtPriceX64ToPrice(new xi.default(P.currentSqrtPrice[0]),Z,G):ie.sqrtPriceX64ToPrice(new xi.default(P.currentSqrtPrice[0]),G,Z),x={direction:D.a2b[0],label:"Cetus",poolAddress:D.poolAddress[0],fromCoin:D.coinType[0],toCoin:D.coinType[1],feeRate:this.sdk.Router.getFeeRate(D.coinType[0],D.coinType[1],D.poolAddress[0]),outputAmount:D.amountOut.toString(),inputAmount:D.amountIn.toString(),currentSqrtPrice:P.currentSqrtPrice[0],currentPrice:J,fromDecimal:Z,toDecimal:G};q.push(x)}let K={percent:Number(D.amountIn)/Number(P.amountIn)*100,inputAmount:Number(D.amountIn.toString()),outputAmount:Number(D.amountOut.toString()),pathIndex:0,lastQuoteOutput:0,basePaths:q};j.push(K)}let B={isExceed:P.isExceed,isTimeout:!0,inputAmount:Number(P.amountIn.toString()),outputAmount:Number(P.amountOut.toString()),fromCoin:P.coinTypeA,toCoin:P.coinTypeC!=null?P.coinTypeC:P.coinTypeB,byAmountIn:P.byAmountIn,splitPaths:j};v="v1",y=B}return{result:y,version:v}}},cw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}setTokenListCache(t){let{coin_list_handle:e}=F(this.sdk.sdkOptions.cetus_config),i=`${e}_getCoinConfigs`,n=this.getCache(i),r=n?[...n,...t]:t;this.updateCache(i,r,X)}async getTokenListByCoinTypes(t){let e={},{coin_list_handle:i}=F(this.sdk.sdkOptions.cetus_config),n=`${i}_getCoinConfigs`,r=this.getCache(n);if(r!==void 0){let s=r;for(let a of t)for(let l of s)if($t(a)===$t(l.address)){e[a]=l;continue}}let o=t.filter(s=>e[s]===void 0);for(let s of o){let a=`${s}_metadata`,l=this.getCache(a);if(l!==void 0)e[s]=l;else{let u=await this._sdk.fullClient.getCoinMetadata({coinType:s});if(u){let h={id:u.id,pyth_id:"",name:u.name,symbol:u.symbol,official_symbol:u.symbol,coingecko_id:"",decimals:u.decimals,project_url:"",logo_url:u.iconUrl,address:s};e[s]=h,this.updateCache(a,h,X)}else console.log(`not found ${s}`)}}return e}async getCoinConfigs(t=!1,e=!0){let{coin_list_handle:i}=F(this.sdk.sdkOptions.cetus_config),n=`${i}_getCoinConfigs`,r=this.getCache(n,t);if(r)return r;let s=(await this._sdk.fullClient.getDynamicFieldsByPage(i)).data.map(u=>u.objectId),a=await this._sdk.fullClient.batchGetObjects(s,{showContent:!0}),l=[];return a.forEach(u=>{if(u.error!=null||u.data?.content?.dataType!=="moveObject")throw new Y(`when getCoinConfigs get objects error: ${u.error}, please check the rpc and contracts address config.`,"InvalidConfig");let h=this.buildCoinConfig(u,e);this.updateCache(`${i}_${h.address}_getCoinConfig`,h,X),l.push({...h})}),this.updateCache(n,l,X),l}async getCoinConfig(t,e=!1,i=!0){let{coin_list_handle:n}=F(this.sdk.sdkOptions.cetus_config),r=`${n}_${t}_getCoinConfig`,o=this.getCache(r,e);if(o)return o;let s=await this._sdk.fullClient.getDynamicFieldObject({parentId:n,name:{type:"0x1::type_name::TypeName",value:{name:Ry(t)}}});if(s.error!=null||s.data?.content?.dataType!=="moveObject")throw new Y(`when getCoinConfig get object error: ${s.error}, please check the rpc and contracts address config.`,"InvalidConfig");let a=this.buildCoinConfig(s,i);return this.updateCache(r,a,X),a}buildCoinConfig(t,e=!0){let i=te(t);i=i.value.fields;let n={...i};return n.id=Ht(t),n.address=V(i.coin_type.fields.name).full_address,i.pyth_id&&(n.pyth_id=(0,$s.normalizeSuiObjectId)(i.pyth_id)),this.transformExtensions(n,i.extension_fields.fields.contents,e),delete n.coin_type,n}async getClmmPoolConfigs(t=!1,e=!0){let{clmm_pools_handle:i}=F(this.sdk.sdkOptions.cetus_config),n=`${i}_getClmmPoolConfigs`,r=this.getCache(n,t);if(r)return r;let s=(await this._sdk.fullClient.getDynamicFieldsByPage(i)).data.map(u=>u.objectId),a=await this._sdk.fullClient.batchGetObjects(s,{showContent:!0}),l=[];return a.forEach(u=>{if(u.error!=null||u.data?.content?.dataType!=="moveObject")throw new Y(`when getClmmPoolsConfigs get objects error: ${u.error}, please check the rpc and contracts address config.`,"InvalidConfig");let h=this.buildClmmPoolConfig(u,e);this.updateCache(`${h.pool_address}_getClmmPoolConfig`,h,X),l.push({...h})}),this.updateCache(n,l,X),l}async getClmmPoolConfig(t,e=!1,i=!0){let{clmm_pools_handle:n}=F(this.sdk.sdkOptions.cetus_config),r=`${t}_getClmmPoolConfig`,o=this.getCache(r,e);if(o)return o;let s=await this._sdk.fullClient.getDynamicFieldObject({parentId:n,name:{type:"address",value:t}}),a=this.buildClmmPoolConfig(s,i);return this.updateCache(r,a,X),a}buildClmmPoolConfig(t,e=!0){let i=te(t);i=i.value.fields;let n={...i};return n.id=Ht(t),n.pool_address=(0,$s.normalizeSuiObjectId)(i.pool_address),this.transformExtensions(n,i.extension_fields.fields.contents,e),n}async getLaunchpadPoolConfigs(t=!1,e=!0){let{launchpad_pools_handle:i}=F(this.sdk.sdkOptions.cetus_config),n=`${i}_getLaunchpadPoolConfigs`,r=this.getCache(n,t);if(r)return r;let s=(await this._sdk.fullClient.getDynamicFieldsByPage(i)).data.map(u=>u.objectId),a=await this._sdk.fullClient.batchGetObjects(s,{showContent:!0}),l=[];return a.forEach(u=>{if(u.error!=null||u.data?.content?.dataType!=="moveObject")throw new Y(`when getCoinConfigs get objects error: ${u.error}, please check the rpc and contracts address config.`,"InvalidConfig");let h=this.buildLaunchpadPoolConfig(u,e);this.updateCache(`${h.pool_address}_getLaunchpadPoolConfig`,h,X),l.push({...h})}),this.updateCache(n,l,X),l}async getLaunchpadPoolConfig(t,e=!1,i=!0){let{launchpad_pools_handle:n}=F(this.sdk.sdkOptions.cetus_config),r=`${t}_getLaunchpadPoolConfig`,o=this.getCache(r,e);if(o)return o;let s=await this._sdk.fullClient.getDynamicFieldObject({parentId:n,name:{type:"address",value:t}}),a=this.buildLaunchpadPoolConfig(s,i);return this.updateCache(r,a,X),a}buildLaunchpadPoolConfig(t,e=!0){let i=te(t);i=i.value.fields;let n={...i};n.id=Ht(t),n.pool_address=(0,$s.normalizeSuiObjectId)(i.pool_address),this.transformExtensions(n,i.extension_fields.fields.contents,e);let r=[];i.social_media.fields.contents.forEach(o=>{r.push({name:o.fields.value.fields.name,link:o.fields.value.fields.link})}),n.social_media=r;try{n.regulation=decodeURIComponent(wr.decode(n.regulation).replace(/%/g,"%25"))}catch{n.regulation=wr.decode(n.regulation)}return n}transformExtensions(t,e,i=!0){let n=[];for(let r of e){let{key:o}=r.fields,{value:s}=r.fields;if(o==="labels")try{s=JSON.parse(decodeURIComponent(wr.decode(s)))}catch{}i&&(t[o]=s),n.push({key:o,value:s})}delete t.extension_fields,i||(t.extensions=n)}async getCetusConfig(t=!1){let e=this._sdk.sdkOptions.cetus_config.package_id,i=`${e}_getCetusConfig`,n=this.getCache(i,t);if(n!==void 0)return n;let r=await this._sdk.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=zn(r),s=await this._sdk.fullClient.queryEventsByPage({Transaction:o}),a={coin_list_id:"",launchpad_pools_id:"",clmm_pools_id:"",admin_cap_id:"",global_config_id:"",coin_list_handle:"",launchpad_pools_handle:"",clmm_pools_handle:""};if(s.data.length>0)for(let l of s.data)switch(V(l.type).name){case"InitCoinListEvent":a.coin_list_id=l.parsedJson.coin_list_id;break;case"InitLaunchpadPoolsEvent":a.launchpad_pools_id=l.parsedJson.launchpad_pools_id;break;case"InitClmmPoolsEvent":a.clmm_pools_id=l.parsedJson.pools_id;break;case"InitConfigEvent":a.global_config_id=l.parsedJson.global_config_id,a.admin_cap_id=l.parsedJson.admin_cap_id;break;default:break}return a=await this.getCetusConfigHandle(a),a.clmm_pools_id.length>0&&this.updateCache(i,a,X),a}async getCetusConfigHandle(t){let e=[t.clmm_pools_id,t.coin_list_id,t.launchpad_pools_id];return(await this._sdk.fullClient.multiGetObjects({ids:e,options:{showContent:!0}})).forEach(n=>{if(n.error!=null||n.data?.content?.dataType!=="moveObject")throw new Y(`when getCetusConfigHandle get objects error: ${n.error}, please check the rpc and contracts address config.`,"InvalidConfigHandle");let r=te(n),o=Ii(n);switch(V(o).name){case"ClmmPools":t.clmm_pools_handle=r.pools.fields.id.id;break;case"CoinList":t.coin_list_handle=r.coins.fields.id.id;break;case"LaunchpadPools":t.launchpad_pools_handle=r.pools.fields.id.id;break;default:break}}),t}updateCache(t,e,i=He){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){try{let i=this._cache[t];if(!i)return;if(e||!i.isValid()){delete this._cache[t];return}return i.value}catch(i){console.error(`Error accessing cache for key ${t}:`,i);return}}},lw=class extends lh.SuiClient{async queryEventsByPage(t,e="all"){let i=[],n=!0,r=e==="all",o=r?null:e.cursor;do{let s=await this.queryEvents({query:t,cursor:o,limit:r?null:e.limit});s.data?(i=[...i,...s.data],n=s.hasNextPage,o=s.nextCursor):n=!1}while(r&&n);return{data:i,nextCursor:o,hasNextPage:n}}async getOwnedObjectsByPage(t,e,i="all"){let n=[],r=!0,o=i==="all",s=o?null:i.cursor;do{let a=await this.getOwnedObjects({owner:t,...e,cursor:s,limit:o?null:i.limit});a.data?(n=[...n,...a.data],r=a.hasNextPage,s=a.nextCursor):r=!1}while(o&&r);return{data:n,nextCursor:s,hasNextPage:r}}async getDynamicFieldsByPage(t,e="all"){let i=[],n=!0,r=e==="all",o=r?null:e.cursor;do{let s=await this.getDynamicFields({parentId:t,cursor:o,limit:r?null:e.limit});s.data?(i=[...i,...s.data],n=s.hasNextPage,o=s.nextCursor):n=!1}while(r&&n);return{data:i,nextCursor:o,hasNextPage:n}}async batchGetObjects(t,e,i=50){let n=[];try{for(let r=0;r<Math.ceil(t.length/i);r++){let o=await this.multiGetObjects({ids:t.slice(r*i,i*(r+1)),options:e});n=[...n,...o]}}catch(r){console.log(r)}return n}async calculationTxGas(t){let{sender:e}=t.blockData;if(e===void 0)throw Error("sdk sender is empty");let i=await this.devInspectTransactionBlock({transactionBlock:t,sender:e}),{gasUsed:n}=i.effects;return Number(n.computationCost)+Number(n.storageCost)-Number(n.storageRebate)}async sendTransaction(t,e){try{return await this.signAndExecuteTransactionBlock({transactionBlock:e,signer:t,options:{showEffects:!0,showEvents:!0}})}catch(i){console.log("error: ",i)}}async sendSimulationTransaction(t,e,i=!0){try{if(i)return await this.devInspectTransactionBlock({transactionBlock:t,sender:e});let r={ProgrammableTransaction:{inputs:t.blockData.inputs.map(l=>{let{type:u,value:h}=l;return u==="object"?ch.Inputs.SharedObjectRef({objectId:h,initialSharedVersion:0,mutable:!0}):h}),transactions:t.blockData.transactions}},o=uh.bcs.TransactionKind.serialize(r,{maxSize:131072}).toBytes(),s=Lc(o);return await this.transport.request({method:"sui_devInspectTransactionBlock",params:[e,s,null,null]})}catch(n){console.log("devInspectTransactionBlock error",n)}}},dh=class{_cache={};_rpcModule;_pool;_position;_swap;_rewarder;_router;_router_v2;_token;_config;_sdkOptions;_senderAddress="";constructor(t){this._sdkOptions=t,this._rpcModule=new lw({url:t.fullRpcUrl}),this._swap=new ow(this),this._pool=new tw(this),this._position=new iw(this),this._rewarder=new nw(this),this._router=new rw(this),this._router_v2=new aw(this),this._token=new sw(this),this._config=new cw(this),Hs(this._sdkOptions)}get senderAddress(){return this._senderAddress}set senderAddress(t){this._senderAddress=t}get Swap(){return this._swap}get fullClient(){return this._rpcModule}get sdkOptions(){return this._sdkOptions}get Pool(){return this._pool}get Position(){return this._position}get Rewarder(){return this._rewarder}get Router(){return this._router}get RouterV2(){return this._router_v2}get CetusConfig(){return this._config}get Token(){return this._token}async getOwnerCoinAssets(t,e,i=!0){let n=[],r=null,o=`${this.sdkOptions.fullRpcUrl}_${t}_${e}_getOwnerCoinAssets`,s=this.getCache(o,i);if(s)return s;for(;;){let a=await(e?this.fullClient.getCoins({owner:t,coinType:e,cursor:r}):this.fullClient.getAllCoins({owner:t,cursor:r}));if(a.data.forEach(l=>{BigInt(l.balance)>0&&n.push({coinAddress:V(l.coinType).source_address,coinObjectId:l.coinObjectId,balance:BigInt(l.balance)})}),r=a.nextCursor,!a.hasNextPage)break}return this.updateCache(o,n,30*1e3),n}async getOwnerCoinBalances(t,e){let i=[];return e?i=[await this.fullClient.getBalance({owner:t,coinType:e})]:i=[...await this.fullClient.getAllBalances({owner:t})],i}updateCache(t,e,i=X){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t],n=i?.isValid();if(!e&&n)return i.value;n||delete this._cache[t]}};var ph=require("@mysten/sui.js/utils");var Qs=require("@mysten/sui.js/transactions");var ri=require("@mysten/sui.js/transactions"),Er=require("@mysten/sui.js/utils"),bo=we(Se(),1);var mh=require("@mysten/sui.js/utils");var ml=require("@mysten/sui.js/transactions");var Yi=require("@mysten/sui.js/transactions");var Ui=require("@mysten/sui.js/utils"),oi=require("@mysten/sui.js/transactions");var gl=require("@mysten/sui.js/utils");var yw=require("@mysten/sui.js/utils");var Ue=we(Se(),1);var bh=we(Se(),1);var _l=we(Se(),1);var Qi=require("@mysten/sui.js/transactions"),Hn=require("@mysten/sui.js/transactions");var Zn=require("@mysten/sui.js/transactions");var Ee=we(Se(),1);var bl=require("@mysten/sui.js/bcs"),go=require("@mysten/sui.js/utils"),ea=require("@mysten/sui.js/transactions");var si=require("@mysten/sui.js/transactions"),fl="router",Mr=1e4,bn=class{static buildPoolImmutables(t){let{fields:e}=t.value.fields.value;return{clmm_pool_id:V(e.clmm_pool_id).address,booster_type:V(e.booster_type.fields.name).source_address,pool_id:V(e.pool_id).address,coinTypeA:V(e.coin_type_a.fields.name).source_address,coinTypeB:V(e.coin_type_b.fields.name).source_address}}static buildPoolState(t){let e=te(t),i=[];return e.config.fields.contents.forEach(r=>{i.push({lock_day:Number(r.fields.key),multiplier:Number(M(r.fields.value).div(Mr))})}),{basic_percent:Number(M(e.basic_percent).div(Mr)),balances:{balances_handle:e.balances.fields.id.id,size:e.balances.fields.size},config:i,lock_positions:{lock_positions_handle:e.lock_positions.fields.id.id,size:e.lock_positions.fields.size},is_open:e.is_open,index:Number(e.index),pool_id:Ht(t)}}static buildLockNFT(t){let e=V(Ht(t)).address;return{lock_clmm_position:Ji(t),locked_nft_id:e}}static buildLockPositionInfo(t){let e=te(t),{value:i}=e.value.fields;return{type:i.type,position_id:i.fields.position_id,start_time:Number(i.fields.start_time),lock_period:Number(i.fields.lock_period),end_time:Number(i.fields.end_time),growth_rewarder:i.fields.growth_rewarder,rewarder_owned:i.fields.rewarder_owned,is_settled:i.fields.is_settled}}static isLocked(t){return t.end_time>Date.parse(new Date().toString())/1e3}},uw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPoolImmutables(t=!1){let{booster:e}=this._sdk.sdkOptions,i=`${e.package_id}_getPoolImmutables`,n=this.getCache(i,t),r=[];if(n!==void 0)r.push(...n);else{let o=[];(await this._sdk.ClmmSDK.fullClient.getDynamicFieldsByPage(F(e).booster_pool_handle)).data?.forEach(l=>{o.push(l.objectId)});let a=await this._sdk.ClmmSDK.fullClient.batchGetObjects(o,{showContent:!0});for(let l of a){let u=te(l);if(u){let h=bn.buildPoolImmutables(u);this.updateCache(`${h.pool_id}_getPoolImmutable`,h,X),r.push(h)}}}return this.updateCache(i,r,X),r}async getPoolImmutable(t){let{booster:e}=this._sdk.sdkOptions,i=`${t}_getPoolImmutable`,n=this.getCache(i);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:F(e).booster_pool_handle,name:{type:"0x2::object::ID",value:t}}),o=te(r),s=bn.buildPoolImmutables(o);return this.updateCache(i,s,X),s}async getPools(){let t=[],i=(await this.getPoolImmutables()).map(r=>r.pool_id),n=await this._sdk.ClmmSDK.fullClient.batchGetObjects(i,{showType:!0,showContent:!0});for(let r of n){let o=bn.buildPoolState(r);if(o){let s={...await this.getPoolImmutable(o.pool_id),...o};t.push(s);let a=`${s.pool_id}_getPoolObject`;this.updateCache(a,s,X)}}return t}async getPool(t,e=!0){let i=`${t}_getPoolObject`,n=this.getCache(i,e),r=await this.getPoolImmutable(t);if(n!==void 0)return{...r,...n};let o=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),s=bn.buildPoolState(o),a={...r,...s};return this.updateCache(i,a,X),a}async getPoolHandleId(t){let e=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),i=te(e);return i?i.list.fields.id.id:""}async getBoosterInitConfigs(){let{package_id:t}=this.sdk.sdkOptions.booster,e=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::config::InitEvent`}))?.data,i={booster_config_id:"",booster_pool_handle:""};return e.length>0&&e.forEach(n=>{let r=n.parsedJson;r&&(i.booster_config_id=r.config_id)}),i.booster_pool_handle=await this.getPoolHandleId(i.booster_config_id),i}async getOwnerBoosterPositions(t,e,i){let{booster:n}=this.sdk.sdkOptions,r=[],o=[],s=`${n.package_id}::lock_nft::LockNFT<${this._sdk.ClmmSDK.Position.buildPositionType()}>`,a=await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0,showOwner:!0},filter:{StructType:s}});for(let u of a.data)if(V(Ut(u)).source_address===s&&u.data){let y=bn.buildLockNFT(u);this.updateCache(`${y.locked_nft_id}_getBoosterPositionById`,y,X),y&&(e===void 0||e===y.lock_clmm_position.pool)&&r.push(y)}let l=await this.getLockPositionInfos(i,r.map(u=>u.locked_nft_id));for(let u of r)for(let h of l)if(u.lock_clmm_position.pos_object_id===h.position_id){o.push({...u,...h});break}return o}async getBoosterPosition(t,e){let i=`${e}_getBoosterPositionById`,n=this.getCache(i),r;if(n!==void 0)r=n;else{let s=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0,showOwner:!0}});r=bn.buildLockNFT(s),this.updateCache(i,r,X)}let o=await this.getLockPositionInfo(t,e);return{...r,...o}}async getLockPositionInfos(t,e=[]){let i=await this._sdk.ClmmSDK.fullClient.getDynamicFieldsByPage(t),n=[],r=[];return i.data?.forEach(o=>{e.length>0?e.includes(o.name.value)&&n.push(o.objectId):n.push(o.objectId)}),n.length>0&&(await this._sdk.ClmmSDK.fullClient.batchGetObjects(n,{showContent:!0})).forEach(s=>{let a=bn.buildLockPositionInfo(s);a&&r.push(a)}),r}async getLockPositionInfo(t,e){let i=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}});return bn.buildLockPositionInfo(i)}calculateXCetusRewarder(t,e,i){let n=e.basic_percent,r="0";t.forEach(a=>{a.coin_address===e.booster_type&&(console.log("find ",e.booster_type),r=a.amount_owed.toString())}),i.is_settled||e.config.forEach(a=>{a.lock_day===i.lock_period&&(n=a.multiplier)});let o=M(r).sub(i.growth_rewarder).mul(n);return M(i.rewarder_owned).add(o).toString()}lockPositionPayload(t){let{booster:e}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions,n=new Qs.TransactionBlock;return n.moveCall({target:`${e.published_at}::${fl}::lock_position`,typeArguments:[t.booster_type,t.coinTypeA,t.coinTypeB],arguments:[n.pure(F(e).booster_config_id),n.pure(F(i).global_config_id),n.pure(t.booster_pool_id),n.pure(t.clmm_pool_id),n.pure(t.clmm_position_id),n.pure(t.lock_day),n.pure(z)]}),n}canceLockPositionPayload(t){let{booster:e}=this.sdk.sdkOptions,i=new Qs.TransactionBlock;return i.moveCall({target:`${e.published_at}::${fl}::cancel_lock`,typeArguments:[t.booster_type],arguments:[i.pure(F(e).booster_config_id),i.pure(t.booster_pool_id),i.pure(t.lock_nft_id),i.pure(z)]}),i}redeemPayload(t){let{booster:e,xcetus:i}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions,r=new Qs.TransactionBlock,o=F(i);return r.moveCall({target:`${e.published_at}::${fl}::redeem`,typeArguments:[t.booster_type,t.coinTypeA,t.coinTypeB],arguments:[r.pure(F(e).booster_config_id),r.pure(F(n).global_config_id),r.pure(t.booster_pool_id),r.pure(t.lock_nft_id),r.pure(t.clmm_pool_id),r.pure(o.lock_manager_id),r.pure(o.xcetus_manager_id),r.pure(t.ve_nft_id),r.pure(z)]}),r}updateCache(t,e,i=He){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t];if(!e&&i?.isValid())return i.value;delete this._cache[t]}},Yt="router",gh=1e9;var $i=class{static priceRealToFix(t,e,i){let n=M(e-i).toNumber();return Number(M(t).div(M(10).pow(M(n))).toString())}static priceFixToReal(t,e,i){let n=M(e-i).toNumber();return Number(M(t).mul(M(10).pow(M(n))).toString())}static raiseTotalAmount(t,e,i){let n=M(e-i).abs().toNumber();return e>i?Number(M(t.total_supply).mul(t.current_price).div(M(10).pow(M(n))).toString()):Number(M(t.total_supply).mul(t.current_price).mul(M(10).pow(M(n))).toString())}static buildLaunchPadPool(t){let e=Ut(t),i=V(e),n=te(t),r={coin_type_sale:i.type_arguments[0],coin_type_raise:i.type_arguments[1],pool_address:(0,mh.normalizeSuiObjectId)(Ht(t)),is_settle:n.is_settle,current_price:M(n.initialize_price).div(M(gh)).toString(),price:n.initialize_price,min_price:"0",max_price:"0",sale_coin_amount:n.sale_coin,raise_coin_amount:n.raise_coin,total_purchase_amount:n.reality_raise_total,total_supply:n.sale_total,min_purchase:n.min_purchase,max_purchase:n.max_purchase,complete_raise_limit:n.least_raise_amount,softcap:n.softcap,max_raise_amount:n.hardcap,sale_decimals:0,raise_decimals:0,liquidity_injection_ratio:Number(n.liquidity_rate)/1e4,is_cancel:n.is_cancel,duration_summary:{start_time:Number(n.duration_manager.fields.start_time),end_time:0,settle_end_time:0,purchase_duration:Number(n.duration_manager.fields.activity_duration),settle_duration:Number(n.duration_manager.fields.settle_duration),lock_up_duration:Number(n.duration_manager.fields.locked_duration)},white_summary:{white_handle:n.white_list.fields.users.fields.id.id,protection_hard_cap:n.white_list.fields.hard_cap_total,protection_limit_used:n.white_list.fields.purchase_total,size:Number(n.white_list.fields.users.fields.size)},unused_sale:n.unused_sale,harvest_raise:n.harvest_raise,tick_spacing:Number(n.tick_spacing),owner:n.recipient,purchase_summary:{purchase_handle:n.purchase_list.fields.id.id,size:Number(n.purchase_list.fields.size)},pool_status:"Failed"};return $i.updatePoolStatus(r),r}static updatePoolStatus(t){let e=Number(M(Date.now()/1e3).toFixed(0)),{duration_summary:i}=t,n=i.start_time+i.purchase_duration,r=n+i.settle_duration;if(i.end_time=n,i.settle_end_time=r,t.is_settle)t.pool_status="Ended";else if(t.is_cancel)t.pool_status="Canceled";else if(e<i.start_time)t.pool_status="Upcoming";else if(e>i.start_time&&e<n)t.pool_status="Live";else if(e>n&&e<r){let o=t.raise_coin_amount;Number(o)<Number(t.complete_raise_limit)?t.pool_status="Failed":t.pool_status="Settle"}return t}static async calculatePoolPrice(t,e){let i=await t.ClmmSDK.CetusConfig.getTokenListByCoinTypes([e.coin_type_sale,e.coin_type_raise]),n=i[e.coin_type_sale].decimals,r=i[e.coin_type_raise].decimals;e.min_price=this.priceFixToReal(Number(M(e.softcap).div(M(e.total_supply))),n,r).toString(),e.max_price=this.priceFixToReal(Number(M(e.max_raise_amount).div(M(e.total_supply))),n,r).toString(),e.current_price=this.priceFixToReal(Number(e.current_price),n,r).toString(),e.sale_decimals=n,e.raise_decimals=r}static async getWithdrawRaise(t){return t.pool_status==="Ended"?t.harvest_raise:"0"}static async getWithdrawSale(t){return t.pool_status==="Ended"?t.unused_sale:t.sale_coin_amount}static async getHistoryWithdrawRaise(t,e){if(e.pool_status==="Ended"){if(M(e.harvest_raise).equals(M(0))){let n=await t.Launchpad.getSettleEvent(e.pool_address);n&&(e.harvest_raise=n.unused_raise)}let i=(0,bo.min)(new bo.default(e.total_purchase_amount),new bo.default(e.max_raise_amount));return M(i.toString()).mul(1-e.liquidity_injection_ratio).toString()}return"0"}static async getHistoryWithdrawSale(t,e){if(e.pool_status==="Ended"){let i=await t.Launchpad.getSettleEvent(e.pool_address);return i&&(e.unused_sale=i.unused_sale),e.unused_sale}return"0"}static async getOverrecruitReverseAmount(t,e){let i=await t.Launchpad.getPurchaseMarks(t.ClmmSDK.senderAddress,[e.pool_address],!1);if(i.length>0){let n=i[0].purchased_raise_amount,r=(await t.Launchpad.getPurchaseAmount(e.white_summary.white_handle,t.ClmmSDK.senderAddress)).safe_purchased_amount,{protection_limit_used:o}=e.white_summary;return M(n).sub(r).div(M(e.total_purchase_amount).sub(o)).mul(M(e.total_purchase_amount).sub(e.max_raise_amount)).toString()}return"0"}static async getCanPurchaseAmount(t,e){let i=await $i.getOverrecruitReverseAmount(t,e),n=await t.Launchpad.getPurchaseMarks(t.ClmmSDK.senderAddress,[e.pool_address],!1);if(n){let r=n[0].purchased_raise_amount;M(r).sub(i).div(e.current_price)}return"0"}},dw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPoolImmutables(t=[],e=0,i=100,n=!1){let{package_id:r}=this._sdk.sdkOptions.launchpad;if(r===void 0)throw Error("sdk.sdkOptions.launchpad is undefined");let o=`${r}_getPoolImmutables`,s=this.getCache(o,n),a=[],l=[];if(s!==void 0&&a.push(...s),a.length===0)try{((await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${r}::factory::CreatePoolEvent`}))?.data).forEach(y=>{let v=y.parsedJson;v&&a.push({pool_address:v.pool_id,coin_type_sale:V(v.sale_coin.name).full_address,coin_type_raise:V(v.raise_coin.name).full_address})}),this.updateCache(o,a,X)}catch(h){console.log("getPoolImmutables",h)}let u=t.length>0;for(let h=0;h<a.length;h+=1){let y=a[h];if(!(u&&!t.includes(y.pool_address))){if(!u){let v=h;if(v<e||v>=e+i)continue}l.push(y)}}return l}async getPoolImmutablesWithPage(t="all",e=!1){let{package_id:i}=this._sdk.sdkOptions.launchpad,n=`${i}_getPoolImmutables`,r=[],o={data:[],hasNextPage:!1},s=t==="all";if(s){let a=this.getCache(n,e);a&&r.push(...a)}if(r.length===0)try{let a=await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${i}::factory::CreatePoolEvent`},t);o.hasNextPage=a.hasNextPage,o.nextCursor=a.nextCursor,a.data.forEach(l=>{let u=l.parsedJson;u&&r.push({pool_address:u.pool_id,coin_type_sale:V(u.sale_coin.name).full_address,coin_type_raise:V(u.raise_coin.name).full_address})})}catch(a){console.log("getPoolImmutables",a)}return o.data=r,s&&this.updateCache(n,r,X),o}async getPools(t=[],e=0,i=100){let n=[],r=[];t.length>0?r=[...t]:(await this.getPoolImmutables([],e,i,!1)).forEach(a=>{r.push(a.pool_address)});let o=await this._sdk.ClmmSDK.fullClient.batchGetObjects(r,{showType:!0,showContent:!0});for(let s of o){let a=$i.buildLaunchPadPool(s);await $i.calculatePoolPrice(this._sdk,a),n.push(a);let l=`${a.pool_address}_getPoolObject`;this.updateCache(l,a,X)}return n}async getPool(t,e=!0){let i=`${t}_getPoolObject`,n=this.getCache(i,e);if(n!==void 0){let s=n;return $i.updatePoolStatus(s),s}let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),o=$i.buildLaunchPadPool(r);return await $i.calculatePoolPrice(this._sdk,o),this.updateCache(i,o),o}async getInitConfig(t=!1){let e=this._sdk.sdkOptions.launchpad.package_id,i=`${e}_getInitEvent`,n=this.getCache(i,t);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=zn(r),s=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({Transaction:o}))?.data,a={pools_id:"",admin_cap_id:"",config_cap_id:""};return s.length>0&&(s.forEach(l=>{let u=l.parsedJson;if(u)switch(V(l.type).full_address){case`${e}::config::InitConfigEvent`:a.admin_cap_id=u.admin_cap_id,a.config_cap_id=u.config_cap_id;break;case`${e}::factory::InitFactoryEvent`:a.pools_id=u.pools_id;break;default:break}}),this.updateCache(i,a,X)),a}async getLockNFT(t,e=!1){let i=`${t}_getLockNFT`,n=this.getCache(i,e);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}});if(!r.error)return Ji(r)}async getLockNFTList(t){let{package_id:e}=this._sdk.ClmmSDK.sdkOptions.clmm_pool,{sdkOptions:i}=this._sdk,n=[];try{let r=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${i.launchpad.package_id}::lock::LockNFTEvent`}))?.data;for(let o of r){let s=o.parsedJson;if(s){let a={locked_time:Number(s.locked_time),end_lock_time:Number(s.end_lock_time),nft_type:s.nft_type_name.name,lock_nft_id:s.lock_nft_id,recipient:s.recipient};if(t===a.recipient&&`${e}`===V(a.nft_type).address){let l=await this.getLockNFT(a.lock_nft_id);if(l){let u=V(l.coin_type_a).full_address,h=V(l.coin_type_b).full_address;n.push({...l,coin_type_a:u,coin_type_b:h,...a})}}}}return n}catch(r){return console.log("getLockNFTList:",r),[]}}async creatPoolTransactionPayload(t){let{launchpad:e}=this.sdk.sdkOptions,i=F(e);if(this.assertLuanchpadConfig(),this._sdk.ClmmSDK.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let n=$i.priceRealToFix(Number(t.initialize_price),t.sale_decimals,t.raise_decimals),r=new ri.TransactionBlock,o=M(t.total_supply).add(M(t.total_supply).mul(M(t.liquidity_rate))).toNumber(),s=await oe.syncBuildCoinInputForAmount(this._sdk.ClmmSDK,r,BigInt(o),t.coin_type_sale),a=[r.pure(i.admin_cap_id),r.pure(i.config_cap_id),r.pure(i.pools_id),r.pure((0,Er.normalizeSuiAddress)(t.recipient)),r.pure((n*gh).toString()),s,r.pure(t.total_supply.toString()),r.pure(t.min_purchase.toString()),r.pure(t.max_purchase.toString()),r.pure(t.least_raise_amount.toString()),r.pure(t.hardcap.toString()),r.pure((t.liquidity_rate*1e3).toString()),r.pure(t.start_time.toString()),r.pure(t.activity_duration.toString()),r.pure(t.settle_duration.toString()),r.pure(t.locked_duration.toString()),r.pure(t.tick_spacing.toString()),r.pure(z)],l=[t.coin_type_sale,t.coin_type_raise];return r.moveCall({target:`${e.published_at}::${Yt}::create_launch_pool`,typeArguments:l,arguments:a}),r}async creatPurchasePayload(t){let{launchpad:e}=this.sdk.sdkOptions;if(this._sdk.ClmmSDK.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let i=new ri.TransactionBlock,n=await oe.syncBuildCoinInputForAmount(this._sdk.ClmmSDK,i,BigInt(t.purchase_amount),t.coin_type_raise),r=(await this.getPurchaseMarks(this._sdk.ClmmSDK.senderAddress,[t.pool_address],!1))[0],o=[t.coin_type_sale,t.coin_type_raise],s;return r?s=[i.pure(t.pool_address),i.pure(F(e).config_cap_id),i.pure(r.id),n,i.pure(t.purchase_amount.toString()),i.pure(z)]:s=[i.pure(t.pool_address),i.pure(F(e).config_cap_id),n,i.pure(t.purchase_amount.toString()),i.pure(z)],i.moveCall({target:`${e.published_at}::${Yt}::${r===void 0?"create_and_purchase":"purchase"}`,typeArguments:o,arguments:s}),i}async creatClaimPayload(t){let{launchpad:e}=this.sdk.sdkOptions;if(this._sdk.ClmmSDK.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let i=(await this.getPurchaseMarks(this._sdk.ClmmSDK.senderAddress,[t.pool_address],!1))[0],n=new ri.TransactionBlock,r=[t.coin_type_sale,t.coin_type_raise],o=[n.pure(t.pool_address),n.pure(F(e).config_cap_id),n.pure(i?.id),n.pure(z)];return n.moveCall({target:`${e.published_at}::${Yt}::claim`,typeArguments:r,arguments:o}),n}async creatSettlePayload(t){let{launchpad:e}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions;if(this._sdk.ClmmSDK.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");this.assertLuanchpadConfig();let n=F(i),{clmm_args:r}=t,o=new ri.TransactionBlock;o.setSender(this.sdk.ClmmSDK.senderAddress);let s=[t.coin_type_sale,t.coin_type_raise];if(r){let a=r.opposite?ie.priceToSqrtPriceX64(M(1).div(r.current_price),r.raise_decimals,r.sale_decimals).toString():ie.priceToSqrtPriceX64(M(r.current_price),r.sale_decimals,r.raise_decimals).toString(),l=BigInt(a)<BigInt(r.clmm_sqrt_price),u=r.opposite?l?t.coin_type_raise:t.coin_type_sale:l?t.coin_type_sale:t.coin_type_raise,h=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress,u),y=Ce.calculateTotalBalance(h);Ce.isSuiCoin(u)&&(y-=BigInt(2e8));let T=oe.buildCoinForAmount(o,h,y,u).targetCoin,O=r.opposite?l?"settle_with_reverse_clmm_only_with_a":"settle_with_reverse_clmm_only_with_b":l?"settle_only_with_a":"settle_only_with_b",P=[o.pure(t.pool_address),o.pure(F(e).config_cap_id),o.pure(r.clmm_pool_address),o.pure(n.global_config_id),o.pure(a),T,o.pure(z)];o.moveCall({target:`${e.published_at}::${Yt}::${O}`,typeArguments:s,arguments:P})}else o.moveCall({target:`${e.published_at}::${Yt}::settle`,typeArguments:s,arguments:[o.pure(t.pool_address),o.pure(F(e).config_cap_id),o.pure(z)]});return o}creatWithdrawPayload(t){let{launchpad:e}=this.sdk.sdkOptions,i=new ri.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise],r=[i.object(t.pool_address),i.object(F(e).config_cap_id),i.object(z)];return t.sale_amount>BigInt(0)&&i.moveCall({target:`${e.published_at}::${Yt}::withdraw_sale`,typeArguments:n,arguments:r}),t.raise_amount>BigInt(0)&&i.moveCall({target:`${e.published_at}::${Yt}::withdraw_raise`,typeArguments:n,arguments:r}),i}addUserToWhitelisPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let i=new ri.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise];return t.user_addrs.forEach(r=>{let o=[i.object(F(e).admin_cap_id),i.object(F(e).config_cap_id),i.object(t.pool_address),i.object(r),i.pure(t.safe_limit_amount),i.object(z)];i.moveCall({target:`${e.published_at}::${Yt}::add_user_to_whitelist`,typeArguments:n,arguments:o})}),i}updateWhitelistCapPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let i=new ri.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise];return t.safe_limit_amount>0&&i.moveCall({target:`${e.published_at}::${Yt}::update_whitelist_member_safe_limit_amount`,typeArguments:n,arguments:[i.object(F(e).admin_cap_id),i.object(F(e).config_cap_id),i.object(t.pool_address),i.pure(t.white_list_member),i.pure(t.safe_limit_amount),i.object(z)]}),t.hard_cap_total>0&&i.moveCall({target:`${e.published_at}::${Yt}::update_whitelist_hard_cap_total`,typeArguments:n,arguments:[i.object(F(e).admin_cap_id),i.object(F(e).config_cap_id),i.object(t.pool_address),i.pure(t.hard_cap_total),i.object(z)]}),i}creatRemoveWhitelistPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let i=new ri.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise];return t.user_addrs.forEach(r=>{let o=[i.object(F(e).admin_cap_id),i.object(F(e).config_cap_id),i.object(t.pool_address),i.object(r),i.object(z)];i.moveCall({target:`${e.published_at}::${Yt}::remove_user_from_whitelist`,typeArguments:n,arguments:o})}),i}creatCancelPoolPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let i=new ri.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise],r=[i.pure(F(e).admin_cap_id),i.pure(F(e).config_cap_id),i.pure(t.pool_address),i.pure(z)];return i.moveCall({target:`${e.published_at}::${Yt}::cancel`,typeArguments:n,arguments:r}),i}updateRecipientPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let i=new ri.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise],r=[i.pure(F(e).admin_cap_id),i.pure(F(e).config_cap_id),i.pure(t.pool_address),i.pure(t.new_recipient),i.pure(z)];return i.moveCall({target:`${e.published_at}::${Yt}::update_recipient_address`,typeArguments:n,arguments:r}),i}updatePoolDuractionPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let i=new ri.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise],r=[i.pure(F(e).admin_cap_id),i.pure(F(e).config_cap_id),i.pure(t.pool_address),i.pure(t.activity_duration),i.pure(t.settle_duration),i.pure(t.lock_duration),i.pure(z)];return i.moveCall({target:`${e.published_at}::${Yt}::update_pool_duration`,typeArguments:n,arguments:r}),i}creatUnlockNftPayload(t){let{launchpad:e}=this.sdk.sdkOptions;if(F(e)===void 0)throw Error("getPackagerConfigs(launchpad) is null");let i=new ri.TransactionBlock,n=[t.nft_type],r=[i.pure(t.lock_nft),i.pure(z)];return i.moveCall({target:`${e.published_at}::lock::unlock_nft`,typeArguments:n,arguments:r}),i}async isAdminCap(t){let{launchpad:e}=this._sdk.sdkOptions;if(F(e)===void 0)throw Error("launchpad config is empty");let i=`${t}_isAdminCap`,n=this.getCache(i);if(n)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:F(e).admin_cap_id,options:{showType:!0,showOwner:!0}});console.log(r);let o=Ii(r),s=Ir(r),a=!1;return s&&o&&V(o).source_address===`${e.package_id}::config::AdminCap`&&(a=(0,Er.normalizeSuiAddress)(s.AddressOwner)===(0,Er.normalizeSuiAddress)(t)),this.updateCache(i,a,X),a}async isWhiteListUser(t,e){let i={type:"address",value:e};try{let n=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:i});return!!(n&&n.data)}catch{return!1}}async getPurchaseAmount(t,e){let i={type:"address",value:e};try{let n=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:i}),r=te(n);if(console.log(r),r)return r?.value?.fields}catch{}return{safe_limit_amount:"0",safe_purchased_amount:"0"}}async getPurchaseMarks(t,e=[],i=!0){let{launchpad:n}=this._sdk.sdkOptions,r=`${e}_getPurchaseMark`,o=this.getCache(r,i);if(!i&&o!==void 0)return o;let s=null,a=[];for(;;){let l=await this._sdk.ClmmSDK.fullClient.getOwnedObjects({owner:t,options:{showType:!0,showContent:!0,showDisplay:!0},cursor:s});for(let u of l.data){let{fields:h}=u.data.content;if(V(Ut(u)).source_address===`${n.package_id}::pool::PurchaseMark`){console.log("fields: ",h);let v={id:h.id.id,pool_id:V(h.pool_id).address,purchased_raise_amount:h.purchase_total,obtain_sale_amount:h.obtain_sale_amount,used_raise_amount:h.used_raise_amount};e.length>0?e.includes(v.pool_id)&&a.push(v):a.push(v)}}if(l.hasNextPage)s=l.nextCursor;else break}return this.updateCache(r,a,X),a}async getSettleEvent(t){let{launchpad:e}=this._sdk.sdkOptions,i=`${t}_getPurchaseMark`,n=this.getCache(i);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${e.package_id}::pool::SettleEvent`});for(let o of r.data){let s=o.parsedJson;if(t===(0,Er.normalizeSuiObjectId)(s.pool_id)){let a={pool_id:s.pool_id,settle_price:s.settle_price,unused_sale:s.unused_sale,unused_raise:s.unused_raise,white_purchase_total:s.white_purchase_total};return this.updateCache(i,a,X),a}}}buildLaunchpadCoinType(t,e){return xr(this._sdk.sdkOptions.launchpad.package_id,"pool","PoolLiquidityCoin",[t,e])}assertLuanchpadConfig(){let{launchpad:t}=this.sdk.sdkOptions;if(F(t)===void 0)throw Error("sdk getPackagerConfigs(launchpad) is null")}updateCache(t,e,i=He){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t];if(!e&&i?.isValid())return i.value;delete this._cache[t]}},yn=class{static buildPoolImmutables(t){let{fields:e}=t.value.fields.value;return{clmm_pool_id:V(e.clmm_pool_id).address,bonus_type:V(e.bonus_type.fields.name).source_address,pool_id:V(e.pool_id).address,coinTypeA:V(e.coin_type_a.fields.name).source_address,coinTypeB:V(e.coin_type_b.fields.name).source_address}}static buildPoolState(t){let e=te(t),i=[];return e.config.fields.contents.forEach(r=>{i.push({rate:Number(M(r.fields.key).div(Mr)),multiplier:Number(M(r.fields.value).div(Mr))})}),{balance:e.balance,config:i,is_open:e.is_open,index:Number(e.index),start_time:Number(e.start_time),interval_day:Number(e.interval_day),minimum_percent_to_reward:Number(M(e.minimum_percent_to_reward).div(Mr)),rewarders:{rewarder_handle:e.rewarders.fields.id.id,size:Number(e.rewarders.fields.size)},whale_nfts:{whale_nfts_handle:e.whale_nfts.fields.id.id,size:Number(e.whale_nfts.fields.size)},points:{point_handle:e.points.fields.id.id,size:Number(e.points.fields.size)}}}static buildMarkerPositions(t){let{contents:e}=t.value.fields.value.fields,i=[],n=t.id.id;return e.forEach(r=>{let{key:o,value:s}=r.fields,a={id:o,period_id:n,bonus_num:s.fields.bonus_num,point:s.fields.point,is_burn:s.fields.is_burn,point_after_multiplier:s.fields.point_after_multiplier,percent:Number(M(s.fields.percent).div(Mr)),fee_share_rate:0,is_redeemed:s.fields.is_redeemed};i.push(a)}),i}static buildPoolBonusInfo(t){let{fields:e,type:i}=t.value.fields.value;return{type:i,time:Number(e.time),settle_time:Number(e.settle_time),settled_num:e.settled_num,is_settled:e.is_settled,basis_bonus:e.basis_bonus,total_bonus:e.total_bonus,is_vacant:e.is_vacant,redeemed_num:e.redeemed_num}}static getBonusPercent(t,e){let i=0;for(let n of t)e>=n.rate&&n.rate>i&&(i=n.multiplier);return i}},fh="router",fw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPoolImmutables(t=!1){let{maker_bonus:e}=this._sdk.sdkOptions,i=`${e.package_id}_getPoolImmutables`,n=this.getCache(i,t),r=[];if(n!==void 0)r.push(...n);else{let o=[];(await this._sdk.ClmmSDK.fullClient.getDynamicFieldsByPage(F(e).maker_pool_handle)).data?.forEach(l=>{o.push(l.objectId)});let a=await this._sdk.ClmmSDK.fullClient.batchGetObjects(o,{showContent:!0});for(let l of a){let u=te(l);u&&r.push(yn.buildPoolImmutables(u))}}return r}async getPoolImmutable(t){let{maker_bonus:e}=this._sdk.sdkOptions,i=`${e.package_id}_getPoolImmutables`,n=this.getCache(i);if(n!==void 0){let s=n.filter(a=>t===a.pool_id);if(s.length>0)return s[0]}let r=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:F(e).maker_pool_handle,name:{type:"0x2::object::ID",value:t}}),o=te(r);return yn.buildPoolImmutables(o)}async getPools(){let t=[],e=await this.getPoolImmutables(),i=e.map(o=>o.pool_id),n=await this._sdk.ClmmSDK.fullClient.batchGetObjects(i,{showType:!0,showContent:!0}),r=0;for(let o of n){let s=yn.buildPoolState(o);if(s){let a={...e[r],...s};t.push(a);let l=`${a.pool_id}_getPoolObject`;this.updateCache(l,a,X)}r+=1}return t}async getPool(t,e=!0){let i=`${t}_getPoolObject`,n=this.getCache(i,e),r=await this.getPoolImmutable(t);if(n!==void 0)return n;let o=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),s=yn.buildPoolState(o),a={...r,...s};return this.updateCache(i,a,X),a}async getPoolHandleId(t){let e=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),i=te(e);return i?i.list.fields.id.id:""}async getMakerPoolPeriods(t,e=!1){let i=[],n=`${t.pool_id}_getMakerPoolPeriods`,r=this.getCache(n,e);return r!==void 0?r:((await this._sdk.ClmmSDK.fullClient.getDynamicFieldsByPage(t.whale_nfts.whale_nfts_handle)).data.forEach(s=>{let a={id:s.objectId,start_time:0,end_time:0,period:Number(s.name.value)};a.start_time=Number(M(t.start_time).add(M(t.interval_day).mul(24*3600).mul(a.period)).toFixed(0,U.ROUND_DOWN)),a.end_time=Number(M(a.start_time).add(M(t.interval_day).mul(24*3600)).toFixed(0,U.ROUND_DOWN)),i.push(a)}),this.updateCache(n,i,X),i)}async getMakerBonusInitConfigs(){let{package_id:t}=this.sdk.sdkOptions.maker_bonus,e=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::config::InitEvent`}))?.data,i={maker_config_id:"",maker_pool_handle:""};return e.length>0&&e.forEach(n=>{let r=n.parsedJson;r&&(i.maker_config_id=r.config_id)}),i.maker_pool_handle=await this.getPoolHandleId(i.maker_config_id),i}async getPoolMarkerPositionList(t,e,i=!1){let n={},r=[];i||e.forEach(o=>{let s=`${t}_${o.period}_getPoolMarkerPositionList`,a=this.getCache(s);a!==void 0?n[o.period]=a:(n[o.period]=[],r.push(o))});try{r.length>0&&(await this._sdk.ClmmSDK.fullClient.batchGetObjects(r.map(a=>a.id),{showContent:!0})).forEach(a=>{let l=te(a),u=yn.buildMarkerPositions(l);if(u.length>0){let{period_id:h}=u[0],y=e.filter(v=>v.id===h)[0];n[y.period]=u}});let o=[];for(let s in n)n[s].forEach(l=>{o.push(l)});if(o.length>0){let s=await this._sdk.ClmmSDK.Position.getSipmlePositionList(o.map(a=>a.id));for(let a of o)for(let l of s)if(a.id===l.pos_object_id){a.clmm_position=l;break}}}catch(o){console.log(o)}for(let o in n){let s=`${t}_${o}_getPoolMarkerPositionList`;this.updateCache(s,n[o],X)}return n}async updateXCetusRewarderAndFee(t,e,i){let n=await this.calculateTotalPointsAfterMultiper(t,i);for(let r of e)await this.calculateXCetusRewarder(t,r,i.period,n);return e}async calculateXCetusRewarder(t,e,i,n){let r=await this.getPoolBonusInfo(t.rewarders.rewarder_handle,i),{fee_share_rate:o}=this.calculateFeeShareRate(t,e,n),s=M(o).mul(r.total_bonus);return e.is_redeemed?e.bonus_num="0":e.bonus_num=s.toString(),e.bonus_num}calculateFeeShareRate(t,e,i){let n=yn.getBonusPercent(t.config,e.percent),r=M(e.point).mul(n),o=M(r).div(i);return e.point_after_multiplier=r.toString(),e.fee_share_rate=Number(o),{fee_share_rate:Number(o),points_after_multiper:r.toString()}}async calculateTotalPointsAfterMultiper(t,e){let i=await this.getPoolMarkerPositionList(t.whale_nfts.whale_nfts_handle,[e]),n=M(0),r=i[e.period];for(let o of r){let s=yn.getBonusPercent(t.config,o.percent),a=M(o.point).mul(s);n=n.add(a)}return n.toString()}async calculateAllXCetusRewarder(t){let e=this._sdk.ClmmSDK.senderAddress,i=M(0),n=[];for(let r of t){let o=await this._sdk.MakerModule.getMakerPoolPeriods(r),s=await this._sdk.MakerModule.getPoolMarkerPositionList(r.whale_nfts.whale_nfts_handle,o),a=[];for(let l of o){let u=s[l.period].filter(h=>e.length===0?!1:h.clmm_position?.owner===e);u.length>0&&(await this._sdk.MakerModule.updateXCetusRewarderAndFee(r,u,l),u.forEach(h=>{h.clmm_position?.position_status===ul.Exists&&M(h.bonus_num).greaterThan(0)&&(i=i.add(h.bonus_num),a.includes(h.clmm_position.pos_object_id)||a.push(h.clmm_position.pos_object_id))}))}n.push({bonus_type:r.bonus_type,pool_id:r.pool_id,nft_ids:a})}return{claimtotal:i,claimRecord:n}}async getPoolBonusInfo(t,e,i=!1){let n=`${t}_${e}_getPoolBonusInfo`,r=this.getCache(n,i);if(r!==void 0)return r;let o=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"u64",value:e.toString()}}),s=te(o),a=yn.buildPoolBonusInfo(s);return this.updateCache(n,a,He),a}claimPayload(t){let{maker_bonus:e,xcetus:i}=this.sdk.sdkOptions,n=new ml.TransactionBlock;return n.moveCall({target:`${e.published_at}::${fh}::claim`,typeArguments:[t.bonus_type],arguments:[n.pure(F(e).maker_config_id),n.pure(t.market_pool_id),n.pure(t.position_nft_id),n.pure(t.phase),n.pure(F(i).lock_manager_id),n.pure(F(i).xcetus_manager_id),n.pure(t.ve_nft_id)]}),n}claimAllPayload(t){let{maker_bonus:e,xcetus:i}=this.sdk.sdkOptions,n=new ml.TransactionBlock;return t.whale_nfts.forEach(r=>{r.nft_ids.forEach(o=>{n.moveCall({target:`${e.published_at}::${fh}::claim_all`,typeArguments:[r.bonus_type],arguments:[n.object(F(e).maker_config_id),n.object(r.pool_id),n.object(o),n.object(F(i).lock_manager_id),n.object(F(i).xcetus_manager_id),n.object(t.ve_nft_id)]})})}),n}updateCache(t,e,i=He){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t];if(!e&&i?.isValid())return i.value;delete this._cache[t]}},Or="router",hl="router",_o=24*3600,ta=1e3,hi=1e11,Xn=class{static buildVeNFTDividendInfo(t){let e={id:t.id.id,ve_nft_id:t.name,rewards:[]};return t.value.fields.value.fields.dividends.fields.contents.forEach(i=>{let n=[];i.fields.value.fields.contents.forEach(r=>{n.push({coin_type:V(r.fields.key.fields.name).source_address,amount:r.fields.value})}),e.rewards.push({period:Number(i.fields.key),rewards:n})}),e}static buildDividendManager(t){let e={id:t.id.id,dividends:{id:t.dividends.fields.id.id,size:t.dividends.fields.size},venft_dividends:{id:t.venft_dividends.fields.id.id,size:t.venft_dividends.fields.size},bonus_types:[],start_time:Number(t.start_time),interval_day:Number(t.interval_day),balances:{id:t.balances.fields.id.id,size:t.balances.fields.size},is_open:t.is_open};return t.bonus_types.forEach(i=>{e.bonus_types.push(V(i.fields.name).source_address)}),e}static buildLockUpManager(t){return{id:t.id.id,balance:t.balance,treasury_manager:t.treasury_manager,extra_treasury:t.extra_treasury,lock_infos:{lock_handle_id:t.lock_infos.fields.id.id,size:Number(t.lock_infos.fields.size)},type_name:$t(t.type_name.fields.name),min_lock_day:Number(t.min_lock_day),max_lock_day:Number(t.max_lock_day),package_version:Number(t.package_version),max_percent_numerator:Number(t.max_percent_numerator),min_percent_numerator:Number(t.min_percent_numerator)}}static buildLockCetus(t){let e=t.fields,i={id:e.id.id,type:V(t.type).source_address,locked_start_time:Number(e.locked_start_time),locked_until_time:Number(e.locked_until_time),cetus_amount:e.balance,xcetus_amount:"0",lock_day:0};return i.lock_day=(i.locked_until_time-i.locked_start_time)/_o,i}static getAvailableXCetus(t,e){let i=M(0);return e.forEach(n=>{i=i.add(n.xcetus_amount)}),M(t.xcetus_balance).sub(i).toString()}static getWaitUnLockCetuss(t){return t.filter(e=>!Xn.isLocked(e))}static getLockingCetuss(t){return t.filter(e=>Xn.isLocked(e))}static isLocked(t){return t.locked_until_time>Date.parse(new Date().toString())/1e3}static buildDividendRewardTypeList(t){let e=new Set;return t.forEach(i=>{i.rewards.forEach(n=>{e.add(n.coin_type)})}),Array.from(e)}static getNextStartTime(t){let e=Date.now()/1e3,{start_time:i,interval_day:n}=t,r=Math.ceil((e-i)/(n*_o));return i+r*n*_o}},hw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getOwnerVeNFT(t,e=!0){let{xcetus:i}=this.sdk.sdkOptions,n=`${t}_getLockUpManagerEvent`,r=this.getCache(n,e);if(r!==void 0)return r;let o,s=`${i.package_id}::xcetus::VeNFT`;return(await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0,showDisplay:!0},filter:{StructType:s}})).data.forEach(l=>{let u=V(Ut(l)).source_address;if(u===s&&l.data&&l.data.content){let{fields:h}=l.data.content;o={...Gn(l),id:h.id.id,index:h.index,type:u,xcetus_balance:h.xcetus_balance},this.updateCache(n,o,X)}}),o}async getOwnerLockCetuss(t){let{xcetus:e}=this.sdk.sdkOptions,i=[],n=`${e.package_id}::lock_coin::LockedCoin<${this.buileCetusCoinType()}>`,r=await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0},filter:{StructType:n}});for(let o of r.data)if(V(Ut(o)).source_address===n&&o.data){let a=Xn.buildLockCetus(o.data.content);a.xcetus_amount=await this.getXCetusAmount(a.id),i.push(a)}return i}async getLockCetus(t){let e=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0}});if(e.data?.content){let i=Xn.buildLockCetus(e.data.content);return i.xcetus_amount=await this.getXCetusAmount(i.id),i}}async getOwnerCetusCoins(t){return await this._sdk.ClmmSDK.getOwnerCoinAssets(t,this.buileCetusCoinType())}mintVeNFTPayload(){let{xcetus:t}=this.sdk.sdkOptions,e=new Yi.TransactionBlock;return e.moveCall({target:`${t.published_at}::${Or}::mint_venft`,typeArguments:[],arguments:[e.pure(F(t).xcetus_manager_id)]}),e}async convertPayload(t){let{xcetus:e}=this.sdk.sdkOptions,i=new Yi.TransactionBlock,n=this.buileCetusCoinType(),r=await oe.syncBuildCoinInputForAmount(this._sdk.ClmmSDK,i,BigInt(t.amount),n);return t.venft_id===void 0?i.moveCall({target:`${e.published_at}::${Or}::mint_and_convert`,typeArguments:[],arguments:[i.object(F(e).lock_manager_id),i.object(F(e).xcetus_manager_id),r,i.pure(t.amount)]}):i.moveCall({target:`${e.published_at}::${Or}::convert`,typeArguments:[],arguments:[i.object(F(e).lock_manager_id),i.object(F(e).xcetus_manager_id),r,i.pure(t.amount),i.pure(t.venft_id)]}),i}redeemLockPayload(t){let{xcetus:e}=this.sdk.sdkOptions,i=new Yi.TransactionBlock;return i.moveCall({target:`${e.published_at}::${Or}::redeem_lock`,typeArguments:[],arguments:[i.pure(F(e).lock_manager_id),i.pure(F(e).xcetus_manager_id),i.pure(t.venft_id),i.pure(t.amount),i.pure(t.lock_day),i.pure(z)]}),i}redeemPayload(t){let{xcetus:e}=this.sdk.sdkOptions,i=new Yi.TransactionBlock;return i.moveCall({target:`${e.published_at}::${Or}::redeem`,typeArguments:[],arguments:[i.pure(F(e).lock_manager_id),i.pure(F(e).xcetus_manager_id),i.pure(t.venft_id),i.pure(t.lock_id),i.pure(z)]}),i}redeemDividendPayload(t,e){let{xcetus:i,xcetus_dividends:n}=this.sdk.sdkOptions,r=new Yi.TransactionBlock;return e.forEach(o=>{r.moveCall({target:`${i.published_at}::${hl}::redeem`,typeArguments:[o],arguments:[r.object(F(n).dividend_manager_id),r.object(t)]})}),r}redeemDividendV2Payload(t,e,i){let{xcetus_dividends:n}=this.sdk.sdkOptions,r=new Yi.TransactionBlock;return e.filter(s=>i.includes(s)).length>0&&(r=this.redeemDividendXTokenPayload(t,r)),e.forEach(s=>{i.includes(s)||r.moveCall({target:`${n.published_at}::${hl}::redeem_v2`,typeArguments:[s],arguments:[r.object(F(n).dividend_manager_id),r.object(t),r.object(z)]})}),r}redeemDividendXTokenPayload(t,e){let{xcetus_dividends:i,xcetus:n}=this.sdk.sdkOptions,{xcetus_manager_id:r,lock_manager_id:o}=F(n),{dividend_manager_id:s}=F(i);return e=e===void 0?new Yi.TransactionBlock:e,e.moveCall({target:`${i.published_at}::${hl}::redeem_xtoken`,typeArguments:[],arguments:[e.object(o),e.object(r),e.object(s),e.object(t),e.object(z)]}),e}buileCetusCoinType(){return`${this.sdk.sdkOptions.cetus_faucet.package_id}::cetus::CETUS`}buileXTokenCoinType(t=this._sdk.sdkOptions.xcetus.package_id,e="xcetus",i="XCETUS"){return`${t}::${e}::${i}`}cancelRedeemPayload(t){let{xcetus:e}=this.sdk.sdkOptions,i=new Yi.TransactionBlock;return i.moveCall({target:`${e.published_at}::${Or}::cancel_redeem_lock`,typeArguments:[],arguments:[i.pure(F(e).lock_manager_id),i.pure(F(e).xcetus_manager_id),i.pure(t.venft_id),i.pure(t.lock_id),i.pure(z)]}),i}async getInitConfigs(){let{package_id:t}=this.sdk.sdkOptions.xcetus,e=`${t}_getInitFactoryEvent`,i=this.getCache(e);if(i!==void 0)return i;let n=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::xcetus::InitEvent`}))?.data,r={xcetus_manager_id:"",lock_manager_id:"",lock_handle_id:""};n.length>0&&n.forEach(s=>{let a=s.parsedJson;a&&(r.xcetus_manager_id=a.xcetus_manager)});let o=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::locking::InitializeEvent`}))?.data;return o.length>0&&o.forEach(s=>{let a=s.parsedJson;a&&(r.lock_manager_id=a.lock_manager)}),r.lock_manager_id.length>0&&(r.lock_handle_id=(await this.getLockUpManager(r.lock_manager_id)).lock_infos.lock_handle_id),this.updateCache(e,r,X),r}async getLockUpManager(t=F(this.sdk.sdkOptions.xcetus).lock_manager_id,e=!1){let i=`${t}_getLockUpManager`,n=this.getCache(i,e);if(n!==void 0)return n;let r=await this.sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),o=Xn.buildLockUpManager(te(r));return this.updateCache(i,o,X),o}async getDividendConfigs(){let{package_id:t}=this.sdk.sdkOptions.xcetus_dividends,e=`${t}_getDividendManagerEvent`,i=this.getCache(e);if(i!==void 0)return i;let n=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::dividend::InitEvent`}))?.data,r={dividend_manager_id:"",dividend_admin_id:"",dividend_settle_id:""};return n.length>0&&n.forEach(o=>{let s=o.parsedJson;s&&(r.dividend_manager_id=s.manager_id,r.dividend_admin_id=s.admin_id,r.dividend_settle_id=s.settle_id,this.updateCache(e,r,X))}),r}async getDividendManager(t=!1){let{dividend_manager_id:e}=F(this._sdk.sdkOptions.xcetus_dividends),i=`${e}_getDividendManager`,n=this.getCache(i,t);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0}}),o=te(r),s=Xn.buildDividendManager(o);return this.updateCache(i,s,X),s}async getXcetusManager(t=!0){let{xcetus_manager_id:e}=F(this._sdk.sdkOptions.xcetus),i=`${e}_getXcetusManager`,n=this.getCache(i,t);if(n)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0}}),o=te(r),s={id:o.id.id,index:Number(o.index),has_venft:{handle:o.has_venft.fields.id.id,size:o.has_venft.fields.size},nfts:{handle:o.nfts.fields.id.id,size:o.nfts.fields.size},total_locked:o.total_locked,treasury:o.treasury.fields.total_supply.fields.value};return this.updateCache(i,s),s}async getVeNFTDividendInfo(t,e){try{let i=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),n=te(i);return Xn.buildVeNFTDividendInfo(n)}catch{return}}async redeemNum(t,e){if(BigInt(t)===BigInt(0))return{amountOut:"0",percent:"0"};let i=await this.getLockUpManager(F(this._sdk.sdkOptions.xcetus).lock_manager_id),n=M(hi).mul(M(i.max_lock_day).sub(M(e))).mul(M(i.max_percent_numerator).sub(M(i.min_percent_numerator))).div(M(i.max_lock_day).sub(M(i.min_lock_day))),r=M(hi).mul(M(i.max_percent_numerator)).sub(n).div(M(ta)).div(hi);return{amountOut:M(r).mul(M(t)).round().toString(),percent:r.toString()}}async reverseRedeemNum(t,e){if(BigInt(t)===BigInt(0))return{amountOut:"0",percent:"0"};let i=await this.getLockUpManager(F(this._sdk.sdkOptions.xcetus).lock_manager_id),n=M(hi).mul(M(i.max_lock_day).sub(M(e))).mul(M(i.max_percent_numerator).sub(M(i.min_percent_numerator))).div(M(i.max_lock_day).sub(M(i.min_lock_day))),r=M(hi).mul(M(i.max_percent_numerator)).sub(n).div(M(ta)).div(hi);return{amountOut:M(t).div(r).toFixed(0,U.ROUND_UP),percent:r.toString()}}async getXCetusAmount(t){let{lock_handle_id:e}=F(this._sdk.sdkOptions.xcetus),i=`${t}_getXCetusAmount`,n=this.getCache(i);if(n!==void 0)return n;try{let r=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:e,name:{type:"0x2::object::ID",value:t}}),o=te(r);if(o){let{xcetus_amount:s}=o.value.fields.value.fields;return this.updateCache(i,s,X),s}}catch{}return"0"}async getVeNftAmount(t,e){try{let i=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),n=te(i);if(n){let{lock_amount:r,xcetus_amount:o}=n.value.fields.value.fields;return{lock_amount:r,xcetus_amount:o}}}catch{}return{lock_amount:"0",xcetus_amount:"0"}}async getPhaseDividendInfo(t,e=!1){let n=(await this.getDividendManager()).dividends.id,r=`${n}_${t}_getPhaseDividendInfo`,o=this._sdk.getCache(r,e);if(o)return o;try{let s=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:n,name:{type:"u64",value:t}}),a=te(s),l=a.value.fields.value.fields,u=l.redeemed_num.fields.contents.map(T=>({name:T.fields.key.fields.name,value:T.fields.value})),h=l.bonus_types.map(T=>T.fields.name),y=l.bonus.fields.contents.map(T=>({name:T.fields.key.fields.name,value:T.fields.value})),v={id:Ht(s),phase:a.name,settled_num:l.settled_num,register_time:l.register_time,redeemed_num:u,is_settled:l.is_settled,bonus_types:h,bonus:y,phase_end_time:""};return this.updateCache(r,v),v}catch{}}updateCache(t,e,i=He){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t];if(!e&&i?.isValid())return i.value;delete this._cache[t]}},pw="factory",fi="oversubscribe_pool",_h=1e6,Dr=1e18;var Pr="router",pl="router",Xs="router";var hh={curve:{strategy:3,both_side:{div_width:10,ratios:[.333333,.266666,.2,.133333,.066666]},one_side:{div_width:5,ratios:[.333333,.266666,.2,.133333,.066666]}},bidAsk:{strategy:4,both_side:{div_width:10,ratios:[.172413793,.137931034,.103448276,.068965517,.034482759,.068965517,.103448276,.137931034,.172413793]},one_side:{div_width:5,ratios:[.066666667,.13333333,.2,.266666667,.333333333]}}};function mw(t){return"master_address"in t}var gw="router",_w="vaults",bw=1e4;var Zt=class{static buildIdoPoolImmutables(t){return{pool_address:(0,gl.normalizeSuiObjectId)(t.pool_id),coin_type_sale:V(t.sale_coin_type.name).full_address,coin_type_raise:V(t.raise_coin_type.name).full_address,tick_spacing:Number(t.tick_spacing),total_supply:t.total_supply,min_purchase:t.min_purchase_amount,max_purchase:t.max_purchase_amount}}static buildIdoPool(t){let e=Ut(t),i=V(e),n=te(t);console.log("fields:",n);let r={pool_address:(0,gl.normalizeSuiObjectId)(n.id.id),coin_type_sale:i.type_arguments[0],coin_type_raise:i.type_arguments[1],tick_spacing:Number(n.tick_spacing),total_supply:n.total_supply,min_purchase:n.min_purchase_amount,max_purchase:n.max_purchase_amount},o={start_time:Number(n.duration_manager.fields.start_time),lock_up_duration:Number(n.duration_manager.fields.lock_up_duration),purchase_duration:Number(n.duration_manager.fields.purchase_duration),end_time:0};o.end_time=o.start_time+o.purchase_duration;let s={complete_raise_limit:n.complete_raise_limit,liquidity_injection_ratio:M(n.liquidity_injection_ratio).div(_h).toNumber(),current_sqrt_price_min:n.current_sqrt_price_min,current_sqrt_price_max:n.current_sqrt_price_max,owner:n.owner,sale_coin_amount:n.sale_coin,raise_coin_amount:n.raise_coin,price:n.price,current_price:n.price,duration_summary:o,is_cancelled:n.is_cancelled,is_liquidity_injected:n.is_liquidity_injected,liquidity_used_raise_amount:n.liquidity_used_raise_amount,liquidity_used_sale_amount:n.liquidity_used_sale_amount,purchase_summary:{size:Number(n.purchase_manager.fields.purchases.fields.size),purchase_handle:n.purchase_manager.fields.purchases.fields.id.id},total_purchase_amount:n.total_purchase_amount,white_summary:{white_list_id:n.white_list.fields.id.id,protection_limit_used:n.white_list.fields.protection_limit_used,protection_hard_cap:n.white_list.fields.protection_hard_cap,white_handle:n.white_list.fields.addresses.fields.id.id,size:Number(n.white_list.fields.addresses.fields.size)},pool_status:"Upcoming",max_raise_amount:"",sale_decimals:0,raise_decimals:0,is_withdrawn:n.is_withdrawn};return Zt.updatePoolStatus(s),{...r,...s}}static is_init_period(t){return Number(M(Date.now()/1e3).toFixed(0))<t.start_time}static is_purchase_period(t){let e=Number(M(Date.now()/1e3).toFixed(0));return e>=t.start_time&&e<=t.start_time+t.purchase_duration}static is_claim_period(t){let e=Number(M(Date.now()/1e3).toFixed(0)),i=t.start_time+t.purchase_duration;return e>i}static is_can_inject_liquidity(t){return!t.is_cancelled&&t.liquidity_injection_ratio!==0&&Zt.is_claim_period(t.duration_summary)&&!t.is_liquidity_injected}static is_can_withdraw(t){return t.is_withdrawn?!1:Zt.is_sale_failed(t)?!0:(t.liquidity_injection_ratio===0||t.is_liquidity_injected)&&Zt.is_claim_period(t.duration_summary)}static is_sale_failed(t){return!!(t.is_cancelled||Zt.is_claim_period(t.duration_summary)&&M(t.total_purchase_amount).lessThan(t.complete_raise_limit))}static buildPurchaseInfo(t){return{...t.value.fields.value.fields,owner:t.name}}static calculateRedeemAmount(t,e){let i,n;if(Zt.is_sale_failed(t))i="0",n="0";else if(e.is_redeemed)i=e.obtained_sale_amount,n=e.used_raise_amount;else if(M(t.total_purchase_amount).lessThanOrEqualTo(t.max_raise_amount))i=M(e.purchased_raise_amount).mul(Dr).div(t.price).toString(),n=e.purchased_raise_amount;else{let o=Zt.redeemForSaleOversubcribeV2(t,e);i=o.user_obtained_sale_amount,n=o.user_used_raise_amount_ceil}i=U.floor(i);let r=U.floor(M(e.purchased_raise_amount).sub(n).toString());return{obtained_sale_amount:i,refunded_raise_amount:r}}static calculateWithdrawAmount(t){let e,i,n=M(t.total_supply).mul(t.liquidity_injection_ratio);if(Zt.is_sale_failed(t))e="0",i=M(n).add(t.total_supply);else{let{max_raise_amount:r}=t;M(t.total_purchase_amount).greaterThanOrEqualTo(r)?(e=M(r).sub(t.liquidity_used_raise_amount).toString(),i="0"):(e=M(t.total_purchase_amount).sub(t.liquidity_used_raise_amount),i=M(t.total_supply).add(n).sub(t.liquidity_used_sale_amount).sub(Zt.get_sold_amount(t)))}return{obtained_raise_amount:U.floor(e).toString(),refunded_sale_amount:U.ceil(i).toString()}}static get_sold_amount(t){return M(t.total_purchase_amount).greaterThanOrEqualTo(t.max_raise_amount)?t.total_supply:M(t.total_purchase_amount).mul(Dr).div(t.price)}static redeemForSaleOversubcribe(t,e){let i=e.protection_raise_amount,n=M(e.purchased_raise_amount).sub(i),r=t.max_raise_amount,{protection_limit_used:o}=t.white_summary,s=M(r).sub(o),a=M(t.total_purchase_amount).sub(o),l=U.ceil(n.mul(s).div(a).add(i)),u=U.floor(n.mul(s).div(a).add(i));return{user_obtained_sale_amount:U.floor(M(t.total_supply).mul(u).div(r)),user_used_raise_amount_ceil:l}}static redeemForSaleOversubcribeV2(t,e){let i=e.protection_raise_amount,n=M(e.purchased_raise_amount).sub(i),r=t.max_raise_amount,{protection_limit_used:o}=t.white_summary,s=M(r).sub(o),a=M(t.total_purchase_amount).sub(o),l=M(i).mul(a).add(M(n).mul(s)).mul(Dr).div(M(a).mul(t.price)),u=U.ceil(l.mul(t.price).div(Dr));return{user_obtained_sale_amount:l,user_used_raise_amount_ceil:u}}static raiseTotalAmount(t){let e=M(t.sale_decimals-t.raise_decimals).abs().toNumber();return t.sale_decimals>t.raise_decimals?M(t.total_supply).mul(t.current_price).div(M(10).pow(M(e))).toString():M(t.total_supply).mul(t.current_price).mul(M(10).pow(M(e))).toString()}static updatePoolStatus(t){let e=Number(M(Date.now()/1e3).toFixed(0)),i=t.duration_summary,n=i.start_time+i.purchase_duration;t.is_cancelled?t.pool_status="Canceled":e<i.start_time?t.pool_status="Upcoming":e>i.start_time&&e<n?t.pool_status="Live":M(t.total_purchase_amount).lessThan(t.complete_raise_limit)?t.pool_status="Failed":t.pool_status="Ended"}static async calculatePoolUiPrice(t,e){let i=await t.ClmmSDK.CetusConfig.getTokenListByCoinTypes([e.coin_type_sale,e.coin_type_raise]),n=i[e.coin_type_sale].decimals,r=i[e.coin_type_raise].decimals;e.current_price=$i.priceFixToReal(Number(M(e.price).div(M(Dr)).toString()),n,r).toString(),e.sale_decimals=n,e.raise_decimals=r,e.max_raise_amount=this.raiseTotalAmount(e)}};var Jn=class{static buildVeNFTDividendInfo(t){let e={id:t.id.id,ve_nft_id:t.name,rewards:[]};return t.value.fields.value.fields.dividends.fields.contents.forEach(i=>{let n=[];i.fields.value.fields.contents.forEach(r=>{n.push({coin_type:V(r.fields.key.fields.name).source_address,amount:r.fields.value})}),e.rewards.push({period:Number(i.fields.key),rewards:n})}),e}static buildDividendManager(t){let e={id:t.id.id,dividends:{id:t.dividends.fields.id.id,size:t.dividends.fields.size},venft_dividends:{id:t.venft_dividends.fields.id.id,size:t.venft_dividends.fields.size},bonus_types:[],start_time:Number(t.start_time),interval_day:Number(t.interval_day),balances:{id:t.balances.fields.id.id,size:t.balances.fields.size},is_open:t.is_open};return t.bonus_types.forEach(i=>{e.bonus_types.push(V(i.fields.name).source_address)}),e}static buildLockUpManager(t){return{id:t.id.id,balance:t.balance,treasury_manager:t.treasury_manager,extra_treasury:t.extra_treasury,lock_infos:{lock_handle_id:t.lock_infos.fields.id.id,size:Number(t.lock_infos.fields.size)},type_name:$t(t.type_name.fields.name),min_lock_day:Number(t.min_lock_day),max_lock_day:Number(t.max_lock_day),package_version:Number(t.package_version),max_percent_numerator:Number(t.max_percent_numerator),min_percent_numerator:Number(t.min_percent_numerator)}}static buildLockToken(t){let e=t.fields,i={id:e.id.id,type:V(t.type).source_address,locked_start_time:Number(e.locked_start_time),locked_until_time:Number(e.locked_until_time),token_amount:e.balance,xtoken_amount:"0",lock_day:0};return i.lock_day=(i.locked_until_time-i.locked_start_time)/_o,i}static getAvailableXToken(t,e){let i=M(0);return e.forEach(n=>{i=i.add(n.xtoken_amount)}),M(t.xtoken_balance).sub(i).toString()}static getWaitUnLockTokens(t){return t.filter(e=>!Jn.isLocked(e))}static getLockingTokens(t){return t.filter(e=>Jn.isLocked(e))}static buildDividendRewardTypeList(t){let e=new Set;return t.forEach(i=>{i.rewards.forEach(n=>{e.add(n.coin_type)})}),Array.from(e)}static isLocked(t){return t.locked_until_time>Date.parse(new Date().toString())/1e3}static getNextStartTime(t,e=_o){let i=Date.now()/1e3,{start_time:n,interval_day:r}=t,o=Math.ceil((i-n)/(r*e));return n+o*r*e}},en=class{static getDefaultStrategyConfig(t){let e;switch(t){case 4:e=hh.bidAsk;break;default:e=hh.curve;break}return e}static geTickIndexRange(t,e,i,n){let r,o;switch(t=ie.getInitializableTickIndex(t,e),n){case"left":t>0?(o=M(t).sub(e).toNumber(),r=M(t).mul(M(1).add(i)).toDecimalPlaces(0).toNumber()):(o=M(t).sub(e).toNumber(),r=M(t).mul(M(1).sub(i)).toDecimalPlaces(0).toNumber());break;case"right":t>0?(o=M(t).mul(M(1).add(i)).toDecimalPlaces(0).toNumber(),r=M(t).add(e).toNumber()):(o=M(t).mul(M(1).sub(i)).toDecimalPlaces(0).toNumber(),r=M(t).add(e).toNumber());break;default:t>0?(r=M(t).mul(M(1).sub(i)).toDecimalPlaces(0).toNumber(),o=M(t).mul(M(1).add(i)).toDecimalPlaces(0).toNumber()):(r=M(t).mul(M(1).add(i)).toDecimalPlaces(0).toNumber(),o=M(t).mul(M(1).sub(i)).toDecimalPlaces(0).toNumber());break}if(r=ie.getInitializableTickIndex(r,e),o=ie.getInitializableTickIndex(o,e),r<Zf)throw Error("Tick lower value is below the minimum allowed value.");if(o>Hf)throw Error("Tick upper value is above the maximum allowed value.");return{tick_lower:r,tick_upper:o}}static getCreateLiquidityBins(t,e){let i=[];switch(e){case 4:i=en.getCreateBidAskLiquidityBins(t);break;default:i=en.getCreateCurveLiquidityBins(t);break}return i}static getCreateBidAskLiquidityBins(t){let e=M(Math.floor(M(t.tick_upper).sub(t.tick_lower).div(t.div_width).toNumber())).abs(),i=[],n=t.ratios,r,o;for(let s=0;s<n.length;s++){let a,l;t.tick_upper<=t.curr_tick?(l=M(t.tick_upper).sub(e.mul(s)).toNumber(),a=M(l).sub(e).toNumber()):t.tick_lower>=t.curr_tick?(a=M(t.tick_lower).add(e.mul(s)).toNumber(),l=M(t.tick_lower).add(e.mul(s+1)).toNumber()):s===4?(a=M(t.tick_lower).add(e.mul(s)).toNumber(),l=M(a).add(e.mul(2)).toNumber()):s>4?(a=M(t.tick_lower).add(e.mul(s+1)).toNumber(),l=M(a).add(e).toNumber()):(a=M(t.tick_lower).add(e.mul(s)).toNumber(),l=M(a).add(e).toNumber()),r=ie.getInitializableTickIndex(a,t.tick_spacing),o=ie.getInitializableTickIndex(l,t.tick_spacing),i.push({tick_lower:r,tick_upper:o,ratio:n[s],liquidity:"0"})}return i}static getCreateCurveLiquidityBins(t){let e=M(Math.floor(M(t.tick_upper).sub(t.tick_lower).div(t.div_width).toNumber())).abs(),i=[],n=t.ratios;for(let r=0;r<n.length;r++){let o,s;t.tick_upper<=t.curr_tick?(s=t.tick_upper,o=M(t.tick_upper).sub(e.mul(r+1)).toNumber()):t.tick_lower>=t.curr_tick?(o=t.tick_lower,s=M(o).add(e.mul(r+1)).toNumber()):(o=M(t.curr_tick).sub(e.mul(r+1)).toNumber(),s=M(t.curr_tick).add(e.mul(r+1)).toNumber()),i.push({tick_lower:ie.getInitializableTickIndex(o,t.tick_spacing),tick_upper:ie.getInitializableTickIndex(s,t.tick_spacing),ratio:n[r],liquidity:"0"})}return i}static calculateAddLiquidityInputs(t){let e=new Ue.default(ie.tickIndexToSqrtPriceX64(t.curr_tick)),i=en.calculateCoinRatios(t.curr_tick,t.liquidity_bins),n=t.liquidity_bins.map((r,o)=>{let s=i[o],a=M(t.coin_amount).mul(t.fix_amount_a?s.coinRatioA:s.coinRatioB).toFixed(0).toString();try{return{...ze.estLiquidityAndcoinAmountFromOneAmounts(r.tick_lower,r.tick_upper,new Ue.default(a),t.fix_amount_a,!0,t.slippage,e),...r}}catch{return{coinAmountA:new Ue.default(0),coinAmountB:new Ue.default(0),tokenMaxA:new Ue.default(0),tokenMaxB:new Ue.default(0),liquidityAmount:new Ue.default(0),fix_amount_a:!t.fix_amount_a,...r}}});return en.fixLiquidityInputs(e,t.slippage,n,!0)}static fixLiquidityInputs(t,e,i,n){let r=i.filter(s=>s.liquidityAmount.gt(re));if(r.length===0)return[];let o=r[0];return i.map(s=>{if(s.liquidityAmount.eq(re)){let a=M(o.liquidityAmount.toString()).mul(s.ratio).div(o.ratio).toFixed(0),l=ie.tickIndexToSqrtPriceX64(s.tick_lower),u=ie.tickIndexToSqrtPriceX64(s.tick_upper),h=ze.getCoinAmountFromLiquidity(new Ue.default(a.toString()),t,l,u,!1);return{coinAmountA:h.coinA,coinAmountB:h.coinB,liquidityAmount:new Ue.default(a.toString()),fix_amount_a:s.fix_amount_a,...Zs(h,Ar.fromDecimal(M(e).mul(100)),n)}}return s})}static calculateCoinRatios(t,e){let i=new Ue.default(ie.tickIndexToSqrtPriceX64(t)),n=[],r=M(0),o=M(0),s=e.map(u=>{let h=M(nh(100,6).toString()).mul(u.ratio).toFixed(0).toString(),y=ie.tickIndexToSqrtPriceX64(u.tick_lower),v=ie.tickIndexToSqrtPriceX64(u.tick_upper),T=ze.getCoinAmountFromLiquidity(new Ue.default(h),i,y,v,!0);return r=r.add(T.coinA.toString()),o=o.add(T.coinB.toString()),{...T,liquidity:h}}),a=[],l=[];return s.forEach((u,h)=>{let y={coinRatioA:r.eq(M(0))?0:M(u.coinA.toString()).div(r).toNumber(),coinRatioB:o.eq(M(0))?0:M(u.coinB.toString()).div(o).toNumber(),liquiditys:u.liquidity,tick_lower:e[h].tick_lower,tick_upper:e[h].tick_upper};n.push(y),a.push(r.eq(M(0))?0:M(u.coinA.toString()).div(r).toNumber()),l.push(o.eq(M(0))?0:M(u.coinB.toString()).div(o).toNumber())}),n}static calculateCloseMasterLiquidityInputs(t){let e=new Ue.default(ie.tickIndexToSqrtPriceX64(t.curr_tick));return t.positions.map(n=>{let r=new Ue.default(n.liquidity),o=ie.tickIndexToSqrtPriceX64(n.tick_lower_index),s=ie.tickIndexToSqrtPriceX64(n.tick_upper_index),a=ze.getCoinAmountFromLiquidity(r,e,o,s,!1),l=Ar.fromDecimal(M(t.slippage).mul(100)),{tokenMaxA:u,tokenMaxB:h}=Zs(a,l,!1);return{coinAmountA:a.coinA,coinAmountB:a.coinB,tokenMaxA:u,tokenMaxB:h,liquidityAmount:r,fix_amount_a:!1}})}static calculateRemoveMasterLiquidityInputs(t){let e=new Ue.default(ie.tickIndexToSqrtPriceX64(t.curr_tick)),{fix_token:i}=t;if(i){let r=t.positions.map((a,l)=>({tick_lower:a.tick_lower_index,tick_upper:a.tick_upper_index,ratio:t.ratios[l]})),o=en.calculateCoinRatios(t.curr_tick,r),s=t.positions.map((a,l)=>{let u=o[l],h=M(i.coin_amount).mul(i.fix_amount_a?u.coinRatioA:u.coinRatioB).toFixed(0).toString();try{let y=ze.estLiquidityAndcoinAmountFromOneAmounts(a.tick_lower_index,a.tick_upper_index,new Ue.default(h),i.fix_amount_a,!1,t.slippage,e);return{...y,tick_lower:a.tick_lower_index,tick_upper:a.tick_upper_index,liquidity:y.liquidityAmount.toString(),ratio:t.ratios[l]}}catch{return{coinAmountA:new Ue.default(0),coinAmountB:new Ue.default(0),tokenMaxA:new Ue.default(0),tokenMaxB:new Ue.default(0),liquidityAmount:new Ue.default(0),fix_amount_a:!i.fix_amount_a,tick_lower:a.tick_lower_index,tick_upper:a.tick_upper_index,liquidity:"0",ratio:t.ratios[l]}}});return en.fixLiquidityInputs(e,t.slippage,s,!1)}return t.positions.map((r,o)=>{let s=t.ratios[o],a=M(t.liquidity).mul(s).toFixed(0);M(a).greaterThan(r.liquidity)&&(a=r.liquidity);let l=ie.tickIndexToSqrtPriceX64(r.tick_lower_index),u=ie.tickIndexToSqrtPriceX64(r.tick_upper_index),h=ze.getCoinAmountFromLiquidity(new Ue.default(a),e,l,u,!1),y=Ar.fromDecimal(M(t.slippage).mul(100)),{tokenMaxA:v,tokenMaxB:T}=Zs(h,y,!1);return{coinAmountA:h.coinA,coinAmountB:h.coinB,tokenMaxA:v,tokenMaxB:T,liquidityAmount:new Ue.default(a),fix_amount_a:!1}})}static buildMasterPosition(t){return{coin_type_a:V(t.coin_type_a.fields.name).full_address,coin_type_b:V(t.coin_type_b.fields.name).full_address,description:t.description,id:t.id.id,index:t.index,liquidity:t.liquidity,name:t.name,pool:t.pool,tick_lower_index:$e(BigInt(t.tick_lower_index.fields.bits)),tick_upper_index:$e(BigInt(t.tick_upper_index.fields.bits)),url:t.url}}static buildMasterNFT(t){let e=te(t);if(e){let i={id:e.id.id,pool_id:e.pool_id,index:Number(e.index),strategy:Number(e.strategy),tick_lower_index:$e(BigInt(e.tick_lower_index)),tick_upper_index:$e(BigInt(e.tick_upper_index)),positions:[],...Gn(t)};return i.positions=e.positions.map(n=>en.buildMasterPosition(n.fields)),i}}},Li=class{static generateNextTickRange(t,e,i){let n=t-e/2,r=t+e/2;return{new_tick_lower:Li.getValidTickIndex(n,i),new_tick_upper:Li.getValidTickIndex(r,i)}}static calculateDepositRatio(t,e,i){let n=ie.sqrtPriceX64ToTickIndex(i);if(n<t)return{ratioA:new U(1),ratioB:new U(0)};if(n>e)return{ratioA:new U(0),ratioB:new U(1)};let r=new bh.default(1e8),{coinAmountB:o}=ze.estLiquidityAndcoinAmountFromOneAmounts(t,e,r,!0,!0,0,i),s=ie.sqrtPriceX64ToPrice(i,0,0),a=M(r.toString()).mul(s),l=a.add(o.toString()),u=a.div(l),h=M(o.toString()).div(l);return{ratioA:u,ratioB:h}}static getValidTickIndex(t,e){if(t%e===0)return t;let i;if(t>0?i=t-t%e+e:t<0?i=t+Math.abs(t)%e-e:i=t,i%e!==0)throw new Error("Assertion failed: res % tickSpacing == 0");if(Math.abs(i)<Math.abs(t))throw new Error("Assertion failed: res.abs() >= tickIndex");return i}static get_lp_amount_by_liquidity(t,e){return t.total_supply==="0"?"0":M(t.total_supply).mul(e).div(t.liquidity).toFixed(0,U.ROUND_DOWN).toString()}static get_share_liquidity_by_amount(t,e){return t.total_supply==="0"?"0":M(e).mul(t.liquidity).div(t.total_supply).toFixed(0,U.ROUND_DOWN).toString()}static get_protocol_fee_amount(t,e){return M(e).mul(t.protocol_fee_rate).div(bw).toFixed(0,U.ROUND_CEIL)}static buildFramsPositionNFT(t){let e=t.clmm_postion.fields;return{id:t.id.id,url:e.url,pool_id:t.pool_id,coinTypeA:V(e.coin_type_a.fields.name).full_address,coinTypeB:V(e.coin_type_b.fields.name).full_address,description:e.description,name:e.name,liquidity:e.liquidity,clmm_position_id:e.id.id,clmm_pool_id:e.pool,tick_lower_index:$e(BigInt(e.tick_lower_index.fields.bits)),tick_upper_index:$e(BigInt(e.tick_upper_index.fields.bits)),rewards:[]}}static buildPool(t){let e=te(t),i=Ii(t),{positions:n}=e;if(e&&n.length>0){let r=Li.buildFramsPositionNFT(n[0].fields);return{id:e.id.id,pool_id:e.pool,protocol_fee_rate:e.protocol_fee_rate,is_pause:e.is_pause,harvest_assets:{harvest_assets_handle:e.harvest_assets.fields.id.id,size:Number(e.harvest_assets.fields.size)},lp_token_type:V(i).type_arguments[0],total_supply:e.lp_token_treasury.fields.total_supply.fields.value,liquidity:e.liquidity,max_quota:e.max_quota,status:e.status===1?"STATUS_RUNNING":"STATUS_REBALANCING",quota_based_type:e.quota_based_type.fields.name,position:r}}}},Js=class{static calculatePositionShare(t,e,i,n,r,o,s){if(e<=r||t>=o)return"0";let a=0;t<r?a=r:a=t;let l=0;e<o?l=e:l=o;let u=ie.tickIndexToSqrtPriceX64(a),h=ie.tickIndexToSqrtPriceX64(l),{coinA:y,coinB:v}=ze.getCoinAmountFromLiquidity(new _l.default(i),new _l.default(s),u,h,!0);return M(y.toString()).mul(n).div(1e12).add(v.toString()).toString()}static buildFramsPool(t){let e=te(t);if(e)try{let i=[];return e.rewarders.forEach(r=>{i.push({reward_coin:V(r.fields.name).full_address,last_reward_time:"",emission_per_second:"",total_allocate_point:"",allocate_point:""})}),{id:e.id.id,clmm_pool_id:e.clmm_pool_id,effective_tick_lower:$e(BigInt(e.effective_tick_lower.fields.bits)),effective_tick_upper:$e(BigInt(e.effective_tick_upper.fields.bits)),total_share:e.total_share,rewarders:i,positions:{positions_handle:e.positions.fields.id.id,size:e.positions.fields.size},sqrt_price:e.sqrt_price}}catch(i){console.log(i)}}static buildFramsPositionNFT(t){let e=te(t);if(e){let i=e.clmm_postion.fields;return{id:e.id.id,url:i.url,pool_id:e.pool_id,coinTypeA:V(i.coin_type_a.fields.name).full_address,coinTypeB:V(i.coin_type_b.fields.name).full_address,description:i.description,name:i.name,liquidity:i.liquidity,clmm_position_id:i.id.id,clmm_pool_id:i.pool,tick_lower_index:$e(BigInt(i.tick_lower_index.fields.bits)),tick_upper_index:$e(BigInt(i.tick_upper_index.fields.bits)),rewards:[]}}}},ww=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPoolImmutables(t="all",e=!1){let{package_id:i}=this._sdk.sdkOptions.ido,n=`${i}_getPoolImmutables`,r=this.getCache(n,e),o={data:[],hasNextPage:!1},s=[];if(r!==void 0&&s.push(...r),s.length===0)try{let a=await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${i}::oversubscribe_pool::CreatePoolEvent`},t);a.data.forEach(l=>{let u=l.parsedJson;if(u){let h=Zt.buildIdoPoolImmutables(u);s.push(h)}}),o.hasNextPage=a.hasNextPage,o.nextCursor=a.nextCursor,this.updateCache(n,s,X)}catch(a){console.log("getPoolImmutables",a)}return o.data=s,o}async getPools(t=[],e=!1){let i=[],n=[];t.length>0?n=[...t]:(await this.getPoolImmutables("all",e)).data.forEach(s=>{n.push(s.pool_address)});let r=await this._sdk.ClmmSDK.fullClient.batchGetObjects(n,{showType:!0,showContent:!0});for(let o of r){let s=Zt.buildIdoPool(o);await Zt.calculatePoolUiPrice(this._sdk,s),i.push(s);let a=`${s.pool_address}_getPoolObject`;this.updateCache(a,s,X)}return i}async getPool(t,e=!0){let i=`${t}_getPoolObject`,n=this.getCache(i,e);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),o=Zt.buildIdoPool(r);return await Zt.calculatePoolUiPrice(this._sdk,o),this.updateCache(i,o),o}async getIdoConfigs(t=!1){let{package_id:e}=this._sdk.sdkOptions.ido,i=`${e}_getInitEvent`,n=this.getCache(i,t);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=zn(r),s=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({Transaction:o}))?.data,a={pools_id:"",admin_cap_id:"",package_version_id:""};return s.length>0&&(s.forEach(l=>{console.log("item: ",l);let u=l.parsedJson;if(u)switch(V(l.type).full_address){case`${e}::config::InitConfigEvent`:a.admin_cap_id=u.admin_cap_id,a.package_version_id=u.package_version_id;break;case`${e}::factory::InitFactoryEvent`:a.pools_id=u.pools_id;break;default:break}}),this.updateCache(i,a,X)),a}async getPurchaseInfo(t,e,i=!0){let n=`${t}_${e}_getPurchaseInfo`,r=this.getCache(n,i);if(r)return r;try{let o=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"address",value:e}}),s=Zt.buildPurchaseInfo(te(o));return this.updateCache(n,s,He),s}catch{return}}async getLockNFT(t,e=!1){let i=`${t}_getLockNFT`,n=this.getCache(i,e);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}});if(!r.error)return Ji(r)}async getLockNFTList(t){let{clmm_pool:e}=this._sdk.ClmmSDK.sdkOptions,{ido:i}=this._sdk.sdkOptions,n=[];try{let r=(await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{filter:{StructType:`${i.package_id}::lock::LockedNFT<${e.package_id}::position::Position>`},options:{showContent:!0}}))?.data;for(let o of r){let s=te(o);if(s){let a=s.nft.fields,l={locked_at:Number(s.locked_at),lock_duration:Number(s.lock_duration),lock_nft_id:s.id.id,type:s.nft.type,...a};l.end_lock_time=l.locked_at+l.lock_duration,l.coin_type_a=V(a.coin_type_a.fields.name).full_address,l.coin_type_b=V(a.coin_type_b.fields.name).full_address,l.id=a.id.id,l.tick_lower_index=$e(BigInt(a.tick_lower_index.fields.bits)),l.tick_upper_index=$e(BigInt(a.tick_upper_index.fields.bits)),n.push(l)}}return n}catch(r){return console.log("getLockNFTList:",r),[]}}async creatPool(t){let{ido:e}=this.sdk.sdkOptions;Us((0,Ui.normalizeSuiAddress)(t.coin_type_sale),(0,Ui.normalizeSuiAddress)(t.coin_type_raise))&&(t.price_min=M(1).div(t.price_max).toNumber(),t.price_max=M(1).div(t.price_min).toNumber());let n=$i.priceRealToFix(Number(t.price),t.sale_decimals,t.raise_decimals),r=ie.priceToSqrtPriceX64(M(t.price_min),t.sale_decimals,t.raise_decimals).toString(),o=ie.priceToSqrtPriceX64(M(t.price_max),t.sale_decimals,t.raise_decimals).toString(),s=new oi.TransactionBlock,a=M(t.total_supply).add(M(t.total_supply).mul(M(t.liquidity_injection_ratio))).toNumber(),l=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress,t.coin_type_sale),u=oe.buildCoinForAmount(s,l,BigInt(a),t.coin_type_sale,!1),h=[s.pure(F(e).admin_cap_id),s.pure(F(e).package_version_id),s.pure(F(e).pools_id),s.pure((0,Ui.normalizeSuiAddress)(t.owner)),s.pure(M(n).mul(Dr).toString()),s.pure(t.total_supply),s.pure(t.complete_raise_limit),s.pure(t.min_purchase_amount),s.pure(t.max_purchase_amount),s.pure(t.start_time),s.pure(t.purchase_duration),s.pure(t.lock_up_duration),s.pure((t.liquidity_injection_ratio*_h).toString()),s.pure(r),s.pure(o),s.pure(t.tick_spacing.toString()),u.targetCoin,s.pure(t.protection_hard_cap.toString()),s.pure(z)],y=[t.coin_type_sale,t.coin_type_raise];return s.moveCall({target:`${e.published_at}::${pw}::create_oversubscribe_pool`,typeArguments:y,arguments:h}),s}async creatPurchasePayload(t){let{ido:e}=this.sdk.sdkOptions,i=new oi.TransactionBlock,n=await this.getPurchaseInfo(t.purchase_handle,this._sdk.ClmmSDK.senderAddress,!1),r=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress,t.coin_type_raise),o=oe.buildCoinForAmount(i,r,BigInt(t.raise_amount),t.coin_type_raise,!1),s=[t.coin_type_sale,t.coin_type_raise],a,l;return n?(l="purchase",a=[i.object(F(e).package_version_id),i.object(t.pool_address),i.object(n.purchase_certificate_id),i.pure(t.raise_amount.toString()),o.targetCoin,i.pure(z)]):(l="create_certificate_and_purchase",a=[i.object(F(e).package_version_id),i.object(t.pool_address),i.pure(t.raise_amount.toString()),o.targetCoin,i.pure(z)]),i.moveCall({target:`${e.published_at}::${fi}::${l}`,typeArguments:s,arguments:a}),i}async redeemPayload(t){let{ido:e}=this.sdk.sdkOptions,i=await this.getPurchaseInfo(t.purchase_handle,this._sdk.ClmmSDK.senderAddress,!1);if(i===void 0)throw Error("get purchase certificate fail");let n=new oi.TransactionBlock,r=[t.coin_type_sale,t.coin_type_raise],o=[n.pure(F(e).package_version_id),n.pure(t.pool_address),n.pure(i.purchase_certificate_id),n.pure(z)];return n.moveCall({target:`${e.published_at}::${fi}::redeem`,typeArguments:r,arguments:o}),n}injectLiquidityPayload(t){let{ido:e}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions,n=new oi.TransactionBlock,r=[t.coin_type_sale,t.coin_type_raise],o=t.is_reverse?"inject_liquidity_with_reverse_clmm_pool":"inject_liquidity_with_forward_clmm_pool",s=[n.pure(F(e).package_version_id),n.pure(t.pool_address),n.pure(F(i).global_config_id),n.pure(t.clmm_pool_address),n.pure(z)];return n.moveCall({target:`${e.published_at}::${fi}::${o}`,typeArguments:r,arguments:s}),n}unPauseInjectLiquidity(t){let{ido:e}=this.sdk.sdkOptions,{integrate:i,clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions,r=new oi.TransactionBlock;r.moveCall({target:`${i.published_at}::${Tr}::unpause_pool`,typeArguments:[t.coin_type_a,t.coin_type_b],arguments:[r.object(F(n).global_config_id),r.object(t.clmm_pool_address)]});let o=[t.coin_type_sale,t.coin_type_raise],s=t.is_reverse?"inject_liquidity_with_reverse_clmm_pool":"inject_liquidity_with_forward_clmm_pool",a=[r.object(F(e).package_version_id),r.object(t.pool_address),r.object(F(n).global_config_id),r.object(t.clmm_pool_address),r.object(z)];return r.moveCall({target:`${e.published_at}::${fi}::${s}`,typeArguments:o,arguments:a}),r}async findClmmPoolForLiquidity(t){let e=null,i=!1,n=await this.sdk.ClmmSDK.Pool.getPoolImmutables();for(let r of n){if(r.coinTypeA===t.coin_type_sale&&r.coinTypeB===t.coin_type_raise&&Number(r.tickSpacing)===t.tick_spacing){e=await this._sdk.ClmmSDK.Pool.getPool(r.poolAddress);break}if(r.coinTypeA===t.coin_type_raise&&r.coinTypeB===t.coin_type_sale&&Number(r.tickSpacing)===t.tick_spacing){e=await this._sdk.ClmmSDK.Pool.getPool(r.poolAddress),i=!0;break}}return e&&(M(e.current_sqrt_price).lessThanOrEqualTo(t.current_sqrt_price_min)||M(e.current_sqrt_price).greaterThanOrEqualTo(t.current_sqrt_price_max))?(console.log("clmmPool: ",e.poolAddress),{is_reverse:i,clmmPool:null}):{is_reverse:i,clmmPool:e}}withdrawPayload(t){let{ido:e}=this.sdk.sdkOptions,i=new oi.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise],r=[i.object(F(e).package_version_id),i.object(t.pool_address),i.object(z)];return i.moveCall({target:`${e.published_at}::${fi}::withdraw`,typeArguments:n,arguments:r}),i}updateWhitelistCapPayload(t){let{ido:e}=this.sdk.sdkOptions,i=new oi.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise];return t.add_whites&&t.add_whites.addresses.length>0&&i.moveCall({target:`${e.published_at}::${fi}::add_white_listed_addresses`,typeArguments:n,arguments:[i.object(F(e).admin_cap_id),i.object(F(e).package_version_id),i.object(t.pool_address),i.makeMoveVec({type:"address",objects:t.add_whites.addresses.map(r=>i.object((0,Ui.normalizeSuiObjectId)(r)))}),i.pure(t.add_whites.protection_limit),i.object(z)]}),t.remove_whites&&t.remove_whites.length>0&&i.moveCall({target:`${e.published_at}::${fi}::remove_white_listed_addresses`,typeArguments:n,arguments:[i.object(F(e).admin_cap_id),i.object(F(e).package_version_id),i.object(t.pool_address),i.makeMoveVec({type:"address",objects:t.remove_whites.map(r=>i.object((0,Ui.normalizeSuiObjectId)(r)))}),i.object(z)]}),t.update_whites&&t.update_whites.forEach(r=>{i.moveCall({target:`${e.published_at}::${fi}::update_white_listed_address`,typeArguments:n,arguments:[i.object(F(e).admin_cap_id),i.object(F(e).package_version_id),i.object(t.pool_address),i.object(r.address),i.pure(r.protection_limit),i.object(z)]})}),i}creatCancelPoolPayload(t){let{ido:e}=this.sdk.sdkOptions,i=new oi.TransactionBlock,n=[t.coin_type_sale,t.coin_type_raise],r=[i.pure(F(e).admin_cap_id),i.pure(F(e).package_version_id),i.pure(t.pool_address),i.pure(z)];return i.moveCall({target:`${e.published_at}::${fi}::cancel`,typeArguments:n,arguments:r}),i}updatePoolOwnerPayload(t,e){let{ido:i}=this.sdk.sdkOptions;e=e===void 0?new oi.TransactionBlock:e;let n=[t.coin_type_sale,t.coin_type_raise],r=[e.object(F(i).admin_cap_id),e.object(F(i).package_version_id),e.object(t.pool_address),e.object(t.new_owner),e.object(z)];return e.moveCall({target:`${i.published_at}::${fi}::update_pool_owner`,typeArguments:n,arguments:r}),e}updatePoolDuractionPayload(t,e){let{ido:i}=this.sdk.sdkOptions;e=e===void 0?new oi.TransactionBlock:e;let n=[t.coin_type_sale,t.coin_type_raise],r=[e.object(F(i).admin_cap_id),e.object(F(i).package_version_id),e.object(t.pool_address),e.pure(t.start_time),e.pure(t.purchase_duration),e.pure(t.lock_duration),e.object(z)];return e.moveCall({target:`${i.published_at}::${fi}::update_pool_duration`,typeArguments:n,arguments:r}),e}updateProtectionHardCapPayload(t,e){let{ido:i}=this.sdk.sdkOptions;e=e===void 0?new oi.TransactionBlock:e;let n=[t.coin_type_sale,t.coin_type_raise],r=[e.object(F(i).admin_cap_id),e.object(F(i).package_version_id),e.object(t.pool_address),e.pure(t.protection_hard_cap),e.object(z)];return e.moveCall({target:`${i.published_at}::${fi}::update_protection_hard_cap`,typeArguments:n,arguments:r}),e}unlockNftPayload(t){let{ido:e}=this.sdk.sdkOptions,i=new oi.TransactionBlock,n=[t.nft_type],r=[i.pure(t.lock_nft_id),i.pure(z)];return i.moveCall({target:`${e.published_at}::lock::unlock_nft`,typeArguments:n,arguments:r}),i}async isAdminCap(t){let{ido:e}=this._sdk.sdkOptions,i=`${e.package_id}_${t}_isAdminCap`,n=this.getCache(i);if(n)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:F(e).admin_cap_id,options:{showType:!0,showOwner:!0}});console.log(r);let o=Ii(r),s=Ir(r),a=!1;return s&&o&&V(o).source_address===`${e.package_id}::config::AdminCap`&&(a=(0,Ui.normalizeSuiAddress)(s.AddressOwner)===(0,Ui.normalizeSuiAddress)(t)),this.updateCache(i,a,X),a}async getWhiteProtectionLimit(t,e,i=!0){let n=`${t}_${e}_getWhiteProtectionLimit`,r=this._sdk.getCache(n,i);if(r)return r;try{let o=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"address",value:e}});if(o&&o.data){let s=te(o);return this._sdk.updateCache(n,s.value),s.value}return}catch{return}}async getWhiteList(t,e){let i={type:"address",value:e};try{let n=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:i}),r=te(n);if(console.log(r),r)return r?.value?.fields}catch{}return{safe_limit_amount:"0",safe_purchased_amount:"0"}}async getAdminAddress(){let{ido:t}=this._sdk.sdkOptions,e=`${F(t).admin_cap_id}_getAdminAddress`,i=this.getCache(e);if(i)return i;let n=await this._sdk.ClmmSDK.fullClient.getObject({id:F(t).admin_cap_id,options:{showType:!0,showOwner:!0}});console.log(n);let r=Ii(n),o=Ir(n);if(o&&r&&V(r).source_address===`${t.package_id}::config::AdminCap`){let a=(0,Ui.normalizeSuiAddress)(o.AddressOwner);return this.updateCache(e,a,X),a}return""}updateCache(t,e,i=X){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t];if(!e&&i?.isValid())return i.value;delete this._cache[t]}},vw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getOwnerVeNFT(t,e=!0){let{xtoken:i}=this.sdk.sdkOptions,n=`${t}_getLockUpManagerEvent`,r=this.getCache(n,e);if(r!==void 0)return r;let o,s=`${i.package_id}::xtoken::VeNFT`;return(await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0,showDisplay:!0},filter:{StructType:s}})).data.forEach(l=>{let u=V(Ut(l)).source_address;if(u===s&&l.data&&l.data.content){let{fields:h}=l.data.content;o={...Gn(l),id:h.id.id,index:h.index,type:u,xtoken_balance:h.xtoken_balance},this.updateCache(n,o,X)}}),o}async getOwnerLockTokens(t){let{xtoken:e}=this.sdk.sdkOptions,i=[],n=`${e.package_id}::lock_coin::LockedCoin<${this.buileTokenCoinType()}>`,r=await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0},filter:{StructType:n}});for(let o of r.data)if(V(Ut(o)).source_address===n&&o.data){let a=Jn.buildLockToken(o.data.content),l=await this.getLockXToken(a.id);l&&(a.xtoken_amount=l.xtoken_amount),i.push(a)}return i}async getLockToken(t){let e=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0}});if(e.data?.content){let i=Jn.buildLockToken(e.data.content),n=await this.getLockXToken(i.id);return n&&(i.xtoken_amount=n.xtoken_amount),i}}async getOwnerTokenCoins(t){return await this._sdk.ClmmSDK.getOwnerCoinAssets(t,this.buileTokenCoinType())}mintVeNFTPayload(){let{xtoken:t}=this.sdk.sdkOptions,e=new Qi.TransactionBlock;return e.moveCall({target:`${t.published_at}::${Pr}::mint_venft`,typeArguments:[],arguments:[e.pure(F(t).xtoken_manager_id)]}),e}async convertPayload(t){let{xtoken:e}=this.sdk.sdkOptions,i=new Qi.TransactionBlock,n=this.buileTokenCoinType(),r=await oe.syncBuildCoinInputForAmount(this._sdk.ClmmSDK,i,BigInt(t.amount),n);return t.venft_id===void 0?i.moveCall({target:`${e.published_at}::${Pr}::mint_and_convert`,typeArguments:[],arguments:[i.object(F(e).lock_manager_id),i.object(F(e).xtoken_manager_id),r,i.pure(t.amount)]}):i.moveCall({target:`${e.published_at}::${Pr}::convert`,typeArguments:[],arguments:[i.object(F(e).lock_manager_id),i.object(F(e).xtoken_manager_id),r,i.pure(t.amount),i.pure(t.venft_id)]}),i}redeemLockPayload(t){let{xtoken:e}=this.sdk.sdkOptions,i=new Qi.TransactionBlock;return i.moveCall({target:`${e.published_at}::${Pr}::redeem_lock`,typeArguments:[],arguments:[i.pure(F(e).lock_manager_id),i.pure(F(e).xtoken_manager_id),i.pure(t.venft_id),i.pure(t.amount),i.pure(t.lock_day),i.pure(z)]}),i}redeemPayload(t){let{xtoken:e}=this.sdk.sdkOptions,i=new Qi.TransactionBlock;return i.moveCall({target:`${e.published_at}::${Pr}::redeem`,typeArguments:[],arguments:[i.pure(F(e).lock_manager_id),i.pure(F(e).xtoken_manager_id),i.pure(t.venft_id),i.pure(t.lock_id),i.pure(z)]}),i}redeemDividendPayload(t,e){let{xtoken_dividends:i}=this.sdk.sdkOptions,n=new Qi.TransactionBlock;return e.forEach(r=>{n.moveCall({target:`${i.published_at}::${pl}::redeem`,typeArguments:[r],arguments:[n.object(F(i).dividend_manager_id),n.object(t)]})}),n}redeemDividendV2Payload(t,e,i){let{xtoken_dividends:n}=this.sdk.sdkOptions,r=new Qi.TransactionBlock;return e.filter(s=>i.includes(s)).length>0&&(r=this.redeemDividendXTokenPayload(t,r)),e.forEach(s=>{i.includes(s)||r.moveCall({target:`${n.published_at}::${pl}::redeem_v2`,typeArguments:[s],arguments:[r.object(F(n).dividend_manager_id),r.object(t),r.object(z)]})}),r}redeemDividendXTokenPayload(t,e){let{xtoken_dividends:i,xtoken:n}=this.sdk.sdkOptions,{xtoken_manager_id:r,lock_manager_id:o}=F(n),{dividend_manager_id:s}=F(i);return e=e===void 0?new Qi.TransactionBlock:e,e.moveCall({target:`${i.published_at}::${pl}::redeem_xtoken`,typeArguments:[],arguments:[e.object(o),e.object(r),e.object(s),e.object(t),e.object(z)]}),e}buileTokenCoinType(){return`${this.sdk.sdkOptions.token_faucet.package_id}::token::TOKEN`}buileXTokenCoinType(t=this._sdk.sdkOptions.xtoken.package_id,e="xtoken",i="XTOKEN"){return`${t}::${e}::${i}`}cancelRedeemPayload(t){let{xtoken:e}=this.sdk.sdkOptions,i=new Qi.TransactionBlock;return i.moveCall({target:`${e.published_at}::${Pr}::cancel_redeem_lock`,typeArguments:[],arguments:[i.pure(F(e).lock_manager_id),i.pure(F(e).xtoken_manager_id),i.pure(t.venft_id),i.pure(t.lock_id),i.pure(z)]}),i}async getInitConfigs(){let{package_id:t}=this.sdk.sdkOptions.xtoken,e=`${t}_getInitFactoryEvent`,i=this.getCache(e);if(i!==void 0)return i;let n=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::xtoken::InitEvent`}))?.data,r={xtoken_manager_id:"",lock_manager_id:"",lock_handle_id:""};n.length>0&&n.forEach(s=>{let a=s.parsedJson;a&&(r.xtoken_manager_id=a.xtoken_manager)});let o=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::locking::InitializeEvent`}))?.data;return o.length>0&&o.forEach(s=>{let a=s.parsedJson;a&&(r.lock_manager_id=a.lock_manager)}),r.lock_handle_id=(await this.getLockUpManager(r.lock_manager_id)).lock_infos.lock_handle_id,this.updateCache(e,r,X),r}async getLockUpManager(t=F(this.sdk.sdkOptions.xtoken).lock_manager_id,e=!1){let i=`${t}_getLockUpManagerEvent`,n=this.getCache(i,e);if(n!==void 0)return n;let r=await this.sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),o=Jn.buildLockUpManager(te(r));return this.updateCache(i,o,X),o}async getLockInfoHandle(t){let e=`${t}_getLockInfoHandle`,i=this.getCache(e);if(i!==void 0)return i;let n="",r=await this.sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),o=te(r);return o&&(n=o.lock_infos.fields.id.id,this.updateCache(e,n,X)),n}async getDividendConfigs(){let{package_id:t}=this.sdk.sdkOptions.xtoken_dividends,e=`${t}_getDividendManagerEvent`,i=this.getCache(e);if(i!==void 0)return i;let n=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::dividend::InitEvent`}))?.data,r={dividend_manager_id:"",dividend_admin_id:"",dividend_settle_id:""};return n.length>0&&n.forEach(o=>{let s=o.parsedJson;s&&(r.dividend_manager_id=s.manager_id,r.dividend_admin_id=s.admin_id,r.dividend_settle_id=s.settle_id,this.updateCache(e,r,X))}),r}async getDividendManager(t=!1){let{dividend_manager_id:e}=F(this.sdk.sdkOptions.xtoken_dividends),i=`${e}_getDividendManager`,n=this.getCache(i,t);if(n!==void 0)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0}}),o=te(r),s=Jn.buildDividendManager(o);return this.updateCache(i,s,X),s}async getXcetusManager(t=!0){let{xtoken_manager_id:e}=F(this.sdk.sdkOptions.xtoken),i=`${e}_getXcetusManager`,n=this.getCache(i,t);if(n)return n;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0}}),o=te(r),s={id:o.id.id,index:Number(o.index),has_venft:{handle:o.has_venft.fields.id.id,size:o.has_venft.fields.size},nfts:{handle:o.nfts.fields.id.id,size:o.nfts.fields.size},total_locked:o.total_locked,treasury:o.treasury.fields.total_supply.fields.value};return this.updateCache(i,s),s}async getVeNFTDividendInfo(t,e){try{let i=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),n=te(i);return Jn.buildVeNFTDividendInfo(n)}catch{return}}async redeemNum(t,e){if(BigInt(t)===BigInt(0))return{amountOut:"0",percent:"0"};let i=await this.getLockUpManager(),n=M(hi).mul(M(i.max_lock_day).sub(M(e))).mul(M(i.max_percent_numerator).sub(M(i.min_percent_numerator))).div(M(i.max_lock_day).sub(M(i.min_lock_day))),r=M(hi).mul(M(i.max_percent_numerator)).sub(n).div(M(ta)).div(hi);return{amountOut:M(r).mul(M(t)).round().toString(),percent:r.toString()}}async reverseRedeemNum(t,e){if(BigInt(t)===BigInt(0))return{amountOut:"0",percent:"0"};let i=await this.getLockUpManager(),n=M(hi).mul(M(i.max_lock_day).sub(M(e))).mul(M(i.max_percent_numerator).sub(M(i.min_percent_numerator))).div(M(i.max_lock_day).sub(M(i.min_lock_day))),r=M(hi).mul(M(i.max_percent_numerator)).sub(n).div(M(ta)).div(hi);return{amountOut:M(t).div(r).toFixed(0,U.ROUND_UP),percent:r.toString()}}async getLockXToken(t){let{lock_handle_id:e}=F(this._sdk.sdkOptions.xtoken),i=`${t}_getXTokenAmount`,n=this.getCache(i);if(n)return n;try{let r=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:e,name:{type:"0x2::object::ID",value:t}}),o=te(r);if(o){let s=o.value.fields.value.fields;return this.updateCache(i,s,X),s}}catch{}}async getVeNftAmount(t,e){try{let i=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),n=te(i);if(n){let{lock_amount:r,xtoken_amount:o}=n.value.fields.value.fields;return{lock_amount:r,xtoken_amount:o}}}catch{}return{lock_amount:"0",xtoken_amount:"0"}}async getPhaseDividendInfo(t,e=!1){let n=(await this.getDividendManager()).dividends.id,r=`${n}_${t}_getPhaseDividendInfo`,o=this._sdk.getCache(r,e);if(o)return o;try{let s=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:n,name:{type:"u64",value:t}}),a=te(s),l=a.value.fields.value.fields,u=l.redeemed_num.fields.contents.map(T=>({name:T.fields.key.fields.name,value:T.fields.value})),h=l.bonus_types.map(T=>T.fields.name),y=l.bonus.fields.contents.map(T=>({name:T.fields.key.fields.name,value:T.fields.value})),v={id:Ht(s),phase:a.name,settled_num:l.settled_num,register_time:l.register_time,redeemed_num:u,is_settled:l.is_settled,bonus_types:h,bonus:y,phase_end_time:""};return this.updateCache(r,v),v}catch{}}updateCache(t,e,i=He){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t];if(!e&&i?.isValid())return i.value;delete this._cache[t]}},kw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async addMasterLiquidity(t){let{liquidity_stratefy:e}=this._sdk.sdkOptions,{clmm_pool:i}=this._sdk.ClmmSDK.sdkOptions,n=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress),r=M(0),o=M(0),s=[],a=[],l=[],u=[],h=[];t.liquidity_bins.forEach((P,j)=>{let B=t.amounts_a[j],D=t.amounts_b[j],q=t.bins_fix_amount_a[j];r=r.add(B),o=o.add(D),s.push(B),a.push(D),l.push(Pt(BigInt(P.tick_lower)).toString()),u.push(Pt(BigInt(P.tick_upper)).toString()),h.push(q)});let y=[t.coinTypeA,t.coinTypeB],v=new Hn.TransactionBlock,T=oe.buildAddLiquidityFixTokenCoinInput(v,!t.fix_amount_a,r.toString(),t.slippage,t.coinTypeA,n,!1)?.targetCoin,O=oe.buildAddLiquidityFixTokenCoinInput(v,t.fix_amount_a,o.toString(),t.slippage,t.coinTypeB,n,!1)?.targetCoin;return mw(t)?v.moveCall({target:`${e.published_at}::router::increase_liquidity`,typeArguments:y,arguments:[v.object(F(e).master_manger_id),v.object(t.master_address),v.object(F(i).global_config_id),v.object(t.pool_address),T,O,v.pure(s.map(P=>v.pure(P,"u64"))),v.pure(a.map(P=>v.pure(P,"u64"))),v.pure(h.map(P=>v.pure(P,"bool"))),v.object(z)]}):v.moveCall({target:`${e.published_at}::router::create_master_liquidity`,typeArguments:y,arguments:[v.object(F(e).master_manger_id),v.object(F(i).global_config_id),v.object(t.pool_address),T,O,v.pure(l.map(P=>v.pure(P,"u32"))),v.pure(u.map(P=>v.pure(P,"u32"))),v.pure(s.map(P=>v.pure(P,"u64"))),v.pure(a.map(P=>v.pure(P,"u64"))),v.pure(h.map(P=>v.pure(P,"bool"))),v.pure(t.strategy),v.pure(Pt(BigInt(t.tick_lower)).toString()),v.pure(Pt(BigInt(t.tick_upper)).toString()),v.object(z)]}),v}buildMasterNFTType(){return`${this._sdk.sdkOptions.liquidity_stratefy.package_id}::master_liquidity::MasterLiquidity`}async getMasterNFTList(t,e=[]){let i=[],n=await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0},filter:{Package:this._sdk.sdkOptions.liquidity_stratefy.package_id}}),r=e.length>0;for(let o of n.data)if(V(o.data.type).full_address===this.buildMasterNFTType()){let a=en.buildMasterNFT(o);if(a){let l=`${a.id}_masterNFT`;this.updateCache(l,a,X),r?e.includes(a.pool_id)&&i.push(a):i.push(a)}}return i}async getMasterNFT(t,e=!1){let i="$masterId}_masterNFT",n=this.getCache(i,e);if(n)return n;try{let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}});if(V(r.data.type).full_address===this.buildMasterNFTType()){let s=en.buildMasterNFT(r);return s&&this.updateCache(i,s,X),s}}catch(r){console.log(r)}}async fetchMasterPositionInfos(t){let e={},{clmm_pool:i,integrate:n,simulationAccount:r}=this.sdk.ClmmSDK.sdkOptions,o=new Hn.TransactionBlock;return t.forEach(a=>{a.position_ids.forEach(l=>{let u=[a.coinTypeA,a.coinTypeB],h=[o.object(F(i).global_config_id),o.object(a.pool_id),o.object(l)];o.moveCall({target:`${n.published_at}::${Jt}::fetch_position_fees`,arguments:h,typeArguments:u}),o.moveCall({target:`${n.published_at}::${Jt}::fetch_position_rewards`,arguments:[...h,o.object(z)],typeArguments:u})})}),(await this.sdk.ClmmSDK.fullClient.devInspectTransactionBlock({transactionBlock:o,sender:r.address})).events?.forEach(a=>{let{parsedJson:l}=a,{position_id:u}=l,h=e[u];switch(h===void 0&&(h={position_id:u,feeOwedA:"0",feeOwedB:"0",rewarders:[]},e[u]=h),V(a.type).name){case"FetchPositionFeesEvent":h.feeOwedA=l.fee_owned_a,h.feeOwedB=l.fee_owned_b;break;case"FetchPositionRewardsEvent":h.rewarders=l.data;break}}),e}async getLiquidityStrategyConfigs(t=!1){let{package_id:e}=this._sdk.sdkOptions.liquidity_stratefy,i=`${e}_getLiquidityStrategyConfigst`,n=this.getCache(i,t);if(n!==void 0)return n;let r=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${e}::master_liquidity::MasterLiquidityManagerCreatedEvent`})).data,o={master_manger_id:"",master_liquidity_handle:""};if(r.length>0){for(let s of r){let a=s.parsedJson;o.master_manger_id=a.id;let l=await this._sdk.ClmmSDK.fullClient.getObject({id:a.id,options:{showContent:!0}}),u=te(l);o.master_liquidity_handle=u.position_maps.fields.id.id;break}this.updateCache(i,o,X)}return o}removeMasterLiquidity(t){let{clmm_pool:e}=this.sdk.ClmmSDK.sdkOptions,{liquidity_stratefy:i}=this.sdk.sdkOptions,n=new Hn.TransactionBlock,r=[t.coinTypeA,t.coinTypeB];this.collectReward({coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,collect_fee:!1,rewarder_coin_types:t.rewarder_coin_types,master_address:t.master_address,pool_address:t.pool_address},n);let o=[n.object(F(i).master_manger_id),n.object(t.pool_address),n.object(t.master_address),n.object(F(e).global_config_id),n.pure(t.delta_liquidities.map(s=>n.pure(s,"u128"))),n.pure(t.min_amounts_a.map(s=>n.pure(s,"u64"))),n.pure(t.min_amounts_b.map(s=>n.pure(s,"u64"))),n.object(z)];return n.moveCall({target:`${i.published_at}::${Xs}::remove_liquidity`,typeArguments:r,arguments:o}),n}closeMasterLiquidity(t){let{clmm_pool:e}=this.sdk.ClmmSDK.sdkOptions,{liquidity_stratefy:i}=this.sdk.sdkOptions,n=new Hn.TransactionBlock,r=[t.coinTypeA,t.coinTypeB];return this.collectReward({coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,collect_fee:!1,rewarder_coin_types:t.rewarder_coin_types,master_address:t.master_address,pool_address:t.pool_address},n),n.moveCall({target:`${i.published_at}::${Xs}::close_master_liquidity`,typeArguments:r,arguments:[n.object(F(i).master_manger_id),n.object(t.master_address),n.object(F(e).global_config_id),n.object(t.pool_address),n.pure(t.min_amounts_a.map(o=>n.pure(o,"u64"))),n.pure(t.min_amounts_b.map(o=>n.pure(o,"u64"))),n.object(z)]}),n}collectFee(t,e){let{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions,{liquidity_stratefy:n}=this.sdk.sdkOptions;e=e===void 0?new Hn.TransactionBlock:e;let r=[t.coinTypeA,t.coinTypeB],o=[e.object(F(n).master_manger_id),e.object(t.master_address),e.object(F(i).global_config_id),e.object(t.pool_address)];return e.moveCall({target:`${n.published_at}::${Xs}::collect_fee`,typeArguments:r,arguments:o}),e}collectReward(t,e){let{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions,{liquidity_stratefy:n}=this.sdk.sdkOptions;return e=e===void 0?new Hn.TransactionBlock:e,t.collect_fee&&this.collectFee({...t},e),t.rewarder_coin_types.forEach(r=>{let o=[t.coinTypeA,t.coinTypeB,r];if(e){let s=[e.object(F(n).master_manger_id),e.object(t.master_address),e.object(F(i).global_config_id),e.object(t.pool_address),e.object(F(i).global_vault_id),e.object(z)];e.moveCall({target:`${n.published_at}::${Xs}::collect_reward`,typeArguments:o,arguments:s})}}),e}updateCache(t,e,i=He){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t],n=i?.isValid();if(!e&&n)return i.value;n||delete this._cache[t]}},Cw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}buildCoinInput(t,e,i,n,r){let{selectedCoins:o,remainingCoins:s}=Ce.selectCoinAssetGreaterThanOrEqual(e,BigInt(n)),a=Ce.calculateTotalBalance(o);if(a<BigInt(n))throw new Error(`The amount(${a}) is Insufficient balance for ${i} , expect ${n} `);let l=a-BigInt(n),u;if(Ce.isSuiCoin(i))u=t.splitCoins(t.gas,[t.pure(n)]);else{let[h,...y]=o.map(v=>v.coinObjectId);u=t.object(h),y.length>0?r?t.mergeCoins(u,[...y.map(v=>t.object(v)),r]):t.mergeCoins(u,[...y.map(v=>t.object(v))]):r&&t.mergeCoins(u,[r])}return{selectedUnusedAmount:l,coinInput:u,remainingCoins:s}}async deposit(t){console.log("1110 deposit \u53C2\u6570: ",{params:t});let{vaults:e,frams:i}=this._sdk.sdkOptions,{clmm_pool:n}=this._sdk.ClmmSDK.sdkOptions,r=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.getVerifySenderAddress()),o=new Zn.TransactionBlock,s,a;if(t.swapParams){let y=await this.handleDepositSwap(t,o,r);s=y.primaryCoinAInputs,a=y.primaryCoinBInputs}else s=oe.buildAddLiquidityFixTokenCoinInput(o,!t.fix_amount_a,t.amount_a,t.slippage,t.coinTypeA,r,!1)?.targetCoin,a=oe.buildAddLiquidityFixTokenCoinInput(o,t.fix_amount_a,t.amount_b,t.slippage,t.coinTypeB,r,!1)?.targetCoin;let l=F(e),u=F(i),h=F(n);return o.moveCall({target:`${e.published_at}::${gw}::deposit`,typeArguments:[t.coinTypeA,t.coinTypeB,t.lp_token_type],arguments:[o.object(l.vaults_manager_id),o.object(t.vault_id),o.object(u.rewarder_manager_id),o.object(u.global_config_id),o.object(t.farming_pool),o.object(h.global_config_id),o.object(t.clmm_pool),s,a,o.pure(t.amount_a),o.pure(t.amount_b),o.pure(t.fix_amount_a),o.object(z)]}),o}async handleDepositSwap(t,e,i){let{clmm_pool:n,integrate:r}=this._sdk.ClmmSDK.sdkOptions,{swap_amount:o,a2b:s,route_obj:a,staking_id:l}=t.swapParams,u=s?t.coinTypeA:t.coinTypeB,h=oe.buildCoinForAmount(e,i,BigInt(o),u,!1),y=BigInt(h.tragetCoinAmount)-BigInt(o),v=[];if(l){let B=this.requestStakeCoin(l,e,h.targetCoin),D=oe.buildCoinForAmount(e,h.remainCoins,BigInt(0),u,!1).targetCoin;v=s?[D,B]:[B,D]}else if(a){let B=oe.buildCoinForAmount(e,i,0n,s?t.coinTypeB:t.coinTypeA,!1),D=await oe.buildAggregatorSwapReturnCoins(this._sdk.ClmmSDK,a,h,B,"",t.slippage,e);v=s?[D.fromCoin,D.toCoin]:[D.toCoin,D.fromCoin],console.log("swapCoinInputTo.isMintZeroCoin: ",B),!B.isMintZeroCoin&&B.originalSplitedCoin===void 0&&e.transferObjects([B.targetCoin],e.pure(this._sdk.getVerifySenderAddress()))}else{let B=oe.buildCoinForAmount(e,i,0n,s?t.coinTypeB:t.coinTypeA,!1),D=Ai.getDefaultSqrtPriceLimit(s).toString();v=e.moveCall({target:`${r.published_at}::${_n}::swap`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(F(n).global_config_id),e.object(t.clmm_pool),s?h.targetCoin:B.targetCoin,s?B.targetCoin:h.targetCoin,e.pure(s),e.pure(!0),e.pure(o),e.pure(D),e.pure(!1),e.object(z)]})}let T,O,P=v[0],j=v[1];if(s){let B=BigInt(t.amount_a)-y;Ce.isSuiCoin(u)?(e.transferObjects([P],e.pure(this._sdk.getVerifySenderAddress())),T=e.splitCoins(e.gas,[e.pure(t.amount_a)])):B>0n?T=this.buildCoinInput(e,h.remainCoins,u,B,P).coinInput:T=P,O=j}else{T=P;let B=BigInt(t.amount_b)-y;Ce.isSuiCoin(u)?(e.transferObjects([j],e.pure(this._sdk.getVerifySenderAddress())),O=e.splitCoins(e.gas,[e.pure(t.amount_b)])):B>0n?O=this.buildCoinInput(e,h.remainCoins,u,B,j).coinInput:O=j}return{primaryCoinAInputs:T,primaryCoinBInputs:O}}async remove(t){console.log({params:t});let{vaults:e,frams:i}=this.sdk.sdkOptions,{clmm_pool:n,integrate:r}=this._sdk.ClmmSDK.sdkOptions,o=new Zn.TransactionBlock,s=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.getVerifySenderAddress(),t.lp_token_type),a=oe.buildCoinForAmount(o,s,BigInt(t.lp_token_amount),t.lp_token_type,!1).targetCoin,l=F(e),u=F(i),h=F(n),y=[t.coinTypeA,t.coinTypeB,t.lp_token_type],v=o.moveCall({target:`${e.published_at}::${_w}::remove`,typeArguments:y,arguments:[o.object(l.vaults_manager_id),o.object(t.vault_id),o.object(u.rewarder_manager_id),o.object(u.global_config_id),o.object(t.farming_pool),o.object(h.global_config_id),o.object(t.clmm_pool),a,o.pure(t.lp_token_amount),o.pure(t.min_amount_a),o.pure(t.min_amount_b),o.object(z)]}),T=v[0],O=v[1];if(t.swapParams){let{a2b:P,swap_amount:j,route_obj:B}=t.swapParams;if(B){let D={targetCoin:P?T:O,remainCoins:[],isMintZeroCoin:!1,tragetCoinAmount:""},q={targetCoin:P?O:T,remainCoins:[],isMintZeroCoin:!1,tragetCoinAmount:""},K=await oe.buildAggregatorSwapReturnCoins(this._sdk.ClmmSDK,B,D,q,"",t.slippage,o),Z=P?[K.fromCoin,K.toCoin]:[K.toCoin,K.fromCoin];P?o.mergeCoins(Z[1],[O]):o.mergeCoins(Z[0],[T]),o.transferObjects([...Z],o.pure(this._sdk.getVerifySenderAddress()))}else{let D=Ai.getDefaultSqrtPriceLimit(P).toString(),q=o.moveCall({target:`${r.published_at}::${_n}::swap`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[o.object(F(n).global_config_id),o.object(t.clmm_pool),T,O,o.pure(P),o.pure(!0),o.pure(j),o.pure(D),o.pure(!0),o.object(z)]});o.transferObjects([q[0],q[1]],o.pure(this._sdk.getVerifySenderAddress()))}}else o.transferObjects([T,O],o.pure(this._sdk.getVerifySenderAddress()));return o}async getVaultList(t="all"){let{vaults:e}=this._sdk.sdkOptions,i=await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${e.package_id}::vaults::CreateEvent`},t),n=i.data.map(s=>s.parsedJson.id),r=await this._sdk.ClmmSDK.fullClient.batchGetObjects(n,{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}),o=[];return r.forEach(s=>{let a=Li.buildPool(s);a&&(a.staking_id=this.findHaedalStakeId(a.position.coinTypeA,a.position.coinTypeB),this.savePoolToCache(a),o.push(a))}),i.data=o,i}findHaedalStakeId(t,e){let{haedal:i}=this._sdk.sdkOptions,{support_stakings:n}=F(i);return n.length===0?void 0:n.filter(o=>{let s=V(o.from_coin_type).full_address,a=V(o.to_coin_type).full_address,l=V(t).full_address,u=V(e).full_address;return l===s&&u===a||l===a&&u===s})[0]?.staking_id||void 0}savePoolToCache(t){let e=`${t.id}_mirrorPool`;this.updateCache(e,t,X)}readPoolFromCache(t,e=!1){let i=`${t}_mirrorPool`;return this.getCache(i,e)}async calculateMaxAvailable(t){let{integrate:e,simulationAccount:i}=this.sdk.ClmmSDK.sdkOptions,n=new Zn.TransactionBlock,r=ie.tickIndexToSqrtPriceX64(t.lowerTick),o=ie.tickIndexToSqrtPriceX64(t.upperTick),s=new Ee.default(t.curSqrtPrice),a=ze.getCoinAmountFromLiquidity(new Ee.default(t.input_amount),s,r,o,!1),l=[t.coinTypeA,t.coinTypeB];n.moveCall({target:`${e.published_at}::${Jt}::calculate_swap_result`,arguments:[n.object(t.clmm_pool),n.pure(!0),n.pure(!0),n.pure(a.coinA.toString())],typeArguments:l}),n.moveCall({target:`${e.published_at}::${Jt}::calculate_swap_result`,arguments:[n.object(t.clmm_pool),n.pure(!1),n.pure(!0),n.pure(a.coinB.toString())],typeArguments:l});let h=(await this.sdk.ClmmSDK.fullClient.devInspectTransactionBlock({transactionBlock:n,sender:i.address})).events?.filter(P=>V(P.type).name==="CalculatedSwapResultEvent");if(h.length===0)return null;let y=h[0].parsedJson.data,v=h[1].parsedJson.data,T=M(a.coinB.toString()).add(y.amount_out),O=M(a.coinA.toString()).add(v.amount_out);return{maxAmountB:T,maxAmountA:O}}async calculateRemoveSwapAmount(t,e){let i=Li.calculateDepositRatio(t.lowerTick,t.upperTick,new Ee.default(t.curSqrtPrice)),n=t.fix_amount_a?i.ratioA:i.ratioB;console.log({fixRatio:n});let r=M(t.receive_amount).mul(n),o,s;if(t.removeLiquidity){let P=ie.tickIndexToSqrtPriceX64(t.lowerTick),j=ie.tickIndexToSqrtPriceX64(t.upperTick),B=ze.getCoinAmountFromLiquidity(new Ee.default(t.removeLiquidity),new Ee.default(t.curSqrtPrice),P,j,!1);s=t.removeLiquidity,o=t.fix_amount_a?B.coinB.toString():B.coinA.toString(),r=t.fix_amount_a?M(B.coinA.toString()):M(B.coinB.toString())}else{let P=ze.estLiquidityAndcoinAmountFromOneAmounts(t.lowerTick,t.upperTick,new Ee.default(r.toFixed(0)),t.fix_amount_a,!1,.2,new Ee.default(t.curSqrtPrice));s=P.liquidityAmount.toString(),o=t.fix_amount_a?P.coinAmountB.toString():P.coinAmountA.toString()}console.log({fixAmount:r,otherSideAmount:o});let a=!t.fix_amount_a,l=await this.clmmPreSwap(t.clmm_pool,t.curSqrtPrice,a,M(o),t.coinTypeA,t.coinTypeB,!0,t.priceSplitPoint,t.use_route,[{pool_id:t.clmm_pool,tick_lower:t.lowerTick,tick_upper:t.upperTick,delta_liquidity:Number(s),is_increase:!1}]);console.log({data:l,range:e});let u=r.add(l.amount_out),h=M(t.receive_amount),y=h.sub(u);if(console.log(`\u5B9E\u9645\u5F97\u5230: ${u.toString()} , \u671F\u671B\u5F97\u5230: ${t.receive_amount}, \u5269\u4F59: ${y.toString()} `),(!t.removeLiquidity||t.removeLiquidity&&e)&&y.abs().greaterThan(h.mul(.01))){let P=u.lessThan(h),j,B;e?P?(j=M(s),B=e.right):(j=e.left,B=M(s)):(j=P?M(s):M(0),B=P?M(t.maxLiquidity):M(s));let D=M(j).add(B).div(2).toFixed(0);if(console.log({left:j.toString(),right:B.toString(),midLiquidity:D.toString()}),!e||e&&e.count<15&&j<B)return await this.calculateRemoveSwapAmount({...t,removeLiquidity:D},{left:j,right:B,count:e?e.count+1:0})}let v=l.amount_in&&l.fee_amount?new Ee.default(l.amount_in).add(new Ee.default(l.fee_amount)).toString():l.amount_in,T=l.amount_out,{is_exceed:O}=l;return{swapInAmount:v,swapOutAmount:T,liquidity:s,is_exceed:O,routeObj:l.route_obj,request_id:t.request_id}}async calculateHaedalDepositFixSui(t){let e=t.inputSuiAmount.mul(t.remainRate),i=t.inputSuiAmount.sub(t.swapSuiAmount),n=t.exchangeRate?t.exchangeRate:await this.getExchangeRateForHaedal(t.staking_id,t.shouldRequestStake,Number(t.swapSuiAmount.toFixed(0))),r=t.swapSuiAmount.div(n).toFixed(0);console.log({swapAmount:t.swapSuiAmount.toString(),hasuiAmount:r.toString(),leftSuiAmount:t.leftSuiAmount.toString(),rightSuiAmount:t.rightSuiAmount.toString(),exchangeRate:n});let o=ze.estLiquidityAndcoinAmountFromOneAmounts(t.lowerTick,t.upperTick,new Ee.default(r.toString()),!t.fixCoinA,!0,0,new Ee.default(t.curSqrtPrice)),s=t.fixCoinA?o.coinAmountA.toString():o.coinAmountB.toString(),a=M(i).sub(s);return console.log({useSuiAmount:s.toString(),hasuiAmount:r.toString(),remainSui:i.toString(),remainSuiLimit:e.toString(),actRemainSui:a.toString(),rebalanceCount:t.rebalanceCount}),a.greaterThanOrEqualTo(0)&&a.lessThanOrEqualTo(e)||t.rebalanceCount>12||t.leftSuiAmount.greaterThanOrEqualTo(t.rightSuiAmount)?{swapInAmount:t.swapSuiAmount.toFixed(0),swapOutAmount:r,afterSqrtPrice:t.curSqrtPrice,fixAmountA:!t.fixCoinA,is_exceed:!0,request_id:"",staking_id:t.staking_id}:a.lessThan(0)?await this.calculateHaedalDepositFixSui({...t,rightSuiAmount:t.swapSuiAmount,swapSuiAmount:t.swapSuiAmount.add(t.leftSuiAmount).div(2),exchangeRate:n,rebalanceCount:t.rebalanceCount+1}):a.greaterThan(e)?await this.calculateHaedalDepositFixSui({...t,leftSuiAmount:t.swapSuiAmount,swapSuiAmount:t.swapSuiAmount.add(t.rightSuiAmount).div(2),exchangeRate:n,rebalanceCount:t.rebalanceCount+1}):null}async calculateDepositSwapAmount(t,e=!1){let i=ie.sqrtPriceX64ToTickIndex(new Ee.default(t.curSqrtPrice)),{ratioA:n,ratioB:r}=Li.calculateDepositRatio(t.lowerTick,t.upperTick,new Ee.default(t.curSqrtPrice));console.log("1110 calculateDepositSwapAmount params: ",{...t,currentTick:i,adjustBestAmount:e});let o=M(t.input_amount).mul(t.fix_amount_a?n:r),s=M(t.input_amount).sub(o);console.log("1110 ",{fixAmount:o.toString(),swapAmount:s.toString()});let a=t.fix_amount_a;if(s.toFixed(0)==="0")return null;if(t.staking_id){if(Ce.isSuiCoin(t.coinTypeA)&&t.fix_amount_a||Ce.isSuiCoin(t.coinTypeB)&&!t.fix_amount_a){let G=await this.calculateHaedalDepositFixSui({inputSuiAmount:M(t.input_amount),swapSuiAmount:s,lowerTick:t.lowerTick,upperTick:t.upperTick,curSqrtPrice:t.curSqrtPrice,remainRate:t.remainRate?t.remainRate:.01,fixCoinA:t.fix_amount_a,rebalanceCount:0,shouldRequestStake:t.shouldRequestStake,leftSuiAmount:a?new U(s.toFixed(0)):new U(0),rightSuiAmount:a?new U(t.input_amount):new U(s.toFixed(0)),staking_id:t.staking_id});return G?{...G,request_id:t.request_id}:null}throw Error("Only support fix sui")}let l=i<t.lowerTick||i>t.upperTick,u={clmm_pool:t.clmm_pool,curSqrtPrice:t.curSqrtPrice,a2b:a,amount_a:a?new U(t.input_amount):new U(0),amount_b:a?new U(0):new U(t.input_amount),amount_left:a?new U(s.toFixed(0)):new U(0),amount_right:a?new U(t.input_amount):new U(s.toFixed(0)),lowerTick:t.lowerTick,upperTick:t.upperTick,tick_spacing:2,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,useRoute:t.use_route,remainRate:t.remainRate?t.remainRate:.01,priceSplitPoint:t.priceSplitPoint},h=e&&i<=t.upperTick,y=h?await this.calculateRebalance(u):await this.clmmPreSwap(t.clmm_pool,t.curSqrtPrice,a,s,t.coinTypeA,t.coinTypeB,!0,t.priceSplitPoint,t.use_route),v=y.after_sqrt_price,T=ie.sqrtPriceX64ToTickIndex(new Ee.default(v));console.log("1110 \u9996\u6B21\u8BA1\u7B97 \u7ED3\u679C: ",{...y,currentTick:T},null,2);let O=T<t.lowerTick||T>t.upperTick;if(l!==O&&!h&&T<=t.upperTick){console.log("1110 \u533A\u95F4\u53D1\u751F\u53D8\u5316, \u518D\u6B21\u8FDB\u884Cswap: ");let{ratioA:G,ratioB:J}=Li.calculateDepositRatio(t.lowerTick,t.upperTick,new Ee.default(v));console.log("1110 ",{newAfterRatioA:G,newAfterRatioB:J}),s=M(t.input_amount).sub(M(t.input_amount).mul(t.fix_amount_a?G:J)),u.amount_left=a?new U(s.toFixed(0)):new U(0),u.amount_right=a?new U(t.input_amount):new U(s.toFixed(0)),y=await this.calculateRebalance(u),v=y.after_sqrt_price;let x=ie.sqrtPriceX64ToTickIndex(new Ee.default(v));console.log("1110 \u518D\u6B21\u8BA1\u7B97\u53D8\u5316\u540E: ",{lowerTick:t.lowerTick,upperTick:t.upperTick,currentTick:x,afterSqrtPrice:v})}let{ratioA:P,ratioB:j}=Li.calculateDepositRatio(t.lowerTick,t.upperTick,new Ee.default(v));console.log("1110 1",{afterRatioA:P,afterRatioB:j,data:y});let B=j.div(P).sub(r.div(n)).greaterThan("0"),D=y.amount_in&&y.fee_amount?new Ee.default(y.amount_in).add(new Ee.default(y.fee_amount)).toString():y.amount_in,q=y.amount_out,{is_exceed:K}=y;if(T<t.lowerTick)B=!0;else if(T>t.upperTick)B=!1;else{let G=B===a?new Ee.default(M(t.input_amount).sub(D).toString()):new Ee.default(q),J=ze.estLiquidityAndcoinAmountFromOneAmounts(t.lowerTick,t.upperTick,G,B,!0,0,new Ee.default(v)),x=J.coinAmountA,I=J.coinAmountB,A=M(t.fix_amount_a?x.toString():I.toString()).add(D);console.log("1110 \u5B9E\u9645\u6D88\u8017:",{preAmountTotal:A.toString(),fixAmountA:B}),A.greaterThanOrEqualTo(t.input_amount)&&(B=!B)}let Z={swapInAmount:D,swapOutAmount:q,afterSqrtPrice:v,is_exceed:K,fixAmountA:B,routeObj:y.route_obj,request_id:t.request_id,use_Haedal_stake:!1};return console.log(Z),Z}async calculateHaedalDepositSwapAmount(t){let e=ie.sqrtPriceX64ToTickIndex(new Ee.default(t.curSqrtPrice)),{ratioA:i,ratioB:n}=Li.calculateDepositRatio(t.lowerTick,t.upperTick,new Ee.default(t.curSqrtPrice));console.log("1110 calculateDepositSwapAmount params: ",{...t,currentTick:e});let r=M(t.input_amount).mul(t.fix_amount_a?i:n),o=M(t.input_amount).sub(r);console.log("1110 ",{fixAmount:r.toString(),swapAmount:o.toString()});let s=t.fix_amount_a;if(o.toFixed(0)==="0")return null;if(t.staking_id){if(Ce.isSuiCoin(t.coinTypeA)&&t.fix_amount_a||Ce.isSuiCoin(t.coinTypeB)&&!t.fix_amount_a){let a=await this.calculateHaedalDepositFixSui({inputSuiAmount:M(t.input_amount),swapSuiAmount:o,lowerTick:t.lowerTick,upperTick:t.upperTick,curSqrtPrice:t.curSqrtPrice,remainRate:t.remainRate?t.remainRate:.01,fixCoinA:t.fix_amount_a,rebalanceCount:0,shouldRequestStake:t.shouldRequestStake,leftSuiAmount:s?new U(o.toFixed(0)):new U(0),rightSuiAmount:s?new U(t.input_amount):new U(o.toFixed(0)),staking_id:t.staking_id});return a?{...a,request_id:t.request_id}:null}throw Error("Only support fix sui")}return null}async calculateRebalance(t){let{clmm_pool:e,a2b:i,curSqrtPrice:n,amount_a:r,amount_b:o,lowerTick:s,upperTick:a,amount_left:l,amount_right:u,coinTypeA:h,coinTypeB:y,useRoute:v,priceSplitPoint:T,remainRate:O}=t,P=async(j,B,D)=>{let q=j.plus(B).div(2),K=await this.clmmPreSwap(e,n,i,q,h,y,!0,T,v);if(K.amount_out==="0")return K;if(K.after_sqrt_price||(K.after_sqrt_price=t.curSqrtPrice),K.is_exceed)return B=q,P(j,B,D+1);let Z=i?r.sub(K.amount_in):r.add(K.amount_out),G=i?o.add(K.amount_out):o.sub(K.amount_in),J=ie.sqrtPriceX64ToTickIndex(new Ee.default(K.after_sqrt_price)),x=ze.estLiquidityAndcoinAmountFromOneAmounts(s,a,new Ee.default(Z.toString()),!0,!0,1,new Ee.default(K.after_sqrt_price)),I=new U(x.coinAmountA.toString()),A=new U(x.coinAmountB.toString());if(console.log("1110 swap\u9012\u5F52\u8BA1\u7B97 ",{preRes:K,left:j.toString(),right:B.toString(),mid:q.toString(),afterPoolTickIndex:J,afterA:Z.toString(),afterB:G.toString(),usedA:I.toString(),usedB:toString(),count:D}),I.toString()!==Z.toString())throw new Error("usedA does not match afterA");if(G.lessThan(A))i?j=q:B=q;else{i?B=q:j=q;let E=G.sub(A),k=G.mul(O);if(console.log("1110 \u5269\u4F59\u672A\u4F7F\u7528amount ",{remainingB:E.toString(),maxRemainingB:k.toString(),remainRate:O,count:D}),k.sub(E).greaterThanOrEqualTo(0))return console.log("break"),{...K,remainingB:E}}return j.greaterThan(B)||B.sub(j).lessThan(10)?K:P(j,B,D+1)};return l.greaterThanOrEqualTo(u)?P(new U(0),l,0):P(l,u,0)}async clmmPreSwap(t,e,i,n,r,o,s,a,l,u){if(l)try{let B=await this._sdk.ClmmSDK.RouterV2.getBestRouter(i?r:o,i?o:r,Number(n.toFixed(0)),s,a,"",void 0,void 0,!0,!1,u);if(!B.result)throw new Error("route unavailable");let{result:D}=B,q=e;return D.splitPaths.forEach(K=>{let Z=K.basePaths.find(G=>G.poolAddress.toLowerCase()===t.toLowerCase());Z&&(q=Z.afterSqrtPrice.toString())}),{amount_in:D.inputAmount.toString(),amount_out:D.outputAmount.toString(),after_sqrt_price:q,is_exceed:D.isExceed,route_obj:D}}catch{throw new Error("route unavailable")}let{integrate:h,simulationAccount:y}=this.sdk.ClmmSDK.sdkOptions,v=new Zn.TransactionBlock,T=[r,o],O=[v.pure(t),v.pure(i),v.pure(s),v.pure(n.toFixed(0))];v.moveCall({target:`${h.published_at}::${Jt}::calculate_swap_result`,arguments:O,typeArguments:T});let j=(await this.sdk.ClmmSDK.fullClient.devInspectTransactionBlock({transactionBlock:v,sender:y.address})).events?.filter(B=>V(B.type).name==="CalculatedSwapResultEvent");return j.length===0?null:j[0].parsedJson.data}async getVault(t,e=!1){let i=this.readPoolFromCache(t,e);if(i)return i;try{let n=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}}),r=Li.buildPool(n);if(r)return r.staking_id=this.findHaedalStakeId(r.position.coinTypeA,r.position.coinTypeB),this.savePoolToCache(r),r}catch(n){console.log(n)}}async getVaultsConfigs(t=!1){let{package_id:e}=this._sdk.sdkOptions.vaults,i=`${e}_getMirrorPoolConfigs`,n=this.getCache(i,t);if(n!==void 0)return n;let r=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${e}::vaults::InitEvent`})).data,o={admin_cap_id:"",vaults_manager_id:"",vaults_pool_handle:""};if(r.length>0){for(let s of r){let a=s.parsedJson;o.admin_cap_id=a.admin_cap_id,o.vaults_manager_id=a.manager_id;let l=await this._sdk.ClmmSDK.fullClient.getObject({id:o.vaults_manager_id,options:{showContent:!0}}),u=te(l);o.vaults_pool_handle=u.vault_to_pool_maps.fields.id.id;break}this.updateCache(i,o,X)}return o}async getExchangeRateForHaedal(t,e,i){let{haedal:n}=this._sdk.sdkOptions,{simulationAccount:r}=this._sdk.ClmmSDK.sdkOptions;try{let o=new Zn.TransactionBlock;e?await this.requestStake(t,i||1e9,o):o.moveCall({target:`${n.published_at}::staking::get_exchange_rate`,typeArguments:[],arguments:[o.object(t)]});let s=await this._sdk.ClmmSDK.fullClient.devInspectTransactionBlock({transactionBlock:o,sender:e?this._sdk.ClmmSDK.senderAddress:r.address});if(console.log("getExchangeRateForHaedal res: ",s),e){let u=s.events.find(T=>T.type.includes("UserStaked")),{sui_amount:h,st_amount:y}=u.parsedJson,v=M(h).div(y).toString();return console.log({st_amount:y,sui_amount:h,rate:v}),v}let a=s.results[0].returnValues[0][0],l=bl.bcs.de("u64",Uint8Array.from(a))/1e6;return console.log("rate ",bl.bcs.de("u64",Uint8Array.from(a))),l.toString()}catch(o){console.log("getExchangeRateForHaedal",o)}return"0"}requestStakeCoin(t,e,i){let{haedal:n}=this._sdk.sdkOptions;return e.moveCall({target:`${n.published_at}::staking::request_stake_coin`,typeArguments:[],arguments:[e.object((0,go.normalizeSuiObjectId)("0x5")),e.object(t),i,e.pure((0,go.normalizeSuiObjectId)("0x0"))]})}async requestStake(t,e,i){let{haedal:n}=this._sdk.sdkOptions,r=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.getVerifySenderAddress(),po);i=i||new Zn.TransactionBlock;let o;if(e>95e10){let[s,...a]=r;a.length>0&&i.mergeCoins(i.object(s.coinObjectId),a.map(l=>i.object(l.coinObjectId))),o=i.splitCoins(i.object(s.coinObjectId),[e])}else o=oe.buildCoinForAmount(i,r,BigInt(e),po,!1,!0).targetCoin;return i.moveCall({target:`${n.published_at}::interface::request_stake`,typeArguments:[],arguments:[i.object((0,go.normalizeSuiObjectId)("0x5")),i.object(t),o,i.pure((0,go.normalizeSuiObjectId)("0x0"))]}),i}updateCache(t,e,i=He){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t],n=i?.isValid();if(!e&&n)return i.value;n||delete this._cache[t]}},Ys=class{static buildOrderLimitEvent(t){let{events:e}=t,i=[];return e&&e.forEach(n=>{let r=V(n.type).name;if(r==="OrderPlacedEvent"||r==="OrderCanceledEvent"||r==="FlashLoanEvent"){let o={digest:t.digest,type:r,timestampMs:t.timestampMs,parsedJson:n.parsedJson};i.push(o)}}),i}static buildLimitOrderInfo(t){let e=te(t),i=Ii(t);if(e&&i)try{let n=V(i),r={pay_coin_type:n.type_arguments[0],target_coin_type:n.type_arguments[1],balance:e.balance,canceled_ts:e.canceled_ts==="18446744073709551615"?0:Number(e.canceled_ts),id:e.id.id,obtained_amount:e.obtained_amount,owner:e.owner,rate:e.rate,expire_ts:Number(e.expire_ts),total_pay_amount:e.total_pay_amount,status:"Running",created_ts:Number(e.created_ts)};if(r.canceled_ts===0)r.status="Running";else if(Number(r.obtained_amount)===0)r.status="Cancelled";else{let o=M(r.total_pay_amount).mul(1e20).div(r.rate).toFixed(0);r.obtained_amount===o?r.status="Completed":r.status="Cancelled"}return r}catch(n){console.log(n)}}static calculateFormatRate(t,e,i){let n=20+e-i;return M(t).mul(M(10).pow(n)).toString()}static calculateRate(t,e,i){let n=20+e-i;return Number(t)/10**n}},Tw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getLimitOrderTokenList(){let{limit_order:t}=this._sdk.sdkOptions,{token_list_handle:e}=F(t),{fullClient:i}=this._sdk.ClmmSDK,r=(await i.getDynamicFieldsByPage(e)).data.map(s=>s.objectId);return(await i.batchGetObjects(r,{showContent:!0})).map(s=>{let{fields:a}=s.data.content;return{coin_type:V(a.name.fields.name).full_address,min_trade_amount:Number(a.value)}})}async getLimitOrderPoolList(){let{limit_order:t}=this._sdk.sdkOptions,{rate_orders_indexer_handle:e}=F(t),{fullClient:i}=this._sdk.ClmmSDK,r=(await i.getDynamicFieldsByPage(e)).data.map(s=>s.objectId);return(await i.batchGetObjects(r,{showContent:!0})).map(s=>{let{fields:a}=s.data.content.fields.value,l={pay_coin_type:V(a.pay_coin.fields.name).full_address,target_coin_type:V(a.target_coin.fields.name).full_address,indexer_id:a.indexer_id};return this._sdk.updateCache(`${l.pay_coin_type}_${l.target_coin_type}`,l.indexer_id),l})}async getPoolIndexerId(t,e){let i=this._sdk.getCache(`${t}_${e}`);try{if(i===void 0){let r=(await this.getLimitOrderPoolList()).filter(o=>o.pay_coin_type===t&&o.target_coin_type===e);if(r.length>0)return r[0].indexer_id}}catch{}return i}async getOwnerLimitOrderList(t,e){let{fullClient:i}=this._sdk.ClmmSDK,n={data:[],hasNextPage:!1};try{let r=await this.getUserIndexerHandle(t);if(!r)return n;let o=await i.getDynamicFieldsByPage(r,e);n.hasNextPage=o.hasNextPage,n.nextCursor=o.nextCursor;let s=o.data.map(u=>u.name.value),l=(await i.batchGetObjects(s,{showContent:!0})).map(u=>Ys.buildLimitOrderInfo(u)).filter(u=>u!==void 0);n.data=l}catch(r){console.error("Error in getOwnerLimitOrderList:",r)}return n}async getLimitOrderConfigs(){let{package_id:t}=this._sdk.sdkOptions.limit_order,e={rate_orders_indexer_id:"",rate_orders_indexer_handle:"",global_config_id:"",token_list_handle:"",user_orders_indexer_id:"",user_orders_indexer_handle:""},i=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::limit_order::InitEvent`})).data;if(i.length>0){let r=i[0].parsedJson;e.rate_orders_indexer_id=r.rate_orders_indexer_id,e.user_orders_indexer_id=r.user_orders_indexer_id;let o=await this._sdk.ClmmSDK.fullClient.getObject({id:e.rate_orders_indexer_id,options:{showContent:!0}});e.rate_orders_indexer_handle=te(o).list.fields.id.id;let s=await this._sdk.ClmmSDK.fullClient.getObject({id:e.user_orders_indexer_id,options:{showContent:!0}});e.user_orders_indexer_handle=te(s).indexer.fields.id.id}let n=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::config::InitFactoryEvent`})).data;if(n.length>0){let r=n[0].parsedJson;e.global_config_id=r.global_config_id;let o=await this._sdk.ClmmSDK.fullClient.getObject({id:e.global_config_id,options:{showContent:!0}}),s=te(o);e.token_list_handle=s.token_white_list.fields.id.id}return e}async getLimitOrder(t){let{fullClient:e}=this._sdk.ClmmSDK;try{let i=await e.getObject({id:t,options:{showContent:!0}});return Ys.buildLimitOrderInfo(i)}catch(i){console.error("Error in getLimitOrder:",i);return}}async getLimitOrderLogs(t){let{fullClient:e}=this._sdk.ClmmSDK;try{let i=await e.queryTransactionBlocks({filter:{ChangedObject:t},options:{showEvents:!0}}),n=[];return i.data.forEach(r=>{n.push(...Ys.buildOrderLimitEvent(r))}),n}catch(i){return console.error("Error in getLimitOrderLogs:",i),[]}}buildRateOrdersIndexerType(t){let{limit_order:e}=this._sdk.sdkOptions;return xr(`${e.package_id}::limit_order::RateOrdersIndexer`,[t.pay_coin_type,t.target_coin_type])}async placeLimitOrder(t){let{limit_order:e}=this._sdk.sdkOptions,{user_orders_indexer_id:i,global_config_id:n,rate_orders_indexer_id:r}=F(e),o=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress,t.pay_coin_type),s=new ea.TransactionBlock,a=await this.getPoolIndexerId(t.pay_coin_type,t.target_coin_type),l=oe.buildCoinForAmount(s,o,BigInt(t.pay_coin_amount),t.pay_coin_type,!1,!0);return s.moveCall({target:`${e.published_at}::limit_order::${a===void 0?"create_indexer_and_place_limit_order":"place_limit_order"}`,typeArguments:[t.pay_coin_type,t.target_coin_type],arguments:[s.object(n),a===void 0?s.object(r):s.object(a),s.object(i),l.targetCoin,s.pure(Ys.calculateFormatRate(t.rate,t.pay_decimal,t.target_decimal)),s.pure(t.expired_ts),s.object(z)]}),s}async cancelOrdersByOwner(t){let{limit_order:e}=this._sdk.sdkOptions,{global_config_id:i}=F(e),n=new ea.TransactionBlock,r=await this.getPoolIndexerId(t.pay_coin_type,t.target_coin_type);if(r===void 0)throw Error("not found indexerId");return t.order_ids.forEach(o=>{n.moveCall({target:`${e.published_at}::limit_order::cancel_order_by_owner`,typeArguments:[t.pay_coin_type,t.target_coin_type],arguments:[n.object(i),n.object(r),n.object(o),n.object(z)]})}),n}async getUserIndexerHandle(t){let{fullClient:e}=this._sdk.ClmmSDK,{limit_order:i}=this._sdk.sdkOptions,n=this.getUserIndexerHandleByCache(t);if(n===void 0){let r=new ea.TransactionBlock;r.moveCall({target:`${i.published_at}::limit_order::get_orders_indexer_by_owner`,typeArguments:[],arguments:[r.pure(t),r.object(F(i).user_orders_indexer_id)]}),n=(await e.devInspectTransactionBlock({transactionBlock:r,sender:this._sdk.ClmmSDK.sdkOptions.simulationAccount.address})).events[0].parsedJson.orders_table_id,n&&this.saveUserIndexerHandleByCache(t,n)}return n}getUserIndexerHandleByCache(t){let e=`getUserIndexerHandleByCache_${t}`;return this.getCache(e)}saveUserIndexerHandleByCache(t,e){let i=`getUserIndexerHandleByCache_${t}`;return this.updateCache(i,e)}updateCache(t,e,i=X){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t],n=i?.isValid();if(!e&&n)return i.value;n||delete this._cache[t]}},Sw=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getFramsPoolList(t="all"){let{package_id:e}=this._sdk.sdkOptions.frams,i={data:[],hasNextPage:!1};try{let n=await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${e}::pool::CreatePoolEvent`},t),r=n.data.map(o=>o.parsedJson.pool_id);if(i.hasNextPage=n.hasNextPage,i.nextCursor=n.nextCursor,r.length>0){let o=await this._sdk.ClmmSDK.fullClient.batchGetObjects(r,{showType:!0,showContent:!0});for(let s of o){let a=Js.buildFramsPool(s);a&&(a.rewarders=await this.getFramsRewarderConfig(a.clmm_pool_id,a.rewarders.map(l=>l.reward_coin)),i.data.push(a),this.updateCache(a.id,a))}}}catch(n){console.log("getFramsPoolList error ",n)}return i}async getFramsPool(t,e=!1){let i=this.getCache(t,e);if(i)return i;let n=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0}}),r=Js.buildFramsPool(n.data);return r&&(r.rewarders=await this.getFramsRewarderConfig(r.clmm_pool_id,r.rewarders.map(o=>o.reward_coin)),this.updateCache(r.id,r)),r}async getFramsRewarderConfig(t,e,i=!1){let{frams:n}=this._sdk.sdkOptions,r=[];for(let o of e){let s=`getFramsRewarderConfig_${o}_${t}`,a=this.getCache(s,i);if(a)r.push(a);else try{let l=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:F(n).rewarder_manager_handle,name:{type:"0x1::type_name::TypeName",value:dl(o)}}),{fields:u}=l.data.content.fields.value.fields.value,h={reward_coin:o,last_reward_time:u.last_reward_time,emission_per_second:u.emission_per_second,total_allocate_point:u.total_allocate_point,allocate_point:""},y=u.pools.fields.id.id,v=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:y,name:{type:"0x2::object::ID",value:t}}),{allocate_point:T}=v.data.content.fields.value.fields.value.fields;h.allocate_point=T,this.updateCache(s,h),r.push(h)}catch(l){console.log(l)}}return r}async getOwnedFramsPositionNFTList(t,e=[],i=!1,n=!0,r="all"){let{package_id:o}=this._sdk.sdkOptions.frams,s={data:[],hasNextPage:!1},a={},l=[],u=e.length>0,h=await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{filter:{StructType:`${o}::pool::WrappedPositionNFT`},options:{showContent:!0}},r);s.hasNextPage=h.hasNextPage,s.nextCursor=h.nextCursor;for(let y of h.data){let v=Js.buildFramsPositionNFT(y);if(v)if(u){if(e.includes(v.pool_id)){l.push(v);let T=a[v.pool_id];T?T.push(v):T=[v],a[v.pool_id]=T}}else l.push(v)}if(i&&l.length>0){let y=await this.calculateFarmingRewards(l.map(v=>({pool_id:v.pool_id,position_nft_id:v.id,clmm_pool_id:v.clmm_pool_id})),n);u?(a={},l.forEach(v=>{y[v.id]&&(v.rewards=y[v.id]);let O=a[v.pool_id];O?O.push(v):O=[v],a[v.pool_id]=O})):l.forEach(v=>{y[v.id]&&(v.rewards=y[v.id])})}return u?a:(s.data=l,s)}async getFramsPositionNFT(t,e=!0){let i=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),n=Js.buildFramsPositionNFT(i);if(e&&n){let r=await this.calculateFarmingRewards([{pool_id:n.pool_id,position_nft_id:n.id}]);r[n.id]&&(n.rewards=r[n.id])}return n}async calculateFarmingRewards(t,e=!0){let{frams:i}=this._sdk.sdkOptions,n=new si.TransactionBlock,{rewarder_manager_id:r,global_config_id:o}=F(i);t.forEach(a=>{n.moveCall({target:`${i.published_at}::router::accumulated_position_rewards`,typeArguments:[],arguments:[n.object(o),n.object(r),n.object(a.pool_id),n.pure(a.position_nft_id,"address"),n.object(z)]})});let s={};try{let a=await this._sdk.ClmmSDK.fullClient.sendSimulationTransaction(n,this._sdk.ClmmSDK.senderAddress,e);console.log({simulateRes:a});let l=a?.events?.filter(u=>V(u.type).name==="AccumulatedPositionRewardsEvent");if(l&&l.length>0)for(let u=0;u<l.length;u+=1){let{parsedJson:h}=l[u],y=[];h.rewards.contents.forEach(v=>{y.push({rewarder_type:V(v.key.name).full_address,rewarder_amount:v.value})}),s[h.wrapped_position_id]=y}}catch(a){console.log(a)}return s}depositPayload(t,e){let{frams:i}=this.sdk.sdkOptions;e=e||new si.TransactionBlock;let{global_config_id:n,rewarder_manager_id:r}=F(i);return e.moveCall({target:`${i.published_at}::router::deposit`,typeArguments:[],arguments:[e.object(n),e.object(r),e.object(t.pool_id),e.object(t.clmm_position_id),e.object(z)]}),e}async withdrawPayload(t,e){let{frams:i}=this.sdk.sdkOptions,{global_config_id:n,rewarder_manager_id:r}=F(i);return e=e||new si.TransactionBlock,e=await this.harvestPayload({pool_id:t.pool_id,position_nft_id:t.position_nft_id},e),e.moveCall({target:`${i.published_at}::router::withdraw`,typeArguments:[],arguments:[e.object(n),e.object(r),e.object(t.pool_id),e.object(t.position_nft_id),e.object(z)]}),e}async batchHarvestPayload(t,e){e=e||new si.TransactionBlock;for(let i of t)await this.harvestPayload(i,e);return e}async harvestPayload(t,e){let{frams:i}=this.sdk.sdkOptions;e=e||new si.TransactionBlock;let n=await this.getFramsPool(t.pool_id,!1);if(n===void 0)throw Error(`not found ${t.pool_id}`);let{global_config_id:r,rewarder_manager_id:o}=F(i);if("collect_fee"in t&&(t.collect_fee||t.clmm_rewarder_types.length>0)){let a=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress);e=await this.buildCollectRewarderAndFeeParams({clmm_pool_id:t.clmm_pool_id,position_nft_id:t.position_nft_id,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,collectFee:t.collect_fee,clmm_rewarder_types:t.clmm_rewarder_types},e,a)}return n.rewarders.forEach(a=>{e&&e.moveCall({target:`${i.published_at}::router::harvest`,typeArguments:[a.reward_coin],arguments:[e.object(r),e.object(o),e.object(t.pool_id),e.object(t.position_nft_id),e.object(z)]})}),e}async claimFeeAndClmmReward(t){let e=new si.TransactionBlock,i=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress);return await this.buildCollectRewarderAndFeeParams({clmm_pool_id:t.clmm_pool_id,position_nft_id:t.position_nft_id,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,collectFee:t.collect_fee,clmm_rewarder_types:t.clmm_rewarder_types},e,i),e}async openPositionAddLiquidityStakePaylod(t){let e=new si.TransactionBlock,{clmm_pool:i,integrate:n}=this._sdk.ClmmSDK.sdkOptions,r=F(i),o=e.moveCall({target:`${i.published_at}::pool::open_position`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(r.global_config_id),e.object(t.clmm_pool_id),e.pure(Pt(BigInt(t.tick_lower)).toString()),e.pure(Pt(BigInt(t.tick_upper)).toString())]}),s=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress),a=oe.buildCoinForAmount(e,s,BigInt(t.amount_a),t.coinTypeA,!1),l=oe.buildCoinForAmount(e,s,BigInt(t.amount_b),t.coinTypeB,!1);e.moveCall({target:`${n.published_at}::${Xi}::add_liquidity_by_fix_coin`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(r.global_config_id),e.object(t.clmm_pool_id),o,a.targetCoin,l.targetCoin,e.pure(t.amount_a.toString()),e.pure(t.amount_b.toString()),e.pure(t.fix_amount_a),e.object(z)]});let{frams:u}=this.sdk.sdkOptions,{global_config_id:h,rewarder_manager_id:y}=F(u);return e.moveCall({target:`${u.published_at}::router::deposit`,typeArguments:[],arguments:[e.object(h),e.object(y),e.object(t.pool_id),o,e.object(z)]}),e}async addLiquidityPayload(t,e){let{frams:i}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions;e=e||new si.TransactionBlock;let r=F(i),o=F(n),s=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress),a=oe.buildCoinForAmount(e,s,BigInt(t.amount_limit_a),t.coinTypeA,!1),l=oe.buildCoinForAmount(e,s,BigInt(t.amount_limit_b),t.coinTypeB,!1);if(t.collect_rewarder&&(e=await this.harvestPayload({pool_id:t.pool_id,position_nft_id:t.position_nft_id,clmm_pool_id:t.clmm_pool_id},e)),t.collect_fee||t.clmm_rewarder_types.length>0){let u=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress);e=await this.buildCollectRewarderAndFeeParams({clmm_pool_id:t.clmm_pool_id,position_nft_id:t.position_nft_id,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,collectFee:t.collect_fee,clmm_rewarder_types:t.clmm_rewarder_types},e,u,a.remainCoins,l.remainCoins)}return e.moveCall({target:`${i.published_at}::router::add_liquidity`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(r.global_config_id),e.object(o.global_config_id),e.object(r.rewarder_manager_id),e.object(t.pool_id),e.object(t.clmm_pool_id),e.object(t.position_nft_id),a.targetCoin,l.targetCoin,e.pure(t.amount_limit_a),e.pure(t.amount_limit_b),e.pure(t.delta_liquidity),e.object(z)]}),e}async addLiquidityFixCoinPayload(t,e){let{frams:i}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions;e=e||new si.TransactionBlock;let r=F(i),o=F(n),s=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress),a=oe.buildCoinForAmount(e,s,BigInt(t.amount_a),t.coinTypeA,!1),l=oe.buildCoinForAmount(e,s,BigInt(t.amount_b),t.coinTypeB,!1);if(t.collect_rewarder&&(e=await this.harvestPayload({pool_id:t.pool_id,position_nft_id:t.position_nft_id,clmm_pool_id:t.clmm_pool_id},e)),t.collect_fee||t.clmm_rewarder_types.length>0){let u=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress);e=await this.buildCollectRewarderAndFeeParams({clmm_pool_id:t.clmm_pool_id,position_nft_id:t.position_nft_id,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,collectFee:t.collect_fee,clmm_rewarder_types:t.clmm_rewarder_types},e,u,a.remainCoins,l.remainCoins)}return e.moveCall({target:`${i.published_at}::router::add_liquidity_fix_coin`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(r.global_config_id),e.object(o.global_config_id),e.object(r.rewarder_manager_id),e.object(t.pool_id),e.object(t.clmm_pool_id),e.object(t.position_nft_id),a.targetCoin,l.targetCoin,e.pure(t.amount_a.toString()),e.pure(t.amount_b.toString()),e.pure(t.fix_amount_a),e.object(z)]}),e}async removeLiquidityPayload(t,e){let{frams:i}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions;e=e||new si.TransactionBlock;let r=F(i),o=F(n);if(t.collect_rewarder&&(!t.unstake||t.close_position)&&(e=await this.harvestPayload({pool_id:t.pool_id,position_nft_id:t.position_nft_id,clmm_pool_id:t.clmm_pool_id},e)),t.clmm_rewarder_types.length>0){let s=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress);e=await this.buildCollectRewarderAndFeeParams({clmm_pool_id:t.clmm_pool_id,position_nft_id:t.position_nft_id,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,collectFee:!1,clmm_rewarder_types:t.clmm_rewarder_types},e,s)}if(t.close_position){if(t.clmm_position_id===void 0)throw Error("close_position need clmm_position_id");e.moveCall({target:`${i.published_at}::router::close_position`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(r.global_config_id),e.object(r.rewarder_manager_id),e.object(t.pool_id),e.object(o.global_config_id),e.object(t.clmm_pool_id),e.object(t.position_nft_id),e.pure(t.min_amount_a),e.pure(t.min_amount_b),e.object(z)]})}else e.moveCall({target:`${i.published_at}::router::remove_liquidity`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(r.global_config_id),e.object(o.global_config_id),e.object(r.rewarder_manager_id),e.object(t.pool_id),e.object(t.clmm_pool_id),e.object(t.position_nft_id),e.pure(t.delta_liquidity),e.pure(t.min_amount_a),e.pure(t.min_amount_b),e.object(z)]}),t.unstake&&this.withdrawPayload({pool_id:t.pool_id,position_nft_id:t.position_nft_id});return e}async buildCollectRewarderAndFeeParams(t,e,i,n,r){n===void 0&&(n=[...i]),r===void 0&&(r=[...i]);let o=$t(t.coinTypeA),s=$t(t.coinTypeB);t.collectFee&&this.collectFeePayload({clmm_pool_id:t.clmm_pool_id,position_nft_id:t.position_nft_id,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB},e);let a=[];return t.clmm_rewarder_types.forEach(l=>{switch($t(l)){case o:a.push(oe.buildCoinForAmount(e,n,BigInt(0),l,!1).targetCoin);break;case s:a.push(oe.buildCoinForAmount(e,r,BigInt(0),l,!1).targetCoin);break;default:a.push(oe.buildCoinForAmount(e,i,BigInt(0),l,!1).targetCoin);break}}),this.collectClmmRewardPayload({clmm_pool_id:t.clmm_pool_id,position_nft_id:t.position_nft_id,clmm_rewarder_types:t.clmm_rewarder_types,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,reward_coins:a},e),e}collectFeePayload(t,e){let{frams:i}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions;e=e||new si.TransactionBlock;let r=F(i),o=F(n);return e.moveCall({target:`${i.published_at}::router::collect_fee`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(r.global_config_id),e.object(o.global_config_id),e.object(t.clmm_pool_id),e.object(t.position_nft_id)]}),e}async collectClmmRewardPayload(t,e){let{frams:i}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions;e=e||new si.TransactionBlock;let r=t.reward_coins;if(t.clmm_rewarder_types.length>0&&r===void 0){r=[];let a=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress);t.clmm_rewarder_types.forEach(l=>{r.push(oe.buildCoinForAmount(e,a,BigInt(0),l,!1).targetCoin)})}let o=F(i),s=F(n);return t.clmm_rewarder_types?.forEach((a,l)=>{e&&e.moveCall({target:`${i.published_at}::router::collect_clmm_reward`,typeArguments:[a,t.coinTypeA,t.coinTypeB],arguments:[e.object(o.global_config_id),e.object(s.global_config_id),e.object(t.clmm_pool_id),e.object(t.position_nft_id),e.object(s.global_vault_id),r[l],e.object(z)]})}),e}async getFrarmsConfigs(){let{package_id:t}=this._sdk.sdkOptions.frams,e={global_config_id:"",rewarder_manager_id:"",rewarder_manager_handle:""},i=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::config::InitConfigEvent`})).data;if(i.length>0){let r=i[0].parsedJson;e.global_config_id=r.global_config_id,e.admin_cap_id=r.admin_cap_id}let n=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::rewarder::InitRewarderManagerEvent`})).data;if(n.length>0){let r=n[0].parsedJson;e.rewarder_manager_id=r.id;let o=await this._sdk.ClmmSDK.fullClient.getObject({id:e.rewarder_manager_id,options:{showContent:!0}});e.rewarder_manager_handle=o.data.content.fields.rewarders.fields.id.id}return e}updateCache(t,e,i=X){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t];if(!e&&i?.isValid())return i.value;delete this._cache[t]}},yh=class{_cache={};_sdkOptions;_launchpad;_ido;_xcetusModule;_xtokenModule;_boosterModule;_makerModule;_clmmSDK;_liquidityStrategy;_vaults;_limitOrder;_farmsModule;constructor(t,e){this._sdkOptions=t,this._clmmSDK=e,this._launchpad=new dw(this),this._ido=new ww(this),this._xcetusModule=new hw(this),this._xtokenModule=new vw(this),this._boosterModule=new uw(this),this._makerModule=new fw(this),this._vaults=new Cw(this),this._limitOrder=new Tw(this),this._farmsModule=new Sw(this),this._liquidityStrategy=new kw(this),Hs(this._sdkOptions)}get ClmmSDK(){return this._clmmSDK}get sdkOptions(){return this._sdkOptions}get Launchpad(){return this._launchpad}get Ido(){return this._ido}get XToken(){return this._xtokenModule}get XCetusModule(){return this._xcetusModule}get BoosterModule(){return this._boosterModule}get MakerModule(){return this._makerModule}get LiquidityStrategy(){return this._liquidityStrategy}get Vaults(){return this._vaults}get LimitOrder(){return this._limitOrder}get Farms(){return this._farmsModule}getVerifySenderAddress(){let{senderAddress:t}=this.ClmmSDK;if(t.length===0||!(0,ph.isValidSuiAddress)(t))throw Error("this clmm config sdk senderAddess is illegal");return t}updateCache(t,e,i=X){let n=this._cache[t];n?(n.overdueTime=be(i),n.value=e):n=new Re(e,be(i)),this._cache[t]=n}getCache(t,e=!1){let i=this._cache[t];if(!e&&i?.isValid())return i.value;delete this._cache[t]}};var Bm=require("@msafe/sui3-utils"),Fm=require("@msafe/sui3-utils"),qm=require("@msafe/sui3-utils"),$m=require("@msafe/sui3-utils"),Km=require("@msafe/sui3-utils"),Wm=require("@msafe/sui3-utils"),Gm=require("@msafe/sui3-utils"),Zm=require("@msafe/sui3-utils"),Jm=require("@msafe/sui3-utils"),Qm=require("@msafe/sui3-utils"),tg=require("@msafe/sui3-utils"),ng=require("@msafe/sui3-utils"),og=require("@msafe/sui3-utils"),ag=require("@msafe/sui3-utils"),lg=require("@msafe/sui3-utils"),dg=require("@msafe/sui3-utils"),hg=require("@msafe/sui3-utils"),mg=require("@msafe/sui3-utils"),_g=require("@msafe/sui3-utils"),jg=require("@mysten/sui.js/client"),ln=we(require("axios"),1),ur=require("@mysten/sui.js/utils"),es=require("@mysten/sui.js/transactions"),Iu=require("@mysten/sui.js/transactions"),rs=require("@mysten/sui.js/utils"),Ou=require("buffer"),Rg=require("@mysten/sui.js/utils"),$u=require("@mysten/sui.js/bcs"),os=require("@mysten/sui.js/utils");var wh=(t=21)=>crypto.getRandomValues(new Uint8Array(t)).reduce((e,i)=>(i&=63,i<36?e+=i.toString(36):i<62?e+=(i-26).toString(36).toUpperCase():i>62?e+="-":e+="_",e),"");var Mu=require("@mysten/sui.js/transactions"),ts=require("@mysten/sui.js/transactions"),ss=require("@mysten/sui.js/utils");var tn=class extends Error{},ia=class extends tn{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},na=class extends tn{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},ra=class extends tn{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},Oi=class extends tn{},jr=class extends tn{constructor(e){super(`Invalid unit ${e}`)}},xt=class extends tn{},Pi=class extends tn{constructor(){super("Zone is an abstract class")}};var Q="numeric",Di="short",ai="long",wn={year:Q,month:Q,day:Q},yo={year:Q,month:Di,day:Q},yl={year:Q,month:Di,day:Q,weekday:Di},wo={year:Q,month:ai,day:Q},vo={year:Q,month:ai,day:Q,weekday:ai},ko={hour:Q,minute:Q},Co={hour:Q,minute:Q,second:Q},To={hour:Q,minute:Q,second:Q,timeZoneName:Di},So={hour:Q,minute:Q,second:Q,timeZoneName:ai},xo={hour:Q,minute:Q,hourCycle:"h23"},Ao={hour:Q,minute:Q,second:Q,hourCycle:"h23"},Io={hour:Q,minute:Q,second:Q,hourCycle:"h23",timeZoneName:Di},Oo={hour:Q,minute:Q,second:Q,hourCycle:"h23",timeZoneName:ai},Po={year:Q,month:Q,day:Q,hour:Q,minute:Q},Do={year:Q,month:Q,day:Q,hour:Q,minute:Q,second:Q},Mo={year:Q,month:Di,day:Q,hour:Q,minute:Q},Eo={year:Q,month:Di,day:Q,hour:Q,minute:Q,second:Q},wl={year:Q,month:Di,day:Q,weekday:Di,hour:Q,minute:Q},jo={year:Q,month:ai,day:Q,hour:Q,minute:Q,timeZoneName:Di},Bo={year:Q,month:ai,day:Q,hour:Q,minute:Q,second:Q,timeZoneName:Di},No={year:Q,month:ai,day:Q,weekday:ai,hour:Q,minute:Q,timeZoneName:ai},Fo={year:Q,month:ai,day:Q,weekday:ai,hour:Q,minute:Q,second:Q,timeZoneName:ai};var Qt=class{get type(){throw new Pi}get name(){throw new Pi}get ianaName(){return this.name}get isUniversal(){throw new Pi}offsetName(e,i){throw new Pi}formatOffset(e,i){throw new Pi}offset(e){throw new Pi}equals(e){throw new Pi}get isValid(){throw new Pi}};var vl=null,vn=class t extends Qt{static get instance(){return vl===null&&(vl=new t),vl}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:i,locale:n}){return sa(e,i,n)}formatOffset(e,i){return kn(this.offset(e),i)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}};var ca={};function xw(t){return ca[t]||(ca[t]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),ca[t]}var Aw={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Iw(t,e){let i=t.format(e).replace(/\u200E/g,""),n=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(i),[,r,o,s,a,l,u,h]=n;return[s,r,o,a,l,u,h]}function Ow(t,e){let i=t.formatToParts(e),n=[];for(let r=0;r<i.length;r++){let{type:o,value:s}=i[r],a=Aw[o];o==="era"?n[a]=s:fe(a)||(n[a]=parseInt(s,10))}return n}var aa={},zt=class t extends Qt{static create(e){return aa[e]||(aa[e]=new t(e)),aa[e]}static resetCache(){aa={},ca={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=t.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:i,locale:n}){return sa(e,i,n,this.name)}formatOffset(e,i){return kn(this.offset(e),i)}offset(e){let i=new Date(e);if(isNaN(i))return NaN;let n=xw(this.name),[r,o,s,a,l,u,h]=n.formatToParts?Ow(n,i):Iw(n,i);a==="BC"&&(r=-Math.abs(r)+1);let v=Br({year:r,month:o,day:s,hour:l===24?0:l,minute:u,second:h,millisecond:0}),T=+i,O=T%1e3;return T-=O>=0?O:1e3+O,(v-T)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}};var vh={};function Pw(t,e={}){let i=JSON.stringify([t,e]),n=vh[i];return n||(n=new Intl.ListFormat(t,e),vh[i]=n),n}var kl={};function Cl(t,e={}){let i=JSON.stringify([t,e]),n=kl[i];return n||(n=new Intl.DateTimeFormat(t,e),kl[i]=n),n}var Tl={};function Dw(t,e={}){let i=JSON.stringify([t,e]),n=Tl[i];return n||(n=new Intl.NumberFormat(t,e),Tl[i]=n),n}var Sl={};function Mw(t,e={}){let{base:i,...n}=e,r=JSON.stringify([t,n]),o=Sl[r];return o||(o=new Intl.RelativeTimeFormat(t,e),Sl[r]=o),o}var Ro=null;function Ew(){return Ro||(Ro=new Intl.DateTimeFormat().resolvedOptions().locale,Ro)}var kh={};function jw(t){let e=kh[t];if(!e){let i=new Intl.Locale(t);e="getWeekInfo"in i?i.getWeekInfo():i.weekInfo,kh[t]=e}return e}function Bw(t){let e=t.indexOf("-x-");e!==-1&&(t=t.substring(0,e));let i=t.indexOf("-u-");if(i===-1)return[t];{let n,r;try{n=Cl(t).resolvedOptions(),r=t}catch{let l=t.substring(0,i);n=Cl(l).resolvedOptions(),r=l}let{numberingSystem:o,calendar:s}=n;return[r,o,s]}}function Nw(t,e,i){return(i||e)&&(t.includes("-u-")||(t+="-u"),i&&(t+=`-ca-${i}`),e&&(t+=`-nu-${e}`)),t}function Fw(t){let e=[];for(let i=1;i<=12;i++){let n=Te.utc(2009,i,1);e.push(t(n))}return e}function Rw(t){let e=[];for(let i=1;i<=7;i++){let n=Te.utc(2016,11,13+i);e.push(t(n))}return e}function la(t,e,i,n){let r=t.listingMode();return r==="error"?null:r==="en"?i(e):n(e)}function qw(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||new Intl.DateTimeFormat(t.intl).resolvedOptions().numberingSystem==="latn"}var xl=class{constructor(e,i,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:r,floor:o,...s}=n;if(!i||Object.keys(s).length>0){let a={useGrouping:!1,...n};n.padTo>0&&(a.minimumIntegerDigits=n.padTo),this.inf=Dw(e,a)}}format(e){if(this.inf){let i=this.floor?Math.floor(e):e;return this.inf.format(i)}else{let i=this.floor?Math.floor(e):Nr(e,3);return Ke(i,this.padTo)}}},Al=class{constructor(e,i,n){this.opts=n,this.originalZone=void 0;let r;if(this.opts.timeZone)this.dt=e;else if(e.zone.type==="fixed"){let s=-1*(e.offset/60),a=s>=0?`Etc/GMT+${s}`:`Etc/GMT${s}`;e.offset!==0&&zt.create(a).valid?(r=a,this.dt=e):(r="UTC",this.dt=e.offset===0?e:e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone)}else e.zone.type==="system"?this.dt=e:e.zone.type==="iana"?(this.dt=e,r=e.zone.name):(r="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);let o={...this.opts};o.timeZone=o.timeZone||r,this.dtf=Cl(i,o)}format(){return this.originalZone?this.formatToParts().map(({value:e})=>e).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){let e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map(i=>{if(i.type==="timeZoneName"){let n=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...i,value:n}}else return i}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},Il=class{constructor(e,i,n){this.opts={style:"long",...n},!i&&ua()&&(this.rtf=Mw(e,n))}format(e,i){return this.rtf?this.rtf.format(e,i):Ch(i,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,i){return this.rtf?this.rtf.formatToParts(e,i):[]}},Lw={firstDay:1,minimalDays:4,weekend:[6,7]},De=class t{static fromOpts(e){return t.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,i,n,r,o=!1){let s=e||Ie.defaultLocale,a=s||(o?"en-US":Ew()),l=i||Ie.defaultNumberingSystem,u=n||Ie.defaultOutputCalendar,h=qo(r)||Ie.defaultWeekSettings;return new t(a,l,u,h,s)}static resetCache(){Ro=null,kl={},Tl={},Sl={}}static fromObject({locale:e,numberingSystem:i,outputCalendar:n,weekSettings:r}={}){return t.create(e,i,n,r)}constructor(e,i,n,r,o){let[s,a,l]=Bw(e);this.locale=s,this.numberingSystem=i||a||null,this.outputCalendar=n||l||null,this.weekSettings=r,this.intl=Nw(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=o,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=qw(this)),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),i=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&i?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:t.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,qo(e.weekSettings)||this.weekSettings,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,i=!1){return la(this,e,Ol,()=>{let n=i?{month:e,day:"numeric"}:{month:e},r=i?"format":"standalone";return this.monthsCache[r][e]||(this.monthsCache[r][e]=Fw(o=>this.extract(o,n,"month"))),this.monthsCache[r][e]})}weekdays(e,i=!1){return la(this,e,Pl,()=>{let n=i?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},r=i?"format":"standalone";return this.weekdaysCache[r][e]||(this.weekdaysCache[r][e]=Rw(o=>this.extract(o,n,"weekday"))),this.weekdaysCache[r][e]})}meridiems(){return la(this,void 0,()=>Dl,()=>{if(!this.meridiemCache){let e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[Te.utc(2016,11,13,9),Te.utc(2016,11,13,19)].map(i=>this.extract(i,e,"dayperiod"))}return this.meridiemCache})}eras(e){return la(this,e,Ml,()=>{let i={era:e};return this.eraCache[e]||(this.eraCache[e]=[Te.utc(-40,1,1),Te.utc(2017,1,1)].map(n=>this.extract(n,i,"era"))),this.eraCache[e]})}extract(e,i,n){let r=this.dtFormatter(e,i),o=r.formatToParts(),s=o.find(a=>a.type.toLowerCase()===n);return s?s.value:null}numberFormatter(e={}){return new xl(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,i={}){return new Al(e,this.intl,i)}relFormatter(e={}){return new Il(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Pw(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:da()?jw(this.locale):Lw}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}};var jl=null,Dt=class t extends Qt{static get utcInstance(){return jl===null&&(jl=new t(0)),jl}static instance(e){return e===0?t.utcInstance:new t(e)}static parseSpecifier(e){if(e){let i=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(i)return new t(Yn(i[1],i[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${kn(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${kn(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,i){return kn(this.fixed,i)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}};var Fr=class extends Qt{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function Mi(t,e){let i;if(fe(t)||t===null)return e;if(t instanceof Qt)return t;if(Th(t)){let n=t.toLowerCase();return n==="default"?e:n==="local"||n==="system"?vn.instance:n==="utc"||n==="gmt"?Dt.utcInstance:Dt.parseSpecifier(n)||zt.create(t)}else return Ki(t)?Dt.instance(t):typeof t=="object"&&"offset"in t&&typeof t.offset=="function"?t:new Fr(t)}var Sh=()=>Date.now(),xh="system",Ah=null,Ih=null,Oh=null,Ph=60,Dh,Mh=null,Ie=class{static get now(){return Sh}static set now(e){Sh=e}static set defaultZone(e){xh=e}static get defaultZone(){return Mi(xh,vn.instance)}static get defaultLocale(){return Ah}static set defaultLocale(e){Ah=e}static get defaultNumberingSystem(){return Ih}static set defaultNumberingSystem(e){Ih=e}static get defaultOutputCalendar(){return Oh}static set defaultOutputCalendar(e){Oh=e}static get defaultWeekSettings(){return Mh}static set defaultWeekSettings(e){Mh=qo(e)}static get twoDigitCutoffYear(){return Ph}static set twoDigitCutoffYear(e){Ph=e%100}static get throwOnInvalid(){return Dh}static set throwOnInvalid(e){Dh=e}static resetCaches(){De.resetCache(),zt.resetCache()}};var Mt=class{constructor(e,i){this.reason=e,this.explanation=i}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}};var Eh=[0,31,59,90,120,151,181,212,243,273,304,334],jh=[0,31,60,91,121,152,182,213,244,274,305,335];function pi(t,e){return new Mt("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function fa(t,e,i){let n=new Date(Date.UTC(t,e-1,i));t<100&&t>=0&&n.setUTCFullYear(n.getUTCFullYear()-1900);let r=n.getUTCDay();return r===0?7:r}function Bh(t,e,i){return i+(er(t)?jh:Eh)[e-1]}function Nh(t,e){let i=er(t)?jh:Eh,n=i.findIndex(o=>o<e),r=e-i[n];return{month:n+1,day:r}}function ha(t,e){return(t-e+7)%7+1}function Lo(t,e=4,i=1){let{year:n,month:r,day:o}=t,s=Bh(n,r,o),a=ha(fa(n,r,o),i),l=Math.floor((s-a+14-e)/7),u;return l<1?(u=n-1,l=Qn(u,e,i)):l>Qn(n,e,i)?(u=n+1,l=1):u=n,{weekYear:u,weekNumber:l,weekday:a,...Uo(t)}}function Bl(t,e=4,i=1){let{weekYear:n,weekNumber:r,weekday:o}=t,s=ha(fa(n,1,e),i),a=Cn(n),l=r*7+o-s-7+e,u;l<1?(u=n-1,l+=Cn(u)):l>a?(u=n+1,l-=Cn(n)):u=n;let{month:h,day:y}=Nh(u,l);return{year:u,month:h,day:y,...Uo(t)}}function pa(t){let{year:e,month:i,day:n}=t,r=Bh(e,i,n);return{year:e,ordinal:r,...Uo(t)}}function Nl(t){let{year:e,ordinal:i}=t,{month:n,day:r}=Nh(e,i);return{year:e,month:n,day:r,...Uo(t)}}function Fl(t,e){if(!fe(t.localWeekday)||!fe(t.localWeekNumber)||!fe(t.localWeekYear)){if(!fe(t.weekday)||!fe(t.weekNumber)||!fe(t.weekYear))throw new Oi("Cannot mix locale-based week fields with ISO-based week fields");return fe(t.localWeekday)||(t.weekday=t.localWeekday),fe(t.localWeekNumber)||(t.weekNumber=t.localWeekNumber),fe(t.localWeekYear)||(t.weekYear=t.localWeekYear),delete t.localWeekday,delete t.localWeekNumber,delete t.localWeekYear,{minDaysInFirstWeek:e.getMinDaysInFirstWeek(),startOfWeek:e.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}function Fh(t,e=4,i=1){let n=$o(t.weekYear),r=ci(t.weekNumber,1,Qn(t.weekYear,e,i)),o=ci(t.weekday,1,7);return n?r?o?!1:pi("weekday",t.weekday):pi("week",t.weekNumber):pi("weekYear",t.weekYear)}function Rh(t){let e=$o(t.year),i=ci(t.ordinal,1,Cn(t.year));return e?i?!1:pi("ordinal",t.ordinal):pi("year",t.year)}function Rl(t){let e=$o(t.year),i=ci(t.month,1,12),n=ci(t.day,1,Rr(t.year,t.month));return e?i?n?!1:pi("day",t.day):pi("month",t.month):pi("year",t.year)}function ql(t){let{hour:e,minute:i,second:n,millisecond:r}=t,o=ci(e,0,23)||e===24&&i===0&&n===0&&r===0,s=ci(i,0,59),a=ci(n,0,59),l=ci(r,0,999);return o?s?a?l?!1:pi("millisecond",r):pi("second",n):pi("minute",i):pi("hour",e)}function fe(t){return typeof t>"u"}function Ki(t){return typeof t=="number"}function $o(t){return typeof t=="number"&&t%1===0}function Th(t){return typeof t=="string"}function Lh(t){return Object.prototype.toString.call(t)==="[object Date]"}function ua(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function da(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function $h(t){return Array.isArray(t)?t:[t]}function Ll(t,e,i){if(t.length!==0)return t.reduce((n,r)=>{let o=[e(r),r];return n&&i(n[0],o[0])===n[0]?n:o},null)[1]}function Uh(t,e){return e.reduce((i,n)=>(i[n]=t[n],i),{})}function Tn(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function qo(t){if(t==null)return null;if(typeof t!="object")throw new xt("Week settings must be an object");if(!ci(t.firstDay,1,7)||!ci(t.minimalDays,1,7)||!Array.isArray(t.weekend)||t.weekend.some(e=>!ci(e,1,7)))throw new xt("Invalid week settings");return{firstDay:t.firstDay,minimalDays:t.minimalDays,weekend:Array.from(t.weekend)}}function ci(t,e,i){return $o(t)&&t>=e&&t<=i}function $w(t,e){return t-e*Math.floor(t/e)}function Ke(t,e=2){let i=t<0,n;return i?n="-"+(""+-t).padStart(e,"0"):n=(""+t).padStart(e,"0"),n}function nn(t){if(!(fe(t)||t===null||t===""))return parseInt(t,10)}function Sn(t){if(!(fe(t)||t===null||t===""))return parseFloat(t)}function Ko(t){if(!(fe(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function Nr(t,e,i=!1){let n=10**e;return(i?Math.trunc:Math.round)(t*n)/n}function er(t){return t%4===0&&(t%100!==0||t%400===0)}function Cn(t){return er(t)?366:365}function Rr(t,e){let i=$w(e-1,12)+1,n=t+(e-i)/12;return i===2?er(n)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][i-1]}function Br(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(t.year,t.month-1,t.day)),+e}function qh(t,e,i){return-ha(fa(t,1,e),i)+e-1}function Qn(t,e=4,i=1){let n=qh(t,e,i),r=qh(t+1,e,i);return(Cn(t)-n+r)/7}function Vo(t){return t>99?t:t>Ie.twoDigitCutoffYear?1900+t:2e3+t}function sa(t,e,i,n=null){let r=new Date(t),o={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};n&&(o.timeZone=n);let s={timeZoneName:e,...o},a=new Intl.DateTimeFormat(i,s).formatToParts(r).find(l=>l.type.toLowerCase()==="timezonename");return a?a.value:null}function Yn(t,e){let i=parseInt(t,10);Number.isNaN(i)&&(i=0);let n=parseInt(e,10)||0,r=i<0||Object.is(i,-0)?-n:n;return i*60+r}function $l(t){let e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new xt(`Invalid unit value ${t}`);return e}function qr(t,e){let i={};for(let n in t)if(Tn(t,n)){let r=t[n];if(r==null)continue;i[e(n)]=$l(r)}return i}function kn(t,e){let i=Math.trunc(Math.abs(t/60)),n=Math.trunc(Math.abs(t%60)),r=t>=0?"+":"-";switch(e){case"short":return`${r}${Ke(i,2)}:${Ke(n,2)}`;case"narrow":return`${r}${i}${n>0?`:${n}`:""}`;case"techie":return`${r}${Ke(i,2)}${Ke(n,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function Uo(t){return Uh(t,["hour","minute","second","millisecond"])}var Uw=["January","February","March","April","May","June","July","August","September","October","November","December"],Ul=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Kw=["J","F","M","A","M","J","J","A","S","O","N","D"];function Ol(t){switch(t){case"narrow":return[...Kw];case"short":return[...Ul];case"long":return[...Uw];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}var Kl=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],Vl=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],Vw=["M","T","W","T","F","S","S"];function Pl(t){switch(t){case"narrow":return[...Vw];case"short":return[...Vl];case"long":return[...Kl];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var Dl=["AM","PM"],Ww=["Before Christ","Anno Domini"],zw=["BC","AD"],Gw=["B","A"];function Ml(t){switch(t){case"narrow":return[...Gw];case"short":return[...zw];case"long":return[...Ww];default:return null}}function Kh(t){return Dl[t.hour<12?0:1]}function Vh(t,e){return Pl(e)[t.weekday-1]}function Wh(t,e){return Ol(e)[t.month-1]}function zh(t,e){return Ml(e)[t.year<0?0:1]}function Ch(t,e,i="always",n=!1){let r={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},o=["hours","minutes","seconds"].indexOf(t)===-1;if(i==="auto"&&o){let y=t==="days";switch(e){case 1:return y?"tomorrow":`next ${r[t][0]}`;case-1:return y?"yesterday":`last ${r[t][0]}`;case 0:return y?"today":`this ${r[t][0]}`;default:}}let s=Object.is(e,-0)||e<0,a=Math.abs(e),l=a===1,u=r[t],h=n?l?u[1]:u[2]||u[1]:l?r[t][0]:t;return s?`${a} ${h} ago`:`in ${a} ${h}`}function Gh(t,e){let i="";for(let n of t)n.literal?i+=n.val:i+=e(n.val);return i}var Hw={D:wn,DD:yo,DDD:wo,DDDD:vo,t:ko,tt:Co,ttt:To,tttt:So,T:xo,TT:Ao,TTT:Io,TTTT:Oo,f:Po,ff:Mo,fff:jo,ffff:No,F:Do,FF:Eo,FFF:Bo,FFFF:Fo},Et=class t{static create(e,i={}){return new t(e,i)}static parseFormat(e){let i=null,n="",r=!1,o=[];for(let s=0;s<e.length;s++){let a=e.charAt(s);a==="'"?(n.length>0&&o.push({literal:r||/^\s+$/.test(n),val:n}),i=null,n="",r=!r):r||a===i?n+=a:(n.length>0&&o.push({literal:/^\s+$/.test(n),val:n}),n=a,i=a)}return n.length>0&&o.push({literal:r||/^\s+$/.test(n),val:n}),o}static macroTokenToFormatOpts(e){return Hw[e]}constructor(e,i){this.opts=i,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,i){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...i}).format()}dtFormatter(e,i={}){return this.loc.dtFormatter(e,{...this.opts,...i})}formatDateTime(e,i){return this.dtFormatter(e,i).format()}formatDateTimeParts(e,i){return this.dtFormatter(e,i).formatToParts()}formatInterval(e,i){return this.dtFormatter(e.start,i).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,i){return this.dtFormatter(e,i).resolvedOptions()}num(e,i=0){if(this.opts.forceSimple)return Ke(e,i);let n={...this.opts};return i>0&&(n.padTo=i),this.loc.numberFormatter(n).format(e)}formatDateTimeFromString(e,i){let n=this.loc.listingMode()==="en",r=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",o=(T,O)=>this.loc.extract(e,T,O),s=T=>e.isOffsetFixed&&e.offset===0&&T.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,T.format):"",a=()=>n?Kh(e):o({hour:"numeric",hourCycle:"h12"},"dayperiod"),l=(T,O)=>n?Wh(e,T):o(O?{month:T}:{month:T,day:"numeric"},"month"),u=(T,O)=>n?Vh(e,T):o(O?{weekday:T}:{weekday:T,month:"long",day:"numeric"},"weekday"),h=T=>{let O=t.macroTokenToFormatOpts(T);return O?this.formatWithSystemDefault(e,O):T},y=T=>n?zh(e,T):o({era:T},"era"),v=T=>{switch(T){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return s({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return s({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return s({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return a();case"d":return r?o({day:"numeric"},"day"):this.num(e.day);case"dd":return r?o({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return u("short",!0);case"cccc":return u("long",!0);case"ccccc":return u("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return u("short",!1);case"EEEE":return u("long",!1);case"EEEEE":return u("narrow",!1);case"L":return r?o({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return r?o({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return l("short",!0);case"LLLL":return l("long",!0);case"LLLLL":return l("narrow",!0);case"M":return r?o({month:"numeric"},"month"):this.num(e.month);case"MM":return r?o({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return l("short",!1);case"MMMM":return l("long",!1);case"MMMMM":return l("narrow",!1);case"y":return r?o({year:"numeric"},"year"):this.num(e.year);case"yy":return r?o({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return r?o({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return r?o({year:"numeric"},"year"):this.num(e.year,6);case"G":return y("short");case"GG":return y("long");case"GGGGG":return y("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"n":return this.num(e.localWeekNumber);case"nn":return this.num(e.localWeekNumber,2);case"ii":return this.num(e.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(e.localWeekYear,4);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return h(T)}};return Gh(t.parseFormat(i),v)}formatDurationFromString(e,i){let n=l=>{switch(l[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},r=l=>u=>{let h=n(u);return h?this.num(l.get(h),u.length):u},o=t.parseFormat(i),s=o.reduce((l,{literal:u,val:h})=>u?l:l.concat(h),[]),a=e.shiftTo(...s.map(n).filter(l=>l));return Gh(o,r(a))}};var Zh=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function $r(...t){let e=t.reduce((i,n)=>i+n.source,"");return RegExp(`^${e}$`)}function Ur(...t){return e=>t.reduce(([i,n,r],o)=>{let[s,a,l]=o(e,r);return[{...i,...s},a||n,l]},[{},null,1]).slice(0,2)}function Kr(t,...e){if(t==null)return[null,null];for(let[i,n]of e){let r=i.exec(t);if(r)return n(r)}return[null,null]}function Xh(...t){return(e,i)=>{let n={},r;for(r=0;r<t.length;r++)n[t[r]]=nn(e[i+r]);return[n,null,i+r]}}var Jh=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,Zw=`(?:${Jh.source}?(?:\\[(${Zh.source})\\])?)?`,Wl=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,Yh=RegExp(`${Wl.source}${Zw}`),zl=RegExp(`(?:T${Yh.source})?`),Xw=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Jw=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Yw=/(\d{4})-?(\d{3})/,Qw=Xh("weekYear","weekNumber","weekDay"),ev=Xh("year","ordinal"),tv=/(\d{4})-(\d\d)-(\d\d)/,Qh=RegExp(`${Wl.source} ?(?:${Jh.source}|(${Zh.source}))?`),iv=RegExp(`(?: ${Qh.source})?`);function Lr(t,e,i){let n=t[e];return fe(n)?i:nn(n)}function nv(t,e){return[{year:Lr(t,e),month:Lr(t,e+1,1),day:Lr(t,e+2,1)},null,e+3]}function Vr(t,e){return[{hours:Lr(t,e,0),minutes:Lr(t,e+1,0),seconds:Lr(t,e+2,0),milliseconds:Ko(t[e+3])},null,e+4]}function Wo(t,e){let i=!t[e]&&!t[e+1],n=Yn(t[e+1],t[e+2]),r=i?null:Dt.instance(n);return[{},r,e+3]}function zo(t,e){let i=t[e]?zt.create(t[e]):null;return[{},i,e+1]}var rv=RegExp(`^T?${Wl.source}$`),ov=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function sv(t){let[e,i,n,r,o,s,a,l,u]=t,h=e[0]==="-",y=l&&l[0]==="-",v=(T,O=!1)=>T!==void 0&&(O||T&&h)?-T:T;return[{years:v(Sn(i)),months:v(Sn(n)),weeks:v(Sn(r)),days:v(Sn(o)),hours:v(Sn(s)),minutes:v(Sn(a)),seconds:v(Sn(l),l==="-0"),milliseconds:v(Ko(u),y)}]}var av={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Gl(t,e,i,n,r,o,s){let a={year:e.length===2?Vo(nn(e)):nn(e),month:Ul.indexOf(i)+1,day:nn(n),hour:nn(r),minute:nn(o)};return s&&(a.second=nn(s)),t&&(a.weekday=t.length>3?Kl.indexOf(t)+1:Vl.indexOf(t)+1),a}var cv=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function lv(t){let[,e,i,n,r,o,s,a,l,u,h,y]=t,v=Gl(e,r,n,i,o,s,a),T;return l?T=av[l]:u?T=0:T=Yn(h,y),[v,new Dt(T)]}function uv(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var dv=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,fv=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,hv=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function Hh(t){let[,e,i,n,r,o,s,a]=t;return[Gl(e,r,n,i,o,s,a),Dt.utcInstance]}function pv(t){let[,e,i,n,r,o,s,a]=t;return[Gl(e,a,i,n,r,o,s),Dt.utcInstance]}var mv=$r(Xw,zl),gv=$r(Jw,zl),_v=$r(Yw,zl),bv=$r(Yh),ep=Ur(nv,Vr,Wo,zo),yv=Ur(Qw,Vr,Wo,zo),wv=Ur(ev,Vr,Wo,zo),vv=Ur(Vr,Wo,zo);function tp(t){return Kr(t,[mv,ep],[gv,yv],[_v,wv],[bv,vv])}function ip(t){return Kr(uv(t),[cv,lv])}function np(t){return Kr(t,[dv,Hh],[fv,Hh],[hv,pv])}function rp(t){return Kr(t,[ov,sv])}var kv=Ur(Vr);function op(t){return Kr(t,[rv,kv])}var Cv=$r(tv,iv),Tv=$r(Qh),Sv=Ur(Vr,Wo,zo);function sp(t){return Kr(t,[Cv,ep],[Tv,Sv])}var ap="Invalid Duration",lp={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},xv={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...lp},mi=146097/400,Wr=146097/4800,Av={years:{quarters:4,months:12,weeks:mi/7,days:mi,hours:mi*24,minutes:mi*24*60,seconds:mi*24*60*60,milliseconds:mi*24*60*60*1e3},quarters:{months:3,weeks:mi/28,days:mi/4,hours:mi*24/4,minutes:mi*24*60/4,seconds:mi*24*60*60/4,milliseconds:mi*24*60*60*1e3/4},months:{weeks:Wr/7,days:Wr,hours:Wr*24,minutes:Wr*24*60,seconds:Wr*24*60*60,milliseconds:Wr*24*60*60*1e3},...lp},tr=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Iv=tr.slice(0).reverse();function xn(t,e,i=!1){let n={values:i?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy,matrix:e.matrix||t.matrix};return new je(n)}function up(t,e){let i=e.milliseconds??0;for(let n of Iv.slice(1))e[n]&&(i+=e[n]*t[n].milliseconds);return i}function cp(t,e){let i=up(t,e)<0?-1:1;tr.reduceRight((n,r)=>{if(fe(e[r]))return n;if(n){let o=e[n]*i,s=t[r][n],a=Math.floor(o/s);e[r]+=a*i,e[n]-=a*s*i}return r},null),tr.reduce((n,r)=>{if(fe(e[r]))return n;if(n){let o=e[n]%1;e[n]-=o,e[r]+=o*t[n][r]}return r},null)}function Ov(t){let e={};for(let[i,n]of Object.entries(t))n!==0&&(e[i]=n);return e}var je=class t{constructor(e){let i=e.conversionAccuracy==="longterm"||!1,n=i?Av:xv;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||De.create(),this.conversionAccuracy=i?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,i){return t.fromObject({milliseconds:e},i)}static fromObject(e,i={}){if(e==null||typeof e!="object")throw new xt(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new t({values:qr(e,t.normalizeUnit),loc:De.fromObject(i),conversionAccuracy:i.conversionAccuracy,matrix:i.matrix})}static fromDurationLike(e){if(Ki(e))return t.fromMillis(e);if(t.isDuration(e))return e;if(typeof e=="object")return t.fromObject(e);throw new xt(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,i){let[n]=rp(e);return n?t.fromObject(n,i):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,i){let[n]=op(e);return n?t.fromObject(n,i):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,i=null){if(!e)throw new xt("need to specify a reason the Duration is invalid");let n=e instanceof Mt?e:new Mt(e,i);if(Ie.throwOnInvalid)throw new ra(n);return new t({invalid:n})}static normalizeUnit(e){let i={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!i)throw new jr(e);return i}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,i={}){let n={...i,floor:i.round!==!1&&i.floor!==!1};return this.isValid?Et.create(this.loc,n).formatDurationFromString(this,e):ap}toHuman(e={}){if(!this.isValid)return ap;let i=tr.map(n=>{let r=this.values[n];return fe(r)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:n.slice(0,-1)}).format(r)}).filter(n=>n);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(i)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=Nr(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;let i=this.toMillis();return i<0||i>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1},Te.fromMillis(i,{zone:"UTC"}).toISOTime(e))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?up(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;let i=t.fromDurationLike(e),n={};for(let r of tr)(Tn(i.values,r)||Tn(this.values,r))&&(n[r]=i.get(r)+this.get(r));return xn(this,{values:n},!0)}minus(e){if(!this.isValid)return this;let i=t.fromDurationLike(e);return this.plus(i.negate())}mapUnits(e){if(!this.isValid)return this;let i={};for(let n of Object.keys(this.values))i[n]=$l(e(this.values[n],n));return xn(this,{values:i},!0)}get(e){return this[t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let i={...this.values,...qr(e,t.normalizeUnit)};return xn(this,{values:i})}reconfigure({locale:e,numberingSystem:i,conversionAccuracy:n,matrix:r}={}){let s={loc:this.loc.clone({locale:e,numberingSystem:i}),matrix:r,conversionAccuracy:n};return xn(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return cp(this.matrix,e),xn(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=Ov(this.normalize().shiftToAll().toObject());return xn(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(s=>t.normalizeUnit(s));let i={},n={},r=this.toObject(),o;for(let s of tr)if(e.indexOf(s)>=0){o=s;let a=0;for(let u in n)a+=this.matrix[u][s]*n[u],n[u]=0;Ki(r[s])&&(a+=r[s]);let l=Math.trunc(a);i[s]=l,n[s]=(a*1e3-l*1e3)/1e3}else Ki(r[s])&&(n[s]=r[s]);for(let s in n)n[s]!==0&&(i[o]+=s===o?n[s]:n[s]/this.matrix[o][s]);return cp(this.matrix,i),xn(this,{values:i},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;let e={};for(let i of Object.keys(this.values))e[i]=this.values[i]===0?0:-this.values[i];return xn(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function i(n,r){return n===void 0||n===0?r===void 0||r===0:n===r}for(let n of tr)if(!i(this.values[n],e.values[n]))return!1;return!0}};var zr="Invalid Interval";function Pv(t,e){return!t||!t.isValid?rn.invalid("missing or invalid start"):!e||!e.isValid?rn.invalid("missing or invalid end"):e<t?rn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}var rn=class t{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,i=null){if(!e)throw new xt("need to specify a reason the Interval is invalid");let n=e instanceof Mt?e:new Mt(e,i);if(Ie.throwOnInvalid)throw new na(n);return new t({invalid:n})}static fromDateTimes(e,i){let n=Gr(e),r=Gr(i),o=Pv(n,r);return o??new t({start:n,end:r})}static after(e,i){let n=je.fromDurationLike(i),r=Gr(e);return t.fromDateTimes(r,r.plus(n))}static before(e,i){let n=je.fromDurationLike(i),r=Gr(e);return t.fromDateTimes(r.minus(n),r)}static fromISO(e,i){let[n,r]=(e||"").split("/",2);if(n&&r){let o,s;try{o=Te.fromISO(n,i),s=o.isValid}catch{s=!1}let a,l;try{a=Te.fromISO(r,i),l=a.isValid}catch{l=!1}if(s&&l)return t.fromDateTimes(o,a);if(s){let u=je.fromISO(r,i);if(u.isValid)return t.after(o,u)}else if(l){let u=je.fromISO(n,i);if(u.isValid)return t.before(a,u)}}return t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds",i){if(!this.isValid)return NaN;let n=this.start.startOf(e,i),r;return i?.useLocaleWeeks?r=this.end.reconfigure({locale:n.locale}):r=this.end,r=r.startOf(e,i),Math.floor(r.diff(n,e).get(e))+(r.valueOf()!==this.end.valueOf())}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:i}={}){return this.isValid?t.fromDateTimes(e||this.s,i||this.e):this}splitAt(...e){if(!this.isValid)return[];let i=e.map(Gr).filter(s=>this.contains(s)).sort((s,a)=>s.toMillis()-a.toMillis()),n=[],{s:r}=this,o=0;for(;r<this.e;){let s=i[o]||this.e,a=+s>+this.e?this.e:s;n.push(t.fromDateTimes(r,a)),r=a,o+=1}return n}splitBy(e){let i=je.fromDurationLike(e);if(!this.isValid||!i.isValid||i.as("milliseconds")===0)return[];let{s:n}=this,r=1,o,s=[];for(;n<this.e;){let a=this.start.plus(i.mapUnits(l=>l*r));o=+a>+this.e?this.e:a,s.push(t.fromDateTimes(n,o)),n=o,r+=1}return s}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;let i=this.s>e.s?this.s:e.s,n=this.e<e.e?this.e:e.e;return i>=n?null:t.fromDateTimes(i,n)}union(e){if(!this.isValid)return this;let i=this.s<e.s?this.s:e.s,n=this.e>e.e?this.e:e.e;return t.fromDateTimes(i,n)}static merge(e){let[i,n]=e.sort((r,o)=>r.s-o.s).reduce(([r,o],s)=>o?o.overlaps(s)||o.abutsStart(s)?[r,o.union(s)]:[r.concat([o]),s]:[r,s],[[],null]);return n&&i.push(n),i}static xor(e){let i=null,n=0,r=[],o=e.map(l=>[{time:l.s,type:"s"},{time:l.e,type:"e"}]),s=Array.prototype.concat(...o),a=s.sort((l,u)=>l.time-u.time);for(let l of a)n+=l.type==="s"?1:-1,n===1?i=l.time:(i&&+i!=+l.time&&r.push(t.fromDateTimes(i,l.time)),i=null);return t.merge(r)}difference(...e){return t.xor([this].concat(e)).map(i=>this.intersection(i)).filter(i=>i&&!i.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \u2013 ${this.e.toISO()})`:zr}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=wn,i={}){return this.isValid?Et.create(this.s.loc.clone(i),e).formatInterval(this):zr}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:zr}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:zr}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:zr}toFormat(e,{separator:i=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${i}${this.e.toFormat(e)}`:zr}toDuration(e,i){return this.isValid?this.e.diff(this.s,e,i):je.invalid(this.invalidReason)}mapEndpoints(e){return t.fromDateTimes(e(this.s),e(this.e))}};var on=class{static hasDST(e=Ie.defaultZone){let i=Te.now().setZone(e).set({month:12});return!e.isUniversal&&i.offset!==i.set({month:6}).offset}static isValidIANAZone(e){return zt.isValidZone(e)}static normalizeZone(e){return Mi(e,Ie.defaultZone)}static getStartOfWeek({locale:e=null,locObj:i=null}={}){return(i||De.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:i=null}={}){return(i||De.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:i=null}={}){return(i||De.create(e)).getWeekendDays().slice()}static months(e="long",{locale:i=null,numberingSystem:n=null,locObj:r=null,outputCalendar:o="gregory"}={}){return(r||De.create(i,n,o)).months(e)}static monthsFormat(e="long",{locale:i=null,numberingSystem:n=null,locObj:r=null,outputCalendar:o="gregory"}={}){return(r||De.create(i,n,o)).months(e,!0)}static weekdays(e="long",{locale:i=null,numberingSystem:n=null,locObj:r=null}={}){return(r||De.create(i,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:i=null,numberingSystem:n=null,locObj:r=null}={}){return(r||De.create(i,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return De.create(e).meridiems()}static eras(e="short",{locale:i=null}={}){return De.create(i,null,"gregory").eras(e)}static features(){return{relative:ua(),localeWeek:da()}}};function dp(t,e){let i=r=>r.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),n=i(e)-i(t);return Math.floor(je.fromMillis(n).as("days"))}function Dv(t,e,i){let n=[["years",(l,u)=>u.year-l.year],["quarters",(l,u)=>u.quarter-l.quarter+(u.year-l.year)*4],["months",(l,u)=>u.month-l.month+(u.year-l.year)*12],["weeks",(l,u)=>{let h=dp(l,u);return(h-h%7)/7}],["days",dp]],r={},o=t,s,a;for(let[l,u]of n)i.indexOf(l)>=0&&(s=l,r[l]=u(t,e),a=o.plus(r),a>e?(r[l]--,t=o.plus(r),t>e&&(a=t,r[l]--,t=o.plus(r))):t=a);return[t,r,a,s]}function fp(t,e,i,n){let[r,o,s,a]=Dv(t,e,i),l=e-r,u=i.filter(y=>["hours","minutes","seconds","milliseconds"].indexOf(y)>=0);u.length===0&&(s<e&&(s=r.plus({[a]:1})),s!==r&&(o[a]=(o[a]||0)+l/(s-r)));let h=je.fromObject(o,n);return u.length>0?je.fromMillis(l,n).shiftTo(...u).plus(h):h}var Hl={arab:"[\u0660-\u0669]",arabext:"[\u06F0-\u06F9]",bali:"[\u1B50-\u1B59]",beng:"[\u09E6-\u09EF]",deva:"[\u0966-\u096F]",fullwide:"[\uFF10-\uFF19]",gujr:"[\u0AE6-\u0AEF]",hanidec:"[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]",khmr:"[\u17E0-\u17E9]",knda:"[\u0CE6-\u0CEF]",laoo:"[\u0ED0-\u0ED9]",limb:"[\u1946-\u194F]",mlym:"[\u0D66-\u0D6F]",mong:"[\u1810-\u1819]",mymr:"[\u1040-\u1049]",orya:"[\u0B66-\u0B6F]",tamldec:"[\u0BE6-\u0BEF]",telu:"[\u0C66-\u0C6F]",thai:"[\u0E50-\u0E59]",tibt:"[\u0F20-\u0F29]",latn:"\\d"},hp={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},Mv=Hl.hanidec.replace(/[\[|\]]/g,"").split("");function pp(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let i=0;i<t.length;i++){let n=t.charCodeAt(i);if(t[i].search(Hl.hanidec)!==-1)e+=Mv.indexOf(t[i]);else for(let r in hp){let[o,s]=hp[r];n>=o&&n<=s&&(e+=n-o)}}return parseInt(e,10)}else return e}function gi({numberingSystem:t},e=""){return new RegExp(`${Hl[t||"latn"]}${e}`)}var Ev="missing Intl.DateTimeFormat.formatToParts support";function Oe(t,e=i=>i){return{regex:t,deser:([i])=>e(pp(i))}}var jv="\xA0",_p=`[ ${jv}]`,bp=new RegExp(_p,"g");function Bv(t){return t.replace(/\./g,"\\.?").replace(bp,_p)}function mp(t){return t.replace(/\./g,"").replace(bp," ").toLowerCase()}function Ei(t,e){return t===null?null:{regex:RegExp(t.map(Bv).join("|")),deser:([i])=>t.findIndex(n=>mp(i)===mp(n))+e}}function gp(t,e){return{regex:t,deser:([,i,n])=>Yn(i,n),groups:e}}function ma(t){return{regex:t,deser:([e])=>e}}function Nv(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function Fv(t,e){let i=gi(e),n=gi(e,"{2}"),r=gi(e,"{3}"),o=gi(e,"{4}"),s=gi(e,"{6}"),a=gi(e,"{1,2}"),l=gi(e,"{1,3}"),u=gi(e,"{1,6}"),h=gi(e,"{1,9}"),y=gi(e,"{2,4}"),v=gi(e,"{4,6}"),T=j=>({regex:RegExp(Nv(j.val)),deser:([B])=>B,literal:!0}),P=(j=>{if(t.literal)return T(j);switch(j.val){case"G":return Ei(e.eras("short"),0);case"GG":return Ei(e.eras("long"),0);case"y":return Oe(u);case"yy":return Oe(y,Vo);case"yyyy":return Oe(o);case"yyyyy":return Oe(v);case"yyyyyy":return Oe(s);case"M":return Oe(a);case"MM":return Oe(n);case"MMM":return Ei(e.months("short",!0),1);case"MMMM":return Ei(e.months("long",!0),1);case"L":return Oe(a);case"LL":return Oe(n);case"LLL":return Ei(e.months("short",!1),1);case"LLLL":return Ei(e.months("long",!1),1);case"d":return Oe(a);case"dd":return Oe(n);case"o":return Oe(l);case"ooo":return Oe(r);case"HH":return Oe(n);case"H":return Oe(a);case"hh":return Oe(n);case"h":return Oe(a);case"mm":return Oe(n);case"m":return Oe(a);case"q":return Oe(a);case"qq":return Oe(n);case"s":return Oe(a);case"ss":return Oe(n);case"S":return Oe(l);case"SSS":return Oe(r);case"u":return ma(h);case"uu":return ma(a);case"uuu":return Oe(i);case"a":return Ei(e.meridiems(),0);case"kkkk":return Oe(o);case"kk":return Oe(y,Vo);case"W":return Oe(a);case"WW":return Oe(n);case"E":case"c":return Oe(i);case"EEE":return Ei(e.weekdays("short",!1),1);case"EEEE":return Ei(e.weekdays("long",!1),1);case"ccc":return Ei(e.weekdays("short",!0),1);case"cccc":return Ei(e.weekdays("long",!0),1);case"Z":case"ZZ":return gp(new RegExp(`([+-]${a.source})(?::(${n.source}))?`),2);case"ZZZ":return gp(new RegExp(`([+-]${a.source})(${n.source})?`),2);case"z":return ma(/[a-z_+-/]{1,256}?/i);case" ":return ma(/[^\S\n\r]/);default:return T(j)}})(t)||{invalidReason:Ev};return P.token=t,P}var Rv={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};function qv(t,e,i){let{type:n,value:r}=t;if(n==="literal"){let l=/^\s+$/.test(r);return{literal:!l,val:l?" ":r}}let o=e[n],s=n;n==="hour"&&(e.hour12!=null?s=e.hour12?"hour12":"hour24":e.hourCycle!=null?e.hourCycle==="h11"||e.hourCycle==="h12"?s="hour12":s="hour24":s=i.hour12?"hour12":"hour24");let a=Rv[s];if(typeof a=="object"&&(a=a[o]),a)return{literal:!1,val:a}}function Lv(t){return[`^${t.map(i=>i.regex).reduce((i,n)=>`${i}(${n.source})`,"")}$`,t]}function $v(t,e,i){let n=t.match(e);if(n){let r={},o=1;for(let s in i)if(Tn(i,s)){let a=i[s],l=a.groups?a.groups+1:1;!a.literal&&a.token&&(r[a.token.val[0]]=a.deser(n.slice(o,o+l))),o+=l}return[n,r]}else return[n,{}]}function Uv(t){let e=o=>{switch(o){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}},i=null,n;return fe(t.z)||(i=zt.create(t.z)),fe(t.Z)||(i||(i=new Dt(t.Z)),n=t.Z),fe(t.q)||(t.M=(t.q-1)*3+1),fe(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),fe(t.u)||(t.S=Ko(t.u)),[Object.keys(t).reduce((o,s)=>{let a=e(s);return a&&(o[a]=t[s]),o},{}),i,n]}var Zl=null;function Kv(){return Zl||(Zl=Te.fromMillis(1555555555555)),Zl}function Vv(t,e){if(t.literal)return t;let i=Et.macroTokenToFormatOpts(t.val),n=Yl(i,e);return n==null||n.includes(void 0)?t:n}function Xl(t,e){return Array.prototype.concat(...t.map(i=>Vv(i,e)))}function Jl(t,e,i){let n=Xl(Et.parseFormat(i),t),r=n.map(s=>Fv(s,t)),o=r.find(s=>s.invalidReason);if(o)return{input:e,tokens:n,invalidReason:o.invalidReason};{let[s,a]=Lv(r),l=RegExp(s,"i"),[u,h]=$v(e,l,a),[y,v,T]=h?Uv(h):[null,null,void 0];if(Tn(h,"a")&&Tn(h,"H"))throw new Oi("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:n,regex:l,rawMatches:u,matches:h,result:y,zone:v,specificOffset:T}}}function yp(t,e,i){let{result:n,zone:r,specificOffset:o,invalidReason:s}=Jl(t,e,i);return[n,r,o,s]}function Yl(t,e){if(!t)return null;let n=Et.create(e,t).dtFormatter(Kv()),r=n.formatToParts(),o=n.resolvedOptions();return r.map(s=>qv(s,t,o))}var Ql="Invalid DateTime",wp=864e13;function ga(t){return new Mt("unsupported zone",`the zone "${t.name}" is not supported`)}function eu(t){return t.weekData===null&&(t.weekData=Lo(t.c)),t.weekData}function tu(t){return t.localWeekData===null&&(t.localWeekData=Lo(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}function ir(t,e){let i={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new Te({...i,...e,old:i})}function Ap(t,e,i){let n=t-e*60*1e3,r=i.offset(n);if(e===r)return[n,e];n-=(r-e)*60*1e3;let o=i.offset(n);return r===o?[n,r]:[t-Math.min(r,o)*60*1e3,Math.max(r,o)]}function _a(t,e){t+=e*60*1e3;let i=new Date(t);return{year:i.getUTCFullYear(),month:i.getUTCMonth()+1,day:i.getUTCDate(),hour:i.getUTCHours(),minute:i.getUTCMinutes(),second:i.getUTCSeconds(),millisecond:i.getUTCMilliseconds()}}function ya(t,e,i){return Ap(Br(t),e,i)}function vp(t,e){let i=t.o,n=t.c.year+Math.trunc(e.years),r=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,o={...t.c,year:n,month:r,day:Math.min(t.c.day,Rr(n,r))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},s=je.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),a=Br(o),[l,u]=Ap(a,i,t.zone);return s!==0&&(l+=s,u=t.zone.offset(l)),{ts:l,o:u}}function Go(t,e,i,n,r,o){let{setZone:s,zone:a}=i;if(t&&Object.keys(t).length!==0||e){let l=e||a,u=Te.fromObject(t,{...i,zone:l,specificOffset:o});return s?u:u.setZone(a)}else return Te.invalid(new Mt("unparsable",`the input "${r}" can't be parsed as ${n}`))}function ba(t,e,i=!0){return t.isValid?Et.create(De.create("en-US"),{allowZ:i,forceSimple:!0}).formatDateTimeFromString(t,e):null}function iu(t,e){let i=t.c.year>9999||t.c.year<0,n="";return i&&t.c.year>=0&&(n+="+"),n+=Ke(t.c.year,i?6:4),e?(n+="-",n+=Ke(t.c.month),n+="-",n+=Ke(t.c.day)):(n+=Ke(t.c.month),n+=Ke(t.c.day)),n}function kp(t,e,i,n,r,o){let s=Ke(t.c.hour);return e?(s+=":",s+=Ke(t.c.minute),(t.c.millisecond!==0||t.c.second!==0||!i)&&(s+=":")):s+=Ke(t.c.minute),(t.c.millisecond!==0||t.c.second!==0||!i)&&(s+=Ke(t.c.second),(t.c.millisecond!==0||!n)&&(s+=".",s+=Ke(t.c.millisecond,3))),r&&(t.isOffsetFixed&&t.offset===0&&!o?s+="Z":t.o<0?(s+="-",s+=Ke(Math.trunc(-t.o/60)),s+=":",s+=Ke(Math.trunc(-t.o%60))):(s+="+",s+=Ke(Math.trunc(t.o/60)),s+=":",s+=Ke(Math.trunc(t.o%60)))),o&&(s+="["+t.zone.ianaName+"]"),s}var Ip={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},Wv={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},zv={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Op=["year","month","day","hour","minute","second","millisecond"],Gv=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],Hv=["year","ordinal","hour","minute","second","millisecond"];function Zv(t){let e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[t.toLowerCase()];if(!e)throw new jr(t);return e}function Cp(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return Zv(t)}}function Tp(t,e){let i=Mi(e.zone,Ie.defaultZone),n=De.fromObject(e),r=Ie.now(),o,s;if(fe(t.year))o=r;else{for(let u of Op)fe(t[u])&&(t[u]=Ip[u]);let a=Rl(t)||ql(t);if(a)return Te.invalid(a);let l=i.offset(r);[o,s]=ya(t,l,i)}return new Te({ts:o,zone:i,loc:n,o:s})}function Sp(t,e,i){let n=fe(i.round)?!0:i.round,r=(s,a)=>(s=Nr(s,n||i.calendary?0:2,!0),e.loc.clone(i).relFormatter(i).format(s,a)),o=s=>i.calendary?e.hasSame(t,s)?0:e.startOf(s).diff(t.startOf(s),s).get(s):e.diff(t,s).get(s);if(i.unit)return r(o(i.unit),i.unit);for(let s of i.units){let a=o(s);if(Math.abs(a)>=1)return r(a,s)}return r(t>e?-0:0,i.units[i.units.length-1])}function xp(t){let e={},i;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],i=Array.from(t).slice(0,t.length-1)):i=Array.from(t),[e,i]}var Te=class t{constructor(e){let i=e.zone||Ie.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new Mt("invalid input"):null)||(i.isValid?null:ga(i));this.ts=fe(e.ts)?Ie.now():e.ts;let r=null,o=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(i))[r,o]=[e.old.c,e.old.o];else{let a=i.offset(this.ts);r=_a(this.ts,a),n=Number.isNaN(r.year)?new Mt("invalid input"):null,r=n?null:r,o=n?null:a}this._zone=i,this.loc=e.loc||De.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=r,this.o=o,this.isLuxonDateTime=!0}static now(){return new t({})}static local(){let[e,i]=xp(arguments),[n,r,o,s,a,l,u]=i;return Tp({year:n,month:r,day:o,hour:s,minute:a,second:l,millisecond:u},e)}static utc(){let[e,i]=xp(arguments),[n,r,o,s,a,l,u]=i;return e.zone=Dt.utcInstance,Tp({year:n,month:r,day:o,hour:s,minute:a,second:l,millisecond:u},e)}static fromJSDate(e,i={}){let n=Lh(e)?e.valueOf():NaN;if(Number.isNaN(n))return t.invalid("invalid input");let r=Mi(i.zone,Ie.defaultZone);return r.isValid?new t({ts:n,zone:r,loc:De.fromObject(i)}):t.invalid(ga(r))}static fromMillis(e,i={}){if(Ki(e))return e<-wp||e>wp?t.invalid("Timestamp out of range"):new t({ts:e,zone:Mi(i.zone,Ie.defaultZone),loc:De.fromObject(i)});throw new xt(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,i={}){if(Ki(e))return new t({ts:e*1e3,zone:Mi(i.zone,Ie.defaultZone),loc:De.fromObject(i)});throw new xt("fromSeconds requires a numerical input")}static fromObject(e,i={}){e=e||{};let n=Mi(i.zone,Ie.defaultZone);if(!n.isValid)return t.invalid(ga(n));let r=De.fromObject(i),o=qr(e,Cp),{minDaysInFirstWeek:s,startOfWeek:a}=Fl(o,r),l=Ie.now(),u=fe(i.specificOffset)?n.offset(l):i.specificOffset,h=!fe(o.ordinal),y=!fe(o.year),v=!fe(o.month)||!fe(o.day),T=y||v,O=o.weekYear||o.weekNumber;if((T||h)&&O)throw new Oi("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(v&&h)throw new Oi("Can't mix ordinal dates with month/day");let P=O||o.weekday&&!T,j,B,D=_a(l,u);P?(j=Gv,B=Wv,D=Lo(D,s,a)):h?(j=Hv,B=zv,D=pa(D)):(j=Op,B=Ip);let q=!1;for(let A of j){let E=o[A];fe(E)?q?o[A]=B[A]:o[A]=D[A]:q=!0}let K=P?Fh(o,s,a):h?Rh(o):Rl(o),Z=K||ql(o);if(Z)return t.invalid(Z);let G=P?Bl(o,s,a):h?Nl(o):o,[J,x]=ya(G,u,n),I=new t({ts:J,zone:n,o:x,loc:r});return o.weekday&&T&&e.weekday!==I.weekday?t.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${I.toISO()}`):I}static fromISO(e,i={}){let[n,r]=tp(e);return Go(n,r,i,"ISO 8601",e)}static fromRFC2822(e,i={}){let[n,r]=ip(e);return Go(n,r,i,"RFC 2822",e)}static fromHTTP(e,i={}){let[n,r]=np(e);return Go(n,r,i,"HTTP",i)}static fromFormat(e,i,n={}){if(fe(e)||fe(i))throw new xt("fromFormat requires an input string and a format");let{locale:r=null,numberingSystem:o=null}=n,s=De.fromOpts({locale:r,numberingSystem:o,defaultToEN:!0}),[a,l,u,h]=yp(s,e,i);return h?t.invalid(h):Go(a,l,n,`format ${i}`,e,u)}static fromString(e,i,n={}){return t.fromFormat(e,i,n)}static fromSQL(e,i={}){let[n,r]=sp(e);return Go(n,r,i,"SQL",e)}static invalid(e,i=null){if(!e)throw new xt("need to specify a reason the DateTime is invalid");let n=e instanceof Mt?e:new Mt(e,i);if(Ie.throwOnInvalid)throw new ia(n);return new t({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,i={}){let n=Yl(e,De.fromObject(i));return n?n.map(r=>r?r.val:null).join(""):null}static expandFormat(e,i={}){return Xl(Et.parseFormat(e),De.fromObject(i)).map(r=>r.val).join("")}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?eu(this).weekYear:NaN}get weekNumber(){return this.isValid?eu(this).weekNumber:NaN}get weekday(){return this.isValid?eu(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?tu(this).weekday:NaN}get localWeekNumber(){return this.isValid?tu(this).weekNumber:NaN}get localWeekYear(){return this.isValid?tu(this).weekYear:NaN}get ordinal(){return this.isValid?pa(this.c).ordinal:NaN}get monthShort(){return this.isValid?on.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?on.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?on.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?on.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let e=864e5,i=6e4,n=Br(this.c),r=this.zone.offset(n-e),o=this.zone.offset(n+e),s=this.zone.offset(n-r*i),a=this.zone.offset(n-o*i);if(s===a)return[this];let l=n-s*i,u=n-a*i,h=_a(l,s),y=_a(u,a);return h.hour===y.hour&&h.minute===y.minute&&h.second===y.second&&h.millisecond===y.millisecond?[ir(this,{ts:l}),ir(this,{ts:u})]:[this]}get isInLeapYear(){return er(this.year)}get daysInMonth(){return Rr(this.year,this.month)}get daysInYear(){return this.isValid?Cn(this.year):NaN}get weeksInWeekYear(){return this.isValid?Qn(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?Qn(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:i,numberingSystem:n,calendar:r}=Et.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:i,numberingSystem:n,outputCalendar:r}}toUTC(e=0,i={}){return this.setZone(Dt.instance(e),i)}toLocal(){return this.setZone(Ie.defaultZone)}setZone(e,{keepLocalTime:i=!1,keepCalendarTime:n=!1}={}){if(e=Mi(e,Ie.defaultZone),e.equals(this.zone))return this;if(e.isValid){let r=this.ts;if(i||n){let o=e.offset(this.ts),s=this.toObject();[r]=ya(s,o,e)}return ir(this,{ts:r,zone:e})}else return t.invalid(ga(e))}reconfigure({locale:e,numberingSystem:i,outputCalendar:n}={}){let r=this.loc.clone({locale:e,numberingSystem:i,outputCalendar:n});return ir(this,{loc:r})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let i=qr(e,Cp),{minDaysInFirstWeek:n,startOfWeek:r}=Fl(i,this.loc),o=!fe(i.weekYear)||!fe(i.weekNumber)||!fe(i.weekday),s=!fe(i.ordinal),a=!fe(i.year),l=!fe(i.month)||!fe(i.day),u=a||l,h=i.weekYear||i.weekNumber;if((u||s)&&h)throw new Oi("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&s)throw new Oi("Can't mix ordinal dates with month/day");let y;o?y=Bl({...Lo(this.c,n,r),...i},n,r):fe(i.ordinal)?(y={...this.toObject(),...i},fe(i.day)&&(y.day=Math.min(Rr(y.year,y.month),y.day))):y=Nl({...pa(this.c),...i});let[v,T]=ya(y,this.o,this.zone);return ir(this,{ts:v,o:T})}plus(e){if(!this.isValid)return this;let i=je.fromDurationLike(e);return ir(this,vp(this,i))}minus(e){if(!this.isValid)return this;let i=je.fromDurationLike(e).negate();return ir(this,vp(this,i))}startOf(e,{useLocaleWeeks:i=!1}={}){if(!this.isValid)return this;let n={},r=je.normalizeUnit(e);switch(r){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break;case"milliseconds":break}if(r==="weeks")if(i){let o=this.loc.getStartOfWeek(),{weekday:s}=this;s<o&&(n.weekNumber=this.weekNumber-1),n.weekday=o}else n.weekday=1;if(r==="quarters"){let o=Math.ceil(this.month/3);n.month=(o-1)*3+1}return this.set(n)}endOf(e,i){return this.isValid?this.plus({[e]:1}).startOf(e,i).minus(1):this}toFormat(e,i={}){return this.isValid?Et.create(this.loc.redefaultToEN(i)).formatDateTimeFromString(this,e):Ql}toLocaleString(e=wn,i={}){return this.isValid?Et.create(this.loc.clone(i),e).formatDateTime(this):Ql}toLocaleParts(e={}){return this.isValid?Et.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:i=!1,suppressMilliseconds:n=!1,includeOffset:r=!0,extendedZone:o=!1}={}){if(!this.isValid)return null;let s=e==="extended",a=iu(this,s);return a+="T",a+=kp(this,s,i,n,r,o),a}toISODate({format:e="extended"}={}){return this.isValid?iu(this,e==="extended"):null}toISOWeekDate(){return ba(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:i=!1,includeOffset:n=!0,includePrefix:r=!1,extendedZone:o=!1,format:s="extended"}={}){return this.isValid?(r?"T":"")+kp(this,s==="extended",i,e,n,o):null}toRFC2822(){return ba(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return ba(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?iu(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:i=!1,includeOffsetSpace:n=!0}={}){let r="HH:mm:ss.SSS";return(i||e)&&(n&&(r+=" "),i?r+="z":e&&(r+="ZZ")),ba(this,r,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():Ql}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`:`DateTime { Invalid, reason: ${this.invalidReason} }`}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};let i={...this.c};return e.includeConfig&&(i.outputCalendar=this.outputCalendar,i.numberingSystem=this.loc.numberingSystem,i.locale=this.loc.locale),i}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,i="milliseconds",n={}){if(!this.isValid||!e.isValid)return je.invalid("created by diffing an invalid DateTime");let r={locale:this.locale,numberingSystem:this.numberingSystem,...n},o=$h(i).map(je.normalizeUnit),s=e.valueOf()>this.valueOf(),a=s?this:e,l=s?e:this,u=fp(a,l,o,r);return s?u.negate():u}diffNow(e="milliseconds",i={}){return this.diff(t.now(),e,i)}until(e){return this.isValid?rn.fromDateTimes(this,e):this}hasSame(e,i,n){if(!this.isValid)return!1;let r=e.valueOf(),o=this.setZone(e.zone,{keepLocalTime:!0});return o.startOf(i,n)<=r&&r<=o.endOf(i,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;let i=e.base||t.fromObject({},{zone:this.zone}),n=e.padding?this<i?-e.padding:e.padding:0,r=["years","months","days","hours","minutes","seconds"],o=e.unit;return Array.isArray(e.unit)&&(r=e.unit,o=void 0),Sp(i,this.plus(n),{...e,numeric:"always",units:r,unit:o})}toRelativeCalendar(e={}){return this.isValid?Sp(e.base||t.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(t.isDateTime))throw new xt("min requires all arguments be DateTimes");return Ll(e,i=>i.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new xt("max requires all arguments be DateTimes");return Ll(e,i=>i.valueOf(),Math.max)}static fromFormatExplain(e,i,n={}){let{locale:r=null,numberingSystem:o=null}=n,s=De.fromOpts({locale:r,numberingSystem:o,defaultToEN:!0});return Jl(s,e,i)}static fromStringExplain(e,i,n={}){return t.fromFormatExplain(e,i,n)}static get DATE_SHORT(){return wn}static get DATE_MED(){return yo}static get DATE_MED_WITH_WEEKDAY(){return yl}static get DATE_FULL(){return wo}static get DATE_HUGE(){return vo}static get TIME_SIMPLE(){return ko}static get TIME_WITH_SECONDS(){return Co}static get TIME_WITH_SHORT_OFFSET(){return To}static get TIME_WITH_LONG_OFFSET(){return So}static get TIME_24_SIMPLE(){return xo}static get TIME_24_WITH_SECONDS(){return Ao}static get TIME_24_WITH_SHORT_OFFSET(){return Io}static get TIME_24_WITH_LONG_OFFSET(){return Oo}static get DATETIME_SHORT(){return Po}static get DATETIME_SHORT_WITH_SECONDS(){return Do}static get DATETIME_MED(){return Mo}static get DATETIME_MED_WITH_SECONDS(){return Eo}static get DATETIME_MED_WITH_WEEKDAY(){return wl}static get DATETIME_FULL(){return jo}static get DATETIME_FULL_WITH_SECONDS(){return Bo}static get DATETIME_HUGE(){return No}static get DATETIME_HUGE_WITH_SECONDS(){return Fo}};function Gr(t){if(Te.isDateTime(t))return t;if(t&&t.valueOf&&Ki(t.valueOf()))return Te.fromJSDate(t);if(t&&typeof t=="object")return Te.fromObject(t);throw new xt(`Unknown datetime argument: ${t}, of type ${typeof t}`)}var ro=require("@mysten/sui.js/utils");var Rn=require("@mysten/sui.js/utils");var e0=we(ws(),1),t0=require("@msafe/sui3-utils"),i0=require("@msafe/sui3-utils"),n0=require("@msafe/sui3-utils"),Nu=require("@mysten/sui.js/bcs"),jn=require("@mysten/sui.js/utils"),o0=require("@msafe/sui3-utils"),io=require("@msafe/sui3-utils"),s0=require("@msafe/sui3-utils"),c0=require("@msafe/sui3-utils"),u0=require("@msafe/sui3-utils"),d0=require("@mysten/sui.js/transactions"),h0=require("@msafe/sui3-utils"),Qr=require("@msafe/sui3-utils"),Fu=require("@mysten/sui.js/bcs"),Bn=require("@mysten/sui.js/utils"),p0=require("@mysten/sui.js/transactions"),g0=require("@mysten/sui.js/transactions"),b0=require("@mysten/sui.js/transactions"),v0=require("@mysten/sui.js/transactions"),C0=require("@mysten/sui.js/transactions"),Ja=require("@msafe/sui3-utils"),S0=require("@mysten/sui.js/transactions"),Ya=require("@mysten/sui.js/utils"),M4=we(ws(),1),x0=require("@msafe/sui3-utils"),At=require("@msafe/sui3-utils"),Za=require("@mysten/sui.js/bcs"),Nn=require("@mysten/sui.js/utils"),We=require("@mysten/sui.js/transactions"),P0=require("@mysten/sui.js/utils");var Xv=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,nu=Math.ceil,bi=Math.floor,ei="[BigNumber Error] ",Pp=ei+"Number primitive has more than 15 significant digits: ",ji=1e14,ye=14,ru=9007199254740991,ou=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],An=1e7,jt=1e9;function Dp(t){var e,i,n,r=D.prototype={constructor:D,toString:null,valueOf:null},o=new D(1),s=20,a=4,l=-7,u=21,h=-1e7,y=1e7,v=!1,T=1,O=0,P={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},j="0123456789abcdefghijklmnopqrstuvwxyz",B=!0;function D(x,I){var A,E,k,S,c,d,f,b,p=this;if(!(p instanceof D))return new D(x,I);if(I==null){if(x&&x._isBigNumber===!0){p.s=x.s,!x.c||x.e>y?p.c=p.e=null:x.e<h?p.c=[p.e=0]:(p.e=x.e,p.c=x.c.slice());return}if((d=typeof x=="number")&&x*0==0){if(p.s=1/x<0?(x=-x,-1):1,x===~~x){for(S=0,c=x;c>=10;c/=10,S++);S>y?p.c=p.e=null:(p.e=S,p.c=[x]);return}b=String(x)}else{if(!Xv.test(b=String(x)))return n(p,b,d);p.s=b.charCodeAt(0)==45?(b=b.slice(1),-1):1}(S=b.indexOf("."))>-1&&(b=b.replace(".","")),(c=b.search(/e/i))>0?(S<0&&(S=c),S+=+b.slice(c+1),b=b.substring(0,c)):S<0&&(S=b.length)}else{if(Ve(I,2,j.length,"Base"),I==10&&B)return p=new D(x),G(p,s+p.e+1,a);if(b=String(x),d=typeof x=="number"){if(x*0!=0)return n(p,b,d,I);if(p.s=1/x<0?(b=b.slice(1),-1):1,D.DEBUG&&b.replace(/^0\.0*|\./,"").length>15)throw Error(Pp+x)}else p.s=b.charCodeAt(0)===45?(b=b.slice(1),-1):1;for(A=j.slice(0,I),S=c=0,f=b.length;c<f;c++)if(A.indexOf(E=b.charAt(c))<0){if(E=="."){if(c>S){S=f;continue}}else if(!k&&(b==b.toUpperCase()&&(b=b.toLowerCase())||b==b.toLowerCase()&&(b=b.toUpperCase()))){k=!0,c=-1,S=0;continue}return n(p,String(x),d,I)}d=!1,b=i(b,I,10,p.s),(S=b.indexOf("."))>-1?b=b.replace(".",""):S=b.length}for(c=0;b.charCodeAt(c)===48;c++);for(f=b.length;b.charCodeAt(--f)===48;);if(b=b.slice(c,++f)){if(f-=c,d&&D.DEBUG&&f>15&&(x>ru||x!==bi(x)))throw Error(Pp+p.s*x);if((S=S-c-1)>y)p.c=p.e=null;else if(S<h)p.c=[p.e=0];else{if(p.e=S,p.c=[],c=(S+1)%ye,S<0&&(c+=ye),c<f){for(c&&p.c.push(+b.slice(0,c)),f-=ye;c<f;)p.c.push(+b.slice(c,c+=ye));c=ye-(b=b.slice(c)).length}else c-=f;for(;c--;b+="0");p.c.push(+b)}}else p.c=[p.e=0]}D.clone=Dp,D.ROUND_UP=0,D.ROUND_DOWN=1,D.ROUND_CEIL=2,D.ROUND_FLOOR=3,D.ROUND_HALF_UP=4,D.ROUND_HALF_DOWN=5,D.ROUND_HALF_EVEN=6,D.ROUND_HALF_CEIL=7,D.ROUND_HALF_FLOOR=8,D.EUCLID=9,D.config=D.set=function(x){var I,A;if(x!=null)if(typeof x=="object"){if(x.hasOwnProperty(I="DECIMAL_PLACES")&&(A=x[I],Ve(A,0,jt,I),s=A),x.hasOwnProperty(I="ROUNDING_MODE")&&(A=x[I],Ve(A,0,8,I),a=A),x.hasOwnProperty(I="EXPONENTIAL_AT")&&(A=x[I],A&&A.pop?(Ve(A[0],-jt,0,I),Ve(A[1],0,jt,I),l=A[0],u=A[1]):(Ve(A,-jt,jt,I),l=-(u=A<0?-A:A))),x.hasOwnProperty(I="RANGE"))if(A=x[I],A&&A.pop)Ve(A[0],-jt,-1,I),Ve(A[1],1,jt,I),h=A[0],y=A[1];else if(Ve(A,-jt,jt,I),A)h=-(y=A<0?-A:A);else throw Error(ei+I+" cannot be zero: "+A);if(x.hasOwnProperty(I="CRYPTO"))if(A=x[I],A===!!A)if(A)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))v=A;else throw v=!A,Error(ei+"crypto unavailable");else v=A;else throw Error(ei+I+" not true or false: "+A);if(x.hasOwnProperty(I="MODULO_MODE")&&(A=x[I],Ve(A,0,9,I),T=A),x.hasOwnProperty(I="POW_PRECISION")&&(A=x[I],Ve(A,0,jt,I),O=A),x.hasOwnProperty(I="FORMAT"))if(A=x[I],typeof A=="object")P=A;else throw Error(ei+I+" not an object: "+A);if(x.hasOwnProperty(I="ALPHABET"))if(A=x[I],typeof A=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(A))B=A.slice(0,10)=="0123456789",j=A;else throw Error(ei+I+" invalid: "+A)}else throw Error(ei+"Object expected: "+x);return{DECIMAL_PLACES:s,ROUNDING_MODE:a,EXPONENTIAL_AT:[l,u],RANGE:[h,y],CRYPTO:v,MODULO_MODE:T,POW_PRECISION:O,FORMAT:P,ALPHABET:j}},D.isBigNumber=function(x){if(!x||x._isBigNumber!==!0)return!1;if(!D.DEBUG)return!0;var I,A,E=x.c,k=x.e,S=x.s;e:if({}.toString.call(E)=="[object Array]"){if((S===1||S===-1)&&k>=-jt&&k<=jt&&k===bi(k)){if(E[0]===0){if(k===0&&E.length===1)return!0;break e}if(I=(k+1)%ye,I<1&&(I+=ye),String(E[0]).length==I){for(I=0;I<E.length;I++)if(A=E[I],A<0||A>=ji||A!==bi(A))break e;if(A!==0)return!0}}}else if(E===null&&k===null&&(S===null||S===1||S===-1))return!0;throw Error(ei+"Invalid BigNumber: "+x)},D.maximum=D.max=function(){return K(arguments,-1)},D.minimum=D.min=function(){return K(arguments,1)},D.random=function(){var x=9007199254740992,I=Math.random()*x&2097151?function(){return bi(Math.random()*x)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(A){var E,k,S,c,d,f=0,b=[],p=new D(o);if(A==null?A=s:Ve(A,0,jt),c=nu(A/ye),v)if(crypto.getRandomValues){for(E=crypto.getRandomValues(new Uint32Array(c*=2));f<c;)d=E[f]*131072+(E[f+1]>>>11),d>=9e15?(k=crypto.getRandomValues(new Uint32Array(2)),E[f]=k[0],E[f+1]=k[1]):(b.push(d%1e14),f+=2);f=c/2}else if(crypto.randomBytes){for(E=crypto.randomBytes(c*=7);f<c;)d=(E[f]&31)*281474976710656+E[f+1]*1099511627776+E[f+2]*4294967296+E[f+3]*16777216+(E[f+4]<<16)+(E[f+5]<<8)+E[f+6],d>=9e15?crypto.randomBytes(7).copy(E,f):(b.push(d%1e14),f+=7);f=c/7}else throw v=!1,Error(ei+"crypto unavailable");if(!v)for(;f<c;)d=I(),d<9e15&&(b[f++]=d%1e14);for(c=b[--f],A%=ye,c&&A&&(d=ou[ye-A],b[f]=bi(c/d)*d);b[f]===0;b.pop(),f--);if(f<0)b=[S=0];else{for(S=-1;b[0]===0;b.splice(0,1),S-=ye);for(f=1,d=b[0];d>=10;d/=10,f++);f<ye&&(S-=ye-f)}return p.e=S,p.c=b,p}}(),D.sum=function(){for(var x=1,I=arguments,A=new D(I[0]);x<I.length;)A=A.plus(I[x++]);return A},i=function(){var x="0123456789";function I(A,E,k,S){for(var c,d=[0],f,b=0,p=A.length;b<p;){for(f=d.length;f--;d[f]*=E);for(d[0]+=S.indexOf(A.charAt(b++)),c=0;c<d.length;c++)d[c]>k-1&&(d[c+1]==null&&(d[c+1]=0),d[c+1]+=d[c]/k|0,d[c]%=k)}return d.reverse()}return function(A,E,k,S,c){var d,f,b,p,g,w,_,m,C=A.indexOf("."),N=s,R=a;for(C>=0&&(p=O,O=0,A=A.replace(".",""),m=new D(E),w=m.pow(A.length-C),O=p,m.c=I(sn(_i(w.c),w.e,"0"),10,k,x),m.e=m.c.length),_=I(A,E,k,c?(d=j,x):(d=x,j)),b=p=_.length;_[--p]==0;_.pop());if(!_[0])return d.charAt(0);if(C<0?--b:(w.c=_,w.e=b,w.s=S,w=e(w,m,N,R,k),_=w.c,g=w.r,b=w.e),f=b+N+1,C=_[f],p=k/2,g=g||f<0||_[f+1]!=null,g=R<4?(C!=null||g)&&(R==0||R==(w.s<0?3:2)):C>p||C==p&&(R==4||g||R==6&&_[f-1]&1||R==(w.s<0?8:7)),f<1||!_[0])A=g?sn(d.charAt(1),-N,d.charAt(0)):d.charAt(0);else{if(_.length=f,g)for(--k;++_[--f]>k;)_[f]=0,f||(++b,_=[1].concat(_));for(p=_.length;!_[--p];);for(C=0,A="";C<=p;A+=d.charAt(_[C++]));A=sn(A,b,d.charAt(0))}return A}}(),e=function(){function x(E,k,S){var c,d,f,b,p=0,g=E.length,w=k%An,_=k/An|0;for(E=E.slice();g--;)f=E[g]%An,b=E[g]/An|0,c=_*f+b*w,d=w*f+c%An*An+p,p=(d/S|0)+(c/An|0)+_*b,E[g]=d%S;return p&&(E=[p].concat(E)),E}function I(E,k,S,c){var d,f;if(S!=c)f=S>c?1:-1;else for(d=f=0;d<S;d++)if(E[d]!=k[d]){f=E[d]>k[d]?1:-1;break}return f}function A(E,k,S,c){for(var d=0;S--;)E[S]-=d,d=E[S]<k[S]?1:0,E[S]=d*c+E[S]-k[S];for(;!E[0]&&E.length>1;E.splice(0,1));}return function(E,k,S,c,d){var f,b,p,g,w,_,m,C,N,R,$,L,H,ee,ge,ne,me,xe=E.s==k.s?1:-1,_e=E.c,he=k.c;if(!_e||!_e[0]||!he||!he[0])return new D(!E.s||!k.s||(_e?he&&_e[0]==he[0]:!he)?NaN:_e&&_e[0]==0||!he?xe*0:xe/0);for(C=new D(xe),N=C.c=[],b=E.e-k.e,xe=S+b+1,d||(d=ji,b=yi(E.e/ye)-yi(k.e/ye),xe=xe/ye|0),p=0;he[p]==(_e[p]||0);p++);if(he[p]>(_e[p]||0)&&b--,xe<0)N.push(1),g=!0;else{for(ee=_e.length,ne=he.length,p=0,xe+=2,w=bi(d/(he[0]+1)),w>1&&(he=x(he,w,d),_e=x(_e,w,d),ne=he.length,ee=_e.length),H=ne,R=_e.slice(0,ne),$=R.length;$<ne;R[$++]=0);me=he.slice(),me=[0].concat(me),ge=he[0],he[1]>=d/2&&ge++;do{if(w=0,f=I(he,R,ne,$),f<0){if(L=R[0],ne!=$&&(L=L*d+(R[1]||0)),w=bi(L/ge),w>1)for(w>=d&&(w=d-1),_=x(he,w,d),m=_.length,$=R.length;I(_,R,m,$)==1;)w--,A(_,ne<m?me:he,m,d),m=_.length,f=1;else w==0&&(f=w=1),_=he.slice(),m=_.length;if(m<$&&(_=[0].concat(_)),A(R,_,$,d),$=R.length,f==-1)for(;I(he,R,ne,$)<1;)w++,A(R,ne<$?me:he,$,d),$=R.length}else f===0&&(w++,R=[0]);N[p++]=w,R[0]?R[$++]=_e[H]||0:(R=[_e[H]],$=1)}while((H++<ee||R[0]!=null)&&xe--);g=R[0]!=null,N[0]||N.splice(0,1)}if(d==ji){for(p=1,xe=N[0];xe>=10;xe/=10,p++);G(C,S+(C.e=p+b*ye-1)+1,c,g)}else C.e=b,C.r=+g;return C}}();function q(x,I,A,E){var k,S,c,d,f;if(A==null?A=a:Ve(A,0,8),!x.c)return x.toString();if(k=x.c[0],c=x.e,I==null)f=_i(x.c),f=E==1||E==2&&(c<=l||c>=u)?va(f,c):sn(f,c,"0");else if(x=G(new D(x),I,A),S=x.e,f=_i(x.c),d=f.length,E==1||E==2&&(I<=S||S<=l)){for(;d<I;f+="0",d++);f=va(f,S)}else if(I-=c,f=sn(f,S,"0"),S+1>d){if(--I>0)for(f+=".";I--;f+="0");}else if(I+=S-d,I>0)for(S+1==d&&(f+=".");I--;f+="0");return x.s<0&&k?"-"+f:f}function K(x,I){for(var A,E,k=1,S=new D(x[0]);k<x.length;k++)E=new D(x[k]),(!E.s||(A=nr(S,E))===I||A===0&&S.s===I)&&(S=E);return S}function Z(x,I,A){for(var E=1,k=I.length;!I[--k];I.pop());for(k=I[0];k>=10;k/=10,E++);return(A=E+A*ye-1)>y?x.c=x.e=null:A<h?x.c=[x.e=0]:(x.e=A,x.c=I),x}n=function(){var x=/^(-?)0([xbo])(?=\w[\w.]*$)/i,I=/^([^.]+)\.$/,A=/^\.([^.]+)$/,E=/^-?(Infinity|NaN)$/,k=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(S,c,d,f){var b,p=d?c:c.replace(k,"");if(E.test(p))S.s=isNaN(p)?null:p<0?-1:1;else{if(!d&&(p=p.replace(x,function(g,w,_){return b=(_=_.toLowerCase())=="x"?16:_=="b"?2:8,!f||f==b?w:g}),f&&(b=f,p=p.replace(I,"$1").replace(A,"0.$1")),c!=p))return new D(p,b);if(D.DEBUG)throw Error(ei+"Not a"+(f?" base "+f:"")+" number: "+c);S.s=null}S.c=S.e=null}}();function G(x,I,A,E){var k,S,c,d,f,b,p,g=x.c,w=ou;if(g){e:{for(k=1,d=g[0];d>=10;d/=10,k++);if(S=I-k,S<0)S+=ye,c=I,f=g[b=0],p=bi(f/w[k-c-1]%10);else if(b=nu((S+1)/ye),b>=g.length)if(E){for(;g.length<=b;g.push(0));f=p=0,k=1,S%=ye,c=S-ye+1}else break e;else{for(f=d=g[b],k=1;d>=10;d/=10,k++);S%=ye,c=S-ye+k,p=c<0?0:bi(f/w[k-c-1]%10)}if(E=E||I<0||g[b+1]!=null||(c<0?f:f%w[k-c-1]),E=A<4?(p||E)&&(A==0||A==(x.s<0?3:2)):p>5||p==5&&(A==4||E||A==6&&(S>0?c>0?f/w[k-c]:0:g[b-1])%10&1||A==(x.s<0?8:7)),I<1||!g[0])return g.length=0,E?(I-=x.e+1,g[0]=w[(ye-I%ye)%ye],x.e=-I||0):g[0]=x.e=0,x;if(S==0?(g.length=b,d=1,b--):(g.length=b+1,d=w[ye-S],g[b]=c>0?bi(f/w[k-c]%w[c])*d:0),E)for(;;)if(b==0){for(S=1,c=g[0];c>=10;c/=10,S++);for(c=g[0]+=d,d=1;c>=10;c/=10,d++);S!=d&&(x.e++,g[0]==ji&&(g[0]=1));break}else{if(g[b]+=d,g[b]!=ji)break;g[b--]=0,d=1}for(S=g.length;g[--S]===0;g.pop());}x.e>y?x.c=x.e=null:x.e<h&&(x.c=[x.e=0])}return x}function J(x){var I,A=x.e;return A===null?x.toString():(I=_i(x.c),I=A<=l||A>=u?va(I,A):sn(I,A,"0"),x.s<0?"-"+I:I)}return r.absoluteValue=r.abs=function(){var x=new D(this);return x.s<0&&(x.s=1),x},r.comparedTo=function(x,I){return nr(this,new D(x,I))},r.decimalPlaces=r.dp=function(x,I){var A,E,k,S=this;if(x!=null)return Ve(x,0,jt),I==null?I=a:Ve(I,0,8),G(new D(S),x+S.e+1,I);if(!(A=S.c))return null;if(E=((k=A.length-1)-yi(this.e/ye))*ye,k=A[k])for(;k%10==0;k/=10,E--);return E<0&&(E=0),E},r.dividedBy=r.div=function(x,I){return e(this,new D(x,I),s,a)},r.dividedToIntegerBy=r.idiv=function(x,I){return e(this,new D(x,I),0,1)},r.exponentiatedBy=r.pow=function(x,I){var A,E,k,S,c,d,f,b,p,g=this;if(x=new D(x),x.c&&!x.isInteger())throw Error(ei+"Exponent not an integer: "+J(x));if(I!=null&&(I=new D(I)),d=x.e>14,!g.c||!g.c[0]||g.c[0]==1&&!g.e&&g.c.length==1||!x.c||!x.c[0])return p=new D(Math.pow(+J(g),d?x.s*(2-wa(x)):+J(x))),I?p.mod(I):p;if(f=x.s<0,I){if(I.c?!I.c[0]:!I.s)return new D(NaN);E=!f&&g.isInteger()&&I.isInteger(),E&&(g=g.mod(I))}else{if(x.e>9&&(g.e>0||g.e<-1||(g.e==0?g.c[0]>1||d&&g.c[1]>=24e7:g.c[0]<8e13||d&&g.c[0]<=9999975e7)))return S=g.s<0&&wa(x)?-0:0,g.e>-1&&(S=1/S),new D(f?1/S:S);O&&(S=nu(O/ye+2))}for(d?(A=new D(.5),f&&(x.s=1),b=wa(x)):(k=Math.abs(+J(x)),b=k%2),p=new D(o);;){if(b){if(p=p.times(g),!p.c)break;S?p.c.length>S&&(p.c.length=S):E&&(p=p.mod(I))}if(k){if(k=bi(k/2),k===0)break;b=k%2}else if(x=x.times(A),G(x,x.e+1,1),x.e>14)b=wa(x);else{if(k=+J(x),k===0)break;b=k%2}g=g.times(g),S?g.c&&g.c.length>S&&(g.c.length=S):E&&(g=g.mod(I))}return E?p:(f&&(p=o.div(p)),I?p.mod(I):S?G(p,O,a,c):p)},r.integerValue=function(x){var I=new D(this);return x==null?x=a:Ve(x,0,8),G(I,I.e+1,x)},r.isEqualTo=r.eq=function(x,I){return nr(this,new D(x,I))===0},r.isFinite=function(){return!!this.c},r.isGreaterThan=r.gt=function(x,I){return nr(this,new D(x,I))>0},r.isGreaterThanOrEqualTo=r.gte=function(x,I){return(I=nr(this,new D(x,I)))===1||I===0},r.isInteger=function(){return!!this.c&&yi(this.e/ye)>this.c.length-2},r.isLessThan=r.lt=function(x,I){return nr(this,new D(x,I))<0},r.isLessThanOrEqualTo=r.lte=function(x,I){return(I=nr(this,new D(x,I)))===-1||I===0},r.isNaN=function(){return!this.s},r.isNegative=function(){return this.s<0},r.isPositive=function(){return this.s>0},r.isZero=function(){return!!this.c&&this.c[0]==0},r.minus=function(x,I){var A,E,k,S,c=this,d=c.s;if(x=new D(x,I),I=x.s,!d||!I)return new D(NaN);if(d!=I)return x.s=-I,c.plus(x);var f=c.e/ye,b=x.e/ye,p=c.c,g=x.c;if(!f||!b){if(!p||!g)return p?(x.s=-I,x):new D(g?c:NaN);if(!p[0]||!g[0])return g[0]?(x.s=-I,x):new D(p[0]?c:a==3?-0:0)}if(f=yi(f),b=yi(b),p=p.slice(),d=f-b){for((S=d<0)?(d=-d,k=p):(b=f,k=g),k.reverse(),I=d;I--;k.push(0));k.reverse()}else for(E=(S=(d=p.length)<(I=g.length))?d:I,d=I=0;I<E;I++)if(p[I]!=g[I]){S=p[I]<g[I];break}if(S&&(k=p,p=g,g=k,x.s=-x.s),I=(E=g.length)-(A=p.length),I>0)for(;I--;p[A++]=0);for(I=ji-1;E>d;){if(p[--E]<g[E]){for(A=E;A&&!p[--A];p[A]=I);--p[A],p[E]+=ji}p[E]-=g[E]}for(;p[0]==0;p.splice(0,1),--b);return p[0]?Z(x,p,b):(x.s=a==3?-1:1,x.c=[x.e=0],x)},r.modulo=r.mod=function(x,I){var A,E,k=this;return x=new D(x,I),!k.c||!x.s||x.c&&!x.c[0]?new D(NaN):!x.c||k.c&&!k.c[0]?new D(k):(T==9?(E=x.s,x.s=1,A=e(k,x,0,3),x.s=E,A.s*=E):A=e(k,x,0,T),x=k.minus(A.times(x)),!x.c[0]&&T==1&&(x.s=k.s),x)},r.multipliedBy=r.times=function(x,I){var A,E,k,S,c,d,f,b,p,g,w,_,m,C,N,R=this,$=R.c,L=(x=new D(x,I)).c;if(!$||!L||!$[0]||!L[0])return!R.s||!x.s||$&&!$[0]&&!L||L&&!L[0]&&!$?x.c=x.e=x.s=null:(x.s*=R.s,!$||!L?x.c=x.e=null:(x.c=[0],x.e=0)),x;for(E=yi(R.e/ye)+yi(x.e/ye),x.s*=R.s,f=$.length,g=L.length,f<g&&(m=$,$=L,L=m,k=f,f=g,g=k),k=f+g,m=[];k--;m.push(0));for(C=ji,N=An,k=g;--k>=0;){for(A=0,w=L[k]%N,_=L[k]/N|0,c=f,S=k+c;S>k;)b=$[--c]%N,p=$[c]/N|0,d=_*b+p*w,b=w*b+d%N*N+m[S]+A,A=(b/C|0)+(d/N|0)+_*p,m[S--]=b%C;m[S]=A}return A?++E:m.splice(0,1),Z(x,m,E)},r.negated=function(){var x=new D(this);return x.s=-x.s||null,x},r.plus=function(x,I){var A,E=this,k=E.s;if(x=new D(x,I),I=x.s,!k||!I)return new D(NaN);if(k!=I)return x.s=-I,E.minus(x);var S=E.e/ye,c=x.e/ye,d=E.c,f=x.c;if(!S||!c){if(!d||!f)return new D(k/0);if(!d[0]||!f[0])return f[0]?x:new D(d[0]?E:k*0)}if(S=yi(S),c=yi(c),d=d.slice(),k=S-c){for(k>0?(c=S,A=f):(k=-k,A=d),A.reverse();k--;A.push(0));A.reverse()}for(k=d.length,I=f.length,k-I<0&&(A=f,f=d,d=A,I=k),k=0;I;)k=(d[--I]=d[I]+f[I]+k)/ji|0,d[I]=ji===d[I]?0:d[I]%ji;return k&&(d=[k].concat(d),++c),Z(x,d,c)},r.precision=r.sd=function(x,I){var A,E,k,S=this;if(x!=null&&x!==!!x)return Ve(x,1,jt),I==null?I=a:Ve(I,0,8),G(new D(S),x,I);if(!(A=S.c))return null;if(k=A.length-1,E=k*ye+1,k=A[k]){for(;k%10==0;k/=10,E--);for(k=A[0];k>=10;k/=10,E++);}return x&&S.e+1>E&&(E=S.e+1),E},r.shiftedBy=function(x){return Ve(x,-ru,ru),this.times("1e"+x)},r.squareRoot=r.sqrt=function(){var x,I,A,E,k,S=this,c=S.c,d=S.s,f=S.e,b=s+4,p=new D("0.5");if(d!==1||!c||!c[0])return new D(!d||d<0&&(!c||c[0])?NaN:c?S:1/0);if(d=Math.sqrt(+J(S)),d==0||d==1/0?(I=_i(c),(I.length+f)%2==0&&(I+="0"),d=Math.sqrt(+I),f=yi((f+1)/2)-(f<0||f%2),d==1/0?I="5e"+f:(I=d.toExponential(),I=I.slice(0,I.indexOf("e")+1)+f),A=new D(I)):A=new D(d+""),A.c[0]){for(f=A.e,d=f+b,d<3&&(d=0);;)if(k=A,A=p.times(k.plus(e(S,k,b,1))),_i(k.c).slice(0,d)===(I=_i(A.c)).slice(0,d))if(A.e<f&&--d,I=I.slice(d-3,d+1),I=="9999"||!E&&I=="4999"){if(!E&&(G(k,k.e+s+2,0),k.times(k).eq(S))){A=k;break}b+=4,d+=4,E=1}else{(!+I||!+I.slice(1)&&I.charAt(0)=="5")&&(G(A,A.e+s+2,1),x=!A.times(A).eq(S));break}}return G(A,A.e+s+1,a,x)},r.toExponential=function(x,I){return x!=null&&(Ve(x,0,jt),x++),q(this,x,I,1)},r.toFixed=function(x,I){return x!=null&&(Ve(x,0,jt),x=x+this.e+1),q(this,x,I)},r.toFormat=function(x,I,A){var E,k=this;if(A==null)x!=null&&I&&typeof I=="object"?(A=I,I=null):x&&typeof x=="object"?(A=x,x=I=null):A=P;else if(typeof A!="object")throw Error(ei+"Argument not an object: "+A);if(E=k.toFixed(x,I),k.c){var S,c=E.split("."),d=+A.groupSize,f=+A.secondaryGroupSize,b=A.groupSeparator||"",p=c[0],g=c[1],w=k.s<0,_=w?p.slice(1):p,m=_.length;if(f&&(S=d,d=f,f=S,m-=S),d>0&&m>0){for(S=m%d||d,p=_.substr(0,S);S<m;S+=d)p+=b+_.substr(S,d);f>0&&(p+=b+_.slice(S)),w&&(p="-"+p)}E=g?p+(A.decimalSeparator||"")+((f=+A.fractionGroupSize)?g.replace(new RegExp("\\d{"+f+"}\\B","g"),"$&"+(A.fractionGroupSeparator||"")):g):p}return(A.prefix||"")+E+(A.suffix||"")},r.toFraction=function(x){var I,A,E,k,S,c,d,f,b,p,g,w,_=this,m=_.c;if(x!=null&&(d=new D(x),!d.isInteger()&&(d.c||d.s!==1)||d.lt(o)))throw Error(ei+"Argument "+(d.isInteger()?"out of range: ":"not an integer: ")+J(d));if(!m)return new D(_);for(I=new D(o),b=A=new D(o),E=f=new D(o),w=_i(m),S=I.e=w.length-_.e-1,I.c[0]=ou[(c=S%ye)<0?ye+c:c],x=!x||d.comparedTo(I)>0?S>0?I:b:d,c=y,y=1/0,d=new D(w),f.c[0]=0;p=e(d,I,0,1),k=A.plus(p.times(E)),k.comparedTo(x)!=1;)A=E,E=k,b=f.plus(p.times(k=b)),f=k,I=d.minus(p.times(k=I)),d=k;return k=e(x.minus(A),E,0,1),f=f.plus(k.times(b)),A=A.plus(k.times(E)),f.s=b.s=_.s,S=S*2,g=e(b,E,S,a).minus(_).abs().comparedTo(e(f,A,S,a).minus(_).abs())<1?[b,E]:[f,A],y=c,g},r.toNumber=function(){return+J(this)},r.toPrecision=function(x,I){return x!=null&&Ve(x,1,jt),q(this,x,I,2)},r.toString=function(x){var I,A=this,E=A.s,k=A.e;return k===null?E?(I="Infinity",E<0&&(I="-"+I)):I="NaN":(x==null?I=k<=l||k>=u?va(_i(A.c),k):sn(_i(A.c),k,"0"):x===10&&B?(A=G(new D(A),s+k+1,a),I=sn(_i(A.c),A.e,"0")):(Ve(x,2,j.length,"Base"),I=i(sn(_i(A.c),k,"0"),10,x,E,!0)),E<0&&A.c[0]&&(I="-"+I)),I},r.valueOf=r.toJSON=function(){return J(this)},r._isBigNumber=!0,r[Symbol.toStringTag]="BigNumber",r[Symbol.for("nodejs.util.inspect.custom")]=r.valueOf,t!=null&&D.set(t),D}function yi(t){var e=t|0;return t>0||t===e?e:e-1}function _i(t){for(var e,i,n=1,r=t.length,o=t[0]+"";n<r;){for(e=t[n++]+"",i=ye-e.length;i--;e="0"+e);o+=e}for(r=o.length;o.charCodeAt(--r)===48;);return o.slice(0,r+1||1)}function nr(t,e){var i,n,r=t.c,o=e.c,s=t.s,a=e.s,l=t.e,u=e.e;if(!s||!a)return null;if(i=r&&!r[0],n=o&&!o[0],i||n)return i?n?0:-a:s;if(s!=a)return s;if(i=s<0,n=l==u,!r||!o)return n?0:!r^i?1:-1;if(!n)return l>u^i?1:-1;for(a=(l=r.length)<(u=o.length)?l:u,s=0;s<a;s++)if(r[s]!=o[s])return r[s]>o[s]^i?1:-1;return l==u?0:l>u^i?1:-1}function Ve(t,e,i,n){if(t<e||t>i||t!==bi(t))throw Error(ei+(n||"Argument")+(typeof t=="number"?t<e||t>i?" out of range: ":" not an integer: ":" not a primitive number: ")+String(t))}function wa(t){var e=t.c.length-1;return yi(t.e/ye)==e&&t.c[e]%2!=0}function va(t,e){return(t.length>1?t.charAt(0)+"."+t.slice(1):t)+(e<0?"e":"e+")+e}function sn(t,e,i){var n,r;if(e<0){for(r=i+".";++e;r+=i);t=r+t}else if(n=t.length,++e>n){for(r=i,e-=n;--e;r+=i);t+=r}else e<n&&(t=t.slice(0,e)+"."+t.slice(e));return t}var Jv=Dp(),wi=Jv;var D0=require("@mysten/sui.js/transactions"),M0=require("@mysten/sui.js/utils"),as=require("@mysten/sui.js/utils"),us=require("@mysten/sui.js/utils");var E0=require("@mysten/sui.js/transactions");var Be=require("@mysten/sui.js/utils"),B0=require("@mysten/sui.js/transactions"),R4=require("@mysten/sui.js/utils");var un=require("@mysten/sui.js/utils"),an=require("@mysten/sui.js/utils"),ds=require("@mysten/sui.js/utils"),L0=we(require("axios"),1),Wa=require("@mysten/sui.js/bcs"),is=require("@mysten/sui.js/utils"),ns=require("@mysten/sui.js/utils"),to=require("@mysten/sui.js/utils"),a_=require("@msafe/sui3-utils"),cn=require("@msafe/sui3-utils"),qu=require("@mysten/sui.js/bcs"),Fn=require("@mysten/sui.js/utils");var v1=we(Se(),1);var ar=require("@mysten/sui.js/client"),Hp=require("@mysten/sui.js/keypairs/ed25519");function Mp(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(`Wrong positive integer: ${t}`)}function Yv(t){return t instanceof Uint8Array||t!=null&&typeof t=="object"&&t.constructor.name==="Uint8Array"}function su(t,...e){if(!Yv(t))throw new Error("Expected Uint8Array");if(e.length>0&&!e.includes(t.length))throw new Error(`Expected Uint8Array of length ${e}, not of length=${t.length}`)}function au(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function Ep(t,e){su(t);let i=e.outputLen;if(t.length<i)throw new Error(`digestInto() expects output buffer of length at least ${i}`)}var ka=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function Qv(t){return t instanceof Uint8Array||t!=null&&typeof t=="object"&&t.constructor.name==="Uint8Array"}var Ta=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),Bi=(t,e)=>t<<32-e|t>>>e,e1=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!e1)throw new Error("Non little-endian hardware is not supported");function t1(t){if(typeof t!="string")throw new Error(`utf8ToBytes expected string, got ${typeof t}`);return new Uint8Array(new TextEncoder().encode(t))}function cu(t){if(typeof t=="string"&&(t=t1(t)),!Qv(t))throw new Error(`expected Uint8Array, got ${typeof t}`);return t}var Ca=class{clone(){return this._cloneInto()}},LI={}.toString;function jp(t){let e=n=>t().update(cu(n)).digest(),i=t();return e.outputLen=i.outputLen,e.blockLen=i.blockLen,e.create=()=>t(),e}function Bp(t=32){if(ka&&typeof ka.getRandomValues=="function")return ka.getRandomValues(new Uint8Array(t));throw new Error("crypto.getRandomValues must be defined")}function i1(t,e,i,n){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,i,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(i>>r&o),a=Number(i&o),l=n?4:0,u=n?0:4;t.setUint32(e+l,s,n),t.setUint32(e+u,a,n)}var Sa=class extends Ca{constructor(e,i,n,r){super(),this.blockLen=e,this.outputLen=i,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Ta(this.buffer)}update(e){au(this);let{view:i,buffer:n,blockLen:r}=this;e=cu(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let l=Ta(e);for(;r<=o-s;s+=r)this.process(l,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(i,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){au(this),Ep(e,this),this.finished=!0;let{buffer:i,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;i[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let y=s;y<r;y++)i[y]=0;i1(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=Ta(e),l=this.outputLen;if(l%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=l/4,h=this.get();if(u>h.length)throw new Error("_sha2: outputLen bigger than state");for(let y=0;y<u;y++)a.setUint32(4*y,h[y],o)}digest(){let{buffer:e,outputLen:i}=this;this.digestInto(e);let n=e.slice(0,i);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:i,buffer:n,length:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%i&&e.buffer.set(n),e}};var n1=(t,e,i)=>t&e^~t&i,r1=(t,e,i)=>t&e^t&i^e&i,o1=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),In=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),On=new Uint32Array(64),lu=class extends Sa{constructor(){super(64,32,8,!1),this.A=In[0]|0,this.B=In[1]|0,this.C=In[2]|0,this.D=In[3]|0,this.E=In[4]|0,this.F=In[5]|0,this.G=In[6]|0,this.H=In[7]|0}get(){let{A:e,B:i,C:n,D:r,E:o,F:s,G:a,H:l}=this;return[e,i,n,r,o,s,a,l]}set(e,i,n,r,o,s,a,l){this.A=e|0,this.B=i|0,this.C=n|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=l|0}process(e,i){for(let y=0;y<16;y++,i+=4)On[y]=e.getUint32(i,!1);for(let y=16;y<64;y++){let v=On[y-15],T=On[y-2],O=Bi(v,7)^Bi(v,18)^v>>>3,P=Bi(T,17)^Bi(T,19)^T>>>10;On[y]=P+On[y-7]+O+On[y-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:l,G:u,H:h}=this;for(let y=0;y<64;y++){let v=Bi(a,6)^Bi(a,11)^Bi(a,25),T=h+v+n1(a,l,u)+o1[y]+On[y]|0,P=(Bi(n,2)^Bi(n,13)^Bi(n,22))+r1(n,r,o)|0;h=u,u=l,l=a,a=s+T|0,s=o,o=r,r=n,n=T+P|0}n=n+this.A|0,r=r+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,l=l+this.F|0,u=u+this.G|0,h=h+this.H|0,this.set(n,r,o,s,a,l,u,h)}roundClean(){On.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Np=jp(()=>new lu);function rr(t){if(!Number.isSafeInteger(t))throw new Error(`Wrong integer: ${t}`)}function xa(t){return t instanceof Uint8Array||t!=null&&typeof t=="object"&&t.constructor.name==="Uint8Array"}function s1(...t){let e=o=>o,i=(o,s)=>a=>o(s(a)),n=t.map(o=>o.encode).reduceRight(i,e),r=t.map(o=>o.decode).reduce(i,e);return{encode:n,decode:r}}function a1(t){return{encode:e=>{if(!Array.isArray(e)||e.length&&typeof e[0]!="number")throw new Error("alphabet.encode input should be an array of numbers");return e.map(i=>{if(i<0||i>=t.length)throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${t.length})`);return t[i]})},decode:e=>{if(!Array.isArray(e)||e.length&&typeof e[0]!="string")throw new Error("alphabet.decode input should be array of strings");return e.map(i=>{if(typeof i!="string")throw new Error(`alphabet.decode: not string element=${i}`);let n=t.indexOf(i);if(n===-1)throw new Error(`Unknown letter: "${i}". Allowed: ${t}`);return n})}}}function c1(t=""){if(typeof t!="string")throw new Error("join separator should be string");return{encode:e=>{if(!Array.isArray(e)||e.length&&typeof e[0]!="string")throw new Error("join.encode input should be array of strings");for(let i of e)if(typeof i!="string")throw new Error(`join.encode: non-string input=${i}`);return e.join(t)},decode:e=>{if(typeof e!="string")throw new Error("join.decode input should be string");return e.split(t)}}}function l1(t,e="="){if(typeof e!="string")throw new Error("padding chr should be string");return{encode(i){if(!Array.isArray(i)||i.length&&typeof i[0]!="string")throw new Error("padding.encode input should be array of strings");for(let n of i)if(typeof n!="string")throw new Error(`padding.encode: non-string input=${n}`);for(;i.length*t%8;)i.push(e);return i},decode(i){if(!Array.isArray(i)||i.length&&typeof i[0]!="string")throw new Error("padding.encode input should be array of strings");for(let r of i)if(typeof r!="string")throw new Error(`padding.decode: non-string input=${r}`);let n=i.length;if(n*t%8)throw new Error("Invalid padding: string should have whole number of bytes");for(;n>0&&i[n-1]===e;n--)if(!((n-1)*t%8))throw new Error("Invalid padding: string has too much padding");return i.slice(0,n)}}}function uu(t,e,i){if(e<2)throw new Error(`convertRadix: wrong from=${e}, base cannot be less than 2`);if(i<2)throw new Error(`convertRadix: wrong to=${i}, base cannot be less than 2`);if(!Array.isArray(t))throw new Error("convertRadix: data should be array");if(!t.length)return[];let n=0,r=[],o=Array.from(t);for(o.forEach(s=>{if(s<0||s>=e)throw new Error(`Wrong integer: ${s}`)});;){let s=0,a=!0;for(let l=n;l<o.length;l++){let u=o[l],h=e*s+u;if(!Number.isSafeInteger(h)||e*s/e!==s||h-u!==e*s)throw new Error("convertRadix: carry overflow");s=h%i;let y=Math.floor(h/i);if(o[l]=y,!Number.isSafeInteger(y)||y*i+s!==h)throw new Error("convertRadix: carry overflow");if(a)y?a=!1:n=l;else continue}if(r.push(s),a)break}for(let s=0;s<t.length-1&&t[s]===0;s++)r.push(0);return r.reverse()}var Fp=(t,e)=>e?Fp(e,t%e):t,Aa=(t,e)=>t+(e-Fp(t,e));function du(t,e,i,n){if(!Array.isArray(t))throw new Error("convertRadix2: data should be array");if(e<=0||e>32)throw new Error(`convertRadix2: wrong from=${e}`);if(i<=0||i>32)throw new Error(`convertRadix2: wrong to=${i}`);if(Aa(e,i)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${i} carryBits=${Aa(e,i)}`);let r=0,o=0,s=2**i-1,a=[];for(let l of t){if(l>=2**e)throw new Error(`convertRadix2: invalid data word=${l} from=${e}`);if(r=r<<e|l,o+e>32)throw new Error(`convertRadix2: carry overflow pos=${o} from=${e}`);for(o+=e;o>=i;o-=i)a.push((r>>o-i&s)>>>0);r&=2**o-1}if(r=r<<i-o&s,!n&&o>=e)throw new Error("Excess padding");if(!n&&r)throw new Error(`Non-zero padding: ${r}`);return n&&o>0&&a.push(r>>>0),a}function u1(t){return{encode:e=>{if(!xa(e))throw new Error("radix.encode input should be Uint8Array");return uu(Array.from(e),2**8,t)},decode:e=>{if(!Array.isArray(e)||e.length&&typeof e[0]!="number")throw new Error("radix.decode input should be array of numbers");return Uint8Array.from(uu(e,t,2**8))}}}function d1(t,e=!1){if(t<=0||t>32)throw new Error("radix2: bits should be in (0..32]");if(Aa(8,t)>32||Aa(t,8)>32)throw new Error("radix2: carry overflow");return{encode:i=>{if(!xa(i))throw new Error("radix2.encode input should be Uint8Array");return du(Array.from(i),8,t,!e)},decode:i=>{if(!Array.isArray(i)||i.length&&typeof i[0]!="number")throw new Error("radix2.decode input should be array of numbers");return Uint8Array.from(du(i,t,8,e))}}}function f1(t,e){if(typeof e!="function")throw new Error("checksum fn should be function");return{encode(i){if(!xa(i))throw new Error("checksum.encode: input should be Uint8Array");let n=e(i).slice(0,t),r=new Uint8Array(i.length+t);return r.set(i),r.set(n,i.length),r},decode(i){if(!xa(i))throw new Error("checksum.decode: input should be Uint8Array");let n=i.slice(0,-t),r=e(n).slice(0,t),o=i.slice(-t);for(let s=0;s<t;s++)if(r[s]!==o[s])throw new Error("Invalid checksum");return n}}}var Ho={alphabet:a1,chain:s1,checksum:f1,convertRadix:uu,convertRadix2:du,radix:u1,radix2:d1,join:c1,padding:l1};var h1=t=>t[0]==="\u3042\u3044\u3053\u304F\u3057\u3093";function p1(t){su(t,16,20,24,28,32)}function Rp(t,e=128){if(Mp(e),e%32!==0||e>256)throw new TypeError("Invalid entropy");return _1(Bp(e/8),t)}var m1=t=>{let e=8-t.length/4;return new Uint8Array([Np(t)[0]>>e<<e])};function g1(t){if(!Array.isArray(t)||t.length!==2048||typeof t[0]!="string")throw new Error("Wordlist: expected array of 2048 strings");return t.forEach(e=>{if(typeof e!="string")throw new Error(`Wordlist: non-string element: ${e}`)}),Ho.chain(Ho.checksum(1,m1),Ho.radix2(11,!0),Ho.alphabet(t))}function _1(t,e){return p1(t),g1(e).encode(t).join(h1(e)?"\u3000":" ")}var qp=`abandon
6
6
  ability
7
7
  able
8
8
  about
@@ -2050,7 +2050,7 @@ zebra
2050
2050
  zero
2051
2051
  zone
2052
2052
  zoo`.split(`
2053
- `);var Ho=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,$p=new Set,du=typeof process=="object"&&process?process:{},Up=(t,e,i,n)=>{typeof du.emitWarning=="function"?du.emitWarning(t,e,i,n):console.error(`[${i}] ${e}: ${t}`)},Ia=globalThis.AbortController,Lp=globalThis.AbortSignal;if(typeof Ia>"u"){Lp=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(n,r){this._onabort.push(r)}},Ia=class{constructor(){e()}signal=new Lp;abort(n){if(!this.signal.aborted){this.signal.reason=n,this.signal.aborted=!0;for(let r of this.signal._onabort)r(n);this.signal.onabort?.(n)}}};let t=du.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",e=()=>{t&&(t=!1,Up("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e))}}var gv=t=>!$p.has(t),QI=Symbol("type"),Pn=t=>t&&t===Math.floor(t)&&t>0&&isFinite(t),Kp=t=>Pn(t)?t<=Math.pow(2,8)?Uint8Array:t<=Math.pow(2,16)?Uint16Array:t<=Math.pow(2,32)?Uint32Array:t<=Number.MAX_SAFE_INTEGER?Hr:null:null,Hr=class extends Array{constructor(e){super(e),this.fill(0)}},fu=class t{heap;length;static#c=!1;static create(e){let i=Kp(e);if(!i)return[];t.#c=!0;let n=new t(e,i);return t.#c=!1,n}constructor(e,i){if(!t.#c)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new i(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},Oa=class t{#c;#d;#b;#p;#O;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#m;#r;#i;#e;#l;#f;#a;#o;#g;#s;#k;#C;#_;#y;#S;#u;static unsafeExposeInternals(e){return{starts:e.#C,ttls:e.#_,sizes:e.#k,keyMap:e.#r,keyList:e.#i,valList:e.#e,next:e.#l,prev:e.#f,get head(){return e.#a},get tail(){return e.#o},free:e.#g,isBackgroundFetch:i=>e.#t(i),backgroundFetch:(i,n,r,o)=>e.#E(i,n,r,o),moveToTail:i=>e.#I(i),indexes:i=>e.#w(i),rindexes:i=>e.#v(i),isStale:i=>e.#h(i)}}get max(){return this.#c}get maxSize(){return this.#d}get calculatedSize(){return this.#m}get size(){return this.#n}get fetchMethod(){return this.#O}get dispose(){return this.#b}get disposeAfter(){return this.#p}constructor(e){let{max:i=0,ttl:n,ttlResolution:r=1,ttlAutopurge:o,updateAgeOnGet:s,updateAgeOnHas:a,allowStale:l,dispose:u,disposeAfter:h,noDisposeOnSet:y,noUpdateTTL:v,maxSize:T=0,maxEntrySize:O=0,sizeCalculation:P,fetchMethod:j,noDeleteOnFetchRejection:B,noDeleteOnStaleGet:D,allowStaleOnFetchRejection:q,allowStaleOnFetchAbort:K,ignoreFetchAbort:Z}=e;if(i!==0&&!Pn(i))throw new TypeError("max option must be a nonnegative integer");let G=i?Kp(i):Array;if(!G)throw new Error("invalid max value: "+i);if(this.#c=i,this.#d=T,this.maxEntrySize=O||this.#d,this.sizeCalculation=P,this.sizeCalculation){if(!this.#d&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(j!==void 0&&typeof j!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#O=j,this.#S=!!j,this.#r=new Map,this.#i=new Array(i).fill(void 0),this.#e=new Array(i).fill(void 0),this.#l=new G(i),this.#f=new G(i),this.#a=0,this.#o=0,this.#g=fu.create(i),this.#n=0,this.#m=0,typeof u=="function"&&(this.#b=u),typeof h=="function"?(this.#p=h,this.#s=[]):(this.#p=void 0,this.#s=void 0),this.#y=!!this.#b,this.#u=!!this.#p,this.noDisposeOnSet=!!y,this.noUpdateTTL=!!v,this.noDeleteOnFetchRejection=!!B,this.allowStaleOnFetchRejection=!!q,this.allowStaleOnFetchAbort=!!K,this.ignoreFetchAbort=!!Z,this.maxEntrySize!==0){if(this.#d!==0&&!Pn(this.#d))throw new TypeError("maxSize must be a positive integer if specified");if(!Pn(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#R()}if(this.allowStale=!!l,this.noDeleteOnStaleGet=!!D,this.updateAgeOnGet=!!s,this.updateAgeOnHas=!!a,this.ttlResolution=Pn(r)||r===0?r:1,this.ttlAutopurge=!!o,this.ttl=n||0,this.ttl){if(!Pn(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#M()}if(this.#c===0&&this.ttl===0&&this.#d===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#c&&!this.#d){let J="LRU_CACHE_UNBOUNDED";gv(J)&&($p.add(J),Up("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",J,t))}}getRemainingTTL(e){return this.#r.has(e)?1/0:0}#M(){let e=new Hr(this.#c),i=new Hr(this.#c);this.#_=e,this.#C=i,this.#j=(o,s,a=Ho.now())=>{if(i[o]=s!==0?a:0,e[o]=s,s!==0&&this.ttlAutopurge){let l=setTimeout(()=>{this.#h(o)&&this.delete(this.#i[o])},s+1);l.unref&&l.unref()}},this.#x=o=>{i[o]=e[o]!==0?Ho.now():0},this.#T=(o,s)=>{if(e[s]){let a=e[s],l=i[s];o.ttl=a,o.start=l,o.now=n||r();let u=o.now-l;o.remainingTTL=a-u}};let n=0,r=()=>{let o=Ho.now();if(this.ttlResolution>0){n=o;let s=setTimeout(()=>n=0,this.ttlResolution);s.unref&&s.unref()}return o};this.getRemainingTTL=o=>{let s=this.#r.get(o);if(s===void 0)return 0;let a=e[s],l=i[s];if(a===0||l===0)return 1/0;let u=(n||r())-l;return a-u},this.#h=o=>e[o]!==0&&i[o]!==0&&(n||r())-i[o]>e[o]}#x=()=>{};#T=()=>{};#j=()=>{};#h=()=>!1;#R(){let e=new Hr(this.#c);this.#m=0,this.#k=e,this.#A=i=>{this.#m-=e[i],e[i]=0},this.#B=(i,n,r,o)=>{if(this.#t(n))return 0;if(!Pn(r))if(o){if(typeof o!="function")throw new TypeError("sizeCalculation must be a function");if(r=o(n,i),!Pn(r))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return r},this.#P=(i,n,r)=>{if(e[i]=n,this.#d){let o=this.#d-e[i];for(;this.#m>o;)this.#D(!0)}this.#m+=e[i],r&&(r.entrySize=n,r.totalCalculatedSize=this.#m)}}#A=e=>{};#P=(e,i,n)=>{};#B=(e,i,n,r)=>{if(n||r)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#w({allowStale:e=this.allowStale}={}){if(this.#n)for(let i=this.#o;!(!this.#N(i)||((e||!this.#h(i))&&(yield i),i===this.#a));)i=this.#f[i]}*#v({allowStale:e=this.allowStale}={}){if(this.#n)for(let i=this.#a;!(!this.#N(i)||((e||!this.#h(i))&&(yield i),i===this.#o));)i=this.#l[i]}#N(e){return e!==void 0&&this.#r.get(this.#i[e])===e}*entries(){for(let e of this.#w())this.#e[e]!==void 0&&this.#i[e]!==void 0&&!this.#t(this.#e[e])&&(yield[this.#i[e],this.#e[e]])}*rentries(){for(let e of this.#v())this.#e[e]!==void 0&&this.#i[e]!==void 0&&!this.#t(this.#e[e])&&(yield[this.#i[e],this.#e[e]])}*keys(){for(let e of this.#w()){let i=this.#i[e];i!==void 0&&!this.#t(this.#e[e])&&(yield i)}}*rkeys(){for(let e of this.#v()){let i=this.#i[e];i!==void 0&&!this.#t(this.#e[e])&&(yield i)}}*values(){for(let e of this.#w())this.#e[e]!==void 0&&!this.#t(this.#e[e])&&(yield this.#e[e])}*rvalues(){for(let e of this.#v())this.#e[e]!==void 0&&!this.#t(this.#e[e])&&(yield this.#e[e])}[Symbol.iterator](){return this.entries()}find(e,i={}){for(let n of this.#w()){let r=this.#e[n],o=this.#t(r)?r.__staleWhileFetching:r;if(o!==void 0&&e(o,this.#i[n],this))return this.get(this.#i[n],i)}}forEach(e,i=this){for(let n of this.#w()){let r=this.#e[n],o=this.#t(r)?r.__staleWhileFetching:r;o!==void 0&&e.call(i,o,this.#i[n],this)}}rforEach(e,i=this){for(let n of this.#v()){let r=this.#e[n],o=this.#t(r)?r.__staleWhileFetching:r;o!==void 0&&e.call(i,o,this.#i[n],this)}}purgeStale(){let e=!1;for(let i of this.#v({allowStale:!0}))this.#h(i)&&(this.delete(this.#i[i]),e=!0);return e}dump(){let e=[];for(let i of this.#w({allowStale:!0})){let n=this.#i[i],r=this.#e[i],o=this.#t(r)?r.__staleWhileFetching:r;if(o===void 0||n===void 0)continue;let s={value:o};if(this.#_&&this.#C){s.ttl=this.#_[i];let a=Ho.now()-this.#C[i];s.start=Math.floor(Date.now()-a)}this.#k&&(s.size=this.#k[i]),e.unshift([n,s])}return e}load(e){this.clear();for(let[i,n]of e){if(n.start){let r=Date.now()-n.start;n.start=Ho.now()-r}this.set(i,n.value,n)}}set(e,i,n={}){if(i===void 0)return this.delete(e),this;let{ttl:r=this.ttl,start:o,noDisposeOnSet:s=this.noDisposeOnSet,sizeCalculation:a=this.sizeCalculation,status:l}=n,{noUpdateTTL:u=this.noUpdateTTL}=n,h=this.#B(e,i,n.size||0,a);if(this.maxEntrySize&&h>this.maxEntrySize)return l&&(l.set="miss",l.maxEntrySizeExceeded=!0),this.delete(e),this;let y=this.#n===0?void 0:this.#r.get(e);if(y===void 0)y=this.#n===0?this.#o:this.#g.length!==0?this.#g.pop():this.#n===this.#c?this.#D(!1):this.#n,this.#i[y]=e,this.#e[y]=i,this.#r.set(e,y),this.#l[this.#o]=y,this.#f[y]=this.#o,this.#o=y,this.#n++,this.#P(y,h,l),l&&(l.set="add"),u=!1;else{this.#I(y);let v=this.#e[y];if(i!==v){if(this.#S&&this.#t(v)?v.__abortController.abort(new Error("replaced")):s||(this.#y&&this.#b?.(v,e,"set"),this.#u&&this.#s?.push([v,e,"set"])),this.#A(y),this.#P(y,h,l),this.#e[y]=i,l){l.set="replace";let T=v&&this.#t(v)?v.__staleWhileFetching:v;T!==void 0&&(l.oldValue=T)}}else l&&(l.set="update")}if(r!==0&&!this.#_&&this.#M(),this.#_&&(u||this.#j(y,r,o),l&&this.#T(l,y)),!s&&this.#u&&this.#s){let v=this.#s,T;for(;T=v?.shift();)this.#p?.(...T)}return this}pop(){try{for(;this.#n;){let e=this.#e[this.#a];if(this.#D(!0),this.#t(e)){if(e.__staleWhileFetching)return e.__staleWhileFetching}else if(e!==void 0)return e}}finally{if(this.#u&&this.#s){let e=this.#s,i;for(;i=e?.shift();)this.#p?.(...i)}}}#D(e){let i=this.#a,n=this.#i[i],r=this.#e[i];return this.#S&&this.#t(r)?r.__abortController.abort(new Error("evicted")):(this.#y||this.#u)&&(this.#y&&this.#b?.(r,n,"evict"),this.#u&&this.#s?.push([r,n,"evict"])),this.#A(i),e&&(this.#i[i]=void 0,this.#e[i]=void 0,this.#g.push(i)),this.#n===1?(this.#a=this.#o=0,this.#g.length=0):this.#a=this.#l[i],this.#r.delete(n),this.#n--,i}has(e,i={}){let{updateAgeOnHas:n=this.updateAgeOnHas,status:r}=i,o=this.#r.get(e);if(o!==void 0){let s=this.#e[o];if(this.#t(s)&&s.__staleWhileFetching===void 0)return!1;if(this.#h(o))r&&(r.has="stale",this.#T(r,o));else return n&&this.#x(o),r&&(r.has="hit",this.#T(r,o)),!0}else r&&(r.has="miss");return!1}peek(e,i={}){let{allowStale:n=this.allowStale}=i,r=this.#r.get(e);if(r!==void 0&&(n||!this.#h(r))){let o=this.#e[r];return this.#t(o)?o.__staleWhileFetching:o}}#E(e,i,n,r){let o=i===void 0?void 0:this.#e[i];if(this.#t(o))return o;let s=new Ia,{signal:a}=n;a?.addEventListener("abort",()=>s.abort(a.reason),{signal:s.signal});let l={signal:s.signal,options:n,context:r},u=(P,j=!1)=>{let{aborted:B}=s.signal,D=n.ignoreFetchAbort&&P!==void 0;if(n.status&&(B&&!j?(n.status.fetchAborted=!0,n.status.fetchError=s.signal.reason,D&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),B&&!D&&!j)return y(s.signal.reason);let q=T;return this.#e[i]===T&&(P===void 0?q.__staleWhileFetching?this.#e[i]=q.__staleWhileFetching:this.delete(e):(n.status&&(n.status.fetchUpdated=!0),this.set(e,P,l.options))),P},h=P=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=P),y(P)),y=P=>{let{aborted:j}=s.signal,B=j&&n.allowStaleOnFetchAbort,D=B||n.allowStaleOnFetchRejection,q=D||n.noDeleteOnFetchRejection,K=T;if(this.#e[i]===T&&(!q||K.__staleWhileFetching===void 0?this.delete(e):B||(this.#e[i]=K.__staleWhileFetching)),D)return n.status&&K.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),K.__staleWhileFetching;if(K.__returned===K)throw P},v=(P,j)=>{let B=this.#O?.(e,o,l);B&&B instanceof Promise&&B.then(D=>P(D),j),s.signal.addEventListener("abort",()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(P(),n.allowStaleOnFetchAbort&&(P=D=>u(D,!0)))})};n.status&&(n.status.fetchDispatched=!0);let T=new Promise(v).then(u,h),O=Object.assign(T,{__abortController:s,__staleWhileFetching:o,__returned:void 0});return i===void 0?(this.set(e,O,{...l.options,status:void 0}),i=this.#r.get(e)):this.#e[i]=O,O}#t(e){if(!this.#S)return!1;let i=e;return!!i&&i instanceof Promise&&i.hasOwnProperty("__staleWhileFetching")&&i.__abortController instanceof Ia}async fetch(e,i={}){let{allowStale:n=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,ttl:s=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:l=0,sizeCalculation:u=this.sizeCalculation,noUpdateTTL:h=this.noUpdateTTL,noDeleteOnFetchRejection:y=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:v=this.allowStaleOnFetchRejection,ignoreFetchAbort:T=this.ignoreFetchAbort,allowStaleOnFetchAbort:O=this.allowStaleOnFetchAbort,context:P,forceRefresh:j=!1,status:B,signal:D}=i;if(!this.#S)return B&&(B.fetch="get"),this.get(e,{allowStale:n,updateAgeOnGet:r,noDeleteOnStaleGet:o,status:B});let q={allowStale:n,updateAgeOnGet:r,noDeleteOnStaleGet:o,ttl:s,noDisposeOnSet:a,size:l,sizeCalculation:u,noUpdateTTL:h,noDeleteOnFetchRejection:y,allowStaleOnFetchRejection:v,allowStaleOnFetchAbort:O,ignoreFetchAbort:T,status:B,signal:D},K=this.#r.get(e);if(K===void 0){B&&(B.fetch="miss");let Z=this.#E(e,K,q,P);return Z.__returned=Z}else{let Z=this.#e[K];if(this.#t(Z)){let A=n&&Z.__staleWhileFetching!==void 0;return B&&(B.fetch="inflight",A&&(B.returnedStale=!0)),A?Z.__staleWhileFetching:Z.__returned=Z}let G=this.#h(K);if(!j&&!G)return B&&(B.fetch="hit"),this.#I(K),r&&this.#x(K),B&&this.#T(B,K),Z;let J=this.#E(e,K,q,P),I=J.__staleWhileFetching!==void 0&&n;return B&&(B.fetch=G?"stale":"refresh",I&&G&&(B.returnedStale=!0)),I?J.__staleWhileFetching:J.__returned=J}}get(e,i={}){let{allowStale:n=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,status:s}=i,a=this.#r.get(e);if(a!==void 0){let l=this.#e[a],u=this.#t(l);return s&&this.#T(s,a),this.#h(a)?(s&&(s.get="stale"),u?(s&&n&&l.__staleWhileFetching!==void 0&&(s.returnedStale=!0),n?l.__staleWhileFetching:void 0):(o||this.delete(e),s&&n&&(s.returnedStale=!0),n?l:void 0)):(s&&(s.get="hit"),u?l.__staleWhileFetching:(this.#I(a),r&&this.#x(a),l))}else s&&(s.get="miss")}#F(e,i){this.#f[i]=e,this.#l[e]=i}#I(e){e!==this.#o&&(e===this.#a?this.#a=this.#l[e]:this.#F(this.#f[e],this.#l[e]),this.#F(this.#o,e),this.#o=e)}delete(e){let i=!1;if(this.#n!==0){let n=this.#r.get(e);if(n!==void 0)if(i=!0,this.#n===1)this.clear();else{this.#A(n);let r=this.#e[n];this.#t(r)?r.__abortController.abort(new Error("deleted")):(this.#y||this.#u)&&(this.#y&&this.#b?.(r,e,"delete"),this.#u&&this.#s?.push([r,e,"delete"])),this.#r.delete(e),this.#i[n]=void 0,this.#e[n]=void 0,n===this.#o?this.#o=this.#f[n]:n===this.#a?this.#a=this.#l[n]:(this.#l[this.#f[n]]=this.#l[n],this.#f[this.#l[n]]=this.#f[n]),this.#n--,this.#g.push(n)}}if(this.#u&&this.#s?.length){let n=this.#s,r;for(;r=n?.shift();)this.#p?.(...r)}return i}clear(){for(let e of this.#v({allowStale:!0})){let i=this.#e[e];if(this.#t(i))i.__abortController.abort(new Error("deleted"));else{let n=this.#i[e];this.#y&&this.#b?.(i,n,"delete"),this.#u&&this.#s?.push([i,n,"delete"])}}if(this.#r.clear(),this.#e.fill(void 0),this.#i.fill(void 0),this.#_&&this.#C&&(this.#_.fill(0),this.#C.fill(0)),this.#k&&this.#k.fill(0),this.#a=0,this.#o=0,this.#g.length=0,this.#m=0,this.#n=0,this.#u&&this.#s){let e=this.#s,i;for(;i=e?.shift();)this.#p?.(...i)}}};var ce=we(Se(),1);var Ma=we(Vp(),1),or=require("@mysten/sui.js/utils"),sr=require("@mysten/sui.js/transactions");var Zo=we(Se(),1),Yp=require("@mysten/sui.js/transactions"),ti=we(Se(),1);var Dn=we(Se(),1),vi=we(Se(),1);var Yo=we(Se(),1);var Qp=require("@mysten/sui.js/utils"),ja=require("@mysten/sui.js/transactions"),Ba=require("@mysten/sui.js/utils");var bu=we(Se(),1),_v=Object.defineProperty,bv=(t,e,i)=>e in t?_v(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,Ki=(t,e,i)=>(bv(t,typeof e!="symbol"?e+"":e,i),i);var Pa=443636,Da=-443636,mu="79226673515401279992447579055",gu="4295048016",wv=14,vv="59543866431248",kv="184467440737095516",Cv="15793534762490258745",Tv=class{generateMnemonic(t=24){return Rp(qp,t===12?128:256)}getKeypairFromMnemonics(t,e={}){let i=this.getDerivePath(e);return Hp.Ed25519Keypair.deriveKeypair(t,i)}getDerivePath(t={}){let{accountIndex:e=0,isExternal:i=!1,addressIndex:n=0}=t;return`m/44'/784'/${e}'/${i?1:0}'/${n}'`}},Jo=class{constructor(t){this.sdk=t,Ki(this,"_lru"),Ki(this,"_fetching",{})}async getCacheOrSet(t,e,i=0){var n;let r=this._lru||(this._lru=new Oa({max:100}));if(r.has(t))return r.get(t);let s=await((n=this._fetching)[t]||(n[t]=e()));return delete this._fetching[t],r.set(t,s,{ttl:i}),s}get provider(){return this.sdk.provider}get math(){return this.sdk.math}get account(){return this.sdk.account}get network(){return this.sdk.network}get contract(){return this.sdk.contract}get nft(){return this.sdk.nft}get coin(){return this.sdk.coin}get trade(){return this.sdk.trade}get pool(){return this.sdk.pool}};function Sv(t){if("reference"in t)return t.reference;let e=yu(t);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:Xp(t)}function Fa(t){var e,i;return"objectId"in t?t.objectId:(i=(e=Sv(t))==null?void 0:e.objectId)!=null?i:Jp(t)}function Vi(t){var e;return"fields"in t?t.fields:(e=Zp(t))==null?void 0:e.fields}function Zp(t){let e="data"in t?yu(t):t;if(!(!e||!xv(e)||e.content.dataType!=="moveObject"))return e.content}function xv(t){return t.content!==void 0}function yu(t){return t.data}function Xp(t){if(t.error&&"object_id"in t.error&&"version"in t.error&&"digest"in t.error){let e=t.error;return{objectId:e.object_id,version:e.version,digest:e.digest}}}function Jp(t){if(t.error&&"object_id"in t.error&&!("version"in t.error)&&!("digest"in t.error))return t.error.object_id}function Av(t){return t.data!==void 0}function Iv(t){var e;let i=Av(t)?t.data:t;return!i?.type&&"data"in t?((e=i?.content)==null?void 0:e.dataType)==="package"?"package":Na(t):i?.type}function Na(t){var e;return(e=Zp(t))==null?void 0:e.type}function Ov(t){var e;return(e=yu(t))==null?void 0:e.owner}var Xo=async(t,e,i)=>{let r=e.length;if(r>50){let o=[],s=0,a=Math.ceil(r/50);for(s;s<a;s++)o.push(t.multiGetObjects({ids:e.slice(s*50,(s+1)*50),options:i}));return(await Promise.all(o)).flat()}return await t.multiGetObjects({ids:e,options:i})},Pv=class extends Jo{async getConfig(){return(await this.fetchJSON())[this.network].contract}getFees(){return this.getCacheOrSet("fees",async()=>{let e=(await this.fetchJSON())[this.network].fee;return(await Xo(this.provider,Object.values(e),{showContent:!0})).map(n=>{let r=Vi(n),o=Fa(n),s=Na(n);return{objectId:o,type:s.split("<")[1].slice(0,-1),fee:r.fee,tickSpacing:r.tick_spacing}})})}fetchJSON(){return this.getCacheOrSet("contract-json",async()=>await(await fetch("https://s3.amazonaws.com/app.turbos.finance/sdk/contract.json?t="+Date.now(),{method:"GET"})).json())}},Wp=new ce.default(2).pow(new ce.default(128)),Dv=class{priceToSqrtPriceX64(t,e,i){return new ce.default(new U(t).mul(U.pow(10,i-e)).sqrt().mul(U.pow(2,64)).floor().toFixed(0))}sqrtPriceX64ToPrice(t,e,i){return new U(t.toString()).mul(U.pow(2,-64)).pow(2).mul(U.pow(10,e-i))}priceToTickIndex(t,e,i){return this.sqrtPriceX64ToTickIndex(this.priceToSqrtPriceX64(t,e,i))}sqrtPriceX64ToTickIndex(t){if(t.gt(new ce.default(mu))||t.lt(new ce.default(gu)))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let e=t.bitLength()-1,i=new ce.default(e-64),n=this.signedShiftLeft(i,32,128),r=new ce.default("8000000000000000","hex"),o=0,s=new ce.default(0),a=e>=64?t.shrn(e-63):t.shln(63-e);for(;r.gt(new ce.default(0))&&o<wv;){a=a.mul(a);let T=a.shrn(127);a=a.shrn(63+T.toNumber()),s=s.add(r.mul(T)),r=r.shrn(1),o+=1}let l=s.shrn(32),h=n.add(l).mul(new ce.default(vv)),y=this.signedShiftRight(h.sub(new ce.default(kv)),64,128).toNumber(),v=this.signedShiftRight(h.add(new ce.default(Cv)),64,128).toNumber();return y==v?y:this.tickIndexToSqrtPriceX64(v).lte(t)?v:y}tickIndexToSqrtPriceX64(t){return t>0?new ce.default(this.tickIndexToSqrtPricePositive(t)):new ce.default(this.tickIndexToSqrtPriceNegative(t))}tickIndexToPrice(t,e,i){return this.sqrtPriceX64ToPrice(this.tickIndexToSqrtPriceX64(t),e,i)}toX64_Decimal(t){return t.mul(U.pow(2,64))}fromX64_Decimal(t){return t.mul(U.pow(2,-64))}scaleDown(t,e){return new U(t).div(U.pow(10,e)).toString()}scaleUp(t,e){return new U(t).mul(U.pow(10,e)).toString()}bitsToNumber(t,e=32){return Ma.default.toNumber(Ma.default.asIntN(e,Ma.default.BigInt(t)))}subUnderflowU128(t,e){return t.add(Wp).sub(e).mod(Wp)}tickIndexToSqrtPricePositive(t){let e;return t&1?e=new ce.default("79232123823359799118286999567"):e=new ce.default("79228162514264337593543950336"),t&2&&(e=this.signedShiftRight(e.mul(new ce.default("79236085330515764027303304731")),96,256)),t&4&&(e=this.signedShiftRight(e.mul(new ce.default("79244008939048815603706035061")),96,256)),t&8&&(e=this.signedShiftRight(e.mul(new ce.default("79259858533276714757314932305")),96,256)),t&16&&(e=this.signedShiftRight(e.mul(new ce.default("79291567232598584799939703904")),96,256)),t&32&&(e=this.signedShiftRight(e.mul(new ce.default("79355022692464371645785046466")),96,256)),t&64&&(e=this.signedShiftRight(e.mul(new ce.default("79482085999252804386437311141")),96,256)),t&128&&(e=this.signedShiftRight(e.mul(new ce.default("79736823300114093921829183326")),96,256)),t&256&&(e=this.signedShiftRight(e.mul(new ce.default("80248749790819932309965073892")),96,256)),t&512&&(e=this.signedShiftRight(e.mul(new ce.default("81282483887344747381513967011")),96,256)),t&1024&&(e=this.signedShiftRight(e.mul(new ce.default("83390072131320151908154831281")),96,256)),t&2048&&(e=this.signedShiftRight(e.mul(new ce.default("87770609709833776024991924138")),96,256)),t&4096&&(e=this.signedShiftRight(e.mul(new ce.default("97234110755111693312479820773")),96,256)),t&8192&&(e=this.signedShiftRight(e.mul(new ce.default("119332217159966728226237229890")),96,256)),t&16384&&(e=this.signedShiftRight(e.mul(new ce.default("179736315981702064433883588727")),96,256)),t&32768&&(e=this.signedShiftRight(e.mul(new ce.default("407748233172238350107850275304")),96,256)),t&65536&&(e=this.signedShiftRight(e.mul(new ce.default("2098478828474011932436660412517")),96,256)),t&131072&&(e=this.signedShiftRight(e.mul(new ce.default("55581415166113811149459800483533")),96,256)),t&262144&&(e=this.signedShiftRight(e.mul(new ce.default("38992368544603139932233054999993551")),96,256)),this.signedShiftRight(e,32,256)}tickIndexToSqrtPriceNegative(t){let e=Math.abs(t),i;return e&1?i=new ce.default("18445821805675392311"):i=new ce.default("18446744073709551616"),e&2&&(i=this.signedShiftRight(i.mul(new ce.default("18444899583751176498")),64,256)),e&4&&(i=this.signedShiftRight(i.mul(new ce.default("18443055278223354162")),64,256)),e&8&&(i=this.signedShiftRight(i.mul(new ce.default("18439367220385604838")),64,256)),e&16&&(i=this.signedShiftRight(i.mul(new ce.default("18431993317065449817")),64,256)),e&32&&(i=this.signedShiftRight(i.mul(new ce.default("18417254355718160513")),64,256)),e&64&&(i=this.signedShiftRight(i.mul(new ce.default("18387811781193591352")),64,256)),e&128&&(i=this.signedShiftRight(i.mul(new ce.default("18329067761203520168")),64,256)),e&256&&(i=this.signedShiftRight(i.mul(new ce.default("18212142134806087854")),64,256)),e&512&&(i=this.signedShiftRight(i.mul(new ce.default("17980523815641551639")),64,256)),e&1024&&(i=this.signedShiftRight(i.mul(new ce.default("17526086738831147013")),64,256)),e&2048&&(i=this.signedShiftRight(i.mul(new ce.default("16651378430235024244")),64,256)),e&4096&&(i=this.signedShiftRight(i.mul(new ce.default("15030750278693429944")),64,256)),e&8192&&(i=this.signedShiftRight(i.mul(new ce.default("12247334978882834399")),64,256)),e&16384&&(i=this.signedShiftRight(i.mul(new ce.default("8131365268884726200")),64,256)),e&32768&&(i=this.signedShiftRight(i.mul(new ce.default("3584323654723342297")),64,256)),e&65536&&(i=this.signedShiftRight(i.mul(new ce.default("696457651847595233")),64,256)),e&131072&&(i=this.signedShiftRight(i.mul(new ce.default("26294789957452057")),64,256)),e&262144&&(i=this.signedShiftRight(i.mul(new ce.default("37481735321082")),64,256)),i}signedShiftLeft(t,e,i){let n=t.toTwos(i).shln(e);return n.imaskn(i+1),n.fromTwos(i)}signedShiftRight(t,e,i){let n=t.toTwos(i).shrn(e);return n.imaskn(i-e+1),n.fromTwos(i-e)}},_u=(t,e)=>{let i=Fa(t);if(Xp(t))throw new Error(`${e}(${i}) had been deleted`);if(Jp(t))throw new Error(`${e}(${i}) is not found`);return!0},Zr=60*1e3,Ev=class extends Jo{async getPools(t=!1){let e=await this.contract.getConfig(),i=[],n;do n=await this.provider.getDynamicFields({parentId:e.PoolTableId,cursor:n?.nextCursor,limit:15}),i.push(...n.data.map(a=>a.objectId));while(n.hasNextPage);if(!i.length)return[];let o=(await Xo(this.provider,i,{showContent:!0})).map(a=>Vi(a).value.fields.pool_id);if(!o.length)return[];let s=await Xo(this.provider,o,{showContent:!0});return t||(s=s.filter(a=>Vi(a).unlocked)),s.map(a=>this.parsePool(a))}async getPool(t){return this.getCacheOrSet(`pool-${t}`,async()=>{let e=await this.provider.getObject({id:t,options:{showContent:!0}});return _u(e,"pool"),this.parsePool(e)},1500)}async createPool(t){let{fee:e,address:i,tickLower:n,tickUpper:r,sqrtPrice:o,slippage:s,coinTypeA:a,coinTypeB:l}=t,u=await this.contract.getConfig(),h=new U(t.amountA),y=new U(t.amountB),[v,T]=await Promise.all([this.coin.selectTradeCoins(i,a,h),this.coin.selectTradeCoins(i,l,y)]),O=t.txb||new sr.TransactionBlock,P=v.length>0?this.coin.convertTradeCoins(O,v,a,h):[this.coin.zero(a,O)],j=T.length>0?this.coin.convertTradeCoins(O,T,l,y):[this.coin.zero(l,O)];return O.moveCall({target:`${u.PackageId}::pool_factory::deploy_pool_and_mint`,typeArguments:[a,l,e.type],arguments:[O.object(u.PoolConfig),O.object(e.objectId),O.pure(o,"u128"),O.object(u.Positions),O.makeMoveVec({objects:P}),O.makeMoveVec({objects:j}),O.pure(Math.abs(n).toFixed(0),"u32"),O.pure(n<0,"bool"),O.pure(Math.abs(r).toFixed(0),"u32"),O.pure(r<0,"bool"),O.pure(h.toFixed(0),"u64"),O.pure(y.toFixed(0),"u64"),O.pure(this.getMinimumAmountBySlippage(h,s),"u64"),O.pure(this.getMinimumAmountBySlippage(y,s),"u64"),O.pure(i,"address"),O.pure(Date.now()+(t.deadline||Zr),"u64"),O.object(or.SUI_CLOCK_OBJECT_ID),O.object(u.Versioned)]}),O}async addLiquidity(t){let{address:e,tickLower:i,tickUpper:n,slippage:r,pool:o}=t,s=await this.contract.getConfig(),a=await this.getPoolTypeArguments(o),[l,u]=a,[h,y]=await Promise.all([this.coin.getMetadata(l),this.coin.getMetadata(u)]);if(!h||!y)throw new Error("Invalid coin type");let v=new U(t.amountA),T=new U(t.amountB),[O,P]=await Promise.all([this.coin.selectTradeCoins(e,l,v),this.coin.selectTradeCoins(e,u,T)]),j=t.txb||new sr.TransactionBlock,B=O.length>0?this.coin.convertTradeCoins(j,O,l,v):[this.coin.zero(l,j)],D=P.length>0?this.coin.convertTradeCoins(j,P,u,T):[this.coin.zero(u,j)];return j.moveCall({target:`${s.PackageId}::position_manager::mint`,typeArguments:a,arguments:[j.object(o),j.object(s.Positions),j.makeMoveVec({objects:B}),j.makeMoveVec({objects:D}),j.pure(Math.abs(i).toFixed(0),"u32"),j.pure(i<0,"bool"),j.pure(Math.abs(n).toFixed(0),"u32"),j.pure(n<0,"bool"),j.pure(v.toFixed(0),"u64"),j.pure(T.toFixed(0),"u64"),j.pure(this.getMinimumAmountBySlippage(v,r),"u64"),j.pure(this.getMinimumAmountBySlippage(T,r),"u64"),j.pure(e,"address"),j.pure(Date.now()+(t.deadline||Zr),"u64"),j.object(or.SUI_CLOCK_OBJECT_ID),j.object(s.Versioned)]}),j}async increaseLiquidity(t){let{pool:e,slippage:i,address:n,nft:r}=t,o=await this.contract.getConfig(),s=new U(t.amountA),a=new U(t.amountB),l=await this.getPoolTypeArguments(e),[u,h]=l,[y,v]=await Promise.all([this.coin.selectTradeCoins(n,u,s),this.coin.selectTradeCoins(n,h,a)]),T=t.txb||new sr.TransactionBlock,O=y.length>0?this.coin.convertTradeCoins(T,y,u,s):[this.coin.zero(u,T)],P=v.length>0?this.coin.convertTradeCoins(T,v,h,a):[this.coin.zero(h,T)];return T.moveCall({target:`${o.PackageId}::position_manager::increase_liquidity`,typeArguments:l,arguments:[T.object(e),T.object(o.Positions),T.makeMoveVec({objects:O}),T.makeMoveVec({objects:P}),T.object(r),T.pure(s.toFixed(0),"u64"),T.pure(a.toFixed(0),"u64"),T.pure(this.getMinimumAmountBySlippage(s,i),"u64"),T.pure(this.getMinimumAmountBySlippage(a,i),"u64"),T.pure(Date.now()+(t.deadline||Zr*3),"u64"),T.object(or.SUI_CLOCK_OBJECT_ID),T.object(o.Versioned)]}),T}async decreaseLiquidity(t){let{slippage:e,nft:i,pool:n,decreaseLiquidity:r}=t,o=new U(t.amountA),s=new U(t.amountB),a=await this.contract.getConfig(),l=await this.getPoolTypeArguments(n),u=t.txb||new sr.TransactionBlock;return u.moveCall({target:`${a.PackageId}::position_manager::decrease_liquidity`,typeArguments:l,arguments:[u.object(n),u.object(a.Positions),u.object(i),u.pure(new Zo.default(r).toString(),"u128"),u.pure(this.getMinimumAmountBySlippage(o,e),"u64"),u.pure(this.getMinimumAmountBySlippage(s,e),"u64"),u.pure(Date.now()+(t.deadline||Zr*3),"u64"),u.object(or.SUI_CLOCK_OBJECT_ID),u.object(a.Versioned)]}),u}async removeLiquidity(t){let e=await this.decreaseLiquidity(t);return e=await this.collectFee({txb:e,...t}),e=await this.collectReward({txb:e,...t}),e=await this.nft.burn({txb:e,nft:t.nft,pool:t.pool}),e}async collectFee(t){let{pool:e,nft:i,address:n,collectAmountA:r,collectAmountB:o}=t,s=t.txb||new sr.TransactionBlock;if(Number(r)===0&&Number(o)===0)return s;let a=await this.contract.getConfig(),l=await this.getPoolTypeArguments(e);return s.moveCall({target:`${a.PackageId}::position_manager::collect`,typeArguments:l,arguments:[s.object(e),s.object(a.Positions),s.object(i),s.pure(r,"u64"),s.pure(o,"u64"),s.pure(n),s.pure(Date.now()+(t.deadline||Zr*3),"u64"),s.object(or.SUI_CLOCK_OBJECT_ID),s.object(a.Versioned)]}),s}async collectReward(t){let{pool:e,nft:i,rewardAmounts:n,address:r}=t,o=t.txb||new sr.TransactionBlock,s=await this.contract.getConfig(),a=await this.getPoolTypeArguments(e);return(await this.getPool(e)).reward_infos.forEach((u,h)=>{o.moveCall({target:`${s.PackageId}::position_manager::collect_reward`,typeArguments:[...a,u.fields.vault_coin_type],arguments:[o.object(e),o.object(s.Positions),o.object(i),o.object(u.fields.vault),o.pure(h,"u64"),o.pure(n[h],"u64"),o.pure(r),o.pure(Date.now()+(t.deadline||Zr*3),"u64"),o.object(or.SUI_CLOCK_OBJECT_ID),o.object(s.Versioned)]})}),o}getTokenAmountsFromLiquidity(t){let e=new U((t.liquidity||new Zo.default(1e8)).toString()),i=new U(t.currentSqrtPrice.toString()),n=new U(t.lowerSqrtPrice.toString()),r=new U(t.upperSqrtPrice.toString()),o,s;t.currentSqrtPrice.lt(t.lowerSqrtPrice)?(o=this.math.toX64_Decimal(e).mul(r.sub(n)).div(n.mul(r)),s=new U(0)):t.currentSqrtPrice.lt(t.upperSqrtPrice)?(o=this.math.toX64_Decimal(e).mul(r.sub(i)).div(i.mul(r)),s=this.math.fromX64_Decimal(e.mul(i.sub(n)))):(o=new U(0),s=this.math.fromX64_Decimal(e.mul(r.sub(n))));let a=t.ceil!==!1?"ceil":"floor";return[new Zo.default(o[a]().toString()),new Zo.default(s[a]().toString())]}async getPoolTypeArguments(t){return this.getCacheOrSet("pool-type-"+t,async()=>(await this.getPool(t)).types)}parsePoolType(t,e){var i;let n=((i=t.replace(">","").split("<")[1])==null?void 0:i.split(/,\s*/))||[];if(e!==void 0&&e!==n.length)throw new Error("Invalid pool type");return n}async getFixedLiquidity(t){var e,i;let{coinTypeA:n,coinTypeB:r,amountA:o,amountB:s}=t,[a,l]=await Promise.all([this.coin.getMetadata(n),this.coin.getMetadata(r)]),u=new U(this.math.scaleDown(o,a.decimals)).mul((e=t.priceA)!=null?e:1),h=new U(this.math.scaleDown(s,l.decimals)).mul((i=t.priceB)!=null?i:1);return{liquidityA:u.toString(),liquidityB:h.toString(),liquidity:u.plus(h).toString()}}parsePool(t){let e=Vi(t),i=Fa(t),n=Iv(t),r=this.parsePoolType(n,3);return this.getCacheOrSet("pool-type-"+i,async()=>r),{...e,objectId:i,type:n,types:r}}getMinimumAmountBySlippage(t,e){let i=new U(t),n=new U(1).minus(new U(e).div(100));if(n.lte(0)||n.gt(1))throw new Error("invalid slippage range");return i.mul(n).toFixed(0)}},Mv=(t,e)=>{let{pool:i,position:n,tickLowerDetail:r,tickUpperDetail:o}=e,s=new Dn.default(i.fee_growth_global_a),a=new Dn.default(n.fee_growth_inside_a),l=new Dn.default(n.tokens_owed_a),u=new Dn.default(i.fee_growth_global_b),h=new Dn.default(n.fee_growth_inside_b),y=new Dn.default(n.tokens_owed_b),v=new Dn.default(n.liquidity),T,O,P,j,B=t.bitsToNumber(i.tick_current_index.fields.bits),D=t.bitsToNumber(n.tick_lower_index.fields.bits),q=t.bitsToNumber(n.tick_upper_index.fields.bits);B<D?(T=t.subUnderflowU128(s,r.feeGrowthOutsideA),O=t.subUnderflowU128(u,r.feeGrowthOutsideB)):(T=r.feeGrowthOutsideA,O=r.feeGrowthOutsideB),B<q?(P=o.feeGrowthOutsideA,j=o.feeGrowthOutsideB):(P=t.subUnderflowU128(s,o.feeGrowthOutsideA),j=t.subUnderflowU128(u,o.feeGrowthOutsideB));let K=t.subUnderflowU128(t.subUnderflowU128(s,T),P),Z=t.subUnderflowU128(t.subUnderflowU128(u,O),j),G=t.subUnderflowU128(K,a).mul(v).shrn(64),J=t.subUnderflowU128(Z,h).mul(v).shrn(64);return{feeOwedA:l.add(G).toString(),feeOwedB:y.add(J).toString()}},zp=new Yo.default(0),Gp=new Yo.default(1),jv=new Yo.default(2),Bv={mul(t,e,i){let n=t.mul(e);if(this.isOverLimit(n,i))throw new Error(`Mul result higher than u${i}`);return n},mulDiv(t,e,i,n){return this.mulDivRoundUpIf(t,e,i,!1,n)},mulDivRoundUpIf(t,e,i,n,r){if(i.eq(zp))throw new Error("mulDiv denominator is zero");let o=this.mul(t,e,r),s=o.div(i);return n&&o.mod(i).gt(zp)?s.add(Gp):s},isOverLimit(t,e){let i=jv.pow(new Yo.default(e)).sub(Gp);return t.gt(i)}},Nv=(t,e)=>{var i,n,r,o;let{pool:s,position:a,tickLowerDetail:l,tickUpperDetail:u,timeStampInSeconds:h}=e,y=new vi.default(new U(s.reward_last_updated_time_ms).div(1e3).toFixed(0)),T=(h??new vi.default(Date.now()).div(new vi.default(1e3))).sub(new vi.default(y)),O=[],P=new vi.default(s.liquidity),j=new vi.default(a.liquidity);for(let B=0;B<3;++B){let D=s.reward_infos[B],q={emissionsPerSecondX64:new vi.default(D?D.fields.emissions_per_second:"0"),growthGlobalX64:new vi.default(D?D.fields.growth_global:"0")},K={growthInsideCheckpoint:new vi.default((n=(i=a.reward_infos[B])==null?void 0:i.fields.reward_growth_inside)!=null?n:"0"),amountOwed:new vi.default((o=(r=a.reward_infos[B])==null?void 0:r.fields.amount_owed)!=null?o:"0")},Z=q.growthGlobalX64;if(!P.isZero()){let k=Bv.mulDiv(T,q.emissionsPerSecondX64,P,128);Z=q.growthGlobalX64.add(k)}let G=l.rewardGrowthsOutside[B],J=u.rewardGrowthsOutside[B],x=Z;l.initialized&&(x=t.bitsToNumber(s.tick_current_index.fields.bits)<t.bitsToNumber(a.tick_lower_index.fields.bits)?t.subUnderflowU128(Z,G):G);let I=new vi.default(0);u.initialized&&(I=t.bitsToNumber(s.tick_current_index.fields.bits)<t.bitsToNumber(a.tick_upper_index.fields.bits)?J:t.subUnderflowU128(Z,J));let A=t.subUnderflowU128(t.subUnderflowU128(Z,x),I),M=K.amountOwed.shln(64);O[B]=M.add(t.subUnderflowU128(A,K.growthInsideCheckpoint).mul(j)).shrn(64).toString()}return O},Fv=class extends Jo{async getOwner(t){let e=await this.getObject(t),i=Ov(e);if(!(!i||typeof i=="string")){if("ObjectOwner"in i)return i.ObjectOwner;if("AddressOwner"in i)return i.AddressOwner}}async getFields(t){let e=await this.getObject(t);return Vi(e)}async getPositionFields(t){let e=await this.contract.getConfig(),i=await this.provider.getDynamicFieldObject({parentId:e.Positions,name:{type:"address",value:t}});return Vi(i)}async getPositionFieldsByPositionId(t){let e=await this.provider.getObject({id:t,options:{showContent:!0}});return _u(e,"position"),Vi(e)}async getPositionTick(t,e){let i=await this.provider.getDynamicFieldObject({parentId:t,name:{type:e.type,value:e.fields}}),n=Vi(i);if(n)return{tickIndex:this.math.bitsToNumber(n.name.fields.bits),initialized:n.value.fields.initialized,liquidityNet:new ti.default(this.math.bitsToNumber(n.value.fields.liquidity_net.fields.bits,128).toString()),liquidityGross:new ti.default(n.value.fields.liquidity_gross),feeGrowthOutsideA:new ti.default(n.value.fields.fee_growth_outside_a),feeGrowthOutsideB:new ti.default(n.value.fields.fee_growth_outside_b),rewardGrowthsOutside:n.value.fields.reward_growths_outside.map(r=>new ti.default(r))}}async getPositionAPR(t){let{poolId:e,getPrice:i,fees24h:n,tickLower:r,tickUpper:o}=t,s=await this.pool.getPool(e),a=this.math.bitsToNumber(s.tick_current_index.fields.bits),[l,u,h,y]=await Promise.all([this.coin.getMetadata(s.types[0]),this.coin.getMetadata(s.types[1]),i(s.types[0]),i(s.types[1])]);if(!h||!y||r>=o||a<r||a>=o)return{fees:"0",rewards:"0",total:"0"};let{minTokenA:v,minTokenB:T}=this.getRemoveLiquidityQuote(s,r,o),O=new U(this.math.scaleDown(v.toString(),l.decimals)).mul(h),P=new U(this.math.scaleDown(T.toString(),u.decimals)).mul(y),j=O.add(P),B=j.isZero()?new U(0):new U(n).mul(365).div(j).mul(100),D=new U(0);return await Promise.all(s.reward_infos.map(async q=>{let{emissions_per_second:K}=q.fields,Z=this.coin.formatCoinType(q.fields.vault_coin_type),[G,J]=await Promise.all([i(Z),this.coin.getMetadata(Z)]);!K||K==="0"||!G||(D=D.add(new U(new ti.default(K).shrn(64).toString()).div(10**J.decimals).mul(31536e3).mul(G).div(j).mul(100)))})),{fees:B.toString(),rewards:D.toString(),total:B.plus(D).toString()}}getRemoveLiquidityQuote(t,e,i){let n=new ti.default(0),r=new ti.default(t.liquidity),o=this.math.bitsToNumber(t.tick_current_index.fields.bits),s=this.math.tickIndexToSqrtPriceX64(e),a=this.math.tickIndexToSqrtPriceX64(i);if(o<e){let u=this.getTokenAFromLiquidity(r,s,a);return{minTokenA:this.adjustForSlippage(u),minTokenB:n}}if(o<i){let u=new ti.default(t.sqrt_price),h=this.getTokenAFromLiquidity(r,u,a),y=this.getTokenBFromLiquidity(r,s,u);return{minTokenA:this.adjustForSlippage(h),minTokenB:this.adjustForSlippage(y)}}let l=this.getTokenBFromLiquidity(r,s,a);return{minTokenA:n,minTokenB:this.adjustForSlippage(l)}}adjustForSlippage(t){let e={numerator:new ti.default(0),denominator:new ti.default(1e3)};return t.mul(e.denominator).div(e.denominator.add(e.numerator))}getTokenAFromLiquidity(t,e,i){let n=t.mul(i.sub(e)).shln(64),r=i.mul(e);return n.div(r)}getTokenBFromLiquidity(t,e,i){return t.mul(i.sub(e)).shrn(64)}async burn(t){let{pool:e,nft:i}=t,n=t.txb||new Yp.TransactionBlock,r=await this.contract.getConfig(),o=await this.pool.getPoolTypeArguments(e);return n.moveCall({target:`${r.PackageId}::position_manager::burn`,typeArguments:o,arguments:[n.object(r.Positions),n.object(i),n.object(r.Versioned)]}),n}async getPositionLiquidityUSD(t){let{position:e,poolId:i,priceA:n,priceB:r}=t,o=await this.pool.getPool(i),s=this.pool.getTokenAmountsFromLiquidity({currentSqrtPrice:new ti.default(o.sqrt_price),lowerSqrtPrice:this.math.tickIndexToSqrtPriceX64(this.math.bitsToNumber(e.tick_lower_index.fields.bits)),upperSqrtPrice:this.math.tickIndexToSqrtPriceX64(this.math.bitsToNumber(e.tick_upper_index.fields.bits)),liquidity:new ti.default(e.liquidity===void 0?1e8:e.liquidity)}),[a,l]=await Promise.all([this.coin.getMetadata(o.types[0]),this.coin.getMetadata(o.types[1])]),u=new U(s[0].toString()).div(10**a.decimals).mul(n||0),h=new U(s[1].toString()).div(10**l.decimals).mul(r||0);return u.plus(h).toString()}async getUnclaimedFeesAndRewards(t){let{position:e,poolId:i}=t,[n,r,o]=await Promise.all([this.pool.getPool(i),this.nft.getPositionTick(i,e.tick_lower_index),this.nft.getPositionTick(i,e.tick_upper_index)]),s={...t,pool:n,tickLowerDetail:r,tickUpperDetail:o},[a,l]=await Promise.all([this.getUnclaimedFees(s),this.getUnclaimedRewards(s)]),{unclaimedFees:u,...h}=a,{unclaimedRewards:y,...v}=l;return{fees:a.unclaimedFees.toString(),rewards:y.toString(),total:u.plus(y).toString(),fields:{...h,...v}}}async getUnclaimedFees(t){let{position:e,pool:i,getPrice:n,tickLowerDetail:r,tickUpperDetail:o}=t,[s,a,l,u]=await Promise.all([this.coin.getMetadata(i.types[0]),this.coin.getMetadata(i.types[1]),n(i.types[0]),n(i.types[1])]),h=Mv(this.math,{pool:i,position:e,tickLowerDetail:r,tickUpperDetail:o}),y=this.math.scaleDown(h.feeOwedA,s.decimals),v=this.math.scaleDown(h.feeOwedB,a.decimals);function T(j,B){return new U(1e6).mul(U.pow(10,B)).lt(j)}T(y,s.decimals)&&(y="0",h.feeOwedA="0"),T(v,a.decimals)&&(v="0",h.feeOwedB="0");let O=l===void 0?new U(0):new U(l).mul(y),P=u===void 0?new U(0):new U(u).mul(v);return{unclaimedFees:O.plus(P),scaledFeeOwedA:y,scaledFeeOwedB:v,...h}}async getUnclaimedRewards(t){let{position:e,pool:i,getPrice:n,tickLowerDetail:r,tickUpperDetail:o}=t,s=Nv(this.math,{pool:i,position:e,tickLowerDetail:r,tickUpperDetail:o}),a=[...s],l=i.reward_infos.map(v=>this.coin.formatCoinType(v.fields.vault_coin_type)),u=await Promise.all([...i.reward_infos.map((v,T)=>this.coin.getMetadata(l[T]))]),h=await Promise.all(i.reward_infos.map((v,T)=>n(l[T])));u.forEach((v,T)=>{a[T]=this.math.scaleDown(a[T],v.decimals)});let y=new U(0);return i.reward_infos.some((v,T)=>{let O=h[T];return O?(y=y.plus(new U(O).mul(a[T])),!1):(y=y.plus(1),!0)}),{unclaimedRewards:y,collectRewards:s,scaledCollectRewards:a}}getObject(t){return this.getCacheOrSet("nft-object-"+t,async()=>{let e=await this.provider.getObject({id:t,options:{showContent:!0,showOwner:!0}});return _u(e,"nft"),e})}},Rv=class extends Jo{isSUI(t){return(0,Qp.normalizeSuiAddress)(t)==="0x000000000000000000000000000000000000000000000000000002::sui::sui"}async getMetadata(t){return this.getCacheOrSet(`coin-metadata-${t}`,async()=>{let e=await this.provider.getCoinMetadata({coinType:t});if(!e)throw new Error(`Coin "${t}" is not found`);return e})}async selectTradeCoins(t,e,i){if(i.eq(0))return[];let n=[],r=[],o=new U(0),s;do s=await this.provider.getCoins({owner:t,coinType:e,cursor:s?.nextCursor}),n.push(...s.data);while(s.hasNextPage);n.sort((a,l)=>Number(l.balance)-Number(a.balance));for(let a of n)if(r.push(a.coinObjectId),o=o.add(a.balance),o.gte(i))break;return r}convertTradeCoins(t,e,i,n){return this.isSUI(i)?[t.splitCoins(t.gas,[t.pure(n.toNumber())])[0]]:e.map(r=>t.object(r))}zero(t,e){return e.moveCall({typeArguments:[t],target:"0x2::coin::zero",arguments:[]})}formatCoinType(t,e=!1){let n=t.replace(/^0x/i,"");return n=n.replace(/^0+(2::sui::SUI)$/,"$1"),"0x"+(e&&n.length<64&&t!=="2::sui:SUI"?"0".repeat(64-n.length):"")+n}},qv=60*1e3,Ea=100,Lv=class extends Jo{async swap(t){let{coinTypeA:e,coinTypeB:i,address:n,amountSpecifiedIsInput:r,slippage:o}=t,s=new U(t.amountA),a=new U(t.amountB),l=await this.contract.getConfig(),u=await Promise.all(t.routes.map(async P=>{let j=await this.pool.getPoolTypeArguments(P.pool),[B,D]=await Promise.all([this.coin.getMetadata(j[0]),this.coin.getMetadata(j[1])]);return{...P,coinA:B,coinB:D,typeArguments:j}})),h=await this.coin.selectTradeCoins(n,e,s),{functionName:y,typeArguments:v}=this.getFunctionNameAndTypeArguments(u.map(({typeArguments:P})=>P),e,i),T=u.map(({nextTickIndex:P,coinA:j,coinB:B,a2b:D})=>{let q=this.math.tickIndexToPrice(P,j.decimals,B.decimals);return this.sqrtPriceWithSlippage(q,o,D,j.decimals,B.decimals)}),O=t.txb||new ja.TransactionBlock;return O.moveCall({target:`${l.PackageId}::swap_router::${y}`,typeArguments:v,arguments:[...u.map(({pool:P})=>O.object(P)),O.makeMoveVec({objects:this.coin.convertTradeCoins(O,h,e,s)}),O.pure((r?s:a).toFixed(0),"u64"),O.pure(this.amountOutWithSlippage(r?a:s,o,r),"u64"),...T.map(P=>O.pure(P,"u128")),O.pure(r,"bool"),O.pure(n,"address"),O.pure(Date.now()+(t.deadline||qv*3),"u64"),O.object(Ba.SUI_CLOCK_OBJECT_ID),O.object(l.Versioned)]}),O}async computeSwapResult(t){let{pools:e,amountSpecified:i,amountSpecifiedIsInput:n,address:r,tickStep:o}=t,s=await this.contract.getConfig(),a=e.map(y=>y.pool),l=await Xo(this.provider,a,{showContent:!0}),u=new ja.TransactionBlock;l.map(async y=>{let v=Vi(y),T=e.find(D=>D.pool===v.id.id),O=this.math.bitsToNumber(v.tick_current_index.fields.bits),P=O-v.tick_spacing*(o||Ea),j=O+v.tick_spacing*(o||Ea);P=P<Da?Da:P,j=j>Pa?Pa:j;let B=this.pool.parsePoolType(Na(y));u.moveCall({target:`${s.PackageId}::pool_fetcher::compute_swap_result`,typeArguments:B,arguments:[u.object(v.id.id),u.pure(T.a2b,"bool"),u.pure(new U(i).toFixed(0),"u128"),u.pure(n,"bool"),u.pure(this.math.tickIndexToSqrtPriceX64(T.a2b?P:j).toString(),"u128"),u.object(Ba.SUI_CLOCK_OBJECT_ID),u.object(s.Versioned)]})});let h=await this.provider.devInspectTransactionBlock({transactionBlock:u,sender:r});if(h.error)throw new Error(h.error);return h.events.map(y=>y.parsedJson)}async computeSwapResultV2(t){let{pools:e,amountSpecifiedIsInput:i,address:n,tickStep:r}=t,o=await this.contract.getConfig(),s=e.map(h=>h.pool),a=await Xo(this.provider,Array.from(new Set(s)),{showContent:!0}),l=new ja.TransactionBlock;e.forEach(async h=>{let y=a.find(B=>Fa(B)===h.pool),v=Vi(y),T=this.math.bitsToNumber(v.tick_current_index.fields.bits),O=T-v.tick_spacing*(r||Ea),P=T+v.tick_spacing*(r||Ea);O=O<Da?Da:O,P=P>Pa?Pa:P;let j=this.pool.parsePoolType(Na(y));l.moveCall({target:`${o.PackageId}::pool_fetcher::compute_swap_result`,typeArguments:j,arguments:[l.object(v.id.id),l.pure(h.a2b,"bool"),l.pure(new U(h.amountSpecified).toFixed(0),"u128"),l.pure(i,"bool"),l.pure(this.math.tickIndexToSqrtPriceX64(h.a2b?O:P).toString(),"u128"),l.object(Ba.SUI_CLOCK_OBJECT_ID),l.object(o.Versioned)]})});let u=await this.provider.devInspectTransactionBlock({transactionBlock:l,sender:n});if(u.error)throw new Error(u.error);return u.events.map(h=>h.parsedJson)}getFunctionNameAndTypeArguments(t,e,i){let n=[],r=["swap"];if(t.length===1)n=t[0],e===n[0]?r.push("a","b"):r.push("b","a");else{let o=t[0],s=t[1];e===o[0]?(r.push("a","b"),n.push(o[0],o[2],o[1])):(r.push("b","a"),n.push(o[1],o[2],o[0])),n.push(s[2],i),i===s[0]?r.push("c","b"):r.push("b","c")}return{functionName:r.join("_"),typeArguments:n}}amountOutWithSlippage(t,e,i){if(i){let r=new U(100).minus(e).div(100);return new U(t).mul(r).toFixed(0)}let n=new U(100).plus(e).div(100);return new U(t).mul(n).toFixed(0)}sqrtPriceWithSlippage(t,e,i,n,r){let o=new U(t).mul(i?new U(100).minus(e).div(100):new U(100).plus(e).div(100)),s=this.math.priceToSqrtPriceX64(o,n,r);return s.lt(new bu.BN(gu))?gu:s.gt(new bu.BN(mu))?mu:s.toString()}},Mt=class{constructor(t,e){this.network=t,Ki(this,"pool"),Ki(this,"contract"),Ki(this,"math",new Dv),Ki(this,"account",new Tv),Ki(this,"coin"),Ki(this,"nft"),Ki(this,"trade"),Ki(this,"provider"),this.provider=e?e instanceof ar.SuiClient?e:new ar.SuiClient(e):new ar.SuiClient({url:t==="mainnet"?(0,ar.getFullnodeUrl)("mainnet"):(0,ar.getFullnodeUrl)("testnet")}),this.contract=new Pv(this),this.pool=new Ev(this),this.nft=new Fv(this),this.coin=new Rv(this),this.trade=new Lv(this)}};var $v=Object.defineProperty,Pm=(t,e)=>{for(var i in e)$v(t,i,{get:e[i],enumerable:!0})},le=class{constructor(t){this.data=t}get application(){return"msafe-core"}serialize(){return JSON.stringify((0,Mm.default)(this.data))}},Uv={fullRpcUrl:"https://fullnode.mainnet.sui.io/",simulationAccount:{address:"0x326ce9894f08dcaa337fa232641cc34db957aec9ff6614c1186bc9a7508df0bb"},cetus_config:{package_id:"0x95b8d278b876cae22206131fb9724f701c9444515813042f54f0a426c9a3bc2f",published_at:"0x95b8d278b876cae22206131fb9724f701c9444515813042f54f0a426c9a3bc2f",config:{coin_list_id:"0x8cbc11d9e10140db3d230f50b4d30e9b721201c0083615441707ffec1ef77b23",launchpad_pools_id:"0x1098fac992eab3a0ab7acf15bb654fc1cf29b5a6142c4ef1058e6c408dd15115",clmm_pools_id:"0x15b6a27dd9ae03eb455aba03b39e29aad74abd3757b8e18c0755651b2ae5b71e",admin_cap_id:"0x39d78781750e193ce35c45ff32c6c0c3f2941fa3ddaf8595c90c555589ddb113",global_config_id:"0x0408fa4e4a4c03cc0de8f23d0c2bbfe8913d178713c9a271ed4080973fe42d8f",coin_list_handle:"0x49136005e90e28c4695419ed4194cc240603f1ea8eb84e62275eaff088a71063",launchpad_pools_handle:"0x5e194a8efcf653830daf85a85b52e3ae8f65dc39481d54b2382acda25068375c",clmm_pools_handle:"0x37f60eb2d9d227949b95da8fea810db3c32d1e1fa8ed87434fc51664f87d83cb"}},clmm_pool:{package_id:"0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb",published_at:"0xc33c3e937e5aa2009cc0c3fdb3f345a0c3193d4ee663ffc601fe8b894fbc4ba6",version:4,config:{pools_id:"0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0",global_config_id:"0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",global_vault_id:"0xce7bceef26d3ad1f6d9b6f13a953f053e6ed3ca77907516481ce99ae8e588f2b",admin_cap_id:"0x89c1a321291d15ddae5a086c9abc533dff697fde3d89e0ca836c41af73e36a75"}},integrate:{package_id:"0x996c4d9480708fb8b92aa7acf819fb0497b5ec8e65ba06601cae2fb6db3312c3",published_at:"0xd43348b8879c1457f882b02555ba862f2bc87bcc31b16294ca14a82f608875d2",version:6},deepbook:{package_id:"0x000000000000000000000000000000000000000000000000000000000000dee9",published_at:"0x000000000000000000000000000000000000000000000000000000000000dee9"},deepbook_endpoint_v2:{package_id:"0x92aee86c01c79146d23938a00c7fff725ee0688c389be36d1bcbe03761b466c6",published_at:"0x92aee86c01c79146d23938a00c7fff725ee0688c389be36d1bcbe03761b466c6"},aggregatorUrl:"https://api-sui.cetus.zone/router",swapCountUrl:"https://api-sui.cetus.zone/v2/sui/swap/count"},Kv={launchpad:{package_id:"0x80d114c5d474eabc2eb2fcd1a0903f1eb5b5096a8dc4184d72453f7a9be728e4",published_at:"0x80d114c5d474eabc2eb2fcd1a0903f1eb5b5096a8dc4184d72453f7a9be728e4",config:{pools_id:"0xfd8d37f7a1276878972d240302c8efe32f577220c1bbc6c8984d8b60dddfcab3",admin_cap_id:"0x66c70d58c69353714cc6fe2d3a62492d605a96a9821e2bd8274de17219c69980",config_cap_id:"0x02b8d23f033687579966e182c776fe0287cacdbb18bff56c29f141e29a18a4d1"}},ido:{package_id:"0x1192c9e20b4b0a8848a73a8c711b43e38f7ea1f307b556aab6ffab4e982e9c59",published_at:"0x1192c9e20b4b0a8848a73a8c711b43e38f7ea1f307b556aab6ffab4e982e9c59",config:{pools_id:"0xefc209b47acf1f23b29d166440904600229e520ad36228aaf2329b7c16be9762",admin_cap_id:"0x281859d366951830aeeda90779aa170d8ee6845875545470d33ecb890e78c8ce",package_version_id:"0xc93dc996106770af5f4e979b6808518f8cee080f22f35b936f071f59d834bb22"}},xcetus:{package_id:"0x9e69acc50ca03bc943c4f7c5304c2a6002d507b51c11913b247159c60422c606",published_at:"0x9e69acc50ca03bc943c4f7c5304c2a6002d507b51c11913b247159c60422c606",config:{xcetus_manager_id:"0x838b3dbade12b1e602efcaf8c8b818fae643e43176462bf14fd196afa59d1d9d",lock_manager_id:"0x288b59d9dedb51d0bb6cb5e13bfb30885ecf44f8c9076b6f5221c5ef6644fd28",lock_handle_id:"0x7c534bb7b8a2cc21538d0dbedd2437cc64f47106cb4c259b9ff921b5c3cb1a49"}},xcetus_dividends:{package_id:"0x785248249ac457dfd378bdc6d2fbbfec9d1daf65e9d728b820eb4888c8da2c10",published_at:"0xcec352932edc6663a118e8d64ed54da6b8107e8719603bf728f80717592cd9e8",version:3,config:{dividend_manager_id:"0x721c990bfc031d074341c6059a113a59c1febfbd2faeb62d49dcead8408fa6b5",dividend_admin_id:"",dividend_settle_id:""}},cetus_faucet:{package_id:"0x6864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",published_at:"0x6864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b"},xtoken:{package_id:"",published_at:"",config:{xtoken_manager_id:"",lock_manager_id:"",lock_handle_id:""}},xtoken_dividends:{package_id:"",published_at:"",config:{dividend_manager_id:"",dividend_admin_id:"",dividend_settle_id:""}},token_faucet:{package_id:"",published_at:""},booster:{package_id:"",published_at:"",config:{booster_config_id:"",booster_pool_handle:""}},maker_bonus:{package_id:"",published_at:"",config:{maker_config_id:"",maker_pool_handle:""}},liquidity_stratefy:{package_id:"",published_at:"",version:void 0,config:void 0},vaults:{package_id:"0xd3453d9be7e35efe222f78a810bb3af1859fd1600926afced8b4936d825c9a05",published_at:"0xd3453d9be7e35efe222f78a810bb3af1859fd1600926afced8b4936d825c9a05",version:1,config:{admin_cap_id:"0x78a42978709c4032fab7b33b782b5bcef64c1c6603250bf23644650b72144375",vaults_manager_id:"0x25b82dd2f5ee486ed1c8af144b89a8931cd9c29dee3a86a1bfe194fdea9d04a6",vaults_pool_handle:"0x9036bcc5aa7fd2cceec1659a6a1082871f45bc400c743f50063363457d1738bd"}},limit_order:{package_id:"",published_at:"",version:1,config:{rate_orders_indexer_id:"",rate_orders_indexer_handle:"",global_config_id:"",token_list_handle:"",user_orders_indexer_id:"",user_orders_indexer_handle:""}},frams:{package_id:"0x11ea791d82b5742cc8cab0bf7946035c97d9001d7c3803a93f119753da66f526",published_at:"0x11ea791d82b5742cc8cab0bf7946035c97d9001d7c3803a93f119753da66f526",version:1,config:{global_config_id:"0x21215f2f6de04b57dd87d9be7bb4e15499aec935e36078e2488f36436d64996e",rewarder_manager_id:"0xe0e155a88c77025056da08db5b1701a91b79edb6167462f768e387c3ed6614d5",rewarder_manager_handle:"0xb32e312cbb3367d6f3d2b4e57c9225e903d29b7b9f612dae2ddf75bdeb26a5aa",admin_cap_id:"0xf10fbf1fea5b7aeaa524b87769461a28c5c977613046360093673991f26d886c"}},haedal:{package_id:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",published_at:"0x1d56b8ec33c3fae897eb7bb1acb79914e8152faed614868928e684c25c8b198d",version:1,config:{support_stakings:[{staking_id:"0x47b224762220393057ebf4f70501b6e657c3e56684737568439a04f80849b2ca",from_coin_type:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",to_coin_type:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI"}]}}},Vv={fullRpcUrl:"https://fullnode.testnet.sui.io/",simulationAccount:{address:"0xcd0247d0b67e53dde69b285e7a748e3dc390e8a5244eb9dd9c5c53d95e4cf0aa"},cetus_config:{package_id:"0xf5ff7d5ba73b581bca6b4b9fa0049cd320360abd154b809f8700a8fd3cfaf7ca",published_at:"0xf5ff7d5ba73b581bca6b4b9fa0049cd320360abd154b809f8700a8fd3cfaf7ca",config:{coin_list_id:"0x257eb2ba592a5480bba0a97d05338fab17cc3283f8df6998a0e12e4ab9b84478",launchpad_pools_id:"0xdc3a7bd66a6dcff73c77c866e87d73826e446e9171f34e1c1b656377314f94da",clmm_pools_id:"0x26c85500f5dd2983bf35123918a144de24e18936d0b234ef2b49fbb2d3d6307d",admin_cap_id:"0x1a496f6c67668eb2c27c99e07e1d61754715c1acf86dac45020c886ac601edb8",global_config_id:"0xe1f3db327e75f7ec30585fa52241edf66f7e359ef550b533f89aa1528dd1be52",coin_list_handle:"0x3204350fc603609c91675e07b8f9ac0999b9607d83845086321fca7f469de235",launchpad_pools_handle:"0xae67ff87c34aceea4d28107f9c6c62e297a111e9f8e70b9abbc2f4c9f5ec20fd",clmm_pools_handle:"0xd28736923703342b4752f5ed8c2f2a5c0cb2336c30e1fed42b387234ce8408ec"}},clmm_pool:{package_id:"0x0868b71c0cba55bf0faf6c40df8c179c67a4d0ba0e79965b68b3d72d7dfbf666",published_at:"0x1c29d658882c40eeb39a8bb8fe58f71a216a918acb3e3eb3b47d24efd07257f2",config:{pools_id:"0xc090b101978bd6370def2666b7a31d7d07704f84e833e108a969eda86150e8cf",global_config_id:"0x6f4149091a5aea0e818e7243a13adcfb403842d670b9a2089de058512620687a",global_vault_id:"0xf3114a74d54cbe56b3e68f9306661c043ede8c6615f0351b0c3a93ce895e1699",admin_cap_id:""}},integrate:{package_id:"0x8627c5cdcd8b63bc3daa09a6ab7ed81a829a90cafce6003ae13372d611fbb1a9",published_at:"0xf1a5d0c5b0593e41d13f9684ca91365bdfe54a98836c1d33c90e361a031fac74",version:6},deepbook:{package_id:"0x000000000000000000000000000000000000000000000000000000000000dee9",published_at:"0x000000000000000000000000000000000000000000000000000000000000dee9"},deepbook_endpoint_v2:{package_id:"0xa34ffca2c6540e1ca9e53963ab43e7b1eed7b82e37696c743bb7c6179c15dfa6",published_at:"0xa34ffca2c6540e1ca9e53963ab43e7b1eed7b82e37696c743bb7c6179c15dfa6"},aggregatorUrl:"https://api-sui.devcetus.com/router",swapCountUrl:"https://api-sui.devcetus.com/v2/sui/swap/count"},Wv={launchpad:{package_id:"0x3beee8416089a5cbff9cfd5c0a2ce2937b0452dc7e2a3ab4dc431c7be05c2335",published_at:"0x3beee8416089a5cbff9cfd5c0a2ce2937b0452dc7e2a3ab4dc431c7be05c2335",config:{pools_id:"0xccc10403ab3da4ae943847908e0e674fe1fdab81c6383e4c6dcd0eea0edade3d",admin_cap_id:"0x8a72713049dbcfc40902ff209dc5e6066fe455d152baa235957c84d7a3b875ed",config_cap_id:"0x16492b4252b01debb60f8a825334020d7fdb9d895b52f8139c98618de30817fc"}},ido:{package_id:"0x1352bf18ef20458f7cc773852d4a90b240015a6a54479dda3a1debfc500bf044",published_at:"0xbd09a0889ea9970b821512428bab3e2fd01e16809a90a325cd3b3d3573eab6a4",config:{pools_id:"0x346bee25ab4d15bcfa9484ef5ebd4d7c94eb665ebaa745ff4094936a7f59a8b1",admin_cap_id:"0xc1bb19a24d3bb65dfd4f3835637b63347c223c67cde4b0888f1a857974f33cbb",package_version_id:"0x3ccf1b38e3259e638b980d4e6b49eac8c5aa94d3cb2ace5e75f0a551c8e67e5e"}},xcetus:{package_id:"0xdebaab6b851fd3414c0a62dbdf8eb752d6b0d31f5cfce5e38541bc6c6daa8966",published_at:"0xdebaab6b851fd3414c0a62dbdf8eb752d6b0d31f5cfce5e38541bc6c6daa8966",config:{xcetus_manager_id:"0x3be34cbad122c8b100ed7157d762b9610e68b3c65734e08bc3c3baf857da807d",lock_manager_id:"0x7c67e805182e3fecd098bd68a6b06c317f28f8c6249bd771e07904a10b424e60",lock_handle_id:"0xc5f3bbfefe9a45c13da7a34bc72cac122ee45d633690476a8ac56bd2c4e78c86"}},xcetus_dividends:{package_id:"0x20d948d640edd0c749f533d41efc5f843f212d441220324ad7959c6e1d281828",published_at:"0x20d948d640edd0c749f533d41efc5f843f212d441220324ad7959c6e1d281828",config:{dividend_manager_id:"0x13b7facb704fae1d199ff0038b8acabc253415a77d142b39189dee97d457e442",dividend_admin_id:"0x5eb78463007422d4130b21f61c180bcd190819b7792f56e00a61df3b8fb928ef",dividend_settle_id:"0x495095e13a170ff494d242ae44ac2c7453011ca6c33cff27498010105e10e4b4"}},cetus_faucet:{package_id:"0x1a69aee6be709054750949959a67aedbb4200583b39586d5e3eabe57f40012c7",published_at:"0x1a69aee6be709054750949959a67aedbb4200583b39586d5e3eabe57f40012c7"},xtoken:{package_id:"",published_at:"",config:{xtoken_manager_id:"",lock_manager_id:"",lock_handle_id:""}},xtoken_dividends:{package_id:"",published_at:"",config:{dividend_manager_id:"",dividend_admin_id:"",dividend_settle_id:""}},token_faucet:{package_id:"",published_at:""},booster:{package_id:"",published_at:"",config:{booster_config_id:"",booster_pool_handle:""}},maker_bonus:{package_id:"",published_at:"",config:{maker_config_id:"",maker_pool_handle:""}},liquidity_stratefy:{package_id:"",published_at:"",version:void 0,config:void 0},vaults:{package_id:"0x25cff94bdb454bae6a5565d09047bfe2b230025ef3bd2199622ec48d854b86b9",published_at:"0x25cff94bdb454bae6a5565d09047bfe2b230025ef3bd2199622ec48d854b86b9",config:{admin_cap_id:"0x9b2d6f5be2650d16d27cd630c4539a76d7793970343ed3cbb023e13f1637c07c",vaults_manager_id:"0xc0a1a937df08880e395d85014ff40c74f13abe7a53abdbffea36f51adaaaf79e",vaults_pool_handle:"0x3ab02203de753de9c8198cc0ce7594dc960878f2c34c5c5a4b7742082241860a"}},limit_order:{package_id:"",published_at:"",version:1,config:{rate_orders_indexer_id:"",rate_orders_indexer_handle:"",global_config_id:"",token_list_handle:"",user_orders_indexer_id:"",user_orders_indexer_handle:""}},frams:{package_id:"0xfa0d98e99c1dbdbea1b0fe089fa93ebab40a7719ae4160c42cc78ebfe029fda0",published_at:"0xfa0d98e99c1dbdbea1b0fe089fa93ebab40a7719ae4160c42cc78ebfe029fda0",config:{global_config_id:"0x5082c7a5ee9a758025d7b0a5e8aa08b56625c7cd535b8909d2b7993991e229cc",rewarder_manager_id:"0xe789e092dbd9dceadbe89350c4761a6f2e11647aab97f09746a01b151926cc0e",rewarder_manager_handle:"0x7e7dd42392b5d82564dc9ad5093a111c5f0598cc9f806cff257d7dacb71f7837",admin_cap_id:"0x4ec248bca2d1fc05f39fd7491ab490464a46d128624caa4d3c2a66d957ef40b0"}},haedal:{package_id:"0xac2afb455cbcdc2ff1a2e9bbb8aa4ccb4506a544b08c740886892a5cdf92f472",published_at:"0x9dac9c5770e5f930d2223ff68782958701acfaee9337e8d8363978ce7670dffb",config:{support_stakings:[{staking_id:"0x6e384d2da5b040b27f973155e25bbe4beb0ad5ca8ee0a36e20dff356094c9fc0",from_coin_type:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",to_coin_type:"0xac2afb455cbcdc2ff1a2e9bbb8aa4ccb4506a544b08c740886892a5cdf92f472::hasui::HASUI"}]}}},ro=(t,e)=>{let i=t==="sui:mainnet"?Uv:Vv,n=new dh(i);return n.senderAddress=e.address,n},ii=(t,e)=>{let i=ro(t,e),n=t==="sui:mainnet"?Kv:Wv;return new yh(n,i)},zv=async(t,e,i)=>await ro(i,e).Position.createAddLiquidityFixTokenPayload(t?.parameter,t?.gasEstimateArg),Gv=async(t,e,i)=>await ro(i,e).Position.createAddLiquidityFixTokenPayload(t?.parameter,t?.gasEstimateArg),Hv=async(t,e,i)=>await ro(i,e).Position.closePositionTransactionPayload(t),Zv=async(t,e,i)=>await ro(i,e).Position.removeLiquidityTransactionPayload(t),Xv=async(t,e,i)=>await ro(i,e).Rewarder.collectRewarderTransactionPayload(t),Jv=class jm extends le{constructor(e){super(e),this.data=e}txType=Em.TransactionType.Other;txSubType="OpenAndAddLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await zv(r,i,n)}static fromData(e){return new jm(e)}},Yv=class Nm extends le{constructor(e){super(e),this.data=e}txType=Bm.TransactionType.Other;txSubType="ClaimFeeAndMining";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Xv(r,i,n)}static fromData(e){return new Nm(e)}},Qv=class Rm extends le{constructor(e){super(e),this.data=e}txType=Fm.TransactionType.Other;txSubType="DecreaseLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Zv(r,i,n)}static fromData(e){return new Rm(e)}},ek=async(t,e,i)=>await ii(i,e).Farms.openPositionAddLiquidityStakePaylod(t),tk=async(t,e,i)=>await ii(i,e).Farms.addLiquidityFixCoinPayload(t),ik=async(t,e,i)=>await ii(i,e).Farms.removeLiquidityPayload(t),nk=async(t,e,i)=>await ii(i,e).Farms.removeLiquidityPayload(t),rk=async(t,e,i)=>await ii(i,e).Farms.claimFeeAndClmmReward(t),ok=async(t,e,i)=>{let n=ii(i,e);return console.log("getFarmingHarvest txbParams: ",t),await n.Farms.harvestPayload(t)},sk=async(t,e,i)=>{let n=ii(i,e),r=Object.values(t);return console.log("getFarmingBatchHarvest params: ",r),await n.Farms.batchHarvestPayload(r)},ak=async(t,e,i)=>await ii(i,e).Farms.depositPayload(t),ck=async(t,e,i)=>await ii(i,e).Farms.withdrawPayload(t),lk=class Lm extends le{constructor(e){super(e),this.data=e}txType=qm.TransactionType.Other;txSubType="FarmingOpenAndAddLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await ek(r,i,n)}static fromData(e){return new Lm(e)}},uk=class Um extends le{constructor(e){super(e),this.data=e}txType=$m.TransactionType.Other;txSubType="FarmingBatchHarvest";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await sk(r,i,n)}static fromData(e){return new Um(e)}},dk=class Vm extends le{constructor(e){super(e),this.data=e}txType=Km.TransactionType.Other;txSubType="FarmingClaimFeeAndReward";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await rk(r,i,n)}static fromData(e){return new Vm(e)}},fk=class zm extends le{constructor(e){super(e),this.data=e}txType=Wm.TransactionType.Other;txSubType="FarmingDecreaseLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await ik(r,i,n)}static fromData(e){return new zm(e)}},hk=class Hm extends le{constructor(e){super(e),this.data=e}txType=Gm.TransactionType.Other;txSubType="FarmingHarvest";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await ok(r,i,n)}static fromData(e){return new Hm(e)}},pk=class Xm extends le{constructor(e){super(e),this.data=e}txType=Zm.TransactionType.Other;txSubType="FarmingIncreaseLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await tk(r,i,n)}static fromData(e){return new Xm(e)}},mk=class Ym extends le{constructor(e){super(e),this.data=e}txType=Jm.TransactionType.Other;txSubType="FarmingRemoveLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await nk(r,i,n)}static fromData(e){return new Ym(e)}},gk=class eg extends le{constructor(e){super(e),this.data=e}txType=Qm.TransactionType.Other;txSubType="FarmingStake";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await ak(r,i,n)}static fromData(e){return new eg(e)}},_k=class ig extends le{constructor(e){super(e),this.data=e}txType=tg.TransactionType.Other;txSubType="FarmingUnstake";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await ck(r,i,n)}static fromData(e){return new ig(e)}},bk=class rg extends le{constructor(e){super(e),this.data=e}txType=ng.TransactionType.Other;txSubType="IncreaseLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Gv(r,i,n)}static fromData(e){return new rg(e)}},yk=class sg extends le{constructor(e){super(e),this.data=e}txType=og.TransactionType.Other;txSubType="RemoveLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Hv(r,i,n)}static fromData(e){return new sg(e)}},wk=async(t,e,i)=>await ii(i,e).XCetusModule.convertPayload(t),vk=async(t,e,i)=>await ii(i,e).XCetusModule.redeemLockPayload(t),kk=async(t,e,i)=>await ii(i,e).XCetusModule.redeemDividendV2Payload(t.venft_id,t.bonus_types,t.xTokenType),Ck=async(t,e,i)=>await ii(i,e).XCetusModule.cancelRedeemPayload(t),Tk=async(t,e,i)=>await ii(i,e).XCetusModule.redeemPayload(t),Sk=class cg extends le{constructor(e){super(e),this.data=e}txType=ag.TransactionType.Other;txSubType="xCETUSCancelRedeem";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Ck(r,i,n)}static fromData(e){return new cg(e)}},xk=class ug extends le{constructor(e){super(e),this.data=e}txType=lg.TransactionType.Other;txSubType="xCETUSClaimStakingRwewards";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await kk(r,i,n)}static fromData(e){return new ug(e)}},Ak=class fg extends le{constructor(e){super(e),this.data=e}txType=dg.TransactionType.Other;txSubType="xCETUSConvert";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await wk(r,i,n)}static fromData(e){return new fg(e)}},Ik=class pg extends le{constructor(e){super(e),this.data=e}txType=hg.TransactionType.Other;txSubType="xCETUSRedeem";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Tk(r,i,n)}static fromData(e){return new pg(e)}},Ok=class gg extends le{constructor(e){super(e),this.data=e}txType=mg.TransactionType.Other;txSubType="xCETUSRedeemLock";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await vk(r,i,n)}static fromData(e){return new gg(e)}},Pk=class{application="cetus";async deserialize(t){console.log("Cetus helper deserialize input: ",t);let{txbParams:e,action:i}=t;return{txType:Dm.TransactionType.Other,txSubType:i,intentionData:{txbParams:{...e},action:i}}}async build(t){let{suiClient:e,account:i,network:n}=t;console.log("helper build input: ",t),console.log("helper build input.intentionData: ",t.intentionData),console.log("helper build input.intentionData JSON: ",JSON.stringify(t.intentionData));let r;switch(t.txSubType){case"OpenAndAddLiquidity":r=Jv.fromData(t.intentionData);break;case"IncreaseLiquidity":r=bk.fromData(t.intentionData);break;case"DecreaseLiquidity":r=Qv.fromData(t.intentionData);break;case"RemoveLiquidity":r=yk.fromData(t.intentionData);break;case"ClaimFeeAndMining":r=Yv.fromData(t.intentionData);break;case"FarmingOpenAndAddLiquidity":r=lk.fromData(t.intentionData);break;case"FarmingIncreaseLiquidity":r=pk.fromData(t.intentionData);break;case"FarmingDecreaseLiquidity":r=fk.fromData(t.intentionData);break;case"FarmingRemoveLiquidity":r=mk.fromData(t.intentionData);break;case"FarmingClaimFeeAndReward":r=dk.fromData(t.intentionData);break;case"FarmingHarvest":r=hk.fromData(t.intentionData);break;case"FarmingBatchHarvest":r=uk.fromData(t.intentionData);break;case"FarmingStake":r=gk.fromData(t.intentionData);break;case"FarmingUnstake":r=_k.fromData(t.intentionData);break;case"xCETUSConvert":r=Ak.fromData(t.intentionData);break;case"xCETUSRedeemLock":r=Ok.fromData(t.intentionData);break;case"xCETUSClaimStakingRwewards":r=xk.fromData(t.intentionData);break;case"xCETUSCancelRedeem":r=Sk.fromData(t.intentionData);break;case"xCETUSRedeem":r=Ik.fromData(t.intentionData);break;default:throw new Error("not implemented")}return console.log("helper build intention: ",r),console.log("helper build account: ",i),console.log("helper build network: ",n),r.build({suiClient:e,account:i,network:n})}},bg={};Pm(bg,{contractId:()=>vg,default:()=>Dk,feeObjId:()=>Tg,roleObjId:()=>kg,status:()=>wg,transaction:()=>yg,upgradeCapObjId:()=>Sg,vaultObjId:()=>Cg});var yg="DiBZq4UmVVYiRL6ZJmFKYoHcxtxqrhsCXSkFyT7wUr3j",wg="success",vg="0x81c960dc653975fbd0072deca8afb92d322898c911622898ba1b2e3ad0c4bd8d",kg="0xc6ec0bdee0bb59a72077e9acd2f42457043cf47080b3d3fad4d39abf28bba63a",Cg="0xbc4021387fbac149119fd24e92be9e58f745774292f3a2a12e2ac6daf5363e1d",Tg="0x4178f63970fe2daeb256dc5730ad172e82b3e8eb45f31b33e0daae72cd35e1e1",Sg="0xe1e9aa7d222d151bfe6dd83358b0d7fdcb11260f710800cfaf7ccc1b1e245115",Dk={transaction:yg,status:wg,contractId:vg,roleObjId:kg,vaultObjId:Cg,feeObjId:Tg,upgradeCapObjId:Sg},xg={};Pm(xg,{contractId:()=>Og,default:()=>Ek,feeObjId:()=>Eg,roleObjId:()=>Pg,status:()=>Ig,transaction:()=>Ag,upgradeCapObjId:()=>Mg,vaultObjId:()=>Dg});var Ag="855FNDV8o8Z3fWULPnQo9qdhLJpsg7wZrkCpNyfw9KfB",Ig="success",Og="0xc357c3985e8fb875d6b37141497af660779aa1bab0ec489b2213efd74067d1fa",Pg="0x5ab49bdf9fd1413e328ef242b3f8d83dde791b38a0b627bfc87fb25c010d34f1",Dg="0xb483558770d8eb26007f193b75db40f0a45f2e36863a687625885d4de6993378",Eg="0x48453fc4d7cde3fe35aad89e5dfb496608a6a55ea529a1c0274681a808627f94",Mg="0x34279779a0d0d36bd5044b04830d607fa1b0ecf316548c8ac3a44151e4f1a42a",Ek={transaction:Ag,status:Ig,contractId:Og,roleObjId:Pg,vaultObjId:Dg,feeObjId:Eg,upgradeCapObjId:Mg},Mk="https://sui-testnet.blockvision.org/v1/2Sgk89ivT64MnKdcGzjmyjY2ndD",jk="https://sui-testnet.blockvision.org/v1/2Sgk89ivT64MnKdcGzjmyjY2ndD",Bk="https://sui-mainnet.blockvision.org/v1/2Sgk7NPvqkd7mESYkxF01yX15l7",Nk="https://sui-mainnet.blockvision.org/v1/2Sgk7NPvqkd7mESYkxF01yX15l7",Fk="https://bc3p6l5unl.execute-api.us-west-1.amazonaws.com/prod",Rk="https://rolsbkota7.execute-api.us-west-1.amazonaws.com/prod",qk="https://6p6mkx33ne.execute-api.us-west-1.amazonaws.com/prod",Lk="https://xrae3mrjv5.execute-api.us-west-1.amazonaws.com/prod",em=bg,tm=xg,$k=new Map([["dev",{env:"dev",rpc:{url:Mk},backend:{url:Fk},contract:em}],["stg",{env:"stg",rpc:{url:jk},backend:{url:Rk},contract:em}],["prev",{env:"prev",rpc:{url:Bk},backend:{url:qk},contract:tm}],["prod",{env:"prod",rpc:{url:Nk},backend:{url:Lk},contract:tm}]]);function Uk(t,e){let i=$k.get(t);if(!i)throw new Error(`Env not supported: ${t}`);return e&&e.rpc&&(i.rpc=e.rpc),e&&e.backend&&(i.backend=e.backend),e&&e.contract&&(i.contract=e.contract),i}var ui=class extends Error{mpayErrorCode;context;constructor(t,e,i={}){let{cause:n,context:r}=i;n?super(`[MPay] ${e}: ${n}`):super(`[MPay] ${e}`),this.mpayErrorCode=t,this.context=r}},Kk=class extends ui{constructor(){super(11,"Backend is not specified")}},Vk=class extends ui{constructor(){super(1,"Wallet not connected")}},wu=class extends ui{constructor(t,e){super(10,t,{context:e})}},Wk=class lr{constructor(e){this.apiURL=e}static parseResponseData(e){if(e instanceof ln.AxiosError)throw new wu(e.response?.statusText);if(e.status===200){if(e.data.success)return e.data.data;throw new wu(e.data.code)}throw new wu(e.status.toString())}async getIncomingStreams(e,i){let n=await ln.default.post(`${this.apiURL}/stream`,{recipient:e,...i});return lr.parseResponseData(n)}async getOutgoingStreams(e,i){let n=await ln.default.post(`${this.apiURL}/stream`,{sender:e,...i});return lr.parseResponseData(n)}async getStreamHistory(e){let i=await ln.default.post(`${this.apiURL}/stream-events`,e),n=lr.parseResponseData(i);return n.data.forEach(r=>{let o=r;return o.data.type==="create_stream"?o.data.balance=BigInt(o.data.balance):o.data.type==="cancel_stream"?o.data.withdrawAmount=BigInt(o.data.withdrawAmount):o.data.type==="claim"||o.data.type==="auto_claim"?o.data.claimAmount=BigInt(o.data.claimAmount):o.data.type==="set_auto_claim"&&(o.data.enabled=!!o.data.enabled),o.createdAt=new Date(o.createdAt),o}),n}async getAllCoinTypes(e){let i=await ln.default.post(`${this.apiURL}/stream-info`,{address:e});return lr.parseResponseData(i)}async getAllRecipients(e,i){let n=await ln.default.post(`${this.apiURL}/stream-info`,{sender:e,status:i});return lr.parseResponseData(n)}async getAllSenders(e,i){let n=await ln.default.post(`${this.apiURL}/stream-info`,{recipient:e,status:i});return lr.parseResponseData(n)}},Bg=class Ng{signer;suiClient;envConfig;_backend;constructor(e){this.envConfig=e,this.suiClient=new jg.SuiClient({url:e.rpc.url}),e.backend&&(this._backend=new Wk(e.backend.url))}static new(e,i){let n=Uk(e,i);return new Ng(n)}get walletType(){return this.wallet?this.wallet.type:"disconnected"}get backend(){if(!this._backend)throw new Kk;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 Vk;return this.signer}async walletAddress(){return this.wallet.address()}},im=50n,vu=10000n,zk=25n,nm=100000000n,cr=class{constructor(t){this.object=t}moveArg(t){return t.object(this.object)}},rm=class{constructor(t){this.objects=t}moveArgs(t){return t.makeMoveVec({objects:this.objects.map(e=>t.object(e))})}},za=class Fg{constructor(e){return this.result=e,new Proxy(this,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(i,n){if(n in i)return Reflect.get(i,n);let r=s=>new Fg(i.result[s]);if(n===Symbol.iterator)return function*(){let s=0;for(;;)yield r(s),s++};if(typeof n=="symbol")return;let o=parseInt(n,10);if(!(Number.isNaN(o)||o<0))return r(o)}})}moveArg(){return this.result}},om=class extends ui{constructor(t,e){super(3,t,{context:e})}},Gk=class{constructor(t){this.results=t}callResult(t){return this.results.results[t]}returnValue(t,e){return t.returnValues[e]}getValue(t=0,e=0){let i=this.callResult(t);return this.returnValue(i,e)}getAddress(t=0,e=0){let[i,n]=this.getValue(t,e);if(n!=="address")throw new om("Invalid contract return type.",{ctx:{expectType:"address",gotType:n}});return(0,Rg.normalizeSuiAddress)(Iu.Buffer.from(i).toString("hex"))}getU64(t=0,e=0){let[i,n]=this.getValue(t,e);if(n!=="u64")throw new om("Invalid contract return type.",{ctx:{expectType:"u64",gotType:n}});return Iu.Buffer.from(i).readBigInt64LE()}},li=class extends ui{constructor(t,e,i){super(2,`Invalid input: ${t}`,{context:{fieldKey:e,fieldValue:i}})}},qg={groupId:"string",name:"string"},Hk=64;function Zk(t){return Lg(t),$u.bcs.ser(qg,t).toString("base64")}function Ou(t){let e=$u.bcs.de(qg,t,"base64");return Lg(e),e}function Lg(t){if(!sm(t.name))throw new li("Invalid metadata: Name contains unknown character");if(!sm(t.groupId))throw new li("Invalid metadata: Group ID contains unknown character");if(t.name.length>Hk)throw new li("Invalid metadata: Name exceed max length 64")}function sm(t){return/^[\x00-\x7F]+$/.test(t)}function $g(t,e){return(0,os.normalizeStructTag)(t)===(0,os.normalizeStructTag)(e)}function Jr(t,e){return(0,os.normalizeStructTag)(t)===(0,os.normalizeStructTag)(e)}var Ug="txn.gas";function Xk(){return wh()}var Pu=class Kg{constructor(e,i,n){this.globals=e,this.feeContract=i,this.streamContract=n}static convertCreateStreamInfoToInternal(e){return{metadata:Zk({name:e.name,groupId:Xk()}),coinType:(0,rs.normalizeStructTag)(e.coinType),recipients:e.recipients.map(i=>({address:i.address,cliffAmount:i.cliffAmount,amountPerEpoch:i.amountPerStep})),epochInterval:e.interval,numberEpoch:e.steps,startTime:e.startTimeMs,cancelable:e.cancelable}}async buildCreateStreamTransactionBlock(e){let i=new Au.TransactionBlock,n=this.calculateFeesInternal(e),r=this.getCreateStreamCoinRequests(e,n),o=await this.wallet.requestCoins(r),s=await this.addMergeCoins(i,o[0]),a;r.length>1?a=await this.addMergeCoins(i,o[1]):a=s;for(let l=0;l<e.recipients.length;l++){let u=e.recipients[l],h=this.amountForRecipient(u,e.numberEpoch),y=this.getStreamFeeLocal(h),[v]=i.splitCoins(s,[i.pure(h+y,"u64")]),[T]=i.splitCoins(a,[i.pure(this.flatSuiFee,"u64")]);this.streamContract.createStream(i,{paymentCoin:new za(v),flatFeeCoin:new za(T),metadata:e.metadata,recipient:u.address,timeStart:e.startTime,cliff:u.cliffAmount,epochInterval:e.epochInterval,numEpoch:e.numberEpoch,amountPerEpoch:u.amountPerEpoch,cancelable:e.cancelable,coinType:e.coinType})}return i}calculateCreateStreamFees(e){let i=Kg.convertCreateStreamInfoToInternal(e);return this.calculateFeesInternal(i)}feeParams(){return{createFeePercent:{numerator:im,denominator:vu},claimFeePercent:{numerator:zk,denominator:vu},flatFeePerStream:nm}}async addMergeCoins(e,i){let n;return i.mergedCoins&&i.mergedCoins.length?(e.mergeCoins(e.object(i.primaryCoin),i.mergedCoins.map(r=>e.object(r))),n=e.object(i.primaryCoin)):i.primaryCoin===Ug?n=e.gas:n=e.object(i.primaryCoin),n}getCreateStreamCoinRequests(e,i){let n=e.coinType;return $g(n,rs.SUI_TYPE_ARG)?[{coinType:n,amount:i.totalAmount+i.streamFeeAmount+i.flatFeeAmount}]:[{coinType:n,amount:i.totalAmount+i.streamFeeAmount},{coinType:rs.SUI_TYPE_ARG,amount:i.flatFeeAmount}]}calculateFeesInternal(e){let i=e.recipients.reduce((n,r)=>{let o=this.amountForRecipient(r,e.numberEpoch),s=this.getStreamFeeLocal(o);return{totalAmount:n.totalAmount+o,streamFeeAmount:n.streamFeeAmount+s}},{totalAmount:0n,streamFeeAmount:0n});return{flatFeeAmount:BigInt(e.recipients.length)*this.flatSuiFee,...i}}amountForRecipient(e,i){return BigInt(e.amountPerEpoch)*BigInt(i)+BigInt(e.cliffAmount)}get flatSuiFee(){return nm}getStreamFeeLocal(e){return e*im/vu}async getStreamFeeRemote(e){let i=this.feeContract.streamingFee(new Au.TransactionBlock,e),n=await this.globals.suiClient.devInspectTransactionBlock({sender:await this.globals.walletAddress(),transactionBlock:i});return new Gk(n).getU64()}get wallet(){return this.globals.wallet}},Jk="0x0000000000000000000000000000000000000000000000000000000000000006",Vg=class{constructor(t,e,i){this.moduleName=t,this.config=e,this.globals=i}addContractCall(t,e){let i=`${this.config.contractId}::${this.moduleName}::${e.method}`;return t.add(Du.Transactions.MoveCall({target:i,arguments:e.arguments.map(n=>n instanceof rm?n.moveArgs(t):n instanceof cr?n.moveArg(t):n instanceof za?n.moveArg():t.pure(n)),typeArguments:e.typeArgs})),t}addTransactionBlock(t,e,i=[],n=[]){t.add(Du.Transactions.MoveCall({target:e,arguments:i.map(r=>r instanceof rm?r.moveArgs(t):r instanceof cr?r.moveArg(t):r instanceof za?r.moveArg():t.pure(r)),typeArguments:n}))}makeObject(t){return typeof t=="string"?new cr(t):t}vaultObject(){return new cr(this.config.vaultObjId)}roleObject(){return new cr(this.config.roleObjId)}feeObject(){return new cr(this.config.feeObjId)}clockObject(){return new cr(Jk)}},Wg=class En extends Vg{constructor(e,i){super(En.ModuleName,e,i),this.config=e,this.globals=i}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(e,i){let n=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:En.MethodName.set_streaming_fee,arguments:[n,r,i],typeArgs:[]})}setStreamingFlatFee(e,i){let n=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:En.MethodName.set_streaming_flat_fee,arguments:[n,r,i],typeArgs:[]})}setClaimFee(e,i){let n=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:En.MethodName.set_claim_fee,arguments:[n,r,i],typeArgs:[]})}streamingFee(e,i){let n=this.feeObject();return this.addContractCall(e,{method:En.MethodName.streaming_fee,arguments:[n,i],typeArgs:[]})}claimFee(e,i){return this.addContractCall(e,{method:En.MethodName.claim_fee,arguments:[this.feeObject(),i],typeArgs:[]})}feeDenominator(e){return this.addContractCall(e,{method:En.MethodName.fee_denominator,arguments:[this.feeObject()],typeArgs:[]})}},Za=class Ut extends Vg{constructor(e,i){super(Ut.ModuleName,e,i),this.config=e,this.globals=i}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(e,i){let n=this.feeObject(),r=this.vaultObject(),o=this.makeObject(i.paymentCoin),s=this.makeObject(i.flatFeeCoin),a=this.clockObject();return this.addContractCall(e,{method:Ut.MethodName.create_stream,arguments:[n,r,o,s,i.metadata,i.recipient,i.timeStart,i.cliff,i.epochInterval,i.numEpoch,i.amountPerEpoch,i.cancelable,a],typeArgs:[i.coinType]})}setAutoClaim(e,i){let n=this.makeObject(i.streamId);return this.addContractCall(e,{method:Ut.MethodName.set_auto_claim,arguments:[n,i.enabled],typeArgs:[i.coinType]})}cancelStream(e,i){let n=this.makeObject(i.streamId),r=this.clockObject();return this.addContractCall(e,{method:Ut.MethodName.cancel_stream,arguments:[n,r],typeArgs:[i.coinType]})}claimStream(e,i){let n=this.makeObject(i.streamId),r=this.clockObject();return this.addContractCall(e,{method:Ut.MethodName.claim_stream,arguments:[n,r],typeArgs:[i.coinType]})}claimStreamByProxy(e,i){let n=this.makeObject(i.streamId),r=this.vaultObject(),o=this.feeObject(),s=this.clockObject();return this.addContractCall(e,{method:Ut.MethodName.claim_stream_by_proxy,arguments:[n,r,o,s],typeArgs:[i.coinType]})}get createStreamTarget(){return`${this.config.contractId}::${Ut.ModuleName}::${Ut.MethodName.create_stream}`}get setAutoClaimTarget(){return`${this.config.contractId}::${Ut.ModuleName}::${Ut.MethodName.set_auto_claim}`}get cancelStreamTarget(){return`${this.config.contractId}::${Ut.ModuleName}::${Ut.MethodName.cancel_stream}`}get claimStreamTarget(){return`${this.config.contractId}::${Ut.ModuleName}::${Ut.MethodName.claim_stream}`}get claimStreamByProxyTarget(){return`${this.config.contractId}::${Ut.ModuleName}::${Ut.MethodName.claim_stream_by_proxy}`}},zg=class{constructor(t){this.globals=t;let e=t.envConfig.contract;this.feeContract=new Wg(e,t),this.streamContract=new Za(e,t)}feeContract;streamContract;async createStreams(t){let e=Pu.convertCreateStreamInfoToInternal(t);return this.createStreamHelper().buildCreateStreamTransactionBlock(e)}createStreamHelper(){return new Pu(this.globals,this.feeContract,this.streamContract)}setAutoClaim(t,e,i){let n=new es.TransactionBlock;return this.streamContract.setAutoClaim(n,{streamId:t,enabled:e,coinType:i})}claimStream(t,e){let i=new es.TransactionBlock;return this.streamContract.claimStream(i,{streamId:t,coinType:e})}claimStreamByProxy(t,e){let i=new es.TransactionBlock;return this.streamContract.claimStreamByProxy(i,{streamId:t,coinType:e})}cancelStream(t,e){let i=new es.TransactionBlock;return this.streamContract.cancelStream(i,{streamId:t,coinType:e}),i}},Ni=class extends ui{constructor(t,e={}){super(0,t,e)}};async function Yk(t){let e=[];for(;await t.hasNext();){let i=await t.next();e.push(i)}return e&&Array.isArray(e[0])?e.flat(1):e}var Qk=class{constructor(t){this.requester=t,this.curPage=void 0,this.init=!0}curPage;init;async hasNext(){if(this.init)return this.curPage||(this.curPage=await this.requester.doNextRequest()),!!this.curPage.data?.length||this.curPage.hasNext;if(!this.curPage)throw new Error("invalid implementation of iterator");return this.curPage.hasNext}async next(){return this.init?(this.init=!1,this.curPage||(this.curPage=await this.requester.doNextRequest()),this.curPage.data):(this.curPage=await this.requester.doNextRequest(),this.curPage.data)}},Gg=class{constructor(t){this.requester=t,this.pager=new Qk(t),this.curData=[],this.cursor=0}cursor;pager;curData;async hasNext(){return this.cursor<this.curData.length-1?!0:this.pager.hasNext()}async next(){for(this.cursor+=1;this.cursor>=this.curData.length;)if(await this.pager.hasNext())this.curData=await this.pager.next(),this.cursor=0;else throw new Error("not more data");return this.curData[this.cursor]}},eC=class extends ui{constructor(t,e,i){super(4,`Not enough balance: ${t}`,{context:{coinType:t,requestAmount:e,gotAmount:i}}),this.coinType=t,this.requestAmount=e,this.gotAmount=i}},tC=25;async function iC(t,e,i,n="0x2::sui::SUI",r=tC){let o=new nC(t,e,n,r),s=BigInt(0),a=[];for(;await o.hasNext()&&s<i;){let l=await o.next();l&&(a.push(l),s+=BigInt(l.balance))}if(s<i)throw new eC(n,i,s);return a}var nC=class extends Gg{constructor(t,e,i,n){super(new rC(t,e,i,n)),this.suiClient=t,this.owner=e,this.coinType=i,this.reqPageSize=n}},rC=class{constructor(t,e,i,n){if(this.suiClient=t,this.owner=e,this.coinType=i,this.reqPageSize=n,n<=0)throw new Ni("Invalid reqPageSize")}nextCursor;async doNextRequest(){let t=await this.suiClient.getCoins({owner:this.owner,coinType:this.coinType,cursor:this.nextCursor,limit:this.reqPageSize});return this.nextCursor=t.nextCursor,{data:t.data,hasNext:t.hasNextPage}}},oC=class extends ui{constructor(){super(7,"Connected wallet is not creator")}},am=class extends ui{constructor(){super(8,"Connected wallet is not recipient")}},cm=class extends ui{constructor(t,e){super(6,t,{context:e})}},sC=class extends ui{constructor(t){super(5,"Stream not found",{context:{streamId:t}})}},aC=(1n<<64n)-1n,Ga=1e3;function lm(t){let e;typeof t=="number"?e=t:typeof t=="bigint"?e=Number(t):e=t.toMillis();let i=Math.round(e/Ga);return Te.fromMillis(i*Ga)}function um(t){let e;typeof t=="number"?e=t:typeof t=="bigint"?e=Number(t):e=t.toMillis();let i=Math.round(e/Ga);return je.fromMillis(i*Ga)}var Uu=class Mn{constructor(e,i,n){this.globals=e,this.streamId=i,this.rawData=n,this.streamContract=new Za(e.envConfig.contract,e)}streamContract;type="Stream";static async new(e,i){let n=await Mn.fetchStreamData(e,i);return new Mn(e,i,n)}static fromObjectData(e,i,n){let r=Mn.parseRawStreamData(i,n);return new Mn(e,i,r)}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 Mn.fetchStreamData(this.globals,this.streamId)}refreshWithData(e){if(e.data?.objectId!==this.streamId)throw new Ni("Object Id does not align");this.rawData=Mn.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 oC;let e=new ts.TransactionBlock;return this.streamContract.cancelStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async claim(){if(await this.globals.walletAddress()!==this.recipient)throw new am;let e=new ts.TransactionBlock;return this.streamContract.claimStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async setAutoClaim(e){if(await this.globals.walletAddress()!==this.recipient)throw new am;let i=new ts.TransactionBlock;return this.streamContract.setAutoClaim(i,{streamId:this.streamId,coinType:this.coinType,enabled:e}),i}async claimByProxy(){let e=new ts.TransactionBlock;return this.streamContract.claimStreamByProxy(e,{streamId:this.streamId,coinType:this.coinType}),e}get wallet(){return this.globals.wallet}get client(){return this.globals.suiClient}get coinType(){return(0,ss.normalizeStructTag)(this.rawData.coinType)}get progress(){return{status:this.streamStatus,total:this.totalAmount,streamed:this.streamedAmount,claimed:this.claimedAmount,claimable:this.claimable,canceled:this.canceledAmount}}get balance(){return this.rawData.balance}get autoClaim(){return this.rawData.autoClaim}get amountPerEpoch(){return this.rawData.config.amountPerEpoch}get cancelable(){return this.rawData.config.cancelable}get cliff(){return this.rawData.config.cliff}get creator(){return this.rawData.config.creator}get interval(){return um(this.rawData.config.epochInterval)}get groupId(){let{metadata:e}=this.rawData.config;return Ou(e).groupId}get name(){let{metadata:e}=this.rawData.config;return Ou(e).name}get recipient(){return this.rawData.config.recipient}get timeStart(){return lm(this.rawData.config.timeStart)}get duration(){let e=this.rawData.config,i=e.epochInterval*e.totalEpoch;return um(i)}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:lm((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===aC?0n:this.rawData.status.epochClaimed*this.amountPerEpoch+this.cliff}get currentEpoch(){let e=Te.now().toMillis(),i=this.timeStart.toMillis();if(e<i)return-1n;let n=Math.floor((e-i)/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,i){let n=await e.suiClient.getObject({id:i,options:{showContent:!0,showType:!0}});return Mn.parseRawStreamData(i,n)}static parseRawStreamData(e,i){if(i.error)throw i.error.code==="notExists"?new sC(e):new cm(`get stream data: ${i.error.code}`,{streamId:e,...i.error});let n=i.data.content;if(n.dataType!=="moveObject")throw new cm("Unexpected object type",{gotType:n.dataType});let{typeParams:r}=(0,ss.parseStructTag)(n.type),o=(0,ss.normalizeStructTag)(r[0]),s=n.fields,a=s.config.fields,l=s.status.fields;return{coinType:o,autoClaim:s.auto_claim,balance:BigInt(s.balance.fields.balance),config:{amountPerEpoch:BigInt(a.amount_per_epoch),cancelable:a.cancelable,cliff:BigInt(a.cliff),creator:a.creator,epochInterval:BigInt(a.epoch_interval),metadata:a.metadata,recipient:a.recipient,timeStart:BigInt(a.time_start),totalEpoch:BigInt(a.total_epoch)},status:{status:l.status,epochCanceled:BigInt(l.epoch_canceled),epochClaimed:BigInt(l.epoch_claimed)}}}},cC=class extends ui{constructor(t,e){super(12,`Transaction failed: ${e}`,{context:{status:t,msg:e}})}},lC=1e3,uC=class{constructor(t){this.globals=t,this.coinMetaHelper=new dC(t.suiClient),this.createStreamHelper=new zg(t).createStreamHelper()}coinMetaHelper;createStreamHelper;getStreamIdsFromCreateStreamResponse(t){if(t.effects?.status.status!=="success")throw new cC(t.effects?.status.status,t.effects?.status.error);return t.objectChanges.filter(e=>e.type==="created"&&e.objectType.startsWith(`${this.globals.envConfig.contract.contractId}::stream::Stream`)).map(e=>e.objectId)}calculateCreateStreamFees(t){return this.createStreamHelper.calculateCreateStreamFees(t)}feeParams(){return this.createStreamHelper.feeParams()}calculateStreamAmount(t){if(t.steps===0n)throw new li("Invalid stream steps: 0");let e=t.cliff?t.cliff:{numerator:0n,denominator:100n},i=t.totalAmount*e.numerator/e.denominator,n=(t.totalAmount-i)/t.steps,r={realTotalAmount:n*t.steps+i,cliffAmount:i,amountPerStep:n};return this.validateStreamAmount(r,t.totalAmount),r}calculateTimelineByInterval(t){if(t.steps===0n)throw new li("Invalid stream steps: 0");let e=t.timeStart.plus(t.interval.toMillis()*Number(t.steps)),i={timeStart:t.timeStart,timeEnd:e,interval:t.interval,steps:t.steps};return this.validateTimeline(i),i}calculateTimelineByTotalDuration(t){if(t.steps===0n)throw new li("Invalid stream steps: 0");let e=BigInt(t.total.toMillis())/t.steps,i=t.timeStart.plus(je.fromMillis(Number(e*t.steps))),n={timeStart:t.timeStart,timeEnd:i,interval:je.fromMillis(Number(e)),steps:t.steps};return this.validateTimeline(n),n}async getBalance(t,e){let i=await this.globals.suiClient.getBalance({owner:t,coinType:e}),n=await this.getCoinMeta(e);return{...i,coinType:(0,no.normalizeStructTag)(i.coinType),coinMeta:n}}async getAllBalance(t){let e=await this.globals.suiClient.getAllBalances({owner:t}),i=await Promise.all(e.map(n=>this.getCoinMeta(n.coinType)));return e.map((n,r)=>({...n,coinType:(0,no.normalizeStructTag)(n.coinType),coinMeta:i[r]}))}async getCoinMeta(t){return this.coinMetaHelper.getCoinMeta(t)}async simulateTransactionBlock(t){return this.globals.suiClient.devInspectTransactionBlock({transactionBlock:t,sender:await this.globals.wallet.address()})}validateStreamAmount(t,e){if(t.amountPerStep===0n)throw new li("Stream amount too small","totalAmount",e);if(t.cliffAmount>t.realTotalAmount)throw new li("Invalid cliff settings")}validateTimeline(t){if(t.interval.toMillis()<lC)throw new li("Interval shall be at least 1 second","interval",t.interval)}},dC=class{constructor(t){this.suiClient=t,this.coinMetaReg=new Map}coinMetaReg;async getCoinMeta(t){let e=(0,no.normalizeStructTag)(t||no.SUI_TYPE_ARG);if(this.coinMetaReg.has(e))return this.coinMetaReg.get(e);let i=await this.queryCoinMeta(e);return i&&this.coinMetaReg.set(e,i),i}async queryCoinMeta(t){return await this.suiClient.getCoinMetadata({coinType:t})||void 0}},ku=class extends ui{constructor(t,e){super(9,`Invalid stream group: ${t}`,{context:e})}},fC=25;async function dm(t,e,i){let n=new Hg(e),r=new Zg(t,n,i);return await Yk(r)}var Hg=class{constructor(t){this.ids=t,this.cursor=-1}cursor;async hasNext(){return this.cursor<this.ids.length-1}async next(){if(this.cursor+=1,this.cursor>=this.ids.length)throw new Error("invalid iterator implementation");return this.ids[this.cursor]}},Zg=class extends Gg{constructor(t,e,i){super(new hC(t,e,i)),this.suiClient=t,this.idIter=e,this.options=i}},hC=class{constructor(t,e,i){this.suiClient=t,this.stringIter=e,this.options=i,this.filter=i?.filter,this.pageSize=i?.pageSize||fC,this.objectOptions=i?.objectOptions||{showType:!0,showContent:!0}}filter;pageSize;objectOptions;async doNextRequest(){let t=[];for(;t.length<this.pageSize&&await this.stringIter.hasNext();){let n=await this.stringIter.next();n&&t.push(n)}let e=await this.suiClient.multiGetObjects({ids:t,options:this.objectOptions}),i;if(this.filter){let{filter:n}=this;i=e.filter(r=>n?.(r))}else i=e;return{data:i,hasNext:await this.stringIter.hasNext()}}},pC=class qa{constructor(e,i){if(this.globals=e,this.streams=i,i.length===0)throw new ku("stream size 0");let n=i.map(r=>r.groupId);if(new Set(n).size!==1)throw new li("Stream does not have same group ID")}type="StreamGroup";static async new(e,i){let n=await dm(e.suiClient,i);return n.forEach(r=>{if(!r)throw new Ni("stream group object data undefined")}),qa.newFromObjectResponse(e,i,n)}static async newFromObjectResponse(e,i,n){let r=await qa.parseGroupStreams(e,i,n);return new qa(e,r)}static checkStreamGroup(e){let i=e.map(o=>o.groupCommonInfo),n=i[0],r=!0;return i.forEach(o=>{mC(n,o)||(r=!1)}),r}async refresh(){let e=await dm(this.globals.suiClient,this.streams.map(i=>i.streamId));this.streams.forEach((i,n)=>{i.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,i)=>e+i.totalAmount,0n),start:this.streams[0].timeStart,end:this.streams[0].timeEnd,cancelable:this.streams[0].cancelable,cliffAmount:this.streams.reduce((e,i)=>e+i.cliff,0n),duration:this.streams[0].duration,interval:this.streams[0].interval,steps:this.streams[0].totalSteps,nextReleaseAmount:this.streams.reduce((e,i)=>i.nextReleaseAmount===null?e:e+i.nextReleaseAmount,0n),nextReleaseDate:this.streams[0].nextReleaseDate}}get progress(){return{total:this.streams.reduce((e,i)=>e+i.totalAmount,0n),streamed:this.streams.reduce((e,i)=>e+i.streamedAmount,0n),claimed:this.streams.reduce((e,i)=>e+i.claimedAmount,0n),claimable:this.streams.reduce((e,i)=>e+i.claimable,0n),canceled:this.streams.reduce((e,i)=>e+i.canceledAmount,0n)}}async historyEvents(e){return this.globals.backend.getStreamHistory({groupId:this.groupId,pagination:e})}static async parseGroupStreams(e,i,n){let r=n.map((o,s)=>Uu.fromObjectData(e,i[s],o)).filter(o=>!!o);if(new Set(r.map(o=>o.groupId)).size!==1)throw new ku("Not same group ID");if(!this.checkStreamGroup(r))throw new ku("Not same stream settings");return r}};function mC(t,e){return t.name===e.name&&t.groupId===e.groupId&&t.creator===e.creator&&t.start.toMillis()===e.start.toMillis()&&t.interval.toMillis()===e.interval.toMillis()&&t.steps===e.steps&&t.cancelable===e.cancelable}var fm=class Eu{constructor(e,i){this.it=e,this.pageSize=i}static async newIncoming(e){let i=await hm.newIncoming(e);return new Eu(i,e.pageSize)}static async newOutgoing(e){let i=await hm.newOutgoing(e);return new Eu(i,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}},hm=class Mu{constructor(e){this.requester=e}cachedNext;static async newIncoming(e){let i=await pm.newIncomingQuery(e);return new Mu(i)}static async newOutgoing(e){let i=await pm.newOutgoingQuery(e);return new Mu(i)}async hasNext(){return this.cachedNext===void 0&&(this.cachedNext=await this.requester.doNextRequest()),this.cachedNext!==null}async next(){if(this.cachedNext===void 0){let i=await this.requester.doNextRequest();if(i===null)throw new Ni("No more results");return i}let e=this.cachedNext;if(this.cachedNext=void 0,e===null)throw new Ni("No more results");return e}},pm=class ju{constructor(e,i,n,r){this.globals=e,this.recipient=i,this.groupRefs=n,this.query=r,this.current=0;let o=new Hg(n.flat().map(s=>s.streamId));this.objectIter=new Zg(e.suiClient,o)}current=0;objectIter;static async newIncomingQuery(e){let i=wC(e.query),n=await e.globals.walletAddress(),r=(await e.globals.backend.getIncomingStreams(n,i)).filter(s=>(0,Rn.normalizeSuiAddress)(s.recipient)===(0,Rn.normalizeSuiAddress)(n)),o=mm(r);return new ju(e.globals,n,o,e.query)}static async newOutgoingQuery(e){let i=vC(e.query),n=await e.globals.walletAddress(),r=await e.globals.backend.getOutgoingStreams(n,i),o=mm(r);return new ju(e.globals,n,o,e.query)}async doNextRequest(){if(this.current>=this.groupRefs.length)return null;let e=this.groupRefs[this.current];if(e.length===1){let i=await bC(this.globals,e[0].streamId,this.objectIter);return this.current++,Xg(i,this.query)?i:this.doNextRequest()}if(e.length>1){let i=await yC(this.globals,e.map(n=>n.streamId),this.objectIter);return this.current++,_C(i,this.query)?i:this.doNextRequest()}throw new Ni("Stream group with no stream")}};function mm(t){let e=new Map;return t.forEach(i=>{let n=e.get(i.groupId);n?(n.push(i),e.set(i.groupId,n)):e.set(i.groupId,[i])}),Array.from(e.values()).sort((i,n)=>Te.fromISO(n[0].createDate).toMillis()-Te.fromISO(i[0].createDate).toMillis())}function Xg(t,e){if(e===void 0)return!0;let i=gC(t,e.status);if(e&&"claimable"in e&&e.claimable!==void 0){let n=e.claimable?t.progress.claimable!==0n:t.progress.claimable===0n;return i&&n}return i}function gC(t,e){return e===void 0?!0:Array.isArray(e)?e.includes(t.progress.status):t.progress.status===e}function _C(t,e){if(!e)return!0;let i=!1;return t.streams.forEach(n=>{Xg(n,e)&&(i=!0)}),i}async function bC(t,e,i){let n=await Jg(i,e);return Uu.fromObjectData(t,e,n)}async function yC(t,e,i){let n=[];for(;n.length<e.length;){let r=await Jg(i,e[n.length]);n.push(r)}return pC.newFromObjectResponse(t,e,n)}async function Jg(t,e){if(!await t.hasNext())throw new Ni("object iterator has been consumed");let i=await t.next();if(!i||i.error||i.data===void 0||i.data===null)throw new Ni("object iterator undefined response",{cause:i?.error});if(i?.data?.objectId!==e)throw new Ni("stream id not aligned");return i}function wC(t){return{status:Ku(t?.status),coinType:Yg(t?.coinType),sender:Qg(t?.sender)}}function vC(t){return{status:Ku(t?.status),coinType:Yg(t?.coinType),recipient:Qg(t?.recipient)}}function Ku(t){return t===void 0||t.length===0?"all":Array.isArray(t)?t.reduce((e,i)=>{let n=Ku(i);return!e||e===n?n:"all"},void 0):kC(t)}function kC(t){switch(t){case"STREAMING":case"STREAMED":case"CANCELED":return"active";case"COMPLETED":case"SETTLED":return"inactive";default:throw new li("Unknown stream filtered status")}}function Yg(t){if(t)return Array.isArray(t)?t.length!==0?t.map(e=>(0,Rn.normalizeStructTag)(e)):void 0:(0,Rn.normalizeStructTag)(t)}function Qg(t){if(t)return Array.isArray(t)?t.length!==0?t.map(e=>(0,Rn.normalizeSuiAddress)(e)):void 0:(0,Rn.normalizeSuiAddress)(t)}var CC=class{constructor(t){this.msafe=t}get type(){return"msafe"}async address(){return this.msafe.address()}async requestCoins(t){return this.msafe.requestCoins(t)}},TC=class{constructor(t){this.account=t}async address(){return this.account.address}},SC=class{constructor(t,e){this.singleWallet=t,this.suiClient=e}get type(){return"single"}async address(){return this.singleWallet.address()}async requestCoins(t){return Promise.all(t.map(e=>this.requestCoin(e)))}async requestCoin(t){if($g(t.coinType,ur.SUI_TYPE_ARG))return{primaryCoin:Ug};if(t.amount<=0)throw new li("Invalid coin request","coinAmount",t.amount);let e=await iC(this.suiClient,await this.address(),t.amount,t.coinType);if(e.length===0)throw new Ni("no coins available");return{primaryCoin:e[0].coinObjectId,mergedCoins:e.slice(1).map(i=>i.coinObjectId)}}},xC=class{globals;helper;constructor(t,e){this.globals=Bg.new(t,e),this.helper=new uC(this.globals)}connectSingleWallet(t){let e=new SC(t,this.globals.suiClient);this.globals.connectWallet(e)}connectMSafeAccount(t){let e=new CC(t);this.globals.connectWallet(e)}async createStream(t){return this.builder().createStreams(t)}async getStream(t){return Uu.new(this.globals,t)}async getIncomingStreams(t,e=10){return fm.newIncoming({globals:this.globals,query:t,pageSize:e})}async getOutgoingStreams(t,e=10){return fm.newOutgoing({globals:this.globals,query:t,pageSize:e})}async getCoinTypesForStreamFilter(){let t=await this.wallet.address();return(await this.globals.backend.getAllCoinTypes(t)).map(e=>(0,ur.normalizeStructTag)(e))}async getRecipientsForStreamFilter(t){let e=await this.wallet.address();return(await this.globals.backend.getAllRecipients(e,t)).map(i=>(0,ur.normalizeSuiAddress)(i))}async getCreatorsForStreamFilter(t){let e=await this.wallet.address();return(await this.globals.backend.getAllSenders(e,t)).map(i=>(0,ur.normalizeSuiAddress)(i))}get wallet(){return this.globals.wallet}builder(){return new zg(this.globals)}},AC=class{constructor(t){this.data=t}serialize(){return JSON.stringify((0,e0.default)(this.data))}},cs=class extends AC{application="mpay";getClient(t,e){let i=new xC(t==="sui:mainnet"?"prod":"dev");return i.connectSingleWallet(new TC(e)),i}},gm=class extends cs{constructor(t){super(t),this.data=t}txType=_g.TransactionType.Stream;txSubType="Cancel";async build(t){let{network:e,account:i}=t;return(await this.getClient(e,i).getStream(this.data.streamId)).cancel()}},_m=class extends cs{constructor(t){super(t),this.data=t}txType=t0.TransactionType.Stream;txSubType="ClaimByProxy";async build(t){let{network:e,account:i}=t;return(await this.getClient(e,i).getStream(this.data.streamId)).claimByProxy()}},bm=class extends cs{constructor(t){super(t),this.data=t}txType=i0.TransactionType.Stream;txSubType="Claim";async build(t){let{network:e,account:i}=t;return(await this.getClient(e,i).getStream(this.data.streamId)).claim()}},ym=class extends cs{constructor(t){super(t),this.data=t}txType=n0.TransactionType.Stream;txSubType="CreateStream";async build(t){let{network:e,account:i}=t;return this.getClient(e,i).createStream(this.data)}},r0=class La{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return La.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return La.getOwnedObjectId(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return BigInt(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,jn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return La.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}static getPureInputValue(e,i){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 Bu.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,jn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,jn.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,jn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,jn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){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 Bu.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,jn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},IC=class{constructor(t,e){this.globals=t,this.txb=e}decode(){let t=this.decodeCreateStreamInfo(),e=this.createStreamHelper().calculateCreateStreamFees(t);return{type:"CreateStream",info:t,fees:e}}decodeCreateStreamInfo(){let t=this.createStreamTransactions().map(e=>this.getCreationInfoFromMoveCall(e));return this.aggregateGroupStreamInfo(t)}createStreamTransactions(){let t=this.transactions.filter(e=>e.kind==="MoveCall"&&Jr(e.target,this.contract.createStreamTarget));if(t.length===0)throw new Ni("No create stream transactions");return t.map(e=>new r0(e,this.txb))}getCreationInfoFromMoveCall(t){let e=t.decodeInputString(4),{name:i,groupId:n}=Ou(e),r=t.decodeInputAddress(5),o=t.decodeInputU64(6),s=t.decodeInputU64(7),a=t.decodeInputU64(8),l=t.decodeInputU64(9),u=t.decodeInputU64(10),h=t.decodeInputBool(11),y=t.typeArg(0);return{name:i,groupId:n,recipient:r,timeStart:o,cliff:s,epochInterval:a,totalEpoch:l,amountPerEpoch:u,cancelable:h,coinType:y}}aggregateGroupStreamInfo(t){if(new Set(t.map(i=>JSON.stringify({name:i.name,groupId:i.groupId,timeStart:String(i.timeStart),epochInterval:String(i.epochInterval),totalEpoch:String(i.totalEpoch),cancelable:i.cancelable,coinType:i.coinType}))).size!==1)throw new li("Stream group not have common info");let e=t.map(i=>({address:i.recipient,amountPerStep:i.amountPerEpoch,cliffAmount:i.cliff}));return{name:t[0].name,coinType:t[0].coinType,recipients:e,interval:t[0].epochInterval,steps:t[0].totalEpoch,startTimeMs:t[0].timeStart,cancelable:t[0].cancelable}}mergeCoinTransactions(){return this.transactions.filter(t=>t.kind==="MergeCoins")}get transactions(){return this.txb.blockData.transactions}get contract(){return new Za(this.globals.envConfig.contract,this.globals)}get feeContract(){return new Wg(this.globals.envConfig.contract,this.globals)}createStreamHelper(){return new Pu(this.globals,this.feeContract,this.contract)}getInputArg(t){if(t.kind!=="Input")throw new Error("not input type");return"value"in t?t:this.txb.blockData.inputs[t.index]}},OC=class{constructor(t,e){this.globals=t,this.txb=e,this.contract=new Za(t.envConfig.contract,t)}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"&&Jr(t.target,this.contract.createStreamTarget))!==-1}isSetAutoClaimTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&Jr(this.transactions[0].target,this.contract.setAutoClaimTarget)}isCancelStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&Jr(this.transactions[0].target,this.contract.cancelStreamTarget)}isClaimStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&Jr(this.transactions[0].target,this.contract.claimStreamTarget)}isClaimByProxyTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&Jr(this.transactions[0].target,this.contract.claimStreamByProxyTarget)}decodeCreateStreamTransaction(){return new IC(this.globals,this.txb).decode()}decodeSetAutoClaimTransaction(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeInputBool(1);return{type:"SetAutoClaim",streamId:t,enabled:e}}decodeClaimTransaction(){return{type:"Claim",streamId:this.helper.decodeSharedObjectId(0)}}decodeClaimByProxyTransaction(){return{type:"ClaimByProxy",streamId:this.helper.decodeSharedObjectId(0)}}decodeCancelStreamTransaction(){return{type:"Cancel",streamId:this.helper.decodeSharedObjectId(0)}}get helper(){let t=this.transactions[0];return new r0(t,this.txb)}},wm=class extends cs{constructor(t){super(t),this.data=t}txType=o0.TransactionType.Stream;txSubType="SetAutoClaim";async build(t){let{network:e,account:i}=t;return(await this.getClient(e,i).getStream(this.data.streamId)).setAutoClaim(this.data.enabled)}},PC=class{application="mpay";async deserialize(t){let{network:e,transactionBlock:i}=t,n=Bg.new(e==="sui:mainnet"?"prod":"dev"),r=new OC(n,i).decode(),o;switch(r.type){case"CreateStream":o=new ym(r.info);break;case"SetAutoClaim":o=new wm({streamId:r.streamId,enabled:r.enabled});break;case"Claim":o=new bm({streamId:r.streamId});break;case"ClaimByProxy":o=new _m({streamId:r.streamId});break;case"Cancel":o=new gm({streamId:r.streamId});break;default:throw new Error(`Unknown transaction type: ${r}`)}return{txType:o.txType,txSubType:o.txSubType,intentionData:o.data}}async build(t){let{intentionData:e}=t,i;switch(t.txSubType){case"CreateStream":i=new ym(e);break;case"Claim":i=new bm(e);break;case"ClaimByProxy":i=new _m(e);break;case"SetAutoClaim":i=new wm(e);break;case"Cancel":i=new gm(e);break;default:throw new Error("not implemented")}return i.build({...t})}},DC=class a0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:i,account:n}=e;return(0,s0.buildCoinTransferTxb)(i,this.data,n.address)}static fromData(e){return new a0(e)}},EC=class l0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:i,account:n}=e;return(0,c0.buildObjectTransferTxb)(i,this.data,n.address)}static fromData(e){return new l0(e)}},MC=class f0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:i}=e,n=d0.TransactionBlock.from(this.data.content);if(!(0,u0.isSameAddress)(n.blockData.sender,i.address))throw new Error("Invalid sender address");return n}static fromData(e){return new f0(e)}},jC=class{application;constructor(){this.application=to.TransactionDefaultApplication}deserialize(){throw new Error("MSafe core transaction intention should be build from API")}async build(t){let{suiClient:e,account:i}=t,n;switch(t.txSubType){case to.TransactionSubTypes.assets.coin.send:n=DC.fromData(t.intentionData);break;case to.TransactionSubTypes.assets.object.send:n=EC.fromData(t.intentionData);break;case to.TransactionSubTypes.others.plain:n=MC.fromData(t.intentionData);break;default:throw new Error("not implemented")}return n.build({suiClient:e,account:i})}},BC={ProtocolPackage:"0x7c9b90b3fda0fa4aa8ee88ae6c4a0b83c773f74936b5354448cb94662e94442d",StorageId:"0xbb4e2f4b6205c2e2a2db47aeb4f830796ec7c005f88537ee775986639bc442fe",Incentive:"0xaaf735bf83ff564e1b219a0d644de894ef5bdc4b2250b126b2a46dd002331821",IncentiveV2:"0xf87a8acb8b81d14307894d12595541a73f19933f88e1326d5be349c7a6f7559c",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"},usdc:{name:"USDC",assetId:1,coinType:"usdc",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"}}},ke=BC,NC=class{constructor(t){this.txb=t}decode(){if(console.log("txb",this.txb),this.isClaimRewardTransaction())return this.decodeClaimReward();if(this.isEntryBorrowTransaction())return this.decodeEntryBorrow();if(this.isEntryDepositTransaction())return this.decodeEntryDeposit();if(this.isEntryRepayTransaction())return this.decodeEntryRepay();if(this.isEntryWithdrawTransaction())return this.decodeEntryWithdraw();throw new Error("Unknown transaction type")}get transactions(){return this.txb.blockData.transactions}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isClaimRewardTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::claim_reward`)}isEntryBorrowTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::entry_borrow`)}isEntryDepositTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::entry_deposit`)}isEntryRepayTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::entry_repay`)}isEntryWithdrawTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::entry_withdraw`)}findPoolByAssetId(t){let e=Object.values(ke.pool).find(i=>i.assetId===t);if(!e)throw new Error("Pool not found");return e}decodeClaimReward(){let t=[];return this.transactions.forEach(e=>{if(e.kind==="MoveCall"&&e.target===`${ke.ProtocolPackage}::incentive_v2::claim_reward`){let i=new vm(e,this.txb),n=i.decodeInputU8(4),r=i.decodeInputU8(5),o=i.decodeSharedObjectId(2),s=this.findPoolByAssetId(n),a=[...e.typeArguments];t.push({coinType:s.coinType,option:r,typeArguments:a,assetId:n,poolId:o})}}),console.log("decode claims",t),{txType:Yr.TransactionType.Other,type:"ClaimReward",intentionData:{claims:t}}}decodeEntryBorrow(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(5),i=this.findPoolByAssetId(t);return{txType:Yr.TransactionType.Other,type:"EntryBorrow",intentionData:{amount:e,coinType:i.coinType}}}decodeEntryDeposit(){let t=this.helper.decodeInputU8(3),e=this.helper.decodeInputU64(5),i=this.findPoolByAssetId(t);return{txType:Yr.TransactionType.Other,type:"EntryDeposit",intentionData:{amount:e,coinType:i.coinType}}}decodeEntryRepay(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(6),i=this.findPoolByAssetId(t);return{txType:Yr.TransactionType.Other,type:"EntryRepay",intentionData:{amount:e,coinType:i.coinType}}}decodeEntryWithdraw(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(5),i=this.findPoolByAssetId(t);return{txType:Yr.TransactionType.Other,type:"EntryWithdraw",intentionData:{amount:e,coinType:i.coinType}}}get helper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(ke.ProtocolPackage));return new vm(t,this.txb)}},vm=class $a{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return $a.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return $a.getOwnedObjectId(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return Number(i)}decodeInputU8(e){let i=this.decodePureArg(e,"u8");return Number(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,Bn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return $a.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}static getPureInputValue(e,i){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 Nu.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Bn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Bn.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Bn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Bn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){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 Nu.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,Bn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};function km(t,e,i,n){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::entry_deposit`,arguments:[t.object("0x06"),t.object(ke.StorageId),t.object(e.poolId),t.pure(e.assetId),i,t.pure(n),t.object(ke.Incentive),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function FC(t,e,i){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::entry_withdraw`,arguments:[t.object("0x06"),t.object(ke.PriceOracle),t.object(ke.StorageId),t.object(e.poolId),t.pure(e.assetId),t.pure(i),t.object(ke.Incentive),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function RC(t,e,i){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::entry_borrow`,arguments:[t.object("0x06"),t.object(ke.PriceOracle),t.object(ke.StorageId),t.object(e.poolId),t.pure(e.assetId),t.pure(i),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function Cm(t,e,i,n){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::entry_repay`,arguments:[t.object("0x06"),t.object(ke.PriceOracle),t.object(ke.StorageId),t.object(e.poolId),t.pure(e.assetId),i,t.pure(n),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function qC(t,e,i,n,r){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::claim_reward`,arguments:[t.object("0x06"),t.object(ke.IncentiveV2),t.object(i),t.object(ke.StorageId),t.pure(e),t.pure(n)],typeArguments:r}),t}var LC=class m0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{claims:e}=this.data,i=new p0.TransactionBlock;return e.forEach(n=>{let{assetId:r,poolId:o,option:s,typeArguments:a}=n;qC(i,r,o,s,a)}),i}static fromData(e){return new m0(e)}},$C=class _0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{coinType:e,amount:i}=this.data,n=new g0.TransactionBlock;console.log("build",this.data);let r=ke.pool[e];if(!r)throw new Error(`${e} not support, please use ${Object.keys(ke.pool).join(", ")}.`);return RC(n,r,i)}static fromData(e){return new _0(e)}};async function y0(t,e,i){let n=await t.getCoins({owner:e,coinType:i});return console.log("getTokenObjs",e,n),n}var UC=class w0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:i,account:n}=e,{coinType:r,amount:o}=this.data,s=new b0.TransactionBlock;if(console.log("build",this.data),r==="sui"){let[h]=s.splitCoins(s.gas,[o]);return km(s,ke.pool.sui,h,o)}let a=ke.pool[r];if(!a)throw new Error(`${r} not support, please use ${Object.keys(ke.pool).join(", ")}.`);let l=await y0(i,n.address,a.type);if(!l.data[0])throw new Error(`Insufficient balance for ${a.name} Token`);let u=l.data[0].coinObjectId;if(l.data.length>=2){let h=1;for(;h<l.data.length;)s.mergeCoins(u,[l.data[h].coinObjectId]),h++}return km(s,a,s.object(u),o)}static fromData(e){return new w0(e)}},KC=class k0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:i,account:n}=e,{coinType:r,amount:o}=this.data,s=new v0.TransactionBlock;if(console.log("build",this.data),r==="sui"){let[h]=s.splitCoins(s.gas,[o]);return Cm(s,ke.pool.sui,h,o)}let a=ke.pool[r];if(!a)throw new Error(`${r} not support, please use ${Object.keys(ke.pool).join(", ")}.`);let l=await y0(i,n.address,a.type);if(!l.data[0])throw new Error(`Insufficient balance for ${a.name} Token`);let u=l.data[0].coinObjectId;if(l.data.length>=2){let h=1;for(;h<l.data.length;)s.mergeCoins(u,[l.data[h].coinObjectId]),h++}return Cm(s,a,s.object(u),o)}static fromData(e){return new k0(e)}},VC=class T0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{coinType:e,amount:i}=this.data,n=new C0.TransactionBlock;console.log("build",this.data);let r=ke.pool[e];if(!r)throw new Error(`${e} not support, please use ${Object.keys(ke.pool).join(", ")}.`);return FC(n,r,i)}static fromData(e){return new T0(e)}},WC=class{application="navi";async deserialize(t){let{transactionBlock:e}=t,i=new NC(e).decode();return{txType:h0.TransactionType.Other,txSubType:i.type,intentionData:i.intentionData}}async build(t){let{suiClient:e,account:i}=t,n;switch(t.txSubType){case"EntryDeposit":n=UC.fromData(t.intentionData);break;case"EntryBorrow":n=$C.fromData(t.intentionData);break;case"EntryRepay":n=KC.fromData(t.intentionData);break;case"EntryWithdraw":n=VC.fromData(t.intentionData);break;case"ClaimReward":n=LC.fromData(t.intentionData);break;default:throw new Error("not implemented")}return n.build({suiClient:e,account:i})}},zC="msafe-plain-tx",GC=Xa.TransactionSubTypes.others.plain,HC=class{application;constructor(){this.application=zC}async deserialize(t){let{transactionBlock:e,suiClient:i}=t,n=await e.build({client:i});return{txType:Xa.TransactionType.Other,txSubType:GC,intentionData:{content:(0,Ja.toHEX)(n)}}}async build(t){let{suiClient:e,account:i}=t,n=S0.TransactionBlock.from((0,Ja.fromHEX)(t.intentionData.content)),r=await e.devInspectTransactionBlock({transactionBlock:n,sender:i.address});if(r.effects.status.status!=="success")throw new Error(r.effects.status.error);return n}},ZC=class{apps;constructor(t){this.apps=new Map(t.map(e=>[e.application,e]))}getAppHelper(t){let e=this.apps.get(t);if(!e)throw new Error(`${t} not registered`);return e}},Ya="6601955b8b0024600a917079",A0="0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf",Fu="0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",io="0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6::sca::SCA",Qa=["eth","btc","usdc","usdt","sui","apt","sol","cetus","afsui","hasui","vsui","sca"],I0=["eth","btc","usdc","usdt","sui","apt","sol","cetus","afsui","hasui","vsui","sca"],Ru=["seth","ssui","susdc","susdt","scetus","safsui","shasui","svsui"],XC=["sui"],Ua=["sui","usdc","usdt"],JC={eth:8,btc:8,usdc:6,usdt:6,sui:9,apt:8,sol:8,sca:9,cetus:9,afsui:9,hasui:9,vsui:9,seth:8,sbtc:8,susdc:6,susdt:6,ssui:9,sapt:8,ssol:8,scetus:9,safsui:9,shasui:9,svsui:9,ssca:9},O0={seth:"sui",ssui:"sui",susdc:"sui",susdt:"sui",scetus:"sui",safsui:"sui",shasui:"sui",svsui:"sui"},YC={sui:["sui","sca"],usdc:["sui","sca"],usdt:["sui","sca"]},QC={sui:"0x0000000000000000000000000000000000000000000000000000000000000002",eth:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",btc:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",usdc:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",usdt:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",apt:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",sol:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",cetus:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",afsui:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",hasui:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",vsui:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",sca:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6"},ki={eth:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",btc:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",usdc:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",usdt:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",apt:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",sol:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8"},Tm={vsui:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55"},eT=class{constructor(t,e){this.txb=t,this._builder=e}_builder;decode(){if(this.isSupplyWithStakeSpoolTransaction())return this.decodeSupplyWithStakeSpool();if(this.isExtendPeriodAndStakeMoreSca())return this.decodePeriodAndStakeMoreSca();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.isWithdrawLendingTransaction())return this.decodeWithdrawLending();if(this.isSupplyLendingTransaction())return this.decodeSupplyLending();if(this.isBorrowTransaction())return this.decodeBorrow();if(this.isRepayTransaction())return this.decodeRepay();if(this.isUnstakeSpoolTransaction())return this.decodeUnstakeSpool();if(this.isClaimRewardTransaction())return this.decodeClaimReward();if(this.isStakeScaFirsTime()||this.isStakeMoreSca())return this.decodeStakeSca();if(this.isRenewExpiredVeSca())return this.decodeRenewExpiredVeSca();if(this.isExtendPeriod())return this.decodeExtendStakePeriod();if(this.isOpenObligationTransaction())return this.decodeOpenObligation();throw new Error("Unknown transaction type")}get coreId(){return{protocolPkg:this._builder.address.get("core.packages.protocol.id"),market:this._builder.address.get("core.market"),version:this._builder.address.get("core.version"),coinDecimalsRegistry:this._builder.address.get("core.coinDecimalsRegistry"),xOracle:this._builder.address.get("core.oracles.xOracle"),spoolPkg:this._builder.address.get("spool.id"),borrowIncentivePkg:this._builder.address.get("borrowIncentive.id"),veScaPkgId:this._builder.address.get("vesca.id")}}get transactions(){return this.txb.blockData.transactions}get inputTransaction(){return this.txb.blockData.inputs}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isSupplyLendingTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::mint::mint`)}isSupplyWithStakeSpoolTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.protocolPkg}::mint::mint`),e=this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::stake`);return!!t&&!!e}isUnstakeAndWithdrawTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::unstake`),e=this.getMoveCallTransaction(`${this.coreId.protocolPkg}::redeem::redeem`);return!!t&&!!e}isStakeSpoolTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::stake`)}isWithdrawLendingTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::redeem::redeem`)}isDepositCollateralTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::deposit_collateral::deposit_collateral`)}isWithdrawCollateralTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::withdraw_collateral::withdraw_collateral`)}isBorrowTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::borrow::borrow`)}isRepayTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::repay::repay`)}isUnstakeSpoolTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::unstake`)}isCreateStakeAccountTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::new_spool_account`)}isClaimRewardTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::redeem_rewards`),e=this.getMoveCallTransaction(`${this.coreId.borrowIncentivePkg}::user::redeem_rewards`);return!!t&&!!e}isStakeScaFirsTime(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_key`)}isExtendPeriodAndStakeMoreSca(){let t=this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`),e=this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`);return!!t&&!!e}isStakeMoreSca(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`)}isExtendPeriod(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`)}isRenewExpiredVeSca(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::renew_expired_ve_sca`)}isOpenObligationTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::open_obligation::open_obligation_entry`)}decodeOpenObligation(){return{txType:Kt.TransactionType.Other,type:"OpenObligation",intentionData:{}}}decodeRenewExpiredVeSca(){let t=this.helperRenewExpired.getNestedInputParam(4),e=this.helperRenewExpired.decodeInputU64(5),i=new Wi(t,this.txb).getAmountInput().reduce((T,O)=>T+O,0),n=this.helperRenewExpired.decodeOwnedObjectId(1),r=!!this.helperRedeemSca.moveCall,o=[],s=[],a=[];this.helperOldUnstakeObligation.moveCall&&(o=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(s=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeObligationWithVeSca.moveCall&&(a=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let l=!1,u=!1,h,y,v=[{condition:o,isOld:!0},{condition:s,isOld:!1},{condition:a,isOld:!1}];for(let T=0;T<v.length;T++)v[T].condition.length>1&&([y,h]=v[T].condition,l=!0,u=v[T].isOld);return{txType:Kt.TransactionType.Other,type:"RenewExpStakePeriod",intentionData:{amount:i,lockPeriodInDays:e,obligationId:h,obligationKey:y,veScaKey:n,isHaveRedeem:r,isObligationLocked:l,isOldBorrowIncentive:u}}}decodeExtendStakePeriod(){let t=this.helperExtendStakePeriod.decodeInputU64(4),e=this.helperExtendStakePeriod.decodeOwnedObjectId(1),i=[],n=[],r=[];this.helperOldUnstakeObligation.moveCall&&(i=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(n=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeObligationWithVeSca.moveCall&&(r=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let o=!1,s=!1,a,l,u=[{condition:i,isOld:!0},{condition:n,isOld:!1},{condition:r,isOld:!1}];for(let h=0;h<u.length;h++)u[h].condition.length>1&&([l,a]=u[h].condition,o=!0,s=u[h].isOld);return{txType:Kt.TransactionType.Other,type:"ExtendStakePeriod",intentionData:{lockPeriodInDays:t,obligationId:a,obligationKey:l,veScaKey:e,isObligationLocked:o,isOldBorrowIncentive:s}}}decodePeriodAndStakeMoreSca(){let t=this.helperStakeMoreSca.getNestedInputParam(4),e=this.helperExtendStakePeriod.decodeInputU64(4),i=new Wi(t,this.txb).getAmountInput().reduce((v,T)=>v+T,0),n=[],r=[],o,s=[];this.helperOldUnstakeObligation.moveCall&&(n=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(r=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeMoreSca.moveCall&&(o=this.helperStakeMoreSca.decodeOwnedObjectId(1)),this.helperStakeObligationWithVeSca.moveCall&&(s=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let a=!1,l=!1,u,h,y=[{condition:n,isOld:!0},{condition:r,isOld:!1},{condition:s,isOld:!1}];for(let v=0;v<y.length;v++)y[v].condition.length>1&&([h,u]=y[v].condition,a=!0,l=y[v].isOld);return{txType:Kt.TransactionType.Other,type:"ExtendPeriodAndStakeMore",intentionData:{amount:i,lockPeriodInDays:e,obligationId:u,obligationKey:h,veScaKey:o,isObligationLocked:a,isOldBorrowIncentive:l}}}decodeStakeSca(){let t,e;this.helperStake.moveCall?(t=this.helperStakeSca.getNestedInputParam(3),e=this.helperStakeSca.decodeInputU64(4)):(t=this.helperStakeMoreSca.getNestedInputParam(4),console.log(t));let i=new Wi(t,this.txb).getAmountInput().reduce((v,T)=>v+T,0),n=[],r=[],o,s=[];this.helperOldUnstakeObligation.moveCall&&(n=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(r=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeMoreSca.moveCall&&(o=this.helperStakeMoreSca.decodeOwnedObjectId(1)),this.helperStakeObligationWithVeSca.moveCall&&(s=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let a=!1,l=!1,u,h,y=[{condition:n,isOld:!0},{condition:r,isOld:!1},{condition:s,isOld:!1}];for(let v=0;v<y.length;v++)y[v].condition.length>1&&([h,u]=y[v].condition,a=!0,l=y[v].isOld);return{txType:Kt.TransactionType.Other,type:"StakeSca",intentionData:{amount:i,lockPeriodInDays:e,obligationId:u,obligationKey:h,veScaKey:o,isObligationLocked:a,isOldBorrowIncentive:l}}}decodeSupplyLending(){let t=this._builder.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),e=this.helperMint.getNestedInputParam(2),i=new Wi(e,this.txb).getAmountInput().reduce((n,r)=>n+r,0);return{txType:Kt.TransactionType.Other,type:"SupplyLending",intentionData:{amount:i,coinName:t}}}decodeWithdrawLending(){let t=this._builder.utils.parseCoinNameFromType(this.helperRedeem.typeArg(0)),e=this.helperRedeem.getNestedInputParam(2),i=new Wi(e,this.txb).getAmountInput().reduce((n,r)=>n+r,0);return{txType:Kt.TransactionType.Other,type:"WithdrawLending",intentionData:{amount:i,coinName:t}}}decodeDepositCollateral(){let t=this._builder.utils.parseCoinNameFromType(this.helperDepositCollateral.typeArg(0)),e=this.helperDepositCollateral.getNestedInputParam(3),i=new Wi(e,this.txb).getAmountInput().reduce((r,o)=>r+o,0),n=this.helperDepositCollateral.decodeSharedObjectId(1);return{txType:Kt.TransactionType.Other,type:"DepositCollateral",intentionData:{amount:i,obligationId:n,coinName:t}}}decodeWithdrawCollateral(){let t=this._builder.utils.parseCoinNameFromType(this.helperWithdrawCollateral.typeArg(0)),e=this.helperWithdrawCollateral.decodeInputU64(5),i=this.helperWithdrawCollateral.decodeSharedObjectId(1),n=this.helperWithdrawCollateral.decodeOwnedObjectId(2);return{txType:Kt.TransactionType.Other,type:"WithdrawCollateral",intentionData:{amount:e,coinName:t,obligationKey:n,obligationId:i}}}decodeBorrow(){let t=this._builder.utils.parseCoinNameFromType(this.helperBorrow.typeArg(0)),e=this.helperBorrow.decodeInputU64(5),i=this.helperBorrow.decodeSharedObjectId(1),n=this.helperBorrow.decodeOwnedObjectId(2);return{txType:Kt.TransactionType.Other,type:"Borrow",intentionData:{amount:e,coinName:t,obligationKey:n,obligationId:i}}}decodeRepay(){let t=this._builder.utils.parseCoinNameFromType(this.helperRepay.typeArg(0)),e=this.helperRepay.getNestedInputParam(3),i=new Wi(e,this.txb).getAmountInput().reduce((r,o)=>r+o,0),n=this.helperRepay.decodeSharedObjectId(1);return{txType:Kt.TransactionType.Other,type:"Repay",intentionData:{amount:i,obligationId:n,coinName:t}}}decodeStakeSpool(){let t;this.isCreateStakeAccountTransaction()||(t=this.helperStake.decodeOwnedObjectId(1));let e=this.helperStake.getNestedInputParam(2),i=new Wi(e,this.txb).getAmountInput().reduce((o,s)=>o+s,0),n=this.helperStake.typeArg(0),r=this._builder.utils.parseCoinNameFromType(n);return{txType:Kt.TransactionType.Other,type:"StakeSpool",intentionData:{amount:i,marketCoinName:r,stakeAccountId:t}}}decodeUnstakeSpool(){let t=this.helperUnstake.decodeOwnedObjectId(1),e=this.helperUnstake.decodeInputU64(2),i=this.helperUnstake.typeArg(0),n=this._builder.utils.parseCoinNameFromType(i);return{txType:Kt.TransactionType.Other,type:"StakeSpool",intentionData:{amount:e,marketCoinName:n,stakeAccountId:t}}}decodeSupplyWithStakeSpool(){let t=this._builder.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),e=this.helperMint.getNestedInputParam(2),i=new Wi(e,this.txb).getAmountInput().reduce((r,o)=>r+o,0),n;return this.isCreateStakeAccountTransaction()||(n=this.helperStake.decodeOwnedObjectId(1)),{txType:Kt.TransactionType.Other,type:"SupplyAndStakeLending",intentionData:{amount:i,coinType:t,stakeAccountId:n}}}decodeUnstakeAndWithdraw(){let t=[];this.helperUnstakes.forEach(r=>{let o=r.decodeOwnedObjectId(1),s=r.decodeInputU64(2);t.push({id:o,coin:s})});let e=this._builder.utils.parseCoinNameFromType(this.helperRedeems[0].typeArg(0)),i=this.helperRedeems.find(r=>r.isHaveNestedInput(2)),n;return i&&(n=new Wi(i.getNestedInputParam(2),this.txb).getAmountInput().reduce((r,o)=>r+o,0)),{txType:Kt.TransactionType.Other,type:"WithdrawAndUnstakeLending",intentionData:{amount:n,coinName:e,stakeAccountId:t}}}decodeClaimReward(){let t=[],e=[],i=[];return this.helperClaimLendingReward.forEach(n=>{let r=n.decodeOwnedObjectId(2),o=n.typeArg(0),s=this._builder.utils.parseCoinNameFromType(o);t.push({stakeMarketCoinName:s,stakeAccountId:r})}),this.helperClaimBorrowV2Reward.forEach(n=>{let r=n.decodeSharedObjectId(3),o=n.decodeOwnedObjectId(4),s=this._builder.utils.parseCoinNameFromType(n.typeArg(0));e.push({obligationId:r,obligationKey:o,rewardCoinName:s})}),this.helperClaimBorrowReward.forEach(n=>{let r=n.decodeSharedObjectId(2),o=n.decodeOwnedObjectId(3),s=this._builder.utils.parseCoinNameFromType(n.typeArg(0));i.push({obligationId:r,obligationKey:o,rewardCoinName:s})}),{txType:Kt.TransactionType.Other,type:"ClaimIncentiveReward",intentionData:{lendingIncentive:t,borrowIncentiveV2:e,borrowIncentive:i}}}get helperClaimLendingReward(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${this.coreId.spoolPkg}::user::redeem_rewards`)).map(t=>new We(t,this.txb))}get helperClaimBorrowV2Reward(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${this.coreId.borrowIncentivePkg}::user::redeem_rewards`)).map(t=>new We(t,this.txb))}get helperStakeMoreSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`));return new We(t,this.txb)}get helperStakeSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_key`));return new We(t,this.txb)}get helperExtendStakePeriod(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`));return new We(t,this.txb)}get helperRedeemSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::redeem`));return new We(t,this.txb)}get helperRenewExpired(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::renew_expired_ve_sca`));return new We(t,this.txb)}get helperOldUnstakeObligation(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${Fu}::user::unstake`));return new We(t,this.txb)}get helperUnstakeObligation(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.borrowIncentivePkg}::user::unstake`));return new We(t,this.txb)}get helperStakeObligationWithVeSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca`));return new We(t,this.txb)}get helperRedeemVeSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::redeem`));return new We(t,this.txb)}get helperClaimBorrowReward(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${Fu}::user::redeem_rewards`)).map(t=>new We(t,this.txb))}get helperMint(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::mint::mint`));return new We(t,this.txb)}get helperUnstakes(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${this.coreId.spoolPkg}::user::unstake`)).map(t=>new We(t,this.txb))}get helperRedeems(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${this.coreId.protocolPkg}::redeem::redeem`)).map(t=>new We(t,this.txb))}get helperRedeem(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::redeem::redeem`));return new We(t,this.txb)}get helperStake(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.spoolPkg}::user::stake`));return new We(t,this.txb)}get helperUnstake(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.spoolPkg}::user::unstake`));return new We(t,this.txb)}get helperDepositCollateral(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::deposit_collateral::deposit_collateral`));return new We(t,this.txb)}get helperWithdrawCollateral(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::withdraw_collateral::withdraw_collateral`));return new We(t,this.txb)}get helperBorrow(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::borrow::borrow`));return new We(t,this.txb)}get helperRepay(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::repay::repay`));return new We(t,this.txb)}},Wi=class{constructor(t,e){this.splitCoin=t,this.txb=e}getAmountInput(){return this.splitCoin.amounts.map(t=>{if(t.kind==="Input")return Number(We.getPureInputValue(t,"u64"))}).filter(t=>t!==void 0)}static getPureInputValue(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value=="object"&&"Pure"in t.value){let i=t.value.Pure;return Ha.bcs.de(e,new Uint8Array(i))}return t.value}},We=class Ka{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return Ka.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return Ka.getOwnedObjectId(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return Number(i)}decodeInputU8(e){let i=this.decodePureArg(e,"u8");return Number(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,Nn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return Ka.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}getNestedInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="NestedResult")throw new Error("not input type");return this.txb.blockData.transactions[i.index]}isHaveNestedInput(e){return this.moveCall.arguments[e].kind==="NestedResult"}static getPureInputValue(e,i){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 Ha.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Nn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Nn.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Nn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Nn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){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 Ha.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,Nn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},tT={mainnet:{core:{version:"0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",versionCap:"0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",object:"0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf",market:"0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",adminCap:"0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",coinDecimalsRegistry:"0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",obligationAccessStore:"0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9",coins:{cetus:{id:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",metaData:"0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",feedObject:"0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"}}},apt:{id:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",metaData:"0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",feedObject:"0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"}}},sol:{id:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",metaData:"0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",feedObject:"0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"}}},btc:{id:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",metaData:"0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",feedObject:"0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"}}},eth:{id:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",metaData:"0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",feedObject:"0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"}}},usdc:{id:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",metaData:"0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",feedObject:"0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"}}},usdt:{id:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",metaData:"0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",feedObject:"0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"}}},sui:{id:"0x0000000000000000000000000000000000000000000000000000000000000002",metaData:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",treasury:"",oracle:{supra:"",switchboard:"0xbca474133638352ba83ccf7b5c931d50f764b09550e16612c9f70f1e21f3f594",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},afsui:{id:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",metaData:"0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},hasui:{id:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",metaData:"0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},vsui:{id:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",metaData:"0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},sca:{id:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",metaData:"0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",feedObject:"0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"}}}},oracles:{xOracle:"0x93d5bf0936b71eb27255941e532fac33b5a5c7759e377b4923af0a1359ad494f",xOracleCap:"0x1edeae568fde99e090dbdec4bcdbd33a15f53a1ce1f87aeef1a560dedf4b4a90",supra:{registry:"",registryCap:"",holder:""},switchboard:{registry:"",registryCap:""},pyth:{registry:"0xedc293f9413a5a7a5d53bdba1fd889d0a4030894469228f0acdae4aa3c55a213",registryCap:"0xbcb07141eb1f7e01fbda4130ecf5f5adaeabb77f5d9c32158b7532bcd2197acd",state:"0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",wormhole:"0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",wormholeState:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"}},packages:{coinDecimalsRegistry:{id:"0xca5a5a62f01c79a104bf4d31669e29daa387f325c241de4edbe30986a9bc8b0d",upgradeCap:"0x34e76a945d29f195bc53ca704fa70877d1cf3a5d7bbfdda1b13e633fff13c0f6"},math:{id:"0xad013d5fde39e15eabda32b3dbdafd67dac32b798ce63237c27a8f73339b9b6f",upgradeCap:"0x3a329598231de02e6135c62284b66005b41cad1d9ab7ca2dc79c08293aba2ec6"},whitelist:{id:"0x1318fdc90319ec9c24df1456d960a447521b0a658316155895014a6e39b5482f",upgradeCap:"0xf5a22aea23db664f7b69855b6a546747f17c1ec4230319cfc17225e462b05761"},x:{id:"0x779b5c547976899f5474f3a5bc0db36ddf4697ad7e5a901db0415c2281d28162",upgradeCap:"0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"},protocol:{id:"0x38fe42a5a69f7eb3635404389e8003be9457b1a5c873f133184648c7e9bd47b7",upgradeCap:"0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"},protocolWhitelist:{id:"0x4c262d9343dac53ecb28f482a2a3f62c73d0ebac5b5f03d57383d56ff219acdf",upgradeCap:"0x4a5e88a75039b00988f633f811f58117f31b8627a46bf822aa114d9010049449"},query:{id:"0xb8d603a39114a5efef3dd0bf84df0bed1be1fbd39b78b7dd6e8a61ccc5e6006f",upgradeCap:"0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"},supra:{id:"",upgradeCap:""},pyth:{id:"0x910f30cbc7f601f75a5141a01265cd47c62d468707c5e1aecb32a18f448cb25a",upgradeCap:"0xdf0ffbae1ea5bb25fbca5efba433dcf00c7cced65679af2f04728901275c6157"},switchboard:{id:"",upgradeCap:""},xOracle:{id:"0x1478a432123e4b3d61878b629f2c692969fdb375644f1251cd278a4b1e7d7cd6",upgradeCap:"0x0f928a6b2e26b73330fecaf9b44acfc9800a4a9794d6415c2a3153bc70e3c1f0"},testCoin:{id:"",upgradeCap:""}}},spool:{id:"0xec1ac7f4d01c5bf178ff4e62e523e7df7721453d81d4904a42a0ffc2686c843d",adminCap:"0xdd8a047cbbf802bfcde5288b8ef1910965d789cc614da11d39af05fca0bd020a",object:"0xe87f1b2d498106a2c61421cec75b7b5c5e348512b0dc263949a0e7a3c256571a",pools:{seth:{id:"0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",rewardPoolId:"0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"},ssui:{id:"0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",rewardPoolId:"0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9"},susdc:{id:"0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",rewardPoolId:"0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8"},susdt:{id:"0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",rewardPoolId:"0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080"},scetus:{id:"0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",rewardPoolId:"0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"},safsui:{id:"0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",rewardPoolId:"0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e"},shasui:{id:"0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",rewardPoolId:"0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66"},svsui:{id:"0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",rewardPoolId:"0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a"}},version:"",versionCap:""},borrowIncentive:{id:"0x874f1d43d81e2256e120bab2485938fe07ba0cc21d87129a99a1db11cacb382d",adminCap:"0xc486afa253646f4d381e81d7f1df8aa4723b845a6bb356f69bad635ffefffe2c",object:"0x002875153e09f8145ab63527bc85c00f2bd102e12f9573c47f8cdf1a1cb62934",query:"0x529edc54a3dce2207703ceebbccb0ac14133f7825c1f528775ba0d85a4063489",incentivePools:"0x6547e143d406b5ccd5f46aae482497de279cc1a68c406f701df70a05f9212ab4",incentiveAccounts:"0xc4701fdbc1c92f9a636d334d66012b3027659e9fb8aff27279a82edfb6b77d02",config:"0xdf5d04b4691cc67e82fd4db8394d89ff44823a9de29716c924f74bb4f11cc1f7",version:"",versionCap:""},vesca:{id:"0xcfe2d87aa5712b67cad2732edb6a2201bfdf592377e5c0968b7cb02099bd8e21",adminCap:"0x4d105b16467acca81d18c132cdd1a3cee159920a86c1ef4bdbf2e8d7878500c5",tableId:"0x0a0b7f749baeb61e3dfee2b42245e32d0e6b484063f0a536b33e771d573d7246",table:"0xd3a4632b1080f7d96e1c2487d4dabf2c1196916937c505a69954ac9f393be8d0",treasury:"0xafa4b6231e49c15a22d641ce33fda761baaf650fa21899dfa2eb1716146e7306",config:"0x7cbcb0a342179577a117dfdff974cf1ab765d3b571067bf22ddf5f9e3a667922"}}},ec=class{_auth;_id;_network;_currentAddresses;_addressesMap;constructor(t){let{id:e,auth:i,network:n}=t;i&&(this._auth=i),this._id=e,this._network=n||"mainnet",this._addressesMap=new Map}getId(){return this._id||void 0}get(t){if(this._currentAddresses)return t.split(".").reduce((e,i)=>typeof e=="object"?e[i]:e,this._currentAddresses)||void 0}set(t,e){if(this._currentAddresses){let i=t.split(".");i.reduce((n,r,o)=>{if(o===i.length-1){let s=n;s[r]=e}return n[r]},this._currentAddresses)}return this._currentAddresses}switchCurrentAddresses(t){return this._addressesMap.has(t)&&(this._currentAddresses=this._addressesMap.get(t),this._network=t),this._currentAddresses}getAddresses(t){return t?this._addressesMap.get(t):this._currentAddresses??this._addressesMap.get(this._network)}setAddresses(t,e){let i=e||this._network;i===this._network&&(this._currentAddresses=t),this._addressesMap.set(i,t)}getAllAddresses(){return Object.fromEntries(this._addressesMap)}read(){return Object.entries(tT).forEach(([t,e])=>{["localnet","devnet","testnet","mainnet"].includes(t)&&(t===this._network&&(this._currentAddresses=e),this._addressesMap.set(t,e))}),this.getAllAddresses()}},Ci=t=>{let{sender:e}=t.blockData;if(!e)throw new Error("Sender is required");return e},iT=(t,e,i,n)=>{let r=!n,o=!r&&n*1e3<=new Date().getTime();if(r||o)if(t!==void 0&&e!==void 0){if(e<=0)throw new Error("Lock period must be greater than 0");if(typeof t=="number"&&t<1e10)throw new Error(`Minimum lock amount for ${o?"renewing expired veSca":"initial lock"} is 10 SCA`);if(e*86400>126144e3)throw new Error("Maximum lock period is ~4 years (1460 days)")}else throw new Error(`SCA amount and lock period is required for ${o?"renewing expired veSca":"initial lock"}`);else{if(ls(n),typeof t=="number"&&t<1e9)throw new Error("Minimum top up amount is 1 SCA");if(i&&n&&i-n>126057600)throw new Error("Maximum lock period is ~4 years (1459 days)")}},nT=(t,e,i)=>{if(ls(i),t<=0)throw new Error("Lock period must be greater than 0");if(i&&i*1e3<=new Date().getTime())throw new Error("veSca is expired, use renewExpiredVeScaQuick instead");if(i&&e-i>126057600)throw new Error("Maximum lock period is ~4 years (1459 days)")},rT=(t,e)=>{if(ls(e),t<1e9)throw new Error("Minimum top up amount is 1 SCA");if(e&&e*1e3<=new Date().getTime())throw new Error("veSca is expired, use renewExpiredVeScaQuick instead")},oT=(t,e,i)=>{if(ls(i),t<1e10)throw new Error("Minimum lock amount for renewing expired vesca 10 SCA");if(e*86400>=126057600)throw new Error("Maximum lock period is ~4 years (1459 days)")},ls=t=>{if(t===void 0)throw new Error("veSca not found")},sT=t=>({pointType:(0,us.normalizeStructTag)(t.point_type.name),weightedAmount:Number(t.weighted_amount),points:Number(t.points),totalPoints:Number(t.total_points),index:Number(t.index)}),aT=t=>({poolType:(0,us.normalizeStructTag)(t.pool_type.name),debtAmount:Number(t.debt_amount),pointList:t.points_list.reduce((e,i)=>{let n=sT(i),r=(0,us.parseStructTag)(n.pointType).name.toLowerCase();return e[r]=n,e},{})}),Sm=t=>{let e=t.slice(1).toLowerCase();return t.charAt(0).toLowerCase()==="s"&&[...new Set([...Qa,...I0,...XC])].includes(e)},xm=t=>{switch(t){case"afsui":return"afSUI";case"hasui":return"haSUI";case"vsui":return"vSUI";default:return t.toUpperCase()}},cT=t=>{let e=new Date(t*1e3),i=new Date(t*1e3);i.setUTCHours(0,0,0,0),e.getUTCHours()>=0&&i.setUTCDate(i.getUTCDate()+1);let n=new Date().getTime();return i.getTime()-n>126144e3*1e3&&i.setUTCDate(i.getUTCDate()-1),Math.floor(i.getTime()/1e3)},Vu=class{params;isTestnet;_address;client;constructor(t,e){this.params=t,this._address=e?.address??new ec({id:t?.addressesId||Ya,network:t?.networkType}),this.isTestnet=t.networkType?t.networkType==="testnet":!1,this.client=t.client}init(t=!1,e){t||!this._address.getAddresses()||!e?.getAddresses()?this._address.read():this._address=e}parseSymbol(t){if(Sm(t)){let e=t.slice(1).toLowerCase();return t.slice(0,1).toLowerCase()+xm(e)}return xm(t)}parseCoinType(t){let e=Sm(t)?this.parseCoinName(t):t,i=this._address.get(`core.coins.${e}.id`)||QC[t]||void 0;if(!i)throw Error(`Coin ${t} is not supported`);if(t==="sui")return(0,as.normalizeStructTag)(`${i}::sui::SUI`);let n=[this._address.get("core.coins.usdc.id")??ki.usdc,this._address.get("core.coins.usdt.id")??ki.usdt,this._address.get("core.coins.eth.id")??ki.eth,this._address.get("core.coins.btc.id")??ki.btc,this._address.get("core.coins.sol.id")??ki.sol,this._address.get("core.coins.apt.id")??ki.apt],r=[this._address.get("core.coins.vsui.id")??Tm.vsui];return n.includes(i)?`${i}::coin::COIN`:r.includes(i)?`${i}::cert::CERT`:`${i}::${e}::${e.toUpperCase()}`}parseMarketCoinType(t){let e=this._address.get("core.object")||A0,i=this.parseCoinType(t);return`${e}::reserve::MarketCoin<${i}>`}parseCoinNameFromType(t){let e=(0,as.normalizeStructTag)(t),i=/((0x[^:]+::[^:]+::[^<>]+))(?![^<>]*<)/,n=t.match(i),r=t.includes("reserve::MarketCoin");e=n?.[1]||t;let o={[`${this._address.get("core.coins.usdc.id")??ki.usdc}::coin::COIN`]:"usdc",[`${this._address.get("core.coins.usdt.id")??ki.usdt}::coin::COIN`]:"usdt",[`${this._address.get("core.coins.eth.id")??ki.eth}::coin::COIN`]:"eth",[`${this._address.get("core.coins.btc.id")??ki.btc}::coin::COIN`]:"btc",[`${this._address.get("core.coins.sol.id")??ki.sol}::coin::COIN`]:"sol",[`${this._address.get("core.coins.apt.id")??ki.apt}::coin::COIN`]:"apt"},s={[`${this._address.get("core.coins.vsui.id")??Tm.vsui}::cert::CERT`]:"vsui"},a=o[e]||s[e]||e.split("::")[2].toLowerCase();return r?this.parseMarketCoinName(a):a}parseCoinName(t){return t.slice(1)}parseMarketCoinName(t){return`s${t}`}getSpoolRewardCoinName=t=>O0[t];getBorrowIncentiveRewardCoinName=t=>YC[t];getCoinDecimal(t){return JC[t]}getCoinWrappedType(t){return t==="usdc"||t==="usdt"||t==="eth"||t==="btc"||t==="apt"||t==="sol"?{from:"Wormhole",type:"Portal from Ethereum"}:void 0}async selectCoinIds(t,e=as.SUI_TYPE_ARG,i){let n=i,r=[],o=0,s=!0,a=null;for(;s&&o<t;){let l=await this.client.getCoins({owner:n,coinType:e,cursor:a});l.data.sort((u,h)=>parseInt(h.balance,10)-parseInt(u.balance,10));for(let u=0;u<l.data.length&&(r.push({objectId:l.data[u].coinObjectId,digest:l.data[u].digest,version:l.data[u].version}),o+=parseInt(l.data[u].balance,10),!(o>=t));u++);a=l.nextCursor,s=l.hasNextPage}if(!r.length)throw new Error("No valid coins found for the transaction.");return r.map(l=>l.objectId)}parseAprToApy(t,e=365){return(1+t/e)**e-1}parseApyToApr(t,e=365){return((1+t)**(1/e)-1)*e}takeAmountFromCoins(t,e,i){let n=e.map(s=>t.object(s)),r=n[0];n.length>1&&t.mergeCoins(r,n.slice(1));let[o]=t.splitCoins(r,[t.pure(i)]);return[o,r]}getUnlockAt(t,e){let i=Math.floor(new Date().getTime()/1e3),n=e?Math.max(e-i,0):0,r=0;if(n===0){let o=(t??1)*86400;r=Math.min(i+o,i+126144e3)}else{let o=Math.min(t?t*86400+n:n,126144e3);r=i+o}return cT(r)}},Wu=async(t,e)=>{let i=e,n=t.address.get("core.object")||A0,r=[],o=!1,s=null;do{let h=await t.client.getOwnedObjects({owner:i,filter:{StructType:`${n}::obligation::ObligationKey`},cursor:s});r.push(...h.data),h.hasNextPage&&h.nextCursor?(o=!0,s=h.nextCursor):o=!1}while(o);let a=r.map(h=>h?.data?.objectId).filter(h=>h!==void 0),l=await t.client.multiGetObjects({ids:a,options:{showContent:!0,showType:!0}}),u=[];for(let h=0;h<l.length;h++){let y=l[h].data.objectId,{content:v}=l[h].data;if(v&&"fields"in v){let T=v.fields,O=String(T.ownership.fields.of),P=await j0(t,O);u.push({id:O,keyId:y,locked:P})}}return u},j0=async(t,e)=>{let i=await t.client.getObject({id:e,options:{showContent:!0}}),n=!1;return i.data&&i?.data?.content?.dataType==="moveObject"&&"lock_key"in i.data.content.fields&&(n=!!i.data.content.fields.lock_key),n},lT=async(t,e,i)=>{let n=i||[...Qa],r=e,o=[],s=!1,a=null;do{let u=await t.client.getOwnedObjects({owner:r,filter:{MatchAny:n.map(h=>({StructType:`0x2::coin::Coin<${t.utils.parseCoinType(h)}>`}))},options:{showType:!0,showContent:!0},cursor:a});o.push(...u.data),u.hasNextPage&&u.nextCursor?(s=!0,a=u.nextCursor):s=!1}while(s);let l={};return o.map(u=>u.data).filter(u=>u!=null).forEach(u=>{let h=u.type;if(u.content&&"fields"in u.content){let y=u.content.fields,v=t.utils.parseCoinNameFromType(h);v&&(l[v]=wi(l[v]??0).plus(y.balance).toNumber())}}),l},uT=async(t,e,i)=>{let n=i,r=t.utils.parseCoinType(e),o=[],s=!1,a=null;do{let u=await t.client.getOwnedObjects({owner:n,filter:{StructType:`0x2::coin::Coin<${r}>`},options:{showContent:!0},cursor:a});o.push(...u.data),u.hasNextPage&&u.nextCursor?(s=!0,a=u.nextCursor):s=!1}while(s);let l=0;return o.map(u=>u.data).filter(u=>u!=null).forEach(u=>{if(u.content&&"fields"in u.content){let h=u.content.fields;l=wi(l).plus(h.balance).toNumber()}}),l},dT=async(t,e,i)=>{let n=i||[...Qa].map(u=>t.utils.parseMarketCoinName(u)),r=e,o=[],s=!1,a=null;do{let u=await t.client.getOwnedObjects({owner:r,filter:{MatchAny:n.map(h=>({StructType:`0x2::coin::Coin<${t.utils.parseMarketCoinType(h)}>`}))},options:{showType:!0,showContent:!0},cursor:a});o.push(...u.data),u.hasNextPage&&u.nextCursor?(s=!0,a=u.nextCursor):s=!1}while(s);let l={};return o.map(u=>u.data).filter(u=>u!=null).forEach(u=>{let h=u.type;if(u.content&&"fields"in u.content){let y=u.content.fields,v=t.utils.parseCoinNameFromType(h);v&&(l[v]=wi(l[v]??0).plus(y.balance).toNumber())}}),l},fT=async(t,e,i)=>{let n=i,r=t.utils.parseMarketCoinType(e),o=[],s=!1,a=null;do{let u=await t.client.getOwnedObjects({owner:n,filter:{StructType:`0x2::coin::Coin<${r}>`},options:{showContent:!0},cursor:a});o.push(...u.data),u.hasNextPage&&u.nextCursor?(s=!0,a=u.nextCursor):s=!1}while(s);let l=0;return o.map(u=>u.data).filter(u=>u!=null).forEach(u=>{if(u.content&&"fields"in u.content){let h=u.content.fields;l=wi(l).plus(h.balance).toNumber()}}),l},hT=async(t,e)=>{let i=`${t.address.get("core.packages.query.id")}::obligation_query::obligation_data`,n=new M0.TransactionBlock;return n.moveCall({target:i,arguments:[n.object(e)]}),(await t.client.devInspectTransactionBlock({transactionBlock:n,sender:t.walletAddress})).events[0].parsedJson},zu=async(t,e)=>{let i=e,n=t.address.get("spool.object"),r=`${n}::spool_account::SpoolAccount`,o=[],s=!1,a=null;do{let y=await t.client.getOwnedObjects({owner:i,filter:{StructType:r},options:{showContent:!0,showType:!0},cursor:a});o.push(...y.data),y.hasNextPage&&y.nextCursor?(s=!0,a=y.nextCursor):s=!1}while(s);let l={seth:[],ssui:[],susdc:[],susdt:[],scetus:[],safsui:[],shasui:[],svsui:[]},u=Object.keys(l).reduce((y,v)=>{let T=t.utils.parseCoinName(v),O=t.utils.parseMarketCoinType(T),P={...y},j=`${n}::spool_account::SpoolAccount<${O}>`;return P[v]=j,P},{}),h=o.map(y=>y?.data?.objectId).filter(y=>y!==void 0);return(await t.client.multiGetObjects({ids:h,options:{showContent:!0,showType:!0}})).forEach(y=>{let v=y.data.objectId,T=y.data.type;if(y.data.content&&"fields"in y.data.content){let O=y.data.content.fields,P=String(O.spool_id),j=String(O.stake_type.fields.name),B=Number(O.stakes),D=Number(O.index),q=Number(O.points),K=Number(O.total_points);(0,Be.normalizeStructTag)(T)===u.seth?l.seth.push({id:v,type:(0,Be.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(T)===u.ssui?l.ssui.push({id:v,type:(0,Be.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(T)===u.susdc?l.susdc.push({id:v,type:(0,Be.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(T)===u.susdt?l.susdt.push({id:v,type:(0,Be.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(T)===u.scetus?l.scetus.push({id:v,type:(0,Be.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(T)===u.safsui?l.safsui.push({id:v,type:(0,Be.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(T)===u.shasui?l.shasui.push({id:v,type:(0,Be.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(T)===u.svsui&&l.svsui.push({id:v,type:(0,Be.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K})}}),l},Am=async(t,e)=>{let i=t.address.get(`spool.pools.${e}.id`),n,r=await t.client.getObject({id:i,options:{showContent:!0,showType:!0}});if(r.data){let o=r.data,s=o.objectId,a=o.type;if(o.content&&"fields"in o.content){let l=o.content.fields,u=Number(l.max_distributed_point),h=Number(l.distributed_point),y=Number(l.distributed_point_per_period),v=Number(l.point_distribution_time),T=Number(l.max_stakes),O=String(l.stake_type.fields.name),P=Number(l.stakes),j=Number(l.index),B=Number(l.created_at),D=Number(l.last_update);n={id:s,type:(0,Be.normalizeStructTag)(a),maxPoint:u,distributedPoint:h,pointPerPeriod:y,period:v,maxStake:T,stakeType:(0,Be.normalizeStructTag)(O),totalStaked:P,index:j,createdAt:B,lastUpdate:D}}}return n},Im=async(t,e)=>{let i=t.address.get(`spool.pools.${e}.rewardPoolId`),n,r=await t.client.getObject({id:i,options:{showContent:!0,showType:!0}});if(r.data){let o=r.data,s=o.objectId,a=o.type;if(o.content&&"fields"in o.content){let l=o.content.fields,u=String(l.spool_id),h=Number(l.exchange_rate_numerator),y=Number(l.exchange_rate_denominator),v=Number(l.rewards),T=Number(l.claimed_rewards);n={id:s,type:(0,Be.normalizeStructTag)(a),stakePoolId:u,ratioNumerator:h,ratioDenominator:y,rewards:v,claimedRewards:T}}}return n},pT=async(t,e,i,n)=>{let r=n||[...Ua],o=t.address.get("borrowIncentive.query"),s=t.address.get("borrowIncentive.incentiveAccounts"),a=`${o}::incentive_account_query::incentive_account_data`,l=new B0.TransactionBlock;l.moveCall({target:a,arguments:[l.object(s),l.object(e)]});let u=(await t.client.devInspectTransactionBlock({transactionBlock:l,sender:i})).events[0].parsedJson,h={};return u.pool_records.forEach(y=>{let v=aT(y),{poolType:T}=v,O=t.utils.parseCoinNameFromType(T);r.length>=1&&r.includes(O)&&(h[O]=v)},{}),h},mT=async(t,e)=>{let i=t.address.get(`core.coins.${e}.oracle.pyth.feedObject`),n=await t.client.getObject({id:i,options:{showContent:!0}});if(n.data){let r=n.data;if(r.content&&"fields"in r.content){let o=r.content.fields,s=Number(o.price_info.fields.price_feed.fields.price.fields.expo.fields.magnitude),a=Number(o.price_info.fields.price_feed.fields.price.fields.expo.fields.negative),l=Number(o.price_info.fields.price_feed.fields.price.fields.price.fields.magnitude),u=Number(o.price_info.fields.price_feed.fields.price.fields.price.fields.negative);return l*10**((a?-1:1)*s)*(u?-1:1)}}return 0},N0=async(t,e)=>{let i=e,n=`${t.address.get("vesca.id")}::ve_sca::VeScaKey`,r=[],o=!1,s=null;do{let a=await t.client.getOwnedObjects({owner:i,filter:{StructType:n},cursor:s});r.push(...a.data),a.hasNextPage&&a.nextCursor?(o=!0,s=a.nextCursor):o=!1}while(o);return r.map(a=>a.data).filter(a=>!!a)},gT=async(t,e)=>{let i=(await N0(t,e)).map(r=>r.objectId),n=[];for(let r=0;r<i.length;r++){let o=await F0(t,i[r]);o&&n.push(o)}return n},F0=async(t,e,i)=>{let n=t.address.get("vesca.tableId"),r=e||(await N0(t,i))[0].objectId,o,s=(await t.client.getDynamicFieldObject({parentId:n,name:{type:"0x2::object::ID",value:r}})).data;if(s&&s.content&&s.content.dataType==="moveObject"&&"fields"in s.content){let a=s.content.fields.value.fields;o={id:s.objectId,keyId:r,lockedScaAmount:wi(a.locked_sca_amount).toNumber(),lockedScaCoin:wi(a.locked_sca_amount).shiftedBy(-9).toNumber(),unlockAt:wi(a.unlock_at).toNumber()}}return o},R0=class{params;address;client;utils;walletAddress;constructor(t,e){this.params=t,this.address=e?.address??new ec({id:t?.addressesId||Ya,network:t?.networkType}),this.client=t.client,this.utils=e?.utils??new Vu(this.params,{address:this.address}),this.walletAddress=t.walletAddress}init(t=!1,e){t||!this.address.getAddresses()||!e?.getAddresses()?this.address.read():this.address=e}async getObligations(t){return Wu(this,t)}async getCoinAmounts(t,e){return lT(this,t,e)}async getCoinAmount(t,e){return uT(this,t,e)}async getMarketCoinAmounts(t,e){return dT(this,t,e)}async getMarketCoinAmount(t,e){return fT(this,t,e)}async getPriceFromPyth(t){return mT(this,t)}async getAllStakeAccounts(t){return zu(this,t)}async getStakeAccounts(t,e){return(await this.getAllStakeAccounts(e))[t]??[]}async getStakePools(t){let e=t??[...Ru],i={};for(let n=0;n<e.length;n++){let r=e[n],o=await Am(this,r);o&&(i[r]=o)}return i}async getStakePool(t){return Am(this,t)}async getStakeRewardPools(t){let e=t??[...Ru],i={};for(let n=0;n<e.length;n++){let r=await Im(this,e[n]);r&&(i[e[n]]=r)}return i}async getStakeRewardPool(t){return Im(this,t)}async getBorrowIncentiveAccounts(t,e,i){return pT(this,t,e||this.walletAddress,i)}async getObligationCoinNames(t){let e=await hT(this,t),i=e.collaterals.map(r=>`0x${r.type.name}`),n=e.debts.map(r=>`0x${r.type.name}`);return[...new Set([...i,...n])].map(r=>this.utils.parseCoinNameFromType(r))}},q0=class{params;isTestnet;address;query;utils;client;walletAddress;constructor(t,e){this.params=t,this.address=e?.address??new ec({id:t?.addressesId||Ya,network:t?.networkType}),this.query=e?.query??new R0(t,{address:this.address}),this.utils=e?.utils??new Vu(this.params,{address:this.address,query:this.query}),this.client=t.client,this.walletAddress=(0,E0.normalizeSuiAddress)(t.walletAddress),this.isTestnet=t.networkType?t.networkType==="testnet":!1}async init(t=!1,e){t||!this.address.getAddresses()||!e?.getAddresses()?this.address.read():this.address=e,this.query.init(t,this.address),this.utils.init(t,this.address)}createTxBlock(t){return new D0.TransactionBlock(t)}async selectCoin(t,e,i,n){let r=this.utils.parseCoinType(e),o=await this.utils.selectCoinIds(i,r,n),[s,a]=this.utils.takeAmountFromCoins(t,o,i);return{takeCoin:s,leftCoin:a}}async selectMarketCoin(t,e,i,n){let r=this.utils.parseMarketCoinType(e),o=await this.utils.selectCoinIds(i,r,n),[s,a]=this.utils.takeAmountFromCoins(t,o,i);return{takeCoin:s,leftCoin:a}}},Qr=async(...t)=>{let[e,i,n]=t;if(t.length===3&&n&&typeof n=="string")return await F0(e.query,n)||void 0;let r=Ci(i),o=await gT(e.query,r);if(o.length!==0)return o[0]},_T=async(t,e)=>{let i=t.address.get("borrowIncentive.object"),n=t.address.get("borrowIncentive.incentivePools"),r=t.address.get("vesca.id"),{client:o}=t,s=await o.getObject({id:n,options:{showContent:!0}});if(s.data?.content?.dataType!=="moveObject")return!1;let a=s.data.content.fields.ve_sca_bind.fields.id.id,l=`${i}::typed_id::TypedID<${r}::ve_sca::VeScaKey>`,u=await o.getDynamicFieldObject({parentId:a,name:{type:l,value:e}});return u.data?.content?.dataType!=="moveObject"?!1:u.data.content.fields.value.fields.id},Cu=async(...t)=>{let[e,i,n,r]=t;if(t.length===4&&n&&r&&typeof n=="string"){let a=await j0(e.query,n);return{obligationId:n,obligationKey:r,obligationLocked:a}}let o=Ci(i),s=await Wu(e.query,o);if(s.length===0)throw new Error(`No obligation found for sender ${o}`);return{obligationId:s[0].id,obligationKey:s[0].keyId,obligationLocked:s[0].locked}},bT=({builder:t,txBlock:e})=>{let i={borrowIncentivePkg:t.address.get("borrowIncentive.id"),query:t.address.get("borrowIncentive.query"),incentivePools:t.address.get("borrowIncentive.incentivePools"),incentiveAccounts:t.address.get("borrowIncentive.incentiveAccounts"),obligationAccessStore:t.address.get("core.obligationAccessStore"),config:t.address.get("borrowIncentive.config")},n={id:"0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",incentivePools:"0x64972b713ccec45ec3964809e477cea6f97350c0c50ca3aec85bb631639266ec",incentiveAccounts:"0x3c0b707068bdcea8bb859d751ad3e2149a9f83c13fcf4054ef91372a00bccdd3"},r={table:t.address.get("vesca.table"),treasury:t.address.get("vesca.treasury"),config:t.address.get("vesca.config")};return{stakeObligation:(o,s)=>{e.moveCall({target:`${i.borrowIncentivePkg}::user::stake`,arguments:[e.object(i.config),e.object(i.incentivePools),e.object(i.incentiveAccounts),e.object(s),e.object(o),e.object(i.obligationAccessStore),e.object(un.SUI_CLOCK_OBJECT_ID)]})},stakeObligationWithVesca:(o,s,a)=>{e.moveCall({target:`${i.borrowIncentivePkg}::user::stake_with_ve_sca`,arguments:[e.object(i.config),e.object(i.incentivePools),e.object(i.incentiveAccounts),e.object(s),e.object(o),e.object(i.obligationAccessStore),e.object(r.config),e.object(r.treasury),e.object(r.table),e.object(a),e.object(un.SUI_CLOCK_OBJECT_ID)]})},unstakeObligation:(o,s)=>{e.moveCall({target:`${i.borrowIncentivePkg}::user::unstake`,arguments:[e.object(i.config),e.object(i.incentivePools),e.object(i.incentiveAccounts),e.object(s),e.object(o),e.object(un.SUI_CLOCK_OBJECT_ID)]})},oldUnstakeObligation:(o,s)=>{e.moveCall({target:`${i.borrowIncentivePkg}::user::unstake`,arguments:[e.object(n.incentivePools),e.object(n.incentiveAccounts),e.object(s),e.object(o),e.object(un.SUI_CLOCK_OBJECT_ID)],typeArguments:[un.SUI_TYPE_ARG]})},claimBorrowIncentive:(o,s,a)=>{let l=t.utils.parseCoinType(a);return e.moveCall({target:`${i.borrowIncentivePkg}::user::redeem_rewards`,arguments:[e.object(i.config),e.object(i.incentivePools),e.object(i.incentiveAccounts),e.object(s),e.object(o),e.object(un.SUI_CLOCK_OBJECT_ID)],typeArguments:[l]})},oldClaimBorrowIncentive(o,s,a){let l=t.utils.parseCoinType(a);return e.moveCall({target:`${n.id}::user::redeem_rewards`,arguments:[e.object(n.incentivePools),e.object(n.incentiveAccounts),e.object(s),e.object(o),e.object(un.SUI_CLOCK_OBJECT_ID)],typeArguments:[l]})}}},zi=({builder:t,txBlock:e})=>{let i=bT({builder:t,txBlock:e});return{normalMethod:i,stakeObligationQuick:async(n,r)=>{let{obligationId:o,obligationKey:s,obligationLocked:a}=await Cu(t,e,n,r),l=!!e.blockData.transactions.find(u=>u.kind==="MoveCall"&&u.target===`${t.address.get("borrowIncentive.id")}::user::unstake`);(!a||l)&&i.stakeObligation(o,s)},unstakeObligationQuick:async(n,r)=>{let{obligationId:o,obligationKey:s,obligationLocked:a}=await Cu(t,e,n,r);a&&i.unstakeObligation(o,s)},stakeObligationWithVeScaQuick:async(n,r,o)=>{let{obligationId:s,obligationKey:a,obligationLocked:l}=await Cu(t,e,n,r),u=!!e.blockData.transactions.find(h=>h.kind==="MoveCall"&&(h.target===`${Fu}::user::unstake`||h.target===`${t.address.get("borrowIncentive.id")}::user::unstake`));if(!l||u){let h=await Qr(t,e,o);if(h){let y=await _T(t,h.keyId);!y||y===s?i.stakeObligationWithVesca(s,a,h.keyId):i.stakeObligation(s,a)}else i.stakeObligation(s,a)}},claimBorrowIncentiveQuick:(n,r,o)=>i.claimBorrowIncentive(r,o,n)}},yT={testnet:["https://hermes-beta.pyth.network"],mainnet:["https://hermes.pyth.network","https://scallop.rpc.p2p.world"]},Tu=16*1024,wT=class{provider;pythStateId;wormholeStateId;pythPackageId;wormholePackageId;priceTableInfo;priceFeedObjectIdCache=new Map;baseUpdateFee;constructor(t,e,i){this.provider=t,this.pythStateId=e,this.wormholeStateId=i,this.pythPackageId=void 0,this.wormholePackageId=void 0}async getBaseUpdateFee(){if(this.baseUpdateFee===void 0){let t=await this.provider.getObject({id:this.pythStateId,options:{showContent:!0}});if(!t.data||!t.data.content||t.data.content.dataType!=="moveObject")throw new Error("Unable to fetch pyth state object");this.baseUpdateFee=t.data.content.fields.base_update_fee}return this.baseUpdateFee}async getPackageId(t){let e=await this.provider.getObject({id:t,options:{showContent:!0}}).then(i=>{if(i.data?.content?.dataType==="moveObject")return i.data.content.fields;throw console.log(i.data?.content),new Error(`Cannot fetch package id for object ${t}`)});if("upgrade_cap"in e)return e.upgrade_cap.fields.package;throw new Error("upgrade_cap not found")}async verifyVaas(t,e){let i=await this.getWormholePackageId(),n=[];return t.forEach(r=>{let[o]=e.moveCall({target:`${i}::vaa::parse_and_verify`,arguments:[e.object(this.wormholeStateId),e.pure(Va.bcs.ser("vector<u8>",Array.from(r),{maxSize:Tu}).toBytes()),e.object(is.SUI_CLOCK_OBJECT_ID)]});n.push(o)}),n}async updatePriceFeeds(t,e,i){let n=await this.getPythPackageId(),r;if(e.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let o=this.extractVaaBytesFromAccumulatorMessage(e[0]),s=await this.verifyVaas([o],t);[r]=t.moveCall({target:`${n}::pyth::create_authenticated_price_infos_using_accumulator`,arguments:[t.object(this.pythStateId),t.pure(Va.bcs.ser("vector<u8>",Array.from(e[0]),{maxSize:Tu}).toBytes()),s[0],t.object(is.SUI_CLOCK_OBJECT_ID)]});let a=[],l=await this.getBaseUpdateFee(),u=t.splitCoins(t.gas,i.map(()=>t.pure(l))),h=0;for(let y=0;y<i.length;y++){let v=await this.getPriceFeedObjectId(i[y]);if(!v)throw new Error(`Price feed ${i[0]} not found, please create it first`);a.push(v),[r]=t.moveCall({target:`${n}::pyth::update_single_price_feed`,arguments:[t.object(this.pythStateId),r,t.object(v),u[h],t.object(is.SUI_CLOCK_OBJECT_ID)]}),h++}return t.moveCall({target:`${n}::hot_potato_vector::destroy`,arguments:[r],typeArguments:[`${n}::price_info::PriceInfo`]}),a}async createPriceFeed(t,e){let i=await this.getPythPackageId();if(e.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let n=this.extractVaaBytesFromAccumulatorMessage(e[0]),r=await this.verifyVaas([n],t);t.moveCall({target:`${i}::pyth::create_price_feeds_using_accumulator`,arguments:[t.object(this.pythStateId),t.pure(Va.bcs.ser("vector<u8>",Array.from(e[0]),{maxSize:Tu}).toBytes()),r[0],t.object(is.SUI_CLOCK_OBJECT_ID)]})}async getWormholePackageId(){return this.wormholePackageId||(this.wormholePackageId=await this.getPackageId(this.wormholeStateId)),this.wormholePackageId}async getPythPackageId(){return this.pythPackageId||(this.pythPackageId=await this.getPackageId(this.pythStateId)),this.pythPackageId}async getPriceFeedObjectId(t){let e=t.replace("0x","");if(!this.priceFeedObjectIdCache.has(e)){let{id:i,fieldType:n}=await this.getPriceTableInfo(),r=await this.provider.getDynamicFieldObject({parentId:i,name:{type:`${n}::price_identifier::PriceIdentifier`,value:{bytes:Array.from(Buffer.from(e,"hex"))}}});if(!r.data||!r.data.content)return;if(r.data.content.dataType!=="moveObject")throw new Error("Price feed type mismatch");this.priceFeedObjectIdCache.set(e,r.data.content.fields.value)}return this.priceFeedObjectIdCache.get(e)}async getPriceTableInfo(){if(this.priceTableInfo===void 0){let t=await this.provider.getDynamicFieldObject({parentId:this.pythStateId,name:{type:"vector<u8>",value:"price_info"}});if(!t.data||!t.data.type)throw new Error("Price Table not found, contract may not be initialized");let e=t.data.type.replace("0x2::table::Table<","");e=e.replace("::price_identifier::PriceIdentifier, 0x2::object::ID>",""),this.priceTableInfo={id:t.data.objectId,fieldType:e}}return this.priceTableInfo}extractVaaBytesFromAccumulatorMessage(t){let e=7+t.readUint8(6)+1,i=t.readUint16BE(e),n=e+2;return t.subarray(n,n+i)}},vT=async(t,e)=>(await L0.default.get(`${t}/api/latest_vaas`,{params:{ids:e}})).data.map(i=>Buffer.from(i,"base64")),Su=async(t,e,i)=>{let n=i??[...new Set([...Qa,...I0])],r=t.isTestnet?["pyth"]:["pyth"];if(r.includes("pyth")){let s=new wT(t.client,t.address.get("core.oracles.pyth.state"),t.address.get("core.oracles.pyth.wormholeState")),a=n.map(u=>t.address.get(`core.coins.${u}.oracle.pyth.feed`)),l=t.params.pythEndpoints??yT[t.isTestnet?"testnet":"mainnet"];try{let u=await vT(l[0],a);await s.updatePriceFeeds(e,u,a)}catch(u){console.warn(`Failed to update price feeds with endpoint ${l[0]}: ${u}`)}}let o=[...new Set(n)];for(let s=0;s<o.length;s++)await kT(t,e,o[s],r)},kT=async(t,e,i,n)=>{let r=t.utils.parseCoinType(i);CT(e,n,t.address.get("core.packages.xOracle.id"),t.address.get("core.oracles.xOracle"),t.address.get("core.packages.pyth.id"),t.address.get("core.oracles.pyth.registry"),t.address.get("core.oracles.pyth.state"),t.address.get(`core.coins.${i}.oracle.pyth.feedObject`),t.address.get("core.packages.switchboard.id"),t.address.get("core.oracles.switchboard.registry"),t.address.get(`core.coins.${i}.oracle.switchboard`),t.address.get("core.packages.supra.id"),t.address.get("core.oracles.supra.registry"),t.address.get("core.oracles.supra.holder"),r)},CT=(t,e,i,n,r,o,s,a,l,u,h,y,v,T,O)=>{let P=TT(t,i,n,O);return e.includes("pyth")&&IT(t,r,P,s,a,o,O),e.includes("switchboard")&&AT(t,l,P,h,u,O),e.includes("supra")&&xT(t,y,P,T,v,O),ST(t,i,n,P,O),t},TT=(t,e,i,n)=>{let r=typeof i=="string"?t.object(i):i,o=`${e}::x_oracle::price_update_request`,s=[n];return t.moveCall({target:o,arguments:[r],typeArguments:s})},ST=(t,e,i,n,r)=>{let o=`${e}::x_oracle::confirm_price_update_request`,s=[r],a=typeof i=="string"?t.object(i):i;return t.moveCall({target:o,arguments:[a,n,t.object(ds.SUI_CLOCK_OBJECT_ID)],typeArguments:s}),t},xT=(t,e,i,n,r,o)=>{let s=typeof n=="string"?t.object(n):n,a=typeof r=="string"?t.object(r):r;t.moveCall({target:`${e}::rule::set_price`,arguments:[i,s,a,t.object(ds.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},AT=(t,e,i,n,r,o)=>{let s=typeof n=="string"?t.object(n):n,a=typeof r=="string"?t.object(r):r;t.moveCall({target:`${e}::rule::set_price`,arguments:[i,s,a,t.object(ds.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},IT=(t,e,i,n,r,o,s)=>{let a=typeof i=="string"?t.object(i):i,l=typeof n=="string"?t.object(n):n,u=typeof r=="string"?t.object(r):r,h=typeof o=="string"?t.object(o):o;t.moveCall({target:`${e}::rule::set_price`,arguments:[a,l,u,h,t.object(ds.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},Ra=async(...t)=>{let[e,i,n,r]=t;if(t.length===3&&n)return{obligationId:n};if(t.length===4&&n&&r)return{obligationId:n,obligationKey:r};let o=Ci(e),s=await Wu(i.query,o);if(s.length===0)throw new Error(`No obligation found for sender ${o}`);return{obligationId:s[0].id,obligationKey:s[0].keyId}},OT=({builder:t,txBlock:e})=>{let i={protocolPkg:t.address.get("core.packages.protocol.id"),market:t.address.get("core.market"),version:t.address.get("core.version"),coinDecimalsRegistry:t.address.get("core.coinDecimalsRegistry"),xOracle:t.address.get("core.oracles.xOracle")};return{openObligation:()=>e.moveCall({target:`${i.protocolPkg}::open_obligation::open_obligation`,arguments:[e.pure(i.version)]}),returnObligation:(n,r)=>e.moveCall({target:`${i.protocolPkg}::open_obligation::return_obligation`,arguments:[e.object(i.version),e.object(n),e.object(r)]}),openObligationEntry:()=>e.moveCall({target:`${i.protocolPkg}::open_obligation::open_obligation_entry`,arguments:[e.object(i.version)]}),addCollateral:(n,r,o)=>{let s=t.utils.parseCoinType(o);return e.moveCall({target:`${i.protocolPkg}::deposit_collateral::deposit_collateral`,arguments:[e.object(i.version),e.object(n),e.object(i.market),typeof r!="string"?r:e.pure(r)],typeArguments:[s]})},takeCollateral:(n,r,o,s)=>{let a=t.utils.parseCoinType(s);return e.moveCall({target:`${i.protocolPkg}::withdraw_collateral::withdraw_collateral`,arguments:[e.object(i.version),e.object(n),e.object(r),e.object(i.market),e.object(i.coinDecimalsRegistry),e.pure(o),e.object(i.xOracle),e.object(an.SUI_CLOCK_OBJECT_ID)],typeArguments:[a]})},deposit:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::mint::mint`,arguments:[e.object(i.version),e.object(i.market),typeof n!="string"?n:e.pure(n),e.object(an.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},depositEntry:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::mint::mint_entry`,arguments:[e.object(i.version),e.object(i.market),typeof n!="string"?n:e.pure(n),e.object(an.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},withdraw:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::redeem::redeem`,arguments:[e.object(i.version),e.object(i.market),typeof n!="string"?n:e.pure(n),e.object(an.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},withdrawEntry:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::redeem::redeem_entry`,arguments:[e.object(i.version),e.object(i.market),typeof n!="string"?n:e.pure(n),e.object(an.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},borrow:(n,r,o,s)=>{let a=t.utils.parseCoinType(s);return e.moveCall({target:`${i.protocolPkg}::borrow::borrow`,arguments:[e.object(i.version),e.object(n),e.object(r),e.object(i.market),e.object(i.coinDecimalsRegistry),e.pure(o),e.object(i.xOracle),e.object(an.SUI_CLOCK_OBJECT_ID)],typeArguments:[a]})},borrowEntry:(n,r,o,s)=>{let a=t.utils.parseCoinType(s);return e.moveCall({target:`${i.protocolPkg}::borrow::borrow_entry`,arguments:[e.object(i.version),e.object(n),e.object(r),e.object(i.market),e.object(i.coinDecimalsRegistry),e.pure(o),e.object(i.xOracle),e.object(an.SUI_CLOCK_OBJECT_ID)],typeArguments:[a]})},repay:(n,r,o)=>{let s=t.utils.parseCoinType(o);return e.moveCall({target:`${i.protocolPkg}::repay::repay`,arguments:[e.object(i.version),e.object(n),e.object(i.market),typeof r!="string"?r:e.pure(r),e.object(an.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},borrowFlashLoan:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::flash_loan::borrow_flash_loan`,arguments:[e.object(i.version),e.object(i.market),e.pure(n)],typeArguments:[o]})},repayFlashLoan:(n,r,o)=>{let s=t.utils.parseCoinType(o);return e.moveCall({target:`${i.protocolPkg}::flash_loan::repay_flash_loan`,arguments:[e.object(i.version),e.object(i.market),e.pure(n),e.object(r)],typeArguments:[s]})}}},Gi=({builder:t,txBlock:e})=>{let i=OT({builder:t,txBlock:e});return{normalMethod:i,addCollateralQuick:async(n,r,o)=>{let s=Ci(e),{obligationId:a}=await Ra(e,t,o);if(r==="sui"){let[l]=e.splitCoins(e.gas,[n]);i.addCollateral(a,l,r)}else{let{leftCoin:l,takeCoin:u}=await t.selectCoin(e,r,n,s);i.addCollateral(a,u,r),e.transferObjects([l],s)}},takeCollateralQuick:async(n,r,o,s)=>{let a=await Ra(e,t,o,s),l=await t.query.getObligationCoinNames(a.obligationId);return await Su(t,e,l),i.takeCollateral(a.obligationId,a.obligationKey,n,r)},depositQuick:async(n,r,o)=>{if(r==="sui"){let[l]=e.splitCoins(e.gas,[n]);return i.deposit(l,r)}let{leftCoin:s,takeCoin:a}=await t.selectCoin(e,r,n,o);return e.transferObjects([s],o),i.deposit(a,r)},withdrawQuick:async(n,r)=>{let o=Ci(e),s=t.utils.parseMarketCoinName(r),{leftCoin:a,takeCoin:l}=await t.selectMarketCoin(e,s,n,o);return e.transferObjects([a],o),i.withdraw(l,r)},borrowQuick:async(n,r,o,s)=>{let a=await Ra(e,t,o,s),l=[...await t.query.getObligationCoinNames(a.obligationId),r];return await Su(t,e,l),i.borrow(a.obligationId,a.obligationKey,n,r)},repayQuick:async(n,r,o,s)=>{let a=await Ra(e,t,o);if(r==="sui"){let[h]=e.splitCoins(e.gas,[n]);return i.repay(a.obligationId,h,r)}let{leftCoin:l,takeCoin:u}=await t.selectCoin(e,r,n,s);return e.transferObjects([l],s),i.repay(a.obligationId,u,r)},updateAssetPricesQuick:async n=>Su(t,e,n)}},Om=async(...t)=>{let[e,i,n,r]=t;if(t.length===4&&r)return[r];let o=Ci(i),s=await zu(e.query,o);if(s[n].length===0)throw new Error(`No stake account id found for sender ${o}`);return s[n].map(a=>a.id)},PT=async(...t)=>{let[e,i,n,r]=t,o=Ci(i),s=await zu(e.query,o);if(s[n].length===0)throw new Error(`No stake account found for sender ${o}`);return r?s[n].filter(a=>a.id===r):s[n]},DT=({builder:t,txBlock:e})=>{let i={spoolPkg:t.address.get("spool.id")};return{createStakeAccount:n=>{let r=t.utils.parseMarketCoinType(n),o=t.address.get(`spool.pools.${n}.id`);return e.moveCall({target:`${i.spoolPkg}::user::new_spool_account`,arguments:[e.object(o),e.object(ns.SUI_CLOCK_OBJECT_ID)],typeArguments:[r]})},stake:(n,r,o)=>{let s=t.utils.parseMarketCoinType(o),a=t.address.get(`spool.pools.${o}.id`);e.moveCall({target:`${i.spoolPkg}::user::stake`,arguments:[e.object(a),e.object(n),typeof r=="string"?e.pure(r):r,e.object(ns.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},unstake:(n,r,o)=>{let s=t.utils.parseMarketCoinType(o),a=t.address.get(`spool.pools.${o}.id`);return e.moveCall({target:`${i.spoolPkg}::user::unstake`,arguments:[e.object(a),e.object(n),e.pure(r),e.object(ns.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},claim:(n,r)=>{let o=t.address.get(`spool.pools.${r}.id`),s=t.address.get(`spool.pools.${r}.rewardPoolId`),a=t.utils.parseMarketCoinType(r),l=O0[r],u=t.utils.parseCoinType(l);return e.moveCall({target:`${i.spoolPkg}::user::redeem_rewards`,arguments:[e.object(o),e.object(s),e.object(n),e.object(ns.SUI_CLOCK_OBJECT_ID)],typeArguments:[a,u]})}}},Xr=({builder:t,txBlock:e})=>{let i=DT({builder:t,txBlock:e});return{normalMethod:i,stakeQuick:async(n,r,o)=>{let s=Ci(e),a=await Om(t,e,r,o),l=t.utils.parseMarketCoinType(r);if(typeof n=="number"){let u=await t.utils.selectCoinIds(n,l,s),[h,y]=t.utils.takeAmountFromCoins(e,u,n);i.stake(a[0],h,r),e.transferObjects([y],s)}else i.stake(a[0],n,r)},unstakeQuick:async(n,r,o)=>{let s=n,a=await PT(t,e,r,o),l=[];for(let u=0;u<a.length;u++){if(a[u].staked===0)continue;let h=Math.min(s,a[u].staked),y=i.unstake(a[u].id,h,r);if(l.push(y),s-=h,s===0)break}return l},claimQuick:async(n,r)=>{let o=await Om(t,e,n,r),s=[];return o.forEach(a=>{let l=i.claim(a,n);s.push(l)}),s}}},ET=({builder:t,txBlock:e})=>{let i={pkgId:t.address.get("vesca.id"),table:t.address.get("vesca.table"),treasury:t.address.get("vesca.treasury"),config:t.address.get("vesca.config")};return{lockSca:(n,r)=>e.moveCall({target:`${i.pkgId}::ve_sca::mint_ve_sca_key`,arguments:[e.object(i.config),e.object(i.table),e.object(i.treasury),typeof n=="string"?e.pure(n):n,e.pure(r),e.object(eo.SUI_CLOCK_OBJECT_ID)]}),extendLockPeriod:(n,r)=>{e.moveCall({target:`${i.pkgId}::ve_sca::extend_lock_period`,arguments:[e.object(i.config),e.object(n),e.object(i.table),e.object(i.treasury),e.pure(r),e.object(eo.SUI_CLOCK_OBJECT_ID)]})},extendLockAmount:(n,r)=>{e.moveCall({target:`${i.pkgId}::ve_sca::lock_more_sca`,arguments:[e.object(i.config),e.object(n),e.object(i.table),e.object(i.treasury),typeof r=="string"?e.pure(r):r,e.object(eo.SUI_CLOCK_OBJECT_ID)]})},renewExpiredVeSca:(n,r,o)=>{e.moveCall({target:`${i.pkgId}::ve_sca::renew_expired_ve_sca`,arguments:[e.object(i.config),e.object(n),e.object(i.table),e.object(i.treasury),typeof r=="string"?e.pure(r):r,e.pure(o),e.object(eo.SUI_CLOCK_OBJECT_ID)]})},redeemSca:n=>e.moveCall({target:`${i.pkgId}::ve_sca::redeem`,arguments:[e.object(i.config),e.object(n),e.object(i.table),e.object(i.treasury),e.object(eo.SUI_CLOCK_OBJECT_ID)]})}},Qo=({builder:t,txBlock:e})=>{let i=ET({builder:t,txBlock:e});return{normalMethod:i,lockScaQuick:async(n,r,o=!0)=>{let s=Ci(e),a=await Qr(t,e),l,u=[];if(n!==void 0&&typeof n=="number"){let T=await t.utils.selectCoinIds(n,io,s),[O,P]=t.utils.takeAmountFromCoins(e,T,n);l=O,u.push(P)}else l=n;let h=t.utils.getUnlockAt(r,a?.unlockAt);o&&iT(n,r,h,a?.unlockAt),console.log(new Date(h*1e3).toLocaleString("en-CA",{hour12:!0}));let y=!a?.unlockAt,v=!y&&a.unlockAt*1e3<=new Date().getTime();if(y||v){if(l)if(y){let T=i.lockSca(l,h);u.push(T)}else{if(a.lockedScaAmount!==0){let T=i.redeemSca(a.keyId);u.push(T)}i.renewExpiredVeSca(a.keyId,l,h)}}else l&&r?(i.extendLockPeriod(a.keyId,h),i.extendLockAmount(a.keyId,l)):r?i.extendLockPeriod(a.keyId,h):l&&i.extendLockAmount(a.keyId,l);u.length>0&&e.transferObjects(u,s)},extendLockPeriodQuick:async(n,r,o=!0)=>{let s=await Qr(t,e,r),a=t.utils.getUnlockAt(n);o&&nT(n,a,s?.unlockAt),s&&i.extendLockPeriod(s.keyId,a)},extendLockAmountQuick:async(n,r,o=!0)=>{let s=Ci(e),a=await Qr(t,e,r);if(o&&rT(n,a?.unlockAt),a){let l=await t.utils.selectCoinIds(n,io,s),[u,h]=t.utils.takeAmountFromCoins(e,l,n);i.extendLockAmount(a.keyId,u),e.transferObjects([h],s)}},renewExpiredVeScaQuick:async(n,r,o,s=!0)=>{let a=Ci(e),l=await Qr(t,e,o),u=t.utils.getUnlockAt(r,l?.unlockAt);if(s&&oT(n,r,l?.unlockAt),l){let h=[];if(l.lockedScaAmount!==0){let O=i.redeemSca(l.keyId);h.push(O)}let y=await t.utils.selectCoinIds(n,io,a),[v,T]=t.utils.takeAmountFromCoins(e,y,n);h.push(T),i.renewExpiredVeSca(l.keyId,v,u),e.transferObjects(h,a)}},redeemScaQuick:async n=>{let r=Ci(e),o=await Qr(t,e,n);if(ls(o?.unlockAt),o){let s=i.redeemSca(o.keyId);e.transferObjects([s],r)}}}},jt=class{params;client;address;builder;query;utils;walletAddress;constructor(t,e){this.params=t,this.client=t.client,this.address=e?.address??new ec({id:t?.addressesId||Ya,network:t?.networkType}),this.query=e?.query??new R0(t,{address:this.address}),this.utils=e?.utils??new Vu(t,{address:this.address,query:this.query}),this.builder=e?.builder??new q0(t,{address:this.address,query:this.query,utils:this.utils}),this.walletAddress=(0,P0.normalizeSuiAddress)(t.walletAddress)}init(t=!1){(t||!this.address.getAddresses())&&this.address.read(),this.builder.init(t,this.address),this.query.init(t,this.address),this.utils.init(t,this.address)}async getObligations(t){let e=t||this.walletAddress;return this.query.getObligations(e)}async getAllStakeAccounts(t){let e=t||this.walletAddress;return this.query.getAllStakeAccounts(e)}async getStakeAccounts(t,e){let i=e||this.walletAddress;return this.query.getStakeAccounts(t,i)}async getStakePool(t){return this.query.getStakePool(t)}async getStakeRewardPool(t){return this.query.getStakeRewardPool(t)}async openObligation(t){let e=new He.TransactionBlock,i=Gi({builder:this.builder,txBlock:e}),n=t||this.walletAddress;return e.setSender(n),i.normalMethod.openObligationEntry(),e}async depositCollateral(t,e,i,n){let r=new He.TransactionBlock,o=n||this.walletAddress;r.setSender(o);let s=Gi({builder:this.builder,txBlock:r}),a=await this.query.getObligations(o),l=i||a?.[0]?.id;if(l)await s.addCollateralQuick(e,t,l);else{let[u,h,y]=s.normalMethod.openObligation();await s.addCollateralQuick(e,t,u),s.normalMethod.returnObligation(u,y),r.transferObjects([h],o)}return r}async withdrawCollateral(t,e,i,n,r){let o=new He.TransactionBlock,s=Gi({builder:this.builder,txBlock:o}),a=r||this.walletAddress;o.setSender(a);let l=await s.takeCollateralQuick(e,t,i,n);return o.transferObjects([l],a),o}async deposit(t,e,i){let n=new He.TransactionBlock,r=Gi({builder:this.builder,txBlock:n}),o=i||this.walletAddress;n.splitCoins(n.gas,[e]),n.setSender(o);let s=await r.depositQuick(e,t,i);return n.transferObjects([s],o),n}async withdraw(t,e,i){let n=new He.TransactionBlock,r=i||this.walletAddress,o=Gi({builder:this.builder,txBlock:n});n.setSender(r);let s=await o.withdrawQuick(e,t);return n.transferObjects([s],r),n}async borrow(t,e,i,n,r){let o=new He.TransactionBlock,s=Gi({builder:this.builder,txBlock:o}),a=zi({builder:this.builder,txBlock:o}),l=r||this.walletAddress;o.setSender(l);let u=Ua.includes(t);u&&await a.unstakeObligationQuick(i,n);let h=await s.borrowQuick(e,t,i,n);return o.transferObjects([h],l),u&&await a.stakeObligationQuick(i,n),o}async borrowWithBoost(t,e,i,n,r,o){let s=new He.TransactionBlock,a=Gi({builder:this.builder,txBlock:s}),l=zi({builder:this.builder,txBlock:s}),u=o||this.walletAddress;s.setSender(u);let h=Ua.includes(t);h&&await l.unstakeObligationQuick(i,n);let y=await a.borrowQuick(e,t,i,n);return s.transferObjects([y],u),h&&await l.stakeObligationWithVeScaQuick(i,n,r),s}async repay(t,e,i,n,r){let o=new He.TransactionBlock,s=Gi({builder:this.builder,txBlock:o}),a=zi({builder:this.builder,txBlock:o}),l=r||this.walletAddress;o.setSender(l);let u=Ua.includes(t);return u&&await a.unstakeObligationQuick(i,n),await s.repayQuick(e,t,i),u&&await a.stakeObligationQuick(i,n),o}async createStakeAccount(t,e){let i=new He.TransactionBlock,n=Xr({builder:this.builder,txBlock:i}),r=e||this.walletAddress;i.setSender(r);let o=n.normalMethod.createStakeAccount(t);return i.transferObjects([o],r),i}async supplyAndStake(t,e,i,n){let r=new He.TransactionBlock,o=Gi({builder:this.builder,txBlock:r}),s=Xr({builder:this.builder,txBlock:r}),a=n||this.walletAddress;r.splitCoins(r.gas,[e]),r.setSender(a);let l=await o.depositQuick(e,t,n),u=this.utils.parseMarketCoinName(t);if(!Ru.find(v=>v===u))return r;let h=await this.query.getStakeAccounts(u,a),y=i||(h.length>0?h[0].id:void 0);if(y)await s.stakeQuick(l,u,y);else{let v=s.normalMethod.createStakeAccount(u);await s.stakeQuick(l,u,v),r.transferObjects([v],a)}return r}async unstakeAndWithdraw(t,e,i){let n=new He.TransactionBlock,r=Gi({builder:this.builder,txBlock:n}),o=Xr({builder:this.builder,txBlock:n}),s=this.walletAddress,a=[];n.setSender(s);let l=this.utils.parseMarketCoinName(t);for(let u=0;u<i.length;u++){let h=i[u],[y]=await o.unstakeQuick(h.coin,l,h.id);if(y){let v=r.normalMethod.withdraw(y,t);a.push(v)}}if(e>0){let u=await r.withdrawQuick(e,t);a.push(u)}return n.transferObjects(a,s),n}async stake(t,e,i,n){let r=new He.TransactionBlock,o=Xr({builder:this.builder,txBlock:r}),s=n||this.walletAddress;r.setSender(s);let a=await this.query.getStakeAccounts(t,s),l=i||(a.length>0?a[0].id:void 0);if(l)await o.stakeQuick(e,t,l);else{let u=o.normalMethod.createStakeAccount(t);await o.stakeQuick(e,t,u),r.transferObjects([u],s)}return r}async unstake(t,e,i,n){let r=new He.TransactionBlock,o=Xr({builder:this.builder,txBlock:r}),s=n||this.walletAddress;r.setSender(s);let a=await o.unstakeQuick(e,t,i);return r.transferObjects(a,s),r}async claim(t,e,i,n){let r=new He.TransactionBlock,o=Xr({builder:this.builder,txBlock:r}),s=zi({builder:this.builder,txBlock:r}),a=n||this.walletAddress;r.setSender(a);let l={sui:[],sca:[]};for(let u=0;u<t.length;u++){let{stakeMarketCoinName:h,stakeAccountId:y}=t[u],v=o.normalMethod.claim(y,h);l.sui.push(v)}for(let u=0;u<e.length;u++){let{obligationId:h,obligationKey:y,rewardCoinName:v}=e[u],T=s.normalMethod.claimBorrowIncentive(h,y,v);l[v].push(T)}for(let u=0;u<i.length;u++){let{obligationId:h,obligationKey:y,rewardCoinName:v}=i[u],T=s.normalMethod.oldClaimBorrowIncentive(h,y,v);l[v].push(T)}return l.sui.length>0&&(l.sui.length>1&&r.mergeCoins(l.sui[0],l.sui.slice(1)),r.transferObjects([l.sui[0]],r.pure(a))),l.sca.length>0&&(l.sca.length>1&&r.mergeCoins(l.sca[0],l.sca.slice(1)),r.transferObjects([l.sca[0]],r.pure(a))),r}async stakeObligation(t,e,i){let n=this.builder.createTxBlock(),r=zi({builder:this.builder,txBlock:n}),o=i||this.walletAddress;return n.setSender(o),await r.stakeObligationQuick(t,e),n}async unstakeObligation(t,e,i){let n=this.builder.createTxBlock(),r=zi({builder:this.builder,txBlock:n}),o=i||this.walletAddress;return n.setSender(o),await r.unstakeObligationQuick(t,e),n}async stakeSca(t,e=!1,i=!1,n,r,o,s,a){let l=new He.TransactionBlock,u=Qo({builder:this.builder,txBlock:l}),h=zi({builder:this.builder,txBlock:l}),y=a||this.walletAddress;l.setSender(y);let v=await this.builder.utils.selectCoinIds(t,io,y),[T,O]=this.builder.utils.takeAmountFromCoins(l,v,t),P;return s?u.normalMethod.extendLockAmount(s,T):P=u.normalMethod.lockSca(T,o),n&&r&&(e&&(i?h.normalMethod.oldUnstakeObligation(n,r):h.normalMethod.unstakeObligation(n,r)),h.normalMethod.stakeObligationWithVesca(n,r,s||P)),s||l.transferObjects([P,O],y),l}async stakeMoreSca(t,e,i){let n=new He.TransactionBlock,r=i||this.walletAddress;return n.setSender(r),n}async extendStakeScaLockPeriod(t,e,i,n,r=!1,o=!1,s){let a=new He.TransactionBlock,l=Qo({builder:this.builder,txBlock:a}),u=zi({builder:this.builder,txBlock:a}),h=s||this.walletAddress;return a.setSender(h),l.normalMethod.extendLockPeriod(e,t),i&&n&&(r&&(o?u.normalMethod.oldUnstakeObligation(i,n):u.normalMethod.unstakeObligation(i,n)),u.normalMethod.stakeObligationWithVesca(i,n,e)),a}async extendPeriodAndStakeMoreSca(t,e,i,n,r,o=!1,s=!1,a){let l=new He.TransactionBlock,u=Qo({builder:this.builder,txBlock:l}),h=zi({builder:this.builder,txBlock:l}),y=a||this.walletAddress;l.setSender(y);let v=await this.builder.utils.selectCoinIds(t,io,y),[T,O]=this.builder.utils.takeAmountFromCoins(l,v,t);return u.normalMethod.extendLockPeriod(e,i),u.normalMethod.extendLockAmount(e,T),l.transferObjects([O],y),!n||!r||(o&&(s?h.normalMethod.oldUnstakeObligation(n,r):h.normalMethod.unstakeObligation(n,r)),h.normalMethod.stakeObligationWithVesca(n,r,e)),l}async renewExpiredStakeSca(t,e,i,n=!1,r,o,s=!1,a=!1,l){let u=new He.TransactionBlock,h=Qo({builder:this.builder,txBlock:u}),y=zi({builder:this.builder,txBlock:u}),v=l||this.walletAddress;if(u.setSender(v),n){let j=h.normalMethod.redeemSca(i);u.transferObjects([j],v)}let T=await this.builder.utils.selectCoinIds(t,io,v),[O,P]=this.builder.utils.takeAmountFromCoins(u,T,t);return u.transferObjects([P],v),h.normalMethod.renewExpiredVeSca(i,O,e),!r||!o||(s&&(a?y.normalMethod.oldUnstakeObligation(r,o):y.normalMethod.unstakeObligation(r,o)),y.normalMethod.stakeObligationWithVesca(r,o,i)),u}async withdrawUnlockedSca(t,e){let i=new He.TransactionBlock,n=Qo({builder:this.builder,txBlock:i}),r=e||this.walletAddress;return i.setSender(r),await n.redeemScaQuick(t),i}calculateAvailableClaimCoin(t,e){let i=new wi(t.weightedAmount),n=e.currentPointIndex?wi(e.currentPointIndex-t.index).dividedBy(1e9):1;return i.multipliedBy(n).plus(t.points).shiftedBy(-1*e.coinDecimal)}},MT=class $0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.borrow(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new $0(e)}},jT=class U0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await i.init(),i.borrowWithBoost(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,this.data.vescaKey,e.account.address)}static fromData(e){return new U0(e)}},BT=class K0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.claim(this.data.lendingIncentive,this.data.borrowIncentiveV2,this.data.borrowIncentive,e.account.address)}static fromData(e){return new K0(e)}},NT=class V0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.depositCollateral(this.data.collateralCoinName,Number(this.data.amount),this.data.obligationId,e.account.address)}static fromData(e){return new V0(e)}},FT=class W0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.extendPeriodAndStakeMoreSca(this.data.amount,this.data.vescaKey,this.data.lockPeriodInDays,this.data.obligation,this.data.obligationKey,this.data.isObligationLocked,this.data.isOldBorrowIncentive,e.account.address)}static fromData(e){return new W0(e)}},RT=class z0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.extendStakeScaLockPeriod(this.data.lockPeriodInDays,this.data.vescaKey,this.data.obligationId,this.data.obligationKey,this.data.isObligationLocked,this.data.isOldBorrowIncentive,e.account.address)}static fromData(e){return new z0(e)}},qT=class G0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.openObligation()}static fromData(e){return new G0(e)}},LT=class H0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.renewExpiredStakeSca(this.data.amount,this.data.lockPeriodInDays,this.data.vescaKey,this.data.isHaveRedeem,this.data.obligation,this.data.obligationKey,this.data.isObligationLocked,this.data.isOldBorrowIncentive,e.account.address)}static fromData(e){return new H0(e)}},$T=class Z0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.repay(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new Z0(e)}},UT=class X0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.stakeSca(this.data.amount,this.data.isObligationLocked,this.data.isOldBorrowIncentive,this.data.obligationId,this.data.obligationKey,this.data.lockPeriodInDays,this.data.vescaKey,e.account.address)}static fromData(e){return new X0(e)}},KT=class J0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.stake(this.data.marketCoinName,Number(this.data.amount),void 0,e.account.address)}static fromData(e){return new J0(e)}},VT=class Y0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.supplyAndStake(this.data.coinName,Number(this.data.amount),this.data.stakeAccountId,e.account.address)}static fromData(e){return new Y0(e)}},WT=class Q0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.deposit(this.data.coinName,Number(this.data.amount),e.account.address)}static fromData(e){return new Q0(e)}},zT=class e_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.unstake(this.data.marketCoinName,Number(this.data.amount),void 0,e.account.address)}static fromData(e){return new e_(e)}},GT=class t_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.unstakeAndWithdraw(this.data.coinName,Number(this.data.amount),this.data.stakeAccountId)}static fromData(e){return new t_(e)}},HT=class i_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.withdrawCollateral(this.data.collateralCoinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new i_(e)}},ZT=class n_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.withdraw(this.data.coinName,Number(this.data.amount),e.account.address)}static fromData(e){return new n_(e)}},XT=class r_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new jt({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.withdrawUnlockedSca(this.data.vescaKey,e.account.address)}static fromData(e){return new r_(e)}},JT=class{application="scallop";async deserialize(t){let e=new q0({client:t.suiClient,walletAddress:t.account.address,networkType:t.network.split(":")[1]});await e.init();let{transactionBlock:i}=t,n=new eT(i,e).decode();return{txType:x0.TransactionType.Other,txSubType:n.type,intentionData:n.intentionData}}async build(t){let{suiClient:e,account:i,network:n}=t,r;switch(t.txSubType){case"SupplyLending":r=WT.fromData(t.intentionData);break;case"WithdrawLending":r=ZT.fromData(t.intentionData);break;case"Borrow":r=MT.fromData(t.intentionData);break;case"Repay":r=$T.fromData(t.intentionData);break;case"DepositCollateral":r=NT.fromData(t.intentionData);break;case"WithdrawCollateral":r=HT.fromData(t.intentionData);break;case"OpenObligation":r=qT.fromData(t.intentionData);break;case"StakeSpool":r=KT.fromData(t.intentionData);break;case"UnstakeSpool":r=zT.fromData(t.intentionData);break;case"ClaimIncentiveReward":r=BT.fromData(t.intentionData);break;case"BorrowWithBoost":r=jT.fromData(t.intentionData);break;case"StakeSca":r=UT.fromData(t.intentionData);break;case"ExtendStakePeriod":r=RT.fromData(t.intentionData);break;case"ExtendPeriodAndStakeMore":r=FT.fromData(t.intentionData);break;case"RenewExpStakePeriod":r=LT.fromData(t.intentionData);break;case"WithdrawStakedSca":r=XT.fromData(t.intentionData);break;case"SupplyAndStakeLending":r=VT.fromData(t.intentionData);break;case"WithdrawAndUnstakeLending":r=GT.fromData(t.intentionData);break;default:throw new Error("not implemented")}return r.build({suiClient:e,account:i,network:n})}},Gt={PackageId:"0x9632f61a796fc54952d9151d80b319e066cba5498a27b495c99e113db09726b1"},s_=[`${Gt.PackageId}::swap_router::swap_a_b`,`${Gt.PackageId}::swap_router::swap_b_a`],Lu=[`${Gt.PackageId}::swap_router::swap_a_b_b_c`,`${Gt.PackageId}::swap_router::swap_a_b_c_b`,`${Gt.PackageId}::swap_router::swap_b_a_b_c`,`${Gt.PackageId}::swap_router::swap_b_a_c_b`],YT=(t,e)=>{if(t===1)switch(Lu.findIndex(i=>i===e)){case 0:return[!0,!0];case 1:return[!0,!1];case 2:return[!1,!0];case 4:return[!1,!1];default:throw new Error(`not target: ${e}`)}switch(s_.findIndex(i=>i===e)){case 0:return[!0];case 1:return[!1];default:throw new Error(`not target: ${e}`)}},QT=class{constructor(t,e){this.txb=t,this.client=e}get transactions(){return this.txb.blockData.transactions}decode(t){if(this.isSwapTransaction())return this.decodeSwap();if(this.isAddLiquidityTransaction())return this.decodeAddLiquidity();if(this.isIncreaseLiquidityTransaction())return this.decodeIncreaseLiquidity(t);if(this.isRemoveLiquidityTransaction())return this.decodeRemoveLiquidity(t);if(this.isDecreaseLiquidityTransaction())return this.decodeDecreaseLiquidity(t);if(this.isCollectFeeTransaction())return this.decodeCollectFee();if(this.isCollectRewardTransaction())return this.decodeCollectReward();if(this.isBurnTransaction())return this.decodeBurn();throw new Error("Unknown transaction type")}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}getMoveCallsTransaction(t){return t.every(e=>this.transactions.find(i=>i.kind==="MoveCall"&&i.target===e))}getSwapMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&t.includes(e.target))}isSwapTransaction(){return!!this.getSwapMoveCallTransaction([...s_,...Lu])}isAddLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::position_manager::mint`)}isIncreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::position_manager::increase_liquidity`)}isDecreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::position_manager::decrease_liquidity`)}isCollectFeeTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::position_manager::collect`)}isCollectRewardTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::position_manager::collect_reward`)}isBurnTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::position_manager::burn`)}isRemoveLiquidityTransaction(){return!!this.getMoveCallsTransaction([`${Gt.PackageId}::position_manager::decrease_liquidity`,`${Gt.PackageId}::position_manager::burn`])}decodeSwap(){let t=this.transactions.find(y=>y.kind==="MoveCall");console.log(t,"decodeSwap");let e=0;Lu.includes(t.target)&&(e=1);let i=YT(e,t.target),n=i.map((y,v)=>{let T=this.helper.decodeSharedObjectId(v),O=this.helper.decodeInputU128(4+v+e);return{pool:T,a2b:y,nextTickIndex:O}}),r=i[0]?t.typeArguments[0]:t.typeArguments[1],o=e===1?t.typeArguments[4]:i[0]?t.typeArguments[1]:t.typeArguments[0],s=this.helper.decodeInputAddress(6+2*e),a=this.helper.decodeInputU64(7+2*e),l=this.helper.decodeInputBool(5+2*e),u=this.helper.decodeInputU64(2+e),h=this.helper.decodeInputU64(3+e);return{txType:cn.TransactionType.Other,type:"Swap",intentionData:{routes:n,coinTypeA:r,coinTypeB:o,address:s,amountA:l?u:h,amountB:l?h:u,amountSpecifiedIsInput:l,slippage:"0.1",deadline:a}}}decodeAddLiquidity(){console.log(this.helper,"this.helper");let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeInputAddress(12),i=this.helper.decodeInputU64(8),n=this.helper.decodeInputU64(9),r=this.helper.decodeInputU32(4),o=this.helper.decodeInputBool(5),s=this.helper.decodeInputU32(6),a=this.helper.decodeInputBool(7),l=this.helper.decodeInputU64(13);return{txType:cn.TransactionType.Other,type:"AddLiquidity",intentionData:{pool:t,slippage:5,address:e,amountA:i,amountB:n,tickLower:o?-r:r,tickUpper:a?-s:s,deadline:l}}}decodeIncreaseLiquidity(t){let e=this.helper.decodeSharedObjectId(0),i=this.helper.decodeSharedObjectId(4),n=this.helper.decodeInputU64(5),r=this.helper.decodeInputU64(6),o=this.helper.decodeInputU64(9);return{txType:cn.TransactionType.Other,type:"IncreaseLiquidity",intentionData:{pool:e,slippage:5,address:t,amountA:n,amountB:r,nft:i,deadline:o}}}decodeDecreaseLiquidity(t){let e=this.helper.decodeSharedObjectId(0),i=this.helper.decodeSharedObjectId(2),n=this.helper.decodeInputU64(3),r=this.helper.decodeInputU64(4),o=this.helper.decodeInputU64(5),s=this.helper.decodeInputU64(6);return{txType:cn.TransactionType.Other,type:"DecreaseLiquidity",intentionData:{pool:e,decreaseLiquidity:n,nft:i,amountA:r,amountB:o,slippage:3,address:t,deadline:s}}}decodeCollectFee(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2),i=this.helper.decodeInputAddress(5),n=this.helper.decodeInputU64(3),r=this.helper.decodeInputU64(4),o=this.helper.decodeInputU64(6);return{txType:cn.TransactionType.Other,type:"CollectFee",intentionData:{pool:t,address:i,collectAmountA:n,collectAmountB:r,nft:e,deadline:o}}}decodeCollectReward(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2),i=this.helper.decodeInputAddress(6),n=this.collectRewardHelper.map(o=>o.decodeInputU64(5)),r=this.helper.decodeInputU64(7);return{txType:cn.TransactionType.Other,type:"CollectReward",intentionData:{pool:t,address:i,rewardAmounts:n,nft:e,deadline:r}}}decodeBurn(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2);return{txType:cn.TransactionType.Other,type:"Burn",intentionData:{pool:t,nft:e}}}decodeRemoveLiquidity(t){let e=this.helper.decodeSharedObjectId(0),i=this.helper.decodeSharedObjectId(2),n=this.helper.decodeInputU64(3),r=this.helper.decodeInputU64(4),o=this.helper.decodeInputU64(5),s=this.helper.decodeInputU64(6),a=this.collectRewardHelper.map(h=>h.decodeInputU64(5)),l=this.collectFeeHelper.decodeInputU64(3)||0,u=this.collectFeeHelper.decodeInputU64(4)||0;return{txType:cn.TransactionType.Other,type:"RemoveLiquidity",intentionData:{pool:e,decreaseLiquidity:n,nft:i,amountA:r,amountB:o,slippage:3,address:t,collectAmountA:l,collectAmountB:u,rewardAmounts:a,deadline:s}}}get helper(){console.log(this.transactions,"this.transactions");let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target!=="0x2::coin::zero");return console.log(t,this.txb,"this.txb"),new xu(t,this.txb)}get collectRewardHelper(){console.log(this.transactions,"this.transactions");let t=this.transactions.filter(e=>e.kind==="MoveCall"&&e.target===`${Gt.PackageId}::position_manager::collect_reward`);return console.log(t,this.txb,"this.txb"),t.map(e=>new xu(e,this.txb))}get collectFeeHelper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target===`${Gt.PackageId}::position_manager::collect`);return new xu(t,this.txb)}},xu=class Wa{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return Wa.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return Wa.getOwnedObjectId(i)}decodeInputU128(e){let i=this.decodePureArg(e,"u128");return Number(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return Number(i)}decodeInputU32(e){let i=this.decodePureArg(e,"u32");return Number(i)}decodeInputU8(e){let i=this.decodePureArg(e,"u8");return Number(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,Fn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return Wa.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}static getPureInputValue(e,i){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 qu.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Fn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Fn.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Fn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Fn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){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 qu.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,Fn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},eS=class a_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Mt(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,amountA:o,amountB:s,slippage:a,tickLower:l,tickUpper:u,deadline:h,txb:y}=this.data;return i.pool.addLiquidity({pool:n,slippage:a,address:r,amountA:o,amountB:s,tickLower:l,tickUpper:u,deadline:h,txb:y})}static fromData(e){return new a_(e)}},tS=class c_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Mt(e.network.replace("sui:",""),e.suiClient),{pool:n,nft:r,txb:o}=this.data;return i.nft.burn({pool:n,nft:r,txb:o})}static fromData(e){return new c_(e)}},iS=class l_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Mt(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,nft:o,collectAmountA:s,collectAmountB:a,deadline:l,txb:u}=this.data;return i.pool.collectFee({pool:n,address:r,collectAmountA:s,collectAmountB:a,nft:o,deadline:l,txb:u})}static fromData(e){return new l_(e)}},nS=class u_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Mt(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,nft:o,rewardAmounts:s,deadline:a,txb:l}=this.data;return i.pool.collectReward({pool:n,address:r,rewardAmounts:s,nft:o,deadline:a,txb:l})}static fromData(e){return new u_(e)}},rS=class d_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Mt(e.network.replace("sui:",""),e.suiClient),{fee:n,address:r,tickLower:o,tickUpper:s,sqrtPrice:a,slippage:l,coinTypeA:u,coinTypeB:h,amountA:y,amountB:v,deadline:T,txb:O}=this.data;return i.pool.createPool({fee:n,amountA:y,amountB:v,address:r,tickLower:o,tickUpper:s,sqrtPrice:a,slippage:l,coinTypeA:u,coinTypeB:h,deadline:T,txb:O})}static fromData(e){return new d_(e)}},oS=class f_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Mt(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,amountA:o,amountB:s,slippage:a,nft:l,decreaseLiquidity:u,deadline:h,txb:y}=this.data;return i.pool.decreaseLiquidity({pool:n,slippage:a,address:r,amountA:o,amountB:s,nft:l,decreaseLiquidity:u,deadline:h,txb:y})}static fromData(e){return new f_(e)}},sS=class h_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Mt(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,amountA:o,amountB:s,slippage:a,nft:l,deadline:u,txb:h}=this.data;return i.pool.increaseLiquidity({pool:n,slippage:a,address:r,amountA:o,amountB:s,nft:l,deadline:u,txb:h})}static fromData(e){return new h_(e)}},aS=class p_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Mt(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,amountA:o,amountB:s,slippage:a,nft:l,decreaseLiquidity:u,collectAmountA:h,collectAmountB:y,rewardAmounts:v,deadline:T,txb:O}=this.data;return i.pool.removeLiquidity({pool:n,decreaseLiquidity:u,nft:l,amountA:o,amountB:s,slippage:a,address:r,collectAmountA:h,collectAmountB:y,rewardAmounts:v,deadline:T,txb:O})}static fromData(e){return new p_(e)}},cS=class m_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Mt(e.network.replace("sui:",""),e.suiClient),{routes:n,coinTypeA:r,coinTypeB:o,address:s,amountA:a,amountB:l,slippage:u,amountSpecifiedIsInput:h,deadline:y,txb:v}=this.data;return i.trade.swap({routes:n,coinTypeA:r,coinTypeB:o,address:s,amountA:a,amountB:l,amountSpecifiedIsInput:h,slippage:u,deadline:y,txb:v})}static fromData(e){return new m_(e)}},lS=class{application="turbos";async deserialize(t){let{transactionBlock:e,account:i,suiClient:n}=t,r=new QT(e,n).decode(i.address);return{txType:o_.TransactionType.Other,txSubType:r.type,intentionData:r.intentionData}}async build(t){let{suiClient:e,account:i,network:n}=t,r;switch(t.txSubType){case"CreatePool":r=rS.fromData(t.intentionData);break;case"AddLiquidity":r=eS.fromData(t.intentionData);break;case"IncreaseLiquidity":r=sS.fromData(t.intentionData);break;case"DecreaseLiquidity":r=oS.fromData(t.intentionData);break;case"RemoveLiquidity":r=aS.fromData(t.intentionData);break;case"CollectFee":r=iS.fromData(t.intentionData);break;case"CollectReward":r=nS.fromData(t.intentionData);break;case"Burn":r=tS.fromData(t.intentionData);break;case"Swap":r=cS.fromData(t.intentionData);break;default:throw new Error("not implemented")}return r.build({suiClient:e,account:i,network:n})}},tc=new ZC([new jC,new WC,new PC,new HC,new Pk,new lS,new JT]);var Pe=require("@msafe/sui3-utils"),td=require("@mysten/sui.js/transactions"),cc=require("@mysten/sui.js/utils");var g_=require("@mysten/sui.js/transactions"),uS=1000n,dS=120n,fS=100n,hS={multiplier:{numerator:dS,denominator:fS}};var ic=class{constructor(e){this.globals=e}async simulate(e,i=hS){let n=this.copyTransactionBlock(e.txb),{suiClient:r}=this.globals,o=await this.getGasPrice(i);n.setGasPrice(o);let s=await r.devInspectTransactionBlock({transactionBlock:n,sender:e.sender}),{gasUsed:a}=s.effects,l=this.toGasBudget(a,o),u=s.effects.status.status==="success",h;return u||(h=s.effects.status.error),{success:u,gasPrice:o,gasObject:s.effects.gasObject.reference,gasUsed:a,gasBudget:l,simulationError:h}}async getGasPrice(e){if(this.isFixedValue(e))return e.fixedVal;let i=await this.globals.suiClient.getReferenceGasPrice();return this.applyGasOption(i,e)}toGasBudget(e,i){let{computationCost:n,storageCost:r}=e,o=uS*i,s=BigInt(n)+o,a=s+BigInt(r);return a>s?a:s}isFixedValue(e){return"fixedVal"in e}isMultiplier(e){return"multiplier"in e}applyGasOption(e,i){if(this.isFixedValue(i))return i.fixedVal;if(this.isMultiplier(i)){let{multiplier:n}=i;return e*n.numerator/n.denominator}throw new Error("Sanity: Unknown gas price option")}copyTransactionBlock(e){return g_.TransactionBlock.from(e.serialize())}};var Gu=require("buffer");function nc(t){return Gu.Buffer.from(t,"utf-8")}function pS(t){return`0x${Array.prototype.map.call(t,e=>`0${e.toString(16)}`.slice(-2)).join("")}`}function rc(t){return Uint8Array.from(Gu.Buffer.from(t.startsWith("0x")?t.slice(2):t,"hex"))}var sc=require("@mysten/sui.js/verify");var qn=require("@mysten/sui.js/utils");var oc=require("@mysten/sui.js/utils"),fs=class{_client;_coinMetaReg;constructor(e){this._client=e,this._coinMetaReg=new Map}async getCoinMeta(e){let i=(0,oc.normalizeStructTag)(e);if(this._coinMetaReg.has(i))return this._coinMetaReg.get(i);let n=await this.queryCoinMeta(i);return n&&this._coinMetaReg.set(i,n),n}async queryCoinMeta(e){return await this._client.getCoinMetadata({coinType:e})||void 0}},Hu=/^0x0000000000000000000000000000000000000000000000000000000000000002::coin::Coin<(.+)>$/,hs=class t{static isCoin(e){return e?(0,oc.normalizeStructTag)(e).match(Hu)!=null:!1}static getCoinType(e){let[,i]=(0,oc.normalizeStructTag)(e).match(Hu)??[];return i||null}static getBalance(e){if(!t.isCoin(e.type)||e.content?.dataType!=="moveObject")return;let{balance:i}=e.content?.fields;if(i!==void 0)return BigInt(i)}};var dn=class{static normalizeSuiAddress(e){return(0,qn.normalizeSuiAddress)(e)}static normalizeStructTag(e){return(0,qn.normalizeStructTag)(e)}static isSuiAddressEqual(e,i){return(0,qn.normalizeSuiAddress)(e)===(0,qn.normalizeSuiAddress)(i)}static isSuiStructEqual(e,i){return(0,qn.normalizeStructTag)(e)===(0,qn.normalizeStructTag)(i)}static isCoinObjectType(e){return hs.isCoin(e)}};function Zu(t,e){return t.startsWith(e)?t:e+t}var Xu=class t{static async getPublicKeyFromSignature(e){return e.messageType==="TransactionBlock"?(0,sc.verifyTransactionBlock)(e.message,e.signature):(0,sc.verifyPersonalMessage)(e.message,e.signature)}static async getPublicKeyFromPersonalSignature(e){let i=nc(e.messageStr);return this.getPublicKeyFromSignature({message:i,messageType:"Personal",signature:e.signature})}static async verifySignature(e){let i=await t.getPublicKeyFromSignature(e);return dn.isSuiAddressEqual(i.toSuiAddress(),e.targetAddress)}static async verifyPersonalSignature(e){let i=nc(e.messageStr);return this.verifySignature({message:i,messageType:"Personal",signature:e.signature,targetAddress:e.targetAddress})}static async verifyTransactionSignature(e){return this.verifySignature({messageType:"TransactionBlock",message:e.payload,signature:e.signature,targetAddress:e.targetAddress})}};var __=require("@msafe/sui3-utils"),b_=require("@mysten/sui.js/cryptography"),y_=require("@mysten/sui.js/multisig");var mS="0x2::sui::SUI";async function Ju(t,e){let i;try{i=await t.queryTransactionBlocks({filter:{FromAddress:e},options:{showInput:!0},limit:2})}catch{return}if(i.data.length===0||!i.data[0].transaction?.txSignatures)return;let r=i.data[0].transaction?.txSignatures;for(let o=0;o!==r.length;o++){let s=r[o],a=gS(s,e);if(a)return a}}function gS(t,e){let i=(0,b_.parseSerializedSignature)(t);switch(i.signatureScheme){case"MultiSig":{let n=new y_.MultiSigPublicKey(i.multisig.multisig_pk).toSuiAddress();if(dn.isSuiAddressEqual(n,e))throw new Error("multi-sig wallet cannot be owner");return}case"ZkLogin":{if(dn.isSuiAddressEqual(i.zkLogin.address,e))throw new Error("ZkLogin wallet cannot be owner");return}case"ED25519":case"Secp256k1":case"Secp256r1":{let n=__.PublicKeySerde.de({publicKeyEncoded:i.publicKey,schema:i.signatureScheme});return dn.isSuiAddressEqual(n.toSuiAddress(),e)?n:void 0}default:throw new Error("Unknown schema")}}async function _S(t){let e=!0,i,n=[];for(;e;){let r=await t.suiClient.getCoins({owner:t.owner,coinType:t.coinType,cursor:i});n.push(...r.data),e=r.hasNextPage,i=r.nextCursor}return n}var w_=25;async function v_(t){let e=[];for(;await t.hasNext();){let i=await t.next();e.push(i)}return e&&Array.isArray(e[0])?e.flat(1):e}var Yu=class{constructor(e){this.requester=e;this.curPage=void 0,this.init=!0}curPage;init;async hasNext(){if(this.init)return this.curPage||(this.curPage=await this.requester.doNextRequest()),!!this.curPage.data?.length||this.curPage.hasNext;if(!this.curPage)throw new Error("invalid implementation of iterator");return this.curPage.hasNext}async next(){return this.init?(this.init=!1,this.curPage||(this.curPage=await this.requester.doNextRequest()),this.curPage.data):(this.curPage=await this.requester.doNextRequest(),this.curPage.data)}},ac=class{constructor(e){this.requester=e;this.pager=new Yu(e),this.curData=[],this.cursor=0}cursor;pager;curData;async hasNext(){return this.cursor<this.curData.length-1?!0:this.pager.hasNext()}async next(){for(this.cursor+=1;this.cursor>=this.curData.length;)if(await this.pager.hasNext())this.curData=await this.pager.next(),this.cursor=0;else throw new Error("not more data");return this.curData[this.cursor]}};async function k_(t,e,i){let n=new Qu(t,e,i);return await v_(n)}var Qu=class extends ac{constructor(i,n,r){super(new ed(i,n,r));this.provider=i;this.owner=n;this.options=r}},ed=class{constructor(e,i,n){this.provider=e;this.owner=i;this.options=n;this.nextCursor=null,this.filter=n?.filter,this.pageSize=n?.pageSize||w_,this.objectOptions=n?.objectOptions||{showType:!0,showContent:!0}}nextCursor;filter;pageSize;objectOptions;async doNextRequest(){let e=await this.provider.getOwnedObjects({owner:this.owner,options:this.objectOptions,cursor:this.nextCursor,limit:this.pageSize});this.nextCursor=e.nextCursor;let i;if(this.filter){let{filter:n}=this;i=e.data.filter(r=>n?.(r))}else i=e.data;return{data:i.map(n=>n.data).filter(n=>n),hasNext:e.hasNextPage}}};var dr=class t{constructor(e,i){this.globals=e;this.info=i;this.multiSig=new Pe.MultiSigAccount({threshold:i.threshold,ownersWithWeight:i.owners,creationNonce:i.creationNonce}),this.coinHelper=new fs(this.suiClient),this.simulator=new ic(e)}multiSig;coinHelper;simulator;static async New(e,i){let n=await e.backend.getMSafeAccountInfo(i);if(new t(e,n).address!==i)throw new Error("Invalid msafe config with address")}async ownedCoins(){let e=await this.suiClient.getAllBalances({owner:this.address});return Promise.all(e.map(async i=>{let n=await this.coinHelper.getCoinMeta(i.coinType),r=i.lockedBalance.number?BigInt(i.totalBalance)-BigInt(i.lockedBalance.number):BigInt(i.totalBalance);return{type:(0,cc.normalizeStructTag)(i.coinType),balance:BigInt(r),metadata:n}}))}async ownedObjects(e){let i={filter:n=>!n?.data?.type?.startsWith("0x2::coin::Coin"),...e};return k_(this.suiClient,this.address,i)}async pendingTransaction(){let e=await this.backend.getPendingTransactions({msafeAddress:this.address});if(!e.pending)return;let i=e.pending,n=e.reject;return{application:i.application,txType:i.txType,txSubType:i.txSubType,createdAt:i.createdAt,creator:i.creator,digest:i.digest,intention:i.intention,sequenceNumber:i.sequenceNumber,payload:i.payload,votes:i.votes,approvalWeight:this.calculateWeightFromVotes(i.votes),msafeAddress:i.msafeAddress,rejectDigest:n?.digest??"",rejectPayload:n?.payload??"",rejectVotes:n?.votes??[],rejectWeight:this.calculateWeightFromVotes(n?.votes??[])}}async historyTransaction(e){return this.backend.getHistoryTransactions({msafeAddress:this.address,...e})}async futureIntentions(e){return this.backend.getFutureIntentions({msafeAddress:this.address,...e})}async currentSequenceNumber(){return this.backend.getCurrentSequenceNumber(this.address)}async nextSequenceNumber(){return this.backend.getNextSequenceNumber(this.address)}async simulateIntention(e){let i=tc.getAppHelper(e.application);if(!i)throw new Error(`Can't find app helper for application ${e.application}`);let n=await i.build({network:this.globals.config.network,intentionData:e.intention,txType:e.txType,txSubType:e.txSubType,suiClient:this.globals.suiClient,account:{address:this.address}});return this.simulator.simulate({txb:n,sender:this.address})}async proposeIntention(e){let i=Pe.SigningMessageHelper.proposeIntentionMessage({msafeAddress:this.address,intention:e.intention,sn:e.sequenceNumber}),n=await this.wallet.signPersonalMessage({messageStr:i});return this.backend.proposeIntention({...e,msafeAddress:this.address,signature:n.signature})}async proposeIntentionAndBuildVote(e){let i=tc.getAppHelper(e.application);if(!i)throw new Error(`Can't find app helper for application ${e.application}`);let n=await i.build({network:this.globals.config.network,intentionData:e.intention,txType:e.txType,txSubType:e.txSubType,suiClient:this.globals.suiClient,account:{address:this.address}});n.setGasPrice(e.gasPrice),n.setGasBudget(e.gasBudget),n.setSender(this.address);let r=await n.build({client:this.globals.suiClient}),o=await n.getDigest({client:this.globals.suiClient}),s=await this.wallet.signTransactionBlock({transactionBlock:r});return this.backend.proposeIntentionAndBuildVote({...e,payload:(0,cc.toHEX)(r),digest:o,msafeAddress:this.address,signature:s.signature})}async simulateCoinTransferIntention(e){let i=await this.nextSequenceNumber();return this.simulateIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.coin.send,sequenceNumber:i,intention:e})}async proposeCoinTransferIntention(e){let i=await this.nextSequenceNumber();return this.proposeIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.coin.send,sequenceNumber:i,intention:e})}async simulateObjectTransferIntention(e){let i=await this.nextSequenceNumber();return this.simulateIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.object.send,sequenceNumber:i,intention:e})}async proposeObjectTransferIntention(e){let i=await this.nextSequenceNumber();return this.proposeIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.object.send,sequenceNumber:i,intention:e})}async simulatePlainPayloadIntention(e){let i=await this.nextSequenceNumber();return this.simulateIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Other,txSubType:Pe.TransactionSubTypes.others.plain,sequenceNumber:i,intention:e})}async proposePlainPayloadIntention(e){let i=await this.nextSequenceNumber(),n=td.TransactionBlock.from(e.payload);if(!n.blockData.sender||!(0,Pe.isSameAddress)(n.blockData.sender,this.address))throw new Error("Transaction sender is not same as the multisig address");return this.proposeIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Other,txSubType:Pe.TransactionSubTypes.others.plain,sequenceNumber:i,intention:e})}async voteForTransaction(e,i){let n=rc(i),r=await this.wallet.signTransactionBlock({transactionBlock:n});return this.backend.voteForTransaction({msafeAddress:this.address,digest:e,signature:r.signature})}async proposePendingTransaction(e){let i=new td.TransactionBlock,n=await i.build({client:this.suiClient}),r=await i.getDigest({client:this.suiClient}),o=await this.wallet.signTransactionBlock({transactionBlock:n});return this.backend.proposePendingTransaction({msafeAddress:this.address,userAddress:await this.userAddress(),intention:e,digest:r,signature:o.signature})}async simulateRejectTx(){let e=await this.pendingTransaction();if(!e||e.rejectDigest!=="")throw new Error("Already rejected");let i=e.payload,n=(0,Pe.buildRejectTxb)(this.address,i);return this.simulator.simulate({txb:n,sender:this.address})}async rejectCurrentTx(e){let i=await this.pendingTransaction();if(!i||i.rejectDigest!=="")throw new Error("Already rejected");let n=i.payload,r=(0,Pe.buildRejectTxb)(this.address,n),o=await r.getDigest({client:this.suiClient}),s=await r.build({client:this.suiClient}),a=await this.wallet.signTransactionBlock({transactionBlock:s});return this.backend.rejectCurrentTx({msafeAddress:this.address,digest:o,signature:a.signature,...e})}async simulateBuildTransaction(){let e=await this.backend.getNextIntention({msafeAddress:this.address}),i=tc.getAppHelper(e.application);if(!i)throw new Error(`Can't find app helper for application ${e.application}`);console.log("\u{1F680} ~ MSafeAccount ~ simulateBuildTransaction ~ intention:",e);let n=await i.build({network:this.globals.config.network,intentionData:e.intention,txType:e.txType,txSubType:e.txSubType,suiClient:this.globals.suiClient,account:{address:this.address}});return this.simulator.simulate({txb:n,sender:this.address})}async buildNextIntentionAndAddToPending(e){return this.backend.buildNextIntentionAndAddToPending({msafeAddress:this.address,forceBuild:e.forceBuild,gasPrice:e.gasPrice,gasBudget:e.gasBudget})}async skipNextFailedIntention(){return this.backend.skipNextFailedIntention({msafeAddress:this.address})}async executePendingTx(e,i=!1){let n=i?e.rejectVotes:e.votes,r=i?e.rejectPayload:e.payload;if(this.calculateWeightFromVotes(n)<this.info.threshold)throw new Error("Not enough signature");let o=[],s=new Map(n.map(l=>[l.userAddress,l.signature]));for(let l=0;l<this.info.owners.length;l++){let u=this.info.owners[l],h=s.get(u.address);h&&o.push(h)}let a=this.multiSig.combinePartialSignatures(o);return this.suiClient.executeTransactionBlock({transactionBlock:rc(r),signature:a,options:{showEffects:!0,showEvents:!0}})}async dashboard(){return this.backend.getDashboard({msafeAddress:this.address})}calculateWeightFromVotes(e){return this.calculateWeight(e.map(i=>i.userAddress))}calculateWeight(e){let i=0;for(let n=0;n<e.length;n++){let r=this.info.owners.find(o=>(0,Pe.isSameAddress)(o.address,e[n]));r&&(i+=r.weight)}return i}get address(){return this.multiSig.address}get backend(){return this.globals.backend}get wallet(){return this.globals.wallet}async userAddress(){return this.globals.wallet.address()}get suiClient(){return this.globals.suiClient}};var C_=require("@msafe/sui3-utils"),T_=require("@mysten/sui.js/utils");var lc=class{constructor(e){this.globals=e;this.knownPublicKeys=new Map}knownPublicKeys;async getPublicKey(e){let i=this.knownPublicKeys.get(e);if(i)return i;let n=await this._getPublicKey(e);return n&&this.knownPublicKeys.set(e,n),n}async getPublicKeyBatch(e){let i=new Array(e.length).fill(void 0);for(let o=0;o<e.length;o++){let s=e[o];i[o]=this.knownPublicKeys.get(s)}let n=i.map((o,s)=>o===void 0?s:-1).filter(o=>o!==-1);if(n.length===0)return i;let r=await this.globals.backend.getPublicKeyBatch(n.map(o=>e[o]));for(let o=0;o<n.length;o++){let s=n[o];i[s]=r[o]}for(let o=0;o<i.length;o++)i[o]===void 0&&(i[o]=await this.getPublicKeyFromChain(e[o]));for(let o=0;o<e.length;o++)i[o]&&this.knownPublicKeys.set(e[o],i[o]);return i}addPublicKey(e,i){if(!(0,C_.isSameAddress)(e,i.toSuiAddress()))throw new Error("Invalid public key");this.knownPublicKeys.set((0,T_.normalizeSuiAddress)(e),i)}async _getPublicKey(e){let i=await this.getPublicKeyFromBackend(e);if(i)return i;let n=await this.getPublicKeyFromChain(e);if(n)return n}async getPublicKeyFromBackend(e){try{return await this.globals.backend.getPublicKey(e)}catch{return}}async getPublicKeyFromChain(e){return Ju(this.globals.suiClient,e)}};var uc=class{constructor(e){this.globals=e}async create(e){return this.globals.backend.submitReport(e)}};var D_=require("@mysten/sui.js/client");var ms=require("@msafe/sui3-utils"),ps=we(require("axios"),1);var dc=class t{constructor(e){this.apiURL=e}_token;async authSign(e){let i=await this.post("/auth/login",e);return this._token=i.data.accessToken,this._token}async verifyToken(e){try{return(await this.get("/auth",{headers:this.headers(e)})).status===200}catch{return!1}}setJWTToken(e){this._token=e}async getPublicKey(e){return(await this.getPublicKeyBatch([e]))[0]}async getPublicKeyBatch(e){let i={userAddressList:e};return(await this.get("/user/public-keys",{params:i,headers:this.headers()})).data?.map(r=>r?ms.PublicKeySerde.de(r):void 0)}async getMSafeAccountInfo(e){let i={msafeAddress:e},n=await this.get("/msafe",{params:i,headers:this.headers()});return t.toMSafeConfig(n.data)}async getUserInfo(){return(await this.get("/user",{headers:this.headers()})).data}async getOwnedMSafeByStatus(e){let i={status:e.status??ms.UserMSafeStatus.active,...e.pagination?{page:e.pagination.page.toString(),limit:e.pagination.limit.toString()}:{}},n=await this.get("/msafe/owned",{params:i,headers:this.headers()});return{data:n.data.data.map(t.toMSafeConfig),meta:n.data.meta}}async updateMSafeStatus(e){let i=e;await this.post("/msafe/status",i,{headers:this.headers()})}async getPendingTransactions(e){return(await this.get("/transaction/pending",{params:e,headers:this.headers()})).data}async getHistoryTransactions(e){return(await this.get("/transaction/history",{params:e,headers:this.headers()})).data}async getFutureIntentions(e){return(await this.get("/transaction/intention",{params:e,headers:this.headers()})).data}async getNextIntention(e){return(await this.get("/transaction/intention/next",{params:e,headers:this.headers()})).data}async getCurrentSequenceNumber(e){return(await this.get("/transaction/sn/current",{params:{msafeAddress:e},headers:this.headers()})).data}async getNextSequenceNumber(e){return(await this.get("/transaction/sn/next",{params:{msafeAddress:e},headers:this.headers()})).data}async createMSafeAccount(e){await this.post("/msafe/create",e,{headers:this.headers()})}async proposeIntention(e){await this.post("/transaction/intention",e,{headers:this.headers()})}async proposePendingTransaction(e){}async rejectCurrentTx(e){await this.post("/transaction/pending/reject",{...e,gasPrice:e.gasPrice.toString(),gasBudget:e.gasBudget.toString()},{headers:this.headers()})}async voteForTransaction(e){await this.post("/transaction/pending/vote",e,{headers:this.headers()})}async buildNextIntentionAndAddToPending(e){await this.post("/transaction/pending/build",{...e,gasPrice:e.gasPrice.toString(),gasBudget:e.gasBudget.toString()},{headers:this.headers()})}async proposeIntentionAndBuildVote(e){await this.post("/transaction/intention/build",{...e,gasPrice:e.gasPrice.toString(),gasBudget:e.gasBudget.toString()},{headers:this.headers()})}async skipNextFailedIntention(e){await this.post("/transaction/pending/skip",e,{headers:this.headers()})}async getAddressBookEntries(e){return(await this.get("/address-book",{headers:this.headers(),params:e})).data}async updateAddressBook(e){await this.post("/address-book",e,{headers:this.headers()})}async getAddressBookMode(){return(await this.get("/address-book/mode",{headers:this.headers()})).data}async setAddressBookMode(e){await this.post("/address-book/mode",{mode:e.mode},{headers:this.headers()})}async submitReport(e){await this.post("/report",e)}async getDashboard(e){return(await this.get("/dashboard",{params:e,headers:this.headers()})).data}headers(e){return{Authorization:`Bearer ${e||this._token}`}}static toMSafeConfig(e){return{...e,owners:e.owners.map(i=>({address:i.address,weight:i.weight,publicKey:ms.PublicKeySerde.de({publicKeyEncoded:i.publicKeyEncoded,schema:i.schema})}))}}async get(e,i){let n=this.getFullUrl(e);try{return await ps.default.get(n,i)}catch(r){throw fc.fromError(r)??r}}async post(e,i,n){let r=this.getFullUrl(e);try{return await ps.default.post(r,i,{...n,transformRequest:this.getTransformRequest()})}catch(o){throw fc.fromError(o)??o}}getFullUrl(e){return e.startsWith(this.apiURL)?e:`${this.apiURL}${Zu(e,"/")}`}getTransformRequest(){let e=[],{transformRequest:i}=ps.default.defaults;return i?i instanceof Array?e=i:e=[i]:e=[],[n=>JSON.parse(JSON.stringify(n,(r,o)=>typeof o=="bigint"?`${o.toString()}n`:o)),...e]}},fc=class t extends Error{constructor(i){super();this.e=i;Error.captureStackTrace(this,this.constructor)}name;static fromError(i){if(ps.default.isAxiosError(i)&&i?.response?.data&&"message"in i.response.data)return new t(i)}get status(){return this.e.response?.status??void 0}get message(){return`${this.respMessage()??"Unknown resp"}`}respMessage(){if(this.e.response?.data)return(this.e.response?.data).message??void 0}get endpoint(){return this.e.config?.url??""}toString(){return this.message}};var S_=(o=>(o.local="local",o.unit="unit",o.dev="dev",o.prev="prev",o.prod="prod",o))(S_||{}),hc="https://fullnode.testnet.sui.io",id="https://fullnode.mainnet.sui.io",nd="http://127.0.0.1:3000",rd="http://127.0.0.1:3001",x_="https://sui-dev.m-safe.link",A_="http://13.56.226.148:81",I_="https://sui-preview.m-safe.link",O_="https://sui.m-safe.link",P_=new Map([["unit",{suiClient:{url:hc},backend:{url:nd},syncingURL:rd,network:"sui:testnet"}],["local",{suiClient:{url:hc},backend:{url:nd},syncingURL:rd,network:"sui:testnet"}],["dev",{suiClient:{url:hc},backend:{url:x_},syncingURL:A_,network:"sui:testnet"}],["prev",{suiClient:{url:id},backend:{url:I_},syncingURL:"",network:"sui:mainnet"}],["prod",{suiClient:{url:id},backend:{url:O_},syncingURL:"",network:"sui:mainnet"}]]);function od(t,e){let i=P_.get(t);if(!i)throw new Error("Unknown environment");return e?.suiClient?.url&&(i.suiClient.url=e.suiClient.url),e?.backend?.url&&(i.backend.url=e.backend.url),i}var gs=class t{backend;suiClient;config;_wallet;constructor(e){this.backend=e.backend,this.suiClient=e.suiClient,this.config=e.config}static async New(e,i){let n=od(e,i),r=new D_.SuiClient(n.suiClient),o=new dc(n.backend.url);return new t({backend:o,suiClient:r,config:n})}connectWallet(e){this._wallet=e}get wallet(){if(!this._wallet)throw new Error("wallet not connected");return this._wallet}set wallet(e){this._wallet=e}};var pc=class t{constructor(e){this.globals=e}_creationHelper;_publicKeyHelper;static async New(e,i){let n=await gs.New(e,i);return new t(n)}async connectWallet(e){if(e.jwtToken&&await this.backend.verifyToken(e.jwtToken))return this.globals.wallet=e.wallet,this.backend.setJWTToken(e.jwtToken),e.jwtToken;let i=await this.authSign(e.wallet);return this.globals.wallet=e.wallet,this.backend.setJWTToken(i),i}async authSign(e){let i=mc.SigningMessageHelper.loginMessageWithTimestamp(new Date().toUTCString()),n=await e.signPersonalMessage({messageStr:i});return this.backend.authSign({address:await e.address(),message:i,signature:n.signature,walletType:e.walletType})}async userInfo(){return this.globals.backend.getUserInfo()}async ownedMSafe(e){return this.globals.backend.getOwnedMSafeByStatus({status:mc.UserMSafeStatus.active,pagination:e})}async createAccount(e){return this.creationHelper.submitMSafeCreation(e)}getMSafeAccount(e){return new dr(this.globals,e)}async getMSafeAccountFromAddress(e){let i=await this.backend.getMSafeAccountInfo(e);return new dr(this.globals,i)}get creationHelper(){return this._creationHelper||(this._creationHelper=new hr(this.globals,this.publicKeyHelper)),this._creationHelper}get publicKeyHelper(){return this._publicKeyHelper||(this._publicKeyHelper=new lc(this.globals)),this._publicKeyHelper}get config(){return this.globals.config}get backend(){return this.globals.backend}get wallet(){return this.globals.wallet}get AddressBook(){return new pr(this.globals)}get Invitation(){return new ys(this.globals)}get Report(){return new uc(this.globals)}async walletAddress(){return this.wallet.address()}};
2053
+ `);var Zo=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,$p=new Set,fu=typeof process=="object"&&process?process:{},Up=(t,e,i,n)=>{typeof fu.emitWarning=="function"?fu.emitWarning(t,e,i,n):console.error(`[${i}] ${e}: ${t}`)},Ia=globalThis.AbortController,Lp=globalThis.AbortSignal;if(typeof Ia>"u"){Lp=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(n,r){this._onabort.push(r)}},Ia=class{constructor(){e()}signal=new Lp;abort(n){if(!this.signal.aborted){this.signal.reason=n,this.signal.aborted=!0;for(let r of this.signal._onabort)r(n);this.signal.onabort?.(n)}}};let t=fu.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",e=()=>{t&&(t=!1,Up("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e))}}var b1=t=>!$p.has(t),n4=Symbol("type"),Pn=t=>t&&t===Math.floor(t)&&t>0&&isFinite(t),Kp=t=>Pn(t)?t<=Math.pow(2,8)?Uint8Array:t<=Math.pow(2,16)?Uint16Array:t<=Math.pow(2,32)?Uint32Array:t<=Number.MAX_SAFE_INTEGER?Hr:null:null,Hr=class extends Array{constructor(e){super(e),this.fill(0)}},hu=class t{heap;length;static#c=!1;static create(e){let i=Kp(e);if(!i)return[];t.#c=!0;let n=new t(e,i);return t.#c=!1,n}constructor(e,i){if(!t.#c)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new i(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},Oa=class t{#c;#d;#b;#p;#O;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#m;#r;#i;#e;#l;#f;#a;#o;#g;#s;#k;#C;#_;#y;#S;#u;static unsafeExposeInternals(e){return{starts:e.#C,ttls:e.#_,sizes:e.#k,keyMap:e.#r,keyList:e.#i,valList:e.#e,next:e.#l,prev:e.#f,get head(){return e.#a},get tail(){return e.#o},free:e.#g,isBackgroundFetch:i=>e.#t(i),backgroundFetch:(i,n,r,o)=>e.#M(i,n,r,o),moveToTail:i=>e.#I(i),indexes:i=>e.#w(i),rindexes:i=>e.#v(i),isStale:i=>e.#h(i)}}get max(){return this.#c}get maxSize(){return this.#d}get calculatedSize(){return this.#m}get size(){return this.#n}get fetchMethod(){return this.#O}get dispose(){return this.#b}get disposeAfter(){return this.#p}constructor(e){let{max:i=0,ttl:n,ttlResolution:r=1,ttlAutopurge:o,updateAgeOnGet:s,updateAgeOnHas:a,allowStale:l,dispose:u,disposeAfter:h,noDisposeOnSet:y,noUpdateTTL:v,maxSize:T=0,maxEntrySize:O=0,sizeCalculation:P,fetchMethod:j,noDeleteOnFetchRejection:B,noDeleteOnStaleGet:D,allowStaleOnFetchRejection:q,allowStaleOnFetchAbort:K,ignoreFetchAbort:Z}=e;if(i!==0&&!Pn(i))throw new TypeError("max option must be a nonnegative integer");let G=i?Kp(i):Array;if(!G)throw new Error("invalid max value: "+i);if(this.#c=i,this.#d=T,this.maxEntrySize=O||this.#d,this.sizeCalculation=P,this.sizeCalculation){if(!this.#d&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(j!==void 0&&typeof j!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#O=j,this.#S=!!j,this.#r=new Map,this.#i=new Array(i).fill(void 0),this.#e=new Array(i).fill(void 0),this.#l=new G(i),this.#f=new G(i),this.#a=0,this.#o=0,this.#g=hu.create(i),this.#n=0,this.#m=0,typeof u=="function"&&(this.#b=u),typeof h=="function"?(this.#p=h,this.#s=[]):(this.#p=void 0,this.#s=void 0),this.#y=!!this.#b,this.#u=!!this.#p,this.noDisposeOnSet=!!y,this.noUpdateTTL=!!v,this.noDeleteOnFetchRejection=!!B,this.allowStaleOnFetchRejection=!!q,this.allowStaleOnFetchAbort=!!K,this.ignoreFetchAbort=!!Z,this.maxEntrySize!==0){if(this.#d!==0&&!Pn(this.#d))throw new TypeError("maxSize must be a positive integer if specified");if(!Pn(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#R()}if(this.allowStale=!!l,this.noDeleteOnStaleGet=!!D,this.updateAgeOnGet=!!s,this.updateAgeOnHas=!!a,this.ttlResolution=Pn(r)||r===0?r:1,this.ttlAutopurge=!!o,this.ttl=n||0,this.ttl){if(!Pn(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#E()}if(this.#c===0&&this.ttl===0&&this.#d===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#c&&!this.#d){let J="LRU_CACHE_UNBOUNDED";b1(J)&&($p.add(J),Up("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",J,t))}}getRemainingTTL(e){return this.#r.has(e)?1/0:0}#E(){let e=new Hr(this.#c),i=new Hr(this.#c);this.#_=e,this.#C=i,this.#j=(o,s,a=Zo.now())=>{if(i[o]=s!==0?a:0,e[o]=s,s!==0&&this.ttlAutopurge){let l=setTimeout(()=>{this.#h(o)&&this.delete(this.#i[o])},s+1);l.unref&&l.unref()}},this.#x=o=>{i[o]=e[o]!==0?Zo.now():0},this.#T=(o,s)=>{if(e[s]){let a=e[s],l=i[s];o.ttl=a,o.start=l,o.now=n||r();let u=o.now-l;o.remainingTTL=a-u}};let n=0,r=()=>{let o=Zo.now();if(this.ttlResolution>0){n=o;let s=setTimeout(()=>n=0,this.ttlResolution);s.unref&&s.unref()}return o};this.getRemainingTTL=o=>{let s=this.#r.get(o);if(s===void 0)return 0;let a=e[s],l=i[s];if(a===0||l===0)return 1/0;let u=(n||r())-l;return a-u},this.#h=o=>e[o]!==0&&i[o]!==0&&(n||r())-i[o]>e[o]}#x=()=>{};#T=()=>{};#j=()=>{};#h=()=>!1;#R(){let e=new Hr(this.#c);this.#m=0,this.#k=e,this.#A=i=>{this.#m-=e[i],e[i]=0},this.#B=(i,n,r,o)=>{if(this.#t(n))return 0;if(!Pn(r))if(o){if(typeof o!="function")throw new TypeError("sizeCalculation must be a function");if(r=o(n,i),!Pn(r))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return r},this.#P=(i,n,r)=>{if(e[i]=n,this.#d){let o=this.#d-e[i];for(;this.#m>o;)this.#D(!0)}this.#m+=e[i],r&&(r.entrySize=n,r.totalCalculatedSize=this.#m)}}#A=e=>{};#P=(e,i,n)=>{};#B=(e,i,n,r)=>{if(n||r)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#w({allowStale:e=this.allowStale}={}){if(this.#n)for(let i=this.#o;!(!this.#N(i)||((e||!this.#h(i))&&(yield i),i===this.#a));)i=this.#f[i]}*#v({allowStale:e=this.allowStale}={}){if(this.#n)for(let i=this.#a;!(!this.#N(i)||((e||!this.#h(i))&&(yield i),i===this.#o));)i=this.#l[i]}#N(e){return e!==void 0&&this.#r.get(this.#i[e])===e}*entries(){for(let e of this.#w())this.#e[e]!==void 0&&this.#i[e]!==void 0&&!this.#t(this.#e[e])&&(yield[this.#i[e],this.#e[e]])}*rentries(){for(let e of this.#v())this.#e[e]!==void 0&&this.#i[e]!==void 0&&!this.#t(this.#e[e])&&(yield[this.#i[e],this.#e[e]])}*keys(){for(let e of this.#w()){let i=this.#i[e];i!==void 0&&!this.#t(this.#e[e])&&(yield i)}}*rkeys(){for(let e of this.#v()){let i=this.#i[e];i!==void 0&&!this.#t(this.#e[e])&&(yield i)}}*values(){for(let e of this.#w())this.#e[e]!==void 0&&!this.#t(this.#e[e])&&(yield this.#e[e])}*rvalues(){for(let e of this.#v())this.#e[e]!==void 0&&!this.#t(this.#e[e])&&(yield this.#e[e])}[Symbol.iterator](){return this.entries()}find(e,i={}){for(let n of this.#w()){let r=this.#e[n],o=this.#t(r)?r.__staleWhileFetching:r;if(o!==void 0&&e(o,this.#i[n],this))return this.get(this.#i[n],i)}}forEach(e,i=this){for(let n of this.#w()){let r=this.#e[n],o=this.#t(r)?r.__staleWhileFetching:r;o!==void 0&&e.call(i,o,this.#i[n],this)}}rforEach(e,i=this){for(let n of this.#v()){let r=this.#e[n],o=this.#t(r)?r.__staleWhileFetching:r;o!==void 0&&e.call(i,o,this.#i[n],this)}}purgeStale(){let e=!1;for(let i of this.#v({allowStale:!0}))this.#h(i)&&(this.delete(this.#i[i]),e=!0);return e}dump(){let e=[];for(let i of this.#w({allowStale:!0})){let n=this.#i[i],r=this.#e[i],o=this.#t(r)?r.__staleWhileFetching:r;if(o===void 0||n===void 0)continue;let s={value:o};if(this.#_&&this.#C){s.ttl=this.#_[i];let a=Zo.now()-this.#C[i];s.start=Math.floor(Date.now()-a)}this.#k&&(s.size=this.#k[i]),e.unshift([n,s])}return e}load(e){this.clear();for(let[i,n]of e){if(n.start){let r=Date.now()-n.start;n.start=Zo.now()-r}this.set(i,n.value,n)}}set(e,i,n={}){if(i===void 0)return this.delete(e),this;let{ttl:r=this.ttl,start:o,noDisposeOnSet:s=this.noDisposeOnSet,sizeCalculation:a=this.sizeCalculation,status:l}=n,{noUpdateTTL:u=this.noUpdateTTL}=n,h=this.#B(e,i,n.size||0,a);if(this.maxEntrySize&&h>this.maxEntrySize)return l&&(l.set="miss",l.maxEntrySizeExceeded=!0),this.delete(e),this;let y=this.#n===0?void 0:this.#r.get(e);if(y===void 0)y=this.#n===0?this.#o:this.#g.length!==0?this.#g.pop():this.#n===this.#c?this.#D(!1):this.#n,this.#i[y]=e,this.#e[y]=i,this.#r.set(e,y),this.#l[this.#o]=y,this.#f[y]=this.#o,this.#o=y,this.#n++,this.#P(y,h,l),l&&(l.set="add"),u=!1;else{this.#I(y);let v=this.#e[y];if(i!==v){if(this.#S&&this.#t(v)?v.__abortController.abort(new Error("replaced")):s||(this.#y&&this.#b?.(v,e,"set"),this.#u&&this.#s?.push([v,e,"set"])),this.#A(y),this.#P(y,h,l),this.#e[y]=i,l){l.set="replace";let T=v&&this.#t(v)?v.__staleWhileFetching:v;T!==void 0&&(l.oldValue=T)}}else l&&(l.set="update")}if(r!==0&&!this.#_&&this.#E(),this.#_&&(u||this.#j(y,r,o),l&&this.#T(l,y)),!s&&this.#u&&this.#s){let v=this.#s,T;for(;T=v?.shift();)this.#p?.(...T)}return this}pop(){try{for(;this.#n;){let e=this.#e[this.#a];if(this.#D(!0),this.#t(e)){if(e.__staleWhileFetching)return e.__staleWhileFetching}else if(e!==void 0)return e}}finally{if(this.#u&&this.#s){let e=this.#s,i;for(;i=e?.shift();)this.#p?.(...i)}}}#D(e){let i=this.#a,n=this.#i[i],r=this.#e[i];return this.#S&&this.#t(r)?r.__abortController.abort(new Error("evicted")):(this.#y||this.#u)&&(this.#y&&this.#b?.(r,n,"evict"),this.#u&&this.#s?.push([r,n,"evict"])),this.#A(i),e&&(this.#i[i]=void 0,this.#e[i]=void 0,this.#g.push(i)),this.#n===1?(this.#a=this.#o=0,this.#g.length=0):this.#a=this.#l[i],this.#r.delete(n),this.#n--,i}has(e,i={}){let{updateAgeOnHas:n=this.updateAgeOnHas,status:r}=i,o=this.#r.get(e);if(o!==void 0){let s=this.#e[o];if(this.#t(s)&&s.__staleWhileFetching===void 0)return!1;if(this.#h(o))r&&(r.has="stale",this.#T(r,o));else return n&&this.#x(o),r&&(r.has="hit",this.#T(r,o)),!0}else r&&(r.has="miss");return!1}peek(e,i={}){let{allowStale:n=this.allowStale}=i,r=this.#r.get(e);if(r!==void 0&&(n||!this.#h(r))){let o=this.#e[r];return this.#t(o)?o.__staleWhileFetching:o}}#M(e,i,n,r){let o=i===void 0?void 0:this.#e[i];if(this.#t(o))return o;let s=new Ia,{signal:a}=n;a?.addEventListener("abort",()=>s.abort(a.reason),{signal:s.signal});let l={signal:s.signal,options:n,context:r},u=(P,j=!1)=>{let{aborted:B}=s.signal,D=n.ignoreFetchAbort&&P!==void 0;if(n.status&&(B&&!j?(n.status.fetchAborted=!0,n.status.fetchError=s.signal.reason,D&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),B&&!D&&!j)return y(s.signal.reason);let q=T;return this.#e[i]===T&&(P===void 0?q.__staleWhileFetching?this.#e[i]=q.__staleWhileFetching:this.delete(e):(n.status&&(n.status.fetchUpdated=!0),this.set(e,P,l.options))),P},h=P=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=P),y(P)),y=P=>{let{aborted:j}=s.signal,B=j&&n.allowStaleOnFetchAbort,D=B||n.allowStaleOnFetchRejection,q=D||n.noDeleteOnFetchRejection,K=T;if(this.#e[i]===T&&(!q||K.__staleWhileFetching===void 0?this.delete(e):B||(this.#e[i]=K.__staleWhileFetching)),D)return n.status&&K.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),K.__staleWhileFetching;if(K.__returned===K)throw P},v=(P,j)=>{let B=this.#O?.(e,o,l);B&&B instanceof Promise&&B.then(D=>P(D),j),s.signal.addEventListener("abort",()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(P(),n.allowStaleOnFetchAbort&&(P=D=>u(D,!0)))})};n.status&&(n.status.fetchDispatched=!0);let T=new Promise(v).then(u,h),O=Object.assign(T,{__abortController:s,__staleWhileFetching:o,__returned:void 0});return i===void 0?(this.set(e,O,{...l.options,status:void 0}),i=this.#r.get(e)):this.#e[i]=O,O}#t(e){if(!this.#S)return!1;let i=e;return!!i&&i instanceof Promise&&i.hasOwnProperty("__staleWhileFetching")&&i.__abortController instanceof Ia}async fetch(e,i={}){let{allowStale:n=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,ttl:s=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:l=0,sizeCalculation:u=this.sizeCalculation,noUpdateTTL:h=this.noUpdateTTL,noDeleteOnFetchRejection:y=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:v=this.allowStaleOnFetchRejection,ignoreFetchAbort:T=this.ignoreFetchAbort,allowStaleOnFetchAbort:O=this.allowStaleOnFetchAbort,context:P,forceRefresh:j=!1,status:B,signal:D}=i;if(!this.#S)return B&&(B.fetch="get"),this.get(e,{allowStale:n,updateAgeOnGet:r,noDeleteOnStaleGet:o,status:B});let q={allowStale:n,updateAgeOnGet:r,noDeleteOnStaleGet:o,ttl:s,noDisposeOnSet:a,size:l,sizeCalculation:u,noUpdateTTL:h,noDeleteOnFetchRejection:y,allowStaleOnFetchRejection:v,allowStaleOnFetchAbort:O,ignoreFetchAbort:T,status:B,signal:D},K=this.#r.get(e);if(K===void 0){B&&(B.fetch="miss");let Z=this.#M(e,K,q,P);return Z.__returned=Z}else{let Z=this.#e[K];if(this.#t(Z)){let A=n&&Z.__staleWhileFetching!==void 0;return B&&(B.fetch="inflight",A&&(B.returnedStale=!0)),A?Z.__staleWhileFetching:Z.__returned=Z}let G=this.#h(K);if(!j&&!G)return B&&(B.fetch="hit"),this.#I(K),r&&this.#x(K),B&&this.#T(B,K),Z;let J=this.#M(e,K,q,P),I=J.__staleWhileFetching!==void 0&&n;return B&&(B.fetch=G?"stale":"refresh",I&&G&&(B.returnedStale=!0)),I?J.__staleWhileFetching:J.__returned=J}}get(e,i={}){let{allowStale:n=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,status:s}=i,a=this.#r.get(e);if(a!==void 0){let l=this.#e[a],u=this.#t(l);return s&&this.#T(s,a),this.#h(a)?(s&&(s.get="stale"),u?(s&&n&&l.__staleWhileFetching!==void 0&&(s.returnedStale=!0),n?l.__staleWhileFetching:void 0):(o||this.delete(e),s&&n&&(s.returnedStale=!0),n?l:void 0)):(s&&(s.get="hit"),u?l.__staleWhileFetching:(this.#I(a),r&&this.#x(a),l))}else s&&(s.get="miss")}#F(e,i){this.#f[i]=e,this.#l[e]=i}#I(e){e!==this.#o&&(e===this.#a?this.#a=this.#l[e]:this.#F(this.#f[e],this.#l[e]),this.#F(this.#o,e),this.#o=e)}delete(e){let i=!1;if(this.#n!==0){let n=this.#r.get(e);if(n!==void 0)if(i=!0,this.#n===1)this.clear();else{this.#A(n);let r=this.#e[n];this.#t(r)?r.__abortController.abort(new Error("deleted")):(this.#y||this.#u)&&(this.#y&&this.#b?.(r,e,"delete"),this.#u&&this.#s?.push([r,e,"delete"])),this.#r.delete(e),this.#i[n]=void 0,this.#e[n]=void 0,n===this.#o?this.#o=this.#f[n]:n===this.#a?this.#a=this.#l[n]:(this.#l[this.#f[n]]=this.#l[n],this.#f[this.#l[n]]=this.#f[n]),this.#n--,this.#g.push(n)}}if(this.#u&&this.#s?.length){let n=this.#s,r;for(;r=n?.shift();)this.#p?.(...r)}return i}clear(){for(let e of this.#v({allowStale:!0})){let i=this.#e[e];if(this.#t(i))i.__abortController.abort(new Error("deleted"));else{let n=this.#i[e];this.#y&&this.#b?.(i,n,"delete"),this.#u&&this.#s?.push([i,n,"delete"])}}if(this.#r.clear(),this.#e.fill(void 0),this.#i.fill(void 0),this.#_&&this.#C&&(this.#_.fill(0),this.#C.fill(0)),this.#k&&this.#k.fill(0),this.#a=0,this.#o=0,this.#g.length=0,this.#m=0,this.#n=0,this.#u&&this.#s){let e=this.#s,i;for(;i=e?.shift();)this.#p?.(...i)}}};var le=we(Se(),1);var Ea=we(Vp(),1),or=require("@mysten/sui.js/utils"),sr=require("@mysten/sui.js/transactions");var Xo=we(Se(),1),Yp=require("@mysten/sui.js/transactions"),ti=we(Se(),1);var Dn=we(Se(),1),vi=we(Se(),1);var Qo=we(Se(),1);var Qp=require("@mysten/sui.js/utils"),ja=require("@mysten/sui.js/transactions"),Ba=require("@mysten/sui.js/utils");var yu=we(Se(),1),y1=Object.defineProperty,w1=(t,e,i)=>e in t?y1(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,Vi=(t,e,i)=>(w1(t,typeof e!="symbol"?e+"":e,i),i);var Pa=443636,Da=-443636,gu="79226673515401279992447579055",_u="4295048016",k1=14,C1="59543866431248",T1="184467440737095516",S1="15793534762490258745",x1=class{generateMnemonic(t=24){return Rp(qp,t===12?128:256)}getKeypairFromMnemonics(t,e={}){let i=this.getDerivePath(e);return Hp.Ed25519Keypair.deriveKeypair(t,i)}getDerivePath(t={}){let{accountIndex:e=0,isExternal:i=!1,addressIndex:n=0}=t;return`m/44'/784'/${e}'/${i?1:0}'/${n}'`}},Yo=class{constructor(t){this.sdk=t,Vi(this,"_lru"),Vi(this,"_fetching",{})}async getCacheOrSet(t,e,i=0){var n;let r=this._lru||(this._lru=new Oa({max:100}));if(r.has(t))return r.get(t);let s=await((n=this._fetching)[t]||(n[t]=e()));return delete this._fetching[t],r.set(t,s,{ttl:i}),s}get provider(){return this.sdk.provider}get math(){return this.sdk.math}get account(){return this.sdk.account}get network(){return this.sdk.network}get contract(){return this.sdk.contract}get nft(){return this.sdk.nft}get coin(){return this.sdk.coin}get trade(){return this.sdk.trade}get pool(){return this.sdk.pool}};function A1(t){if("reference"in t)return t.reference;let e=wu(t);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:Xp(t)}function Fa(t){var e,i;return"objectId"in t?t.objectId:(i=(e=A1(t))==null?void 0:e.objectId)!=null?i:Jp(t)}function Wi(t){var e;return"fields"in t?t.fields:(e=Zp(t))==null?void 0:e.fields}function Zp(t){let e="data"in t?wu(t):t;if(!(!e||!I1(e)||e.content.dataType!=="moveObject"))return e.content}function I1(t){return t.content!==void 0}function wu(t){return t.data}function Xp(t){if(t.error&&"object_id"in t.error&&"version"in t.error&&"digest"in t.error){let e=t.error;return{objectId:e.object_id,version:e.version,digest:e.digest}}}function Jp(t){if(t.error&&"object_id"in t.error&&!("version"in t.error)&&!("digest"in t.error))return t.error.object_id}function O1(t){return t.data!==void 0}function P1(t){var e;let i=O1(t)?t.data:t;return!i?.type&&"data"in t?((e=i?.content)==null?void 0:e.dataType)==="package"?"package":Na(t):i?.type}function Na(t){var e;return(e=Zp(t))==null?void 0:e.type}function D1(t){var e;return(e=wu(t))==null?void 0:e.owner}var Jo=async(t,e,i)=>{let r=e.length;if(r>50){let o=[],s=0,a=Math.ceil(r/50);for(s;s<a;s++)o.push(t.multiGetObjects({ids:e.slice(s*50,(s+1)*50),options:i}));return(await Promise.all(o)).flat()}return await t.multiGetObjects({ids:e,options:i})},M1=class extends Yo{async getConfig(){return(await this.fetchJSON())[this.network].contract}getFees(){return this.getCacheOrSet("fees",async()=>{let e=(await this.fetchJSON())[this.network].fee;return(await Jo(this.provider,Object.values(e),{showContent:!0})).map(n=>{let r=Wi(n),o=Fa(n),s=Na(n);return{objectId:o,type:s.split("<")[1].slice(0,-1),fee:r.fee,tickSpacing:r.tick_spacing}})})}fetchJSON(){return this.getCacheOrSet("contract-json",async()=>await(await fetch("https://s3.amazonaws.com/app.turbos.finance/sdk/contract.json?t="+Date.now(),{method:"GET"})).json())}},Wp=new le.default(2).pow(new le.default(128)),E1=class{priceToSqrtPriceX64(t,e,i){return new le.default(new U(t).mul(U.pow(10,i-e)).sqrt().mul(U.pow(2,64)).floor().toFixed(0))}sqrtPriceX64ToPrice(t,e,i){return new U(t.toString()).mul(U.pow(2,-64)).pow(2).mul(U.pow(10,e-i))}priceToTickIndex(t,e,i){return this.sqrtPriceX64ToTickIndex(this.priceToSqrtPriceX64(t,e,i))}sqrtPriceX64ToTickIndex(t){if(t.gt(new le.default(gu))||t.lt(new le.default(_u)))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let e=t.bitLength()-1,i=new le.default(e-64),n=this.signedShiftLeft(i,32,128),r=new le.default("8000000000000000","hex"),o=0,s=new le.default(0),a=e>=64?t.shrn(e-63):t.shln(63-e);for(;r.gt(new le.default(0))&&o<k1;){a=a.mul(a);let T=a.shrn(127);a=a.shrn(63+T.toNumber()),s=s.add(r.mul(T)),r=r.shrn(1),o+=1}let l=s.shrn(32),h=n.add(l).mul(new le.default(C1)),y=this.signedShiftRight(h.sub(new le.default(T1)),64,128).toNumber(),v=this.signedShiftRight(h.add(new le.default(S1)),64,128).toNumber();return y==v?y:this.tickIndexToSqrtPriceX64(v).lte(t)?v:y}tickIndexToSqrtPriceX64(t){return t>0?new le.default(this.tickIndexToSqrtPricePositive(t)):new le.default(this.tickIndexToSqrtPriceNegative(t))}tickIndexToPrice(t,e,i){return this.sqrtPriceX64ToPrice(this.tickIndexToSqrtPriceX64(t),e,i)}toX64_Decimal(t){return t.mul(U.pow(2,64))}fromX64_Decimal(t){return t.mul(U.pow(2,-64))}scaleDown(t,e){return new U(t).div(U.pow(10,e)).toString()}scaleUp(t,e){return new U(t).mul(U.pow(10,e)).toString()}bitsToNumber(t,e=32){return Ea.default.toNumber(Ea.default.asIntN(e,Ea.default.BigInt(t)))}subUnderflowU128(t,e){return t.add(Wp).sub(e).mod(Wp)}tickIndexToSqrtPricePositive(t){let e;return t&1?e=new le.default("79232123823359799118286999567"):e=new le.default("79228162514264337593543950336"),t&2&&(e=this.signedShiftRight(e.mul(new le.default("79236085330515764027303304731")),96,256)),t&4&&(e=this.signedShiftRight(e.mul(new le.default("79244008939048815603706035061")),96,256)),t&8&&(e=this.signedShiftRight(e.mul(new le.default("79259858533276714757314932305")),96,256)),t&16&&(e=this.signedShiftRight(e.mul(new le.default("79291567232598584799939703904")),96,256)),t&32&&(e=this.signedShiftRight(e.mul(new le.default("79355022692464371645785046466")),96,256)),t&64&&(e=this.signedShiftRight(e.mul(new le.default("79482085999252804386437311141")),96,256)),t&128&&(e=this.signedShiftRight(e.mul(new le.default("79736823300114093921829183326")),96,256)),t&256&&(e=this.signedShiftRight(e.mul(new le.default("80248749790819932309965073892")),96,256)),t&512&&(e=this.signedShiftRight(e.mul(new le.default("81282483887344747381513967011")),96,256)),t&1024&&(e=this.signedShiftRight(e.mul(new le.default("83390072131320151908154831281")),96,256)),t&2048&&(e=this.signedShiftRight(e.mul(new le.default("87770609709833776024991924138")),96,256)),t&4096&&(e=this.signedShiftRight(e.mul(new le.default("97234110755111693312479820773")),96,256)),t&8192&&(e=this.signedShiftRight(e.mul(new le.default("119332217159966728226237229890")),96,256)),t&16384&&(e=this.signedShiftRight(e.mul(new le.default("179736315981702064433883588727")),96,256)),t&32768&&(e=this.signedShiftRight(e.mul(new le.default("407748233172238350107850275304")),96,256)),t&65536&&(e=this.signedShiftRight(e.mul(new le.default("2098478828474011932436660412517")),96,256)),t&131072&&(e=this.signedShiftRight(e.mul(new le.default("55581415166113811149459800483533")),96,256)),t&262144&&(e=this.signedShiftRight(e.mul(new le.default("38992368544603139932233054999993551")),96,256)),this.signedShiftRight(e,32,256)}tickIndexToSqrtPriceNegative(t){let e=Math.abs(t),i;return e&1?i=new le.default("18445821805675392311"):i=new le.default("18446744073709551616"),e&2&&(i=this.signedShiftRight(i.mul(new le.default("18444899583751176498")),64,256)),e&4&&(i=this.signedShiftRight(i.mul(new le.default("18443055278223354162")),64,256)),e&8&&(i=this.signedShiftRight(i.mul(new le.default("18439367220385604838")),64,256)),e&16&&(i=this.signedShiftRight(i.mul(new le.default("18431993317065449817")),64,256)),e&32&&(i=this.signedShiftRight(i.mul(new le.default("18417254355718160513")),64,256)),e&64&&(i=this.signedShiftRight(i.mul(new le.default("18387811781193591352")),64,256)),e&128&&(i=this.signedShiftRight(i.mul(new le.default("18329067761203520168")),64,256)),e&256&&(i=this.signedShiftRight(i.mul(new le.default("18212142134806087854")),64,256)),e&512&&(i=this.signedShiftRight(i.mul(new le.default("17980523815641551639")),64,256)),e&1024&&(i=this.signedShiftRight(i.mul(new le.default("17526086738831147013")),64,256)),e&2048&&(i=this.signedShiftRight(i.mul(new le.default("16651378430235024244")),64,256)),e&4096&&(i=this.signedShiftRight(i.mul(new le.default("15030750278693429944")),64,256)),e&8192&&(i=this.signedShiftRight(i.mul(new le.default("12247334978882834399")),64,256)),e&16384&&(i=this.signedShiftRight(i.mul(new le.default("8131365268884726200")),64,256)),e&32768&&(i=this.signedShiftRight(i.mul(new le.default("3584323654723342297")),64,256)),e&65536&&(i=this.signedShiftRight(i.mul(new le.default("696457651847595233")),64,256)),e&131072&&(i=this.signedShiftRight(i.mul(new le.default("26294789957452057")),64,256)),e&262144&&(i=this.signedShiftRight(i.mul(new le.default("37481735321082")),64,256)),i}signedShiftLeft(t,e,i){let n=t.toTwos(i).shln(e);return n.imaskn(i+1),n.fromTwos(i)}signedShiftRight(t,e,i){let n=t.toTwos(i).shrn(e);return n.imaskn(i-e+1),n.fromTwos(i-e)}},bu=(t,e)=>{let i=Fa(t);if(Xp(t))throw new Error(`${e}(${i}) had been deleted`);if(Jp(t))throw new Error(`${e}(${i}) is not found`);return!0},Zr=60*1e3,j1=class extends Yo{async getPools(t=!1){let e=await this.contract.getConfig(),i=[],n;do n=await this.provider.getDynamicFields({parentId:e.PoolTableId,cursor:n?.nextCursor,limit:15}),i.push(...n.data.map(a=>a.objectId));while(n.hasNextPage);if(!i.length)return[];let o=(await Jo(this.provider,i,{showContent:!0})).map(a=>Wi(a).value.fields.pool_id);if(!o.length)return[];let s=await Jo(this.provider,o,{showContent:!0});return t||(s=s.filter(a=>Wi(a).unlocked)),s.map(a=>this.parsePool(a))}async getPool(t){return this.getCacheOrSet(`pool-${t}`,async()=>{let e=await this.provider.getObject({id:t,options:{showContent:!0}});return bu(e,"pool"),this.parsePool(e)},1500)}async createPool(t){let{fee:e,address:i,tickLower:n,tickUpper:r,sqrtPrice:o,slippage:s,coinTypeA:a,coinTypeB:l}=t,u=await this.contract.getConfig(),h=new U(t.amountA),y=new U(t.amountB),[v,T]=await Promise.all([this.coin.selectTradeCoins(i,a,h),this.coin.selectTradeCoins(i,l,y)]),O=t.txb||new sr.TransactionBlock,P=v.length>0?this.coin.convertTradeCoins(O,v,a,h):[this.coin.zero(a,O)],j=T.length>0?this.coin.convertTradeCoins(O,T,l,y):[this.coin.zero(l,O)];return O.moveCall({target:`${u.PackageId}::pool_factory::deploy_pool_and_mint`,typeArguments:[a,l,e.type],arguments:[O.object(u.PoolConfig),O.object(e.objectId),O.pure(o,"u128"),O.object(u.Positions),O.makeMoveVec({objects:P}),O.makeMoveVec({objects:j}),O.pure(Math.abs(n).toFixed(0),"u32"),O.pure(n<0,"bool"),O.pure(Math.abs(r).toFixed(0),"u32"),O.pure(r<0,"bool"),O.pure(h.toFixed(0),"u64"),O.pure(y.toFixed(0),"u64"),O.pure(this.getMinimumAmountBySlippage(h,s),"u64"),O.pure(this.getMinimumAmountBySlippage(y,s),"u64"),O.pure(i,"address"),O.pure(Date.now()+(t.deadline||Zr),"u64"),O.object(or.SUI_CLOCK_OBJECT_ID),O.object(u.Versioned)]}),O}async addLiquidity(t){let{address:e,tickLower:i,tickUpper:n,slippage:r,pool:o}=t,s=await this.contract.getConfig(),a=await this.getPoolTypeArguments(o),[l,u]=a,[h,y]=await Promise.all([this.coin.getMetadata(l),this.coin.getMetadata(u)]);if(!h||!y)throw new Error("Invalid coin type");let v=new U(t.amountA),T=new U(t.amountB),[O,P]=await Promise.all([this.coin.selectTradeCoins(e,l,v),this.coin.selectTradeCoins(e,u,T)]),j=t.txb||new sr.TransactionBlock,B=O.length>0?this.coin.convertTradeCoins(j,O,l,v):[this.coin.zero(l,j)],D=P.length>0?this.coin.convertTradeCoins(j,P,u,T):[this.coin.zero(u,j)];return j.moveCall({target:`${s.PackageId}::position_manager::mint`,typeArguments:a,arguments:[j.object(o),j.object(s.Positions),j.makeMoveVec({objects:B}),j.makeMoveVec({objects:D}),j.pure(Math.abs(i).toFixed(0),"u32"),j.pure(i<0,"bool"),j.pure(Math.abs(n).toFixed(0),"u32"),j.pure(n<0,"bool"),j.pure(v.toFixed(0),"u64"),j.pure(T.toFixed(0),"u64"),j.pure(this.getMinimumAmountBySlippage(v,r),"u64"),j.pure(this.getMinimumAmountBySlippage(T,r),"u64"),j.pure(e,"address"),j.pure(Date.now()+(t.deadline||Zr),"u64"),j.object(or.SUI_CLOCK_OBJECT_ID),j.object(s.Versioned)]}),j}async increaseLiquidity(t){let{pool:e,slippage:i,address:n,nft:r}=t,o=await this.contract.getConfig(),s=new U(t.amountA),a=new U(t.amountB),l=await this.getPoolTypeArguments(e),[u,h]=l,[y,v]=await Promise.all([this.coin.selectTradeCoins(n,u,s),this.coin.selectTradeCoins(n,h,a)]),T=t.txb||new sr.TransactionBlock,O=y.length>0?this.coin.convertTradeCoins(T,y,u,s):[this.coin.zero(u,T)],P=v.length>0?this.coin.convertTradeCoins(T,v,h,a):[this.coin.zero(h,T)];return T.moveCall({target:`${o.PackageId}::position_manager::increase_liquidity`,typeArguments:l,arguments:[T.object(e),T.object(o.Positions),T.makeMoveVec({objects:O}),T.makeMoveVec({objects:P}),T.object(r),T.pure(s.toFixed(0),"u64"),T.pure(a.toFixed(0),"u64"),T.pure(this.getMinimumAmountBySlippage(s,i),"u64"),T.pure(this.getMinimumAmountBySlippage(a,i),"u64"),T.pure(Date.now()+(t.deadline||Zr*3),"u64"),T.object(or.SUI_CLOCK_OBJECT_ID),T.object(o.Versioned)]}),T}async decreaseLiquidity(t){let{slippage:e,nft:i,pool:n,decreaseLiquidity:r}=t,o=new U(t.amountA),s=new U(t.amountB),a=await this.contract.getConfig(),l=await this.getPoolTypeArguments(n),u=t.txb||new sr.TransactionBlock;return u.moveCall({target:`${a.PackageId}::position_manager::decrease_liquidity`,typeArguments:l,arguments:[u.object(n),u.object(a.Positions),u.object(i),u.pure(new Xo.default(r).toString(),"u128"),u.pure(this.getMinimumAmountBySlippage(o,e),"u64"),u.pure(this.getMinimumAmountBySlippage(s,e),"u64"),u.pure(Date.now()+(t.deadline||Zr*3),"u64"),u.object(or.SUI_CLOCK_OBJECT_ID),u.object(a.Versioned)]}),u}async removeLiquidity(t){let e=await this.decreaseLiquidity(t);return e=await this.collectFee({txb:e,...t}),e=await this.collectReward({txb:e,...t}),e=await this.nft.burn({txb:e,nft:t.nft,pool:t.pool}),e}async collectFee(t){let{pool:e,nft:i,address:n,collectAmountA:r,collectAmountB:o}=t,s=t.txb||new sr.TransactionBlock;if(Number(r)===0&&Number(o)===0)return s;let a=await this.contract.getConfig(),l=await this.getPoolTypeArguments(e);return s.moveCall({target:`${a.PackageId}::position_manager::collect`,typeArguments:l,arguments:[s.object(e),s.object(a.Positions),s.object(i),s.pure(r,"u64"),s.pure(o,"u64"),s.pure(n),s.pure(Date.now()+(t.deadline||Zr*3),"u64"),s.object(or.SUI_CLOCK_OBJECT_ID),s.object(a.Versioned)]}),s}async collectReward(t){let{pool:e,nft:i,rewardAmounts:n,address:r}=t,o=t.txb||new sr.TransactionBlock,s=await this.contract.getConfig(),a=await this.getPoolTypeArguments(e);return(await this.getPool(e)).reward_infos.forEach((u,h)=>{o.moveCall({target:`${s.PackageId}::position_manager::collect_reward`,typeArguments:[...a,u.fields.vault_coin_type],arguments:[o.object(e),o.object(s.Positions),o.object(i),o.object(u.fields.vault),o.pure(h,"u64"),o.pure(n[h],"u64"),o.pure(r),o.pure(Date.now()+(t.deadline||Zr*3),"u64"),o.object(or.SUI_CLOCK_OBJECT_ID),o.object(s.Versioned)]})}),o}getTokenAmountsFromLiquidity(t){let e=new U((t.liquidity||new Xo.default(1e8)).toString()),i=new U(t.currentSqrtPrice.toString()),n=new U(t.lowerSqrtPrice.toString()),r=new U(t.upperSqrtPrice.toString()),o,s;t.currentSqrtPrice.lt(t.lowerSqrtPrice)?(o=this.math.toX64_Decimal(e).mul(r.sub(n)).div(n.mul(r)),s=new U(0)):t.currentSqrtPrice.lt(t.upperSqrtPrice)?(o=this.math.toX64_Decimal(e).mul(r.sub(i)).div(i.mul(r)),s=this.math.fromX64_Decimal(e.mul(i.sub(n)))):(o=new U(0),s=this.math.fromX64_Decimal(e.mul(r.sub(n))));let a=t.ceil!==!1?"ceil":"floor";return[new Xo.default(o[a]().toString()),new Xo.default(s[a]().toString())]}async getPoolTypeArguments(t){return this.getCacheOrSet("pool-type-"+t,async()=>(await this.getPool(t)).types)}parsePoolType(t,e){var i;let n=((i=t.replace(">","").split("<")[1])==null?void 0:i.split(/,\s*/))||[];if(e!==void 0&&e!==n.length)throw new Error("Invalid pool type");return n}async getFixedLiquidity(t){var e,i;let{coinTypeA:n,coinTypeB:r,amountA:o,amountB:s}=t,[a,l]=await Promise.all([this.coin.getMetadata(n),this.coin.getMetadata(r)]),u=new U(this.math.scaleDown(o,a.decimals)).mul((e=t.priceA)!=null?e:1),h=new U(this.math.scaleDown(s,l.decimals)).mul((i=t.priceB)!=null?i:1);return{liquidityA:u.toString(),liquidityB:h.toString(),liquidity:u.plus(h).toString()}}parsePool(t){let e=Wi(t),i=Fa(t),n=P1(t),r=this.parsePoolType(n,3);return this.getCacheOrSet("pool-type-"+i,async()=>r),{...e,objectId:i,type:n,types:r}}getMinimumAmountBySlippage(t,e){let i=new U(t),n=new U(1).minus(new U(e).div(100));if(n.lte(0)||n.gt(1))throw new Error("invalid slippage range");return i.mul(n).toFixed(0)}},B1=(t,e)=>{let{pool:i,position:n,tickLowerDetail:r,tickUpperDetail:o}=e,s=new Dn.default(i.fee_growth_global_a),a=new Dn.default(n.fee_growth_inside_a),l=new Dn.default(n.tokens_owed_a),u=new Dn.default(i.fee_growth_global_b),h=new Dn.default(n.fee_growth_inside_b),y=new Dn.default(n.tokens_owed_b),v=new Dn.default(n.liquidity),T,O,P,j,B=t.bitsToNumber(i.tick_current_index.fields.bits),D=t.bitsToNumber(n.tick_lower_index.fields.bits),q=t.bitsToNumber(n.tick_upper_index.fields.bits);B<D?(T=t.subUnderflowU128(s,r.feeGrowthOutsideA),O=t.subUnderflowU128(u,r.feeGrowthOutsideB)):(T=r.feeGrowthOutsideA,O=r.feeGrowthOutsideB),B<q?(P=o.feeGrowthOutsideA,j=o.feeGrowthOutsideB):(P=t.subUnderflowU128(s,o.feeGrowthOutsideA),j=t.subUnderflowU128(u,o.feeGrowthOutsideB));let K=t.subUnderflowU128(t.subUnderflowU128(s,T),P),Z=t.subUnderflowU128(t.subUnderflowU128(u,O),j),G=t.subUnderflowU128(K,a).mul(v).shrn(64),J=t.subUnderflowU128(Z,h).mul(v).shrn(64);return{feeOwedA:l.add(G).toString(),feeOwedB:y.add(J).toString()}},zp=new Qo.default(0),Gp=new Qo.default(1),N1=new Qo.default(2),F1={mul(t,e,i){let n=t.mul(e);if(this.isOverLimit(n,i))throw new Error(`Mul result higher than u${i}`);return n},mulDiv(t,e,i,n){return this.mulDivRoundUpIf(t,e,i,!1,n)},mulDivRoundUpIf(t,e,i,n,r){if(i.eq(zp))throw new Error("mulDiv denominator is zero");let o=this.mul(t,e,r),s=o.div(i);return n&&o.mod(i).gt(zp)?s.add(Gp):s},isOverLimit(t,e){let i=N1.pow(new Qo.default(e)).sub(Gp);return t.gt(i)}},R1=(t,e)=>{var i,n,r,o;let{pool:s,position:a,tickLowerDetail:l,tickUpperDetail:u,timeStampInSeconds:h}=e,y=new vi.default(new U(s.reward_last_updated_time_ms).div(1e3).toFixed(0)),T=(h??new vi.default(Date.now()).div(new vi.default(1e3))).sub(new vi.default(y)),O=[],P=new vi.default(s.liquidity),j=new vi.default(a.liquidity);for(let B=0;B<3;++B){let D=s.reward_infos[B],q={emissionsPerSecondX64:new vi.default(D?D.fields.emissions_per_second:"0"),growthGlobalX64:new vi.default(D?D.fields.growth_global:"0")},K={growthInsideCheckpoint:new vi.default((n=(i=a.reward_infos[B])==null?void 0:i.fields.reward_growth_inside)!=null?n:"0"),amountOwed:new vi.default((o=(r=a.reward_infos[B])==null?void 0:r.fields.amount_owed)!=null?o:"0")},Z=q.growthGlobalX64;if(!P.isZero()){let k=F1.mulDiv(T,q.emissionsPerSecondX64,P,128);Z=q.growthGlobalX64.add(k)}let G=l.rewardGrowthsOutside[B],J=u.rewardGrowthsOutside[B],x=Z;l.initialized&&(x=t.bitsToNumber(s.tick_current_index.fields.bits)<t.bitsToNumber(a.tick_lower_index.fields.bits)?t.subUnderflowU128(Z,G):G);let I=new vi.default(0);u.initialized&&(I=t.bitsToNumber(s.tick_current_index.fields.bits)<t.bitsToNumber(a.tick_upper_index.fields.bits)?J:t.subUnderflowU128(Z,J));let A=t.subUnderflowU128(t.subUnderflowU128(Z,x),I),E=K.amountOwed.shln(64);O[B]=E.add(t.subUnderflowU128(A,K.growthInsideCheckpoint).mul(j)).shrn(64).toString()}return O},q1=class extends Yo{async getOwner(t){let e=await this.getObject(t),i=D1(e);if(!(!i||typeof i=="string")){if("ObjectOwner"in i)return i.ObjectOwner;if("AddressOwner"in i)return i.AddressOwner}}async getFields(t){let e=await this.getObject(t);return Wi(e)}async getPositionFields(t){let e=await this.contract.getConfig(),i=await this.provider.getDynamicFieldObject({parentId:e.Positions,name:{type:"address",value:t}});return Wi(i)}async getPositionFieldsByPositionId(t){let e=await this.provider.getObject({id:t,options:{showContent:!0}});return bu(e,"position"),Wi(e)}async getPositionTick(t,e){let i=await this.provider.getDynamicFieldObject({parentId:t,name:{type:e.type,value:e.fields}}),n=Wi(i);if(n)return{tickIndex:this.math.bitsToNumber(n.name.fields.bits),initialized:n.value.fields.initialized,liquidityNet:new ti.default(this.math.bitsToNumber(n.value.fields.liquidity_net.fields.bits,128).toString()),liquidityGross:new ti.default(n.value.fields.liquidity_gross),feeGrowthOutsideA:new ti.default(n.value.fields.fee_growth_outside_a),feeGrowthOutsideB:new ti.default(n.value.fields.fee_growth_outside_b),rewardGrowthsOutside:n.value.fields.reward_growths_outside.map(r=>new ti.default(r))}}async getPositionAPR(t){let{poolId:e,getPrice:i,fees24h:n,tickLower:r,tickUpper:o}=t,s=await this.pool.getPool(e),a=this.math.bitsToNumber(s.tick_current_index.fields.bits),[l,u,h,y]=await Promise.all([this.coin.getMetadata(s.types[0]),this.coin.getMetadata(s.types[1]),i(s.types[0]),i(s.types[1])]);if(!h||!y||r>=o||a<r||a>=o)return{fees:"0",rewards:"0",total:"0"};let{minTokenA:v,minTokenB:T}=this.getRemoveLiquidityQuote(s,r,o),O=new U(this.math.scaleDown(v.toString(),l.decimals)).mul(h),P=new U(this.math.scaleDown(T.toString(),u.decimals)).mul(y),j=O.add(P),B=j.isZero()?new U(0):new U(n).mul(365).div(j).mul(100),D=new U(0);return await Promise.all(s.reward_infos.map(async q=>{let{emissions_per_second:K}=q.fields,Z=this.coin.formatCoinType(q.fields.vault_coin_type),[G,J]=await Promise.all([i(Z),this.coin.getMetadata(Z)]);!K||K==="0"||!G||(D=D.add(new U(new ti.default(K).shrn(64).toString()).div(10**J.decimals).mul(31536e3).mul(G).div(j).mul(100)))})),{fees:B.toString(),rewards:D.toString(),total:B.plus(D).toString()}}getRemoveLiquidityQuote(t,e,i){let n=new ti.default(0),r=new ti.default(t.liquidity),o=this.math.bitsToNumber(t.tick_current_index.fields.bits),s=this.math.tickIndexToSqrtPriceX64(e),a=this.math.tickIndexToSqrtPriceX64(i);if(o<e){let u=this.getTokenAFromLiquidity(r,s,a);return{minTokenA:this.adjustForSlippage(u),minTokenB:n}}if(o<i){let u=new ti.default(t.sqrt_price),h=this.getTokenAFromLiquidity(r,u,a),y=this.getTokenBFromLiquidity(r,s,u);return{minTokenA:this.adjustForSlippage(h),minTokenB:this.adjustForSlippage(y)}}let l=this.getTokenBFromLiquidity(r,s,a);return{minTokenA:n,minTokenB:this.adjustForSlippage(l)}}adjustForSlippage(t){let e={numerator:new ti.default(0),denominator:new ti.default(1e3)};return t.mul(e.denominator).div(e.denominator.add(e.numerator))}getTokenAFromLiquidity(t,e,i){let n=t.mul(i.sub(e)).shln(64),r=i.mul(e);return n.div(r)}getTokenBFromLiquidity(t,e,i){return t.mul(i.sub(e)).shrn(64)}async burn(t){let{pool:e,nft:i}=t,n=t.txb||new Yp.TransactionBlock,r=await this.contract.getConfig(),o=await this.pool.getPoolTypeArguments(e);return n.moveCall({target:`${r.PackageId}::position_manager::burn`,typeArguments:o,arguments:[n.object(r.Positions),n.object(i),n.object(r.Versioned)]}),n}async getPositionLiquidityUSD(t){let{position:e,poolId:i,priceA:n,priceB:r}=t,o=await this.pool.getPool(i),s=this.pool.getTokenAmountsFromLiquidity({currentSqrtPrice:new ti.default(o.sqrt_price),lowerSqrtPrice:this.math.tickIndexToSqrtPriceX64(this.math.bitsToNumber(e.tick_lower_index.fields.bits)),upperSqrtPrice:this.math.tickIndexToSqrtPriceX64(this.math.bitsToNumber(e.tick_upper_index.fields.bits)),liquidity:new ti.default(e.liquidity===void 0?1e8:e.liquidity)}),[a,l]=await Promise.all([this.coin.getMetadata(o.types[0]),this.coin.getMetadata(o.types[1])]),u=new U(s[0].toString()).div(10**a.decimals).mul(n||0),h=new U(s[1].toString()).div(10**l.decimals).mul(r||0);return u.plus(h).toString()}async getUnclaimedFeesAndRewards(t){let{position:e,poolId:i}=t,[n,r,o]=await Promise.all([this.pool.getPool(i),this.nft.getPositionTick(i,e.tick_lower_index),this.nft.getPositionTick(i,e.tick_upper_index)]),s={...t,pool:n,tickLowerDetail:r,tickUpperDetail:o},[a,l]=await Promise.all([this.getUnclaimedFees(s),this.getUnclaimedRewards(s)]),{unclaimedFees:u,...h}=a,{unclaimedRewards:y,...v}=l;return{fees:a.unclaimedFees.toString(),rewards:y.toString(),total:u.plus(y).toString(),fields:{...h,...v}}}async getUnclaimedFees(t){let{position:e,pool:i,getPrice:n,tickLowerDetail:r,tickUpperDetail:o}=t,[s,a,l,u]=await Promise.all([this.coin.getMetadata(i.types[0]),this.coin.getMetadata(i.types[1]),n(i.types[0]),n(i.types[1])]),h=B1(this.math,{pool:i,position:e,tickLowerDetail:r,tickUpperDetail:o}),y=this.math.scaleDown(h.feeOwedA,s.decimals),v=this.math.scaleDown(h.feeOwedB,a.decimals);function T(j,B){return new U(1e6).mul(U.pow(10,B)).lt(j)}T(y,s.decimals)&&(y="0",h.feeOwedA="0"),T(v,a.decimals)&&(v="0",h.feeOwedB="0");let O=l===void 0?new U(0):new U(l).mul(y),P=u===void 0?new U(0):new U(u).mul(v);return{unclaimedFees:O.plus(P),scaledFeeOwedA:y,scaledFeeOwedB:v,...h}}async getUnclaimedRewards(t){let{position:e,pool:i,getPrice:n,tickLowerDetail:r,tickUpperDetail:o}=t,s=R1(this.math,{pool:i,position:e,tickLowerDetail:r,tickUpperDetail:o}),a=[...s],l=i.reward_infos.map(v=>this.coin.formatCoinType(v.fields.vault_coin_type)),u=await Promise.all([...i.reward_infos.map((v,T)=>this.coin.getMetadata(l[T]))]),h=await Promise.all(i.reward_infos.map((v,T)=>n(l[T])));u.forEach((v,T)=>{a[T]=this.math.scaleDown(a[T],v.decimals)});let y=new U(0);return i.reward_infos.some((v,T)=>{let O=h[T];return O?(y=y.plus(new U(O).mul(a[T])),!1):(y=y.plus(1),!0)}),{unclaimedRewards:y,collectRewards:s,scaledCollectRewards:a}}getObject(t){return this.getCacheOrSet("nft-object-"+t,async()=>{let e=await this.provider.getObject({id:t,options:{showContent:!0,showOwner:!0}});return bu(e,"nft"),e})}},L1=class extends Yo{isSUI(t){return(0,Qp.normalizeSuiAddress)(t)==="0x000000000000000000000000000000000000000000000000000002::sui::sui"}async getMetadata(t){return this.getCacheOrSet(`coin-metadata-${t}`,async()=>{let e=await this.provider.getCoinMetadata({coinType:t});if(!e)throw new Error(`Coin "${t}" is not found`);return e})}async selectTradeCoins(t,e,i){if(i.eq(0))return[];let n=[],r=[],o=new U(0),s;do s=await this.provider.getCoins({owner:t,coinType:e,cursor:s?.nextCursor}),n.push(...s.data);while(s.hasNextPage);n.sort((a,l)=>Number(l.balance)-Number(a.balance));for(let a of n)if(r.push(a.coinObjectId),o=o.add(a.balance),o.gte(i))break;return r}convertTradeCoins(t,e,i,n){return this.isSUI(i)?[t.splitCoins(t.gas,[t.pure(n.toNumber())])[0]]:e.map(r=>t.object(r))}zero(t,e){return e.moveCall({typeArguments:[t],target:"0x2::coin::zero",arguments:[]})}formatCoinType(t,e=!1){let n=t.replace(/^0x/i,"");return n=n.replace(/^0+(2::sui::SUI)$/,"$1"),"0x"+(e&&n.length<64&&t!=="2::sui:SUI"?"0".repeat(64-n.length):"")+n}},$1=60*1e3,Ma=100,U1=class extends Yo{async swap(t){let{coinTypeA:e,coinTypeB:i,address:n,amountSpecifiedIsInput:r,slippage:o}=t,s=new U(t.amountA),a=new U(t.amountB),l=await this.contract.getConfig(),u=await Promise.all(t.routes.map(async P=>{let j=await this.pool.getPoolTypeArguments(P.pool),[B,D]=await Promise.all([this.coin.getMetadata(j[0]),this.coin.getMetadata(j[1])]);return{...P,coinA:B,coinB:D,typeArguments:j}})),h=await this.coin.selectTradeCoins(n,e,s),{functionName:y,typeArguments:v}=this.getFunctionNameAndTypeArguments(u.map(({typeArguments:P})=>P),e,i),T=u.map(({nextTickIndex:P,coinA:j,coinB:B,a2b:D})=>{let q=this.math.tickIndexToPrice(P,j.decimals,B.decimals);return this.sqrtPriceWithSlippage(q,o,D,j.decimals,B.decimals)}),O=t.txb||new ja.TransactionBlock;return O.moveCall({target:`${l.PackageId}::swap_router::${y}`,typeArguments:v,arguments:[...u.map(({pool:P})=>O.object(P)),O.makeMoveVec({objects:this.coin.convertTradeCoins(O,h,e,s)}),O.pure((r?s:a).toFixed(0),"u64"),O.pure(this.amountOutWithSlippage(r?a:s,o,r),"u64"),...T.map(P=>O.pure(P,"u128")),O.pure(r,"bool"),O.pure(n,"address"),O.pure(Date.now()+(t.deadline||$1*3),"u64"),O.object(Ba.SUI_CLOCK_OBJECT_ID),O.object(l.Versioned)]}),O}async computeSwapResult(t){let{pools:e,amountSpecified:i,amountSpecifiedIsInput:n,address:r,tickStep:o}=t,s=await this.contract.getConfig(),a=e.map(y=>y.pool),l=await Jo(this.provider,a,{showContent:!0}),u=new ja.TransactionBlock;l.map(async y=>{let v=Wi(y),T=e.find(D=>D.pool===v.id.id),O=this.math.bitsToNumber(v.tick_current_index.fields.bits),P=O-v.tick_spacing*(o||Ma),j=O+v.tick_spacing*(o||Ma);P=P<Da?Da:P,j=j>Pa?Pa:j;let B=this.pool.parsePoolType(Na(y));u.moveCall({target:`${s.PackageId}::pool_fetcher::compute_swap_result`,typeArguments:B,arguments:[u.object(v.id.id),u.pure(T.a2b,"bool"),u.pure(new U(i).toFixed(0),"u128"),u.pure(n,"bool"),u.pure(this.math.tickIndexToSqrtPriceX64(T.a2b?P:j).toString(),"u128"),u.object(Ba.SUI_CLOCK_OBJECT_ID),u.object(s.Versioned)]})});let h=await this.provider.devInspectTransactionBlock({transactionBlock:u,sender:r});if(h.error)throw new Error(h.error);return h.events.map(y=>y.parsedJson)}async computeSwapResultV2(t){let{pools:e,amountSpecifiedIsInput:i,address:n,tickStep:r}=t,o=await this.contract.getConfig(),s=e.map(h=>h.pool),a=await Jo(this.provider,Array.from(new Set(s)),{showContent:!0}),l=new ja.TransactionBlock;e.forEach(async h=>{let y=a.find(B=>Fa(B)===h.pool),v=Wi(y),T=this.math.bitsToNumber(v.tick_current_index.fields.bits),O=T-v.tick_spacing*(r||Ma),P=T+v.tick_spacing*(r||Ma);O=O<Da?Da:O,P=P>Pa?Pa:P;let j=this.pool.parsePoolType(Na(y));l.moveCall({target:`${o.PackageId}::pool_fetcher::compute_swap_result`,typeArguments:j,arguments:[l.object(v.id.id),l.pure(h.a2b,"bool"),l.pure(new U(h.amountSpecified).toFixed(0),"u128"),l.pure(i,"bool"),l.pure(this.math.tickIndexToSqrtPriceX64(h.a2b?O:P).toString(),"u128"),l.object(Ba.SUI_CLOCK_OBJECT_ID),l.object(o.Versioned)]})});let u=await this.provider.devInspectTransactionBlock({transactionBlock:l,sender:n});if(u.error)throw new Error(u.error);return u.events.map(h=>h.parsedJson)}getFunctionNameAndTypeArguments(t,e,i){let n=[],r=["swap"];if(t.length===1)n=t[0],e===n[0]?r.push("a","b"):r.push("b","a");else{let o=t[0],s=t[1];e===o[0]?(r.push("a","b"),n.push(o[0],o[2],o[1])):(r.push("b","a"),n.push(o[1],o[2],o[0])),n.push(s[2],i),i===s[0]?r.push("c","b"):r.push("b","c")}return{functionName:r.join("_"),typeArguments:n}}amountOutWithSlippage(t,e,i){if(i){let r=new U(100).minus(e).div(100);return new U(t).mul(r).toFixed(0)}let n=new U(100).plus(e).div(100);return new U(t).mul(n).toFixed(0)}sqrtPriceWithSlippage(t,e,i,n,r){let o=new U(t).mul(i?new U(100).minus(e).div(100):new U(100).plus(e).div(100)),s=this.math.priceToSqrtPriceX64(o,n,r);return s.lt(new yu.BN(_u))?_u:s.gt(new yu.BN(gu))?gu:s.toString()}},Bt=class{constructor(t,e){this.network=t,Vi(this,"pool"),Vi(this,"contract"),Vi(this,"math",new E1),Vi(this,"account",new x1),Vi(this,"coin"),Vi(this,"nft"),Vi(this,"trade"),Vi(this,"provider"),this.provider=e?e instanceof ar.SuiClient?e:new ar.SuiClient(e):new ar.SuiClient({url:t==="mainnet"?(0,ar.getFullnodeUrl)("mainnet"):(0,ar.getFullnodeUrl)("testnet")}),this.contract=new M1(this),this.pool=new j1(this),this.nft=new q1(this),this.coin=new L1(this),this.trade=new U1(this)}};var K1=Object.defineProperty,Pm=(t,e)=>{for(var i in e)K1(t,i,{get:e[i],enumerable:!0})},ae=class{constructor(t){this.data=t}get application(){return"msafe-core"}serialize(){return JSON.stringify((0,Em.default)(this.data))}},V1={fullRpcUrl:"https://fullnode.mainnet.sui.io/",simulationAccount:{address:"0x326ce9894f08dcaa337fa232641cc34db957aec9ff6614c1186bc9a7508df0bb"},cetus_config:{package_id:"0x95b8d278b876cae22206131fb9724f701c9444515813042f54f0a426c9a3bc2f",published_at:"0x95b8d278b876cae22206131fb9724f701c9444515813042f54f0a426c9a3bc2f",config:{coin_list_id:"0x8cbc11d9e10140db3d230f50b4d30e9b721201c0083615441707ffec1ef77b23",launchpad_pools_id:"0x1098fac992eab3a0ab7acf15bb654fc1cf29b5a6142c4ef1058e6c408dd15115",clmm_pools_id:"0x15b6a27dd9ae03eb455aba03b39e29aad74abd3757b8e18c0755651b2ae5b71e",admin_cap_id:"0x39d78781750e193ce35c45ff32c6c0c3f2941fa3ddaf8595c90c555589ddb113",global_config_id:"0x0408fa4e4a4c03cc0de8f23d0c2bbfe8913d178713c9a271ed4080973fe42d8f",coin_list_handle:"0x49136005e90e28c4695419ed4194cc240603f1ea8eb84e62275eaff088a71063",launchpad_pools_handle:"0x5e194a8efcf653830daf85a85b52e3ae8f65dc39481d54b2382acda25068375c",clmm_pools_handle:"0x37f60eb2d9d227949b95da8fea810db3c32d1e1fa8ed87434fc51664f87d83cb"}},clmm_pool:{package_id:"0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb",published_at:"0xc33c3e937e5aa2009cc0c3fdb3f345a0c3193d4ee663ffc601fe8b894fbc4ba6",version:4,config:{pools_id:"0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0",global_config_id:"0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",global_vault_id:"0xce7bceef26d3ad1f6d9b6f13a953f053e6ed3ca77907516481ce99ae8e588f2b",admin_cap_id:"0x89c1a321291d15ddae5a086c9abc533dff697fde3d89e0ca836c41af73e36a75"}},integrate:{package_id:"0x996c4d9480708fb8b92aa7acf819fb0497b5ec8e65ba06601cae2fb6db3312c3",published_at:"0xd43348b8879c1457f882b02555ba862f2bc87bcc31b16294ca14a82f608875d2",version:6},deepbook:{package_id:"0x000000000000000000000000000000000000000000000000000000000000dee9",published_at:"0x000000000000000000000000000000000000000000000000000000000000dee9"},deepbook_endpoint_v2:{package_id:"0x92aee86c01c79146d23938a00c7fff725ee0688c389be36d1bcbe03761b466c6",published_at:"0x92aee86c01c79146d23938a00c7fff725ee0688c389be36d1bcbe03761b466c6"},aggregatorUrl:"https://api-sui.cetus.zone/router",swapCountUrl:"https://api-sui.cetus.zone/v2/sui/swap/count"},W1={launchpad:{package_id:"0x80d114c5d474eabc2eb2fcd1a0903f1eb5b5096a8dc4184d72453f7a9be728e4",published_at:"0x80d114c5d474eabc2eb2fcd1a0903f1eb5b5096a8dc4184d72453f7a9be728e4",config:{pools_id:"0xfd8d37f7a1276878972d240302c8efe32f577220c1bbc6c8984d8b60dddfcab3",admin_cap_id:"0x66c70d58c69353714cc6fe2d3a62492d605a96a9821e2bd8274de17219c69980",config_cap_id:"0x02b8d23f033687579966e182c776fe0287cacdbb18bff56c29f141e29a18a4d1"}},ido:{package_id:"0x1192c9e20b4b0a8848a73a8c711b43e38f7ea1f307b556aab6ffab4e982e9c59",published_at:"0x1192c9e20b4b0a8848a73a8c711b43e38f7ea1f307b556aab6ffab4e982e9c59",config:{pools_id:"0xefc209b47acf1f23b29d166440904600229e520ad36228aaf2329b7c16be9762",admin_cap_id:"0x281859d366951830aeeda90779aa170d8ee6845875545470d33ecb890e78c8ce",package_version_id:"0xc93dc996106770af5f4e979b6808518f8cee080f22f35b936f071f59d834bb22"}},xcetus:{package_id:"0x9e69acc50ca03bc943c4f7c5304c2a6002d507b51c11913b247159c60422c606",published_at:"0x9e69acc50ca03bc943c4f7c5304c2a6002d507b51c11913b247159c60422c606",config:{xcetus_manager_id:"0x838b3dbade12b1e602efcaf8c8b818fae643e43176462bf14fd196afa59d1d9d",lock_manager_id:"0x288b59d9dedb51d0bb6cb5e13bfb30885ecf44f8c9076b6f5221c5ef6644fd28",lock_handle_id:"0x7c534bb7b8a2cc21538d0dbedd2437cc64f47106cb4c259b9ff921b5c3cb1a49"}},xcetus_dividends:{package_id:"0x785248249ac457dfd378bdc6d2fbbfec9d1daf65e9d728b820eb4888c8da2c10",published_at:"0xcec352932edc6663a118e8d64ed54da6b8107e8719603bf728f80717592cd9e8",version:3,config:{dividend_manager_id:"0x721c990bfc031d074341c6059a113a59c1febfbd2faeb62d49dcead8408fa6b5",dividend_admin_id:"",dividend_settle_id:""}},cetus_faucet:{package_id:"0x6864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",published_at:"0x6864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b"},xtoken:{package_id:"",published_at:"",config:{xtoken_manager_id:"",lock_manager_id:"",lock_handle_id:""}},xtoken_dividends:{package_id:"",published_at:"",config:{dividend_manager_id:"",dividend_admin_id:"",dividend_settle_id:""}},token_faucet:{package_id:"",published_at:""},booster:{package_id:"",published_at:"",config:{booster_config_id:"",booster_pool_handle:""}},maker_bonus:{package_id:"",published_at:"",config:{maker_config_id:"",maker_pool_handle:""}},liquidity_stratefy:{package_id:"",published_at:"",version:void 0,config:void 0},vaults:{package_id:"0xd3453d9be7e35efe222f78a810bb3af1859fd1600926afced8b4936d825c9a05",published_at:"0xd3453d9be7e35efe222f78a810bb3af1859fd1600926afced8b4936d825c9a05",version:1,config:{admin_cap_id:"0x78a42978709c4032fab7b33b782b5bcef64c1c6603250bf23644650b72144375",vaults_manager_id:"0x25b82dd2f5ee486ed1c8af144b89a8931cd9c29dee3a86a1bfe194fdea9d04a6",vaults_pool_handle:"0x9036bcc5aa7fd2cceec1659a6a1082871f45bc400c743f50063363457d1738bd"}},limit_order:{package_id:"",published_at:"",version:1,config:{rate_orders_indexer_id:"",rate_orders_indexer_handle:"",global_config_id:"",token_list_handle:"",user_orders_indexer_id:"",user_orders_indexer_handle:""}},frams:{package_id:"0x11ea791d82b5742cc8cab0bf7946035c97d9001d7c3803a93f119753da66f526",published_at:"0x11ea791d82b5742cc8cab0bf7946035c97d9001d7c3803a93f119753da66f526",version:1,config:{global_config_id:"0x21215f2f6de04b57dd87d9be7bb4e15499aec935e36078e2488f36436d64996e",rewarder_manager_id:"0xe0e155a88c77025056da08db5b1701a91b79edb6167462f768e387c3ed6614d5",rewarder_manager_handle:"0xb32e312cbb3367d6f3d2b4e57c9225e903d29b7b9f612dae2ddf75bdeb26a5aa",admin_cap_id:"0xf10fbf1fea5b7aeaa524b87769461a28c5c977613046360093673991f26d886c"}},haedal:{package_id:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",published_at:"0x1d56b8ec33c3fae897eb7bb1acb79914e8152faed614868928e684c25c8b198d",version:1,config:{support_stakings:[{staking_id:"0x47b224762220393057ebf4f70501b6e657c3e56684737568439a04f80849b2ca",from_coin_type:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",to_coin_type:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI"}]}}},z1={fullRpcUrl:"https://fullnode.testnet.sui.io/",simulationAccount:{address:"0xcd0247d0b67e53dde69b285e7a748e3dc390e8a5244eb9dd9c5c53d95e4cf0aa"},cetus_config:{package_id:"0xf5ff7d5ba73b581bca6b4b9fa0049cd320360abd154b809f8700a8fd3cfaf7ca",published_at:"0xf5ff7d5ba73b581bca6b4b9fa0049cd320360abd154b809f8700a8fd3cfaf7ca",config:{coin_list_id:"0x257eb2ba592a5480bba0a97d05338fab17cc3283f8df6998a0e12e4ab9b84478",launchpad_pools_id:"0xdc3a7bd66a6dcff73c77c866e87d73826e446e9171f34e1c1b656377314f94da",clmm_pools_id:"0x26c85500f5dd2983bf35123918a144de24e18936d0b234ef2b49fbb2d3d6307d",admin_cap_id:"0x1a496f6c67668eb2c27c99e07e1d61754715c1acf86dac45020c886ac601edb8",global_config_id:"0xe1f3db327e75f7ec30585fa52241edf66f7e359ef550b533f89aa1528dd1be52",coin_list_handle:"0x3204350fc603609c91675e07b8f9ac0999b9607d83845086321fca7f469de235",launchpad_pools_handle:"0xae67ff87c34aceea4d28107f9c6c62e297a111e9f8e70b9abbc2f4c9f5ec20fd",clmm_pools_handle:"0xd28736923703342b4752f5ed8c2f2a5c0cb2336c30e1fed42b387234ce8408ec"}},clmm_pool:{package_id:"0x0868b71c0cba55bf0faf6c40df8c179c67a4d0ba0e79965b68b3d72d7dfbf666",published_at:"0x1c29d658882c40eeb39a8bb8fe58f71a216a918acb3e3eb3b47d24efd07257f2",config:{pools_id:"0xc090b101978bd6370def2666b7a31d7d07704f84e833e108a969eda86150e8cf",global_config_id:"0x6f4149091a5aea0e818e7243a13adcfb403842d670b9a2089de058512620687a",global_vault_id:"0xf3114a74d54cbe56b3e68f9306661c043ede8c6615f0351b0c3a93ce895e1699",admin_cap_id:""}},integrate:{package_id:"0x8627c5cdcd8b63bc3daa09a6ab7ed81a829a90cafce6003ae13372d611fbb1a9",published_at:"0xf1a5d0c5b0593e41d13f9684ca91365bdfe54a98836c1d33c90e361a031fac74",version:6},deepbook:{package_id:"0x000000000000000000000000000000000000000000000000000000000000dee9",published_at:"0x000000000000000000000000000000000000000000000000000000000000dee9"},deepbook_endpoint_v2:{package_id:"0xa34ffca2c6540e1ca9e53963ab43e7b1eed7b82e37696c743bb7c6179c15dfa6",published_at:"0xa34ffca2c6540e1ca9e53963ab43e7b1eed7b82e37696c743bb7c6179c15dfa6"},aggregatorUrl:"https://api-sui.devcetus.com/router",swapCountUrl:"https://api-sui.devcetus.com/v2/sui/swap/count"},G1={launchpad:{package_id:"0x3beee8416089a5cbff9cfd5c0a2ce2937b0452dc7e2a3ab4dc431c7be05c2335",published_at:"0x3beee8416089a5cbff9cfd5c0a2ce2937b0452dc7e2a3ab4dc431c7be05c2335",config:{pools_id:"0xccc10403ab3da4ae943847908e0e674fe1fdab81c6383e4c6dcd0eea0edade3d",admin_cap_id:"0x8a72713049dbcfc40902ff209dc5e6066fe455d152baa235957c84d7a3b875ed",config_cap_id:"0x16492b4252b01debb60f8a825334020d7fdb9d895b52f8139c98618de30817fc"}},ido:{package_id:"0x1352bf18ef20458f7cc773852d4a90b240015a6a54479dda3a1debfc500bf044",published_at:"0xbd09a0889ea9970b821512428bab3e2fd01e16809a90a325cd3b3d3573eab6a4",config:{pools_id:"0x346bee25ab4d15bcfa9484ef5ebd4d7c94eb665ebaa745ff4094936a7f59a8b1",admin_cap_id:"0xc1bb19a24d3bb65dfd4f3835637b63347c223c67cde4b0888f1a857974f33cbb",package_version_id:"0x3ccf1b38e3259e638b980d4e6b49eac8c5aa94d3cb2ace5e75f0a551c8e67e5e"}},xcetus:{package_id:"0xdebaab6b851fd3414c0a62dbdf8eb752d6b0d31f5cfce5e38541bc6c6daa8966",published_at:"0xdebaab6b851fd3414c0a62dbdf8eb752d6b0d31f5cfce5e38541bc6c6daa8966",config:{xcetus_manager_id:"0x3be34cbad122c8b100ed7157d762b9610e68b3c65734e08bc3c3baf857da807d",lock_manager_id:"0x7c67e805182e3fecd098bd68a6b06c317f28f8c6249bd771e07904a10b424e60",lock_handle_id:"0xc5f3bbfefe9a45c13da7a34bc72cac122ee45d633690476a8ac56bd2c4e78c86"}},xcetus_dividends:{package_id:"0x20d948d640edd0c749f533d41efc5f843f212d441220324ad7959c6e1d281828",published_at:"0x20d948d640edd0c749f533d41efc5f843f212d441220324ad7959c6e1d281828",config:{dividend_manager_id:"0x13b7facb704fae1d199ff0038b8acabc253415a77d142b39189dee97d457e442",dividend_admin_id:"0x5eb78463007422d4130b21f61c180bcd190819b7792f56e00a61df3b8fb928ef",dividend_settle_id:"0x495095e13a170ff494d242ae44ac2c7453011ca6c33cff27498010105e10e4b4"}},cetus_faucet:{package_id:"0x1a69aee6be709054750949959a67aedbb4200583b39586d5e3eabe57f40012c7",published_at:"0x1a69aee6be709054750949959a67aedbb4200583b39586d5e3eabe57f40012c7"},xtoken:{package_id:"",published_at:"",config:{xtoken_manager_id:"",lock_manager_id:"",lock_handle_id:""}},xtoken_dividends:{package_id:"",published_at:"",config:{dividend_manager_id:"",dividend_admin_id:"",dividend_settle_id:""}},token_faucet:{package_id:"",published_at:""},booster:{package_id:"",published_at:"",config:{booster_config_id:"",booster_pool_handle:""}},maker_bonus:{package_id:"",published_at:"",config:{maker_config_id:"",maker_pool_handle:""}},liquidity_stratefy:{package_id:"",published_at:"",version:void 0,config:void 0},vaults:{package_id:"0x25cff94bdb454bae6a5565d09047bfe2b230025ef3bd2199622ec48d854b86b9",published_at:"0x25cff94bdb454bae6a5565d09047bfe2b230025ef3bd2199622ec48d854b86b9",config:{admin_cap_id:"0x9b2d6f5be2650d16d27cd630c4539a76d7793970343ed3cbb023e13f1637c07c",vaults_manager_id:"0xc0a1a937df08880e395d85014ff40c74f13abe7a53abdbffea36f51adaaaf79e",vaults_pool_handle:"0x3ab02203de753de9c8198cc0ce7594dc960878f2c34c5c5a4b7742082241860a"}},limit_order:{package_id:"",published_at:"",version:1,config:{rate_orders_indexer_id:"",rate_orders_indexer_handle:"",global_config_id:"",token_list_handle:"",user_orders_indexer_id:"",user_orders_indexer_handle:""}},frams:{package_id:"0xfa0d98e99c1dbdbea1b0fe089fa93ebab40a7719ae4160c42cc78ebfe029fda0",published_at:"0xfa0d98e99c1dbdbea1b0fe089fa93ebab40a7719ae4160c42cc78ebfe029fda0",config:{global_config_id:"0x5082c7a5ee9a758025d7b0a5e8aa08b56625c7cd535b8909d2b7993991e229cc",rewarder_manager_id:"0xe789e092dbd9dceadbe89350c4761a6f2e11647aab97f09746a01b151926cc0e",rewarder_manager_handle:"0x7e7dd42392b5d82564dc9ad5093a111c5f0598cc9f806cff257d7dacb71f7837",admin_cap_id:"0x4ec248bca2d1fc05f39fd7491ab490464a46d128624caa4d3c2a66d957ef40b0"}},haedal:{package_id:"0xac2afb455cbcdc2ff1a2e9bbb8aa4ccb4506a544b08c740886892a5cdf92f472",published_at:"0x9dac9c5770e5f930d2223ff68782958701acfaee9337e8d8363978ce7670dffb",config:{support_stakings:[{staking_id:"0x6e384d2da5b040b27f973155e25bbe4beb0ad5ca8ee0a36e20dff356094c9fc0",from_coin_type:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",to_coin_type:"0xac2afb455cbcdc2ff1a2e9bbb8aa4ccb4506a544b08c740886892a5cdf92f472::hasui::HASUI"}]}}},oo=(t,e)=>{let i=t==="sui:mainnet"?V1:z1,n=new dh(i);return n.senderAddress=e.address,n},ii=(t,e)=>{let i=oo(t,e),n=t==="sui:mainnet"?W1:G1;return new yh(n,i)},H1=async(t,e,i)=>await oo(i,e).Position.createAddLiquidityFixTokenPayload(t?.parameter,t?.gasEstimateArg),Z1=async(t,e,i)=>await oo(i,e).Position.createAddLiquidityFixTokenPayload(t?.parameter,t?.gasEstimateArg),X1=async(t,e,i)=>await oo(i,e).Position.closePositionTransactionPayload(t),J1=async(t,e,i)=>await oo(i,e).Position.removeLiquidityTransactionPayload(t),Y1=async(t,e,i)=>await oo(i,e).Rewarder.collectRewarderTransactionPayload(t),Q1=class jm extends ae{constructor(e){super(e),this.data=e}txType=Mm.TransactionType.Other;txSubType="OpenAndAddLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await H1(r,i,n)}static fromData(e){return new jm(e)}},ek=class Nm extends ae{constructor(e){super(e),this.data=e}txType=Bm.TransactionType.Other;txSubType="ClaimFeeAndMining";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Y1(r,i,n)}static fromData(e){return new Nm(e)}},tk=class Rm extends ae{constructor(e){super(e),this.data=e}txType=Fm.TransactionType.Other;txSubType="DecreaseLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await J1(r,i,n)}static fromData(e){return new Rm(e)}},ik=async(t,e,i)=>await ii(i,e).Farms.openPositionAddLiquidityStakePaylod(t),nk=async(t,e,i)=>await ii(i,e).Farms.addLiquidityFixCoinPayload(t),rk=async(t,e,i)=>await ii(i,e).Farms.removeLiquidityPayload(t),ok=async(t,e,i)=>await ii(i,e).Farms.removeLiquidityPayload(t),sk=async(t,e,i)=>await ii(i,e).Farms.claimFeeAndClmmReward(t),ak=async(t,e,i)=>{let n=ii(i,e);return console.log("getFarmingHarvest txbParams: ",t),await n.Farms.harvestPayload(t)},ck=async(t,e,i)=>{let n=ii(i,e),r=Object.values(t);return console.log("getFarmingBatchHarvest params: ",r),await n.Farms.batchHarvestPayload(r)},lk=async(t,e,i)=>await ii(i,e).Farms.depositPayload(t),uk=async(t,e,i)=>await ii(i,e).Farms.withdrawPayload(t),dk=class Lm extends ae{constructor(e){super(e),this.data=e}txType=qm.TransactionType.Other;txSubType="FarmingOpenAndAddLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await ik(r,i,n)}static fromData(e){return new Lm(e)}},fk=class Um extends ae{constructor(e){super(e),this.data=e}txType=$m.TransactionType.Other;txSubType="FarmingBatchHarvest";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await ck(r,i,n)}static fromData(e){return new Um(e)}},hk=class Vm extends ae{constructor(e){super(e),this.data=e}txType=Km.TransactionType.Other;txSubType="FarmingClaimFeeAndReward";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await sk(r,i,n)}static fromData(e){return new Vm(e)}},pk=class zm extends ae{constructor(e){super(e),this.data=e}txType=Wm.TransactionType.Other;txSubType="FarmingDecreaseLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await rk(r,i,n)}static fromData(e){return new zm(e)}},mk=class Hm extends ae{constructor(e){super(e),this.data=e}txType=Gm.TransactionType.Other;txSubType="FarmingHarvest";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await ak(r,i,n)}static fromData(e){return new Hm(e)}},gk=class Xm extends ae{constructor(e){super(e),this.data=e}txType=Zm.TransactionType.Other;txSubType="FarmingIncreaseLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await nk(r,i,n)}static fromData(e){return new Xm(e)}},_k=class Ym extends ae{constructor(e){super(e),this.data=e}txType=Jm.TransactionType.Other;txSubType="FarmingRemoveLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await ok(r,i,n)}static fromData(e){return new Ym(e)}},bk=class eg extends ae{constructor(e){super(e),this.data=e}txType=Qm.TransactionType.Other;txSubType="FarmingStake";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await lk(r,i,n)}static fromData(e){return new eg(e)}},yk=class ig extends ae{constructor(e){super(e),this.data=e}txType=tg.TransactionType.Other;txSubType="FarmingUnstake";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await uk(r,i,n)}static fromData(e){return new ig(e)}},wk=class rg extends ae{constructor(e){super(e),this.data=e}txType=ng.TransactionType.Other;txSubType="IncreaseLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Z1(r,i,n)}static fromData(e){return new rg(e)}},vk=class sg extends ae{constructor(e){super(e),this.data=e}txType=og.TransactionType.Other;txSubType="RemoveLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await X1(r,i,n)}static fromData(e){return new sg(e)}},kk=async(t,e,i)=>await ii(i,e).XCetusModule.convertPayload(t),Ck=async(t,e,i)=>await ii(i,e).XCetusModule.redeemLockPayload(t),Tk=async(t,e,i)=>await ii(i,e).XCetusModule.redeemDividendV2Payload(t.venft_id,t.bonus_types,t.xTokenType),Sk=async(t,e,i)=>await ii(i,e).XCetusModule.cancelRedeemPayload(t),xk=async(t,e,i)=>await ii(i,e).XCetusModule.redeemPayload(t),Ak=class cg extends ae{constructor(e){super(e),this.data=e}txType=ag.TransactionType.Other;txSubType="xCETUSCancelRedeem";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Sk(r,i,n)}static fromData(e){return new cg(e)}},Ik=class ug extends ae{constructor(e){super(e),this.data=e}txType=lg.TransactionType.Other;txSubType="xCETUSClaimStakingRwewards";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Tk(r,i,n)}static fromData(e){return new ug(e)}},Ok=class fg extends ae{constructor(e){super(e),this.data=e}txType=dg.TransactionType.Other;txSubType="xCETUSConvert";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await kk(r,i,n)}static fromData(e){return new fg(e)}},Pk=class pg extends ae{constructor(e){super(e),this.data=e}txType=hg.TransactionType.Other;txSubType="xCETUSRedeem";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await xk(r,i,n)}static fromData(e){return new pg(e)}},Dk=class gg extends ae{constructor(e){super(e),this.data=e}txType=mg.TransactionType.Other;txSubType="xCETUSRedeemLock";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Ck(r,i,n)}static fromData(e){return new gg(e)}},Mk=class{application="cetus";async deserialize(t){console.log("Cetus helper deserialize input: ",t);let{txbParams:e,action:i}=t;return{txType:Dm.TransactionType.Other,txSubType:i,intentionData:{txbParams:{...e},action:i}}}async build(t){let{suiClient:e,account:i,network:n}=t;console.log("helper build input: ",t),console.log("helper build input.intentionData: ",t.intentionData),console.log("helper build input.intentionData JSON: ",JSON.stringify(t.intentionData));let r;switch(t.txSubType){case"OpenAndAddLiquidity":r=Q1.fromData(t.intentionData);break;case"IncreaseLiquidity":r=wk.fromData(t.intentionData);break;case"DecreaseLiquidity":r=tk.fromData(t.intentionData);break;case"RemoveLiquidity":r=vk.fromData(t.intentionData);break;case"ClaimFeeAndMining":r=ek.fromData(t.intentionData);break;case"FarmingOpenAndAddLiquidity":r=dk.fromData(t.intentionData);break;case"FarmingIncreaseLiquidity":r=gk.fromData(t.intentionData);break;case"FarmingDecreaseLiquidity":r=pk.fromData(t.intentionData);break;case"FarmingRemoveLiquidity":r=_k.fromData(t.intentionData);break;case"FarmingClaimFeeAndReward":r=hk.fromData(t.intentionData);break;case"FarmingHarvest":r=mk.fromData(t.intentionData);break;case"FarmingBatchHarvest":r=fk.fromData(t.intentionData);break;case"FarmingStake":r=bk.fromData(t.intentionData);break;case"FarmingUnstake":r=yk.fromData(t.intentionData);break;case"xCETUSConvert":r=Ok.fromData(t.intentionData);break;case"xCETUSRedeemLock":r=Dk.fromData(t.intentionData);break;case"xCETUSClaimStakingRwewards":r=Ik.fromData(t.intentionData);break;case"xCETUSCancelRedeem":r=Ak.fromData(t.intentionData);break;case"xCETUSRedeem":r=Pk.fromData(t.intentionData);break;default:throw new Error("not implemented")}return console.log("helper build intention: ",r),console.log("helper build account: ",i),console.log("helper build network: ",n),r.build({suiClient:e,account:i,network:n})}},bg={};Pm(bg,{contractId:()=>vg,default:()=>Ek,feeObjId:()=>Tg,roleObjId:()=>kg,status:()=>wg,transaction:()=>yg,upgradeCapObjId:()=>Sg,vaultObjId:()=>Cg});var yg="DiBZq4UmVVYiRL6ZJmFKYoHcxtxqrhsCXSkFyT7wUr3j",wg="success",vg="0x81c960dc653975fbd0072deca8afb92d322898c911622898ba1b2e3ad0c4bd8d",kg="0xc6ec0bdee0bb59a72077e9acd2f42457043cf47080b3d3fad4d39abf28bba63a",Cg="0xbc4021387fbac149119fd24e92be9e58f745774292f3a2a12e2ac6daf5363e1d",Tg="0x4178f63970fe2daeb256dc5730ad172e82b3e8eb45f31b33e0daae72cd35e1e1",Sg="0xe1e9aa7d222d151bfe6dd83358b0d7fdcb11260f710800cfaf7ccc1b1e245115",Ek={transaction:yg,status:wg,contractId:vg,roleObjId:kg,vaultObjId:Cg,feeObjId:Tg,upgradeCapObjId:Sg},xg={};Pm(xg,{contractId:()=>Og,default:()=>jk,feeObjId:()=>Mg,roleObjId:()=>Pg,status:()=>Ig,transaction:()=>Ag,upgradeCapObjId:()=>Eg,vaultObjId:()=>Dg});var Ag="855FNDV8o8Z3fWULPnQo9qdhLJpsg7wZrkCpNyfw9KfB",Ig="success",Og="0xc357c3985e8fb875d6b37141497af660779aa1bab0ec489b2213efd74067d1fa",Pg="0x5ab49bdf9fd1413e328ef242b3f8d83dde791b38a0b627bfc87fb25c010d34f1",Dg="0xb483558770d8eb26007f193b75db40f0a45f2e36863a687625885d4de6993378",Mg="0x48453fc4d7cde3fe35aad89e5dfb496608a6a55ea529a1c0274681a808627f94",Eg="0x34279779a0d0d36bd5044b04830d607fa1b0ecf316548c8ac3a44151e4f1a42a",jk={transaction:Ag,status:Ig,contractId:Og,roleObjId:Pg,vaultObjId:Dg,feeObjId:Mg,upgradeCapObjId:Eg},Bk="https://sui-testnet.blockvision.org/v1/2Sgk89ivT64MnKdcGzjmyjY2ndD",Nk="https://sui-testnet.blockvision.org/v1/2Sgk89ivT64MnKdcGzjmyjY2ndD",Fk="https://sui-mainnet.blockvision.org/v1/2Sgk7NPvqkd7mESYkxF01yX15l7",Rk="https://sui-mainnet.blockvision.org/v1/2Sgk7NPvqkd7mESYkxF01yX15l7",qk="https://bc3p6l5unl.execute-api.us-west-1.amazonaws.com/prod",Lk="https://rolsbkota7.execute-api.us-west-1.amazonaws.com/prod",$k="https://6p6mkx33ne.execute-api.us-west-1.amazonaws.com/prod",Uk="https://xrae3mrjv5.execute-api.us-west-1.amazonaws.com/prod",em=bg,tm=xg,Kk=new Map([["dev",{env:"dev",rpc:{url:Bk},backend:{url:qk},contract:em}],["stg",{env:"stg",rpc:{url:Nk},backend:{url:Lk},contract:em}],["prev",{env:"prev",rpc:{url:Fk},backend:{url:$k},contract:tm}],["prod",{env:"prod",rpc:{url:Rk},backend:{url:Uk},contract:tm}]]);function Vk(t,e){let i=Kk.get(t);if(!i)throw new Error(`Env not supported: ${t}`);return e&&e.rpc&&(i.rpc=e.rpc),e&&e.backend&&(i.backend=e.backend),e&&e.contract&&(i.contract=e.contract),i}var ui=class extends Error{mpayErrorCode;context;constructor(t,e,i={}){let{cause:n,context:r}=i;n?super(`[MPay] ${e}: ${n}`):super(`[MPay] ${e}`),this.mpayErrorCode=t,this.context=r}},Wk=class extends ui{constructor(){super(11,"Backend is not specified")}},zk=class extends ui{constructor(){super(1,"Wallet not connected")}},vu=class extends ui{constructor(t,e){super(10,t,{context:e})}},Gk=class lr{constructor(e){this.apiURL=e}static parseResponseData(e){if(e instanceof ln.AxiosError)throw new vu(e.response?.statusText);if(e.status===200){if(e.data.success)return e.data.data;throw new vu(e.data.code)}throw new vu(e.status.toString())}async getIncomingStreams(e,i){let n=await ln.default.post(`${this.apiURL}/stream`,{recipient:e,...i});return lr.parseResponseData(n)}async getOutgoingStreams(e,i){let n=await ln.default.post(`${this.apiURL}/stream`,{sender:e,...i});return lr.parseResponseData(n)}async getStreamHistory(e){let i=await ln.default.post(`${this.apiURL}/stream-events`,e),n=lr.parseResponseData(i);return n.data.forEach(r=>{let o=r;return o.data.type==="create_stream"?o.data.balance=BigInt(o.data.balance):o.data.type==="cancel_stream"?o.data.withdrawAmount=BigInt(o.data.withdrawAmount):o.data.type==="claim"||o.data.type==="auto_claim"?o.data.claimAmount=BigInt(o.data.claimAmount):o.data.type==="set_auto_claim"&&(o.data.enabled=!!o.data.enabled),o.createdAt=new Date(o.createdAt),o}),n}async getAllCoinTypes(e){let i=await ln.default.post(`${this.apiURL}/stream-info`,{address:e});return lr.parseResponseData(i)}async getAllRecipients(e,i){let n=await ln.default.post(`${this.apiURL}/stream-info`,{sender:e,status:i});return lr.parseResponseData(n)}async getAllSenders(e,i){let n=await ln.default.post(`${this.apiURL}/stream-info`,{recipient:e,status:i});return lr.parseResponseData(n)}},Bg=class Ng{signer;suiClient;envConfig;_backend;constructor(e){this.envConfig=e,this.suiClient=new jg.SuiClient({url:e.rpc.url}),e.backend&&(this._backend=new Gk(e.backend.url))}static new(e,i){let n=Vk(e,i);return new Ng(n)}get walletType(){return this.wallet?this.wallet.type:"disconnected"}get backend(){if(!this._backend)throw new Wk;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 zk;return this.signer}async walletAddress(){return this.wallet.address()}},im=50n,ku=10000n,Hk=25n,nm=100000000n,cr=class{constructor(t){this.object=t}moveArg(t){return t.object(this.object)}},rm=class{constructor(t){this.objects=t}moveArgs(t){return t.makeMoveVec({objects:this.objects.map(e=>t.object(e))})}},Ga=class Fg{constructor(e){return this.result=e,new Proxy(this,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(i,n){if(n in i)return Reflect.get(i,n);let r=s=>new Fg(i.result[s]);if(n===Symbol.iterator)return function*(){let s=0;for(;;)yield r(s),s++};if(typeof n=="symbol")return;let o=parseInt(n,10);if(!(Number.isNaN(o)||o<0))return r(o)}})}moveArg(){return this.result}},om=class extends ui{constructor(t,e){super(3,t,{context:e})}},Zk=class{constructor(t){this.results=t}callResult(t){return this.results.results[t]}returnValue(t,e){return t.returnValues[e]}getValue(t=0,e=0){let i=this.callResult(t);return this.returnValue(i,e)}getAddress(t=0,e=0){let[i,n]=this.getValue(t,e);if(n!=="address")throw new om("Invalid contract return type.",{ctx:{expectType:"address",gotType:n}});return(0,Rg.normalizeSuiAddress)(Ou.Buffer.from(i).toString("hex"))}getU64(t=0,e=0){let[i,n]=this.getValue(t,e);if(n!=="u64")throw new om("Invalid contract return type.",{ctx:{expectType:"u64",gotType:n}});return Ou.Buffer.from(i).readBigInt64LE()}},li=class extends ui{constructor(t,e,i){super(2,`Invalid input: ${t}`,{context:{fieldKey:e,fieldValue:i}})}},qg={groupId:"string",name:"string"},Xk=64;function Jk(t){return Lg(t),$u.bcs.ser(qg,t).toString("base64")}function Pu(t){let e=$u.bcs.de(qg,t,"base64");return Lg(e),e}function Lg(t){if(!sm(t.name))throw new li("Invalid metadata: Name contains unknown character");if(!sm(t.groupId))throw new li("Invalid metadata: Group ID contains unknown character");if(t.name.length>Xk)throw new li("Invalid metadata: Name exceed max length 64")}function sm(t){return/^[\x00-\x7F]+$/.test(t)}function $g(t,e){return(0,os.normalizeStructTag)(t)===(0,os.normalizeStructTag)(e)}function Yr(t,e){return(0,os.normalizeStructTag)(t)===(0,os.normalizeStructTag)(e)}var Ug="txn.gas";function Yk(){return wh()}var Du=class Kg{constructor(e,i,n){this.globals=e,this.feeContract=i,this.streamContract=n}static convertCreateStreamInfoToInternal(e){return{metadata:Jk({name:e.name,groupId:Yk()}),coinType:(0,rs.normalizeStructTag)(e.coinType),recipients:e.recipients.map(i=>({address:i.address,cliffAmount:i.cliffAmount,amountPerEpoch:i.amountPerStep})),epochInterval:e.interval,numberEpoch:e.steps,startTime:e.startTimeMs,cancelable:e.cancelable}}async buildCreateStreamTransactionBlock(e){let i=new Iu.TransactionBlock,n=this.calculateFeesInternal(e),r=this.getCreateStreamCoinRequests(e,n),o=await this.wallet.requestCoins(r),s=await this.addMergeCoins(i,o[0]),a;r.length>1?a=await this.addMergeCoins(i,o[1]):a=s;for(let l=0;l<e.recipients.length;l++){let u=e.recipients[l],h=this.amountForRecipient(u,e.numberEpoch),y=this.getStreamFeeLocal(h),[v]=i.splitCoins(s,[i.pure(h+y,"u64")]),[T]=i.splitCoins(a,[i.pure(this.flatSuiFee,"u64")]);this.streamContract.createStream(i,{paymentCoin:new Ga(v),flatFeeCoin:new Ga(T),metadata:e.metadata,recipient:u.address,timeStart:e.startTime,cliff:u.cliffAmount,epochInterval:e.epochInterval,numEpoch:e.numberEpoch,amountPerEpoch:u.amountPerEpoch,cancelable:e.cancelable,coinType:e.coinType})}return i}calculateCreateStreamFees(e){let i=Kg.convertCreateStreamInfoToInternal(e);return this.calculateFeesInternal(i)}feeParams(){return{createFeePercent:{numerator:im,denominator:ku},claimFeePercent:{numerator:Hk,denominator:ku},flatFeePerStream:nm}}async addMergeCoins(e,i){let n;return i.mergedCoins&&i.mergedCoins.length?(e.mergeCoins(e.object(i.primaryCoin),i.mergedCoins.map(r=>e.object(r))),n=e.object(i.primaryCoin)):i.primaryCoin===Ug?n=e.gas:n=e.object(i.primaryCoin),n}getCreateStreamCoinRequests(e,i){let n=e.coinType;return $g(n,rs.SUI_TYPE_ARG)?[{coinType:n,amount:i.totalAmount+i.streamFeeAmount+i.flatFeeAmount}]:[{coinType:n,amount:i.totalAmount+i.streamFeeAmount},{coinType:rs.SUI_TYPE_ARG,amount:i.flatFeeAmount}]}calculateFeesInternal(e){let i=e.recipients.reduce((n,r)=>{let o=this.amountForRecipient(r,e.numberEpoch),s=this.getStreamFeeLocal(o);return{totalAmount:n.totalAmount+o,streamFeeAmount:n.streamFeeAmount+s}},{totalAmount:0n,streamFeeAmount:0n});return{flatFeeAmount:BigInt(e.recipients.length)*this.flatSuiFee,...i}}amountForRecipient(e,i){return BigInt(e.amountPerEpoch)*BigInt(i)+BigInt(e.cliffAmount)}get flatSuiFee(){return nm}getStreamFeeLocal(e){return e*im/ku}async getStreamFeeRemote(e){let i=this.feeContract.streamingFee(new Iu.TransactionBlock,e),n=await this.globals.suiClient.devInspectTransactionBlock({sender:await this.globals.walletAddress(),transactionBlock:i});return new Zk(n).getU64()}get wallet(){return this.globals.wallet}},Qk="0x0000000000000000000000000000000000000000000000000000000000000006",Vg=class{constructor(t,e,i){this.moduleName=t,this.config=e,this.globals=i}addContractCall(t,e){let i=`${this.config.contractId}::${this.moduleName}::${e.method}`;return t.add(Mu.Transactions.MoveCall({target:i,arguments:e.arguments.map(n=>n instanceof rm?n.moveArgs(t):n instanceof cr?n.moveArg(t):n instanceof Ga?n.moveArg():t.pure(n)),typeArguments:e.typeArgs})),t}addTransactionBlock(t,e,i=[],n=[]){t.add(Mu.Transactions.MoveCall({target:e,arguments:i.map(r=>r instanceof rm?r.moveArgs(t):r instanceof cr?r.moveArg(t):r instanceof Ga?r.moveArg():t.pure(r)),typeArguments:n}))}makeObject(t){return typeof t=="string"?new cr(t):t}vaultObject(){return new cr(this.config.vaultObjId)}roleObject(){return new cr(this.config.roleObjId)}feeObject(){return new cr(this.config.feeObjId)}clockObject(){return new cr(Qk)}},Wg=class Mn extends Vg{constructor(e,i){super(Mn.ModuleName,e,i),this.config=e,this.globals=i}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(e,i){let n=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:Mn.MethodName.set_streaming_fee,arguments:[n,r,i],typeArgs:[]})}setStreamingFlatFee(e,i){let n=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:Mn.MethodName.set_streaming_flat_fee,arguments:[n,r,i],typeArgs:[]})}setClaimFee(e,i){let n=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:Mn.MethodName.set_claim_fee,arguments:[n,r,i],typeArgs:[]})}streamingFee(e,i){let n=this.feeObject();return this.addContractCall(e,{method:Mn.MethodName.streaming_fee,arguments:[n,i],typeArgs:[]})}claimFee(e,i){return this.addContractCall(e,{method:Mn.MethodName.claim_fee,arguments:[this.feeObject(),i],typeArgs:[]})}feeDenominator(e){return this.addContractCall(e,{method:Mn.MethodName.fee_denominator,arguments:[this.feeObject()],typeArgs:[]})}},Xa=class Kt extends Vg{constructor(e,i){super(Kt.ModuleName,e,i),this.config=e,this.globals=i}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(e,i){let n=this.feeObject(),r=this.vaultObject(),o=this.makeObject(i.paymentCoin),s=this.makeObject(i.flatFeeCoin),a=this.clockObject();return this.addContractCall(e,{method:Kt.MethodName.create_stream,arguments:[n,r,o,s,i.metadata,i.recipient,i.timeStart,i.cliff,i.epochInterval,i.numEpoch,i.amountPerEpoch,i.cancelable,a],typeArgs:[i.coinType]})}setAutoClaim(e,i){let n=this.makeObject(i.streamId);return this.addContractCall(e,{method:Kt.MethodName.set_auto_claim,arguments:[n,i.enabled],typeArgs:[i.coinType]})}cancelStream(e,i){let n=this.makeObject(i.streamId),r=this.clockObject();return this.addContractCall(e,{method:Kt.MethodName.cancel_stream,arguments:[n,r],typeArgs:[i.coinType]})}claimStream(e,i){let n=this.makeObject(i.streamId),r=this.clockObject();return this.addContractCall(e,{method:Kt.MethodName.claim_stream,arguments:[n,r],typeArgs:[i.coinType]})}claimStreamByProxy(e,i){let n=this.makeObject(i.streamId),r=this.vaultObject(),o=this.feeObject(),s=this.clockObject();return this.addContractCall(e,{method:Kt.MethodName.claim_stream_by_proxy,arguments:[n,r,o,s],typeArgs:[i.coinType]})}get createStreamTarget(){return`${this.config.contractId}::${Kt.ModuleName}::${Kt.MethodName.create_stream}`}get setAutoClaimTarget(){return`${this.config.contractId}::${Kt.ModuleName}::${Kt.MethodName.set_auto_claim}`}get cancelStreamTarget(){return`${this.config.contractId}::${Kt.ModuleName}::${Kt.MethodName.cancel_stream}`}get claimStreamTarget(){return`${this.config.contractId}::${Kt.ModuleName}::${Kt.MethodName.claim_stream}`}get claimStreamByProxyTarget(){return`${this.config.contractId}::${Kt.ModuleName}::${Kt.MethodName.claim_stream_by_proxy}`}},zg=class{constructor(t){this.globals=t;let e=t.envConfig.contract;this.feeContract=new Wg(e,t),this.streamContract=new Xa(e,t)}feeContract;streamContract;async createStreams(t){let e=Du.convertCreateStreamInfoToInternal(t);return this.createStreamHelper().buildCreateStreamTransactionBlock(e)}createStreamHelper(){return new Du(this.globals,this.feeContract,this.streamContract)}setAutoClaim(t,e,i){let n=new es.TransactionBlock;return this.streamContract.setAutoClaim(n,{streamId:t,enabled:e,coinType:i})}claimStream(t,e){let i=new es.TransactionBlock;return this.streamContract.claimStream(i,{streamId:t,coinType:e})}claimStreamByProxy(t,e){let i=new es.TransactionBlock;return this.streamContract.claimStreamByProxy(i,{streamId:t,coinType:e})}cancelStream(t,e){let i=new es.TransactionBlock;return this.streamContract.cancelStream(i,{streamId:t,coinType:e}),i}},Fi=class extends ui{constructor(t,e={}){super(0,t,e)}};async function eC(t){let e=[];for(;await t.hasNext();){let i=await t.next();e.push(i)}return e&&Array.isArray(e[0])?e.flat(1):e}var tC=class{constructor(t){this.requester=t,this.curPage=void 0,this.init=!0}curPage;init;async hasNext(){if(this.init)return this.curPage||(this.curPage=await this.requester.doNextRequest()),!!this.curPage.data?.length||this.curPage.hasNext;if(!this.curPage)throw new Error("invalid implementation of iterator");return this.curPage.hasNext}async next(){return this.init?(this.init=!1,this.curPage||(this.curPage=await this.requester.doNextRequest()),this.curPage.data):(this.curPage=await this.requester.doNextRequest(),this.curPage.data)}},Gg=class{constructor(t){this.requester=t,this.pager=new tC(t),this.curData=[],this.cursor=0}cursor;pager;curData;async hasNext(){return this.cursor<this.curData.length-1?!0:this.pager.hasNext()}async next(){for(this.cursor+=1;this.cursor>=this.curData.length;)if(await this.pager.hasNext())this.curData=await this.pager.next(),this.cursor=0;else throw new Error("not more data");return this.curData[this.cursor]}},iC=class extends ui{constructor(t,e,i){super(4,`Not enough balance: ${t}`,{context:{coinType:t,requestAmount:e,gotAmount:i}}),this.coinType=t,this.requestAmount=e,this.gotAmount=i}},nC=25;async function rC(t,e,i,n="0x2::sui::SUI",r=nC){let o=new oC(t,e,n,r),s=BigInt(0),a=[];for(;await o.hasNext()&&s<i;){let l=await o.next();l&&(a.push(l),s+=BigInt(l.balance))}if(s<i)throw new iC(n,i,s);return a}var oC=class extends Gg{constructor(t,e,i,n){super(new sC(t,e,i,n)),this.suiClient=t,this.owner=e,this.coinType=i,this.reqPageSize=n}},sC=class{constructor(t,e,i,n){if(this.suiClient=t,this.owner=e,this.coinType=i,this.reqPageSize=n,n<=0)throw new Fi("Invalid reqPageSize")}nextCursor;async doNextRequest(){let t=await this.suiClient.getCoins({owner:this.owner,coinType:this.coinType,cursor:this.nextCursor,limit:this.reqPageSize});return this.nextCursor=t.nextCursor,{data:t.data,hasNext:t.hasNextPage}}},aC=class extends ui{constructor(){super(7,"Connected wallet is not creator")}},am=class extends ui{constructor(){super(8,"Connected wallet is not recipient")}},cm=class extends ui{constructor(t,e){super(6,t,{context:e})}},cC=class extends ui{constructor(t){super(5,"Stream not found",{context:{streamId:t}})}},lC=(1n<<64n)-1n,Ha=1e3;function lm(t){let e;typeof t=="number"?e=t:typeof t=="bigint"?e=Number(t):e=t.toMillis();let i=Math.round(e/Ha);return Te.fromMillis(i*Ha)}function um(t){let e;typeof t=="number"?e=t:typeof t=="bigint"?e=Number(t):e=t.toMillis();let i=Math.round(e/Ha);return je.fromMillis(i*Ha)}var Uu=class En{constructor(e,i,n){this.globals=e,this.streamId=i,this.rawData=n,this.streamContract=new Xa(e.envConfig.contract,e)}streamContract;type="Stream";static async new(e,i){let n=await En.fetchStreamData(e,i);return new En(e,i,n)}static fromObjectData(e,i,n){let r=En.parseRawStreamData(i,n);return new En(e,i,r)}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 En.fetchStreamData(this.globals,this.streamId)}refreshWithData(e){if(e.data?.objectId!==this.streamId)throw new Fi("Object Id does not align");this.rawData=En.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 aC;let e=new ts.TransactionBlock;return this.streamContract.cancelStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async claim(){if(await this.globals.walletAddress()!==this.recipient)throw new am;let e=new ts.TransactionBlock;return this.streamContract.claimStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async setAutoClaim(e){if(await this.globals.walletAddress()!==this.recipient)throw new am;let i=new ts.TransactionBlock;return this.streamContract.setAutoClaim(i,{streamId:this.streamId,coinType:this.coinType,enabled:e}),i}async claimByProxy(){let e=new ts.TransactionBlock;return this.streamContract.claimStreamByProxy(e,{streamId:this.streamId,coinType:this.coinType}),e}get wallet(){return this.globals.wallet}get client(){return this.globals.suiClient}get coinType(){return(0,ss.normalizeStructTag)(this.rawData.coinType)}get progress(){return{status:this.streamStatus,total:this.totalAmount,streamed:this.streamedAmount,claimed:this.claimedAmount,claimable:this.claimable,canceled:this.canceledAmount}}get balance(){return this.rawData.balance}get autoClaim(){return this.rawData.autoClaim}get amountPerEpoch(){return this.rawData.config.amountPerEpoch}get cancelable(){return this.rawData.config.cancelable}get cliff(){return this.rawData.config.cliff}get creator(){return this.rawData.config.creator}get interval(){return um(this.rawData.config.epochInterval)}get groupId(){let{metadata:e}=this.rawData.config;return Pu(e).groupId}get name(){let{metadata:e}=this.rawData.config;return Pu(e).name}get recipient(){return this.rawData.config.recipient}get timeStart(){return lm(this.rawData.config.timeStart)}get duration(){let e=this.rawData.config,i=e.epochInterval*e.totalEpoch;return um(i)}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:lm((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===lC?0n:this.rawData.status.epochClaimed*this.amountPerEpoch+this.cliff}get currentEpoch(){let e=Te.now().toMillis(),i=this.timeStart.toMillis();if(e<i)return-1n;let n=Math.floor((e-i)/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,i){let n=await e.suiClient.getObject({id:i,options:{showContent:!0,showType:!0}});return En.parseRawStreamData(i,n)}static parseRawStreamData(e,i){if(i.error)throw i.error.code==="notExists"?new cC(e):new cm(`get stream data: ${i.error.code}`,{streamId:e,...i.error});let n=i.data.content;if(n.dataType!=="moveObject")throw new cm("Unexpected object type",{gotType:n.dataType});let{typeParams:r}=(0,ss.parseStructTag)(n.type),o=(0,ss.normalizeStructTag)(r[0]),s=n.fields,a=s.config.fields,l=s.status.fields;return{coinType:o,autoClaim:s.auto_claim,balance:BigInt(s.balance.fields.balance),config:{amountPerEpoch:BigInt(a.amount_per_epoch),cancelable:a.cancelable,cliff:BigInt(a.cliff),creator:a.creator,epochInterval:BigInt(a.epoch_interval),metadata:a.metadata,recipient:a.recipient,timeStart:BigInt(a.time_start),totalEpoch:BigInt(a.total_epoch)},status:{status:l.status,epochCanceled:BigInt(l.epoch_canceled),epochClaimed:BigInt(l.epoch_claimed)}}}},uC=class extends ui{constructor(t,e){super(12,`Transaction failed: ${e}`,{context:{status:t,msg:e}})}},dC=1e3,fC=class{constructor(t){this.globals=t,this.coinMetaHelper=new hC(t.suiClient),this.createStreamHelper=new zg(t).createStreamHelper()}coinMetaHelper;createStreamHelper;getStreamIdsFromCreateStreamResponse(t){if(t.effects?.status.status!=="success")throw new uC(t.effects?.status.status,t.effects?.status.error);return t.objectChanges.filter(e=>e.type==="created"&&e.objectType.startsWith(`${this.globals.envConfig.contract.contractId}::stream::Stream`)).map(e=>e.objectId)}calculateCreateStreamFees(t){return this.createStreamHelper.calculateCreateStreamFees(t)}feeParams(){return this.createStreamHelper.feeParams()}calculateStreamAmount(t){if(t.steps===0n)throw new li("Invalid stream steps: 0");let e=t.cliff?t.cliff:{numerator:0n,denominator:100n},i=t.totalAmount*e.numerator/e.denominator,n=(t.totalAmount-i)/t.steps,r={realTotalAmount:n*t.steps+i,cliffAmount:i,amountPerStep:n};return this.validateStreamAmount(r,t.totalAmount),r}calculateTimelineByInterval(t){if(t.steps===0n)throw new li("Invalid stream steps: 0");let e=t.timeStart.plus(t.interval.toMillis()*Number(t.steps)),i={timeStart:t.timeStart,timeEnd:e,interval:t.interval,steps:t.steps};return this.validateTimeline(i),i}calculateTimelineByTotalDuration(t){if(t.steps===0n)throw new li("Invalid stream steps: 0");let e=BigInt(t.total.toMillis())/t.steps,i=t.timeStart.plus(je.fromMillis(Number(e*t.steps))),n={timeStart:t.timeStart,timeEnd:i,interval:je.fromMillis(Number(e)),steps:t.steps};return this.validateTimeline(n),n}async getBalance(t,e){let i=await this.globals.suiClient.getBalance({owner:t,coinType:e}),n=await this.getCoinMeta(e);return{...i,coinType:(0,ro.normalizeStructTag)(i.coinType),coinMeta:n}}async getAllBalance(t){let e=await this.globals.suiClient.getAllBalances({owner:t}),i=await Promise.all(e.map(n=>this.getCoinMeta(n.coinType)));return e.map((n,r)=>({...n,coinType:(0,ro.normalizeStructTag)(n.coinType),coinMeta:i[r]}))}async getCoinMeta(t){return this.coinMetaHelper.getCoinMeta(t)}async simulateTransactionBlock(t){return this.globals.suiClient.devInspectTransactionBlock({transactionBlock:t,sender:await this.globals.wallet.address()})}validateStreamAmount(t,e){if(t.amountPerStep===0n)throw new li("Stream amount too small","totalAmount",e);if(t.cliffAmount>t.realTotalAmount)throw new li("Invalid cliff settings")}validateTimeline(t){if(t.interval.toMillis()<dC)throw new li("Interval shall be at least 1 second","interval",t.interval)}},hC=class{constructor(t){this.suiClient=t,this.coinMetaReg=new Map}coinMetaReg;async getCoinMeta(t){let e=(0,ro.normalizeStructTag)(t||ro.SUI_TYPE_ARG);if(this.coinMetaReg.has(e))return this.coinMetaReg.get(e);let i=await this.queryCoinMeta(e);return i&&this.coinMetaReg.set(e,i),i}async queryCoinMeta(t){return await this.suiClient.getCoinMetadata({coinType:t})||void 0}},Cu=class extends ui{constructor(t,e){super(9,`Invalid stream group: ${t}`,{context:e})}},pC=25;async function dm(t,e,i){let n=new Hg(e),r=new Zg(t,n,i);return await eC(r)}var Hg=class{constructor(t){this.ids=t,this.cursor=-1}cursor;async hasNext(){return this.cursor<this.ids.length-1}async next(){if(this.cursor+=1,this.cursor>=this.ids.length)throw new Error("invalid iterator implementation");return this.ids[this.cursor]}},Zg=class extends Gg{constructor(t,e,i){super(new mC(t,e,i)),this.suiClient=t,this.idIter=e,this.options=i}},mC=class{constructor(t,e,i){this.suiClient=t,this.stringIter=e,this.options=i,this.filter=i?.filter,this.pageSize=i?.pageSize||pC,this.objectOptions=i?.objectOptions||{showType:!0,showContent:!0}}filter;pageSize;objectOptions;async doNextRequest(){let t=[];for(;t.length<this.pageSize&&await this.stringIter.hasNext();){let n=await this.stringIter.next();n&&t.push(n)}let e=await this.suiClient.multiGetObjects({ids:t,options:this.objectOptions}),i;if(this.filter){let{filter:n}=this;i=e.filter(r=>n?.(r))}else i=e;return{data:i,hasNext:await this.stringIter.hasNext()}}},gC=class qa{constructor(e,i){if(this.globals=e,this.streams=i,i.length===0)throw new Cu("stream size 0");let n=i.map(r=>r.groupId);if(new Set(n).size!==1)throw new li("Stream does not have same group ID")}type="StreamGroup";static async new(e,i){let n=await dm(e.suiClient,i);return n.forEach(r=>{if(!r)throw new Fi("stream group object data undefined")}),qa.newFromObjectResponse(e,i,n)}static async newFromObjectResponse(e,i,n){let r=await qa.parseGroupStreams(e,i,n);return new qa(e,r)}static checkStreamGroup(e){let i=e.map(o=>o.groupCommonInfo),n=i[0],r=!0;return i.forEach(o=>{_C(n,o)||(r=!1)}),r}async refresh(){let e=await dm(this.globals.suiClient,this.streams.map(i=>i.streamId));this.streams.forEach((i,n)=>{i.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,i)=>e+i.totalAmount,0n),start:this.streams[0].timeStart,end:this.streams[0].timeEnd,cancelable:this.streams[0].cancelable,cliffAmount:this.streams.reduce((e,i)=>e+i.cliff,0n),duration:this.streams[0].duration,interval:this.streams[0].interval,steps:this.streams[0].totalSteps,nextReleaseAmount:this.streams.reduce((e,i)=>i.nextReleaseAmount===null?e:e+i.nextReleaseAmount,0n),nextReleaseDate:this.streams[0].nextReleaseDate}}get progress(){return{total:this.streams.reduce((e,i)=>e+i.totalAmount,0n),streamed:this.streams.reduce((e,i)=>e+i.streamedAmount,0n),claimed:this.streams.reduce((e,i)=>e+i.claimedAmount,0n),claimable:this.streams.reduce((e,i)=>e+i.claimable,0n),canceled:this.streams.reduce((e,i)=>e+i.canceledAmount,0n)}}async historyEvents(e){return this.globals.backend.getStreamHistory({groupId:this.groupId,pagination:e})}static async parseGroupStreams(e,i,n){let r=n.map((o,s)=>Uu.fromObjectData(e,i[s],o)).filter(o=>!!o);if(new Set(r.map(o=>o.groupId)).size!==1)throw new Cu("Not same group ID");if(!this.checkStreamGroup(r))throw new Cu("Not same stream settings");return r}};function _C(t,e){return t.name===e.name&&t.groupId===e.groupId&&t.creator===e.creator&&t.start.toMillis()===e.start.toMillis()&&t.interval.toMillis()===e.interval.toMillis()&&t.steps===e.steps&&t.cancelable===e.cancelable}var fm=class Eu{constructor(e,i){this.it=e,this.pageSize=i}static async newIncoming(e){let i=await hm.newIncoming(e);return new Eu(i,e.pageSize)}static async newOutgoing(e){let i=await hm.newOutgoing(e);return new Eu(i,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}},hm=class ju{constructor(e){this.requester=e}cachedNext;static async newIncoming(e){let i=await pm.newIncomingQuery(e);return new ju(i)}static async newOutgoing(e){let i=await pm.newOutgoingQuery(e);return new ju(i)}async hasNext(){return this.cachedNext===void 0&&(this.cachedNext=await this.requester.doNextRequest()),this.cachedNext!==null}async next(){if(this.cachedNext===void 0){let i=await this.requester.doNextRequest();if(i===null)throw new Fi("No more results");return i}let e=this.cachedNext;if(this.cachedNext=void 0,e===null)throw new Fi("No more results");return e}},pm=class Bu{constructor(e,i,n,r){this.globals=e,this.recipient=i,this.groupRefs=n,this.query=r,this.current=0;let o=new Hg(n.flat().map(s=>s.streamId));this.objectIter=new Zg(e.suiClient,o)}current=0;objectIter;static async newIncomingQuery(e){let i=kC(e.query),n=await e.globals.walletAddress(),r=(await e.globals.backend.getIncomingStreams(n,i)).filter(s=>(0,Rn.normalizeSuiAddress)(s.recipient)===(0,Rn.normalizeSuiAddress)(n)),o=mm(r);return new Bu(e.globals,n,o,e.query)}static async newOutgoingQuery(e){let i=CC(e.query),n=await e.globals.walletAddress(),r=await e.globals.backend.getOutgoingStreams(n,i),o=mm(r);return new Bu(e.globals,n,o,e.query)}async doNextRequest(){if(this.current>=this.groupRefs.length)return null;let e=this.groupRefs[this.current];if(e.length===1){let i=await wC(this.globals,e[0].streamId,this.objectIter);return this.current++,Xg(i,this.query)?i:this.doNextRequest()}if(e.length>1){let i=await vC(this.globals,e.map(n=>n.streamId),this.objectIter);return this.current++,yC(i,this.query)?i:this.doNextRequest()}throw new Fi("Stream group with no stream")}};function mm(t){let e=new Map;return t.forEach(i=>{let n=e.get(i.groupId);n?(n.push(i),e.set(i.groupId,n)):e.set(i.groupId,[i])}),Array.from(e.values()).sort((i,n)=>Te.fromISO(n[0].createDate).toMillis()-Te.fromISO(i[0].createDate).toMillis())}function Xg(t,e){if(e===void 0)return!0;let i=bC(t,e.status);if(e&&"claimable"in e&&e.claimable!==void 0){let n=e.claimable?t.progress.claimable!==0n:t.progress.claimable===0n;return i&&n}return i}function bC(t,e){return e===void 0?!0:Array.isArray(e)?e.includes(t.progress.status):t.progress.status===e}function yC(t,e){if(!e)return!0;let i=!1;return t.streams.forEach(n=>{Xg(n,e)&&(i=!0)}),i}async function wC(t,e,i){let n=await Jg(i,e);return Uu.fromObjectData(t,e,n)}async function vC(t,e,i){let n=[];for(;n.length<e.length;){let r=await Jg(i,e[n.length]);n.push(r)}return gC.newFromObjectResponse(t,e,n)}async function Jg(t,e){if(!await t.hasNext())throw new Fi("object iterator has been consumed");let i=await t.next();if(!i||i.error||i.data===void 0||i.data===null)throw new Fi("object iterator undefined response",{cause:i?.error});if(i?.data?.objectId!==e)throw new Fi("stream id not aligned");return i}function kC(t){return{status:Ku(t?.status),coinType:Yg(t?.coinType),sender:Qg(t?.sender)}}function CC(t){return{status:Ku(t?.status),coinType:Yg(t?.coinType),recipient:Qg(t?.recipient)}}function Ku(t){return t===void 0||t.length===0?"all":Array.isArray(t)?t.reduce((e,i)=>{let n=Ku(i);return!e||e===n?n:"all"},void 0):TC(t)}function TC(t){switch(t){case"STREAMING":case"STREAMED":case"CANCELED":return"active";case"COMPLETED":case"SETTLED":return"inactive";default:throw new li("Unknown stream filtered status")}}function Yg(t){if(t)return Array.isArray(t)?t.length!==0?t.map(e=>(0,Rn.normalizeStructTag)(e)):void 0:(0,Rn.normalizeStructTag)(t)}function Qg(t){if(t)return Array.isArray(t)?t.length!==0?t.map(e=>(0,Rn.normalizeSuiAddress)(e)):void 0:(0,Rn.normalizeSuiAddress)(t)}var SC=class{constructor(t){this.msafe=t}get type(){return"msafe"}async address(){return this.msafe.address()}async requestCoins(t){return this.msafe.requestCoins(t)}},xC=class{constructor(t){this.account=t}async address(){return this.account.address}},AC=class{constructor(t,e){this.singleWallet=t,this.suiClient=e}get type(){return"single"}async address(){return this.singleWallet.address()}async requestCoins(t){return Promise.all(t.map(e=>this.requestCoin(e)))}async requestCoin(t){if($g(t.coinType,ur.SUI_TYPE_ARG))return{primaryCoin:Ug};if(t.amount<=0)throw new li("Invalid coin request","coinAmount",t.amount);let e=await rC(this.suiClient,await this.address(),t.amount,t.coinType);if(e.length===0)throw new Fi("no coins available");return{primaryCoin:e[0].coinObjectId,mergedCoins:e.slice(1).map(i=>i.coinObjectId)}}},IC=class{globals;helper;constructor(t,e){this.globals=Bg.new(t,e),this.helper=new fC(this.globals)}connectSingleWallet(t){let e=new AC(t,this.globals.suiClient);this.globals.connectWallet(e)}connectMSafeAccount(t){let e=new SC(t);this.globals.connectWallet(e)}async createStream(t){return this.builder().createStreams(t)}async getStream(t){return Uu.new(this.globals,t)}async getIncomingStreams(t,e=10){return fm.newIncoming({globals:this.globals,query:t,pageSize:e})}async getOutgoingStreams(t,e=10){return fm.newOutgoing({globals:this.globals,query:t,pageSize:e})}async getCoinTypesForStreamFilter(){let t=await this.wallet.address();return(await this.globals.backend.getAllCoinTypes(t)).map(e=>(0,ur.normalizeStructTag)(e))}async getRecipientsForStreamFilter(t){let e=await this.wallet.address();return(await this.globals.backend.getAllRecipients(e,t)).map(i=>(0,ur.normalizeSuiAddress)(i))}async getCreatorsForStreamFilter(t){let e=await this.wallet.address();return(await this.globals.backend.getAllSenders(e,t)).map(i=>(0,ur.normalizeSuiAddress)(i))}get wallet(){return this.globals.wallet}builder(){return new zg(this.globals)}},OC=class{constructor(t){this.data=t}serialize(){return JSON.stringify((0,e0.default)(this.data))}},cs=class extends OC{application="mpay";getClient(t,e){let i=new IC(t==="sui:mainnet"?"prod":"dev");return i.connectSingleWallet(new xC(e)),i}},gm=class extends cs{constructor(t){super(t),this.data=t}txType=_g.TransactionType.Stream;txSubType="Cancel";async build(t){let{network:e,account:i}=t;return(await this.getClient(e,i).getStream(this.data.streamId)).cancel()}},_m=class extends cs{constructor(t){super(t),this.data=t}txType=t0.TransactionType.Stream;txSubType="ClaimByProxy";async build(t){let{network:e,account:i}=t;return(await this.getClient(e,i).getStream(this.data.streamId)).claimByProxy()}},bm=class extends cs{constructor(t){super(t),this.data=t}txType=i0.TransactionType.Stream;txSubType="Claim";async build(t){let{network:e,account:i}=t;return(await this.getClient(e,i).getStream(this.data.streamId)).claim()}},ym=class extends cs{constructor(t){super(t),this.data=t}txType=n0.TransactionType.Stream;txSubType="CreateStream";async build(t){let{network:e,account:i}=t;return this.getClient(e,i).createStream(this.data)}},r0=class La{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return La.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return La.getOwnedObjectId(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return BigInt(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,jn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return La.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}static getPureInputValue(e,i){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 Nu.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,jn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,jn.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,jn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,jn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){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 Nu.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,jn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},PC=class{constructor(t,e){this.globals=t,this.txb=e}decode(){let t=this.decodeCreateStreamInfo(),e=this.createStreamHelper().calculateCreateStreamFees(t);return{type:"CreateStream",info:t,fees:e}}decodeCreateStreamInfo(){let t=this.createStreamTransactions().map(e=>this.getCreationInfoFromMoveCall(e));return this.aggregateGroupStreamInfo(t)}createStreamTransactions(){let t=this.transactions.filter(e=>e.kind==="MoveCall"&&Yr(e.target,this.contract.createStreamTarget));if(t.length===0)throw new Fi("No create stream transactions");return t.map(e=>new r0(e,this.txb))}getCreationInfoFromMoveCall(t){let e=t.decodeInputString(4),{name:i,groupId:n}=Pu(e),r=t.decodeInputAddress(5),o=t.decodeInputU64(6),s=t.decodeInputU64(7),a=t.decodeInputU64(8),l=t.decodeInputU64(9),u=t.decodeInputU64(10),h=t.decodeInputBool(11),y=t.typeArg(0);return{name:i,groupId:n,recipient:r,timeStart:o,cliff:s,epochInterval:a,totalEpoch:l,amountPerEpoch:u,cancelable:h,coinType:y}}aggregateGroupStreamInfo(t){if(new Set(t.map(i=>JSON.stringify({name:i.name,groupId:i.groupId,timeStart:String(i.timeStart),epochInterval:String(i.epochInterval),totalEpoch:String(i.totalEpoch),cancelable:i.cancelable,coinType:i.coinType}))).size!==1)throw new li("Stream group not have common info");let e=t.map(i=>({address:i.recipient,amountPerStep:i.amountPerEpoch,cliffAmount:i.cliff}));return{name:t[0].name,coinType:t[0].coinType,recipients:e,interval:t[0].epochInterval,steps:t[0].totalEpoch,startTimeMs:t[0].timeStart,cancelable:t[0].cancelable}}mergeCoinTransactions(){return this.transactions.filter(t=>t.kind==="MergeCoins")}get transactions(){return this.txb.blockData.transactions}get contract(){return new Xa(this.globals.envConfig.contract,this.globals)}get feeContract(){return new Wg(this.globals.envConfig.contract,this.globals)}createStreamHelper(){return new Du(this.globals,this.feeContract,this.contract)}getInputArg(t){if(t.kind!=="Input")throw new Error("not input type");return"value"in t?t:this.txb.blockData.inputs[t.index]}},DC=class{constructor(t,e){this.globals=t,this.txb=e,this.contract=new Xa(t.envConfig.contract,t)}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"&&Yr(t.target,this.contract.createStreamTarget))!==-1}isSetAutoClaimTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&Yr(this.transactions[0].target,this.contract.setAutoClaimTarget)}isCancelStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&Yr(this.transactions[0].target,this.contract.cancelStreamTarget)}isClaimStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&Yr(this.transactions[0].target,this.contract.claimStreamTarget)}isClaimByProxyTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&Yr(this.transactions[0].target,this.contract.claimStreamByProxyTarget)}decodeCreateStreamTransaction(){return new PC(this.globals,this.txb).decode()}decodeSetAutoClaimTransaction(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeInputBool(1);return{type:"SetAutoClaim",streamId:t,enabled:e}}decodeClaimTransaction(){return{type:"Claim",streamId:this.helper.decodeSharedObjectId(0)}}decodeClaimByProxyTransaction(){return{type:"ClaimByProxy",streamId:this.helper.decodeSharedObjectId(0)}}decodeCancelStreamTransaction(){return{type:"Cancel",streamId:this.helper.decodeSharedObjectId(0)}}get helper(){let t=this.transactions[0];return new r0(t,this.txb)}},wm=class extends cs{constructor(t){super(t),this.data=t}txType=o0.TransactionType.Stream;txSubType="SetAutoClaim";async build(t){let{network:e,account:i}=t;return(await this.getClient(e,i).getStream(this.data.streamId)).setAutoClaim(this.data.enabled)}},MC=class{application="mpay";async deserialize(t){let{network:e,transactionBlock:i}=t,n=Bg.new(e==="sui:mainnet"?"prod":"dev"),r=new DC(n,i).decode(),o;switch(r.type){case"CreateStream":o=new ym(r.info);break;case"SetAutoClaim":o=new wm({streamId:r.streamId,enabled:r.enabled});break;case"Claim":o=new bm({streamId:r.streamId});break;case"ClaimByProxy":o=new _m({streamId:r.streamId});break;case"Cancel":o=new gm({streamId:r.streamId});break;default:throw new Error(`Unknown transaction type: ${r}`)}return{txType:o.txType,txSubType:o.txSubType,intentionData:o.data}}async build(t){let{intentionData:e}=t,i;switch(t.txSubType){case"CreateStream":i=new ym(e);break;case"Claim":i=new bm(e);break;case"ClaimByProxy":i=new _m(e);break;case"SetAutoClaim":i=new wm(e);break;case"Cancel":i=new gm(e);break;default:throw new Error("not implemented")}return i.build({...t})}},EC=class a0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:i,account:n}=e;return(0,s0.buildCoinTransferTxb)(i,this.data,n.address)}static fromData(e){return new a0(e)}},jC=class l0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:i,account:n}=e;return(0,c0.buildObjectTransferTxb)(i,this.data,n.address)}static fromData(e){return new l0(e)}},BC=class f0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:i}=e,n=d0.TransactionBlock.from(this.data.content);if(!(0,u0.isSameAddress)(n.blockData.sender,i.address))throw new Error("Invalid sender address");return n}static fromData(e){return new f0(e)}},NC=class{application;constructor(){this.application=io.TransactionDefaultApplication}deserialize(){throw new Error("MSafe core transaction intention should be build from API")}async build(t){let{suiClient:e,account:i}=t,n;switch(t.txSubType){case io.TransactionSubTypes.assets.coin.send:n=EC.fromData(t.intentionData);break;case io.TransactionSubTypes.assets.object.send:n=jC.fromData(t.intentionData);break;case io.TransactionSubTypes.others.plain:n=BC.fromData(t.intentionData);break;default:throw new Error("not implemented")}return n.build({suiClient:e,account:i})}},FC={ProtocolPackage:"0x7c9b90b3fda0fa4aa8ee88ae6c4a0b83c773f74936b5354448cb94662e94442d",StorageId:"0xbb4e2f4b6205c2e2a2db47aeb4f830796ec7c005f88537ee775986639bc442fe",Incentive:"0xaaf735bf83ff564e1b219a0d644de894ef5bdc4b2250b126b2a46dd002331821",IncentiveV2:"0xf87a8acb8b81d14307894d12595541a73f19933f88e1326d5be349c7a6f7559c",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"},usdc:{name:"USDC",assetId:1,coinType:"usdc",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"}}},ke=FC,RC=class{constructor(t){this.txb=t}decode(){if(console.log("txb",this.txb),this.isClaimRewardTransaction())return this.decodeClaimReward();if(this.isEntryBorrowTransaction())return this.decodeEntryBorrow();if(this.isEntryDepositTransaction())return this.decodeEntryDeposit();if(this.isEntryRepayTransaction())return this.decodeEntryRepay();if(this.isEntryWithdrawTransaction())return this.decodeEntryWithdraw();throw new Error("Unknown transaction type")}get transactions(){return this.txb.blockData.transactions}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isClaimRewardTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::claim_reward`)}isEntryBorrowTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::entry_borrow`)}isEntryDepositTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::entry_deposit`)}isEntryRepayTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::entry_repay`)}isEntryWithdrawTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::entry_withdraw`)}findPoolByAssetId(t){let e=Object.values(ke.pool).find(i=>i.assetId===t);if(!e)throw new Error("Pool not found");return e}decodeClaimReward(){let t=[];return this.transactions.forEach(e=>{if(e.kind==="MoveCall"&&e.target===`${ke.ProtocolPackage}::incentive_v2::claim_reward`){let i=new vm(e,this.txb),n=i.decodeInputU8(4),r=i.decodeInputU8(5),o=i.decodeSharedObjectId(2),s=this.findPoolByAssetId(n),a=[...e.typeArguments];t.push({coinType:s.coinType,option:r,typeArguments:a,assetId:n,poolId:o})}}),console.log("decode claims",t),{txType:Qr.TransactionType.Other,type:"ClaimReward",intentionData:{claims:t}}}decodeEntryBorrow(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(5),i=this.findPoolByAssetId(t);return{txType:Qr.TransactionType.Other,type:"EntryBorrow",intentionData:{amount:e,coinType:i.coinType}}}decodeEntryDeposit(){let t=this.helper.decodeInputU8(3),e=this.helper.decodeInputU64(5),i=this.findPoolByAssetId(t);return{txType:Qr.TransactionType.Other,type:"EntryDeposit",intentionData:{amount:e,coinType:i.coinType}}}decodeEntryRepay(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(6),i=this.findPoolByAssetId(t);return{txType:Qr.TransactionType.Other,type:"EntryRepay",intentionData:{amount:e,coinType:i.coinType}}}decodeEntryWithdraw(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(5),i=this.findPoolByAssetId(t);return{txType:Qr.TransactionType.Other,type:"EntryWithdraw",intentionData:{amount:e,coinType:i.coinType}}}get helper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(ke.ProtocolPackage));return new vm(t,this.txb)}},vm=class $a{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return $a.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return $a.getOwnedObjectId(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return Number(i)}decodeInputU8(e){let i=this.decodePureArg(e,"u8");return Number(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,Bn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return $a.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}static getPureInputValue(e,i){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 Fu.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Bn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Bn.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Bn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Bn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){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 Fu.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,Bn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};function km(t,e,i,n){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::entry_deposit`,arguments:[t.object("0x06"),t.object(ke.StorageId),t.object(e.poolId),t.pure(e.assetId),i,t.pure(n),t.object(ke.Incentive),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function qC(t,e,i){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::entry_withdraw`,arguments:[t.object("0x06"),t.object(ke.PriceOracle),t.object(ke.StorageId),t.object(e.poolId),t.pure(e.assetId),t.pure(i),t.object(ke.Incentive),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function LC(t,e,i){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::entry_borrow`,arguments:[t.object("0x06"),t.object(ke.PriceOracle),t.object(ke.StorageId),t.object(e.poolId),t.pure(e.assetId),t.pure(i),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function Cm(t,e,i,n){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::entry_repay`,arguments:[t.object("0x06"),t.object(ke.PriceOracle),t.object(ke.StorageId),t.object(e.poolId),t.pure(e.assetId),i,t.pure(n),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function $C(t,e,i,n,r){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::claim_reward`,arguments:[t.object("0x06"),t.object(ke.IncentiveV2),t.object(i),t.object(ke.StorageId),t.pure(e),t.pure(n)],typeArguments:r}),t}var UC=class m0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{claims:e}=this.data,i=new p0.TransactionBlock;return e.forEach(n=>{let{assetId:r,poolId:o,option:s,typeArguments:a}=n;$C(i,r,o,s,a)}),i}static fromData(e){return new m0(e)}},KC=class _0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{coinType:e,amount:i}=this.data,n=new g0.TransactionBlock;console.log("build",this.data);let r=ke.pool[e];if(!r)throw new Error(`${e} not support, please use ${Object.keys(ke.pool).join(", ")}.`);return LC(n,r,i)}static fromData(e){return new _0(e)}};async function y0(t,e,i){let n=await t.getCoins({owner:e,coinType:i});return console.log("getTokenObjs",e,n),n}var VC=class w0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:i,account:n}=e,{coinType:r,amount:o}=this.data,s=new b0.TransactionBlock;if(console.log("build",this.data),r==="sui"){let[h]=s.splitCoins(s.gas,[o]);return km(s,ke.pool.sui,h,o)}let a=ke.pool[r];if(!a)throw new Error(`${r} not support, please use ${Object.keys(ke.pool).join(", ")}.`);let l=await y0(i,n.address,a.type);if(!l.data[0])throw new Error(`Insufficient balance for ${a.name} Token`);let u=l.data[0].coinObjectId;if(l.data.length>=2){let h=1;for(;h<l.data.length;)s.mergeCoins(u,[l.data[h].coinObjectId]),h++}return km(s,a,s.object(u),o)}static fromData(e){return new w0(e)}},WC=class k0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:i,account:n}=e,{coinType:r,amount:o}=this.data,s=new v0.TransactionBlock;if(console.log("build",this.data),r==="sui"){let[h]=s.splitCoins(s.gas,[o]);return Cm(s,ke.pool.sui,h,o)}let a=ke.pool[r];if(!a)throw new Error(`${r} not support, please use ${Object.keys(ke.pool).join(", ")}.`);let l=await y0(i,n.address,a.type);if(!l.data[0])throw new Error(`Insufficient balance for ${a.name} Token`);let u=l.data[0].coinObjectId;if(l.data.length>=2){let h=1;for(;h<l.data.length;)s.mergeCoins(u,[l.data[h].coinObjectId]),h++}return Cm(s,a,s.object(u),o)}static fromData(e){return new k0(e)}},zC=class T0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{coinType:e,amount:i}=this.data,n=new C0.TransactionBlock;console.log("build",this.data);let r=ke.pool[e];if(!r)throw new Error(`${e} not support, please use ${Object.keys(ke.pool).join(", ")}.`);return qC(n,r,i)}static fromData(e){return new T0(e)}},GC=class{application="navi";async deserialize(t){let{transactionBlock:e}=t,i=new RC(e).decode();return{txType:h0.TransactionType.Other,txSubType:i.type,intentionData:i.intentionData}}async build(t){let{suiClient:e,account:i}=t,n;switch(t.txSubType){case"EntryDeposit":n=VC.fromData(t.intentionData);break;case"EntryBorrow":n=KC.fromData(t.intentionData);break;case"EntryRepay":n=WC.fromData(t.intentionData);break;case"EntryWithdraw":n=zC.fromData(t.intentionData);break;case"ClaimReward":n=UC.fromData(t.intentionData);break;default:throw new Error("not implemented")}return n.build({suiClient:e,account:i})}},HC="msafe-plain-tx",ZC=Ja.TransactionSubTypes.others.plain,XC=class{application;constructor(){this.application=HC}async deserialize(t){let{transactionBlock:e,suiClient:i}=t,n=await e.build({client:i});return{txType:Ja.TransactionType.Other,txSubType:ZC,intentionData:{content:(0,Ya.toHEX)(n)}}}async build(t){let{suiClient:e,account:i}=t,n=S0.TransactionBlock.from((0,Ya.fromHEX)(t.intentionData.content)),r=await e.devInspectTransactionBlock({transactionBlock:n,sender:i.address});if(r.effects.status.status!=="success")throw new Error(r.effects.status.error);return n}},JC=class{apps;constructor(t){this.apps=new Map(t.map(e=>[e.application,e]))}getAppHelper(t){let e=this.apps.get(t);if(!e)throw new Error(`${t} not registered`);return e}},Qa="6601955b8b0024600a917079",A0="0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf",Ua="0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",no="0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6::sca::SCA",ec=["eth","btc","usdc","usdt","sui","apt","sol","cetus","afsui","hasui","vsui","sca"],I0=["eth","btc","usdc","usdt","sui","apt","sol","cetus","afsui","hasui","vsui","sca"],Ru=["seth","ssui","susdc","susdt","scetus","safsui","shasui","svsui"],YC=["sui"],Ka=["sui","usdc","usdt"],QC={eth:8,btc:8,usdc:6,usdt:6,sui:9,apt:8,sol:8,sca:9,cetus:9,afsui:9,hasui:9,vsui:9,seth:8,sbtc:8,susdc:6,susdt:6,ssui:9,sapt:8,ssol:8,scetus:9,safsui:9,shasui:9,svsui:9,ssca:9},O0={seth:"sui",ssui:"sui",susdc:"sui",susdt:"sui",scetus:"sui",safsui:"sui",shasui:"sui",svsui:"sui"},eT={sui:["sui","sca"],usdc:["sui","sca"],usdt:["sui","sca"]},tT={sui:"0x0000000000000000000000000000000000000000000000000000000000000002",eth:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",btc:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",usdc:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",usdt:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",apt:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",sol:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",cetus:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",afsui:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",hasui:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",vsui:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",sca:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6"},ki={eth:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",btc:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",usdc:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",usdt:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",apt:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",sol:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8"},Tm={vsui:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55"},iT=class{constructor(t,e){this.txb=t,this._builder=e}_builder;decode(){if(this.isStakeScaFirsTime()||this.isStakeMoreSca())return this.decodeStakeSca();if(this.isSupplyWithStakeSpoolTransaction())return this.decodeSupplyWithStakeSpool();if(this.isExtendPeriodAndStakeMoreSca())return this.decodePeriodAndStakeMoreSca();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.isWithdrawLendingTransaction())return this.decodeWithdrawLending();if(this.isSupplyLendingTransaction())return this.decodeSupplyLending();if(this.isBorrowWithBoostTransaction())return this.decodeBorrowWithBoost();if(this.isBorrowTransaction())return this.decodeBorrow();if(this.isRepayTransaction())return this.decodeRepay();if(this.isUnstakeSpoolTransaction())return this.decodeUnstakeSpool();if(this.isClaimRewardTransaction())return this.decodeClaimReward();if(this.isRenewExpiredVeSca())return this.decodeRenewExpiredVeSca();if(this.isExtendPeriod())return this.decodeExtendStakePeriod();if(this.isOpenObligationTransaction())return this.decodeOpenObligation();if(this.isRedeemSca())return this.decodeRedeemSca();if(this.isMigrateAndClaim())return this.decodeMigrateAndClaim();throw new Error("Unknown transaction type")}get coreId(){return{protocolPkg:this._builder.address.get("core.packages.protocol.id"),market:this._builder.address.get("core.market"),version:this._builder.address.get("core.version"),coinDecimalsRegistry:this._builder.address.get("core.coinDecimalsRegistry"),xOracle:this._builder.address.get("core.oracles.xOracle"),spoolPkg:this._builder.address.get("spool.id"),borrowIncentivePkg:this._builder.address.get("borrowIncentive.id"),veScaPkgId:this._builder.address.get("vesca.id")}}get transactions(){return this.txb.blockData.transactions}get inputTransaction(){return this.txb.blockData.inputs}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isSupplyLendingTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::mint::mint`)}isSupplyWithStakeSpoolTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.protocolPkg}::mint::mint`),e=this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::stake`);return!!t&&!!e}isUnstakeAndWithdrawTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::unstake`),e=this.getMoveCallTransaction(`${this.coreId.protocolPkg}::redeem::redeem`);return!!t&&!!e}isStakeSpoolTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::stake`)}isWithdrawLendingTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::redeem::redeem`)}isDepositCollateralTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::deposit_collateral::deposit_collateral`)}isWithdrawCollateralTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::withdraw_collateral::withdraw_collateral`)}isBorrowTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::borrow::borrow`)}isBorrowWithBoostTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.protocolPkg}::borrow::borrow`),e=this.getMoveCallTransaction(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca`);return!!t&&!!e}isRepayTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::repay::repay`)}isUnstakeSpoolTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::unstake`)}isCreateStakeAccountTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::new_spool_account`)}isClaimRewardTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::redeem_rewards`),e=this.getMoveCallTransaction(`${this.coreId.borrowIncentivePkg}::user::redeem_rewards`);return!!t&&!!e}isStakeScaFirsTime(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_key`)}isExtendPeriodAndStakeMoreSca(){let t=this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`),e=this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`);return!!t&&!!e}isRedeemSca(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::redeem`)}isStakeMoreSca(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`)}isExtendPeriod(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`)}isRenewExpiredVeSca(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::renew_expired_ve_sca`)}isOpenObligationTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::open_obligation::open_obligation_entry`)}isMigrateAndClaim(){let t=this.getMoveCallTransaction(`${Ua}::user::redeem_rewards`),e=this.getMoveCallTransaction(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca`);return!!t&&!!e}decodeMigrateAndClaim(){let t=this.helperStakeObligationWithVeSca.decodeOwnedObjectId(9),e=this.helperClaimBorrowReward[0].decodeSharedObjectId(2),i=this.helperClaimBorrowReward[0].decodeOwnedObjectId(3),n=this._builder.utils.parseCoinNameFromType(this.helperClaimBorrowReward[0].typeArg(0));return{txType:At.TransactionType.Other,type:"MigrateAndClaim",intentionData:{veScaKey:t,obligationKey:e,obligationId:i,rewardCoinName:n}}}decodeOpenObligation(){return{txType:At.TransactionType.Other,type:"OpenObligation",intentionData:{}}}decodeRedeemSca(){let t=this.helperRedeemSca.decodeOwnedObjectId(1);return{txType:At.TransactionType.Other,type:"RedeemSca",intentionData:{veScaKey:t}}}decodeRenewExpiredVeSca(){let t=this.helperRenewExpired.getNestedInputParam(4),e=this.helperRenewExpired.decodeInputU64(5),i=new zi(t,this.txb).getAmountInput().reduce((T,O)=>T+O,0),n=this.helperRenewExpired.decodeOwnedObjectId(1),r=!!this.helperRedeemSca.moveCall,o=[],s=[],a=[];this.helperOldUnstakeObligation.moveCall&&(o=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(s=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeObligationWithVeSca.moveCall&&(a=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let l=!1,u=!1,h,y,v=[{condition:o,isOld:!0},{condition:s,isOld:!1},{condition:a,isOld:!1}];for(let T=0;T<v.length;T++)v[T].condition.length>1&&([y,h]=v[T].condition,l=!0,u=v[T].isOld);return{txType:At.TransactionType.Other,type:"RenewExpStakePeriod",intentionData:{amount:i,lockPeriodInDays:e,obligationId:h,obligationKey:y,veScaKey:n,isHaveRedeem:r,isObligationLocked:l,isOldBorrowIncentive:u}}}decodeExtendStakePeriod(){let t=this.helperExtendStakePeriod.decodeInputU64(4),e=this.helperExtendStakePeriod.decodeOwnedObjectId(1),i=[],n=[],r=[];this.helperOldUnstakeObligation.moveCall&&(i=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(n=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeObligationWithVeSca.moveCall&&(r=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let o=!1,s=!1,a,l,u=[{condition:i,isOld:!0},{condition:n,isOld:!1},{condition:r,isOld:!1}];for(let h=0;h<u.length;h++)u[h].condition.length>1&&([l,a]=u[h].condition,o=!0,s=u[h].isOld);return{txType:At.TransactionType.Other,type:"ExtendStakePeriod",intentionData:{lockPeriodInDays:t,obligationId:a,obligationKey:l,veScaKey:e,isObligationLocked:o,isOldBorrowIncentive:s}}}decodePeriodAndStakeMoreSca(){let t=this.helperStakeMoreSca.getNestedInputParam(4),e=this.helperExtendStakePeriod.decodeInputU64(4),i=new zi(t,this.txb).getAmountInput().reduce((v,T)=>v+T,0),n=[],r=[],o,s=[];this.helperOldUnstakeObligation.moveCall&&(n=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(r=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeMoreSca.moveCall&&(o=this.helperStakeMoreSca.decodeOwnedObjectId(1)),this.helperStakeObligationWithVeSca.moveCall&&(s=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let a=!1,l=!1,u,h,y=[{condition:n,isOld:!0},{condition:r,isOld:!1},{condition:s,isOld:!1}];for(let v=0;v<y.length;v++)y[v].condition.length>1&&([h,u]=y[v].condition,a=!0,l=y[v].isOld);return{txType:At.TransactionType.Other,type:"ExtendPeriodAndStakeMore",intentionData:{amount:i,lockPeriodInDays:e,obligationId:u,obligationKey:h,veScaKey:o,isObligationLocked:a,isOldBorrowIncentive:l}}}decodeStakeSca(){let t,e;this.helperStakeSca.moveCall&&this.helperStakeMoreSca.moveCall===void 0?(t=this.helperStakeSca.getNestedInputParam(3),e=this.helperStakeSca.decodeInputU64(4)):(t=this.helperStakeMoreSca.getNestedInputParam(4),console.log(t));let i=new zi(t,this.txb).getAmountInput().reduce((v,T)=>v+T,0),n=[],r=[],o,s=[];this.helperOldUnstakeObligation.moveCall&&(n=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(r=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeMoreSca.moveCall&&(o=this.helperStakeMoreSca.decodeOwnedObjectId(1)),this.helperStakeObligationWithVeSca.moveCall&&(s=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let a=!1,l=!1,u,h,y=[{condition:n,isOld:!0},{condition:r,isOld:!1},{condition:s,isOld:!1}];for(let v=0;v<y.length;v++)y[v].condition.length>1&&([h,u]=y[v].condition,a=!0,l=y[v].isOld);return{txType:At.TransactionType.Other,type:"StakeSca",intentionData:{amount:i,lockPeriodInDays:e,obligationId:u,obligationKey:h,veScaKey:o,isObligationLocked:a,isOldBorrowIncentive:l}}}decodeSupplyLending(){let t=this._builder.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),e=this.helperMint.getNestedInputParam(2),i=new zi(e,this.txb).getAmountInput().reduce((n,r)=>n+r,0);return{txType:At.TransactionType.Other,type:"SupplyLending",intentionData:{amount:i,coinName:t}}}decodeWithdrawLending(){let t=this._builder.utils.parseCoinNameFromType(this.helperRedeem.typeArg(0)),e=this.helperRedeem.getNestedInputParam(2),i=new zi(e,this.txb).getAmountInput().reduce((n,r)=>n+r,0);return{txType:At.TransactionType.Other,type:"WithdrawLending",intentionData:{amount:i,coinName:t}}}decodeDepositCollateral(){let t=this._builder.utils.parseCoinNameFromType(this.helperDepositCollateral.typeArg(0)),e=this.helperDepositCollateral.getNestedInputParam(3),i=new zi(e,this.txb).getAmountInput().reduce((r,o)=>r+o,0),n=this.helperDepositCollateral.decodeSharedObjectId(1);return{txType:At.TransactionType.Other,type:"DepositCollateral",intentionData:{amount:i,obligationId:n,collateralCoinName:t}}}decodeWithdrawCollateral(){let t=this._builder.utils.parseCoinNameFromType(this.helperWithdrawCollateral.typeArg(0)),e=this.helperWithdrawCollateral.decodeInputU64(5),i=this.helperWithdrawCollateral.decodeSharedObjectId(1),n=this.helperWithdrawCollateral.decodeOwnedObjectId(2);return{txType:At.TransactionType.Other,type:"WithdrawCollateral",intentionData:{amount:e,collateralCoinName:t,obligationKey:n,obligationId:i}}}decodeBorrow(){let t=this._builder.utils.parseCoinNameFromType(this.helperBorrow.typeArg(0)),e=this.helperBorrow.decodeInputU64(5),i=this.helperBorrow.decodeSharedObjectId(1),n=this.helperBorrow.decodeOwnedObjectId(2);return{txType:At.TransactionType.Other,type:"Borrow",intentionData:{amount:e,coinName:t,obligationKey:n,obligationId:i}}}decodeBorrowWithBoost(){let t=this._builder.utils.parseCoinNameFromType(this.helperBorrow.typeArg(0)),e=this.helperStakeObligationWithVeSca.decodeOwnedObjectId(9),i=this.helperBorrow.decodeInputU64(5),n=this.helperBorrow.decodeSharedObjectId(1),r=this.helperBorrow.decodeOwnedObjectId(2);return{txType:At.TransactionType.Other,type:"BorrowWithBoost",intentionData:{amount:i,coinName:t,obligationKey:r,obligationId:n,veScaKey:e}}}decodeRepay(){let t=this._builder.utils.parseCoinNameFromType(this.helperRepay.typeArg(0)),e=this.helperRepay.getNestedInputParam(3),i=new zi(e,this.txb).getAmountInput().reduce((r,o)=>r+o,0),n=this.helperRepay.decodeSharedObjectId(1);return{txType:At.TransactionType.Other,type:"Repay",intentionData:{amount:i,obligationId:n,coinName:t}}}decodeStakeSpool(){let t;this.isCreateStakeAccountTransaction()||(t=this.helperStake.decodeOwnedObjectId(1));let e=this.helperStake.getNestedInputParam(2),i=new zi(e,this.txb).getAmountInput().reduce((o,s)=>o+s,0),n=this.helperStake.typeArg(0),r=this._builder.utils.parseCoinNameFromType(n);return{txType:At.TransactionType.Other,type:"StakeSpool",intentionData:{amount:i,marketCoinName:r,stakeAccountId:t}}}decodeUnstakeSpool(){let t=this.helperUnstake.decodeOwnedObjectId(1),e=this.helperUnstake.decodeInputU64(2),i=this.helperUnstake.typeArg(0),n=this._builder.utils.parseCoinNameFromType(i);return{txType:At.TransactionType.Other,type:"UnstakeSpool",intentionData:{amount:e,marketCoinName:n,stakeAccountId:t}}}decodeSupplyWithStakeSpool(){let t=this._builder.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),e=this.helperMint.getNestedInputParam(2),i=new zi(e,this.txb).getAmountInput().reduce((r,o)=>r+o,0),n;return this.isCreateStakeAccountTransaction()||(n=this.helperStake.decodeOwnedObjectId(1)),{txType:At.TransactionType.Other,type:"SupplyAndStakeLending",intentionData:{amount:i,coinName:t,stakeAccountId:n}}}decodeUnstakeAndWithdraw(){let t=[];this.helperUnstakes.forEach(r=>{let o=r.decodeOwnedObjectId(1),s=r.decodeInputU64(2);t.push({id:o,coin:s})});let e=this._builder.utils.parseCoinNameFromType(this.helperRedeems[0].typeArg(0)),i=this.helperRedeems.find(r=>r.isHaveNestedInput(2)),n;return i&&(n=new zi(i.getNestedInputParam(2),this.txb).getAmountInput().reduce((r,o)=>r+o,0)),{txType:At.TransactionType.Other,type:"WithdrawAndUnstakeLending",intentionData:{amount:n,coinName:e,stakeAccountId:t}}}decodeClaimReward(){let t=[],e=[],i=[];return this.helperClaimLendingReward.forEach(n=>{let r=n.decodeOwnedObjectId(2),o=n.typeArg(0),s=this._builder.utils.parseCoinNameFromType(o);t.push({stakeMarketCoinName:s,stakeAccountId:r})}),this.helperClaimBorrowV2Reward.forEach(n=>{let r=n.decodeSharedObjectId(3),o=n.decodeOwnedObjectId(4),s=this._builder.utils.parseCoinNameFromType(n.typeArg(0));e.push({obligationId:o,obligationKey:r,rewardCoinName:s})}),this.helperClaimBorrowReward.forEach(n=>{let r=n.decodeSharedObjectId(2),o=n.decodeOwnedObjectId(3),s=this._builder.utils.parseCoinNameFromType(n.typeArg(0));i.push({obligationId:o,obligationKey:r,rewardCoinName:s})}),{txType:At.TransactionType.Other,type:"ClaimIncentiveReward",intentionData:{lendingIncentive:t,borrowIncentiveV2:e,borrowIncentive:i}}}get helperClaimLendingReward(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${this.coreId.spoolPkg}::user::redeem_rewards`)).map(t=>new Ge(t,this.txb))}get helperClaimBorrowV2Reward(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${this.coreId.borrowIncentivePkg}::user::redeem_rewards`)).map(t=>new Ge(t,this.txb))}get helperStakeMoreSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`));return new Ge(t,this.txb)}get helperStakeSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_key`));return new Ge(t,this.txb)}get helperExtendStakePeriod(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`));return new Ge(t,this.txb)}get helperRedeemSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::redeem`));return new Ge(t,this.txb)}get helperRenewExpired(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::renew_expired_ve_sca`));return new Ge(t,this.txb)}get helperOldUnstakeObligation(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${Ua}::user::unstake`));return new Ge(t,this.txb)}get helperUnstakeObligation(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.borrowIncentivePkg}::user::unstake`));return new Ge(t,this.txb)}get helperStakeObligationWithVeSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca`));return new Ge(t,this.txb)}get helperClaimBorrowReward(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${Ua}::user::redeem_rewards`)).map(t=>new Ge(t,this.txb))}get helperMint(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::mint::mint`));return new Ge(t,this.txb)}get helperUnstakes(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${this.coreId.spoolPkg}::user::unstake`)).map(t=>new Ge(t,this.txb))}get helperRedeems(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${this.coreId.protocolPkg}::redeem::redeem`)).map(t=>new Ge(t,this.txb))}get helperRedeem(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::redeem::redeem`));return new Ge(t,this.txb)}get helperStake(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.spoolPkg}::user::stake`));return new Ge(t,this.txb)}get helperUnstake(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.spoolPkg}::user::unstake`));return new Ge(t,this.txb)}get helperDepositCollateral(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::deposit_collateral::deposit_collateral`));return new Ge(t,this.txb)}get helperWithdrawCollateral(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::withdraw_collateral::withdraw_collateral`));return new Ge(t,this.txb)}get helperBorrow(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::borrow::borrow`));return new Ge(t,this.txb)}get helperRepay(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::repay::repay`));return new Ge(t,this.txb)}},zi=class{constructor(t,e){this.splitCoin=t,this.txb=e}getAmountInput(){return this.splitCoin.amounts.map(t=>{if(t.kind==="Input")return Number(Ge.getPureInputValue(t,"u64"))}).filter(t=>t!==void 0)}static getPureInputValue(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value=="object"&&"Pure"in t.value){let i=t.value.Pure;return Za.bcs.de(e,new Uint8Array(i))}return t.value}},Ge=class Va{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return Va.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return Va.getOwnedObjectId(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return Number(i)}decodeInputU8(e){let i=this.decodePureArg(e,"u8");return Number(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,Nn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return Va.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}getNestedInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="NestedResult")throw new Error("not input type");return this.txb.blockData.transactions[i.index]}isHaveNestedInput(e){return this.moveCall.arguments[e].kind==="NestedResult"}static getPureInputValue(e,i){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 Za.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Nn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Nn.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Nn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Nn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){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 Za.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,Nn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},nT={mainnet:{core:{version:"0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",versionCap:"0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",object:"0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf",market:"0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",adminCap:"0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",coinDecimalsRegistry:"0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",obligationAccessStore:"0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9",coins:{cetus:{id:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",metaData:"0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",feedObject:"0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"}}},apt:{id:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",metaData:"0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",feedObject:"0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"}}},sol:{id:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",metaData:"0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",feedObject:"0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"}}},btc:{id:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",metaData:"0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",feedObject:"0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"}}},eth:{id:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",metaData:"0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",feedObject:"0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"}}},usdc:{id:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",metaData:"0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",feedObject:"0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"}}},usdt:{id:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",metaData:"0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",feedObject:"0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"}}},sui:{id:"0x0000000000000000000000000000000000000000000000000000000000000002",metaData:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",treasury:"",oracle:{supra:"",switchboard:"0xbca474133638352ba83ccf7b5c931d50f764b09550e16612c9f70f1e21f3f594",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},afsui:{id:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",metaData:"0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},hasui:{id:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",metaData:"0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},vsui:{id:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",metaData:"0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},sca:{id:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",metaData:"0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",feedObject:"0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"}}}},oracles:{xOracle:"0x93d5bf0936b71eb27255941e532fac33b5a5c7759e377b4923af0a1359ad494f",xOracleCap:"0x1edeae568fde99e090dbdec4bcdbd33a15f53a1ce1f87aeef1a560dedf4b4a90",supra:{registry:"",registryCap:"",holder:""},switchboard:{registry:"",registryCap:""},pyth:{registry:"0xedc293f9413a5a7a5d53bdba1fd889d0a4030894469228f0acdae4aa3c55a213",registryCap:"0xbcb07141eb1f7e01fbda4130ecf5f5adaeabb77f5d9c32158b7532bcd2197acd",state:"0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",wormhole:"0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",wormholeState:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"}},packages:{coinDecimalsRegistry:{id:"0xca5a5a62f01c79a104bf4d31669e29daa387f325c241de4edbe30986a9bc8b0d",upgradeCap:"0x34e76a945d29f195bc53ca704fa70877d1cf3a5d7bbfdda1b13e633fff13c0f6"},math:{id:"0xad013d5fde39e15eabda32b3dbdafd67dac32b798ce63237c27a8f73339b9b6f",upgradeCap:"0x3a329598231de02e6135c62284b66005b41cad1d9ab7ca2dc79c08293aba2ec6"},whitelist:{id:"0x1318fdc90319ec9c24df1456d960a447521b0a658316155895014a6e39b5482f",upgradeCap:"0xf5a22aea23db664f7b69855b6a546747f17c1ec4230319cfc17225e462b05761"},x:{id:"0x779b5c547976899f5474f3a5bc0db36ddf4697ad7e5a901db0415c2281d28162",upgradeCap:"0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"},protocol:{id:"0x38fe42a5a69f7eb3635404389e8003be9457b1a5c873f133184648c7e9bd47b7",upgradeCap:"0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"},protocolWhitelist:{id:"0x4c262d9343dac53ecb28f482a2a3f62c73d0ebac5b5f03d57383d56ff219acdf",upgradeCap:"0x4a5e88a75039b00988f633f811f58117f31b8627a46bf822aa114d9010049449"},query:{id:"0xb8d603a39114a5efef3dd0bf84df0bed1be1fbd39b78b7dd6e8a61ccc5e6006f",upgradeCap:"0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"},supra:{id:"",upgradeCap:""},pyth:{id:"0x910f30cbc7f601f75a5141a01265cd47c62d468707c5e1aecb32a18f448cb25a",upgradeCap:"0xdf0ffbae1ea5bb25fbca5efba433dcf00c7cced65679af2f04728901275c6157"},switchboard:{id:"",upgradeCap:""},xOracle:{id:"0x1478a432123e4b3d61878b629f2c692969fdb375644f1251cd278a4b1e7d7cd6",upgradeCap:"0x0f928a6b2e26b73330fecaf9b44acfc9800a4a9794d6415c2a3153bc70e3c1f0"},testCoin:{id:"",upgradeCap:""}}},spool:{id:"0xec1ac7f4d01c5bf178ff4e62e523e7df7721453d81d4904a42a0ffc2686c843d",adminCap:"0xdd8a047cbbf802bfcde5288b8ef1910965d789cc614da11d39af05fca0bd020a",object:"0xe87f1b2d498106a2c61421cec75b7b5c5e348512b0dc263949a0e7a3c256571a",pools:{seth:{id:"0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",rewardPoolId:"0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"},ssui:{id:"0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",rewardPoolId:"0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9"},susdc:{id:"0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",rewardPoolId:"0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8"},susdt:{id:"0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",rewardPoolId:"0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080"},scetus:{id:"0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",rewardPoolId:"0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"},safsui:{id:"0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",rewardPoolId:"0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e"},shasui:{id:"0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",rewardPoolId:"0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66"},svsui:{id:"0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",rewardPoolId:"0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a"}},version:"",versionCap:""},borrowIncentive:{id:"0x874f1d43d81e2256e120bab2485938fe07ba0cc21d87129a99a1db11cacb382d",adminCap:"0xc486afa253646f4d381e81d7f1df8aa4723b845a6bb356f69bad635ffefffe2c",object:"0x002875153e09f8145ab63527bc85c00f2bd102e12f9573c47f8cdf1a1cb62934",query:"0x529edc54a3dce2207703ceebbccb0ac14133f7825c1f528775ba0d85a4063489",incentivePools:"0x6547e143d406b5ccd5f46aae482497de279cc1a68c406f701df70a05f9212ab4",incentiveAccounts:"0xc4701fdbc1c92f9a636d334d66012b3027659e9fb8aff27279a82edfb6b77d02",config:"0xdf5d04b4691cc67e82fd4db8394d89ff44823a9de29716c924f74bb4f11cc1f7",version:"",versionCap:""},vesca:{id:"0xcfe2d87aa5712b67cad2732edb6a2201bfdf592377e5c0968b7cb02099bd8e21",adminCap:"0x4d105b16467acca81d18c132cdd1a3cee159920a86c1ef4bdbf2e8d7878500c5",tableId:"0x0a0b7f749baeb61e3dfee2b42245e32d0e6b484063f0a536b33e771d573d7246",table:"0xd3a4632b1080f7d96e1c2487d4dabf2c1196916937c505a69954ac9f393be8d0",treasury:"0xafa4b6231e49c15a22d641ce33fda761baaf650fa21899dfa2eb1716146e7306",config:"0x7cbcb0a342179577a117dfdff974cf1ab765d3b571067bf22ddf5f9e3a667922"}}},tc=class{_auth;_id;_network;_currentAddresses;_addressesMap;constructor(t){let{id:e,auth:i,network:n}=t;i&&(this._auth=i),this._id=e,this._network=n||"mainnet",this._addressesMap=new Map}getId(){return this._id||void 0}get(t){if(this._currentAddresses)return t.split(".").reduce((e,i)=>typeof e=="object"?e[i]:e,this._currentAddresses)||void 0}set(t,e){if(this._currentAddresses){let i=t.split(".");i.reduce((n,r,o)=>{if(o===i.length-1){let s=n;s[r]=e}return n[r]},this._currentAddresses)}return this._currentAddresses}switchCurrentAddresses(t){return this._addressesMap.has(t)&&(this._currentAddresses=this._addressesMap.get(t),this._network=t),this._currentAddresses}getAddresses(t){return t?this._addressesMap.get(t):this._currentAddresses??this._addressesMap.get(this._network)}setAddresses(t,e){let i=e||this._network;i===this._network&&(this._currentAddresses=t),this._addressesMap.set(i,t)}getAllAddresses(){return Object.fromEntries(this._addressesMap)}read(){return Object.entries(nT).forEach(([t,e])=>{["localnet","devnet","testnet","mainnet"].includes(t)&&(t===this._network&&(this._currentAddresses=e),this._addressesMap.set(t,e))}),this.getAllAddresses()}},Ci=t=>{let{sender:e}=t.blockData;if(!e)throw new Error("Sender is required");return e},rT=(t,e,i,n)=>{let r=!n,o=!r&&n*1e3<=new Date().getTime();if(r||o)if(t!==void 0&&e!==void 0){if(e<=0)throw new Error("Lock period must be greater than 0");if(typeof t=="number"&&t<1e10)throw new Error(`Minimum lock amount for ${o?"renewing expired veSca":"initial lock"} is 10 SCA`);if(e*86400>126144e3)throw new Error("Maximum lock period is ~4 years (1460 days)")}else throw new Error(`SCA amount and lock period is required for ${o?"renewing expired veSca":"initial lock"}`);else{if(ls(n),typeof t=="number"&&t<1e9)throw new Error("Minimum top up amount is 1 SCA");if(i&&n&&i-n>126057600)throw new Error("Maximum lock period is ~4 years (1459 days)")}},oT=(t,e,i)=>{if(ls(i),t<=0)throw new Error("Lock period must be greater than 0");if(i&&i*1e3<=new Date().getTime())throw new Error("veSca is expired, use renewExpiredVeScaQuick instead");if(i&&e-(i??0)>126057600)throw new Error("Maximum lock period is ~4 years (1459 days)")},sT=(t,e)=>{if(ls(e),t<1e9)throw new Error("Minimum top up amount is 1 SCA");if(e&&e*1e3<=new Date().getTime())throw new Error("veSca is expired, use renewExpiredVeScaQuick instead")},aT=(t,e,i)=>{if(ls(i),t<1e10)throw new Error("Minimum lock amount for renewing expired vesca 10 SCA");if(e*86400>=126057600)throw new Error("Maximum lock period is ~4 years (1459 days)")},ls=t=>{if(t===void 0)throw new Error("veSca not found")},cT=t=>({pointType:(0,us.normalizeStructTag)(t.point_type.name),weightedAmount:Number(t.weighted_amount),points:Number(t.points),totalPoints:Number(t.total_points),index:Number(t.index)}),lT=t=>({poolType:(0,us.normalizeStructTag)(t.pool_type.name),debtAmount:Number(t.debt_amount),pointList:t.points_list.reduce((e,i)=>{let n=cT(i),r=(0,us.parseStructTag)(n.pointType).name.toLowerCase();return e[r]=n,e},{})}),Sm=t=>{let e=t.slice(1).toLowerCase();return t.charAt(0).toLowerCase()==="s"&&[...new Set([...ec,...I0,...YC])].includes(e)},xm=t=>{switch(t){case"afsui":return"afSUI";case"hasui":return"haSUI";case"vsui":return"vSUI";default:return t.toUpperCase()}},uT=t=>{let e=new Date(t*1e3),i=new Date(t*1e3);i.setUTCHours(0,0,0,0),e.getUTCHours()>=0&&i.setUTCDate(i.getUTCDate()+1);let n=new Date().getTime();return i.getTime()-n>126144e3*1e3&&i.setUTCDate(i.getUTCDate()-1),Math.floor(i.getTime()/1e3)},Vu=class{params;isTestnet;_address;client;constructor(t,e){this.params=t,this._address=e?.address??new tc({id:t?.addressesId||Qa,network:t?.networkType}),this.isTestnet=t.networkType?t.networkType==="testnet":!1,this.client=t.client}init(t=!1,e){t||!this._address.getAddresses()||!e?.getAddresses()?this._address.read():this._address=e}parseSymbol(t){if(Sm(t)){let e=t.slice(1).toLowerCase();return t.slice(0,1).toLowerCase()+xm(e)}return xm(t)}parseCoinType(t){let e=Sm(t)?this.parseCoinName(t):t,i=this._address.get(`core.coins.${e}.id`)||tT[t]||void 0;if(!i)throw Error(`Coin ${t} is not supported`);if(t==="sui")return(0,as.normalizeStructTag)(`${i}::sui::SUI`);let n=[this._address.get("core.coins.usdc.id")??ki.usdc,this._address.get("core.coins.usdt.id")??ki.usdt,this._address.get("core.coins.eth.id")??ki.eth,this._address.get("core.coins.btc.id")??ki.btc,this._address.get("core.coins.sol.id")??ki.sol,this._address.get("core.coins.apt.id")??ki.apt],r=[this._address.get("core.coins.vsui.id")??Tm.vsui];return n.includes(i)?`${i}::coin::COIN`:r.includes(i)?`${i}::cert::CERT`:`${i}::${e}::${e.toUpperCase()}`}parseMarketCoinType(t){let e=this._address.get("core.object")||A0,i=this.parseCoinType(t);return`${e}::reserve::MarketCoin<${i}>`}parseCoinNameFromType(t){let e=(0,as.normalizeStructTag)(t),i=/((0x[^:]+::[^:]+::[^<>]+))(?![^<>]*<)/,n=t.match(i),r=t.includes("reserve::MarketCoin");e=n?.[1]||t;let o={[`${this._address.get("core.coins.usdc.id")??ki.usdc}::coin::COIN`]:"usdc",[`${this._address.get("core.coins.usdt.id")??ki.usdt}::coin::COIN`]:"usdt",[`${this._address.get("core.coins.eth.id")??ki.eth}::coin::COIN`]:"eth",[`${this._address.get("core.coins.btc.id")??ki.btc}::coin::COIN`]:"btc",[`${this._address.get("core.coins.sol.id")??ki.sol}::coin::COIN`]:"sol",[`${this._address.get("core.coins.apt.id")??ki.apt}::coin::COIN`]:"apt"},s={[`${this._address.get("core.coins.vsui.id")??Tm.vsui}::cert::CERT`]:"vsui"},a=o[e]||s[e]||e.split("::")[2].toLowerCase();return r?this.parseMarketCoinName(a):a}parseCoinName(t){return t.slice(1)}parseMarketCoinName(t){return`s${t}`}getSpoolRewardCoinName=t=>O0[t];getBorrowIncentiveRewardCoinName=t=>eT[t];getCoinDecimal(t){return QC[t]}getCoinWrappedType(t){return t==="usdc"||t==="usdt"||t==="eth"||t==="btc"||t==="apt"||t==="sol"?{from:"Wormhole",type:"Portal from Ethereum"}:void 0}async selectCoinIds(t,e=as.SUI_TYPE_ARG,i){let n=i,r=[],o=0,s=!0,a=null;for(;s&&o<t;){let l=await this.client.getCoins({owner:n,coinType:e,cursor:a});l.data.sort((u,h)=>parseInt(h.balance,10)-parseInt(u.balance,10));for(let u=0;u<l.data.length&&(r.push({objectId:l.data[u].coinObjectId,digest:l.data[u].digest,version:l.data[u].version}),o+=parseInt(l.data[u].balance,10),!(o>=t));u++);a=l.nextCursor,s=l.hasNextPage}if(!r.length)throw new Error("No valid coins found for the transaction.");return r.map(l=>l.objectId)}parseAprToApy(t,e=365){return(1+t/e)**e-1}parseApyToApr(t,e=365){return((1+t)**(1/e)-1)*e}takeAmountFromCoins(t,e,i){let n=e.map(s=>t.object(s)),r=n[0];n.length>1&&t.mergeCoins(r,n.slice(1));let[o]=t.splitCoins(r,[t.pure(i)]);return[o,r]}getUnlockAt(t,e){let i=Math.floor(new Date().getTime()/1e3),n=e?Math.max(e-i,0):0,r=0;if(n===0){let o=(t??1)*86400;r=Math.min(i+o,i+126144e3)}else{let o=Math.min(t?t*86400+n:n,126144e3);r=i+o}return uT(r)}},Wu=async(t,e)=>{let i=e,n=t.address.get("core.object")||A0,r=[],o=!1,s=null;do{let h=await t.client.getOwnedObjects({owner:i,filter:{StructType:`${n}::obligation::ObligationKey`},cursor:s});r.push(...h.data),h.hasNextPage&&h.nextCursor?(o=!0,s=h.nextCursor):o=!1}while(o);let a=r.map(h=>h?.data?.objectId).filter(h=>h!==void 0),l=await t.client.multiGetObjects({ids:a,options:{showContent:!0,showType:!0}}),u=[];for(let h=0;h<l.length;h++){let y=l[h].data.objectId,{content:v}=l[h].data;if(v&&"fields"in v){let T=v.fields,O=String(T.ownership.fields.of),P=await j0(t,O);u.push({id:O,keyId:y,locked:P})}}return u},j0=async(t,e)=>{let i=await t.client.getObject({id:e,options:{showContent:!0}}),n=!1;return i.data&&i?.data?.content?.dataType==="moveObject"&&"lock_key"in i.data.content.fields&&(n=!!i.data.content.fields.lock_key),n},dT=async(t,e,i)=>{let n=i||[...ec],r=e,o=[],s=!1,a=null;do{let u=await t.client.getOwnedObjects({owner:r,filter:{MatchAny:n.map(h=>({StructType:`0x2::coin::Coin<${t.utils.parseCoinType(h)}>`}))},options:{showType:!0,showContent:!0},cursor:a});o.push(...u.data),u.hasNextPage&&u.nextCursor?(s=!0,a=u.nextCursor):s=!1}while(s);let l={};return o.map(u=>u.data).filter(u=>u!=null).forEach(u=>{let h=u.type;if(u.content&&"fields"in u.content){let y=u.content.fields,v=t.utils.parseCoinNameFromType(h);v&&(l[v]=wi(l[v]??0).plus(y.balance).toNumber())}}),l},fT=async(t,e,i)=>{let n=i,r=t.utils.parseCoinType(e),o=[],s=!1,a=null;do{let u=await t.client.getOwnedObjects({owner:n,filter:{StructType:`0x2::coin::Coin<${r}>`},options:{showContent:!0},cursor:a});o.push(...u.data),u.hasNextPage&&u.nextCursor?(s=!0,a=u.nextCursor):s=!1}while(s);let l=0;return o.map(u=>u.data).filter(u=>u!=null).forEach(u=>{if(u.content&&"fields"in u.content){let h=u.content.fields;l=wi(l).plus(h.balance).toNumber()}}),l},hT=async(t,e,i)=>{let n=i||[...ec].map(u=>t.utils.parseMarketCoinName(u)),r=e,o=[],s=!1,a=null;do{let u=await t.client.getOwnedObjects({owner:r,filter:{MatchAny:n.map(h=>({StructType:`0x2::coin::Coin<${t.utils.parseMarketCoinType(h)}>`}))},options:{showType:!0,showContent:!0},cursor:a});o.push(...u.data),u.hasNextPage&&u.nextCursor?(s=!0,a=u.nextCursor):s=!1}while(s);let l={};return o.map(u=>u.data).filter(u=>u!=null).forEach(u=>{let h=u.type;if(u.content&&"fields"in u.content){let y=u.content.fields,v=t.utils.parseCoinNameFromType(h);v&&(l[v]=wi(l[v]??0).plus(y.balance).toNumber())}}),l},pT=async(t,e,i)=>{let n=i,r=t.utils.parseMarketCoinType(e),o=[],s=!1,a=null;do{let u=await t.client.getOwnedObjects({owner:n,filter:{StructType:`0x2::coin::Coin<${r}>`},options:{showContent:!0},cursor:a});o.push(...u.data),u.hasNextPage&&u.nextCursor?(s=!0,a=u.nextCursor):s=!1}while(s);let l=0;return o.map(u=>u.data).filter(u=>u!=null).forEach(u=>{if(u.content&&"fields"in u.content){let h=u.content.fields;l=wi(l).plus(h.balance).toNumber()}}),l},mT=async(t,e)=>{let i=`${t.address.get("core.packages.query.id")}::obligation_query::obligation_data`,n=new E0.TransactionBlock;return n.moveCall({target:i,arguments:[n.object(e)]}),(await t.client.devInspectTransactionBlock({transactionBlock:n,sender:t.walletAddress})).events[0].parsedJson},zu=async(t,e)=>{let i=e,n=t.address.get("spool.object"),r=`${n}::spool_account::SpoolAccount`,o=[],s=!1,a=null;do{let y=await t.client.getOwnedObjects({owner:i,filter:{StructType:r},options:{showContent:!0,showType:!0},cursor:a});o.push(...y.data),y.hasNextPage&&y.nextCursor?(s=!0,a=y.nextCursor):s=!1}while(s);let l={seth:[],ssui:[],susdc:[],susdt:[],scetus:[],safsui:[],shasui:[],svsui:[]},u=Object.keys(l).reduce((y,v)=>{let T=t.utils.parseCoinName(v),O=t.utils.parseMarketCoinType(T),P={...y},j=`${n}::spool_account::SpoolAccount<${O}>`;return P[v]=j,P},{}),h=o.map(y=>y?.data?.objectId).filter(y=>y!==void 0);return(await t.client.multiGetObjects({ids:h,options:{showContent:!0,showType:!0}})).forEach(y=>{let v=y.data.objectId,T=y.data.type;if(y.data.content&&"fields"in y.data.content){let O=y.data.content.fields,P=String(O.spool_id),j=String(O.stake_type.fields.name),B=Number(O.stakes),D=Number(O.index),q=Number(O.points),K=Number(O.total_points);(0,Be.normalizeStructTag)(T)===u.seth?l.seth.push({id:v,type:(0,Be.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(T)===u.ssui?l.ssui.push({id:v,type:(0,Be.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(T)===u.susdc?l.susdc.push({id:v,type:(0,Be.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(T)===u.susdt?l.susdt.push({id:v,type:(0,Be.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(T)===u.scetus?l.scetus.push({id:v,type:(0,Be.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(T)===u.safsui?l.safsui.push({id:v,type:(0,Be.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(T)===u.shasui?l.shasui.push({id:v,type:(0,Be.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(T)===u.svsui&&l.svsui.push({id:v,type:(0,Be.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K})}}),l},Am=async(t,e)=>{let i=t.address.get(`spool.pools.${e}.id`),n,r=await t.client.getObject({id:i,options:{showContent:!0,showType:!0}});if(r.data){let o=r.data,s=o.objectId,a=o.type;if(o.content&&"fields"in o.content){let l=o.content.fields,u=Number(l.max_distributed_point),h=Number(l.distributed_point),y=Number(l.distributed_point_per_period),v=Number(l.point_distribution_time),T=Number(l.max_stakes),O=String(l.stake_type.fields.name),P=Number(l.stakes),j=Number(l.index),B=Number(l.created_at),D=Number(l.last_update);n={id:s,type:(0,Be.normalizeStructTag)(a),maxPoint:u,distributedPoint:h,pointPerPeriod:y,period:v,maxStake:T,stakeType:(0,Be.normalizeStructTag)(O),totalStaked:P,index:j,createdAt:B,lastUpdate:D}}}return n},Im=async(t,e)=>{let i=t.address.get(`spool.pools.${e}.rewardPoolId`),n,r=await t.client.getObject({id:i,options:{showContent:!0,showType:!0}});if(r.data){let o=r.data,s=o.objectId,a=o.type;if(o.content&&"fields"in o.content){let l=o.content.fields,u=String(l.spool_id),h=Number(l.exchange_rate_numerator),y=Number(l.exchange_rate_denominator),v=Number(l.rewards),T=Number(l.claimed_rewards);n={id:s,type:(0,Be.normalizeStructTag)(a),stakePoolId:u,ratioNumerator:h,ratioDenominator:y,rewards:v,claimedRewards:T}}}return n},gT=async(t,e,i,n)=>{let r=n||[...Ka],o=t.address.get("borrowIncentive.query"),s=t.address.get("borrowIncentive.incentiveAccounts"),a=`${o}::incentive_account_query::incentive_account_data`,l=new B0.TransactionBlock;l.moveCall({target:a,arguments:[l.object(s),l.object(e)]});let u=(await t.client.devInspectTransactionBlock({transactionBlock:l,sender:i})).events[0].parsedJson,h={};return u.pool_records.forEach(y=>{let v=lT(y),{poolType:T}=v,O=t.utils.parseCoinNameFromType(T);r.length>=1&&r.includes(O)&&(h[O]=v)},{}),h},_T=async(t,e)=>{let i=t.address.get(`core.coins.${e}.oracle.pyth.feedObject`),n=await t.client.getObject({id:i,options:{showContent:!0}});if(n.data){let r=n.data;if(r.content&&"fields"in r.content){let o=r.content.fields,s=Number(o.price_info.fields.price_feed.fields.price.fields.expo.fields.magnitude),a=Number(o.price_info.fields.price_feed.fields.price.fields.expo.fields.negative),l=Number(o.price_info.fields.price_feed.fields.price.fields.price.fields.magnitude),u=Number(o.price_info.fields.price_feed.fields.price.fields.price.fields.negative);return l*10**((a?-1:1)*s)*(u?-1:1)}}return 0},N0=async(t,e)=>{let i=e,n=`${t.address.get("vesca.id")}::ve_sca::VeScaKey`,r=[],o=!1,s=null;do{let a=await t.client.getOwnedObjects({owner:i,filter:{StructType:n},cursor:s});r.push(...a.data),a.hasNextPage&&a.nextCursor?(o=!0,s=a.nextCursor):o=!1}while(o);return r.map(a=>a.data).filter(a=>!!a)},bT=async(t,e)=>{let i=(await N0(t,e)).map(r=>r.objectId),n=[];for(let r=0;r<i.length;r++){let o=await F0(t,i[r]);o&&n.push(o)}return n},F0=async(t,e,i)=>{let n=t.address.get("vesca.tableId"),r=e||(await N0(t,i))[0].objectId,o,s=(await t.client.getDynamicFieldObject({parentId:n,name:{type:"0x2::object::ID",value:r}})).data;if(s&&s.content&&s.content.dataType==="moveObject"&&"fields"in s.content){let a=s.content.fields.value.fields;o={id:s.objectId,keyId:r,lockedScaAmount:wi(a.locked_sca_amount).toNumber(),lockedScaCoin:wi(a.locked_sca_amount).shiftedBy(-9).toNumber(),unlockAt:wi(a.unlock_at).toNumber()}}return o},R0=class{params;address;client;utils;walletAddress;constructor(t,e){this.params=t,this.address=e?.address??new tc({id:t?.addressesId||Qa,network:t?.networkType}),this.client=t.client,this.utils=e?.utils??new Vu(this.params,{address:this.address}),this.walletAddress=t.walletAddress}init(t=!1,e){t||!this.address.getAddresses()||!e?.getAddresses()?this.address.read():this.address=e}async getObligations(t){return Wu(this,t)}async getCoinAmounts(t,e){return dT(this,t,e)}async getCoinAmount(t,e){return fT(this,t,e)}async getMarketCoinAmounts(t,e){return hT(this,t,e)}async getMarketCoinAmount(t,e){return pT(this,t,e)}async getPriceFromPyth(t){return _T(this,t)}async getAllStakeAccounts(t){return zu(this,t)}async getStakeAccounts(t,e){return(await this.getAllStakeAccounts(e))[t]??[]}async getStakePools(t){let e=t??[...Ru],i={};for(let n=0;n<e.length;n++){let r=e[n],o=await Am(this,r);o&&(i[r]=o)}return i}async getStakePool(t){return Am(this,t)}async getStakeRewardPools(t){let e=t??[...Ru],i={};for(let n=0;n<e.length;n++){let r=await Im(this,e[n]);r&&(i[e[n]]=r)}return i}async getStakeRewardPool(t){return Im(this,t)}async getBorrowIncentiveAccounts(t,e,i){return gT(this,t,e||this.walletAddress,i)}async getObligationCoinNames(t){let e=await mT(this,t),i=e.collaterals.map(r=>`0x${r.type.name}`),n=e.debts.map(r=>`0x${r.type.name}`);return[...new Set([...i,...n])].map(r=>this.utils.parseCoinNameFromType(r))}},q0=class{params;isTestnet;address;query;utils;client;walletAddress;constructor(t,e){this.params=t,this.address=e?.address??new tc({id:t?.addressesId||Qa,network:t?.networkType}),this.query=e?.query??new R0(t,{address:this.address}),this.utils=e?.utils??new Vu(this.params,{address:this.address,query:this.query}),this.client=t.client,this.walletAddress=(0,M0.normalizeSuiAddress)(t.walletAddress),this.isTestnet=t.networkType?t.networkType==="testnet":!1}async init(t=!1,e){t||!this.address.getAddresses()||!e?.getAddresses()?this.address.read():this.address=e,this.query.init(t,this.address),this.utils.init(t,this.address)}createTxBlock(t){return new D0.TransactionBlock(t)}async selectCoin(t,e,i,n){let r=this.utils.parseCoinType(e),o=await this.utils.selectCoinIds(i,r,n),[s,a]=this.utils.takeAmountFromCoins(t,o,i);return{takeCoin:s,leftCoin:a}}async selectMarketCoin(t,e,i,n){let r=this.utils.parseMarketCoinType(e),o=await this.utils.selectCoinIds(i,r,n),[s,a]=this.utils.takeAmountFromCoins(t,o,i);return{takeCoin:s,leftCoin:a}}},eo=async(...t)=>{let[e,i,n]=t;if(t.length===3&&n&&typeof n=="string")return await F0(e.query,n)||void 0;let r=Ci(i),o=await bT(e.query,r);if(o.length!==0)return o[0]},yT=async(t,e)=>{let i=t.address.get("borrowIncentive.object"),n=t.address.get("borrowIncentive.incentivePools"),r=t.address.get("vesca.id"),{client:o}=t,s=await o.getObject({id:n,options:{showContent:!0}});if(s.data?.content?.dataType!=="moveObject")return!1;let a=s.data.content.fields.ve_sca_bind.fields.id.id,l=`${i}::typed_id::TypedID<${r}::ve_sca::VeScaKey>`,u=await o.getDynamicFieldObject({parentId:a,name:{type:l,value:e}});return u.data?.content?.dataType!=="moveObject"?!1:u.data.content.fields.value.fields.id},Tu=async(...t)=>{let[e,i,n,r]=t;if(t.length===4&&n&&r&&typeof n=="string"){let a=await j0(e.query,n);return{obligationId:n,obligationKey:r,obligationLocked:a}}let o=Ci(i),s=await Wu(e.query,o);if(s.length===0)throw new Error(`No obligation found for sender ${o}`);return{obligationId:s[0].id,obligationKey:s[0].keyId,obligationLocked:s[0].locked}},wT=({builder:t,txBlock:e})=>{let i={borrowIncentivePkg:t.address.get("borrowIncentive.id"),query:t.address.get("borrowIncentive.query"),incentivePools:t.address.get("borrowIncentive.incentivePools"),incentiveAccounts:t.address.get("borrowIncentive.incentiveAccounts"),obligationAccessStore:t.address.get("core.obligationAccessStore"),config:t.address.get("borrowIncentive.config")},n={id:"0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",incentivePools:"0x64972b713ccec45ec3964809e477cea6f97350c0c50ca3aec85bb631639266ec",incentiveAccounts:"0x3c0b707068bdcea8bb859d751ad3e2149a9f83c13fcf4054ef91372a00bccdd3"},r={table:t.address.get("vesca.table"),treasury:t.address.get("vesca.treasury"),config:t.address.get("vesca.config")};return{stakeObligation:(o,s)=>{e.moveCall({target:`${i.borrowIncentivePkg}::user::stake`,arguments:[e.object(i.config),e.object(i.incentivePools),e.object(i.incentiveAccounts),e.object(s),e.object(o),e.object(i.obligationAccessStore),e.object(un.SUI_CLOCK_OBJECT_ID)]})},stakeObligationWithVesca:(o,s,a)=>{e.moveCall({target:`${i.borrowIncentivePkg}::user::stake_with_ve_sca`,arguments:[e.object(i.config),e.object(i.incentivePools),e.object(i.incentiveAccounts),e.object(s),e.object(o),e.object(i.obligationAccessStore),e.object(r.config),e.object(r.treasury),e.object(r.table),e.object(a),e.object(un.SUI_CLOCK_OBJECT_ID)]})},unstakeObligation:(o,s)=>{e.moveCall({target:`${i.borrowIncentivePkg}::user::unstake`,arguments:[e.object(i.config),e.object(i.incentivePools),e.object(i.incentiveAccounts),e.object(s),e.object(o),e.object(un.SUI_CLOCK_OBJECT_ID)]})},oldUnstakeObligation:(o,s)=>{e.moveCall({target:`${i.borrowIncentivePkg}::user::unstake`,arguments:[e.object(n.incentivePools),e.object(n.incentiveAccounts),e.object(s),e.object(o),e.object(un.SUI_CLOCK_OBJECT_ID)],typeArguments:[un.SUI_TYPE_ARG]})},claimBorrowIncentive:(o,s,a)=>{let l=t.utils.parseCoinType(a);return e.moveCall({target:`${i.borrowIncentivePkg}::user::redeem_rewards`,arguments:[e.object(i.config),e.object(i.incentivePools),e.object(i.incentiveAccounts),e.object(s),e.object(o),e.object(un.SUI_CLOCK_OBJECT_ID)],typeArguments:[l]})},oldClaimBorrowIncentive(o,s,a){let l=t.utils.parseCoinType(a);return e.moveCall({target:`${n.id}::user::redeem_rewards`,arguments:[e.object(n.incentivePools),e.object(n.incentiveAccounts),e.object(s),e.object(o),e.object(un.SUI_CLOCK_OBJECT_ID)],typeArguments:[l]})}}},Ni=({builder:t,txBlock:e})=>{let i=wT({builder:t,txBlock:e});return{normalMethod:i,stakeObligationQuick:async(n,r)=>{let{obligationId:o,obligationKey:s,obligationLocked:a}=await Tu(t,e,n,r),l=!!e.blockData.transactions.find(u=>u.kind==="MoveCall"&&u.target===`${t.address.get("borrowIncentive.id")}::user::unstake`);(!a||l)&&i.stakeObligation(o,s)},unstakeObligationQuick:async(n,r)=>{let{obligationId:o,obligationKey:s,obligationLocked:a}=await Tu(t,e,n,r);a&&i.unstakeObligation(o,s)},stakeObligationWithVeScaQuick:async(n,r,o)=>{let{obligationId:s,obligationKey:a,obligationLocked:l}=await Tu(t,e,n,r),u=!!e.blockData.transactions.find(h=>h.kind==="MoveCall"&&(h.target===`${Ua}::user::unstake`||h.target===`${t.address.get("borrowIncentive.id")}::user::unstake`));if(!l||u){let h=await eo(t,e,o);if(h){let y=await yT(t,h.keyId);!y||y===s?i.stakeObligationWithVesca(s,a,h.keyId):i.stakeObligation(s,a)}else i.stakeObligation(s,a)}},claimBorrowIncentiveQuick:(n,r,o)=>i.claimBorrowIncentive(r,o,n)}},vT={testnet:["https://hermes-beta.pyth.network"],mainnet:["https://hermes.pyth.network","https://scallop.rpc.p2p.world"]},Su=16*1024,kT=class{provider;pythStateId;wormholeStateId;pythPackageId;wormholePackageId;priceTableInfo;priceFeedObjectIdCache=new Map;baseUpdateFee;constructor(t,e,i){this.provider=t,this.pythStateId=e,this.wormholeStateId=i,this.pythPackageId=void 0,this.wormholePackageId=void 0}async getBaseUpdateFee(){if(this.baseUpdateFee===void 0){let t=await this.provider.getObject({id:this.pythStateId,options:{showContent:!0}});if(!t.data||!t.data.content||t.data.content.dataType!=="moveObject")throw new Error("Unable to fetch pyth state object");this.baseUpdateFee=t.data.content.fields.base_update_fee}return this.baseUpdateFee}async getPackageId(t){let e=await this.provider.getObject({id:t,options:{showContent:!0}}).then(i=>{if(i.data?.content?.dataType==="moveObject")return i.data.content.fields;throw console.log(i.data?.content),new Error(`Cannot fetch package id for object ${t}`)});if("upgrade_cap"in e)return e.upgrade_cap.fields.package;throw new Error("upgrade_cap not found")}async verifyVaas(t,e){let i=await this.getWormholePackageId(),n=[];return t.forEach(r=>{let[o]=e.moveCall({target:`${i}::vaa::parse_and_verify`,arguments:[e.object(this.wormholeStateId),e.pure(Wa.bcs.ser("vector<u8>",Array.from(r),{maxSize:Su}).toBytes()),e.object(is.SUI_CLOCK_OBJECT_ID)]});n.push(o)}),n}async updatePriceFeeds(t,e,i){let n=await this.getPythPackageId(),r;if(e.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let o=this.extractVaaBytesFromAccumulatorMessage(e[0]),s=await this.verifyVaas([o],t);[r]=t.moveCall({target:`${n}::pyth::create_authenticated_price_infos_using_accumulator`,arguments:[t.object(this.pythStateId),t.pure(Wa.bcs.ser("vector<u8>",Array.from(e[0]),{maxSize:Su}).toBytes()),s[0],t.object(is.SUI_CLOCK_OBJECT_ID)]});let a=[],l=await this.getBaseUpdateFee(),u=t.splitCoins(t.gas,i.map(()=>t.pure(l))),h=0;for(let y=0;y<i.length;y++){let v=await this.getPriceFeedObjectId(i[y]);if(!v)throw new Error(`Price feed ${i[0]} not found, please create it first`);a.push(v),[r]=t.moveCall({target:`${n}::pyth::update_single_price_feed`,arguments:[t.object(this.pythStateId),r,t.object(v),u[h],t.object(is.SUI_CLOCK_OBJECT_ID)]}),h++}return t.moveCall({target:`${n}::hot_potato_vector::destroy`,arguments:[r],typeArguments:[`${n}::price_info::PriceInfo`]}),a}async createPriceFeed(t,e){let i=await this.getPythPackageId();if(e.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let n=this.extractVaaBytesFromAccumulatorMessage(e[0]),r=await this.verifyVaas([n],t);t.moveCall({target:`${i}::pyth::create_price_feeds_using_accumulator`,arguments:[t.object(this.pythStateId),t.pure(Wa.bcs.ser("vector<u8>",Array.from(e[0]),{maxSize:Su}).toBytes()),r[0],t.object(is.SUI_CLOCK_OBJECT_ID)]})}async getWormholePackageId(){return this.wormholePackageId||(this.wormholePackageId=await this.getPackageId(this.wormholeStateId)),this.wormholePackageId}async getPythPackageId(){return this.pythPackageId||(this.pythPackageId=await this.getPackageId(this.pythStateId)),this.pythPackageId}async getPriceFeedObjectId(t){let e=t.replace("0x","");if(!this.priceFeedObjectIdCache.has(e)){let{id:i,fieldType:n}=await this.getPriceTableInfo(),r=await this.provider.getDynamicFieldObject({parentId:i,name:{type:`${n}::price_identifier::PriceIdentifier`,value:{bytes:Array.from(Buffer.from(e,"hex"))}}});if(!r.data||!r.data.content)return;if(r.data.content.dataType!=="moveObject")throw new Error("Price feed type mismatch");this.priceFeedObjectIdCache.set(e,r.data.content.fields.value)}return this.priceFeedObjectIdCache.get(e)}async getPriceTableInfo(){if(this.priceTableInfo===void 0){let t=await this.provider.getDynamicFieldObject({parentId:this.pythStateId,name:{type:"vector<u8>",value:"price_info"}});if(!t.data||!t.data.type)throw new Error("Price Table not found, contract may not be initialized");let e=t.data.type.replace("0x2::table::Table<","");e=e.replace("::price_identifier::PriceIdentifier, 0x2::object::ID>",""),this.priceTableInfo={id:t.data.objectId,fieldType:e}}return this.priceTableInfo}extractVaaBytesFromAccumulatorMessage(t){let e=7+t.readUint8(6)+1,i=t.readUint16BE(e),n=e+2;return t.subarray(n,n+i)}},CT=async(t,e)=>(await L0.default.get(`${t}/api/latest_vaas`,{params:{ids:e}})).data.map(i=>Buffer.from(i,"base64")),xu=async(t,e,i)=>{let n=i??[...new Set([...ec,...I0])],r=t.isTestnet?["pyth"]:["pyth"];if(r.includes("pyth")){let s=new kT(t.client,t.address.get("core.oracles.pyth.state"),t.address.get("core.oracles.pyth.wormholeState")),a=n.map(u=>t.address.get(`core.coins.${u}.oracle.pyth.feed`)),l=t.params.pythEndpoints??vT[t.isTestnet?"testnet":"mainnet"];try{let u=await CT(l[0],a);await s.updatePriceFeeds(e,u,a)}catch(u){console.warn(`Failed to update price feeds with endpoint ${l[0]}: ${u}`)}}let o=[...new Set(n)];for(let s=0;s<o.length;s++)await TT(t,e,o[s],r)},TT=async(t,e,i,n)=>{let r=t.utils.parseCoinType(i);ST(e,n,t.address.get("core.packages.xOracle.id"),t.address.get("core.oracles.xOracle"),t.address.get("core.packages.pyth.id"),t.address.get("core.oracles.pyth.registry"),t.address.get("core.oracles.pyth.state"),t.address.get(`core.coins.${i}.oracle.pyth.feedObject`),t.address.get("core.packages.switchboard.id"),t.address.get("core.oracles.switchboard.registry"),t.address.get(`core.coins.${i}.oracle.switchboard`),t.address.get("core.packages.supra.id"),t.address.get("core.oracles.supra.registry"),t.address.get("core.oracles.supra.holder"),r)},ST=(t,e,i,n,r,o,s,a,l,u,h,y,v,T,O)=>{let P=xT(t,i,n,O);return e.includes("pyth")&&PT(t,r,P,s,a,o,O),e.includes("switchboard")&&OT(t,l,P,h,u,O),e.includes("supra")&&IT(t,y,P,T,v,O),AT(t,i,n,P,O),t},xT=(t,e,i,n)=>{let r=typeof i=="string"?t.object(i):i,o=`${e}::x_oracle::price_update_request`,s=[n];return t.moveCall({target:o,arguments:[r],typeArguments:s})},AT=(t,e,i,n,r)=>{let o=`${e}::x_oracle::confirm_price_update_request`,s=[r],a=typeof i=="string"?t.object(i):i;return t.moveCall({target:o,arguments:[a,n,t.object(ds.SUI_CLOCK_OBJECT_ID)],typeArguments:s}),t},IT=(t,e,i,n,r,o)=>{let s=typeof n=="string"?t.object(n):n,a=typeof r=="string"?t.object(r):r;t.moveCall({target:`${e}::rule::set_price`,arguments:[i,s,a,t.object(ds.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},OT=(t,e,i,n,r,o)=>{let s=typeof n=="string"?t.object(n):n,a=typeof r=="string"?t.object(r):r;t.moveCall({target:`${e}::rule::set_price`,arguments:[i,s,a,t.object(ds.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},PT=(t,e,i,n,r,o,s)=>{let a=typeof i=="string"?t.object(i):i,l=typeof n=="string"?t.object(n):n,u=typeof r=="string"?t.object(r):r,h=typeof o=="string"?t.object(o):o;t.moveCall({target:`${e}::rule::set_price`,arguments:[a,l,u,h,t.object(ds.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},Ra=async(...t)=>{let[e,i,n,r]=t;if(t.length===3&&n)return{obligationId:n};if(t.length===4&&n&&r)return{obligationId:n,obligationKey:r};let o=Ci(e),s=await Wu(i.query,o);if(s.length===0)throw new Error(`No obligation found for sender ${o}`);return{obligationId:s[0].id,obligationKey:s[0].keyId}},DT=({builder:t,txBlock:e})=>{let i={protocolPkg:t.address.get("core.packages.protocol.id"),market:t.address.get("core.market"),version:t.address.get("core.version"),coinDecimalsRegistry:t.address.get("core.coinDecimalsRegistry"),xOracle:t.address.get("core.oracles.xOracle")};return{openObligation:()=>e.moveCall({target:`${i.protocolPkg}::open_obligation::open_obligation`,arguments:[e.pure(i.version)]}),returnObligation:(n,r)=>e.moveCall({target:`${i.protocolPkg}::open_obligation::return_obligation`,arguments:[e.object(i.version),e.object(n),e.object(r)]}),openObligationEntry:()=>e.moveCall({target:`${i.protocolPkg}::open_obligation::open_obligation_entry`,arguments:[e.object(i.version)]}),addCollateral:(n,r,o)=>{let s=t.utils.parseCoinType(o);return e.moveCall({target:`${i.protocolPkg}::deposit_collateral::deposit_collateral`,arguments:[e.object(i.version),e.object(n),e.object(i.market),typeof r!="string"?r:e.pure(r)],typeArguments:[s]})},takeCollateral:(n,r,o,s)=>{let a=t.utils.parseCoinType(s);return e.moveCall({target:`${i.protocolPkg}::withdraw_collateral::withdraw_collateral`,arguments:[e.object(i.version),e.object(n),e.object(r),e.object(i.market),e.object(i.coinDecimalsRegistry),e.pure(o),e.object(i.xOracle),e.object(an.SUI_CLOCK_OBJECT_ID)],typeArguments:[a]})},deposit:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::mint::mint`,arguments:[e.object(i.version),e.object(i.market),typeof n!="string"?n:e.pure(n),e.object(an.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},depositEntry:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::mint::mint_entry`,arguments:[e.object(i.version),e.object(i.market),typeof n!="string"?n:e.pure(n),e.object(an.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},withdraw:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::redeem::redeem`,arguments:[e.object(i.version),e.object(i.market),typeof n!="string"?n:e.pure(n),e.object(an.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},withdrawEntry:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::redeem::redeem_entry`,arguments:[e.object(i.version),e.object(i.market),typeof n!="string"?n:e.pure(n),e.object(an.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},borrow:(n,r,o,s)=>{let a=t.utils.parseCoinType(s);return e.moveCall({target:`${i.protocolPkg}::borrow::borrow`,arguments:[e.object(i.version),e.object(n),e.object(r),e.object(i.market),e.object(i.coinDecimalsRegistry),e.pure(o),e.object(i.xOracle),e.object(an.SUI_CLOCK_OBJECT_ID)],typeArguments:[a]})},borrowEntry:(n,r,o,s)=>{let a=t.utils.parseCoinType(s);return e.moveCall({target:`${i.protocolPkg}::borrow::borrow_entry`,arguments:[e.object(i.version),e.object(n),e.object(r),e.object(i.market),e.object(i.coinDecimalsRegistry),e.pure(o),e.object(i.xOracle),e.object(an.SUI_CLOCK_OBJECT_ID)],typeArguments:[a]})},repay:(n,r,o)=>{let s=t.utils.parseCoinType(o);return e.moveCall({target:`${i.protocolPkg}::repay::repay`,arguments:[e.object(i.version),e.object(n),e.object(i.market),typeof r!="string"?r:e.pure(r),e.object(an.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},borrowFlashLoan:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::flash_loan::borrow_flash_loan`,arguments:[e.object(i.version),e.object(i.market),e.pure(n)],typeArguments:[o]})},repayFlashLoan:(n,r,o)=>{let s=t.utils.parseCoinType(o);return e.moveCall({target:`${i.protocolPkg}::flash_loan::repay_flash_loan`,arguments:[e.object(i.version),e.object(i.market),e.pure(n),e.object(r)],typeArguments:[s]})}}},Gi=({builder:t,txBlock:e})=>{let i=DT({builder:t,txBlock:e});return{normalMethod:i,addCollateralQuick:async(n,r,o)=>{let s=Ci(e),{obligationId:a}=await Ra(e,t,o);if(r==="sui"){let[l]=e.splitCoins(e.gas,[n]);i.addCollateral(a,l,r)}else{let{leftCoin:l,takeCoin:u}=await t.selectCoin(e,r,n,s);i.addCollateral(a,u,r),e.transferObjects([l],s)}},takeCollateralQuick:async(n,r,o,s)=>{let a=await Ra(e,t,o,s),l=await t.query.getObligationCoinNames(a.obligationId);return await xu(t,e,l),i.takeCollateral(a.obligationId,a.obligationKey,n,r)},depositQuick:async(n,r,o)=>{if(r==="sui"){let[l]=e.splitCoins(e.gas,[n]);return i.deposit(l,r)}let{leftCoin:s,takeCoin:a}=await t.selectCoin(e,r,n,o);return e.transferObjects([s],o),i.deposit(a,r)},withdrawQuick:async(n,r)=>{let o=Ci(e),s=t.utils.parseMarketCoinName(r),{leftCoin:a,takeCoin:l}=await t.selectMarketCoin(e,s,n,o);return e.transferObjects([a],o),i.withdraw(l,r)},borrowQuick:async(n,r,o,s)=>{let a=await Ra(e,t,o,s),l=[...await t.query.getObligationCoinNames(a.obligationId),r];return await xu(t,e,l),i.borrow(a.obligationId,a.obligationKey,n,r)},repayQuick:async(n,r,o,s)=>{let a=await Ra(e,t,o);if(r==="sui"){let[h]=e.splitCoins(e.gas,[n]);return i.repay(a.obligationId,h,r)}let{leftCoin:l,takeCoin:u}=await t.selectCoin(e,r,n,s);return e.transferObjects([l],s),i.repay(a.obligationId,u,r)},updateAssetPricesQuick:async n=>xu(t,e,n)}},Om=async(...t)=>{let[e,i,n,r]=t;if(t.length===4&&r)return[r];let o=Ci(i),s=await zu(e.query,o);if(s[n].length===0)throw new Error(`No stake account id found for sender ${o}`);return s[n].map(a=>a.id)},MT=async(...t)=>{let[e,i,n,r]=t,o=Ci(i),s=await zu(e.query,o);if(s[n].length===0)throw new Error(`No stake account found for sender ${o}`);return r?s[n].filter(a=>a.id===r):s[n]},ET=({builder:t,txBlock:e})=>{let i={spoolPkg:t.address.get("spool.id")};return{createStakeAccount:n=>{let r=t.utils.parseMarketCoinType(n),o=t.address.get(`spool.pools.${n}.id`);return e.moveCall({target:`${i.spoolPkg}::user::new_spool_account`,arguments:[e.object(o),e.object(ns.SUI_CLOCK_OBJECT_ID)],typeArguments:[r]})},stake:(n,r,o)=>{let s=t.utils.parseMarketCoinType(o),a=t.address.get(`spool.pools.${o}.id`);e.moveCall({target:`${i.spoolPkg}::user::stake`,arguments:[e.object(a),e.object(n),typeof r=="string"?e.pure(r):r,e.object(ns.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},unstake:(n,r,o)=>{let s=t.utils.parseMarketCoinType(o),a=t.address.get(`spool.pools.${o}.id`);return e.moveCall({target:`${i.spoolPkg}::user::unstake`,arguments:[e.object(a),e.object(n),e.pure(r),e.object(ns.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},claim:(n,r)=>{let o=t.address.get(`spool.pools.${r}.id`),s=t.address.get(`spool.pools.${r}.rewardPoolId`),a=t.utils.parseMarketCoinType(r),l=O0[r],u=t.utils.parseCoinType(l);return e.moveCall({target:`${i.spoolPkg}::user::redeem_rewards`,arguments:[e.object(o),e.object(s),e.object(n),e.object(ns.SUI_CLOCK_OBJECT_ID)],typeArguments:[a,u]})}}},Xr=({builder:t,txBlock:e})=>{let i=ET({builder:t,txBlock:e});return{normalMethod:i,stakeQuick:async(n,r,o)=>{let s=Ci(e),a=await Om(t,e,r,o),l=t.utils.parseMarketCoinType(r);if(typeof n=="number"){let u=await t.utils.selectCoinIds(n,l,s),[h,y]=t.utils.takeAmountFromCoins(e,u,n);i.stake(a[0],h,r),e.transferObjects([y],s)}else i.stake(a[0],n,r)},unstakeQuick:async(n,r,o)=>{let s=n,a=await MT(t,e,r,o),l=[];for(let u=0;u<a.length;u++){if(a[u].staked===0)continue;let h=Math.min(s,a[u].staked),y=i.unstake(a[u].id,h,r);if(l.push(y),s-=h,s===0)break}return l},claimQuick:async(n,r)=>{let o=await Om(t,e,n,r),s=[];return o.forEach(a=>{let l=i.claim(a,n);s.push(l)}),s}}},jT=({builder:t,txBlock:e})=>{let i={pkgId:t.address.get("vesca.id"),table:t.address.get("vesca.table"),treasury:t.address.get("vesca.treasury"),config:t.address.get("vesca.config")};return{lockSca:(n,r)=>e.moveCall({target:`${i.pkgId}::ve_sca::mint_ve_sca_key`,arguments:[e.object(i.config),e.object(i.table),e.object(i.treasury),typeof n=="string"?e.pure(n):n,e.pure(r),e.object(to.SUI_CLOCK_OBJECT_ID)]}),extendLockPeriod:(n,r)=>{e.moveCall({target:`${i.pkgId}::ve_sca::extend_lock_period`,arguments:[e.object(i.config),e.object(n),e.object(i.table),e.object(i.treasury),e.pure(r),e.object(to.SUI_CLOCK_OBJECT_ID)]})},extendLockAmount:(n,r)=>{e.moveCall({target:`${i.pkgId}::ve_sca::lock_more_sca`,arguments:[e.object(i.config),e.object(n),e.object(i.table),e.object(i.treasury),typeof r=="string"?e.pure(r):r,e.object(to.SUI_CLOCK_OBJECT_ID)]})},renewExpiredVeSca:(n,r,o)=>{e.moveCall({target:`${i.pkgId}::ve_sca::renew_expired_ve_sca`,arguments:[e.object(i.config),e.object(n),e.object(i.table),e.object(i.treasury),typeof r=="string"?e.pure(r):r,e.pure(o),e.object(to.SUI_CLOCK_OBJECT_ID)]})},redeemSca:n=>e.moveCall({target:`${i.pkgId}::ve_sca::redeem`,arguments:[e.object(i.config),e.object(n),e.object(i.table),e.object(i.treasury),e.object(to.SUI_CLOCK_OBJECT_ID)]})}},Jr=({builder:t,txBlock:e})=>{let i=jT({builder:t,txBlock:e});return{normalMethod:i,lockScaQuick:async(n,r,o=!0)=>{let s=Ci(e),a=await eo(t,e),l,u=[];if(n!==void 0&&typeof n=="number"){let T=await t.utils.selectCoinIds(n,no,s),[O,P]=t.utils.takeAmountFromCoins(e,T,n);l=O,u.push(P)}else l=n;let h=t.utils.getUnlockAt(r,a?.unlockAt);o&&rT(n,r,h,a?.unlockAt),console.log(new Date(h*1e3).toLocaleString("en-CA",{hour12:!0}));let y=!a?.unlockAt,v=!y&&a.unlockAt*1e3<=new Date().getTime();if(y||v){if(l)if(y){let T=i.lockSca(l,h);u.push(T)}else{if(a.lockedScaAmount!==0){let T=i.redeemSca(a.keyId);u.push(T)}i.renewExpiredVeSca(a.keyId,l,h)}}else l&&r?(i.extendLockPeriod(a.keyId,h),i.extendLockAmount(a.keyId,l)):r?i.extendLockPeriod(a.keyId,h):l&&i.extendLockAmount(a.keyId,l);u.length>0&&e.transferObjects(u,s)},extendLockPeriodQuick:async(n,r,o=!0)=>{let s=await eo(t,e,r),a=t.utils.getUnlockAt(n);o&&oT(n,a,s?.unlockAt),s&&i.extendLockPeriod(s.keyId,a)},extendLockAmountQuick:async(n,r,o=!0)=>{let s=Ci(e),a=await eo(t,e,r);if(o&&sT(n,a?.unlockAt),a){let l=await t.utils.selectCoinIds(n,no,s),[u,h]=t.utils.takeAmountFromCoins(e,l,n);i.extendLockAmount(a.keyId,u),e.transferObjects([h],s)}},renewExpiredVeScaQuick:async(n,r,o,s=!0)=>{let a=Ci(e),l=await eo(t,e,o),u=t.utils.getUnlockAt(r,l?.unlockAt);if(s&&aT(n,r,l?.unlockAt),l){let h=[];if(l.lockedScaAmount!==0){let O=i.redeemSca(l.keyId);h.push(O)}let y=await t.utils.selectCoinIds(n,no,a),[v,T]=t.utils.takeAmountFromCoins(e,y,n);h.push(T),i.renewExpiredVeSca(l.keyId,v,u),e.transferObjects(h,a)}},redeemScaQuick:async n=>{let r=Ci(e),o=await eo(t,e,n);if(ls(o?.unlockAt),o){let s=i.redeemSca(o.keyId);e.transferObjects([s],r)}}}},It=class{params;client;address;builder;query;utils;walletAddress;constructor(t,e){this.params=t,this.client=t.client,this.address=e?.address??new tc({id:t?.addressesId||Qa,network:t?.networkType}),this.query=e?.query??new R0(t,{address:this.address}),this.utils=e?.utils??new Vu(t,{address:this.address,query:this.query}),this.builder=e?.builder??new q0(t,{address:this.address,query:this.query,utils:this.utils}),this.walletAddress=(0,P0.normalizeSuiAddress)(t.walletAddress)}init(t=!1){(t||!this.address.getAddresses())&&this.address.read(),this.builder.init(t,this.address),this.query.init(t,this.address),this.utils.init(t,this.address)}async getObligations(t){let e=t||this.walletAddress;return this.query.getObligations(e)}async getAllStakeAccounts(t){let e=t||this.walletAddress;return this.query.getAllStakeAccounts(e)}async getStakeAccounts(t,e){let i=e||this.walletAddress;return this.query.getStakeAccounts(t,i)}async getStakePool(t){return this.query.getStakePool(t)}async getStakeRewardPool(t){return this.query.getStakeRewardPool(t)}async openObligation(t){let e=new We.TransactionBlock,i=Gi({builder:this.builder,txBlock:e}),n=t||this.walletAddress;return e.setSender(n),i.normalMethod.openObligationEntry(),e}async depositCollateral(t,e,i,n){let r=new We.TransactionBlock,o=n||this.walletAddress;r.setSender(o);let s=Gi({builder:this.builder,txBlock:r}),a=await this.query.getObligations(o),l=i||a?.[0]?.id;if(l)await s.addCollateralQuick(e,t,l);else{let[u,h,y]=s.normalMethod.openObligation();await s.addCollateralQuick(e,t,u),s.normalMethod.returnObligation(u,y),r.transferObjects([h],o)}return r}async withdrawCollateral(t,e,i,n,r){let o=new We.TransactionBlock,s=Gi({builder:this.builder,txBlock:o}),a=r||this.walletAddress;o.setSender(a);let l=await s.takeCollateralQuick(e,t,i,n);return o.transferObjects([l],a),o}async deposit(t,e,i){let n=new We.TransactionBlock,r=Gi({builder:this.builder,txBlock:n}),o=i||this.walletAddress;n.setSender(o);let s=await r.depositQuick(e,t,i);return n.transferObjects([s],o),n}async withdraw(t,e,i){let n=new We.TransactionBlock,r=i||this.walletAddress,o=Gi({builder:this.builder,txBlock:n});n.setSender(r);let s=await o.withdrawQuick(e,t);return n.transferObjects([s],r),n}async borrow(t,e,i,n,r){let o=new We.TransactionBlock,s=Gi({builder:this.builder,txBlock:o}),a=Ni({builder:this.builder,txBlock:o}),l=r||this.walletAddress;o.setSender(l);let u=Ka.includes(t);u&&await a.unstakeObligationQuick(i,n);let h=await s.borrowQuick(e,t,i,n);return o.transferObjects([h],l),u&&await a.stakeObligationQuick(i,n),o}async borrowWithBoost(t,e,i,n,r,o){let s=new We.TransactionBlock,a=Gi({builder:this.builder,txBlock:s}),l=Ni({builder:this.builder,txBlock:s}),u=o||this.walletAddress;s.setSender(u);let h=Ka.includes(t);h&&await l.unstakeObligationQuick(i,n);let y=await a.borrowQuick(e,t,i,n);return s.transferObjects([y],u),h&&await l.stakeObligationWithVeScaQuick(i,n,r),s}async repay(t,e,i,n,r){let o=new We.TransactionBlock,s=Gi({builder:this.builder,txBlock:o}),a=Ni({builder:this.builder,txBlock:o}),l=r||this.walletAddress;o.setSender(l);let u=Ka.includes(t);return u&&await a.unstakeObligationQuick(i,n),await s.repayQuick(e,t,i,l),u&&await a.stakeObligationQuick(i,n),o}async createStakeAccount(t,e){let i=new We.TransactionBlock,n=Xr({builder:this.builder,txBlock:i}),r=e||this.walletAddress;i.setSender(r);let o=n.normalMethod.createStakeAccount(t);return i.transferObjects([o],r),i}async supplyAndStake(t,e,i,n){let r=new We.TransactionBlock,o=Gi({builder:this.builder,txBlock:r}),s=Xr({builder:this.builder,txBlock:r}),a=n||this.walletAddress;r.setSender(a);let l=await o.depositQuick(e,t,n),u=this.utils.parseMarketCoinName(t);if(!Ru.find(v=>v===u))return r;let h=await this.query.getStakeAccounts(u,a),y=i||(h.length>0?h[0].id:void 0);if(y)await s.stakeQuick(l,u,y);else{let v=s.normalMethod.createStakeAccount(u);await s.stakeQuick(l,u,v),r.transferObjects([v],a)}return r}async unstakeAndWithdraw(t,e,i){let n=new We.TransactionBlock,r=Gi({builder:this.builder,txBlock:n}),o=Xr({builder:this.builder,txBlock:n}),s=this.walletAddress,a=[];n.setSender(s);let l=this.utils.parseMarketCoinName(t);for(let u=0;u<i.length;u++){let h=i[u],[y]=await o.unstakeQuick(h.coin,l,h.id);if(y){let v=r.normalMethod.withdraw(y,t);a.push(v)}}if(e>0){let u=await r.withdrawQuick(e,t);a.push(u)}return n.transferObjects(a,s),n}async stake(t,e,i,n){let r=new We.TransactionBlock,o=Xr({builder:this.builder,txBlock:r}),s=n||this.walletAddress;r.setSender(s);let a=await this.query.getStakeAccounts(t,s),l=i||(a.length>0?a[0].id:void 0);if(l)await o.stakeQuick(e,t,l);else{let u=o.normalMethod.createStakeAccount(t);await o.stakeQuick(e,t,u),r.transferObjects([u],s)}return r}async unstake(t,e,i,n){let r=new We.TransactionBlock,o=Xr({builder:this.builder,txBlock:r}),s=n||this.walletAddress;r.setSender(s);let a=await o.unstakeQuick(e,t,i);return r.transferObjects(a,s),r}async claim(t,e,i,n){let r=new We.TransactionBlock,o=Xr({builder:this.builder,txBlock:r}),s=Ni({builder:this.builder,txBlock:r}),a=n||this.walletAddress;r.setSender(a);let l={sui:[],sca:[]};for(let u=0;u<t.length;u++){let{stakeMarketCoinName:h,stakeAccountId:y}=t[u],v=o.normalMethod.claim(y,h);l.sui.push(v)}for(let u=0;u<e.length;u++){let{obligationId:h,obligationKey:y,rewardCoinName:v}=e[u],T=s.normalMethod.claimBorrowIncentive(h,y,v);l[v].push(T)}for(let u=0;u<i.length;u++){let{obligationId:h,obligationKey:y,rewardCoinName:v}=i[u],T=s.normalMethod.oldClaimBorrowIncentive(h,y,v);l[v].push(T)}return l.sui.length>0&&(l.sui.length>1&&r.mergeCoins(l.sui[0],l.sui.slice(1)),r.transferObjects([l.sui[0]],r.pure(a))),l.sca.length>0&&(l.sca.length>1&&r.mergeCoins(l.sca[0],l.sca.slice(1)),r.transferObjects([l.sca[0]],r.pure(a))),r}async stakeObligation(t,e,i){let n=this.builder.createTxBlock(),r=Ni({builder:this.builder,txBlock:n}),o=i||this.walletAddress;return n.setSender(o),await r.stakeObligationQuick(t,e),n}async unstakeObligation(t,e,i){let n=this.builder.createTxBlock(),r=Ni({builder:this.builder,txBlock:n}),o=i||this.walletAddress;return n.setSender(o),await r.unstakeObligationQuick(t,e),n}async stakeSca(t,e=!1,i=!1,n,r,o,s,a){let l=new We.TransactionBlock,u=Jr({builder:this.builder,txBlock:l}),h=Ni({builder:this.builder,txBlock:l}),y=a||this.walletAddress;l.setSender(y);let v=await this.builder.utils.selectCoinIds(t,no,y),[T,O]=this.builder.utils.takeAmountFromCoins(l,v,t),P;return s?u.normalMethod.extendLockAmount(s,T):P=u.normalMethod.lockSca(T,o),n&&r&&(e&&(i?h.normalMethod.oldUnstakeObligation(n,r):h.normalMethod.unstakeObligation(n,r)),h.normalMethod.stakeObligationWithVesca(n,r,s||P)),s||l.transferObjects([P,O],y),l}async stakeMoreSca(t,e,i){let n=new We.TransactionBlock,r=i||this.walletAddress;return n.setSender(r),n}async extendStakeScaLockPeriod(t,e,i,n,r=!1,o=!1,s){let a=new We.TransactionBlock,l=Jr({builder:this.builder,txBlock:a}),u=Ni({builder:this.builder,txBlock:a}),h=s||this.walletAddress;return a.setSender(h),l.normalMethod.extendLockPeriod(e,t),i&&n&&(r&&(o?u.normalMethod.oldUnstakeObligation(i,n):u.normalMethod.unstakeObligation(i,n)),u.normalMethod.stakeObligationWithVesca(i,n,e)),a}async extendPeriodAndStakeMoreSca(t,e,i,n,r,o=!1,s=!1,a){let l=new We.TransactionBlock,u=Jr({builder:this.builder,txBlock:l}),h=Ni({builder:this.builder,txBlock:l}),y=a||this.walletAddress;l.setSender(y);let v=await this.builder.utils.selectCoinIds(t,no,y),[T,O]=this.builder.utils.takeAmountFromCoins(l,v,t);return u.normalMethod.extendLockPeriod(e,i),u.normalMethod.extendLockAmount(e,T),l.transferObjects([O],y),!n||!r||(o&&(s?h.normalMethod.oldUnstakeObligation(n,r):h.normalMethod.unstakeObligation(n,r)),h.normalMethod.stakeObligationWithVesca(n,r,e)),l}async renewExpiredStakeSca(t,e,i,n=!1,r,o,s=!1,a=!1,l){let u=new We.TransactionBlock,h=Jr({builder:this.builder,txBlock:u}),y=Ni({builder:this.builder,txBlock:u}),v=l||this.walletAddress;if(u.setSender(v),n){let j=h.normalMethod.redeemSca(i);u.transferObjects([j],v)}let T=await this.builder.utils.selectCoinIds(t,no,v),[O,P]=this.builder.utils.takeAmountFromCoins(u,T,t);return u.transferObjects([P],v),h.normalMethod.renewExpiredVeSca(i,O,e),!r||!o||(s&&(a?y.normalMethod.oldUnstakeObligation(r,o):y.normalMethod.unstakeObligation(r,o)),y.normalMethod.stakeObligationWithVesca(r,o,i)),u}async redeemSca(t){let e=new We.TransactionBlock,i=Jr({builder:this.builder,txBlock:e}),n=this.walletAddress;return e.setSender(n),await i.redeemScaQuick(t),e}async migrateAndClaim(t,e,i,n){let r=new We.TransactionBlock,o=Ni({builder:this.builder,txBlock:r}),s=this.walletAddress;r.setSender(s);let a=o.normalMethod.oldClaimBorrowIncentive(i,e,n);return r.transferObjects([a],s),o.stakeObligationWithVeScaQuick(i,e,t),r}async withdrawUnlockedSca(t,e){let i=new We.TransactionBlock,n=Jr({builder:this.builder,txBlock:i}),r=e||this.walletAddress;return i.setSender(r),await n.redeemScaQuick(t),i}calculateAvailableClaimCoin(t,e){let i=new wi(t.weightedAmount),n=e.currentPointIndex?wi(e.currentPointIndex-t.index).dividedBy(1e9):1;return i.multipliedBy(n).plus(t.points).shiftedBy(-1*e.coinDecimal)}},BT=class $0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new It({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.borrow(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new $0(e)}},NT=class U0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new It({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await i.init(),i.borrowWithBoost(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,this.data.veScaKey,e.account.address)}static fromData(e){return new U0(e)}},FT=class K0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new It({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.claim(this.data.lendingIncentive,this.data.borrowIncentiveV2,this.data.borrowIncentive,e.account.address)}static fromData(e){return new K0(e)}},RT=class V0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new It({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.depositCollateral(this.data.collateralCoinName,Number(this.data.amount),this.data.obligationId,e.account.address)}static fromData(e){return new V0(e)}},qT=class W0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new It({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.extendPeriodAndStakeMoreSca(this.data.amount,this.data.vescaKey,this.data.lockPeriodInDays,this.data.obligation,this.data.obligationKey,this.data.isObligationLocked,this.data.isOldBorrowIncentive,e.account.address)}static fromData(e){return new W0(e)}},LT=class z0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new It({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.extendStakeScaLockPeriod(this.data.lockPeriodInDays,this.data.vescaKey,this.data.obligationId,this.data.obligationKey,this.data.isObligationLocked,this.data.isOldBorrowIncentive,e.account.address)}static fromData(e){return new z0(e)}},$T=class G0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new It({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await i.init(),i.migrateAndClaim(this.data.veScaKey,this.data.obligationKey,this.data.obligationId,this.data.rewardCoinName)}static fromData(e){return new G0(e)}},UT=class H0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new It({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.openObligation()}static fromData(e){return new H0(e)}},KT=class Z0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new It({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.redeemSca(this.data.veScaKey)}static fromData(e){return new Z0(e)}},VT=class X0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new It({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.renewExpiredStakeSca(this.data.amount,this.data.lockPeriodInDays,this.data.vescaKey,this.data.isHaveRedeem,this.data.obligation,this.data.obligationKey,this.data.isObligationLocked,this.data.isOldBorrowIncentive,e.account.address)}static fromData(e){return new X0(e)}},WT=class J0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new It({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.repay(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new J0(e)}},zT=class Y0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new It({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.stakeSca(this.data.amount,this.data.isObligationLocked,this.data.isOldBorrowIncentive,this.data.obligationId,this.data.obligationKey,this.data.lockPeriodInDays,this.data.veScaKey,e.account.address)}static fromData(e){return new Y0(e)}},GT=class Q0 extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new It({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.stake(this.data.marketCoinName,Number(this.data.amount),void 0,e.account.address)}static fromData(e){return new Q0(e)}},HT=class e_ extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new It({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.supplyAndStake(this.data.coinName,Number(this.data.amount),this.data.stakeAccountId,e.account.address)}static fromData(e){return new e_(e)}},ZT=class t_ extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new It({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.deposit(this.data.coinName,Number(this.data.amount),e.account.address)}static fromData(e){return new t_(e)}},XT=class i_ extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new It({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.unstake(this.data.marketCoinName,Number(this.data.amount),void 0,e.account.address)}static fromData(e){return new i_(e)}},JT=class n_ extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new It({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.unstakeAndWithdraw(this.data.coinName,Number(this.data.amount),this.data.stakeAccountId)}static fromData(e){return new n_(e)}},YT=class r_ extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new It({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.withdrawCollateral(this.data.collateralCoinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new r_(e)}},QT=class o_ extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new It({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.withdraw(this.data.coinName,Number(this.data.amount),e.account.address)}static fromData(e){return new o_(e)}},eS=class s_ extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new It({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.withdrawUnlockedSca(this.data.vescaKey,e.account.address)}static fromData(e){return new s_(e)}},tS=class{application="scallop";async deserialize(t){let e=new q0({client:t.suiClient,walletAddress:t.account.address,networkType:t.network.split(":")[1]});await e.init();let{transactionBlock:i}=t,n=new iT(i,e).decode();return{txType:x0.TransactionType.Other,txSubType:n.type,intentionData:n.intentionData}}async build(t){let{suiClient:e,account:i,network:n}=t,r;switch(t.txSubType){case"SupplyLending":r=ZT.fromData(t.intentionData);break;case"WithdrawLending":r=QT.fromData(t.intentionData);break;case"Borrow":r=BT.fromData(t.intentionData);break;case"Repay":r=WT.fromData(t.intentionData);break;case"DepositCollateral":r=RT.fromData(t.intentionData);break;case"WithdrawCollateral":r=YT.fromData(t.intentionData);break;case"OpenObligation":r=UT.fromData(t.intentionData);break;case"StakeSpool":r=GT.fromData(t.intentionData);break;case"UnstakeSpool":r=XT.fromData(t.intentionData);break;case"ClaimIncentiveReward":r=FT.fromData(t.intentionData);break;case"BorrowWithBoost":r=NT.fromData(t.intentionData);break;case"StakeSca":r=zT.fromData(t.intentionData);break;case"ExtendStakePeriod":r=LT.fromData(t.intentionData);break;case"ExtendPeriodAndStakeMore":r=qT.fromData(t.intentionData);break;case"RenewExpStakePeriod":r=VT.fromData(t.intentionData);break;case"WithdrawStakedSca":r=eS.fromData(t.intentionData);break;case"SupplyAndStakeLending":r=HT.fromData(t.intentionData);break;case"WithdrawAndUnstakeLending":r=JT.fromData(t.intentionData);break;case"RedeemSca":r=KT.fromData(t.intentionData);break;case"MigrateAndClaim":r=$T.fromData(t.intentionData);break;default:throw new Error("not implemented")}return r.build({suiClient:e,account:i,network:n})}},Gt={PackageId:"0x9632f61a796fc54952d9151d80b319e066cba5498a27b495c99e113db09726b1"},c_=[`${Gt.PackageId}::swap_router::swap_a_b`,`${Gt.PackageId}::swap_router::swap_b_a`],Lu=[`${Gt.PackageId}::swap_router::swap_a_b_b_c`,`${Gt.PackageId}::swap_router::swap_a_b_c_b`,`${Gt.PackageId}::swap_router::swap_b_a_b_c`,`${Gt.PackageId}::swap_router::swap_b_a_c_b`],iS=(t,e)=>{if(t===1)switch(Lu.findIndex(i=>i===e)){case 0:return[!0,!0];case 1:return[!0,!1];case 2:return[!1,!0];case 4:return[!1,!1];default:throw new Error(`not target: ${e}`)}switch(c_.findIndex(i=>i===e)){case 0:return[!0];case 1:return[!1];default:throw new Error(`not target: ${e}`)}},nS=class{constructor(t,e){this.txb=t,this.client=e}get transactions(){return this.txb.blockData.transactions}decode(t){if(this.isSwapTransaction())return this.decodeSwap();if(this.isAddLiquidityTransaction())return this.decodeAddLiquidity();if(this.isIncreaseLiquidityTransaction())return this.decodeIncreaseLiquidity(t);if(this.isRemoveLiquidityTransaction())return this.decodeRemoveLiquidity(t);if(this.isDecreaseLiquidityTransaction())return this.decodeDecreaseLiquidity(t);if(this.isCollectFeeTransaction())return this.decodeCollectFee();if(this.isCollectRewardTransaction())return this.decodeCollectReward();if(this.isBurnTransaction())return this.decodeBurn();throw new Error("Unknown transaction type")}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}getMoveCallsTransaction(t){return t.every(e=>this.transactions.find(i=>i.kind==="MoveCall"&&i.target===e))}getSwapMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&t.includes(e.target))}isSwapTransaction(){return!!this.getSwapMoveCallTransaction([...c_,...Lu])}isAddLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::position_manager::mint`)}isIncreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::position_manager::increase_liquidity`)}isDecreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::position_manager::decrease_liquidity`)}isCollectFeeTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::position_manager::collect`)}isCollectRewardTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::position_manager::collect_reward`)}isBurnTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::position_manager::burn`)}isRemoveLiquidityTransaction(){return!!this.getMoveCallsTransaction([`${Gt.PackageId}::position_manager::decrease_liquidity`,`${Gt.PackageId}::position_manager::burn`])}decodeSwap(){let t=this.transactions.find(y=>y.kind==="MoveCall");console.log(t,"decodeSwap");let e=0;Lu.includes(t.target)&&(e=1);let i=iS(e,t.target),n=i.map((y,v)=>{let T=this.helper.decodeSharedObjectId(v),O=this.helper.decodeInputU128(4+v+e);return{pool:T,a2b:y,nextTickIndex:O}}),r=i[0]?t.typeArguments[0]:t.typeArguments[1],o=e===1?t.typeArguments[4]:i[0]?t.typeArguments[1]:t.typeArguments[0],s=this.helper.decodeInputAddress(6+2*e),a=this.helper.decodeInputU64(7+2*e),l=this.helper.decodeInputBool(5+2*e),u=this.helper.decodeInputU64(2+e),h=this.helper.decodeInputU64(3+e);return{txType:cn.TransactionType.Other,type:"Swap",intentionData:{routes:n,coinTypeA:r,coinTypeB:o,address:s,amountA:l?u:h,amountB:l?h:u,amountSpecifiedIsInput:l,slippage:"0.1",deadline:a}}}decodeAddLiquidity(){console.log(this.helper,"this.helper");let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeInputAddress(12),i=this.helper.decodeInputU64(8),n=this.helper.decodeInputU64(9),r=this.helper.decodeInputU32(4),o=this.helper.decodeInputBool(5),s=this.helper.decodeInputU32(6),a=this.helper.decodeInputBool(7),l=this.helper.decodeInputU64(13);return{txType:cn.TransactionType.Other,type:"AddLiquidity",intentionData:{pool:t,slippage:5,address:e,amountA:i,amountB:n,tickLower:o?-r:r,tickUpper:a?-s:s,deadline:l}}}decodeIncreaseLiquidity(t){let e=this.helper.decodeSharedObjectId(0),i=this.helper.decodeSharedObjectId(4),n=this.helper.decodeInputU64(5),r=this.helper.decodeInputU64(6),o=this.helper.decodeInputU64(9);return{txType:cn.TransactionType.Other,type:"IncreaseLiquidity",intentionData:{pool:e,slippage:5,address:t,amountA:n,amountB:r,nft:i,deadline:o}}}decodeDecreaseLiquidity(t){let e=this.helper.decodeSharedObjectId(0),i=this.helper.decodeSharedObjectId(2),n=this.helper.decodeInputU64(3),r=this.helper.decodeInputU64(4),o=this.helper.decodeInputU64(5),s=this.helper.decodeInputU64(6);return{txType:cn.TransactionType.Other,type:"DecreaseLiquidity",intentionData:{pool:e,decreaseLiquidity:n,nft:i,amountA:r,amountB:o,slippage:3,address:t,deadline:s}}}decodeCollectFee(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2),i=this.helper.decodeInputAddress(5),n=this.helper.decodeInputU64(3),r=this.helper.decodeInputU64(4),o=this.helper.decodeInputU64(6);return{txType:cn.TransactionType.Other,type:"CollectFee",intentionData:{pool:t,address:i,collectAmountA:n,collectAmountB:r,nft:e,deadline:o}}}decodeCollectReward(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2),i=this.helper.decodeInputAddress(6),n=this.collectRewardHelper.map(o=>o.decodeInputU64(5)),r=this.helper.decodeInputU64(7);return{txType:cn.TransactionType.Other,type:"CollectReward",intentionData:{pool:t,address:i,rewardAmounts:n,nft:e,deadline:r}}}decodeBurn(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2);return{txType:cn.TransactionType.Other,type:"Burn",intentionData:{pool:t,nft:e}}}decodeRemoveLiquidity(t){let e=this.helper.decodeSharedObjectId(0),i=this.helper.decodeSharedObjectId(2),n=this.helper.decodeInputU64(3),r=this.helper.decodeInputU64(4),o=this.helper.decodeInputU64(5),s=this.helper.decodeInputU64(6),a=this.collectRewardHelper.map(h=>h.decodeInputU64(5)),l=this.collectFeeHelper.decodeInputU64(3)||0,u=this.collectFeeHelper.decodeInputU64(4)||0;return{txType:cn.TransactionType.Other,type:"RemoveLiquidity",intentionData:{pool:e,decreaseLiquidity:n,nft:i,amountA:r,amountB:o,slippage:3,address:t,collectAmountA:l,collectAmountB:u,rewardAmounts:a,deadline:s}}}get helper(){console.log(this.transactions,"this.transactions");let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target!=="0x2::coin::zero");return console.log(t,this.txb,"this.txb"),new Au(t,this.txb)}get collectRewardHelper(){console.log(this.transactions,"this.transactions");let t=this.transactions.filter(e=>e.kind==="MoveCall"&&e.target===`${Gt.PackageId}::position_manager::collect_reward`);return console.log(t,this.txb,"this.txb"),t.map(e=>new Au(e,this.txb))}get collectFeeHelper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target===`${Gt.PackageId}::position_manager::collect`);return new Au(t,this.txb)}},Au=class za{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return za.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return za.getOwnedObjectId(i)}decodeInputU128(e){let i=this.decodePureArg(e,"u128");return Number(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return Number(i)}decodeInputU32(e){let i=this.decodePureArg(e,"u32");return Number(i)}decodeInputU8(e){let i=this.decodePureArg(e,"u8");return Number(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,Fn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return za.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}static getPureInputValue(e,i){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 qu.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Fn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Fn.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Fn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Fn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){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 qu.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,Fn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},rS=class l_ extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Bt(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,amountA:o,amountB:s,slippage:a,tickLower:l,tickUpper:u,deadline:h,txb:y}=this.data;return i.pool.addLiquidity({pool:n,slippage:a,address:r,amountA:o,amountB:s,tickLower:l,tickUpper:u,deadline:h,txb:y})}static fromData(e){return new l_(e)}},oS=class u_ extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Bt(e.network.replace("sui:",""),e.suiClient),{pool:n,nft:r,txb:o}=this.data;return i.nft.burn({pool:n,nft:r,txb:o})}static fromData(e){return new u_(e)}},sS=class d_ extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Bt(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,nft:o,collectAmountA:s,collectAmountB:a,deadline:l,txb:u}=this.data;return i.pool.collectFee({pool:n,address:r,collectAmountA:s,collectAmountB:a,nft:o,deadline:l,txb:u})}static fromData(e){return new d_(e)}},aS=class f_ extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Bt(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,nft:o,rewardAmounts:s,deadline:a,txb:l}=this.data;return i.pool.collectReward({pool:n,address:r,rewardAmounts:s,nft:o,deadline:a,txb:l})}static fromData(e){return new f_(e)}},cS=class h_ extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Bt(e.network.replace("sui:",""),e.suiClient),{fee:n,address:r,tickLower:o,tickUpper:s,sqrtPrice:a,slippage:l,coinTypeA:u,coinTypeB:h,amountA:y,amountB:v,deadline:T,txb:O}=this.data;return i.pool.createPool({fee:n,amountA:y,amountB:v,address:r,tickLower:o,tickUpper:s,sqrtPrice:a,slippage:l,coinTypeA:u,coinTypeB:h,deadline:T,txb:O})}static fromData(e){return new h_(e)}},lS=class p_ extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Bt(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,amountA:o,amountB:s,slippage:a,nft:l,decreaseLiquidity:u,deadline:h,txb:y}=this.data;return i.pool.decreaseLiquidity({pool:n,slippage:a,address:r,amountA:o,amountB:s,nft:l,decreaseLiquidity:u,deadline:h,txb:y})}static fromData(e){return new p_(e)}},uS=class m_ extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Bt(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,amountA:o,amountB:s,slippage:a,nft:l,deadline:u,txb:h}=this.data;return i.pool.increaseLiquidity({pool:n,slippage:a,address:r,amountA:o,amountB:s,nft:l,deadline:u,txb:h})}static fromData(e){return new m_(e)}},dS=class g_ extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Bt(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,amountA:o,amountB:s,slippage:a,nft:l,decreaseLiquidity:u,collectAmountA:h,collectAmountB:y,rewardAmounts:v,deadline:T,txb:O}=this.data;return i.pool.removeLiquidity({pool:n,decreaseLiquidity:u,nft:l,amountA:o,amountB:s,slippage:a,address:r,collectAmountA:h,collectAmountB:y,rewardAmounts:v,deadline:T,txb:O})}static fromData(e){return new g_(e)}},fS=class __ extends ae{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Bt(e.network.replace("sui:",""),e.suiClient),{routes:n,coinTypeA:r,coinTypeB:o,address:s,amountA:a,amountB:l,slippage:u,amountSpecifiedIsInput:h,deadline:y,txb:v}=this.data;return i.trade.swap({routes:n,coinTypeA:r,coinTypeB:o,address:s,amountA:a,amountB:l,amountSpecifiedIsInput:h,slippage:u,deadline:y,txb:v})}static fromData(e){return new __(e)}},hS=class{application="turbos";async deserialize(t){let{transactionBlock:e,account:i,suiClient:n}=t,r=new nS(e,n).decode(i.address);return{txType:a_.TransactionType.Other,txSubType:r.type,intentionData:r.intentionData}}async build(t){let{suiClient:e,account:i,network:n}=t,r;switch(t.txSubType){case"CreatePool":r=cS.fromData(t.intentionData);break;case"AddLiquidity":r=rS.fromData(t.intentionData);break;case"IncreaseLiquidity":r=uS.fromData(t.intentionData);break;case"DecreaseLiquidity":r=lS.fromData(t.intentionData);break;case"RemoveLiquidity":r=dS.fromData(t.intentionData);break;case"CollectFee":r=sS.fromData(t.intentionData);break;case"CollectReward":r=aS.fromData(t.intentionData);break;case"Burn":r=oS.fromData(t.intentionData);break;case"Swap":r=fS.fromData(t.intentionData);break;default:throw new Error("not implemented")}return r.build({suiClient:e,account:i,network:n})}},ic=new JC([new NC,new GC,new MC,new XC,new Mk,new hS,new tS]);var Pe=require("@msafe/sui3-utils"),td=require("@mysten/sui.js/transactions"),lc=require("@mysten/sui.js/utils");var b_=require("@mysten/sui.js/transactions"),pS=1000n,mS=120n,gS=100n,_S={multiplier:{numerator:mS,denominator:gS}};var nc=class{constructor(e){this.globals=e}async simulate(e,i=_S){let n=this.copyTransactionBlock(e.txb),{suiClient:r}=this.globals,o=await this.getGasPrice(i);n.setGasPrice(o);let s=await r.devInspectTransactionBlock({transactionBlock:n,sender:e.sender}),{gasUsed:a}=s.effects,l=this.toGasBudget(a,o),u=s.effects.status.status==="success",h;return u||(h=s.effects.status.error),{success:u,gasPrice:o,gasObject:s.effects.gasObject.reference,gasUsed:a,gasBudget:l,simulationError:h}}async getGasPrice(e){if(this.isFixedValue(e))return e.fixedVal;let i=await this.globals.suiClient.getReferenceGasPrice();return this.applyGasOption(i,e)}toGasBudget(e,i){let{computationCost:n,storageCost:r}=e,o=pS*i,s=BigInt(n)+o,a=s+BigInt(r);return a>s?a:s}isFixedValue(e){return"fixedVal"in e}isMultiplier(e){return"multiplier"in e}applyGasOption(e,i){if(this.isFixedValue(i))return i.fixedVal;if(this.isMultiplier(i)){let{multiplier:n}=i;return e*n.numerator/n.denominator}throw new Error("Sanity: Unknown gas price option")}copyTransactionBlock(e){return b_.TransactionBlock.from(e.serialize())}};var Gu=require("buffer");function rc(t){return Gu.Buffer.from(t,"utf-8")}function bS(t){return`0x${Array.prototype.map.call(t,e=>`0${e.toString(16)}`.slice(-2)).join("")}`}function oc(t){return Uint8Array.from(Gu.Buffer.from(t.startsWith("0x")?t.slice(2):t,"hex"))}var ac=require("@mysten/sui.js/verify");var qn=require("@mysten/sui.js/utils");var sc=require("@mysten/sui.js/utils"),fs=class{_client;_coinMetaReg;constructor(e){this._client=e,this._coinMetaReg=new Map}async getCoinMeta(e){let i=(0,sc.normalizeStructTag)(e);if(this._coinMetaReg.has(i))return this._coinMetaReg.get(i);let n=await this.queryCoinMeta(i);return n&&this._coinMetaReg.set(i,n),n}async queryCoinMeta(e){return await this._client.getCoinMetadata({coinType:e})||void 0}},Hu=/^0x0000000000000000000000000000000000000000000000000000000000000002::coin::Coin<(.+)>$/,hs=class t{static isCoin(e){return e?(0,sc.normalizeStructTag)(e).match(Hu)!=null:!1}static getCoinType(e){let[,i]=(0,sc.normalizeStructTag)(e).match(Hu)??[];return i||null}static getBalance(e){if(!t.isCoin(e.type)||e.content?.dataType!=="moveObject")return;let{balance:i}=e.content?.fields;if(i!==void 0)return BigInt(i)}};var dn=class{static normalizeSuiAddress(e){return(0,qn.normalizeSuiAddress)(e)}static normalizeStructTag(e){return(0,qn.normalizeStructTag)(e)}static isSuiAddressEqual(e,i){return(0,qn.normalizeSuiAddress)(e)===(0,qn.normalizeSuiAddress)(i)}static isSuiStructEqual(e,i){return(0,qn.normalizeStructTag)(e)===(0,qn.normalizeStructTag)(i)}static isCoinObjectType(e){return hs.isCoin(e)}};function Zu(t,e){return t.startsWith(e)?t:e+t}var Xu=class t{static async getPublicKeyFromSignature(e){return e.messageType==="TransactionBlock"?(0,ac.verifyTransactionBlock)(e.message,e.signature):(0,ac.verifyPersonalMessage)(e.message,e.signature)}static async getPublicKeyFromPersonalSignature(e){let i=rc(e.messageStr);return this.getPublicKeyFromSignature({message:i,messageType:"Personal",signature:e.signature})}static async verifySignature(e){let i=await t.getPublicKeyFromSignature(e);return dn.isSuiAddressEqual(i.toSuiAddress(),e.targetAddress)}static async verifyPersonalSignature(e){let i=rc(e.messageStr);return this.verifySignature({message:i,messageType:"Personal",signature:e.signature,targetAddress:e.targetAddress})}static async verifyTransactionSignature(e){return this.verifySignature({messageType:"TransactionBlock",message:e.payload,signature:e.signature,targetAddress:e.targetAddress})}};var y_=require("@msafe/sui3-utils"),w_=require("@mysten/sui.js/cryptography"),v_=require("@mysten/sui.js/multisig");var yS="0x2::sui::SUI";async function Ju(t,e){let i;try{i=await t.queryTransactionBlocks({filter:{FromAddress:e},options:{showInput:!0},limit:2})}catch{return}if(i.data.length===0||!i.data[0].transaction?.txSignatures)return;let r=i.data[0].transaction?.txSignatures;for(let o=0;o!==r.length;o++){let s=r[o],a=wS(s,e);if(a)return a}}function wS(t,e){let i=(0,w_.parseSerializedSignature)(t);switch(i.signatureScheme){case"MultiSig":{let n=new v_.MultiSigPublicKey(i.multisig.multisig_pk).toSuiAddress();if(dn.isSuiAddressEqual(n,e))throw new Error("multi-sig wallet cannot be owner");return}case"ZkLogin":{if(dn.isSuiAddressEqual(i.zkLogin.address,e))throw new Error("ZkLogin wallet cannot be owner");return}case"ED25519":case"Secp256k1":case"Secp256r1":{let n=y_.PublicKeySerde.de({publicKeyEncoded:i.publicKey,schema:i.signatureScheme});return dn.isSuiAddressEqual(n.toSuiAddress(),e)?n:void 0}default:throw new Error("Unknown schema")}}async function vS(t){let e=!0,i,n=[];for(;e;){let r=await t.suiClient.getCoins({owner:t.owner,coinType:t.coinType,cursor:i});n.push(...r.data),e=r.hasNextPage,i=r.nextCursor}return n}var k_=25;async function C_(t){let e=[];for(;await t.hasNext();){let i=await t.next();e.push(i)}return e&&Array.isArray(e[0])?e.flat(1):e}var Yu=class{constructor(e){this.requester=e;this.curPage=void 0,this.init=!0}curPage;init;async hasNext(){if(this.init)return this.curPage||(this.curPage=await this.requester.doNextRequest()),!!this.curPage.data?.length||this.curPage.hasNext;if(!this.curPage)throw new Error("invalid implementation of iterator");return this.curPage.hasNext}async next(){return this.init?(this.init=!1,this.curPage||(this.curPage=await this.requester.doNextRequest()),this.curPage.data):(this.curPage=await this.requester.doNextRequest(),this.curPage.data)}},cc=class{constructor(e){this.requester=e;this.pager=new Yu(e),this.curData=[],this.cursor=0}cursor;pager;curData;async hasNext(){return this.cursor<this.curData.length-1?!0:this.pager.hasNext()}async next(){for(this.cursor+=1;this.cursor>=this.curData.length;)if(await this.pager.hasNext())this.curData=await this.pager.next(),this.cursor=0;else throw new Error("not more data");return this.curData[this.cursor]}};async function T_(t,e,i){let n=new Qu(t,e,i);return await C_(n)}var Qu=class extends cc{constructor(i,n,r){super(new ed(i,n,r));this.provider=i;this.owner=n;this.options=r}},ed=class{constructor(e,i,n){this.provider=e;this.owner=i;this.options=n;this.nextCursor=null,this.filter=n?.filter,this.pageSize=n?.pageSize||k_,this.objectOptions=n?.objectOptions||{showType:!0,showContent:!0}}nextCursor;filter;pageSize;objectOptions;async doNextRequest(){let e=await this.provider.getOwnedObjects({owner:this.owner,options:this.objectOptions,cursor:this.nextCursor,limit:this.pageSize});this.nextCursor=e.nextCursor;let i;if(this.filter){let{filter:n}=this;i=e.data.filter(r=>n?.(r))}else i=e.data;return{data:i.map(n=>n.data).filter(n=>n),hasNext:e.hasNextPage}}};var dr=class t{constructor(e,i){this.globals=e;this.info=i;this.multiSig=new Pe.MultiSigAccount({threshold:i.threshold,ownersWithWeight:i.owners,creationNonce:i.creationNonce}),this.coinHelper=new fs(this.suiClient),this.simulator=new nc(e)}multiSig;coinHelper;simulator;static async New(e,i){let n=await e.backend.getMSafeAccountInfo(i);if(new t(e,n).address!==i)throw new Error("Invalid msafe config with address")}async ownedCoins(){let e=await this.suiClient.getAllBalances({owner:this.address});return Promise.all(e.map(async i=>{let n=await this.coinHelper.getCoinMeta(i.coinType),r=i.lockedBalance.number?BigInt(i.totalBalance)-BigInt(i.lockedBalance.number):BigInt(i.totalBalance);return{type:(0,lc.normalizeStructTag)(i.coinType),balance:BigInt(r),metadata:n}}))}async ownedObjects(e){let i={filter:n=>!n?.data?.type?.startsWith("0x2::coin::Coin"),...e};return T_(this.suiClient,this.address,i)}async pendingTransaction(){let e=await this.backend.getPendingTransactions({msafeAddress:this.address});if(!e.pending)return;let i=e.pending,n=e.reject;return{application:i.application,txType:i.txType,txSubType:i.txSubType,createdAt:i.createdAt,creator:i.creator,digest:i.digest,intention:i.intention,sequenceNumber:i.sequenceNumber,payload:i.payload,votes:i.votes,approvalWeight:this.calculateWeightFromVotes(i.votes),msafeAddress:i.msafeAddress,rejectDigest:n?.digest??"",rejectPayload:n?.payload??"",rejectVotes:n?.votes??[],rejectWeight:this.calculateWeightFromVotes(n?.votes??[])}}async historyTransaction(e){return this.backend.getHistoryTransactions({msafeAddress:this.address,...e})}async futureIntentions(e){return this.backend.getFutureIntentions({msafeAddress:this.address,...e})}async currentSequenceNumber(){return this.backend.getCurrentSequenceNumber(this.address)}async nextSequenceNumber(){return this.backend.getNextSequenceNumber(this.address)}async simulateIntention(e){let i=ic.getAppHelper(e.application);if(!i)throw new Error(`Can't find app helper for application ${e.application}`);let n=await i.build({network:this.globals.config.network,intentionData:e.intention,txType:e.txType,txSubType:e.txSubType,suiClient:this.globals.suiClient,account:{address:this.address}});return this.simulator.simulate({txb:n,sender:this.address})}async proposeIntention(e){let i=Pe.SigningMessageHelper.proposeIntentionMessage({msafeAddress:this.address,intention:e.intention,sn:e.sequenceNumber}),n=await this.wallet.signPersonalMessage({messageStr:i});return this.backend.proposeIntention({...e,msafeAddress:this.address,signature:n.signature})}async proposeIntentionAndBuildVote(e){let i=ic.getAppHelper(e.application);if(!i)throw new Error(`Can't find app helper for application ${e.application}`);let n=await i.build({network:this.globals.config.network,intentionData:e.intention,txType:e.txType,txSubType:e.txSubType,suiClient:this.globals.suiClient,account:{address:this.address}});n.setGasPrice(e.gasPrice),n.setGasBudget(e.gasBudget),n.setSender(this.address);let r=await n.build({client:this.globals.suiClient}),o=await n.getDigest({client:this.globals.suiClient}),s=await this.wallet.signTransactionBlock({transactionBlock:r});return this.backend.proposeIntentionAndBuildVote({...e,payload:(0,lc.toHEX)(r),digest:o,msafeAddress:this.address,signature:s.signature})}async simulateCoinTransferIntention(e){let i=await this.nextSequenceNumber();return this.simulateIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.coin.send,sequenceNumber:i,intention:e})}async proposeCoinTransferIntention(e){let i=await this.nextSequenceNumber();return this.proposeIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.coin.send,sequenceNumber:i,intention:e})}async simulateObjectTransferIntention(e){let i=await this.nextSequenceNumber();return this.simulateIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.object.send,sequenceNumber:i,intention:e})}async proposeObjectTransferIntention(e){let i=await this.nextSequenceNumber();return this.proposeIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.object.send,sequenceNumber:i,intention:e})}async simulatePlainPayloadIntention(e){let i=await this.nextSequenceNumber();return this.simulateIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Other,txSubType:Pe.TransactionSubTypes.others.plain,sequenceNumber:i,intention:e})}async proposePlainPayloadIntention(e){let i=await this.nextSequenceNumber(),n=td.TransactionBlock.from(e.payload);if(!n.blockData.sender||!(0,Pe.isSameAddress)(n.blockData.sender,this.address))throw new Error("Transaction sender is not same as the multisig address");return this.proposeIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Other,txSubType:Pe.TransactionSubTypes.others.plain,sequenceNumber:i,intention:e})}async voteForTransaction(e,i){let n=oc(i),r=await this.wallet.signTransactionBlock({transactionBlock:n});return this.backend.voteForTransaction({msafeAddress:this.address,digest:e,signature:r.signature})}async proposePendingTransaction(e){let i=new td.TransactionBlock,n=await i.build({client:this.suiClient}),r=await i.getDigest({client:this.suiClient}),o=await this.wallet.signTransactionBlock({transactionBlock:n});return this.backend.proposePendingTransaction({msafeAddress:this.address,userAddress:await this.userAddress(),intention:e,digest:r,signature:o.signature})}async simulateRejectTx(){let e=await this.pendingTransaction();if(!e||e.rejectDigest!=="")throw new Error("Already rejected");let i=e.payload,n=(0,Pe.buildRejectTxb)(this.address,i);return this.simulator.simulate({txb:n,sender:this.address})}async rejectCurrentTx(e){let i=await this.pendingTransaction();if(!i||i.rejectDigest!=="")throw new Error("Already rejected");let n=i.payload,r=(0,Pe.buildRejectTxb)(this.address,n),o=await r.getDigest({client:this.suiClient}),s=await r.build({client:this.suiClient}),a=await this.wallet.signTransactionBlock({transactionBlock:s});return this.backend.rejectCurrentTx({msafeAddress:this.address,digest:o,signature:a.signature,...e})}async simulateBuildTransaction(){let e=await this.backend.getNextIntention({msafeAddress:this.address}),i=ic.getAppHelper(e.application);if(!i)throw new Error(`Can't find app helper for application ${e.application}`);console.log("\u{1F680} ~ MSafeAccount ~ simulateBuildTransaction ~ intention:",e);let n=await i.build({network:this.globals.config.network,intentionData:e.intention,txType:e.txType,txSubType:e.txSubType,suiClient:this.globals.suiClient,account:{address:this.address}});return this.simulator.simulate({txb:n,sender:this.address})}async buildNextIntentionAndAddToPending(e){return this.backend.buildNextIntentionAndAddToPending({msafeAddress:this.address,forceBuild:e.forceBuild,gasPrice:e.gasPrice,gasBudget:e.gasBudget})}async skipNextFailedIntention(){return this.backend.skipNextFailedIntention({msafeAddress:this.address})}async executePendingTx(e,i=!1){let n=i?e.rejectVotes:e.votes,r=i?e.rejectPayload:e.payload;if(this.calculateWeightFromVotes(n)<this.info.threshold)throw new Error("Not enough signature");let o=[],s=new Map(n.map(l=>[l.userAddress,l.signature]));for(let l=0;l<this.info.owners.length;l++){let u=this.info.owners[l],h=s.get(u.address);h&&o.push(h)}let a=this.multiSig.combinePartialSignatures(o);return this.suiClient.executeTransactionBlock({transactionBlock:oc(r),signature:a,options:{showEffects:!0,showEvents:!0}})}async dashboard(){return this.backend.getDashboard({msafeAddress:this.address})}calculateWeightFromVotes(e){return this.calculateWeight(e.map(i=>i.userAddress))}calculateWeight(e){let i=0;for(let n=0;n<e.length;n++){let r=this.info.owners.find(o=>(0,Pe.isSameAddress)(o.address,e[n]));r&&(i+=r.weight)}return i}get address(){return this.multiSig.address}get backend(){return this.globals.backend}get wallet(){return this.globals.wallet}async userAddress(){return this.globals.wallet.address()}get suiClient(){return this.globals.suiClient}};var S_=require("@msafe/sui3-utils"),x_=require("@mysten/sui.js/utils");var uc=class{constructor(e){this.globals=e;this.knownPublicKeys=new Map}knownPublicKeys;async getPublicKey(e){let i=this.knownPublicKeys.get(e);if(i)return i;let n=await this._getPublicKey(e);return n&&this.knownPublicKeys.set(e,n),n}async getPublicKeyBatch(e){let i=new Array(e.length).fill(void 0);for(let o=0;o<e.length;o++){let s=e[o];i[o]=this.knownPublicKeys.get(s)}let n=i.map((o,s)=>o===void 0?s:-1).filter(o=>o!==-1);if(n.length===0)return i;let r=await this.globals.backend.getPublicKeyBatch(n.map(o=>e[o]));for(let o=0;o<n.length;o++){let s=n[o];i[s]=r[o]}for(let o=0;o<i.length;o++)i[o]===void 0&&(i[o]=await this.getPublicKeyFromChain(e[o]));for(let o=0;o<e.length;o++)i[o]&&this.knownPublicKeys.set(e[o],i[o]);return i}addPublicKey(e,i){if(!(0,S_.isSameAddress)(e,i.toSuiAddress()))throw new Error("Invalid public key");this.knownPublicKeys.set((0,x_.normalizeSuiAddress)(e),i)}async _getPublicKey(e){let i=await this.getPublicKeyFromBackend(e);if(i)return i;let n=await this.getPublicKeyFromChain(e);if(n)return n}async getPublicKeyFromBackend(e){try{return await this.globals.backend.getPublicKey(e)}catch{return}}async getPublicKeyFromChain(e){return Ju(this.globals.suiClient,e)}};var dc=class{constructor(e){this.globals=e}async create(e){return this.globals.backend.submitReport(e)}};var E_=require("@mysten/sui.js/client");var ms=require("@msafe/sui3-utils"),ps=we(require("axios"),1);var fc=class t{constructor(e){this.apiURL=e}_token;async authSign(e){let i=await this.post("/auth/login",e);return this._token=i.data.accessToken,this._token}async verifyToken(e){try{return(await this.get("/auth",{headers:this.headers(e)})).status===200}catch{return!1}}setJWTToken(e){this._token=e}async getPublicKey(e){return(await this.getPublicKeyBatch([e]))[0]}async getPublicKeyBatch(e){let i={userAddressList:e};return(await this.get("/user/public-keys",{params:i,headers:this.headers()})).data?.map(r=>r?ms.PublicKeySerde.de(r):void 0)}async getMSafeAccountInfo(e){let i={msafeAddress:e},n=await this.get("/msafe",{params:i,headers:this.headers()});return t.toMSafeConfig(n.data)}async getUserInfo(){return(await this.get("/user",{headers:this.headers()})).data}async getOwnedMSafeByStatus(e){let i={status:e.status??ms.UserMSafeStatus.active,...e.pagination?{page:e.pagination.page.toString(),limit:e.pagination.limit.toString()}:{}},n=await this.get("/msafe/owned",{params:i,headers:this.headers()});return{data:n.data.data.map(t.toMSafeConfig),meta:n.data.meta}}async updateMSafeStatus(e){let i=e;await this.post("/msafe/status",i,{headers:this.headers()})}async getPendingTransactions(e){return(await this.get("/transaction/pending",{params:e,headers:this.headers()})).data}async getHistoryTransactions(e){return(await this.get("/transaction/history",{params:e,headers:this.headers()})).data}async getFutureIntentions(e){return(await this.get("/transaction/intention",{params:e,headers:this.headers()})).data}async getNextIntention(e){return(await this.get("/transaction/intention/next",{params:e,headers:this.headers()})).data}async getCurrentSequenceNumber(e){return(await this.get("/transaction/sn/current",{params:{msafeAddress:e},headers:this.headers()})).data}async getNextSequenceNumber(e){return(await this.get("/transaction/sn/next",{params:{msafeAddress:e},headers:this.headers()})).data}async createMSafeAccount(e){await this.post("/msafe/create",e,{headers:this.headers()})}async proposeIntention(e){await this.post("/transaction/intention",e,{headers:this.headers()})}async proposePendingTransaction(e){}async rejectCurrentTx(e){await this.post("/transaction/pending/reject",{...e,gasPrice:e.gasPrice.toString(),gasBudget:e.gasBudget.toString()},{headers:this.headers()})}async voteForTransaction(e){await this.post("/transaction/pending/vote",e,{headers:this.headers()})}async buildNextIntentionAndAddToPending(e){await this.post("/transaction/pending/build",{...e,gasPrice:e.gasPrice.toString(),gasBudget:e.gasBudget.toString()},{headers:this.headers()})}async proposeIntentionAndBuildVote(e){await this.post("/transaction/intention/build",{...e,gasPrice:e.gasPrice.toString(),gasBudget:e.gasBudget.toString()},{headers:this.headers()})}async skipNextFailedIntention(e){await this.post("/transaction/pending/skip",e,{headers:this.headers()})}async getAddressBookEntries(e){return(await this.get("/address-book",{headers:this.headers(),params:e})).data}async updateAddressBook(e){await this.post("/address-book",e,{headers:this.headers()})}async getAddressBookMode(){return(await this.get("/address-book/mode",{headers:this.headers()})).data}async setAddressBookMode(e){await this.post("/address-book/mode",{mode:e.mode},{headers:this.headers()})}async submitReport(e){await this.post("/report",e)}async getDashboard(e){return(await this.get("/dashboard",{params:e,headers:this.headers()})).data}headers(e){return{Authorization:`Bearer ${e||this._token}`}}static toMSafeConfig(e){return{...e,owners:e.owners.map(i=>({address:i.address,weight:i.weight,publicKey:ms.PublicKeySerde.de({publicKeyEncoded:i.publicKeyEncoded,schema:i.schema})}))}}async get(e,i){let n=this.getFullUrl(e);try{return await ps.default.get(n,i)}catch(r){throw hc.fromError(r)??r}}async post(e,i,n){let r=this.getFullUrl(e);try{return await ps.default.post(r,i,{...n,transformRequest:this.getTransformRequest()})}catch(o){throw hc.fromError(o)??o}}getFullUrl(e){return e.startsWith(this.apiURL)?e:`${this.apiURL}${Zu(e,"/")}`}getTransformRequest(){let e=[],{transformRequest:i}=ps.default.defaults;return i?i instanceof Array?e=i:e=[i]:e=[],[n=>JSON.parse(JSON.stringify(n,(r,o)=>typeof o=="bigint"?`${o.toString()}n`:o)),...e]}},hc=class t extends Error{constructor(i){super();this.e=i;Error.captureStackTrace(this,this.constructor)}name;static fromError(i){if(ps.default.isAxiosError(i)&&i?.response?.data&&"message"in i.response.data)return new t(i)}get status(){return this.e.response?.status??void 0}get message(){return`${this.respMessage()??"Unknown resp"}`}respMessage(){if(this.e.response?.data)return(this.e.response?.data).message??void 0}get endpoint(){return this.e.config?.url??""}toString(){return this.message}};var A_=(o=>(o.local="local",o.unit="unit",o.dev="dev",o.prev="prev",o.prod="prod",o))(A_||{}),pc="https://fullnode.testnet.sui.io",id="https://fullnode.mainnet.sui.io",nd="http://127.0.0.1:3000",rd="http://127.0.0.1:3001",I_="https://sui-dev.m-safe.link",O_="http://13.56.226.148:81",P_="https://sui-preview.m-safe.link",D_="https://sui.m-safe.link",M_=new Map([["unit",{suiClient:{url:pc},backend:{url:nd},syncingURL:rd,network:"sui:testnet"}],["local",{suiClient:{url:pc},backend:{url:nd},syncingURL:rd,network:"sui:testnet"}],["dev",{suiClient:{url:pc},backend:{url:I_},syncingURL:O_,network:"sui:testnet"}],["prev",{suiClient:{url:id},backend:{url:P_},syncingURL:"",network:"sui:mainnet"}],["prod",{suiClient:{url:id},backend:{url:D_},syncingURL:"",network:"sui:mainnet"}]]);function od(t,e){let i=M_.get(t);if(!i)throw new Error("Unknown environment");return e?.suiClient?.url&&(i.suiClient.url=e.suiClient.url),e?.backend?.url&&(i.backend.url=e.backend.url),i}var gs=class t{backend;suiClient;config;_wallet;constructor(e){this.backend=e.backend,this.suiClient=e.suiClient,this.config=e.config}static async New(e,i){let n=od(e,i),r=new E_.SuiClient(n.suiClient),o=new fc(n.backend.url);return new t({backend:o,suiClient:r,config:n})}connectWallet(e){this._wallet=e}get wallet(){if(!this._wallet)throw new Error("wallet not connected");return this._wallet}set wallet(e){this._wallet=e}};var mc=class t{constructor(e){this.globals=e}_creationHelper;_publicKeyHelper;static async New(e,i){let n=await gs.New(e,i);return new t(n)}async connectWallet(e){if(e.jwtToken&&await this.backend.verifyToken(e.jwtToken))return this.globals.wallet=e.wallet,this.backend.setJWTToken(e.jwtToken),e.jwtToken;let i=await this.authSign(e.wallet);return this.globals.wallet=e.wallet,this.backend.setJWTToken(i),i}async authSign(e){let i=gc.SigningMessageHelper.loginMessageWithTimestamp(new Date().toUTCString()),n=await e.signPersonalMessage({messageStr:i});return this.backend.authSign({address:await e.address(),message:i,signature:n.signature,walletType:e.walletType})}async userInfo(){return this.globals.backend.getUserInfo()}async ownedMSafe(e){return this.globals.backend.getOwnedMSafeByStatus({status:gc.UserMSafeStatus.active,pagination:e})}async createAccount(e){return this.creationHelper.submitMSafeCreation(e)}getMSafeAccount(e){return new dr(this.globals,e)}async getMSafeAccountFromAddress(e){let i=await this.backend.getMSafeAccountInfo(e);return new dr(this.globals,i)}get creationHelper(){return this._creationHelper||(this._creationHelper=new hr(this.globals,this.publicKeyHelper)),this._creationHelper}get publicKeyHelper(){return this._publicKeyHelper||(this._publicKeyHelper=new uc(this.globals)),this._publicKeyHelper}get config(){return this.globals.config}get backend(){return this.globals.backend}get wallet(){return this.globals.wallet}get AddressBook(){return new pr(this.globals)}get Invitation(){return new ys(this.globals)}get Report(){return new dc(this.globals)}async walletAddress(){return this.wallet.address()}};
2054
2054
  /*! Bundled license information:
2055
2055
 
2056
2056
  @syntsugar/cc-graph/dist/index.umd.js: