@msafe/sui3-sdk 0.0.49-pre-cf75f5e.0 → 0.0.49-pre-e86f254.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 Sg=Object.create;var Lo=Object.defineProperty;var Ag=Object.getOwnPropertyDescriptor;var xg=Object.getOwnPropertyNames;var Ig=Object.getPrototypeOf,Og=Object.prototype.hasOwnProperty;var Pg=(t,e)=>()=>(t&&(e=t(t=0)),e);var yi=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),bl=(t,e)=>{for(var n in e)Lo(t,n,{get:e[n],enumerable:!0})},vl=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of xg(e))!Og.call(t,r)&&r!==n&&Lo(t,r,{get:()=>e[r],enumerable:!(i=Ag(e,r))||i.enumerable});return t};var ge=(t,e,n)=>(n=t!=null?Sg(Ig(t)):{},vl(e||!t||!t.__esModule?Lo(n,"default",{value:t,enumerable:!0}):n,t)),kl=t=>vl(Lo({},"__esModule",{value:!0}),t);var Sl=yi((ck,Cl)=>{"use strict";Cl.exports=t=>{if(Object.prototype.toString.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.prototype}});var xl=yi((uk,Al)=>{"use strict";var Wa=Sl();Al.exports=(t,e={})=>{if(!Wa(t)&&!Array.isArray(t))throw new TypeError("Expected a plain object or array");let{deep:n}=e,i=[],r=[],o=a=>{let u=i.indexOf(a);if(u!==-1)return r[u];let l=[];return i.push(a),r.push(l),l.push(...a.map(h=>Array.isArray(h)?o(h):Wa(h)?s(h):h)),l},s=a=>{let u=i.indexOf(a);if(u!==-1)return r[u];let l={},h=Object.keys(a).sort(e.compare);i.push(a),r.push(l);for(let w of h){let v=a[w],T;n&&Array.isArray(v)?T=o(v):T=n&&Wa(v)?s(v):v,Object.defineProperty(l,w,{...Object.getOwnPropertyDescriptor(a,w),value:T})}return l};return Array.isArray(t)?n?o(t):t.slice():s(t)}});var Pl=yi((lk,Ol)=>{"use strict";var Dg=Object.prototype.toString;Ol.exports=function(e){if(e===void 0)return"undefined";if(e===null)return"null";var n=typeof e;if(n==="boolean")return"boolean";if(n==="string")return"string";if(n==="number")return"number";if(n==="symbol")return"symbol";if(n==="function")return Ng(e)?"generatorfunction":"function";if(Eg(e))return"array";if(qg(e))return"buffer";if(Rg(e))return"arguments";if(Bg(e))return"date";if(Mg(e))return"error";if(jg(e))return"regexp";switch(Il(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(Fg(e))return"generator";switch(n=Dg.call(e),n){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 n.slice(8,-1).toLowerCase().replace(/\s/g,"")};function Il(t){return typeof t.constructor=="function"?t.constructor.name:null}function Eg(t){return Array.isArray?Array.isArray(t):t instanceof Array}function Mg(t){return t instanceof Error||typeof t.message=="string"&&t.constructor&&typeof t.constructor.stackTraceLimit=="number"}function Bg(t){return t instanceof Date?!0:typeof t.toDateString=="function"&&typeof t.getDate=="function"&&typeof t.setDate=="function"}function jg(t){return t instanceof RegExp?!0:typeof t.flags=="string"&&typeof t.ignoreCase=="boolean"&&typeof t.multiline=="boolean"&&typeof t.global=="boolean"}function Ng(t,e){return Il(t)==="GeneratorFunction"}function Fg(t){return typeof t.throw=="function"&&typeof t.return=="function"&&typeof t.next=="function"}function Rg(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 qg(t){return t.constructor&&typeof t.constructor.isBuffer=="function"?t.constructor.isBuffer(t):!1}});var Uo=yi((dk,Bl)=>{"use strict";var Lg=xl(),Ha=Pl(),Dl=(t,e)=>!e||Ha(e)!=="array"?!1:e.indexOf(t)>-1,$g=(t,e)=>Lg(t,{compare:e}),El=(t,e)=>{let n=e&&e.compareFunction;return t.slice().sort(n)};function Ml(t,e){let n=e&&e.compareFunction,i=$g(t,n);return Object.keys(t).forEach(function(r){let o=i[r],s=Ha(o);if(s==="object"){(!e||!Dl(r,e.ignoreObjectAtKeys))&&(i[r]=Ml(o,e));return}s==="array"&&(!e||!Dl(r,e.ignoreArrayAtKeys))&&(i[r]=El(o,e))}),i}var Br=(t,e)=>{let n=Ha(t);return Br[n]?Br[n](t,e):t};Br.array=El;Br.object=Ml;Bl.exports=Br});var ke=yi((jl,Za)=>{"use strict";(function(t,e){"use strict";function n(A,c){if(!A)throw new Error(c||"Assertion failed")}function i(A,c){A.super_=c;var d=function(){};d.prototype=c.prototype,A.prototype=new d,A.prototype.constructor=A}function r(A,c,d){if(r.isBN(A))return A;this.negative=0,this.words=null,this.length=0,this.red=null,A!==null&&((c==="le"||c==="be")&&(d=c,c=10),this._init(A||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,g){if(typeof c=="number")return this._initNumber(c,d,g);if(typeof c=="object")return this._initArray(c,d,g);d==="hex"&&(d=16),n(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,g):(this._parseBase(c,d,b),g==="le"&&this._initArray(this.toArray(),d,g)))},r.prototype._initNumber=function(c,d,g){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):(n(c<9007199254740992),this.words=[c&67108863,c/67108864&67108863,1],this.length=3),g==="le"&&this._initArray(this.toArray(),d,g)},r.prototype._initArray=function(c,d,g){if(n(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,m,y=0;if(g==="be")for(b=c.length-1,p=0;b>=0;b-=3)m=c[b]|c[b-1]<<8|c[b-2]<<16,this.words[p]|=m<<y&67108863,this.words[p+1]=m>>>26-y&67108863,y+=24,y>=26&&(y-=26,p++);else if(g==="le")for(b=0,p=0;b<c.length;b+=3)m=c[b]|c[b+1]<<8|c[b+2]<<16,this.words[p]|=m<<y&67108863,this.words[p+1]=m>>>26-y&67108863,y+=24,y>=26&&(y-=26,p++);return this._strip()};function s(A,c){var d=A.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;n(!1,"Invalid character in "+A)}function a(A,c,d){var g=s(A,d);return d-1>=c&&(g|=s(A,d-1)<<4),g}r.prototype._parseHex=function(c,d,g){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,m=0,y;if(g==="be")for(b=c.length-1;b>=d;b-=2)y=a(c,d,b)<<p,this.words[m]|=y&67108863,p>=18?(p-=18,m+=1,this.words[m]|=y>>>26):p+=8;else{var _=c.length-d;for(b=_%2===0?d+1:d;b<c.length;b+=2)y=a(c,d,b)<<p,this.words[m]|=y&67108863,p>=18?(p-=18,m+=1,this.words[m]|=y>>>26):p+=8}this._strip()};function u(A,c,d,g){for(var b=0,p=0,m=Math.min(A.length,d),y=c;y<m;y++){var _=A.charCodeAt(y)-48;b*=g,_>=49?p=_-49+10:_>=17?p=_-17+10:p=_,n(_>=0&&p<g,"Invalid character"),b+=p}return b}r.prototype._parseBase=function(c,d,g){this.words=[0],this.length=1;for(var b=0,p=1;p<=67108863;p*=d)b++;b--,p=p/d|0;for(var m=c.length-g,y=m%b,_=Math.min(m,m-y)+g,f=0,k=g;k<_;k+=b)f=u(c,k,k+b,d),this.imuln(p),this.words[0]+f<67108864?this.words[0]+=f:this._iaddn(f);if(y!==0){var M=1;for(f=u(c,k,c.length,d),k=0;k<y;k++)M*=d;this.imuln(M),this.words[0]+f<67108864?this.words[0]+=f:this._iaddn(f)}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 l(A,c){A.words=c.words,A.length=c.length,A.negative=c.negative,A.red=c.red}if(r.prototype._move=function(c){l(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 w=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],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 g;if(c===16||c==="hex"){g="";for(var b=0,p=0,m=0;m<this.length;m++){var y=this.words[m],_=((y<<b|p)&16777215).toString(16);p=y>>>24-b&16777215,b+=2,b>=26&&(b-=26,m--),p!==0||m!==this.length-1?g=w[6-_.length]+_+g:g=_+g}for(p!==0&&(g=p.toString(16)+g);g.length%d!==0;)g="0"+g;return this.negative!==0&&(g="-"+g),g}if(c===(c|0)&&c>=2&&c<=36){var f=v[c],k=T[c];g="";var M=this.clone();for(M.negative=0;!M.isZero();){var j=M.modrn(k).toString(c);M=M.idivn(k),M.isZero()?g=j+g:g=w[f-j.length]+j+g}for(this.isZero()&&(g="0"+g);g.length%d!==0;)g="0"+g;return this.negative!==0&&(g="-"+g),g}n(!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&&n(!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 I=function(c,d){return c.allocUnsafe?c.allocUnsafe(d):new c(d)};r.prototype.toArrayLike=function(c,d,g){this._strip();var b=this.byteLength(),p=g||Math.max(1,b);n(b<=p,"byte array longer than desired length"),n(p>0,"Requested array length <= 0");var m=I(c,p),y=d==="le"?"LE":"BE";return this["_toArrayLike"+y](m,b),m},r.prototype._toArrayLikeLE=function(c,d){for(var g=0,b=0,p=0,m=0;p<this.length;p++){var y=this.words[p]<<m|b;c[g++]=y&255,g<c.length&&(c[g++]=y>>8&255),g<c.length&&(c[g++]=y>>16&255),m===6?(g<c.length&&(c[g++]=y>>24&255),b=0,m=0):(b=y>>>24,m+=2)}if(g<c.length)for(c[g++]=b;g<c.length;)c[g++]=0},r.prototype._toArrayLikeBE=function(c,d){for(var g=c.length-1,b=0,p=0,m=0;p<this.length;p++){var y=this.words[p]<<m|b;c[g--]=y&255,g>=0&&(c[g--]=y>>8&255),g>=0&&(c[g--]=y>>16&255),m===6?(g>=0&&(c[g--]=y>>24&255),b=0,m=0):(b=y>>>24,m+=2)}if(g>=0)for(c[g--]=b;g>=0;)c[g--]=0},Math.clz32?r.prototype._countBits=function(c){return 32-Math.clz32(c)}:r.prototype._countBits=function(c){var d=c,g=0;return d>=4096&&(g+=13,d>>>=13),d>=64&&(g+=7,d>>>=7),d>=8&&(g+=4,d>>>=4),d>=2&&(g+=2,d>>>=2),g+d},r.prototype._zeroBits=function(c){if(c===0)return 26;var d=c,g=0;return d&8191||(g+=13,d>>>=13),d&127||(g+=7,d>>>=7),d&15||(g+=4,d>>>=4),d&3||(g+=2,d>>>=2),d&1||g++,g},r.prototype.bitLength=function(){var c=this.words[this.length-1],d=this._countBits(c);return(this.length-1)*26+d};function x(A){for(var c=new Array(A.bitLength()),d=0;d<c.length;d++){var g=d/26|0,b=d%26;c[d]=A.words[g]>>>b&1}return c}r.prototype.zeroBits=function(){if(this.isZero())return 0;for(var c=0,d=0;d<this.length;d++){var g=this._zeroBits(this.words[d]);if(c+=g,g!==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 n((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 g=0;g<d.length;g++)this.words[g]=this.words[g]&c.words[g];return this.length=d.length,this._strip()},r.prototype.iand=function(c){return n((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,g;this.length>c.length?(d=this,g=c):(d=c,g=this);for(var b=0;b<g.length;b++)this.words[b]=d.words[b]^g.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 n((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){n(typeof c=="number"&&c>=0);var d=Math.ceil(c/26)|0,g=c%26;this._expand(d),g>0&&d--;for(var b=0;b<d;b++)this.words[b]=~this.words[b]&67108863;return g>0&&(this.words[b]=~this.words[b]&67108863>>26-g),this._strip()},r.prototype.notn=function(c){return this.clone().inotn(c)},r.prototype.setn=function(c,d){n(typeof c=="number"&&c>=0);var g=c/26|0,b=c%26;return this._expand(g+1),d?this.words[g]=this.words[g]|1<<b:this.words[g]=this.words[g]&~(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 g,b;this.length>c.length?(g=this,b=c):(g=c,b=this);for(var p=0,m=0;m<b.length;m++)d=(g.words[m]|0)+(b.words[m]|0)+p,this.words[m]=d&67108863,p=d>>>26;for(;p!==0&&m<g.length;m++)d=(g.words[m]|0)+p,this.words[m]=d&67108863,p=d>>>26;if(this.length=g.length,p!==0)this.words[this.length]=p,this.length++;else if(g!==this)for(;m<g.length;m++)this.words[m]=g.words[m];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 g=this.cmp(c);if(g===0)return this.negative=0,this.length=1,this.words[0]=0,this;var b,p;g>0?(b=this,p=c):(b=c,p=this);for(var m=0,y=0;y<p.length;y++)d=(b.words[y]|0)-(p.words[y]|0)+m,m=d>>26,this.words[y]=d&67108863;for(;m!==0&&y<b.length;y++)d=(b.words[y]|0)+m,m=d>>26,this.words[y]=d&67108863;if(m===0&&y<b.length&&b!==this)for(;y<b.length;y++)this.words[y]=b.words[y];return this.length=Math.max(this.length,y),b!==this&&(this.negative=1),this._strip()},r.prototype.sub=function(c){return this.clone().isub(c)};function P(A,c,d){d.negative=c.negative^A.negative;var g=A.length+c.length|0;d.length=g,g=g-1|0;var b=A.words[0]|0,p=c.words[0]|0,m=b*p,y=m&67108863,_=m/67108864|0;d.words[0]=y;for(var f=1;f<g;f++){for(var k=_>>>26,M=_&67108863,j=Math.min(f,c.length-1),L=Math.max(0,f-A.length+1);L<=j;L++){var R=f-L|0;b=A.words[R]|0,p=c.words[L]|0,m=b*p+M,k+=m/67108864|0,M=m&67108863}d.words[f]=M|0,_=k|0}return _!==0?d.words[f]=_|0:d.length--,d._strip()}var O=function(c,d,g){var b=c.words,p=d.words,m=g.words,y=0,_,f,k,M=b[0]|0,j=M&8191,L=M>>>13,R=b[1]|0,W=R&8191,ne=R>>>13,me=b[2]|0,ue=me&8191,pe=me>>>13,vt=b[3]|0,De=vt&8191,je=vt>>>13,zi=b[4]|0,Ne=zi&8191,Fe=zi>>>13,qo=b[5]|0,Ke=qo&8191,ze=qo>>>13,sl=b[6]|0,Ve=sl&8191,Ge=sl>>>13,al=b[7]|0,We=al&8191,He=al>>>13,cl=b[8]|0,Ze=cl&8191,Xe=cl>>>13,ul=b[9]|0,Je=ul&8191,Ye=ul>>>13,ll=p[0]|0,Qe=ll&8191,et=ll>>>13,dl=p[1]|0,tt=dl&8191,nt=dl>>>13,fl=p[2]|0,it=fl&8191,rt=fl>>>13,hl=p[3]|0,ot=hl&8191,st=hl>>>13,ml=p[4]|0,at=ml&8191,ct=ml>>>13,pl=p[5]|0,ut=pl&8191,lt=pl>>>13,gl=p[6]|0,dt=gl&8191,ft=gl>>>13,_l=p[7]|0,ht=_l&8191,mt=_l>>>13,yl=p[8]|0,pt=yl&8191,gt=yl>>>13,wl=p[9]|0,_t=wl&8191,yt=wl>>>13;g.negative=c.negative^d.negative,g.length=19,_=Math.imul(j,Qe),f=Math.imul(j,et),f=f+Math.imul(L,Qe)|0,k=Math.imul(L,et);var Ia=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(Ia>>>26)|0,Ia&=67108863,_=Math.imul(W,Qe),f=Math.imul(W,et),f=f+Math.imul(ne,Qe)|0,k=Math.imul(ne,et),_=_+Math.imul(j,tt)|0,f=f+Math.imul(j,nt)|0,f=f+Math.imul(L,tt)|0,k=k+Math.imul(L,nt)|0;var Oa=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(Oa>>>26)|0,Oa&=67108863,_=Math.imul(ue,Qe),f=Math.imul(ue,et),f=f+Math.imul(pe,Qe)|0,k=Math.imul(pe,et),_=_+Math.imul(W,tt)|0,f=f+Math.imul(W,nt)|0,f=f+Math.imul(ne,tt)|0,k=k+Math.imul(ne,nt)|0,_=_+Math.imul(j,it)|0,f=f+Math.imul(j,rt)|0,f=f+Math.imul(L,it)|0,k=k+Math.imul(L,rt)|0;var Pa=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(Pa>>>26)|0,Pa&=67108863,_=Math.imul(De,Qe),f=Math.imul(De,et),f=f+Math.imul(je,Qe)|0,k=Math.imul(je,et),_=_+Math.imul(ue,tt)|0,f=f+Math.imul(ue,nt)|0,f=f+Math.imul(pe,tt)|0,k=k+Math.imul(pe,nt)|0,_=_+Math.imul(W,it)|0,f=f+Math.imul(W,rt)|0,f=f+Math.imul(ne,it)|0,k=k+Math.imul(ne,rt)|0,_=_+Math.imul(j,ot)|0,f=f+Math.imul(j,st)|0,f=f+Math.imul(L,ot)|0,k=k+Math.imul(L,st)|0;var Da=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(Da>>>26)|0,Da&=67108863,_=Math.imul(Ne,Qe),f=Math.imul(Ne,et),f=f+Math.imul(Fe,Qe)|0,k=Math.imul(Fe,et),_=_+Math.imul(De,tt)|0,f=f+Math.imul(De,nt)|0,f=f+Math.imul(je,tt)|0,k=k+Math.imul(je,nt)|0,_=_+Math.imul(ue,it)|0,f=f+Math.imul(ue,rt)|0,f=f+Math.imul(pe,it)|0,k=k+Math.imul(pe,rt)|0,_=_+Math.imul(W,ot)|0,f=f+Math.imul(W,st)|0,f=f+Math.imul(ne,ot)|0,k=k+Math.imul(ne,st)|0,_=_+Math.imul(j,at)|0,f=f+Math.imul(j,ct)|0,f=f+Math.imul(L,at)|0,k=k+Math.imul(L,ct)|0;var Ea=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(Ea>>>26)|0,Ea&=67108863,_=Math.imul(Ke,Qe),f=Math.imul(Ke,et),f=f+Math.imul(ze,Qe)|0,k=Math.imul(ze,et),_=_+Math.imul(Ne,tt)|0,f=f+Math.imul(Ne,nt)|0,f=f+Math.imul(Fe,tt)|0,k=k+Math.imul(Fe,nt)|0,_=_+Math.imul(De,it)|0,f=f+Math.imul(De,rt)|0,f=f+Math.imul(je,it)|0,k=k+Math.imul(je,rt)|0,_=_+Math.imul(ue,ot)|0,f=f+Math.imul(ue,st)|0,f=f+Math.imul(pe,ot)|0,k=k+Math.imul(pe,st)|0,_=_+Math.imul(W,at)|0,f=f+Math.imul(W,ct)|0,f=f+Math.imul(ne,at)|0,k=k+Math.imul(ne,ct)|0,_=_+Math.imul(j,ut)|0,f=f+Math.imul(j,lt)|0,f=f+Math.imul(L,ut)|0,k=k+Math.imul(L,lt)|0;var Ma=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(Ma>>>26)|0,Ma&=67108863,_=Math.imul(Ve,Qe),f=Math.imul(Ve,et),f=f+Math.imul(Ge,Qe)|0,k=Math.imul(Ge,et),_=_+Math.imul(Ke,tt)|0,f=f+Math.imul(Ke,nt)|0,f=f+Math.imul(ze,tt)|0,k=k+Math.imul(ze,nt)|0,_=_+Math.imul(Ne,it)|0,f=f+Math.imul(Ne,rt)|0,f=f+Math.imul(Fe,it)|0,k=k+Math.imul(Fe,rt)|0,_=_+Math.imul(De,ot)|0,f=f+Math.imul(De,st)|0,f=f+Math.imul(je,ot)|0,k=k+Math.imul(je,st)|0,_=_+Math.imul(ue,at)|0,f=f+Math.imul(ue,ct)|0,f=f+Math.imul(pe,at)|0,k=k+Math.imul(pe,ct)|0,_=_+Math.imul(W,ut)|0,f=f+Math.imul(W,lt)|0,f=f+Math.imul(ne,ut)|0,k=k+Math.imul(ne,lt)|0,_=_+Math.imul(j,dt)|0,f=f+Math.imul(j,ft)|0,f=f+Math.imul(L,dt)|0,k=k+Math.imul(L,ft)|0;var Ba=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(Ba>>>26)|0,Ba&=67108863,_=Math.imul(We,Qe),f=Math.imul(We,et),f=f+Math.imul(He,Qe)|0,k=Math.imul(He,et),_=_+Math.imul(Ve,tt)|0,f=f+Math.imul(Ve,nt)|0,f=f+Math.imul(Ge,tt)|0,k=k+Math.imul(Ge,nt)|0,_=_+Math.imul(Ke,it)|0,f=f+Math.imul(Ke,rt)|0,f=f+Math.imul(ze,it)|0,k=k+Math.imul(ze,rt)|0,_=_+Math.imul(Ne,ot)|0,f=f+Math.imul(Ne,st)|0,f=f+Math.imul(Fe,ot)|0,k=k+Math.imul(Fe,st)|0,_=_+Math.imul(De,at)|0,f=f+Math.imul(De,ct)|0,f=f+Math.imul(je,at)|0,k=k+Math.imul(je,ct)|0,_=_+Math.imul(ue,ut)|0,f=f+Math.imul(ue,lt)|0,f=f+Math.imul(pe,ut)|0,k=k+Math.imul(pe,lt)|0,_=_+Math.imul(W,dt)|0,f=f+Math.imul(W,ft)|0,f=f+Math.imul(ne,dt)|0,k=k+Math.imul(ne,ft)|0,_=_+Math.imul(j,ht)|0,f=f+Math.imul(j,mt)|0,f=f+Math.imul(L,ht)|0,k=k+Math.imul(L,mt)|0;var ja=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(ja>>>26)|0,ja&=67108863,_=Math.imul(Ze,Qe),f=Math.imul(Ze,et),f=f+Math.imul(Xe,Qe)|0,k=Math.imul(Xe,et),_=_+Math.imul(We,tt)|0,f=f+Math.imul(We,nt)|0,f=f+Math.imul(He,tt)|0,k=k+Math.imul(He,nt)|0,_=_+Math.imul(Ve,it)|0,f=f+Math.imul(Ve,rt)|0,f=f+Math.imul(Ge,it)|0,k=k+Math.imul(Ge,rt)|0,_=_+Math.imul(Ke,ot)|0,f=f+Math.imul(Ke,st)|0,f=f+Math.imul(ze,ot)|0,k=k+Math.imul(ze,st)|0,_=_+Math.imul(Ne,at)|0,f=f+Math.imul(Ne,ct)|0,f=f+Math.imul(Fe,at)|0,k=k+Math.imul(Fe,ct)|0,_=_+Math.imul(De,ut)|0,f=f+Math.imul(De,lt)|0,f=f+Math.imul(je,ut)|0,k=k+Math.imul(je,lt)|0,_=_+Math.imul(ue,dt)|0,f=f+Math.imul(ue,ft)|0,f=f+Math.imul(pe,dt)|0,k=k+Math.imul(pe,ft)|0,_=_+Math.imul(W,ht)|0,f=f+Math.imul(W,mt)|0,f=f+Math.imul(ne,ht)|0,k=k+Math.imul(ne,mt)|0,_=_+Math.imul(j,pt)|0,f=f+Math.imul(j,gt)|0,f=f+Math.imul(L,pt)|0,k=k+Math.imul(L,gt)|0;var Na=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(Na>>>26)|0,Na&=67108863,_=Math.imul(Je,Qe),f=Math.imul(Je,et),f=f+Math.imul(Ye,Qe)|0,k=Math.imul(Ye,et),_=_+Math.imul(Ze,tt)|0,f=f+Math.imul(Ze,nt)|0,f=f+Math.imul(Xe,tt)|0,k=k+Math.imul(Xe,nt)|0,_=_+Math.imul(We,it)|0,f=f+Math.imul(We,rt)|0,f=f+Math.imul(He,it)|0,k=k+Math.imul(He,rt)|0,_=_+Math.imul(Ve,ot)|0,f=f+Math.imul(Ve,st)|0,f=f+Math.imul(Ge,ot)|0,k=k+Math.imul(Ge,st)|0,_=_+Math.imul(Ke,at)|0,f=f+Math.imul(Ke,ct)|0,f=f+Math.imul(ze,at)|0,k=k+Math.imul(ze,ct)|0,_=_+Math.imul(Ne,ut)|0,f=f+Math.imul(Ne,lt)|0,f=f+Math.imul(Fe,ut)|0,k=k+Math.imul(Fe,lt)|0,_=_+Math.imul(De,dt)|0,f=f+Math.imul(De,ft)|0,f=f+Math.imul(je,dt)|0,k=k+Math.imul(je,ft)|0,_=_+Math.imul(ue,ht)|0,f=f+Math.imul(ue,mt)|0,f=f+Math.imul(pe,ht)|0,k=k+Math.imul(pe,mt)|0,_=_+Math.imul(W,pt)|0,f=f+Math.imul(W,gt)|0,f=f+Math.imul(ne,pt)|0,k=k+Math.imul(ne,gt)|0,_=_+Math.imul(j,_t)|0,f=f+Math.imul(j,yt)|0,f=f+Math.imul(L,_t)|0,k=k+Math.imul(L,yt)|0;var Fa=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(Fa>>>26)|0,Fa&=67108863,_=Math.imul(Je,tt),f=Math.imul(Je,nt),f=f+Math.imul(Ye,tt)|0,k=Math.imul(Ye,nt),_=_+Math.imul(Ze,it)|0,f=f+Math.imul(Ze,rt)|0,f=f+Math.imul(Xe,it)|0,k=k+Math.imul(Xe,rt)|0,_=_+Math.imul(We,ot)|0,f=f+Math.imul(We,st)|0,f=f+Math.imul(He,ot)|0,k=k+Math.imul(He,st)|0,_=_+Math.imul(Ve,at)|0,f=f+Math.imul(Ve,ct)|0,f=f+Math.imul(Ge,at)|0,k=k+Math.imul(Ge,ct)|0,_=_+Math.imul(Ke,ut)|0,f=f+Math.imul(Ke,lt)|0,f=f+Math.imul(ze,ut)|0,k=k+Math.imul(ze,lt)|0,_=_+Math.imul(Ne,dt)|0,f=f+Math.imul(Ne,ft)|0,f=f+Math.imul(Fe,dt)|0,k=k+Math.imul(Fe,ft)|0,_=_+Math.imul(De,ht)|0,f=f+Math.imul(De,mt)|0,f=f+Math.imul(je,ht)|0,k=k+Math.imul(je,mt)|0,_=_+Math.imul(ue,pt)|0,f=f+Math.imul(ue,gt)|0,f=f+Math.imul(pe,pt)|0,k=k+Math.imul(pe,gt)|0,_=_+Math.imul(W,_t)|0,f=f+Math.imul(W,yt)|0,f=f+Math.imul(ne,_t)|0,k=k+Math.imul(ne,yt)|0;var Ra=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(Ra>>>26)|0,Ra&=67108863,_=Math.imul(Je,it),f=Math.imul(Je,rt),f=f+Math.imul(Ye,it)|0,k=Math.imul(Ye,rt),_=_+Math.imul(Ze,ot)|0,f=f+Math.imul(Ze,st)|0,f=f+Math.imul(Xe,ot)|0,k=k+Math.imul(Xe,st)|0,_=_+Math.imul(We,at)|0,f=f+Math.imul(We,ct)|0,f=f+Math.imul(He,at)|0,k=k+Math.imul(He,ct)|0,_=_+Math.imul(Ve,ut)|0,f=f+Math.imul(Ve,lt)|0,f=f+Math.imul(Ge,ut)|0,k=k+Math.imul(Ge,lt)|0,_=_+Math.imul(Ke,dt)|0,f=f+Math.imul(Ke,ft)|0,f=f+Math.imul(ze,dt)|0,k=k+Math.imul(ze,ft)|0,_=_+Math.imul(Ne,ht)|0,f=f+Math.imul(Ne,mt)|0,f=f+Math.imul(Fe,ht)|0,k=k+Math.imul(Fe,mt)|0,_=_+Math.imul(De,pt)|0,f=f+Math.imul(De,gt)|0,f=f+Math.imul(je,pt)|0,k=k+Math.imul(je,gt)|0,_=_+Math.imul(ue,_t)|0,f=f+Math.imul(ue,yt)|0,f=f+Math.imul(pe,_t)|0,k=k+Math.imul(pe,yt)|0;var qa=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(qa>>>26)|0,qa&=67108863,_=Math.imul(Je,ot),f=Math.imul(Je,st),f=f+Math.imul(Ye,ot)|0,k=Math.imul(Ye,st),_=_+Math.imul(Ze,at)|0,f=f+Math.imul(Ze,ct)|0,f=f+Math.imul(Xe,at)|0,k=k+Math.imul(Xe,ct)|0,_=_+Math.imul(We,ut)|0,f=f+Math.imul(We,lt)|0,f=f+Math.imul(He,ut)|0,k=k+Math.imul(He,lt)|0,_=_+Math.imul(Ve,dt)|0,f=f+Math.imul(Ve,ft)|0,f=f+Math.imul(Ge,dt)|0,k=k+Math.imul(Ge,ft)|0,_=_+Math.imul(Ke,ht)|0,f=f+Math.imul(Ke,mt)|0,f=f+Math.imul(ze,ht)|0,k=k+Math.imul(ze,mt)|0,_=_+Math.imul(Ne,pt)|0,f=f+Math.imul(Ne,gt)|0,f=f+Math.imul(Fe,pt)|0,k=k+Math.imul(Fe,gt)|0,_=_+Math.imul(De,_t)|0,f=f+Math.imul(De,yt)|0,f=f+Math.imul(je,_t)|0,k=k+Math.imul(je,yt)|0;var La=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(La>>>26)|0,La&=67108863,_=Math.imul(Je,at),f=Math.imul(Je,ct),f=f+Math.imul(Ye,at)|0,k=Math.imul(Ye,ct),_=_+Math.imul(Ze,ut)|0,f=f+Math.imul(Ze,lt)|0,f=f+Math.imul(Xe,ut)|0,k=k+Math.imul(Xe,lt)|0,_=_+Math.imul(We,dt)|0,f=f+Math.imul(We,ft)|0,f=f+Math.imul(He,dt)|0,k=k+Math.imul(He,ft)|0,_=_+Math.imul(Ve,ht)|0,f=f+Math.imul(Ve,mt)|0,f=f+Math.imul(Ge,ht)|0,k=k+Math.imul(Ge,mt)|0,_=_+Math.imul(Ke,pt)|0,f=f+Math.imul(Ke,gt)|0,f=f+Math.imul(ze,pt)|0,k=k+Math.imul(ze,gt)|0,_=_+Math.imul(Ne,_t)|0,f=f+Math.imul(Ne,yt)|0,f=f+Math.imul(Fe,_t)|0,k=k+Math.imul(Fe,yt)|0;var $a=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+($a>>>26)|0,$a&=67108863,_=Math.imul(Je,ut),f=Math.imul(Je,lt),f=f+Math.imul(Ye,ut)|0,k=Math.imul(Ye,lt),_=_+Math.imul(Ze,dt)|0,f=f+Math.imul(Ze,ft)|0,f=f+Math.imul(Xe,dt)|0,k=k+Math.imul(Xe,ft)|0,_=_+Math.imul(We,ht)|0,f=f+Math.imul(We,mt)|0,f=f+Math.imul(He,ht)|0,k=k+Math.imul(He,mt)|0,_=_+Math.imul(Ve,pt)|0,f=f+Math.imul(Ve,gt)|0,f=f+Math.imul(Ge,pt)|0,k=k+Math.imul(Ge,gt)|0,_=_+Math.imul(Ke,_t)|0,f=f+Math.imul(Ke,yt)|0,f=f+Math.imul(ze,_t)|0,k=k+Math.imul(ze,yt)|0;var Ua=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(Ua>>>26)|0,Ua&=67108863,_=Math.imul(Je,dt),f=Math.imul(Je,ft),f=f+Math.imul(Ye,dt)|0,k=Math.imul(Ye,ft),_=_+Math.imul(Ze,ht)|0,f=f+Math.imul(Ze,mt)|0,f=f+Math.imul(Xe,ht)|0,k=k+Math.imul(Xe,mt)|0,_=_+Math.imul(We,pt)|0,f=f+Math.imul(We,gt)|0,f=f+Math.imul(He,pt)|0,k=k+Math.imul(He,gt)|0,_=_+Math.imul(Ve,_t)|0,f=f+Math.imul(Ve,yt)|0,f=f+Math.imul(Ge,_t)|0,k=k+Math.imul(Ge,yt)|0;var Ka=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(Ka>>>26)|0,Ka&=67108863,_=Math.imul(Je,ht),f=Math.imul(Je,mt),f=f+Math.imul(Ye,ht)|0,k=Math.imul(Ye,mt),_=_+Math.imul(Ze,pt)|0,f=f+Math.imul(Ze,gt)|0,f=f+Math.imul(Xe,pt)|0,k=k+Math.imul(Xe,gt)|0,_=_+Math.imul(We,_t)|0,f=f+Math.imul(We,yt)|0,f=f+Math.imul(He,_t)|0,k=k+Math.imul(He,yt)|0;var za=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(za>>>26)|0,za&=67108863,_=Math.imul(Je,pt),f=Math.imul(Je,gt),f=f+Math.imul(Ye,pt)|0,k=Math.imul(Ye,gt),_=_+Math.imul(Ze,_t)|0,f=f+Math.imul(Ze,yt)|0,f=f+Math.imul(Xe,_t)|0,k=k+Math.imul(Xe,yt)|0;var Va=(y+_|0)+((f&8191)<<13)|0;y=(k+(f>>>13)|0)+(Va>>>26)|0,Va&=67108863,_=Math.imul(Je,_t),f=Math.imul(Je,yt),f=f+Math.imul(Ye,_t)|0,k=Math.imul(Ye,yt);var Ga=(y+_|0)+((f&8191)<<13)|0;return y=(k+(f>>>13)|0)+(Ga>>>26)|0,Ga&=67108863,m[0]=Ia,m[1]=Oa,m[2]=Pa,m[3]=Da,m[4]=Ea,m[5]=Ma,m[6]=Ba,m[7]=ja,m[8]=Na,m[9]=Fa,m[10]=Ra,m[11]=qa,m[12]=La,m[13]=$a,m[14]=Ua,m[15]=Ka,m[16]=za,m[17]=Va,m[18]=Ga,y!==0&&(m[19]=y,g.length++),g};Math.imul||(O=P);function E(A,c,d){d.negative=c.negative^A.negative,d.length=A.length+c.length;for(var g=0,b=0,p=0;p<d.length-1;p++){var m=b;b=0;for(var y=g&67108863,_=Math.min(p,c.length-1),f=Math.max(0,p-A.length+1);f<=_;f++){var k=p-f,M=A.words[k]|0,j=c.words[f]|0,L=M*j,R=L&67108863;m=m+(L/67108864|0)|0,R=R+y|0,y=R&67108863,m=m+(R>>>26)|0,b+=m>>>26,m&=67108863}d.words[p]=y,g=m,m=b}return g!==0?d.words[p]=g:d.length--,d._strip()}function B(A,c,d){return E(A,c,d)}r.prototype.mulTo=function(c,d){var g,b=this.length+c.length;return this.length===10&&c.length===10?g=O(this,c,d):b<63?g=P(this,c,d):b<1024?g=E(this,c,d):g=B(this,c,d),g};function $(A,c){this.x=A,this.y=c}$.prototype.makeRBT=function(c){for(var d=new Array(c),g=r.prototype._countBits(c)-1,b=0;b<c;b++)d[b]=this.revBin(b,g,c);return d},$.prototype.revBin=function(c,d,g){if(c===0||c===g-1)return c;for(var b=0,p=0;p<d;p++)b|=(c&1)<<d-p-1,c>>=1;return b},$.prototype.permute=function(c,d,g,b,p,m){for(var y=0;y<m;y++)b[y]=d[c[y]],p[y]=g[c[y]]},$.prototype.transform=function(c,d,g,b,p,m){this.permute(m,c,d,g,b,p);for(var y=1;y<p;y<<=1)for(var _=y<<1,f=Math.cos(2*Math.PI/_),k=Math.sin(2*Math.PI/_),M=0;M<p;M+=_)for(var j=f,L=k,R=0;R<y;R++){var W=g[M+R],ne=b[M+R],me=g[M+R+y],ue=b[M+R+y],pe=j*me-L*ue;ue=j*ue+L*me,me=pe,g[M+R]=W+me,b[M+R]=ne+ue,g[M+R+y]=W-me,b[M+R+y]=ne-ue,R!==_&&(pe=f*j-k*L,L=f*L+k*j,j=pe)}},$.prototype.guessLen13b=function(c,d){var g=Math.max(d,c)|1,b=g&1,p=0;for(g=g/2|0;g;g=g>>>1)p++;return 1<<p+1+b},$.prototype.conjugate=function(c,d,g){if(!(g<=1))for(var b=0;b<g/2;b++){var p=c[b];c[b]=c[g-b-1],c[g-b-1]=p,p=d[b],d[b]=-d[g-b-1],d[g-b-1]=-p}},$.prototype.normalize13b=function(c,d){for(var g=0,b=0;b<d/2;b++){var p=Math.round(c[2*b+1]/d)*8192+Math.round(c[2*b]/d)+g;c[b]=p&67108863,p<67108864?g=0:g=p/67108864|0}return c},$.prototype.convert13b=function(c,d,g,b){for(var p=0,m=0;m<d;m++)p=p+(c[m]|0),g[2*m]=p&8191,p=p>>>13,g[2*m+1]=p&8191,p=p>>>13;for(m=2*d;m<b;++m)g[m]=0;n(p===0),n((p&-8192)===0)},$.prototype.stub=function(c){for(var d=new Array(c),g=0;g<c;g++)d[g]=0;return d},$.prototype.mulp=function(c,d,g){var b=2*this.guessLen13b(c.length,d.length),p=this.makeRBT(b),m=this.stub(b),y=new Array(b),_=new Array(b),f=new Array(b),k=new Array(b),M=new Array(b),j=new Array(b),L=g.words;L.length=b,this.convert13b(c.words,c.length,y,b),this.convert13b(d.words,d.length,k,b),this.transform(y,m,_,f,b,p),this.transform(k,m,M,j,b,p);for(var R=0;R<b;R++){var W=_[R]*M[R]-f[R]*j[R];f[R]=_[R]*j[R]+f[R]*M[R],_[R]=W}return this.conjugate(_,f,b),this.transform(_,f,L,m,b,p),this.conjugate(L,m,b),this.normalize13b(L,b),g.negative=c.negative^d.negative,g.length=c.length+d.length,g._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),B(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),n(typeof c=="number"),n(c<67108864);for(var g=0,b=0;b<this.length;b++){var p=(this.words[b]|0)*c,m=(p&67108863)+(g&67108863);g>>=26,g+=p/67108864|0,g+=m>>>26,this.words[b]=m&67108863}return g!==0&&(this.words[b]=g,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=x(c);if(d.length===0)return new r(1);for(var g=this,b=0;b<d.length&&d[b]===0;b++,g=g.sqr());if(++b<d.length)for(var p=g.sqr();b<d.length;b++,p=p.sqr())d[b]!==0&&(g=g.mul(p));return g},r.prototype.iushln=function(c){n(typeof c=="number"&&c>=0);var d=c%26,g=(c-d)/26,b=67108863>>>26-d<<26-d,p;if(d!==0){var m=0;for(p=0;p<this.length;p++){var y=this.words[p]&b,_=(this.words[p]|0)-y<<d;this.words[p]=_|m,m=y>>>26-d}m&&(this.words[p]=m,this.length++)}if(g!==0){for(p=this.length-1;p>=0;p--)this.words[p+g]=this.words[p];for(p=0;p<g;p++)this.words[p]=0;this.length+=g}return this._strip()},r.prototype.ishln=function(c){return n(this.negative===0),this.iushln(c)},r.prototype.iushrn=function(c,d,g){n(typeof c=="number"&&c>=0);var b;d?b=(d-d%26)/26:b=0;var p=c%26,m=Math.min((c-p)/26,this.length),y=67108863^67108863>>>p<<p,_=g;if(b-=m,b=Math.max(0,b),_){for(var f=0;f<m;f++)_.words[f]=this.words[f];_.length=m}if(m!==0)if(this.length>m)for(this.length-=m,f=0;f<this.length;f++)this.words[f]=this.words[f+m];else this.words[0]=0,this.length=1;var k=0;for(f=this.length-1;f>=0&&(k!==0||f>=b);f--){var M=this.words[f]|0;this.words[f]=k<<26-p|M>>>p,k=M&y}return _&&k!==0&&(_.words[_.length++]=k),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},r.prototype.ishrn=function(c,d,g){return n(this.negative===0),this.iushrn(c,d,g)},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){n(typeof c=="number"&&c>=0);var d=c%26,g=(c-d)/26,b=1<<d;if(this.length<=g)return!1;var p=this.words[g];return!!(p&b)},r.prototype.imaskn=function(c){n(typeof c=="number"&&c>=0);var d=c%26,g=(c-d)/26;if(n(this.negative===0,"imaskn works only with positive numbers"),this.length<=g)return this;if(d!==0&&g++,this.length=Math.min(g,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 n(typeof c=="number"),n(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(n(typeof c=="number"),n(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,g){var b=c.length+g,p;this._expand(b);var m,y=0;for(p=0;p<c.length;p++){m=(this.words[p+g]|0)+y;var _=(c.words[p]|0)*d;m-=_&67108863,y=(m>>26)-(_/67108864|0),this.words[p+g]=m&67108863}for(;p<this.length-g;p++)m=(this.words[p+g]|0)+y,y=m>>26,this.words[p+g]=m&67108863;if(y===0)return this._strip();for(n(y===-1),y=0,p=0;p<this.length;p++)m=-(this.words[p]|0)+y,y=m>>26,this.words[p]=m&67108863;return this.negative=1,this._strip()},r.prototype._wordDiv=function(c,d){var g=this.length-c.length,b=this.clone(),p=c,m=p.words[p.length-1]|0,y=this._countBits(m);g=26-y,g!==0&&(p=p.ushln(g),b.iushln(g),m=p.words[p.length-1]|0);var _=b.length-p.length,f;if(d!=="mod"){f=new r(null),f.length=_+1,f.words=new Array(f.length);for(var k=0;k<f.length;k++)f.words[k]=0}var M=b.clone()._ishlnsubmul(p,1,_);M.negative===0&&(b=M,f&&(f.words[_]=1));for(var j=_-1;j>=0;j--){var L=(b.words[p.length+j]|0)*67108864+(b.words[p.length+j-1]|0);for(L=Math.min(L/m|0,67108863),b._ishlnsubmul(p,L,j);b.negative!==0;)L--,b.negative=0,b._ishlnsubmul(p,1,j),b.isZero()||(b.negative^=1);f&&(f.words[j]=L)}return f&&f._strip(),b._strip(),d!=="div"&&g!==0&&b.iushrn(g),{div:f||null,mod:b}},r.prototype.divmod=function(c,d,g){if(n(!c.isZero()),this.isZero())return{div:new r(0),mod:new r(0)};var b,p,m;return this.negative!==0&&c.negative===0?(m=this.neg().divmod(c,d),d!=="mod"&&(b=m.div.neg()),d!=="div"&&(p=m.mod.neg(),g&&p.negative!==0&&p.iadd(c)),{div:b,mod:p}):this.negative===0&&c.negative!==0?(m=this.divmod(c.neg(),d),d!=="mod"&&(b=m.div.neg()),{div:b,mod:m.mod}):this.negative&c.negative?(m=this.neg().divmod(c.neg(),d),d!=="div"&&(p=m.mod.neg(),g&&p.negative!==0&&p.isub(c)),{div:m.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 g=d.div.negative!==0?d.mod.isub(c):d.mod,b=c.ushrn(1),p=c.andln(1),m=g.cmp(b);return m<0||p===1&&m===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),n(c<=67108863);for(var g=(1<<26)%c,b=0,p=this.length-1;p>=0;p--)b=(g*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),n(c<=67108863);for(var g=0,b=this.length-1;b>=0;b--){var p=(this.words[b]|0)+g*67108864;this.words[b]=p/c|0,g=p%c}return this._strip(),d?this.ineg():this},r.prototype.divn=function(c){return this.clone().idivn(c)},r.prototype.egcd=function(c){n(c.negative===0),n(!c.isZero());var d=this,g=c.clone();d.negative!==0?d=d.umod(c):d=d.clone();for(var b=new r(1),p=new r(0),m=new r(0),y=new r(1),_=0;d.isEven()&&g.isEven();)d.iushrn(1),g.iushrn(1),++_;for(var f=g.clone(),k=d.clone();!d.isZero();){for(var M=0,j=1;!(d.words[0]&j)&&M<26;++M,j<<=1);if(M>0)for(d.iushrn(M);M-- >0;)(b.isOdd()||p.isOdd())&&(b.iadd(f),p.isub(k)),b.iushrn(1),p.iushrn(1);for(var L=0,R=1;!(g.words[0]&R)&&L<26;++L,R<<=1);if(L>0)for(g.iushrn(L);L-- >0;)(m.isOdd()||y.isOdd())&&(m.iadd(f),y.isub(k)),m.iushrn(1),y.iushrn(1);d.cmp(g)>=0?(d.isub(g),b.isub(m),p.isub(y)):(g.isub(d),m.isub(b),y.isub(p))}return{a:m,b:y,gcd:g.iushln(_)}},r.prototype._invmp=function(c){n(c.negative===0),n(!c.isZero());var d=this,g=c.clone();d.negative!==0?d=d.umod(c):d=d.clone();for(var b=new r(1),p=new r(0),m=g.clone();d.cmpn(1)>0&&g.cmpn(1)>0;){for(var y=0,_=1;!(d.words[0]&_)&&y<26;++y,_<<=1);if(y>0)for(d.iushrn(y);y-- >0;)b.isOdd()&&b.iadd(m),b.iushrn(1);for(var f=0,k=1;!(g.words[0]&k)&&f<26;++f,k<<=1);if(f>0)for(g.iushrn(f);f-- >0;)p.isOdd()&&p.iadd(m),p.iushrn(1);d.cmp(g)>=0?(d.isub(g),b.isub(p)):(g.isub(d),p.isub(b))}var M;return d.cmpn(1)===0?M=b:M=p,M.cmpn(0)<0&&M.iadd(c),M},r.prototype.gcd=function(c){if(this.isZero())return c.abs();if(c.isZero())return this.abs();var d=this.clone(),g=c.clone();d.negative=0,g.negative=0;for(var b=0;d.isEven()&&g.isEven();b++)d.iushrn(1),g.iushrn(1);do{for(;d.isEven();)d.iushrn(1);for(;g.isEven();)g.iushrn(1);var p=d.cmp(g);if(p<0){var m=d;d=g,g=m}else if(p===0||g.cmpn(1)===0)break;d.isub(g)}while(!0);return g.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){n(typeof c=="number");var d=c%26,g=(c-d)/26,b=1<<d;if(this.length<=g)return this._expand(g+1),this.words[g]|=b,this;for(var p=b,m=g;p!==0&&m<this.length;m++){var y=this.words[m]|0;y+=p,p=y>>>26,y&=67108863,this.words[m]=y}return p!==0&&(this.words[m]=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 g;if(this.length>1)g=1;else{d&&(c=-c),n(c<=67108863,"Number is too big");var b=this.words[0]|0;g=b===c?0:b<c?-1:1}return this.negative!==0?-g|0:g},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,g=this.length-1;g>=0;g--){var b=this.words[g]|0,p=c.words[g]|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 K(c)},r.prototype.toRed=function(c){return n(!this.red,"Already a number in reduction context"),n(this.negative===0,"red works only with positives"),c.convertTo(this)._forceRed(c)},r.prototype.fromRed=function(){return n(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 n(!this.red,"Already a number in reduction context"),this._forceRed(c)},r.prototype.redAdd=function(c){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,c)},r.prototype.redIAdd=function(c){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,c)},r.prototype.redSub=function(c){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,c)},r.prototype.redISub=function(c){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,c)},r.prototype.redShl=function(c){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,c)},r.prototype.redMul=function(c){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,c),this.red.mul(this,c)},r.prototype.redIMul=function(c){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,c),this.red.imul(this,c)},r.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},r.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},r.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},r.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},r.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},r.prototype.redPow=function(c){return n(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 H(A,c){this.name=A,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()}H.prototype._tmp=function(){var c=new r(null);return c.words=new Array(Math.ceil(this.n/13)),c},H.prototype.ireduce=function(c){var d=c,g;do this.split(d,this.tmp),d=this.imulK(d),d=d.iadd(this.tmp),g=d.bitLength();while(g>this.n);var b=g<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},H.prototype.split=function(c,d){c.iushrn(this.n,0,d)},H.prototype.imulK=function(c){return c.imul(this.k)};function te(){H.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(te,H),te.prototype.split=function(c,d){for(var g=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 m=c.words[9];for(d.words[d.length++]=m&g,p=10;p<c.length;p++){var y=c.words[p]|0;c.words[p-10]=(y&g)<<4|m>>>22,m=y}m>>>=22,c.words[p-10]=m,m===0&&c.length>10?c.length-=10:c.length-=9},te.prototype.imulK=function(c){c.words[c.length]=0,c.words[c.length+1]=0,c.length+=2;for(var d=0,g=0;g<c.length;g++){var b=c.words[g]|0;d+=b*977,c.words[g]=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 U(){H.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}i(U,H);function V(){H.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}i(V,H);function F(){H.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}i(F,H),F.prototype.imulK=function(c){for(var d=0,g=0;g<c.length;g++){var b=(c.words[g]|0)*19+d,p=b&67108863;b>>>=26,c.words[g]=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 te;else if(c==="p224")d=new U;else if(c==="p192")d=new V;else if(c==="p25519")d=new F;else throw new Error("Unknown prime "+c);return Z[c]=d,d};function K(A){if(typeof A=="string"){var c=r._prime(A);this.m=c.p,this.prime=c}else n(A.gtn(1),"modulus must be greater than 1"),this.m=A,this.prime=null}K.prototype._verify1=function(c){n(c.negative===0,"red works only with positives"),n(c.red,"red works only with red numbers")},K.prototype._verify2=function(c,d){n((c.negative|d.negative)===0,"red works only with positives"),n(c.red&&c.red===d.red,"red works only with red numbers")},K.prototype.imod=function(c){return this.prime?this.prime.ireduce(c)._forceRed(this):(l(c,c.umod(this.m)._forceRed(this)),c)},K.prototype.neg=function(c){return c.isZero()?c.clone():this.m.sub(c)._forceRed(this)},K.prototype.add=function(c,d){this._verify2(c,d);var g=c.add(d);return g.cmp(this.m)>=0&&g.isub(this.m),g._forceRed(this)},K.prototype.iadd=function(c,d){this._verify2(c,d);var g=c.iadd(d);return g.cmp(this.m)>=0&&g.isub(this.m),g},K.prototype.sub=function(c,d){this._verify2(c,d);var g=c.sub(d);return g.cmpn(0)<0&&g.iadd(this.m),g._forceRed(this)},K.prototype.isub=function(c,d){this._verify2(c,d);var g=c.isub(d);return g.cmpn(0)<0&&g.iadd(this.m),g},K.prototype.shl=function(c,d){return this._verify1(c),this.imod(c.ushln(d))},K.prototype.imul=function(c,d){return this._verify2(c,d),this.imod(c.imul(d))},K.prototype.mul=function(c,d){return this._verify2(c,d),this.imod(c.mul(d))},K.prototype.isqr=function(c){return this.imul(c,c.clone())},K.prototype.sqr=function(c){return this.mul(c,c)},K.prototype.sqrt=function(c){if(c.isZero())return c.clone();var d=this.m.andln(3);if(n(d%2===1),d===3){var g=this.m.add(new r(1)).iushrn(2);return this.pow(c,g)}for(var b=this.m.subn(1),p=0;!b.isZero()&&b.andln(1)===0;)p++,b.iushrn(1);n(!b.isZero());var m=new r(1).toRed(this),y=m.redNeg(),_=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new r(2*f*f).toRed(this);this.pow(f,_).cmp(y)!==0;)f.redIAdd(y);for(var k=this.pow(f,b),M=this.pow(c,b.addn(1).iushrn(1)),j=this.pow(c,b),L=p;j.cmp(m)!==0;){for(var R=j,W=0;R.cmp(m)!==0;W++)R=R.redSqr();n(W<L);var ne=this.pow(k,new r(1).iushln(L-W-1));M=M.redMul(ne),k=ne.redSqr(),j=j.redMul(k),L=W}return M},K.prototype.invm=function(c){var d=c._invmp(this.m);return d.negative!==0?(d.negative=0,this.imod(d).redNeg()):this.imod(d)},K.prototype.pow=function(c,d){if(d.isZero())return new r(1).toRed(this);if(d.cmpn(1)===0)return c.clone();var g=4,b=new Array(1<<g);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 m=b[0],y=0,_=0,f=d.bitLength()%26;for(f===0&&(f=26),p=d.length-1;p>=0;p--){for(var k=d.words[p],M=f-1;M>=0;M--){var j=k>>M&1;if(m!==b[0]&&(m=this.sqr(m)),j===0&&y===0){_=0;continue}y<<=1,y|=j,_++,!(_!==g&&(p!==0||M!==0))&&(m=this.mul(m,b[y]),_=0,y=0)}f=26}return m},K.prototype.convertTo=function(c){var d=c.umod(this.m);return d===c?d.clone():d},K.prototype.convertFrom=function(c){var d=c.clone();return d.red=null,d},r.mont=function(c){return new C(c)};function C(A){K.call(this,A),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)}i(C,K),C.prototype.convertTo=function(c){return this.imod(c.ushln(this.shift))},C.prototype.convertFrom=function(c){var d=this.imod(c.mul(this.rinv));return d.red=null,d},C.prototype.imul=function(c,d){if(c.isZero()||d.isZero())return c.words[0]=0,c.length=1,c;var g=c.imul(d),b=g.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=g.isub(b).iushrn(this.shift),m=p;return p.cmp(this.m)>=0?m=p.isub(this.m):p.cmpn(0)<0&&(m=p.iadd(this.m)),m._forceRed(this)},C.prototype.mul=function(c,d){if(c.isZero()||d.isZero())return new r(0)._forceRed(this);var g=c.mul(d),b=g.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=g.isub(b).iushrn(this.shift),m=p;return p.cmp(this.m)>=0?m=p.isub(this.m):p.cmpn(0)<0&&(m=p.iadd(this.m)),m._forceRed(this)},C.prototype.invm=function(c){var d=this.imod(c._invmp(this.m).mul(this.r2));return d._forceRed(this)}})(typeof Za>"u"||Za,jl)});var yd={};bl(yd,{__addDisposableResource:()=>gd,__assign:()=>Xo,__asyncDelegator:()=>cd,__asyncGenerator:()=>ad,__asyncValues:()=>ud,__await:()=>Zi,__awaiter:()=>td,__classPrivateFieldGet:()=>hd,__classPrivateFieldIn:()=>pd,__classPrivateFieldSet:()=>md,__createBinding:()=>Yo,__decorate:()=>Yl,__disposeResources:()=>_d,__esDecorate:()=>j_,__exportStar:()=>id,__extends:()=>Xl,__generator:()=>nd,__importDefault:()=>fd,__importStar:()=>dd,__makeTemplateObject:()=>ld,__metadata:()=>ed,__param:()=>Ql,__propKey:()=>F_,__read:()=>oc,__rest:()=>Jl,__runInitializers:()=>N_,__setFunctionName:()=>R_,__spread:()=>rd,__spreadArray:()=>sd,__spreadArrays:()=>od,__values:()=>Jo,default:()=>$_});function Xl(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");rc(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}function Jl(t,e){var n={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.indexOf(i)<0&&(n[i]=t[i]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,i=Object.getOwnPropertySymbols(t);r<i.length;r++)e.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(t,i[r])&&(n[i[r]]=t[i[r]]);return n}function Yl(t,e,n,i){var r=arguments.length,o=r<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(t,e,n,i);else for(var a=t.length-1;a>=0;a--)(s=t[a])&&(o=(r<3?s(o):r>3?s(e,n,o):s(e,n))||o);return r>3&&o&&Object.defineProperty(e,n,o),o}function Ql(t,e){return function(n,i){e(n,i,t)}}function j_(t,e,n,i,r,o){function s(O){if(O!==void 0&&typeof O!="function")throw new TypeError("Function expected");return O}for(var a=i.kind,u=a==="getter"?"get":a==="setter"?"set":"value",l=!e&&t?i.static?t:t.prototype:null,h=e||(l?Object.getOwnPropertyDescriptor(l,i.name):{}),w,v=!1,T=n.length-1;T>=0;T--){var I={};for(var x in i)I[x]=x==="access"?{}:i[x];for(var x in i.access)I.access[x]=i.access[x];I.addInitializer=function(O){if(v)throw new TypeError("Cannot add initializers after decoration has completed");o.push(s(O||null))};var P=(0,n[T])(a==="accessor"?{get:h.get,set:h.set}:h[u],I);if(a==="accessor"){if(P===void 0)continue;if(P===null||typeof P!="object")throw new TypeError("Object expected");(w=s(P.get))&&(h.get=w),(w=s(P.set))&&(h.set=w),(w=s(P.init))&&r.unshift(w)}else(w=s(P))&&(a==="field"?r.unshift(w):h[u]=w)}l&&Object.defineProperty(l,i.name,h),v=!0}function N_(t,e,n){for(var i=arguments.length>2,r=0;r<e.length;r++)n=i?e[r].call(t,n):e[r].call(t);return i?n:void 0}function F_(t){return typeof t=="symbol"?t:"".concat(t)}function R_(t,e,n){return typeof e=="symbol"&&(e=e.description?"[".concat(e.description,"]"):""),Object.defineProperty(t,"name",{configurable:!0,value:n?"".concat(n," ",e):e})}function ed(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function td(t,e,n,i){function r(o){return o instanceof n?o:new n(function(s){s(o)})}return new(n||(n=Promise))(function(o,s){function a(h){try{l(i.next(h))}catch(w){s(w)}}function u(h){try{l(i.throw(h))}catch(w){s(w)}}function l(h){h.done?o(h.value):r(h.value).then(a,u)}l((i=i.apply(t,e||[])).next())})}function nd(t,e){var n={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},i,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(l){return function(h){return u([l,h])}}function u(l){if(i)throw new TypeError("Generator is already executing.");for(;s&&(s=0,l[0]&&(n=0)),n;)try{if(i=1,r&&(o=l[0]&2?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[l[0]&2,o.value]),l[0]){case 0:case 1:o=l;break;case 4:return n.label++,{value:l[1],done:!1};case 5:n.label++,r=l[1],l=[0];continue;case 7:l=n.ops.pop(),n.trys.pop();continue;default:if(o=n.trys,!(o=o.length>0&&o[o.length-1])&&(l[0]===6||l[0]===2)){n=0;continue}if(l[0]===3&&(!o||l[1]>o[0]&&l[1]<o[3])){n.label=l[1];break}if(l[0]===6&&n.label<o[1]){n.label=o[1],o=l;break}if(o&&n.label<o[2]){n.label=o[2],n.ops.push(l);break}o[2]&&n.ops.pop(),n.trys.pop();continue}l=e.call(t,n)}catch(h){l=[6,h],r=0}finally{i=o=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}function id(t,e){for(var n in t)n!=="default"&&!Object.prototype.hasOwnProperty.call(e,n)&&Yo(e,t,n)}function Jo(t){var e=typeof Symbol=="function"&&Symbol.iterator,n=e&&t[e],i=0;if(n)return n.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function oc(t,e){var n=typeof Symbol=="function"&&t[Symbol.iterator];if(!n)return t;var i=n.call(t),r,o=[],s;try{for(;(e===void 0||e-- >0)&&!(r=i.next()).done;)o.push(r.value)}catch(a){s={error:a}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(s)throw s.error}}return o}function rd(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(oc(arguments[e]));return t}function od(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;for(var i=Array(t),r=0,e=0;e<n;e++)for(var o=arguments[e],s=0,a=o.length;s<a;s++,r++)i[r]=o[s];return i}function sd(t,e,n){if(n||arguments.length===2)for(var i=0,r=e.length,o;i<r;i++)(o||!(i in e))&&(o||(o=Array.prototype.slice.call(e,0,i)),o[i]=e[i]);return t.concat(o||Array.prototype.slice.call(e))}function Zi(t){return this instanceof Zi?(this.v=t,this):new Zi(t)}function ad(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=n.apply(t,e||[]),r,o=[];return r={},s("next"),s("throw"),s("return"),r[Symbol.asyncIterator]=function(){return this},r;function s(v){i[v]&&(r[v]=function(T){return new Promise(function(I,x){o.push([v,T,I,x])>1||a(v,T)})})}function a(v,T){try{u(i[v](T))}catch(I){w(o[0][3],I)}}function u(v){v.value instanceof Zi?Promise.resolve(v.value.v).then(l,h):w(o[0][2],v)}function l(v){a("next",v)}function h(v){a("throw",v)}function w(v,T){v(T),o.shift(),o.length&&a(o[0][0],o[0][1])}}function cd(t){var e,n;return e={},i("next"),i("throw",function(r){throw r}),i("return"),e[Symbol.iterator]=function(){return this},e;function i(r,o){e[r]=t[r]?function(s){return(n=!n)?{value:Zi(t[r](s)),done:!1}:o?o(s):s}:o}}function ud(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],n;return e?e.call(t):(t=typeof Jo=="function"?Jo(t):t[Symbol.iterator](),n={},i("next"),i("throw"),i("return"),n[Symbol.asyncIterator]=function(){return this},n);function i(o){n[o]=t[o]&&function(s){return new Promise(function(a,u){s=t[o](s),r(a,u,s.done,s.value)})}}function r(o,s,a,u){Promise.resolve(u).then(function(l){o({value:l,done:a})},s)}}function ld(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function dd(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&Yo(e,t,n);return q_(e,t),e}function fd(t){return t&&t.__esModule?t:{default:t}}function hd(t,e,n,i){if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?t!==e||!i:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?i:n==="a"?i.call(t):i?i.value:e.get(t)}function md(t,e,n,i,r){if(i==="m")throw new TypeError("Private method is not writable");if(i==="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 i==="a"?r.call(t,n):r?r.value=n:e.set(t,n),n}function pd(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 gd(t,e,n){if(e!=null){if(typeof e!="object"&&typeof e!="function")throw new TypeError("Object expected.");var i;if(n){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");i=e[Symbol.asyncDispose]}if(i===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");i=e[Symbol.dispose]}if(typeof i!="function")throw new TypeError("Object not disposable.");t.stack.push({value:e,dispose:i,async:n})}else n&&t.stack.push({async:!0});return e}function _d(t){function e(i){t.error=t.hasError?new L_(i,t.error,"An error was suppressed during disposal."):i,t.hasError=!0}function n(){for(;t.stack.length;){var i=t.stack.pop();try{var r=i.dispose&&i.dispose.call(i.value);if(i.async)return Promise.resolve(r).then(n,function(o){return e(o),n()})}catch(o){e(o)}}if(t.hasError)throw t.error}return n()}var rc,Xo,Yo,q_,L_,$_,wd=Pg(()=>{"use strict";rc=function(t,e){return rc=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&(n[r]=i[r])},rc(t,e)};Xo=function(){return Xo=Object.assign||function(e){for(var n,i=1,r=arguments.length;i<r;i++){n=arguments[i];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},Xo.apply(this,arguments)};Yo=Object.create?function(t,e,n,i){i===void 0&&(i=n);var r=Object.getOwnPropertyDescriptor(e,n);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,i,r)}:function(t,e,n,i){i===void 0&&(i=n),t[i]=e[n]};q_=Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e};L_=typeof SuppressedError=="function"?SuppressedError:function(t,e,n){var i=new Error(n);return i.name="SuppressedError",i.error=t,i.suppressed=e,i};$_={__extends:Xl,__assign:Xo,__rest:Jl,__decorate:Yl,__param:Ql,__metadata:ed,__awaiter:td,__generator:nd,__createBinding:Yo,__exportStar:id,__values:Jo,__read:oc,__spread:rd,__spreadArrays:od,__spreadArray:sd,__await:Zi,__asyncGenerator:ad,__asyncDelegator:cd,__asyncValues:ud,__makeTemplateObject:ld,__importStar:dd,__importDefault:fd,__classPrivateFieldGet:hd,__classPrivateFieldSet:md,__classPrivateFieldIn:pd,__addDisposableResource:gd,__disposeResources:_d}});var vd=yi((Qo,bd)=>{"use strict";(function(t,e){typeof Qo=="object"&&typeof bd<"u"?e(Qo,(wd(),kl(yd))):typeof define=="function"&&define.amd?define(["exports","tslib"],e):e(t.ssGraph={},t.tslib)})(Qo,function(t,e){"use strict";var n=function(){function p(m,y,_){_===void 0&&(_=0),this.startVertex=m,this.endVertex=y,this.weight=_}return p.prototype.getKey=function(){var m=this.startVertex.getKey(),y=this.endVertex.getKey();return m+"_"+y},p.prototype.reverse=function(){var m=this.startVertex;return this.startVertex=this.endVertex,this.endVertex=m,this},p.prototype.clone=function(){return new p(this.startVertex,this.endVertex,this.weight)},p.prototype.toString=function(){return this.getKey()},p}();function i(p,m,y){if(y===void 0&&(y="cc-graph"),!p)throw new Error((y?"["+y+"]":"")+" Invariant failed: "+m)}function r(p,m){m===void 0&&(m=!0);var y=typeof p<"u"&&p!==null;return m?y&&p!=="undefined"&&p!=="null":y}var o=function(){function p(m){i(r(m),"Graph vertex must have a value"),this.value=m,this.edges=new Map}return p.prototype.addEdge=function(m){return this.edges.set(m.getKey(),m),this},p.prototype.deleteEdge=function(m){this.edges.delete(m.getKey())},p.prototype.getNeighbors=function(){var m=this,y=this.getEdges(),_=function(f){return f.startVertex===m?f.endVertex:f.startVertex};return y.map(_)},p.prototype.getEdges=function(){return Array.from(this.edges.values())},p.prototype.getDegree=function(){return this.getEdges().length},p.prototype.hasEdge=function(m){var y=this.getEdges().find(function(_){return _===m});return!!y},p.prototype.hasNeighbor=function(m){var y=this.getEdges().find(function(_){return _.startVertex===m||_.endVertex===m});return!!y},p.prototype.findEdge=function(m){var y=function(f){return f.startVertex===m||f.endVertex===m},_=this.getEdges().find(y);return _||null},p.prototype.getKey=function(){return this.value},p.prototype.deleteAllEdges=function(){var m=this;return this.getEdges().forEach(function(y){return m.deleteEdge(y)}),this},p.prototype.toString=function(m){return m?m(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(m){this.compare=m||p.defaultCompareFunction}return p.defaultCompareFunction=function(m,y){return m===y?s.EQUAL:m<y?s.LESS:s.GREATER},p.prototype.equal=function(m,y){return this.compare(m,y)===s.EQUAL},p.prototype.lessThan=function(m,y){return this.compare(m,y)===s.LESS},p.prototype.greaterThan=function(m,y){return this.compare(m,y)===s.GREATER},p.prototype.lessThanOrEqual=function(m,y){return this.lessThan(m,y)||this.equal(m,y)},p.prototype.greaterThanOrEqual=function(m,y){return this.greaterThan(m,y)||this.equal(m,y)},p.prototype.reverse=function(){var m=this.compare;this.compare=function(y,_){return m(_,y)}},p}(),u=function(){function p(m){this.value=m,this.next=null}return p}(),l=function(){function p(m){this.value=m,this.next=null,this.prev=null}return p}();var h=function(p,m){return h=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(y,_){y.__proto__=_}||function(y,_){for(var f in _)_.hasOwnProperty(f)&&(y[f]=_[f])},h(p,m)};function w(p,m){h(p,m);function y(){this.constructor=p}p.prototype=m===null?Object.create(m):(y.prototype=m.prototype,new y)}function v(p,m){var y={label:0,sent:function(){if(k[0]&1)throw k[1];return k[1]},trys:[],ops:[]},_,f,k,M;return M={next:j(0),throw:j(1),return:j(2)},typeof Symbol=="function"&&(M[Symbol.iterator]=function(){return this}),M;function j(R){return function(W){return L([R,W])}}function L(R){if(_)throw new TypeError("Generator is already executing.");for(;y;)try{if(_=1,f&&(k=R[0]&2?f.return:R[0]?f.throw||((k=f.return)&&k.call(f),0):f.next)&&!(k=k.call(f,R[1])).done)return k;switch(f=0,k&&(R=[R[0]&2,k.value]),R[0]){case 0:case 1:k=R;break;case 4:return y.label++,{value:R[1],done:!1};case 5:y.label++,f=R[1],R=[0];continue;case 7:R=y.ops.pop(),y.trys.pop();continue;default:if(k=y.trys,!(k=k.length>0&&k[k.length-1])&&(R[0]===6||R[0]===2)){y=0;continue}if(R[0]===3&&(!k||R[1]>k[0]&&R[1]<k[3])){y.label=R[1];break}if(R[0]===6&&y.label<k[1]){y.label=k[1],k=R;break}if(k&&y.label<k[2]){y.label=k[2],y.ops.push(R);break}k[2]&&y.ops.pop(),y.trys.pop();continue}R=m.call(p,y)}catch(W){R=[6,W],f=0}finally{_=k=0}if(R[0]&5)throw R[1];return{value:R[0]?R[1]:void 0,done:!0}}}function T(p,m){var y=typeof Symbol=="function"&&p[Symbol.iterator];if(!y)return p;var _=y.call(p),f,k=[],M;try{for(;(m===void 0||m-- >0)&&!(f=_.next()).done;)k.push(f.value)}catch(j){M={error:j}}finally{try{f&&!f.done&&(y=_.return)&&y.call(_)}finally{if(M)throw M.error}}return k}function I(){for(var p=[],m=0;m<arguments.length;m++)p=p.concat(T(arguments[m]));return p}var x="obfuse error occur";function P(p,m){if(!p)throw new Error("[linked-list] "+(m||x))}var O=-1,E=function(){function p(){for(var m=this,y=[],_=0;_<arguments.length;_++)y[_]=arguments[_];this._head=null,this._tail=null,this._length=0,this.compare=new a,y.length>0&&y.forEach(function(f){m.append(f)})}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 m=!1,y=1;if(!this._head)return 0;for(var _=this._head,f=this._head;f.next&&f.next.next;)if(f=f.next.next,_=_.next,_===f){m=!0;break}if(m){for(f=f.next;_!==f;)y++,f=f.next;return y}else return 0},enumerable:!0,configurable:!0}),p.prototype.getNode=function(m){var y=this._length;P(y>0&&m>=0&&m<y,"[linked-list] index "+m+" out of scope of list, which length is "+y);for(var _=this._head,f=0;f<m;)_=_.next,f++;return _},p.prototype.get=function(m){var y=this.getNode(m);return y?y.value:null},p.prototype.find=function(m){var y=m.value,_=m.callback;if(!this._head)return null;for(var f=this._head;f;){if(_&&_(f.value)||y!==void 0&&this.compare.equal(f.value,y))return f;f=f.next}return null},p.prototype.indexOf=function(m){if(!this._head)return O;for(var y=this._head,_=-1;y.next;){if(_++,this.compare.equal(y.value,m))return _;y=y.next}return y===this._tail&&this.compare.equal(y.value,m)&&(_+=1),_},p.prototype.first=function(m){P(m>=0,"[linked-list] param 'num' ("+m+") should not less than 0");for(var y=this.iterator(),_=[],f=Math.min(m,this.length),k=0;k<f;k++){var M=y.next();_.push(M.value)}return _},p.prototype.toArray=function(){return I(this)},p.prototype.isEmpty=function(){return this._head===null},p.prototype.iterator=function(){var m;return v(this,function(y){switch(y.label){case 0:m=this._head,y.label=1;case 1:return m?[4,m.value]:[3,3];case 2:return y.sent(),m=m.next,[3,1];case 3:return[2]}})},p.prototype[Symbol.iterator]=function(){return this.iterator()},p}(),B=function(p){w(m,p);function m(){for(var y=[],_=0;_<arguments.length;_++)y[_]=arguments[_];return p.apply(this,I(y))||this}return m.prototype.append=function(y){var _=new u(y);return this._tail?(this._tail.next=_,this._tail=_):this._head=this._tail=_,this._length++,!0},m.prototype.prepend=function(y){var _=new u(y);return this._head?(_.next=this._head,this._head=_):this._head=this._tail=_,this._length++,!0},m.prototype.remove=function(y){var _=this._head;if(_){if(this.compare.equal(_.value,y))return _.next?(this._head=_.next,_.next=null):this._head=this._tail=null,this._length--,y;for(var f=_;;){if(this.compare.equal(_.value,y))return _.next?f.next=_.next:(this._tail=f,this._tail.next=null),_.next=null,this._length--,y;if(_.next)f=_,_=_.next;else return}}},m.prototype.removeHead=function(){var y=this._head;if(y)return this._head.next?(this._head=y.next,y.next=null):(this._head=null,this._tail=null),this._length--,y.value},m.prototype.removeTail=function(){var y=this._tail;if(y){if(!this._head.next)this._head=null,this._tail=null;else{for(var _=this._head;_.next!==y;)_=_.next;_.next=null,this._tail=_}return this._length--,y.value}},m.prototype.reverse=function(){if(this._head){var y=this._head,_=null,f;for(this._tail=this._head;y!==null;)f=y.next,y.next=_,_=y,y=f;this._head=_}},m.prototype.clone=function(){var y=this.toArray();return new(m.bind.apply(m,I([void 0],y)))},m}(E),$=function(p){w(m,p);function m(){for(var y=[],_=0;_<arguments.length;_++)y[_]=arguments[_];var f=p.apply(this,I(y))||this;return f.cyclization(),f}return m.prototype.iterator=function(){var y;return v(this,function(_){switch(_.label){case 0:y=this._head,_.label=1;case 1:return y?[4,y.value]:[3,3];case 2:return _.sent(),y=y.next,y===this._head&&(y=null),[3,1];case 3:return[2]}})},m.prototype.circleIterator=function(){var y;return v(this,function(_){switch(_.label){case 0:y=this._head,_.label=1;case 1:return y?[4,y.value]:[3,3];case 2:return _.sent(),y=y.next,[3,1];case 3:return[2]}})},m.prototype[Symbol.iterator]=function(){return this.iterator()},m.prototype.mapToNormalListFn=function(y){for(var _=[],f=1;f<arguments.length;f++)_[f-1]=arguments[f];this.breakCircle();var k=p.prototype[y].apply(this,_);return this.cyclization(),k},m.prototype.getNode=function(y){return this.mapToNormalListFn("getNode",y)},m.prototype.append=function(y){return this.mapToNormalListFn("append",y)},m.prototype.prepend=function(y){return this.mapToNormalListFn("prepend",y)},m.prototype.find=function(y){return this.mapToNormalListFn("find",y)},m.prototype.indexOf=function(y){return this.mapToNormalListFn("indexOf",y)},m.prototype.remove=function(y){return this.mapToNormalListFn("remove",y)},m.prototype.removeHead=function(){return this.mapToNormalListFn("removeHead")},m.prototype.removeTail=function(){return this.mapToNormalListFn("removeTail")},m.prototype.first=function(y){P(y>=0,"[linked-list] param 'num' ("+y+") should not less than 0");for(var _=this.circleIterator(),f=[],k=0;k<y;k++){var M=_.next();f.push(M.value)}return f},m.prototype.toArray=function(){return this.mapToNormalListFn("toArray")},m.prototype.reverse=function(){return this.mapToNormalListFn("reverse")},m}(B),Z=function(p){w(m,p);function m(){for(var y=[],_=0;_<arguments.length;_++)y[_]=arguments[_];var f=p.apply(this,I(y))||this;return f.cyclization(),f}return m.prototype.breakCircle=function(){this._tail&&this._tail.next===this._head&&(this._tail.next=null)},m.prototype.cyclization=function(){this._tail&&this._tail.next===null&&(this._tail.next=this._head)},m.prototype.clone=function(){var y=this.toArray();return new(m.bind.apply(m,I([void 0],y)))},m}($),H=function(p){w(m,p);function m(){for(var y=[],_=0;_<arguments.length;_++)y[_]=arguments[_];return p.apply(this,I(y))||this}return m.prototype.append=function(y){var _=new l(y);return this._tail?(this._tail.next=_,_.prev=this._tail,this._tail=_):this._head=this._tail=_,this._length++,!0},m.prototype.prepend=function(y){var _=new l(y);return this._head?(_.next=this._head,this._head.prev=_,this._head=_):this._head=this._tail=_,this._length++,!0},m.prototype.remove=function(y){var _=this._head;if(_){if(this.compare.equal(_.value,y))return _.next?(this._head=_.next,this._head.prev=null,_.next=_.prev=null):this._head=this._tail=null,this._length--,y;for(;;){if(this.compare.equal(_.value,y))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}}},m.prototype.removeHead=function(){var y=this._head;if(y)return this._head.next?(y.next.prev=null,this._head=y.next,y.next=null):(this._head=null,this._tail=null),this._length--,y.value},m.prototype.removeTail=function(){var y=this._tail;if(y)return this._head.next?(y.prev.next=null,this._tail=y.prev,y.next=y.prev=null):(this._head=null,this._tail=null),this._length--,y.value},m.prototype.reverse=function(){if(this._head){var y=this._head,_=null,f;for(this._tail=this._head;y!==null;)f=y.next,y.next=_,y.prev=f,_=y,y=f;this._head=_}},m.prototype.clone=function(){var y=this.toArray();return new(m.bind.apply(m,I([void 0],y)))},m}(E),te=function(p){w(m,p);function m(){for(var y=[],_=0;_<arguments.length;_++)y[_]=arguments[_];var f=p.apply(this,I(y))||this;return f.cyclization(),f}return m.prototype.iterator=function(){var y;return v(this,function(_){switch(_.label){case 0:y=this._head,_.label=1;case 1:return y?[4,y.value]:[3,3];case 2:return _.sent(),y=y.next,y===this._head&&(y=null),[3,1];case 3:return[2]}})},m.prototype.circleIterator=function(){var y;return v(this,function(_){switch(_.label){case 0:y=this._head,_.label=1;case 1:return y?[4,y.value]:[3,3];case 2:return _.sent(),y=y.next,[3,1];case 3:return[2]}})},m.prototype[Symbol.iterator]=function(){return this.iterator()},m.prototype.mapToNormalListFn=function(y){for(var _=[],f=1;f<arguments.length;f++)_[f-1]=arguments[f];this.breakCircle();var k=p.prototype[y].apply(this,_);return this.cyclization(),k},m.prototype.getNode=function(y){return this.mapToNormalListFn("getNode",y)},m.prototype.append=function(y){return this.mapToNormalListFn("append",y)},m.prototype.prepend=function(y){return this.mapToNormalListFn("prepend",y)},m.prototype.find=function(y){return this.mapToNormalListFn("find",y)},m.prototype.indexOf=function(y){return this.mapToNormalListFn("indexOf",y)},m.prototype.remove=function(y){return this.mapToNormalListFn("remove",y)},m.prototype.removeHead=function(){return this.mapToNormalListFn("removeHead")},m.prototype.removeTail=function(){return this.mapToNormalListFn("removeTail")},m.prototype.first=function(y){P(y>=0,"[linked-list] param 'num' ("+y+") should not less than 0");for(var _=this.circleIterator(),f=[],k=0;k<y;k++){var M=_.next();f.push(M.value)}return f},m.prototype.toArray=function(){return this.mapToNormalListFn("toArray")},m.prototype.reverse=function(){return this.mapToNormalListFn("reverse")},m}(H),U=function(p){w(m,p);function m(){for(var y=[],_=0;_<arguments.length;_++)y[_]=arguments[_];var f=p.apply(this,I(y))||this;return f.cyclization(),f}return m.prototype.breakCircle=function(){this._tail&&this._head&&this._tail.next===this._head&&(this._tail.next=null,this._head.prev=null)},m.prototype.cyclization=function(){this._head&&this._tail&&this._tail.next===null&&(this._tail.next=this._head,this._head.prev=this._tail)},m.prototype.clone=function(){var y=this.toArray();return new(m.bind.apply(m,I([void 0],y)))},m}(te);function V(p,m){var y=typeof Symbol=="function"&&p[Symbol.iterator];if(!y)return p;var _=y.call(p),f,k=[],M;try{for(;(m===void 0||m-- >0)&&!(f=_.next()).done;)k.push(f.value)}catch(j){M={error:j}}finally{try{f&&!f.done&&(y=_.return)&&y.call(_)}finally{if(M)throw M.error}}return k}function F(){for(var p=[],m=0;m<arguments.length;m++)p=p.concat(V(arguments[m]));return p}var K=function(){function p(){for(var m=[],y=0;y<arguments.length;y++)m[y]=arguments[y];this.queue=new(B.bind.apply(B,F([void 0],m)))}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(m){return this.queue.append(m)},p.prototype.dequeue=function(){var m=this.queue.removeHead();return typeof m<"u"?m:void 0},p.prototype.toArray=function(){return this.queue.toArray()},p}();function C(p,m){var y=typeof Symbol=="function"&&p[Symbol.iterator];if(!y)return p;var _=y.call(p),f,k=[],M;try{for(;(m===void 0||m-- >0)&&!(f=_.next()).done;)k.push(f.value)}catch(j){M={error:j}}finally{try{f&&!f.done&&(y=_.return)&&y.call(_)}finally{if(M)throw M.error}}return k}function A(){for(var p=[],m=0;m<arguments.length;m++)p=p.concat(C(arguments[m]));return p}var c=function(){function p(){for(var m=[],y=0;y<arguments.length;y++)m[y]=arguments[y];this.stack=new(B.bind.apply(B,A([void 0],m)))}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(m){return this.stack.append(m)},p.prototype.pop=function(){var m=this.stack.removeTail();return typeof m<"u"?m:void 0},p.prototype.popBottom=function(){var m=this.stack.removeHead();return typeof m<"u"?m:void 0},p.prototype.toArray=function(){return this.stack.toArray()},p}();function d(p,m,y,_){if(p){m.push(p),_.set(p.getKey(),!0);var f=p.getNeighbors().filter(function(k){return!_.get(k.getKey())});y.push(f)}}function g(p,m,y){var _=p.pop();_&&y.set(_.getKey(),!1),m.pop()}var b=function(){function p(m){m===void 0&&(m=!1),this.vertices={},this.edges={},this.isDirected=m}return p.prototype.addVertex=function(m){return this.vertices[m.getKey()]=m,this},p.prototype.getVertexByKey=function(m){return this.vertices[m]},p.prototype.getNeighbors=function(m){return m.getNeighbors()},p.prototype.getAllVertices=function(){return Object.values(this.vertices)},p.prototype.getAllEdges=function(){return Object.values(this.edges)},p.prototype.addEdge=function(m,y){if(y===void 0&&(y=!1),this.edges[m.getKey()]){if(y)return this;i(!1,"Edge has already been added before")}var _=this.getVertexByKey(m.startVertex.getKey()),f=this.getVertexByKey(m.endVertex.getKey());if(_||(this.addVertex(m.startVertex),_=this.getVertexByKey(m.startVertex.getKey())),f||(this.addVertex(m.endVertex),f=this.getVertexByKey(m.endVertex.getKey())),this.edges[m.getKey()]=m,this.isDirected)_.addEdge(m);else{_.addEdge(m);var k=m.clone();f.addEdge(k.reverse())}return this},p.prototype.deleteEdge=function(m,y){if(y===void 0&&(y=!1),!this.edges[m.getKey()]){if(y)return this;i(!1,"Edge not found in graph")}delete this.edges[m.getKey()];var _=this.getVertexByKey(m.startVertex.getKey()),f=this.getVertexByKey(m.endVertex.getKey());return _.deleteEdge(m),f.deleteEdge(m),this},p.prototype.findEdge=function(m,y){var _=this.getVertexByKey(m.getKey());return _?_.findEdge(y):null},p.prototype.getWeight=function(){return this.getAllEdges().reduce(function(m,y){return m+y.weight},0)},p.prototype.reverse=function(){var m=this;return this.getAllEdges().forEach(function(y){m.deleteEdge(y),y.reverse(),m.addEdge(y)}),this},p.prototype.getVerticesIndices=function(){var m={};return this.getAllVertices().forEach(function(y,_){m[y.getKey()]=_}),m},p.prototype.getAdjacencyMatrix=function(){var m=this,y=this.getAllVertices(),_=this.getVerticesIndices(),f=Array(y.length).fill(null).map(function(){return Array(y.length).fill(1/0)});return y.forEach(function(k,M){k.getNeighbors().forEach(function(j){var L=_[j.getKey()],R=m.findEdge(k,j);R&&(f[M][L]=R.weight)})}),f},p.prototype.toString=function(){return Object.keys(this.vertices).toString()},p.prototype.bfs=function(m){var y,_,f;return e.__generator(this,function(k){switch(k.label){case 0:y=new Map,_=new K,_.enqueue(m),k.label=1;case 1:return _.isEmpty()?[3,4]:(f=_.dequeue(),f&&!y.has(f.getKey())?[4,f]:[3,3]);case 2:k.sent(),y.set(f.getKey(),f),f.getNeighbors().forEach(function(M){return _.enqueue(M)}),k.label=3;case 3:return[3,1];case 4:return[2]}})},p.prototype.dfs=function(m){var y,_,f;return e.__generator(this,function(k){switch(k.label){case 0:y=new Map,_=new c,_.push(m),k.label=1;case 1:return _.isEmpty()?[3,4]:(f=_.pop(),f&&!y.has(f.getKey())?[4,f]:[3,3]);case 2:k.sent(),y.set(f.getKey(),f),f.getNeighbors().forEach(function(M){return _.push(M)}),k.label=3;case 3:return[3,1];case 4:return[2]}})},p.prototype.findAllPath=function(m,y){var _,f,k,M,j,L,R;return e.__generator(this,function(W){switch(W.label){case 0:return _=[],m!==y?[3,2]:(_.push(m),[4,_]);case 1:return W.sent(),[2];case 2:f=new Map,k=new c,M=new c,d(m,k,M,f),W.label=3;case 3:if(k.isEmpty())return[3,6];if(j=M.pop(),j&&j.length)L=j.shift(),M.push(j),L&&d(L,k,M,f);else return M.push(j),g(k,M,f),[3,3];return R=k.peek,R!==y?[3,5]:[4,k.toArray()];case 4:W.sent(),g(k,M,f),W.label=5;case 5:return[3,3];case 6:return[2]}})},p}();t.GraphEdge=n,t.GraphVertex=o,t.Graph=b,Object.defineProperty(t,"__esModule",{value:!0})})});var Lh=yi((ku,Tu)=>{"use strict";(function(t,e){typeof ku=="object"&&typeof Tu<"u"?Tu.exports=e():typeof define=="function"&&define.amd?define(e):(t=t||self,t.JSBI=e())})(ku,function(){"use strict";var t=Math.imul,e=Math.clz32;function n(U){"@babel/helpers - typeof";return n=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(V){return typeof V}:function(V){return V&&typeof Symbol=="function"&&V.constructor===Symbol&&V!==Symbol.prototype?"symbol":typeof V},n(U)}function i(U,V){if(!(U instanceof V))throw new TypeError("Cannot call a class as a function")}function r(U,V){for(var F,K=0;K<V.length;K++)F=V[K],F.enumerable=F.enumerable||!1,F.configurable=!0,"value"in F&&(F.writable=!0),Object.defineProperty(U,F.key,F)}function o(U,V,F){return V&&r(U.prototype,V),F&&r(U,F),Object.defineProperty(U,"prototype",{writable:!1}),U}function s(U,V){if(typeof V!="function"&&V!==null)throw new TypeError("Super expression must either be null or a function");U.prototype=Object.create(V&&V.prototype,{constructor:{value:U,writable:!0,configurable:!0}}),Object.defineProperty(U,"prototype",{writable:!1}),V&&u(U,V)}function a(U){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(V){return V.__proto__||Object.getPrototypeOf(V)},a(U)}function u(U,V){return u=Object.setPrototypeOf||function(F,K){return F.__proto__=K,F},u(U,V)}function l(){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=l()?Reflect.construct:function(U,V,F){var K=[null];K.push.apply(K,V);var C=Function.bind.apply(U,K),A=new C;return F&&u(A,F.prototype),A},h.apply(null,arguments)}function w(U){return Function.toString.call(U).indexOf("[native code]")!==-1}function v(U){var V=typeof Map=="function"?new Map:void 0;return v=function(F){function K(){return h(F,arguments,a(this).constructor)}if(F===null||!w(F))return F;if(typeof F!="function")throw new TypeError("Super expression must either be null or a function");if(typeof V<"u"){if(V.has(F))return V.get(F);V.set(F,K)}return K.prototype=Object.create(F.prototype,{constructor:{value:K,enumerable:!1,writable:!0,configurable:!0}}),u(K,F)},v(U)}function T(U){if(U===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return U}function I(U,V){if(V&&(typeof V=="object"||typeof V=="function"))return V;if(V!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return T(U)}function x(U){var V=l();return function(){var F,K=a(U);if(V){var C=a(this).constructor;F=Reflect.construct(K,arguments,C)}else F=K.apply(this,arguments);return I(this,F)}}function P(U,V){return O(U)||E(U,V)||B(U,V)||Z()}function O(U){if(Array.isArray(U))return U}function E(U,V){var F=U==null?null:typeof Symbol<"u"&&U[Symbol.iterator]||U["@@iterator"];if(F!=null){var K,C,A=[],c=!0,d=!1;try{for(F=F.call(U);!(c=(K=F.next()).done)&&(A.push(K.value),!(V&&A.length===V));c=!0);}catch(g){d=!0,C=g}finally{try{c||F.return==null||F.return()}finally{if(d)throw C}}return A}}function B(U,V){if(U){if(typeof U=="string")return $(U,V);var F=Object.prototype.toString.call(U).slice(8,-1);return F==="Object"&&U.constructor&&(F=U.constructor.name),F==="Map"||F==="Set"?Array.from(U):F==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(F)?$(U,V):void 0}}function $(U,V){(V==null||V>U.length)&&(V=U.length);for(var F=0,K=Array(V);F<V;F++)K[F]=U[F];return K}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 H(U,V){var F=typeof Symbol<"u"&&U[Symbol.iterator]||U["@@iterator"];if(!F){if(Array.isArray(U)||(F=B(U))||V&&U&&typeof U.length=="number"){F&&(U=F);var K=0,C=function(){};return{s:C,n:function(){return K>=U.length?{done:!0}:{done:!1,value:U[K++]}},e:function(g){throw g},f:C}}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 A,c=!0,d=!1;return{s:function(){F=F.call(U)},n:function(){var g=F.next();return c=g.done,g},e:function(g){d=!0,A=g},f:function(){try{c||F.return==null||F.return()}finally{if(d)throw A}}}}var te=function(U){var V=Math.abs,F=Math.max,K=Math.floor;function C(c,d){var g;if(i(this,C),g=A.call(this,c),g.sign=d,Object.setPrototypeOf(T(g),C.prototype),c>C.__kMaxLength)throw new RangeError("Maximum BigInt size exceeded");return g}s(C,U);var A=x(C);return o(C,[{key:"toDebugString",value:function(){var c,d=["BigInt["],g=H(this);try{for(g.s();!(c=g.n()).done;){var b=c.value;d.push((b&&(b>>>0).toString(16))+", ")}}catch(p){g.e(p)}finally{g.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?C.__toStringGeneric(this,c,!1):C.__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 C(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 C.__clz30(this.__digit(this.length-1))}},{key:"__inplaceMultiplyAdd",value:function(c,d,g){g>this.length&&(g=this.length);for(var b=32767&c,p=c>>>15,m=0,y=d,_=0;_<g;_++){var f=this.__digit(_),k=32767&f,M=f>>>15,j=C.__imul(k,b),L=C.__imul(k,p),R=C.__imul(M,b),W=C.__imul(M,p),ne=y+j+m;m=ne>>>30,ne&=1073741823,ne+=((32767&L)<<15)+((32767&R)<<15),m+=ne>>>30,y=W+(L>>>15)+(R>>>15),this.__setDigit(_,1073741823&ne)}if(m!==0||y!==0)throw new Error("implementation bug")}},{key:"__inplaceAdd",value:function(c,d,g){for(var b,p=0,m=0;m<g;m++)b=this.__halfDigit(d+m)+c.__halfDigit(m)+p,p=b>>>15,this.__setHalfDigit(d+m,32767&b);return p}},{key:"__inplaceSub",value:function(c,d,g){var b=0;if(1&d){d>>=1;for(var p=this.__digit(d),m=32767&p,y=0;y<g-1>>>1;y++){var _=c.__digit(y),f=(p>>>15)-(32767&_)-b;b=1&f>>>15,this.__setDigit(d+y,(32767&f)<<15|32767&m),p=this.__digit(d+y+1),m=(32767&p)-(_>>>15)-b,b=1&m>>>15}var k=c.__digit(y),M=(p>>>15)-(32767&k)-b;if(b=1&M>>>15,this.__setDigit(d+y,(32767&M)<<15|32767&m),d+y+1>=this.length)throw new RangeError("out of bounds");!(1&g)&&(p=this.__digit(d+y+1),m=(32767&p)-(k>>>15)-b,b=1&m>>>15,this.__setDigit(d+c.length,1073709056&p|32767&m))}else{d>>=1;for(var j=0;j<c.length-1;j++){var L=this.__digit(d+j),R=c.__digit(j),W=(32767&L)-(32767&R)-b;b=1&W>>>15;var ne=(L>>>15)-(R>>>15)-b;b=1&ne>>>15,this.__setDigit(d+j,(32767&ne)<<15|32767&W)}var me=this.__digit(d+j),ue=c.__digit(j),pe=(32767&me)-(32767&ue)-b;b=1&pe>>>15;var vt=0;!(1&g)&&(vt=(me>>>15)-(ue>>>15)-b,b=1&vt>>>15),this.__setDigit(d+j,(32767&vt)<<15|32767&pe)}return b}},{key:"__inplaceRightShift",value:function(c){if(c!==0){for(var d,g=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|g),g=d>>>c;this.__setDigit(b,g)}}},{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 g=c>>>1,b=this.__digit(g),p=1&c?32767&b|d<<15:1073709056&b|32767&d;this.__setDigit(g,p)}}],[{key:"BigInt",value:function(c){var d=Number.isFinite;if(typeof c=="number"){if(c===0)return C.__zero();if(C.__isOneDigitInt(c))return 0>c?C.__oneDigit(-c,!0):C.__oneDigit(c,!1);if(!d(c)||K(c)!==c)throw new RangeError("The number "+c+" cannot be converted to BigInt because it is not an integer");return C.__fromDouble(c)}if(typeof c=="string"){var g=C.__fromString(c);if(g===null)throw new SyntaxError("Cannot convert "+c+" to a BigInt");return g}if(typeof c=="boolean")return c===!0?C.__oneDigit(1,!1):C.__zero();if(n(c)==="object"){if(c.constructor===C)return c;var b=C.__toPrimitive(c);return C.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 g=c.__unsignedDigit(0);return c.sign?-g:g}var b=c.__digit(d-1),p=C.__clz30(b),m=30*d-p;if(1024<m)return c.sign?-1/0:1/0;var y=m-1,_=b,f=d-1,k=p+3,M=k===32?0:_<<k;M>>>=12;var j=k-12,L=12<=k?0:_<<20+k,R=20+k;for(0<j&&0<f&&(f--,_=c.__digit(f),M|=_>>>30-j,L=_<<j+2,R=j+2);0<R&&0<f;)f--,_=c.__digit(f),L|=30<=R?_<<R-30:_>>>30-R,R-=30;var W=C.__decideRounding(c,R,f,_);if((W===1||W===0&&(1&L)==1)&&(L=L+1>>>0,L===0&&(M++,M>>>20!=0&&(M=0,y++,1023<y))))return c.sign?-1/0:1/0;var ne=c.sign?-2147483648:0;return y=y+1023<<20,C.__kBitConversionInts[1]=ne|y|M,C.__kBitConversionInts[0]=L,C.__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?C.__absoluteSubOne(c).__trim():C.__absoluteAddOne(c,!0)}},{key:"exponentiate",value:function(c,d){if(d.sign)throw new RangeError("Exponent must be positive");if(d.length===0)return C.__oneDigit(1,!1);if(c.length===0)return c;if(c.length===1&&c.__digit(0)===1)return c.sign&&!(1&d.__digit(0))?C.unaryMinus(c):c;if(1<d.length)throw new RangeError("BigInt too big");var g=d.__unsignedDigit(0);if(g===1)return c;if(g>=C.__kMaxLengthBits)throw new RangeError("BigInt too big");if(c.length===1&&c.__digit(0)===2){var b=1+(0|g/30),p=c.sign&&(1&g)!=0,m=new C(b,p);m.__initializeDigits();var y=1<<g%30;return m.__setDigit(b-1,y),m}var _=null,f=c;for(1&g&&(_=c),g>>=1;g!==0;g>>=1)f=C.multiply(f,f),1&g&&(_===null?_=f:_=C.multiply(_,f));return _}},{key:"multiply",value:function(c,d){if(c.length===0)return c;if(d.length===0)return d;var g=c.length+d.length;30<=c.__clzmsd()+d.__clzmsd()&&g--;var b=new C(g,c.sign!==d.sign);b.__initializeDigits();for(var p=0;p<c.length;p++)C.__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>C.__absoluteCompare(c,d))return C.__zero();var g,b=c.sign!==d.sign,p=d.__unsignedDigit(0);if(d.length===1&&32767>=p){if(p===1)return b===c.sign?c:C.unaryMinus(c);g=C.__absoluteDivSmall(c,p,null)}else g=C.__absoluteDivLarge(c,d,!0,!1);return g.sign=b,g.__trim()}},{key:"remainder",value:function(d,g){if(g.length===0)throw new RangeError("Division by zero");if(0>C.__absoluteCompare(d,g))return d;var b=g.__unsignedDigit(0);if(g.length===1&&32767>=b){if(b===1)return C.__zero();var p=C.__absoluteModSmall(d,b);return p===0?C.__zero():C.__oneDigit(p,d.sign)}var m=C.__absoluteDivLarge(d,g,!1,!0);return m.sign=d.sign,m.__trim()}},{key:"add",value:function(c,d){var g=c.sign;return g===d.sign?C.__absoluteAdd(c,d,g):0<=C.__absoluteCompare(c,d)?C.__absoluteSub(c,d,g):C.__absoluteSub(d,c,!g)}},{key:"subtract",value:function(c,d){var g=c.sign;return g===d.sign?0<=C.__absoluteCompare(c,d)?C.__absoluteSub(c,d,g):C.__absoluteSub(d,c,!g):C.__absoluteAdd(c,d,g)}},{key:"leftShift",value:function(c,d){return d.length===0||c.length===0?c:d.sign?C.__rightShiftByAbsolute(c,d):C.__leftShiftByAbsolute(c,d)}},{key:"signedRightShift",value:function(c,d){return d.length===0||c.length===0?c:d.sign?C.__leftShiftByAbsolute(c,d):C.__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>C.__compareToBigInt(c,d)}},{key:"lessThanOrEqual",value:function(c,d){return 0>=C.__compareToBigInt(c,d)}},{key:"greaterThan",value:function(c,d){return 0<C.__compareToBigInt(c,d)}},{key:"greaterThanOrEqual",value:function(c,d){return 0<=C.__compareToBigInt(c,d)}},{key:"equal",value:function(c,d){if(c.sign!==d.sign||c.length!==d.length)return!1;for(var g=0;g<c.length;g++)if(c.__digit(g)!==d.__digit(g))return!1;return!0}},{key:"notEqual",value:function(c,d){return!C.equal(c,d)}},{key:"bitwiseAnd",value:function(c,d){if(!c.sign&&!d.sign)return C.__absoluteAnd(c,d).__trim();if(c.sign&&d.sign){var g=F(c.length,d.length)+1,b=C.__absoluteSubOne(c,g),p=C.__absoluteSubOne(d);return b=C.__absoluteOr(b,p,b),C.__absoluteAddOne(b,!0,b).__trim()}if(c.sign){var m=[d,c];c=m[0],d=m[1]}return C.__absoluteAndNot(c,C.__absoluteSubOne(d)).__trim()}},{key:"bitwiseXor",value:function(c,d){if(!c.sign&&!d.sign)return C.__absoluteXor(c,d).__trim();if(c.sign&&d.sign){var g=F(c.length,d.length),b=C.__absoluteSubOne(c,g),p=C.__absoluteSubOne(d);return C.__absoluteXor(b,p,b).__trim()}var m=F(c.length,d.length)+1;if(c.sign){var y=[d,c];c=y[0],d=y[1]}var _=C.__absoluteSubOne(d,m);return _=C.__absoluteXor(_,c,_),C.__absoluteAddOne(_,!0,_).__trim()}},{key:"bitwiseOr",value:function(c,d){var g=F(c.length,d.length);if(!c.sign&&!d.sign)return C.__absoluteOr(c,d).__trim();if(c.sign&&d.sign){var b=C.__absoluteSubOne(c,g),p=C.__absoluteSubOne(d);return b=C.__absoluteAnd(b,p,b),C.__absoluteAddOne(b,!0,b).__trim()}if(c.sign){var m=[d,c];c=m[0],d=m[1]}var y=C.__absoluteSubOne(d,g);return y=C.__absoluteAndNot(y,c,y),C.__absoluteAddOne(y,!0,y).__trim()}},{key:"asIntN",value:function(c,d){if(d.length===0)return d;if(c=K(c),0>c)throw new RangeError("Invalid value: not (convertible to) a safe integer");if(c===0)return C.__zero();if(c>=C.__kMaxLengthBits)return d;var g=0|(c+29)/30;if(d.length<g)return d;var b=d.__unsignedDigit(g-1),p=1<<(c-1)%30;if(d.length===g&&b<p)return d;if((b&p)!==p)return C.__truncateToNBits(c,d);if(!d.sign)return C.__truncateAndSubFromPowerOfTwo(c,d,!0);if(!(b&p-1)){for(var m=g-2;0<=m;m--)if(d.__digit(m)!==0)return C.__truncateAndSubFromPowerOfTwo(c,d,!1);return d.length===g&&b===p?d:C.__truncateToNBits(c,d)}return C.__truncateAndSubFromPowerOfTwo(c,d,!1)}},{key:"asUintN",value:function(c,d){if(d.length===0)return d;if(c=K(c),0>c)throw new RangeError("Invalid value: not (convertible to) a safe integer");if(c===0)return C.__zero();if(d.sign){if(c>C.__kMaxLengthBits)throw new RangeError("BigInt too big");return C.__truncateAndSubFromPowerOfTwo(c,d,!1)}if(c>=C.__kMaxLengthBits)return d;var g=0|(c+29)/30;if(d.length<g)return d;var b=c%30;if(d.length==g){if(b===0)return d;var p=d.__digit(g-1);if(!(p>>>b))return d}return C.__truncateToNBits(c,d)}},{key:"ADD",value:function(c,d){if(c=C.__toPrimitive(c),d=C.__toPrimitive(d),typeof c=="string")return typeof d!="string"&&(d=d.toString()),c+d;if(typeof d=="string")return c.toString()+d;if(c=C.__toNumeric(c),d=C.__toNumeric(d),C.__isBigInt(c)&&C.__isBigInt(d))return C.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 C.__compare(c,d,0)}},{key:"LE",value:function(c,d){return C.__compare(c,d,1)}},{key:"GT",value:function(c,d){return C.__compare(c,d,2)}},{key:"GE",value:function(c,d){return C.__compare(c,d,3)}},{key:"EQ",value:function(c,d){for(;;){if(C.__isBigInt(c))return C.__isBigInt(d)?C.equal(c,d):C.EQ(d,c);if(typeof c=="number"){if(C.__isBigInt(d))return C.__equalToNumber(d,c);if(n(d)!=="object")return c==d;d=C.__toPrimitive(d)}else if(typeof c=="string"){if(C.__isBigInt(d))return c=C.__fromString(c),c!==null&&C.equal(c,d);if(n(d)!=="object")return c==d;d=C.__toPrimitive(d)}else if(typeof c=="boolean"){if(C.__isBigInt(d))return C.__equalToNumber(d,+c);if(n(d)!=="object")return c==d;d=C.__toPrimitive(d)}else if(n(c)==="symbol"){if(C.__isBigInt(d))return!1;if(n(d)!=="object")return c==d;d=C.__toPrimitive(d)}else if(n(c)==="object"){if(n(d)==="object"&&d.constructor!==C)return c==d;c=C.__toPrimitive(c)}else return c==d}}},{key:"NE",value:function(c,d){return!C.EQ(c,d)}},{key:"DataViewGetBigInt64",value:function(c,d){var g=2<arguments.length&&arguments[2]!==void 0&&arguments[2];return C.asIntN(64,C.DataViewGetBigUint64(c,d,g))}},{key:"DataViewGetBigUint64",value:function(c,d){var g=2<arguments.length&&arguments[2]!==void 0&&arguments[2],b=g?[4,0]:[0,4],p=P(b,2),m=p[0],y=p[1],_=c.getUint32(d+m,g),f=c.getUint32(d+y,g),k=new C(3,!1);return k.__setDigit(0,1073741823&f),k.__setDigit(1,(268435455&_)<<2|f>>>30),k.__setDigit(2,_>>>28),k.__trim()}},{key:"DataViewSetBigInt64",value:function(c,d,g){var b=3<arguments.length&&arguments[3]!==void 0&&arguments[3];C.DataViewSetBigUint64(c,d,g,b)}},{key:"DataViewSetBigUint64",value:function(c,d,g){var b=3<arguments.length&&arguments[3]!==void 0&&arguments[3];g=C.asUintN(64,g);var p=0,m=0;if(0<g.length&&(m=g.__digit(0),1<g.length)){var y=g.__digit(1);m|=y<<30,p=y>>>2,2<g.length&&(p|=g.__digit(2)<<28)}var _=b?[4,0]:[0,4],f=P(_,2),k=f[0],M=f[1];c.setUint32(d+k,p,b),c.setUint32(d+M,m,b)}},{key:"__zero",value:function(){return new C(0,!1)}},{key:"__oneDigit",value:function(c,d){var g=new C(1,d);return g.__setDigit(0,c),g}},{key:"__decideRounding",value:function(c,d,g,b){if(0<d)return-1;var p;if(0>d)p=-d-1;else{if(g===0)return-1;g--,b=c.__digit(g),p=29}var m=1<<p;if(!(b&m))return-1;if(m-=1,(b&m)!=0)return 1;for(;0<g;)if(g--,c.__digit(g)!==0)return 1;return 0}},{key:"__fromDouble",value:function(c){C.__kBitConversionDouble[0]=c;var d,g=2047&C.__kBitConversionInts[1]>>>20,b=g-1023,p=(0|b/30)+1,m=new C(p,0>c),y=1048575&C.__kBitConversionInts[1]|1048576,_=C.__kBitConversionInts[0],f=20,k=b%30,M=0;if(k<f){var j=f-k;M=j+32,d=y>>>j,y=y<<32-j|_>>>j,_<<=32-j}else if(k===f)M=32,d=y,y=_,_=0;else{var L=k-f;M=32-L,d=y<<L|_>>>32-L,y=_<<L,_=0}m.__setDigit(p-1,d);for(var R=p-2;0<=R;R--)0<M?(M-=30,d=y>>>2,y=y<<30|_>>>2,_<<=30):d=0,m.__setDigit(R,d);return m.__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,g=0,b=c.length,p=0;if(p===b)return C.__zero();for(var m=c.charCodeAt(p);C.__isWhitespace(m);){if(++p===b)return C.__zero();m=c.charCodeAt(p)}if(m===43){if(++p===b)return null;m=c.charCodeAt(p),g=1}else if(m===45){if(++p===b)return null;m=c.charCodeAt(p),g=-1}if(d===0){if(d=10,m===48){if(++p===b)return C.__zero();if(m=c.charCodeAt(p),m===88||m===120){if(d=16,++p===b)return null;m=c.charCodeAt(p)}else if(m===79||m===111){if(d=8,++p===b)return null;m=c.charCodeAt(p)}else if(m===66||m===98){if(d=2,++p===b)return null;m=c.charCodeAt(p)}}}else if(d===16&&m===48){if(++p===b)return C.__zero();if(m=c.charCodeAt(p),m===88||m===120){if(++p===b)return null;m=c.charCodeAt(p)}}if(g!==0&&d!==10)return null;for(;m===48;){if(++p===b)return C.__zero();m=c.charCodeAt(p)}var y=b-p,_=C.__kMaxBitsPerChar[d],f=C.__kBitsPerCharTableMultiplier-1;if(y>1073741824/_)return null;var k=_*y+f>>>C.__kBitsPerCharTableShift,M=new C(0|(k+29)/30,!1),j=10>d?d:10,L=10<d?d-10:0;if(d&d-1){M.__initializeDigits();var vt=!1,De=0;do{for(var je,zi=0,Ne=1;;){if(je=void 0,m-48>>>0<j)je=m-48;else if((32|m)-97>>>0<L)je=(32|m)-87;else{vt=!0;break}var Fe=Ne*d;if(1073741823<Fe)break;if(Ne=Fe,zi=zi*d+je,De++,++p===b){vt=!0;break}m=c.charCodeAt(p)}f=30*C.__kBitsPerCharTableMultiplier-1;var qo=0|(_*De+f>>>C.__kBitsPerCharTableShift)/30;M.__inplaceMultiplyAdd(Ne,zi,qo)}while(!vt)}else{_>>=C.__kBitsPerCharTableShift;var R=[],W=[],ne=!1;do{for(var me,ue=0,pe=0;;){if(me=void 0,m-48>>>0<j)me=m-48;else if((32|m)-97>>>0<L)me=(32|m)-87;else{ne=!0;break}if(pe+=_,ue=ue<<_|me,++p===b){ne=!0;break}if(m=c.charCodeAt(p),30<pe+_)break}R.push(ue),W.push(pe)}while(!ne);C.__fillFromParts(M,R,W)}if(p!==b){if(!C.__isWhitespace(m))return null;for(p++;p<b;p++)if(m=c.charCodeAt(p),!C.__isWhitespace(m))return null}return M.sign=g===-1,M.__trim()}},{key:"__fillFromParts",value:function(c,d,g){for(var b=0,p=0,m=0,y=d.length-1;0<=y;y--){var _=d[y],f=g[y];p|=_<<m,m+=f,m===30?(c.__setDigit(b++,p),m=0,p=0):30<m&&(c.__setDigit(b++,1073741823&p),m-=30,p=_>>>f-m)}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 g=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,m=d-1,y=c.__digit(g-1),_=C.__clz30(y),f=0|(30*g-_+p-1)/p;if(c.sign&&f++,268435456<f)throw new Error("string too long");for(var k=Array(f),M=f-1,j=0,L=0,R=0;R<g-1;R++){var W=c.__digit(R),ne=(j|W<<L)&m;k[M--]=C.__kConversionChars[ne];var me=p-L;for(j=W>>>me,L=30-me;L>=p;)k[M--]=C.__kConversionChars[j&m],j>>>=p,L-=p}var ue=(j|y<<L)&m;for(k[M--]=C.__kConversionChars[ue],j=y>>>p-L;j!==0;)k[M--]=C.__kConversionChars[j&m],j>>>=p;if(c.sign&&(k[M--]="-"),M!==-1)throw new Error("implementation bug");return k.join("")}},{key:"__toStringGeneric",value:function(c,d,g){var b=c.length;if(b===0)return"";if(b===1){var p=c.__unsignedDigit(0).toString(d);return g===!1&&c.sign&&(p="-"+p),p}var m=30*b-C.__clz30(c.__digit(b-1)),y=C.__kMaxBitsPerChar[d],_=y-1,f=m*C.__kBitsPerCharTableMultiplier;f+=_-1,f=0|f/_;var k,M,j=f+1>>1,L=C.exponentiate(C.__oneDigit(d,!1),C.__oneDigit(j,!1)),R=L.__unsignedDigit(0);if(L.length===1&&32767>=R){k=new C(c.length,!1),k.__initializeDigits();for(var W,ne=0,me=2*c.length-1;0<=me;me--)W=ne<<15|c.__halfDigit(me),k.__setHalfDigit(me,0|W/R),ne=0|W%R;M=ne.toString(d)}else{var ue=C.__absoluteDivLarge(c,L,!0,!0);k=ue.quotient;var pe=ue.remainder.__trim();M=C.__toStringGeneric(pe,d,!0)}k.__trim();for(var vt=C.__toStringGeneric(k,d,!0);M.length<j;)M="0"+M;return g===!1&&c.sign&&(vt="-"+vt),vt+M}},{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 g=c.sign;if(g!==d.sign)return C.__unequalSign(g);var b=C.__absoluteCompare(c,d);return 0<b?C.__absoluteGreater(g):0>b?C.__absoluteLess(g):0}},{key:"__compareToNumber",value:function(c,d){if(C.__isOneDigitInt(d)){var g=c.sign,b=0>d;if(g!==b)return C.__unequalSign(g);if(c.length===0){if(b)throw new Error("implementation bug");return d===0?0:-1}if(1<c.length)return C.__absoluteGreater(g);var p=V(d),m=c.__unsignedDigit(0);return m>p?C.__absoluteGreater(g):m<p?C.__absoluteLess(g):0}return C.__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 g=c.sign;if(g!==0>d)return C.__unequalSign(g);if(d===0)throw new Error("implementation bug: should be handled elsewhere");if(c.length===0)return-1;C.__kBitConversionDouble[0]=d;var b=2047&C.__kBitConversionInts[1]>>>20;if(b==2047)throw new Error("implementation bug: handled elsewhere");var p=b-1023;if(0>p)return C.__absoluteGreater(g);var m=c.length,y=c.__digit(m-1),_=C.__clz30(y),f=30*m-_,k=p+1;if(f<k)return C.__absoluteLess(g);if(f>k)return C.__absoluteGreater(g);var M=1048576|1048575&C.__kBitConversionInts[1],j=C.__kBitConversionInts[0],L=20,R=29-_;if(R!==(0|(f-1)%30))throw new Error("implementation bug");var W,ne=0;if(R<L){var me=L-R;ne=me+32,W=M>>>me,M=M<<32-me|j>>>me,j<<=32-me}else if(R===L)ne=32,W=M,M=j,j=0;else{var ue=R-L;ne=32-ue,W=M<<ue|j>>>32-ue,M=j<<ue,j=0}if(y>>>=0,W>>>=0,y>W)return C.__absoluteGreater(g);if(y<W)return C.__absoluteLess(g);for(var pe=m-2;0<=pe;pe--){0<ne?(ne-=30,W=M>>>2,M=M<<30|j>>>2,j<<=30):W=0;var vt=c.__unsignedDigit(pe);if(vt>W)return C.__absoluteGreater(g);if(vt<W)return C.__absoluteLess(g)}if(M!==0||j!==0){if(ne===0)throw new Error("implementation bug");return C.__absoluteLess(g)}return 0}},{key:"__equalToNumber",value:function(c,d){return C.__isOneDigitInt(d)?d===0?c.length===0:c.length===1&&c.sign===0>d&&c.__unsignedDigit(0)===V(d):C.__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,g){if(c=C.__toPrimitive(c),d=C.__toPrimitive(d),typeof c=="string"&&typeof d=="string")switch(g){case 0:return c<d;case 1:return c<=d;case 2:return c>d;case 3:return c>=d}if(C.__isBigInt(c)&&typeof d=="string")return d=C.__fromString(d),d!==null&&C.__comparisonResultToBool(C.__compareToBigInt(c,d),g);if(typeof c=="string"&&C.__isBigInt(d))return c=C.__fromString(c),c!==null&&C.__comparisonResultToBool(C.__compareToBigInt(c,d),g);if(c=C.__toNumeric(c),d=C.__toNumeric(d),C.__isBigInt(c)){if(C.__isBigInt(d))return C.__comparisonResultToBool(C.__compareToBigInt(c,d),g);if(typeof d!="number")throw new Error("implementation bug");return C.__comparisonResultToBool(C.__compareToNumber(c,d),g)}if(typeof c!="number")throw new Error("implementation bug");if(C.__isBigInt(d))return C.__comparisonResultToBool(C.__compareToNumber(d,c),2^g);if(typeof d!="number")throw new Error("implementation bug");return g===0?c<d:g===1?c<=d:g===2?c>d:g===3?c>=d:void 0}},{key:"__absoluteAdd",value:function(c,d,g){if(c.length<d.length)return C.__absoluteAdd(d,c,g);if(c.length===0)return c;if(d.length===0)return c.sign===g?c:C.unaryMinus(c);var b=c.length;(c.__clzmsd()===0||d.length===c.length&&d.__clzmsd()===0)&&b++;for(var p,m=new C(b,g),y=0,_=0;_<d.length;_++)p=c.__digit(_)+d.__digit(_)+y,y=p>>>30,m.__setDigit(_,1073741823&p);for(;_<c.length;_++){var f=c.__digit(_)+y;y=f>>>30,m.__setDigit(_,1073741823&f)}return _<m.length&&m.__setDigit(_,y),m.__trim()}},{key:"__absoluteSub",value:function(c,d,g){if(c.length===0)return c;if(d.length===0)return c.sign===g?c:C.unaryMinus(c);for(var b,p=new C(c.length,g),m=0,y=0;y<d.length;y++)b=c.__digit(y)-d.__digit(y)-m,m=1&b>>>30,p.__setDigit(y,1073741823&b);for(;y<c.length;y++){var _=c.__digit(y)-m;m=1&_>>>30,p.__setDigit(y,1073741823&_)}return p.__trim()}},{key:"__absoluteAddOne",value:function(c,d){var g=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,b=c.length;g===null?g=new C(b,d):g.sign=d;for(var p,m=1,y=0;y<b;y++)p=c.__digit(y)+m,m=p>>>30,g.__setDigit(y,1073741823&p);return m!==0&&g.__setDigitGrow(b,1),g}},{key:"__absoluteSubOne",value:function(c,d){var g=c.length;d=d||g;for(var b,p=new C(d,!1),m=1,y=0;y<g;y++)b=c.__digit(y)-m,m=1&b>>>30,p.__setDigit(y,1073741823&b);if(m!==0)throw new Error("implementation bug");for(var _=g;_<d;_++)p.__setDigit(_,0);return p}},{key:"__absoluteAnd",value:function(c,d){var g=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,b=c.length,p=d.length,m=p;if(b<p){m=b;var y=c,_=b;c=d,b=p,d=y,p=_}var f=m;g===null?g=new C(f,!1):f=g.length;for(var k=0;k<m;k++)g.__setDigit(k,c.__digit(k)&d.__digit(k));for(;k<f;k++)g.__setDigit(k,0);return g}},{key:"__absoluteAndNot",value:function(c,d){var g=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,b=c.length,p=d.length,m=p;b<p&&(m=b);var y=b;g===null?g=new C(y,!1):y=g.length;for(var _=0;_<m;_++)g.__setDigit(_,c.__digit(_)&~d.__digit(_));for(;_<b;_++)g.__setDigit(_,c.__digit(_));for(;_<y;_++)g.__setDigit(_,0);return g}},{key:"__absoluteOr",value:function(c,d){var g=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,b=c.length,p=d.length,m=p;if(b<p){m=b;var y=c,_=b;c=d,b=p,d=y,p=_}var f=b;g===null?g=new C(f,!1):f=g.length;for(var k=0;k<m;k++)g.__setDigit(k,c.__digit(k)|d.__digit(k));for(;k<b;k++)g.__setDigit(k,c.__digit(k));for(;k<f;k++)g.__setDigit(k,0);return g}},{key:"__absoluteXor",value:function(c,d){var g=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,b=c.length,p=d.length,m=p;if(b<p){m=b;var y=c,_=b;c=d,b=p,d=y,p=_}var f=b;g===null?g=new C(f,!1):f=g.length;for(var k=0;k<m;k++)g.__setDigit(k,c.__digit(k)^d.__digit(k));for(;k<b;k++)g.__setDigit(k,c.__digit(k));for(;k<f;k++)g.__setDigit(k,0);return g}},{key:"__absoluteCompare",value:function(c,d){var g=c.length-d.length;if(g!=0)return g;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,g,b){if(d!==0){for(var p=32767&d,m=d>>>15,y=0,_=0,f=0;f<c.length;f++,b++){var k=g.__digit(b),M=c.__digit(f),j=32767&M,L=M>>>15,R=C.__imul(j,p),W=C.__imul(j,m),ne=C.__imul(L,p),me=C.__imul(L,m);k+=_+R+y,y=k>>>30,k&=1073741823,k+=((32767&W)<<15)+((32767&ne)<<15),y+=k>>>30,_=me+(W>>>15)+(ne>>>15),g.__setDigit(b,1073741823&k)}for(;y!==0||_!==0;b++){var ue=g.__digit(b);ue+=y+_,_=0,y=ue>>>30,g.__setDigit(b,1073741823&ue)}}}},{key:"__internalMultiplyAdd",value:function(c,d,g,b,p){for(var m=g,y=0,_=0;_<b;_++){var f=c.__digit(_),k=C.__imul(32767&f,d),M=C.__imul(f>>>15,d),j=k+((32767&M)<<15)+y+m;m=j>>>30,y=M>>>15,p.__setDigit(_,1073741823&j)}if(p.length>b)for(p.__setDigit(b++,m+y);b<p.length;)p.__setDigit(b++,0);else if(m+y!==0)throw new Error("implementation bug")}},{key:"__absoluteDivSmall",value:function(c,d){var g=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;g===null&&(g=new C(c.length,!1));for(var b=0,p=2*c.length-1;0<=p;p-=2){var m=(b<<15|c.__halfDigit(p))>>>0,y=0|m/d;b=0|m%d,m=(b<<15|c.__halfDigit(p-1))>>>0;var _=0|m/d;b=0|m%d,g.__setDigit(p>>>1,y<<15|_)}return g}},{key:"__absoluteModSmall",value:function(c,d){for(var g,b=0,p=2*c.length-1;0<=p;p--)g=(b<<15|c.__halfDigit(p))>>>0,b=0|g%d;return b}},{key:"__absoluteDivLarge",value:function(c,d,g,b){var p=d.__halfDigitLength(),m=d.length,y=c.__halfDigitLength()-p,_=null;g&&(_=new C(y+2>>>1,!1),_.__initializeDigits());var f=new C(p+2>>>1,!1);f.__initializeDigits();var k=C.__clz15(d.__halfDigit(p-1));0<k&&(d=C.__specialLeftShift(d,k,0));for(var M=C.__specialLeftShift(c,k,1),j=d.__halfDigit(p-1),L=0,R=y;0<=R;R--){var W=32767,ne=M.__halfDigit(R+p);if(ne!==j){var me=(ne<<15|M.__halfDigit(R+p-1))>>>0;W=0|me/j;for(var ue=0|me%j,pe=d.__halfDigit(p-2),vt=M.__halfDigit(R+p-2);C.__imul(W,pe)>>>0>(ue<<16|vt)>>>0&&(W--,ue+=j,!(32767<ue)););}C.__internalMultiplyAdd(d,W,0,m,f);var De=M.__inplaceSub(f,R,p+1);De!==0&&(De=M.__inplaceAdd(d,R,p),M.__setHalfDigit(R+p,32767&M.__halfDigit(R+p)+De),W--),g&&(1&R?L=W<<15:_.__setDigit(R>>>1,L|W))}if(b)return M.__inplaceRightShift(k),g?{quotient:_,remainder:M}:M;if(g)return _;throw new Error("unreachable")}},{key:"__clz15",value:function(c){return C.__clz30(c)-15}},{key:"__specialLeftShift",value:function(c,d,g){var b=c.length,p=new C(b+g,!1);if(d===0){for(var m=0;m<b;m++)p.__setDigit(m,c.__digit(m));return 0<g&&p.__setDigit(b,0),p}for(var y,_=0,f=0;f<b;f++)y=c.__digit(f),p.__setDigit(f,1073741823&y<<d|_),_=y>>>30-d;return 0<g&&p.__setDigit(b,_),p}},{key:"__leftShiftByAbsolute",value:function(c,d){var g=C.__toShiftAmount(d);if(0>g)throw new RangeError("BigInt too big");var b=0|g/30,p=g%30,m=c.length,y=p!==0&&c.__digit(m-1)>>>30-p!=0,_=m+b+(y?1:0),f=new C(_,c.sign);if(p===0){for(var k=0;k<b;k++)f.__setDigit(k,0);for(;k<_;k++)f.__setDigit(k,c.__digit(k-b))}else{for(var M=0,j=0;j<b;j++)f.__setDigit(j,0);for(var L,R=0;R<m;R++)L=c.__digit(R),f.__setDigit(R+b,1073741823&L<<p|M),M=L>>>30-p;if(y)f.__setDigit(m+b,M);else if(M!==0)throw new Error("implementation bug")}return f.__trim()}},{key:"__rightShiftByAbsolute",value:function(c,d){var g=c.length,b=c.sign,p=C.__toShiftAmount(d);if(0>p)return C.__rightShiftByMaximum(b);var m=0|p/30,y=p%30,_=g-m;if(0>=_)return C.__rightShiftByMaximum(b);var f=!1;if(b){if(c.__digit(m)&(1<<y)-1)f=!0;else for(var k=0;k<m;k++)if(c.__digit(k)!==0){f=!0;break}}if(f&&y===0){var M=c.__digit(g-1);!~M&&_++}var j=new C(_,b);if(y===0){j.__setDigit(_-1,0);for(var L=m;L<g;L++)j.__setDigit(L-m,c.__digit(L))}else{for(var R,W=c.__digit(m)>>>y,ne=g-m-1,me=0;me<ne;me++)R=c.__digit(me+m+1),j.__setDigit(me,1073741823&R<<30-y|W),W=R>>>y;j.__setDigit(ne,W)}return f&&(j=C.__absoluteAddOne(j,!0,j)),j.__trim()}},{key:"__rightShiftByMaximum",value:function(c){return c?C.__oneDigit(1,!0):C.__zero()}},{key:"__toShiftAmount",value:function(c){if(1<c.length)return-1;var d=c.__unsignedDigit(0);return d>C.__kMaxLengthBits?-1:d}},{key:"__toPrimitive",value:function(c){var d=1<arguments.length&&arguments[1]!==void 0?arguments[1]:"default";if(n(c)!=="object"||c.constructor===C)return c;if(typeof Symbol<"u"&&n(Symbol.toPrimitive)==="symbol"){var g=c[Symbol.toPrimitive];if(g){var b=g(d);if(n(b)!=="object")return b;throw new TypeError("Cannot convert object to primitive value")}}var p=c.valueOf;if(p){var m=p.call(c);if(n(m)!=="object")return m}var y=c.toString;if(y){var _=y.call(c);if(n(_)!=="object")return _}throw new TypeError("Cannot convert object to primitive value")}},{key:"__toNumeric",value:function(c){return C.__isBigInt(c)?c:+c}},{key:"__isBigInt",value:function(c){return n(c)==="object"&&c!==null&&c.constructor===C}},{key:"__truncateToNBits",value:function(c,d){for(var g=0|(c+29)/30,b=new C(g,d.sign),p=g-1,m=0;m<p;m++)b.__setDigit(m,d.__digit(m));var y=d.__digit(p);if(c%30!=0){var _=32-c%30;y=y<<_>>>_}return b.__setDigit(p,y),b.__trim()}},{key:"__truncateAndSubFromPowerOfTwo",value:function(c,d,g){for(var b=Math.min,p,m=0|(c+29)/30,y=new C(m,g),_=0,f=m-1,k=0,M=b(f,d.length);_<M;_++)p=0-d.__digit(_)-k,k=1&p>>>30,y.__setDigit(_,1073741823&p);for(;_<f;_++)y.__setDigit(_,0|1073741823&-k);var j,L=f<d.length?d.__digit(f):0,R=c%30;if(R===0)j=0-L-k,j&=1073741823;else{var W=32-R;L=L<<W>>>W;var ne=1<<32-W;j=ne-L-k,j&=ne-1}return y.__setDigit(f,j),y.__trim()}},{key:"__digitPow",value:function(c,d){for(var g=1;0<d;)1&d&&(g*=c),d>>>=1,c*=c;return g}},{key:"__isOneDigitInt",value:function(c){return(1073741823&c)===c}}]),C}(v(Array));return te.__kMaxLength=33554432,te.__kMaxLengthBits=te.__kMaxLength<<5,te.__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],te.__kBitsPerCharTableShift=5,te.__kBitsPerCharTableMultiplier=1<<te.__kBitsPerCharTableShift,te.__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"],te.__kBitConversionBuffer=new ArrayBuffer(8),te.__kBitConversionDouble=new Float64Array(te.__kBitConversionBuffer),te.__kBitConversionInts=new Int32Array(te.__kBitConversionBuffer),te.__clz30=e?function(U){return e(U)-2}:function(U){var V=Math.LN2,F=Math.log;return U===0?30:0|29-(0|F(U>>>0)/V)},te.__imul=t||function(U,V){return 0|U*V},te})});var Y1={};bl(Y1,{AddressBookSDK:()=>Gi,COIN_TYPE_ARG_REGEX:()=>Hu,Coin:()=>jo,CoinHelper:()=>Bo,CreateHelper:()=>Vi,DEV_API_URL:()=>wg,DEV_SYNCING_URL:()=>bg,ENV_CONFIGS:()=>Tg,Formatter:()=>Vn,HexToUint8Array:()=>ga,LOCAL_API_URL:()=>il,LOCAL_SYNCING_URL:()=>rl,MAINNET_RPC_URL:()=>nl,MSafeAccount:()=>Ki,MSafeClient:()=>Aa,MSafeEnv:()=>yg,MSafeGlobals:()=>Ro,PREV_API_URL:()=>vg,PROD_API_URL:()=>kg,SUI_COIN:()=>Z1,SignatureVerifier:()=>Xu,TESTNET_RPC_URL:()=>Sa,Uint8ArrayToHex:()=>H1,addPrefix:()=>Zu,getAllCoins:()=>J1,getMSafeConfig:()=>ol,getPublicKeyFromChain:()=>Ju,stringToBuffer:()=>pa});module.exports=kl(Y1);var Mn=require("@msafe/sui3-utils"),Vi=class{constructor(e,n){this.globals=e;this.pkHelper=n}async getPublicKeyBatch(e){return this.pkHelper.getPublicKeyBatch(e)}async calculateMSafeAddress(e){let n=await this.reduceCreationInfoToRawConfig(e);return new Mn.MultiSigAccount(n).address}async validateCreateInfo(e){return this.calculateMSafeAddress(e)}addPublicKey(e,n){let i=Mn.PublicKeySerde.de(n);if(!(0,Mn.isSameAddress)(e,i.toSuiAddress()))throw new Error("Public key not match");this.pkHelper.addPublicKey(e,i)}async submitMSafeCreation(e){let n=await this.validateCreateInfo(e),i=Mn.SigningMessageHelper.createMSafeMessage(n),r=await this.globals.wallet.signPersonalMessage({messageStr:i});return await this.submitToBackend(e,r.signature),n}async reduceCreationInfoToRawConfig(e){let n=await this.getPublicKeyBatch(e.owners.map(i=>i.address));return n.forEach((i,r)=>{if(i===void 0)throw new Error(`Unknown public key for address: ${e.owners[r].address}`)}),{threshold:e.threshold,ownersWithWeight:e.owners.map((i,r)=>({publicKey:n[r],weight:i.weight})),creationNonce:e.creationNonce}}async submitToBackend(e,n){let i=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,...Mn.PublicKeySerde.ser(i[o])})),threshold:e.threshold,name:e.name,description:e.description,creationNonce:e.creationNonce,signature:n})}};var xa=require("@msafe/sui3-utils");var Tl=require("@msafe/sui3-utils"),Gi=class{constructor(e){this.globals=e}async getEntries(e){return this.globals.backend.getAddressBookEntries(e)}async update(e){let n=Tl.SigningMessageHelper.updateAddressBookMessage(e),i=await this.globals.wallet.signPersonalMessage({messageStr:n});return this.globals.backend.updateAddressBook({updates:e,signature:i.signature})}async getMode(){return(await this.globals.backend.getAddressBookMode()).mode}async setMode(e){return this.globals.backend.setAddressBookMode({mode:e})}};var $o=class{constructor(e){this.globals=e}async getMSafeByStatus(e,n){return this.globals.backend.getOwnedMSafeByStatus({status:e,pagination:n})}async updateMSafeStatus(e,n){return this.globals.backend.updateMSafeStatus({msafeAddress:e,status:n})}};var Tm=require("@msafe/sui3-utils"),Cm=ge(Uo(),1);var Rr=require("@mysten/sui.js/utils"),er=require("@mysten/sui.js/transactions"),rn=ge(ke(),1);var Xa=8192;function Ja(t){if(t.length<Xa)return btoa(String.fromCharCode(...t));let e="";for(var n=0;n<t.length;n+=Xa){let i=t.slice(n,n+Xa);e+=String.fromCharCode(...i)}return btoa(e)}var r0=require("@mysten/sui.js/keypairs/ed25519"),o0=require("@mysten/sui.js/keypairs/secp256k1"),Xn=ge(ke(),1),wt=ge(ke(),1);var Wi=9e15,Zn=1e9,Ya="0123456789abcdef",zo="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Vo="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Qa={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Wi,maxE:Wi,crypto:!1},ql,Bn,fe=!0,Wo="[DecimalError] ",Hn=Wo+"Invalid argument: ",Ll=Wo+"Precision limit exceeded",$l=Wo+"crypto unavailable",Ul="[object Decimal]",jt=Math.floor,kt=Math.pow,Ug=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Kg=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,zg=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Kl=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,fn=1e7,le=7,Vg=9007199254740991,Gg=zo.length-1,ec=Vo.length-1,z={toStringTag:Ul};z.absoluteValue=z.abs=function(){var t=new this.constructor(this);return t.s<0&&(t.s=1),oe(t)};z.ceil=function(){return oe(new this.constructor(this),this.e+1,2)};z.clampedTo=z.clamp=function(t,e){var n,i=this,r=i.constructor;if(t=new r(t),e=new r(e),!t.s||!e.s)return new r(NaN);if(t.gt(e))throw Error(Hn+e);return n=i.cmp(t),n<0?t:i.cmp(e)>0?e:new r(i)};z.comparedTo=z.cmp=function(t){var e,n,i,r,o=this,s=o.d,a=(t=new o.constructor(t)).d,u=o.s,l=t.s;if(!s||!a)return!u||!l?NaN:u!==l?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-l:0;if(u!==l)return u;if(o.e!==t.e)return o.e>t.e^u<0?1:-1;for(i=s.length,r=a.length,e=0,n=i<r?i:r;e<n;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return i===r?0:i>r^u<0?1:-1};z.cosine=z.cos=function(){var t,e,n=this,i=n.constructor;return n.d?n.d[0]?(t=i.precision,e=i.rounding,i.precision=t+Math.max(n.e,n.sd())+le,i.rounding=1,n=Wg(i,Hl(i,n)),i.precision=t,i.rounding=e,oe(Bn==2||Bn==3?n.neg():n,t,e,!0)):new i(1):new i(NaN)};z.cubeRoot=z.cbrt=function(){var t,e,n,i,r,o,s,a,u,l,h=this,w=h.constructor;if(!h.isFinite()||h.isZero())return new w(h);for(fe=!1,o=h.s*kt(h.s*h,1/3),!o||Math.abs(o)==1/0?(n=xt(h.d),t=h.e,(o=(t-n.length+1)%3)&&(n+=o==1||o==-2?"0":"00"),o=kt(n,1/3),t=jt((t+1)/3)-(t%3==(t<0?-1:2)),o==1/0?n="5e"+t:(n=o.toExponential(),n=n.slice(0,n.indexOf("e")+1)+t),i=new w(n),i.s=h.s):i=new w(o.toString()),s=(t=w.precision)+3;;)if(a=i,u=a.times(a).times(a),l=u.plus(h),i=Ee(l.plus(h).times(a),l.plus(u),s+2,1),xt(a.d).slice(0,s)===(n=xt(i.d)).slice(0,s))if(n=n.slice(s-3,s+1),n=="9999"||!r&&n=="4999"){if(!r&&(oe(a,t+1,0),a.times(a).times(a).eq(h))){i=a;break}s+=4,r=1}else{(!+n||!+n.slice(1)&&n.charAt(0)=="5")&&(oe(i,t+1,1),e=!i.times(i).times(i).eq(h));break}return fe=!0,oe(i,t,w.rounding,e)};z.decimalPlaces=z.dp=function(){var t,e=this.d,n=NaN;if(e){if(t=e.length-1,n=(t-jt(this.e/le))*le,t=e[t],t)for(;t%10==0;t/=10)n--;n<0&&(n=0)}return n};z.dividedBy=z.div=function(t){return Ee(this,new this.constructor(t))};z.dividedToIntegerBy=z.divToInt=function(t){var e=this,n=e.constructor;return oe(Ee(e,new n(t),0,1,1),n.precision,n.rounding)};z.equals=z.eq=function(t){return this.cmp(t)===0};z.floor=function(){return oe(new this.constructor(this),this.e+1,3)};z.greaterThan=z.gt=function(t){return this.cmp(t)>0};z.greaterThanOrEqualTo=z.gte=function(t){var e=this.cmp(t);return e==1||e===0};z.hyperbolicCosine=z.cosh=function(){var t,e,n,i,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;n=s.precision,i=s.rounding,s.precision=n+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(t=Math.ceil(r/3),e=(1/Zo(4,t)).toString()):(t=16,e="2.3283064365386962890625e-10"),o=Hi(s,1,o.times(e),new s(1),!0);for(var u,l=t,h=new s(8);l--;)u=o.times(o),o=a.minus(u.times(h.minus(u.times(h))));return oe(o,s.precision=n,s.rounding=i,!0)};z.hyperbolicSine=z.sinh=function(){var t,e,n,i,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,n=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,i=r.d.length,i<3)r=Hi(o,2,r,r,!0);else{t=1.4*Math.sqrt(i),t=t>16?16:t|0,r=r.times(1/Zo(5,t)),r=Hi(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),l=new o(20);t--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(l))))}return o.precision=e,o.rounding=n,oe(r,e,n,!0)};z.hyperbolicTangent=z.tanh=function(){var t,e,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(t=i.precision,e=i.rounding,i.precision=t+7,i.rounding=1,Ee(n.sinh(),n.cosh(),i.precision=t,i.rounding=e)):new i(n.s)};z.inverseCosine=z.acos=function(){var t,e=this,n=e.constructor,i=e.abs().cmp(1),r=n.precision,o=n.rounding;return i!==-1?i===0?e.isNeg()?dn(n,r,o):new n(0):new n(NaN):e.isZero()?dn(n,r+4,o).times(.5):(n.precision=r+6,n.rounding=1,e=e.asin(),t=dn(n,r+4,o).times(.5),n.precision=r,n.rounding=o,t.minus(e))};z.inverseHyperbolicCosine=z.acosh=function(){var t,e,n=this,i=n.constructor;return n.lte(1)?new i(n.eq(1)?0:NaN):n.isFinite()?(t=i.precision,e=i.rounding,i.precision=t+Math.max(Math.abs(n.e),n.sd())+4,i.rounding=1,fe=!1,n=n.times(n).minus(1).sqrt().plus(n),fe=!0,i.precision=t,i.rounding=e,n.ln()):new i(n)};z.inverseHyperbolicSine=z.asinh=function(){var t,e,n=this,i=n.constructor;return!n.isFinite()||n.isZero()?new i(n):(t=i.precision,e=i.rounding,i.precision=t+2*Math.max(Math.abs(n.e),n.sd())+6,i.rounding=1,fe=!1,n=n.times(n).plus(1).sqrt().plus(n),fe=!0,i.precision=t,i.rounding=e,n.ln())};z.inverseHyperbolicTangent=z.atanh=function(){var t,e,n,i,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,i=r.sd(),Math.max(i,t)<2*-r.e-1?oe(new o(r),t,e,!0):(o.precision=n=i-r.e,r=Ee(r.plus(1),new o(1).minus(r),n+t,1),o.precision=t+4,o.rounding=1,r=r.ln(),o.precision=t,o.rounding=e,r.times(.5))):new o(NaN)};z.inverseSine=z.asin=function(){var t,e,n,i,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),n=o.precision,i=o.rounding,e!==-1?e===0?(t=dn(o,n+4,i).times(.5),t.s=r.s,t):new o(NaN):(o.precision=n+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=n,o.rounding=i,r.times(2)))};z.inverseTangent=z.atan=function(){var t,e,n,i,r,o,s,a,u,l=this,h=l.constructor,w=h.precision,v=h.rounding;if(l.isFinite()){if(l.isZero())return new h(l);if(l.abs().eq(1)&&w+4<=ec)return s=dn(h,w+4,v).times(.25),s.s=l.s,s}else{if(!l.s)return new h(NaN);if(w+4<=ec)return s=dn(h,w+4,v).times(.5),s.s=l.s,s}for(h.precision=a=w+10,h.rounding=1,n=Math.min(28,a/le+2|0),t=n;t;--t)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(fe=!1,e=Math.ceil(a/le),i=1,u=l.times(l),s=new h(l),r=l;t!==-1;)if(r=r.times(u),o=s.minus(r.div(i+=2)),r=r.times(u),s=o.plus(r.div(i+=2)),s.d[e]!==void 0)for(t=e;s.d[t]===o.d[t]&&t--;);return n&&(s=s.times(2<<n-1)),fe=!0,oe(s,h.precision=w,h.rounding=v,!0)};z.isFinite=function(){return!!this.d};z.isInteger=z.isInt=function(){return!!this.d&&jt(this.e/le)>this.d.length-2};z.isNaN=function(){return!this.s};z.isNegative=z.isNeg=function(){return this.s<0};z.isPositive=z.isPos=function(){return this.s>0};z.isZero=function(){return!!this.d&&this.d[0]===0};z.lessThan=z.lt=function(t){return this.cmp(t)<0};z.lessThanOrEqualTo=z.lte=function(t){return this.cmp(t)<1};z.logarithm=z.log=function(t){var e,n,i,r,o,s,a,u,l=this,h=l.constructor,w=h.precision,v=h.rounding,T=5;if(t==null)t=new h(10),e=!0;else{if(t=new h(t),n=t.d,t.s<0||!n||!n[0]||t.eq(1))return new h(NaN);e=t.eq(10)}if(n=l.d,l.s<0||!n||!n[0]||l.eq(1))return new h(n&&!n[0]?-1/0:l.s!=1?NaN:n?0:1/0);if(e)if(n.length>1)o=!0;else{for(r=n[0];r%10===0;)r/=10;o=r!==1}if(fe=!1,a=w+T,s=Wn(l,a),i=e?Go(h,a+10):Wn(t,a),u=Ee(s,i,a,1),jr(u.d,r=w,v))do if(a+=10,s=Wn(l,a),i=e?Go(h,a+10):Wn(t,a),u=Ee(s,i,a,1),!o){+xt(u.d).slice(r+1,r+15)+1==1e14&&(u=oe(u,w+1,0));break}while(jr(u.d,r+=10,v));return fe=!0,oe(u,w,v)};z.minus=z.sub=function(t){var e,n,i,r,o,s,a,u,l,h,w,v,T=this,I=T.constructor;if(t=new I(t),!T.d||!t.d)return!T.s||!t.s?t=new I(NaN):T.d?t.s=-t.s:t=new I(t.d||T.s!==t.s?T:NaN),t;if(T.s!=t.s)return t.s=-t.s,T.plus(t);if(l=T.d,v=t.d,a=I.precision,u=I.rounding,!l[0]||!v[0]){if(v[0])t.s=-t.s;else if(l[0])t=new I(T);else return new I(u===3?-0:0);return fe?oe(t,a,u):t}if(n=jt(t.e/le),h=jt(T.e/le),l=l.slice(),o=h-n,o){for(w=o<0,w?(e=l,o=-o,s=v.length):(e=v,n=h,s=l.length),i=Math.max(Math.ceil(a/le),s)+2,o>i&&(o=i,e.length=1),e.reverse(),i=o;i--;)e.push(0);e.reverse()}else{for(i=l.length,s=v.length,w=i<s,w&&(s=i),i=0;i<s;i++)if(l[i]!=v[i]){w=l[i]<v[i];break}o=0}for(w&&(e=l,l=v,v=e,t.s=-t.s),s=l.length,i=v.length-s;i>0;--i)l[s++]=0;for(i=v.length;i>o;){if(l[--i]<v[i]){for(r=i;r&&l[--r]===0;)l[r]=fn-1;--l[r],l[i]+=fn}l[i]-=v[i]}for(;l[--s]===0;)l.pop();for(;l[0]===0;l.shift())--n;return l[0]?(t.d=l,t.e=Ho(l,n),fe?oe(t,a,u):t):new I(u===3?-0:0)};z.modulo=z.mod=function(t){var e,n=this,i=n.constructor;return t=new i(t),!n.d||!t.s||t.d&&!t.d[0]?new i(NaN):!t.d||n.d&&!n.d[0]?oe(new i(n),i.precision,i.rounding):(fe=!1,i.modulo==9?(e=Ee(n,t.abs(),0,3,1),e.s*=t.s):e=Ee(n,t,0,i.modulo,1),e=e.times(t),fe=!0,n.minus(e))};z.naturalExponential=z.exp=function(){return tc(this)};z.naturalLogarithm=z.ln=function(){return Wn(this)};z.negated=z.neg=function(){var t=new this.constructor(this);return t.s=-t.s,oe(t)};z.plus=z.add=function(t){var e,n,i,r,o,s,a,u,l,h,w=this,v=w.constructor;if(t=new v(t),!w.d||!t.d)return!w.s||!t.s?t=new v(NaN):w.d||(t=new v(t.d||w.s===t.s?w:NaN)),t;if(w.s!=t.s)return t.s=-t.s,w.minus(t);if(l=w.d,h=t.d,a=v.precision,u=v.rounding,!l[0]||!h[0])return h[0]||(t=new v(w)),fe?oe(t,a,u):t;if(o=jt(w.e/le),i=jt(t.e/le),l=l.slice(),r=o-i,r){for(r<0?(n=l,r=-r,s=h.length):(n=h,i=o,s=l.length),o=Math.ceil(a/le),s=o>s?o+1:s+1,r>s&&(r=s,n.length=1),n.reverse();r--;)n.push(0);n.reverse()}for(s=l.length,r=h.length,s-r<0&&(r=s,n=h,h=l,l=n),e=0;r;)e=(l[--r]=l[r]+h[r]+e)/fn|0,l[r]%=fn;for(e&&(l.unshift(e),++i),s=l.length;l[--s]==0;)l.pop();return t.d=l,t.e=Ho(l,i),fe?oe(t,a,u):t};z.precision=z.sd=function(t){var e,n=this;if(t!==void 0&&t!==!!t&&t!==1&&t!==0)throw Error(Hn+t);return n.d?(e=zl(n.d),t&&n.e+1>e&&(e=n.e+1)):e=NaN,e};z.round=function(){var t=this,e=t.constructor;return oe(new e(t),t.e+1,e.rounding)};z.sine=z.sin=function(){var t,e,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(t=i.precision,e=i.rounding,i.precision=t+Math.max(n.e,n.sd())+le,i.rounding=1,n=Zg(i,Hl(i,n)),i.precision=t,i.rounding=e,oe(Bn>2?n.neg():n,t,e,!0)):new i(NaN)};z.squareRoot=z.sqrt=function(){var t,e,n,i,r,o,s=this,a=s.d,u=s.e,l=s.s,h=s.constructor;if(l!==1||!a||!a[0])return new h(!l||l<0&&(!a||a[0])?NaN:a?s:1/0);for(fe=!1,l=Math.sqrt(+s),l==0||l==1/0?(e=xt(a),(e.length+u)%2==0&&(e+="0"),l=Math.sqrt(e),u=jt((u+1)/2)-(u<0||u%2),l==1/0?e="5e"+u:(e=l.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),i=new h(e)):i=new h(l.toString()),n=(u=h.precision)+3;;)if(o=i,i=o.plus(Ee(s,o,n+2,1)).times(.5),xt(o.d).slice(0,n)===(e=xt(i.d)).slice(0,n))if(e=e.slice(n-3,n+1),e=="9999"||!r&&e=="4999"){if(!r&&(oe(o,u+1,0),o.times(o).eq(s))){i=o;break}n+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(oe(i,u+1,1),t=!i.times(i).eq(s));break}return fe=!0,oe(i,u,h.rounding,t)};z.tangent=z.tan=function(){var t,e,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(t=i.precision,e=i.rounding,i.precision=t+10,i.rounding=1,n=n.sin(),n.s=1,n=Ee(n,new i(1).minus(n.times(n)).sqrt(),t+10,0),i.precision=t,i.rounding=e,oe(Bn==2||Bn==4?n.neg():n,t,e,!0)):new i(NaN)};z.times=z.mul=function(t){var e,n,i,r,o,s,a,u,l,h=this,w=h.constructor,v=h.d,T=(t=new w(t)).d;if(t.s*=h.s,!v||!v[0]||!T||!T[0])return new w(!t.s||v&&!v[0]&&!T||T&&!T[0]&&!v?NaN:!v||!T?t.s/0:t.s*0);for(n=jt(h.e/le)+jt(t.e/le),u=v.length,l=T.length,u<l&&(o=v,v=T,T=o,s=u,u=l,l=s),o=[],s=u+l,i=s;i--;)o.push(0);for(i=l;--i>=0;){for(e=0,r=u+i;r>i;)a=o[r]+T[i]*v[r-i-1]+e,o[r--]=a%fn|0,e=a/fn|0;o[r]=(o[r]+e)%fn|0}for(;!o[--s];)o.pop();return e?++n:o.shift(),t.d=o,t.e=Ho(o,n),fe?oe(t,w.precision,w.rounding):t};z.toBinary=function(t,e){return ic(this,2,t,e)};z.toDecimalPlaces=z.toDP=function(t,e){var n=this,i=n.constructor;return n=new i(n),t===void 0?n:(Kt(t,0,Zn),e===void 0?e=i.rounding:Kt(e,0,8),oe(n,t+n.e+1,e))};z.toExponential=function(t,e){var n,i=this,r=i.constructor;return t===void 0?n=Tn(i,!0):(Kt(t,0,Zn),e===void 0?e=r.rounding:Kt(e,0,8),i=oe(new r(i),t+1,e),n=Tn(i,!0,t+1)),i.isNeg()&&!i.isZero()?"-"+n:n};z.toFixed=function(t,e){var n,i,r=this,o=r.constructor;return t===void 0?n=Tn(r):(Kt(t,0,Zn),e===void 0?e=o.rounding:Kt(e,0,8),i=oe(new o(r),t+r.e+1,e),n=Tn(i,!1,t+i.e+1)),r.isNeg()&&!r.isZero()?"-"+n:n};z.toFraction=function(t){var e,n,i,r,o,s,a,u,l,h,w,v,T=this,I=T.d,x=T.constructor;if(!I)return new x(T);if(l=n=new x(1),i=u=new x(0),e=new x(i),o=e.e=zl(I)-T.e-1,s=o%le,e.d[0]=kt(10,s<0?le+s:s),t==null)t=o>0?e:l;else{if(a=new x(t),!a.isInt()||a.lt(l))throw Error(Hn+a);t=a.gt(e)?o>0?e:l:a}for(fe=!1,a=new x(xt(I)),h=x.precision,x.precision=o=I.length*le*2;w=Ee(a,e,0,1,1),r=n.plus(w.times(i)),r.cmp(t)!=1;)n=i,i=r,r=l,l=u.plus(w.times(r)),u=r,r=e,e=a.minus(w.times(r)),a=r;return r=Ee(t.minus(n),i,0,1,1),u=u.plus(r.times(l)),n=n.plus(r.times(i)),u.s=l.s=T.s,v=Ee(l,i,o,1).minus(T).abs().cmp(Ee(u,n,o,1).minus(T).abs())<1?[l,i]:[u,n],x.precision=h,fe=!0,v};z.toHexadecimal=z.toHex=function(t,e){return ic(this,16,t,e)};z.toNearest=function(t,e){var n=this,i=n.constructor;if(n=new i(n),t==null){if(!n.d)return n;t=new i(1),e=i.rounding}else{if(t=new i(t),e===void 0?e=i.rounding:Kt(e,0,8),!n.d)return t.s?n:t;if(!t.d)return t.s&&(t.s=n.s),t}return t.d[0]?(fe=!1,n=Ee(n,t,0,e,1).times(t),fe=!0,oe(n)):(t.s=n.s,n=t),n};z.toNumber=function(){return+this};z.toOctal=function(t,e){return ic(this,8,t,e)};z.toPower=z.pow=function(t){var e,n,i,r,o,s,a=this,u=a.constructor,l=+(t=new u(t));if(!a.d||!t.d||!a.d[0]||!t.d[0])return new u(kt(+a,l));if(a=new u(a),a.eq(1))return a;if(i=u.precision,o=u.rounding,t.eq(1))return oe(a,i,o);if(e=jt(t.e/le),e>=t.d.length-1&&(n=l<0?-l:l)<=Vg)return r=Vl(u,a,n,i),t.s<0?new u(1).div(r):oe(r,i,o);if(s=a.s,s<0){if(e<t.d.length-1)return new u(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 n=kt(+a,l),e=n==0||!isFinite(n)?jt(l*(Math.log("0."+xt(a.d))/Math.LN10+a.e+1)):new u(n+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(fe=!1,u.rounding=a.s=1,n=Math.min(12,(e+"").length),r=tc(t.times(Wn(a,i+n)),i),r.d&&(r=oe(r,i+5,1),jr(r.d,i,o)&&(e=i+10,r=oe(tc(t.times(Wn(a,e+n)),e),e+5,1),+xt(r.d).slice(i+1,i+15)+1==1e14&&(r=oe(r,i+1,0)))),r.s=s,fe=!0,u.rounding=o,oe(r,i,o))};z.toPrecision=function(t,e){var n,i=this,r=i.constructor;return t===void 0?n=Tn(i,i.e<=r.toExpNeg||i.e>=r.toExpPos):(Kt(t,1,Zn),e===void 0?e=r.rounding:Kt(e,0,8),i=oe(new r(i),t,e),n=Tn(i,t<=i.e||i.e<=r.toExpNeg,t)),i.isNeg()&&!i.isZero()?"-"+n:n};z.toSignificantDigits=z.toSD=function(t,e){var n=this,i=n.constructor;return t===void 0?(t=i.precision,e=i.rounding):(Kt(t,1,Zn),e===void 0?e=i.rounding:Kt(e,0,8)),oe(new i(n),t,e)};z.toString=function(){var t=this,e=t.constructor,n=Tn(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()&&!t.isZero()?"-"+n:n};z.truncated=z.trunc=function(){return oe(new this.constructor(this),this.e+1,1)};z.valueOf=z.toJSON=function(){var t=this,e=t.constructor,n=Tn(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()?"-"+n:n};function xt(t){var e,n,i,r=t.length-1,o="",s=t[0];if(r>0){for(o+=s,e=1;e<r;e++)i=t[e]+"",n=le-i.length,n&&(o+=Gn(n)),o+=i;s=t[e],i=s+"",n=le-i.length,n&&(o+=Gn(n))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Kt(t,e,n){if(t!==~~t||t<e||t>n)throw Error(Hn+t)}function jr(t,e,n,i){var r,o,s,a;for(o=t[0];o>=10;o/=10)--e;return--e<0?(e+=le,r=0):(r=Math.ceil((e+1)/le),e%=le),o=kt(10,le-e),a=t[r]%o|0,i==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=n<4&&a==99999||n>3&&a==49999||a==5e4||a==0):s=(n<4&&a+1==o||n>3&&a+1==o/2)&&(t[r+1]/o/100|0)==kt(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=(i||n<4)&&a==9999||!i&&n>3&&a==4999):s=((i||n<4)&&a+1==o||!i&&n>3&&a+1==o/2)&&(t[r+1]/o/1e3|0)==kt(10,e-3)-1,s}function Ko(t,e,n){for(var i,r=[0],o,s=0,a=t.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=Ya.indexOf(t.charAt(s++)),i=0;i<r.length;i++)r[i]>n-1&&(r[i+1]===void 0&&(r[i+1]=0),r[i+1]+=r[i]/n|0,r[i]%=n)}return r.reverse()}function Wg(t,e){var n,i,r;if(e.isZero())return e;i=e.d.length,i<32?(n=Math.ceil(i/3),r=(1/Zo(4,n)).toString()):(n=16,r="2.3283064365386962890625e-10"),t.precision+=n,e=Hi(t,1,e.times(r),new t(1));for(var o=n;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return t.precision-=n,e}var Ee=function(){function t(i,r,o){var s,a=0,u=i.length;for(i=i.slice();u--;)s=i[u]*r+a,i[u]=s%o|0,a=s/o|0;return a&&i.unshift(a),i}function e(i,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(i[a]!=r[a]){u=i[a]>r[a]?1:-1;break}return u}function n(i,r,o,s){for(var a=0;o--;)i[o]-=a,a=i[o]<r[o]?1:0,i[o]=a*s+i[o]-r[o];for(;!i[0]&&i.length>1;)i.shift()}return function(i,r,o,s,a,u){var l,h,w,v,T,I,x,P,O,E,B,$,Z,H,te,U,V,F,K,C,A=i.constructor,c=i.s==r.s?1:-1,d=i.d,g=r.d;if(!d||!d[0]||!g||!g[0])return new A(!i.s||!r.s||(d?g&&d[0]==g[0]:!g)?NaN:d&&d[0]==0||!g?c*0:c/0);for(u?(T=1,h=i.e-r.e):(u=fn,T=le,h=jt(i.e/T)-jt(r.e/T)),K=g.length,V=d.length,O=new A(c),E=O.d=[],w=0;g[w]==(d[w]||0);w++);if(g[w]>(d[w]||0)&&h--,o==null?(H=o=A.precision,s=A.rounding):a?H=o+(i.e-r.e)+1:H=o,H<0)E.push(1),I=!0;else{if(H=H/T+2|0,w=0,K==1){for(v=0,g=g[0],H++;(w<V||v)&&H--;w++)te=v*u+(d[w]||0),E[w]=te/g|0,v=te%g|0;I=v||w<V}else{for(v=u/(g[0]+1)|0,v>1&&(g=t(g,v,u),d=t(d,v,u),K=g.length,V=d.length),U=K,B=d.slice(0,K),$=B.length;$<K;)B[$++]=0;C=g.slice(),C.unshift(0),F=g[0],g[1]>=u/2&&++F;do v=0,l=e(g,B,K,$),l<0?(Z=B[0],K!=$&&(Z=Z*u+(B[1]||0)),v=Z/F|0,v>1?(v>=u&&(v=u-1),x=t(g,v,u),P=x.length,$=B.length,l=e(x,B,P,$),l==1&&(v--,n(x,K<P?C:g,P,u))):(v==0&&(l=v=1),x=g.slice()),P=x.length,P<$&&x.unshift(0),n(B,x,$,u),l==-1&&($=B.length,l=e(g,B,K,$),l<1&&(v++,n(B,K<$?C:g,$,u))),$=B.length):l===0&&(v++,B=[0]),E[w++]=v,l&&B[0]?B[$++]=d[U]||0:(B=[d[U]],$=1);while((U++<V||B[0]!==void 0)&&H--);I=B[0]!==void 0}E[0]||E.shift()}if(T==1)O.e=h,ql=I;else{for(w=1,v=E[0];v>=10;v/=10)w++;O.e=w+h*T-1,oe(O,a?o+O.e+1:o,s,I)}return O}}();function oe(t,e,n,i){var r,o,s,a,u,l,h,w,v,T=t.constructor;e:if(e!=null){if(w=t.d,!w)return t;for(r=1,a=w[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=le,s=e,h=w[v=0],u=h/kt(10,r-s-1)%10|0;else if(v=Math.ceil((o+1)/le),a=w.length,v>=a)if(i){for(;a++<=v;)w.push(0);h=u=0,r=1,o%=le,s=o-le+1}else break e;else{for(h=a=w[v],r=1;a>=10;a/=10)r++;o%=le,s=o-le+r,u=s<0?0:h/kt(10,r-s-1)%10|0}if(i=i||e<0||w[v+1]!==void 0||(s<0?h:h%kt(10,r-s-1)),l=n<4?(u||i)&&(n==0||n==(t.s<0?3:2)):u>5||u==5&&(n==4||i||n==6&&(o>0?s>0?h/kt(10,r-s):0:w[v-1])%10&1||n==(t.s<0?8:7)),e<1||!w[0])return w.length=0,l?(e-=t.e+1,w[0]=kt(10,(le-e%le)%le),t.e=-e||0):w[0]=t.e=0,t;if(o==0?(w.length=v,a=1,v--):(w.length=v+1,a=kt(10,le-o),w[v]=s>0?(h/kt(10,r-s)%kt(10,s)|0)*a:0),l)for(;;)if(v==0){for(o=1,s=w[0];s>=10;s/=10)o++;for(s=w[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(t.e++,w[0]==fn&&(w[0]=1));break}else{if(w[v]+=a,w[v]!=fn)break;w[v--]=0,a=1}for(o=w.length;w[--o]===0;)w.pop()}return fe&&(t.e>T.maxE?(t.d=null,t.e=NaN):t.e<T.minE&&(t.e=0,t.d=[0])),t}function Tn(t,e,n){if(!t.isFinite())return Wl(t);var i,r=t.e,o=xt(t.d),s=o.length;return e?(n&&(i=n-s)>0?o=o.charAt(0)+"."+o.slice(1)+Gn(i):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(t.e<0?"e":"e+")+t.e):r<0?(o="0."+Gn(-r-1)+o,n&&(i=n-s)>0&&(o+=Gn(i))):r>=s?(o+=Gn(r+1-s),n&&(i=n-r-1)>0&&(o=o+"."+Gn(i))):((i=r+1)<s&&(o=o.slice(0,i)+"."+o.slice(i)),n&&(i=n-s)>0&&(r+1===s&&(o+="."),o+=Gn(i))),o}function Ho(t,e){var n=t[0];for(e*=le;n>=10;n/=10)e++;return e}function Go(t,e,n){if(e>Gg)throw fe=!0,n&&(t.precision=n),Error(Ll);return oe(new t(zo),e,1,!0)}function dn(t,e,n){if(e>ec)throw Error(Ll);return oe(new t(Vo),e,n,!0)}function zl(t){var e=t.length-1,n=e*le+1;if(e=t[e],e){for(;e%10==0;e/=10)n--;for(e=t[0];e>=10;e/=10)n++}return n}function Gn(t){for(var e="";t--;)e+="0";return e}function Vl(t,e,n,i){var r,o=new t(1),s=Math.ceil(i/le+4);for(fe=!1;;){if(n%2&&(o=o.times(e),Fl(o.d,s)&&(r=!0)),n=jt(n/2),n===0){n=o.d.length-1,r&&o.d[n]===0&&++o.d[n];break}e=e.times(e),Fl(e.d,s)}return fe=!0,o}function Nl(t){return t.d[t.d.length-1]&1}function Gl(t,e,n){for(var i,r=new t(e[0]),o=0;++o<e.length;)if(i=new t(e[o]),i.s)r[n](i)&&(r=i);else{r=i;break}return r}function tc(t,e){var n,i,r,o,s,a,u,l=0,h=0,w=0,v=t.constructor,T=v.rounding,I=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?(fe=!1,u=I):u=e,a=new v(.03125);t.e>-2;)t=t.times(a),w+=5;for(i=Math.log(kt(2,w))/Math.LN10*2+5|0,u+=i,n=o=s=new v(1),v.precision=u;;){if(o=oe(o.times(t),u,1),n=n.times(++h),a=s.plus(Ee(o,n,u,1)),xt(a.d).slice(0,u)===xt(s.d).slice(0,u)){for(r=w;r--;)s=oe(s.times(s),u,1);if(e==null)if(l<3&&jr(s.d,u-i,T,l))v.precision=u+=10,n=o=a=new v(1),h=0,l++;else return oe(s,v.precision=I,T,fe=!0);else return v.precision=I,s}s=a}}function Wn(t,e){var n,i,r,o,s,a,u,l,h,w,v,T=1,I=10,x=t,P=x.d,O=x.constructor,E=O.rounding,B=O.precision;if(x.s<0||!P||!P[0]||!x.e&&P[0]==1&&P.length==1)return new O(P&&!P[0]?-1/0:x.s!=1?NaN:P?0:x);if(e==null?(fe=!1,h=B):h=e,O.precision=h+=I,n=xt(P),i=n.charAt(0),Math.abs(o=x.e)<15e14){for(;i<7&&i!=1||i==1&&n.charAt(1)>3;)x=x.times(t),n=xt(x.d),i=n.charAt(0),T++;o=x.e,i>1?(x=new O("0."+n),o++):x=new O(i+"."+n.slice(1))}else return l=Go(O,h+2,B).times(o+""),x=Wn(new O(i+"."+n.slice(1)),h-I).plus(l),O.precision=B,e==null?oe(x,B,E,fe=!0):x;for(w=x,u=s=x=Ee(x.minus(1),x.plus(1),h,1),v=oe(x.times(x),h,1),r=3;;){if(s=oe(s.times(v),h,1),l=u.plus(Ee(s,new O(r),h,1)),xt(l.d).slice(0,h)===xt(u.d).slice(0,h))if(u=u.times(2),o!==0&&(u=u.plus(Go(O,h+2,B).times(o+""))),u=Ee(u,new O(T),h,1),e==null)if(jr(u.d,h-I,E,a))O.precision=h+=I,l=s=x=Ee(w.minus(1),w.plus(1),h,1),v=oe(x.times(x),h,1),r=a=1;else return oe(u,O.precision=B,E,fe=!0);else return O.precision=B,u;u=l,r+=2}}function Wl(t){return String(t.s*t.s/0)}function nc(t,e){var n,i,r;for((n=e.indexOf("."))>-1&&(e=e.replace(".","")),(i=e.search(/e/i))>0?(n<0&&(n=i),n+=+e.slice(i+1),e=e.substring(0,i)):n<0&&(n=e.length),i=0;e.charCodeAt(i)===48;i++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(i,r),e){if(r-=i,t.e=n=n-i-1,t.d=[],i=(n+1)%le,n<0&&(i+=le),i<r){for(i&&t.d.push(+e.slice(0,i)),r-=le;i<r;)t.d.push(+e.slice(i,i+=le));e=e.slice(i),i=le-e.length}else i-=r;for(;i--;)e+="0";t.d.push(+e),fe&&(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 Hg(t,e){var n,i,r,o,s,a,u,l,h;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Kl.test(e))return nc(t,e)}else if(e==="Infinity"||e==="NaN")return+e||(t.s=NaN),t.e=NaN,t.d=null,t;if(Kg.test(e))n=16,e=e.toLowerCase();else if(Ug.test(e))n=2;else if(zg.test(e))n=8;else throw Error(Hn+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,i=t.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=Vl(i,new i(n),o,o*2)),l=Ko(e,n,fn),h=l.length-1,o=h;l[o]===0;--o)l.pop();return o<0?new i(t.s*0):(t.e=Ho(l,h),t.d=l,fe=!1,s&&(t=Ee(t,r,a*4)),u&&(t=t.times(Math.abs(u)<54?kt(2,u):Nr.pow(2,u))),fe=!0,t)}function Zg(t,e){var n,i=e.d.length;if(i<3)return e.isZero()?e:Hi(t,2,e,e);n=1.4*Math.sqrt(i),n=n>16?16:n|0,e=e.times(1/Zo(5,n)),e=Hi(t,2,e,e);for(var r,o=new t(5),s=new t(16),a=new t(20);n--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function Hi(t,e,n,i,r){var o,s,a,u,l=1,h=t.precision,w=Math.ceil(h/le);for(fe=!1,u=n.times(n),a=new t(i);;){if(s=Ee(a.times(u),new t(e++*e++),h,1),a=r?i.plus(s):i.minus(s),i=Ee(s.times(u),new t(e++*e++),h,1),s=a.plus(i),s.d[w]!==void 0){for(o=w;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=i,i=s,s=o,l++}return fe=!0,s.d.length=w+1,s}function Zo(t,e){for(var n=t;--e;)n*=t;return n}function Hl(t,e){var n,i=e.s<0,r=dn(t,t.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return Bn=i?4:1,e;if(n=e.divToInt(r),n.isZero())Bn=i?3:2;else{if(e=e.minus(n.times(r)),e.lte(o))return Bn=Nl(n)?i?2:3:i?4:1,e;Bn=Nl(n)?i?1:4:i?3:2}return e.minus(r).abs()}function ic(t,e,n,i){var r,o,s,a,u,l,h,w,v,T=t.constructor,I=n!==void 0;if(I?(Kt(n,1,Zn),i===void 0?i=T.rounding:Kt(i,0,8)):(n=T.precision,i=T.rounding),!t.isFinite())h=Wl(t);else{for(h=Tn(t),s=h.indexOf("."),I?(r=2,e==16?n=n*4-3:e==8&&(n=n*3-2)):r=e,s>=0&&(h=h.replace(".",""),v=new T(1),v.e=h.length-s,v.d=Ko(Tn(v),10,r),v.e=v.d.length),w=Ko(h,10,r),o=u=w.length;w[--u]==0;)w.pop();if(!w[0])h=I?"0p+0":"0";else{if(s<0?o--:(t=new T(t),t.d=w,t.e=o,t=Ee(t,v,n,i,0,r),w=t.d,o=t.e,l=ql),s=w[n],a=r/2,l=l||w[n+1]!==void 0,l=i<4?(s!==void 0||l)&&(i===0||i===(t.s<0?3:2)):s>a||s===a&&(i===4||l||i===6&&w[n-1]&1||i===(t.s<0?8:7)),w.length=n,l)for(;++w[--n]>r-1;)w[n]=0,n||(++o,w.unshift(1));for(u=w.length;!w[u-1];--u);for(s=0,h="";s<u;s++)h+=Ya.charAt(w[s]);if(I){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)h+="0";for(w=Ko(h,r,e),u=w.length;!w[u-1];--u);for(s=1,h="1.";s<u;s++)h+=Ya.charAt(w[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>u)for(o-=u;o--;)h+="0";else o<u&&(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 Fl(t,e){if(t.length>e)return t.length=e,!0}function Xg(t){return new this(t).abs()}function Jg(t){return new this(t).acos()}function Yg(t){return new this(t).acosh()}function Qg(t,e){return new this(t).plus(e)}function e_(t){return new this(t).asin()}function t_(t){return new this(t).asinh()}function n_(t){return new this(t).atan()}function i_(t){return new this(t).atanh()}function r_(t,e){t=new this(t),e=new this(e);var n,i=this.precision,r=this.rounding,o=i+4;return!t.s||!e.s?n=new this(NaN):!t.d&&!e.d?(n=dn(this,o,1).times(e.s>0?.25:.75),n.s=t.s):!e.d||t.isZero()?(n=e.s<0?dn(this,i,r):new this(0),n.s=t.s):!t.d||e.isZero()?(n=dn(this,o,1).times(.5),n.s=t.s):e.s<0?(this.precision=o,this.rounding=1,n=this.atan(Ee(t,e,o,1)),e=dn(this,o,1),this.precision=i,this.rounding=r,n=t.s<0?n.minus(e):n.plus(e)):n=this.atan(Ee(t,e,o,1)),n}function o_(t){return new this(t).cbrt()}function s_(t){return oe(t=new this(t),t.e+1,2)}function a_(t,e,n){return new this(t).clamp(e,n)}function c_(t){if(!t||typeof t!="object")throw Error(Wo+"Object expected");var e,n,i,r=t.defaults===!0,o=["precision",1,Zn,"rounding",0,8,"toExpNeg",-Wi,0,"toExpPos",0,Wi,"maxE",0,Wi,"minE",-Wi,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(n=o[e],r&&(this[n]=Qa[n]),(i=t[n])!==void 0)if(jt(i)===i&&i>=o[e+1]&&i<=o[e+2])this[n]=i;else throw Error(Hn+n+": "+i);if(n="crypto",r&&(this[n]=Qa[n]),(i=t[n])!==void 0)if(i===!0||i===!1||i===0||i===1)if(i)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[n]=!0;else throw Error($l);else this[n]=!1;else throw Error(Hn+n+": "+i);return this}function u_(t){return new this(t).cos()}function l_(t){return new this(t).cosh()}function Zl(t){var e,n,i;function r(o){var s,a,u,l=this;if(!(l instanceof r))return new r(o);if(l.constructor=r,Rl(o)){l.s=o.s,fe?!o.d||o.e>r.maxE?(l.e=NaN,l.d=null):o.e<r.minE?(l.e=0,l.d=[0]):(l.e=o.e,l.d=o.d.slice()):(l.e=o.e,l.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){l.s=1/o<0?-1:1,l.e=0,l.d=[0];return}if(o<0?(o=-o,l.s=-1):l.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;fe?s>r.maxE?(l.e=NaN,l.d=null):s<r.minE?(l.e=0,l.d=[0]):(l.e=s,l.d=[o]):(l.e=s,l.d=[o]);return}else if(o*0!==0){o||(l.s=NaN),l.e=NaN,l.d=null;return}return nc(l,o.toString())}else if(u!=="string")throw Error(Hn+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),l.s=-1):(a===43&&(o=o.slice(1)),l.s=1),Kl.test(o)?nc(l,o):Hg(l,o)}if(r.prototype=z,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=c_,r.clone=Zl,r.isDecimal=Rl,r.abs=Xg,r.acos=Jg,r.acosh=Yg,r.add=Qg,r.asin=e_,r.asinh=t_,r.atan=n_,r.atanh=i_,r.atan2=r_,r.cbrt=o_,r.ceil=s_,r.clamp=a_,r.cos=u_,r.cosh=l_,r.div=d_,r.exp=f_,r.floor=h_,r.hypot=m_,r.ln=p_,r.log=g_,r.log10=y_,r.log2=__,r.max=w_,r.min=b_,r.mod=v_,r.mul=k_,r.pow=T_,r.random=C_,r.round=S_,r.sign=A_,r.sin=x_,r.sinh=I_,r.sqrt=O_,r.sub=P_,r.sum=D_,r.tan=E_,r.tanh=M_,r.trunc=B_,t===void 0&&(t={}),t&&t.defaults!==!0)for(i=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<i.length;)t.hasOwnProperty(n=i[e++])||(t[n]=this[n]);return r.config(t),r}function d_(t,e){return new this(t).div(e)}function f_(t){return new this(t).exp()}function h_(t){return oe(t=new this(t),t.e+1,3)}function m_(){var t,e,n=new this(0);for(fe=!1,t=0;t<arguments.length;)if(e=new this(arguments[t++]),e.d)n.d&&(n=n.plus(e.times(e)));else{if(e.s)return fe=!0,new this(1/0);n=e}return fe=!0,n.sqrt()}function Rl(t){return t instanceof Nr||t&&t.toStringTag===Ul||!1}function p_(t){return new this(t).ln()}function g_(t,e){return new this(t).log(e)}function __(t){return new this(t).log(2)}function y_(t){return new this(t).log(10)}function w_(){return Gl(this,arguments,"lt")}function b_(){return Gl(this,arguments,"gt")}function v_(t,e){return new this(t).mod(e)}function k_(t,e){return new this(t).mul(e)}function T_(t,e){return new this(t).pow(e)}function C_(t){var e,n,i,r,o=0,s=new this(1),a=[];if(t===void 0?t=this.precision:Kt(t,1,Zn),i=Math.ceil(t/le),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(i));o<i;)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(i*=4);o<i;)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=i/4}else throw Error($l);else for(;o<i;)a[o++]=Math.random()*1e7|0;for(i=a[--o],t%=le,i&&t&&(r=kt(10,le-t),a[o]=(i/r|0)*r);a[o]===0;o--)a.pop();if(o<0)n=0,a=[0];else{for(n=-1;a[0]===0;n-=le)a.shift();for(i=1,r=a[0];r>=10;r/=10)i++;i<le&&(n-=le-i)}return s.e=n,s.d=a,s}function S_(t){return oe(t=new this(t),t.e+1,this.rounding)}function A_(t){return t=new this(t),t.d?t.d[0]?t.s:0*t.s:t.s||NaN}function x_(t){return new this(t).sin()}function I_(t){return new this(t).sinh()}function O_(t){return new this(t).sqrt()}function P_(t,e){return new this(t).sub(e)}function D_(){var t=0,e=arguments,n=new this(e[t]);for(fe=!1;n.s&&++t<e.length;)n=n.plus(e[t]);return fe=!0,oe(n,this.precision,this.rounding)}function E_(t){return new this(t).tan()}function M_(t){return new this(t).tanh()}function B_(t){return oe(t=new this(t),t.e+1,1)}z[Symbol.for("nodejs.util.inspect.custom")]=z.toString;z[Symbol.toStringTag]="Decimal";var Nr=z.constructor=Zl(Qa);zo=new Nr(zo);Vo=new Nr(Vo);var N=Nr;var Gd=ge(ke(),1),Lr=ge(ke(),1);var ce=ge(ke(),1),Ie=ge(ke(),1),Zd=ge(ke(),1),ps=require("@mysten/sui.js/utils"),M0=ge(ke(),1),gc=ge(ke(),1),B0=ge(ke(),1);var wi=ge(ke(),1),qr=ge(ke(),1);var bi=require("@mysten/sui.js/transactions"),z0=require("@mysten/sui.js/utils"),V0=require("@mysten/sui.js/transactions"),Pt=ge(ke(),1),as=require("@mysten/sui.js/transactions"),yc=ge(ke(),1),vi=require("@mysten/sui.js/transactions"),of=require("@mysten/sui.js/utils"),Me=ge(ke(),1),cs=require("@mysten/sui.js/transactions"),Ht=ge(ke(),1),Ti=ge(vd(),1),sf=require("@mysten/sui.js/transactions"),ki=ge(ke(),1);var wc=require("@mysten/sui.js/transactions");var xd="3.7.7",U_=xd,Ji=typeof Buffer=="function",kd=typeof TextDecoder=="function"?new TextDecoder:void 0,Td=typeof TextEncoder=="function"?new TextEncoder:void 0,K_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Fr=Array.prototype.slice.call(K_),es=(t=>{let e={};return t.forEach((n,i)=>e[n]=i),e})(Fr),z_=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,It=String.fromCharCode.bind(String),Cd=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):t=>new Uint8Array(Array.prototype.slice.call(t,0)),Id=t=>t.replace(/=/g,"").replace(/[+\/]/g,e=>e=="+"?"-":"_"),Od=t=>t.replace(/[^A-Za-z0-9\+\/]/g,""),Pd=t=>{let e,n,i,r,o="",s=t.length%3;for(let a=0;a<t.length;){if((n=t.charCodeAt(a++))>255||(i=t.charCodeAt(a++))>255||(r=t.charCodeAt(a++))>255)throw new TypeError("invalid character found");e=n<<16|i<<8|r,o+=Fr[e>>18&63]+Fr[e>>12&63]+Fr[e>>6&63]+Fr[e&63]}return s?o.slice(0,s-3)+"===".substring(s):o},cc=typeof btoa=="function"?t=>btoa(t):Ji?t=>Buffer.from(t,"binary").toString("base64"):Pd,sc=Ji?t=>Buffer.from(t).toString("base64"):t=>{let n=[];for(let i=0,r=t.length;i<r;i+=4096)n.push(It.apply(null,t.subarray(i,i+4096)));return cc(n.join(""))},ts=(t,e=!1)=>e?Id(sc(t)):sc(t),V_=t=>{if(t.length<2){var e=t.charCodeAt(0);return e<128?t:e<2048?It(192|e>>>6)+It(128|e&63):It(224|e>>>12&15)+It(128|e>>>6&63)+It(128|e&63)}else{var e=65536+(t.charCodeAt(0)-55296)*1024+(t.charCodeAt(1)-56320);return It(240|e>>>18&7)+It(128|e>>>12&63)+It(128|e>>>6&63)+It(128|e&63)}},G_=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,Dd=t=>t.replace(G_,V_),Sd=Ji?t=>Buffer.from(t,"utf8").toString("base64"):Td?t=>sc(Td.encode(t)):t=>cc(Dd(t)),Xi=(t,e=!1)=>e?Id(Sd(t)):Sd(t),Ad=t=>Xi(t,!0),W_=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,H_=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),n=e-65536;return It((n>>>10)+55296)+It((n&1023)+56320);case 3:return It((15&t.charCodeAt(0))<<12|(63&t.charCodeAt(1))<<6|63&t.charCodeAt(2));default:return It((31&t.charCodeAt(0))<<6|63&t.charCodeAt(1))}},Ed=t=>t.replace(W_,H_),Md=t=>{if(t=t.replace(/\s+/g,""),!z_.test(t))throw new TypeError("malformed base64.");t+="==".slice(2-(t.length&3));let e,n="",i,r;for(let o=0;o<t.length;)e=es[t.charAt(o++)]<<18|es[t.charAt(o++)]<<12|(i=es[t.charAt(o++)])<<6|(r=es[t.charAt(o++)]),n+=i===64?It(e>>16&255):r===64?It(e>>16&255,e>>8&255):It(e>>16&255,e>>8&255,e&255);return n},uc=typeof atob=="function"?t=>atob(Od(t)):Ji?t=>Buffer.from(t,"base64").toString("binary"):Md,Bd=Ji?t=>Cd(Buffer.from(t,"base64")):t=>Cd(uc(t).split("").map(e=>e.charCodeAt(0))),jd=t=>Bd(Nd(t)),Z_=Ji?t=>Buffer.from(t,"base64").toString("utf8"):kd?t=>kd.decode(Bd(t)):t=>Ed(uc(t)),Nd=t=>Od(t.replace(/[-_]/g,e=>e=="-"?"+":"/")),ac=t=>Z_(Nd(t)),X_=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)},Fd=t=>({value:t,enumerable:!1,writable:!0,configurable:!0}),Rd=function(){let t=(e,n)=>Object.defineProperty(String.prototype,e,Fd(n));t("fromBase64",function(){return ac(this)}),t("toBase64",function(e){return Xi(this,e)}),t("toBase64URI",function(){return Xi(this,!0)}),t("toBase64URL",function(){return Xi(this,!0)}),t("toUint8Array",function(){return jd(this)})},qd=function(){let t=(e,n)=>Object.defineProperty(Uint8Array.prototype,e,Fd(n));t("toBase64",function(e){return ts(this,e)}),t("toBase64URI",function(){return ts(this,!0)}),t("toBase64URL",function(){return ts(this,!0)})},J_=()=>{Rd(),qd()},Yi={version:xd,VERSION:U_,atob:uc,atobPolyfill:Md,btoa:cc,btoaPolyfill:Pd,fromBase64:ac,toBase64:Xi,encode:Xi,encodeURI:Ad,encodeURL:Ad,utob:Dd,btou:Ed,decode:ac,isValid:X_,fromUint8Array:ts,toUint8Array:jd,extendString:Rd,extendUint8Array:qd,extendBuiltins:J_};var bc=require("@mysten/sui.js/transactions"),af=require("@mysten/sui.js/utils"),hn=ge(ke(),1);var ns,Y_=new Uint8Array(16);function lc(){if(!ns&&(ns=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!ns))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return ns(Y_)}var Ot=[];for(let t=0;t<256;++t)Ot.push((t+256).toString(16).slice(1));function Ld(t,e=0){return Ot[t[e+0]]+Ot[t[e+1]]+Ot[t[e+2]]+Ot[t[e+3]]+"-"+Ot[t[e+4]]+Ot[t[e+5]]+"-"+Ot[t[e+6]]+Ot[t[e+7]]+"-"+Ot[t[e+8]]+Ot[t[e+9]]+"-"+Ot[t[e+10]]+Ot[t[e+11]]+Ot[t[e+12]]+Ot[t[e+13]]+Ot[t[e+14]]+Ot[t[e+15]]}var Q_=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),dc={randomUUID:Q_};function e0(t,e,n){if(dc.randomUUID&&!e&&!t)return dc.randomUUID();t=t||{};let i=t.random||(t.rng||lc)();if(i[6]=i[6]&15|64,i[8]=i[8]&63|128,e){n=n||0;for(let r=0;r<16;++r)e[n+r]=i[r];return e}return Ld(i)}var is=e0;var us=require("@mysten/sui.js/utils"),cf=require("@mysten/sui.js/transactions"),uf=require("@mysten/sui.js/client"),lf=require("@mysten/sui.js/bcs");var t0=Object.defineProperty,n0=(t,e,n)=>e in t?t0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,i0=(t,e,n)=>(n0(t,typeof e!="symbol"?e+"":e,n),n),Ue=5*60*1e3,X=24*60*60*1e3;function he(t){return Date.parse(new Date().toString())+t}var Be=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)}};N.config({precision:64,rounding:N.ROUND_DOWN,toExpNeg:-64,toExpPos:64});var Dt=N,J=class extends Error{message;errorCode;constructor(t,e){super(t),this.message=t,this.errorCode=e}static isClmmpoolsErrorCode(t,e){return t instanceof J&&t.errorCode===e}},ie=new wt.default(0),Cn=new wt.default(1),fs=new wt.default(2),Ok=fs.pow(new wt.default(128)),ir=fs.pow(new wt.default(64)).sub(Cn),s0=fs.pow(new wt.default(128)).sub(Cn),Te=class{static toX64_BN(t){return t.mul(new wt.default(2).pow(new wt.default(64)))}static toX64_Decimal(t){return t.mul(Dt.pow(2,64))}static toX64(t){return new wt.default(t.mul(Dt.pow(2,64)).floor().toFixed())}static fromX64(t){return new Dt(t.toString()).mul(Dt.pow(2,-64))}static fromX64_Decimal(t){return t.mul(Dt.pow(2,-64))}static fromX64_BN(t){return t.div(new wt.default(2).pow(new wt.default(64)))}static shiftRightRoundUp(t){let e=t.shrn(64);return t.mod(ir).gt(ie)&&(e=e.add(Cn)),e}static divRoundUp(t,e){return t.mod(e).eq(ie)?t.div(e):t.div(e).add(new wt.default(1))}static subUnderflowU128(t,e){return t.lt(e)?t.sub(e).add(s0):t.sub(e)}static checkUnsignedSub(t,e){let n=t.sub(e);if(n.isNeg())throw new J("Unsigned integer sub overflow","UnsignedIntegerOverflow");return n}static checkMul(t,e,n){let i=t.mul(e);if(this.isOverflow(i,n))throw new J("Multiplication overflow","MultiplicationOverflow");return i}static checkMulDivFloor(t,e,n,i){if(n.eq(ie))throw new J("Devide by zero","DivideByZero");let r=t.mul(e).div(n);if(this.isOverflow(r,i))throw new J("Multiplication div overflow","MulDivOverflow");return r}static checkMulDivCeil(t,e,n,i){if(n.eq(ie))throw new J("Devide by zero","DivideByZero");let r=t.mul(e).add(n.sub(Cn)).div(n);if(this.isOverflow(r,i))throw new J("Multiplication div overflow","MulDivOverflow");return r}static checkMulDivRound(t,e,n,i){if(n.eq(ie))throw new J("Devide by zero","DivideByZero");let r=t.mul(e.add(n.shrn(1))).div(n);if(this.isOverflow(r,i))throw new J("Multiplication div overflow","MulDivOverflow");return r}static checkMulShiftRight(t,e,n,i){let r=t.mul(e).div(new wt.default(2).pow(new wt.default(n)));if(this.isOverflow(r,i))throw new J("Multiplication shift right overflow","MulShiftRightOverflow");return r}static checkMulShiftRight64RoundUpIf(t,e,n,i){let r=t.mul(e),s=i&&r.and(ir).gt(ie)?r.shrn(64).add(Cn):r.shrn(64);if(this.isOverflow(s,n))throw new J("Multiplication shift right overflow","MulShiftRightOverflow");return s}static checkMulShiftLeft(t,e,n,i){let r=t.mul(e).shln(n);if(this.isOverflow(r,i))throw new J("Multiplication shift left overflow","MulShiftLeftOverflow");return r}static checkDivRoundUpIf(t,e,n){if(e.eq(ie))throw new J("Devide by zero","DivideByZero");return n?this.divRoundUp(t,e):t.div(e)}static isOverflow(t,e){return t.gte(fs.pow(new wt.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(ie)?t:this.u128_neg(t.subn(1))}static u128_neg(t){return t.uxor(new wt.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 wt.default(1)))}static neg_from(t){return t.eq(ie)?t:this.u128_neg(t).add(new wt.default(1)).or(new wt.default(1).shln(127))}};function a0(t){return{coinA:t.coinTypeA,coinB:t.coinTypeB,currentSqrtPrice:new Xn.default(t.current_sqrt_price),currentTickIndex:t.current_tick_index,feeGrowthGlobalA:new Xn.default(t.fee_growth_global_a),feeGrowthGlobalB:new Xn.default(t.fee_growth_global_b),feeProtocolCoinA:new Xn.default(t.fee_protocol_coin_a),feeProtocolCoinB:new Xn.default(t.fee_protocol_coin_b),feeRate:new Xn.default(t.fee_rate),liquidity:new Xn.default(t.liquidity),tickIndexes:[],tickSpacing:Number(t.tickSpacing),ticks:[],collection_name:""}}var Wd=443636,Hd=-443636,hs="79226673515401279992447579055";var ms="4295048016",tr=new Gd.default(1e6),G="0x0000000000000000000000000000000000000000000000000000000000000006",c0="partner",nr="pool_script",jn="pool_script_v2",Jn="router",fc="router_with_partner",zt="fetcher_script",u0="expect_swap",$d="utils";var hc="custodian_v2",l0="clob_v2",d0="endpoints_v2";var vc=(t=>(t.Deleted="Deleted",t.Exists="Exists",t.NotExists="NotExists",t))(vc||{});function D(t){if(t.config===void 0)throw new J(`package: ${t.package_id} not config in sdk SdkOptions`,"InvalidConfig");return t.config}var f0=14,h0="59543866431248",m0="184467440737095516",p0="15793534762490258745",g0=443636;function _0(t,e,n){let i=t.toTwos(n).shln(e);return i.imaskn(n+1),i.fromTwos(n)}function _e(t,e,n){let i=t.toTwos(n).shrn(e);return i.imaskn(n-e+1),i.fromTwos(n-e)}function y0(t){let e;return t&1?e=new ce.default("79232123823359799118286999567"):e=new ce.default("79228162514264337593543950336"),t&2&&(e=_e(e.mul(new ce.default("79236085330515764027303304731")),96,256)),t&4&&(e=_e(e.mul(new ce.default("79244008939048815603706035061")),96,256)),t&8&&(e=_e(e.mul(new ce.default("79259858533276714757314932305")),96,256)),t&16&&(e=_e(e.mul(new ce.default("79291567232598584799939703904")),96,256)),t&32&&(e=_e(e.mul(new ce.default("79355022692464371645785046466")),96,256)),t&64&&(e=_e(e.mul(new ce.default("79482085999252804386437311141")),96,256)),t&128&&(e=_e(e.mul(new ce.default("79736823300114093921829183326")),96,256)),t&256&&(e=_e(e.mul(new ce.default("80248749790819932309965073892")),96,256)),t&512&&(e=_e(e.mul(new ce.default("81282483887344747381513967011")),96,256)),t&1024&&(e=_e(e.mul(new ce.default("83390072131320151908154831281")),96,256)),t&2048&&(e=_e(e.mul(new ce.default("87770609709833776024991924138")),96,256)),t&4096&&(e=_e(e.mul(new ce.default("97234110755111693312479820773")),96,256)),t&8192&&(e=_e(e.mul(new ce.default("119332217159966728226237229890")),96,256)),t&16384&&(e=_e(e.mul(new ce.default("179736315981702064433883588727")),96,256)),t&32768&&(e=_e(e.mul(new ce.default("407748233172238350107850275304")),96,256)),t&65536&&(e=_e(e.mul(new ce.default("2098478828474011932436660412517")),96,256)),t&131072&&(e=_e(e.mul(new ce.default("55581415166113811149459800483533")),96,256)),t&262144&&(e=_e(e.mul(new ce.default("38992368544603139932233054999993551")),96,256)),_e(e,32,256)}function w0(t){let e=Math.abs(t),n;return e&1?n=new ce.default("18445821805675392311"):n=new ce.default("18446744073709551616"),e&2&&(n=_e(n.mul(new ce.default("18444899583751176498")),64,256)),e&4&&(n=_e(n.mul(new ce.default("18443055278223354162")),64,256)),e&8&&(n=_e(n.mul(new ce.default("18439367220385604838")),64,256)),e&16&&(n=_e(n.mul(new ce.default("18431993317065449817")),64,256)),e&32&&(n=_e(n.mul(new ce.default("18417254355718160513")),64,256)),e&64&&(n=_e(n.mul(new ce.default("18387811781193591352")),64,256)),e&128&&(n=_e(n.mul(new ce.default("18329067761203520168")),64,256)),e&256&&(n=_e(n.mul(new ce.default("18212142134806087854")),64,256)),e&512&&(n=_e(n.mul(new ce.default("17980523815641551639")),64,256)),e&1024&&(n=_e(n.mul(new ce.default("17526086738831147013")),64,256)),e&2048&&(n=_e(n.mul(new ce.default("16651378430235024244")),64,256)),e&4096&&(n=_e(n.mul(new ce.default("15030750278693429944")),64,256)),e&8192&&(n=_e(n.mul(new ce.default("12247334978882834399")),64,256)),e&16384&&(n=_e(n.mul(new ce.default("8131365268884726200")),64,256)),e&32768&&(n=_e(n.mul(new ce.default("3584323654723342297")),64,256)),e&65536&&(n=_e(n.mul(new ce.default("696457651847595233")),64,256)),e&131072&&(n=_e(n.mul(new ce.default("26294789957452057")),64,256)),e&262144&&(n=_e(n.mul(new ce.default("37481735321082")),64,256)),n}var ee=class{static priceToSqrtPriceX64(t,e,n){return Te.toX64(t.mul(Dt.pow(10,n-e)).sqrt())}static sqrtPriceX64ToPrice(t,e,n){return Te.fromX64(t).pow(2).mul(Dt.pow(10,e-n))}static tickIndexToSqrtPriceX64(t){return t>0?new ce.default(y0(t)):new ce.default(w0(t))}static sqrtPriceX64ToTickIndex(t){if(t.gt(new ce.default(hs))||t.lt(new ce.default(ms)))throw new J("Provided sqrtPrice is not within the supported sqrtPrice range.","InvalidSqrtPrice");let e=t.bitLength()-1,n=new ce.default(e-64),i=_0(n,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<f0;){a=a.mul(a);let I=a.shrn(127);a=a.shrn(63+I.toNumber()),s=s.add(r.mul(I)),r=r.shrn(1),o+=1}let u=s.shrn(32),h=i.add(u).mul(new ce.default(h0)),w=_e(h.sub(new ce.default(m0)),64,128).toNumber(),v=_e(h.add(new ce.default(p0)),64,128).toNumber();return w===v?w:ee.tickIndexToSqrtPriceX64(v).lte(t)?v:w}static tickIndexToPrice(t,e,n){return ee.sqrtPriceX64ToPrice(ee.tickIndexToSqrtPriceX64(t),e,n)}static priceToTickIndex(t,e,n){return ee.sqrtPriceX64ToTickIndex(ee.priceToSqrtPriceX64(t,e,n))}static priceToInitializableTickIndex(t,e,n,i){return ee.getInitializableTickIndex(ee.priceToTickIndex(t,e,n),i)}static getInitializableTickIndex(t,e){return t-t%e}static getNextInitializableTickIndex(t,e){return ee.getInitializableTickIndex(t,e)+e}static getPrevInitializableTickIndex(t,e){return ee.getInitializableTickIndex(t,e)-e}};function b0(t){return S(t).add(S(g0))}var Dk=new Lr.default(365),Ek=new Lr.default(24),Mk=new Lr.default(3600),Bk=new Lr.default(.5);var mn=class{static getDefaultSqrtPriceLimit(t){return new Zd.default(t?ms:hs)}static getDefaultOtherAmountThreshold(t){return t?ie:ir}};function Xd(t,e,n,i){if(n.eq(ie))return t;let r=Te.checkMulShiftLeft(t,e,64,256),o=e.shln(64),s=Te.checkMul(t,n,256);if(!i&&o.lte(s))throw new J("getNextSqrtPriceAUp - Unable to divide liquidityShl64 by product","DivideByZero");let a=i?Te.checkDivRoundUpIf(r,o.add(s),!0):Te.checkDivRoundUpIf(r,o.sub(s),!0);if(a.lt(new Ie.default(ms)))throw new J("getNextSqrtPriceAUp - Next sqrt price less than min sqrt price","CoinAmountMinSubceeded ");if(a.gt(new Ie.default(hs)))throw new J("getNextSqrtPriceAUp - Next sqrt price greater than max sqrt price","CoinAmountMaxExceeded");return a}function Jd(t,e,n,i){let r=Te.checkDivRoundUpIf(n.shln(64),e,!i),o=i?t.add(r):t.sub(r);if(o.lt(new Ie.default(ms))||o.gt(new Ie.default(hs)))throw new J("getNextSqrtPriceAUp - Next sqrt price out of bounds","SqrtPriceOutOfBounds");return o}function v0(t,e,n,i){return i?Xd(t,e,n,!0):Jd(t,e,n,!0)}function k0(t,e,n,i){return i?Jd(t,e,n,!1):Xd(t,e,n,!1)}function Ud(t,e,n,i){let r=t.gt(e)?t.sub(e):e.sub(t);if(n.lte(ie)||r.eq(ie))return ie;let o;if(i){let s=new Ie.default(n).mul(new Ie.default(r)).shln(64),a=e.mul(t),u=s.div(a);o=s.mod(a).eq(ie)?u:u.add(Cn)}else{let s=new Ie.default(n).mul(new Ie.default(r));o=s.and(ir).gt(ie)?s.shrn(64).add(Cn):s.shrn(64)}return o}function Kd(t,e,n,i){let r=t.gt(e)?t.sub(e):e.sub(t);if(n.lte(ie)||r.eq(ie))return ie;let o;if(i)o=n.mul(r).shrn(64);else{let s=n.mul(r).shln(64),a=e.mul(t);o=s.div(a)}return o}function T0(t,e,n,i,r,o){if(n===ie)return{amountIn:ie,amountOut:ie,nextSqrtPrice:e,feeAmount:ie};let s=t.gte(e),a,u,l,h;if(o){let w=Te.checkMulDivFloor(i,Te.checkUnsignedSub(tr,r),tr,64),v=Ud(t,e,n,s);v.gt(w)?(a=w,h=Te.checkUnsignedSub(i,w),l=v0(t,n,w,s)):(a=v,h=Te.checkMulDivCeil(a,r,tr.sub(r),64),l=e),u=Kd(t,l,n,s)}else{let w=Kd(t,e,n,s);w.gt(i)?(u=i,l=k0(t,n,i,s)):(u=w,l=e),a=Ud(t,l,n,s),h=Te.checkMulDivCeil(a,r,tr.sub(r),64)}return{amountIn:a,amountOut:u,nextSqrtPrice:l,feeAmount:h}}function C0(t,e,n,i,r){let o=n,s=i.liquidity,{currentSqrtPrice:a}=i,u={amountIn:ie,amountOut:ie,feeAmount:ie,refAmount:ie,nextSqrtPrice:ie,crossTickNum:0},l,h,w=mn.getDefaultSqrtPriceLimit(t);for(let v of r){if(t&&i.currentTickIndex<v.index||!t&&i.currentTickIndex>=v.index||v===null)continue;t&&w.gt(v.sqrtPrice)||!t&&w.lt(v.sqrtPrice)?l=w:l=v.sqrtPrice;let T=T0(a,l,s,o,i.feeRate,e);if(T.amountIn.eq(ie)||(o=e?o.sub(T.amountIn.add(T.feeAmount)):o.sub(T.amountOut)),u.amountIn=u.amountIn.add(T.amountIn),u.amountOut=u.amountOut.add(T.amountOut),u.feeAmount=u.feeAmount.add(T.feeAmount),T.nextSqrtPrice.eq(v.sqrtPrice)?(h=v.liquidityNet.mul(new Ie.default(-1)),t?Te.is_neg(h)?s=s.add(new Ie.default(Tt(BigInt(h.toString()),128))):s=s.add(h):Te.is_neg(h)?s=s.sub(new Ie.default(Tt(BigInt(h.toString()),128))):s=s.sub(h),a=v.sqrtPrice):a=T.nextSqrtPrice,u.crossTickNum+=1,o.eq(ie))break}return u.amountIn=u.amountIn.add(u.feeAmount),u.nextSqrtPrice=a,u}function rs(t,e,n){let i=Ie.default.min(t,e),r=Ie.default.max(t,e),o=Te.fromX64_BN(n.mul(r).mul(i)),s=r.sub(i);return o.div(s)}function os(t,e,n){let i=Ie.default.min(t,e),o=Ie.default.max(t,e).sub(i);return n.shln(64).div(o)}var $e=class{static updateFeeRate(t,e,n,i,r){let o=Te.checkMulDivCeil(e,new Ie.default(i),tr,64),s=n===0?ie:Te.checkMulDivFloor(e,new Ie.default(n),tr,64),a=e.mul(o).mul(s);if(r?t.feeProtocolCoinA=t.feeProtocolCoinA.add(o):t.feeProtocolCoinB=t.feeProtocolCoinB.add(o),a.eq(ie)||t.liquidity.eq(ie))return{refFee:s,clmm:t};let u=a.shln(64).div(t.liquidity);return r?t.feeGrowthGlobalA=t.feeGrowthGlobalA.add(u):t.feeGrowthGlobalB=t.feeGrowthGlobalB.add(u),{refFee:s,clmm:t}}static getCoinAmountFromLiquidity(t,e,n,i,r){let o=new Dt(t.toString()),s=new Dt(e.toString()),a=new Dt(n.toString()),u=new Dt(i.toString()),l,h;return e.lt(n)?(l=Te.toX64_Decimal(o).mul(u.sub(a)).div(a.mul(u)),h=new Dt(0)):e.lt(i)?(l=Te.toX64_Decimal(o).mul(u.sub(s)).div(s.mul(u)),h=Te.fromX64_Decimal(o.mul(s.sub(a)))):(l=new Dt(0),h=Te.fromX64_Decimal(o.mul(u.sub(a)))),r?{coinA:new Ie.default(l.ceil().toString()),coinB:new Ie.default(h.ceil().toString())}:{coinA:new Ie.default(l.floor().toString()),coinB:new Ie.default(h.floor().toString())}}static estLiquidityAndcoinAmountFromOneAmounts(t,e,n,i,r,o,s){let a=ee.sqrtPriceX64ToTickIndex(s),u=ee.tickIndexToSqrtPriceX64(t),l=ee.tickIndexToSqrtPriceX64(e),h;if(a<t){if(!i)throw new J("lower tick cannot calculate liquidity by coinB","NotSupportedThisCoin");h=rs(u,l,n)}else if(a>e){if(i)throw new J("upper tick cannot calculate liquidity by coinA","NotSupportedThisCoin");h=os(l,u,n)}else i?h=rs(s,l,n):h=os(s,u,n);let w=$e.getCoinAmountFromLiquidity(h,s,u,l,r),v=r?S(w.coinA.toString()).mul(1+o).toString():S(w.coinA.toString()).mul(1-o).toString(),T=r?S(w.coinB.toString()).mul(1+o).toString():S(w.coinB.toString()).mul(1-o).toString();return{coinAmountA:w.coinA,coinAmountB:w.coinB,tokenMaxA:r?new Ie.default(Dt.ceil(v).toString()):new Ie.default(Dt.floor(v).toString()),tokenMaxB:r?new Ie.default(Dt.ceil(T).toString()):new Ie.default(Dt.floor(T).toString()),liquidityAmount:h,fix_amount_a:i}}static estimateLiquidityFromcoinAmounts(t,e,n,i){if(e>n)throw new J("lower tick cannot be greater than lower tick","InvalidTwoTickIndex");let r=ee.sqrtPriceX64ToTickIndex(t),o=ee.tickIndexToSqrtPriceX64(e),s=ee.tickIndexToSqrtPriceX64(n);if(r<e)return rs(o,s,i.coinA);if(r>=n)return os(s,o,i.coinB);let a=rs(t,s,i.coinA),u=os(t,o,i.coinB);return Ie.default.min(a,u)}static estCoinAmountsFromTotalAmount(t,e,n,i,r,o){let{ratioA:s,ratioB:a}=$e.calculateDepositRatioFixTokenA(t,e,n),u=S(i).mul(s).div(r),l=S(i).mul(a).div(o);return{amountA:u,amountB:l}}static calculateDepositRatioFixTokenA(t,e,n){let i=new Ie.default(1e8),{coinAmountB:r}=$e.estLiquidityAndcoinAmountFromOneAmounts(t,e,i,!0,!0,0,n),o=ee.sqrtPriceX64ToPrice(n,0,0),s=S(i.toString()).mul(o),a=s.add(r.toString()),u=s.div(a),l=S(r.toString()).div(a);return{ratioA:u,ratioB:l}}};function kc(t){return t.startsWith("0x")?`${t.slice(2)}`:t}var S0=0,Yd=1,A0=2;function zd(t,e){return t===e?S0:t<e?Yd:A0}function x0(t,e){let n=0,i=t.length<=e.length?t.length:e.length,r=zd(t.length,e.length);for(;n<i;){let o=zd(t.charCodeAt(n),e.charCodeAt(n));if(n+=1,o!==0)return o}return r}function ls(t,e){return x0(t,e)===Yd}function rr(t,...e){let n=Array.isArray(e[e.length-1])?e.pop():[],r=[t,...e].filter(Boolean).join("::");return n&&n.length&&(r+=`<${n.join(", ")}>`),r}function q(t){try{let e=t.replace(/\s/g,""),i=e.match(/(<.+>)$/)?.[0]?.match(/(\w+::\w+::\w+)(?:<.*?>(?!>))?/g);if(i){e=e.slice(0,e.indexOf("<"));let u={...q(e),type_arguments:i.map(l=>q(l).source_address)};return u.type_arguments=u.type_arguments.map(l=>we.isSuiCoin(l)?l:q(l).source_address),u.source_address=rr(u.full_address,u.type_arguments),u}let r=e.split("::"),s={full_address:e,address:e===$r||e===E0?"0x2":(0,ps.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=rr(s.full_address,s.type_arguments),s}catch{return{full_address:t,address:"",module:"",name:"",type_arguments:[],source_address:t}}}function Et(t){return q(t).source_address}function I0(t){return t.toLowerCase().startsWith("0x")?(0,ps.normalizeSuiObjectId)(t):t}var O0=(t,e=!0)=>{let n=t.split("::"),i=n.shift(),r=(0,ps.normalizeSuiObjectId)(i);return e&&(r=kc(r)),`${r}::${n.join("::")}`};function gs(t){for(let e in t){let n=typeof t[e];if(n==="object")gs(t[e]);else if(n==="string"){let i=t[e];i&&!i.includes("::")&&(t[e]=I0(i))}}}var P0="0x2::coin::Coin",D0=/^0x2::coin::Coin<(.+)>$/;var $r="0x2::sui::SUI",E0="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI";var we=class{static getCoinTypeArg(t){let e=t.type.match(D0);return e?e[1]:null}static isSUI(t){let e=we.getCoinTypeArg(t);return e?we.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 n=BigInt(0);return t.forEach(i=>{e===i.coinAddress&&(n+=BigInt(i.balance))}),n}static getID(t){return t.fields.id.id}static getCoinTypeFromArg(t){return`${P0}<${t}>`}static getFaucetCoins(t){let{events:e}=t,n=[];return e?.forEach(i=>{let{type:r}=i;if(q(r).name==="InitEvent"){let o=i.parsedJson;n.push({transactionModule:i.transactionModule,suplyID:o.suplyID,decimals:o.decimals})}}),n}static getCoinAssets(t,e){let n=[];return e.forEach(i=>{Et(i.coinAddress)===Et(t)&&n.push(i)}),n}static isSuiCoin(t){return q(t).full_address===$r}static selectCoinObjectIdGreaterThanOrEqual(t,e,n=[]){let i=we.selectCoinAssetGreaterThanOrEqual(t,e,n),r=i.selectedCoins.map(a=>a.coinObjectId),o=i.remainingCoins,s=i.selectedCoins.map(a=>a.balance.toString());return{objectArray:r,remainCoins:o,amountArray:s}}static selectCoinAssetGreaterThanOrEqual(t,e,n=[]){let i=we.sortByBalance(t.filter(u=>!n.includes(u.coinObjectId))),r=we.calculateTotalBalance(i);if(r<e)return{selectedCoins:[],remainingCoins:i};if(r===e)return{selectedCoins:i,remainingCoins:[]};let o=BigInt(0),s=[],a=[...i];for(;o<r;){let u=e-o,l=a.findIndex(w=>w.balance>=u);if(l!==-1){s.push(a[l]),a.splice(l,1);break}let h=a.pop();h.balance>0&&(s.push(h),o+=h.balance)}return{selectedCoins:we.sortByBalance(s),remainingCoins:we.sortByBalance(a)}}static sortByBalance(t){return t.sort((e,n)=>e.balance<n.balance?-1:e.balance>n.balance?1:0)}static sortByBalanceDes(t){return t.sort((e,n)=>e.balance>n.balance?-1:e.balance<n.balance?0:1)}static calculateTotalBalance(t){return t.reduce((e,n)=>e+n.balance,BigInt(0))}};var or=class{numerator;denominator;constructor(t,e){this.toString=()=>`${this.numerator.toString()}/${this.denominator.toString()}`,this.numerator=t,this.denominator=e}static fromDecimal(t){return or.fromFraction(t.toDecimalPlaces(1).mul(10).toNumber(),1e3)}static fromFraction(t,e){let n=typeof t=="number"?new gc.default(t.toString()):t,i=typeof e=="number"?new gc.default(e.toString()):e;return new or(n,i)}};function _c(t,{numerator:e,denominator:n},i){return i?t.mul(n.add(e)).div(n):t.mul(n).div(n.add(e))}function _s(t,e,n){return{tokenMaxA:_c(t.coinA,e,n),tokenMaxB:_c(t.coinB,e,n)}}function S(t){return N.isDecimal(t)?t:new N(t===void 0?0:t)}function j0(t){return S(10).pow(S(t).abs())}function Ur(t){return t.data}function Qd(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 ef(t){if(t.error&&"object_id"in t.error&&!("version"in t.error)&&!("digest"in t.error))return t.error.object_id}function N0(t){if("reference"in t)return t.reference;let e=Ur(t);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:Qd(t)}function Lt(t){return"objectId"in t?t.objectId:N0(t)?.objectId??ef(t)}function F0(t){return t.data!==void 0}function R0(t){return t.content!==void 0}function tf(t){let e="data"in t?Ur(t):t;if(!(!e||!R0(e)||e.content.dataType!=="moveObject"))return e.content}function Mt(t){return tf(t)?.type}function pn(t){let e=F0(t)?t.data:t;return!e?.type&&"data"in t?e?.content?.dataType==="package"?"package":Mt(t):e?.type}function Ci(t){return Ur(t)?.previousTransaction}function sr(t){return Ur(t)?.owner}function q0(t){let e=Ur(t)?.display;return e||{data:null,error:null}}function Q(t){let e=tf(t)?.fields;if(e)return"fields"in e?e.fields:e}function nf(t,e){let n=j0(S(e));return Number(S(t).mul(n))}function Tt(t,e=32){return BigInt.asUintN(e,BigInt(t)).toString()}function Re(t,e=32){return Number(BigInt.asIntN(e,BigInt(t)))}function L0(t,e,n){let i=q(t).name,r=q(e).name;return`${i}-${r}[${n}]`}function mc(t){let e=Mt(t),n=q(e),i=Q(t);if(i==null)throw new J(`Pool id ${Lt(t)} not exists.`,"InvalidPoolObject");let r=[];i.rewarder_manager.fields.rewarders.forEach(s=>{let{emissions_per_second:a}=s.fields,u=Te.fromX64(new rn.default(a)),l=Math.floor(u.toNumber()*60*60*24);r.push({emissions_per_second:a,coinAddress:q(s.fields.reward_coin.fields.name).source_address,growth_global:s.fields.growth_global,emissionsEveryDay:l})});let o={poolAddress:Lt(t),poolType:e,coinTypeA:n.type_arguments[0],coinTypeB:n.type_arguments[1],coinAmountA:i.coin_a,coinAmountB:i.coin_b,current_sqrt_price:i.current_sqrt_price,current_tick_index:Re(BigInt(i.current_tick_index.fields.bits)),fee_growth_global_a:i.fee_growth_global_a,fee_growth_global_b:i.fee_growth_global_b,fee_protocol_coin_a:i.fee_protocol_coin_a,fee_protocol_coin_b:i.fee_protocol_coin_b,fee_rate:i.fee_rate,is_pause:i.is_pause,liquidity:i.liquidity,position_manager:{positions_handle:i.position_manager.fields.positions.fields.id.id,size:i.position_manager.fields.positions.fields.size},rewarder_infos:r,rewarder_last_updated_time:i.rewarder_manager.fields.last_updated_time,tickSpacing:i.tick_spacing,ticks_handle:i.tick_manager.fields.ticks.fields.id.id,uri:i.url,index:Number(i.index),name:""};return o.name=L0(o.coinTypeA,o.coinTypeB,o.tickSpacing),o}function Si(t){let e=q0(t).data,n={creator:"",description:"",image_url:"",link:"",name:"",project_url:""};return e&&(n.creator=e.creator,n.description=e.description,n.image_url=e.image_url,n.link=e.link,n.name=e.name,n.project_url=e.project_url),n}function Nn(t){if(t.error!=null||t.data?.content?.dataType!=="moveObject")throw new J(`Position not exists. Get Position error:${t.error}`,"InvalidPositionObject");let e={creator:"",description:"",image_url:"",link:"",name:"",project_url:""},n={...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"},i=Q(t);if(i){let s=Mt(t),a=sr(t);"nft"in i?(i=i.nft.fields,e.description=i.description,e.name=i.name,e.link=i.url):e=Si(t),n={...e,pos_object_id:i.id.id,owner:a.AddressOwner,type:s,coin_type_a:i.coin_type_a.fields.name,coin_type_b:i.coin_type_b.fields.name,liquidity:i.liquidity,tick_lower_index:Re(BigInt(i.tick_lower_index.fields.bits)),tick_upper_index:Re(BigInt(i.tick_upper_index.fields.bits)),index:i.index,pool:i.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=Qd(t);r&&(n.pos_object_id=r.objectId,n.position_status="Deleted");let o=ef(t);return o&&(n.pos_object_id=o,n.position_status="NotExists"),n}function rf(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:u}="fields"in o?o.fields:o;s===0?(e.reward_amount_owed_0=a,e.reward_growth_inside_0=u):s===1?(e.reward_amount_owed_1=a,e.reward_growth_inside_1=u):s===2&&(e.reward_amount_owed_2=a,e.reward_growth_inside_2=u)});let n="fields"in t.tick_lower_index?t.tick_lower_index.fields.bits:t.tick_lower_index.bits,i="fields"in t.tick_upper_index?t.tick_upper_index.fields.bits:t.tick_upper_index.bits;return{liquidity:t.liquidity,tick_lower_index:Re(BigInt(n)),tick_upper_index:Re(BigInt(i)),...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 pc(t){if(t.error!=null||t.data?.content?.dataType!=="moveObject")throw new J(`Tick not exists. Get tick data error:${t.error}`,"InvalidTickObject");let n=Q(t).value.fields.value.fields;return{objectId:Lt(t),index:Re(BigInt(n.index.fields.bits)),sqrtPrice:new rn.default(n.sqrt_price),liquidityNet:new rn.default(n.liquidity_net.fields.bits),liquidityGross:new rn.default(n.liquidity_gross),feeGrowthOutsideA:new rn.default(n.fee_growth_outside_a),feeGrowthOutsideB:new rn.default(n.fee_growth_outside_b),rewardersGrowthOutside:n.rewards_growth_outside}}function $0(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 J("Invalid tick fields.","InvalidTickFields");let e=Re(BigInt(t.index.bits)),n=new rn.default(t.sqrt_price),i=new rn.default(t.liquidity_net.bits),r=new rn.default(t.liquidity_gross),o=new rn.default(t.fee_growth_outside_a),s=new rn.default(t.fee_growth_outside_b),a=t.rewards_growth_outside||[];return{objectId:"",index:e,sqrtPrice:n,liquidityNet:i,liquidityGross:r,feeGrowthOutsideA:o,feeGrowthOutsideB:s,rewardersGrowthOutside:a}}function U0(t,e,n,i,r,o){let s=t.rewarder_infos,a=[];for(let u=0;u<s.length;u+=1){let l=o[u];e!==null&&(t.current_tick_index<i?l=o[u].sub(new wi.default(e.rewardersGrowthOutside[u])):l=e.rewardersGrowthOutside[u]);let h=new wi.default(0);n!==null&&(t.current_tick_index>=r?h=o[u].sub(new wi.default(n.rewardersGrowthOutside[u])):h=n.rewardersGrowthOutside[u]);let w=Te.subUnderflowU128(Te.subUnderflowU128(new wi.default(o[u]),new wi.default(l)),new wi.default(h));a.push(w)}return a}function ds(t){let e=we.isSuiCoin(t.coinTypeA),n=we.isSuiCoin(t.coinTypeB);return{isAdjustCoinA:e,isAdjustCoinB:n}}function K0(t,e){return N.ceil(S(t).div(1+e)).toString()}var se=class{static createCollectRewarderAndFeeParams(t,e,n,i,r,o){r===void 0&&(r=[...i]),o===void 0&&(o=[...i]);let s=Et(n.coinTypeA),a=Et(n.coinTypeB);if(n.collect_fee){let l=se.buildCoinForAmount(e,r,BigInt(0),s,!1);r=l.remainCoins;let h=se.buildCoinForAmount(e,o,BigInt(0),a,!1);o=h.remainCoins,e=t.Position.createCollectFeePaylod({pool_id:n.pool_id,pos_id:n.pos_id,coinTypeA:n.coinTypeA,coinTypeB:n.coinTypeB},e,l.targetCoin,h.targetCoin)}let u=[];return n.rewarder_coin_types.forEach(l=>{switch(Et(l)){case s:u.push(se.buildCoinForAmount(e,r,BigInt(0),l,!1).targetCoin);break;case a:u.push(se.buildCoinForAmount(e,o,BigInt(0),l,!1).targetCoin);break;default:u.push(se.buildCoinForAmount(e,i,BigInt(0),l,!1).targetCoin);break}}),e=t.Rewarder.createCollectRewarderPaylod(n,e,u),e}static async adjustTransactionForGas(t,e,n,i){i.setSender(t.senderAddress);let r=we.selectCoinAssetGreaterThanOrEqual(e,n).selectedCoins;if(r.length===0)throw new J("Insufficient balance","InsufficientBalance");let o=we.calculateTotalBalance(e);if(o-n>1e9)return{fixAmount:n};let s=await t.fullClient.calculationTxGas(i);if(we.selectCoinAssetGreaterThanOrEqual(e,BigInt(s),r.map(u=>u.coinObjectId)).selectedCoins.length===0){let u=BigInt(s)+BigInt(500);if(o-n<u){if(n-=u,n<0)throw new J("gas Insufficient balance","InsufficientBalance");let l=new bi.TransactionBlock;return{fixAmount:n,newTx:l}}}return{fixAmount:n}}static async buildAddLiquidityFixTokenForGas(t,e,n,i){let r=await se.buildAddLiquidityFixToken(t,e,n),{isAdjustCoinA:o}=ds(n),s=o?n.amount_a:n.amount_b,a=await se.adjustTransactionForGas(t,we.getCoinAssets(o?n.coinTypeA:n.coinTypeB,e),BigInt(s),r),{fixAmount:u}=a,{newTx:l}=a;if(l!==void 0){let h,w;if(o)n.amount_a=Number(u),h=se.buildAddLiquidityFixTokenCoinInput(l,!n.fix_amount_a,u.toString(),n.slippage,n.coinTypeA,e,!1),w=se.buildAddLiquidityFixTokenCoinInput(l,n.fix_amount_a,n.amount_b,n.slippage,n.coinTypeB,e,!1);else return n.amount_b=Number(u),h=se.buildAddLiquidityFixTokenCoinInput(l,!n.fix_amount_a,n.amount_a,n.slippage,n.coinTypeA,e,!1),w=se.buildAddLiquidityFixTokenCoinInput(l,n.fix_amount_a,u.toString(),n.slippage,n.coinTypeB,e,!1),n=se.fixAddLiquidityFixTokenParams(n,i.slippage,i.curSqrtPrice),r=await se.buildAddLiquidityFixTokenArgs(l,t,e,n,h,w),r}return r}static async buildAddLiquidityFixToken(t,e,n){if(t.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let i=new bi.TransactionBlock,r=se.buildAddLiquidityFixTokenCoinInput(i,!n.fix_amount_a,n.amount_a,n.slippage,n.coinTypeA,e,!1),o=se.buildAddLiquidityFixTokenCoinInput(i,n.fix_amount_a,n.amount_b,n.slippage,n.coinTypeB,e,!1);return i=se.buildAddLiquidityFixTokenArgs(i,t,e,n,r,o),i}static buildAddLiquidityFixTokenCoinInput(t,e,n,i,r,o,s=!0){return e?se.buildCoinForAmountInterval(t,o,{amountSecond:BigInt(K0(n,i)),amountFirst:BigInt(n)},r,s):se.buildCoinForAmount(t,o,BigInt(n),r,s)}static fixAddLiquidityFixTokenParams(t,e,n){let i=t.fix_amount_a?t.amount_a:t.amount_b,r=$e.estLiquidityAndcoinAmountFromOneAmounts(Number(t.tick_lower),Number(t.tick_upper),new qr.default(i),t.fix_amount_a,!0,e,n);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,n,i,r,o){let s=[i.coinTypeA,i.coinTypeB],a=i.is_open?"open_position_with_liquidity_by_fix_coin":"add_liquidity_by_fix_coin",{clmm_pool:u,integrate:l}=e.sdkOptions;i.is_open||(t=se.createCollectRewarderAndFeeParams(e,t,i,n,r.remainCoins,o.remainCoins));let h=D(u),w=i.is_open?[t.object(h.global_config_id),t.object(i.pool_id),t.pure(Tt(BigInt(i.tick_lower)).toString()),t.pure(Tt(BigInt(i.tick_upper)).toString()),r.targetCoin,o.targetCoin,t.pure(i.amount_a),t.pure(i.amount_b),t.pure(i.fix_amount_a),t.object(G)]:[t.object(h.global_config_id),t.object(i.pool_id),t.object(i.pos_id),r.targetCoin,o.targetCoin,t.pure(i.amount_a),t.pure(i.amount_b),t.pure(i.fix_amount_a),t.object(G)];return t.moveCall({target:`${l.published_at}::${jn}::${a}`,typeArguments:s,arguments:w}),t}static async buildSwapTransactionForGas(t,e,n,i){let r=se.buildSwapTransaction(t,e,n);r.setSender(t.senderAddress);let o=await se.adjustTransactionForGas(t,we.getCoinAssets(e.a2b?e.coinTypeA:e.coinTypeB,n),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 se.fixSwapParams(t,e,i);let u=se.buildCoinForAmount(r,n,e.a2b?BigInt(e.by_amount_in?e.amount:e.amount_limit):BigInt(0),e.coinTypeA),l=se.buildCoinForAmount(r,n,e.a2b?BigInt(0):BigInt(e.by_amount_in?e.amount:e.amount_limit),e.coinTypeB);r=se.buildSwapTransactionArgs(a,e,t.sdkOptions,u,l)}return r}static buildSwapTransaction(t,e,n){let i=new bi.TransactionBlock;i.setSender(t.senderAddress);let r=se.buildCoinForAmount(i,n,e.a2b?BigInt(e.by_amount_in?e.amount:e.amount_limit):BigInt(0),e.coinTypeA,!1),o=se.buildCoinForAmount(i,n,e.a2b?BigInt(0):BigInt(e.by_amount_in?e.amount:e.amount_limit),e.coinTypeB,!1);return i=se.buildSwapTransactionArgs(i,e,t.sdkOptions,r,o),i}static buildSwapTransactionArgs(t,e,n,i,r){let{clmm_pool:o,integrate:s}=n,a=mn.getDefaultSqrtPriceLimit(e.a2b),u=[e.coinTypeA,e.coinTypeB],{global_config_id:l}=D(o);if(l===void 0)throw Error("clmm.config.global_config_id is undefined");let h=e.swap_partner!==void 0,w=h?e.a2b?"swap_a2b_with_partner":"swap_b2a_with_partner":e.a2b?"swap_a2b":"swap_b2a",v=h?[t.pure(l),t.pure(e.pool_id),t.pure(e.swap_partner),i.targetCoin,r.targetCoin,t.pure(e.by_amount_in),t.pure(e.amount),t.pure(e.amount_limit),t.pure(a.toString()),t.pure(G)]:[t.pure(l),t.pure(e.pool_id),i.targetCoin,r.targetCoin,t.pure(e.by_amount_in),t.pure(e.amount),t.pure(e.amount_limit),t.pure(a.toString()),t.pure(G)];return t.moveCall({target:`${s.published_at}::${jn}::${w}`,typeArguments:u,arguments:v}),t}static async buildSwapTransactionWithoutTransferCoinsForGas(t,e,n,i){let{tx:r,coinABs:o}=se.buildSwapTransactionWithoutTransferCoins(t,e,n);r.setSender(t.senderAddress);let s=await se.adjustTransactionForGas(t,we.getCoinAssets(e.a2b?e.coinTypeA:e.coinTypeB,n),BigInt(e.by_amount_in?e.amount:e.amount_limit),r),{fixAmount:a,newTx:u}=s;if(u!==void 0){u.setSender(t.senderAddress),e.by_amount_in?e.amount=a.toString():e.amount_limit=a.toString(),e=await se.fixSwapParams(t,e,i);let l=se.buildCoinForAmount(r,n,e.a2b?BigInt(e.by_amount_in?e.amount:e.amount_limit):BigInt(0),e.coinTypeA,!1,!0),h=se.buildCoinForAmount(r,n,e.a2b?BigInt(0):BigInt(e.by_amount_in?e.amount:e.amount_limit),e.coinTypeB,!1,!0),w=se.buildSwapTransactionWithoutTransferCoinArgs(t,u,e,t.sdkOptions,l,h);r=w.tx,o=w.txRes}return{tx:r,coinABs:o}}static buildSwapTransactionWithoutTransferCoins(t,e,n){let i=new bi.TransactionBlock;i.setSender(t.senderAddress);let r=se.buildCoinForAmount(i,n,e.a2b?BigInt(e.by_amount_in?e.amount:e.amount_limit):BigInt(0),e.coinTypeA,!1,!0),o=se.buildCoinForAmount(i,n,e.a2b?BigInt(0):BigInt(e.by_amount_in?e.amount:e.amount_limit),e.coinTypeB,!1,!0),s=se.buildSwapTransactionWithoutTransferCoinArgs(t,i,e,t.sdkOptions,r,o);return{tx:s.tx,coinABs:s.txRes}}static buildSwapTransactionWithoutTransferCoinArgs(t,e,n,i,r,o){let{clmm_pool:s,integrate:a}=i,u=mn.getDefaultSqrtPriceLimit(n.a2b),{global_config_id:l}=D(s);if(l===void 0)throw Error("clmm.config.global_config_id is undefined");let h=n.swap_partner!==void 0,w=h?"swap_with_partner":"swap",v=h?fc:Jn,T=h?[e.pure(l),e.pure(n.pool_id),e.pure(n.swap_partner),r.targetCoin,o.targetCoin,e.pure(n.a2b),e.pure(n.by_amount_in),e.pure(n.amount),e.pure(u.toString()),e.pure(!1),e.pure(G)]:[e.pure(l),e.pure(n.pool_id),r.targetCoin,o.targetCoin,e.pure(n.a2b),e.pure(n.by_amount_in),e.pure(n.amount),e.pure(u.toString()),e.pure(!1),e.pure(G)],I=[n.coinTypeA,n.coinTypeB],x=e.moveCall({target:`${a.published_at}::${v}::${w}`,typeArguments:I,arguments:T});if(n.by_amount_in){let P=n.a2b?n.coinTypeB:n.coinTypeA,O=n.a2b?x[1]:x[0],E=Number(n.amount_limit);this.checkCoinThreshold(t,n.by_amount_in,e,O,E,P)}return{tx:e,txRes:x}}static async fixSwapParams(t,e,n){let{currentPool:i}=n;try{let r=await t.Swap.preswap({decimalsA:n.decimalsA,decimalsB:n.decimalsB,a2b:e.a2b,byAmountIn:e.by_amount_in,amount:e.amount,pool:i,currentSqrtPrice:i.current_sqrt_price,coinTypeA:i.coinTypeA,coinTypeB:i.coinTypeB}),o=n.byAmountIn?r.estimatedAmountOut:r.estimatedAmountIn,s=_c(o,n.slippage,!n.byAmountIn);e.amount_limit=s.toString()}catch(r){console.log("fixSwapParams",r)}return e}static async syncBuildCoinInputForAmount(t,e,n,i,r=!0){if(t.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let o=await t.getOwnerCoinAssets(t.senderAddress,i);return se.buildCoinForAmount(e,o,n,i,r).targetCoin}static buildCoinForAmount(t,e,n,i,r=!0,o=!1){let s=we.getCoinAssets(i,e);if(n===BigInt(0)&&s.length===0)return se.buildZeroValueCoin(e,t,i,r);let a=we.calculateTotalBalance(s);if(a<n)throw new J(`The amount(${a}) is Insufficient balance for ${i} , expect ${n} `,"InsufficientBalance");return se.buildCoin(t,e,s,n,i,r,o)}static buildCoin(t,e,n,i,r,o=!0,s=!1){if(we.isSuiCoin(r)){if(o){let E=t.splitCoins(t.gas,[t.pure(i.toString())]);return{targetCoin:t.makeMoveVec({objects:[E]}),remainCoins:e,tragetCoinAmount:i.toString(),isMintZeroCoin:!1,originalSplitedCoin:t.gas}}if(i===0n&&n.length>1){let E=we.selectCoinObjectIdGreaterThanOrEqual(n,i);return{targetCoin:t.object(E.objectArray[0]),remainCoins:E.remainCoins,tragetCoinAmount:E.amountArray[0],isMintZeroCoin:!1}}let P=we.selectCoinObjectIdGreaterThanOrEqual(n,i);return{targetCoin:t.splitCoins(t.gas,[t.pure(i.toString())]),remainCoins:P.remainCoins,tragetCoinAmount:i.toString(),isMintZeroCoin:!1,originalSplitedCoin:t.gas}}let a=we.selectCoinObjectIdGreaterThanOrEqual(n,i),u=a.amountArray.reduce((P,O)=>Number(P)+Number(O),0).toString(),l=a.objectArray;if(o)return{targetCoin:t.makeMoveVec({objects:l.map(P=>t.object(P))}),remainCoins:a.remainCoins,tragetCoinAmount:a.amountArray.reduce((P,O)=>Number(P)+Number(O),0).toString(),isMintZeroCoin:!1};let[h,...w]=l,v=t.object(h),T=v,I=a.amountArray.reduce((P,O)=>Number(P)+Number(O),0).toString(),x;return w.length>0&&t.mergeCoins(v,w.map(P=>t.object(P))),s&&Number(u)>Number(i)&&(T=t.splitCoins(v,[t.pure(i.toString())]),I=i.toString(),x=v),{targetCoin:T,remainCoins:a.remainCoins,originalSplitedCoin:x,tragetCoinAmount:I,isMintZeroCoin:!1}}static buildZeroValueCoin(t,e,n,i=!0){let r=se.callMintZeroValueCoin(e,n),o;return i?o=e.makeMoveVec({objects:[r]}):o=r,{targetCoin:o,remainCoins:t,isMintZeroCoin:!0,tragetCoinAmount:"0"}}static buildCoinForAmountInterval(t,e,n,i,r=!0){let o=we.getCoinAssets(i,e);if(n.amountFirst===BigInt(0))return o.length>0?se.buildCoin(t,[...e],[...o],n.amountFirst,i,r):se.buildZeroValueCoin(e,t,i,r);let s=we.calculateTotalBalance(o);if(s>=n.amountFirst)return se.buildCoin(t,[...e],[...o],n.amountFirst,i,r);if(s<n.amountSecond)throw new J(`The amount(${s}) is Insufficient balance for ${i} , expect ${n.amountSecond} `,"InsufficientBalance");return se.buildCoin(t,[...e],[...o],n.amountSecond,i,r)}static async buildRouterSwapTransaction(t,e,n,i,r){let o=new bi.TransactionBlock;return e.paths.length>1&&(e.partner=""),o=await this.buildRouterBasePathTx(t,e,n,i,o,r),o}static async buildRouterBasePathTx(t,e,n,i,r,o){let s=e.paths.filter(B=>B&&B.poolAddress),a=Number(s.reduce((B,$)=>B.add($.amountIn),ie).toString()),u=Number(s.reduce((B,$)=>B.add($.amountOut),ie).toString()),l=Math.round(n?Number(u.toString())*(1-e.priceSlippagePoint):Number(a.toString())*(1+e.priceSlippagePoint)),h=e.paths[0].coinType[0],w=e.paths[0].coinType[e.paths[0].coinType.length-1],v=se.buildCoinForAmount(r,i,BigInt(n?a:l),h,!1,!0),T=v.originalSplitedCoin!==void 0,I=se.buildCoinForAmount(r,i,0n,w,!1),x=await this.buildRouterBasePathReturnCoins(t,e,n,v,I,r),P=[],{toCoin:O,fromCoin:E}=x;if(r=x.tx,I.isMintZeroCoin?P.push({coinType:w,coin:O}):I.originalSplitedCoin!==void 0?r.mergeCoins(I.originalSplitedCoin,[O]):r.mergeCoins(I.targetCoin,[O]),T){let B=v?.originalSplitedCoin;r.mergeCoins(B,[E])}else P.push({coinType:h,coin:E});for(let B=0;B<P.length;B++)this.buildTransferCoin(t,r,P[B].coin,P[B].coinType,o);return r}static async buildRouterBasePathReturnCoins(t,e,n,i,r,o){let{clmm_pool:s,integrate:a}=t.sdkOptions,u=D(s).global_config_id,l=e.paths.filter(B=>B&&B.poolAddress),h=Number(l.reduce((B,$)=>B.add($.amountIn),ie).toString()),w=Number(l.reduce((B,$)=>B.add($.amountOut),ie).toString()),v=Math.round(n?Number(w.toString())*(1-e.priceSlippagePoint):Number(h.toString())*(1+e.priceSlippagePoint)),T=e.paths[0].coinType[0],I=e.paths[0].coinType[e.paths[0].coinType.length-1],x=i.targetCoin,P;r.isMintZeroCoin||r.originalSplitedCoin!==void 0?P=r.targetCoin:P=se.callMintZeroValueCoin(o,I);let O=e.partner==="",E=O?Jn:fc;for(let B of l)if(B.poolAddress.length===1){let $=B.a2b[0],Z={amount:Number(B.amountIn.toString()),amountLimit:v,poolCoinA:B.a2b[0]?T:I,poolCoinB:B.a2b[0]?I:T},H=O?"swap":"swap_with_partner",te=$?x:P,U=$?P:x,V=n?B.amountIn.toString():B.amountOut.toString(),F=mn.getDefaultSqrtPriceLimit($).toString(),K=O?[o.object(u),o.object(B.poolAddress[0]),te,U,o.pure($),o.pure(n),o.pure(V),o.pure(F),o.pure(!1),o.object(G)]:[o.object(u),o.object(B.poolAddress[0]),o.pure(e.partner),te,U,o.pure($),o.pure(n),o.pure(V),o.pure(F),o.pure(!1),o.object(G)],C=[Z.poolCoinA,Z.poolCoinB],A=o.moveCall({target:`${t.sdkOptions.integrate.published_at}::${E}::${H}`,typeArguments:C,arguments:K});x=$?A[0]:A[1],P=$?A[1]:A[0]}else{let $=n?B.amountIn:B.rawAmountLimit[0],Z=n?0:B.amountOut,H="";B.a2b[0]?B.a2b[1]?H="swap_ab_bc":H="swap_ab_cb":B.a2b[1]?H="swap_ba_bc":H="swap_ba_cb",O||(H=`${H}_with_partner`);let te=mn.getDefaultSqrtPriceLimit(B.a2b[0]),U=mn.getDefaultSqrtPriceLimit(B.a2b[1]),V=O?[o.object(u),o.object(B.poolAddress[0]),o.object(B.poolAddress[1]),x,P,o.pure(n),o.pure($.toString()),o.pure(Z.toString()),o.pure(te.toString()),o.pure(U.toString()),o.object(G)]:[o.object(u),o.object(B.poolAddress[0]),o.object(B.poolAddress[1]),o.pure(e.partner),x,P,o.pure(n),o.pure($.toString()),o.pure(Z.toString()),o.pure(te.toString()),o.pure(U.toString()),o.object(G)],F=[B.coinType[0],B.coinType[1],B.coinType[2]],K=o.moveCall({target:`${a.published_at}::${E}::${H}`,typeArguments:F,arguments:V});x=K[0],P=K[1]}return this.checkCoinThreshold(t,n,o,P,v,I),{fromCoin:x,toCoin:P,tx:o}}static async buildAggregatorSwapReturnCoins(t,e,n,i,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 u,l,h=e.splitPaths.some(w=>w.basePaths.some(v=>v.label==="Deepbook"));if((!e.byAmountIn||e.splitPaths.length===1)&&!h){let w=[];for(let I of e.splitPaths){let x=[],P=[],O=[],E=[];for(let $=0;$<I.basePaths.length;$+=1){let Z=I.basePaths[$];x.push(Z.direction),P.push(Z.poolAddress),O.push(new qr.default(Z.inputAmount.toString())),$===0?E.push(Z.fromCoin,Z.toCoin):E.push(Z.toCoin)}let B={amountIn:new qr.default(I.inputAmount.toString()),amountOut:new qr.default(I.outputAmount.toString()),poolAddress:P,a2b:x,rawAmountLimit:O,isExceed:!1,coinType:E};w.push(B)}let v={paths:w,partner:r,priceSlippagePoint:o},T=await this.buildRouterBasePathReturnCoins(t,v,e.byAmountIn,n,i,s);u=T.fromCoin,l=T.toCoin,s=T.tx}else{let w=Math.round(e.outputAmount*(1-o));u=n.targetCoin,i.isMintZeroCoin||i.originalSplitedCoin!==void 0?l=i.targetCoin:l=se.callMintZeroValueCoin(s,e.toCoin);let v=!1,T;if(h){let[I,x]=Vd.createAccountCap(a,t.sdkOptions,s);s=x,T=I,v=!0}for(let I=0;I<e.splitPaths.length;I+=1){let x=e.splitPaths[I],P;for(let O=0;O<x.basePaths.length;O+=1){let E=x.basePaths[O];if(E.label==="Deepbook")if(O===0)if(x.basePaths.length===1){let B=this.buildDeepbookBasePathTx(t,E,s,T,u,l,!1);u=B.from,l=B.to}else{P=se.callMintZeroValueCoin(s,E.toCoin);let B=this.buildDeepbookBasePathTx(t,E,s,T,u,P,!1);u=B.from,P=B.to}else{let B=this.buildDeepbookBasePathTx(t,E,s,T,P,l,!0);P=B.from,l=B.to}if(E.label==="Cetus")if(O===0)if(x.basePaths.length===1){let B=this.buildClmmBasePathTx(t,E,s,e.byAmountIn,u,l,!1,r);u=B.from,l=B.to}else{P=se.callMintZeroValueCoin(s,E.toCoin);let B=this.buildClmmBasePathTx(t,E,s,e.byAmountIn,u,P,!1,r);u=B.from,P=B.to}else{let B=this.buildClmmBasePathTx(t,E,s,e.byAmountIn,P,l,!0,r);P=B.from,l=B.to,s.moveCall({target:`${t.sdkOptions.integrate.published_at}::${$d}::send_coin`,typeArguments:[E.fromCoin],arguments:[P,s.pure(a)]})}}}this.checkCoinThreshold(t,e.byAmountIn,s,l,w,e.toCoin),v&&(s=Vd.deleteAccountCapByObject(T,t.sdkOptions,s))}return{fromCoin:u,toCoin:l,tx:s}}static async buildAggregatorSwapTransaction(t,e,n,i,r,o){let s=new bi.TransactionBlock,a=e.byAmountIn?Math.round(e.outputAmount*(1-r)):Math.round(e.inputAmount*(1+r)),u=se.buildCoinForAmount(s,n,e.byAmountIn?BigInt(e.inputAmount):BigInt(a),e.fromCoin,!1,!0),l=u.originalSplitedCoin!=null,h=se.buildCoinForAmount(s,n,0n,e.toCoin,!1),w=await this.buildAggregatorSwapReturnCoins(t,e,u,h,i,r,s,o),{fromCoin:v,toCoin:T}=w;s=w.tx;let I=[];if(h.isMintZeroCoin?I.push({coinType:e.toCoin,coin:T}):h.originalSplitedCoin!=null?s.mergeCoins(h.originalSplitedCoin,[T]):s.mergeCoins(h.targetCoin,[T]),l){let x=u.originalSplitedCoin;s.mergeCoins(x,[v])}else I.push({coinType:e.fromCoin,coin:v});for(let x=0;x<I.length;x++)this.buildTransferCoin(t,s,I[x].coin,I[x].coinType,o);return s}static checkCoinThreshold(t,e,n,i,r,o){e&&n.moveCall({target:`${t.sdkOptions.integrate.published_at}::${Jn}::check_coin_threshold`,typeArguments:[o],arguments:[i,n.pure(r)]})}static buildDeepbookBasePathTx(t,e,n,i,r,o,s){let a=e.direction?r:o,u=e.direction?o:r,l=[n.object(e.poolAddress),i,n.pure(e.inputAmount),n.pure(0),n.pure(e.direction),a,u,n.pure(s),n.object(G)],h=e.direction?[e.fromCoin,e.toCoin]:[e.toCoin,e.fromCoin],w=n.moveCall({target:`${t.sdkOptions.deepbook_endpoint_v2.published_at}::endpoints_v2::swap`,typeArguments:h,arguments:l});return r=e.direction?w[0]:w[1],o=e.direction?w[1]:w[0],{from:r,to:o,tx:n}}static buildClmmBasePathTx(t,e,n,i,r,o,s,a){let{clmm_pool:u,integrate:l}=t.sdkOptions,h=D(u).global_config_id,w=e.direction?r:o,v=e.direction?o:r,T=a==="",I=T?Jn:fc,x=T?"swap":"swap_with_partner",P=i?e.inputAmount.toString():e.outputAmount.toString(),O=mn.getDefaultSqrtPriceLimit(e.direction),E=T?[n.object(h),n.object(e.poolAddress),w,v,n.pure(e.direction),n.pure(i),n.pure(P),n.pure(O.toString()),n.pure(s),n.object(G)]:[n.object(h),n.object(e.poolAddress),n.pure(a),w,v,n.pure(e.direction),n.pure(i),n.pure(P),n.pure(O.toString()),n.pure(s),n.object(G)],B=e.direction?[e.fromCoin,e.toCoin]:[e.toCoin,e.fromCoin],$=n.moveCall({target:`${l.published_at}::${I}::${x}`,typeArguments:B,arguments:E});return w=$[0],v=$[1],r=e.direction?w:v,o=e.direction?v:w,{from:r,to:o,tx:n}}static buildCoinTypePair(t,e){let n=[];if(t.length===2){let i=[];i.push(t[0],t[1]),n.push(i)}else{let i=[];i.push(t[0],t[t.length-1]),n.push(i);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]),n.push(o)}}return n}static buildTransferCoinToSender(t,e,n,i){e.moveCall({target:`${t.sdkOptions.integrate.published_at}::${$d}::transfer_coin_to_sender`,typeArguments:[i],arguments:[n]})}static buildTransferCoin(t,e,n,i,r){r!=null?e.transferObjects([n],e.pure(r)):se.buildTransferCoinToSender(t,e,n,i)}},re=se;i0(re,"callMintZeroValueCoin",(t,e)=>t.moveCall({target:"0x2::coin::zero",typeArguments:[e]}));function Nt(t){return!(!t.startsWith("0x")||t.length!==66)}var Qi=new Pt.default(1e9),Vd=class{static createAccountCap(t,e,n,i=!1){if(t.length===0)throw Error("this config sdk senderAddress is empty");let{deepbook:r}=e,[o]=n.moveCall({target:`${r.published_at}::${l0}::create_account`,typeArguments:[],arguments:[]});return i&&n.transferObjects([o],n.pure(t)),[o,n]}static deleteAccountCap(t,e,n){let{deepbook:i}=e,r=[n.pure(t)];return n.moveCall({target:`${i.published_at}::${hc}::delete_account_cap`,typeArguments:[],arguments:r}),n}static deleteAccountCapByObject(t,e,n){let{deepbook:i}=e,r=[t];return n.moveCall({target:`${i.published_at}::${hc}::delete_account_cap`,typeArguments:[],arguments:r}),n}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:hc}}});return e.data.length===0?"":e.data[0].data.objectId}static async getPools(t){let e=t.sdkOptions.deepbook.package_id,n=[];try{(await t.fullClient.queryEventsByPage({MoveEventType:`${e}::clob_v2::PoolCreated`})).data.forEach(r=>{let o=r.parsedJson;o&&n.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(i){console.log("getPoolImmutables",i)}return n}static async getPoolAsks(t,e,n,i){let{simulationAccount:r}=t.sdkOptions,{deepbook_endpoint_v2:o}=t.sdkOptions,s=new as.TransactionBlock,a=[],u=[n,i],l=[s.pure(e),s.pure("0"),s.pure("999999999999"),s.pure(G)];s.moveCall({target:`${o.published_at}::endpoints_v2::get_level2_book_status_ask_side`,arguments:l,typeArguments:u});let w=(await t.fullClient.devInspectTransactionBlock({transactionBlock:s,sender:r.address})).events?.filter(v=>q(v.type).name==="BookStatus");if(w.length===0)return a;for(let v=0;v<w[0].parsedJson.depths.length;v++){let T=w[0].parsedJson.price[v],I=w[0].parsedJson.depths[v],x={price:parseInt(T,10),quantity:parseInt(I,10)};a.push(x)}return a}static async getPoolBids(t,e,n,i){let{simulationAccount:r}=t.sdkOptions,{deepbook_endpoint_v2:o}=t.sdkOptions,s=new as.TransactionBlock,a=[],u=[n,i],l=[s.pure(e),s.pure("0"),s.pure("999999999999"),s.pure(G)];s.moveCall({target:`${o.published_at}::endpoints_v2::get_level2_book_status_bid_side`,arguments:l,typeArguments:u});let w=(await t.fullClient.devInspectTransactionBlock({transactionBlock:s,sender:r.address})).events?.filter(v=>q(v.type).name==="BookStatus");if(w.length===0)return a;for(let v=0;v<w[0].parsedJson.depths.length;v++){let T=w[0].parsedJson.price[v],I=w[0].parsedJson.depths[v],x={price:parseInt(T,10),quantity:parseInt(I,10)};a.push(x)}return a}static async preSwap(t,e,n,i){let r=!1,o=ie,s=new Pt.default(i),a=ie,u=new Pt.default(i);if(n){let l=await this.getPoolBids(t,e.poolID,e.baseAsset,e.quoteAsset);l===null&&(r=!0),l=l.sort((h,w)=>w.price-h.price);for(let h=0;h<l.length;h+=1){let w=new Pt.default(l[h].quantity),v=new Pt.default(l[h].price),T=w.mul(new Pt.default(v)).mul(new Pt.default(e.takerFeeRate)).div(Qi).div(Qi);if(s.gt(w))s=s.sub(w),o=o.add(w.mul(v).div(Qi).sub(T)),a=a.add(T);else{let I=s.mul(new Pt.default(l[h].price)).div(Qi),x=I.mul(new Pt.default(e.takerFeeRate)).div(Qi);o=o.add(I.sub(x)),s=s.sub(s),a=a.add(x)}if(s.eq(ie))break}}else{let l=await this.getPoolAsks(t,e.poolID,e.baseAsset,e.quoteAsset);l===null&&(r=!0);for(let h=0;h<l.length;h+=1){let w=new Pt.default(l[h].price).mul(new Pt.default(l[h].quantity)).div(new Pt.default(1e9)),v=w.mul(new Pt.default(e.takerFeeRate)).div(Qi),T=w.add(v);if(s.gt(w))o=o.add(new Pt.default(l[h].quantity)),s=s.sub(T),a=a.add(v);else{let I=new Pt.default(l[h].quantity).div(new Pt.default(e.lotSize)),x=T.div(I),P=s.div(x);o=o.add(P.muln(e.lotSize)),s=s.sub(P.mul(x)),a=a.add(P.div(I).mul(v))}if(s.eq(ie))break}}return{poolAddress:e.poolID,estimatedAmountIn:u.sub(s).toNumber(),estimatedAmountOut:o.toNumber(),estimatedFeeAmount:a,isExceed:r,amount:Number(i),aToB:n,byAmountIn:!0}}static async simulateSwap(t,e,n,i,r,o){let{deepbook_endpoint_v2:s}=t.sdkOptions,a=new as.TransactionBlock,u=await this.getAccountCap(t),l;if(u===""){let Z=this.createAccountCap(t.senderAddress,t.sdkOptions,a),H=Z[0];a=Z[1],l=H}else l=a.pure(u);let h=await t.getOwnerCoinAssets(t.senderAddress),v=re.buildCoinForAmount(a,h,BigInt(o),n,!1)?.targetCoin,I=re.buildCoinForAmount(a,h,BigInt(o),i,!1)?.targetCoin,x=[n,i],P=[a.pure(e),l,a.pure(o),a.pure(0),a.pure(r),v,I,a.pure(G)];a.moveCall({target:`${s.published_at}::${d0}::swap`,arguments:P,typeArguments:x});let{simulationAccount:O}=t.sdkOptions,B=(await t.fullClient.devInspectTransactionBlock({transactionBlock:a,sender:O.address})).events?.filter(Z=>q(Z.type).name==="DeepbookSwapEvent");if(B.length===0)return null;let $=B[0].parsedJson;return{poolAddress:$.pool,estimatedAmountIn:$.amount_in,estimatedAmountOut:$.amount_out,aToB:$.atob}}},G0=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPositionList(t,e="all"){let n={data:[],hasNextPage:!0},i=await this._sdk.fullClient.getDynamicFieldsByPage(t,e);n.hasNextPage=i.hasNextPage,n.nextCursor=i.nextCursor;let r=i.data.map(s=>{if(s.error!=null||s.data?.content?.dataType!=="moveObject")throw new J(`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 n.data=o,n}async getPoolImmutables(t=[],e=0,n=100,i=!1){let{package_id:r}=this._sdk.sdkOptions.clmm_pool,o=`${r}_getInitPoolEvent`,s=this.getCache(o,i),a=[],u=[];if(s!==void 0&&a.push(...s),a.length===0)try{(await this._sdk.fullClient.queryEventsByPage({MoveEventType:`${r}::factory::CreatePoolEvent`})).data.forEach(w=>{let v=w.parsedJson;v&&a.push({poolAddress:v.pool_id,tickSpacing:v.tick_spacing,coinTypeA:q(v.coin_type_a).full_address,coinTypeB:q(v.coin_type_b).full_address})}),this.updateCache(o,a,X)}catch(h){console.log("getPoolImmutables",h)}let l=t.length>0;for(let h=0;h<a.length;h+=1){let w=a[h];l&&!t.includes(w.poolAddress)||!l&&(h<e||h>=e+n)||u.push(w)}return u}async getPools(t=[],e=0,n=100){let i=[],r=[];t.length>0?r=[...t]:(await this.getPoolImmutables([],e,n,!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 J(`getPools error code: ${s.error?.code??"unknown error"}, please check config and object ids`,"InvalidPoolObject");let a=mc(s);i.push(a);let u=`${a.poolAddress}_getPoolObject`;this.updateCache(u,a,X)}return i}async getPoolImmutablesWithPage(t="all",e=!1){let{package_id:n}=this._sdk.sdkOptions.clmm_pool,i=[],r={data:[],hasNextPage:!1},o=t==="all",s=`${n}_getPoolImmutables`;if(o){let a=this.getCache(s,e);a&&i.push(...a)}if(i.length===0)try{let a=`${n}::factory::CreatePoolEvent`,u=await this._sdk.fullClient.queryEventsByPage({MoveEventType:a},t);r.hasNextPage=u.hasNextPage,r.nextCursor=u.nextCursor,u.data.forEach(l=>{let h=l.parsedJson;if(h){let w={poolAddress:h.pool_id,tickSpacing:h.tick_spacing,coinTypeA:q(h.coin_type_a).full_address,coinTypeB:q(h.coin_type_b).full_address};i.push(w)}})}catch(a){console.log("getPoolImmutables",a)}return r.data=i,o&&this.updateCache(`${n}_getPoolImmutables`,i,X),r}async getPoolsWithPage(t=[]){let e=[],n=[];t.length>0?n=[...t]:(await this.getPoolImmutablesWithPage()).data.forEach(o=>n.push(o.poolAddress));let i=await this._sdk.fullClient.batchGetObjects(n,{showContent:!0,showType:!0});for(let r of i){if(r.error!=null||r.data?.content?.dataType!=="moveObject")throw new J(`getPoolWithPages error code: ${r.error?.code??"unknown error"}, please check config and object ids`,"InvalidPoolObject");let o=mc(r);e.push(o);let s=`${o.poolAddress}_getPoolObject`;this.updateCache(s,o,X)}return e}async getPool(t,e=!0){let n=`${t}_getPoolObject`,i=this.getCache(n,e);if(i!==void 0)return i;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 J(`getPool error code: ${r.error?.code??"unknown error"}, please check config and object id`,"InvalidPoolObject");let o=mc(r);return this.updateCache(n,o),o}async creatPoolsTransactionPayload(t){for(let n of t)if(ls((0,Rr.normalizeSuiAddress)(n.coinTypeA),(0,Rr.normalizeSuiAddress)(n.coinTypeB))){let i=n.coinTypeB;n.coinTypeB=n.coinTypeA,n.coinTypeA=i}return await this.creatPool(t)}async creatPoolTransactionPayload(t){if(ls((0,Rr.normalizeSuiAddress)(t.coinTypeA),(0,Rr.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,n=`${e}_getInitEvent`,i=this.getCache(n,t);if(i!==void 0)return i;let r=await this._sdk.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=Ci(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(u=>{let l=u.parsedJson;if(u.type)switch(q(u.type).full_address){case`${e}::config::InitConfigEvent`:a.global_config_id=l.global_config_id,a.admin_cap_id=l.admin_cap_id;break;case`${e}::factory::InitFactoryEvent`:a.pools_id=l.pools_id;break;case`${e}::rewarder::RewarderInitEvent`:a.global_vault_id=l.global_vault_id;break;case`${e}::partner::InitPartnerEvent`:a.partners_id=l.partners_id;break;default:break}}),this.updateCache(n,a,X)),a}async getSuiTransactionResponse(t,e=!1){let n=`${t}_getSuiTransactionResponse`,i=this.getCache(n,e);if(i!==void 0)return i;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(n,r,X),r}async creatPool(t){let e=new er.TransactionBlock,{integrate:n,clmm_pool:i}=this.sdk.sdkOptions,r=D(i),o=r.global_config_id,s=r.pools_id;return t.forEach(a=>{let u=[e.object(o),e.object(s),e.pure(a.tick_spacing.toString()),e.pure(a.initialize_sqrt_price),e.pure(a.uri),e.object(G)];e.moveCall({target:`${n.published_at}::${nr}::create_pool`,typeArguments:[a.coinTypeA,a.coinTypeB],arguments:u})}),e}async creatPoolAndAddLiquidity(t){if(!Nt(this._sdk.senderAddress))throw new J("this config sdk senderAddress is not set right","InvalidSendAddress");let e=new er.TransactionBlock,{integrate:n,clmm_pool:i}=this.sdk.sdkOptions,r=D(i),o=r.global_config_id,s=r.pools_id,a=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress),u=re.buildAddLiquidityFixTokenCoinInput(e,!t.fix_amount_a,t.amount_a,t.slippage,t.coinTypeA,a,!1),l=re.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),u.targetCoin,l.targetCoin,e.pure(Tt(BigInt(t.tick_lower)).toString()),e.pure(Tt(BigInt(t.tick_upper)).toString()),e.pure(t.amount_a),e.pure(t.amount_b),e.pure(t.fix_amount_a),e.pure(G)];return e.moveCall({target:`${n.published_at}::${jn}::create_pool_with_liquidity`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:h}),e}async fetchTicks(t){let e=[],n=[];for(;;){let r=await this.getTicks({pool_id:t.pool_id,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,start:n,limit:512});if(e=[...e,...r],r.length<512)break;n=[r[r.length-1].index]}return e}async getTicks(t){let{integrate:e,simulationAccount:n}=this.sdk.sdkOptions,i=[],r=[t.coinTypeA,t.coinTypeB],o=new er.TransactionBlock,s=[o.pure(t.pool_id),o.pure(t.start),o.pure(t.limit.toString())];if(o.moveCall({target:`${e.published_at}::${zt}::fetch_ticks`,arguments:s,typeArguments:r}),!Nt(n.address))throw new J("this config simulationAccount is not set right","InvalidSimulateAccount");let a=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:o,sender:n.address});if(a.error!=null)throw new J(`getTicks error code: ${a.error??"unknown error"}, please check config and tick object ids`,"InvalidTickObjectId");return a.events?.forEach(u=>{q(u.type).name==="FetchTicksResultEvent"&&u.parsedJson.ticks.forEach(l=>{i.push($0(l))})}),i}async fetchPositionRewardList(t){let{integrate:e,simulationAccount:n}=this.sdk.sdkOptions,i=[],r=[],o=512;for(;;){let s=[t.coinTypeA,t.coinTypeB],a=new er.TransactionBlock,u=[a.object(t.pool_id),a.pure(r,"u64"),a.pure(o.toString(),"u64")];if(a.moveCall({target:`${e.published_at}::${zt}::fetch_positions`,arguments:u,typeArguments:s}),!Nt(n.address))throw new J("this config simulationAccount is not set right","InvalidSimulateAccount");let l=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:a,sender:n.address});if(l.error!=null)throw new J(`fetch position reward error code: ${l.error??"unknown error"}, please check config and tick object ids`,"InvalidPositionRewardObject");let h=[];if(l?.events?.forEach(w=>{q(w.type).name==="FetchPositionsEvent"&&w.parsedJson.positions.forEach(v=>{let T=rf(v);h.push(T)})}),i.push(...h),h.length<o)break;r=[h[h.length-1].pos_object_id]}return i}async fetchTicksByRpc(t){let e=[],n=null,i=512;for(;;){let r=[],o=await this.sdk.fullClient.getDynamicFields({parentId:t,cursor:n,limit:i});if(n=o.nextCursor,o.data.forEach(s=>{q(s.objectType).module==="skip_list"&&r.push(s.objectId)}),e=[...e,...await this.getTicksByRpc(r)],n===null||o.data.length<i)break}return e}async getTicksByRpc(t){let e=[],n=await this.sdk.fullClient.batchGetObjects(t,{showContent:!0,showType:!0});for(let i of n){if(i.error!=null||i.data?.content?.dataType!=="moveObject")throw new J(`getTicksByRpc error code: ${i.error?.code??"unknown error"}, please check config and tick object ids`,"InvalidTickObjectId");let r=pc(i);r!=null&&e.push(r)}return e}async getTickDataByIndex(t,e){let n={type:"u64",value:Tt(BigInt(b0(e).toString())).toString()},i=await this.sdk.fullClient.getDynamicFieldObject({parentId:t,name:n});if(i.error!=null||i.data?.content?.dataType!=="moveObject")throw new J(`get tick by index: ${e} error: ${i.error}`,"InvalidTickIndex");return pc(i)}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 J(`getTicksByRpc error code: ${e.error?.code??"unknown error"}, please check config and tick object ids`,"InvalidTickObjectId");return pc(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 J(`get partner by object id: ${t} error: ${e[0].error}`,"NotFoundPartnerObject");let n=e[0].data.content.fields.balances,i=await this._sdk.fullClient.getDynamicFieldsByPage(n.fields.id.id),r=[];i.data.forEach(a=>{if(a.error!=null||a.data?.content?.dataType!=="moveObject")throw new J(`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 J(`get coin by object id: ${a.data.objectId} error: ${a.error}`,"InvalidParnterRefFeeFields");let u={coinAddress:a.data.content.fields.name,coinObjectId:a.data.objectId,balance:BigInt(a.data.content.fields.value)};o.push(u)}),o}async claimPartnerRefFeePayload(t,e,n){let i=new er.TransactionBlock,{clmm_pool:r}=this.sdk.sdkOptions,{global_config_id:o}=D(r),s=[n],a=[i.object(o),i.object(t),i.object(e)];return i.moveCall({target:`${r.published_at}::${c0}::claim_ref_fee`,arguments:a,typeArguments:s}),i}updateCache(t,e,n=Ue){let i=this._cache[t];i?(i.overdueTime=he(n),i.value=e):i=new Be(e,he(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t],i=n?.isValid();if(!e&&i)return n.value;i||delete this._cache[t]}},W0=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 n=[],i=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 i.data)if(q(o.data.type).full_address===this.buildPositionType()){let a=Nn(o),u=`${a.pos_object_id}_getPositionList`;this.updateCache(u,a,X),r?e.includes(a.pool)&&n.push(a):n.push(a)}return n}async getPosition(t,e,n=!0){let i=await this.getSimplePosition(e);return n&&(i=await this.updatePositionRewarders(t,i)),i}async getPositionById(t,e=!0){let n=await this.getSimplePosition(t);if(e){let i=await this._sdk.Pool.getPool(n.pool,!1);return await this.updatePositionRewarders(i.position_manager.positions_handle,n)}return n}async getSimplePosition(t){let e=`${t}_getPositionList`,n=this.getSimplePositionByCache(t);if(n===void 0){let i=await this.sdk.fullClient.getObject({id:t,options:{showContent:!0,showType:!0,showDisplay:!0,showOwner:!0}});n=Nn(i),this.updateCache(e,n,X)}return n}getSimplePositionByCache(t){let e=`${t}_getPositionList`;return this.getCache(e)}async getSipmlePositionList(t){let e=[],n=[];return t.forEach(i=>{let r=this.getSimplePositionByCache(i);r?e.push(r):n.push(i)}),n.length>0&&(await this._sdk.fullClient.batchGetObjects(n,{showOwner:!0,showContent:!0,showDisplay:!0,showType:!0})).forEach(r=>{let o=Nn(r);e.push(o);let s=`${o.pos_object_id}_getPositionList`;this.updateCache(s,o,X)}),e}async updatePositionRewarders(t,e){let n=await this.getPositionRewarders(t,e.pos_object_id);return{...e,...n}}async getPositionRewarders(t,e){try{let n=await this._sdk.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),r=Q(n.data).value.fields.value;return rf(r)}catch(n){console.log(n);return}}async fetchPosFeeAmount(t){let{clmm_pool:e,integrate:n,simulationAccount:i}=this.sdk.sdkOptions,r=new vi.TransactionBlock;for(let u of t){let l=[u.coinTypeA,u.coinTypeB],h=[r.object(D(e).global_config_id),r.object(u.poolAddress),r.pure(u.positionId)];r.moveCall({target:`${n.published_at}::${zt}::fetch_position_fees`,arguments:h,typeArguments:l})}if(!Nt(i.address))throw new J("this config simulationAccount is not set right","InvalidSimulateAccount");let o=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:r,sender:i.address});if(o.error!=null)throw new J(`fetch position fee error code: ${o.error??"unknown error"}, please check config and postion and pool object ids`,"InvalidPoolObject");let s=o.events?.filter(u=>q(u.type).name==="FetchPositionFeesEvent");if(s.length===0)return[];let a=[];for(let u=0;u<s.length;u+=1){let{parsedJson:l}=s[u],h={feeOwedA:new yc.default(l.fee_owned_a),feeOwedB:new yc.default(l.fee_owned_b),position_id:l.position_id};a.push(h)}return a}async batchFetchPositionFees(t){let e=[];for(let i of t){let r=await this._sdk.Position.getPositionById(i,!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 n={};if(e.length>0){let i=await this.fetchPosFeeAmount(e);for(let r of i)n[r.position_id]=r;return n}return n}async createAddLiquidityFixTokenPayload(t,e){if(!Nt(this._sdk.senderAddress))throw new J("this config sdk senderAddress is not set right","InvalidSendAddress");let n=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);if(e){let{isAdjustCoinA:i,isAdjustCoinB:r}=ds(t);if(t=t,t.fix_amount_a&&i||!t.fix_amount_a&&r)return await re.buildAddLiquidityFixTokenForGas(this._sdk,n,t,e)}return re.buildAddLiquidityFixToken(this._sdk,n,t)}async createAddLiquidityPayload(t){let{integrate:e,clmm_pool:n}=this._sdk.sdkOptions;if(!Nt(this._sdk.senderAddress))throw new J("this config sdk senderAddress is not set right","InvalidSendAddress");let i=Tt(BigInt(t.tick_lower)).toString(),r=Tt(BigInt(t.tick_upper)).toString(),o=[t.coinTypeA,t.coinTypeB],s=new vi.TransactionBlock,a=!(0,of.isValidSuiObjectId)(t.pos_id),u=BigInt(t.max_amount_a),l=BigInt(t.max_amount_b),h=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress),w=re.buildCoinForAmount(s,h,u,t.coinTypeA,!1),v=re.buildCoinForAmount(s,h,l,t.coinTypeB,!1);return a?s.moveCall({target:`${e.published_at}::${jn}::open_position_with_liquidity`,typeArguments:o,arguments:[s.object(D(n).global_config_id),s.object(t.pool_id),s.pure(i),s.pure(r),w.targetCoin,v.targetCoin,s.pure(t.max_amount_a),s.pure(t.max_amount_b),s.pure(t.delta_liquidity),s.object(G)]}):(s=re.createCollectRewarderAndFeeParams(this._sdk,s,t,h,w.remainCoins,v.remainCoins),s.moveCall({target:`${e.published_at}::${jn}::add_liquidity`,typeArguments:o,arguments:[s.object(D(n).global_config_id),s.object(t.pool_id),s.object(t.pos_id),w.targetCoin,v.targetCoin,s.pure(t.max_amount_a),s.pure(t.max_amount_b),s.pure(t.delta_liquidity),s.object(G)]})),s}async removeLiquidityTransactionPayload(t){if(!Nt(this._sdk.senderAddress))throw new J("this config sdk senderAddress is not set right","InvalidSendAddress");let{clmm_pool:e,integrate:n}=this.sdk.sdkOptions,i="remove_liquidity",r=new vi.TransactionBlock,o=[t.coinTypeA,t.coinTypeB],s=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);r=re.createCollectRewarderAndFeeParams(this._sdk,r,t,s);let a=[r.object(D(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(G)];return r.moveCall({target:`${n.published_at}::${nr}::${i}`,typeArguments:o,arguments:a}),r}async closePositionTransactionPayload(t){if(!Nt(this._sdk.senderAddress))throw new J("this config sdk senderAddress is not set right","InvalidSendAddress");let{clmm_pool:e,integrate:n}=this.sdk.sdkOptions,i=new vi.TransactionBlock,r=[t.coinTypeA,t.coinTypeB],o=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);return i=re.createCollectRewarderAndFeeParams(this._sdk,i,t,o),i.moveCall({target:`${n.published_at}::${nr}::close_position`,typeArguments:r,arguments:[i.object(D(e).global_config_id),i.object(t.pool_id),i.object(t.pos_id),i.pure(t.min_amount_a),i.pure(t.min_amount_b),i.object(G)]}),i}openPositionTransactionPayload(t){let{clmm_pool:e,integrate:n}=this.sdk.sdkOptions,i=new vi.TransactionBlock,r=[t.coinTypeA,t.coinTypeB],o=Tt(BigInt(t.tick_lower)).toString(),s=Tt(BigInt(t.tick_upper)).toString(),a=[i.pure(D(e).global_config_id),i.pure(t.pool_id),i.pure(o),i.pure(s)];return i.moveCall({target:`${n.published_at}::${nr}::open_position`,typeArguments:r,arguments:a}),i}async collectFeeTransactionPayload(t){if(!Nt(this._sdk.senderAddress))throw new J("this config sdk senderAddress is not set right","InvalidSendAddress");let e=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress,null,!0),n=new vi.TransactionBlock,i=re.buildCoinForAmount(n,e,BigInt(0),t.coinTypeA,!1),r=re.buildCoinForAmount(n,e,BigInt(0),t.coinTypeB,!1);return this.createCollectFeePaylod(t,n,i.targetCoin,r.targetCoin),n}createCollectFeePaylod(t,e,n,i){let{clmm_pool:r,integrate:o}=this.sdk.sdkOptions,s=[t.coinTypeA,t.coinTypeB],a=[e.object(D(r).global_config_id),e.object(t.pool_id),e.object(t.pos_id),n,i];return e.moveCall({target:`${o.published_at}::${jn}::collect_fee`,typeArguments:s,arguments:a}),e}async calculateFee(t){let e=await this.collectFeeTransactionPayload(t);if(!Nt(this._sdk.senderAddress))throw new J("this config sdk senderAddress is not set right","InvalidSendAddress");let n=await this._sdk.fullClient.devInspectTransactionBlock({transactionBlock:e,sender:this._sdk.senderAddress});for(let i of n.events)if(q(i.type).name==="CollectFeeEvent"){let r=i.parsedJson;return{feeOwedA:r.amount_a,feeOwedB:r.amount_b}}return{feeOwedA:"0",feeOwedB:"0"}}updateCache(t,e,n=Ue){let i=this._cache[t];i?(i.overdueTime=he(n),i.value=e):i=new Be(e,he(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t],i=n?.isValid();if(!e&&i)return n.value;i||delete this._cache[t]}},H0=class{_sdk;growthGlobal;constructor(t){this._sdk=t,this.growthGlobal=[ie,ie,ie]}get sdk(){return this._sdk}async emissionsEveryDay(t){let n=(await this.sdk.Pool.getPool(t)).rewarder_infos;if(!n)return null;let i=[];for(let r of n){let o=Te.fromX64(new Me.default(r.emissions_per_second));i.push({emissions:Math.floor(o.toNumber()*60*60*24),coin_address:r.coinAddress})}return i}async updatePoolRewarder(t,e){let n=await this.sdk.Pool.getPool(t),i=n.rewarder_last_updated_time;if(n.rewarder_last_updated_time=e.toString(),Number(n.liquidity)===0||e.eq(new Me.default(i)))return n;let r=e.div(new Me.default(1e3)).sub(new Me.default(i)).add(new Me.default(15)),o=n.rewarder_infos;for(let s=0;s<o.length;s+=1){let a=o[s],u=Te.checkMulDivFloor(r,new Me.default(a.emissions_per_second),new Me.default(n.liquidity),128);this.growthGlobal[s]=new Me.default(a.growth_global).add(new Me.default(u))}return n}async posRewardersAmount(t,e,n){let i=Date.parse(new Date().toString()),r=await this.updatePoolRewarder(t,new Me.default(i)),o=await this.sdk.Position.getPositionRewarders(e,n);if(o===void 0)return[];let s=r.ticks_handle,a=await this.sdk.Pool.getTickDataByIndex(s,o.tick_lower_index),u=await this.sdk.Pool.getTickDataByIndex(s,o.tick_upper_index);return this.posRewardersAmountInternal(r,o,a,u)}async poolRewardersAmount(t,e){let n=Date.parse(new Date().toString()),i=await this.updatePoolRewarder(e,new Me.default(n)),r=await this.sdk.Position.getPositionList(t,[e]),o=await this.getPoolLowerAndUpperTicks(i.ticks_handle,r),s=[ie,ie,ie];for(let a=0;a<r.length;a+=1){let u=await this.posRewardersAmountInternal(i,r[a],o[0][a],o[1][a]);for(let l=0;l<3;l+=1)s[l]=s[l].add(u[l].amount_owed)}return s}posRewardersAmountInternal(t,e,n,i){let r=e.tick_lower_index,o=e.tick_upper_index,s=U0(t,n,i,r,o,this.growthGlobal),a=[],u=[];if(s.length>0){let l=Te.subUnderflowU128(s[0],new Me.default(e.reward_growth_inside_0));l.gt(new Me.default("3402823669209384634633745948738404"))&&(l=Cn);let h=Te.checkMulShiftRight(new Me.default(e.liquidity),l,64,128);a.push(s[0]),u.push({amount_owed:new Me.default(e.reward_amount_owed_0).add(h),coin_address:t.rewarder_infos[0].coinAddress})}if(s.length>1){let l=Te.subUnderflowU128(s[1],new Me.default(e.reward_growth_inside_1));l.gt(new Me.default("3402823669209384634633745948738404"))&&(l=Cn);let h=Te.checkMulShiftRight(new Me.default(e.liquidity),l,64,128);a.push(s[1]),u.push({amount_owed:new Me.default(e.reward_amount_owed_1).add(h),coin_address:t.rewarder_infos[1].coinAddress})}if(s.length>2){let l=Te.subUnderflowU128(s[2],new Me.default(e.reward_growth_inside_2));l.gt(new Me.default("3402823669209384634633745948738404"))&&(l=Cn);let h=Te.checkMulShiftRight(new Me.default(e.liquidity),l,64,128);a.push(s[2]),u.push({amount_owed:new Me.default(e.reward_amount_owed_2).add(h),coin_address:t.rewarder_infos[2].coinAddress})}return u}async batchFetchPositionRewarders(t){let e=[];for(let i of t){let r=await this._sdk.Position.getPositionById(i,!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 n={};if(e.length>0){let i=await this.fetchPosRewardersAmount(e);for(let r of i)n[r.positionId]=r.rewarderAmountOwed;return n}return n}async fetchPositionRewarders(t,e){let n={poolAddress:t.poolAddress,positionId:e,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,rewarderInfo:t.rewarder_infos};return(await this.fetchPosRewardersAmount([n]))[0].rewarderAmountOwed}async batchFetchPositionFees(t){let e=[];for(let i of t){let r=await this._sdk.Position.getPositionById(i,!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 n={};if(e.length>0){let i=await this.fetchPosFeeAmount(e);for(let r of i)n[r.position_id]=r;return n}return n}async fetchPosFeeAmount(t){let{clmm_pool:e,integrate:n,simulationAccount:i}=this.sdk.sdkOptions,r=new cs.TransactionBlock;for(let u of t){let l=[u.coinTypeA,u.coinTypeB],h=[r.object(D(e).global_config_id),r.object(u.poolAddress),r.pure(u.positionId)];r.moveCall({target:`${n.published_at}::${zt}::fetch_position_fees`,arguments:h,typeArguments:l})}let s=(await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:r,sender:i.address})).events?.filter(u=>q(u.type).name==="FetchPositionFeesEvent");if(s.length===0)return[];let a=[];for(let u=0;u<s.length;u+=1){let{parsedJson:l}=s[u],h={feeOwedA:new Me.default(l.fee_owned_a),feeOwedB:new Me.default(l.fee_owned_b),position_id:l.position_id};a.push(h)}return a}async fetchPosRewardersAmount(t){let{clmm_pool:e,integrate:n,simulationAccount:i}=this.sdk.sdkOptions,r=new cs.TransactionBlock;for(let u of t){let l=[u.coinTypeA,u.coinTypeB],h=[r.object(D(e).global_config_id),r.object(u.poolAddress),r.pure(u.positionId),r.object(G)];r.moveCall({target:`${n.published_at}::${zt}::fetch_position_rewards`,arguments:h,typeArguments:l})}if(!Nt(i.address))throw new J(`this config simulationAccount: ${i.address} is not set right`,"InvalidSimulateAccount");let o=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:r,sender:i.address});if(o.error!=null)throw new J(`fetch position rewards error code: ${o.error??"unknown error"}, please check config and params`,"InvalidConfig");let s=o.events?.filter(u=>q(u.type).name==="FetchPositionRewardsEvent");if(s.length===0)return[];if(s.length!==t.length)throw new J("valueData.length !== params.pools.length");let a=[];for(let u=0;u<s.length;u+=1){let l={poolAddress:t[u].poolAddress,positionId:t[u].positionId,rewarderAmountOwed:[]};for(let h=0;h<t[u].rewarderInfo.length;h+=1)l.rewarderAmountOwed.push({amount_owed:new Me.default(s[u].parsedJson.data[h]),coin_address:t[u].rewarderInfo[h].coinAddress});a.push(l)}return a}async fetchPoolRewardersAmount(t,e){let n=await this.sdk.Pool.getPool(e),i=await this.sdk.Position.getPositionList(t,[e]),r=[];for(let a of i)r.push({poolAddress:n.poolAddress,positionId:a.pos_object_id,rewarderInfo:n.rewarder_infos,coinTypeA:n.coinTypeA,coinTypeB:n.coinTypeB});let o=await this.fetchPosRewardersAmount(r),s=[ie,ie,ie];if(o!=null)for(let a of o)for(let u=0;u<a.rewarderAmountOwed.length;u+=1)s[u]=s[u].add(a.rewarderAmountOwed[u].amount_owed);return s}async getPoolLowerAndUpperTicks(t,e){let n=[],i=[];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);n.push(o),i.push(s)}return[n,i]}async collectRewarderTransactionPayload(t){if(!Nt(this._sdk.senderAddress))throw new J("this config sdk senderAddress is not set right","InvalidSendAddress");let e=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress,null),n=new cs.TransactionBlock;return n=re.createCollectRewarderAndFeeParams(this._sdk,n,t,e),n}createCollectRewarderPaylod(t,e,n){let{clmm_pool:i,integrate:r}=this.sdk.sdkOptions,o=D(i),s=[t.coinTypeA,t.coinTypeB];return t.rewarder_coin_types.forEach((a,u)=>{e&&e.moveCall({target:`${r.published_at}::${jn}::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),n[u],e.object(G)]})}),e}};function ss(t,e){return{pair:`${t}-${e}`,reversePair:`${e}-${t}`}}var Z0=class{graph;pathProviders;coinProviders;_coinAddressMap;poolAddressMap;_sdk;constructor(t){this.pathProviders=[],this.coinProviders={coins:[]},this.graph=new Ti.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:n,reversePair:i}=ss(t,e),r=this.poolAddressMap.get(n);if(r!=null)return{addressMap:r,direction:!0};if(r=this.poolAddressMap.get(i),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(n=>{let{paths:i}=n;i.forEach(r=>{let o=this.graph.getVertexByKey(r.base)??new Ti.GraphVertex(r.base),s=this.graph.getVertexByKey(r.quote)??new Ti.GraphVertex(r.quote);this.graph.addEdge(new Ti.GraphEdge(o,s));let a=this._coinAddressMap.get(r.base),u=this._coinAddressMap.get(r.quote);if(a!=null&&u!=null){let l=ss(r.base,r.quote).pair;this.poolAddressMap.set(l,r.addressMap)}})})}addPathProvider(t){for(let e=0;e<t.paths.length;e+=1){let{base:n,quote:i}=t.paths[e];n.localeCompare(i)<0&&(t.paths[e].base=i,t.paths[e].quote=n),n==="0x2::sui::SUI"&&(t.paths[e].base=i,t.paths[e].quote=n),i==="0x2::sui::SUI"&&(t.paths[e].base=n,t.paths[e].quote=i)}return this.pathProviders.push(t),this}addCoinProvider(t){return this.coinProviders=t,this}tokenInfo(t){return this._coinAddressMap.get(t)}getFeeRate(t,e,n){let i=ss(t,e).pair,r=this.poolAddressMap.get(i);if(r!=null){for(let[a,u]of r.entries())if(u===n)return a*100}let o=ss(t,e).reversePair,s=this.poolAddressMap.get(o);if(s!=null){for(let[a,u]of s.entries())if(u===n)return a*100}return 0}async price(t,e,n,i,r,o,s){let a=this.tokenInfo(t),u=this.tokenInfo(e);if(a===void 0||u===void 0)throw new J("From/To coin is undefined","InvalidCoin");let l=this.graph.getVertexByKey(a.address),h=this.graph.getVertexByKey(u.address),w=this.graph.findAllPath(l,h),v=Array.from(w);if(v.length===0)throw new J("No find valid path in coin graph","NotFoundPath");let T=[];for(let F=0;F<v.length;F+=1){let K=v[F];if(K.length>3)continue;let C=[],A=[],c=[],d=[];for(let g=0;g<K.length-1;g+=1){let b=K[g].value.toString(),p=K[g+1].value.toString(),m=this.getPoolAddressMapAndDirection(b,p),y=m?.addressMap,_=m?.direction;y!=null&&_!=null&&(A.push(_),C.push(b),C.push(p),y.forEach(f=>{g===0?c.push(f):d.push(f)}))}for(let g of c)if(d.length>0)for(let b of d){let p={stepNums:2,poolAB:g,poolBC:b,a2b:A[0],b2c:A[1],amount:n,byAmountIn:i,coinTypeA:C[0],coinTypeB:C[1],coinTypeC:C[3]};T.push(p)}else{let b={stepNums:1,poolAB:g,poolBC:void 0,a2b:A[0],b2c:void 0,amount:n,byAmountIn:i,coinTypeA:C[0],coinTypeB:C[1],coinTypeC:void 0};T.push(b)}}let I=T.filter(F=>F.stepNums===1),x=T.filter(F=>F.stepNums!==1),P=[];try{P=await this.getPoolWithTVL()}catch{P=[]}if(P.length>0){let F=new Map(P.map(K=>[K.poolAddress,K]));x.sort((K,C)=>{let A=0,c=0;if(F.has(K.poolAB)&&F.has(K.poolBC)){let d=F.get(K.poolAB),g=F.get(K.poolBC);A=Math.min(d.tvl,g.tvl)}if(F.has(C.poolAB)&&F.has(C.poolBC)){let d=F.get(C.poolAB),g=F.get(C.poolBC);c=Math.min(d.tvl,g.tvl)}return c-A})}if(T=[...I,...x],T.length===0){if(s!=null){let F=await this.sdk.Swap.preSwapWithMultiPool(s),K={amountIn:new Ht.default(F.estimatedAmountIn),amountOut:new Ht.default(F.estimatedAmountOut),poolAddress:[F.poolAddress],a2b:[F.aToB],rawAmountLimit:i?[F.estimatedAmountOut]:[F.estimatedAmountIn],isExceed:F.isExceed,coinType:[t,e]},C={paths:[K],partner:o,priceSlippagePoint:r};return{amountIn:new Ht.default(F.estimatedAmountIn),amountOut:new Ht.default(F.estimatedAmountOut),paths:[K],a2b:F.aToB,b2c:void 0,byAmountIn:i,isExceed:F.isExceed,targetSqrtPrice:[F.estimatedEndSqrtPrice],currentSqrtPrice:[F.estimatedStartSqrtPrice],coinTypeA:t,coinTypeB:e,coinTypeC:void 0,createTxParams:C}}throw new J("No parameters available for service downgrade","NoDowngradeNeedParams")}let O=await this.preRouterSwapA2B2C(T.slice(0,16));if(O==null){if(s!=null){let K=await this.sdk.Swap.preSwapWithMultiPool(s),C={amountIn:new Ht.default(K.estimatedAmountIn),amountOut:new Ht.default(K.estimatedAmountOut),poolAddress:[K.poolAddress],a2b:[K.aToB],rawAmountLimit:i?[K.estimatedAmountOut]:[K.estimatedAmountIn],isExceed:K.isExceed,coinType:[t,e]},A={paths:[C],partner:o,priceSlippagePoint:r};return{amountIn:new Ht.default(K.estimatedAmountIn),amountOut:new Ht.default(K.estimatedAmountOut),paths:[C],a2b:K.aToB,b2c:void 0,byAmountIn:i,isExceed:K.isExceed,targetSqrtPrice:[K.estimatedEndSqrtPrice],currentSqrtPrice:[K.estimatedStartSqrtPrice],coinTypeA:t,coinTypeB:e,coinTypeC:void 0,createTxParams:A}}return{amountIn:ie,amountOut:ie,paths:[],a2b:!1,b2c:!1,byAmountIn:i,isExceed:!0,targetSqrtPrice:[],currentSqrtPrice:[],coinTypeA:"",coinTypeB:"",coinTypeC:void 0,createTxParams:void 0}}let E=O.index,B=T[E].poolBC!=null?[T[E].poolAB,T[E].poolBC]:[T[E].poolAB],$=i?[O.amountMedium,O.amountOut]:[O.amountIn,O.amountMedium],Z=[];Z.push(T[E].a2b),O.stepNum>1&&Z.push(T[E].b2c);let H=[];H.push(T[E].coinTypeA),H.push(T[E].coinTypeB),O.stepNum>1&&H.push(T[E].coinTypeC);let te={amountIn:O.amountIn,amountOut:O.amountOut,poolAddress:B,a2b:Z,rawAmountLimit:$,isExceed:O.isExceed,coinType:H},U={paths:[te],partner:o,priceSlippagePoint:r};return{amountIn:O.amountIn,amountOut:O.amountOut,paths:[te],a2b:T[E].a2b,b2c:O.stepNum>1?T[E].b2c:void 0,byAmountIn:i,isExceed:O.isExceed,targetSqrtPrice:O.targetSqrtPrice,currentSqrtPrice:O.currentSqrtPrice,coinTypeA:T[E].coinTypeA,coinTypeB:T[E].coinTypeB,coinTypeC:O.stepNum>1?T[E].coinTypeC:void 0,createTxParams:U}}async preRouterSwapA2B2C(t){if(t.length===0)return null;let{integrate:e,simulationAccount:n}=this.sdk.sdkOptions,i=new sf.TransactionBlock;for(let w of t)if(w.stepNums>1){let v=[i.object(w.poolAB),i.object(w.poolBC),i.pure(w.a2b),i.pure(w.b2c),i.pure(w.byAmountIn),i.pure(w.amount.toString())],T=[];w.a2b?T.push(w.coinTypeA,w.coinTypeB):T.push(w.coinTypeB,w.coinTypeA),w.b2c?T.push(w.coinTypeB,w.coinTypeC):T.push(w.coinTypeC,w.coinTypeB),i.moveCall({target:`${e.published_at}::${Jn}::calculate_router_swap_result`,typeArguments:T,arguments:v})}else{let v=[i.pure(w.poolAB),i.pure(w.a2b),i.pure(w.byAmountIn),i.pure(w.amount.toString())],T=w.a2b?[w.coinTypeA,w.coinTypeB]:[w.coinTypeB,w.coinTypeA];i.moveCall({target:`${e.published_at}::${u0}::get_expect_swap_result`,arguments:v,typeArguments:T})}if(!Nt(n.address))throw new J("this config simulationAccount is not set right","InvalidSimulateAccount");let o=(await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:i,sender:n.address})).events?.filter(w=>q(w.type).name==="CalculatedRouterSwapResultEvent"||q(w.type).name==="ExpectSwapResultEvent");if(o.length===0)return null;let s=t[0].byAmountIn?ie:ir,a=0;for(let w=0;w<o.length;w+=1)if(!o[w].parsedJson.data.is_exceed)if(t[0].byAmountIn){let v=new Ht.default(o[w].parsedJson.data.amount_out);v.gt(s)&&(a=w,s=v)}else{let v=t[w].stepNums>1?new Ht.default(o[w].parsedJson.data.amount_in):new Ht.default(o[w].parsedJson.data.amount_in).add(new Ht.default(o[w].parsedJson.data.fee_amount));v.lt(s)&&(a=w,s=v)}let u=[],l=[];return t[a].stepNums>1?(l.push(o[a].parsedJson.data.target_sqrt_price_ab,o[a].parsedJson.data.target_sqrt_price_cd),u.push(o[a].parsedJson.data.current_sqrt_price_ab,o[a].parsedJson.data.current_sqrt_price_cd)):(l.push(o[a].parsedJson.data.after_sqrt_price),u.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:l,currentSqrtPrice:u,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 n;try{n=await fetch(e)}catch{throw new J(`Failed to get pool list with liquidity from ${e}.`,"InvalidSwapCountUrl")}let i;try{i=await n.json()}catch{throw new J(`Failed tp [arse response from ${e}].`,"InvalidSwapCountUrl")}if(i.code!==200)throw new J(`Failed to get pool list from ${e}. Statu code is ${i.code}.`,"InvalidSwapCountUrl");let{pools:r}=i.data;for(let o of r)t.push({poolAddress:o.swap_account,tvl:Number(o.tvl_in_usd)});return t}};var X0=class{_sdk;constructor(t){this._sdk=t}get sdk(){return this._sdk}calculateSwapFee(t){let e=S(0);return t.forEach(n=>{let i=n.basePaths.length;if(i>0){let r=n.basePaths[0],o=r.label==="Cetus"?new N(r.feeRate).div(10**6):new N(r.feeRate).div(10**9),s=S(r.inputAmount).div(10**r.fromDecimal).mul(o);if(e=e.add(s),i>1){let a=n.basePaths[1],u=r.direction?r.currentPrice:new N(1).div(r.currentPrice),l=a.direction?a.currentPrice:new N(1).div(a.currentPrice),h=a.label==="Cetus"?new N(a.feeRate).div(10**6):new N(a.feeRate).div(10**9),v=S(a.outputAmount).div(10**a.toDecimal).mul(h).div(u.mul(l));e=e.add(v)}}}),e.toString()}calculateSwapPriceImpact(t){let e=S(0);return t.forEach(n=>{let i=n.basePaths.length;if(i===1){let r=n.basePaths[0],o=S(r.outputAmount).div(10**r.toDecimal),s=S(r.inputAmount).div(10**r.fromDecimal),a=o.div(s),u=r.direction?new N(r.currentPrice):new N(1).div(r.currentPrice);e=e.add(this.calculateSingleImpact(a,u))}if(i===2){let r=n.basePaths[0],o=n.basePaths[1],s=r.direction?new N(r.currentPrice):new N(1).div(r.currentPrice),a=o.direction?new N(o.currentPrice):new N(1).div(o.currentPrice),u=s.mul(a),l=new N(o.outputAmount).div(10**o.toDecimal),h=new N(r.inputAmount).div(10**r.fromDecimal),w=l.div(h);e=e.add(this.calculateSingleImpact(w,u))}}),e.toString()}calculateSingleImpact=(t,e)=>e.minus(t).div(e).mul(100);async preSwapWithMultiPool(t){let{integrate:e,simulationAccount:n}=this.sdk.sdkOptions,i=new wc.TransactionBlock,r=[t.coinTypeA,t.coinTypeB];for(let l=0;l<t.poolAddresses.length;l+=1){let h=[i.pure(t.poolAddresses[l]),i.pure(t.a2b),i.pure(t.byAmountIn),i.pure(t.amount)];i.moveCall({target:`${e.published_at}::${zt}::calculate_swap_result`,arguments:h,typeArguments:r})}if(!Nt(n.address))throw new J("this config simulationAccount is not set right","InvalidSimulateAccount");let o=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:i,sender:n.address});if(o.error!=null)throw new J(`pre swap with multi pools error code: ${o.error??"unknown error"}, please check config and params`,"InvalidConfig");let s=o.events?.filter(l=>q(l.type).name==="CalculatedSwapResultEvent");if(s.length===0)return null;if(s.length!==t.poolAddresses.length)throw new J("valueData.length !== params.pools.length","ParamsLengthNotEqual");let a=t.byAmountIn?ie:ir,u=0;for(let l=0;l<s.length;l+=1)if(!s[l].parsedJson.data.is_exceed)if(t.byAmountIn){let h=new ki.default(s[l].parsedJson.data.amount_out);h.gt(a)&&(u=l,a=h)}else{let h=new ki.default(s[l].parsedJson.data.amount_out);h.lt(a)&&(u=l,a=h)}return this.transformSwapWithMultiPoolData({poolAddress:t.poolAddresses[u],a2b:t.a2b,byAmountIn:t.byAmountIn,amount:t.amount,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB},s[u].parsedJson)}async preswap(t){let{integrate:e,simulationAccount:n}=this.sdk.sdkOptions,i=new wc.TransactionBlock,r=[t.coinTypeA,t.coinTypeB],o=[i.pure(t.pool.poolAddress),i.pure(t.a2b),i.pure(t.byAmountIn),i.pure(t.amount)];if(i.moveCall({target:`${e.published_at}::${zt}::calculate_swap_result`,arguments:o,typeArguments:r}),!Nt(n.address))throw new J("this config simulationAccount is not set right","InvalidSimulateAccount");let s=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:i,sender:n.address});if(s.error!=null)throw new J(`preswap error code: ${s.error??"unknown error"}, please check config and params`,"InvalidConfig");let a=s.events?.filter(u=>q(u.type).name==="CalculatedSwapResultEvent");return a.length===0?null:this.transformSwapData(t,a[0].parsedJson.data)}transformSwapData(t,e){let n=e.amount_in&&e.fee_amount?new ki.default(e.amount_in).add(new ki.default(e.fee_amount)).toString():"";return{poolAddress:t.pool.poolAddress,currentSqrtPrice:t.currentSqrtPrice,estimatedAmountIn:n,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:n}=e,i=n.amount_in&&n.fee_amount?new ki.default(n.amount_in).add(new ki.default(n.fee_amount)).toString():"";return{poolAddress:t.poolAddress,estimatedAmountIn:i,estimatedAmountOut:n.amount_out,estimatedEndSqrtPrice:n.after_sqrt_price,estimatedStartSqrtPrice:e.current_sqrt_price,estimatedFeeAmount:n.fee_amount,isExceed:n.is_exceed,amount:t.amount,aToB:t.a2b,byAmountIn:t.byAmountIn}}calculateRates(t){let{currentPool:e}=t,n=a0(e),i;t.a2b?i=t.swapTicks.sort((w,v)=>v.index-w.index):i=t.swapTicks.sort((w,v)=>w.index-v.index);let r=C0(t.a2b,t.byAmountIn,t.amount,n,i),o=!1;t.byAmountIn?o=r.amountIn.lt(t.amount):o=r.amountOut.lt(t.amount);let s=mn.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 u=ee.sqrtPriceX64ToPrice(n.currentSqrtPrice,t.decimalsA,t.decimalsB).toNumber(),l=ee.sqrtPriceX64ToPrice(r.nextSqrtPrice,t.decimalsA,t.decimalsB).toNumber(),h=Math.abs(u-l)/u*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 n=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);if(e){let{isAdjustCoinA:i,isAdjustCoinB:r}=ds(t);if(t.a2b&&i||!t.a2b&&r)return await re.buildSwapTransactionForGas(this._sdk,t,n,e)}return re.buildSwapTransaction(this.sdk,t,n)}async createSwapTransactionWithoutTransferCoinsPayload(t,e){if(this._sdk.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let n=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);if(e){let{isAdjustCoinA:i,isAdjustCoinB:r}=ds(t);if(t.a2b&&i||!t.a2b&&r)return await re.buildSwapTransactionWithoutTransferCoinsForGas(this._sdk,t,n,e)}return re.buildSwapTransactionWithoutTransferCoins(this.sdk,t,n)}},J0=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="",n=!1){return await this.factchWarpPoolList(t,e,n)}async getTokenListByCoinTypes(t){let e={},i=this.getCache("getAllRegisteredTokenList");if(i!==void 0){let o=i;for(let s of t)for(let a of o)if(Et(s)===Et(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 u=await this._sdk.fullClient.getCoinMetadata({coinType:o});if(u){let l={id:u.id,name:u.name,symbol:u.symbol,official_symbol:u.symbol,coingecko_id:"",decimals:u.decimals,project_url:"",logo_url:u.iconUrl,address:o};e[o]=l,this.updateCache(s,l,X)}}}return e}async factchTokenList(t="",e=!1){let{simulationAccount:n,token:i}=this.sdk.sdkOptions,o=this.getCache("getAllRegisteredTokenList",e);if(o!==void 0)return o;let s=t.length>0,a=512,u=0,l=[];if(i===void 0)throw Error("please config token ofsdkOptions");let h=D(i);for(;;){let w=new bc.TransactionBlock;w.moveCall({target:`${i.published_at}::coin_list::${s?"fetch_full_list_with_limit":"fetch_all_registered_coin_info_with_limit"}`,arguments:s?[w.pure(h.coin_registry_id),w.pure(t),w.pure(u),w.pure(a)]:[w.pure(h.coin_registry_id),w.pure(u),w.pure(a)]});let v=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:w,sender:n.address}),T=[];if(v.events?.forEach(I=>{q(I.type).full_address===`${i.published_at}::coin_list::FetchCoinListEvent`&&I.parsedJson.full_list.value_list.forEach(P=>{T.push(this.transformData(P,!1))})}),l=[...l,...T],T.length<a)break;u=l.length}return l}async factchPoolList(t="",e=!1){let{simulationAccount:n,token:i}=this.sdk.sdkOptions,o=this.getCache("getAllRegisteredPoolList",e);if(o!==void 0)return o;let s=[],a=512,u=0,l=t.length>0;if(i===void 0)throw Error("please config token ofsdkOptions");let h=D(i);for(;;){let w=new bc.TransactionBlock;if(w.moveCall({target:`${i.published_at}::lp_list::${l?"fetch_full_list_with_limit":"fetch_all_registered_coin_info_with_limit"}`,arguments:l?[w.pure(h.pool_registry_id),w.pure(t),w.pure(u),w.pure(a)]:[w.pure(h.pool_registry_id),w.pure(u),w.pure(a)]}),!Nt(n.address))throw new J("this config simulationAccount is not set right","InvalidSimulateAccount");let v=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:w,sender:n.address}),T=[];if(v.events?.forEach(I=>{q(I.type).full_address===`${i.published_at}::lp_list::FetchPoolListEvent`&&I.parsedJson.full_list.value_list.forEach(P=>{T.push(this.transformData(P,!0))})}),s=[...s,...T],T.length<a)break;u=s.length}return s}async factchWarpPoolList(t="",e="",n=!1){let i=await this.factchPoolList(t,n);if(i.length===0)return[];let r=await this.factchTokenList(e,n),o=[];for(let s of i){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,n=`${e}_getTokenConfigEvent`,i=this.getCache(n,t);if(i!==void 0)return i;let r=await this._sdk.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=Ci(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(u=>{let l=q(u.type);if(u.transactionModule==="coin_list")switch(l.name){case"InitListEvent":a.coin_list_owner=u.parsedJson.list_id;break;case"InitRegistryEvent":a.coin_registry_id=u.parsedJson.registry_id;break;default:break}else if(u.transactionModule==="lp_list")switch(l.name){case"InitListEvent<address>":a.pool_list_owner=u.parsedJson.list_id;break;case"InitRegistryEvent<address>":a.pool_registry_id=u.parsedJson.registry_id;break;default:break}}),a.coin_registry_id.length>0&&this.updateCache(n,a,X),a}transformData(t,e){let n={...t};if(e)try{n.coin_a_address=q(n.coin_a_address).full_address,n.coin_b_address=q(n.coin_b_address).full_address}catch{}else n.address=q(n.address).full_address;if(t.extensions){let i=t.extensions.contents;for(let r of i){let{key:o}=r,{value:s}=r;if(o==="labels")try{s=JSON.parse(decodeURIComponent(Yi.decode(s)))}catch{}o==="pyth_id"&&(s=(0,af.normalizeSuiObjectId)(s)),n[o]=s}delete n.extensions}return n}updateCache(t,e,n=Ue){let i=this._cache[t];i?(i.overdueTime=he(n),i.value=e):i=new Be(e,he(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t],i=n?.isValid();if(!e&&i)return n.value;i||delete this._cache[t]}},Y0=class{_sdk;constructor(t){this._sdk=t}get sdk(){return this._sdk}calculatePrice(t,e,n,i,r){let o=i?e:n,s=i?n:e;return r==="Cetus"?ee.sqrtPriceX64ToPrice(t,o,s):new N(t.toString()).div(new N(10).pow(new N(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(n=>({pathIndex:n.path_index,lastQuoteOutput:n.last_quote_output,percent:n.percent,basePaths:n.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 hn.default(r.current_sqrt_price.toString()),afterSqrtPrice:r.label==="Cetus"?new hn.default(r.after_sqrt_price.toString()):ie,fromDecimal:r.from_decimal,toDecimal:r.to_decimal,currentPrice:this.calculatePrice(new hn.default(r.current_sqrt_price.toString()),r.from_decimal,r.to_decimal,r.direction,r.label)})),inputAmount:n.input_amount,outputAmount:n.output_amount}))}}async fetchWithTimeout(t,e,n){let i=new AbortController,r=setTimeout(()=>i.abort(),n);try{let o=await fetch(t,{...e,signal:i.signal});return clearTimeout(r),o}catch{return null}}async fetchAndParseData(t,e){try{let i=await this.fetchWithTimeout(t,e,1500);return i.status===200?this.parseJsonResult(await i.json()):null}catch{return null}}async getBestRouter(t,e,n,i,r,o,s,a,u=!1,l=!1,h=[]){let w=null,v="v2",T={},I=this.sdk.sdkOptions.aggregatorUrl;if(h.length>0){let x=new URL(I);I=`${x.protocol}//${x.hostname}/router_with_lp_changes`,T={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:t,to:e,amount:n,by_amount_in:i,order_split:u,external_router:l,sender_address:"None",request_id:encodeURIComponent(is()),lp_changes:h})}}else I=`
4
- ${I}?from=${encodeURIComponent(t)}&to=${encodeURIComponent(e)}&amount=${encodeURIComponent(n)}&by_amount_in=${encodeURIComponent(i)}&order_split=${encodeURIComponent(u)}&external_router=${encodeURIComponent(l)}&sender_address=''&request_id=${encodeURIComponent(is())}
5
- `;if(w=await this.fetchAndParseData(I,T),w?.isTimeout||w==null){let x=await this.sdk.Router.price(t,e,new hn.default(n),i,r,o,a),P=[];for(let E of x.paths){let B=[];if(E.poolAddress.length>1){let Z=this.sdk.Router.tokenInfo(E.coinType[0]).decimals,H=this.sdk.Router.tokenInfo(E.coinType[1]).decimals,te=E.a2b[0]?ee.sqrtPriceX64ToPrice(new hn.default(x.currentSqrtPrice[0]),Z,H):ee.sqrtPriceX64ToPrice(new hn.default(x.currentSqrtPrice[0]),H,Z),U={direction:E.a2b[0],label:"Cetus",poolAddress:E.poolAddress[0],fromCoin:E.coinType[0],toCoin:E.coinType[1],feeRate:this.sdk.Router.getFeeRate(E.coinType[0],E.coinType[1],E.poolAddress[0]),outputAmount:x.byAmountIn?E.rawAmountLimit[0].toString():E.rawAmountLimit[1].toString(),inputAmount:E.amountIn.toString(),currentSqrtPrice:x.currentSqrtPrice[0],currentPrice:te,fromDecimal:Z,toDecimal:H},V=this.sdk.Router.tokenInfo(E.coinType[1]).decimals,F=this.sdk.Router.tokenInfo(E.coinType[2]).decimals,K=E.a2b[1]?ee.sqrtPriceX64ToPrice(new hn.default(x.currentSqrtPrice[1]),V,F):ee.sqrtPriceX64ToPrice(new hn.default(x.currentSqrtPrice[1]),F,V),C={direction:E.a2b[1],label:"Cetus",poolAddress:E.poolAddress[1],fromCoin:E.coinType[1],toCoin:E.coinType[2],feeRate:this.sdk.Router.getFeeRate(E.coinType[1],E.coinType[2],E.poolAddress[1]),outputAmount:E.amountOut.toString(),inputAmount:x.byAmountIn?E.rawAmountLimit[0].toString():E.rawAmountLimit[1].toString(),currentSqrtPrice:x.currentSqrtPrice[1],currentPrice:K,fromDecimal:V,toDecimal:F};B.push(U,C)}else{let Z=this.sdk.Router.tokenInfo(E.coinType[0]).decimals,H=this.sdk.Router.tokenInfo(E.coinType[1]).decimals,te=E.a2b[0]?ee.sqrtPriceX64ToPrice(new hn.default(x.currentSqrtPrice[0]),Z,H):ee.sqrtPriceX64ToPrice(new hn.default(x.currentSqrtPrice[0]),H,Z),U={direction:E.a2b[0],label:"Cetus",poolAddress:E.poolAddress[0],fromCoin:E.coinType[0],toCoin:E.coinType[1],feeRate:this.sdk.Router.getFeeRate(E.coinType[0],E.coinType[1],E.poolAddress[0]),outputAmount:E.amountOut.toString(),inputAmount:E.amountIn.toString(),currentSqrtPrice:x.currentSqrtPrice[0],currentPrice:te,fromDecimal:Z,toDecimal:H};B.push(U)}let $={percent:Number(E.amountIn)/Number(x.amountIn)*100,inputAmount:Number(E.amountIn.toString()),outputAmount:Number(E.amountOut.toString()),pathIndex:0,lastQuoteOutput:0,basePaths:B};P.push($)}let O={isExceed:x.isExceed,isTimeout:!0,inputAmount:Number(x.amountIn.toString()),outputAmount:Number(x.amountOut.toString()),fromCoin:x.coinTypeA,toCoin:x.coinTypeC!=null?x.coinTypeC:x.coinTypeB,byAmountIn:x.byAmountIn,splitPaths:P};v="v1",w=O}return{result:w,version:v}}},Q0=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}setTokenListCache(t){let{coin_list_handle:e}=D(this.sdk.sdkOptions.cetus_config),n=`${e}_getCoinConfigs`,i=this.getCache(n),r=i?[...i,...t]:t;this.updateCache(n,r,X)}async getTokenListByCoinTypes(t){let e={},{coin_list_handle:n}=D(this.sdk.sdkOptions.cetus_config),i=`${n}_getCoinConfigs`,r=this.getCache(i);if(r!==void 0){let s=r;for(let a of t)for(let u of s)if(Et(a)===Et(u.address)){e[a]=u;continue}}let o=t.filter(s=>e[s]===void 0);for(let s of o){let a=`${s}_metadata`,u=this.getCache(a);if(u!==void 0)e[s]=u;else{let l=await this._sdk.fullClient.getCoinMetadata({coinType:s});if(l){let h={id:l.id,pyth_id:"",name:l.name,symbol:l.symbol,official_symbol:l.symbol,coingecko_id:"",decimals:l.decimals,project_url:"",logo_url:l.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:n}=D(this.sdk.sdkOptions.cetus_config),i=`${n}_getCoinConfigs`,r=this.getCache(i,t);if(r)return r;let s=(await this._sdk.fullClient.getDynamicFieldsByPage(n)).data.map(l=>l.objectId),a=await this._sdk.fullClient.batchGetObjects(s,{showContent:!0}),u=[];return a.forEach(l=>{if(l.error!=null||l.data?.content?.dataType!=="moveObject")throw new J(`when getCoinConfigs get objects error: ${l.error}, please check the rpc and contracts address config.`,"InvalidConfig");let h=this.buildCoinConfig(l,e);this.updateCache(`${n}_${h.address}_getCoinConfig`,h,X),u.push({...h})}),this.updateCache(i,u,X),u}async getCoinConfig(t,e=!1,n=!0){let{coin_list_handle:i}=D(this.sdk.sdkOptions.cetus_config),r=`${i}_${t}_getCoinConfig`,o=this.getCache(r,e);if(o)return o;let s=await this._sdk.fullClient.getDynamicFieldObject({parentId:i,name:{type:"0x1::type_name::TypeName",value:{name:O0(t)}}});if(s.error!=null||s.data?.content?.dataType!=="moveObject")throw new J(`when getCoinConfig get object error: ${s.error}, please check the rpc and contracts address config.`,"InvalidConfig");let a=this.buildCoinConfig(s,n);return this.updateCache(r,a,X),a}buildCoinConfig(t,e=!0){let n=Q(t);n=n.value.fields;let i={...n};return i.id=Lt(t),i.address=q(n.coin_type.fields.name).full_address,n.pyth_id&&(i.pyth_id=(0,us.normalizeSuiObjectId)(n.pyth_id)),this.transformExtensions(i,n.extension_fields.fields.contents,e),delete i.coin_type,i}async getClmmPoolConfigs(t=!1,e=!0){let{clmm_pools_handle:n}=D(this.sdk.sdkOptions.cetus_config),i=`${n}_getClmmPoolConfigs`,r=this.getCache(i,t);if(r)return r;let s=(await this._sdk.fullClient.getDynamicFieldsByPage(n)).data.map(l=>l.objectId),a=await this._sdk.fullClient.batchGetObjects(s,{showContent:!0}),u=[];return a.forEach(l=>{if(l.error!=null||l.data?.content?.dataType!=="moveObject")throw new J(`when getClmmPoolsConfigs get objects error: ${l.error}, please check the rpc and contracts address config.`,"InvalidConfig");let h=this.buildClmmPoolConfig(l,e);this.updateCache(`${h.pool_address}_getClmmPoolConfig`,h,X),u.push({...h})}),this.updateCache(i,u,X),u}async getClmmPoolConfig(t,e=!1,n=!0){let{clmm_pools_handle:i}=D(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:i,name:{type:"address",value:t}}),a=this.buildClmmPoolConfig(s,n);return this.updateCache(r,a,X),a}buildClmmPoolConfig(t,e=!0){let n=Q(t);n=n.value.fields;let i={...n};return i.id=Lt(t),i.pool_address=(0,us.normalizeSuiObjectId)(n.pool_address),this.transformExtensions(i,n.extension_fields.fields.contents,e),i}async getLaunchpadPoolConfigs(t=!1,e=!0){let{launchpad_pools_handle:n}=D(this.sdk.sdkOptions.cetus_config),i=`${n}_getLaunchpadPoolConfigs`,r=this.getCache(i,t);if(r)return r;let s=(await this._sdk.fullClient.getDynamicFieldsByPage(n)).data.map(l=>l.objectId),a=await this._sdk.fullClient.batchGetObjects(s,{showContent:!0}),u=[];return a.forEach(l=>{if(l.error!=null||l.data?.content?.dataType!=="moveObject")throw new J(`when getCoinConfigs get objects error: ${l.error}, please check the rpc and contracts address config.`,"InvalidConfig");let h=this.buildLaunchpadPoolConfig(l,e);this.updateCache(`${h.pool_address}_getLaunchpadPoolConfig`,h,X),u.push({...h})}),this.updateCache(i,u,X),u}async getLaunchpadPoolConfig(t,e=!1,n=!0){let{launchpad_pools_handle:i}=D(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:i,name:{type:"address",value:t}}),a=this.buildLaunchpadPoolConfig(s,n);return this.updateCache(r,a,X),a}buildLaunchpadPoolConfig(t,e=!0){let n=Q(t);n=n.value.fields;let i={...n};i.id=Lt(t),i.pool_address=(0,us.normalizeSuiObjectId)(n.pool_address),this.transformExtensions(i,n.extension_fields.fields.contents,e);let r=[];n.social_media.fields.contents.forEach(o=>{r.push({name:o.fields.value.fields.name,link:o.fields.value.fields.link})}),i.social_media=r;try{i.regulation=decodeURIComponent(Yi.decode(i.regulation).replace(/%/g,"%25"))}catch{i.regulation=Yi.decode(i.regulation)}return i}transformExtensions(t,e,n=!0){let i=[];for(let r of e){let{key:o}=r.fields,{value:s}=r.fields;if(o==="labels")try{s=JSON.parse(decodeURIComponent(Yi.decode(s)))}catch{}n&&(t[o]=s),i.push({key:o,value:s})}delete t.extension_fields,n||(t.extensions=i)}async getCetusConfig(t=!1){let e=this._sdk.sdkOptions.cetus_config.package_id,n=`${e}_getCetusConfig`,i=this.getCache(n,t);if(i!==void 0)return i;let r=await this._sdk.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=Ci(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 u of s.data)switch(q(u.type).name){case"InitCoinListEvent":a.coin_list_id=u.parsedJson.coin_list_id;break;case"InitLaunchpadPoolsEvent":a.launchpad_pools_id=u.parsedJson.launchpad_pools_id;break;case"InitClmmPoolsEvent":a.clmm_pools_id=u.parsedJson.pools_id;break;case"InitConfigEvent":a.global_config_id=u.parsedJson.global_config_id,a.admin_cap_id=u.parsedJson.admin_cap_id;break;default:break}return a=await this.getCetusConfigHandle(a),a.clmm_pools_id.length>0&&this.updateCache(n,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(i=>{if(i.error!=null||i.data?.content?.dataType!=="moveObject")throw new J(`when getCetusConfigHandle get objects error: ${i.error}, please check the rpc and contracts address config.`,"InvalidConfigHandle");let r=Q(i),o=pn(i);switch(q(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,n=Ue){let i=this._cache[t];i?(i.overdueTime=he(n),i.value=e):i=new Be(e,he(n)),this._cache[t]=i}getCache(t,e=!1){try{let n=this._cache[t];if(!n)return;if(e||!n.isValid()){delete this._cache[t];return}return n.value}catch(n){console.error(`Error accessing cache for key ${t}:`,n);return}}},ey=class extends uf.SuiClient{async queryEventsByPage(t,e="all"){let n=[],i=!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?(n=[...n,...s.data],i=s.hasNextPage,o=s.nextCursor):i=!1}while(r&&i);return{data:n,nextCursor:o,hasNextPage:i}}async getOwnedObjectsByPage(t,e,n="all"){let i=[],r=!0,o=n==="all",s=o?null:n.cursor;do{let a=await this.getOwnedObjects({owner:t,...e,cursor:s,limit:o?null:n.limit});a.data?(i=[...i,...a.data],r=a.hasNextPage,s=a.nextCursor):r=!1}while(o&&r);return{data:i,nextCursor:s,hasNextPage:r}}async getDynamicFieldsByPage(t,e="all"){let n=[],i=!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?(n=[...n,...s.data],i=s.hasNextPage,o=s.nextCursor):i=!1}while(r&&i);return{data:n,nextCursor:o,hasNextPage:i}}async batchGetObjects(t,e,n=50){let i=[];try{for(let r=0;r<Math.ceil(t.length/n);r++){let o=await this.multiGetObjects({ids:t.slice(r*n,n*(r+1)),options:e});i=[...i,...o]}}catch(r){console.log(r)}return i}async calculationTxGas(t){let{sender:e}=t.blockData;if(e===void 0)throw Error("sdk sender is empty");let n=await this.devInspectTransactionBlock({transactionBlock:t,sender:e}),{gasUsed:i}=n.effects;return Number(i.computationCost)+Number(i.storageCost)-Number(i.storageRebate)}async sendTransaction(t,e){try{return await this.signAndExecuteTransactionBlock({transactionBlock:e,signer:t,options:{showEffects:!0,showEvents:!0}})}catch(n){console.log("error: ",n)}}async sendSimulationTransaction(t,e,n=!0){try{if(n)return await this.devInspectTransactionBlock({transactionBlock:t,sender:e});let r={ProgrammableTransaction:{inputs:t.blockData.inputs.map(u=>{let{type:l,value:h}=u;return l==="object"?cf.Inputs.SharedObjectRef({objectId:h,initialSharedVersion:0,mutable:!0}):h}),transactions:t.blockData.transactions}},o=lf.bcs.TransactionKind.serialize(r,{maxSize:131072}).toBytes(),s=Ja(o);return await this.transport.request({method:"sui_devInspectTransactionBlock",params:[e,s,null,null]})}catch(i){console.log("devInspectTransactionBlock error",i)}}},ar=class{_cache={};_rpcModule;_pool;_position;_swap;_rewarder;_router;_router_v2;_token;_config;_sdkOptions;_senderAddress="";constructor(t){this._sdkOptions=t,this._rpcModule=new ey({url:t.fullRpcUrl}),this._swap=new X0(this),this._pool=new G0(this),this._position=new W0(this),this._rewarder=new H0(this),this._router=new Z0(this),this._router_v2=new Y0(this),this._token=new J0(this),this._config=new Q0(this),gs(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,n=!0){let i=[],r=null,o=`${this.sdkOptions.fullRpcUrl}_${t}_${e}_getOwnerCoinAssets`,s=this.getCache(o,n);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(u=>{BigInt(u.balance)>0&&i.push({coinAddress:q(u.coinType).source_address,coinObjectId:u.coinObjectId,balance:BigInt(u.balance)})}),r=a.nextCursor,!a.hasNextPage)break}return this.updateCache(o,i,30*1e3),i}async getOwnerCoinBalances(t,e){let n=[];return e?n=[await this.fullClient.getBalance({owner:t,coinType:e})]:n=[...await this.fullClient.getAllBalances({owner:t})],n}updateCache(t,e,n=X){let i=this._cache[t];i?(i.overdueTime=he(n),i.value=e):i=new Be(e,he(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t],i=n?.isValid();if(!e&&i)return n.value;i||delete this._cache[t]}};var hf=require("@mysten/sui.js/utils");var vs=require("@mysten/sui.js/transactions");var Zt=require("@mysten/sui.js/transactions"),fr=require("@mysten/sui.js/utils"),Vr=ge(ke(),1);var mf=require("@mysten/sui.js/utils");var Ac=require("@mysten/sui.js/transactions");var Fn=require("@mysten/sui.js/transactions");var xn=require("@mysten/sui.js/utils"),Xt=require("@mysten/sui.js/transactions");var xc=require("@mysten/sui.js/utils");var ly=require("@mysten/sui.js/utils");var qe=ge(ke(),1);var _f=ge(ke(),1);var Ic=ge(ke(),1);var Rn=require("@mysten/sui.js/transactions"),Ai=require("@mysten/sui.js/transactions");var xi=require("@mysten/sui.js/transactions");var Oe=ge(ke(),1);var Oc=require("@mysten/sui.js/bcs"),Kr=require("@mysten/sui.js/utils"),ks=require("@mysten/sui.js/transactions");var Jt=require("@mysten/sui.js/transactions"),Tc="router",dr=1e4,Yn=class{static buildPoolImmutables(t){let{fields:e}=t.value.fields.value;return{clmm_pool_id:q(e.clmm_pool_id).address,booster_type:q(e.booster_type.fields.name).source_address,pool_id:q(e.pool_id).address,coinTypeA:q(e.coin_type_a.fields.name).source_address,coinTypeB:q(e.coin_type_b.fields.name).source_address}}static buildPoolState(t){let e=Q(t),n=[];return e.config.fields.contents.forEach(r=>{n.push({lock_day:Number(r.fields.key),multiplier:Number(S(r.fields.value).div(dr))})}),{basic_percent:Number(S(e.basic_percent).div(dr)),balances:{balances_handle:e.balances.fields.id.id,size:e.balances.fields.size},config:n,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:Lt(t)}}static buildLockNFT(t){let e=q(Lt(t)).address;return{lock_clmm_position:Nn(t),locked_nft_id:e}}static buildLockPositionInfo(t){let e=Q(t),{value:n}=e.value.fields;return{type:n.type,position_id:n.fields.position_id,start_time:Number(n.fields.start_time),lock_period:Number(n.fields.lock_period),end_time:Number(n.fields.end_time),growth_rewarder:n.fields.growth_rewarder,rewarder_owned:n.fields.rewarder_owned,is_settled:n.fields.is_settled}}static isLocked(t){return t.end_time>Date.parse(new Date().toString())/1e3}},ty=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPoolImmutables(t=!1){let{booster:e}=this._sdk.sdkOptions,n=`${e.package_id}_getPoolImmutables`,i=this.getCache(n,t),r=[];if(i!==void 0)r.push(...i);else{let o=[];(await this._sdk.ClmmSDK.fullClient.getDynamicFieldsByPage(D(e).booster_pool_handle)).data?.forEach(u=>{o.push(u.objectId)});let a=await this._sdk.ClmmSDK.fullClient.batchGetObjects(o,{showContent:!0});for(let u of a){let l=Q(u);if(l){let h=Yn.buildPoolImmutables(l);this.updateCache(`${h.pool_id}_getPoolImmutable`,h,X),r.push(h)}}}return this.updateCache(n,r,X),r}async getPoolImmutable(t){let{booster:e}=this._sdk.sdkOptions,n=`${t}_getPoolImmutable`,i=this.getCache(n);if(i!==void 0)return i;let r=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:D(e).booster_pool_handle,name:{type:"0x2::object::ID",value:t}}),o=Q(r),s=Yn.buildPoolImmutables(o);return this.updateCache(n,s,X),s}async getPools(){let t=[],n=(await this.getPoolImmutables()).map(r=>r.pool_id),i=await this._sdk.ClmmSDK.fullClient.batchGetObjects(n,{showType:!0,showContent:!0});for(let r of i){let o=Yn.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 n=`${t}_getPoolObject`,i=this.getCache(n,e),r=await this.getPoolImmutable(t);if(i!==void 0)return{...r,...i};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(n,a,X),a}async getPoolHandleId(t){let e=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),n=Q(e);return n?n.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,n={booster_config_id:"",booster_pool_handle:""};return e.length>0&&e.forEach(i=>{let r=i.parsedJson;r&&(n.booster_config_id=r.config_id)}),n.booster_pool_handle=await this.getPoolHandleId(n.booster_config_id),n}async getOwnerBoosterPositions(t,e,n){let{booster:i}=this.sdk.sdkOptions,r=[],o=[],s=`${i.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 l of a.data)if(q(Mt(l)).source_address===s&&l.data){let w=Yn.buildLockNFT(l);this.updateCache(`${w.locked_nft_id}_getBoosterPositionById`,w,X),w&&(e===void 0||e===w.lock_clmm_position.pool)&&r.push(w)}let u=await this.getLockPositionInfos(n,r.map(l=>l.locked_nft_id));for(let l of r)for(let h of u)if(l.lock_clmm_position.pos_object_id===h.position_id){o.push({...l,...h});break}return o}async getBoosterPosition(t,e){let n=`${e}_getBoosterPositionById`,i=this.getCache(n),r;if(i!==void 0)r=i;else{let s=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0,showOwner:!0}});r=Yn.buildLockNFT(s),this.updateCache(n,r,X)}let o=await this.getLockPositionInfo(t,e);return{...r,...o}}async getLockPositionInfos(t,e=[]){let n=await this._sdk.ClmmSDK.fullClient.getDynamicFieldsByPage(t),i=[],r=[];return n.data?.forEach(o=>{e.length>0?e.includes(o.name.value)&&i.push(o.objectId):i.push(o.objectId)}),i.length>0&&(await this._sdk.ClmmSDK.fullClient.batchGetObjects(i,{showContent:!0})).forEach(s=>{let a=Yn.buildLockPositionInfo(s);a&&r.push(a)}),r}async getLockPositionInfo(t,e){let n=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}});return Yn.buildLockPositionInfo(n)}calculateXCetusRewarder(t,e,n){let i=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())}),n.is_settled||e.config.forEach(a=>{a.lock_day===n.lock_period&&(i=a.multiplier)});let o=S(r).sub(n.growth_rewarder).mul(i);return S(n.rewarder_owned).add(o).toString()}lockPositionPayload(t){let{booster:e}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions,i=new vs.TransactionBlock;return i.moveCall({target:`${e.published_at}::${Tc}::lock_position`,typeArguments:[t.booster_type,t.coinTypeA,t.coinTypeB],arguments:[i.pure(D(e).booster_config_id),i.pure(D(n).global_config_id),i.pure(t.booster_pool_id),i.pure(t.clmm_pool_id),i.pure(t.clmm_position_id),i.pure(t.lock_day),i.pure(G)]}),i}canceLockPositionPayload(t){let{booster:e}=this.sdk.sdkOptions,n=new vs.TransactionBlock;return n.moveCall({target:`${e.published_at}::${Tc}::cancel_lock`,typeArguments:[t.booster_type],arguments:[n.pure(D(e).booster_config_id),n.pure(t.booster_pool_id),n.pure(t.lock_nft_id),n.pure(G)]}),n}redeemPayload(t){let{booster:e,xcetus:n}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions,r=new vs.TransactionBlock,o=D(n);return r.moveCall({target:`${e.published_at}::${Tc}::redeem`,typeArguments:[t.booster_type,t.coinTypeA,t.coinTypeB],arguments:[r.pure(D(e).booster_config_id),r.pure(D(i).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(G)]}),r}updateCache(t,e,n=Ue){let i=this._cache[t];i?(i.overdueTime=he(n),i.value=e):i=new Be(e,he(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t];if(!e&&n?.isValid())return n.value;delete this._cache[t]}},Vt="router",pf=1e9;var An=class{static priceRealToFix(t,e,n){let i=S(e-n).toNumber();return Number(S(t).div(S(10).pow(S(i))).toString())}static priceFixToReal(t,e,n){let i=S(e-n).toNumber();return Number(S(t).mul(S(10).pow(S(i))).toString())}static raiseTotalAmount(t,e,n){let i=S(e-n).abs().toNumber();return e>n?Number(S(t.total_supply).mul(t.current_price).div(S(10).pow(S(i))).toString()):Number(S(t.total_supply).mul(t.current_price).mul(S(10).pow(S(i))).toString())}static buildLaunchPadPool(t){let e=Mt(t),n=q(e),i=Q(t),r={coin_type_sale:n.type_arguments[0],coin_type_raise:n.type_arguments[1],pool_address:(0,mf.normalizeSuiObjectId)(Lt(t)),is_settle:i.is_settle,current_price:S(i.initialize_price).div(S(pf)).toString(),price:i.initialize_price,min_price:"0",max_price:"0",sale_coin_amount:i.sale_coin,raise_coin_amount:i.raise_coin,total_purchase_amount:i.reality_raise_total,total_supply:i.sale_total,min_purchase:i.min_purchase,max_purchase:i.max_purchase,complete_raise_limit:i.least_raise_amount,softcap:i.softcap,max_raise_amount:i.hardcap,sale_decimals:0,raise_decimals:0,liquidity_injection_ratio:Number(i.liquidity_rate)/1e4,is_cancel:i.is_cancel,duration_summary:{start_time:Number(i.duration_manager.fields.start_time),end_time:0,settle_end_time:0,purchase_duration:Number(i.duration_manager.fields.activity_duration),settle_duration:Number(i.duration_manager.fields.settle_duration),lock_up_duration:Number(i.duration_manager.fields.locked_duration)},white_summary:{white_handle:i.white_list.fields.users.fields.id.id,protection_hard_cap:i.white_list.fields.hard_cap_total,protection_limit_used:i.white_list.fields.purchase_total,size:Number(i.white_list.fields.users.fields.size)},unused_sale:i.unused_sale,harvest_raise:i.harvest_raise,tick_spacing:Number(i.tick_spacing),owner:i.recipient,purchase_summary:{purchase_handle:i.purchase_list.fields.id.id,size:Number(i.purchase_list.fields.size)},pool_status:"Failed"};return An.updatePoolStatus(r),r}static updatePoolStatus(t){let e=Number(S(Date.now()/1e3).toFixed(0)),{duration_summary:n}=t,i=n.start_time+n.purchase_duration,r=i+n.settle_duration;if(n.end_time=i,n.settle_end_time=r,t.is_settle)t.pool_status="Ended";else if(t.is_cancel)t.pool_status="Canceled";else if(e<n.start_time)t.pool_status="Upcoming";else if(e>n.start_time&&e<i)t.pool_status="Live";else if(e>i&&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 n=await t.ClmmSDK.CetusConfig.getTokenListByCoinTypes([e.coin_type_sale,e.coin_type_raise]),i=n[e.coin_type_sale].decimals,r=n[e.coin_type_raise].decimals;e.min_price=this.priceFixToReal(Number(S(e.softcap).div(S(e.total_supply))),i,r).toString(),e.max_price=this.priceFixToReal(Number(S(e.max_raise_amount).div(S(e.total_supply))),i,r).toString(),e.current_price=this.priceFixToReal(Number(e.current_price),i,r).toString(),e.sale_decimals=i,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(S(e.harvest_raise).equals(S(0))){let i=await t.Launchpad.getSettleEvent(e.pool_address);i&&(e.harvest_raise=i.unused_raise)}let n=(0,Vr.min)(new Vr.default(e.total_purchase_amount),new Vr.default(e.max_raise_amount));return S(n.toString()).mul(1-e.liquidity_injection_ratio).toString()}return"0"}static async getHistoryWithdrawSale(t,e){if(e.pool_status==="Ended"){let n=await t.Launchpad.getSettleEvent(e.pool_address);return n&&(e.unused_sale=n.unused_sale),e.unused_sale}return"0"}static async getOverrecruitReverseAmount(t,e){let n=await t.Launchpad.getPurchaseMarks(t.ClmmSDK.senderAddress,[e.pool_address],!1);if(n.length>0){let i=n[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 S(i).sub(r).div(S(e.total_purchase_amount).sub(o)).mul(S(e.total_purchase_amount).sub(e.max_raise_amount)).toString()}return"0"}static async getCanPurchaseAmount(t,e){let n=await An.getOverrecruitReverseAmount(t,e),i=await t.Launchpad.getPurchaseMarks(t.ClmmSDK.senderAddress,[e.pool_address],!1);if(i){let r=i[0].purchased_raise_amount;S(r).sub(n).div(e.current_price)}return"0"}},ny=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPoolImmutables(t=[],e=0,n=100,i=!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,i),a=[],u=[];if(s!==void 0&&a.push(...s),a.length===0)try{((await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${r}::factory::CreatePoolEvent`}))?.data).forEach(w=>{let v=w.parsedJson;v&&a.push({pool_address:v.pool_id,coin_type_sale:q(v.sale_coin.name).full_address,coin_type_raise:q(v.raise_coin.name).full_address})}),this.updateCache(o,a,X)}catch(h){console.log("getPoolImmutables",h)}let l=t.length>0;for(let h=0;h<a.length;h+=1){let w=a[h];if(!(l&&!t.includes(w.pool_address))){if(!l){let v=h;if(v<e||v>=e+n)continue}u.push(w)}}return u}async getPoolImmutablesWithPage(t="all",e=!1){let{package_id:n}=this._sdk.sdkOptions.launchpad,i=`${n}_getPoolImmutables`,r=[],o={data:[],hasNextPage:!1},s=t==="all";if(s){let a=this.getCache(i,e);a&&r.push(...a)}if(r.length===0)try{let a=await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${n}::factory::CreatePoolEvent`},t);o.hasNextPage=a.hasNextPage,o.nextCursor=a.nextCursor,a.data.forEach(u=>{let l=u.parsedJson;l&&r.push({pool_address:l.pool_id,coin_type_sale:q(l.sale_coin.name).full_address,coin_type_raise:q(l.raise_coin.name).full_address})})}catch(a){console.log("getPoolImmutables",a)}return o.data=r,s&&this.updateCache(i,r,X),o}async getPools(t=[],e=0,n=100){let i=[],r=[];t.length>0?r=[...t]:(await this.getPoolImmutables([],e,n,!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=An.buildLaunchPadPool(s);await An.calculatePoolPrice(this._sdk,a),i.push(a);let u=`${a.pool_address}_getPoolObject`;this.updateCache(u,a,X)}return i}async getPool(t,e=!0){let n=`${t}_getPoolObject`,i=this.getCache(n,e);if(i!==void 0){let s=i;return An.updatePoolStatus(s),s}let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),o=An.buildLaunchPadPool(r);return await An.calculatePoolPrice(this._sdk,o),this.updateCache(n,o),o}async getInitConfig(t=!1){let e=this._sdk.sdkOptions.launchpad.package_id,n=`${e}_getInitEvent`,i=this.getCache(n,t);if(i!==void 0)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=Ci(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(u=>{let l=u.parsedJson;if(l)switch(q(u.type).full_address){case`${e}::config::InitConfigEvent`:a.admin_cap_id=l.admin_cap_id,a.config_cap_id=l.config_cap_id;break;case`${e}::factory::InitFactoryEvent`:a.pools_id=l.pools_id;break;default:break}}),this.updateCache(n,a,X)),a}async getLockNFT(t,e=!1){let n=`${t}_getLockNFT`,i=this.getCache(n,e);if(i!==void 0)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}});if(!r.error)return Nn(r)}async getLockNFTList(t){let{package_id:e}=this._sdk.ClmmSDK.sdkOptions.clmm_pool,{sdkOptions:n}=this._sdk,i=[];try{let r=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${n.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}`===q(a.nft_type).address){let u=await this.getLockNFT(a.lock_nft_id);if(u){let l=q(u.coin_type_a).full_address,h=q(u.coin_type_b).full_address;i.push({...u,coin_type_a:l,coin_type_b:h,...a})}}}}return i}catch(r){return console.log("getLockNFTList:",r),[]}}async creatPoolTransactionPayload(t){let{launchpad:e}=this.sdk.sdkOptions,n=D(e);if(this.assertLuanchpadConfig(),this._sdk.ClmmSDK.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let i=An.priceRealToFix(Number(t.initialize_price),t.sale_decimals,t.raise_decimals),r=new Zt.TransactionBlock,o=S(t.total_supply).add(S(t.total_supply).mul(S(t.liquidity_rate))).toNumber(),s=await re.syncBuildCoinInputForAmount(this._sdk.ClmmSDK,r,BigInt(o),t.coin_type_sale),a=[r.pure(n.admin_cap_id),r.pure(n.config_cap_id),r.pure(n.pools_id),r.pure((0,fr.normalizeSuiAddress)(t.recipient)),r.pure((i*pf).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(G)],u=[t.coin_type_sale,t.coin_type_raise];return r.moveCall({target:`${e.published_at}::${Vt}::create_launch_pool`,typeArguments:u,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 n=new Zt.TransactionBlock,i=await re.syncBuildCoinInputForAmount(this._sdk.ClmmSDK,n,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=[n.pure(t.pool_address),n.pure(D(e).config_cap_id),n.pure(r.id),i,n.pure(t.purchase_amount.toString()),n.pure(G)]:s=[n.pure(t.pool_address),n.pure(D(e).config_cap_id),i,n.pure(t.purchase_amount.toString()),n.pure(G)],n.moveCall({target:`${e.published_at}::${Vt}::${r===void 0?"create_and_purchase":"purchase"}`,typeArguments:o,arguments:s}),n}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 n=(await this.getPurchaseMarks(this._sdk.ClmmSDK.senderAddress,[t.pool_address],!1))[0],i=new Zt.TransactionBlock,r=[t.coin_type_sale,t.coin_type_raise],o=[i.pure(t.pool_address),i.pure(D(e).config_cap_id),i.pure(n?.id),i.pure(G)];return i.moveCall({target:`${e.published_at}::${Vt}::claim`,typeArguments:r,arguments:o}),i}async creatSettlePayload(t){let{launchpad:e}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions;if(this._sdk.ClmmSDK.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");this.assertLuanchpadConfig();let i=D(n),{clmm_args:r}=t,o=new Zt.TransactionBlock;o.setSender(this.sdk.ClmmSDK.senderAddress);let s=[t.coin_type_sale,t.coin_type_raise];if(r){let a=r.opposite?ee.priceToSqrtPriceX64(S(1).div(r.current_price),r.raise_decimals,r.sale_decimals).toString():ee.priceToSqrtPriceX64(S(r.current_price),r.sale_decimals,r.raise_decimals).toString(),u=BigInt(a)<BigInt(r.clmm_sqrt_price),l=r.opposite?u?t.coin_type_raise:t.coin_type_sale:u?t.coin_type_sale:t.coin_type_raise,h=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress,l),w=we.calculateTotalBalance(h);we.isSuiCoin(l)&&(w-=BigInt(2e8));let T=re.buildCoinForAmount(o,h,w,l).targetCoin,I=r.opposite?u?"settle_with_reverse_clmm_only_with_a":"settle_with_reverse_clmm_only_with_b":u?"settle_only_with_a":"settle_only_with_b",x=[o.pure(t.pool_address),o.pure(D(e).config_cap_id),o.pure(r.clmm_pool_address),o.pure(i.global_config_id),o.pure(a),T,o.pure(G)];o.moveCall({target:`${e.published_at}::${Vt}::${I}`,typeArguments:s,arguments:x})}else o.moveCall({target:`${e.published_at}::${Vt}::settle`,typeArguments:s,arguments:[o.pure(t.pool_address),o.pure(D(e).config_cap_id),o.pure(G)]});return o}creatWithdrawPayload(t){let{launchpad:e}=this.sdk.sdkOptions,n=new Zt.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise],r=[n.object(t.pool_address),n.object(D(e).config_cap_id),n.object(G)];return t.sale_amount>BigInt(0)&&n.moveCall({target:`${e.published_at}::${Vt}::withdraw_sale`,typeArguments:i,arguments:r}),t.raise_amount>BigInt(0)&&n.moveCall({target:`${e.published_at}::${Vt}::withdraw_raise`,typeArguments:i,arguments:r}),n}addUserToWhitelisPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let n=new Zt.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise];return t.user_addrs.forEach(r=>{let o=[n.object(D(e).admin_cap_id),n.object(D(e).config_cap_id),n.object(t.pool_address),n.object(r),n.pure(t.safe_limit_amount),n.object(G)];n.moveCall({target:`${e.published_at}::${Vt}::add_user_to_whitelist`,typeArguments:i,arguments:o})}),n}updateWhitelistCapPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let n=new Zt.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise];return t.safe_limit_amount>0&&n.moveCall({target:`${e.published_at}::${Vt}::update_whitelist_member_safe_limit_amount`,typeArguments:i,arguments:[n.object(D(e).admin_cap_id),n.object(D(e).config_cap_id),n.object(t.pool_address),n.pure(t.white_list_member),n.pure(t.safe_limit_amount),n.object(G)]}),t.hard_cap_total>0&&n.moveCall({target:`${e.published_at}::${Vt}::update_whitelist_hard_cap_total`,typeArguments:i,arguments:[n.object(D(e).admin_cap_id),n.object(D(e).config_cap_id),n.object(t.pool_address),n.pure(t.hard_cap_total),n.object(G)]}),n}creatRemoveWhitelistPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let n=new Zt.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise];return t.user_addrs.forEach(r=>{let o=[n.object(D(e).admin_cap_id),n.object(D(e).config_cap_id),n.object(t.pool_address),n.object(r),n.object(G)];n.moveCall({target:`${e.published_at}::${Vt}::remove_user_from_whitelist`,typeArguments:i,arguments:o})}),n}creatCancelPoolPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let n=new Zt.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise],r=[n.pure(D(e).admin_cap_id),n.pure(D(e).config_cap_id),n.pure(t.pool_address),n.pure(G)];return n.moveCall({target:`${e.published_at}::${Vt}::cancel`,typeArguments:i,arguments:r}),n}updateRecipientPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let n=new Zt.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise],r=[n.pure(D(e).admin_cap_id),n.pure(D(e).config_cap_id),n.pure(t.pool_address),n.pure(t.new_recipient),n.pure(G)];return n.moveCall({target:`${e.published_at}::${Vt}::update_recipient_address`,typeArguments:i,arguments:r}),n}updatePoolDuractionPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let n=new Zt.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise],r=[n.pure(D(e).admin_cap_id),n.pure(D(e).config_cap_id),n.pure(t.pool_address),n.pure(t.activity_duration),n.pure(t.settle_duration),n.pure(t.lock_duration),n.pure(G)];return n.moveCall({target:`${e.published_at}::${Vt}::update_pool_duration`,typeArguments:i,arguments:r}),n}creatUnlockNftPayload(t){let{launchpad:e}=this.sdk.sdkOptions;if(D(e)===void 0)throw Error("getPackagerConfigs(launchpad) is null");let n=new Zt.TransactionBlock,i=[t.nft_type],r=[n.pure(t.lock_nft),n.pure(G)];return n.moveCall({target:`${e.published_at}::lock::unlock_nft`,typeArguments:i,arguments:r}),n}async isAdminCap(t){let{launchpad:e}=this._sdk.sdkOptions;if(D(e)===void 0)throw Error("launchpad config is empty");let n=`${t}_isAdminCap`,i=this.getCache(n);if(i)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:D(e).admin_cap_id,options:{showType:!0,showOwner:!0}});console.log(r);let o=pn(r),s=sr(r),a=!1;return s&&o&&q(o).source_address===`${e.package_id}::config::AdminCap`&&(a=(0,fr.normalizeSuiAddress)(s.AddressOwner)===(0,fr.normalizeSuiAddress)(t)),this.updateCache(n,a,X),a}async isWhiteListUser(t,e){let n={type:"address",value:e};try{let i=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:n});return!!(i&&i.data)}catch{return!1}}async getPurchaseAmount(t,e){let n={type:"address",value:e};try{let i=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:n}),r=Q(i);if(console.log(r),r)return r?.value?.fields}catch{}return{safe_limit_amount:"0",safe_purchased_amount:"0"}}async getPurchaseMarks(t,e=[],n=!0){let{launchpad:i}=this._sdk.sdkOptions,r=`${e}_getPurchaseMark`,o=this.getCache(r,n);if(!n&&o!==void 0)return o;let s=null,a=[];for(;;){let u=await this._sdk.ClmmSDK.fullClient.getOwnedObjects({owner:t,options:{showType:!0,showContent:!0,showDisplay:!0},cursor:s});for(let l of u.data){let{fields:h}=l.data.content;if(q(Mt(l)).source_address===`${i.package_id}::pool::PurchaseMark`){console.log("fields: ",h);let v={id:h.id.id,pool_id:q(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(u.hasNextPage)s=u.nextCursor;else break}return this.updateCache(r,a,X),a}async getSettleEvent(t){let{launchpad:e}=this._sdk.sdkOptions,n=`${t}_getPurchaseMark`,i=this.getCache(n);if(i!==void 0)return i;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,fr.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(n,a,X),a}}}buildLaunchpadCoinType(t,e){return rr(this._sdk.sdkOptions.launchpad.package_id,"pool","PoolLiquidityCoin",[t,e])}assertLuanchpadConfig(){let{launchpad:t}=this.sdk.sdkOptions;if(D(t)===void 0)throw Error("sdk getPackagerConfigs(launchpad) is null")}updateCache(t,e,n=Ue){let i=this._cache[t];i?(i.overdueTime=he(n),i.value=e):i=new Be(e,he(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t];if(!e&&n?.isValid())return n.value;delete this._cache[t]}},Qn=class{static buildPoolImmutables(t){let{fields:e}=t.value.fields.value;return{clmm_pool_id:q(e.clmm_pool_id).address,bonus_type:q(e.bonus_type.fields.name).source_address,pool_id:q(e.pool_id).address,coinTypeA:q(e.coin_type_a.fields.name).source_address,coinTypeB:q(e.coin_type_b.fields.name).source_address}}static buildPoolState(t){let e=Q(t),n=[];return e.config.fields.contents.forEach(r=>{n.push({rate:Number(S(r.fields.key).div(dr)),multiplier:Number(S(r.fields.value).div(dr))})}),{balance:e.balance,config:n,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(S(e.minimum_percent_to_reward).div(dr)),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,n=[],i=t.id.id;return e.forEach(r=>{let{key:o,value:s}=r.fields,a={id:o,period_id:i,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(S(s.fields.percent).div(dr)),fee_share_rate:0,is_redeemed:s.fields.is_redeemed};n.push(a)}),n}static buildPoolBonusInfo(t){let{fields:e,type:n}=t.value.fields.value;return{type:n,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 n=0;for(let i of t)e>=i.rate&&i.rate>n&&(n=i.multiplier);return n}},df="router",iy=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPoolImmutables(t=!1){let{maker_bonus:e}=this._sdk.sdkOptions,n=`${e.package_id}_getPoolImmutables`,i=this.getCache(n,t),r=[];if(i!==void 0)r.push(...i);else{let o=[];(await this._sdk.ClmmSDK.fullClient.getDynamicFieldsByPage(D(e).maker_pool_handle)).data?.forEach(u=>{o.push(u.objectId)});let a=await this._sdk.ClmmSDK.fullClient.batchGetObjects(o,{showContent:!0});for(let u of a){let l=Q(u);l&&r.push(Qn.buildPoolImmutables(l))}}return r}async getPoolImmutable(t){let{maker_bonus:e}=this._sdk.sdkOptions,n=`${e.package_id}_getPoolImmutables`,i=this.getCache(n);if(i!==void 0){let s=i.filter(a=>t===a.pool_id);if(s.length>0)return s[0]}let r=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:D(e).maker_pool_handle,name:{type:"0x2::object::ID",value:t}}),o=Q(r);return Qn.buildPoolImmutables(o)}async getPools(){let t=[],e=await this.getPoolImmutables(),n=e.map(o=>o.pool_id),i=await this._sdk.ClmmSDK.fullClient.batchGetObjects(n,{showType:!0,showContent:!0}),r=0;for(let o of i){let s=Qn.buildPoolState(o);if(s){let a={...e[r],...s};t.push(a);let u=`${a.pool_id}_getPoolObject`;this.updateCache(u,a,X)}r+=1}return t}async getPool(t,e=!0){let n=`${t}_getPoolObject`,i=this.getCache(n,e),r=await this.getPoolImmutable(t);if(i!==void 0)return i;let o=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),s=Qn.buildPoolState(o),a={...r,...s};return this.updateCache(n,a,X),a}async getPoolHandleId(t){let e=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),n=Q(e);return n?n.list.fields.id.id:""}async getMakerPoolPeriods(t,e=!1){let n=[],i=`${t.pool_id}_getMakerPoolPeriods`,r=this.getCache(i,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(S(t.start_time).add(S(t.interval_day).mul(24*3600).mul(a.period)).toFixed(0,N.ROUND_DOWN)),a.end_time=Number(S(a.start_time).add(S(t.interval_day).mul(24*3600)).toFixed(0,N.ROUND_DOWN)),n.push(a)}),this.updateCache(i,n,X),n)}async getMakerBonusInitConfigs(){let{package_id:t}=this.sdk.sdkOptions.maker_bonus,e=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::config::InitEvent`}))?.data,n={maker_config_id:"",maker_pool_handle:""};return e.length>0&&e.forEach(i=>{let r=i.parsedJson;r&&(n.maker_config_id=r.config_id)}),n.maker_pool_handle=await this.getPoolHandleId(n.maker_config_id),n}async getPoolMarkerPositionList(t,e,n=!1){let i={},r=[];n||e.forEach(o=>{let s=`${t}_${o.period}_getPoolMarkerPositionList`,a=this.getCache(s);a!==void 0?i[o.period]=a:(i[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 u=Q(a),l=Qn.buildMarkerPositions(u);if(l.length>0){let{period_id:h}=l[0],w=e.filter(v=>v.id===h)[0];i[w.period]=l}});let o=[];for(let s in i)i[s].forEach(u=>{o.push(u)});if(o.length>0){let s=await this._sdk.ClmmSDK.Position.getSipmlePositionList(o.map(a=>a.id));for(let a of o)for(let u of s)if(a.id===u.pos_object_id){a.clmm_position=u;break}}}catch(o){console.log(o)}for(let o in i){let s=`${t}_${o}_getPoolMarkerPositionList`;this.updateCache(s,i[o],X)}return i}async updateXCetusRewarderAndFee(t,e,n){let i=await this.calculateTotalPointsAfterMultiper(t,n);for(let r of e)await this.calculateXCetusRewarder(t,r,n.period,i);return e}async calculateXCetusRewarder(t,e,n,i){let r=await this.getPoolBonusInfo(t.rewarders.rewarder_handle,n),{fee_share_rate:o}=this.calculateFeeShareRate(t,e,i),s=S(o).mul(r.total_bonus);return e.is_redeemed?e.bonus_num="0":e.bonus_num=s.toString(),e.bonus_num}calculateFeeShareRate(t,e,n){let i=Qn.getBonusPercent(t.config,e.percent),r=S(e.point).mul(i),o=S(r).div(n);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 n=await this.getPoolMarkerPositionList(t.whale_nfts.whale_nfts_handle,[e]),i=S(0),r=n[e.period];for(let o of r){let s=Qn.getBonusPercent(t.config,o.percent),a=S(o.point).mul(s);i=i.add(a)}return i.toString()}async calculateAllXCetusRewarder(t){let e=this._sdk.ClmmSDK.senderAddress,n=S(0),i=[];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 u of o){let l=s[u.period].filter(h=>e.length===0?!1:h.clmm_position?.owner===e);l.length>0&&(await this._sdk.MakerModule.updateXCetusRewarderAndFee(r,l,u),l.forEach(h=>{h.clmm_position?.position_status===vc.Exists&&S(h.bonus_num).greaterThan(0)&&(n=n.add(h.bonus_num),a.includes(h.clmm_position.pos_object_id)||a.push(h.clmm_position.pos_object_id))}))}i.push({bonus_type:r.bonus_type,pool_id:r.pool_id,nft_ids:a})}return{claimtotal:n,claimRecord:i}}async getPoolBonusInfo(t,e,n=!1){let i=`${t}_${e}_getPoolBonusInfo`,r=this.getCache(i,n);if(r!==void 0)return r;let o=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"u64",value:e.toString()}}),s=Q(o),a=Qn.buildPoolBonusInfo(s);return this.updateCache(i,a,Ue),a}claimPayload(t){let{maker_bonus:e,xcetus:n}=this.sdk.sdkOptions,i=new Ac.TransactionBlock;return i.moveCall({target:`${e.published_at}::${df}::claim`,typeArguments:[t.bonus_type],arguments:[i.pure(D(e).maker_config_id),i.pure(t.market_pool_id),i.pure(t.position_nft_id),i.pure(t.phase),i.pure(D(n).lock_manager_id),i.pure(D(n).xcetus_manager_id),i.pure(t.ve_nft_id)]}),i}claimAllPayload(t){let{maker_bonus:e,xcetus:n}=this.sdk.sdkOptions,i=new Ac.TransactionBlock;return t.whale_nfts.forEach(r=>{r.nft_ids.forEach(o=>{i.moveCall({target:`${e.published_at}::${df}::claim_all`,typeArguments:[r.bonus_type],arguments:[i.object(D(e).maker_config_id),i.object(r.pool_id),i.object(o),i.object(D(n).lock_manager_id),i.object(D(n).xcetus_manager_id),i.object(t.ve_nft_id)]})})}),i}updateCache(t,e,n=Ue){let i=this._cache[t];i?(i.overdueTime=he(n),i.value=e):i=new Be(e,he(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t];if(!e&&n?.isValid())return n.value;delete this._cache[t]}},cr="router",Cc="router",zr=24*3600,Ts=1e3,sn=1e11,Ii=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(n=>{let i=[];n.fields.value.fields.contents.forEach(r=>{i.push({coin_type:q(r.fields.key.fields.name).source_address,amount:r.fields.value})}),e.rewards.push({period:Number(n.fields.key),rewards:i})}),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(n=>{e.bonus_types.push(q(n.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:Et(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,n={id:e.id.id,type:q(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 n.lock_day=(n.locked_until_time-n.locked_start_time)/zr,n}static getAvailableXCetus(t,e){let n=S(0);return e.forEach(i=>{n=n.add(i.xcetus_amount)}),S(t.xcetus_balance).sub(n).toString()}static getWaitUnLockCetuss(t){return t.filter(e=>!Ii.isLocked(e))}static getLockingCetuss(t){return t.filter(e=>Ii.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(n=>{n.rewards.forEach(i=>{e.add(i.coin_type)})}),Array.from(e)}static getNextStartTime(t){let e=Date.now()/1e3,{start_time:n,interval_day:i}=t,r=Math.ceil((e-n)/(i*zr));return n+r*i*zr}},ry=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getOwnerVeNFT(t,e=!0){let{xcetus:n}=this.sdk.sdkOptions,i=`${t}_getLockUpManagerEvent`,r=this.getCache(i,e);if(r!==void 0)return r;let o,s=`${n.package_id}::xcetus::VeNFT`;return(await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0,showDisplay:!0},filter:{StructType:s}})).data.forEach(u=>{let l=q(Mt(u)).source_address;if(l===s&&u.data&&u.data.content){let{fields:h}=u.data.content;o={...Si(u),id:h.id.id,index:h.index,type:l,xcetus_balance:h.xcetus_balance},this.updateCache(i,o,X)}}),o}async getOwnerLockCetuss(t){let{xcetus:e}=this.sdk.sdkOptions,n=[],i=`${e.package_id}::lock_coin::LockedCoin<${this.buileCetusCoinType()}>`,r=await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0},filter:{StructType:i}});for(let o of r.data)if(q(Mt(o)).source_address===i&&o.data){let a=Ii.buildLockCetus(o.data.content);a.xcetus_amount=await this.getXCetusAmount(a.id),n.push(a)}return n}async getLockCetus(t){let e=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0}});if(e.data?.content){let n=Ii.buildLockCetus(e.data.content);return n.xcetus_amount=await this.getXCetusAmount(n.id),n}}async getOwnerCetusCoins(t){return await this._sdk.ClmmSDK.getOwnerCoinAssets(t,this.buileCetusCoinType())}mintVeNFTPayload(){let{xcetus:t}=this.sdk.sdkOptions,e=new Fn.TransactionBlock;return e.moveCall({target:`${t.published_at}::${cr}::mint_venft`,typeArguments:[],arguments:[e.pure(D(t).xcetus_manager_id)]}),e}async convertPayload(t){let{xcetus:e}=this.sdk.sdkOptions,n=new Fn.TransactionBlock,i=this.buileCetusCoinType(),r=await re.syncBuildCoinInputForAmount(this._sdk.ClmmSDK,n,BigInt(t.amount),i);return t.venft_id===void 0?n.moveCall({target:`${e.published_at}::${cr}::mint_and_convert`,typeArguments:[],arguments:[n.object(D(e).lock_manager_id),n.object(D(e).xcetus_manager_id),r,n.pure(t.amount)]}):n.moveCall({target:`${e.published_at}::${cr}::convert`,typeArguments:[],arguments:[n.object(D(e).lock_manager_id),n.object(D(e).xcetus_manager_id),r,n.pure(t.amount),n.pure(t.venft_id)]}),n}redeemLockPayload(t){let{xcetus:e}=this.sdk.sdkOptions,n=new Fn.TransactionBlock;return n.moveCall({target:`${e.published_at}::${cr}::redeem_lock`,typeArguments:[],arguments:[n.pure(D(e).lock_manager_id),n.pure(D(e).xcetus_manager_id),n.pure(t.venft_id),n.pure(t.amount),n.pure(t.lock_day),n.pure(G)]}),n}redeemPayload(t){let{xcetus:e}=this.sdk.sdkOptions,n=new Fn.TransactionBlock;return n.moveCall({target:`${e.published_at}::${cr}::redeem`,typeArguments:[],arguments:[n.pure(D(e).lock_manager_id),n.pure(D(e).xcetus_manager_id),n.pure(t.venft_id),n.pure(t.lock_id),n.pure(G)]}),n}redeemDividendPayload(t,e){let{xcetus:n,xcetus_dividends:i}=this.sdk.sdkOptions,r=new Fn.TransactionBlock;return e.forEach(o=>{r.moveCall({target:`${n.published_at}::${Cc}::redeem`,typeArguments:[o],arguments:[r.object(D(i).dividend_manager_id),r.object(t)]})}),r}redeemDividendV2Payload(t,e,n){let{xcetus_dividends:i}=this.sdk.sdkOptions,r=new Fn.TransactionBlock;return e.filter(s=>n.includes(s)).length>0&&(r=this.redeemDividendXTokenPayload(t,r)),e.forEach(s=>{n.includes(s)||r.moveCall({target:`${i.published_at}::${Cc}::redeem_v2`,typeArguments:[s],arguments:[r.object(D(i).dividend_manager_id),r.object(t),r.object(G)]})}),r}redeemDividendXTokenPayload(t,e){let{xcetus_dividends:n,xcetus:i}=this.sdk.sdkOptions,{xcetus_manager_id:r,lock_manager_id:o}=D(i),{dividend_manager_id:s}=D(n);return e=e===void 0?new Fn.TransactionBlock:e,e.moveCall({target:`${n.published_at}::${Cc}::redeem_xtoken`,typeArguments:[],arguments:[e.object(o),e.object(r),e.object(s),e.object(t),e.object(G)]}),e}buileCetusCoinType(){return`${this.sdk.sdkOptions.cetus_faucet.package_id}::cetus::CETUS`}buileXTokenCoinType(t=this._sdk.sdkOptions.xcetus.package_id,e="xcetus",n="XCETUS"){return`${t}::${e}::${n}`}cancelRedeemPayload(t){let{xcetus:e}=this.sdk.sdkOptions,n=new Fn.TransactionBlock;return n.moveCall({target:`${e.published_at}::${cr}::cancel_redeem_lock`,typeArguments:[],arguments:[n.pure(D(e).lock_manager_id),n.pure(D(e).xcetus_manager_id),n.pure(t.venft_id),n.pure(t.lock_id),n.pure(G)]}),n}async getInitConfigs(){let{package_id:t}=this.sdk.sdkOptions.xcetus,e=`${t}_getInitFactoryEvent`,n=this.getCache(e);if(n!==void 0)return n;let i=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::xcetus::InitEvent`}))?.data,r={xcetus_manager_id:"",lock_manager_id:"",lock_handle_id:""};i.length>0&&i.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=D(this.sdk.sdkOptions.xcetus).lock_manager_id,e=!1){let n=`${t}_getLockUpManager`,i=this.getCache(n,e);if(i!==void 0)return i;let r=await this.sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),o=Ii.buildLockUpManager(Q(r));return this.updateCache(n,o,X),o}async getDividendConfigs(){let{package_id:t}=this.sdk.sdkOptions.xcetus_dividends,e=`${t}_getDividendManagerEvent`,n=this.getCache(e);if(n!==void 0)return n;let i=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::dividend::InitEvent`}))?.data,r={dividend_manager_id:"",dividend_admin_id:"",dividend_settle_id:""};return i.length>0&&i.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}=D(this._sdk.sdkOptions.xcetus_dividends),n=`${e}_getDividendManager`,i=this.getCache(n,t);if(i!==void 0)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0}}),o=Q(r),s=Ii.buildDividendManager(o);return this.updateCache(n,s,X),s}async getXcetusManager(t=!0){let{xcetus_manager_id:e}=D(this._sdk.sdkOptions.xcetus),n=`${e}_getXcetusManager`,i=this.getCache(n,t);if(i)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0}}),o=Q(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(n,s),s}async getVeNFTDividendInfo(t,e){try{let n=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),i=Q(n);return Ii.buildVeNFTDividendInfo(i)}catch{return}}async redeemNum(t,e){if(BigInt(t)===BigInt(0))return{amountOut:"0",percent:"0"};let n=await this.getLockUpManager(D(this._sdk.sdkOptions.xcetus).lock_manager_id),i=S(sn).mul(S(n.max_lock_day).sub(S(e))).mul(S(n.max_percent_numerator).sub(S(n.min_percent_numerator))).div(S(n.max_lock_day).sub(S(n.min_lock_day))),r=S(sn).mul(S(n.max_percent_numerator)).sub(i).div(S(Ts)).div(sn);return{amountOut:S(r).mul(S(t)).round().toString(),percent:r.toString()}}async reverseRedeemNum(t,e){if(BigInt(t)===BigInt(0))return{amountOut:"0",percent:"0"};let n=await this.getLockUpManager(D(this._sdk.sdkOptions.xcetus).lock_manager_id),i=S(sn).mul(S(n.max_lock_day).sub(S(e))).mul(S(n.max_percent_numerator).sub(S(n.min_percent_numerator))).div(S(n.max_lock_day).sub(S(n.min_lock_day))),r=S(sn).mul(S(n.max_percent_numerator)).sub(i).div(S(Ts)).div(sn);return{amountOut:S(t).div(r).toFixed(0,N.ROUND_UP),percent:r.toString()}}async getXCetusAmount(t){let{lock_handle_id:e}=D(this._sdk.sdkOptions.xcetus),n=`${t}_getXCetusAmount`,i=this.getCache(n);if(i!==void 0)return i;try{let r=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:e,name:{type:"0x2::object::ID",value:t}}),o=Q(r);if(o){let{xcetus_amount:s}=o.value.fields.value.fields;return this.updateCache(n,s,X),s}}catch{}return"0"}async getVeNftAmount(t,e){try{let n=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),i=Q(n);if(i){let{lock_amount:r,xcetus_amount:o}=i.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 i=(await this.getDividendManager()).dividends.id,r=`${i}_${t}_getPhaseDividendInfo`,o=this._sdk.getCache(r,e);if(o)return o;try{let s=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:i,name:{type:"u64",value:t}}),a=Q(s),u=a.value.fields.value.fields,l=u.redeemed_num.fields.contents.map(T=>({name:T.fields.key.fields.name,value:T.fields.value})),h=u.bonus_types.map(T=>T.fields.name),w=u.bonus.fields.contents.map(T=>({name:T.fields.key.fields.name,value:T.fields.value})),v={id:Lt(s),phase:a.name,settled_num:u.settled_num,register_time:u.register_time,redeemed_num:l,is_settled:u.is_settled,bonus_types:h,bonus:w,phase_end_time:""};return this.updateCache(r,v),v}catch{}}updateCache(t,e,n=Ue){let i=this._cache[t];i?(i.overdueTime=he(n),i.value=e):i=new Be(e,he(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t];if(!e&&n?.isValid())return n.value;delete this._cache[t]}},oy="factory",on="oversubscribe_pool",gf=1e6,lr=1e18;var ur="router",Sc="router",ys="router";var ff={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 sy(t){return"master_address"in t}var ay="router",cy="vaults",uy=1e4;var $t=class{static buildIdoPoolImmutables(t){return{pool_address:(0,xc.normalizeSuiObjectId)(t.pool_id),coin_type_sale:q(t.sale_coin_type.name).full_address,coin_type_raise:q(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=Mt(t),n=q(e),i=Q(t);console.log("fields:",i);let r={pool_address:(0,xc.normalizeSuiObjectId)(i.id.id),coin_type_sale:n.type_arguments[0],coin_type_raise:n.type_arguments[1],tick_spacing:Number(i.tick_spacing),total_supply:i.total_supply,min_purchase:i.min_purchase_amount,max_purchase:i.max_purchase_amount},o={start_time:Number(i.duration_manager.fields.start_time),lock_up_duration:Number(i.duration_manager.fields.lock_up_duration),purchase_duration:Number(i.duration_manager.fields.purchase_duration),end_time:0};o.end_time=o.start_time+o.purchase_duration;let s={complete_raise_limit:i.complete_raise_limit,liquidity_injection_ratio:S(i.liquidity_injection_ratio).div(gf).toNumber(),current_sqrt_price_min:i.current_sqrt_price_min,current_sqrt_price_max:i.current_sqrt_price_max,owner:i.owner,sale_coin_amount:i.sale_coin,raise_coin_amount:i.raise_coin,price:i.price,current_price:i.price,duration_summary:o,is_cancelled:i.is_cancelled,is_liquidity_injected:i.is_liquidity_injected,liquidity_used_raise_amount:i.liquidity_used_raise_amount,liquidity_used_sale_amount:i.liquidity_used_sale_amount,purchase_summary:{size:Number(i.purchase_manager.fields.purchases.fields.size),purchase_handle:i.purchase_manager.fields.purchases.fields.id.id},total_purchase_amount:i.total_purchase_amount,white_summary:{white_list_id:i.white_list.fields.id.id,protection_limit_used:i.white_list.fields.protection_limit_used,protection_hard_cap:i.white_list.fields.protection_hard_cap,white_handle:i.white_list.fields.addresses.fields.id.id,size:Number(i.white_list.fields.addresses.fields.size)},pool_status:"Upcoming",max_raise_amount:"",sale_decimals:0,raise_decimals:0,is_withdrawn:i.is_withdrawn};return $t.updatePoolStatus(s),{...r,...s}}static is_init_period(t){return Number(S(Date.now()/1e3).toFixed(0))<t.start_time}static is_purchase_period(t){let e=Number(S(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(S(Date.now()/1e3).toFixed(0)),n=t.start_time+t.purchase_duration;return e>n}static is_can_inject_liquidity(t){return!t.is_cancelled&&t.liquidity_injection_ratio!==0&&$t.is_claim_period(t.duration_summary)&&!t.is_liquidity_injected}static is_can_withdraw(t){return t.is_withdrawn?!1:$t.is_sale_failed(t)?!0:(t.liquidity_injection_ratio===0||t.is_liquidity_injected)&&$t.is_claim_period(t.duration_summary)}static is_sale_failed(t){return!!(t.is_cancelled||$t.is_claim_period(t.duration_summary)&&S(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 n,i;if($t.is_sale_failed(t))n="0",i="0";else if(e.is_redeemed)n=e.obtained_sale_amount,i=e.used_raise_amount;else if(S(t.total_purchase_amount).lessThanOrEqualTo(t.max_raise_amount))n=S(e.purchased_raise_amount).mul(lr).div(t.price).toString(),i=e.purchased_raise_amount;else{let o=$t.redeemForSaleOversubcribeV2(t,e);n=o.user_obtained_sale_amount,i=o.user_used_raise_amount_ceil}n=N.floor(n);let r=N.floor(S(e.purchased_raise_amount).sub(i).toString());return{obtained_sale_amount:n,refunded_raise_amount:r}}static calculateWithdrawAmount(t){let e,n,i=S(t.total_supply).mul(t.liquidity_injection_ratio);if($t.is_sale_failed(t))e="0",n=S(i).add(t.total_supply);else{let{max_raise_amount:r}=t;S(t.total_purchase_amount).greaterThanOrEqualTo(r)?(e=S(r).sub(t.liquidity_used_raise_amount).toString(),n="0"):(e=S(t.total_purchase_amount).sub(t.liquidity_used_raise_amount),n=S(t.total_supply).add(i).sub(t.liquidity_used_sale_amount).sub($t.get_sold_amount(t)))}return{obtained_raise_amount:N.floor(e).toString(),refunded_sale_amount:N.ceil(n).toString()}}static get_sold_amount(t){return S(t.total_purchase_amount).greaterThanOrEqualTo(t.max_raise_amount)?t.total_supply:S(t.total_purchase_amount).mul(lr).div(t.price)}static redeemForSaleOversubcribe(t,e){let n=e.protection_raise_amount,i=S(e.purchased_raise_amount).sub(n),r=t.max_raise_amount,{protection_limit_used:o}=t.white_summary,s=S(r).sub(o),a=S(t.total_purchase_amount).sub(o),u=N.ceil(i.mul(s).div(a).add(n)),l=N.floor(i.mul(s).div(a).add(n));return{user_obtained_sale_amount:N.floor(S(t.total_supply).mul(l).div(r)),user_used_raise_amount_ceil:u}}static redeemForSaleOversubcribeV2(t,e){let n=e.protection_raise_amount,i=S(e.purchased_raise_amount).sub(n),r=t.max_raise_amount,{protection_limit_used:o}=t.white_summary,s=S(r).sub(o),a=S(t.total_purchase_amount).sub(o),u=S(n).mul(a).add(S(i).mul(s)).mul(lr).div(S(a).mul(t.price)),l=N.ceil(u.mul(t.price).div(lr));return{user_obtained_sale_amount:u,user_used_raise_amount_ceil:l}}static raiseTotalAmount(t){let e=S(t.sale_decimals-t.raise_decimals).abs().toNumber();return t.sale_decimals>t.raise_decimals?S(t.total_supply).mul(t.current_price).div(S(10).pow(S(e))).toString():S(t.total_supply).mul(t.current_price).mul(S(10).pow(S(e))).toString()}static updatePoolStatus(t){let e=Number(S(Date.now()/1e3).toFixed(0)),n=t.duration_summary,i=n.start_time+n.purchase_duration;t.is_cancelled?t.pool_status="Canceled":e<n.start_time?t.pool_status="Upcoming":e>n.start_time&&e<i?t.pool_status="Live":S(t.total_purchase_amount).lessThan(t.complete_raise_limit)?t.pool_status="Failed":t.pool_status="Ended"}static async calculatePoolUiPrice(t,e){let n=await t.ClmmSDK.CetusConfig.getTokenListByCoinTypes([e.coin_type_sale,e.coin_type_raise]),i=n[e.coin_type_sale].decimals,r=n[e.coin_type_raise].decimals;e.current_price=An.priceFixToReal(Number(S(e.price).div(S(lr)).toString()),i,r).toString(),e.sale_decimals=i,e.raise_decimals=r,e.max_raise_amount=this.raiseTotalAmount(e)}};var Oi=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(n=>{let i=[];n.fields.value.fields.contents.forEach(r=>{i.push({coin_type:q(r.fields.key.fields.name).source_address,amount:r.fields.value})}),e.rewards.push({period:Number(n.fields.key),rewards:i})}),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(n=>{e.bonus_types.push(q(n.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:Et(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,n={id:e.id.id,type:q(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 n.lock_day=(n.locked_until_time-n.locked_start_time)/zr,n}static getAvailableXToken(t,e){let n=S(0);return e.forEach(i=>{n=n.add(i.xtoken_amount)}),S(t.xtoken_balance).sub(n).toString()}static getWaitUnLockTokens(t){return t.filter(e=>!Oi.isLocked(e))}static getLockingTokens(t){return t.filter(e=>Oi.isLocked(e))}static buildDividendRewardTypeList(t){let e=new Set;return t.forEach(n=>{n.rewards.forEach(i=>{e.add(i.coin_type)})}),Array.from(e)}static isLocked(t){return t.locked_until_time>Date.parse(new Date().toString())/1e3}static getNextStartTime(t,e=zr){let n=Date.now()/1e3,{start_time:i,interval_day:r}=t,o=Math.ceil((n-i)/(r*e));return i+o*r*e}},qn=class{static getDefaultStrategyConfig(t){let e;switch(t){case 4:e=ff.bidAsk;break;default:e=ff.curve;break}return e}static geTickIndexRange(t,e,n,i){let r,o;switch(t=ee.getInitializableTickIndex(t,e),i){case"left":t>0?(o=S(t).sub(e).toNumber(),r=S(t).mul(S(1).add(n)).toDecimalPlaces(0).toNumber()):(o=S(t).sub(e).toNumber(),r=S(t).mul(S(1).sub(n)).toDecimalPlaces(0).toNumber());break;case"right":t>0?(o=S(t).mul(S(1).add(n)).toDecimalPlaces(0).toNumber(),r=S(t).add(e).toNumber()):(o=S(t).mul(S(1).sub(n)).toDecimalPlaces(0).toNumber(),r=S(t).add(e).toNumber());break;default:t>0?(r=S(t).mul(S(1).sub(n)).toDecimalPlaces(0).toNumber(),o=S(t).mul(S(1).add(n)).toDecimalPlaces(0).toNumber()):(r=S(t).mul(S(1).add(n)).toDecimalPlaces(0).toNumber(),o=S(t).mul(S(1).sub(n)).toDecimalPlaces(0).toNumber());break}if(r=ee.getInitializableTickIndex(r,e),o=ee.getInitializableTickIndex(o,e),r<Hd)throw Error("Tick lower value is below the minimum allowed value.");if(o>Wd)throw Error("Tick upper value is above the maximum allowed value.");return{tick_lower:r,tick_upper:o}}static getCreateLiquidityBins(t,e){let n=[];switch(e){case 4:n=qn.getCreateBidAskLiquidityBins(t);break;default:n=qn.getCreateCurveLiquidityBins(t);break}return n}static getCreateBidAskLiquidityBins(t){let e=S(Math.floor(S(t.tick_upper).sub(t.tick_lower).div(t.div_width).toNumber())).abs(),n=[],i=t.ratios,r,o;for(let s=0;s<i.length;s++){let a,u;t.tick_upper<=t.curr_tick?(u=S(t.tick_upper).sub(e.mul(s)).toNumber(),a=S(u).sub(e).toNumber()):t.tick_lower>=t.curr_tick?(a=S(t.tick_lower).add(e.mul(s)).toNumber(),u=S(t.tick_lower).add(e.mul(s+1)).toNumber()):s===4?(a=S(t.tick_lower).add(e.mul(s)).toNumber(),u=S(a).add(e.mul(2)).toNumber()):s>4?(a=S(t.tick_lower).add(e.mul(s+1)).toNumber(),u=S(a).add(e).toNumber()):(a=S(t.tick_lower).add(e.mul(s)).toNumber(),u=S(a).add(e).toNumber()),r=ee.getInitializableTickIndex(a,t.tick_spacing),o=ee.getInitializableTickIndex(u,t.tick_spacing),n.push({tick_lower:r,tick_upper:o,ratio:i[s],liquidity:"0"})}return n}static getCreateCurveLiquidityBins(t){let e=S(Math.floor(S(t.tick_upper).sub(t.tick_lower).div(t.div_width).toNumber())).abs(),n=[],i=t.ratios;for(let r=0;r<i.length;r++){let o,s;t.tick_upper<=t.curr_tick?(s=t.tick_upper,o=S(t.tick_upper).sub(e.mul(r+1)).toNumber()):t.tick_lower>=t.curr_tick?(o=t.tick_lower,s=S(o).add(e.mul(r+1)).toNumber()):(o=S(t.curr_tick).sub(e.mul(r+1)).toNumber(),s=S(t.curr_tick).add(e.mul(r+1)).toNumber()),n.push({tick_lower:ee.getInitializableTickIndex(o,t.tick_spacing),tick_upper:ee.getInitializableTickIndex(s,t.tick_spacing),ratio:i[r],liquidity:"0"})}return n}static calculateAddLiquidityInputs(t){let e=new qe.default(ee.tickIndexToSqrtPriceX64(t.curr_tick)),n=qn.calculateCoinRatios(t.curr_tick,t.liquidity_bins),i=t.liquidity_bins.map((r,o)=>{let s=n[o],a=S(t.coin_amount).mul(t.fix_amount_a?s.coinRatioA:s.coinRatioB).toFixed(0).toString();try{return{...$e.estLiquidityAndcoinAmountFromOneAmounts(r.tick_lower,r.tick_upper,new qe.default(a),t.fix_amount_a,!0,t.slippage,e),...r}}catch{return{coinAmountA:new qe.default(0),coinAmountB:new qe.default(0),tokenMaxA:new qe.default(0),tokenMaxB:new qe.default(0),liquidityAmount:new qe.default(0),fix_amount_a:!t.fix_amount_a,...r}}});return qn.fixLiquidityInputs(e,t.slippage,i,!0)}static fixLiquidityInputs(t,e,n,i){let r=n.filter(s=>s.liquidityAmount.gt(ie));if(r.length===0)return[];let o=r[0];return n.map(s=>{if(s.liquidityAmount.eq(ie)){let a=S(o.liquidityAmount.toString()).mul(s.ratio).div(o.ratio).toFixed(0),u=ee.tickIndexToSqrtPriceX64(s.tick_lower),l=ee.tickIndexToSqrtPriceX64(s.tick_upper),h=$e.getCoinAmountFromLiquidity(new qe.default(a.toString()),t,u,l,!1);return{coinAmountA:h.coinA,coinAmountB:h.coinB,liquidityAmount:new qe.default(a.toString()),fix_amount_a:s.fix_amount_a,..._s(h,or.fromDecimal(S(e).mul(100)),i)}}return s})}static calculateCoinRatios(t,e){let n=new qe.default(ee.tickIndexToSqrtPriceX64(t)),i=[],r=S(0),o=S(0),s=e.map(l=>{let h=S(nf(100,6).toString()).mul(l.ratio).toFixed(0).toString(),w=ee.tickIndexToSqrtPriceX64(l.tick_lower),v=ee.tickIndexToSqrtPriceX64(l.tick_upper),T=$e.getCoinAmountFromLiquidity(new qe.default(h),n,w,v,!0);return r=r.add(T.coinA.toString()),o=o.add(T.coinB.toString()),{...T,liquidity:h}}),a=[],u=[];return s.forEach((l,h)=>{let w={coinRatioA:r.eq(S(0))?0:S(l.coinA.toString()).div(r).toNumber(),coinRatioB:o.eq(S(0))?0:S(l.coinB.toString()).div(o).toNumber(),liquiditys:l.liquidity,tick_lower:e[h].tick_lower,tick_upper:e[h].tick_upper};i.push(w),a.push(r.eq(S(0))?0:S(l.coinA.toString()).div(r).toNumber()),u.push(o.eq(S(0))?0:S(l.coinB.toString()).div(o).toNumber())}),i}static calculateCloseMasterLiquidityInputs(t){let e=new qe.default(ee.tickIndexToSqrtPriceX64(t.curr_tick));return t.positions.map(i=>{let r=new qe.default(i.liquidity),o=ee.tickIndexToSqrtPriceX64(i.tick_lower_index),s=ee.tickIndexToSqrtPriceX64(i.tick_upper_index),a=$e.getCoinAmountFromLiquidity(r,e,o,s,!1),u=or.fromDecimal(S(t.slippage).mul(100)),{tokenMaxA:l,tokenMaxB:h}=_s(a,u,!1);return{coinAmountA:a.coinA,coinAmountB:a.coinB,tokenMaxA:l,tokenMaxB:h,liquidityAmount:r,fix_amount_a:!1}})}static calculateRemoveMasterLiquidityInputs(t){let e=new qe.default(ee.tickIndexToSqrtPriceX64(t.curr_tick)),{fix_token:n}=t;if(n){let r=t.positions.map((a,u)=>({tick_lower:a.tick_lower_index,tick_upper:a.tick_upper_index,ratio:t.ratios[u]})),o=qn.calculateCoinRatios(t.curr_tick,r),s=t.positions.map((a,u)=>{let l=o[u],h=S(n.coin_amount).mul(n.fix_amount_a?l.coinRatioA:l.coinRatioB).toFixed(0).toString();try{let w=$e.estLiquidityAndcoinAmountFromOneAmounts(a.tick_lower_index,a.tick_upper_index,new qe.default(h),n.fix_amount_a,!1,t.slippage,e);return{...w,tick_lower:a.tick_lower_index,tick_upper:a.tick_upper_index,liquidity:w.liquidityAmount.toString(),ratio:t.ratios[u]}}catch{return{coinAmountA:new qe.default(0),coinAmountB:new qe.default(0),tokenMaxA:new qe.default(0),tokenMaxB:new qe.default(0),liquidityAmount:new qe.default(0),fix_amount_a:!n.fix_amount_a,tick_lower:a.tick_lower_index,tick_upper:a.tick_upper_index,liquidity:"0",ratio:t.ratios[u]}}});return qn.fixLiquidityInputs(e,t.slippage,s,!1)}return t.positions.map((r,o)=>{let s=t.ratios[o],a=S(t.liquidity).mul(s).toFixed(0);S(a).greaterThan(r.liquidity)&&(a=r.liquidity);let u=ee.tickIndexToSqrtPriceX64(r.tick_lower_index),l=ee.tickIndexToSqrtPriceX64(r.tick_upper_index),h=$e.getCoinAmountFromLiquidity(new qe.default(a),e,u,l,!1),w=or.fromDecimal(S(t.slippage).mul(100)),{tokenMaxA:v,tokenMaxB:T}=_s(h,w,!1);return{coinAmountA:h.coinA,coinAmountB:h.coinB,tokenMaxA:v,tokenMaxB:T,liquidityAmount:new qe.default(a),fix_amount_a:!1}})}static buildMasterPosition(t){return{coin_type_a:q(t.coin_type_a.fields.name).full_address,coin_type_b:q(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:Re(BigInt(t.tick_lower_index.fields.bits)),tick_upper_index:Re(BigInt(t.tick_upper_index.fields.bits)),url:t.url}}static buildMasterNFT(t){let e=Q(t);if(e){let n={id:e.id.id,pool_id:e.pool_id,index:Number(e.index),strategy:Number(e.strategy),tick_lower_index:Re(BigInt(e.tick_lower_index)),tick_upper_index:Re(BigInt(e.tick_upper_index)),positions:[],...Si(t)};return n.positions=e.positions.map(i=>qn.buildMasterPosition(i.fields)),n}}},Sn=class{static generateNextTickRange(t,e,n){let i=t-e/2,r=t+e/2;return{new_tick_lower:Sn.getValidTickIndex(i,n),new_tick_upper:Sn.getValidTickIndex(r,n)}}static calculateDepositRatio(t,e,n){let i=ee.sqrtPriceX64ToTickIndex(n);if(i<t)return{ratioA:new N(1),ratioB:new N(0)};if(i>e)return{ratioA:new N(0),ratioB:new N(1)};let r=new _f.default(1e8),{coinAmountB:o}=$e.estLiquidityAndcoinAmountFromOneAmounts(t,e,r,!0,!0,0,n),s=ee.sqrtPriceX64ToPrice(n,0,0),a=S(r.toString()).mul(s),u=a.add(o.toString()),l=a.div(u),h=S(o.toString()).div(u);return{ratioA:l,ratioB:h}}static getValidTickIndex(t,e){if(t%e===0)return t;let n;if(t>0?n=t-t%e+e:t<0?n=t+Math.abs(t)%e-e:n=t,n%e!==0)throw new Error("Assertion failed: res % tickSpacing == 0");if(Math.abs(n)<Math.abs(t))throw new Error("Assertion failed: res.abs() >= tickIndex");return n}static get_lp_amount_by_liquidity(t,e){return t.total_supply==="0"?"0":S(t.total_supply).mul(e).div(t.liquidity).toFixed(0,N.ROUND_DOWN).toString()}static get_share_liquidity_by_amount(t,e){return t.total_supply==="0"?"0":S(e).mul(t.liquidity).div(t.total_supply).toFixed(0,N.ROUND_DOWN).toString()}static get_protocol_fee_amount(t,e){return S(e).mul(t.protocol_fee_rate).div(uy).toFixed(0,N.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:q(e.coin_type_a.fields.name).full_address,coinTypeB:q(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:Re(BigInt(e.tick_lower_index.fields.bits)),tick_upper_index:Re(BigInt(e.tick_upper_index.fields.bits)),rewards:[]}}static buildPool(t){let e=Q(t),n=pn(t),{positions:i}=e;if(e&&i.length>0){let r=Sn.buildFramsPositionNFT(i[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:q(n).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}}}},ws=class{static calculatePositionShare(t,e,n,i,r,o,s){if(e<=r||t>=o)return"0";let a=0;t<r?a=r:a=t;let u=0;e<o?u=e:u=o;let l=ee.tickIndexToSqrtPriceX64(a),h=ee.tickIndexToSqrtPriceX64(u),{coinA:w,coinB:v}=$e.getCoinAmountFromLiquidity(new Ic.default(n),new Ic.default(s),l,h,!0);return S(w.toString()).mul(i).div(1e12).add(v.toString()).toString()}static buildFramsPool(t){let e=Q(t);if(e)try{let n=[];return e.rewarders.forEach(r=>{n.push({reward_coin:q(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:Re(BigInt(e.effective_tick_lower.fields.bits)),effective_tick_upper:Re(BigInt(e.effective_tick_upper.fields.bits)),total_share:e.total_share,rewarders:n,positions:{positions_handle:e.positions.fields.id.id,size:e.positions.fields.size},sqrt_price:e.sqrt_price}}catch(n){console.log(n)}}static buildFramsPositionNFT(t){let e=Q(t);if(e){let n=e.clmm_postion.fields;return{id:e.id.id,url:n.url,pool_id:e.pool_id,coinTypeA:q(n.coin_type_a.fields.name).full_address,coinTypeB:q(n.coin_type_b.fields.name).full_address,description:n.description,name:n.name,liquidity:n.liquidity,clmm_position_id:n.id.id,clmm_pool_id:n.pool,tick_lower_index:Re(BigInt(n.tick_lower_index.fields.bits)),tick_upper_index:Re(BigInt(n.tick_upper_index.fields.bits)),rewards:[]}}}},dy=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPoolImmutables(t="all",e=!1){let{package_id:n}=this._sdk.sdkOptions.ido,i=`${n}_getPoolImmutables`,r=this.getCache(i,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:`${n}::oversubscribe_pool::CreatePoolEvent`},t);a.data.forEach(u=>{let l=u.parsedJson;if(l){let h=$t.buildIdoPoolImmutables(l);s.push(h)}}),o.hasNextPage=a.hasNextPage,o.nextCursor=a.nextCursor,this.updateCache(i,s,X)}catch(a){console.log("getPoolImmutables",a)}return o.data=s,o}async getPools(t=[],e=!1){let n=[],i=[];t.length>0?i=[...t]:(await this.getPoolImmutables("all",e)).data.forEach(s=>{i.push(s.pool_address)});let r=await this._sdk.ClmmSDK.fullClient.batchGetObjects(i,{showType:!0,showContent:!0});for(let o of r){let s=$t.buildIdoPool(o);await $t.calculatePoolUiPrice(this._sdk,s),n.push(s);let a=`${s.pool_address}_getPoolObject`;this.updateCache(a,s,X)}return n}async getPool(t,e=!0){let n=`${t}_getPoolObject`,i=this.getCache(n,e);if(i!==void 0)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),o=$t.buildIdoPool(r);return await $t.calculatePoolUiPrice(this._sdk,o),this.updateCache(n,o),o}async getIdoConfigs(t=!1){let{package_id:e}=this._sdk.sdkOptions.ido,n=`${e}_getInitEvent`,i=this.getCache(n,t);if(i!==void 0)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=Ci(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(u=>{console.log("item: ",u);let l=u.parsedJson;if(l)switch(q(u.type).full_address){case`${e}::config::InitConfigEvent`:a.admin_cap_id=l.admin_cap_id,a.package_version_id=l.package_version_id;break;case`${e}::factory::InitFactoryEvent`:a.pools_id=l.pools_id;break;default:break}}),this.updateCache(n,a,X)),a}async getPurchaseInfo(t,e,n=!0){let i=`${t}_${e}_getPurchaseInfo`,r=this.getCache(i,n);if(r)return r;try{let o=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"address",value:e}}),s=$t.buildPurchaseInfo(Q(o));return this.updateCache(i,s,Ue),s}catch{return}}async getLockNFT(t,e=!1){let n=`${t}_getLockNFT`,i=this.getCache(n,e);if(i!==void 0)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}});if(!r.error)return Nn(r)}async getLockNFTList(t){let{clmm_pool:e}=this._sdk.ClmmSDK.sdkOptions,{ido:n}=this._sdk.sdkOptions,i=[];try{let r=(await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{filter:{StructType:`${n.package_id}::lock::LockedNFT<${e.package_id}::position::Position>`},options:{showContent:!0}}))?.data;for(let o of r){let s=Q(o);if(s){let a=s.nft.fields,u={locked_at:Number(s.locked_at),lock_duration:Number(s.lock_duration),lock_nft_id:s.id.id,type:s.nft.type,...a};u.end_lock_time=u.locked_at+u.lock_duration,u.coin_type_a=q(a.coin_type_a.fields.name).full_address,u.coin_type_b=q(a.coin_type_b.fields.name).full_address,u.id=a.id.id,u.tick_lower_index=Re(BigInt(a.tick_lower_index.fields.bits)),u.tick_upper_index=Re(BigInt(a.tick_upper_index.fields.bits)),i.push(u)}}return i}catch(r){return console.log("getLockNFTList:",r),[]}}async creatPool(t){let{ido:e}=this.sdk.sdkOptions;ls((0,xn.normalizeSuiAddress)(t.coin_type_sale),(0,xn.normalizeSuiAddress)(t.coin_type_raise))&&(t.price_min=S(1).div(t.price_max).toNumber(),t.price_max=S(1).div(t.price_min).toNumber());let i=An.priceRealToFix(Number(t.price),t.sale_decimals,t.raise_decimals),r=ee.priceToSqrtPriceX64(S(t.price_min),t.sale_decimals,t.raise_decimals).toString(),o=ee.priceToSqrtPriceX64(S(t.price_max),t.sale_decimals,t.raise_decimals).toString(),s=new Xt.TransactionBlock,a=S(t.total_supply).add(S(t.total_supply).mul(S(t.liquidity_injection_ratio))).toNumber(),u=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress,t.coin_type_sale),l=re.buildCoinForAmount(s,u,BigInt(a),t.coin_type_sale,!1),h=[s.pure(D(e).admin_cap_id),s.pure(D(e).package_version_id),s.pure(D(e).pools_id),s.pure((0,xn.normalizeSuiAddress)(t.owner)),s.pure(S(i).mul(lr).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*gf).toString()),s.pure(r),s.pure(o),s.pure(t.tick_spacing.toString()),l.targetCoin,s.pure(t.protection_hard_cap.toString()),s.pure(G)],w=[t.coin_type_sale,t.coin_type_raise];return s.moveCall({target:`${e.published_at}::${oy}::create_oversubscribe_pool`,typeArguments:w,arguments:h}),s}async creatPurchasePayload(t){let{ido:e}=this.sdk.sdkOptions,n=new Xt.TransactionBlock,i=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=re.buildCoinForAmount(n,r,BigInt(t.raise_amount),t.coin_type_raise,!1),s=[t.coin_type_sale,t.coin_type_raise],a,u;return i?(u="purchase",a=[n.object(D(e).package_version_id),n.object(t.pool_address),n.object(i.purchase_certificate_id),n.pure(t.raise_amount.toString()),o.targetCoin,n.pure(G)]):(u="create_certificate_and_purchase",a=[n.object(D(e).package_version_id),n.object(t.pool_address),n.pure(t.raise_amount.toString()),o.targetCoin,n.pure(G)]),n.moveCall({target:`${e.published_at}::${on}::${u}`,typeArguments:s,arguments:a}),n}async redeemPayload(t){let{ido:e}=this.sdk.sdkOptions,n=await this.getPurchaseInfo(t.purchase_handle,this._sdk.ClmmSDK.senderAddress,!1);if(n===void 0)throw Error("get purchase certificate fail");let i=new Xt.TransactionBlock,r=[t.coin_type_sale,t.coin_type_raise],o=[i.pure(D(e).package_version_id),i.pure(t.pool_address),i.pure(n.purchase_certificate_id),i.pure(G)];return i.moveCall({target:`${e.published_at}::${on}::redeem`,typeArguments:r,arguments:o}),i}injectLiquidityPayload(t){let{ido:e}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions,i=new Xt.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=[i.pure(D(e).package_version_id),i.pure(t.pool_address),i.pure(D(n).global_config_id),i.pure(t.clmm_pool_address),i.pure(G)];return i.moveCall({target:`${e.published_at}::${on}::${o}`,typeArguments:r,arguments:s}),i}unPauseInjectLiquidity(t){let{ido:e}=this.sdk.sdkOptions,{integrate:n,clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions,r=new Xt.TransactionBlock;r.moveCall({target:`${n.published_at}::${nr}::unpause_pool`,typeArguments:[t.coin_type_a,t.coin_type_b],arguments:[r.object(D(i).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(D(e).package_version_id),r.object(t.pool_address),r.object(D(i).global_config_id),r.object(t.clmm_pool_address),r.object(G)];return r.moveCall({target:`${e.published_at}::${on}::${s}`,typeArguments:o,arguments:a}),r}async findClmmPoolForLiquidity(t){let e=null,n=!1,i=await this.sdk.ClmmSDK.Pool.getPoolImmutables();for(let r of i){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),n=!0;break}}return e&&(S(e.current_sqrt_price).lessThanOrEqualTo(t.current_sqrt_price_min)||S(e.current_sqrt_price).greaterThanOrEqualTo(t.current_sqrt_price_max))?(console.log("clmmPool: ",e.poolAddress),{is_reverse:n,clmmPool:null}):{is_reverse:n,clmmPool:e}}withdrawPayload(t){let{ido:e}=this.sdk.sdkOptions,n=new Xt.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise],r=[n.object(D(e).package_version_id),n.object(t.pool_address),n.object(G)];return n.moveCall({target:`${e.published_at}::${on}::withdraw`,typeArguments:i,arguments:r}),n}updateWhitelistCapPayload(t){let{ido:e}=this.sdk.sdkOptions,n=new Xt.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise];return t.add_whites&&t.add_whites.addresses.length>0&&n.moveCall({target:`${e.published_at}::${on}::add_white_listed_addresses`,typeArguments:i,arguments:[n.object(D(e).admin_cap_id),n.object(D(e).package_version_id),n.object(t.pool_address),n.makeMoveVec({type:"address",objects:t.add_whites.addresses.map(r=>n.object((0,xn.normalizeSuiObjectId)(r)))}),n.pure(t.add_whites.protection_limit),n.object(G)]}),t.remove_whites&&t.remove_whites.length>0&&n.moveCall({target:`${e.published_at}::${on}::remove_white_listed_addresses`,typeArguments:i,arguments:[n.object(D(e).admin_cap_id),n.object(D(e).package_version_id),n.object(t.pool_address),n.makeMoveVec({type:"address",objects:t.remove_whites.map(r=>n.object((0,xn.normalizeSuiObjectId)(r)))}),n.object(G)]}),t.update_whites&&t.update_whites.forEach(r=>{n.moveCall({target:`${e.published_at}::${on}::update_white_listed_address`,typeArguments:i,arguments:[n.object(D(e).admin_cap_id),n.object(D(e).package_version_id),n.object(t.pool_address),n.object(r.address),n.pure(r.protection_limit),n.object(G)]})}),n}creatCancelPoolPayload(t){let{ido:e}=this.sdk.sdkOptions,n=new Xt.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise],r=[n.pure(D(e).admin_cap_id),n.pure(D(e).package_version_id),n.pure(t.pool_address),n.pure(G)];return n.moveCall({target:`${e.published_at}::${on}::cancel`,typeArguments:i,arguments:r}),n}updatePoolOwnerPayload(t,e){let{ido:n}=this.sdk.sdkOptions;e=e===void 0?new Xt.TransactionBlock:e;let i=[t.coin_type_sale,t.coin_type_raise],r=[e.object(D(n).admin_cap_id),e.object(D(n).package_version_id),e.object(t.pool_address),e.object(t.new_owner),e.object(G)];return e.moveCall({target:`${n.published_at}::${on}::update_pool_owner`,typeArguments:i,arguments:r}),e}updatePoolDuractionPayload(t,e){let{ido:n}=this.sdk.sdkOptions;e=e===void 0?new Xt.TransactionBlock:e;let i=[t.coin_type_sale,t.coin_type_raise],r=[e.object(D(n).admin_cap_id),e.object(D(n).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(G)];return e.moveCall({target:`${n.published_at}::${on}::update_pool_duration`,typeArguments:i,arguments:r}),e}updateProtectionHardCapPayload(t,e){let{ido:n}=this.sdk.sdkOptions;e=e===void 0?new Xt.TransactionBlock:e;let i=[t.coin_type_sale,t.coin_type_raise],r=[e.object(D(n).admin_cap_id),e.object(D(n).package_version_id),e.object(t.pool_address),e.pure(t.protection_hard_cap),e.object(G)];return e.moveCall({target:`${n.published_at}::${on}::update_protection_hard_cap`,typeArguments:i,arguments:r}),e}unlockNftPayload(t){let{ido:e}=this.sdk.sdkOptions,n=new Xt.TransactionBlock,i=[t.nft_type],r=[n.pure(t.lock_nft_id),n.pure(G)];return n.moveCall({target:`${e.published_at}::lock::unlock_nft`,typeArguments:i,arguments:r}),n}async isAdminCap(t){let{ido:e}=this._sdk.sdkOptions,n=`${e.package_id}_${t}_isAdminCap`,i=this.getCache(n);if(i)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:D(e).admin_cap_id,options:{showType:!0,showOwner:!0}});console.log(r);let o=pn(r),s=sr(r),a=!1;return s&&o&&q(o).source_address===`${e.package_id}::config::AdminCap`&&(a=(0,xn.normalizeSuiAddress)(s.AddressOwner)===(0,xn.normalizeSuiAddress)(t)),this.updateCache(n,a,X),a}async getWhiteProtectionLimit(t,e,n=!0){let i=`${t}_${e}_getWhiteProtectionLimit`,r=this._sdk.getCache(i,n);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=Q(o);return this._sdk.updateCache(i,s.value),s.value}return}catch{return}}async getWhiteList(t,e){let n={type:"address",value:e};try{let i=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:n}),r=Q(i);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=`${D(t).admin_cap_id}_getAdminAddress`,n=this.getCache(e);if(n)return n;let i=await this._sdk.ClmmSDK.fullClient.getObject({id:D(t).admin_cap_id,options:{showType:!0,showOwner:!0}});console.log(i);let r=pn(i),o=sr(i);if(o&&r&&q(r).source_address===`${t.package_id}::config::AdminCap`){let a=(0,xn.normalizeSuiAddress)(o.AddressOwner);return this.updateCache(e,a,X),a}return""}updateCache(t,e,n=X){let i=this._cache[t];i?(i.overdueTime=he(n),i.value=e):i=new Be(e,he(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t];if(!e&&n?.isValid())return n.value;delete this._cache[t]}},fy=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getOwnerVeNFT(t,e=!0){let{xtoken:n}=this.sdk.sdkOptions,i=`${t}_getLockUpManagerEvent`,r=this.getCache(i,e);if(r!==void 0)return r;let o,s=`${n.package_id}::xtoken::VeNFT`;return(await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0,showDisplay:!0},filter:{StructType:s}})).data.forEach(u=>{let l=q(Mt(u)).source_address;if(l===s&&u.data&&u.data.content){let{fields:h}=u.data.content;o={...Si(u),id:h.id.id,index:h.index,type:l,xtoken_balance:h.xtoken_balance},this.updateCache(i,o,X)}}),o}async getOwnerLockTokens(t){let{xtoken:e}=this.sdk.sdkOptions,n=[],i=`${e.package_id}::lock_coin::LockedCoin<${this.buileTokenCoinType()}>`,r=await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0},filter:{StructType:i}});for(let o of r.data)if(q(Mt(o)).source_address===i&&o.data){let a=Oi.buildLockToken(o.data.content),u=await this.getLockXToken(a.id);u&&(a.xtoken_amount=u.xtoken_amount),n.push(a)}return n}async getLockToken(t){let e=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0}});if(e.data?.content){let n=Oi.buildLockToken(e.data.content),i=await this.getLockXToken(n.id);return i&&(n.xtoken_amount=i.xtoken_amount),n}}async getOwnerTokenCoins(t){return await this._sdk.ClmmSDK.getOwnerCoinAssets(t,this.buileTokenCoinType())}mintVeNFTPayload(){let{xtoken:t}=this.sdk.sdkOptions,e=new Rn.TransactionBlock;return e.moveCall({target:`${t.published_at}::${ur}::mint_venft`,typeArguments:[],arguments:[e.pure(D(t).xtoken_manager_id)]}),e}async convertPayload(t){let{xtoken:e}=this.sdk.sdkOptions,n=new Rn.TransactionBlock,i=this.buileTokenCoinType(),r=await re.syncBuildCoinInputForAmount(this._sdk.ClmmSDK,n,BigInt(t.amount),i);return t.venft_id===void 0?n.moveCall({target:`${e.published_at}::${ur}::mint_and_convert`,typeArguments:[],arguments:[n.object(D(e).lock_manager_id),n.object(D(e).xtoken_manager_id),r,n.pure(t.amount)]}):n.moveCall({target:`${e.published_at}::${ur}::convert`,typeArguments:[],arguments:[n.object(D(e).lock_manager_id),n.object(D(e).xtoken_manager_id),r,n.pure(t.amount),n.pure(t.venft_id)]}),n}redeemLockPayload(t){let{xtoken:e}=this.sdk.sdkOptions,n=new Rn.TransactionBlock;return n.moveCall({target:`${e.published_at}::${ur}::redeem_lock`,typeArguments:[],arguments:[n.pure(D(e).lock_manager_id),n.pure(D(e).xtoken_manager_id),n.pure(t.venft_id),n.pure(t.amount),n.pure(t.lock_day),n.pure(G)]}),n}redeemPayload(t){let{xtoken:e}=this.sdk.sdkOptions,n=new Rn.TransactionBlock;return n.moveCall({target:`${e.published_at}::${ur}::redeem`,typeArguments:[],arguments:[n.pure(D(e).lock_manager_id),n.pure(D(e).xtoken_manager_id),n.pure(t.venft_id),n.pure(t.lock_id),n.pure(G)]}),n}redeemDividendPayload(t,e){let{xtoken_dividends:n}=this.sdk.sdkOptions,i=new Rn.TransactionBlock;return e.forEach(r=>{i.moveCall({target:`${n.published_at}::${Sc}::redeem`,typeArguments:[r],arguments:[i.object(D(n).dividend_manager_id),i.object(t)]})}),i}redeemDividendV2Payload(t,e,n){let{xtoken_dividends:i}=this.sdk.sdkOptions,r=new Rn.TransactionBlock;return e.filter(s=>n.includes(s)).length>0&&(r=this.redeemDividendXTokenPayload(t,r)),e.forEach(s=>{n.includes(s)||r.moveCall({target:`${i.published_at}::${Sc}::redeem_v2`,typeArguments:[s],arguments:[r.object(D(i).dividend_manager_id),r.object(t),r.object(G)]})}),r}redeemDividendXTokenPayload(t,e){let{xtoken_dividends:n,xtoken:i}=this.sdk.sdkOptions,{xtoken_manager_id:r,lock_manager_id:o}=D(i),{dividend_manager_id:s}=D(n);return e=e===void 0?new Rn.TransactionBlock:e,e.moveCall({target:`${n.published_at}::${Sc}::redeem_xtoken`,typeArguments:[],arguments:[e.object(o),e.object(r),e.object(s),e.object(t),e.object(G)]}),e}buileTokenCoinType(){return`${this.sdk.sdkOptions.token_faucet.package_id}::token::TOKEN`}buileXTokenCoinType(t=this._sdk.sdkOptions.xtoken.package_id,e="xtoken",n="XTOKEN"){return`${t}::${e}::${n}`}cancelRedeemPayload(t){let{xtoken:e}=this.sdk.sdkOptions,n=new Rn.TransactionBlock;return n.moveCall({target:`${e.published_at}::${ur}::cancel_redeem_lock`,typeArguments:[],arguments:[n.pure(D(e).lock_manager_id),n.pure(D(e).xtoken_manager_id),n.pure(t.venft_id),n.pure(t.lock_id),n.pure(G)]}),n}async getInitConfigs(){let{package_id:t}=this.sdk.sdkOptions.xtoken,e=`${t}_getInitFactoryEvent`,n=this.getCache(e);if(n!==void 0)return n;let i=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::xtoken::InitEvent`}))?.data,r={xtoken_manager_id:"",lock_manager_id:"",lock_handle_id:""};i.length>0&&i.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=D(this.sdk.sdkOptions.xtoken).lock_manager_id,e=!1){let n=`${t}_getLockUpManagerEvent`,i=this.getCache(n,e);if(i!==void 0)return i;let r=await this.sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),o=Oi.buildLockUpManager(Q(r));return this.updateCache(n,o,X),o}async getLockInfoHandle(t){let e=`${t}_getLockInfoHandle`,n=this.getCache(e);if(n!==void 0)return n;let i="",r=await this.sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),o=Q(r);return o&&(i=o.lock_infos.fields.id.id,this.updateCache(e,i,X)),i}async getDividendConfigs(){let{package_id:t}=this.sdk.sdkOptions.xtoken_dividends,e=`${t}_getDividendManagerEvent`,n=this.getCache(e);if(n!==void 0)return n;let i=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::dividend::InitEvent`}))?.data,r={dividend_manager_id:"",dividend_admin_id:"",dividend_settle_id:""};return i.length>0&&i.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}=D(this.sdk.sdkOptions.xtoken_dividends),n=`${e}_getDividendManager`,i=this.getCache(n,t);if(i!==void 0)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0}}),o=Q(r),s=Oi.buildDividendManager(o);return this.updateCache(n,s,X),s}async getXcetusManager(t=!0){let{xtoken_manager_id:e}=D(this.sdk.sdkOptions.xtoken),n=`${e}_getXcetusManager`,i=this.getCache(n,t);if(i)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0}}),o=Q(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(n,s),s}async getVeNFTDividendInfo(t,e){try{let n=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),i=Q(n);return Oi.buildVeNFTDividendInfo(i)}catch{return}}async redeemNum(t,e){if(BigInt(t)===BigInt(0))return{amountOut:"0",percent:"0"};let n=await this.getLockUpManager(),i=S(sn).mul(S(n.max_lock_day).sub(S(e))).mul(S(n.max_percent_numerator).sub(S(n.min_percent_numerator))).div(S(n.max_lock_day).sub(S(n.min_lock_day))),r=S(sn).mul(S(n.max_percent_numerator)).sub(i).div(S(Ts)).div(sn);return{amountOut:S(r).mul(S(t)).round().toString(),percent:r.toString()}}async reverseRedeemNum(t,e){if(BigInt(t)===BigInt(0))return{amountOut:"0",percent:"0"};let n=await this.getLockUpManager(),i=S(sn).mul(S(n.max_lock_day).sub(S(e))).mul(S(n.max_percent_numerator).sub(S(n.min_percent_numerator))).div(S(n.max_lock_day).sub(S(n.min_lock_day))),r=S(sn).mul(S(n.max_percent_numerator)).sub(i).div(S(Ts)).div(sn);return{amountOut:S(t).div(r).toFixed(0,N.ROUND_UP),percent:r.toString()}}async getLockXToken(t){let{lock_handle_id:e}=D(this._sdk.sdkOptions.xtoken),n=`${t}_getXTokenAmount`,i=this.getCache(n);if(i)return i;try{let r=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:e,name:{type:"0x2::object::ID",value:t}}),o=Q(r);if(o){let s=o.value.fields.value.fields;return this.updateCache(n,s,X),s}}catch{}}async getVeNftAmount(t,e){try{let n=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),i=Q(n);if(i){let{lock_amount:r,xtoken_amount:o}=i.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 i=(await this.getDividendManager()).dividends.id,r=`${i}_${t}_getPhaseDividendInfo`,o=this._sdk.getCache(r,e);if(o)return o;try{let s=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:i,name:{type:"u64",value:t}}),a=Q(s),u=a.value.fields.value.fields,l=u.redeemed_num.fields.contents.map(T=>({name:T.fields.key.fields.name,value:T.fields.value})),h=u.bonus_types.map(T=>T.fields.name),w=u.bonus.fields.contents.map(T=>({name:T.fields.key.fields.name,value:T.fields.value})),v={id:Lt(s),phase:a.name,settled_num:u.settled_num,register_time:u.register_time,redeemed_num:l,is_settled:u.is_settled,bonus_types:h,bonus:w,phase_end_time:""};return this.updateCache(r,v),v}catch{}}updateCache(t,e,n=Ue){let i=this._cache[t];i?(i.overdueTime=he(n),i.value=e):i=new Be(e,he(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t];if(!e&&n?.isValid())return n.value;delete this._cache[t]}},hy=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:n}=this._sdk.ClmmSDK.sdkOptions,i=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress),r=S(0),o=S(0),s=[],a=[],u=[],l=[],h=[];t.liquidity_bins.forEach((x,P)=>{let O=t.amounts_a[P],E=t.amounts_b[P],B=t.bins_fix_amount_a[P];r=r.add(O),o=o.add(E),s.push(O),a.push(E),u.push(Tt(BigInt(x.tick_lower)).toString()),l.push(Tt(BigInt(x.tick_upper)).toString()),h.push(B)});let w=[t.coinTypeA,t.coinTypeB],v=new Ai.TransactionBlock,T=re.buildAddLiquidityFixTokenCoinInput(v,!t.fix_amount_a,r.toString(),t.slippage,t.coinTypeA,i,!1)?.targetCoin,I=re.buildAddLiquidityFixTokenCoinInput(v,t.fix_amount_a,o.toString(),t.slippage,t.coinTypeB,i,!1)?.targetCoin;return sy(t)?v.moveCall({target:`${e.published_at}::router::increase_liquidity`,typeArguments:w,arguments:[v.object(D(e).master_manger_id),v.object(t.master_address),v.object(D(n).global_config_id),v.object(t.pool_address),T,I,v.pure(s.map(x=>v.pure(x,"u64"))),v.pure(a.map(x=>v.pure(x,"u64"))),v.pure(h.map(x=>v.pure(x,"bool"))),v.object(G)]}):v.moveCall({target:`${e.published_at}::router::create_master_liquidity`,typeArguments:w,arguments:[v.object(D(e).master_manger_id),v.object(D(n).global_config_id),v.object(t.pool_address),T,I,v.pure(u.map(x=>v.pure(x,"u32"))),v.pure(l.map(x=>v.pure(x,"u32"))),v.pure(s.map(x=>v.pure(x,"u64"))),v.pure(a.map(x=>v.pure(x,"u64"))),v.pure(h.map(x=>v.pure(x,"bool"))),v.pure(t.strategy),v.pure(Tt(BigInt(t.tick_lower)).toString()),v.pure(Tt(BigInt(t.tick_upper)).toString()),v.object(G)]}),v}buildMasterNFTType(){return`${this._sdk.sdkOptions.liquidity_stratefy.package_id}::master_liquidity::MasterLiquidity`}async getMasterNFTList(t,e=[]){let n=[],i=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 i.data)if(q(o.data.type).full_address===this.buildMasterNFTType()){let a=qn.buildMasterNFT(o);if(a){let u=`${a.id}_masterNFT`;this.updateCache(u,a,X),r?e.includes(a.pool_id)&&n.push(a):n.push(a)}}return n}async getMasterNFT(t,e=!1){let n="$masterId}_masterNFT",i=this.getCache(n,e);if(i)return i;try{let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}});if(q(r.data.type).full_address===this.buildMasterNFTType()){let s=qn.buildMasterNFT(r);return s&&this.updateCache(n,s,X),s}}catch(r){console.log(r)}}async fetchMasterPositionInfos(t){let e={},{clmm_pool:n,integrate:i,simulationAccount:r}=this.sdk.ClmmSDK.sdkOptions,o=new Ai.TransactionBlock;return t.forEach(a=>{a.position_ids.forEach(u=>{let l=[a.coinTypeA,a.coinTypeB],h=[o.object(D(n).global_config_id),o.object(a.pool_id),o.object(u)];o.moveCall({target:`${i.published_at}::${zt}::fetch_position_fees`,arguments:h,typeArguments:l}),o.moveCall({target:`${i.published_at}::${zt}::fetch_position_rewards`,arguments:[...h,o.object(G)],typeArguments:l})})}),(await this.sdk.ClmmSDK.fullClient.devInspectTransactionBlock({transactionBlock:o,sender:r.address})).events?.forEach(a=>{let{parsedJson:u}=a,{position_id:l}=u,h=e[l];switch(h===void 0&&(h={position_id:l,feeOwedA:"0",feeOwedB:"0",rewarders:[]},e[l]=h),q(a.type).name){case"FetchPositionFeesEvent":h.feeOwedA=u.fee_owned_a,h.feeOwedB=u.fee_owned_b;break;case"FetchPositionRewardsEvent":h.rewarders=u.data;break}}),e}async getLiquidityStrategyConfigs(t=!1){let{package_id:e}=this._sdk.sdkOptions.liquidity_stratefy,n=`${e}_getLiquidityStrategyConfigst`,i=this.getCache(n,t);if(i!==void 0)return i;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 u=await this._sdk.ClmmSDK.fullClient.getObject({id:a.id,options:{showContent:!0}}),l=Q(u);o.master_liquidity_handle=l.position_maps.fields.id.id;break}this.updateCache(n,o,X)}return o}removeMasterLiquidity(t){let{clmm_pool:e}=this.sdk.ClmmSDK.sdkOptions,{liquidity_stratefy:n}=this.sdk.sdkOptions,i=new Ai.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},i);let o=[i.object(D(n).master_manger_id),i.object(t.pool_address),i.object(t.master_address),i.object(D(e).global_config_id),i.pure(t.delta_liquidities.map(s=>i.pure(s,"u128"))),i.pure(t.min_amounts_a.map(s=>i.pure(s,"u64"))),i.pure(t.min_amounts_b.map(s=>i.pure(s,"u64"))),i.object(G)];return i.moveCall({target:`${n.published_at}::${ys}::remove_liquidity`,typeArguments:r,arguments:o}),i}closeMasterLiquidity(t){let{clmm_pool:e}=this.sdk.ClmmSDK.sdkOptions,{liquidity_stratefy:n}=this.sdk.sdkOptions,i=new Ai.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},i),i.moveCall({target:`${n.published_at}::${ys}::close_master_liquidity`,typeArguments:r,arguments:[i.object(D(n).master_manger_id),i.object(t.master_address),i.object(D(e).global_config_id),i.object(t.pool_address),i.pure(t.min_amounts_a.map(o=>i.pure(o,"u64"))),i.pure(t.min_amounts_b.map(o=>i.pure(o,"u64"))),i.object(G)]}),i}collectFee(t,e){let{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions,{liquidity_stratefy:i}=this.sdk.sdkOptions;e=e===void 0?new Ai.TransactionBlock:e;let r=[t.coinTypeA,t.coinTypeB],o=[e.object(D(i).master_manger_id),e.object(t.master_address),e.object(D(n).global_config_id),e.object(t.pool_address)];return e.moveCall({target:`${i.published_at}::${ys}::collect_fee`,typeArguments:r,arguments:o}),e}collectReward(t,e){let{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions,{liquidity_stratefy:i}=this.sdk.sdkOptions;return e=e===void 0?new Ai.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(D(i).master_manger_id),e.object(t.master_address),e.object(D(n).global_config_id),e.object(t.pool_address),e.object(D(n).global_vault_id),e.object(G)];e.moveCall({target:`${i.published_at}::${ys}::collect_reward`,typeArguments:o,arguments:s})}}),e}updateCache(t,e,n=Ue){let i=this._cache[t];i?(i.overdueTime=he(n),i.value=e):i=new Be(e,he(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t],i=n?.isValid();if(!e&&i)return n.value;i||delete this._cache[t]}},my=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}buildCoinInput(t,e,n,i,r){let{selectedCoins:o,remainingCoins:s}=we.selectCoinAssetGreaterThanOrEqual(e,BigInt(i)),a=we.calculateTotalBalance(o);if(a<BigInt(i))throw new Error(`The amount(${a}) is Insufficient balance for ${n} , expect ${i} `);let u=a-BigInt(i),l;if(we.isSuiCoin(n))l=t.splitCoins(t.gas,[t.pure(i)]);else{let[h,...w]=o.map(v=>v.coinObjectId);l=t.object(h),w.length>0?r?t.mergeCoins(l,[...w.map(v=>t.object(v)),r]):t.mergeCoins(l,[...w.map(v=>t.object(v))]):r&&t.mergeCoins(l,[r])}return{selectedUnusedAmount:u,coinInput:l,remainingCoins:s}}async deposit(t){console.log("1110 deposit \u53C2\u6570: ",{params:t});let{vaults:e,frams:n}=this._sdk.sdkOptions,{clmm_pool:i}=this._sdk.ClmmSDK.sdkOptions,r=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.getVerifySenderAddress()),o=new xi.TransactionBlock,s,a;if(t.swapParams){let w=await this.handleDepositSwap(t,o,r);s=w.primaryCoinAInputs,a=w.primaryCoinBInputs}else s=re.buildAddLiquidityFixTokenCoinInput(o,!t.fix_amount_a,t.amount_a,t.slippage,t.coinTypeA,r,!1)?.targetCoin,a=re.buildAddLiquidityFixTokenCoinInput(o,t.fix_amount_a,t.amount_b,t.slippage,t.coinTypeB,r,!1)?.targetCoin;let u=D(e),l=D(n),h=D(i);return o.moveCall({target:`${e.published_at}::${ay}::deposit`,typeArguments:[t.coinTypeA,t.coinTypeB,t.lp_token_type],arguments:[o.object(u.vaults_manager_id),o.object(t.vault_id),o.object(l.rewarder_manager_id),o.object(l.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(G)]}),o}async handleDepositSwap(t,e,n){let{clmm_pool:i,integrate:r}=this._sdk.ClmmSDK.sdkOptions,{swap_amount:o,a2b:s,route_obj:a,staking_id:u}=t.swapParams,l=s?t.coinTypeA:t.coinTypeB,h=re.buildCoinForAmount(e,n,BigInt(o),l,!1),w=BigInt(h.tragetCoinAmount)-BigInt(o),v=[];if(u){let O=this.requestStakeCoin(u,e,h.targetCoin),E=re.buildCoinForAmount(e,h.remainCoins,BigInt(0),l,!1).targetCoin;v=s?[E,O]:[O,E]}else if(a){let O=re.buildCoinForAmount(e,n,0n,s?t.coinTypeB:t.coinTypeA,!1),E=await re.buildAggregatorSwapReturnCoins(this._sdk.ClmmSDK,a,h,O,"",t.slippage,e);v=s?[E.fromCoin,E.toCoin]:[E.toCoin,E.fromCoin],console.log("swapCoinInputTo.isMintZeroCoin: ",O),!O.isMintZeroCoin&&O.originalSplitedCoin===void 0&&e.transferObjects([O.targetCoin],e.pure(this._sdk.getVerifySenderAddress()))}else{let O=re.buildCoinForAmount(e,n,0n,s?t.coinTypeB:t.coinTypeA,!1),E=mn.getDefaultSqrtPriceLimit(s).toString();v=e.moveCall({target:`${r.published_at}::${Jn}::swap`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(D(i).global_config_id),e.object(t.clmm_pool),s?h.targetCoin:O.targetCoin,s?O.targetCoin:h.targetCoin,e.pure(s),e.pure(!0),e.pure(o),e.pure(E),e.pure(!1),e.object(G)]})}let T,I,x=v[0],P=v[1];if(s){let O=BigInt(t.amount_a)-w;we.isSuiCoin(l)?(e.transferObjects([x],e.pure(this._sdk.getVerifySenderAddress())),T=e.splitCoins(e.gas,[e.pure(t.amount_a)])):O>0n?T=this.buildCoinInput(e,h.remainCoins,l,O,x).coinInput:T=x,I=P}else{T=x;let O=BigInt(t.amount_b)-w;we.isSuiCoin(l)?(e.transferObjects([P],e.pure(this._sdk.getVerifySenderAddress())),I=e.splitCoins(e.gas,[e.pure(t.amount_b)])):O>0n?I=this.buildCoinInput(e,h.remainCoins,l,O,P).coinInput:I=P}return{primaryCoinAInputs:T,primaryCoinBInputs:I}}async remove(t){console.log({params:t});let{vaults:e,frams:n}=this.sdk.sdkOptions,{clmm_pool:i,integrate:r}=this._sdk.ClmmSDK.sdkOptions,o=new xi.TransactionBlock,s=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.getVerifySenderAddress(),t.lp_token_type),a=re.buildCoinForAmount(o,s,BigInt(t.lp_token_amount),t.lp_token_type,!1).targetCoin,u=D(e),l=D(n),h=D(i),w=[t.coinTypeA,t.coinTypeB,t.lp_token_type],v=o.moveCall({target:`${e.published_at}::${cy}::remove`,typeArguments:w,arguments:[o.object(u.vaults_manager_id),o.object(t.vault_id),o.object(l.rewarder_manager_id),o.object(l.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(G)]}),T=v[0],I=v[1];if(t.swapParams){let{a2b:x,swap_amount:P,route_obj:O}=t.swapParams;if(O){let E={targetCoin:x?T:I,remainCoins:[],isMintZeroCoin:!1,tragetCoinAmount:""},B={targetCoin:x?I:T,remainCoins:[],isMintZeroCoin:!1,tragetCoinAmount:""},$=await re.buildAggregatorSwapReturnCoins(this._sdk.ClmmSDK,O,E,B,"",t.slippage,o),Z=x?[$.fromCoin,$.toCoin]:[$.toCoin,$.fromCoin];x?o.mergeCoins(Z[1],[I]):o.mergeCoins(Z[0],[T]),o.transferObjects([...Z],o.pure(this._sdk.getVerifySenderAddress()))}else{let E=mn.getDefaultSqrtPriceLimit(x).toString(),B=o.moveCall({target:`${r.published_at}::${Jn}::swap`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[o.object(D(i).global_config_id),o.object(t.clmm_pool),T,I,o.pure(x),o.pure(!0),o.pure(P),o.pure(E),o.pure(!0),o.object(G)]});o.transferObjects([B[0],B[1]],o.pure(this._sdk.getVerifySenderAddress()))}}else o.transferObjects([T,I],o.pure(this._sdk.getVerifySenderAddress()));return o}async getVaultList(t="all"){let{vaults:e}=this._sdk.sdkOptions,n=await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${e.package_id}::vaults::CreateEvent`},t),i=n.data.map(s=>s.parsedJson.id),r=await this._sdk.ClmmSDK.fullClient.batchGetObjects(i,{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}),o=[];return r.forEach(s=>{let a=Sn.buildPool(s);a&&(a.staking_id=this.findHaedalStakeId(a.position.coinTypeA,a.position.coinTypeB),this.savePoolToCache(a),o.push(a))}),n.data=o,n}findHaedalStakeId(t,e){let{haedal:n}=this._sdk.sdkOptions,{support_stakings:i}=D(n);return i.length===0?void 0:i.filter(o=>{let s=q(o.from_coin_type).full_address,a=q(o.to_coin_type).full_address,u=q(t).full_address,l=q(e).full_address;return u===s&&l===a||u===a&&l===s})[0]?.staking_id||void 0}savePoolToCache(t){let e=`${t.id}_mirrorPool`;this.updateCache(e,t,X)}readPoolFromCache(t,e=!1){let n=`${t}_mirrorPool`;return this.getCache(n,e)}async calculateMaxAvailable(t){let{integrate:e,simulationAccount:n}=this.sdk.ClmmSDK.sdkOptions,i=new xi.TransactionBlock,r=ee.tickIndexToSqrtPriceX64(t.lowerTick),o=ee.tickIndexToSqrtPriceX64(t.upperTick),s=new Oe.default(t.curSqrtPrice),a=$e.getCoinAmountFromLiquidity(new Oe.default(t.input_amount),s,r,o,!1),u=[t.coinTypeA,t.coinTypeB];i.moveCall({target:`${e.published_at}::${zt}::calculate_swap_result`,arguments:[i.object(t.clmm_pool),i.pure(!0),i.pure(!0),i.pure(a.coinA.toString())],typeArguments:u}),i.moveCall({target:`${e.published_at}::${zt}::calculate_swap_result`,arguments:[i.object(t.clmm_pool),i.pure(!1),i.pure(!0),i.pure(a.coinB.toString())],typeArguments:u});let h=(await this.sdk.ClmmSDK.fullClient.devInspectTransactionBlock({transactionBlock:i,sender:n.address})).events?.filter(x=>q(x.type).name==="CalculatedSwapResultEvent");if(h.length===0)return null;let w=h[0].parsedJson.data,v=h[1].parsedJson.data,T=S(a.coinB.toString()).add(w.amount_out),I=S(a.coinA.toString()).add(v.amount_out);return{maxAmountB:T,maxAmountA:I}}async calculateRemoveSwapAmount(t,e){let n=Sn.calculateDepositRatio(t.lowerTick,t.upperTick,new Oe.default(t.curSqrtPrice)),i=t.fix_amount_a?n.ratioA:n.ratioB;console.log({fixRatio:i});let r=S(t.receive_amount).mul(i),o,s;if(t.removeLiquidity){let x=ee.tickIndexToSqrtPriceX64(t.lowerTick),P=ee.tickIndexToSqrtPriceX64(t.upperTick),O=$e.getCoinAmountFromLiquidity(new Oe.default(t.removeLiquidity),new Oe.default(t.curSqrtPrice),x,P,!1);s=t.removeLiquidity,o=t.fix_amount_a?O.coinB.toString():O.coinA.toString(),r=t.fix_amount_a?S(O.coinA.toString()):S(O.coinB.toString())}else{let x=$e.estLiquidityAndcoinAmountFromOneAmounts(t.lowerTick,t.upperTick,new Oe.default(r.toFixed(0)),t.fix_amount_a,!1,.2,new Oe.default(t.curSqrtPrice));s=x.liquidityAmount.toString(),o=t.fix_amount_a?x.coinAmountB.toString():x.coinAmountA.toString()}console.log({fixAmount:r,otherSideAmount:o});let a=!t.fix_amount_a,u=await this.clmmPreSwap(t.clmm_pool,t.curSqrtPrice,a,S(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:u,range:e});let l=r.add(u.amount_out),h=S(t.receive_amount),w=h.sub(l);if(console.log(`\u5B9E\u9645\u5F97\u5230: ${l.toString()} , \u671F\u671B\u5F97\u5230: ${t.receive_amount}, \u5269\u4F59: ${w.toString()} `),(!t.removeLiquidity||t.removeLiquidity&&e)&&w.abs().greaterThan(h.mul(.01))){let x=l.lessThan(h),P,O;e?x?(P=S(s),O=e.right):(P=e.left,O=S(s)):(P=x?S(s):S(0),O=x?S(t.maxLiquidity):S(s));let E=S(P).add(O).div(2).toFixed(0);if(console.log({left:P.toString(),right:O.toString(),midLiquidity:E.toString()}),!e||e&&e.count<15&&P<O)return await this.calculateRemoveSwapAmount({...t,removeLiquidity:E},{left:P,right:O,count:e?e.count+1:0})}let v=u.amount_in&&u.fee_amount?new Oe.default(u.amount_in).add(new Oe.default(u.fee_amount)).toString():u.amount_in,T=u.amount_out,{is_exceed:I}=u;return{swapInAmount:v,swapOutAmount:T,liquidity:s,is_exceed:I,routeObj:u.route_obj,request_id:t.request_id}}async calculateHaedalDepositFixSui(t){let e=t.inputSuiAmount.mul(t.remainRate),n=t.inputSuiAmount.sub(t.swapSuiAmount),i=t.exchangeRate?t.exchangeRate:await this.getExchangeRateForHaedal(t.staking_id,t.shouldRequestStake,Number(t.swapSuiAmount.toFixed(0))),r=t.swapSuiAmount.div(i).toFixed(0);console.log({swapAmount:t.swapSuiAmount.toString(),hasuiAmount:r.toString(),leftSuiAmount:t.leftSuiAmount.toString(),rightSuiAmount:t.rightSuiAmount.toString(),exchangeRate:i});let o=$e.estLiquidityAndcoinAmountFromOneAmounts(t.lowerTick,t.upperTick,new Oe.default(r.toString()),!t.fixCoinA,!0,0,new Oe.default(t.curSqrtPrice)),s=t.fixCoinA?o.coinAmountA.toString():o.coinAmountB.toString(),a=S(n).sub(s);return console.log({useSuiAmount:s.toString(),hasuiAmount:r.toString(),remainSui:n.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:i,rebalanceCount:t.rebalanceCount+1}):a.greaterThan(e)?await this.calculateHaedalDepositFixSui({...t,leftSuiAmount:t.swapSuiAmount,swapSuiAmount:t.swapSuiAmount.add(t.rightSuiAmount).div(2),exchangeRate:i,rebalanceCount:t.rebalanceCount+1}):null}async calculateDepositSwapAmount(t,e=!1){let n=ee.sqrtPriceX64ToTickIndex(new Oe.default(t.curSqrtPrice)),{ratioA:i,ratioB:r}=Sn.calculateDepositRatio(t.lowerTick,t.upperTick,new Oe.default(t.curSqrtPrice));console.log("1110 calculateDepositSwapAmount params: ",{...t,currentTick:n,adjustBestAmount:e});let o=S(t.input_amount).mul(t.fix_amount_a?i:r),s=S(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(we.isSuiCoin(t.coinTypeA)&&t.fix_amount_a||we.isSuiCoin(t.coinTypeB)&&!t.fix_amount_a){let H=await this.calculateHaedalDepositFixSui({inputSuiAmount:S(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 N(s.toFixed(0)):new N(0),rightSuiAmount:a?new N(t.input_amount):new N(s.toFixed(0)),staking_id:t.staking_id});return H?{...H,request_id:t.request_id}:null}throw Error("Only support fix sui")}let u=n<t.lowerTick||n>t.upperTick,l={clmm_pool:t.clmm_pool,curSqrtPrice:t.curSqrtPrice,a2b:a,amount_a:a?new N(t.input_amount):new N(0),amount_b:a?new N(0):new N(t.input_amount),amount_left:a?new N(s.toFixed(0)):new N(0),amount_right:a?new N(t.input_amount):new N(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&&n<=t.upperTick,w=h?await this.calculateRebalance(l):await this.clmmPreSwap(t.clmm_pool,t.curSqrtPrice,a,s,t.coinTypeA,t.coinTypeB,!0,t.priceSplitPoint,t.use_route),v=w.after_sqrt_price,T=ee.sqrtPriceX64ToTickIndex(new Oe.default(v));console.log("1110 \u9996\u6B21\u8BA1\u7B97 \u7ED3\u679C: ",{...w,currentTick:T},null,2);let I=T<t.lowerTick||T>t.upperTick;if(u!==I&&!h&&T<=t.upperTick){console.log("1110 \u533A\u95F4\u53D1\u751F\u53D8\u5316, \u518D\u6B21\u8FDB\u884Cswap: ");let{ratioA:H,ratioB:te}=Sn.calculateDepositRatio(t.lowerTick,t.upperTick,new Oe.default(v));console.log("1110 ",{newAfterRatioA:H,newAfterRatioB:te}),s=S(t.input_amount).sub(S(t.input_amount).mul(t.fix_amount_a?H:te)),l.amount_left=a?new N(s.toFixed(0)):new N(0),l.amount_right=a?new N(t.input_amount):new N(s.toFixed(0)),w=await this.calculateRebalance(l),v=w.after_sqrt_price;let U=ee.sqrtPriceX64ToTickIndex(new Oe.default(v));console.log("1110 \u518D\u6B21\u8BA1\u7B97\u53D8\u5316\u540E: ",{lowerTick:t.lowerTick,upperTick:t.upperTick,currentTick:U,afterSqrtPrice:v})}let{ratioA:x,ratioB:P}=Sn.calculateDepositRatio(t.lowerTick,t.upperTick,new Oe.default(v));console.log("1110 1",{afterRatioA:x,afterRatioB:P,data:w});let O=P.div(x).sub(r.div(i)).greaterThan("0"),E=w.amount_in&&w.fee_amount?new Oe.default(w.amount_in).add(new Oe.default(w.fee_amount)).toString():w.amount_in,B=w.amount_out,{is_exceed:$}=w;if(T<t.lowerTick)O=!0;else if(T>t.upperTick)O=!1;else{let H=O===a?new Oe.default(S(t.input_amount).sub(E).toString()):new Oe.default(B),te=$e.estLiquidityAndcoinAmountFromOneAmounts(t.lowerTick,t.upperTick,H,O,!0,0,new Oe.default(v)),U=te.coinAmountA,V=te.coinAmountB,F=S(t.fix_amount_a?U.toString():V.toString()).add(E);console.log("1110 \u5B9E\u9645\u6D88\u8017:",{preAmountTotal:F.toString(),fixAmountA:O}),F.greaterThanOrEqualTo(t.input_amount)&&(O=!O)}let Z={swapInAmount:E,swapOutAmount:B,afterSqrtPrice:v,is_exceed:$,fixAmountA:O,routeObj:w.route_obj,request_id:t.request_id,use_Haedal_stake:!1};return console.log(Z),Z}async calculateHaedalDepositSwapAmount(t){let e=ee.sqrtPriceX64ToTickIndex(new Oe.default(t.curSqrtPrice)),{ratioA:n,ratioB:i}=Sn.calculateDepositRatio(t.lowerTick,t.upperTick,new Oe.default(t.curSqrtPrice));console.log("1110 calculateDepositSwapAmount params: ",{...t,currentTick:e});let r=S(t.input_amount).mul(t.fix_amount_a?n:i),o=S(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(we.isSuiCoin(t.coinTypeA)&&t.fix_amount_a||we.isSuiCoin(t.coinTypeB)&&!t.fix_amount_a){let a=await this.calculateHaedalDepositFixSui({inputSuiAmount:S(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 N(o.toFixed(0)):new N(0),rightSuiAmount:s?new N(t.input_amount):new N(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:n,curSqrtPrice:i,amount_a:r,amount_b:o,lowerTick:s,upperTick:a,amount_left:u,amount_right:l,coinTypeA:h,coinTypeB:w,useRoute:v,priceSplitPoint:T,remainRate:I}=t,x=async(P,O,E)=>{let B=P.plus(O).div(2),$=await this.clmmPreSwap(e,i,n,B,h,w,!0,T,v);if($.amount_out==="0")return $;if($.after_sqrt_price||($.after_sqrt_price=t.curSqrtPrice),$.is_exceed)return O=B,x(P,O,E+1);let Z=n?r.sub($.amount_in):r.add($.amount_out),H=n?o.add($.amount_out):o.sub($.amount_in),te=ee.sqrtPriceX64ToTickIndex(new Oe.default($.after_sqrt_price)),U=$e.estLiquidityAndcoinAmountFromOneAmounts(s,a,new Oe.default(Z.toString()),!0,!0,1,new Oe.default($.after_sqrt_price)),V=new N(U.coinAmountA.toString()),F=new N(U.coinAmountB.toString());if(console.log("1110 swap\u9012\u5F52\u8BA1\u7B97 ",{preRes:$,left:P.toString(),right:O.toString(),mid:B.toString(),afterPoolTickIndex:te,afterA:Z.toString(),afterB:H.toString(),usedA:V.toString(),usedB:toString(),count:E}),V.toString()!==Z.toString())throw new Error("usedA does not match afterA");if(H.lessThan(F))n?P=B:O=B;else{n?O=B:P=B;let K=H.sub(F),C=H.mul(I);if(console.log("1110 \u5269\u4F59\u672A\u4F7F\u7528amount ",{remainingB:K.toString(),maxRemainingB:C.toString(),remainRate:I,count:E}),C.sub(K).greaterThanOrEqualTo(0))return console.log("break"),{...$,remainingB:K}}return P.greaterThan(O)||O.sub(P).lessThan(10)?$:x(P,O,E+1)};return u.greaterThanOrEqualTo(l)?x(new N(0),u,0):x(u,l,0)}async clmmPreSwap(t,e,n,i,r,o,s,a,u,l){if(u)try{let O=await this._sdk.ClmmSDK.RouterV2.getBestRouter(n?r:o,n?o:r,Number(i.toFixed(0)),s,a,"",void 0,void 0,!0,!1,l);if(!O.result)throw new Error("route unavailable");let{result:E}=O,B=e;return E.splitPaths.forEach($=>{let Z=$.basePaths.find(H=>H.poolAddress.toLowerCase()===t.toLowerCase());Z&&(B=Z.afterSqrtPrice.toString())}),{amount_in:E.inputAmount.toString(),amount_out:E.outputAmount.toString(),after_sqrt_price:B,is_exceed:E.isExceed,route_obj:E}}catch{throw new Error("route unavailable")}let{integrate:h,simulationAccount:w}=this.sdk.ClmmSDK.sdkOptions,v=new xi.TransactionBlock,T=[r,o],I=[v.pure(t),v.pure(n),v.pure(s),v.pure(i.toFixed(0))];v.moveCall({target:`${h.published_at}::${zt}::calculate_swap_result`,arguments:I,typeArguments:T});let P=(await this.sdk.ClmmSDK.fullClient.devInspectTransactionBlock({transactionBlock:v,sender:w.address})).events?.filter(O=>q(O.type).name==="CalculatedSwapResultEvent");return P.length===0?null:P[0].parsedJson.data}async getVault(t,e=!1){let n=this.readPoolFromCache(t,e);if(n)return n;try{let i=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}}),r=Sn.buildPool(i);if(r)return r.staking_id=this.findHaedalStakeId(r.position.coinTypeA,r.position.coinTypeB),this.savePoolToCache(r),r}catch(i){console.log(i)}}async getVaultsConfigs(t=!1){let{package_id:e}=this._sdk.sdkOptions.vaults,n=`${e}_getMirrorPoolConfigs`,i=this.getCache(n,t);if(i!==void 0)return i;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 u=await this._sdk.ClmmSDK.fullClient.getObject({id:o.vaults_manager_id,options:{showContent:!0}}),l=Q(u);o.vaults_pool_handle=l.vault_to_pool_maps.fields.id.id;break}this.updateCache(n,o,X)}return o}async getExchangeRateForHaedal(t,e,n){let{haedal:i}=this._sdk.sdkOptions,{simulationAccount:r}=this._sdk.ClmmSDK.sdkOptions;try{let o=new xi.TransactionBlock;e?await this.requestStake(t,n||1e9,o):o.moveCall({target:`${i.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 l=s.events.find(T=>T.type.includes("UserStaked")),{sui_amount:h,st_amount:w}=l.parsedJson,v=S(h).div(w).toString();return console.log({st_amount:w,sui_amount:h,rate:v}),v}let a=s.results[0].returnValues[0][0],u=Oc.bcs.de("u64",Uint8Array.from(a))/1e6;return console.log("rate ",Oc.bcs.de("u64",Uint8Array.from(a))),u.toString()}catch(o){console.log("getExchangeRateForHaedal",o)}return"0"}requestStakeCoin(t,e,n){let{haedal:i}=this._sdk.sdkOptions;return e.moveCall({target:`${i.published_at}::staking::request_stake_coin`,typeArguments:[],arguments:[e.object((0,Kr.normalizeSuiObjectId)("0x5")),e.object(t),n,e.pure((0,Kr.normalizeSuiObjectId)("0x0"))]})}async requestStake(t,e,n){let{haedal:i}=this._sdk.sdkOptions,r=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.getVerifySenderAddress(),$r);n=n||new xi.TransactionBlock;let o;if(e>95e10){let[s,...a]=r;a.length>0&&n.mergeCoins(n.object(s.coinObjectId),a.map(u=>n.object(u.coinObjectId))),o=n.splitCoins(n.object(s.coinObjectId),[e])}else o=re.buildCoinForAmount(n,r,BigInt(e),$r,!1,!0).targetCoin;return n.moveCall({target:`${i.published_at}::interface::request_stake`,typeArguments:[],arguments:[n.object((0,Kr.normalizeSuiObjectId)("0x5")),n.object(t),o,n.pure((0,Kr.normalizeSuiObjectId)("0x0"))]}),n}updateCache(t,e,n=Ue){let i=this._cache[t];i?(i.overdueTime=he(n),i.value=e):i=new Be(e,he(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t],i=n?.isValid();if(!e&&i)return n.value;i||delete this._cache[t]}},bs=class{static buildOrderLimitEvent(t){let{events:e}=t,n=[];return e&&e.forEach(i=>{let r=q(i.type).name;if(r==="OrderPlacedEvent"||r==="OrderCanceledEvent"||r==="FlashLoanEvent"){let o={digest:t.digest,type:r,timestampMs:t.timestampMs,parsedJson:i.parsedJson};n.push(o)}}),n}static buildLimitOrderInfo(t){let e=Q(t),n=pn(t);if(e&&n)try{let i=q(n),r={pay_coin_type:i.type_arguments[0],target_coin_type:i.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=S(r.total_pay_amount).mul(1e20).div(r.rate).toFixed(0);r.obtained_amount===o?r.status="Completed":r.status="Cancelled"}return r}catch(i){console.log(i)}}static calculateFormatRate(t,e,n){let i=20+e-n;return S(t).mul(S(10).pow(i)).toString()}static calculateRate(t,e,n){let i=20+e-n;return Number(t)/10**i}},py=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}=D(t),{fullClient:n}=this._sdk.ClmmSDK,r=(await n.getDynamicFieldsByPage(e)).data.map(s=>s.objectId);return(await n.batchGetObjects(r,{showContent:!0})).map(s=>{let{fields:a}=s.data.content;return{coin_type:q(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}=D(t),{fullClient:n}=this._sdk.ClmmSDK,r=(await n.getDynamicFieldsByPage(e)).data.map(s=>s.objectId);return(await n.batchGetObjects(r,{showContent:!0})).map(s=>{let{fields:a}=s.data.content.fields.value,u={pay_coin_type:q(a.pay_coin.fields.name).full_address,target_coin_type:q(a.target_coin.fields.name).full_address,indexer_id:a.indexer_id};return this._sdk.updateCache(`${u.pay_coin_type}_${u.target_coin_type}`,u.indexer_id),u})}async getPoolIndexerId(t,e){let n=this._sdk.getCache(`${t}_${e}`);try{if(n===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 n}async getOwnerLimitOrderList(t,e){let{fullClient:n}=this._sdk.ClmmSDK,i={data:[],hasNextPage:!1};try{let r=await this.getUserIndexerHandle(t);if(!r)return i;let o=await n.getDynamicFieldsByPage(r,e);i.hasNextPage=o.hasNextPage,i.nextCursor=o.nextCursor;let s=o.data.map(l=>l.name.value),u=(await n.batchGetObjects(s,{showContent:!0})).map(l=>bs.buildLimitOrderInfo(l)).filter(l=>l!==void 0);i.data=u}catch(r){console.error("Error in getOwnerLimitOrderList:",r)}return i}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:""},n=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::limit_order::InitEvent`})).data;if(n.length>0){let r=n[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=Q(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=Q(s).indexer.fields.id.id}let i=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::config::InitFactoryEvent`})).data;if(i.length>0){let r=i[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=Q(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 n=await e.getObject({id:t,options:{showContent:!0}});return bs.buildLimitOrderInfo(n)}catch(n){console.error("Error in getLimitOrder:",n);return}}async getLimitOrderLogs(t){let{fullClient:e}=this._sdk.ClmmSDK;try{let n=await e.queryTransactionBlocks({filter:{ChangedObject:t},options:{showEvents:!0}}),i=[];return n.data.forEach(r=>{i.push(...bs.buildOrderLimitEvent(r))}),i}catch(n){return console.error("Error in getLimitOrderLogs:",n),[]}}buildRateOrdersIndexerType(t){let{limit_order:e}=this._sdk.sdkOptions;return rr(`${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:n,global_config_id:i,rate_orders_indexer_id:r}=D(e),o=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress,t.pay_coin_type),s=new ks.TransactionBlock,a=await this.getPoolIndexerId(t.pay_coin_type,t.target_coin_type),u=re.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(i),a===void 0?s.object(r):s.object(a),s.object(n),u.targetCoin,s.pure(bs.calculateFormatRate(t.rate,t.pay_decimal,t.target_decimal)),s.pure(t.expired_ts),s.object(G)]}),s}async cancelOrdersByOwner(t){let{limit_order:e}=this._sdk.sdkOptions,{global_config_id:n}=D(e),i=new ks.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=>{i.moveCall({target:`${e.published_at}::limit_order::cancel_order_by_owner`,typeArguments:[t.pay_coin_type,t.target_coin_type],arguments:[i.object(n),i.object(r),i.object(o),i.object(G)]})}),i}async getUserIndexerHandle(t){let{fullClient:e}=this._sdk.ClmmSDK,{limit_order:n}=this._sdk.sdkOptions,i=this.getUserIndexerHandleByCache(t);if(i===void 0){let r=new ks.TransactionBlock;r.moveCall({target:`${n.published_at}::limit_order::get_orders_indexer_by_owner`,typeArguments:[],arguments:[r.pure(t),r.object(D(n).user_orders_indexer_id)]}),i=(await e.devInspectTransactionBlock({transactionBlock:r,sender:this._sdk.ClmmSDK.sdkOptions.simulationAccount.address})).events[0].parsedJson.orders_table_id,i&&this.saveUserIndexerHandleByCache(t,i)}return i}getUserIndexerHandleByCache(t){let e=`getUserIndexerHandleByCache_${t}`;return this.getCache(e)}saveUserIndexerHandleByCache(t,e){let n=`getUserIndexerHandleByCache_${t}`;return this.updateCache(n,e)}updateCache(t,e,n=X){let i=this._cache[t];i?(i.overdueTime=he(n),i.value=e):i=new Be(e,he(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t],i=n?.isValid();if(!e&&i)return n.value;i||delete this._cache[t]}},gy=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,n={data:[],hasNextPage:!1};try{let i=await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${e}::pool::CreatePoolEvent`},t),r=i.data.map(o=>o.parsedJson.pool_id);if(n.hasNextPage=i.hasNextPage,n.nextCursor=i.nextCursor,r.length>0){let o=await this._sdk.ClmmSDK.fullClient.batchGetObjects(r,{showType:!0,showContent:!0});for(let s of o){let a=ws.buildFramsPool(s);a&&(a.rewarders=await this.getFramsRewarderConfig(a.clmm_pool_id,a.rewarders.map(u=>u.reward_coin)),n.data.push(a),this.updateCache(a.id,a))}}}catch(i){console.log("getFramsPoolList error ",i)}return n}async getFramsPool(t,e=!1){let n=this.getCache(t,e);if(n)return n;let i=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0}}),r=ws.buildFramsPool(i.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,n=!1){let{frams:i}=this._sdk.sdkOptions,r=[];for(let o of e){let s=`getFramsRewarderConfig_${o}_${t}`,a=this.getCache(s,n);if(a)r.push(a);else try{let u=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:D(i).rewarder_manager_handle,name:{type:"0x1::type_name::TypeName",value:kc(o)}}),{fields:l}=u.data.content.fields.value.fields.value,h={reward_coin:o,last_reward_time:l.last_reward_time,emission_per_second:l.emission_per_second,total_allocate_point:l.total_allocate_point,allocate_point:""},w=l.pools.fields.id.id,v=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:w,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(u){console.log(u)}}return r}async getOwnedFramsPositionNFTList(t,e=[],n=!1,i=!0,r="all"){let{package_id:o}=this._sdk.sdkOptions.frams,s={data:[],hasNextPage:!1},a={},u=[],l=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 w of h.data){let v=ws.buildFramsPositionNFT(w);if(v)if(l){if(e.includes(v.pool_id)){u.push(v);let T=a[v.pool_id];T?T.push(v):T=[v],a[v.pool_id]=T}}else u.push(v)}if(n&&u.length>0){let w=await this.calculateFarmingRewards(u.map(v=>({pool_id:v.pool_id,position_nft_id:v.id,clmm_pool_id:v.clmm_pool_id})),i);l?(a={},u.forEach(v=>{w[v.id]&&(v.rewards=w[v.id]);let I=a[v.pool_id];I?I.push(v):I=[v],a[v.pool_id]=I})):u.forEach(v=>{w[v.id]&&(v.rewards=w[v.id])})}return l?a:(s.data=u,s)}async getFramsPositionNFT(t,e=!0){let n=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),i=ws.buildFramsPositionNFT(n);if(e&&i){let r=await this.calculateFarmingRewards([{pool_id:i.pool_id,position_nft_id:i.id}]);r[i.id]&&(i.rewards=r[i.id])}return i}async calculateFarmingRewards(t,e=!0){let{frams:n}=this._sdk.sdkOptions,i=new Jt.TransactionBlock,{rewarder_manager_id:r,global_config_id:o}=D(n);t.forEach(a=>{i.moveCall({target:`${n.published_at}::router::accumulated_position_rewards`,typeArguments:[],arguments:[i.object(o),i.object(r),i.object(a.pool_id),i.pure(a.position_nft_id,"address"),i.object(G)]})});let s={};try{let a=await this._sdk.ClmmSDK.fullClient.sendSimulationTransaction(i,this._sdk.ClmmSDK.senderAddress,e);console.log({simulateRes:a});let u=a?.events?.filter(l=>q(l.type).name==="AccumulatedPositionRewardsEvent");if(u&&u.length>0)for(let l=0;l<u.length;l+=1){let{parsedJson:h}=u[l],w=[];h.rewards.contents.forEach(v=>{w.push({rewarder_type:q(v.key.name).full_address,rewarder_amount:v.value})}),s[h.wrapped_position_id]=w}}catch(a){console.log(a)}return s}depositPayload(t,e){let{frams:n}=this.sdk.sdkOptions;e=e||new Jt.TransactionBlock;let{global_config_id:i,rewarder_manager_id:r}=D(n);return e.moveCall({target:`${n.published_at}::router::deposit`,typeArguments:[],arguments:[e.object(i),e.object(r),e.object(t.pool_id),e.object(t.clmm_position_id),e.object(G)]}),e}async withdrawPayload(t,e){let{frams:n}=this.sdk.sdkOptions,{global_config_id:i,rewarder_manager_id:r}=D(n);return e=e||new Jt.TransactionBlock,e=await this.harvestPayload({pool_id:t.pool_id,position_nft_id:t.position_nft_id},e),e.moveCall({target:`${n.published_at}::router::withdraw`,typeArguments:[],arguments:[e.object(i),e.object(r),e.object(t.pool_id),e.object(t.position_nft_id),e.object(G)]}),e}async batchHarvestPayload(t,e){e=e||new Jt.TransactionBlock;for(let n of t)await this.harvestPayload(n,e);return e}async harvestPayload(t,e){let{frams:n}=this.sdk.sdkOptions;e=e||new Jt.TransactionBlock;let i=await this.getFramsPool(t.pool_id,!1);if(i===void 0)throw Error(`not found ${t.pool_id}`);let{global_config_id:r,rewarder_manager_id:o}=D(n);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 i.rewarders.forEach(a=>{e&&e.moveCall({target:`${n.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(G)]})}),e}async claimFeeAndClmmReward(t){let e=new Jt.TransactionBlock,n=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,n),e}async openPositionAddLiquidityStakePaylod(t){let e=new Jt.TransactionBlock,{clmm_pool:n,integrate:i}=this._sdk.ClmmSDK.sdkOptions,r=D(n),o=e.moveCall({target:`${n.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(Tt(BigInt(t.tick_lower)).toString()),e.pure(Tt(BigInt(t.tick_upper)).toString())]}),s=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress),a=re.buildCoinForAmount(e,s,BigInt(t.amount_a),t.coinTypeA,!1),u=re.buildCoinForAmount(e,s,BigInt(t.amount_b),t.coinTypeB,!1);e.moveCall({target:`${i.published_at}::${jn}::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,u.targetCoin,e.pure(t.amount_a.toString()),e.pure(t.amount_b.toString()),e.pure(t.fix_amount_a),e.object(G)]});let{frams:l}=this.sdk.sdkOptions,{global_config_id:h,rewarder_manager_id:w}=D(l);return e.moveCall({target:`${l.published_at}::router::deposit`,typeArguments:[],arguments:[e.object(h),e.object(w),e.object(t.pool_id),o,e.object(G)]}),e}async addLiquidityPayload(t,e){let{frams:n}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions;e=e||new Jt.TransactionBlock;let r=D(n),o=D(i),s=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress),a=re.buildCoinForAmount(e,s,BigInt(t.amount_limit_a),t.coinTypeA,!1),u=re.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 l=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,l,a.remainCoins,u.remainCoins)}return e.moveCall({target:`${n.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,u.targetCoin,e.pure(t.amount_limit_a),e.pure(t.amount_limit_b),e.pure(t.delta_liquidity),e.object(G)]}),e}async addLiquidityFixCoinPayload(t,e){let{frams:n}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions;e=e||new Jt.TransactionBlock;let r=D(n),o=D(i),s=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress),a=re.buildCoinForAmount(e,s,BigInt(t.amount_a),t.coinTypeA,!1),u=re.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 l=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,l,a.remainCoins,u.remainCoins)}return e.moveCall({target:`${n.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,u.targetCoin,e.pure(t.amount_a.toString()),e.pure(t.amount_b.toString()),e.pure(t.fix_amount_a),e.object(G)]}),e}async removeLiquidityPayload(t,e){let{frams:n}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions;e=e||new Jt.TransactionBlock;let r=D(n),o=D(i);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:`${n.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(G)]})}else e.moveCall({target:`${n.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(G)]}),t.unstake&&this.withdrawPayload({pool_id:t.pool_id,position_nft_id:t.position_nft_id});return e}async buildCollectRewarderAndFeeParams(t,e,n,i,r){i===void 0&&(i=[...n]),r===void 0&&(r=[...n]);let o=Et(t.coinTypeA),s=Et(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(u=>{switch(Et(u)){case o:a.push(re.buildCoinForAmount(e,i,BigInt(0),u,!1).targetCoin);break;case s:a.push(re.buildCoinForAmount(e,r,BigInt(0),u,!1).targetCoin);break;default:a.push(re.buildCoinForAmount(e,n,BigInt(0),u,!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:n}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions;e=e||new Jt.TransactionBlock;let r=D(n),o=D(i);return e.moveCall({target:`${n.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:n}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions;e=e||new Jt.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(u=>{r.push(re.buildCoinForAmount(e,a,BigInt(0),u,!1).targetCoin)})}let o=D(n),s=D(i);return t.clmm_rewarder_types?.forEach((a,u)=>{e&&e.moveCall({target:`${n.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[u],e.object(G)]})}),e}async getFrarmsConfigs(){let{package_id:t}=this._sdk.sdkOptions.frams,e={global_config_id:"",rewarder_manager_id:"",rewarder_manager_handle:""},n=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::config::InitConfigEvent`})).data;if(n.length>0){let r=n[0].parsedJson;e.global_config_id=r.global_config_id,e.admin_cap_id=r.admin_cap_id}let i=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::rewarder::InitRewarderManagerEvent`})).data;if(i.length>0){let r=i[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,n=X){let i=this._cache[t];i?(i.overdueTime=he(n),i.value=e):i=new Be(e,he(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t];if(!e&&n?.isValid())return n.value;delete this._cache[t]}},Ut=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 ny(this),this._ido=new dy(this),this._xcetusModule=new ry(this),this._xtokenModule=new fy(this),this._boosterModule=new ty(this),this._makerModule=new iy(this),this._vaults=new my(this),this._limitOrder=new py(this),this._farmsModule=new gy(this),this._liquidityStrategy=new hy(this),gs(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,hf.isValidSuiAddress)(t))throw Error("this clmm config sdk senderAddess is illegal");return t}updateCache(t,e,n=X){let i=this._cache[t];i?(i.overdueTime=he(n),i.value=e):i=new Be(e,he(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t];if(!e&&n?.isValid())return n.value;delete this._cache[t]}};var Vm=require("@msafe/sui3-utils"),cp=require("@mysten/sui.js/client"),zn=ge(require("axios"),1),Ui=require("@mysten/sui.js/utils"),Io=require("@mysten/sui.js/transactions"),Eu=require("@mysten/sui.js/transactions"),Po=require("@mysten/sui.js/utils"),Mu=require("buffer"),fp=require("@mysten/sui.js/utils"),zu=require("@mysten/sui.js/bcs"),Do=require("@mysten/sui.js/utils");var yf=(t=21)=>crypto.getRandomValues(new Uint8Array(t)).reduce((e,n)=>(n&=63,n<36?e+=n.toString(36):n<62?e+=(n-26).toString(36).toUpperCase():n>62?e+="-":e+="_",e),"");var Nu=require("@mysten/sui.js/transactions"),Oo=require("@mysten/sui.js/transactions"),Eo=require("@mysten/sui.js/utils");var Ln=class extends Error{},Cs=class extends Ln{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},Ss=class extends Ln{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},As=class extends Ln{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},gn=class extends Ln{},hr=class extends Ln{constructor(e){super(`Invalid unit ${e}`)}},bt=class extends Ln{},_n=class extends Ln{constructor(){super("Zone is an abstract class")}};var Y="numeric",yn="short",Yt="long",ei={year:Y,month:Y,day:Y},Gr={year:Y,month:yn,day:Y},Pc={year:Y,month:yn,day:Y,weekday:yn},Wr={year:Y,month:Yt,day:Y},Hr={year:Y,month:Yt,day:Y,weekday:Yt},Zr={hour:Y,minute:Y},Xr={hour:Y,minute:Y,second:Y},Jr={hour:Y,minute:Y,second:Y,timeZoneName:yn},Yr={hour:Y,minute:Y,second:Y,timeZoneName:Yt},Qr={hour:Y,minute:Y,hourCycle:"h23"},eo={hour:Y,minute:Y,second:Y,hourCycle:"h23"},to={hour:Y,minute:Y,second:Y,hourCycle:"h23",timeZoneName:yn},no={hour:Y,minute:Y,second:Y,hourCycle:"h23",timeZoneName:Yt},io={year:Y,month:Y,day:Y,hour:Y,minute:Y},ro={year:Y,month:Y,day:Y,hour:Y,minute:Y,second:Y},oo={year:Y,month:yn,day:Y,hour:Y,minute:Y},so={year:Y,month:yn,day:Y,hour:Y,minute:Y,second:Y},Dc={year:Y,month:yn,day:Y,weekday:yn,hour:Y,minute:Y},ao={year:Y,month:Yt,day:Y,hour:Y,minute:Y,timeZoneName:yn},co={year:Y,month:Yt,day:Y,hour:Y,minute:Y,second:Y,timeZoneName:yn},uo={year:Y,month:Yt,day:Y,weekday:Yt,hour:Y,minute:Y,timeZoneName:Yt},lo={year:Y,month:Yt,day:Y,weekday:Yt,hour:Y,minute:Y,second:Y,timeZoneName:Yt};var Gt=class{get type(){throw new _n}get name(){throw new _n}get ianaName(){return this.name}get isUniversal(){throw new _n}offsetName(e,n){throw new _n}formatOffset(e,n){throw new _n}offset(e){throw new _n}equals(e){throw new _n}get isValid(){throw new _n}};var Ec=null,ti=class t extends Gt{static get instance(){return Ec===null&&(Ec=new t),Ec}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:i}){return Is(e,n,i)}formatOffset(e,n){return ni(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}};var Ps={};function _y(t){return Ps[t]||(Ps[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"})),Ps[t]}var yy={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function wy(t,e){let n=t.format(e).replace(/\u200E/g,""),i=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n),[,r,o,s,a,u,l,h]=i;return[s,r,o,a,u,l,h]}function by(t,e){let n=t.formatToParts(e),i=[];for(let r=0;r<n.length;r++){let{type:o,value:s}=n[r],a=yy[o];o==="era"?i[a]=s:de(a)||(i[a]=parseInt(s,10))}return i}var Os={},Ft=class t extends Gt{static create(e){return Os[e]||(Os[e]=new t(e)),Os[e]}static resetCache(){Os={},Ps={}}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:n,locale:i}){return Is(e,n,i,this.name)}formatOffset(e,n){return ni(this.offset(e),n)}offset(e){let n=new Date(e);if(isNaN(n))return NaN;let i=_y(this.name),[r,o,s,a,u,l,h]=i.formatToParts?by(i,n):wy(i,n);a==="BC"&&(r=-Math.abs(r)+1);let v=mr({year:r,month:o,day:s,hour:u===24?0:u,minute:l,second:h,millisecond:0}),T=+n,I=T%1e3;return T-=I>=0?I:1e3+I,(v-T)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}};var wf={};function vy(t,e={}){let n=JSON.stringify([t,e]),i=wf[n];return i||(i=new Intl.ListFormat(t,e),wf[n]=i),i}var Mc={};function Bc(t,e={}){let n=JSON.stringify([t,e]),i=Mc[n];return i||(i=new Intl.DateTimeFormat(t,e),Mc[n]=i),i}var jc={};function ky(t,e={}){let n=JSON.stringify([t,e]),i=jc[n];return i||(i=new Intl.NumberFormat(t,e),jc[n]=i),i}var Nc={};function Ty(t,e={}){let{base:n,...i}=e,r=JSON.stringify([t,i]),o=Nc[r];return o||(o=new Intl.RelativeTimeFormat(t,e),Nc[r]=o),o}var fo=null;function Cy(){return fo||(fo=new Intl.DateTimeFormat().resolvedOptions().locale,fo)}var bf={};function Sy(t){let e=bf[t];if(!e){let n=new Intl.Locale(t);e="getWeekInfo"in n?n.getWeekInfo():n.weekInfo,bf[t]=e}return e}function Ay(t){let e=t.indexOf("-x-");e!==-1&&(t=t.substring(0,e));let n=t.indexOf("-u-");if(n===-1)return[t];{let i,r;try{i=Bc(t).resolvedOptions(),r=t}catch{let u=t.substring(0,n);i=Bc(u).resolvedOptions(),r=u}let{numberingSystem:o,calendar:s}=i;return[r,o,s]}}function xy(t,e,n){return(n||e)&&(t.includes("-u-")||(t+="-u"),n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function Iy(t){let e=[];for(let n=1;n<=12;n++){let i=be.utc(2009,n,1);e.push(t(i))}return e}function Oy(t){let e=[];for(let n=1;n<=7;n++){let i=be.utc(2016,11,13+n);e.push(t(i))}return e}function Ds(t,e,n,i){let r=t.listingMode();return r==="error"?null:r==="en"?n(e):i(e)}function Py(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 Fc=class{constructor(e,n,i){this.padTo=i.padTo||0,this.floor=i.floor||!1;let{padTo:r,floor:o,...s}=i;if(!n||Object.keys(s).length>0){let a={useGrouping:!1,...i};i.padTo>0&&(a.minimumIntegerDigits=i.padTo),this.inf=ky(e,a)}}format(e){if(this.inf){let n=this.floor?Math.floor(e):e;return this.inf.format(n)}else{let n=this.floor?Math.floor(e):pr(e,3);return Le(n,this.padTo)}}},Rc=class{constructor(e,n,i){this.opts=i,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&&Ft.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=Bc(n,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(n=>{if(n.type==="timeZoneName"){let i=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...n,value:i}}else return n}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},qc=class{constructor(e,n,i){this.opts={style:"long",...i},!n&&Es()&&(this.rtf=Ty(e,i))}format(e,n){return this.rtf?this.rtf.format(e,n):vf(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}},Dy={firstDay:1,minimalDays:4,weekend:[6,7]},xe=class t{static fromOpts(e){return t.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,n,i,r,o=!1){let s=e||Ce.defaultLocale,a=s||(o?"en-US":Cy()),u=n||Ce.defaultNumberingSystem,l=i||Ce.defaultOutputCalendar,h=ho(r)||Ce.defaultWeekSettings;return new t(a,u,l,h,s)}static resetCache(){fo=null,Mc={},jc={},Nc={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:i,weekSettings:r}={}){return t.create(e,n,i,r)}constructor(e,n,i,r,o){let[s,a,u]=Ay(e);this.locale=s,this.numberingSystem=n||a||null,this.outputCalendar=i||u||null,this.weekSettings=r,this.intl=xy(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=Py(this)),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"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,ho(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,n=!1){return Ds(this,e,Lc,()=>{let i=n?{month:e,day:"numeric"}:{month:e},r=n?"format":"standalone";return this.monthsCache[r][e]||(this.monthsCache[r][e]=Iy(o=>this.extract(o,i,"month"))),this.monthsCache[r][e]})}weekdays(e,n=!1){return Ds(this,e,$c,()=>{let i=n?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},r=n?"format":"standalone";return this.weekdaysCache[r][e]||(this.weekdaysCache[r][e]=Oy(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[r][e]})}meridiems(){return Ds(this,void 0,()=>Uc,()=>{if(!this.meridiemCache){let e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[be.utc(2016,11,13,9),be.utc(2016,11,13,19)].map(n=>this.extract(n,e,"dayperiod"))}return this.meridiemCache})}eras(e){return Ds(this,e,Kc,()=>{let n={era:e};return this.eraCache[e]||(this.eraCache[e]=[be.utc(-40,1,1),be.utc(2017,1,1)].map(i=>this.extract(i,n,"era"))),this.eraCache[e]})}extract(e,n,i){let r=this.dtFormatter(e,n),o=r.formatToParts(),s=o.find(a=>a.type.toLowerCase()===i);return s?s.value:null}numberFormatter(e={}){return new Fc(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new Rc(e,this.intl,n)}relFormatter(e={}){return new qc(this.intl,this.isEnglish(),e)}listFormatter(e={}){return vy(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:Ms()?Sy(this.locale):Dy}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 Vc=null,Ct=class t extends Gt{static get utcInstance(){return Vc===null&&(Vc=new t(0)),Vc}static instance(e){return e===0?t.utcInstance:new t(e)}static parseSpecifier(e){if(e){let n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new t(Pi(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${ni(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${ni(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return ni(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}};var gr=class extends Gt{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 wn(t,e){let n;if(de(t)||t===null)return e;if(t instanceof Gt)return t;if(kf(t)){let i=t.toLowerCase();return i==="default"?e:i==="local"||i==="system"?ti.instance:i==="utc"||i==="gmt"?Ct.utcInstance:Ct.parseSpecifier(i)||Ft.create(t)}else return In(t)?Ct.instance(t):typeof t=="object"&&"offset"in t&&typeof t.offset=="function"?t:new gr(t)}var Tf=()=>Date.now(),Cf="system",Sf=null,Af=null,xf=null,If=60,Of,Pf=null,Ce=class{static get now(){return Tf}static set now(e){Tf=e}static set defaultZone(e){Cf=e}static get defaultZone(){return wn(Cf,ti.instance)}static get defaultLocale(){return Sf}static set defaultLocale(e){Sf=e}static get defaultNumberingSystem(){return Af}static set defaultNumberingSystem(e){Af=e}static get defaultOutputCalendar(){return xf}static set defaultOutputCalendar(e){xf=e}static get defaultWeekSettings(){return Pf}static set defaultWeekSettings(e){Pf=ho(e)}static get twoDigitCutoffYear(){return If}static set twoDigitCutoffYear(e){If=e%100}static get throwOnInvalid(){return Of}static set throwOnInvalid(e){Of=e}static resetCaches(){xe.resetCache(),Ft.resetCache()}};var St=class{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}};var Df=[0,31,59,90,120,151,181,212,243,273,304,334],Ef=[0,31,60,91,121,152,182,213,244,274,305,335];function an(t,e){return new St("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function Bs(t,e,n){let i=new Date(Date.UTC(t,e-1,n));t<100&&t>=0&&i.setUTCFullYear(i.getUTCFullYear()-1900);let r=i.getUTCDay();return r===0?7:r}function Mf(t,e,n){return n+(Ei(t)?Ef:Df)[e-1]}function Bf(t,e){let n=Ei(t)?Ef:Df,i=n.findIndex(o=>o<e),r=e-n[i];return{month:i+1,day:r}}function js(t,e){return(t-e+7)%7+1}function mo(t,e=4,n=1){let{year:i,month:r,day:o}=t,s=Mf(i,r,o),a=js(Bs(i,r,o),n),u=Math.floor((s-a+14-e)/7),l;return u<1?(l=i-1,u=Di(l,e,n)):u>Di(i,e,n)?(l=i+1,u=1):l=i,{weekYear:l,weekNumber:u,weekday:a,...go(t)}}function Gc(t,e=4,n=1){let{weekYear:i,weekNumber:r,weekday:o}=t,s=js(Bs(i,1,e),n),a=ii(i),u=r*7+o-s-7+e,l;u<1?(l=i-1,u+=ii(l)):u>a?(l=i+1,u-=ii(i)):l=i;let{month:h,day:w}=Bf(l,u);return{year:l,month:h,day:w,...go(t)}}function Ns(t){let{year:e,month:n,day:i}=t,r=Mf(e,n,i);return{year:e,ordinal:r,...go(t)}}function Wc(t){let{year:e,ordinal:n}=t,{month:i,day:r}=Bf(e,n);return{year:e,month:i,day:r,...go(t)}}function Hc(t,e){if(!de(t.localWeekday)||!de(t.localWeekNumber)||!de(t.localWeekYear)){if(!de(t.weekday)||!de(t.weekNumber)||!de(t.weekYear))throw new gn("Cannot mix locale-based week fields with ISO-based week fields");return de(t.localWeekday)||(t.weekday=t.localWeekday),de(t.localWeekNumber)||(t.weekNumber=t.localWeekNumber),de(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 jf(t,e=4,n=1){let i=po(t.weekYear),r=Qt(t.weekNumber,1,Di(t.weekYear,e,n)),o=Qt(t.weekday,1,7);return i?r?o?!1:an("weekday",t.weekday):an("week",t.weekNumber):an("weekYear",t.weekYear)}function Nf(t){let e=po(t.year),n=Qt(t.ordinal,1,ii(t.year));return e?n?!1:an("ordinal",t.ordinal):an("year",t.year)}function Zc(t){let e=po(t.year),n=Qt(t.month,1,12),i=Qt(t.day,1,_r(t.year,t.month));return e?n?i?!1:an("day",t.day):an("month",t.month):an("year",t.year)}function Xc(t){let{hour:e,minute:n,second:i,millisecond:r}=t,o=Qt(e,0,23)||e===24&&n===0&&i===0&&r===0,s=Qt(n,0,59),a=Qt(i,0,59),u=Qt(r,0,999);return o?s?a?u?!1:an("millisecond",r):an("second",i):an("minute",n):an("hour",e)}function de(t){return typeof t>"u"}function In(t){return typeof t=="number"}function po(t){return typeof t=="number"&&t%1===0}function kf(t){return typeof t=="string"}function Rf(t){return Object.prototype.toString.call(t)==="[object Date]"}function Es(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function Ms(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function qf(t){return Array.isArray(t)?t:[t]}function Jc(t,e,n){if(t.length!==0)return t.reduce((i,r)=>{let o=[e(r),r];return i&&n(i[0],o[0])===i[0]?i:o},null)[1]}function Lf(t,e){return e.reduce((n,i)=>(n[i]=t[i],n),{})}function ri(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function ho(t){if(t==null)return null;if(typeof t!="object")throw new bt("Week settings must be an object");if(!Qt(t.firstDay,1,7)||!Qt(t.minimalDays,1,7)||!Array.isArray(t.weekend)||t.weekend.some(e=>!Qt(e,1,7)))throw new bt("Invalid week settings");return{firstDay:t.firstDay,minimalDays:t.minimalDays,weekend:Array.from(t.weekend)}}function Qt(t,e,n){return po(t)&&t>=e&&t<=n}function Ey(t,e){return t-e*Math.floor(t/e)}function Le(t,e=2){let n=t<0,i;return n?i="-"+(""+-t).padStart(e,"0"):i=(""+t).padStart(e,"0"),i}function $n(t){if(!(de(t)||t===null||t===""))return parseInt(t,10)}function oi(t){if(!(de(t)||t===null||t===""))return parseFloat(t)}function _o(t){if(!(de(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function pr(t,e,n=!1){let i=10**e;return(n?Math.trunc:Math.round)(t*i)/i}function Ei(t){return t%4===0&&(t%100!==0||t%400===0)}function ii(t){return Ei(t)?366:365}function _r(t,e){let n=Ey(e-1,12)+1,i=t+(e-n)/12;return n===2?Ei(i)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function mr(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 Ff(t,e,n){return-js(Bs(t,1,e),n)+e-1}function Di(t,e=4,n=1){let i=Ff(t,e,n),r=Ff(t+1,e,n);return(ii(t)-i+r)/7}function yo(t){return t>99?t:t>Ce.twoDigitCutoffYear?1900+t:2e3+t}function Is(t,e,n,i=null){let r=new Date(t),o={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};i&&(o.timeZone=i);let s={timeZoneName:e,...o},a=new Intl.DateTimeFormat(n,s).formatToParts(r).find(u=>u.type.toLowerCase()==="timezonename");return a?a.value:null}function Pi(t,e){let n=parseInt(t,10);Number.isNaN(n)&&(n=0);let i=parseInt(e,10)||0,r=n<0||Object.is(n,-0)?-i:i;return n*60+r}function Yc(t){let e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new bt(`Invalid unit value ${t}`);return e}function yr(t,e){let n={};for(let i in t)if(ri(t,i)){let r=t[i];if(r==null)continue;n[e(i)]=Yc(r)}return n}function ni(t,e){let n=Math.trunc(Math.abs(t/60)),i=Math.trunc(Math.abs(t%60)),r=t>=0?"+":"-";switch(e){case"short":return`${r}${Le(n,2)}:${Le(i,2)}`;case"narrow":return`${r}${n}${i>0?`:${i}`:""}`;case"techie":return`${r}${Le(n,2)}${Le(i,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function go(t){return Lf(t,["hour","minute","second","millisecond"])}var My=["January","February","March","April","May","June","July","August","September","October","November","December"],Qc=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],By=["J","F","M","A","M","J","J","A","S","O","N","D"];function Lc(t){switch(t){case"narrow":return[...By];case"short":return[...Qc];case"long":return[...My];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 eu=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],tu=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],jy=["M","T","W","T","F","S","S"];function $c(t){switch(t){case"narrow":return[...jy];case"short":return[...tu];case"long":return[...eu];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var Uc=["AM","PM"],Ny=["Before Christ","Anno Domini"],Fy=["BC","AD"],Ry=["B","A"];function Kc(t){switch(t){case"narrow":return[...Ry];case"short":return[...Fy];case"long":return[...Ny];default:return null}}function $f(t){return Uc[t.hour<12?0:1]}function Uf(t,e){return $c(e)[t.weekday-1]}function Kf(t,e){return Lc(e)[t.month-1]}function zf(t,e){return Kc(e)[t.year<0?0:1]}function vf(t,e,n="always",i=!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(n==="auto"&&o){let w=t==="days";switch(e){case 1:return w?"tomorrow":`next ${r[t][0]}`;case-1:return w?"yesterday":`last ${r[t][0]}`;case 0:return w?"today":`this ${r[t][0]}`;default:}}let s=Object.is(e,-0)||e<0,a=Math.abs(e),u=a===1,l=r[t],h=i?u?l[1]:l[2]||l[1]:u?r[t][0]:t;return s?`${a} ${h} ago`:`in ${a} ${h}`}function Vf(t,e){let n="";for(let i of t)i.literal?n+=i.val:n+=e(i.val);return n}var qy={D:ei,DD:Gr,DDD:Wr,DDDD:Hr,t:Zr,tt:Xr,ttt:Jr,tttt:Yr,T:Qr,TT:eo,TTT:to,TTTT:no,f:io,ff:oo,fff:ao,ffff:uo,F:ro,FF:so,FFF:co,FFFF:lo},At=class t{static create(e,n={}){return new t(e,n)}static parseFormat(e){let n=null,i="",r=!1,o=[];for(let s=0;s<e.length;s++){let a=e.charAt(s);a==="'"?(i.length>0&&o.push({literal:r||/^\s+$/.test(i),val:i}),n=null,i="",r=!r):r||a===n?i+=a:(i.length>0&&o.push({literal:/^\s+$/.test(i),val:i}),i=a,n=a)}return i.length>0&&o.push({literal:r||/^\s+$/.test(i),val:i}),o}static macroTokenToFormatOpts(e){return qy[e]}constructor(e,n){this.opts=n,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,n){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...n}).format()}dtFormatter(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n})}formatDateTime(e,n){return this.dtFormatter(e,n).format()}formatDateTimeParts(e,n){return this.dtFormatter(e,n).formatToParts()}formatInterval(e,n){return this.dtFormatter(e.start,n).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,n){return this.dtFormatter(e,n).resolvedOptions()}num(e,n=0){if(this.opts.forceSimple)return Le(e,n);let i={...this.opts};return n>0&&(i.padTo=n),this.loc.numberFormatter(i).format(e)}formatDateTimeFromString(e,n){let i=this.loc.listingMode()==="en",r=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",o=(T,I)=>this.loc.extract(e,T,I),s=T=>e.isOffsetFixed&&e.offset===0&&T.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,T.format):"",a=()=>i?$f(e):o({hour:"numeric",hourCycle:"h12"},"dayperiod"),u=(T,I)=>i?Kf(e,T):o(I?{month:T}:{month:T,day:"numeric"},"month"),l=(T,I)=>i?Uf(e,T):o(I?{weekday:T}:{weekday:T,month:"long",day:"numeric"},"weekday"),h=T=>{let I=t.macroTokenToFormatOpts(T);return I?this.formatWithSystemDefault(e,I):T},w=T=>i?zf(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 l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("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 u("short",!0);case"LLLL":return u("long",!0);case"LLLLL":return u("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 u("short",!1);case"MMMM":return u("long",!1);case"MMMMM":return u("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 w("short");case"GG":return w("long");case"GGGGG":return w("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 Vf(t.parseFormat(n),v)}formatDurationFromString(e,n){let i=u=>{switch(u[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=u=>l=>{let h=i(l);return h?this.num(u.get(h),l.length):l},o=t.parseFormat(n),s=o.reduce((u,{literal:l,val:h})=>l?u:u.concat(h),[]),a=e.shiftTo(...s.map(i).filter(u=>u));return Vf(o,r(a))}};var Wf=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function br(...t){let e=t.reduce((n,i)=>n+i.source,"");return RegExp(`^${e}$`)}function vr(...t){return e=>t.reduce(([n,i,r],o)=>{let[s,a,u]=o(e,r);return[{...n,...s},a||i,u]},[{},null,1]).slice(0,2)}function kr(t,...e){if(t==null)return[null,null];for(let[n,i]of e){let r=n.exec(t);if(r)return i(r)}return[null,null]}function Hf(...t){return(e,n)=>{let i={},r;for(r=0;r<t.length;r++)i[t[r]]=$n(e[n+r]);return[i,null,n+r]}}var Zf=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,Ly=`(?:${Zf.source}?(?:\\[(${Wf.source})\\])?)?`,nu=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,Xf=RegExp(`${nu.source}${Ly}`),iu=RegExp(`(?:T${Xf.source})?`),$y=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Uy=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Ky=/(\d{4})-?(\d{3})/,zy=Hf("weekYear","weekNumber","weekDay"),Vy=Hf("year","ordinal"),Gy=/(\d{4})-(\d\d)-(\d\d)/,Jf=RegExp(`${nu.source} ?(?:${Zf.source}|(${Wf.source}))?`),Wy=RegExp(`(?: ${Jf.source})?`);function wr(t,e,n){let i=t[e];return de(i)?n:$n(i)}function Hy(t,e){return[{year:wr(t,e),month:wr(t,e+1,1),day:wr(t,e+2,1)},null,e+3]}function Tr(t,e){return[{hours:wr(t,e,0),minutes:wr(t,e+1,0),seconds:wr(t,e+2,0),milliseconds:_o(t[e+3])},null,e+4]}function wo(t,e){let n=!t[e]&&!t[e+1],i=Pi(t[e+1],t[e+2]),r=n?null:Ct.instance(i);return[{},r,e+3]}function bo(t,e){let n=t[e]?Ft.create(t[e]):null;return[{},n,e+1]}var Zy=RegExp(`^T?${nu.source}$`),Xy=/^-?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 Jy(t){let[e,n,i,r,o,s,a,u,l]=t,h=e[0]==="-",w=u&&u[0]==="-",v=(T,I=!1)=>T!==void 0&&(I||T&&h)?-T:T;return[{years:v(oi(n)),months:v(oi(i)),weeks:v(oi(r)),days:v(oi(o)),hours:v(oi(s)),minutes:v(oi(a)),seconds:v(oi(u),u==="-0"),milliseconds:v(_o(l),w)}]}var Yy={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 ru(t,e,n,i,r,o,s){let a={year:e.length===2?yo($n(e)):$n(e),month:Qc.indexOf(n)+1,day:$n(i),hour:$n(r),minute:$n(o)};return s&&(a.second=$n(s)),t&&(a.weekday=t.length>3?eu.indexOf(t)+1:tu.indexOf(t)+1),a}var Qy=/^(?:(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 ew(t){let[,e,n,i,r,o,s,a,u,l,h,w]=t,v=ru(e,r,i,n,o,s,a),T;return u?T=Yy[u]:l?T=0:T=Pi(h,w),[v,new Ct(T)]}function tw(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var nw=/^(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$/,iw=/^(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$/,rw=/^(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 Gf(t){let[,e,n,i,r,o,s,a]=t;return[ru(e,r,i,n,o,s,a),Ct.utcInstance]}function ow(t){let[,e,n,i,r,o,s,a]=t;return[ru(e,a,n,i,r,o,s),Ct.utcInstance]}var sw=br($y,iu),aw=br(Uy,iu),cw=br(Ky,iu),uw=br(Xf),Yf=vr(Hy,Tr,wo,bo),lw=vr(zy,Tr,wo,bo),dw=vr(Vy,Tr,wo,bo),fw=vr(Tr,wo,bo);function Qf(t){return kr(t,[sw,Yf],[aw,lw],[cw,dw],[uw,fw])}function eh(t){return kr(tw(t),[Qy,ew])}function th(t){return kr(t,[nw,Gf],[iw,Gf],[rw,ow])}function nh(t){return kr(t,[Xy,Jy])}var hw=vr(Tr);function ih(t){return kr(t,[Zy,hw])}var mw=br(Gy,Wy),pw=br(Jf),gw=vr(Tr,wo,bo);function rh(t){return kr(t,[mw,Yf],[pw,gw])}var oh="Invalid Duration",ah={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}},_w={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},...ah},cn=146097/400,Cr=146097/4800,yw={years:{quarters:4,months:12,weeks:cn/7,days:cn,hours:cn*24,minutes:cn*24*60,seconds:cn*24*60*60,milliseconds:cn*24*60*60*1e3},quarters:{months:3,weeks:cn/28,days:cn/4,hours:cn*24/4,minutes:cn*24*60/4,seconds:cn*24*60*60/4,milliseconds:cn*24*60*60*1e3/4},months:{weeks:Cr/7,days:Cr,hours:Cr*24,minutes:Cr*24*60,seconds:Cr*24*60*60,milliseconds:Cr*24*60*60*1e3},...ah},Mi=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],ww=Mi.slice(0).reverse();function si(t,e,n=!1){let i={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy,matrix:e.matrix||t.matrix};return new Pe(i)}function ch(t,e){let n=e.milliseconds??0;for(let i of ww.slice(1))e[i]&&(n+=e[i]*t[i].milliseconds);return n}function sh(t,e){let n=ch(t,e)<0?-1:1;Mi.reduceRight((i,r)=>{if(de(e[r]))return i;if(i){let o=e[i]*n,s=t[r][i],a=Math.floor(o/s);e[r]+=a*n,e[i]-=a*s*n}return r},null),Mi.reduce((i,r)=>{if(de(e[r]))return i;if(i){let o=e[i]%1;e[i]-=o,e[r]+=o*t[i][r]}return r},null)}function bw(t){let e={};for(let[n,i]of Object.entries(t))i!==0&&(e[n]=i);return e}var Pe=class t{constructor(e){let n=e.conversionAccuracy==="longterm"||!1,i=n?yw:_w;e.matrix&&(i=e.matrix),this.values=e.values,this.loc=e.loc||xe.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=i,this.isLuxonDuration=!0}static fromMillis(e,n){return t.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new bt(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new t({values:yr(e,t.normalizeUnit),loc:xe.fromObject(n),conversionAccuracy:n.conversionAccuracy,matrix:n.matrix})}static fromDurationLike(e){if(In(e))return t.fromMillis(e);if(t.isDuration(e))return e;if(typeof e=="object")return t.fromObject(e);throw new bt(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){let[i]=nh(e);return i?t.fromObject(i,n):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){let[i]=ih(e);return i?t.fromObject(i,n):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new bt("need to specify a reason the Duration is invalid");let i=e instanceof St?e:new St(e,n);if(Ce.throwOnInvalid)throw new As(i);return new t({invalid:i})}static normalizeUnit(e){let n={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(!n)throw new hr(e);return n}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,n={}){let i={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?At.create(this.loc,i).formatDurationFromString(this,e):oh}toHuman(e={}){if(!this.isValid)return oh;let n=Mi.map(i=>{let r=this.values[i];return de(r)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:i.slice(0,-1)}).format(r)}).filter(i=>i);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}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+=pr(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;let n=this.toMillis();return n<0||n>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1},be.fromMillis(n,{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?ch(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;let n=t.fromDurationLike(e),i={};for(let r of Mi)(ri(n.values,r)||ri(this.values,r))&&(i[r]=n.get(r)+this.get(r));return si(this,{values:i},!0)}minus(e){if(!this.isValid)return this;let n=t.fromDurationLike(e);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;let n={};for(let i of Object.keys(this.values))n[i]=Yc(e(this.values[i],i));return si(this,{values:n},!0)}get(e){return this[t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let n={...this.values,...yr(e,t.normalizeUnit)};return si(this,{values:n})}reconfigure({locale:e,numberingSystem:n,conversionAccuracy:i,matrix:r}={}){let s={loc:this.loc.clone({locale:e,numberingSystem:n}),matrix:r,conversionAccuracy:i};return si(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return sh(this.matrix,e),si(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=bw(this.normalize().shiftToAll().toObject());return si(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 n={},i={},r=this.toObject(),o;for(let s of Mi)if(e.indexOf(s)>=0){o=s;let a=0;for(let l in i)a+=this.matrix[l][s]*i[l],i[l]=0;In(r[s])&&(a+=r[s]);let u=Math.trunc(a);n[s]=u,i[s]=(a*1e3-u*1e3)/1e3}else In(r[s])&&(i[s]=r[s]);for(let s in i)i[s]!==0&&(n[o]+=s===o?i[s]:i[s]/this.matrix[o][s]);return sh(this.matrix,n),si(this,{values:n},!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 n of Object.keys(this.values))e[n]=this.values[n]===0?0:-this.values[n];return si(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 n(i,r){return i===void 0||i===0?r===void 0||r===0:i===r}for(let i of Mi)if(!n(this.values[i],e.values[i]))return!1;return!0}};var Sr="Invalid Interval";function vw(t,e){return!t||!t.isValid?Un.invalid("missing or invalid start"):!e||!e.isValid?Un.invalid("missing or invalid end"):e<t?Un.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 Un=class t{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new bt("need to specify a reason the Interval is invalid");let i=e instanceof St?e:new St(e,n);if(Ce.throwOnInvalid)throw new Ss(i);return new t({invalid:i})}static fromDateTimes(e,n){let i=Ar(e),r=Ar(n),o=vw(i,r);return o??new t({start:i,end:r})}static after(e,n){let i=Pe.fromDurationLike(n),r=Ar(e);return t.fromDateTimes(r,r.plus(i))}static before(e,n){let i=Pe.fromDurationLike(n),r=Ar(e);return t.fromDateTimes(r.minus(i),r)}static fromISO(e,n){let[i,r]=(e||"").split("/",2);if(i&&r){let o,s;try{o=be.fromISO(i,n),s=o.isValid}catch{s=!1}let a,u;try{a=be.fromISO(r,n),u=a.isValid}catch{u=!1}if(s&&u)return t.fromDateTimes(o,a);if(s){let l=Pe.fromISO(r,n);if(l.isValid)return t.after(o,l)}else if(u){let l=Pe.fromISO(i,n);if(l.isValid)return t.before(a,l)}}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",n){if(!this.isValid)return NaN;let i=this.start.startOf(e,n),r;return n?.useLocaleWeeks?r=this.end.reconfigure({locale:i.locale}):r=this.end,r=r.startOf(e,n),Math.floor(r.diff(i,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:n}={}){return this.isValid?t.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];let n=e.map(Ar).filter(s=>this.contains(s)).sort((s,a)=>s.toMillis()-a.toMillis()),i=[],{s:r}=this,o=0;for(;r<this.e;){let s=n[o]||this.e,a=+s>+this.e?this.e:s;i.push(t.fromDateTimes(r,a)),r=a,o+=1}return i}splitBy(e){let n=Pe.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:i}=this,r=1,o,s=[];for(;i<this.e;){let a=this.start.plus(n.mapUnits(u=>u*r));o=+a>+this.e?this.e:a,s.push(t.fromDateTimes(i,o)),i=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 n=this.s>e.s?this.s:e.s,i=this.e<e.e?this.e:e.e;return n>=i?null:t.fromDateTimes(n,i)}union(e){if(!this.isValid)return this;let n=this.s<e.s?this.s:e.s,i=this.e>e.e?this.e:e.e;return t.fromDateTimes(n,i)}static merge(e){let[n,i]=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 i&&n.push(i),n}static xor(e){let n=null,i=0,r=[],o=e.map(u=>[{time:u.s,type:"s"},{time:u.e,type:"e"}]),s=Array.prototype.concat(...o),a=s.sort((u,l)=>u.time-l.time);for(let u of a)i+=u.type==="s"?1:-1,i===1?n=u.time:(n&&+n!=+u.time&&r.push(t.fromDateTimes(n,u.time)),n=null);return t.merge(r)}difference(...e){return t.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \u2013 ${this.e.toISO()})`:Sr}[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=ei,n={}){return this.isValid?At.create(this.s.loc.clone(n),e).formatInterval(this):Sr}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Sr}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Sr}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Sr}toFormat(e,{separator:n=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:Sr}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):Pe.invalid(this.invalidReason)}mapEndpoints(e){return t.fromDateTimes(e(this.s),e(this.e))}};var Kn=class{static hasDST(e=Ce.defaultZone){let n=be.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Ft.isValidZone(e)}static normalizeZone(e){return wn(e,Ce.defaultZone)}static getStartOfWeek({locale:e=null,locObj:n=null}={}){return(n||xe.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:n=null}={}){return(n||xe.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:n=null}={}){return(n||xe.create(e)).getWeekendDays().slice()}static months(e="long",{locale:n=null,numberingSystem:i=null,locObj:r=null,outputCalendar:o="gregory"}={}){return(r||xe.create(n,i,o)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:i=null,locObj:r=null,outputCalendar:o="gregory"}={}){return(r||xe.create(n,i,o)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:i=null,locObj:r=null}={}){return(r||xe.create(n,i,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:i=null,locObj:r=null}={}){return(r||xe.create(n,i,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return xe.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return xe.create(n,null,"gregory").eras(e)}static features(){return{relative:Es(),localeWeek:Ms()}}};function uh(t,e){let n=r=>r.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),i=n(e)-n(t);return Math.floor(Pe.fromMillis(i).as("days"))}function kw(t,e,n){let i=[["years",(u,l)=>l.year-u.year],["quarters",(u,l)=>l.quarter-u.quarter+(l.year-u.year)*4],["months",(u,l)=>l.month-u.month+(l.year-u.year)*12],["weeks",(u,l)=>{let h=uh(u,l);return(h-h%7)/7}],["days",uh]],r={},o=t,s,a;for(let[u,l]of i)n.indexOf(u)>=0&&(s=u,r[u]=l(t,e),a=o.plus(r),a>e?(r[u]--,t=o.plus(r),t>e&&(a=t,r[u]--,t=o.plus(r))):t=a);return[t,r,a,s]}function lh(t,e,n,i){let[r,o,s,a]=kw(t,e,n),u=e-r,l=n.filter(w=>["hours","minutes","seconds","milliseconds"].indexOf(w)>=0);l.length===0&&(s<e&&(s=r.plus({[a]:1})),s!==r&&(o[a]=(o[a]||0)+u/(s-r)));let h=Pe.fromObject(o,i);return l.length>0?Pe.fromMillis(u,i).shiftTo(...l).plus(h):h}var ou={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"},dh={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]},Tw=ou.hanidec.replace(/[\[|\]]/g,"").split("");function fh(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let n=0;n<t.length;n++){let i=t.charCodeAt(n);if(t[n].search(ou.hanidec)!==-1)e+=Tw.indexOf(t[n]);else for(let r in dh){let[o,s]=dh[r];i>=o&&i<=s&&(e+=i-o)}}return parseInt(e,10)}else return e}function un({numberingSystem:t},e=""){return new RegExp(`${ou[t||"latn"]}${e}`)}var Cw="missing Intl.DateTimeFormat.formatToParts support";function Se(t,e=n=>n){return{regex:t,deser:([n])=>e(fh(n))}}var Sw="\xA0",ph=`[ ${Sw}]`,gh=new RegExp(ph,"g");function Aw(t){return t.replace(/\./g,"\\.?").replace(gh,ph)}function hh(t){return t.replace(/\./g,"").replace(gh," ").toLowerCase()}function bn(t,e){return t===null?null:{regex:RegExp(t.map(Aw).join("|")),deser:([n])=>t.findIndex(i=>hh(n)===hh(i))+e}}function mh(t,e){return{regex:t,deser:([,n,i])=>Pi(n,i),groups:e}}function Fs(t){return{regex:t,deser:([e])=>e}}function xw(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function Iw(t,e){let n=un(e),i=un(e,"{2}"),r=un(e,"{3}"),o=un(e,"{4}"),s=un(e,"{6}"),a=un(e,"{1,2}"),u=un(e,"{1,3}"),l=un(e,"{1,6}"),h=un(e,"{1,9}"),w=un(e,"{2,4}"),v=un(e,"{4,6}"),T=P=>({regex:RegExp(xw(P.val)),deser:([O])=>O,literal:!0}),x=(P=>{if(t.literal)return T(P);switch(P.val){case"G":return bn(e.eras("short"),0);case"GG":return bn(e.eras("long"),0);case"y":return Se(l);case"yy":return Se(w,yo);case"yyyy":return Se(o);case"yyyyy":return Se(v);case"yyyyyy":return Se(s);case"M":return Se(a);case"MM":return Se(i);case"MMM":return bn(e.months("short",!0),1);case"MMMM":return bn(e.months("long",!0),1);case"L":return Se(a);case"LL":return Se(i);case"LLL":return bn(e.months("short",!1),1);case"LLLL":return bn(e.months("long",!1),1);case"d":return Se(a);case"dd":return Se(i);case"o":return Se(u);case"ooo":return Se(r);case"HH":return Se(i);case"H":return Se(a);case"hh":return Se(i);case"h":return Se(a);case"mm":return Se(i);case"m":return Se(a);case"q":return Se(a);case"qq":return Se(i);case"s":return Se(a);case"ss":return Se(i);case"S":return Se(u);case"SSS":return Se(r);case"u":return Fs(h);case"uu":return Fs(a);case"uuu":return Se(n);case"a":return bn(e.meridiems(),0);case"kkkk":return Se(o);case"kk":return Se(w,yo);case"W":return Se(a);case"WW":return Se(i);case"E":case"c":return Se(n);case"EEE":return bn(e.weekdays("short",!1),1);case"EEEE":return bn(e.weekdays("long",!1),1);case"ccc":return bn(e.weekdays("short",!0),1);case"cccc":return bn(e.weekdays("long",!0),1);case"Z":case"ZZ":return mh(new RegExp(`([+-]${a.source})(?::(${i.source}))?`),2);case"ZZZ":return mh(new RegExp(`([+-]${a.source})(${i.source})?`),2);case"z":return Fs(/[a-z_+-/]{1,256}?/i);case" ":return Fs(/[^\S\n\r]/);default:return T(P)}})(t)||{invalidReason:Cw};return x.token=t,x}var Ow={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 Pw(t,e,n){let{type:i,value:r}=t;if(i==="literal"){let u=/^\s+$/.test(r);return{literal:!u,val:u?" ":r}}let o=e[i],s=i;i==="hour"&&(e.hour12!=null?s=e.hour12?"hour12":"hour24":e.hourCycle!=null?e.hourCycle==="h11"||e.hourCycle==="h12"?s="hour12":s="hour24":s=n.hour12?"hour12":"hour24");let a=Ow[s];if(typeof a=="object"&&(a=a[o]),a)return{literal:!1,val:a}}function Dw(t){return[`^${t.map(n=>n.regex).reduce((n,i)=>`${n}(${i.source})`,"")}$`,t]}function Ew(t,e,n){let i=t.match(e);if(i){let r={},o=1;for(let s in n)if(ri(n,s)){let a=n[s],u=a.groups?a.groups+1:1;!a.literal&&a.token&&(r[a.token.val[0]]=a.deser(i.slice(o,o+u))),o+=u}return[i,r]}else return[i,{}]}function Mw(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}},n=null,i;return de(t.z)||(n=Ft.create(t.z)),de(t.Z)||(n||(n=new Ct(t.Z)),i=t.Z),de(t.q)||(t.M=(t.q-1)*3+1),de(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),de(t.u)||(t.S=_o(t.u)),[Object.keys(t).reduce((o,s)=>{let a=e(s);return a&&(o[a]=t[s]),o},{}),n,i]}var su=null;function Bw(){return su||(su=be.fromMillis(1555555555555)),su}function jw(t,e){if(t.literal)return t;let n=At.macroTokenToFormatOpts(t.val),i=uu(n,e);return i==null||i.includes(void 0)?t:i}function au(t,e){return Array.prototype.concat(...t.map(n=>jw(n,e)))}function cu(t,e,n){let i=au(At.parseFormat(n),t),r=i.map(s=>Iw(s,t)),o=r.find(s=>s.invalidReason);if(o)return{input:e,tokens:i,invalidReason:o.invalidReason};{let[s,a]=Dw(r),u=RegExp(s,"i"),[l,h]=Ew(e,u,a),[w,v,T]=h?Mw(h):[null,null,void 0];if(ri(h,"a")&&ri(h,"H"))throw new gn("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:i,regex:u,rawMatches:l,matches:h,result:w,zone:v,specificOffset:T}}}function _h(t,e,n){let{result:i,zone:r,specificOffset:o,invalidReason:s}=cu(t,e,n);return[i,r,o,s]}function uu(t,e){if(!t)return null;let i=At.create(e,t).dtFormatter(Bw()),r=i.formatToParts(),o=i.resolvedOptions();return r.map(s=>Pw(s,t,o))}var lu="Invalid DateTime",yh=864e13;function Rs(t){return new St("unsupported zone",`the zone "${t.name}" is not supported`)}function du(t){return t.weekData===null&&(t.weekData=mo(t.c)),t.weekData}function fu(t){return t.localWeekData===null&&(t.localWeekData=mo(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}function Bi(t,e){let n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new be({...n,...e,old:n})}function Sh(t,e,n){let i=t-e*60*1e3,r=n.offset(i);if(e===r)return[i,e];i-=(r-e)*60*1e3;let o=n.offset(i);return r===o?[i,r]:[t-Math.min(r,o)*60*1e3,Math.max(r,o)]}function qs(t,e){t+=e*60*1e3;let n=new Date(t);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function $s(t,e,n){return Sh(mr(t),e,n)}function wh(t,e){let n=t.o,i=t.c.year+Math.trunc(e.years),r=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,o={...t.c,year:i,month:r,day:Math.min(t.c.day,_r(i,r))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},s=Pe.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=mr(o),[u,l]=Sh(a,n,t.zone);return s!==0&&(u+=s,l=t.zone.offset(u)),{ts:u,o:l}}function vo(t,e,n,i,r,o){let{setZone:s,zone:a}=n;if(t&&Object.keys(t).length!==0||e){let u=e||a,l=be.fromObject(t,{...n,zone:u,specificOffset:o});return s?l:l.setZone(a)}else return be.invalid(new St("unparsable",`the input "${r}" can't be parsed as ${i}`))}function Ls(t,e,n=!0){return t.isValid?At.create(xe.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function hu(t,e){let n=t.c.year>9999||t.c.year<0,i="";return n&&t.c.year>=0&&(i+="+"),i+=Le(t.c.year,n?6:4),e?(i+="-",i+=Le(t.c.month),i+="-",i+=Le(t.c.day)):(i+=Le(t.c.month),i+=Le(t.c.day)),i}function bh(t,e,n,i,r,o){let s=Le(t.c.hour);return e?(s+=":",s+=Le(t.c.minute),(t.c.millisecond!==0||t.c.second!==0||!n)&&(s+=":")):s+=Le(t.c.minute),(t.c.millisecond!==0||t.c.second!==0||!n)&&(s+=Le(t.c.second),(t.c.millisecond!==0||!i)&&(s+=".",s+=Le(t.c.millisecond,3))),r&&(t.isOffsetFixed&&t.offset===0&&!o?s+="Z":t.o<0?(s+="-",s+=Le(Math.trunc(-t.o/60)),s+=":",s+=Le(Math.trunc(-t.o%60))):(s+="+",s+=Le(Math.trunc(t.o/60)),s+=":",s+=Le(Math.trunc(t.o%60)))),o&&(s+="["+t.zone.ianaName+"]"),s}var Ah={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},Nw={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},Fw={ordinal:1,hour:0,minute:0,second:0,millisecond:0},xh=["year","month","day","hour","minute","second","millisecond"],Rw=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],qw=["year","ordinal","hour","minute","second","millisecond"];function Lw(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 hr(t);return e}function vh(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return Lw(t)}}function kh(t,e){let n=wn(e.zone,Ce.defaultZone),i=xe.fromObject(e),r=Ce.now(),o,s;if(de(t.year))o=r;else{for(let l of xh)de(t[l])&&(t[l]=Ah[l]);let a=Zc(t)||Xc(t);if(a)return be.invalid(a);let u=n.offset(r);[o,s]=$s(t,u,n)}return new be({ts:o,zone:n,loc:i,o:s})}function Th(t,e,n){let i=de(n.round)?!0:n.round,r=(s,a)=>(s=pr(s,i||n.calendary?0:2,!0),e.loc.clone(n).relFormatter(n).format(s,a)),o=s=>n.calendary?e.hasSame(t,s)?0:e.startOf(s).diff(t.startOf(s),s).get(s):e.diff(t,s).get(s);if(n.unit)return r(o(n.unit),n.unit);for(let s of n.units){let a=o(s);if(Math.abs(a)>=1)return r(a,s)}return r(t>e?-0:0,n.units[n.units.length-1])}function Ch(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}var be=class t{constructor(e){let n=e.zone||Ce.defaultZone,i=e.invalid||(Number.isNaN(e.ts)?new St("invalid input"):null)||(n.isValid?null:Rs(n));this.ts=de(e.ts)?Ce.now():e.ts;let r=null,o=null;if(!i)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(n))[r,o]=[e.old.c,e.old.o];else{let a=n.offset(this.ts);r=qs(this.ts,a),i=Number.isNaN(r.year)?new St("invalid input"):null,r=i?null:r,o=i?null:a}this._zone=n,this.loc=e.loc||xe.create(),this.invalid=i,this.weekData=null,this.localWeekData=null,this.c=r,this.o=o,this.isLuxonDateTime=!0}static now(){return new t({})}static local(){let[e,n]=Ch(arguments),[i,r,o,s,a,u,l]=n;return kh({year:i,month:r,day:o,hour:s,minute:a,second:u,millisecond:l},e)}static utc(){let[e,n]=Ch(arguments),[i,r,o,s,a,u,l]=n;return e.zone=Ct.utcInstance,kh({year:i,month:r,day:o,hour:s,minute:a,second:u,millisecond:l},e)}static fromJSDate(e,n={}){let i=Rf(e)?e.valueOf():NaN;if(Number.isNaN(i))return t.invalid("invalid input");let r=wn(n.zone,Ce.defaultZone);return r.isValid?new t({ts:i,zone:r,loc:xe.fromObject(n)}):t.invalid(Rs(r))}static fromMillis(e,n={}){if(In(e))return e<-yh||e>yh?t.invalid("Timestamp out of range"):new t({ts:e,zone:wn(n.zone,Ce.defaultZone),loc:xe.fromObject(n)});throw new bt(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(In(e))return new t({ts:e*1e3,zone:wn(n.zone,Ce.defaultZone),loc:xe.fromObject(n)});throw new bt("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};let i=wn(n.zone,Ce.defaultZone);if(!i.isValid)return t.invalid(Rs(i));let r=xe.fromObject(n),o=yr(e,vh),{minDaysInFirstWeek:s,startOfWeek:a}=Hc(o,r),u=Ce.now(),l=de(n.specificOffset)?i.offset(u):n.specificOffset,h=!de(o.ordinal),w=!de(o.year),v=!de(o.month)||!de(o.day),T=w||v,I=o.weekYear||o.weekNumber;if((T||h)&&I)throw new gn("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(v&&h)throw new gn("Can't mix ordinal dates with month/day");let x=I||o.weekday&&!T,P,O,E=qs(u,l);x?(P=Rw,O=Nw,E=mo(E,s,a)):h?(P=qw,O=Fw,E=Ns(E)):(P=xh,O=Ah);let B=!1;for(let F of P){let K=o[F];de(K)?B?o[F]=O[F]:o[F]=E[F]:B=!0}let $=x?jf(o,s,a):h?Nf(o):Zc(o),Z=$||Xc(o);if(Z)return t.invalid(Z);let H=x?Gc(o,s,a):h?Wc(o):o,[te,U]=$s(H,l,i),V=new t({ts:te,zone:i,o:U,loc:r});return o.weekday&&T&&e.weekday!==V.weekday?t.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${V.toISO()}`):V}static fromISO(e,n={}){let[i,r]=Qf(e);return vo(i,r,n,"ISO 8601",e)}static fromRFC2822(e,n={}){let[i,r]=eh(e);return vo(i,r,n,"RFC 2822",e)}static fromHTTP(e,n={}){let[i,r]=th(e);return vo(i,r,n,"HTTP",n)}static fromFormat(e,n,i={}){if(de(e)||de(n))throw new bt("fromFormat requires an input string and a format");let{locale:r=null,numberingSystem:o=null}=i,s=xe.fromOpts({locale:r,numberingSystem:o,defaultToEN:!0}),[a,u,l,h]=_h(s,e,n);return h?t.invalid(h):vo(a,u,i,`format ${n}`,e,l)}static fromString(e,n,i={}){return t.fromFormat(e,n,i)}static fromSQL(e,n={}){let[i,r]=rh(e);return vo(i,r,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new bt("need to specify a reason the DateTime is invalid");let i=e instanceof St?e:new St(e,n);if(Ce.throwOnInvalid)throw new Cs(i);return new t({invalid:i})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,n={}){let i=uu(e,xe.fromObject(n));return i?i.map(r=>r?r.val:null).join(""):null}static expandFormat(e,n={}){return au(At.parseFormat(e),xe.fromObject(n)).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?du(this).weekYear:NaN}get weekNumber(){return this.isValid?du(this).weekNumber:NaN}get weekday(){return this.isValid?du(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?fu(this).weekday:NaN}get localWeekNumber(){return this.isValid?fu(this).weekNumber:NaN}get localWeekYear(){return this.isValid?fu(this).weekYear:NaN}get ordinal(){return this.isValid?Ns(this.c).ordinal:NaN}get monthShort(){return this.isValid?Kn.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Kn.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Kn.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Kn.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,n=6e4,i=mr(this.c),r=this.zone.offset(i-e),o=this.zone.offset(i+e),s=this.zone.offset(i-r*n),a=this.zone.offset(i-o*n);if(s===a)return[this];let u=i-s*n,l=i-a*n,h=qs(u,s),w=qs(l,a);return h.hour===w.hour&&h.minute===w.minute&&h.second===w.second&&h.millisecond===w.millisecond?[Bi(this,{ts:u}),Bi(this,{ts:l})]:[this]}get isInLeapYear(){return Ei(this.year)}get daysInMonth(){return _r(this.year,this.month)}get daysInYear(){return this.isValid?ii(this.year):NaN}get weeksInWeekYear(){return this.isValid?Di(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?Di(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:n,numberingSystem:i,calendar:r}=At.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:i,outputCalendar:r}}toUTC(e=0,n={}){return this.setZone(Ct.instance(e),n)}toLocal(){return this.setZone(Ce.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:i=!1}={}){if(e=wn(e,Ce.defaultZone),e.equals(this.zone))return this;if(e.isValid){let r=this.ts;if(n||i){let o=e.offset(this.ts),s=this.toObject();[r]=$s(s,o,e)}return Bi(this,{ts:r,zone:e})}else return t.invalid(Rs(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:i}={}){let r=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:i});return Bi(this,{loc:r})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let n=yr(e,vh),{minDaysInFirstWeek:i,startOfWeek:r}=Hc(n,this.loc),o=!de(n.weekYear)||!de(n.weekNumber)||!de(n.weekday),s=!de(n.ordinal),a=!de(n.year),u=!de(n.month)||!de(n.day),l=a||u,h=n.weekYear||n.weekNumber;if((l||s)&&h)throw new gn("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(u&&s)throw new gn("Can't mix ordinal dates with month/day");let w;o?w=Gc({...mo(this.c,i,r),...n},i,r):de(n.ordinal)?(w={...this.toObject(),...n},de(n.day)&&(w.day=Math.min(_r(w.year,w.month),w.day))):w=Wc({...Ns(this.c),...n});let[v,T]=$s(w,this.o,this.zone);return Bi(this,{ts:v,o:T})}plus(e){if(!this.isValid)return this;let n=Pe.fromDurationLike(e);return Bi(this,wh(this,n))}minus(e){if(!this.isValid)return this;let n=Pe.fromDurationLike(e).negate();return Bi(this,wh(this,n))}startOf(e,{useLocaleWeeks:n=!1}={}){if(!this.isValid)return this;let i={},r=Pe.normalizeUnit(e);switch(r){case"years":i.month=1;case"quarters":case"months":i.day=1;case"weeks":case"days":i.hour=0;case"hours":i.minute=0;case"minutes":i.second=0;case"seconds":i.millisecond=0;break;case"milliseconds":break}if(r==="weeks")if(n){let o=this.loc.getStartOfWeek(),{weekday:s}=this;s<o&&(i.weekNumber=this.weekNumber-1),i.weekday=o}else i.weekday=1;if(r==="quarters"){let o=Math.ceil(this.month/3);i.month=(o-1)*3+1}return this.set(i)}endOf(e,n){return this.isValid?this.plus({[e]:1}).startOf(e,n).minus(1):this}toFormat(e,n={}){return this.isValid?At.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):lu}toLocaleString(e=ei,n={}){return this.isValid?At.create(this.loc.clone(n),e).formatDateTime(this):lu}toLocaleParts(e={}){return this.isValid?At.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:n=!1,suppressMilliseconds:i=!1,includeOffset:r=!0,extendedZone:o=!1}={}){if(!this.isValid)return null;let s=e==="extended",a=hu(this,s);return a+="T",a+=bh(this,s,n,i,r,o),a}toISODate({format:e="extended"}={}){return this.isValid?hu(this,e==="extended"):null}toISOWeekDate(){return Ls(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:n=!1,includeOffset:i=!0,includePrefix:r=!1,extendedZone:o=!1,format:s="extended"}={}){return this.isValid?(r?"T":"")+bh(this,s==="extended",n,e,i,o):null}toRFC2822(){return Ls(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return Ls(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?hu(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:n=!1,includeOffsetSpace:i=!0}={}){let r="HH:mm:ss.SSS";return(n||e)&&(i&&(r+=" "),n?r+="z":e&&(r+="ZZ")),Ls(this,r,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():lu}[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 n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",i={}){if(!this.isValid||!e.isValid)return Pe.invalid("created by diffing an invalid DateTime");let r={locale:this.locale,numberingSystem:this.numberingSystem,...i},o=qf(n).map(Pe.normalizeUnit),s=e.valueOf()>this.valueOf(),a=s?this:e,u=s?e:this,l=lh(a,u,o,r);return s?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(t.now(),e,n)}until(e){return this.isValid?Un.fromDateTimes(this,e):this}hasSame(e,n,i){if(!this.isValid)return!1;let r=e.valueOf(),o=this.setZone(e.zone,{keepLocalTime:!0});return o.startOf(n,i)<=r&&r<=o.endOf(n,i)}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 n=e.base||t.fromObject({},{zone:this.zone}),i=e.padding?this<n?-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),Th(n,this.plus(i),{...e,numeric:"always",units:r,unit:o})}toRelativeCalendar(e={}){return this.isValid?Th(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 bt("min requires all arguments be DateTimes");return Jc(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new bt("max requires all arguments be DateTimes");return Jc(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,i={}){let{locale:r=null,numberingSystem:o=null}=i,s=xe.fromOpts({locale:r,numberingSystem:o,defaultToEN:!0});return cu(s,e,n)}static fromStringExplain(e,n,i={}){return t.fromFormatExplain(e,n,i)}static get DATE_SHORT(){return ei}static get DATE_MED(){return Gr}static get DATE_MED_WITH_WEEKDAY(){return Pc}static get DATE_FULL(){return Wr}static get DATE_HUGE(){return Hr}static get TIME_SIMPLE(){return Zr}static get TIME_WITH_SECONDS(){return Xr}static get TIME_WITH_SHORT_OFFSET(){return Jr}static get TIME_WITH_LONG_OFFSET(){return Yr}static get TIME_24_SIMPLE(){return Qr}static get TIME_24_WITH_SECONDS(){return eo}static get TIME_24_WITH_SHORT_OFFSET(){return to}static get TIME_24_WITH_LONG_OFFSET(){return no}static get DATETIME_SHORT(){return io}static get DATETIME_SHORT_WITH_SECONDS(){return ro}static get DATETIME_MED(){return oo}static get DATETIME_MED_WITH_SECONDS(){return so}static get DATETIME_MED_WITH_WEEKDAY(){return Dc}static get DATETIME_FULL(){return ao}static get DATETIME_FULL_WITH_SECONDS(){return co}static get DATETIME_HUGE(){return uo}static get DATETIME_HUGE_WITH_SECONDS(){return lo}};function Ar(t){if(be.isDateTime(t))return t;if(t&&t.valueOf&&In(t.valueOf()))return be.fromJSDate(t);if(t&&typeof t=="object")return be.fromObject(t);throw new bt(`Unknown datetime argument: ${t}, of type ${typeof t}`)}var Mr=require("@mysten/sui.js/utils");var gi=require("@mysten/sui.js/utils");var Ip=ge(Uo(),1),Op=require("@msafe/sui3-utils"),Pp=require("@msafe/sui3-utils"),Dp=require("@msafe/sui3-utils"),Lu=require("@mysten/sui.js/bcs"),hi=require("@mysten/sui.js/utils"),Mp=require("@msafe/sui3-utils"),Er=require("@msafe/sui3-utils"),Bp=require("@msafe/sui3-utils"),Np=require("@msafe/sui3-utils"),Rp=require("@msafe/sui3-utils"),qp=require("@mysten/sui.js/transactions"),$p=require("@msafe/sui3-utils"),Dr=require("@msafe/sui3-utils"),$u=require("@mysten/sui.js/bcs"),mi=require("@mysten/sui.js/utils"),Up=require("@mysten/sui.js/transactions"),zp=require("@mysten/sui.js/transactions"),Gp=require("@mysten/sui.js/transactions"),Zp=require("@mysten/sui.js/transactions"),Jp=require("@mysten/sui.js/transactions"),da=require("@msafe/sui3-utils"),Qp=require("@mysten/sui.js/transactions"),fa=require("@mysten/sui.js/utils"),lx=ge(Uo(),1),eg=require("@msafe/sui3-utils"),$i=require("@msafe/sui3-utils"),Uu=require("@mysten/sui.js/bcs"),pi=require("@mysten/sui.js/utils");var lb=ge(ke(),1);var Ri=require("@mysten/sui.js/client"),zh=require("@mysten/sui.js/keypairs/ed25519");function Ih(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(`Wrong positive integer: ${t}`)}function $w(t){return t instanceof Uint8Array||t!=null&&typeof t=="object"&&t.constructor.name==="Uint8Array"}function mu(t,...e){if(!$w(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 pu(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 Oh(t,e){mu(t);let n=e.outputLen;if(t.length<n)throw new Error(`digestInto() expects output buffer of length at least ${n}`)}var Us=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function Uw(t){return t instanceof Uint8Array||t!=null&&typeof t=="object"&&t.constructor.name==="Uint8Array"}var zs=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),vn=(t,e)=>t<<32-e|t>>>e,Kw=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!Kw)throw new Error("Non little-endian hardware is not supported");function zw(t){if(typeof t!="string")throw new Error(`utf8ToBytes expected string, got ${typeof t}`);return new Uint8Array(new TextEncoder().encode(t))}function gu(t){if(typeof t=="string"&&(t=zw(t)),!Uw(t))throw new Error(`expected Uint8Array, got ${typeof t}`);return t}var Ks=class{clone(){return this._cloneInto()}},pA={}.toString;function Ph(t){let e=i=>t().update(gu(i)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function Dh(t=32){if(Us&&typeof Us.getRandomValues=="function")return Us.getRandomValues(new Uint8Array(t));throw new Error("crypto.getRandomValues must be defined")}function Vw(t,e,n,i){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,i);let r=BigInt(32),o=BigInt(4294967295),s=Number(n>>r&o),a=Number(n&o),u=i?4:0,l=i?0:4;t.setUint32(e+u,s,i),t.setUint32(e+l,a,i)}var Vs=class extends Ks{constructor(e,n,i,r){super(),this.blockLen=e,this.outputLen=n,this.padOffset=i,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=zs(this.buffer)}update(e){pu(this);let{view:n,buffer:i,blockLen:r}=this;e=gu(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let u=zs(e);for(;r<=o-s;s+=r)this.process(u,s);continue}i.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){pu(this),Oh(e,this),this.finished=!0;let{buffer:n,view:i,blockLen:r,isLE:o}=this,{pos:s}=this;n[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(i,0),s=0);for(let w=s;w<r;w++)n[w]=0;Vw(i,r-8,BigInt(this.length*8),o),this.process(i,0);let a=zs(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=u/4,h=this.get();if(l>h.length)throw new Error("_sha2: outputLen bigger than state");for(let w=0;w<l;w++)a.setUint32(4*w,h[w],o)}digest(){let{buffer:e,outputLen:n}=this;this.digestInto(e);let i=e.slice(0,n);return this.destroy(),i}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:n,buffer:i,length:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%n&&e.buffer.set(i),e}};var Gw=(t,e,n)=>t&e^~t&n,Ww=(t,e,n)=>t&e^t&n^e&n,Hw=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]),ai=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ci=new Uint32Array(64),_u=class extends Vs{constructor(){super(64,32,8,!1),this.A=ai[0]|0,this.B=ai[1]|0,this.C=ai[2]|0,this.D=ai[3]|0,this.E=ai[4]|0,this.F=ai[5]|0,this.G=ai[6]|0,this.H=ai[7]|0}get(){let{A:e,B:n,C:i,D:r,E:o,F:s,G:a,H:u}=this;return[e,n,i,r,o,s,a,u]}set(e,n,i,r,o,s,a,u){this.A=e|0,this.B=n|0,this.C=i|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,n){for(let w=0;w<16;w++,n+=4)ci[w]=e.getUint32(n,!1);for(let w=16;w<64;w++){let v=ci[w-15],T=ci[w-2],I=vn(v,7)^vn(v,18)^v>>>3,x=vn(T,17)^vn(T,19)^T>>>10;ci[w]=x+ci[w-7]+I+ci[w-16]|0}let{A:i,B:r,C:o,D:s,E:a,F:u,G:l,H:h}=this;for(let w=0;w<64;w++){let v=vn(a,6)^vn(a,11)^vn(a,25),T=h+v+Gw(a,u,l)+Hw[w]+ci[w]|0,x=(vn(i,2)^vn(i,13)^vn(i,22))+Ww(i,r,o)|0;h=l,l=u,u=a,a=s+T|0,s=o,o=r,r=i,i=T+x|0}i=i+this.A|0,r=r+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,l=l+this.G|0,h=h+this.H|0,this.set(i,r,o,s,a,u,l,h)}roundClean(){ci.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Eh=Ph(()=>new _u);function ji(t){if(!Number.isSafeInteger(t))throw new Error(`Wrong integer: ${t}`)}function Gs(t){return t instanceof Uint8Array||t!=null&&typeof t=="object"&&t.constructor.name==="Uint8Array"}function Zw(...t){let e=o=>o,n=(o,s)=>a=>o(s(a)),i=t.map(o=>o.encode).reduceRight(n,e),r=t.map(o=>o.decode).reduce(n,e);return{encode:i,decode:r}}function Xw(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(n=>{if(n<0||n>=t.length)throw new Error(`Digit index outside alphabet: ${n} (alphabet: ${t.length})`);return t[n]})},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(n=>{if(typeof n!="string")throw new Error(`alphabet.decode: not string element=${n}`);let i=t.indexOf(n);if(i===-1)throw new Error(`Unknown letter: "${n}". Allowed: ${t}`);return i})}}}function Jw(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 n of e)if(typeof n!="string")throw new Error(`join.encode: non-string input=${n}`);return e.join(t)},decode:e=>{if(typeof e!="string")throw new Error("join.decode input should be string");return e.split(t)}}}function Yw(t,e="="){if(typeof e!="string")throw new Error("padding chr should be string");return{encode(n){if(!Array.isArray(n)||n.length&&typeof n[0]!="string")throw new Error("padding.encode input should be array of strings");for(let i of n)if(typeof i!="string")throw new Error(`padding.encode: non-string input=${i}`);for(;n.length*t%8;)n.push(e);return n},decode(n){if(!Array.isArray(n)||n.length&&typeof n[0]!="string")throw new Error("padding.encode input should be array of strings");for(let r of n)if(typeof r!="string")throw new Error(`padding.decode: non-string input=${r}`);let i=n.length;if(i*t%8)throw new Error("Invalid padding: string should have whole number of bytes");for(;i>0&&n[i-1]===e;i--)if(!((i-1)*t%8))throw new Error("Invalid padding: string has too much padding");return n.slice(0,i)}}}function yu(t,e,n){if(e<2)throw new Error(`convertRadix: wrong from=${e}, base cannot be less than 2`);if(n<2)throw new Error(`convertRadix: wrong to=${n}, base cannot be less than 2`);if(!Array.isArray(t))throw new Error("convertRadix: data should be array");if(!t.length)return[];let i=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 u=i;u<o.length;u++){let l=o[u],h=e*s+l;if(!Number.isSafeInteger(h)||e*s/e!==s||h-l!==e*s)throw new Error("convertRadix: carry overflow");s=h%n;let w=Math.floor(h/n);if(o[u]=w,!Number.isSafeInteger(w)||w*n+s!==h)throw new Error("convertRadix: carry overflow");if(a)w?a=!1:i=u;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 Mh=(t,e)=>e?Mh(e,t%e):t,Ws=(t,e)=>t+(e-Mh(t,e));function wu(t,e,n,i){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(n<=0||n>32)throw new Error(`convertRadix2: wrong to=${n}`);if(Ws(e,n)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${n} carryBits=${Ws(e,n)}`);let r=0,o=0,s=2**n-1,a=[];for(let u of t){if(u>=2**e)throw new Error(`convertRadix2: invalid data word=${u} from=${e}`);if(r=r<<e|u,o+e>32)throw new Error(`convertRadix2: carry overflow pos=${o} from=${e}`);for(o+=e;o>=n;o-=n)a.push((r>>o-n&s)>>>0);r&=2**o-1}if(r=r<<n-o&s,!i&&o>=e)throw new Error("Excess padding");if(!i&&r)throw new Error(`Non-zero padding: ${r}`);return i&&o>0&&a.push(r>>>0),a}function Qw(t){return{encode:e=>{if(!Gs(e))throw new Error("radix.encode input should be Uint8Array");return yu(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(yu(e,t,2**8))}}}function eb(t,e=!1){if(t<=0||t>32)throw new Error("radix2: bits should be in (0..32]");if(Ws(8,t)>32||Ws(t,8)>32)throw new Error("radix2: carry overflow");return{encode:n=>{if(!Gs(n))throw new Error("radix2.encode input should be Uint8Array");return wu(Array.from(n),8,t,!e)},decode:n=>{if(!Array.isArray(n)||n.length&&typeof n[0]!="number")throw new Error("radix2.decode input should be array of numbers");return Uint8Array.from(wu(n,t,8,e))}}}function tb(t,e){if(typeof e!="function")throw new Error("checksum fn should be function");return{encode(n){if(!Gs(n))throw new Error("checksum.encode: input should be Uint8Array");let i=e(n).slice(0,t),r=new Uint8Array(n.length+t);return r.set(n),r.set(i,n.length),r},decode(n){if(!Gs(n))throw new Error("checksum.decode: input should be Uint8Array");let i=n.slice(0,-t),r=e(i).slice(0,t),o=n.slice(-t);for(let s=0;s<t;s++)if(r[s]!==o[s])throw new Error("Invalid checksum");return i}}}var ko={alphabet:Xw,chain:Zw,checksum:tb,convertRadix:yu,convertRadix2:wu,radix:Qw,radix2:eb,join:Jw,padding:Yw};var nb=t=>t[0]==="\u3042\u3044\u3053\u304F\u3057\u3093";function ib(t){mu(t,16,20,24,28,32)}function Bh(t,e=128){if(Ih(e),e%32!==0||e>256)throw new TypeError("Invalid entropy");return sb(Dh(e/8),t)}var rb=t=>{let e=8-t.length/4;return new Uint8Array([Eh(t)[0]>>e<<e])};function ob(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}`)}),ko.chain(ko.checksum(1,rb),ko.radix2(11,!0),ko.alphabet(t))}function sb(t,e){return ib(t),ob(e).encode(t).join(nb(e)?"\u3000":" ")}var jh=`abandon
1
+ "use strict";var rw=Object.create;var zs=Object.defineProperty;var ow=Object.getOwnPropertyDescriptor;var sw=Object.getOwnPropertyNames;var aw=Object.getPrototypeOf,cw=Object.prototype.hasOwnProperty;var uw=(t,e)=>()=>(t&&(e=t(t=0)),e);var De=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Sf=(t,e)=>{for(var n in e)zs(t,n,{get:e[n],enumerable:!0})},Af=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of sw(e))!cw.call(t,r)&&r!==n&&zs(t,r,{get:()=>e[r],enumerable:!(i=ow(e,r))||i.enumerable});return t};var be=(t,e,n)=>(n=t!=null?rw(aw(t)):{},Af(e||!t||!t.__esModule?zs(n,"default",{value:t,enumerable:!0}):n,t)),xf=t=>Af(zs({},"__esModule",{value:!0}),t);var Pf=De((Dx,Of)=>{"use strict";Of.exports=t=>{if(Object.prototype.toString.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.prototype}});var Df=De((Mx,Ef)=>{"use strict";var mu=Pf();Ef.exports=(t,e={})=>{if(!mu(t)&&!Array.isArray(t))throw new TypeError("Expected a plain object or array");let{deep:n}=e,i=[],r=[],o=a=>{let u=i.indexOf(a);if(u!==-1)return r[u];let l=[];return i.push(a),r.push(l),l.push(...a.map(m=>Array.isArray(m)?o(m):mu(m)?s(m):m)),l},s=a=>{let u=i.indexOf(a);if(u!==-1)return r[u];let l={},m=Object.keys(a).sort(e.compare);i.push(a),r.push(l);for(let b of m){let v=a[b],T;n&&Array.isArray(v)?T=o(v):T=n&&mu(v)?s(v):v,Object.defineProperty(l,b,{...Object.getOwnPropertyDescriptor(a,b),value:T})}return l};return Array.isArray(t)?n?o(t):t.slice():s(t)}});var Bf=De((jx,jf)=>{"use strict";var lw=Object.prototype.toString;jf.exports=function(e){if(e===void 0)return"undefined";if(e===null)return"null";var n=typeof e;if(n==="boolean")return"boolean";if(n==="string")return"string";if(n==="number")return"number";if(n==="symbol")return"symbol";if(n==="function")return mw(e)?"generatorfunction":"function";if(dw(e))return"array";if(yw(e))return"buffer";if(_w(e))return"arguments";if(hw(e))return"date";if(fw(e))return"error";if(pw(e))return"regexp";switch(Mf(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(gw(e))return"generator";switch(n=lw.call(e),n){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 n.slice(8,-1).toLowerCase().replace(/\s/g,"")};function Mf(t){return typeof t.constructor=="function"?t.constructor.name:null}function dw(t){return Array.isArray?Array.isArray(t):t instanceof Array}function fw(t){return t instanceof Error||typeof t.message=="string"&&t.constructor&&typeof t.constructor.stackTraceLimit=="number"}function hw(t){return t instanceof Date?!0:typeof t.toDateString=="function"&&typeof t.getDate=="function"&&typeof t.setDate=="function"}function pw(t){return t instanceof RegExp?!0:typeof t.flags=="string"&&typeof t.ignoreCase=="boolean"&&typeof t.multiline=="boolean"&&typeof t.global=="boolean"}function mw(t,e){return Mf(t)==="GeneratorFunction"}function gw(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 yw(t){return t.constructor&&typeof t.constructor.isBuffer=="function"?t.constructor.isBuffer(t):!1}});var Gs=De((Bx,qf)=>{"use strict";var ww=Df(),gu=Bf(),Nf=(t,e)=>!e||gu(e)!=="array"?!1:e.indexOf(t)>-1,bw=(t,e)=>ww(t,{compare:e}),Ff=(t,e)=>{let n=e&&e.compareFunction;return t.slice().sort(n)};function Rf(t,e){let n=e&&e.compareFunction,i=bw(t,n);return Object.keys(t).forEach(function(r){let o=i[r],s=gu(o);if(s==="object"){(!e||!Nf(r,e.ignoreObjectAtKeys))&&(i[r]=Rf(o,e));return}s==="array"&&(!e||!Nf(r,e.ignoreArrayAtKeys))&&(i[r]=Ff(o,e))}),i}var Co=(t,e)=>{let n=gu(t);return Co[n]?Co[n](t,e):t};Co.array=Ff;Co.object=Rf;qf.exports=Co});var Se=De((Lf,_u)=>{"use strict";(function(t,e){"use strict";function n(S,c){if(!S)throw new Error(c||"Assertion failed")}function i(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),n(d===(d|0)&&d>=2&&d<=36),c=c.toString().replace(/\s+/g,"");var _=0;c[0]==="-"&&(_++,this.negative=1),_<c.length&&(d===16?this._parseHex(c,_,f):(this._parseBase(c,d,_),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):(n(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(n(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 _=0;_<this.length;_++)this.words[_]=0;var h,p,w=0;if(f==="be")for(_=c.length-1,h=0;_>=0;_-=3)p=c[_]|c[_-1]<<8|c[_-2]<<16,this.words[h]|=p<<w&67108863,this.words[h+1]=p>>>26-w&67108863,w+=24,w>=26&&(w-=26,h++);else if(f==="le")for(_=0,h=0;_<c.length;_+=3)p=c[_]|c[_+1]<<8|c[_+2]<<16,this.words[h]|=p<<w&67108863,this.words[h+1]=p>>>26-w&67108863,w+=24,w>=26&&(w-=26,h++);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;n(!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 _=0;_<this.length;_++)this.words[_]=0;var h=0,p=0,w;if(f==="be")for(_=c.length-1;_>=d;_-=2)w=a(c,d,_)<<h,this.words[p]|=w&67108863,h>=18?(h-=18,p+=1,this.words[p]|=w>>>26):h+=8;else{var y=c.length-d;for(_=y%2===0?d+1:d;_<c.length;_+=2)w=a(c,d,_)<<h,this.words[p]|=w&67108863,h>=18?(h-=18,p+=1,this.words[p]|=w>>>26):h+=8}this._strip()};function u(S,c,d,f){for(var _=0,h=0,p=Math.min(S.length,d),w=c;w<p;w++){var y=S.charCodeAt(w)-48;_*=f,y>=49?h=y-49+10:y>=17?h=y-17+10:h=y,n(y>=0&&h<f,"Invalid character"),_+=h}return _}r.prototype._parseBase=function(c,d,f){this.words=[0],this.length=1;for(var _=0,h=1;h<=67108863;h*=d)_++;_--,h=h/d|0;for(var p=c.length-f,w=p%_,y=Math.min(p,p-w)+f,g=0,C=f;C<y;C+=_)g=u(c,C,C+_,d),this.imuln(h),this.words[0]+g<67108864?this.words[0]+=g:this._iaddn(g);if(w!==0){var N=1;for(g=u(c,C,c.length,d),C=0;C<w;C++)N*=d;this.imuln(N),this.words[0]+g<67108864?this.words[0]+=g:this._iaddn(g)}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 l(S,c){S.words=c.words,S.length=c.length,S.negative=c.negative,S.red=c.red}if(r.prototype._move=function(c){l(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")]=m}catch{r.prototype.inspect=m}else r.prototype.inspect=m;function m(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var b=["","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 _=0,h=0,p=0;p<this.length;p++){var w=this.words[p],y=((w<<_|h)&16777215).toString(16);h=w>>>24-_&16777215,_+=2,_>=26&&(_-=26,p--),h!==0||p!==this.length-1?f=b[6-y.length]+y+f:f=y+f}for(h!==0&&(f=h.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 g=v[c],C=T[c];f="";var N=this.clone();for(N.negative=0;!N.isZero();){var F=N.modrn(C).toString(c);N=N.idivn(C),N.isZero()?f=F+f:f=b[g-F.length]+F+f}for(this.isZero()&&(f="0"+f);f.length%d!==0;)f="0"+f;return this.negative!==0&&(f="-"+f),f}n(!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&&n(!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 _=this.byteLength(),h=f||Math.max(1,_);n(_<=h,"byte array longer than desired length"),n(h>0,"Requested array length <= 0");var p=O(c,h),w=d==="le"?"LE":"BE";return this["_toArrayLike"+w](p,_),p},r.prototype._toArrayLikeLE=function(c,d){for(var f=0,_=0,h=0,p=0;h<this.length;h++){var w=this.words[h]<<p|_;c[f++]=w&255,f<c.length&&(c[f++]=w>>8&255),f<c.length&&(c[f++]=w>>16&255),p===6?(f<c.length&&(c[f++]=w>>24&255),_=0,p=0):(_=w>>>24,p+=2)}if(f<c.length)for(c[f++]=_;f<c.length;)c[f++]=0},r.prototype._toArrayLikeBE=function(c,d){for(var f=c.length-1,_=0,h=0,p=0;h<this.length;h++){var w=this.words[h]<<p|_;c[f--]=w&255,f>=0&&(c[f--]=w>>8&255),f>=0&&(c[f--]=w>>16&255),p===6?(f>=0&&(c[f--]=w>>24&255),_=0,p=0):(_=w>>>24,p+=2)}if(f>=0)for(c[f--]=_;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,_=d%26;c[d]=S.words[f]>>>_&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 n((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 n((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 _=0;_<f.length;_++)this.words[_]=d.words[_]^f.words[_];if(this!==d)for(;_<d.length;_++)this.words[_]=d.words[_];return this.length=d.length,this._strip()},r.prototype.ixor=function(c){return n((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){n(typeof c=="number"&&c>=0);var d=Math.ceil(c/26)|0,f=c%26;this._expand(d),f>0&&d--;for(var _=0;_<d;_++)this.words[_]=~this.words[_]&67108863;return f>0&&(this.words[_]=~this.words[_]&67108863>>26-f),this._strip()},r.prototype.notn=function(c){return this.clone().inotn(c)},r.prototype.setn=function(c,d){n(typeof c=="number"&&c>=0);var f=c/26|0,_=c%26;return this._expand(f+1),d?this.words[f]=this.words[f]|1<<_:this.words[f]=this.words[f]&~(1<<_),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,_;this.length>c.length?(f=this,_=c):(f=c,_=this);for(var h=0,p=0;p<_.length;p++)d=(f.words[p]|0)+(_.words[p]|0)+h,this.words[p]=d&67108863,h=d>>>26;for(;h!==0&&p<f.length;p++)d=(f.words[p]|0)+h,this.words[p]=d&67108863,h=d>>>26;if(this.length=f.length,h!==0)this.words[this.length]=h,this.length++;else if(f!==this)for(;p<f.length;p++)this.words[p]=f.words[p];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 _,h;f>0?(_=this,h=c):(_=c,h=this);for(var p=0,w=0;w<h.length;w++)d=(_.words[w]|0)-(h.words[w]|0)+p,p=d>>26,this.words[w]=d&67108863;for(;p!==0&&w<_.length;w++)d=(_.words[w]|0)+p,p=d>>26,this.words[w]=d&67108863;if(p===0&&w<_.length&&_!==this)for(;w<_.length;w++)this.words[w]=_.words[w];return this.length=Math.max(this.length,w),_!==this&&(this.negative=1),this._strip()},r.prototype.sub=function(c){return this.clone().isub(c)};function M(S,c,d){d.negative=c.negative^S.negative;var f=S.length+c.length|0;d.length=f,f=f-1|0;var _=S.words[0]|0,h=c.words[0]|0,p=_*h,w=p&67108863,y=p/67108864|0;d.words[0]=w;for(var g=1;g<f;g++){for(var C=y>>>26,N=y&67108863,F=Math.min(g,c.length-1),U=Math.max(0,g-S.length+1);U<=F;U++){var L=g-U|0;_=S.words[L]|0,h=c.words[U]|0,p=_*h+N,C+=p/67108864|0,N=p&67108863}d.words[g]=N|0,y=C|0}return y!==0?d.words[g]=y|0:d.length--,d._strip()}var B=function(c,d,f){var _=c.words,h=d.words,p=f.words,w=0,y,g,C,N=_[0]|0,F=N&8191,U=N>>>13,L=_[1]|0,H=L&8191,ee=L>>>13,ge=_[2]|0,ie=ge&8191,me=ge>>>13,Ae=_[3]|0,_e=Ae&8191,he=Ae>>>13,kr=_[4]|0,Le=kr&8191,Ue=kr>>>13,Ks=_[5]|0,He=Ks&8191,Xe=Ks>>>13,df=_[6]|0,Ze=df&8191,Je=df>>>13,ff=_[7]|0,Ye=ff&8191,Qe=ff>>>13,hf=_[8]|0,et=hf&8191,tt=hf>>>13,pf=_[9]|0,nt=pf&8191,it=pf>>>13,mf=h[0]|0,rt=mf&8191,ot=mf>>>13,gf=h[1]|0,st=gf&8191,at=gf>>>13,_f=h[2]|0,ct=_f&8191,ut=_f>>>13,yf=h[3]|0,lt=yf&8191,dt=yf>>>13,wf=h[4]|0,ft=wf&8191,ht=wf>>>13,bf=h[5]|0,pt=bf&8191,mt=bf>>>13,vf=h[6]|0,gt=vf&8191,_t=vf>>>13,kf=h[7]|0,yt=kf&8191,wt=kf>>>13,Cf=h[8]|0,bt=Cf&8191,vt=Cf>>>13,Tf=h[9]|0,kt=Tf&8191,Ct=Tf>>>13;f.negative=c.negative^d.negative,f.length=19,y=Math.imul(F,rt),g=Math.imul(F,ot),g=g+Math.imul(U,rt)|0,C=Math.imul(U,ot);var Zc=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(Zc>>>26)|0,Zc&=67108863,y=Math.imul(H,rt),g=Math.imul(H,ot),g=g+Math.imul(ee,rt)|0,C=Math.imul(ee,ot),y=y+Math.imul(F,st)|0,g=g+Math.imul(F,at)|0,g=g+Math.imul(U,st)|0,C=C+Math.imul(U,at)|0;var Jc=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(Jc>>>26)|0,Jc&=67108863,y=Math.imul(ie,rt),g=Math.imul(ie,ot),g=g+Math.imul(me,rt)|0,C=Math.imul(me,ot),y=y+Math.imul(H,st)|0,g=g+Math.imul(H,at)|0,g=g+Math.imul(ee,st)|0,C=C+Math.imul(ee,at)|0,y=y+Math.imul(F,ct)|0,g=g+Math.imul(F,ut)|0,g=g+Math.imul(U,ct)|0,C=C+Math.imul(U,ut)|0;var Yc=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(Yc>>>26)|0,Yc&=67108863,y=Math.imul(_e,rt),g=Math.imul(_e,ot),g=g+Math.imul(he,rt)|0,C=Math.imul(he,ot),y=y+Math.imul(ie,st)|0,g=g+Math.imul(ie,at)|0,g=g+Math.imul(me,st)|0,C=C+Math.imul(me,at)|0,y=y+Math.imul(H,ct)|0,g=g+Math.imul(H,ut)|0,g=g+Math.imul(ee,ct)|0,C=C+Math.imul(ee,ut)|0,y=y+Math.imul(F,lt)|0,g=g+Math.imul(F,dt)|0,g=g+Math.imul(U,lt)|0,C=C+Math.imul(U,dt)|0;var Qc=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(Qc>>>26)|0,Qc&=67108863,y=Math.imul(Le,rt),g=Math.imul(Le,ot),g=g+Math.imul(Ue,rt)|0,C=Math.imul(Ue,ot),y=y+Math.imul(_e,st)|0,g=g+Math.imul(_e,at)|0,g=g+Math.imul(he,st)|0,C=C+Math.imul(he,at)|0,y=y+Math.imul(ie,ct)|0,g=g+Math.imul(ie,ut)|0,g=g+Math.imul(me,ct)|0,C=C+Math.imul(me,ut)|0,y=y+Math.imul(H,lt)|0,g=g+Math.imul(H,dt)|0,g=g+Math.imul(ee,lt)|0,C=C+Math.imul(ee,dt)|0,y=y+Math.imul(F,ft)|0,g=g+Math.imul(F,ht)|0,g=g+Math.imul(U,ft)|0,C=C+Math.imul(U,ht)|0;var eu=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(eu>>>26)|0,eu&=67108863,y=Math.imul(He,rt),g=Math.imul(He,ot),g=g+Math.imul(Xe,rt)|0,C=Math.imul(Xe,ot),y=y+Math.imul(Le,st)|0,g=g+Math.imul(Le,at)|0,g=g+Math.imul(Ue,st)|0,C=C+Math.imul(Ue,at)|0,y=y+Math.imul(_e,ct)|0,g=g+Math.imul(_e,ut)|0,g=g+Math.imul(he,ct)|0,C=C+Math.imul(he,ut)|0,y=y+Math.imul(ie,lt)|0,g=g+Math.imul(ie,dt)|0,g=g+Math.imul(me,lt)|0,C=C+Math.imul(me,dt)|0,y=y+Math.imul(H,ft)|0,g=g+Math.imul(H,ht)|0,g=g+Math.imul(ee,ft)|0,C=C+Math.imul(ee,ht)|0,y=y+Math.imul(F,pt)|0,g=g+Math.imul(F,mt)|0,g=g+Math.imul(U,pt)|0,C=C+Math.imul(U,mt)|0;var tu=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(tu>>>26)|0,tu&=67108863,y=Math.imul(Ze,rt),g=Math.imul(Ze,ot),g=g+Math.imul(Je,rt)|0,C=Math.imul(Je,ot),y=y+Math.imul(He,st)|0,g=g+Math.imul(He,at)|0,g=g+Math.imul(Xe,st)|0,C=C+Math.imul(Xe,at)|0,y=y+Math.imul(Le,ct)|0,g=g+Math.imul(Le,ut)|0,g=g+Math.imul(Ue,ct)|0,C=C+Math.imul(Ue,ut)|0,y=y+Math.imul(_e,lt)|0,g=g+Math.imul(_e,dt)|0,g=g+Math.imul(he,lt)|0,C=C+Math.imul(he,dt)|0,y=y+Math.imul(ie,ft)|0,g=g+Math.imul(ie,ht)|0,g=g+Math.imul(me,ft)|0,C=C+Math.imul(me,ht)|0,y=y+Math.imul(H,pt)|0,g=g+Math.imul(H,mt)|0,g=g+Math.imul(ee,pt)|0,C=C+Math.imul(ee,mt)|0,y=y+Math.imul(F,gt)|0,g=g+Math.imul(F,_t)|0,g=g+Math.imul(U,gt)|0,C=C+Math.imul(U,_t)|0;var nu=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(nu>>>26)|0,nu&=67108863,y=Math.imul(Ye,rt),g=Math.imul(Ye,ot),g=g+Math.imul(Qe,rt)|0,C=Math.imul(Qe,ot),y=y+Math.imul(Ze,st)|0,g=g+Math.imul(Ze,at)|0,g=g+Math.imul(Je,st)|0,C=C+Math.imul(Je,at)|0,y=y+Math.imul(He,ct)|0,g=g+Math.imul(He,ut)|0,g=g+Math.imul(Xe,ct)|0,C=C+Math.imul(Xe,ut)|0,y=y+Math.imul(Le,lt)|0,g=g+Math.imul(Le,dt)|0,g=g+Math.imul(Ue,lt)|0,C=C+Math.imul(Ue,dt)|0,y=y+Math.imul(_e,ft)|0,g=g+Math.imul(_e,ht)|0,g=g+Math.imul(he,ft)|0,C=C+Math.imul(he,ht)|0,y=y+Math.imul(ie,pt)|0,g=g+Math.imul(ie,mt)|0,g=g+Math.imul(me,pt)|0,C=C+Math.imul(me,mt)|0,y=y+Math.imul(H,gt)|0,g=g+Math.imul(H,_t)|0,g=g+Math.imul(ee,gt)|0,C=C+Math.imul(ee,_t)|0,y=y+Math.imul(F,yt)|0,g=g+Math.imul(F,wt)|0,g=g+Math.imul(U,yt)|0,C=C+Math.imul(U,wt)|0;var iu=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(iu>>>26)|0,iu&=67108863,y=Math.imul(et,rt),g=Math.imul(et,ot),g=g+Math.imul(tt,rt)|0,C=Math.imul(tt,ot),y=y+Math.imul(Ye,st)|0,g=g+Math.imul(Ye,at)|0,g=g+Math.imul(Qe,st)|0,C=C+Math.imul(Qe,at)|0,y=y+Math.imul(Ze,ct)|0,g=g+Math.imul(Ze,ut)|0,g=g+Math.imul(Je,ct)|0,C=C+Math.imul(Je,ut)|0,y=y+Math.imul(He,lt)|0,g=g+Math.imul(He,dt)|0,g=g+Math.imul(Xe,lt)|0,C=C+Math.imul(Xe,dt)|0,y=y+Math.imul(Le,ft)|0,g=g+Math.imul(Le,ht)|0,g=g+Math.imul(Ue,ft)|0,C=C+Math.imul(Ue,ht)|0,y=y+Math.imul(_e,pt)|0,g=g+Math.imul(_e,mt)|0,g=g+Math.imul(he,pt)|0,C=C+Math.imul(he,mt)|0,y=y+Math.imul(ie,gt)|0,g=g+Math.imul(ie,_t)|0,g=g+Math.imul(me,gt)|0,C=C+Math.imul(me,_t)|0,y=y+Math.imul(H,yt)|0,g=g+Math.imul(H,wt)|0,g=g+Math.imul(ee,yt)|0,C=C+Math.imul(ee,wt)|0,y=y+Math.imul(F,bt)|0,g=g+Math.imul(F,vt)|0,g=g+Math.imul(U,bt)|0,C=C+Math.imul(U,vt)|0;var ru=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(ru>>>26)|0,ru&=67108863,y=Math.imul(nt,rt),g=Math.imul(nt,ot),g=g+Math.imul(it,rt)|0,C=Math.imul(it,ot),y=y+Math.imul(et,st)|0,g=g+Math.imul(et,at)|0,g=g+Math.imul(tt,st)|0,C=C+Math.imul(tt,at)|0,y=y+Math.imul(Ye,ct)|0,g=g+Math.imul(Ye,ut)|0,g=g+Math.imul(Qe,ct)|0,C=C+Math.imul(Qe,ut)|0,y=y+Math.imul(Ze,lt)|0,g=g+Math.imul(Ze,dt)|0,g=g+Math.imul(Je,lt)|0,C=C+Math.imul(Je,dt)|0,y=y+Math.imul(He,ft)|0,g=g+Math.imul(He,ht)|0,g=g+Math.imul(Xe,ft)|0,C=C+Math.imul(Xe,ht)|0,y=y+Math.imul(Le,pt)|0,g=g+Math.imul(Le,mt)|0,g=g+Math.imul(Ue,pt)|0,C=C+Math.imul(Ue,mt)|0,y=y+Math.imul(_e,gt)|0,g=g+Math.imul(_e,_t)|0,g=g+Math.imul(he,gt)|0,C=C+Math.imul(he,_t)|0,y=y+Math.imul(ie,yt)|0,g=g+Math.imul(ie,wt)|0,g=g+Math.imul(me,yt)|0,C=C+Math.imul(me,wt)|0,y=y+Math.imul(H,bt)|0,g=g+Math.imul(H,vt)|0,g=g+Math.imul(ee,bt)|0,C=C+Math.imul(ee,vt)|0,y=y+Math.imul(F,kt)|0,g=g+Math.imul(F,Ct)|0,g=g+Math.imul(U,kt)|0,C=C+Math.imul(U,Ct)|0;var ou=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(ou>>>26)|0,ou&=67108863,y=Math.imul(nt,st),g=Math.imul(nt,at),g=g+Math.imul(it,st)|0,C=Math.imul(it,at),y=y+Math.imul(et,ct)|0,g=g+Math.imul(et,ut)|0,g=g+Math.imul(tt,ct)|0,C=C+Math.imul(tt,ut)|0,y=y+Math.imul(Ye,lt)|0,g=g+Math.imul(Ye,dt)|0,g=g+Math.imul(Qe,lt)|0,C=C+Math.imul(Qe,dt)|0,y=y+Math.imul(Ze,ft)|0,g=g+Math.imul(Ze,ht)|0,g=g+Math.imul(Je,ft)|0,C=C+Math.imul(Je,ht)|0,y=y+Math.imul(He,pt)|0,g=g+Math.imul(He,mt)|0,g=g+Math.imul(Xe,pt)|0,C=C+Math.imul(Xe,mt)|0,y=y+Math.imul(Le,gt)|0,g=g+Math.imul(Le,_t)|0,g=g+Math.imul(Ue,gt)|0,C=C+Math.imul(Ue,_t)|0,y=y+Math.imul(_e,yt)|0,g=g+Math.imul(_e,wt)|0,g=g+Math.imul(he,yt)|0,C=C+Math.imul(he,wt)|0,y=y+Math.imul(ie,bt)|0,g=g+Math.imul(ie,vt)|0,g=g+Math.imul(me,bt)|0,C=C+Math.imul(me,vt)|0,y=y+Math.imul(H,kt)|0,g=g+Math.imul(H,Ct)|0,g=g+Math.imul(ee,kt)|0,C=C+Math.imul(ee,Ct)|0;var su=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(su>>>26)|0,su&=67108863,y=Math.imul(nt,ct),g=Math.imul(nt,ut),g=g+Math.imul(it,ct)|0,C=Math.imul(it,ut),y=y+Math.imul(et,lt)|0,g=g+Math.imul(et,dt)|0,g=g+Math.imul(tt,lt)|0,C=C+Math.imul(tt,dt)|0,y=y+Math.imul(Ye,ft)|0,g=g+Math.imul(Ye,ht)|0,g=g+Math.imul(Qe,ft)|0,C=C+Math.imul(Qe,ht)|0,y=y+Math.imul(Ze,pt)|0,g=g+Math.imul(Ze,mt)|0,g=g+Math.imul(Je,pt)|0,C=C+Math.imul(Je,mt)|0,y=y+Math.imul(He,gt)|0,g=g+Math.imul(He,_t)|0,g=g+Math.imul(Xe,gt)|0,C=C+Math.imul(Xe,_t)|0,y=y+Math.imul(Le,yt)|0,g=g+Math.imul(Le,wt)|0,g=g+Math.imul(Ue,yt)|0,C=C+Math.imul(Ue,wt)|0,y=y+Math.imul(_e,bt)|0,g=g+Math.imul(_e,vt)|0,g=g+Math.imul(he,bt)|0,C=C+Math.imul(he,vt)|0,y=y+Math.imul(ie,kt)|0,g=g+Math.imul(ie,Ct)|0,g=g+Math.imul(me,kt)|0,C=C+Math.imul(me,Ct)|0;var au=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(au>>>26)|0,au&=67108863,y=Math.imul(nt,lt),g=Math.imul(nt,dt),g=g+Math.imul(it,lt)|0,C=Math.imul(it,dt),y=y+Math.imul(et,ft)|0,g=g+Math.imul(et,ht)|0,g=g+Math.imul(tt,ft)|0,C=C+Math.imul(tt,ht)|0,y=y+Math.imul(Ye,pt)|0,g=g+Math.imul(Ye,mt)|0,g=g+Math.imul(Qe,pt)|0,C=C+Math.imul(Qe,mt)|0,y=y+Math.imul(Ze,gt)|0,g=g+Math.imul(Ze,_t)|0,g=g+Math.imul(Je,gt)|0,C=C+Math.imul(Je,_t)|0,y=y+Math.imul(He,yt)|0,g=g+Math.imul(He,wt)|0,g=g+Math.imul(Xe,yt)|0,C=C+Math.imul(Xe,wt)|0,y=y+Math.imul(Le,bt)|0,g=g+Math.imul(Le,vt)|0,g=g+Math.imul(Ue,bt)|0,C=C+Math.imul(Ue,vt)|0,y=y+Math.imul(_e,kt)|0,g=g+Math.imul(_e,Ct)|0,g=g+Math.imul(he,kt)|0,C=C+Math.imul(he,Ct)|0;var cu=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(cu>>>26)|0,cu&=67108863,y=Math.imul(nt,ft),g=Math.imul(nt,ht),g=g+Math.imul(it,ft)|0,C=Math.imul(it,ht),y=y+Math.imul(et,pt)|0,g=g+Math.imul(et,mt)|0,g=g+Math.imul(tt,pt)|0,C=C+Math.imul(tt,mt)|0,y=y+Math.imul(Ye,gt)|0,g=g+Math.imul(Ye,_t)|0,g=g+Math.imul(Qe,gt)|0,C=C+Math.imul(Qe,_t)|0,y=y+Math.imul(Ze,yt)|0,g=g+Math.imul(Ze,wt)|0,g=g+Math.imul(Je,yt)|0,C=C+Math.imul(Je,wt)|0,y=y+Math.imul(He,bt)|0,g=g+Math.imul(He,vt)|0,g=g+Math.imul(Xe,bt)|0,C=C+Math.imul(Xe,vt)|0,y=y+Math.imul(Le,kt)|0,g=g+Math.imul(Le,Ct)|0,g=g+Math.imul(Ue,kt)|0,C=C+Math.imul(Ue,Ct)|0;var uu=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(uu>>>26)|0,uu&=67108863,y=Math.imul(nt,pt),g=Math.imul(nt,mt),g=g+Math.imul(it,pt)|0,C=Math.imul(it,mt),y=y+Math.imul(et,gt)|0,g=g+Math.imul(et,_t)|0,g=g+Math.imul(tt,gt)|0,C=C+Math.imul(tt,_t)|0,y=y+Math.imul(Ye,yt)|0,g=g+Math.imul(Ye,wt)|0,g=g+Math.imul(Qe,yt)|0,C=C+Math.imul(Qe,wt)|0,y=y+Math.imul(Ze,bt)|0,g=g+Math.imul(Ze,vt)|0,g=g+Math.imul(Je,bt)|0,C=C+Math.imul(Je,vt)|0,y=y+Math.imul(He,kt)|0,g=g+Math.imul(He,Ct)|0,g=g+Math.imul(Xe,kt)|0,C=C+Math.imul(Xe,Ct)|0;var lu=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(lu>>>26)|0,lu&=67108863,y=Math.imul(nt,gt),g=Math.imul(nt,_t),g=g+Math.imul(it,gt)|0,C=Math.imul(it,_t),y=y+Math.imul(et,yt)|0,g=g+Math.imul(et,wt)|0,g=g+Math.imul(tt,yt)|0,C=C+Math.imul(tt,wt)|0,y=y+Math.imul(Ye,bt)|0,g=g+Math.imul(Ye,vt)|0,g=g+Math.imul(Qe,bt)|0,C=C+Math.imul(Qe,vt)|0,y=y+Math.imul(Ze,kt)|0,g=g+Math.imul(Ze,Ct)|0,g=g+Math.imul(Je,kt)|0,C=C+Math.imul(Je,Ct)|0;var du=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(du>>>26)|0,du&=67108863,y=Math.imul(nt,yt),g=Math.imul(nt,wt),g=g+Math.imul(it,yt)|0,C=Math.imul(it,wt),y=y+Math.imul(et,bt)|0,g=g+Math.imul(et,vt)|0,g=g+Math.imul(tt,bt)|0,C=C+Math.imul(tt,vt)|0,y=y+Math.imul(Ye,kt)|0,g=g+Math.imul(Ye,Ct)|0,g=g+Math.imul(Qe,kt)|0,C=C+Math.imul(Qe,Ct)|0;var fu=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(fu>>>26)|0,fu&=67108863,y=Math.imul(nt,bt),g=Math.imul(nt,vt),g=g+Math.imul(it,bt)|0,C=Math.imul(it,vt),y=y+Math.imul(et,kt)|0,g=g+Math.imul(et,Ct)|0,g=g+Math.imul(tt,kt)|0,C=C+Math.imul(tt,Ct)|0;var hu=(w+y|0)+((g&8191)<<13)|0;w=(C+(g>>>13)|0)+(hu>>>26)|0,hu&=67108863,y=Math.imul(nt,kt),g=Math.imul(nt,Ct),g=g+Math.imul(it,kt)|0,C=Math.imul(it,Ct);var pu=(w+y|0)+((g&8191)<<13)|0;return w=(C+(g>>>13)|0)+(pu>>>26)|0,pu&=67108863,p[0]=Zc,p[1]=Jc,p[2]=Yc,p[3]=Qc,p[4]=eu,p[5]=tu,p[6]=nu,p[7]=iu,p[8]=ru,p[9]=ou,p[10]=su,p[11]=au,p[12]=cu,p[13]=uu,p[14]=lu,p[15]=du,p[16]=fu,p[17]=hu,p[18]=pu,w!==0&&(p[19]=w,f.length++),f};Math.imul||(B=M);function E(S,c,d){d.negative=c.negative^S.negative,d.length=S.length+c.length;for(var f=0,_=0,h=0;h<d.length-1;h++){var p=_;_=0;for(var w=f&67108863,y=Math.min(h,c.length-1),g=Math.max(0,h-S.length+1);g<=y;g++){var C=h-g,N=S.words[C]|0,F=c.words[g]|0,U=N*F,L=U&67108863;p=p+(U/67108864|0)|0,L=L+w|0,w=L&67108863,p=p+(L>>>26)|0,_+=p>>>26,p&=67108863}d.words[h]=w,f=p,p=_}return f!==0?d.words[h]=f:d.length--,d._strip()}function q(S,c,d){return E(S,c,d)}r.prototype.mulTo=function(c,d){var f,_=this.length+c.length;return this.length===10&&c.length===10?f=B(this,c,d):_<63?f=M(this,c,d):_<1024?f=E(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,_=0;_<c;_++)d[_]=this.revBin(_,f,c);return d},K.prototype.revBin=function(c,d,f){if(c===0||c===f-1)return c;for(var _=0,h=0;h<d;h++)_|=(c&1)<<d-h-1,c>>=1;return _},K.prototype.permute=function(c,d,f,_,h,p){for(var w=0;w<p;w++)_[w]=d[c[w]],h[w]=f[c[w]]},K.prototype.transform=function(c,d,f,_,h,p){this.permute(p,c,d,f,_,h);for(var w=1;w<h;w<<=1)for(var y=w<<1,g=Math.cos(2*Math.PI/y),C=Math.sin(2*Math.PI/y),N=0;N<h;N+=y)for(var F=g,U=C,L=0;L<w;L++){var H=f[N+L],ee=_[N+L],ge=f[N+L+w],ie=_[N+L+w],me=F*ge-U*ie;ie=F*ie+U*ge,ge=me,f[N+L]=H+ge,_[N+L]=ee+ie,f[N+L+w]=H-ge,_[N+L+w]=ee-ie,L!==y&&(me=g*F-C*U,U=g*U+C*F,F=me)}},K.prototype.guessLen13b=function(c,d){var f=Math.max(d,c)|1,_=f&1,h=0;for(f=f/2|0;f;f=f>>>1)h++;return 1<<h+1+_},K.prototype.conjugate=function(c,d,f){if(!(f<=1))for(var _=0;_<f/2;_++){var h=c[_];c[_]=c[f-_-1],c[f-_-1]=h,h=d[_],d[_]=-d[f-_-1],d[f-_-1]=-h}},K.prototype.normalize13b=function(c,d){for(var f=0,_=0;_<d/2;_++){var h=Math.round(c[2*_+1]/d)*8192+Math.round(c[2*_]/d)+f;c[_]=h&67108863,h<67108864?f=0:f=h/67108864|0}return c},K.prototype.convert13b=function(c,d,f,_){for(var h=0,p=0;p<d;p++)h=h+(c[p]|0),f[2*p]=h&8191,h=h>>>13,f[2*p+1]=h&8191,h=h>>>13;for(p=2*d;p<_;++p)f[p]=0;n(h===0),n((h&-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 _=2*this.guessLen13b(c.length,d.length),h=this.makeRBT(_),p=this.stub(_),w=new Array(_),y=new Array(_),g=new Array(_),C=new Array(_),N=new Array(_),F=new Array(_),U=f.words;U.length=_,this.convert13b(c.words,c.length,w,_),this.convert13b(d.words,d.length,C,_),this.transform(w,p,y,g,_,h),this.transform(C,p,N,F,_,h);for(var L=0;L<_;L++){var H=y[L]*N[L]-g[L]*F[L];g[L]=y[L]*F[L]+g[L]*N[L],y[L]=H}return this.conjugate(y,g,_),this.transform(y,g,U,p,_,h),this.conjugate(U,p,_),this.normalize13b(U,_),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),n(typeof c=="number"),n(c<67108864);for(var f=0,_=0;_<this.length;_++){var h=(this.words[_]|0)*c,p=(h&67108863)+(f&67108863);f>>=26,f+=h/67108864|0,f+=p>>>26,this.words[_]=p&67108863}return f!==0&&(this.words[_]=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,_=0;_<d.length&&d[_]===0;_++,f=f.sqr());if(++_<d.length)for(var h=f.sqr();_<d.length;_++,h=h.sqr())d[_]!==0&&(f=f.mul(h));return f},r.prototype.iushln=function(c){n(typeof c=="number"&&c>=0);var d=c%26,f=(c-d)/26,_=67108863>>>26-d<<26-d,h;if(d!==0){var p=0;for(h=0;h<this.length;h++){var w=this.words[h]&_,y=(this.words[h]|0)-w<<d;this.words[h]=y|p,p=w>>>26-d}p&&(this.words[h]=p,this.length++)}if(f!==0){for(h=this.length-1;h>=0;h--)this.words[h+f]=this.words[h];for(h=0;h<f;h++)this.words[h]=0;this.length+=f}return this._strip()},r.prototype.ishln=function(c){return n(this.negative===0),this.iushln(c)},r.prototype.iushrn=function(c,d,f){n(typeof c=="number"&&c>=0);var _;d?_=(d-d%26)/26:_=0;var h=c%26,p=Math.min((c-h)/26,this.length),w=67108863^67108863>>>h<<h,y=f;if(_-=p,_=Math.max(0,_),y){for(var g=0;g<p;g++)y.words[g]=this.words[g];y.length=p}if(p!==0)if(this.length>p)for(this.length-=p,g=0;g<this.length;g++)this.words[g]=this.words[g+p];else this.words[0]=0,this.length=1;var C=0;for(g=this.length-1;g>=0&&(C!==0||g>=_);g--){var N=this.words[g]|0;this.words[g]=C<<26-h|N>>>h,C=N&w}return y&&C!==0&&(y.words[y.length++]=C),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},r.prototype.ishrn=function(c,d,f){return n(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){n(typeof c=="number"&&c>=0);var d=c%26,f=(c-d)/26,_=1<<d;if(this.length<=f)return!1;var h=this.words[f];return!!(h&_)},r.prototype.imaskn=function(c){n(typeof c=="number"&&c>=0);var d=c%26,f=(c-d)/26;if(n(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 _=67108863^67108863>>>d<<d;this.words[this.length-1]&=_}return this._strip()},r.prototype.maskn=function(c){return this.clone().imaskn(c)},r.prototype.iaddn=function(c){return n(typeof c=="number"),n(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(n(typeof c=="number"),n(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 _=c.length+f,h;this._expand(_);var p,w=0;for(h=0;h<c.length;h++){p=(this.words[h+f]|0)+w;var y=(c.words[h]|0)*d;p-=y&67108863,w=(p>>26)-(y/67108864|0),this.words[h+f]=p&67108863}for(;h<this.length-f;h++)p=(this.words[h+f]|0)+w,w=p>>26,this.words[h+f]=p&67108863;if(w===0)return this._strip();for(n(w===-1),w=0,h=0;h<this.length;h++)p=-(this.words[h]|0)+w,w=p>>26,this.words[h]=p&67108863;return this.negative=1,this._strip()},r.prototype._wordDiv=function(c,d){var f=this.length-c.length,_=this.clone(),h=c,p=h.words[h.length-1]|0,w=this._countBits(p);f=26-w,f!==0&&(h=h.ushln(f),_.iushln(f),p=h.words[h.length-1]|0);var y=_.length-h.length,g;if(d!=="mod"){g=new r(null),g.length=y+1,g.words=new Array(g.length);for(var C=0;C<g.length;C++)g.words[C]=0}var N=_.clone()._ishlnsubmul(h,1,y);N.negative===0&&(_=N,g&&(g.words[y]=1));for(var F=y-1;F>=0;F--){var U=(_.words[h.length+F]|0)*67108864+(_.words[h.length+F-1]|0);for(U=Math.min(U/p|0,67108863),_._ishlnsubmul(h,U,F);_.negative!==0;)U--,_.negative=0,_._ishlnsubmul(h,1,F),_.isZero()||(_.negative^=1);g&&(g.words[F]=U)}return g&&g._strip(),_._strip(),d!=="div"&&f!==0&&_.iushrn(f),{div:g||null,mod:_}},r.prototype.divmod=function(c,d,f){if(n(!c.isZero()),this.isZero())return{div:new r(0),mod:new r(0)};var _,h,p;return this.negative!==0&&c.negative===0?(p=this.neg().divmod(c,d),d!=="mod"&&(_=p.div.neg()),d!=="div"&&(h=p.mod.neg(),f&&h.negative!==0&&h.iadd(c)),{div:_,mod:h}):this.negative===0&&c.negative!==0?(p=this.divmod(c.neg(),d),d!=="mod"&&(_=p.div.neg()),{div:_,mod:p.mod}):this.negative&c.negative?(p=this.neg().divmod(c.neg(),d),d!=="div"&&(h=p.mod.neg(),f&&h.negative!==0&&h.isub(c)),{div:p.div,mod:h}):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,_=c.ushrn(1),h=c.andln(1),p=f.cmp(_);return p<0||h===1&&p===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),n(c<=67108863);for(var f=(1<<26)%c,_=0,h=this.length-1;h>=0;h--)_=(f*_+(this.words[h]|0))%c;return d?-_:_},r.prototype.modn=function(c){return this.modrn(c)},r.prototype.idivn=function(c){var d=c<0;d&&(c=-c),n(c<=67108863);for(var f=0,_=this.length-1;_>=0;_--){var h=(this.words[_]|0)+f*67108864;this.words[_]=h/c|0,f=h%c}return this._strip(),d?this.ineg():this},r.prototype.divn=function(c){return this.clone().idivn(c)},r.prototype.egcd=function(c){n(c.negative===0),n(!c.isZero());var d=this,f=c.clone();d.negative!==0?d=d.umod(c):d=d.clone();for(var _=new r(1),h=new r(0),p=new r(0),w=new r(1),y=0;d.isEven()&&f.isEven();)d.iushrn(1),f.iushrn(1),++y;for(var g=f.clone(),C=d.clone();!d.isZero();){for(var N=0,F=1;!(d.words[0]&F)&&N<26;++N,F<<=1);if(N>0)for(d.iushrn(N);N-- >0;)(_.isOdd()||h.isOdd())&&(_.iadd(g),h.isub(C)),_.iushrn(1),h.iushrn(1);for(var U=0,L=1;!(f.words[0]&L)&&U<26;++U,L<<=1);if(U>0)for(f.iushrn(U);U-- >0;)(p.isOdd()||w.isOdd())&&(p.iadd(g),w.isub(C)),p.iushrn(1),w.iushrn(1);d.cmp(f)>=0?(d.isub(f),_.isub(p),h.isub(w)):(f.isub(d),p.isub(_),w.isub(h))}return{a:p,b:w,gcd:f.iushln(y)}},r.prototype._invmp=function(c){n(c.negative===0),n(!c.isZero());var d=this,f=c.clone();d.negative!==0?d=d.umod(c):d=d.clone();for(var _=new r(1),h=new r(0),p=f.clone();d.cmpn(1)>0&&f.cmpn(1)>0;){for(var w=0,y=1;!(d.words[0]&y)&&w<26;++w,y<<=1);if(w>0)for(d.iushrn(w);w-- >0;)_.isOdd()&&_.iadd(p),_.iushrn(1);for(var g=0,C=1;!(f.words[0]&C)&&g<26;++g,C<<=1);if(g>0)for(f.iushrn(g);g-- >0;)h.isOdd()&&h.iadd(p),h.iushrn(1);d.cmp(f)>=0?(d.isub(f),_.isub(h)):(f.isub(d),h.isub(_))}var N;return d.cmpn(1)===0?N=_:N=h,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 _=0;d.isEven()&&f.isEven();_++)d.iushrn(1),f.iushrn(1);do{for(;d.isEven();)d.iushrn(1);for(;f.isEven();)f.iushrn(1);var h=d.cmp(f);if(h<0){var p=d;d=f,f=p}else if(h===0||f.cmpn(1)===0)break;d.isub(f)}while(!0);return f.iushln(_)},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){n(typeof c=="number");var d=c%26,f=(c-d)/26,_=1<<d;if(this.length<=f)return this._expand(f+1),this.words[f]|=_,this;for(var h=_,p=f;h!==0&&p<this.length;p++){var w=this.words[p]|0;w+=h,h=w>>>26,w&=67108863,this.words[p]=w}return h!==0&&(this.words[p]=h,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),n(c<=67108863,"Number is too big");var _=this.words[0]|0;f=_===c?0:_<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 _=this.words[f]|0,h=c.words[f]|0;if(_!==h){_<h?d=-1:_>h&&(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 j(c)},r.prototype.toRed=function(c){return n(!this.red,"Already a number in reduction context"),n(this.negative===0,"red works only with positives"),c.convertTo(this)._forceRed(c)},r.prototype.fromRed=function(){return n(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 n(!this.red,"Already a number in reduction context"),this._forceRed(c)},r.prototype.redAdd=function(c){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,c)},r.prototype.redIAdd=function(c){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,c)},r.prototype.redSub=function(c){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,c)},r.prototype.redISub=function(c){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,c)},r.prototype.redShl=function(c){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,c)},r.prototype.redMul=function(c){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,c),this.red.mul(this,c)},r.prototype.redIMul=function(c){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,c),this.red.imul(this,c)},r.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},r.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},r.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},r.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},r.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},r.prototype.redPow=function(c){return n(this.red&&!c.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,c)};var X={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 _=f<this.n?-1:d.ucmp(this.p);return _===0?(d.words[0]=0,d.length=1):_>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 Z(){G.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(Z,G),Z.prototype.split=function(c,d){for(var f=4194303,_=Math.min(c.length,9),h=0;h<_;h++)d.words[h]=c.words[h];if(d.length=_,c.length<=9){c.words[0]=0,c.length=1;return}var p=c.words[9];for(d.words[d.length++]=p&f,h=10;h<c.length;h++){var w=c.words[h]|0;c.words[h-10]=(w&f)<<4|p>>>22,p=w}p>>>=22,c.words[h-10]=p,p===0&&c.length>10?c.length-=10:c.length-=9},Z.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 _=c.words[f]|0;d+=_*977,c.words[f]=d&67108863,d=_*64+(d/67108864|0)}return c.words[c.length-1]===0&&(c.length--,c.words[c.length-1]===0&&c.length--),c};function A(){G.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}i(A,G);function I(){G.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}i(I,G);function x(){G.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}i(x,G),x.prototype.imulK=function(c){for(var d=0,f=0;f<c.length;f++){var _=(c.words[f]|0)*19+d,h=_&67108863;_>>>=26,c.words[f]=h,d=_}return d!==0&&(c.words[c.length++]=d),c},r._prime=function(c){if(X[c])return X[c];var d;if(c==="k256")d=new Z;else if(c==="p224")d=new A;else if(c==="p192")d=new I;else if(c==="p25519")d=new x;else throw new Error("Unknown prime "+c);return X[c]=d,d};function j(S){if(typeof S=="string"){var c=r._prime(S);this.m=c.p,this.prime=c}else n(S.gtn(1),"modulus must be greater than 1"),this.m=S,this.prime=null}j.prototype._verify1=function(c){n(c.negative===0,"red works only with positives"),n(c.red,"red works only with red numbers")},j.prototype._verify2=function(c,d){n((c.negative|d.negative)===0,"red works only with positives"),n(c.red&&c.red===d.red,"red works only with red numbers")},j.prototype.imod=function(c){return this.prime?this.prime.ireduce(c)._forceRed(this):(l(c,c.umod(this.m)._forceRed(this)),c)},j.prototype.neg=function(c){return c.isZero()?c.clone():this.m.sub(c)._forceRed(this)},j.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)},j.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},j.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)},j.prototype.isub=function(c,d){this._verify2(c,d);var f=c.isub(d);return f.cmpn(0)<0&&f.iadd(this.m),f},j.prototype.shl=function(c,d){return this._verify1(c),this.imod(c.ushln(d))},j.prototype.imul=function(c,d){return this._verify2(c,d),this.imod(c.imul(d))},j.prototype.mul=function(c,d){return this._verify2(c,d),this.imod(c.mul(d))},j.prototype.isqr=function(c){return this.imul(c,c.clone())},j.prototype.sqr=function(c){return this.mul(c,c)},j.prototype.sqrt=function(c){if(c.isZero())return c.clone();var d=this.m.andln(3);if(n(d%2===1),d===3){var f=this.m.add(new r(1)).iushrn(2);return this.pow(c,f)}for(var _=this.m.subn(1),h=0;!_.isZero()&&_.andln(1)===0;)h++,_.iushrn(1);n(!_.isZero());var p=new r(1).toRed(this),w=p.redNeg(),y=this.m.subn(1).iushrn(1),g=this.m.bitLength();for(g=new r(2*g*g).toRed(this);this.pow(g,y).cmp(w)!==0;)g.redIAdd(w);for(var C=this.pow(g,_),N=this.pow(c,_.addn(1).iushrn(1)),F=this.pow(c,_),U=h;F.cmp(p)!==0;){for(var L=F,H=0;L.cmp(p)!==0;H++)L=L.redSqr();n(H<U);var ee=this.pow(C,new r(1).iushln(U-H-1));N=N.redMul(ee),C=ee.redSqr(),F=F.redMul(C),U=H}return N},j.prototype.invm=function(c){var d=c._invmp(this.m);return d.negative!==0?(d.negative=0,this.imod(d).redNeg()):this.imod(d)},j.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,_=new Array(1<<f);_[0]=new r(1).toRed(this),_[1]=c;for(var h=2;h<_.length;h++)_[h]=this.mul(_[h-1],c);var p=_[0],w=0,y=0,g=d.bitLength()%26;for(g===0&&(g=26),h=d.length-1;h>=0;h--){for(var C=d.words[h],N=g-1;N>=0;N--){var F=C>>N&1;if(p!==_[0]&&(p=this.sqr(p)),F===0&&w===0){y=0;continue}w<<=1,w|=F,y++,!(y!==f&&(h!==0||N!==0))&&(p=this.mul(p,_[w]),y=0,w=0)}g=26}return p},j.prototype.convertTo=function(c){var d=c.umod(this.m);return d===c?d.clone():d},j.prototype.convertFrom=function(c){var d=c.clone();return d.red=null,d},r.mont=function(c){return new k(c)};function k(S){j.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)}i(k,j),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),_=f.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=f.isub(_).iushrn(this.shift),p=h;return h.cmp(this.m)>=0?p=h.isub(this.m):h.cmpn(0)<0&&(p=h.iadd(this.m)),p._forceRed(this)},k.prototype.mul=function(c,d){if(c.isZero()||d.isZero())return new r(0)._forceRed(this);var f=c.mul(d),_=f.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=f.isub(_).iushrn(this.shift),p=h;return h.cmp(this.m)>=0?p=h.isub(this.m):h.cmpn(0)<0&&(p=h.iadd(this.m)),p._forceRed(this)},k.prototype.invm=function(c){var d=this.imod(c._invmp(this.m).mul(this.r2));return d._forceRed(this)}})(typeof _u>"u"||_u,Lf)});var Ch={};Sf(Ch,{__addDisposableResource:()=>vh,__assign:()=>ea,__asyncDelegator:()=>hh,__asyncGenerator:()=>fh,__asyncValues:()=>ph,__await:()=>xr,__awaiter:()=>sh,__classPrivateFieldGet:()=>yh,__classPrivateFieldIn:()=>bh,__classPrivateFieldSet:()=>wh,__createBinding:()=>na,__decorate:()=>ih,__disposeResources:()=>kh,__esDecorate:()=>pb,__exportStar:()=>ch,__extends:()=>th,__generator:()=>ah,__importDefault:()=>_h,__importStar:()=>gh,__makeTemplateObject:()=>mh,__metadata:()=>oh,__param:()=>rh,__propKey:()=>gb,__read:()=>xu,__rest:()=>nh,__runInitializers:()=>mb,__setFunctionName:()=>_b,__spread:()=>uh,__spreadArray:()=>dh,__spreadArrays:()=>lh,__values:()=>ta,default:()=>bb});function th(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");Au(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}function nh(t,e){var n={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.indexOf(i)<0&&(n[i]=t[i]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,i=Object.getOwnPropertySymbols(t);r<i.length;r++)e.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(t,i[r])&&(n[i[r]]=t[i[r]]);return n}function ih(t,e,n,i){var r=arguments.length,o=r<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(t,e,n,i);else for(var a=t.length-1;a>=0;a--)(s=t[a])&&(o=(r<3?s(o):r>3?s(e,n,o):s(e,n))||o);return r>3&&o&&Object.defineProperty(e,n,o),o}function rh(t,e){return function(n,i){e(n,i,t)}}function pb(t,e,n,i,r,o){function s(B){if(B!==void 0&&typeof B!="function")throw new TypeError("Function expected");return B}for(var a=i.kind,u=a==="getter"?"get":a==="setter"?"set":"value",l=!e&&t?i.static?t:t.prototype:null,m=e||(l?Object.getOwnPropertyDescriptor(l,i.name):{}),b,v=!1,T=n.length-1;T>=0;T--){var O={};for(var P in i)O[P]=P==="access"?{}:i[P];for(var P in i.access)O.access[P]=i.access[P];O.addInitializer=function(B){if(v)throw new TypeError("Cannot add initializers after decoration has completed");o.push(s(B||null))};var M=(0,n[T])(a==="accessor"?{get:m.get,set:m.set}:m[u],O);if(a==="accessor"){if(M===void 0)continue;if(M===null||typeof M!="object")throw new TypeError("Object expected");(b=s(M.get))&&(m.get=b),(b=s(M.set))&&(m.set=b),(b=s(M.init))&&r.unshift(b)}else(b=s(M))&&(a==="field"?r.unshift(b):m[u]=b)}l&&Object.defineProperty(l,i.name,m),v=!0}function mb(t,e,n){for(var i=arguments.length>2,r=0;r<e.length;r++)n=i?e[r].call(t,n):e[r].call(t);return i?n:void 0}function gb(t){return typeof t=="symbol"?t:"".concat(t)}function _b(t,e,n){return typeof e=="symbol"&&(e=e.description?"[".concat(e.description,"]"):""),Object.defineProperty(t,"name",{configurable:!0,value:n?"".concat(n," ",e):e})}function oh(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function sh(t,e,n,i){function r(o){return o instanceof n?o:new n(function(s){s(o)})}return new(n||(n=Promise))(function(o,s){function a(m){try{l(i.next(m))}catch(b){s(b)}}function u(m){try{l(i.throw(m))}catch(b){s(b)}}function l(m){m.done?o(m.value):r(m.value).then(a,u)}l((i=i.apply(t,e||[])).next())})}function ah(t,e){var n={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},i,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(l){return function(m){return u([l,m])}}function u(l){if(i)throw new TypeError("Generator is already executing.");for(;s&&(s=0,l[0]&&(n=0)),n;)try{if(i=1,r&&(o=l[0]&2?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[l[0]&2,o.value]),l[0]){case 0:case 1:o=l;break;case 4:return n.label++,{value:l[1],done:!1};case 5:n.label++,r=l[1],l=[0];continue;case 7:l=n.ops.pop(),n.trys.pop();continue;default:if(o=n.trys,!(o=o.length>0&&o[o.length-1])&&(l[0]===6||l[0]===2)){n=0;continue}if(l[0]===3&&(!o||l[1]>o[0]&&l[1]<o[3])){n.label=l[1];break}if(l[0]===6&&n.label<o[1]){n.label=o[1],o=l;break}if(o&&n.label<o[2]){n.label=o[2],n.ops.push(l);break}o[2]&&n.ops.pop(),n.trys.pop();continue}l=e.call(t,n)}catch(m){l=[6,m],r=0}finally{i=o=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}function ch(t,e){for(var n in t)n!=="default"&&!Object.prototype.hasOwnProperty.call(e,n)&&na(e,t,n)}function ta(t){var e=typeof Symbol=="function"&&Symbol.iterator,n=e&&t[e],i=0;if(n)return n.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function xu(t,e){var n=typeof Symbol=="function"&&t[Symbol.iterator];if(!n)return t;var i=n.call(t),r,o=[],s;try{for(;(e===void 0||e-- >0)&&!(r=i.next()).done;)o.push(r.value)}catch(a){s={error:a}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(s)throw s.error}}return o}function uh(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(xu(arguments[e]));return t}function lh(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;for(var i=Array(t),r=0,e=0;e<n;e++)for(var o=arguments[e],s=0,a=o.length;s<a;s++,r++)i[r]=o[s];return i}function dh(t,e,n){if(n||arguments.length===2)for(var i=0,r=e.length,o;i<r;i++)(o||!(i in e))&&(o||(o=Array.prototype.slice.call(e,0,i)),o[i]=e[i]);return t.concat(o||Array.prototype.slice.call(e))}function xr(t){return this instanceof xr?(this.v=t,this):new xr(t)}function fh(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=n.apply(t,e||[]),r,o=[];return r={},s("next"),s("throw"),s("return"),r[Symbol.asyncIterator]=function(){return this},r;function s(v){i[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{u(i[v](T))}catch(O){b(o[0][3],O)}}function u(v){v.value instanceof xr?Promise.resolve(v.value.v).then(l,m):b(o[0][2],v)}function l(v){a("next",v)}function m(v){a("throw",v)}function b(v,T){v(T),o.shift(),o.length&&a(o[0][0],o[0][1])}}function hh(t){var e,n;return e={},i("next"),i("throw",function(r){throw r}),i("return"),e[Symbol.iterator]=function(){return this},e;function i(r,o){e[r]=t[r]?function(s){return(n=!n)?{value:xr(t[r](s)),done:!1}:o?o(s):s}:o}}function ph(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],n;return e?e.call(t):(t=typeof ta=="function"?ta(t):t[Symbol.iterator](),n={},i("next"),i("throw"),i("return"),n[Symbol.asyncIterator]=function(){return this},n);function i(o){n[o]=t[o]&&function(s){return new Promise(function(a,u){s=t[o](s),r(a,u,s.done,s.value)})}}function r(o,s,a,u){Promise.resolve(u).then(function(l){o({value:l,done:a})},s)}}function mh(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function gh(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&na(e,t,n);return yb(e,t),e}function _h(t){return t&&t.__esModule?t:{default:t}}function yh(t,e,n,i){if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?t!==e||!i:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?i:n==="a"?i.call(t):i?i.value:e.get(t)}function wh(t,e,n,i,r){if(i==="m")throw new TypeError("Private method is not writable");if(i==="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 i==="a"?r.call(t,n):r?r.value=n:e.set(t,n),n}function bh(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 vh(t,e,n){if(e!=null){if(typeof e!="object"&&typeof e!="function")throw new TypeError("Object expected.");var i;if(n){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");i=e[Symbol.asyncDispose]}if(i===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");i=e[Symbol.dispose]}if(typeof i!="function")throw new TypeError("Object not disposable.");t.stack.push({value:e,dispose:i,async:n})}else n&&t.stack.push({async:!0});return e}function kh(t){function e(i){t.error=t.hasError?new wb(i,t.error,"An error was suppressed during disposal."):i,t.hasError=!0}function n(){for(;t.stack.length;){var i=t.stack.pop();try{var r=i.dispose&&i.dispose.call(i.value);if(i.async)return Promise.resolve(r).then(n,function(o){return e(o),n()})}catch(o){e(o)}}if(t.hasError)throw t.error}return n()}var Au,ea,na,yb,wb,bb,Th=uw(()=>{"use strict";Au=function(t,e){return Au=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&(n[r]=i[r])},Au(t,e)};ea=function(){return ea=Object.assign||function(e){for(var n,i=1,r=arguments.length;i<r;i++){n=arguments[i];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},ea.apply(this,arguments)};na=Object.create?function(t,e,n,i){i===void 0&&(i=n);var r=Object.getOwnPropertyDescriptor(e,n);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,i,r)}:function(t,e,n,i){i===void 0&&(i=n),t[i]=e[n]};yb=Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e};wb=typeof SuppressedError=="function"?SuppressedError:function(t,e,n){var i=new Error(n);return i.name="SuppressedError",i.error=t,i.suppressed=e,i};bb={__extends:th,__assign:ea,__rest:nh,__decorate:ih,__param:rh,__metadata:oh,__awaiter:sh,__generator:ah,__createBinding:na,__exportStar:ch,__values:ta,__read:xu,__spread:uh,__spreadArrays:lh,__spreadArray:dh,__await:xr,__asyncGenerator:fh,__asyncDelegator:hh,__asyncValues:ph,__makeTemplateObject:mh,__importStar:gh,__importDefault:_h,__classPrivateFieldGet:yh,__classPrivateFieldSet:wh,__classPrivateFieldIn:bh,__addDisposableResource:vh,__disposeResources:kh}});var Ah=De((ia,Sh)=>{"use strict";(function(t,e){typeof ia=="object"&&typeof Sh<"u"?e(ia,(Th(),xf(Ch))):typeof define=="function"&&define.amd?define(["exports","tslib"],e):e(t.ssGraph={},t.tslib)})(ia,function(t,e){"use strict";var n=function(){function h(p,w,y){y===void 0&&(y=0),this.startVertex=p,this.endVertex=w,this.weight=y}return h.prototype.getKey=function(){var p=this.startVertex.getKey(),w=this.endVertex.getKey();return p+"_"+w},h.prototype.reverse=function(){var p=this.startVertex;return this.startVertex=this.endVertex,this.endVertex=p,this},h.prototype.clone=function(){return new h(this.startVertex,this.endVertex,this.weight)},h.prototype.toString=function(){return this.getKey()},h}();function i(h,p,w){if(w===void 0&&(w="cc-graph"),!h)throw new Error((w?"["+w+"]":"")+" Invariant failed: "+p)}function r(h,p){p===void 0&&(p=!0);var w=typeof h<"u"&&h!==null;return p?w&&h!=="undefined"&&h!=="null":w}var o=function(){function h(p){i(r(p),"Graph vertex must have a value"),this.value=p,this.edges=new Map}return h.prototype.addEdge=function(p){return this.edges.set(p.getKey(),p),this},h.prototype.deleteEdge=function(p){this.edges.delete(p.getKey())},h.prototype.getNeighbors=function(){var p=this,w=this.getEdges(),y=function(g){return g.startVertex===p?g.endVertex:g.startVertex};return w.map(y)},h.prototype.getEdges=function(){return Array.from(this.edges.values())},h.prototype.getDegree=function(){return this.getEdges().length},h.prototype.hasEdge=function(p){var w=this.getEdges().find(function(y){return y===p});return!!w},h.prototype.hasNeighbor=function(p){var w=this.getEdges().find(function(y){return y.startVertex===p||y.endVertex===p});return!!w},h.prototype.findEdge=function(p){var w=function(g){return g.startVertex===p||g.endVertex===p},y=this.getEdges().find(w);return y||null},h.prototype.getKey=function(){return this.value},h.prototype.deleteAllEdges=function(){var p=this;return this.getEdges().forEach(function(w){return p.deleteEdge(w)}),this},h.prototype.toString=function(p){return p?p(this.value):""+this.value},h}(),s;(function(h){h[h.EQUAL=0]="EQUAL",h[h.GREATER=1]="GREATER",h[h.LESS=-1]="LESS"})(s||(s={}));var a=function(){function h(p){this.compare=p||h.defaultCompareFunction}return h.defaultCompareFunction=function(p,w){return p===w?s.EQUAL:p<w?s.LESS:s.GREATER},h.prototype.equal=function(p,w){return this.compare(p,w)===s.EQUAL},h.prototype.lessThan=function(p,w){return this.compare(p,w)===s.LESS},h.prototype.greaterThan=function(p,w){return this.compare(p,w)===s.GREATER},h.prototype.lessThanOrEqual=function(p,w){return this.lessThan(p,w)||this.equal(p,w)},h.prototype.greaterThanOrEqual=function(p,w){return this.greaterThan(p,w)||this.equal(p,w)},h.prototype.reverse=function(){var p=this.compare;this.compare=function(w,y){return p(y,w)}},h}(),u=function(){function h(p){this.value=p,this.next=null}return h}(),l=function(){function h(p){this.value=p,this.next=null,this.prev=null}return h}();var m=function(h,p){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(w,y){w.__proto__=y}||function(w,y){for(var g in y)y.hasOwnProperty(g)&&(w[g]=y[g])},m(h,p)};function b(h,p){m(h,p);function w(){this.constructor=h}h.prototype=p===null?Object.create(p):(w.prototype=p.prototype,new w)}function v(h,p){var w={label:0,sent:function(){if(C[0]&1)throw C[1];return C[1]},trys:[],ops:[]},y,g,C,N;return N={next:F(0),throw:F(1),return:F(2)},typeof Symbol=="function"&&(N[Symbol.iterator]=function(){return this}),N;function F(L){return function(H){return U([L,H])}}function U(L){if(y)throw new TypeError("Generator is already executing.");for(;w;)try{if(y=1,g&&(C=L[0]&2?g.return:L[0]?g.throw||((C=g.return)&&C.call(g),0):g.next)&&!(C=C.call(g,L[1])).done)return C;switch(g=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++,g=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=p.call(h,w)}catch(H){L=[6,H],g=0}finally{y=C=0}if(L[0]&5)throw L[1];return{value:L[0]?L[1]:void 0,done:!0}}}function T(h,p){var w=typeof Symbol=="function"&&h[Symbol.iterator];if(!w)return h;var y=w.call(h),g,C=[],N;try{for(;(p===void 0||p-- >0)&&!(g=y.next()).done;)C.push(g.value)}catch(F){N={error:F}}finally{try{g&&!g.done&&(w=y.return)&&w.call(y)}finally{if(N)throw N.error}}return C}function O(){for(var h=[],p=0;p<arguments.length;p++)h=h.concat(T(arguments[p]));return h}var P="obfuse error occur";function M(h,p){if(!h)throw new Error("[linked-list] "+(p||P))}var B=-1,E=function(){function h(){for(var p=this,w=[],y=0;y<arguments.length;y++)w[y]=arguments[y];this._head=null,this._tail=null,this._length=0,this.compare=new a,w.length>0&&w.forEach(function(g){p.append(g)})}return Object.defineProperty(h.prototype,"head",{get:function(){return this._head?this._head.value:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(h.prototype,"tail",{get:function(){return this._tail?this._tail.value:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(h.prototype,"length",{get:function(){return this._length},enumerable:!0,configurable:!0}),Object.defineProperty(h.prototype,"loopLength",{get:function(){var p=!1,w=1;if(!this._head)return 0;for(var y=this._head,g=this._head;g.next&&g.next.next;)if(g=g.next.next,y=y.next,y===g){p=!0;break}if(p){for(g=g.next;y!==g;)w++,g=g.next;return w}else return 0},enumerable:!0,configurable:!0}),h.prototype.getNode=function(p){var w=this._length;M(w>0&&p>=0&&p<w,"[linked-list] index "+p+" out of scope of list, which length is "+w);for(var y=this._head,g=0;g<p;)y=y.next,g++;return y},h.prototype.get=function(p){var w=this.getNode(p);return w?w.value:null},h.prototype.find=function(p){var w=p.value,y=p.callback;if(!this._head)return null;for(var g=this._head;g;){if(y&&y(g.value)||w!==void 0&&this.compare.equal(g.value,w))return g;g=g.next}return null},h.prototype.indexOf=function(p){if(!this._head)return B;for(var w=this._head,y=-1;w.next;){if(y++,this.compare.equal(w.value,p))return y;w=w.next}return w===this._tail&&this.compare.equal(w.value,p)&&(y+=1),y},h.prototype.first=function(p){M(p>=0,"[linked-list] param 'num' ("+p+") should not less than 0");for(var w=this.iterator(),y=[],g=Math.min(p,this.length),C=0;C<g;C++){var N=w.next();y.push(N.value)}return y},h.prototype.toArray=function(){return O(this)},h.prototype.isEmpty=function(){return this._head===null},h.prototype.iterator=function(){var p;return v(this,function(w){switch(w.label){case 0:p=this._head,w.label=1;case 1:return p?[4,p.value]:[3,3];case 2:return w.sent(),p=p.next,[3,1];case 3:return[2]}})},h.prototype[Symbol.iterator]=function(){return this.iterator()},h}(),q=function(h){b(p,h);function p(){for(var w=[],y=0;y<arguments.length;y++)w[y]=arguments[y];return h.apply(this,O(w))||this}return p.prototype.append=function(w){var y=new u(w);return this._tail?(this._tail.next=y,this._tail=y):this._head=this._tail=y,this._length++,!0},p.prototype.prepend=function(w){var y=new u(w);return this._head?(y.next=this._head,this._head=y):this._head=this._tail=y,this._length++,!0},p.prototype.remove=function(w){var y=this._head;if(y){if(this.compare.equal(y.value,w))return y.next?(this._head=y.next,y.next=null):this._head=this._tail=null,this._length--,w;for(var g=y;;){if(this.compare.equal(y.value,w))return y.next?g.next=y.next:(this._tail=g,this._tail.next=null),y.next=null,this._length--,w;if(y.next)g=y,y=y.next;else return}}},p.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},p.prototype.removeTail=function(){var w=this._tail;if(w){if(!this._head.next)this._head=null,this._tail=null;else{for(var y=this._head;y.next!==w;)y=y.next;y.next=null,this._tail=y}return this._length--,w.value}},p.prototype.reverse=function(){if(this._head){var w=this._head,y=null,g;for(this._tail=this._head;w!==null;)g=w.next,w.next=y,y=w,w=g;this._head=y}},p.prototype.clone=function(){var w=this.toArray();return new(p.bind.apply(p,O([void 0],w)))},p}(E),K=function(h){b(p,h);function p(){for(var w=[],y=0;y<arguments.length;y++)w[y]=arguments[y];var g=h.apply(this,O(w))||this;return g.cyclization(),g}return p.prototype.iterator=function(){var w;return v(this,function(y){switch(y.label){case 0:w=this._head,y.label=1;case 1:return w?[4,w.value]:[3,3];case 2:return y.sent(),w=w.next,w===this._head&&(w=null),[3,1];case 3:return[2]}})},p.prototype.circleIterator=function(){var w;return v(this,function(y){switch(y.label){case 0:w=this._head,y.label=1;case 1:return w?[4,w.value]:[3,3];case 2:return y.sent(),w=w.next,[3,1];case 3:return[2]}})},p.prototype[Symbol.iterator]=function(){return this.iterator()},p.prototype.mapToNormalListFn=function(w){for(var y=[],g=1;g<arguments.length;g++)y[g-1]=arguments[g];this.breakCircle();var C=h.prototype[w].apply(this,y);return this.cyclization(),C},p.prototype.getNode=function(w){return this.mapToNormalListFn("getNode",w)},p.prototype.append=function(w){return this.mapToNormalListFn("append",w)},p.prototype.prepend=function(w){return this.mapToNormalListFn("prepend",w)},p.prototype.find=function(w){return this.mapToNormalListFn("find",w)},p.prototype.indexOf=function(w){return this.mapToNormalListFn("indexOf",w)},p.prototype.remove=function(w){return this.mapToNormalListFn("remove",w)},p.prototype.removeHead=function(){return this.mapToNormalListFn("removeHead")},p.prototype.removeTail=function(){return this.mapToNormalListFn("removeTail")},p.prototype.first=function(w){M(w>=0,"[linked-list] param 'num' ("+w+") should not less than 0");for(var y=this.circleIterator(),g=[],C=0;C<w;C++){var N=y.next();g.push(N.value)}return g},p.prototype.toArray=function(){return this.mapToNormalListFn("toArray")},p.prototype.reverse=function(){return this.mapToNormalListFn("reverse")},p}(q),X=function(h){b(p,h);function p(){for(var w=[],y=0;y<arguments.length;y++)w[y]=arguments[y];var g=h.apply(this,O(w))||this;return g.cyclization(),g}return p.prototype.breakCircle=function(){this._tail&&this._tail.next===this._head&&(this._tail.next=null)},p.prototype.cyclization=function(){this._tail&&this._tail.next===null&&(this._tail.next=this._head)},p.prototype.clone=function(){var w=this.toArray();return new(p.bind.apply(p,O([void 0],w)))},p}(K),G=function(h){b(p,h);function p(){for(var w=[],y=0;y<arguments.length;y++)w[y]=arguments[y];return h.apply(this,O(w))||this}return p.prototype.append=function(w){var y=new l(w);return this._tail?(this._tail.next=y,y.prev=this._tail,this._tail=y):this._head=this._tail=y,this._length++,!0},p.prototype.prepend=function(w){var y=new l(w);return this._head?(y.next=this._head,this._head.prev=y,this._head=y):this._head=this._tail=y,this._length++,!0},p.prototype.remove=function(w){var y=this._head;if(y){if(this.compare.equal(y.value,w))return y.next?(this._head=y.next,this._head.prev=null,y.next=y.prev=null):this._head=this._tail=null,this._length--,w;for(;;){if(this.compare.equal(y.value,w))return y.next?(y.prev.next=y.next,y.next.prev=y.prev,y.next=y.prev=null):(y.prev.next=null,this._tail=y.prev,y.next=y.prev=null),this._length--,y.value;if(y.next)y=y.next;else return}}},p.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},p.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},p.prototype.reverse=function(){if(this._head){var w=this._head,y=null,g;for(this._tail=this._head;w!==null;)g=w.next,w.next=y,w.prev=g,y=w,w=g;this._head=y}},p.prototype.clone=function(){var w=this.toArray();return new(p.bind.apply(p,O([void 0],w)))},p}(E),Z=function(h){b(p,h);function p(){for(var w=[],y=0;y<arguments.length;y++)w[y]=arguments[y];var g=h.apply(this,O(w))||this;return g.cyclization(),g}return p.prototype.iterator=function(){var w;return v(this,function(y){switch(y.label){case 0:w=this._head,y.label=1;case 1:return w?[4,w.value]:[3,3];case 2:return y.sent(),w=w.next,w===this._head&&(w=null),[3,1];case 3:return[2]}})},p.prototype.circleIterator=function(){var w;return v(this,function(y){switch(y.label){case 0:w=this._head,y.label=1;case 1:return w?[4,w.value]:[3,3];case 2:return y.sent(),w=w.next,[3,1];case 3:return[2]}})},p.prototype[Symbol.iterator]=function(){return this.iterator()},p.prototype.mapToNormalListFn=function(w){for(var y=[],g=1;g<arguments.length;g++)y[g-1]=arguments[g];this.breakCircle();var C=h.prototype[w].apply(this,y);return this.cyclization(),C},p.prototype.getNode=function(w){return this.mapToNormalListFn("getNode",w)},p.prototype.append=function(w){return this.mapToNormalListFn("append",w)},p.prototype.prepend=function(w){return this.mapToNormalListFn("prepend",w)},p.prototype.find=function(w){return this.mapToNormalListFn("find",w)},p.prototype.indexOf=function(w){return this.mapToNormalListFn("indexOf",w)},p.prototype.remove=function(w){return this.mapToNormalListFn("remove",w)},p.prototype.removeHead=function(){return this.mapToNormalListFn("removeHead")},p.prototype.removeTail=function(){return this.mapToNormalListFn("removeTail")},p.prototype.first=function(w){M(w>=0,"[linked-list] param 'num' ("+w+") should not less than 0");for(var y=this.circleIterator(),g=[],C=0;C<w;C++){var N=y.next();g.push(N.value)}return g},p.prototype.toArray=function(){return this.mapToNormalListFn("toArray")},p.prototype.reverse=function(){return this.mapToNormalListFn("reverse")},p}(G),A=function(h){b(p,h);function p(){for(var w=[],y=0;y<arguments.length;y++)w[y]=arguments[y];var g=h.apply(this,O(w))||this;return g.cyclization(),g}return p.prototype.breakCircle=function(){this._tail&&this._head&&this._tail.next===this._head&&(this._tail.next=null,this._head.prev=null)},p.prototype.cyclization=function(){this._head&&this._tail&&this._tail.next===null&&(this._tail.next=this._head,this._head.prev=this._tail)},p.prototype.clone=function(){var w=this.toArray();return new(p.bind.apply(p,O([void 0],w)))},p}(Z);function I(h,p){var w=typeof Symbol=="function"&&h[Symbol.iterator];if(!w)return h;var y=w.call(h),g,C=[],N;try{for(;(p===void 0||p-- >0)&&!(g=y.next()).done;)C.push(g.value)}catch(F){N={error:F}}finally{try{g&&!g.done&&(w=y.return)&&w.call(y)}finally{if(N)throw N.error}}return C}function x(){for(var h=[],p=0;p<arguments.length;p++)h=h.concat(I(arguments[p]));return h}var j=function(){function h(){for(var p=[],w=0;w<arguments.length;w++)p[w]=arguments[w];this.queue=new(q.bind.apply(q,x([void 0],p)))}return Object.defineProperty(h.prototype,"length",{get:function(){return this.queue.length},enumerable:!0,configurable:!0}),Object.defineProperty(h.prototype,"peek",{get:function(){return this.queue.head},enumerable:!0,configurable:!0}),h.prototype.isEmpty=function(){return this.queue.isEmpty()},h.prototype.enqueue=function(p){return this.queue.append(p)},h.prototype.dequeue=function(){var p=this.queue.removeHead();return typeof p<"u"?p:void 0},h.prototype.toArray=function(){return this.queue.toArray()},h}();function k(h,p){var w=typeof Symbol=="function"&&h[Symbol.iterator];if(!w)return h;var y=w.call(h),g,C=[],N;try{for(;(p===void 0||p-- >0)&&!(g=y.next()).done;)C.push(g.value)}catch(F){N={error:F}}finally{try{g&&!g.done&&(w=y.return)&&w.call(y)}finally{if(N)throw N.error}}return C}function S(){for(var h=[],p=0;p<arguments.length;p++)h=h.concat(k(arguments[p]));return h}var c=function(){function h(){for(var p=[],w=0;w<arguments.length;w++)p[w]=arguments[w];this.stack=new(q.bind.apply(q,S([void 0],p)))}return Object.defineProperty(h.prototype,"length",{get:function(){return this.stack.length},enumerable:!0,configurable:!0}),Object.defineProperty(h.prototype,"peek",{get:function(){return this.stack.tail},enumerable:!0,configurable:!0}),h.prototype.isEmpty=function(){return this.stack.isEmpty()},h.prototype.push=function(p){return this.stack.append(p)},h.prototype.pop=function(){var p=this.stack.removeTail();return typeof p<"u"?p:void 0},h.prototype.popBottom=function(){var p=this.stack.removeHead();return typeof p<"u"?p:void 0},h.prototype.toArray=function(){return this.stack.toArray()},h}();function d(h,p,w,y){if(h){p.push(h),y.set(h.getKey(),!0);var g=h.getNeighbors().filter(function(C){return!y.get(C.getKey())});w.push(g)}}function f(h,p,w){var y=h.pop();y&&w.set(y.getKey(),!1),p.pop()}var _=function(){function h(p){p===void 0&&(p=!1),this.vertices={},this.edges={},this.isDirected=p}return h.prototype.addVertex=function(p){return this.vertices[p.getKey()]=p,this},h.prototype.getVertexByKey=function(p){return this.vertices[p]},h.prototype.getNeighbors=function(p){return p.getNeighbors()},h.prototype.getAllVertices=function(){return Object.values(this.vertices)},h.prototype.getAllEdges=function(){return Object.values(this.edges)},h.prototype.addEdge=function(p,w){if(w===void 0&&(w=!1),this.edges[p.getKey()]){if(w)return this;i(!1,"Edge has already been added before")}var y=this.getVertexByKey(p.startVertex.getKey()),g=this.getVertexByKey(p.endVertex.getKey());if(y||(this.addVertex(p.startVertex),y=this.getVertexByKey(p.startVertex.getKey())),g||(this.addVertex(p.endVertex),g=this.getVertexByKey(p.endVertex.getKey())),this.edges[p.getKey()]=p,this.isDirected)y.addEdge(p);else{y.addEdge(p);var C=p.clone();g.addEdge(C.reverse())}return this},h.prototype.deleteEdge=function(p,w){if(w===void 0&&(w=!1),!this.edges[p.getKey()]){if(w)return this;i(!1,"Edge not found in graph")}delete this.edges[p.getKey()];var y=this.getVertexByKey(p.startVertex.getKey()),g=this.getVertexByKey(p.endVertex.getKey());return y.deleteEdge(p),g.deleteEdge(p),this},h.prototype.findEdge=function(p,w){var y=this.getVertexByKey(p.getKey());return y?y.findEdge(w):null},h.prototype.getWeight=function(){return this.getAllEdges().reduce(function(p,w){return p+w.weight},0)},h.prototype.reverse=function(){var p=this;return this.getAllEdges().forEach(function(w){p.deleteEdge(w),w.reverse(),p.addEdge(w)}),this},h.prototype.getVerticesIndices=function(){var p={};return this.getAllVertices().forEach(function(w,y){p[w.getKey()]=y}),p},h.prototype.getAdjacencyMatrix=function(){var p=this,w=this.getAllVertices(),y=this.getVerticesIndices(),g=Array(w.length).fill(null).map(function(){return Array(w.length).fill(1/0)});return w.forEach(function(C,N){C.getNeighbors().forEach(function(F){var U=y[F.getKey()],L=p.findEdge(C,F);L&&(g[N][U]=L.weight)})}),g},h.prototype.toString=function(){return Object.keys(this.vertices).toString()},h.prototype.bfs=function(p){var w,y,g;return e.__generator(this,function(C){switch(C.label){case 0:w=new Map,y=new j,y.enqueue(p),C.label=1;case 1:return y.isEmpty()?[3,4]:(g=y.dequeue(),g&&!w.has(g.getKey())?[4,g]:[3,3]);case 2:C.sent(),w.set(g.getKey(),g),g.getNeighbors().forEach(function(N){return y.enqueue(N)}),C.label=3;case 3:return[3,1];case 4:return[2]}})},h.prototype.dfs=function(p){var w,y,g;return e.__generator(this,function(C){switch(C.label){case 0:w=new Map,y=new c,y.push(p),C.label=1;case 1:return y.isEmpty()?[3,4]:(g=y.pop(),g&&!w.has(g.getKey())?[4,g]:[3,3]);case 2:C.sent(),w.set(g.getKey(),g),g.getNeighbors().forEach(function(N){return y.push(N)}),C.label=3;case 3:return[3,1];case 4:return[2]}})},h.prototype.findAllPath=function(p,w){var y,g,C,N,F,U,L;return e.__generator(this,function(H){switch(H.label){case 0:return y=[],p!==w?[3,2]:(y.push(p),[4,y]);case 1:return H.sent(),[2];case 2:g=new Map,C=new c,N=new c,d(p,C,N,g),H.label=3;case 3:if(C.isEmpty())return[3,6];if(F=N.pop(),F&&F.length)U=F.shift(),N.push(F),U&&d(U,C,N,g);else return N.push(F),f(C,N,g),[3,3];return L=C.peek,L!==w?[3,5]:[4,C.toArray()];case 4:H.sent(),f(C,N,g),H.label=5;case 5:return[3,3];case 6:return[2]}})},h}();t.GraphEdge=n,t.GraphVertex=o,t.Graph=_,Object.defineProperty(t,"__esModule",{value:!0})})});var jm=De(Ha=>{"use strict";Object.defineProperty(Ha,"__esModule",{value:!0});Ha.Convert=void 0;var $l=class{static toPriceFeed(e){return ql(e,fi("PriceFeed"))}static priceFeedToJson(e){return Ll(e,fi("PriceFeed"))}static toPrice(e){return ql(e,fi("Price"))}static priceToJson(e){return Ll(e,fi("Price"))}static toPriceFeedMetadata(e){return ql(e,fi("PriceFeedMetadata"))}static priceFeedMetadataToJson(e){return Ll(e,fi("PriceFeedMetadata"))}};Ha.Convert=$l;function di(t,e,n=""){throw Error(n?`Invalid value for key "${n}". Expected type ${JSON.stringify(t)} but got ${JSON.stringify(e)}`:`Invalid value ${JSON.stringify(e)} for type ${JSON.stringify(t)}`)}function k1(t){if(t.jsonToJS===void 0){let e={};t.props.forEach(n=>e[n.json]={key:n.js,typ:n.typ}),t.jsonToJS=e}return t.jsonToJS}function C1(t){if(t.jsToJSON===void 0){let e={};t.props.forEach(n=>e[n.js]={key:n.json,typ:n.typ}),t.jsToJSON=e}return t.jsToJSON}function oo(t,e,n,i=""){function r(m,b){return typeof m==typeof b?b:di(m,b,i)}function o(m,b){let v=m.length;for(let T=0;T<v;T++){let O=m[T];try{return oo(b,O,n)}catch{}}return di(m,b)}function s(m,b){return m.indexOf(b)!==-1?b:di(m,b)}function a(m,b){return Array.isArray(b)?b.map(v=>oo(v,m,n)):di("array",b)}function u(m){if(m===null)return null;let b=new Date(m);return isNaN(b.valueOf())?di("Date",m):b}function l(m,b,v){if(v===null||typeof v!="object"||Array.isArray(v))return di("object",v);let T={};return Object.getOwnPropertyNames(m).forEach(O=>{let P=m[O],M=Object.prototype.hasOwnProperty.call(v,O)?v[O]:void 0;T[P.key]=oo(M,P.typ,n,P.key)}),Object.getOwnPropertyNames(v).forEach(O=>{Object.prototype.hasOwnProperty.call(m,O)||(T[O]=oo(v[O],b,n,O))}),T}if(e==="any")return t;if(e===null)return t===null?t:di(e,t);if(e===!1)return di(e,t);for(;typeof e=="object"&&e.ref!==void 0;)e=T1[e.ref];return Array.isArray(e)?s(e,t):typeof e=="object"?e.hasOwnProperty("unionMembers")?o(e.unionMembers,t):e.hasOwnProperty("arrayItems")?a(e.arrayItems,t):e.hasOwnProperty("props")?l(n(e),e.additional,t):di(e,t):e===Date&&typeof t!="number"?u(t):r(e,t)}function ql(t,e){return oo(t,e,k1)}function Ll(t,e){return oo(t,e,C1)}function dr(...t){return{unionMembers:t}}function Ul(t,e){return{props:t,additional:e}}function fi(t){return{ref:t}}var T1={PriceFeed:Ul([{json:"ema_price",js:"ema_price",typ:fi("Price")},{json:"id",js:"id",typ:""},{json:"metadata",js:"metadata",typ:dr(void 0,fi("PriceFeedMetadata"))},{json:"price",js:"price",typ:fi("Price")},{json:"vaa",js:"vaa",typ:dr(void 0,"")}],"any"),Price:Ul([{json:"conf",js:"conf",typ:""},{json:"expo",js:"expo",typ:0},{json:"price",js:"price",typ:""},{json:"publish_time",js:"publish_time",typ:0}],"any"),PriceFeedMetadata:Ul([{json:"attestation_time",js:"attestation_time",typ:dr(void 0,0)},{json:"emitter_chain",js:"emitter_chain",typ:0},{json:"prev_publish_time",js:"prev_publish_time",typ:dr(void 0,0)},{json:"price_service_receive_time",js:"price_service_receive_time",typ:dr(void 0,0)},{json:"sequence_number",js:"sequence_number",typ:dr(void 0,0)},{json:"slot",js:"slot",typ:dr(void 0,0)}],"any")}});var Fm=De(Wn=>{"use strict";var S1=Wn&&Wn.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Wn,"__esModule",{value:!0});Wn.parseAccumulatorUpdateData=Wn.parsePriceFeedMessage=Wn.isAccumulatorUpdateData=void 0;var so=S1(Se()),A1="504e4155",x1=1,I1=0,Bm=20,O1=0;function Nm(t){return t.toString("hex").slice(0,8)===A1&&t[4]===x1&&t[5]===I1}Wn.isAccumulatorUpdateData=Nm;function P1(t){let e=0;if(t.readUInt8(e)!==O1)throw new Error("Not a price feed message");e+=1;let i=t.subarray(e,e+32);e+=32;let r=new so.default(t.subarray(e,e+8),"be");e+=8;let o=new so.default(t.subarray(e,e+8),"be");e+=8;let s=t.readInt32BE(e);e+=4;let a=new so.default(t.subarray(e,e+8),"be");e+=8;let u=new so.default(t.subarray(e,e+8),"be");e+=8;let l=new so.default(t.subarray(e,e+8),"be");e+=8;let m=new so.default(t.subarray(e,e+8),"be");return e+=8,{feedId:i,price:r,confidence:o,exponent:s,publishTime:a,prevPublishTime:u,emaPrice:l,emaConf:m}}Wn.parsePriceFeedMessage=P1;function E1(t){if(!Nm(t))throw new Error("Invalid accumulator message");let e=6,n=t.readUint8(e);e+=1+n,e+=1;let i=t.readUint16BE(e);e+=2;let r=t.subarray(e,e+i);e+=i;let o=t.readUInt8(e),s=[];e+=1;for(let a=0;a<o;a++){let u=t.readUint16BE(e);e+=2;let l=t.subarray(e,e+u);e+=u;let m=t.readUInt8(e);e+=1;let b=[];for(let v=0;v<m;v++)b.push(Array.from(t.subarray(e,e+Bm))),e+=Bm;s.push({message:l,proof:b})}if(e!==t.length)throw new Error("Didn't reach the end of the message");return{vaa:r,updates:s}}Wn.parseAccumulatorUpdateData=E1});var Vl=De(nn=>{"use strict";Object.defineProperty(nn,"__esModule",{value:!0});nn.PriceFeed=nn.PriceFeedMetadata=nn.Price=nn.parsePriceFeedMessage=nn.parseAccumulatorUpdateData=nn.isAccumulatorUpdateData=void 0;var ao=jm(),zl=Fm();Object.defineProperty(nn,"isAccumulatorUpdateData",{enumerable:!0,get:function(){return zl.isAccumulatorUpdateData}});Object.defineProperty(nn,"parseAccumulatorUpdateData",{enumerable:!0,get:function(){return zl.parseAccumulatorUpdateData}});Object.defineProperty(nn,"parsePriceFeedMessage",{enumerable:!0,get:function(){return zl.parsePriceFeedMessage}});var ls=class t{conf;expo;price;publishTime;constructor(e){this.conf=e.conf,this.expo=e.expo,this.price=e.price,this.publishTime=e.publishTime}getPriceAsNumberUnchecked(){return Number(this.price)*10**this.expo}getConfAsNumberUnchecked(){return Number(this.conf)*10**this.expo}static fromJson(e){let n=ao.Convert.toPrice(e);return new t({conf:n.conf,expo:n.expo,price:n.price,publishTime:n.publish_time})}toJson(){let e={conf:this.conf,expo:this.expo,price:this.price,publish_time:this.publishTime};return ao.Convert.priceToJson(e)}};nn.Price=ls;var Xa=class t{attestationTime;emitterChain;priceServiceReceiveTime;sequenceNumber;slot;prevPublishTime;constructor(e){this.attestationTime=e.attestationTime,this.emitterChain=e.emitterChain,this.priceServiceReceiveTime=e.receiveTime,this.sequenceNumber=e.sequenceNumber,this.slot=e.slot,this.prevPublishTime=e.prevPublishTime}static fromJson(e){if(e===void 0)return;let n=ao.Convert.toPriceFeedMetadata(e);return new t({attestationTime:n.attestation_time,emitterChain:n.emitter_chain,receiveTime:n.price_service_receive_time,sequenceNumber:n.sequence_number,slot:n.slot,prevPublishTime:n.prev_publish_time})}toJson(){let e={attestation_time:this.attestationTime,emitter_chain:this.emitterChain,price_service_receive_time:this.priceServiceReceiveTime,sequence_number:this.sequenceNumber,slot:this.slot,prev_publish_time:this.prevPublishTime};return ao.Convert.priceFeedMetadataToJson(e)}};nn.PriceFeedMetadata=Xa;var Kl=class t{emaPrice;id;metadata;vaa;price;constructor(e){this.emaPrice=e.emaPrice,this.id=e.id,this.metadata=e.metadata,this.vaa=e.vaa,this.price=e.price}static fromJson(e){let n=ao.Convert.toPriceFeed(e);return new t({emaPrice:ls.fromJson(n.ema_price),id:n.id,metadata:Xa.fromJson(n.metadata),vaa:n.vaa,price:ls.fromJson(n.price)})}toJson(){let e={ema_price:this.emaPrice.toJson(),id:this.id,metadata:this.metadata?.toJson(),price:this.price.toJson()};return ao.Convert.priceFeedToJson(e)}getPriceUnchecked(){return this.price}getEmaPriceUnchecked(){return this.emaPrice}getPriceNoOlderThan(e){let n=this.getPriceUnchecked(),i=Math.floor(Date.now()/1e3);if(!(Math.abs(i-n.publishTime)>e))return n}getEmaPriceNoOlderThan(e){let n=this.getEmaPriceUnchecked(),i=Math.floor(Date.now()/1e3);if(!(Math.abs(i-n.publishTime)>e))return n}getMetadata(){return this.metadata}getVAA(){return this.vaa}};nn.PriceFeed=Kl});var Rm=De((LP,ds)=>{"use strict";function D1(t){return t&&t.__esModule?t:{default:t}}ds.exports=D1,ds.exports.__esModule=!0,ds.exports.default=ds.exports});var fs=De((UP,hi)=>{"use strict";function Gl(t){"@babel/helpers - typeof";return hi.exports=Gl=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},hi.exports.__esModule=!0,hi.exports.default=hi.exports,Gl(t)}hi.exports=Gl,hi.exports.__esModule=!0,hi.exports.default=hi.exports});var Um=De(($P,pi)=>{"use strict";var qm=fs().default;function Lm(){"use strict";pi.exports=Lm=function(){return e},pi.exports.__esModule=!0,pi.exports.default=pi.exports;var t,e={},n=Object.prototype,i=n.hasOwnProperty,r=Object.defineProperty||function(f,_,h){f[_]=h.value},o=typeof Symbol=="function"?Symbol:{},s=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function l(f,_,h){return Object.defineProperty(f,_,{value:h,enumerable:!0,configurable:!0,writable:!0}),f[_]}try{l({},"")}catch{l=function(h,p,w){return h[p]=w}}function m(f,_,h,p){var w=_&&_.prototype instanceof B?_:B,y=Object.create(w.prototype),g=new c(p||[]);return r(y,"_invoke",{value:x(f,h,g)}),y}function b(f,_,h){try{return{type:"normal",arg:f.call(_,h)}}catch(p){return{type:"throw",arg:p}}}e.wrap=m;var v="suspendedStart",T="suspendedYield",O="executing",P="completed",M={};function B(){}function E(){}function q(){}var K={};l(K,s,function(){return this});var X=Object.getPrototypeOf,G=X&&X(X(d([])));G&&G!==n&&i.call(G,s)&&(K=G);var Z=q.prototype=B.prototype=Object.create(K);function A(f){["next","throw","return"].forEach(function(_){l(f,_,function(h){return this._invoke(_,h)})})}function I(f,_){function h(w,y,g,C){var N=b(f[w],f,y);if(N.type!=="throw"){var F=N.arg,U=F.value;return U&&qm(U)=="object"&&i.call(U,"__await")?_.resolve(U.__await).then(function(L){h("next",L,g,C)},function(L){h("throw",L,g,C)}):_.resolve(U).then(function(L){F.value=L,g(F)},function(L){return h("throw",L,g,C)})}C(N.arg)}var p;r(this,"_invoke",{value:function(y,g){function C(){return new _(function(N,F){h(y,g,N,F)})}return p=p?p.then(C,C):C()}})}function x(f,_,h){var p=v;return function(w,y){if(p===O)throw Error("Generator is already running");if(p===P){if(w==="throw")throw y;return{value:t,done:!0}}for(h.method=w,h.arg=y;;){var g=h.delegate;if(g){var C=j(g,h);if(C){if(C===M)continue;return C}}if(h.method==="next")h.sent=h._sent=h.arg;else if(h.method==="throw"){if(p===v)throw p=P,h.arg;h.dispatchException(h.arg)}else h.method==="return"&&h.abrupt("return",h.arg);p=O;var N=b(f,_,h);if(N.type==="normal"){if(p=h.done?P:T,N.arg===M)continue;return{value:N.arg,done:h.done}}N.type==="throw"&&(p=P,h.method="throw",h.arg=N.arg)}}}function j(f,_){var h=_.method,p=f.iterator[h];if(p===t)return _.delegate=null,h==="throw"&&f.iterator.return&&(_.method="return",_.arg=t,j(f,_),_.method==="throw")||h!=="return"&&(_.method="throw",_.arg=new TypeError("The iterator does not provide a '"+h+"' method")),M;var w=b(p,f.iterator,_.arg);if(w.type==="throw")return _.method="throw",_.arg=w.arg,_.delegate=null,M;var y=w.arg;return y?y.done?(_[f.resultName]=y.value,_.next=f.nextLoc,_.method!=="return"&&(_.method="next",_.arg=t),_.delegate=null,M):y:(_.method="throw",_.arg=new TypeError("iterator result is not an object"),_.delegate=null,M)}function k(f){var _={tryLoc:f[0]};1 in f&&(_.catchLoc=f[1]),2 in f&&(_.finallyLoc=f[2],_.afterLoc=f[3]),this.tryEntries.push(_)}function S(f){var _=f.completion||{};_.type="normal",delete _.arg,f.completion=_}function c(f){this.tryEntries=[{tryLoc:"root"}],f.forEach(k,this),this.reset(!0)}function d(f){if(f||f===""){var _=f[s];if(_)return _.call(f);if(typeof f.next=="function")return f;if(!isNaN(f.length)){var h=-1,p=function w(){for(;++h<f.length;)if(i.call(f,h))return w.value=f[h],w.done=!1,w;return w.value=t,w.done=!0,w};return p.next=p}}throw new TypeError(qm(f)+" is not iterable")}return E.prototype=q,r(Z,"constructor",{value:q,configurable:!0}),r(q,"constructor",{value:E,configurable:!0}),E.displayName=l(q,u,"GeneratorFunction"),e.isGeneratorFunction=function(f){var _=typeof f=="function"&&f.constructor;return!!_&&(_===E||(_.displayName||_.name)==="GeneratorFunction")},e.mark=function(f){return Object.setPrototypeOf?Object.setPrototypeOf(f,q):(f.__proto__=q,l(f,u,"GeneratorFunction")),f.prototype=Object.create(Z),f},e.awrap=function(f){return{__await:f}},A(I.prototype),l(I.prototype,a,function(){return this}),e.AsyncIterator=I,e.async=function(f,_,h,p,w){w===void 0&&(w=Promise);var y=new I(m(f,_,h,p),w);return e.isGeneratorFunction(_)?y:y.next().then(function(g){return g.done?g.value:y.next()})},A(Z),l(Z,u,"Generator"),l(Z,s,function(){return this}),l(Z,"toString",function(){return"[object Generator]"}),e.keys=function(f){var _=Object(f),h=[];for(var p in _)h.push(p);return h.reverse(),function w(){for(;h.length;){var y=h.pop();if(y in _)return w.value=y,w.done=!1,w}return w.done=!0,w}},e.values=d,c.prototype={constructor:c,reset:function(_){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(S),!_)for(var h in this)h.charAt(0)==="t"&&i.call(this,h)&&!isNaN(+h.slice(1))&&(this[h]=t)},stop:function(){this.done=!0;var _=this.tryEntries[0].completion;if(_.type==="throw")throw _.arg;return this.rval},dispatchException:function(_){if(this.done)throw _;var h=this;function p(F,U){return g.type="throw",g.arg=_,h.next=F,U&&(h.method="next",h.arg=t),!!U}for(var w=this.tryEntries.length-1;w>=0;--w){var y=this.tryEntries[w],g=y.completion;if(y.tryLoc==="root")return p("end");if(y.tryLoc<=this.prev){var C=i.call(y,"catchLoc"),N=i.call(y,"finallyLoc");if(C&&N){if(this.prev<y.catchLoc)return p(y.catchLoc,!0);if(this.prev<y.finallyLoc)return p(y.finallyLoc)}else if(C){if(this.prev<y.catchLoc)return p(y.catchLoc,!0)}else{if(!N)throw Error("try statement without catch or finally");if(this.prev<y.finallyLoc)return p(y.finallyLoc)}}}},abrupt:function(_,h){for(var p=this.tryEntries.length-1;p>=0;--p){var w=this.tryEntries[p];if(w.tryLoc<=this.prev&&i.call(w,"finallyLoc")&&this.prev<w.finallyLoc){var y=w;break}}y&&(_==="break"||_==="continue")&&y.tryLoc<=h&&h<=y.finallyLoc&&(y=null);var g=y?y.completion:{};return g.type=_,g.arg=h,y?(this.method="next",this.next=y.finallyLoc,M):this.complete(g)},complete:function(_,h){if(_.type==="throw")throw _.arg;return _.type==="break"||_.type==="continue"?this.next=_.arg:_.type==="return"?(this.rval=this.arg=_.arg,this.method="return",this.next="end"):_.type==="normal"&&h&&(this.next=h),M},finish:function(_){for(var h=this.tryEntries.length-1;h>=0;--h){var p=this.tryEntries[h];if(p.finallyLoc===_)return this.complete(p.completion,p.afterLoc),S(p),M}},catch:function(_){for(var h=this.tryEntries.length-1;h>=0;--h){var p=this.tryEntries[h];if(p.tryLoc===_){var w=p.completion;if(w.type==="throw"){var y=w.arg;S(p)}return y}}throw Error("illegal catch attempt")},delegateYield:function(_,h,p){return this.delegate={iterator:d(_),resultName:h,nextLoc:p},this.method==="next"&&(this.arg=t),M}},e}pi.exports=Lm,pi.exports.__esModule=!0,pi.exports.default=pi.exports});var Km=De((KP,$m)=>{"use strict";var Za=Um()();$m.exports=Za;try{regeneratorRuntime=Za}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=Za:Function("r","regeneratorRuntime = r")(Za)}});var Vm=De((zP,hs)=>{"use strict";function zm(t,e,n,i,r,o,s){try{var a=t[o](s),u=a.value}catch(l){n(l);return}a.done?e(u):Promise.resolve(u).then(i,r)}function M1(t){return function(){var e=this,n=arguments;return new Promise(function(i,r){var o=t.apply(e,n);function s(u){zm(o,i,r,s,a,"next",u)}function a(u){zm(o,i,r,s,a,"throw",u)}s(void 0)})}}hs.exports=M1,hs.exports.__esModule=!0,hs.exports.default=hs.exports});var Wm=De((VP,ps)=>{"use strict";var Gm=fs().default;function j1(t,e){if(Gm(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var i=n.call(t,e||"default");if(Gm(i)!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}ps.exports=j1,ps.exports.__esModule=!0,ps.exports.default=ps.exports});var Hm=De((GP,ms)=>{"use strict";var B1=fs().default,N1=Wm();function F1(t){var e=N1(t,"string");return B1(e)=="symbol"?e:e+""}ms.exports=F1,ms.exports.__esModule=!0,ms.exports.default=ms.exports});var Xm=De((WP,gs)=>{"use strict";var R1=Hm();function q1(t,e,n){return e=R1(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}gs.exports=q1,gs.exports.__esModule=!0,gs.exports.default=gs.exports});var Jm=De((HP,Zm)=>{"use strict";var L1=new Set(["ENOTFOUND","ENETUNREACH","UNABLE_TO_GET_ISSUER_CERT","UNABLE_TO_GET_CRL","UNABLE_TO_DECRYPT_CERT_SIGNATURE","UNABLE_TO_DECRYPT_CRL_SIGNATURE","UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY","CERT_SIGNATURE_FAILURE","CRL_SIGNATURE_FAILURE","CERT_NOT_YET_VALID","CERT_HAS_EXPIRED","CRL_NOT_YET_VALID","CRL_HAS_EXPIRED","ERROR_IN_CERT_NOT_BEFORE_FIELD","ERROR_IN_CERT_NOT_AFTER_FIELD","ERROR_IN_CRL_LAST_UPDATE_FIELD","ERROR_IN_CRL_NEXT_UPDATE_FIELD","OUT_OF_MEM","DEPTH_ZERO_SELF_SIGNED_CERT","SELF_SIGNED_CERT_IN_CHAIN","UNABLE_TO_GET_ISSUER_CERT_LOCALLY","UNABLE_TO_VERIFY_LEAF_SIGNATURE","CERT_CHAIN_TOO_LONG","CERT_REVOKED","INVALID_CA","PATH_LENGTH_EXCEEDED","INVALID_PURPOSE","CERT_UNTRUSTED","CERT_REJECTED","HOSTNAME_MISMATCH"]);Zm.exports=t=>!L1.has(t&&t.code)});var og=De(fn=>{"use strict";var _s=Rm();Object.defineProperty(fn,"__esModule",{value:!0});fn.isNetworkError=Zl;fn.isRetryableError=Ya;fn.isSafeRequestError=ng;fn.isIdempotentRequestError=Jl;fn.isNetworkOrIdempotentRequestError=Yl;fn.exponentialDelay=ig;fn.default=fr;fn.DEFAULT_OPTIONS=fn.namespace=void 0;var Ja=_s(Km()),U1=_s(fs()),eg=_s(Vm()),$1=_s(Xm()),K1=_s(Jm());function Ym(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})),n.push.apply(n,i)}return n}function Wl(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Ym(Object(n),!0).forEach(function(i){(0,$1.default)(t,i,n[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ym(Object(n)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(n,i))})}return t}var Xl="axios-retry";fn.namespace=Xl;function Zl(t){var e=["ERR_CANCELED","ECONNABORTED"];return!t.response&&!!t.code&&!e.includes(t.code)&&(0,K1.default)(t)}var tg=["get","head","options"],z1=tg.concat(["put","delete"]);function Ya(t){return t.code!=="ECONNABORTED"&&(!t.response||t.response.status>=500&&t.response.status<=599)}function ng(t){return t.config?Ya(t)&&tg.indexOf(t.config.method)!==-1:!1}function Jl(t){return t.config?Ya(t)&&z1.indexOf(t.config.method)!==-1:!1}function Yl(t){return Zl(t)||Jl(t)}function V1(){return 0}function ig(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,e=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:100,i=Math.pow(2,t)*n,r=i*.2*Math.random();return i+r}var rg={retries:3,retryCondition:Yl,retryDelay:V1,shouldResetTimeout:!1,onRetry:function(){}};fn.DEFAULT_OPTIONS=rg;function G1(t,e){return Wl(Wl(Wl({},rg),e),t[Xl])}function Qm(t,e){var n=G1(t,e);return n.retryCount=n.retryCount||0,t[Xl]=n,n}function W1(t,e){t.defaults.agent===e.agent&&delete e.agent,t.defaults.httpAgent===e.httpAgent&&delete e.httpAgent,t.defaults.httpsAgent===e.httpsAgent&&delete e.httpsAgent}function H1(t,e){return Hl.apply(this,arguments)}function Hl(){return Hl=(0,eg.default)(Ja.default.mark(function t(e,n){var i,r,o,s;return Ja.default.wrap(function(u){for(;;)switch(u.prev=u.next){case 0:if(i=e.retries,r=e.retryCondition,o=e.retryCount<i&&r(n),(0,U1.default)(o)!=="object"){u.next=13;break}return u.prev=3,u.next=6,o;case 6:return s=u.sent,u.abrupt("return",s!==!1);case 10:return u.prev=10,u.t0=u.catch(3),u.abrupt("return",!1);case 13:return u.abrupt("return",o);case 14:case"end":return u.stop()}},t,null,[[3,10]])})),Hl.apply(this,arguments)}function fr(t,e){var n=t.interceptors.request.use(function(r){var o=Qm(r,e);return o.lastRequestTime=Date.now(),r}),i=t.interceptors.response.use(null,function(){var r=(0,eg.default)(Ja.default.mark(function o(s){var a,u,l,m,b,v,T,O;return Ja.default.wrap(function(M){for(;;)switch(M.prev=M.next){case 0:if(a=s.config,a){M.next=3;break}return M.abrupt("return",Promise.reject(s));case 3:return u=Qm(a,e),M.next=6,H1(u,s);case 6:if(!M.sent){M.next=21;break}if(u.retryCount+=1,l=u.retryDelay,m=u.shouldResetTimeout,b=u.onRetry,v=l(u.retryCount,s),W1(t,a),!(!m&&a.timeout&&u.lastRequestTime)){M.next=17;break}if(T=Date.now()-u.lastRequestTime,O=a.timeout-T-v,!(O<=0)){M.next=16;break}return M.abrupt("return",Promise.reject(s));case 16:a.timeout=O;case 17:return a.transformRequest=[function(B){return B}],M.next=20,b(u.retryCount,s,a);case 20:return M.abrupt("return",new Promise(function(B){return setTimeout(function(){return B(t(a))},v)}));case 21:return M.abrupt("return",Promise.reject(s));case 22:case"end":return M.stop()}},o)}));return function(o){return r.apply(this,arguments)}}());return{requestInterceptorId:n,responseInterceptorId:i}}fr.isNetworkError=Zl;fr.isSafeRequestError=ng;fr.isIdempotentRequestError=Jl;fr.isNetworkOrIdempotentRequestError=Yl;fr.exponentialDelay=ig;fr.isRetryableError=Ya});var ag=De((ZP,Ql)=>{"use strict";var sg=og().default;Ql.exports=sg;Ql.exports.default=sg});var ug=De((JP,cg)=>{"use strict";var co=null;typeof WebSocket<"u"?co=WebSocket:typeof MozWebSocket<"u"?co=MozWebSocket:typeof global<"u"?co=global.WebSocket||global.MozWebSocket:typeof window<"u"?co=window.WebSocket||window.MozWebSocket:typeof self<"u"&&(co=self.WebSocket||self.MozWebSocket);cg.exports=co});var dg=De(uo=>{"use strict";var X1=uo&&uo.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(uo,"__esModule",{value:!0});uo.ResilientWebSocket=void 0;var Z1=X1(ug()),J1=33e3,ed=class{endpoint;wsClient;wsUserClosed;wsFailedAttempts;pingTimeout;logger;onError;onMessage;onReconnect;constructor(e,n){this.endpoint=e,this.logger=n,this.wsFailedAttempts=0,this.onError=i=>{this.logger?.error(i)},this.wsUserClosed=!0,this.onMessage=()=>{},this.onReconnect=()=>{}}async send(e){this.logger?.info(`Sending ${e}`),await this.waitForMaybeReadyWebSocket(),this.wsClient===void 0?this.logger?.error("Couldn't connect to the websocket server. Error callback is called."):this.wsClient?.send(e)}async startWebSocket(){this.wsClient===void 0&&(this.logger?.info("Creating Web Socket client"),this.wsClient=new Z1.default(this.endpoint),this.wsUserClosed=!1,this.wsClient.onopen=()=>{this.wsFailedAttempts=0,this.wsClient.on!==void 0&&this.heartbeat()},this.wsClient.onerror=e=>{this.onError(e.error)},this.wsClient.onmessage=e=>{this.onMessage(e.data)},this.wsClient.onclose=async()=>{if(this.pingTimeout!==void 0&&clearInterval(this.pingTimeout),this.wsUserClosed===!1){this.wsFailedAttempts+=1,this.wsClient=void 0;let e=Y1(this.wsFailedAttempts);this.logger?.error(`Connection closed unexpectedly or because of timeout. Reconnecting after ${e}ms.`),await lg(e),this.restartUnexpectedClosedWebsocket()}else this.logger?.info("The connection has been closed successfully.")},this.wsClient.on!==void 0&&this.wsClient.on("ping",this.heartbeat.bind(this)))}heartbeat(){this.logger?.info("Heartbeat"),this.pingTimeout!==void 0&&clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{this.logger?.warn("Connection timed out. Reconnecting..."),this.wsClient?.terminate(),this.restartUnexpectedClosedWebsocket()},J1)}async waitForMaybeReadyWebSocket(){let e=0;for(;this.wsClient!==void 0&&this.wsClient.readyState!==this.wsClient.OPEN;)if(e>5e3){this.wsClient.close();return}else e+=10,await lg(10)}async restartUnexpectedClosedWebsocket(){if(this.wsUserClosed!==!0){if(await this.startWebSocket(),await this.waitForMaybeReadyWebSocket(),this.wsClient===void 0){this.logger?.error("Couldn't reconnect to websocket. Error callback is called.");return}this.onReconnect()}}closeWebSocket(){if(this.wsClient!==void 0){let e=this.wsClient;this.wsClient=void 0,e.close()}this.wsUserClosed=!0}};uo.ResilientWebSocket=ed;async function lg(t){return new Promise(e=>setTimeout(e,t))}function Y1(t){return 2**t*100}});var fg=De(lo=>{"use strict";Object.defineProperty(lo,"__esModule",{value:!0});lo.removeLeading0xIfExists=lo.makeWebsocketUrl=void 0;function Q1(t){let e=new URL("ws",t),n=e.protocol==="https:";return e.protocol=n?"wss:":"ws:",e.toString()}lo.makeWebsocketUrl=Q1;function eC(t){return t.startsWith("0x")?t.substring(2):t}lo.removeLeading0xIfExists=eC});var mg=De(fo=>{"use strict";var pg=fo&&fo.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(fo,"__esModule",{value:!0});fo.PriceServiceConnection=void 0;var td=Vl(),tC=pg(require("axios")),hg=pg(ag()),nC=dg(),nd=fg(),id=class{httpClient;priceFeedCallbacks;wsClient;wsEndpoint;logger;priceFeedRequestConfig;onWsError;constructor(e,n){this.httpClient=tC.default.create({baseURL:e,timeout:n?.timeout||5e3}),(0,hg.default)(this.httpClient,{retries:n?.httpRetries||3,retryDelay:hg.default.exponentialDelay}),this.priceFeedRequestConfig={binary:n?.priceFeedRequestConfig?.binary,verbose:n?.priceFeedRequestConfig?.verbose??n?.verbose,allowOutOfOrder:n?.priceFeedRequestConfig?.allowOutOfOrder},this.priceFeedCallbacks=new Map,this.logger=n?.logger||{trace:()=>{},debug:()=>{},info:()=>{},warn:console.warn,error:console.error},this.onWsError=i=>{this.logger.error(i),typeof process<"u"&&typeof process.exit=="function"?(this.logger.error("Halting the process due to the websocket error"),process.exit(1)):this.logger.error("Cannot halt process. Please handle the websocket error.")},this.wsEndpoint=(0,nd.makeWebsocketUrl)(e)}async getLatestPriceFeeds(e){return e.length===0?[]:(await this.httpClient.get("/api/latest_price_feeds",{params:{ids:e,verbose:this.priceFeedRequestConfig.verbose,binary:this.priceFeedRequestConfig.binary}})).data.map(r=>td.PriceFeed.fromJson(r))}async getLatestVaas(e){return(await this.httpClient.get("/api/latest_vaas",{params:{ids:e}})).data}async getVaa(e,n){let i=await this.httpClient.get("/api/get_vaa",{params:{id:e,publish_time:n}});return[i.data.vaa,i.data.publishTime]}async getPriceFeed(e,n){let i=await this.httpClient.get("/api/get_price_feed",{params:{id:e,publish_time:n,verbose:this.priceFeedRequestConfig.verbose,binary:this.priceFeedRequestConfig.binary}});return td.PriceFeed.fromJson(i.data)}async getPriceFeedIds(){return(await this.httpClient.get("/api/price_feed_ids")).data}async subscribePriceFeedUpdates(e,n){this.wsClient===void 0&&await this.startWebSocket(),e=e.map(o=>(0,nd.removeLeading0xIfExists)(o));let i=[];for(let o of e)this.priceFeedCallbacks.has(o)||(this.priceFeedCallbacks.set(o,new Set),i.push(o)),this.priceFeedCallbacks.get(o).add(n);let r={ids:i,type:"subscribe",verbose:this.priceFeedRequestConfig.verbose,binary:this.priceFeedRequestConfig.binary,allow_out_of_order:this.priceFeedRequestConfig.allowOutOfOrder};await this.wsClient?.send(JSON.stringify(r))}async unsubscribePriceFeedUpdates(e,n){this.wsClient===void 0&&await this.startWebSocket(),e=e.map(o=>(0,nd.removeLeading0xIfExists)(o));let i=[];for(let o of e)if(this.priceFeedCallbacks.has(o)){let s=!1;n===void 0?(this.priceFeedCallbacks.delete(o),s=!0):(this.priceFeedCallbacks.get(o).delete(n),this.priceFeedCallbacks.get(o).size===0&&(this.priceFeedCallbacks.delete(o),s=!0)),s&&i.push(o)}let r={ids:i,type:"unsubscribe"};await this.wsClient?.send(JSON.stringify(r)),this.priceFeedCallbacks.size===0&&this.closeWebSocket()}async startWebSocket(){if(this.wsEndpoint===void 0)throw new Error("Websocket endpoint is undefined.");this.wsClient=new nC.ResilientWebSocket(this.wsEndpoint,this.logger),this.wsClient.onError=this.onWsError,this.wsClient.onReconnect=()=>{if(this.priceFeedCallbacks.size>0){let e={ids:Array.from(this.priceFeedCallbacks.keys()),type:"subscribe",verbose:this.priceFeedRequestConfig.verbose,binary:this.priceFeedRequestConfig.binary,allow_out_of_order:this.priceFeedRequestConfig.allowOutOfOrder};this.logger.info("Resubscribing to existing price feeds."),this.wsClient?.send(JSON.stringify(e))}},this.wsClient.onMessage=e=>{this.logger.info(`Received message ${e.toString()}`);let n;try{n=JSON.parse(e.toString())}catch(i){this.logger.error(`Error parsing message ${e.toString()} as JSON.`),this.logger.error(i),this.onWsError(i);return}if(n.type==="response")n.status==="error"&&(this.logger.error(`Error response from the websocket server ${n.error}.`),this.onWsError(new Error(n.error)));else if(n.type==="price_update"){let i;try{i=td.PriceFeed.fromJson(n.price_feed)}catch(r){this.logger.error(`Error parsing price feeds from message ${e.toString()}.`),this.logger.error(r),this.onWsError(r);return}if(this.priceFeedCallbacks.has(i.id))for(let r of this.priceFeedCallbacks.get(i.id))r(i)}else this.logger.warn(`Ignoring unsupported server response ${e.toString()}.`)},await this.wsClient.startWebSocket()}closeWebSocket(){this.wsClient?.closeWebSocket(),this.wsClient=void 0,this.priceFeedCallbacks.clear()}};fo.PriceServiceConnection=id});var rd=De(rn=>{"use strict";Object.defineProperty(rn,"__esModule",{value:!0});rn.parseAccumulatorUpdateData=rn.isAccumulatorUpdateData=rn.Price=rn.PriceFeed=rn.PriceFeedMetadata=rn.PriceServiceConnection=void 0;var iC=mg();Object.defineProperty(rn,"PriceServiceConnection",{enumerable:!0,get:function(){return iC.PriceServiceConnection}});var ys=Vl();Object.defineProperty(rn,"PriceFeedMetadata",{enumerable:!0,get:function(){return ys.PriceFeedMetadata}});Object.defineProperty(rn,"PriceFeed",{enumerable:!0,get:function(){return ys.PriceFeed}});Object.defineProperty(rn,"Price",{enumerable:!0,get:function(){return ys.Price}});Object.defineProperty(rn,"isAccumulatorUpdateData",{enumerable:!0,get:function(){return ys.isAccumulatorUpdateData}});Object.defineProperty(rn,"parseAccumulatorUpdateData",{enumerable:!0,get:function(){return ys.parseAccumulatorUpdateData}})});var gg=De(Qa=>{"use strict";Object.defineProperty(Qa,"__esModule",{value:!0});Qa.SuiPriceServiceConnection=void 0;var rC=rd(),oC=require("buffer"),od=class extends rC.PriceServiceConnection{async getPriceFeedsUpdateData(e){return(await this.getLatestVaas(e)).map(i=>oC.Buffer.from(i,"base64"))}};Qa.SuiPriceServiceConnection=od});var _g=De(tc=>{"use strict";Object.defineProperty(tc,"__esModule",{value:!0});tc.SuiPythClient=void 0;var ec=require("@mysten/sui.js/utils"),sd=require("@mysten/sui.js/bcs"),sC=require("buffer"),ad=16*1024,cd=class{provider;pythStateId;wormholeStateId;pythPackageId;wormholePackageId;priceTableInfo;priceFeedObjectIdCache=new Map;baseUpdateFee;constructor(e,n,i){this.provider=e,this.pythStateId=n,this.wormholeStateId=i,this.pythPackageId=void 0,this.wormholePackageId=void 0}async getBaseUpdateFee(){if(this.baseUpdateFee===void 0){let e=await this.provider.getObject({id:this.pythStateId,options:{showContent:!0}});if(!e.data||!e.data.content||e.data.content.dataType!=="moveObject")throw new Error("Unable to fetch pyth state object");this.baseUpdateFee=e.data.content.fields.base_update_fee}return this.baseUpdateFee}async getPackageId(e){let n=await this.provider.getObject({id:e,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 ${e}`)});if("upgrade_cap"in n)return n.upgrade_cap.fields.package;throw new Error("upgrade_cap not found")}async verifyVaas(e,n){let i=await this.getWormholePackageId(),r=[];for(let o of e){let[s]=n.moveCall({target:`${i}::vaa::parse_and_verify`,arguments:[n.object(this.wormholeStateId),n.pure(sd.bcs.ser("vector<u8>",Array.from(o),{maxSize:ad}).toBytes()),n.object(ec.SUI_CLOCK_OBJECT_ID)]});r.push(s)}return r}async updatePriceFeeds(e,n,i){let r=await this.getPythPackageId(),o;if(n.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let s=this.extractVaaBytesFromAccumulatorMessage(n[0]),a=await this.verifyVaas([s],e);[o]=e.moveCall({target:`${r}::pyth::create_authenticated_price_infos_using_accumulator`,arguments:[e.object(this.pythStateId),e.pure(sd.bcs.ser("vector<u8>",Array.from(n[0]),{maxSize:ad}).toBytes()),a[0],e.object(ec.SUI_CLOCK_OBJECT_ID)]});let u=[],l=await this.getBaseUpdateFee(),m=e.splitCoins(e.gas,i.map(()=>e.pure(l))),b=0;for(let v of i){let T=await this.getPriceFeedObjectId(v);if(!T)throw new Error(`Price feed ${v} not found, please create it first`);u.push(T),[o]=e.moveCall({target:`${r}::pyth::update_single_price_feed`,arguments:[e.object(this.pythStateId),o,e.object(T),m[b],e.object(ec.SUI_CLOCK_OBJECT_ID)]}),b++}return e.moveCall({target:`${r}::hot_potato_vector::destroy`,arguments:[o],typeArguments:[`${r}::price_info::PriceInfo`]}),u}async createPriceFeed(e,n){let i=await this.getPythPackageId();if(n.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let r=this.extractVaaBytesFromAccumulatorMessage(n[0]),o=await this.verifyVaas([r],e);e.moveCall({target:`${i}::pyth::create_price_feeds_using_accumulator`,arguments:[e.object(this.pythStateId),e.pure(sd.bcs.ser("vector<u8>",Array.from(n[0]),{maxSize:ad}).toBytes()),o[0],e.object(ec.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(e){let n=e.replace("0x","");if(!this.priceFeedObjectIdCache.has(n)){let{id:i,fieldType:r}=await this.getPriceTableInfo(),o=await this.provider.getDynamicFieldObject({parentId:i,name:{type:`${r}::price_identifier::PriceIdentifier`,value:{bytes:Array.from(sC.Buffer.from(n,"hex"))}}});if(!o.data||!o.data.content)return;if(o.data.content.dataType!=="moveObject")throw new Error("Price feed type mismatch");this.priceFeedObjectIdCache.set(n,o.data.content.fields.value)}return this.priceFeedObjectIdCache.get(n)}async getPriceTableInfo(){if(this.priceTableInfo===void 0){let e=await this.provider.getDynamicFieldObject({parentId:this.pythStateId,name:{type:"vector<u8>",value:"price_info"}});if(!e.data||!e.data.type)throw new Error("Price Table not found, contract may not be initialized");let n=e.data.type.replace("0x2::table::Table<","");n=n.replace("::price_identifier::PriceIdentifier, 0x2::object::ID>",""),this.priceTableInfo={id:e.data.objectId,fieldType:n}}return this.priceTableInfo}extractVaaBytesFromAccumulatorMessage(e){let i=7+e.readUint8(6)+1,r=e.readUint16BE(i),o=i+2;return e.subarray(o,o+r)}};tc.SuiPythClient=cd});var wg=De(Hn=>{"use strict";Object.defineProperty(Hn,"__esModule",{value:!0});Hn.PriceFeed=Hn.Price=Hn.SuiPythClient=Hn.SuiPriceServiceConnection=void 0;var aC=gg();Object.defineProperty(Hn,"SuiPriceServiceConnection",{enumerable:!0,get:function(){return aC.SuiPriceServiceConnection}});var cC=_g();Object.defineProperty(Hn,"SuiPythClient",{enumerable:!0,get:function(){return cC.SuiPythClient}});var yg=rd();Object.defineProperty(Hn,"Price",{enumerable:!0,get:function(){return yg.Price}});Object.defineProperty(Hn,"PriceFeed",{enumerable:!0,get:function(){return yg.PriceFeed}})});var Dg=De((_d,yd)=>{"use strict";(function(t,e){typeof _d=="object"&&typeof yd<"u"?yd.exports=e():typeof define=="function"&&define.amd?define(e):(t=t||self,t.JSBI=e())})(_d,function(){"use strict";var t=Math.imul,e=Math.clz32;function n(A){"@babel/helpers - typeof";return n=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},n(A)}function i(A,I){if(!(A instanceof I))throw new TypeError("Cannot call a class as a function")}function r(A,I){for(var x,j=0;j<I.length;j++)x=I[j],x.enumerable=x.enumerable||!1,x.configurable=!0,"value"in x&&(x.writable=!0),Object.defineProperty(A,x.key,x)}function o(A,I,x){return I&&r(A.prototype,I),x&&r(A,x),Object.defineProperty(A,"prototype",{writable:!1}),A}function s(A,I){if(typeof I!="function"&&I!==null)throw new TypeError("Super expression must either be null or a function");A.prototype=Object.create(I&&I.prototype,{constructor:{value:A,writable:!0,configurable:!0}}),Object.defineProperty(A,"prototype",{writable:!1}),I&&u(A,I)}function a(A){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(I){return I.__proto__||Object.getPrototypeOf(I)},a(A)}function u(A,I){return u=Object.setPrototypeOf||function(x,j){return x.__proto__=j,x},u(A,I)}function l(){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 m(){return m=l()?Reflect.construct:function(A,I,x){var j=[null];j.push.apply(j,I);var k=Function.bind.apply(A,j),S=new k;return x&&u(S,x.prototype),S},m.apply(null,arguments)}function b(A){return Function.toString.call(A).indexOf("[native code]")!==-1}function v(A){var I=typeof Map=="function"?new Map:void 0;return v=function(x){function j(){return m(x,arguments,a(this).constructor)}if(x===null||!b(x))return x;if(typeof x!="function")throw new TypeError("Super expression must either be null or a function");if(typeof I<"u"){if(I.has(x))return I.get(x);I.set(x,j)}return j.prototype=Object.create(x.prototype,{constructor:{value:j,enumerable:!1,writable:!0,configurable:!0}}),u(j,x)},v(A)}function T(A){if(A===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return A}function O(A,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(A)}function P(A){var I=l();return function(){var x,j=a(A);if(I){var k=a(this).constructor;x=Reflect.construct(j,arguments,k)}else x=j.apply(this,arguments);return O(this,x)}}function M(A,I){return B(A)||E(A,I)||q(A,I)||X()}function B(A){if(Array.isArray(A))return A}function E(A,I){var x=A==null?null:typeof Symbol<"u"&&A[Symbol.iterator]||A["@@iterator"];if(x!=null){var j,k,S=[],c=!0,d=!1;try{for(x=x.call(A);!(c=(j=x.next()).done)&&(S.push(j.value),!(I&&S.length===I));c=!0);}catch(f){d=!0,k=f}finally{try{c||x.return==null||x.return()}finally{if(d)throw k}}return S}}function q(A,I){if(A){if(typeof A=="string")return K(A,I);var x=Object.prototype.toString.call(A).slice(8,-1);return x==="Object"&&A.constructor&&(x=A.constructor.name),x==="Map"||x==="Set"?Array.from(A):x==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(x)?K(A,I):void 0}}function K(A,I){(I==null||I>A.length)&&(I=A.length);for(var x=0,j=Array(I);x<I;x++)j[x]=A[x];return j}function X(){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(A,I){var x=typeof Symbol<"u"&&A[Symbol.iterator]||A["@@iterator"];if(!x){if(Array.isArray(A)||(x=q(A))||I&&A&&typeof A.length=="number"){x&&(A=x);var j=0,k=function(){};return{s:k,n:function(){return j>=A.length?{done:!0}:{done:!1,value:A[j++]}},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(){x=x.call(A)},n:function(){var f=x.next();return c=f.done,f},e:function(f){d=!0,S=f},f:function(){try{c||x.return==null||x.return()}finally{if(d)throw S}}}}var Z=function(A){var I=Math.abs,x=Math.max,j=Math.floor;function k(c,d){var f;if(i(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,A);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 _=c.value;d.push((_&&(_>>>0).toString(16))+", ")}}catch(h){f.e(h)}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 _=32767&c,h=c>>>15,p=0,w=d,y=0;y<f;y++){var g=this.__digit(y),C=32767&g,N=g>>>15,F=k.__imul(C,_),U=k.__imul(C,h),L=k.__imul(N,_),H=k.__imul(N,h),ee=w+F+p;p=ee>>>30,ee&=1073741823,ee+=((32767&U)<<15)+((32767&L)<<15),p+=ee>>>30,w=H+(U>>>15)+(L>>>15),this.__setDigit(y,1073741823&ee)}if(p!==0||w!==0)throw new Error("implementation bug")}},{key:"__inplaceAdd",value:function(c,d,f){for(var _,h=0,p=0;p<f;p++)_=this.__halfDigit(d+p)+c.__halfDigit(p)+h,h=_>>>15,this.__setHalfDigit(d+p,32767&_);return h}},{key:"__inplaceSub",value:function(c,d,f){var _=0;if(1&d){d>>=1;for(var h=this.__digit(d),p=32767&h,w=0;w<f-1>>>1;w++){var y=c.__digit(w),g=(h>>>15)-(32767&y)-_;_=1&g>>>15,this.__setDigit(d+w,(32767&g)<<15|32767&p),h=this.__digit(d+w+1),p=(32767&h)-(y>>>15)-_,_=1&p>>>15}var C=c.__digit(w),N=(h>>>15)-(32767&C)-_;if(_=1&N>>>15,this.__setDigit(d+w,(32767&N)<<15|32767&p),d+w+1>=this.length)throw new RangeError("out of bounds");!(1&f)&&(h=this.__digit(d+w+1),p=(32767&h)-(C>>>15)-_,_=1&p>>>15,this.__setDigit(d+c.length,1073709056&h|32767&p))}else{d>>=1;for(var F=0;F<c.length-1;F++){var U=this.__digit(d+F),L=c.__digit(F),H=(32767&U)-(32767&L)-_;_=1&H>>>15;var ee=(U>>>15)-(L>>>15)-_;_=1&ee>>>15,this.__setDigit(d+F,(32767&ee)<<15|32767&H)}var ge=this.__digit(d+F),ie=c.__digit(F),me=(32767&ge)-(32767&ie)-_;_=1&me>>>15;var Ae=0;!(1&f)&&(Ae=(ge>>>15)-(ie>>>15)-_,_=1&Ae>>>15),this.__setDigit(d+F,(32767&Ae)<<15|32767&me)}return _}},{key:"__inplaceRightShift",value:function(c){if(c!==0){for(var d,f=this.__digit(0)>>>c,_=this.length-1,h=0;h<_;h++)d=this.__digit(h+1),this.__setDigit(h,1073741823&d<<30-c|f),f=d>>>c;this.__setDigit(_,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,_=this.__digit(f),h=1&c?32767&_|d<<15:1073709056&_|32767&d;this.__setDigit(f,h)}}],[{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)||j(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(n(c)==="object"){if(c.constructor===k)return c;var _=k.__toPrimitive(c);return k.BigInt(_)}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 _=c.__digit(d-1),h=k.__clz30(_),p=30*d-h;if(1024<p)return c.sign?-1/0:1/0;var w=p-1,y=_,g=d-1,C=h+3,N=C===32?0:y<<C;N>>>=12;var F=C-12,U=12<=C?0:y<<20+C,L=20+C;for(0<F&&0<g&&(g--,y=c.__digit(g),N|=y>>>30-F,U=y<<F+2,L=F+2);0<L&&0<g;)g--,y=c.__digit(g),U|=30<=L?y<<L-30:y>>>30-L,L-=30;var H=k.__decideRounding(c,L,g,y);if((H===1||H===0&&(1&U)==1)&&(U=U+1>>>0,U===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]=U,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 _=1+(0|f/30),h=c.sign&&(1&f)!=0,p=new k(_,h);p.__initializeDigits();var w=1<<f%30;return p.__setDigit(_-1,w),p}var y=null,g=c;for(1&f&&(y=c),f>>=1;f!==0;f>>=1)g=k.multiply(g,g),1&f&&(y===null?y=g:y=k.multiply(y,g));return y}},{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 _=new k(f,c.sign!==d.sign);_.__initializeDigits();for(var h=0;h<c.length;h++)k.__multiplyAccumulate(d,c.__digit(h),_,h);return _.__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,_=c.sign!==d.sign,h=d.__unsignedDigit(0);if(d.length===1&&32767>=h){if(h===1)return _===c.sign?c:k.unaryMinus(c);f=k.__absoluteDivSmall(c,h,null)}else f=k.__absoluteDivLarge(c,d,!0,!1);return f.sign=_,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 _=f.__unsignedDigit(0);if(f.length===1&&32767>=_){if(_===1)return k.__zero();var h=k.__absoluteModSmall(d,_);return h===0?k.__zero():k.__oneDigit(h,d.sign)}var p=k.__absoluteDivLarge(d,f,!1,!0);return p.sign=d.sign,p.__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=x(c.length,d.length)+1,_=k.__absoluteSubOne(c,f),h=k.__absoluteSubOne(d);return _=k.__absoluteOr(_,h,_),k.__absoluteAddOne(_,!0,_).__trim()}if(c.sign){var p=[d,c];c=p[0],d=p[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=x(c.length,d.length),_=k.__absoluteSubOne(c,f),h=k.__absoluteSubOne(d);return k.__absoluteXor(_,h,_).__trim()}var p=x(c.length,d.length)+1;if(c.sign){var w=[d,c];c=w[0],d=w[1]}var y=k.__absoluteSubOne(d,p);return y=k.__absoluteXor(y,c,y),k.__absoluteAddOne(y,!0,y).__trim()}},{key:"bitwiseOr",value:function(c,d){var f=x(c.length,d.length);if(!c.sign&&!d.sign)return k.__absoluteOr(c,d).__trim();if(c.sign&&d.sign){var _=k.__absoluteSubOne(c,f),h=k.__absoluteSubOne(d);return _=k.__absoluteAnd(_,h,_),k.__absoluteAddOne(_,!0,_).__trim()}if(c.sign){var p=[d,c];c=p[0],d=p[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=j(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 _=d.__unsignedDigit(f-1),h=1<<(c-1)%30;if(d.length===f&&_<h)return d;if((_&h)!==h)return k.__truncateToNBits(c,d);if(!d.sign)return k.__truncateAndSubFromPowerOfTwo(c,d,!0);if(!(_&h-1)){for(var p=f-2;0<=p;p--)if(d.__digit(p)!==0)return k.__truncateAndSubFromPowerOfTwo(c,d,!1);return d.length===f&&_===h?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=j(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 _=c%30;if(d.length==f){if(_===0)return d;var h=d.__digit(f-1);if(!(h>>>_))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(n(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(n(d)!=="object")return c==d;d=k.__toPrimitive(d)}else if(typeof c=="boolean"){if(k.__isBigInt(d))return k.__equalToNumber(d,+c);if(n(d)!=="object")return c==d;d=k.__toPrimitive(d)}else if(n(c)==="symbol"){if(k.__isBigInt(d))return!1;if(n(d)!=="object")return c==d;d=k.__toPrimitive(d)}else if(n(c)==="object"){if(n(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],_=f?[4,0]:[0,4],h=M(_,2),p=h[0],w=h[1],y=c.getUint32(d+p,f),g=c.getUint32(d+w,f),C=new k(3,!1);return C.__setDigit(0,1073741823&g),C.__setDigit(1,(268435455&y)<<2|g>>>30),C.__setDigit(2,y>>>28),C.__trim()}},{key:"DataViewSetBigInt64",value:function(c,d,f){var _=3<arguments.length&&arguments[3]!==void 0&&arguments[3];k.DataViewSetBigUint64(c,d,f,_)}},{key:"DataViewSetBigUint64",value:function(c,d,f){var _=3<arguments.length&&arguments[3]!==void 0&&arguments[3];f=k.asUintN(64,f);var h=0,p=0;if(0<f.length&&(p=f.__digit(0),1<f.length)){var w=f.__digit(1);p|=w<<30,h=w>>>2,2<f.length&&(h|=f.__digit(2)<<28)}var y=_?[4,0]:[0,4],g=M(y,2),C=g[0],N=g[1];c.setUint32(d+C,h,_),c.setUint32(d+N,p,_)}},{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,_){if(0<d)return-1;var h;if(0>d)h=-d-1;else{if(f===0)return-1;f--,_=c.__digit(f),h=29}var p=1<<h;if(!(_&p))return-1;if(p-=1,(_&p)!=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,_=f-1023,h=(0|_/30)+1,p=new k(h,0>c),w=1048575&k.__kBitConversionInts[1]|1048576,y=k.__kBitConversionInts[0],g=20,C=_%30,N=0;if(C<g){var F=g-C;N=F+32,d=w>>>F,w=w<<32-F|y>>>F,y<<=32-F}else if(C===g)N=32,d=w,w=y,y=0;else{var U=C-g;N=32-U,d=w<<U|y>>>32-U,w=y<<U,y=0}p.__setDigit(h-1,d);for(var L=h-2;0<=L;L--)0<N?(N-=30,d=w>>>2,w=w<<30|y>>>2,y<<=30):d=0,p.__setDigit(L,d);return p.__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,_=c.length,h=0;if(h===_)return k.__zero();for(var p=c.charCodeAt(h);k.__isWhitespace(p);){if(++h===_)return k.__zero();p=c.charCodeAt(h)}if(p===43){if(++h===_)return null;p=c.charCodeAt(h),f=1}else if(p===45){if(++h===_)return null;p=c.charCodeAt(h),f=-1}if(d===0){if(d=10,p===48){if(++h===_)return k.__zero();if(p=c.charCodeAt(h),p===88||p===120){if(d=16,++h===_)return null;p=c.charCodeAt(h)}else if(p===79||p===111){if(d=8,++h===_)return null;p=c.charCodeAt(h)}else if(p===66||p===98){if(d=2,++h===_)return null;p=c.charCodeAt(h)}}}else if(d===16&&p===48){if(++h===_)return k.__zero();if(p=c.charCodeAt(h),p===88||p===120){if(++h===_)return null;p=c.charCodeAt(h)}}if(f!==0&&d!==10)return null;for(;p===48;){if(++h===_)return k.__zero();p=c.charCodeAt(h)}var w=_-h,y=k.__kMaxBitsPerChar[d],g=k.__kBitsPerCharTableMultiplier-1;if(w>1073741824/y)return null;var C=y*w+g>>>k.__kBitsPerCharTableShift,N=new k(0|(C+29)/30,!1),F=10>d?d:10,U=10<d?d-10:0;if(d&d-1){N.__initializeDigits();var Ae=!1,_e=0;do{for(var he,kr=0,Le=1;;){if(he=void 0,p-48>>>0<F)he=p-48;else if((32|p)-97>>>0<U)he=(32|p)-87;else{Ae=!0;break}var Ue=Le*d;if(1073741823<Ue)break;if(Le=Ue,kr=kr*d+he,_e++,++h===_){Ae=!0;break}p=c.charCodeAt(h)}g=30*k.__kBitsPerCharTableMultiplier-1;var Ks=0|(y*_e+g>>>k.__kBitsPerCharTableShift)/30;N.__inplaceMultiplyAdd(Le,kr,Ks)}while(!Ae)}else{y>>=k.__kBitsPerCharTableShift;var L=[],H=[],ee=!1;do{for(var ge,ie=0,me=0;;){if(ge=void 0,p-48>>>0<F)ge=p-48;else if((32|p)-97>>>0<U)ge=(32|p)-87;else{ee=!0;break}if(me+=y,ie=ie<<y|ge,++h===_){ee=!0;break}if(p=c.charCodeAt(h),30<me+y)break}L.push(ie),H.push(me)}while(!ee);k.__fillFromParts(N,L,H)}if(h!==_){if(!k.__isWhitespace(p))return null;for(h++;h<_;h++)if(p=c.charCodeAt(h),!k.__isWhitespace(p))return null}return N.sign=f===-1,N.__trim()}},{key:"__fillFromParts",value:function(c,d,f){for(var _=0,h=0,p=0,w=d.length-1;0<=w;w--){var y=d[w],g=f[w];h|=y<<p,p+=g,p===30?(c.__setDigit(_++,h),p=0,h=0):30<p&&(c.__setDigit(_++,1073741823&h),p-=30,h=y>>>g-p)}if(h!==0){if(_>=c.length)throw new Error("implementation bug");c.__setDigit(_++,h)}for(;_<c.length;_++)c.__setDigit(_,0)}},{key:"__toStringBasePowerOfTwo",value:function(c,d){var f=c.length,_=d-1;_=(85&_>>>1)+(85&_),_=(51&_>>>2)+(51&_),_=(15&_>>>4)+(15&_);var h=_,p=d-1,w=c.__digit(f-1),y=k.__clz30(w),g=0|(30*f-y+h-1)/h;if(c.sign&&g++,268435456<g)throw new Error("string too long");for(var C=Array(g),N=g-1,F=0,U=0,L=0;L<f-1;L++){var H=c.__digit(L),ee=(F|H<<U)&p;C[N--]=k.__kConversionChars[ee];var ge=h-U;for(F=H>>>ge,U=30-ge;U>=h;)C[N--]=k.__kConversionChars[F&p],F>>>=h,U-=h}var ie=(F|w<<U)&p;for(C[N--]=k.__kConversionChars[ie],F=w>>>h-U;F!==0;)C[N--]=k.__kConversionChars[F&p],F>>>=h;if(c.sign&&(C[N--]="-"),N!==-1)throw new Error("implementation bug");return C.join("")}},{key:"__toStringGeneric",value:function(c,d,f){var _=c.length;if(_===0)return"";if(_===1){var h=c.__unsignedDigit(0).toString(d);return f===!1&&c.sign&&(h="-"+h),h}var p=30*_-k.__clz30(c.__digit(_-1)),w=k.__kMaxBitsPerChar[d],y=w-1,g=p*k.__kBitsPerCharTableMultiplier;g+=y-1,g=0|g/y;var C,N,F=g+1>>1,U=k.exponentiate(k.__oneDigit(d,!1),k.__oneDigit(F,!1)),L=U.__unsignedDigit(0);if(U.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 ie=k.__absoluteDivLarge(c,U,!0,!0);C=ie.quotient;var me=ie.remainder.__trim();N=k.__toStringGeneric(me,d,!0)}C.__trim();for(var Ae=k.__toStringGeneric(C,d,!0);N.length<F;)N="0"+N;return f===!1&&c.sign&&(Ae="-"+Ae),Ae+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 _=k.__absoluteCompare(c,d);return 0<_?k.__absoluteGreater(f):0>_?k.__absoluteLess(f):0}},{key:"__compareToNumber",value:function(c,d){if(k.__isOneDigitInt(d)){var f=c.sign,_=0>d;if(f!==_)return k.__unequalSign(f);if(c.length===0){if(_)throw new Error("implementation bug");return d===0?0:-1}if(1<c.length)return k.__absoluteGreater(f);var h=I(d),p=c.__unsignedDigit(0);return p>h?k.__absoluteGreater(f):p<h?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 _=2047&k.__kBitConversionInts[1]>>>20;if(_==2047)throw new Error("implementation bug: handled elsewhere");var h=_-1023;if(0>h)return k.__absoluteGreater(f);var p=c.length,w=c.__digit(p-1),y=k.__clz30(w),g=30*p-y,C=h+1;if(g<C)return k.__absoluteLess(f);if(g>C)return k.__absoluteGreater(f);var N=1048576|1048575&k.__kBitConversionInts[1],F=k.__kBitConversionInts[0],U=20,L=29-y;if(L!==(0|(g-1)%30))throw new Error("implementation bug");var H,ee=0;if(L<U){var ge=U-L;ee=ge+32,H=N>>>ge,N=N<<32-ge|F>>>ge,F<<=32-ge}else if(L===U)ee=32,H=N,N=F,F=0;else{var ie=L-U;ee=32-ie,H=N<<ie|F>>>32-ie,N=F<<ie,F=0}if(w>>>=0,H>>>=0,w>H)return k.__absoluteGreater(f);if(w<H)return k.__absoluteLess(f);for(var me=p-2;0<=me;me--){0<ee?(ee-=30,H=N>>>2,N=N<<30|F>>>2,F<<=30):H=0;var Ae=c.__unsignedDigit(me);if(Ae>H)return k.__absoluteGreater(f);if(Ae<H)return k.__absoluteLess(f)}if(N!==0||F!==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 _=c.length;(c.__clzmsd()===0||d.length===c.length&&d.__clzmsd()===0)&&_++;for(var h,p=new k(_,f),w=0,y=0;y<d.length;y++)h=c.__digit(y)+d.__digit(y)+w,w=h>>>30,p.__setDigit(y,1073741823&h);for(;y<c.length;y++){var g=c.__digit(y)+w;w=g>>>30,p.__setDigit(y,1073741823&g)}return y<p.length&&p.__setDigit(y,w),p.__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 _,h=new k(c.length,f),p=0,w=0;w<d.length;w++)_=c.__digit(w)-d.__digit(w)-p,p=1&_>>>30,h.__setDigit(w,1073741823&_);for(;w<c.length;w++){var y=c.__digit(w)-p;p=1&y>>>30,h.__setDigit(w,1073741823&y)}return h.__trim()}},{key:"__absoluteAddOne",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,_=c.length;f===null?f=new k(_,d):f.sign=d;for(var h,p=1,w=0;w<_;w++)h=c.__digit(w)+p,p=h>>>30,f.__setDigit(w,1073741823&h);return p!==0&&f.__setDigitGrow(_,1),f}},{key:"__absoluteSubOne",value:function(c,d){var f=c.length;d=d||f;for(var _,h=new k(d,!1),p=1,w=0;w<f;w++)_=c.__digit(w)-p,p=1&_>>>30,h.__setDigit(w,1073741823&_);if(p!==0)throw new Error("implementation bug");for(var y=f;y<d;y++)h.__setDigit(y,0);return h}},{key:"__absoluteAnd",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,_=c.length,h=d.length,p=h;if(_<h){p=_;var w=c,y=_;c=d,_=h,d=w,h=y}var g=p;f===null?f=new k(g,!1):g=f.length;for(var C=0;C<p;C++)f.__setDigit(C,c.__digit(C)&d.__digit(C));for(;C<g;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,_=c.length,h=d.length,p=h;_<h&&(p=_);var w=_;f===null?f=new k(w,!1):w=f.length;for(var y=0;y<p;y++)f.__setDigit(y,c.__digit(y)&~d.__digit(y));for(;y<_;y++)f.__setDigit(y,c.__digit(y));for(;y<w;y++)f.__setDigit(y,0);return f}},{key:"__absoluteOr",value:function(c,d){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,_=c.length,h=d.length,p=h;if(_<h){p=_;var w=c,y=_;c=d,_=h,d=w,h=y}var g=_;f===null?f=new k(g,!1):g=f.length;for(var C=0;C<p;C++)f.__setDigit(C,c.__digit(C)|d.__digit(C));for(;C<_;C++)f.__setDigit(C,c.__digit(C));for(;C<g;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,_=c.length,h=d.length,p=h;if(_<h){p=_;var w=c,y=_;c=d,_=h,d=w,h=y}var g=_;f===null?f=new k(g,!1):g=f.length;for(var C=0;C<p;C++)f.__setDigit(C,c.__digit(C)^d.__digit(C));for(;C<_;C++)f.__setDigit(C,c.__digit(C));for(;C<g;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 _=c.length-1;0<=_&&c.__digit(_)===d.__digit(_);)_--;return 0>_?0:c.__unsignedDigit(_)>d.__unsignedDigit(_)?1:-1}},{key:"__multiplyAccumulate",value:function(c,d,f,_){if(d!==0){for(var h=32767&d,p=d>>>15,w=0,y=0,g=0;g<c.length;g++,_++){var C=f.__digit(_),N=c.__digit(g),F=32767&N,U=N>>>15,L=k.__imul(F,h),H=k.__imul(F,p),ee=k.__imul(U,h),ge=k.__imul(U,p);C+=y+L+w,w=C>>>30,C&=1073741823,C+=((32767&H)<<15)+((32767&ee)<<15),w+=C>>>30,y=ge+(H>>>15)+(ee>>>15),f.__setDigit(_,1073741823&C)}for(;w!==0||y!==0;_++){var ie=f.__digit(_);ie+=w+y,y=0,w=ie>>>30,f.__setDigit(_,1073741823&ie)}}}},{key:"__internalMultiplyAdd",value:function(c,d,f,_,h){for(var p=f,w=0,y=0;y<_;y++){var g=c.__digit(y),C=k.__imul(32767&g,d),N=k.__imul(g>>>15,d),F=C+((32767&N)<<15)+w+p;p=F>>>30,w=N>>>15,h.__setDigit(y,1073741823&F)}if(h.length>_)for(h.__setDigit(_++,p+w);_<h.length;)h.__setDigit(_++,0);else if(p+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 _=0,h=2*c.length-1;0<=h;h-=2){var p=(_<<15|c.__halfDigit(h))>>>0,w=0|p/d;_=0|p%d,p=(_<<15|c.__halfDigit(h-1))>>>0;var y=0|p/d;_=0|p%d,f.__setDigit(h>>>1,w<<15|y)}return f}},{key:"__absoluteModSmall",value:function(c,d){for(var f,_=0,h=2*c.length-1;0<=h;h--)f=(_<<15|c.__halfDigit(h))>>>0,_=0|f%d;return _}},{key:"__absoluteDivLarge",value:function(c,d,f,_){var h=d.__halfDigitLength(),p=d.length,w=c.__halfDigitLength()-h,y=null;f&&(y=new k(w+2>>>1,!1),y.__initializeDigits());var g=new k(h+2>>>1,!1);g.__initializeDigits();var C=k.__clz15(d.__halfDigit(h-1));0<C&&(d=k.__specialLeftShift(d,C,0));for(var N=k.__specialLeftShift(c,C,1),F=d.__halfDigit(h-1),U=0,L=w;0<=L;L--){var H=32767,ee=N.__halfDigit(L+h);if(ee!==F){var ge=(ee<<15|N.__halfDigit(L+h-1))>>>0;H=0|ge/F;for(var ie=0|ge%F,me=d.__halfDigit(h-2),Ae=N.__halfDigit(L+h-2);k.__imul(H,me)>>>0>(ie<<16|Ae)>>>0&&(H--,ie+=F,!(32767<ie)););}k.__internalMultiplyAdd(d,H,0,p,g);var _e=N.__inplaceSub(g,L,h+1);_e!==0&&(_e=N.__inplaceAdd(d,L,h),N.__setHalfDigit(L+h,32767&N.__halfDigit(L+h)+_e),H--),f&&(1&L?U=H<<15:y.__setDigit(L>>>1,U|H))}if(_)return N.__inplaceRightShift(C),f?{quotient:y,remainder:N}:N;if(f)return y;throw new Error("unreachable")}},{key:"__clz15",value:function(c){return k.__clz30(c)-15}},{key:"__specialLeftShift",value:function(c,d,f){var _=c.length,h=new k(_+f,!1);if(d===0){for(var p=0;p<_;p++)h.__setDigit(p,c.__digit(p));return 0<f&&h.__setDigit(_,0),h}for(var w,y=0,g=0;g<_;g++)w=c.__digit(g),h.__setDigit(g,1073741823&w<<d|y),y=w>>>30-d;return 0<f&&h.__setDigit(_,y),h}},{key:"__leftShiftByAbsolute",value:function(c,d){var f=k.__toShiftAmount(d);if(0>f)throw new RangeError("BigInt too big");var _=0|f/30,h=f%30,p=c.length,w=h!==0&&c.__digit(p-1)>>>30-h!=0,y=p+_+(w?1:0),g=new k(y,c.sign);if(h===0){for(var C=0;C<_;C++)g.__setDigit(C,0);for(;C<y;C++)g.__setDigit(C,c.__digit(C-_))}else{for(var N=0,F=0;F<_;F++)g.__setDigit(F,0);for(var U,L=0;L<p;L++)U=c.__digit(L),g.__setDigit(L+_,1073741823&U<<h|N),N=U>>>30-h;if(w)g.__setDigit(p+_,N);else if(N!==0)throw new Error("implementation bug")}return g.__trim()}},{key:"__rightShiftByAbsolute",value:function(c,d){var f=c.length,_=c.sign,h=k.__toShiftAmount(d);if(0>h)return k.__rightShiftByMaximum(_);var p=0|h/30,w=h%30,y=f-p;if(0>=y)return k.__rightShiftByMaximum(_);var g=!1;if(_){if(c.__digit(p)&(1<<w)-1)g=!0;else for(var C=0;C<p;C++)if(c.__digit(C)!==0){g=!0;break}}if(g&&w===0){var N=c.__digit(f-1);!~N&&y++}var F=new k(y,_);if(w===0){F.__setDigit(y-1,0);for(var U=p;U<f;U++)F.__setDigit(U-p,c.__digit(U))}else{for(var L,H=c.__digit(p)>>>w,ee=f-p-1,ge=0;ge<ee;ge++)L=c.__digit(ge+p+1),F.__setDigit(ge,1073741823&L<<30-w|H),H=L>>>w;F.__setDigit(ee,H)}return g&&(F=k.__absoluteAddOne(F,!0,F)),F.__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(n(c)!=="object"||c.constructor===k)return c;if(typeof Symbol<"u"&&n(Symbol.toPrimitive)==="symbol"){var f=c[Symbol.toPrimitive];if(f){var _=f(d);if(n(_)!=="object")return _;throw new TypeError("Cannot convert object to primitive value")}}var h=c.valueOf;if(h){var p=h.call(c);if(n(p)!=="object")return p}var w=c.toString;if(w){var y=w.call(c);if(n(y)!=="object")return y}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 n(c)==="object"&&c!==null&&c.constructor===k}},{key:"__truncateToNBits",value:function(c,d){for(var f=0|(c+29)/30,_=new k(f,d.sign),h=f-1,p=0;p<h;p++)_.__setDigit(p,d.__digit(p));var w=d.__digit(h);if(c%30!=0){var y=32-c%30;w=w<<y>>>y}return _.__setDigit(h,w),_.__trim()}},{key:"__truncateAndSubFromPowerOfTwo",value:function(c,d,f){for(var _=Math.min,h,p=0|(c+29)/30,w=new k(p,f),y=0,g=p-1,C=0,N=_(g,d.length);y<N;y++)h=0-d.__digit(y)-C,C=1&h>>>30,w.__setDigit(y,1073741823&h);for(;y<g;y++)w.__setDigit(y,0|1073741823&-C);var F,U=g<d.length?d.__digit(g):0,L=c%30;if(L===0)F=0-U-C,F&=1073741823;else{var H=32-L;U=U<<H>>>H;var ee=1<<32-H;F=ee-U-C,F&=ee-1}return w.__setDigit(g,F),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 Z.__kMaxLength=33554432,Z.__kMaxLengthBits=Z.__kMaxLength<<5,Z.__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],Z.__kBitsPerCharTableShift=5,Z.__kBitsPerCharTableMultiplier=1<<Z.__kBitsPerCharTableShift,Z.__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"],Z.__kBitConversionBuffer=new ArrayBuffer(8),Z.__kBitConversionDouble=new Float64Array(Z.__kBitConversionBuffer),Z.__kBitConversionInts=new Int32Array(Z.__kBitConversionBuffer),Z.__clz30=e?function(A){return e(A)-2}:function(A){var I=Math.LN2,x=Math.log;return A===0?30:0|29-(0|x(A>>>0)/I)},Z.__imul=t||function(A,I){return 0|A*I},Z})});var kx={};Sf(kx,{AddressBookSDK:()=>Tr,COIN_TYPE_ARG_REGEX:()=>Yd,Coin:()=>qs,CoinHelper:()=>Rs,CreateHelper:()=>Cr,DEV_API_URL:()=>Yy,DEV_SYNCING_URL:()=>Qy,ENV_CONFIGS:()=>nw,Formatter:()=>_i,HexToUint8Array:()=>Rc,LOCAL_API_URL:()=>cf,LOCAL_SYNCING_URL:()=>uf,MAINNET_RPC_URL:()=>af,MSafeAccount:()=>vr,MSafeClient:()=>Hc,MSafeEnv:()=>Jy,MSafeGlobals:()=>$s,PREV_API_URL:()=>ew,PROD_API_URL:()=>tw,SUI_COIN:()=>wx,SignatureVerifier:()=>ef,TESTNET_RPC_URL:()=>Wc,Uint8ArrayToHex:()=>yx,addPrefix:()=>Qd,getAllCoins:()=>vx,getMSafeConfig:()=>lf,getPublicKeyFromChain:()=>tf,stringToBuffer:()=>Fc});module.exports=xf(kx);var Qn=require("@msafe/sui3-utils"),Cr=class{constructor(e,n){this.globals=e;this.pkHelper=n}async getPublicKeyBatch(e){return this.pkHelper.getPublicKeyBatch(e)}async calculateMSafeAddress(e){let n=await this.reduceCreationInfoToRawConfig(e);return new Qn.MultiSigAccount(n).address}async validateCreateInfo(e){return this.calculateMSafeAddress(e)}addPublicKey(e,n){let i=Qn.PublicKeySerde.de(n);if(!(0,Qn.isSameAddress)(e,i.toSuiAddress()))throw new Error("Public key not match");this.pkHelper.addPublicKey(e,i)}async submitMSafeCreation(e){let n=await this.validateCreateInfo(e),i=Qn.SigningMessageHelper.createMSafeMessage(n),r=await this.globals.wallet.signPersonalMessage({messageStr:i});return await this.submitToBackend(e,r.signature),n}async reduceCreationInfoToRawConfig(e){let n=await this.getPublicKeyBatch(e.owners.map(i=>i.address));return n.forEach((i,r)=>{if(i===void 0)throw new Error(`Unknown public key for address: ${e.owners[r].address}`)}),{threshold:e.threshold,ownersWithWeight:e.owners.map((i,r)=>({publicKey:n[r],weight:i.weight})),creationNonce:e.creationNonce}}async submitToBackend(e,n){let i=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,...Qn.PublicKeySerde.ser(i[o])})),threshold:e.threshold,name:e.name,description:e.description,creationNonce:e.creationNonce,signature:n})}};var Xc=require("@msafe/sui3-utils");var If=require("@msafe/sui3-utils"),Tr=class{constructor(e){this.globals=e}async getEntries(e){return this.globals.backend.getAddressBookEntries(e)}async update(e){let n=If.SigningMessageHelper.updateAddressBookMessage(e),i=await this.globals.wallet.signPersonalMessage({messageStr:n});return this.globals.backend.updateAddressBook({updates:e,signature:i.signature})}async getMode(){return(await this.globals.backend.getAddressBookMode()).mode}async setMode(e){return this.globals.backend.setAddressBookMode({mode:e})}};var Vs=class{constructor(e){this.globals=e}async getMSafeByStatus(e,n){return this.globals.backend.getOwnedMSafeByStatus({status:e,pagination:n})}async updateMSafeStatus(e,n){return this.globals.backend.updateMSafeStatus({msafeAddress:e,status:n})}};var C_=require("@msafe/sui3-utils"),T_=be(Gs(),1);var xo=require("@mysten/sui.js/utils"),Dr=require("@mysten/sui.js/transactions"),gn=be(Se(),1);var yu=8192;function wu(t){if(t.length<yu)return btoa(String.fromCharCode(...t));let e="";for(var n=0;n<t.length;n+=yu){let i=t.slice(n,n+yu);e+=String.fromCharCode(...i)}return btoa(e)}var Fb=require("@mysten/sui.js/keypairs/ed25519"),Rb=require("@mysten/sui.js/keypairs/secp256k1"),ki=be(Se(),1),Tt=be(Se(),1);var Sr=9e15,vi=1e9,bu="0123456789abcdef",Hs="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Xs="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",vu={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Sr,maxE:Sr,crypto:!1},zf,ei,pe=!0,Js="[DecimalError] ",bi=Js+"Invalid argument: ",Vf=Js+"Precision limit exceeded",Gf=Js+"crypto unavailable",Wf="[object Decimal]",Kt=Math.floor,At=Math.pow,vw=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,kw=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Cw=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Hf=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,On=1e7,de=7,Tw=9007199254740991,Sw=Hs.length-1,ku=Xs.length-1,V={toStringTag:Wf};V.absoluteValue=V.abs=function(){var t=new this.constructor(this);return t.s<0&&(t.s=1),se(t)};V.ceil=function(){return se(new this.constructor(this),this.e+1,2)};V.clampedTo=V.clamp=function(t,e){var n,i=this,r=i.constructor;if(t=new r(t),e=new r(e),!t.s||!e.s)return new r(NaN);if(t.gt(e))throw Error(bi+e);return n=i.cmp(t),n<0?t:i.cmp(e)>0?e:new r(i)};V.comparedTo=V.cmp=function(t){var e,n,i,r,o=this,s=o.d,a=(t=new o.constructor(t)).d,u=o.s,l=t.s;if(!s||!a)return!u||!l?NaN:u!==l?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-l:0;if(u!==l)return u;if(o.e!==t.e)return o.e>t.e^u<0?1:-1;for(i=s.length,r=a.length,e=0,n=i<r?i:r;e<n;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return i===r?0:i>r^u<0?1:-1};V.cosine=V.cos=function(){var t,e,n=this,i=n.constructor;return n.d?n.d[0]?(t=i.precision,e=i.rounding,i.precision=t+Math.max(n.e,n.sd())+de,i.rounding=1,n=Aw(i,Qf(i,n)),i.precision=t,i.rounding=e,se(ei==2||ei==3?n.neg():n,t,e,!0)):new i(1):new i(NaN)};V.cubeRoot=V.cbrt=function(){var t,e,n,i,r,o,s,a,u,l,m=this,b=m.constructor;if(!m.isFinite()||m.isZero())return new b(m);for(pe=!1,o=m.s*At(m.s*m,1/3),!o||Math.abs(o)==1/0?(n=jt(m.d),t=m.e,(o=(t-n.length+1)%3)&&(n+=o==1||o==-2?"0":"00"),o=At(n,1/3),t=Kt((t+1)/3)-(t%3==(t<0?-1:2)),o==1/0?n="5e"+t:(n=o.toExponential(),n=n.slice(0,n.indexOf("e")+1)+t),i=new b(n),i.s=m.s):i=new b(o.toString()),s=(t=b.precision)+3;;)if(a=i,u=a.times(a).times(a),l=u.plus(m),i=Fe(l.plus(m).times(a),l.plus(u),s+2,1),jt(a.d).slice(0,s)===(n=jt(i.d)).slice(0,s))if(n=n.slice(s-3,s+1),n=="9999"||!r&&n=="4999"){if(!r&&(se(a,t+1,0),a.times(a).times(a).eq(m))){i=a;break}s+=4,r=1}else{(!+n||!+n.slice(1)&&n.charAt(0)=="5")&&(se(i,t+1,1),e=!i.times(i).times(i).eq(m));break}return pe=!0,se(i,t,b.rounding,e)};V.decimalPlaces=V.dp=function(){var t,e=this.d,n=NaN;if(e){if(t=e.length-1,n=(t-Kt(this.e/de))*de,t=e[t],t)for(;t%10==0;t/=10)n--;n<0&&(n=0)}return n};V.dividedBy=V.div=function(t){return Fe(this,new this.constructor(t))};V.dividedToIntegerBy=V.divToInt=function(t){var e=this,n=e.constructor;return se(Fe(e,new n(t),0,1,1),n.precision,n.rounding)};V.equals=V.eq=function(t){return this.cmp(t)===0};V.floor=function(){return se(new this.constructor(this),this.e+1,3)};V.greaterThan=V.gt=function(t){return this.cmp(t)>0};V.greaterThanOrEqualTo=V.gte=function(t){var e=this.cmp(t);return e==1||e===0};V.hyperbolicCosine=V.cosh=function(){var t,e,n,i,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;n=s.precision,i=s.rounding,s.precision=n+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(t=Math.ceil(r/3),e=(1/Qs(4,t)).toString()):(t=16,e="2.3283064365386962890625e-10"),o=Ar(s,1,o.times(e),new s(1),!0);for(var u,l=t,m=new s(8);l--;)u=o.times(o),o=a.minus(u.times(m.minus(u.times(m))));return se(o,s.precision=n,s.rounding=i,!0)};V.hyperbolicSine=V.sinh=function(){var t,e,n,i,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,n=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,i=r.d.length,i<3)r=Ar(o,2,r,r,!0);else{t=1.4*Math.sqrt(i),t=t>16?16:t|0,r=r.times(1/Qs(5,t)),r=Ar(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),l=new o(20);t--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(l))))}return o.precision=e,o.rounding=n,se(r,e,n,!0)};V.hyperbolicTangent=V.tanh=function(){var t,e,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(t=i.precision,e=i.rounding,i.precision=t+7,i.rounding=1,Fe(n.sinh(),n.cosh(),i.precision=t,i.rounding=e)):new i(n.s)};V.inverseCosine=V.acos=function(){var t,e=this,n=e.constructor,i=e.abs().cmp(1),r=n.precision,o=n.rounding;return i!==-1?i===0?e.isNeg()?In(n,r,o):new n(0):new n(NaN):e.isZero()?In(n,r+4,o).times(.5):(n.precision=r+6,n.rounding=1,e=e.asin(),t=In(n,r+4,o).times(.5),n.precision=r,n.rounding=o,t.minus(e))};V.inverseHyperbolicCosine=V.acosh=function(){var t,e,n=this,i=n.constructor;return n.lte(1)?new i(n.eq(1)?0:NaN):n.isFinite()?(t=i.precision,e=i.rounding,i.precision=t+Math.max(Math.abs(n.e),n.sd())+4,i.rounding=1,pe=!1,n=n.times(n).minus(1).sqrt().plus(n),pe=!0,i.precision=t,i.rounding=e,n.ln()):new i(n)};V.inverseHyperbolicSine=V.asinh=function(){var t,e,n=this,i=n.constructor;return!n.isFinite()||n.isZero()?new i(n):(t=i.precision,e=i.rounding,i.precision=t+2*Math.max(Math.abs(n.e),n.sd())+6,i.rounding=1,pe=!1,n=n.times(n).plus(1).sqrt().plus(n),pe=!0,i.precision=t,i.rounding=e,n.ln())};V.inverseHyperbolicTangent=V.atanh=function(){var t,e,n,i,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,i=r.sd(),Math.max(i,t)<2*-r.e-1?se(new o(r),t,e,!0):(o.precision=n=i-r.e,r=Fe(r.plus(1),new o(1).minus(r),n+t,1),o.precision=t+4,o.rounding=1,r=r.ln(),o.precision=t,o.rounding=e,r.times(.5))):new o(NaN)};V.inverseSine=V.asin=function(){var t,e,n,i,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),n=o.precision,i=o.rounding,e!==-1?e===0?(t=In(o,n+4,i).times(.5),t.s=r.s,t):new o(NaN):(o.precision=n+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=n,o.rounding=i,r.times(2)))};V.inverseTangent=V.atan=function(){var t,e,n,i,r,o,s,a,u,l=this,m=l.constructor,b=m.precision,v=m.rounding;if(l.isFinite()){if(l.isZero())return new m(l);if(l.abs().eq(1)&&b+4<=ku)return s=In(m,b+4,v).times(.25),s.s=l.s,s}else{if(!l.s)return new m(NaN);if(b+4<=ku)return s=In(m,b+4,v).times(.5),s.s=l.s,s}for(m.precision=a=b+10,m.rounding=1,n=Math.min(28,a/de+2|0),t=n;t;--t)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(pe=!1,e=Math.ceil(a/de),i=1,u=l.times(l),s=new m(l),r=l;t!==-1;)if(r=r.times(u),o=s.minus(r.div(i+=2)),r=r.times(u),s=o.plus(r.div(i+=2)),s.d[e]!==void 0)for(t=e;s.d[t]===o.d[t]&&t--;);return n&&(s=s.times(2<<n-1)),pe=!0,se(s,m.precision=b,m.rounding=v,!0)};V.isFinite=function(){return!!this.d};V.isInteger=V.isInt=function(){return!!this.d&&Kt(this.e/de)>this.d.length-2};V.isNaN=function(){return!this.s};V.isNegative=V.isNeg=function(){return this.s<0};V.isPositive=V.isPos=function(){return this.s>0};V.isZero=function(){return!!this.d&&this.d[0]===0};V.lessThan=V.lt=function(t){return this.cmp(t)<0};V.lessThanOrEqualTo=V.lte=function(t){return this.cmp(t)<1};V.logarithm=V.log=function(t){var e,n,i,r,o,s,a,u,l=this,m=l.constructor,b=m.precision,v=m.rounding,T=5;if(t==null)t=new m(10),e=!0;else{if(t=new m(t),n=t.d,t.s<0||!n||!n[0]||t.eq(1))return new m(NaN);e=t.eq(10)}if(n=l.d,l.s<0||!n||!n[0]||l.eq(1))return new m(n&&!n[0]?-1/0:l.s!=1?NaN:n?0:1/0);if(e)if(n.length>1)o=!0;else{for(r=n[0];r%10===0;)r/=10;o=r!==1}if(pe=!1,a=b+T,s=wi(l,a),i=e?Zs(m,a+10):wi(t,a),u=Fe(s,i,a,1),To(u.d,r=b,v))do if(a+=10,s=wi(l,a),i=e?Zs(m,a+10):wi(t,a),u=Fe(s,i,a,1),!o){+jt(u.d).slice(r+1,r+15)+1==1e14&&(u=se(u,b+1,0));break}while(To(u.d,r+=10,v));return pe=!0,se(u,b,v)};V.minus=V.sub=function(t){var e,n,i,r,o,s,a,u,l,m,b,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(l=T.d,v=t.d,a=O.precision,u=O.rounding,!l[0]||!v[0]){if(v[0])t.s=-t.s;else if(l[0])t=new O(T);else return new O(u===3?-0:0);return pe?se(t,a,u):t}if(n=Kt(t.e/de),m=Kt(T.e/de),l=l.slice(),o=m-n,o){for(b=o<0,b?(e=l,o=-o,s=v.length):(e=v,n=m,s=l.length),i=Math.max(Math.ceil(a/de),s)+2,o>i&&(o=i,e.length=1),e.reverse(),i=o;i--;)e.push(0);e.reverse()}else{for(i=l.length,s=v.length,b=i<s,b&&(s=i),i=0;i<s;i++)if(l[i]!=v[i]){b=l[i]<v[i];break}o=0}for(b&&(e=l,l=v,v=e,t.s=-t.s),s=l.length,i=v.length-s;i>0;--i)l[s++]=0;for(i=v.length;i>o;){if(l[--i]<v[i]){for(r=i;r&&l[--r]===0;)l[r]=On-1;--l[r],l[i]+=On}l[i]-=v[i]}for(;l[--s]===0;)l.pop();for(;l[0]===0;l.shift())--n;return l[0]?(t.d=l,t.e=Ys(l,n),pe?se(t,a,u):t):new O(u===3?-0:0)};V.modulo=V.mod=function(t){var e,n=this,i=n.constructor;return t=new i(t),!n.d||!t.s||t.d&&!t.d[0]?new i(NaN):!t.d||n.d&&!n.d[0]?se(new i(n),i.precision,i.rounding):(pe=!1,i.modulo==9?(e=Fe(n,t.abs(),0,3,1),e.s*=t.s):e=Fe(n,t,0,i.modulo,1),e=e.times(t),pe=!0,n.minus(e))};V.naturalExponential=V.exp=function(){return Cu(this)};V.naturalLogarithm=V.ln=function(){return wi(this)};V.negated=V.neg=function(){var t=new this.constructor(this);return t.s=-t.s,se(t)};V.plus=V.add=function(t){var e,n,i,r,o,s,a,u,l,m,b=this,v=b.constructor;if(t=new v(t),!b.d||!t.d)return!b.s||!t.s?t=new v(NaN):b.d||(t=new v(t.d||b.s===t.s?b:NaN)),t;if(b.s!=t.s)return t.s=-t.s,b.minus(t);if(l=b.d,m=t.d,a=v.precision,u=v.rounding,!l[0]||!m[0])return m[0]||(t=new v(b)),pe?se(t,a,u):t;if(o=Kt(b.e/de),i=Kt(t.e/de),l=l.slice(),r=o-i,r){for(r<0?(n=l,r=-r,s=m.length):(n=m,i=o,s=l.length),o=Math.ceil(a/de),s=o>s?o+1:s+1,r>s&&(r=s,n.length=1),n.reverse();r--;)n.push(0);n.reverse()}for(s=l.length,r=m.length,s-r<0&&(r=s,n=m,m=l,l=n),e=0;r;)e=(l[--r]=l[r]+m[r]+e)/On|0,l[r]%=On;for(e&&(l.unshift(e),++i),s=l.length;l[--s]==0;)l.pop();return t.d=l,t.e=Ys(l,i),pe?se(t,a,u):t};V.precision=V.sd=function(t){var e,n=this;if(t!==void 0&&t!==!!t&&t!==1&&t!==0)throw Error(bi+t);return n.d?(e=Xf(n.d),t&&n.e+1>e&&(e=n.e+1)):e=NaN,e};V.round=function(){var t=this,e=t.constructor;return se(new e(t),t.e+1,e.rounding)};V.sine=V.sin=function(){var t,e,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(t=i.precision,e=i.rounding,i.precision=t+Math.max(n.e,n.sd())+de,i.rounding=1,n=Iw(i,Qf(i,n)),i.precision=t,i.rounding=e,se(ei>2?n.neg():n,t,e,!0)):new i(NaN)};V.squareRoot=V.sqrt=function(){var t,e,n,i,r,o,s=this,a=s.d,u=s.e,l=s.s,m=s.constructor;if(l!==1||!a||!a[0])return new m(!l||l<0&&(!a||a[0])?NaN:a?s:1/0);for(pe=!1,l=Math.sqrt(+s),l==0||l==1/0?(e=jt(a),(e.length+u)%2==0&&(e+="0"),l=Math.sqrt(e),u=Kt((u+1)/2)-(u<0||u%2),l==1/0?e="5e"+u:(e=l.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),i=new m(e)):i=new m(l.toString()),n=(u=m.precision)+3;;)if(o=i,i=o.plus(Fe(s,o,n+2,1)).times(.5),jt(o.d).slice(0,n)===(e=jt(i.d)).slice(0,n))if(e=e.slice(n-3,n+1),e=="9999"||!r&&e=="4999"){if(!r&&(se(o,u+1,0),o.times(o).eq(s))){i=o;break}n+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(se(i,u+1,1),t=!i.times(i).eq(s));break}return pe=!0,se(i,u,m.rounding,t)};V.tangent=V.tan=function(){var t,e,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(t=i.precision,e=i.rounding,i.precision=t+10,i.rounding=1,n=n.sin(),n.s=1,n=Fe(n,new i(1).minus(n.times(n)).sqrt(),t+10,0),i.precision=t,i.rounding=e,se(ei==2||ei==4?n.neg():n,t,e,!0)):new i(NaN)};V.times=V.mul=function(t){var e,n,i,r,o,s,a,u,l,m=this,b=m.constructor,v=m.d,T=(t=new b(t)).d;if(t.s*=m.s,!v||!v[0]||!T||!T[0])return new b(!t.s||v&&!v[0]&&!T||T&&!T[0]&&!v?NaN:!v||!T?t.s/0:t.s*0);for(n=Kt(m.e/de)+Kt(t.e/de),u=v.length,l=T.length,u<l&&(o=v,v=T,T=o,s=u,u=l,l=s),o=[],s=u+l,i=s;i--;)o.push(0);for(i=l;--i>=0;){for(e=0,r=u+i;r>i;)a=o[r]+T[i]*v[r-i-1]+e,o[r--]=a%On|0,e=a/On|0;o[r]=(o[r]+e)%On|0}for(;!o[--s];)o.pop();return e?++n:o.shift(),t.d=o,t.e=Ys(o,n),pe?se(t,b.precision,b.rounding):t};V.toBinary=function(t,e){return Su(this,2,t,e)};V.toDecimalPlaces=V.toDP=function(t,e){var n=this,i=n.constructor;return n=new i(n),t===void 0?n:(Jt(t,0,vi),e===void 0?e=i.rounding:Jt(e,0,8),se(n,t+n.e+1,e))};V.toExponential=function(t,e){var n,i=this,r=i.constructor;return t===void 0?n=Un(i,!0):(Jt(t,0,vi),e===void 0?e=r.rounding:Jt(e,0,8),i=se(new r(i),t+1,e),n=Un(i,!0,t+1)),i.isNeg()&&!i.isZero()?"-"+n:n};V.toFixed=function(t,e){var n,i,r=this,o=r.constructor;return t===void 0?n=Un(r):(Jt(t,0,vi),e===void 0?e=o.rounding:Jt(e,0,8),i=se(new o(r),t+r.e+1,e),n=Un(i,!1,t+i.e+1)),r.isNeg()&&!r.isZero()?"-"+n:n};V.toFraction=function(t){var e,n,i,r,o,s,a,u,l,m,b,v,T=this,O=T.d,P=T.constructor;if(!O)return new P(T);if(l=n=new P(1),i=u=new P(0),e=new P(i),o=e.e=Xf(O)-T.e-1,s=o%de,e.d[0]=At(10,s<0?de+s:s),t==null)t=o>0?e:l;else{if(a=new P(t),!a.isInt()||a.lt(l))throw Error(bi+a);t=a.gt(e)?o>0?e:l:a}for(pe=!1,a=new P(jt(O)),m=P.precision,P.precision=o=O.length*de*2;b=Fe(a,e,0,1,1),r=n.plus(b.times(i)),r.cmp(t)!=1;)n=i,i=r,r=l,l=u.plus(b.times(r)),u=r,r=e,e=a.minus(b.times(r)),a=r;return r=Fe(t.minus(n),i,0,1,1),u=u.plus(r.times(l)),n=n.plus(r.times(i)),u.s=l.s=T.s,v=Fe(l,i,o,1).minus(T).abs().cmp(Fe(u,n,o,1).minus(T).abs())<1?[l,i]:[u,n],P.precision=m,pe=!0,v};V.toHexadecimal=V.toHex=function(t,e){return Su(this,16,t,e)};V.toNearest=function(t,e){var n=this,i=n.constructor;if(n=new i(n),t==null){if(!n.d)return n;t=new i(1),e=i.rounding}else{if(t=new i(t),e===void 0?e=i.rounding:Jt(e,0,8),!n.d)return t.s?n:t;if(!t.d)return t.s&&(t.s=n.s),t}return t.d[0]?(pe=!1,n=Fe(n,t,0,e,1).times(t),pe=!0,se(n)):(t.s=n.s,n=t),n};V.toNumber=function(){return+this};V.toOctal=function(t,e){return Su(this,8,t,e)};V.toPower=V.pow=function(t){var e,n,i,r,o,s,a=this,u=a.constructor,l=+(t=new u(t));if(!a.d||!t.d||!a.d[0]||!t.d[0])return new u(At(+a,l));if(a=new u(a),a.eq(1))return a;if(i=u.precision,o=u.rounding,t.eq(1))return se(a,i,o);if(e=Kt(t.e/de),e>=t.d.length-1&&(n=l<0?-l:l)<=Tw)return r=Zf(u,a,n,i),t.s<0?new u(1).div(r):se(r,i,o);if(s=a.s,s<0){if(e<t.d.length-1)return new u(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 n=At(+a,l),e=n==0||!isFinite(n)?Kt(l*(Math.log("0."+jt(a.d))/Math.LN10+a.e+1)):new u(n+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(pe=!1,u.rounding=a.s=1,n=Math.min(12,(e+"").length),r=Cu(t.times(wi(a,i+n)),i),r.d&&(r=se(r,i+5,1),To(r.d,i,o)&&(e=i+10,r=se(Cu(t.times(wi(a,e+n)),e),e+5,1),+jt(r.d).slice(i+1,i+15)+1==1e14&&(r=se(r,i+1,0)))),r.s=s,pe=!0,u.rounding=o,se(r,i,o))};V.toPrecision=function(t,e){var n,i=this,r=i.constructor;return t===void 0?n=Un(i,i.e<=r.toExpNeg||i.e>=r.toExpPos):(Jt(t,1,vi),e===void 0?e=r.rounding:Jt(e,0,8),i=se(new r(i),t,e),n=Un(i,t<=i.e||i.e<=r.toExpNeg,t)),i.isNeg()&&!i.isZero()?"-"+n:n};V.toSignificantDigits=V.toSD=function(t,e){var n=this,i=n.constructor;return t===void 0?(t=i.precision,e=i.rounding):(Jt(t,1,vi),e===void 0?e=i.rounding:Jt(e,0,8)),se(new i(n),t,e)};V.toString=function(){var t=this,e=t.constructor,n=Un(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()&&!t.isZero()?"-"+n:n};V.truncated=V.trunc=function(){return se(new this.constructor(this),this.e+1,1)};V.valueOf=V.toJSON=function(){var t=this,e=t.constructor,n=Un(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()?"-"+n:n};function jt(t){var e,n,i,r=t.length-1,o="",s=t[0];if(r>0){for(o+=s,e=1;e<r;e++)i=t[e]+"",n=de-i.length,n&&(o+=yi(n)),o+=i;s=t[e],i=s+"",n=de-i.length,n&&(o+=yi(n))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Jt(t,e,n){if(t!==~~t||t<e||t>n)throw Error(bi+t)}function To(t,e,n,i){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,i==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=n<4&&a==99999||n>3&&a==49999||a==5e4||a==0):s=(n<4&&a+1==o||n>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=(i||n<4)&&a==9999||!i&&n>3&&a==4999):s=((i||n<4)&&a+1==o||!i&&n>3&&a+1==o/2)&&(t[r+1]/o/1e3|0)==At(10,e-3)-1,s}function Ws(t,e,n){for(var i,r=[0],o,s=0,a=t.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=bu.indexOf(t.charAt(s++)),i=0;i<r.length;i++)r[i]>n-1&&(r[i+1]===void 0&&(r[i+1]=0),r[i+1]+=r[i]/n|0,r[i]%=n)}return r.reverse()}function Aw(t,e){var n,i,r;if(e.isZero())return e;i=e.d.length,i<32?(n=Math.ceil(i/3),r=(1/Qs(4,n)).toString()):(n=16,r="2.3283064365386962890625e-10"),t.precision+=n,e=Ar(t,1,e.times(r),new t(1));for(var o=n;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return t.precision-=n,e}var Fe=function(){function t(i,r,o){var s,a=0,u=i.length;for(i=i.slice();u--;)s=i[u]*r+a,i[u]=s%o|0,a=s/o|0;return a&&i.unshift(a),i}function e(i,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(i[a]!=r[a]){u=i[a]>r[a]?1:-1;break}return u}function n(i,r,o,s){for(var a=0;o--;)i[o]-=a,a=i[o]<r[o]?1:0,i[o]=a*s+i[o]-r[o];for(;!i[0]&&i.length>1;)i.shift()}return function(i,r,o,s,a,u){var l,m,b,v,T,O,P,M,B,E,q,K,X,G,Z,A,I,x,j,k,S=i.constructor,c=i.s==r.s?1:-1,d=i.d,f=r.d;if(!d||!d[0]||!f||!f[0])return new S(!i.s||!r.s||(d?f&&d[0]==f[0]:!f)?NaN:d&&d[0]==0||!f?c*0:c/0);for(u?(T=1,m=i.e-r.e):(u=On,T=de,m=Kt(i.e/T)-Kt(r.e/T)),j=f.length,I=d.length,B=new S(c),E=B.d=[],b=0;f[b]==(d[b]||0);b++);if(f[b]>(d[b]||0)&&m--,o==null?(G=o=S.precision,s=S.rounding):a?G=o+(i.e-r.e)+1:G=o,G<0)E.push(1),O=!0;else{if(G=G/T+2|0,b=0,j==1){for(v=0,f=f[0],G++;(b<I||v)&&G--;b++)Z=v*u+(d[b]||0),E[b]=Z/f|0,v=Z%f|0;O=v||b<I}else{for(v=u/(f[0]+1)|0,v>1&&(f=t(f,v,u),d=t(d,v,u),j=f.length,I=d.length),A=j,q=d.slice(0,j),K=q.length;K<j;)q[K++]=0;k=f.slice(),k.unshift(0),x=f[0],f[1]>=u/2&&++x;do v=0,l=e(f,q,j,K),l<0?(X=q[0],j!=K&&(X=X*u+(q[1]||0)),v=X/x|0,v>1?(v>=u&&(v=u-1),P=t(f,v,u),M=P.length,K=q.length,l=e(P,q,M,K),l==1&&(v--,n(P,j<M?k:f,M,u))):(v==0&&(l=v=1),P=f.slice()),M=P.length,M<K&&P.unshift(0),n(q,P,K,u),l==-1&&(K=q.length,l=e(f,q,j,K),l<1&&(v++,n(q,j<K?k:f,K,u))),K=q.length):l===0&&(v++,q=[0]),E[b++]=v,l&&q[0]?q[K++]=d[A]||0:(q=[d[A]],K=1);while((A++<I||q[0]!==void 0)&&G--);O=q[0]!==void 0}E[0]||E.shift()}if(T==1)B.e=m,zf=O;else{for(b=1,v=E[0];v>=10;v/=10)b++;B.e=b+m*T-1,se(B,a?o+B.e+1:o,s,O)}return B}}();function se(t,e,n,i){var r,o,s,a,u,l,m,b,v,T=t.constructor;e:if(e!=null){if(b=t.d,!b)return t;for(r=1,a=b[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=de,s=e,m=b[v=0],u=m/At(10,r-s-1)%10|0;else if(v=Math.ceil((o+1)/de),a=b.length,v>=a)if(i){for(;a++<=v;)b.push(0);m=u=0,r=1,o%=de,s=o-de+1}else break e;else{for(m=a=b[v],r=1;a>=10;a/=10)r++;o%=de,s=o-de+r,u=s<0?0:m/At(10,r-s-1)%10|0}if(i=i||e<0||b[v+1]!==void 0||(s<0?m:m%At(10,r-s-1)),l=n<4?(u||i)&&(n==0||n==(t.s<0?3:2)):u>5||u==5&&(n==4||i||n==6&&(o>0?s>0?m/At(10,r-s):0:b[v-1])%10&1||n==(t.s<0?8:7)),e<1||!b[0])return b.length=0,l?(e-=t.e+1,b[0]=At(10,(de-e%de)%de),t.e=-e||0):b[0]=t.e=0,t;if(o==0?(b.length=v,a=1,v--):(b.length=v+1,a=At(10,de-o),b[v]=s>0?(m/At(10,r-s)%At(10,s)|0)*a:0),l)for(;;)if(v==0){for(o=1,s=b[0];s>=10;s/=10)o++;for(s=b[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(t.e++,b[0]==On&&(b[0]=1));break}else{if(b[v]+=a,b[v]!=On)break;b[v--]=0,a=1}for(o=b.length;b[--o]===0;)b.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 Un(t,e,n){if(!t.isFinite())return Yf(t);var i,r=t.e,o=jt(t.d),s=o.length;return e?(n&&(i=n-s)>0?o=o.charAt(0)+"."+o.slice(1)+yi(i):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(t.e<0?"e":"e+")+t.e):r<0?(o="0."+yi(-r-1)+o,n&&(i=n-s)>0&&(o+=yi(i))):r>=s?(o+=yi(r+1-s),n&&(i=n-r-1)>0&&(o=o+"."+yi(i))):((i=r+1)<s&&(o=o.slice(0,i)+"."+o.slice(i)),n&&(i=n-s)>0&&(r+1===s&&(o+="."),o+=yi(i))),o}function Ys(t,e){var n=t[0];for(e*=de;n>=10;n/=10)e++;return e}function Zs(t,e,n){if(e>Sw)throw pe=!0,n&&(t.precision=n),Error(Vf);return se(new t(Hs),e,1,!0)}function In(t,e,n){if(e>ku)throw Error(Vf);return se(new t(Xs),e,n,!0)}function Xf(t){var e=t.length-1,n=e*de+1;if(e=t[e],e){for(;e%10==0;e/=10)n--;for(e=t[0];e>=10;e/=10)n++}return n}function yi(t){for(var e="";t--;)e+="0";return e}function Zf(t,e,n,i){var r,o=new t(1),s=Math.ceil(i/de+4);for(pe=!1;;){if(n%2&&(o=o.times(e),$f(o.d,s)&&(r=!0)),n=Kt(n/2),n===0){n=o.d.length-1,r&&o.d[n]===0&&++o.d[n];break}e=e.times(e),$f(e.d,s)}return pe=!0,o}function Uf(t){return t.d[t.d.length-1]&1}function Jf(t,e,n){for(var i,r=new t(e[0]),o=0;++o<e.length;)if(i=new t(e[o]),i.s)r[n](i)&&(r=i);else{r=i;break}return r}function Cu(t,e){var n,i,r,o,s,a,u,l=0,m=0,b=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,u=O):u=e,a=new v(.03125);t.e>-2;)t=t.times(a),b+=5;for(i=Math.log(At(2,b))/Math.LN10*2+5|0,u+=i,n=o=s=new v(1),v.precision=u;;){if(o=se(o.times(t),u,1),n=n.times(++m),a=s.plus(Fe(o,n,u,1)),jt(a.d).slice(0,u)===jt(s.d).slice(0,u)){for(r=b;r--;)s=se(s.times(s),u,1);if(e==null)if(l<3&&To(s.d,u-i,T,l))v.precision=u+=10,n=o=a=new v(1),m=0,l++;else return se(s,v.precision=O,T,pe=!0);else return v.precision=O,s}s=a}}function wi(t,e){var n,i,r,o,s,a,u,l,m,b,v,T=1,O=10,P=t,M=P.d,B=P.constructor,E=B.rounding,q=B.precision;if(P.s<0||!M||!M[0]||!P.e&&M[0]==1&&M.length==1)return new B(M&&!M[0]?-1/0:P.s!=1?NaN:M?0:P);if(e==null?(pe=!1,m=q):m=e,B.precision=m+=O,n=jt(M),i=n.charAt(0),Math.abs(o=P.e)<15e14){for(;i<7&&i!=1||i==1&&n.charAt(1)>3;)P=P.times(t),n=jt(P.d),i=n.charAt(0),T++;o=P.e,i>1?(P=new B("0."+n),o++):P=new B(i+"."+n.slice(1))}else return l=Zs(B,m+2,q).times(o+""),P=wi(new B(i+"."+n.slice(1)),m-O).plus(l),B.precision=q,e==null?se(P,q,E,pe=!0):P;for(b=P,u=s=P=Fe(P.minus(1),P.plus(1),m,1),v=se(P.times(P),m,1),r=3;;){if(s=se(s.times(v),m,1),l=u.plus(Fe(s,new B(r),m,1)),jt(l.d).slice(0,m)===jt(u.d).slice(0,m))if(u=u.times(2),o!==0&&(u=u.plus(Zs(B,m+2,q).times(o+""))),u=Fe(u,new B(T),m,1),e==null)if(To(u.d,m-O,E,a))B.precision=m+=O,l=s=P=Fe(b.minus(1),b.plus(1),m,1),v=se(P.times(P),m,1),r=a=1;else return se(u,B.precision=q,E,pe=!0);else return B.precision=q,u;u=l,r+=2}}function Yf(t){return String(t.s*t.s/0)}function Tu(t,e){var n,i,r;for((n=e.indexOf("."))>-1&&(e=e.replace(".","")),(i=e.search(/e/i))>0?(n<0&&(n=i),n+=+e.slice(i+1),e=e.substring(0,i)):n<0&&(n=e.length),i=0;e.charCodeAt(i)===48;i++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(i,r),e){if(r-=i,t.e=n=n-i-1,t.d=[],i=(n+1)%de,n<0&&(i+=de),i<r){for(i&&t.d.push(+e.slice(0,i)),r-=de;i<r;)t.d.push(+e.slice(i,i+=de));e=e.slice(i),i=de-e.length}else i-=r;for(;i--;)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 xw(t,e){var n,i,r,o,s,a,u,l,m;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Hf.test(e))return Tu(t,e)}else if(e==="Infinity"||e==="NaN")return+e||(t.s=NaN),t.e=NaN,t.d=null,t;if(kw.test(e))n=16,e=e.toLowerCase();else if(vw.test(e))n=2;else if(Cw.test(e))n=8;else throw Error(bi+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,i=t.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=Zf(i,new i(n),o,o*2)),l=Ws(e,n,On),m=l.length-1,o=m;l[o]===0;--o)l.pop();return o<0?new i(t.s*0):(t.e=Ys(l,m),t.d=l,pe=!1,s&&(t=Fe(t,r,a*4)),u&&(t=t.times(Math.abs(u)<54?At(2,u):So.pow(2,u))),pe=!0,t)}function Iw(t,e){var n,i=e.d.length;if(i<3)return e.isZero()?e:Ar(t,2,e,e);n=1.4*Math.sqrt(i),n=n>16?16:n|0,e=e.times(1/Qs(5,n)),e=Ar(t,2,e,e);for(var r,o=new t(5),s=new t(16),a=new t(20);n--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function Ar(t,e,n,i,r){var o,s,a,u,l=1,m=t.precision,b=Math.ceil(m/de);for(pe=!1,u=n.times(n),a=new t(i);;){if(s=Fe(a.times(u),new t(e++*e++),m,1),a=r?i.plus(s):i.minus(s),i=Fe(s.times(u),new t(e++*e++),m,1),s=a.plus(i),s.d[b]!==void 0){for(o=b;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=i,i=s,s=o,l++}return pe=!0,s.d.length=b+1,s}function Qs(t,e){for(var n=t;--e;)n*=t;return n}function Qf(t,e){var n,i=e.s<0,r=In(t,t.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return ei=i?4:1,e;if(n=e.divToInt(r),n.isZero())ei=i?3:2;else{if(e=e.minus(n.times(r)),e.lte(o))return ei=Uf(n)?i?2:3:i?4:1,e;ei=Uf(n)?i?1:4:i?3:2}return e.minus(r).abs()}function Su(t,e,n,i){var r,o,s,a,u,l,m,b,v,T=t.constructor,O=n!==void 0;if(O?(Jt(n,1,vi),i===void 0?i=T.rounding:Jt(i,0,8)):(n=T.precision,i=T.rounding),!t.isFinite())m=Yf(t);else{for(m=Un(t),s=m.indexOf("."),O?(r=2,e==16?n=n*4-3:e==8&&(n=n*3-2)):r=e,s>=0&&(m=m.replace(".",""),v=new T(1),v.e=m.length-s,v.d=Ws(Un(v),10,r),v.e=v.d.length),b=Ws(m,10,r),o=u=b.length;b[--u]==0;)b.pop();if(!b[0])m=O?"0p+0":"0";else{if(s<0?o--:(t=new T(t),t.d=b,t.e=o,t=Fe(t,v,n,i,0,r),b=t.d,o=t.e,l=zf),s=b[n],a=r/2,l=l||b[n+1]!==void 0,l=i<4?(s!==void 0||l)&&(i===0||i===(t.s<0?3:2)):s>a||s===a&&(i===4||l||i===6&&b[n-1]&1||i===(t.s<0?8:7)),b.length=n,l)for(;++b[--n]>r-1;)b[n]=0,n||(++o,b.unshift(1));for(u=b.length;!b[u-1];--u);for(s=0,m="";s<u;s++)m+=bu.charAt(b[s]);if(O){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)m+="0";for(b=Ws(m,r,e),u=b.length;!b[u-1];--u);for(s=1,m="1.";s<u;s++)m+=bu.charAt(b[s])}else m=m.charAt(0)+"."+m.slice(1);m=m+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)m="0"+m;m="0."+m}else if(++o>u)for(o-=u;o--;)m+="0";else o<u&&(m=m.slice(0,o)+"."+m.slice(o))}m=(e==16?"0x":e==2?"0b":e==8?"0o":"")+m}return t.s<0?"-"+m:m}function $f(t,e){if(t.length>e)return t.length=e,!0}function Ow(t){return new this(t).abs()}function Pw(t){return new this(t).acos()}function Ew(t){return new this(t).acosh()}function Dw(t,e){return new this(t).plus(e)}function Mw(t){return new this(t).asin()}function jw(t){return new this(t).asinh()}function Bw(t){return new this(t).atan()}function Nw(t){return new this(t).atanh()}function Fw(t,e){t=new this(t),e=new this(e);var n,i=this.precision,r=this.rounding,o=i+4;return!t.s||!e.s?n=new this(NaN):!t.d&&!e.d?(n=In(this,o,1).times(e.s>0?.25:.75),n.s=t.s):!e.d||t.isZero()?(n=e.s<0?In(this,i,r):new this(0),n.s=t.s):!t.d||e.isZero()?(n=In(this,o,1).times(.5),n.s=t.s):e.s<0?(this.precision=o,this.rounding=1,n=this.atan(Fe(t,e,o,1)),e=In(this,o,1),this.precision=i,this.rounding=r,n=t.s<0?n.minus(e):n.plus(e)):n=this.atan(Fe(t,e,o,1)),n}function Rw(t){return new this(t).cbrt()}function qw(t){return se(t=new this(t),t.e+1,2)}function Lw(t,e,n){return new this(t).clamp(e,n)}function Uw(t){if(!t||typeof t!="object")throw Error(Js+"Object expected");var e,n,i,r=t.defaults===!0,o=["precision",1,vi,"rounding",0,8,"toExpNeg",-Sr,0,"toExpPos",0,Sr,"maxE",0,Sr,"minE",-Sr,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(n=o[e],r&&(this[n]=vu[n]),(i=t[n])!==void 0)if(Kt(i)===i&&i>=o[e+1]&&i<=o[e+2])this[n]=i;else throw Error(bi+n+": "+i);if(n="crypto",r&&(this[n]=vu[n]),(i=t[n])!==void 0)if(i===!0||i===!1||i===0||i===1)if(i)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[n]=!0;else throw Error(Gf);else this[n]=!1;else throw Error(bi+n+": "+i);return this}function $w(t){return new this(t).cos()}function Kw(t){return new this(t).cosh()}function eh(t){var e,n,i;function r(o){var s,a,u,l=this;if(!(l instanceof r))return new r(o);if(l.constructor=r,Kf(o)){l.s=o.s,pe?!o.d||o.e>r.maxE?(l.e=NaN,l.d=null):o.e<r.minE?(l.e=0,l.d=[0]):(l.e=o.e,l.d=o.d.slice()):(l.e=o.e,l.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){l.s=1/o<0?-1:1,l.e=0,l.d=[0];return}if(o<0?(o=-o,l.s=-1):l.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;pe?s>r.maxE?(l.e=NaN,l.d=null):s<r.minE?(l.e=0,l.d=[0]):(l.e=s,l.d=[o]):(l.e=s,l.d=[o]);return}else if(o*0!==0){o||(l.s=NaN),l.e=NaN,l.d=null;return}return Tu(l,o.toString())}else if(u!=="string")throw Error(bi+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),l.s=-1):(a===43&&(o=o.slice(1)),l.s=1),Hf.test(o)?Tu(l,o):xw(l,o)}if(r.prototype=V,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=Uw,r.clone=eh,r.isDecimal=Kf,r.abs=Ow,r.acos=Pw,r.acosh=Ew,r.add=Dw,r.asin=Mw,r.asinh=jw,r.atan=Bw,r.atanh=Nw,r.atan2=Fw,r.cbrt=Rw,r.ceil=qw,r.clamp=Lw,r.cos=$w,r.cosh=Kw,r.div=zw,r.exp=Vw,r.floor=Gw,r.hypot=Ww,r.ln=Hw,r.log=Xw,r.log10=Jw,r.log2=Zw,r.max=Yw,r.min=Qw,r.mod=eb,r.mul=tb,r.pow=nb,r.random=ib,r.round=rb,r.sign=ob,r.sin=sb,r.sinh=ab,r.sqrt=cb,r.sub=ub,r.sum=lb,r.tan=db,r.tanh=fb,r.trunc=hb,t===void 0&&(t={}),t&&t.defaults!==!0)for(i=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<i.length;)t.hasOwnProperty(n=i[e++])||(t[n]=this[n]);return r.config(t),r}function zw(t,e){return new this(t).div(e)}function Vw(t){return new this(t).exp()}function Gw(t){return se(t=new this(t),t.e+1,3)}function Ww(){var t,e,n=new this(0);for(pe=!1,t=0;t<arguments.length;)if(e=new this(arguments[t++]),e.d)n.d&&(n=n.plus(e.times(e)));else{if(e.s)return pe=!0,new this(1/0);n=e}return pe=!0,n.sqrt()}function Kf(t){return t instanceof So||t&&t.toStringTag===Wf||!1}function Hw(t){return new this(t).ln()}function Xw(t,e){return new this(t).log(e)}function Zw(t){return new this(t).log(2)}function Jw(t){return new this(t).log(10)}function Yw(){return Jf(this,arguments,"lt")}function Qw(){return Jf(this,arguments,"gt")}function eb(t,e){return new this(t).mod(e)}function tb(t,e){return new this(t).mul(e)}function nb(t,e){return new this(t).pow(e)}function ib(t){var e,n,i,r,o=0,s=new this(1),a=[];if(t===void 0?t=this.precision:Jt(t,1,vi),i=Math.ceil(t/de),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(i));o<i;)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(i*=4);o<i;)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=i/4}else throw Error(Gf);else for(;o<i;)a[o++]=Math.random()*1e7|0;for(i=a[--o],t%=de,i&&t&&(r=At(10,de-t),a[o]=(i/r|0)*r);a[o]===0;o--)a.pop();if(o<0)n=0,a=[0];else{for(n=-1;a[0]===0;n-=de)a.shift();for(i=1,r=a[0];r>=10;r/=10)i++;i<de&&(n-=de-i)}return s.e=n,s.d=a,s}function rb(t){return se(t=new this(t),t.e+1,this.rounding)}function ob(t){return t=new this(t),t.d?t.d[0]?t.s:0*t.s:t.s||NaN}function sb(t){return new this(t).sin()}function ab(t){return new this(t).sinh()}function cb(t){return new this(t).sqrt()}function ub(t,e){return new this(t).sub(e)}function lb(){var t=0,e=arguments,n=new this(e[t]);for(pe=!1;n.s&&++t<e.length;)n=n.plus(e[t]);return pe=!0,se(n,this.precision,this.rounding)}function db(t){return new this(t).tan()}function fb(t){return new this(t).tanh()}function hb(t){return se(t=new this(t),t.e+1,1)}V[Symbol.for("nodejs.util.inspect.custom")]=V.toString;V[Symbol.toStringTag]="Decimal";var So=V.constructor=eh(vu);Hs=new So(Hs);Xs=new So(Xs);var $=So;var Jh=be(Se(),1),Oo=be(Se(),1);var ue=be(Se(),1),Me=be(Se(),1),ep=be(Se(),1),wa=require("@mysten/sui.js/utils"),fv=be(Se(),1),Ru=be(Se(),1),hv=be(Se(),1);var Hi=be(Se(),1),Io=be(Se(),1);var Xi=require("@mysten/sui.js/transactions"),Cv=require("@mysten/sui.js/utils"),Tv=require("@mysten/sui.js/transactions"),Ft=be(Se(),1),da=require("@mysten/sui.js/transactions"),Lu=be(Se(),1),Zi=require("@mysten/sui.js/transactions"),up=require("@mysten/sui.js/utils"),Re=be(Se(),1),fa=require("@mysten/sui.js/transactions"),sn=be(Se(),1),Yi=be(Ah(),1),lp=require("@mysten/sui.js/transactions"),Ji=be(Se(),1);var Uu=require("@mysten/sui.js/transactions");var Dh="3.7.7",vb=Dh,Or=typeof Buffer=="function",xh=typeof TextDecoder=="function"?new TextDecoder:void 0,Ih=typeof TextEncoder=="function"?new TextEncoder:void 0,kb="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Ao=Array.prototype.slice.call(kb),ra=(t=>{let e={};return t.forEach((n,i)=>e[n]=i),e})(Ao),Cb=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,Bt=String.fromCharCode.bind(String),Oh=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):t=>new Uint8Array(Array.prototype.slice.call(t,0)),Mh=t=>t.replace(/=/g,"").replace(/[+\/]/g,e=>e=="+"?"-":"_"),jh=t=>t.replace(/[^A-Za-z0-9\+\/]/g,""),Bh=t=>{let e,n,i,r,o="",s=t.length%3;for(let a=0;a<t.length;){if((n=t.charCodeAt(a++))>255||(i=t.charCodeAt(a++))>255||(r=t.charCodeAt(a++))>255)throw new TypeError("invalid character found");e=n<<16|i<<8|r,o+=Ao[e>>18&63]+Ao[e>>12&63]+Ao[e>>6&63]+Ao[e&63]}return s?o.slice(0,s-3)+"===".substring(s):o},Pu=typeof btoa=="function"?t=>btoa(t):Or?t=>Buffer.from(t,"binary").toString("base64"):Bh,Iu=Or?t=>Buffer.from(t).toString("base64"):t=>{let n=[];for(let i=0,r=t.length;i<r;i+=4096)n.push(Bt.apply(null,t.subarray(i,i+4096)));return Pu(n.join(""))},oa=(t,e=!1)=>e?Mh(Iu(t)):Iu(t),Tb=t=>{if(t.length<2){var e=t.charCodeAt(0);return e<128?t:e<2048?Bt(192|e>>>6)+Bt(128|e&63):Bt(224|e>>>12&15)+Bt(128|e>>>6&63)+Bt(128|e&63)}else{var e=65536+(t.charCodeAt(0)-55296)*1024+(t.charCodeAt(1)-56320);return Bt(240|e>>>18&7)+Bt(128|e>>>12&63)+Bt(128|e>>>6&63)+Bt(128|e&63)}},Sb=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,Nh=t=>t.replace(Sb,Tb),Ph=Or?t=>Buffer.from(t,"utf8").toString("base64"):Ih?t=>Iu(Ih.encode(t)):t=>Pu(Nh(t)),Ir=(t,e=!1)=>e?Mh(Ph(t)):Ph(t),Eh=t=>Ir(t,!0),Ab=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,xb=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),n=e-65536;return Bt((n>>>10)+55296)+Bt((n&1023)+56320);case 3:return Bt((15&t.charCodeAt(0))<<12|(63&t.charCodeAt(1))<<6|63&t.charCodeAt(2));default:return Bt((31&t.charCodeAt(0))<<6|63&t.charCodeAt(1))}},Fh=t=>t.replace(Ab,xb),Rh=t=>{if(t=t.replace(/\s+/g,""),!Cb.test(t))throw new TypeError("malformed base64.");t+="==".slice(2-(t.length&3));let e,n="",i,r;for(let o=0;o<t.length;)e=ra[t.charAt(o++)]<<18|ra[t.charAt(o++)]<<12|(i=ra[t.charAt(o++)])<<6|(r=ra[t.charAt(o++)]),n+=i===64?Bt(e>>16&255):r===64?Bt(e>>16&255,e>>8&255):Bt(e>>16&255,e>>8&255,e&255);return n},Eu=typeof atob=="function"?t=>atob(jh(t)):Or?t=>Buffer.from(t,"base64").toString("binary"):Rh,qh=Or?t=>Oh(Buffer.from(t,"base64")):t=>Oh(Eu(t).split("").map(e=>e.charCodeAt(0))),Lh=t=>qh(Uh(t)),Ib=Or?t=>Buffer.from(t,"base64").toString("utf8"):xh?t=>xh.decode(qh(t)):t=>Fh(Eu(t)),Uh=t=>jh(t.replace(/[-_]/g,e=>e=="-"?"+":"/")),Ou=t=>Ib(Uh(t)),Ob=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)},$h=t=>({value:t,enumerable:!1,writable:!0,configurable:!0}),Kh=function(){let t=(e,n)=>Object.defineProperty(String.prototype,e,$h(n));t("fromBase64",function(){return Ou(this)}),t("toBase64",function(e){return Ir(this,e)}),t("toBase64URI",function(){return Ir(this,!0)}),t("toBase64URL",function(){return Ir(this,!0)}),t("toUint8Array",function(){return Lh(this)})},zh=function(){let t=(e,n)=>Object.defineProperty(Uint8Array.prototype,e,$h(n));t("toBase64",function(e){return oa(this,e)}),t("toBase64URI",function(){return oa(this,!0)}),t("toBase64URL",function(){return oa(this,!0)})},Pb=()=>{Kh(),zh()},Pr={version:Dh,VERSION:vb,atob:Eu,atobPolyfill:Rh,btoa:Pu,btoaPolyfill:Bh,fromBase64:Ou,toBase64:Ir,encode:Ir,encodeURI:Eh,encodeURL:Eh,utob:Nh,btou:Fh,decode:Ou,isValid:Ob,fromUint8Array:oa,toUint8Array:Lh,extendString:Kh,extendUint8Array:zh,extendBuiltins:Pb};var $u=require("@mysten/sui.js/transactions"),dp=require("@mysten/sui.js/utils"),Pn=be(Se(),1);var sa,Eb=new Uint8Array(16);function Du(){if(!sa&&(sa=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!sa))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return sa(Eb)}var Nt=[];for(let t=0;t<256;++t)Nt.push((t+256).toString(16).slice(1));function Vh(t,e=0){return Nt[t[e+0]]+Nt[t[e+1]]+Nt[t[e+2]]+Nt[t[e+3]]+"-"+Nt[t[e+4]]+Nt[t[e+5]]+"-"+Nt[t[e+6]]+Nt[t[e+7]]+"-"+Nt[t[e+8]]+Nt[t[e+9]]+"-"+Nt[t[e+10]]+Nt[t[e+11]]+Nt[t[e+12]]+Nt[t[e+13]]+Nt[t[e+14]]+Nt[t[e+15]]}var Db=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Mu={randomUUID:Db};function Mb(t,e,n){if(Mu.randomUUID&&!e&&!t)return Mu.randomUUID();t=t||{};let i=t.random||(t.rng||Du)();if(i[6]=i[6]&15|64,i[8]=i[8]&63|128,e){n=n||0;for(let r=0;r<16;++r)e[n+r]=i[r];return e}return Vh(i)}var aa=Mb;var ha=require("@mysten/sui.js/utils"),fp=require("@mysten/sui.js/transactions"),hp=require("@mysten/sui.js/client"),pp=require("@mysten/sui.js/bcs");var jb=Object.defineProperty,Bb=(t,e,n)=>e in t?jb(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Nb=(t,e,n)=>(Bb(t,typeof e!="symbol"?e+"":e,n),n),We=5*60*1e3,J=24*60*60*1e3;function ye(t){return Date.parse(new Date().toString())+t}var qe=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)}};$.config({precision:64,rounding:$.ROUND_DOWN,toExpNeg:-64,toExpPos:64});var Rt=$,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 Tt.default(0),$n=new Tt.default(1),ga=new Tt.default(2),Qx=ga.pow(new Tt.default(128)),Br=ga.pow(new Tt.default(64)).sub($n),qb=ga.pow(new Tt.default(128)).sub($n),xe=class{static toX64_BN(t){return t.mul(new Tt.default(2).pow(new Tt.default(64)))}static toX64_Decimal(t){return t.mul(Rt.pow(2,64))}static toX64(t){return new Tt.default(t.mul(Rt.pow(2,64)).floor().toFixed())}static fromX64(t){return new Rt(t.toString()).mul(Rt.pow(2,-64))}static fromX64_Decimal(t){return t.mul(Rt.pow(2,-64))}static fromX64_BN(t){return t.div(new Tt.default(2).pow(new Tt.default(64)))}static shiftRightRoundUp(t){let e=t.shrn(64);return t.mod(Br).gt(re)&&(e=e.add($n)),e}static divRoundUp(t,e){return t.mod(e).eq(re)?t.div(e):t.div(e).add(new Tt.default(1))}static subUnderflowU128(t,e){return t.lt(e)?t.sub(e).add(qb):t.sub(e)}static checkUnsignedSub(t,e){let n=t.sub(e);if(n.isNeg())throw new Y("Unsigned integer sub overflow","UnsignedIntegerOverflow");return n}static checkMul(t,e,n){let i=t.mul(e);if(this.isOverflow(i,n))throw new Y("Multiplication overflow","MultiplicationOverflow");return i}static checkMulDivFloor(t,e,n,i){if(n.eq(re))throw new Y("Devide by zero","DivideByZero");let r=t.mul(e).div(n);if(this.isOverflow(r,i))throw new Y("Multiplication div overflow","MulDivOverflow");return r}static checkMulDivCeil(t,e,n,i){if(n.eq(re))throw new Y("Devide by zero","DivideByZero");let r=t.mul(e).add(n.sub($n)).div(n);if(this.isOverflow(r,i))throw new Y("Multiplication div overflow","MulDivOverflow");return r}static checkMulDivRound(t,e,n,i){if(n.eq(re))throw new Y("Devide by zero","DivideByZero");let r=t.mul(e.add(n.shrn(1))).div(n);if(this.isOverflow(r,i))throw new Y("Multiplication div overflow","MulDivOverflow");return r}static checkMulShiftRight(t,e,n,i){let r=t.mul(e).div(new Tt.default(2).pow(new Tt.default(n)));if(this.isOverflow(r,i))throw new Y("Multiplication shift right overflow","MulShiftRightOverflow");return r}static checkMulShiftRight64RoundUpIf(t,e,n,i){let r=t.mul(e),s=i&&r.and(Br).gt(re)?r.shrn(64).add($n):r.shrn(64);if(this.isOverflow(s,n))throw new Y("Multiplication shift right overflow","MulShiftRightOverflow");return s}static checkMulShiftLeft(t,e,n,i){let r=t.mul(e).shln(n);if(this.isOverflow(r,i))throw new Y("Multiplication shift left overflow","MulShiftLeftOverflow");return r}static checkDivRoundUpIf(t,e,n){if(e.eq(re))throw new Y("Devide by zero","DivideByZero");return n?this.divRoundUp(t,e):t.div(e)}static isOverflow(t,e){return t.gte(ga.pow(new Tt.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 Tt.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 Tt.default(1)))}static neg_from(t){return t.eq(re)?t:this.u128_neg(t).add(new Tt.default(1)).or(new Tt.default(1).shln(127))}};function Lb(t){return{coinA:t.coinTypeA,coinB:t.coinTypeB,currentSqrtPrice:new ki.default(t.current_sqrt_price),currentTickIndex:t.current_tick_index,feeGrowthGlobalA:new ki.default(t.fee_growth_global_a),feeGrowthGlobalB:new ki.default(t.fee_growth_global_b),feeProtocolCoinA:new ki.default(t.fee_protocol_coin_a),feeProtocolCoinB:new ki.default(t.fee_protocol_coin_b),feeRate:new ki.default(t.fee_rate),liquidity:new ki.default(t.liquidity),tickIndexes:[],tickSpacing:Number(t.tickSpacing),ticks:[],collection_name:""}}var Yh=443636,Qh=-443636,_a="79226673515401279992447579055";var ya="4295048016",Mr=new Jh.default(1e6),W="0x0000000000000000000000000000000000000000000000000000000000000006",Ub="partner",jr="pool_script",ti="pool_script_v2",Ci="router",ju="router_with_partner",Yt="fetcher_script",$b="expect_swap",Gh="utils";var Bu="custodian_v2",Kb="clob_v2",zb="endpoints_v2";var Ku=(t=>(t.Deleted="Deleted",t.Exists="Exists",t.NotExists="NotExists",t))(Ku||{});function R(t){if(t.config===void 0)throw new Y(`package: ${t.package_id} not config in sdk SdkOptions`,"InvalidConfig");return t.config}var Vb=14,Gb="59543866431248",Wb="184467440737095516",Hb="15793534762490258745",Xb=443636;function Zb(t,e,n){let i=t.toTwos(n).shln(e);return i.imaskn(n+1),i.fromTwos(n)}function ve(t,e,n){let i=t.toTwos(n).shrn(e);return i.imaskn(n-e+1),i.fromTwos(n-e)}function Jb(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 Yb(t){let e=Math.abs(t),n;return e&1?n=new ue.default("18445821805675392311"):n=new ue.default("18446744073709551616"),e&2&&(n=ve(n.mul(new ue.default("18444899583751176498")),64,256)),e&4&&(n=ve(n.mul(new ue.default("18443055278223354162")),64,256)),e&8&&(n=ve(n.mul(new ue.default("18439367220385604838")),64,256)),e&16&&(n=ve(n.mul(new ue.default("18431993317065449817")),64,256)),e&32&&(n=ve(n.mul(new ue.default("18417254355718160513")),64,256)),e&64&&(n=ve(n.mul(new ue.default("18387811781193591352")),64,256)),e&128&&(n=ve(n.mul(new ue.default("18329067761203520168")),64,256)),e&256&&(n=ve(n.mul(new ue.default("18212142134806087854")),64,256)),e&512&&(n=ve(n.mul(new ue.default("17980523815641551639")),64,256)),e&1024&&(n=ve(n.mul(new ue.default("17526086738831147013")),64,256)),e&2048&&(n=ve(n.mul(new ue.default("16651378430235024244")),64,256)),e&4096&&(n=ve(n.mul(new ue.default("15030750278693429944")),64,256)),e&8192&&(n=ve(n.mul(new ue.default("12247334978882834399")),64,256)),e&16384&&(n=ve(n.mul(new ue.default("8131365268884726200")),64,256)),e&32768&&(n=ve(n.mul(new ue.default("3584323654723342297")),64,256)),e&65536&&(n=ve(n.mul(new ue.default("696457651847595233")),64,256)),e&131072&&(n=ve(n.mul(new ue.default("26294789957452057")),64,256)),e&262144&&(n=ve(n.mul(new ue.default("37481735321082")),64,256)),n}var ne=class{static priceToSqrtPriceX64(t,e,n){return xe.toX64(t.mul(Rt.pow(10,n-e)).sqrt())}static sqrtPriceX64ToPrice(t,e,n){return xe.fromX64(t).pow(2).mul(Rt.pow(10,e-n))}static tickIndexToSqrtPriceX64(t){return t>0?new ue.default(Jb(t)):new ue.default(Yb(t))}static sqrtPriceX64ToTickIndex(t){if(t.gt(new ue.default(_a))||t.lt(new ue.default(ya)))throw new Y("Provided sqrtPrice is not within the supported sqrtPrice range.","InvalidSqrtPrice");let e=t.bitLength()-1,n=new ue.default(e-64),i=Zb(n,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<Vb;){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 u=s.shrn(32),m=i.add(u).mul(new ue.default(Gb)),b=ve(m.sub(new ue.default(Wb)),64,128).toNumber(),v=ve(m.add(new ue.default(Hb)),64,128).toNumber();return b===v?b:ne.tickIndexToSqrtPriceX64(v).lte(t)?v:b}static tickIndexToPrice(t,e,n){return ne.sqrtPriceX64ToPrice(ne.tickIndexToSqrtPriceX64(t),e,n)}static priceToTickIndex(t,e,n){return ne.sqrtPriceX64ToTickIndex(ne.priceToSqrtPriceX64(t,e,n))}static priceToInitializableTickIndex(t,e,n,i){return ne.getInitializableTickIndex(ne.priceToTickIndex(t,e,n),i)}static getInitializableTickIndex(t,e){return t-t%e}static getNextInitializableTickIndex(t,e){return ne.getInitializableTickIndex(t,e)+e}static getPrevInitializableTickIndex(t,e){return ne.getInitializableTickIndex(t,e)-e}};function Qb(t){return D(t).add(D(Xb))}var tI=new Oo.default(365),nI=new Oo.default(24),iI=new Oo.default(3600),rI=new Oo.default(.5);var En=class{static getDefaultSqrtPriceLimit(t){return new ep.default(t?ya:_a)}static getDefaultOtherAmountThreshold(t){return t?re:Br}};function tp(t,e,n,i){if(n.eq(re))return t;let r=xe.checkMulShiftLeft(t,e,64,256),o=e.shln(64),s=xe.checkMul(t,n,256);if(!i&&o.lte(s))throw new Y("getNextSqrtPriceAUp - Unable to divide liquidityShl64 by product","DivideByZero");let a=i?xe.checkDivRoundUpIf(r,o.add(s),!0):xe.checkDivRoundUpIf(r,o.sub(s),!0);if(a.lt(new Me.default(ya)))throw new Y("getNextSqrtPriceAUp - Next sqrt price less than min sqrt price","CoinAmountMinSubceeded ");if(a.gt(new Me.default(_a)))throw new Y("getNextSqrtPriceAUp - Next sqrt price greater than max sqrt price","CoinAmountMaxExceeded");return a}function np(t,e,n,i){let r=xe.checkDivRoundUpIf(n.shln(64),e,!i),o=i?t.add(r):t.sub(r);if(o.lt(new Me.default(ya))||o.gt(new Me.default(_a)))throw new Y("getNextSqrtPriceAUp - Next sqrt price out of bounds","SqrtPriceOutOfBounds");return o}function ev(t,e,n,i){return i?tp(t,e,n,!0):np(t,e,n,!0)}function tv(t,e,n,i){return i?np(t,e,n,!1):tp(t,e,n,!1)}function Wh(t,e,n,i){let r=t.gt(e)?t.sub(e):e.sub(t);if(n.lte(re)||r.eq(re))return re;let o;if(i){let s=new Me.default(n).mul(new Me.default(r)).shln(64),a=e.mul(t),u=s.div(a);o=s.mod(a).eq(re)?u:u.add($n)}else{let s=new Me.default(n).mul(new Me.default(r));o=s.and(Br).gt(re)?s.shrn(64).add($n):s.shrn(64)}return o}function Hh(t,e,n,i){let r=t.gt(e)?t.sub(e):e.sub(t);if(n.lte(re)||r.eq(re))return re;let o;if(i)o=n.mul(r).shrn(64);else{let s=n.mul(r).shln(64),a=e.mul(t);o=s.div(a)}return o}function nv(t,e,n,i,r,o){if(n===re)return{amountIn:re,amountOut:re,nextSqrtPrice:e,feeAmount:re};let s=t.gte(e),a,u,l,m;if(o){let b=xe.checkMulDivFloor(i,xe.checkUnsignedSub(Mr,r),Mr,64),v=Wh(t,e,n,s);v.gt(b)?(a=b,m=xe.checkUnsignedSub(i,b),l=ev(t,n,b,s)):(a=v,m=xe.checkMulDivCeil(a,r,Mr.sub(r),64),l=e),u=Hh(t,l,n,s)}else{let b=Hh(t,e,n,s);b.gt(i)?(u=i,l=tv(t,n,i,s)):(u=b,l=e),a=Wh(t,l,n,s),m=xe.checkMulDivCeil(a,r,Mr.sub(r),64)}return{amountIn:a,amountOut:u,nextSqrtPrice:l,feeAmount:m}}function iv(t,e,n,i,r){let o=n,s=i.liquidity,{currentSqrtPrice:a}=i,u={amountIn:re,amountOut:re,feeAmount:re,refAmount:re,nextSqrtPrice:re,crossTickNum:0},l,m,b=En.getDefaultSqrtPriceLimit(t);for(let v of r){if(t&&i.currentTickIndex<v.index||!t&&i.currentTickIndex>=v.index||v===null)continue;t&&b.gt(v.sqrtPrice)||!t&&b.lt(v.sqrtPrice)?l=b:l=v.sqrtPrice;let T=nv(a,l,s,o,i.feeRate,e);if(T.amountIn.eq(re)||(o=e?o.sub(T.amountIn.add(T.feeAmount)):o.sub(T.amountOut)),u.amountIn=u.amountIn.add(T.amountIn),u.amountOut=u.amountOut.add(T.amountOut),u.feeAmount=u.feeAmount.add(T.feeAmount),T.nextSqrtPrice.eq(v.sqrtPrice)?(m=v.liquidityNet.mul(new Me.default(-1)),t?xe.is_neg(m)?s=s.add(new Me.default(xt(BigInt(m.toString()),128))):s=s.add(m):xe.is_neg(m)?s=s.sub(new Me.default(xt(BigInt(m.toString()),128))):s=s.sub(m),a=v.sqrtPrice):a=T.nextSqrtPrice,u.crossTickNum+=1,o.eq(re))break}return u.amountIn=u.amountIn.add(u.feeAmount),u.nextSqrtPrice=a,u}function ca(t,e,n){let i=Me.default.min(t,e),r=Me.default.max(t,e),o=xe.fromX64_BN(n.mul(r).mul(i)),s=r.sub(i);return o.div(s)}function ua(t,e,n){let i=Me.default.min(t,e),o=Me.default.max(t,e).sub(i);return n.shln(64).div(o)}var Ge=class{static updateFeeRate(t,e,n,i,r){let o=xe.checkMulDivCeil(e,new Me.default(i),Mr,64),s=n===0?re:xe.checkMulDivFloor(e,new Me.default(n),Mr,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 u=a.shln(64).div(t.liquidity);return r?t.feeGrowthGlobalA=t.feeGrowthGlobalA.add(u):t.feeGrowthGlobalB=t.feeGrowthGlobalB.add(u),{refFee:s,clmm:t}}static getCoinAmountFromLiquidity(t,e,n,i,r){let o=new Rt(t.toString()),s=new Rt(e.toString()),a=new Rt(n.toString()),u=new Rt(i.toString()),l,m;return e.lt(n)?(l=xe.toX64_Decimal(o).mul(u.sub(a)).div(a.mul(u)),m=new Rt(0)):e.lt(i)?(l=xe.toX64_Decimal(o).mul(u.sub(s)).div(s.mul(u)),m=xe.fromX64_Decimal(o.mul(s.sub(a)))):(l=new Rt(0),m=xe.fromX64_Decimal(o.mul(u.sub(a)))),r?{coinA:new Me.default(l.ceil().toString()),coinB:new Me.default(m.ceil().toString())}:{coinA:new Me.default(l.floor().toString()),coinB:new Me.default(m.floor().toString())}}static estLiquidityAndcoinAmountFromOneAmounts(t,e,n,i,r,o,s){let a=ne.sqrtPriceX64ToTickIndex(s),u=ne.tickIndexToSqrtPriceX64(t),l=ne.tickIndexToSqrtPriceX64(e),m;if(a<t){if(!i)throw new Y("lower tick cannot calculate liquidity by coinB","NotSupportedThisCoin");m=ca(u,l,n)}else if(a>e){if(i)throw new Y("upper tick cannot calculate liquidity by coinA","NotSupportedThisCoin");m=ua(l,u,n)}else i?m=ca(s,l,n):m=ua(s,u,n);let b=Ge.getCoinAmountFromLiquidity(m,s,u,l,r),v=r?D(b.coinA.toString()).mul(1+o).toString():D(b.coinA.toString()).mul(1-o).toString(),T=r?D(b.coinB.toString()).mul(1+o).toString():D(b.coinB.toString()).mul(1-o).toString();return{coinAmountA:b.coinA,coinAmountB:b.coinB,tokenMaxA:r?new Me.default(Rt.ceil(v).toString()):new Me.default(Rt.floor(v).toString()),tokenMaxB:r?new Me.default(Rt.ceil(T).toString()):new Me.default(Rt.floor(T).toString()),liquidityAmount:m,fix_amount_a:i}}static estimateLiquidityFromcoinAmounts(t,e,n,i){if(e>n)throw new Y("lower tick cannot be greater than lower tick","InvalidTwoTickIndex");let r=ne.sqrtPriceX64ToTickIndex(t),o=ne.tickIndexToSqrtPriceX64(e),s=ne.tickIndexToSqrtPriceX64(n);if(r<e)return ca(o,s,i.coinA);if(r>=n)return ua(s,o,i.coinB);let a=ca(t,s,i.coinA),u=ua(t,o,i.coinB);return Me.default.min(a,u)}static estCoinAmountsFromTotalAmount(t,e,n,i,r,o){let{ratioA:s,ratioB:a}=Ge.calculateDepositRatioFixTokenA(t,e,n),u=D(i).mul(s).div(r),l=D(i).mul(a).div(o);return{amountA:u,amountB:l}}static calculateDepositRatioFixTokenA(t,e,n){let i=new Me.default(1e8),{coinAmountB:r}=Ge.estLiquidityAndcoinAmountFromOneAmounts(t,e,i,!0,!0,0,n),o=ne.sqrtPriceX64ToPrice(n,0,0),s=D(i.toString()).mul(o),a=s.add(r.toString()),u=s.div(a),l=D(r.toString()).div(a);return{ratioA:u,ratioB:l}}};function zu(t){return t.startsWith("0x")?`${t.slice(2)}`:t}var rv=0,ip=1,ov=2;function Xh(t,e){return t===e?rv:t<e?ip:ov}function sv(t,e){let n=0,i=t.length<=e.length?t.length:e.length,r=Xh(t.length,e.length);for(;n<i;){let o=Xh(t.charCodeAt(n),e.charCodeAt(n));if(n+=1,o!==0)return o}return r}function pa(t,e){return sv(t,e)===ip}function Nr(t,...e){let n=Array.isArray(e[e.length-1])?e.pop():[],r=[t,...e].filter(Boolean).join("::");return n&&n.length&&(r+=`<${n.join(", ")}>`),r}function z(t){try{let e=t.replace(/\s/g,""),i=e.match(/(<.+>)$/)?.[0]?.match(/(\w+::\w+::\w+)(?:<.*?>(?!>))?/g);if(i){e=e.slice(0,e.indexOf("<"));let u={...z(e),type_arguments:i.map(l=>z(l).source_address)};return u.type_arguments=u.type_arguments.map(l=>Ce.isSuiCoin(l)?l:z(l).source_address),u.source_address=Nr(u.full_address,u.type_arguments),u}let r=e.split("::"),s={full_address:e,address:e===Po||e===dv?"0x2":(0,wa.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=Nr(s.full_address,s.type_arguments),s}catch{return{full_address:t,address:"",module:"",name:"",type_arguments:[],source_address:t}}}function qt(t){return z(t).source_address}function av(t){return t.toLowerCase().startsWith("0x")?(0,wa.normalizeSuiObjectId)(t):t}var cv=(t,e=!0)=>{let n=t.split("::"),i=n.shift(),r=(0,wa.normalizeSuiObjectId)(i);return e&&(r=zu(r)),`${r}::${n.join("::")}`};function ba(t){for(let e in t){let n=typeof t[e];if(n==="object")ba(t[e]);else if(n==="string"){let i=t[e];i&&!i.includes("::")&&(t[e]=av(i))}}}var uv="0x2::coin::Coin",lv=/^0x2::coin::Coin<(.+)>$/;var Po="0x2::sui::SUI",dv="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI";var Ce=class{static getCoinTypeArg(t){let e=t.type.match(lv);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 n=BigInt(0);return t.forEach(i=>{e===i.coinAddress&&(n+=BigInt(i.balance))}),n}static getID(t){return t.fields.id.id}static getCoinTypeFromArg(t){return`${uv}<${t}>`}static getFaucetCoins(t){let{events:e}=t,n=[];return e?.forEach(i=>{let{type:r}=i;if(z(r).name==="InitEvent"){let o=i.parsedJson;n.push({transactionModule:i.transactionModule,suplyID:o.suplyID,decimals:o.decimals})}}),n}static getCoinAssets(t,e){let n=[];return e.forEach(i=>{qt(i.coinAddress)===qt(t)&&n.push(i)}),n}static isSuiCoin(t){return z(t).full_address===Po}static selectCoinObjectIdGreaterThanOrEqual(t,e,n=[]){let i=Ce.selectCoinAssetGreaterThanOrEqual(t,e,n),r=i.selectedCoins.map(a=>a.coinObjectId),o=i.remainingCoins,s=i.selectedCoins.map(a=>a.balance.toString());return{objectArray:r,remainCoins:o,amountArray:s}}static selectCoinAssetGreaterThanOrEqual(t,e,n=[]){let i=Ce.sortByBalance(t.filter(u=>!n.includes(u.coinObjectId))),r=Ce.calculateTotalBalance(i);if(r<e)return{selectedCoins:[],remainingCoins:i};if(r===e)return{selectedCoins:i,remainingCoins:[]};let o=BigInt(0),s=[],a=[...i];for(;o<r;){let u=e-o,l=a.findIndex(b=>b.balance>=u);if(l!==-1){s.push(a[l]),a.splice(l,1);break}let m=a.pop();m.balance>0&&(s.push(m),o+=m.balance)}return{selectedCoins:Ce.sortByBalance(s),remainingCoins:Ce.sortByBalance(a)}}static sortByBalance(t){return t.sort((e,n)=>e.balance<n.balance?-1:e.balance>n.balance?1:0)}static sortByBalanceDes(t){return t.sort((e,n)=>e.balance>n.balance?-1:e.balance<n.balance?0:1)}static calculateTotalBalance(t){return t.reduce((e,n)=>e+n.balance,BigInt(0))}};var Fr=class{numerator;denominator;constructor(t,e){this.toString=()=>`${this.numerator.toString()}/${this.denominator.toString()}`,this.numerator=t,this.denominator=e}static fromDecimal(t){return Fr.fromFraction(t.toDecimalPlaces(1).mul(10).toNumber(),1e3)}static fromFraction(t,e){let n=typeof t=="number"?new Ru.default(t.toString()):t,i=typeof e=="number"?new Ru.default(e.toString()):e;return new Fr(n,i)}};function qu(t,{numerator:e,denominator:n},i){return i?t.mul(n.add(e)).div(n):t.mul(n).div(n.add(e))}function va(t,e,n){return{tokenMaxA:qu(t.coinA,e,n),tokenMaxB:qu(t.coinB,e,n)}}function D(t){return $.isDecimal(t)?t:new $(t===void 0?0:t)}function pv(t){return D(10).pow(D(t).abs())}function Eo(t){return t.data}function rp(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 op(t){if(t.error&&"object_id"in t.error&&!("version"in t.error)&&!("digest"in t.error))return t.error.object_id}function mv(t){if("reference"in t)return t.reference;let e=Eo(t);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:rp(t)}function Ht(t){return"objectId"in t?t.objectId:mv(t)?.objectId??op(t)}function gv(t){return t.data!==void 0}function _v(t){return t.content!==void 0}function sp(t){let e="data"in t?Eo(t):t;if(!(!e||!_v(e)||e.content.dataType!=="moveObject"))return e.content}function Lt(t){return sp(t)?.type}function Dn(t){let e=gv(t)?t.data:t;return!e?.type&&"data"in t?e?.content?.dataType==="package"?"package":Lt(t):e?.type}function Qi(t){return Eo(t)?.previousTransaction}function Rr(t){return Eo(t)?.owner}function yv(t){let e=Eo(t)?.display;return e||{data:null,error:null}}function te(t){let e=sp(t)?.fields;if(e)return"fields"in e?e.fields:e}function ap(t,e){let n=pv(D(e));return Number(D(t).mul(n))}function xt(t,e=32){return BigInt.asUintN(e,BigInt(t)).toString()}function $e(t,e=32){return Number(BigInt.asIntN(e,BigInt(t)))}function wv(t,e,n){let i=z(t).name,r=z(e).name;return`${i}-${r}[${n}]`}function Nu(t){let e=Lt(t),n=z(e),i=te(t);if(i==null)throw new Y(`Pool id ${Ht(t)} not exists.`,"InvalidPoolObject");let r=[];i.rewarder_manager.fields.rewarders.forEach(s=>{let{emissions_per_second:a}=s.fields,u=xe.fromX64(new gn.default(a)),l=Math.floor(u.toNumber()*60*60*24);r.push({emissions_per_second:a,coinAddress:z(s.fields.reward_coin.fields.name).source_address,growth_global:s.fields.growth_global,emissionsEveryDay:l})});let o={poolAddress:Ht(t),poolType:e,coinTypeA:n.type_arguments[0],coinTypeB:n.type_arguments[1],coinAmountA:i.coin_a,coinAmountB:i.coin_b,current_sqrt_price:i.current_sqrt_price,current_tick_index:$e(BigInt(i.current_tick_index.fields.bits)),fee_growth_global_a:i.fee_growth_global_a,fee_growth_global_b:i.fee_growth_global_b,fee_protocol_coin_a:i.fee_protocol_coin_a,fee_protocol_coin_b:i.fee_protocol_coin_b,fee_rate:i.fee_rate,is_pause:i.is_pause,liquidity:i.liquidity,position_manager:{positions_handle:i.position_manager.fields.positions.fields.id.id,size:i.position_manager.fields.positions.fields.size},rewarder_infos:r,rewarder_last_updated_time:i.rewarder_manager.fields.last_updated_time,tickSpacing:i.tick_spacing,ticks_handle:i.tick_manager.fields.ticks.fields.id.id,uri:i.url,index:Number(i.index),name:""};return o.name=wv(o.coinTypeA,o.coinTypeB,o.tickSpacing),o}function er(t){let e=yv(t).data,n={creator:"",description:"",image_url:"",link:"",name:"",project_url:""};return e&&(n.creator=e.creator,n.description=e.description,n.image_url=e.image_url,n.link=e.link,n.name=e.name,n.project_url=e.project_url),n}function ni(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:""},n={...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"},i=te(t);if(i){let s=Lt(t),a=Rr(t);"nft"in i?(i=i.nft.fields,e.description=i.description,e.name=i.name,e.link=i.url):e=er(t),n={...e,pos_object_id:i.id.id,owner:a.AddressOwner,type:s,coin_type_a:i.coin_type_a.fields.name,coin_type_b:i.coin_type_b.fields.name,liquidity:i.liquidity,tick_lower_index:$e(BigInt(i.tick_lower_index.fields.bits)),tick_upper_index:$e(BigInt(i.tick_upper_index.fields.bits)),index:i.index,pool:i.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=rp(t);r&&(n.pos_object_id=r.objectId,n.position_status="Deleted");let o=op(t);return o&&(n.pos_object_id=o,n.position_status="NotExists"),n}function cp(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:u}="fields"in o?o.fields:o;s===0?(e.reward_amount_owed_0=a,e.reward_growth_inside_0=u):s===1?(e.reward_amount_owed_1=a,e.reward_growth_inside_1=u):s===2&&(e.reward_amount_owed_2=a,e.reward_growth_inside_2=u)});let n="fields"in t.tick_lower_index?t.tick_lower_index.fields.bits:t.tick_lower_index.bits,i="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(n)),tick_upper_index:$e(BigInt(i)),...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 Fu(t){if(t.error!=null||t.data?.content?.dataType!=="moveObject")throw new Y(`Tick not exists. Get tick data error:${t.error}`,"InvalidTickObject");let n=te(t).value.fields.value.fields;return{objectId:Ht(t),index:$e(BigInt(n.index.fields.bits)),sqrtPrice:new gn.default(n.sqrt_price),liquidityNet:new gn.default(n.liquidity_net.fields.bits),liquidityGross:new gn.default(n.liquidity_gross),feeGrowthOutsideA:new gn.default(n.fee_growth_outside_a),feeGrowthOutsideB:new gn.default(n.fee_growth_outside_b),rewardersGrowthOutside:n.rewards_growth_outside}}function bv(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)),n=new gn.default(t.sqrt_price),i=new gn.default(t.liquidity_net.bits),r=new gn.default(t.liquidity_gross),o=new gn.default(t.fee_growth_outside_a),s=new gn.default(t.fee_growth_outside_b),a=t.rewards_growth_outside||[];return{objectId:"",index:e,sqrtPrice:n,liquidityNet:i,liquidityGross:r,feeGrowthOutsideA:o,feeGrowthOutsideB:s,rewardersGrowthOutside:a}}function vv(t,e,n,i,r,o){let s=t.rewarder_infos,a=[];for(let u=0;u<s.length;u+=1){let l=o[u];e!==null&&(t.current_tick_index<i?l=o[u].sub(new Hi.default(e.rewardersGrowthOutside[u])):l=e.rewardersGrowthOutside[u]);let m=new Hi.default(0);n!==null&&(t.current_tick_index>=r?m=o[u].sub(new Hi.default(n.rewardersGrowthOutside[u])):m=n.rewardersGrowthOutside[u]);let b=xe.subUnderflowU128(xe.subUnderflowU128(new Hi.default(o[u]),new Hi.default(l)),new Hi.default(m));a.push(b)}return a}function ma(t){let e=Ce.isSuiCoin(t.coinTypeA),n=Ce.isSuiCoin(t.coinTypeB);return{isAdjustCoinA:e,isAdjustCoinB:n}}function kv(t,e){return $.ceil(D(t).div(1+e)).toString()}var ae=class{static createCollectRewarderAndFeeParams(t,e,n,i,r,o){r===void 0&&(r=[...i]),o===void 0&&(o=[...i]);let s=qt(n.coinTypeA),a=qt(n.coinTypeB);if(n.collect_fee){let l=ae.buildCoinForAmount(e,r,BigInt(0),s,!1);r=l.remainCoins;let m=ae.buildCoinForAmount(e,o,BigInt(0),a,!1);o=m.remainCoins,e=t.Position.createCollectFeePaylod({pool_id:n.pool_id,pos_id:n.pos_id,coinTypeA:n.coinTypeA,coinTypeB:n.coinTypeB},e,l.targetCoin,m.targetCoin)}let u=[];return n.rewarder_coin_types.forEach(l=>{switch(qt(l)){case s:u.push(ae.buildCoinForAmount(e,r,BigInt(0),l,!1).targetCoin);break;case a:u.push(ae.buildCoinForAmount(e,o,BigInt(0),l,!1).targetCoin);break;default:u.push(ae.buildCoinForAmount(e,i,BigInt(0),l,!1).targetCoin);break}}),e=t.Rewarder.createCollectRewarderPaylod(n,e,u),e}static async adjustTransactionForGas(t,e,n,i){i.setSender(t.senderAddress);let r=Ce.selectCoinAssetGreaterThanOrEqual(e,n).selectedCoins;if(r.length===0)throw new Y("Insufficient balance","InsufficientBalance");let o=Ce.calculateTotalBalance(e);if(o-n>1e9)return{fixAmount:n};let s=await t.fullClient.calculationTxGas(i);if(Ce.selectCoinAssetGreaterThanOrEqual(e,BigInt(s),r.map(u=>u.coinObjectId)).selectedCoins.length===0){let u=BigInt(s)+BigInt(500);if(o-n<u){if(n-=u,n<0)throw new Y("gas Insufficient balance","InsufficientBalance");let l=new Xi.TransactionBlock;return{fixAmount:n,newTx:l}}}return{fixAmount:n}}static async buildAddLiquidityFixTokenForGas(t,e,n,i){let r=await ae.buildAddLiquidityFixToken(t,e,n),{isAdjustCoinA:o}=ma(n),s=o?n.amount_a:n.amount_b,a=await ae.adjustTransactionForGas(t,Ce.getCoinAssets(o?n.coinTypeA:n.coinTypeB,e),BigInt(s),r),{fixAmount:u}=a,{newTx:l}=a;if(l!==void 0){let m,b;if(o)n.amount_a=Number(u),m=ae.buildAddLiquidityFixTokenCoinInput(l,!n.fix_amount_a,u.toString(),n.slippage,n.coinTypeA,e,!1),b=ae.buildAddLiquidityFixTokenCoinInput(l,n.fix_amount_a,n.amount_b,n.slippage,n.coinTypeB,e,!1);else return n.amount_b=Number(u),m=ae.buildAddLiquidityFixTokenCoinInput(l,!n.fix_amount_a,n.amount_a,n.slippage,n.coinTypeA,e,!1),b=ae.buildAddLiquidityFixTokenCoinInput(l,n.fix_amount_a,u.toString(),n.slippage,n.coinTypeB,e,!1),n=ae.fixAddLiquidityFixTokenParams(n,i.slippage,i.curSqrtPrice),r=await ae.buildAddLiquidityFixTokenArgs(l,t,e,n,m,b),r}return r}static async buildAddLiquidityFixToken(t,e,n){if(t.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let i=new Xi.TransactionBlock,r=ae.buildAddLiquidityFixTokenCoinInput(i,!n.fix_amount_a,n.amount_a,n.slippage,n.coinTypeA,e,!1),o=ae.buildAddLiquidityFixTokenCoinInput(i,n.fix_amount_a,n.amount_b,n.slippage,n.coinTypeB,e,!1);return i=ae.buildAddLiquidityFixTokenArgs(i,t,e,n,r,o),i}static buildAddLiquidityFixTokenCoinInput(t,e,n,i,r,o,s=!0){return e?ae.buildCoinForAmountInterval(t,o,{amountSecond:BigInt(kv(n,i)),amountFirst:BigInt(n)},r,s):ae.buildCoinForAmount(t,o,BigInt(n),r,s)}static fixAddLiquidityFixTokenParams(t,e,n){let i=t.fix_amount_a?t.amount_a:t.amount_b,r=Ge.estLiquidityAndcoinAmountFromOneAmounts(Number(t.tick_lower),Number(t.tick_upper),new Io.default(i),t.fix_amount_a,!0,e,n);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,n,i,r,o){let s=[i.coinTypeA,i.coinTypeB],a=i.is_open?"open_position_with_liquidity_by_fix_coin":"add_liquidity_by_fix_coin",{clmm_pool:u,integrate:l}=e.sdkOptions;i.is_open||(t=ae.createCollectRewarderAndFeeParams(e,t,i,n,r.remainCoins,o.remainCoins));let m=R(u),b=i.is_open?[t.object(m.global_config_id),t.object(i.pool_id),t.pure(xt(BigInt(i.tick_lower)).toString()),t.pure(xt(BigInt(i.tick_upper)).toString()),r.targetCoin,o.targetCoin,t.pure(i.amount_a),t.pure(i.amount_b),t.pure(i.fix_amount_a),t.object(W)]:[t.object(m.global_config_id),t.object(i.pool_id),t.object(i.pos_id),r.targetCoin,o.targetCoin,t.pure(i.amount_a),t.pure(i.amount_b),t.pure(i.fix_amount_a),t.object(W)];return t.moveCall({target:`${l.published_at}::${ti}::${a}`,typeArguments:s,arguments:b}),t}static async buildSwapTransactionForGas(t,e,n,i){let r=ae.buildSwapTransaction(t,e,n);r.setSender(t.senderAddress);let o=await ae.adjustTransactionForGas(t,Ce.getCoinAssets(e.a2b?e.coinTypeA:e.coinTypeB,n),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,i);let u=ae.buildCoinForAmount(r,n,e.a2b?BigInt(e.by_amount_in?e.amount:e.amount_limit):BigInt(0),e.coinTypeA),l=ae.buildCoinForAmount(r,n,e.a2b?BigInt(0):BigInt(e.by_amount_in?e.amount:e.amount_limit),e.coinTypeB);r=ae.buildSwapTransactionArgs(a,e,t.sdkOptions,u,l)}return r}static buildSwapTransaction(t,e,n){let i=new Xi.TransactionBlock;i.setSender(t.senderAddress);let r=ae.buildCoinForAmount(i,n,e.a2b?BigInt(e.by_amount_in?e.amount:e.amount_limit):BigInt(0),e.coinTypeA,!1),o=ae.buildCoinForAmount(i,n,e.a2b?BigInt(0):BigInt(e.by_amount_in?e.amount:e.amount_limit),e.coinTypeB,!1);return i=ae.buildSwapTransactionArgs(i,e,t.sdkOptions,r,o),i}static buildSwapTransactionArgs(t,e,n,i,r){let{clmm_pool:o,integrate:s}=n,a=En.getDefaultSqrtPriceLimit(e.a2b),u=[e.coinTypeA,e.coinTypeB],{global_config_id:l}=R(o);if(l===void 0)throw Error("clmm.config.global_config_id is undefined");let m=e.swap_partner!==void 0,b=m?e.a2b?"swap_a2b_with_partner":"swap_b2a_with_partner":e.a2b?"swap_a2b":"swap_b2a",v=m?[t.pure(l),t.pure(e.pool_id),t.pure(e.swap_partner),i.targetCoin,r.targetCoin,t.pure(e.by_amount_in),t.pure(e.amount),t.pure(e.amount_limit),t.pure(a.toString()),t.pure(W)]:[t.pure(l),t.pure(e.pool_id),i.targetCoin,r.targetCoin,t.pure(e.by_amount_in),t.pure(e.amount),t.pure(e.amount_limit),t.pure(a.toString()),t.pure(W)];return t.moveCall({target:`${s.published_at}::${ti}::${b}`,typeArguments:u,arguments:v}),t}static async buildSwapTransactionWithoutTransferCoinsForGas(t,e,n,i){let{tx:r,coinABs:o}=ae.buildSwapTransactionWithoutTransferCoins(t,e,n);r.setSender(t.senderAddress);let s=await ae.adjustTransactionForGas(t,Ce.getCoinAssets(e.a2b?e.coinTypeA:e.coinTypeB,n),BigInt(e.by_amount_in?e.amount:e.amount_limit),r),{fixAmount:a,newTx:u}=s;if(u!==void 0){u.setSender(t.senderAddress),e.by_amount_in?e.amount=a.toString():e.amount_limit=a.toString(),e=await ae.fixSwapParams(t,e,i);let l=ae.buildCoinForAmount(r,n,e.a2b?BigInt(e.by_amount_in?e.amount:e.amount_limit):BigInt(0),e.coinTypeA,!1,!0),m=ae.buildCoinForAmount(r,n,e.a2b?BigInt(0):BigInt(e.by_amount_in?e.amount:e.amount_limit),e.coinTypeB,!1,!0),b=ae.buildSwapTransactionWithoutTransferCoinArgs(t,u,e,t.sdkOptions,l,m);r=b.tx,o=b.txRes}return{tx:r,coinABs:o}}static buildSwapTransactionWithoutTransferCoins(t,e,n){let i=new Xi.TransactionBlock;i.setSender(t.senderAddress);let r=ae.buildCoinForAmount(i,n,e.a2b?BigInt(e.by_amount_in?e.amount:e.amount_limit):BigInt(0),e.coinTypeA,!1,!0),o=ae.buildCoinForAmount(i,n,e.a2b?BigInt(0):BigInt(e.by_amount_in?e.amount:e.amount_limit),e.coinTypeB,!1,!0),s=ae.buildSwapTransactionWithoutTransferCoinArgs(t,i,e,t.sdkOptions,r,o);return{tx:s.tx,coinABs:s.txRes}}static buildSwapTransactionWithoutTransferCoinArgs(t,e,n,i,r,o){let{clmm_pool:s,integrate:a}=i,u=En.getDefaultSqrtPriceLimit(n.a2b),{global_config_id:l}=R(s);if(l===void 0)throw Error("clmm.config.global_config_id is undefined");let m=n.swap_partner!==void 0,b=m?"swap_with_partner":"swap",v=m?ju:Ci,T=m?[e.pure(l),e.pure(n.pool_id),e.pure(n.swap_partner),r.targetCoin,o.targetCoin,e.pure(n.a2b),e.pure(n.by_amount_in),e.pure(n.amount),e.pure(u.toString()),e.pure(!1),e.pure(W)]:[e.pure(l),e.pure(n.pool_id),r.targetCoin,o.targetCoin,e.pure(n.a2b),e.pure(n.by_amount_in),e.pure(n.amount),e.pure(u.toString()),e.pure(!1),e.pure(W)],O=[n.coinTypeA,n.coinTypeB],P=e.moveCall({target:`${a.published_at}::${v}::${b}`,typeArguments:O,arguments:T});if(n.by_amount_in){let M=n.a2b?n.coinTypeB:n.coinTypeA,B=n.a2b?P[1]:P[0],E=Number(n.amount_limit);this.checkCoinThreshold(t,n.by_amount_in,e,B,E,M)}return{tx:e,txRes:P}}static async fixSwapParams(t,e,n){let{currentPool:i}=n;try{let r=await t.Swap.preswap({decimalsA:n.decimalsA,decimalsB:n.decimalsB,a2b:e.a2b,byAmountIn:e.by_amount_in,amount:e.amount,pool:i,currentSqrtPrice:i.current_sqrt_price,coinTypeA:i.coinTypeA,coinTypeB:i.coinTypeB}),o=n.byAmountIn?r.estimatedAmountOut:r.estimatedAmountIn,s=qu(o,n.slippage,!n.byAmountIn);e.amount_limit=s.toString()}catch(r){console.log("fixSwapParams",r)}return e}static async syncBuildCoinInputForAmount(t,e,n,i,r=!0){if(t.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let o=await t.getOwnerCoinAssets(t.senderAddress,i);return ae.buildCoinForAmount(e,o,n,i,r).targetCoin}static buildCoinForAmount(t,e,n,i,r=!0,o=!1){let s=Ce.getCoinAssets(i,e);if(n===BigInt(0)&&s.length===0)return ae.buildZeroValueCoin(e,t,i,r);let a=Ce.calculateTotalBalance(s);if(a<n)throw new Y(`The amount(${a}) is Insufficient balance for ${i} , expect ${n} `,"InsufficientBalance");return ae.buildCoin(t,e,s,n,i,r,o)}static buildCoin(t,e,n,i,r,o=!0,s=!1){if(Ce.isSuiCoin(r)){if(o){let E=t.splitCoins(t.gas,[t.pure(i.toString())]);return{targetCoin:t.makeMoveVec({objects:[E]}),remainCoins:e,tragetCoinAmount:i.toString(),isMintZeroCoin:!1,originalSplitedCoin:t.gas}}if(i===0n&&n.length>1){let E=Ce.selectCoinObjectIdGreaterThanOrEqual(n,i);return{targetCoin:t.object(E.objectArray[0]),remainCoins:E.remainCoins,tragetCoinAmount:E.amountArray[0],isMintZeroCoin:!1}}let M=Ce.selectCoinObjectIdGreaterThanOrEqual(n,i);return{targetCoin:t.splitCoins(t.gas,[t.pure(i.toString())]),remainCoins:M.remainCoins,tragetCoinAmount:i.toString(),isMintZeroCoin:!1,originalSplitedCoin:t.gas}}let a=Ce.selectCoinObjectIdGreaterThanOrEqual(n,i),u=a.amountArray.reduce((M,B)=>Number(M)+Number(B),0).toString(),l=a.objectArray;if(o)return{targetCoin:t.makeMoveVec({objects:l.map(M=>t.object(M))}),remainCoins:a.remainCoins,tragetCoinAmount:a.amountArray.reduce((M,B)=>Number(M)+Number(B),0).toString(),isMintZeroCoin:!1};let[m,...b]=l,v=t.object(m),T=v,O=a.amountArray.reduce((M,B)=>Number(M)+Number(B),0).toString(),P;return b.length>0&&t.mergeCoins(v,b.map(M=>t.object(M))),s&&Number(u)>Number(i)&&(T=t.splitCoins(v,[t.pure(i.toString())]),O=i.toString(),P=v),{targetCoin:T,remainCoins:a.remainCoins,originalSplitedCoin:P,tragetCoinAmount:O,isMintZeroCoin:!1}}static buildZeroValueCoin(t,e,n,i=!0){let r=ae.callMintZeroValueCoin(e,n),o;return i?o=e.makeMoveVec({objects:[r]}):o=r,{targetCoin:o,remainCoins:t,isMintZeroCoin:!0,tragetCoinAmount:"0"}}static buildCoinForAmountInterval(t,e,n,i,r=!0){let o=Ce.getCoinAssets(i,e);if(n.amountFirst===BigInt(0))return o.length>0?ae.buildCoin(t,[...e],[...o],n.amountFirst,i,r):ae.buildZeroValueCoin(e,t,i,r);let s=Ce.calculateTotalBalance(o);if(s>=n.amountFirst)return ae.buildCoin(t,[...e],[...o],n.amountFirst,i,r);if(s<n.amountSecond)throw new Y(`The amount(${s}) is Insufficient balance for ${i} , expect ${n.amountSecond} `,"InsufficientBalance");return ae.buildCoin(t,[...e],[...o],n.amountSecond,i,r)}static async buildRouterSwapTransaction(t,e,n,i,r){let o=new Xi.TransactionBlock;return e.paths.length>1&&(e.partner=""),o=await this.buildRouterBasePathTx(t,e,n,i,o,r),o}static async buildRouterBasePathTx(t,e,n,i,r,o){let s=e.paths.filter(q=>q&&q.poolAddress),a=Number(s.reduce((q,K)=>q.add(K.amountIn),re).toString()),u=Number(s.reduce((q,K)=>q.add(K.amountOut),re).toString()),l=Math.round(n?Number(u.toString())*(1-e.priceSlippagePoint):Number(a.toString())*(1+e.priceSlippagePoint)),m=e.paths[0].coinType[0],b=e.paths[0].coinType[e.paths[0].coinType.length-1],v=ae.buildCoinForAmount(r,i,BigInt(n?a:l),m,!1,!0),T=v.originalSplitedCoin!==void 0,O=ae.buildCoinForAmount(r,i,0n,b,!1),P=await this.buildRouterBasePathReturnCoins(t,e,n,v,O,r),M=[],{toCoin:B,fromCoin:E}=P;if(r=P.tx,O.isMintZeroCoin?M.push({coinType:b,coin:B}):O.originalSplitedCoin!==void 0?r.mergeCoins(O.originalSplitedCoin,[B]):r.mergeCoins(O.targetCoin,[B]),T){let q=v?.originalSplitedCoin;r.mergeCoins(q,[E])}else M.push({coinType:m,coin:E});for(let q=0;q<M.length;q++)this.buildTransferCoin(t,r,M[q].coin,M[q].coinType,o);return r}static async buildRouterBasePathReturnCoins(t,e,n,i,r,o){let{clmm_pool:s,integrate:a}=t.sdkOptions,u=R(s).global_config_id,l=e.paths.filter(q=>q&&q.poolAddress),m=Number(l.reduce((q,K)=>q.add(K.amountIn),re).toString()),b=Number(l.reduce((q,K)=>q.add(K.amountOut),re).toString()),v=Math.round(n?Number(b.toString())*(1-e.priceSlippagePoint):Number(m.toString())*(1+e.priceSlippagePoint)),T=e.paths[0].coinType[0],O=e.paths[0].coinType[e.paths[0].coinType.length-1],P=i.targetCoin,M;r.isMintZeroCoin||r.originalSplitedCoin!==void 0?M=r.targetCoin:M=ae.callMintZeroValueCoin(o,O);let B=e.partner==="",E=B?Ci:ju;for(let q of l)if(q.poolAddress.length===1){let K=q.a2b[0],X={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",Z=K?P:M,A=K?M:P,I=n?q.amountIn.toString():q.amountOut.toString(),x=En.getDefaultSqrtPriceLimit(K).toString(),j=B?[o.object(u),o.object(q.poolAddress[0]),Z,A,o.pure(K),o.pure(n),o.pure(I),o.pure(x),o.pure(!1),o.object(W)]:[o.object(u),o.object(q.poolAddress[0]),o.pure(e.partner),Z,A,o.pure(K),o.pure(n),o.pure(I),o.pure(x),o.pure(!1),o.object(W)],k=[X.poolCoinA,X.poolCoinB],S=o.moveCall({target:`${t.sdkOptions.integrate.published_at}::${E}::${G}`,typeArguments:k,arguments:j});P=K?S[0]:S[1],M=K?S[1]:S[0]}else{let K=n?q.amountIn:q.rawAmountLimit[0],X=n?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 Z=En.getDefaultSqrtPriceLimit(q.a2b[0]),A=En.getDefaultSqrtPriceLimit(q.a2b[1]),I=B?[o.object(u),o.object(q.poolAddress[0]),o.object(q.poolAddress[1]),P,M,o.pure(n),o.pure(K.toString()),o.pure(X.toString()),o.pure(Z.toString()),o.pure(A.toString()),o.object(W)]:[o.object(u),o.object(q.poolAddress[0]),o.object(q.poolAddress[1]),o.pure(e.partner),P,M,o.pure(n),o.pure(K.toString()),o.pure(X.toString()),o.pure(Z.toString()),o.pure(A.toString()),o.object(W)],x=[q.coinType[0],q.coinType[1],q.coinType[2]],j=o.moveCall({target:`${a.published_at}::${E}::${G}`,typeArguments:x,arguments:I});P=j[0],M=j[1]}return this.checkCoinThreshold(t,n,o,M,v,O),{fromCoin:P,toCoin:M,tx:o}}static async buildAggregatorSwapReturnCoins(t,e,n,i,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 u,l,m=e.splitPaths.some(b=>b.basePaths.some(v=>v.label==="Deepbook"));if((!e.byAmountIn||e.splitPaths.length===1)&&!m){let b=[];for(let O of e.splitPaths){let P=[],M=[],B=[],E=[];for(let K=0;K<O.basePaths.length;K+=1){let X=O.basePaths[K];P.push(X.direction),M.push(X.poolAddress),B.push(new Io.default(X.inputAmount.toString())),K===0?E.push(X.fromCoin,X.toCoin):E.push(X.toCoin)}let q={amountIn:new Io.default(O.inputAmount.toString()),amountOut:new Io.default(O.outputAmount.toString()),poolAddress:M,a2b:P,rawAmountLimit:B,isExceed:!1,coinType:E};b.push(q)}let v={paths:b,partner:r,priceSlippagePoint:o},T=await this.buildRouterBasePathReturnCoins(t,v,e.byAmountIn,n,i,s);u=T.fromCoin,l=T.toCoin,s=T.tx}else{let b=Math.round(e.outputAmount*(1-o));u=n.targetCoin,i.isMintZeroCoin||i.originalSplitedCoin!==void 0?l=i.targetCoin:l=ae.callMintZeroValueCoin(s,e.toCoin);let v=!1,T;if(m){let[O,P]=Zh.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],M;for(let B=0;B<P.basePaths.length;B+=1){let E=P.basePaths[B];if(E.label==="Deepbook")if(B===0)if(P.basePaths.length===1){let q=this.buildDeepbookBasePathTx(t,E,s,T,u,l,!1);u=q.from,l=q.to}else{M=ae.callMintZeroValueCoin(s,E.toCoin);let q=this.buildDeepbookBasePathTx(t,E,s,T,u,M,!1);u=q.from,M=q.to}else{let q=this.buildDeepbookBasePathTx(t,E,s,T,M,l,!0);M=q.from,l=q.to}if(E.label==="Cetus")if(B===0)if(P.basePaths.length===1){let q=this.buildClmmBasePathTx(t,E,s,e.byAmountIn,u,l,!1,r);u=q.from,l=q.to}else{M=ae.callMintZeroValueCoin(s,E.toCoin);let q=this.buildClmmBasePathTx(t,E,s,e.byAmountIn,u,M,!1,r);u=q.from,M=q.to}else{let q=this.buildClmmBasePathTx(t,E,s,e.byAmountIn,M,l,!0,r);M=q.from,l=q.to,s.moveCall({target:`${t.sdkOptions.integrate.published_at}::${Gh}::send_coin`,typeArguments:[E.fromCoin],arguments:[M,s.pure(a)]})}}}this.checkCoinThreshold(t,e.byAmountIn,s,l,b,e.toCoin),v&&(s=Zh.deleteAccountCapByObject(T,t.sdkOptions,s))}return{fromCoin:u,toCoin:l,tx:s}}static async buildAggregatorSwapTransaction(t,e,n,i,r,o){let s=new Xi.TransactionBlock,a=e.byAmountIn?Math.round(e.outputAmount*(1-r)):Math.round(e.inputAmount*(1+r)),u=ae.buildCoinForAmount(s,n,e.byAmountIn?BigInt(e.inputAmount):BigInt(a),e.fromCoin,!1,!0),l=u.originalSplitedCoin!=null,m=ae.buildCoinForAmount(s,n,0n,e.toCoin,!1),b=await this.buildAggregatorSwapReturnCoins(t,e,u,m,i,r,s,o),{fromCoin:v,toCoin:T}=b;s=b.tx;let O=[];if(m.isMintZeroCoin?O.push({coinType:e.toCoin,coin:T}):m.originalSplitedCoin!=null?s.mergeCoins(m.originalSplitedCoin,[T]):s.mergeCoins(m.targetCoin,[T]),l){let P=u.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,n,i,r,o){e&&n.moveCall({target:`${t.sdkOptions.integrate.published_at}::${Ci}::check_coin_threshold`,typeArguments:[o],arguments:[i,n.pure(r)]})}static buildDeepbookBasePathTx(t,e,n,i,r,o,s){let a=e.direction?r:o,u=e.direction?o:r,l=[n.object(e.poolAddress),i,n.pure(e.inputAmount),n.pure(0),n.pure(e.direction),a,u,n.pure(s),n.object(W)],m=e.direction?[e.fromCoin,e.toCoin]:[e.toCoin,e.fromCoin],b=n.moveCall({target:`${t.sdkOptions.deepbook_endpoint_v2.published_at}::endpoints_v2::swap`,typeArguments:m,arguments:l});return r=e.direction?b[0]:b[1],o=e.direction?b[1]:b[0],{from:r,to:o,tx:n}}static buildClmmBasePathTx(t,e,n,i,r,o,s,a){let{clmm_pool:u,integrate:l}=t.sdkOptions,m=R(u).global_config_id,b=e.direction?r:o,v=e.direction?o:r,T=a==="",O=T?Ci:ju,P=T?"swap":"swap_with_partner",M=i?e.inputAmount.toString():e.outputAmount.toString(),B=En.getDefaultSqrtPriceLimit(e.direction),E=T?[n.object(m),n.object(e.poolAddress),b,v,n.pure(e.direction),n.pure(i),n.pure(M),n.pure(B.toString()),n.pure(s),n.object(W)]:[n.object(m),n.object(e.poolAddress),n.pure(a),b,v,n.pure(e.direction),n.pure(i),n.pure(M),n.pure(B.toString()),n.pure(s),n.object(W)],q=e.direction?[e.fromCoin,e.toCoin]:[e.toCoin,e.fromCoin],K=n.moveCall({target:`${l.published_at}::${O}::${P}`,typeArguments:q,arguments:E});return b=K[0],v=K[1],r=e.direction?b:v,o=e.direction?v:b,{from:r,to:o,tx:n}}static buildCoinTypePair(t,e){let n=[];if(t.length===2){let i=[];i.push(t[0],t[1]),n.push(i)}else{let i=[];i.push(t[0],t[t.length-1]),n.push(i);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]),n.push(o)}}return n}static buildTransferCoinToSender(t,e,n,i){e.moveCall({target:`${t.sdkOptions.integrate.published_at}::${Gh}::transfer_coin_to_sender`,typeArguments:[i],arguments:[n]})}static buildTransferCoin(t,e,n,i,r){r!=null?e.transferObjects([n],e.pure(r)):ae.buildTransferCoinToSender(t,e,n,i)}},oe=ae;Nb(oe,"callMintZeroValueCoin",(t,e)=>t.moveCall({target:"0x2::coin::zero",typeArguments:[e]}));function zt(t){return!(!t.startsWith("0x")||t.length!==66)}var Er=new Ft.default(1e9),Zh=class{static createAccountCap(t,e,n,i=!1){if(t.length===0)throw Error("this config sdk senderAddress is empty");let{deepbook:r}=e,[o]=n.moveCall({target:`${r.published_at}::${Kb}::create_account`,typeArguments:[],arguments:[]});return i&&n.transferObjects([o],n.pure(t)),[o,n]}static deleteAccountCap(t,e,n){let{deepbook:i}=e,r=[n.pure(t)];return n.moveCall({target:`${i.published_at}::${Bu}::delete_account_cap`,typeArguments:[],arguments:r}),n}static deleteAccountCapByObject(t,e,n){let{deepbook:i}=e,r=[t];return n.moveCall({target:`${i.published_at}::${Bu}::delete_account_cap`,typeArguments:[],arguments:r}),n}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:Bu}}});return e.data.length===0?"":e.data[0].data.objectId}static async getPools(t){let e=t.sdkOptions.deepbook.package_id,n=[];try{(await t.fullClient.queryEventsByPage({MoveEventType:`${e}::clob_v2::PoolCreated`})).data.forEach(r=>{let o=r.parsedJson;o&&n.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(i){console.log("getPoolImmutables",i)}return n}static async getPoolAsks(t,e,n,i){let{simulationAccount:r}=t.sdkOptions,{deepbook_endpoint_v2:o}=t.sdkOptions,s=new da.TransactionBlock,a=[],u=[n,i],l=[s.pure(e),s.pure("0"),s.pure("999999999999"),s.pure(W)];s.moveCall({target:`${o.published_at}::endpoints_v2::get_level2_book_status_ask_side`,arguments:l,typeArguments:u});let b=(await t.fullClient.devInspectTransactionBlock({transactionBlock:s,sender:r.address})).events?.filter(v=>z(v.type).name==="BookStatus");if(b.length===0)return a;for(let v=0;v<b[0].parsedJson.depths.length;v++){let T=b[0].parsedJson.price[v],O=b[0].parsedJson.depths[v],P={price:parseInt(T,10),quantity:parseInt(O,10)};a.push(P)}return a}static async getPoolBids(t,e,n,i){let{simulationAccount:r}=t.sdkOptions,{deepbook_endpoint_v2:o}=t.sdkOptions,s=new da.TransactionBlock,a=[],u=[n,i],l=[s.pure(e),s.pure("0"),s.pure("999999999999"),s.pure(W)];s.moveCall({target:`${o.published_at}::endpoints_v2::get_level2_book_status_bid_side`,arguments:l,typeArguments:u});let b=(await t.fullClient.devInspectTransactionBlock({transactionBlock:s,sender:r.address})).events?.filter(v=>z(v.type).name==="BookStatus");if(b.length===0)return a;for(let v=0;v<b[0].parsedJson.depths.length;v++){let T=b[0].parsedJson.price[v],O=b[0].parsedJson.depths[v],P={price:parseInt(T,10),quantity:parseInt(O,10)};a.push(P)}return a}static async preSwap(t,e,n,i){let r=!1,o=re,s=new Ft.default(i),a=re,u=new Ft.default(i);if(n){let l=await this.getPoolBids(t,e.poolID,e.baseAsset,e.quoteAsset);l===null&&(r=!0),l=l.sort((m,b)=>b.price-m.price);for(let m=0;m<l.length;m+=1){let b=new Ft.default(l[m].quantity),v=new Ft.default(l[m].price),T=b.mul(new Ft.default(v)).mul(new Ft.default(e.takerFeeRate)).div(Er).div(Er);if(s.gt(b))s=s.sub(b),o=o.add(b.mul(v).div(Er).sub(T)),a=a.add(T);else{let O=s.mul(new Ft.default(l[m].price)).div(Er),P=O.mul(new Ft.default(e.takerFeeRate)).div(Er);o=o.add(O.sub(P)),s=s.sub(s),a=a.add(P)}if(s.eq(re))break}}else{let l=await this.getPoolAsks(t,e.poolID,e.baseAsset,e.quoteAsset);l===null&&(r=!0);for(let m=0;m<l.length;m+=1){let b=new Ft.default(l[m].price).mul(new Ft.default(l[m].quantity)).div(new Ft.default(1e9)),v=b.mul(new Ft.default(e.takerFeeRate)).div(Er),T=b.add(v);if(s.gt(b))o=o.add(new Ft.default(l[m].quantity)),s=s.sub(T),a=a.add(v);else{let O=new Ft.default(l[m].quantity).div(new Ft.default(e.lotSize)),P=T.div(O),M=s.div(P);o=o.add(M.muln(e.lotSize)),s=s.sub(M.mul(P)),a=a.add(M.div(O).mul(v))}if(s.eq(re))break}}return{poolAddress:e.poolID,estimatedAmountIn:u.sub(s).toNumber(),estimatedAmountOut:o.toNumber(),estimatedFeeAmount:a,isExceed:r,amount:Number(i),aToB:n,byAmountIn:!0}}static async simulateSwap(t,e,n,i,r,o){let{deepbook_endpoint_v2:s}=t.sdkOptions,a=new da.TransactionBlock,u=await this.getAccountCap(t),l;if(u===""){let X=this.createAccountCap(t.senderAddress,t.sdkOptions,a),G=X[0];a=X[1],l=G}else l=a.pure(u);let m=await t.getOwnerCoinAssets(t.senderAddress),v=oe.buildCoinForAmount(a,m,BigInt(o),n,!1)?.targetCoin,O=oe.buildCoinForAmount(a,m,BigInt(o),i,!1)?.targetCoin,P=[n,i],M=[a.pure(e),l,a.pure(o),a.pure(0),a.pure(r),v,O,a.pure(W)];a.moveCall({target:`${s.published_at}::${zb}::swap`,arguments:M,typeArguments:P});let{simulationAccount:B}=t.sdkOptions,q=(await t.fullClient.devInspectTransactionBlock({transactionBlock:a,sender:B.address})).events?.filter(X=>z(X.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}}},Sv=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPositionList(t,e="all"){let n={data:[],hasNextPage:!0},i=await this._sdk.fullClient.getDynamicFieldsByPage(t,e);n.hasNextPage=i.hasNextPage,n.nextCursor=i.nextCursor;let r=i.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 n.data=o,n}async getPoolImmutables(t=[],e=0,n=100,i=!1){let{package_id:r}=this._sdk.sdkOptions.clmm_pool,o=`${r}_getInitPoolEvent`,s=this.getCache(o,i),a=[],u=[];if(s!==void 0&&a.push(...s),a.length===0)try{(await this._sdk.fullClient.queryEventsByPage({MoveEventType:`${r}::factory::CreatePoolEvent`})).data.forEach(b=>{let v=b.parsedJson;v&&a.push({poolAddress:v.pool_id,tickSpacing:v.tick_spacing,coinTypeA:z(v.coin_type_a).full_address,coinTypeB:z(v.coin_type_b).full_address})}),this.updateCache(o,a,J)}catch(m){console.log("getPoolImmutables",m)}let l=t.length>0;for(let m=0;m<a.length;m+=1){let b=a[m];l&&!t.includes(b.poolAddress)||!l&&(m<e||m>=e+n)||u.push(b)}return u}async getPools(t=[],e=0,n=100){let i=[],r=[];t.length>0?r=[...t]:(await this.getPoolImmutables([],e,n,!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=Nu(s);i.push(a);let u=`${a.poolAddress}_getPoolObject`;this.updateCache(u,a,J)}return i}async getPoolImmutablesWithPage(t="all",e=!1){let{package_id:n}=this._sdk.sdkOptions.clmm_pool,i=[],r={data:[],hasNextPage:!1},o=t==="all",s=`${n}_getPoolImmutables`;if(o){let a=this.getCache(s,e);a&&i.push(...a)}if(i.length===0)try{let a=`${n}::factory::CreatePoolEvent`,u=await this._sdk.fullClient.queryEventsByPage({MoveEventType:a},t);r.hasNextPage=u.hasNextPage,r.nextCursor=u.nextCursor,u.data.forEach(l=>{let m=l.parsedJson;if(m){let b={poolAddress:m.pool_id,tickSpacing:m.tick_spacing,coinTypeA:z(m.coin_type_a).full_address,coinTypeB:z(m.coin_type_b).full_address};i.push(b)}})}catch(a){console.log("getPoolImmutables",a)}return r.data=i,o&&this.updateCache(`${n}_getPoolImmutables`,i,J),r}async getPoolsWithPage(t=[]){let e=[],n=[];t.length>0?n=[...t]:(await this.getPoolImmutablesWithPage()).data.forEach(o=>n.push(o.poolAddress));let i=await this._sdk.fullClient.batchGetObjects(n,{showContent:!0,showType:!0});for(let r of i){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=Nu(r);e.push(o);let s=`${o.poolAddress}_getPoolObject`;this.updateCache(s,o,J)}return e}async getPool(t,e=!0){let n=`${t}_getPoolObject`,i=this.getCache(n,e);if(i!==void 0)return i;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=Nu(r);return this.updateCache(n,o),o}async creatPoolsTransactionPayload(t){for(let n of t)if(pa((0,xo.normalizeSuiAddress)(n.coinTypeA),(0,xo.normalizeSuiAddress)(n.coinTypeB))){let i=n.coinTypeB;n.coinTypeB=n.coinTypeA,n.coinTypeA=i}return await this.creatPool(t)}async creatPoolTransactionPayload(t){if(pa((0,xo.normalizeSuiAddress)(t.coinTypeA),(0,xo.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,n=`${e}_getInitEvent`,i=this.getCache(n,t);if(i!==void 0)return i;let r=await this._sdk.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=Qi(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(u=>{let l=u.parsedJson;if(u.type)switch(z(u.type).full_address){case`${e}::config::InitConfigEvent`:a.global_config_id=l.global_config_id,a.admin_cap_id=l.admin_cap_id;break;case`${e}::factory::InitFactoryEvent`:a.pools_id=l.pools_id;break;case`${e}::rewarder::RewarderInitEvent`:a.global_vault_id=l.global_vault_id;break;case`${e}::partner::InitPartnerEvent`:a.partners_id=l.partners_id;break;default:break}}),this.updateCache(n,a,J)),a}async getSuiTransactionResponse(t,e=!1){let n=`${t}_getSuiTransactionResponse`,i=this.getCache(n,e);if(i!==void 0)return i;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(n,r,J),r}async creatPool(t){let e=new Dr.TransactionBlock,{integrate:n,clmm_pool:i}=this.sdk.sdkOptions,r=R(i),o=r.global_config_id,s=r.pools_id;return t.forEach(a=>{let u=[e.object(o),e.object(s),e.pure(a.tick_spacing.toString()),e.pure(a.initialize_sqrt_price),e.pure(a.uri),e.object(W)];e.moveCall({target:`${n.published_at}::${jr}::create_pool`,typeArguments:[a.coinTypeA,a.coinTypeB],arguments:u})}),e}async creatPoolAndAddLiquidity(t){if(!zt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let e=new Dr.TransactionBlock,{integrate:n,clmm_pool:i}=this.sdk.sdkOptions,r=R(i),o=r.global_config_id,s=r.pools_id,a=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress),u=oe.buildAddLiquidityFixTokenCoinInput(e,!t.fix_amount_a,t.amount_a,t.slippage,t.coinTypeA,a,!1),l=oe.buildAddLiquidityFixTokenCoinInput(e,t.fix_amount_a,t.amount_b,t.slippage,t.coinTypeB,a,!1),m=[e.pure(o),e.pure(s),e.pure(t.tick_spacing.toString()),e.pure(t.initialize_sqrt_price),e.pure(t.uri),u.targetCoin,l.targetCoin,e.pure(xt(BigInt(t.tick_lower)).toString()),e.pure(xt(BigInt(t.tick_upper)).toString()),e.pure(t.amount_a),e.pure(t.amount_b),e.pure(t.fix_amount_a),e.pure(W)];return e.moveCall({target:`${n.published_at}::${ti}::create_pool_with_liquidity`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:m}),e}async fetchTicks(t){let e=[],n=[];for(;;){let r=await this.getTicks({pool_id:t.pool_id,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,start:n,limit:512});if(e=[...e,...r],r.length<512)break;n=[r[r.length-1].index]}return e}async getTicks(t){let{integrate:e,simulationAccount:n}=this.sdk.sdkOptions,i=[],r=[t.coinTypeA,t.coinTypeB],o=new Dr.TransactionBlock,s=[o.pure(t.pool_id),o.pure(t.start),o.pure(t.limit.toString())];if(o.moveCall({target:`${e.published_at}::${Yt}::fetch_ticks`,arguments:s,typeArguments:r}),!zt(n.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let a=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:o,sender:n.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(u=>{z(u.type).name==="FetchTicksResultEvent"&&u.parsedJson.ticks.forEach(l=>{i.push(bv(l))})}),i}async fetchPositionRewardList(t){let{integrate:e,simulationAccount:n}=this.sdk.sdkOptions,i=[],r=[],o=512;for(;;){let s=[t.coinTypeA,t.coinTypeB],a=new Dr.TransactionBlock,u=[a.object(t.pool_id),a.pure(r,"u64"),a.pure(o.toString(),"u64")];if(a.moveCall({target:`${e.published_at}::${Yt}::fetch_positions`,arguments:u,typeArguments:s}),!zt(n.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let l=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:a,sender:n.address});if(l.error!=null)throw new Y(`fetch position reward error code: ${l.error??"unknown error"}, please check config and tick object ids`,"InvalidPositionRewardObject");let m=[];if(l?.events?.forEach(b=>{z(b.type).name==="FetchPositionsEvent"&&b.parsedJson.positions.forEach(v=>{let T=cp(v);m.push(T)})}),i.push(...m),m.length<o)break;r=[m[m.length-1].pos_object_id]}return i}async fetchTicksByRpc(t){let e=[],n=null,i=512;for(;;){let r=[],o=await this.sdk.fullClient.getDynamicFields({parentId:t,cursor:n,limit:i});if(n=o.nextCursor,o.data.forEach(s=>{z(s.objectType).module==="skip_list"&&r.push(s.objectId)}),e=[...e,...await this.getTicksByRpc(r)],n===null||o.data.length<i)break}return e}async getTicksByRpc(t){let e=[],n=await this.sdk.fullClient.batchGetObjects(t,{showContent:!0,showType:!0});for(let i of n){if(i.error!=null||i.data?.content?.dataType!=="moveObject")throw new Y(`getTicksByRpc error code: ${i.error?.code??"unknown error"}, please check config and tick object ids`,"InvalidTickObjectId");let r=Fu(i);r!=null&&e.push(r)}return e}async getTickDataByIndex(t,e){let n={type:"u64",value:xt(BigInt(Qb(e).toString())).toString()},i=await this.sdk.fullClient.getDynamicFieldObject({parentId:t,name:n});if(i.error!=null||i.data?.content?.dataType!=="moveObject")throw new Y(`get tick by index: ${e} error: ${i.error}`,"InvalidTickIndex");return Fu(i)}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 Fu(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 n=e[0].data.content.fields.balances,i=await this._sdk.fullClient.getDynamicFieldsByPage(n.fields.id.id),r=[];i.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 u={coinAddress:a.data.content.fields.name,coinObjectId:a.data.objectId,balance:BigInt(a.data.content.fields.value)};o.push(u)}),o}async claimPartnerRefFeePayload(t,e,n){let i=new Dr.TransactionBlock,{clmm_pool:r}=this.sdk.sdkOptions,{global_config_id:o}=R(r),s=[n],a=[i.object(o),i.object(t),i.object(e)];return i.moveCall({target:`${r.published_at}::${Ub}::claim_ref_fee`,arguments:a,typeArguments:s}),i}updateCache(t,e,n=We){let i=this._cache[t];i?(i.overdueTime=ye(n),i.value=e):i=new qe(e,ye(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t],i=n?.isValid();if(!e&&i)return n.value;i||delete this._cache[t]}},Av=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 n=[],i=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 i.data)if(z(o.data.type).full_address===this.buildPositionType()){let a=ni(o),u=`${a.pos_object_id}_getPositionList`;this.updateCache(u,a,J),r?e.includes(a.pool)&&n.push(a):n.push(a)}return n}async getPosition(t,e,n=!0){let i=await this.getSimplePosition(e);return n&&(i=await this.updatePositionRewarders(t,i)),i}async getPositionById(t,e=!0){let n=await this.getSimplePosition(t);if(e){let i=await this._sdk.Pool.getPool(n.pool,!1);return await this.updatePositionRewarders(i.position_manager.positions_handle,n)}return n}async getSimplePosition(t){let e=`${t}_getPositionList`,n=this.getSimplePositionByCache(t);if(n===void 0){let i=await this.sdk.fullClient.getObject({id:t,options:{showContent:!0,showType:!0,showDisplay:!0,showOwner:!0}});n=ni(i),this.updateCache(e,n,J)}return n}getSimplePositionByCache(t){let e=`${t}_getPositionList`;return this.getCache(e)}async getSipmlePositionList(t){let e=[],n=[];return t.forEach(i=>{let r=this.getSimplePositionByCache(i);r?e.push(r):n.push(i)}),n.length>0&&(await this._sdk.fullClient.batchGetObjects(n,{showOwner:!0,showContent:!0,showDisplay:!0,showType:!0})).forEach(r=>{let o=ni(r);e.push(o);let s=`${o.pos_object_id}_getPositionList`;this.updateCache(s,o,J)}),e}async updatePositionRewarders(t,e){let n=await this.getPositionRewarders(t,e.pos_object_id);return{...e,...n}}async getPositionRewarders(t,e){try{let n=await this._sdk.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),r=te(n.data).value.fields.value;return cp(r)}catch(n){console.log(n);return}}async fetchPosFeeAmount(t){let{clmm_pool:e,integrate:n,simulationAccount:i}=this.sdk.sdkOptions,r=new Zi.TransactionBlock;for(let u of t){let l=[u.coinTypeA,u.coinTypeB],m=[r.object(R(e).global_config_id),r.object(u.poolAddress),r.pure(u.positionId)];r.moveCall({target:`${n.published_at}::${Yt}::fetch_position_fees`,arguments:m,typeArguments:l})}if(!zt(i.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let o=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:r,sender:i.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(u=>z(u.type).name==="FetchPositionFeesEvent");if(s.length===0)return[];let a=[];for(let u=0;u<s.length;u+=1){let{parsedJson:l}=s[u],m={feeOwedA:new Lu.default(l.fee_owned_a),feeOwedB:new Lu.default(l.fee_owned_b),position_id:l.position_id};a.push(m)}return a}async batchFetchPositionFees(t){let e=[];for(let i of t){let r=await this._sdk.Position.getPositionById(i,!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 n={};if(e.length>0){let i=await this.fetchPosFeeAmount(e);for(let r of i)n[r.position_id]=r;return n}return n}async createAddLiquidityFixTokenPayload(t,e){if(!zt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let n=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);if(e){let{isAdjustCoinA:i,isAdjustCoinB:r}=ma(t);if(t=t,t.fix_amount_a&&i||!t.fix_amount_a&&r)return await oe.buildAddLiquidityFixTokenForGas(this._sdk,n,t,e)}return oe.buildAddLiquidityFixToken(this._sdk,n,t)}async createAddLiquidityPayload(t){let{integrate:e,clmm_pool:n}=this._sdk.sdkOptions;if(!zt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let i=xt(BigInt(t.tick_lower)).toString(),r=xt(BigInt(t.tick_upper)).toString(),o=[t.coinTypeA,t.coinTypeB],s=new Zi.TransactionBlock,a=!(0,up.isValidSuiObjectId)(t.pos_id),u=BigInt(t.max_amount_a),l=BigInt(t.max_amount_b),m=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress),b=oe.buildCoinForAmount(s,m,u,t.coinTypeA,!1),v=oe.buildCoinForAmount(s,m,l,t.coinTypeB,!1);return a?s.moveCall({target:`${e.published_at}::${ti}::open_position_with_liquidity`,typeArguments:o,arguments:[s.object(R(n).global_config_id),s.object(t.pool_id),s.pure(i),s.pure(r),b.targetCoin,v.targetCoin,s.pure(t.max_amount_a),s.pure(t.max_amount_b),s.pure(t.delta_liquidity),s.object(W)]}):(s=oe.createCollectRewarderAndFeeParams(this._sdk,s,t,m,b.remainCoins,v.remainCoins),s.moveCall({target:`${e.published_at}::${ti}::add_liquidity`,typeArguments:o,arguments:[s.object(R(n).global_config_id),s.object(t.pool_id),s.object(t.pos_id),b.targetCoin,v.targetCoin,s.pure(t.max_amount_a),s.pure(t.max_amount_b),s.pure(t.delta_liquidity),s.object(W)]})),s}async removeLiquidityTransactionPayload(t){if(!zt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let{clmm_pool:e,integrate:n}=this.sdk.sdkOptions,i="remove_liquidity",r=new Zi.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(R(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(W)];return r.moveCall({target:`${n.published_at}::${jr}::${i}`,typeArguments:o,arguments:a}),r}async closePositionTransactionPayload(t){if(!zt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let{clmm_pool:e,integrate:n}=this.sdk.sdkOptions,i=new Zi.TransactionBlock,r=[t.coinTypeA,t.coinTypeB],o=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);return i=oe.createCollectRewarderAndFeeParams(this._sdk,i,t,o),i.moveCall({target:`${n.published_at}::${jr}::close_position`,typeArguments:r,arguments:[i.object(R(e).global_config_id),i.object(t.pool_id),i.object(t.pos_id),i.pure(t.min_amount_a),i.pure(t.min_amount_b),i.object(W)]}),i}openPositionTransactionPayload(t){let{clmm_pool:e,integrate:n}=this.sdk.sdkOptions,i=new Zi.TransactionBlock,r=[t.coinTypeA,t.coinTypeB],o=xt(BigInt(t.tick_lower)).toString(),s=xt(BigInt(t.tick_upper)).toString(),a=[i.pure(R(e).global_config_id),i.pure(t.pool_id),i.pure(o),i.pure(s)];return i.moveCall({target:`${n.published_at}::${jr}::open_position`,typeArguments:r,arguments:a}),i}async collectFeeTransactionPayload(t){if(!zt(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),n=new Zi.TransactionBlock,i=oe.buildCoinForAmount(n,e,BigInt(0),t.coinTypeA,!1),r=oe.buildCoinForAmount(n,e,BigInt(0),t.coinTypeB,!1);return this.createCollectFeePaylod(t,n,i.targetCoin,r.targetCoin),n}createCollectFeePaylod(t,e,n,i){let{clmm_pool:r,integrate:o}=this.sdk.sdkOptions,s=[t.coinTypeA,t.coinTypeB],a=[e.object(R(r).global_config_id),e.object(t.pool_id),e.object(t.pos_id),n,i];return e.moveCall({target:`${o.published_at}::${ti}::collect_fee`,typeArguments:s,arguments:a}),e}async calculateFee(t){let e=await this.collectFeeTransactionPayload(t);if(!zt(this._sdk.senderAddress))throw new Y("this config sdk senderAddress is not set right","InvalidSendAddress");let n=await this._sdk.fullClient.devInspectTransactionBlock({transactionBlock:e,sender:this._sdk.senderAddress});for(let i of n.events)if(z(i.type).name==="CollectFeeEvent"){let r=i.parsedJson;return{feeOwedA:r.amount_a,feeOwedB:r.amount_b}}return{feeOwedA:"0",feeOwedB:"0"}}updateCache(t,e,n=We){let i=this._cache[t];i?(i.overdueTime=ye(n),i.value=e):i=new qe(e,ye(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t],i=n?.isValid();if(!e&&i)return n.value;i||delete this._cache[t]}},xv=class{_sdk;growthGlobal;constructor(t){this._sdk=t,this.growthGlobal=[re,re,re]}get sdk(){return this._sdk}async emissionsEveryDay(t){let n=(await this.sdk.Pool.getPool(t)).rewarder_infos;if(!n)return null;let i=[];for(let r of n){let o=xe.fromX64(new Re.default(r.emissions_per_second));i.push({emissions:Math.floor(o.toNumber()*60*60*24),coin_address:r.coinAddress})}return i}async updatePoolRewarder(t,e){let n=await this.sdk.Pool.getPool(t),i=n.rewarder_last_updated_time;if(n.rewarder_last_updated_time=e.toString(),Number(n.liquidity)===0||e.eq(new Re.default(i)))return n;let r=e.div(new Re.default(1e3)).sub(new Re.default(i)).add(new Re.default(15)),o=n.rewarder_infos;for(let s=0;s<o.length;s+=1){let a=o[s],u=xe.checkMulDivFloor(r,new Re.default(a.emissions_per_second),new Re.default(n.liquidity),128);this.growthGlobal[s]=new Re.default(a.growth_global).add(new Re.default(u))}return n}async posRewardersAmount(t,e,n){let i=Date.parse(new Date().toString()),r=await this.updatePoolRewarder(t,new Re.default(i)),o=await this.sdk.Position.getPositionRewarders(e,n);if(o===void 0)return[];let s=r.ticks_handle,a=await this.sdk.Pool.getTickDataByIndex(s,o.tick_lower_index),u=await this.sdk.Pool.getTickDataByIndex(s,o.tick_upper_index);return this.posRewardersAmountInternal(r,o,a,u)}async poolRewardersAmount(t,e){let n=Date.parse(new Date().toString()),i=await this.updatePoolRewarder(e,new Re.default(n)),r=await this.sdk.Position.getPositionList(t,[e]),o=await this.getPoolLowerAndUpperTicks(i.ticks_handle,r),s=[re,re,re];for(let a=0;a<r.length;a+=1){let u=await this.posRewardersAmountInternal(i,r[a],o[0][a],o[1][a]);for(let l=0;l<3;l+=1)s[l]=s[l].add(u[l].amount_owed)}return s}posRewardersAmountInternal(t,e,n,i){let r=e.tick_lower_index,o=e.tick_upper_index,s=vv(t,n,i,r,o,this.growthGlobal),a=[],u=[];if(s.length>0){let l=xe.subUnderflowU128(s[0],new Re.default(e.reward_growth_inside_0));l.gt(new Re.default("3402823669209384634633745948738404"))&&(l=$n);let m=xe.checkMulShiftRight(new Re.default(e.liquidity),l,64,128);a.push(s[0]),u.push({amount_owed:new Re.default(e.reward_amount_owed_0).add(m),coin_address:t.rewarder_infos[0].coinAddress})}if(s.length>1){let l=xe.subUnderflowU128(s[1],new Re.default(e.reward_growth_inside_1));l.gt(new Re.default("3402823669209384634633745948738404"))&&(l=$n);let m=xe.checkMulShiftRight(new Re.default(e.liquidity),l,64,128);a.push(s[1]),u.push({amount_owed:new Re.default(e.reward_amount_owed_1).add(m),coin_address:t.rewarder_infos[1].coinAddress})}if(s.length>2){let l=xe.subUnderflowU128(s[2],new Re.default(e.reward_growth_inside_2));l.gt(new Re.default("3402823669209384634633745948738404"))&&(l=$n);let m=xe.checkMulShiftRight(new Re.default(e.liquidity),l,64,128);a.push(s[2]),u.push({amount_owed:new Re.default(e.reward_amount_owed_2).add(m),coin_address:t.rewarder_infos[2].coinAddress})}return u}async batchFetchPositionRewarders(t){let e=[];for(let i of t){let r=await this._sdk.Position.getPositionById(i,!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 n={};if(e.length>0){let i=await this.fetchPosRewardersAmount(e);for(let r of i)n[r.positionId]=r.rewarderAmountOwed;return n}return n}async fetchPositionRewarders(t,e){let n={poolAddress:t.poolAddress,positionId:e,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB,rewarderInfo:t.rewarder_infos};return(await this.fetchPosRewardersAmount([n]))[0].rewarderAmountOwed}async batchFetchPositionFees(t){let e=[];for(let i of t){let r=await this._sdk.Position.getPositionById(i,!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 n={};if(e.length>0){let i=await this.fetchPosFeeAmount(e);for(let r of i)n[r.position_id]=r;return n}return n}async fetchPosFeeAmount(t){let{clmm_pool:e,integrate:n,simulationAccount:i}=this.sdk.sdkOptions,r=new fa.TransactionBlock;for(let u of t){let l=[u.coinTypeA,u.coinTypeB],m=[r.object(R(e).global_config_id),r.object(u.poolAddress),r.pure(u.positionId)];r.moveCall({target:`${n.published_at}::${Yt}::fetch_position_fees`,arguments:m,typeArguments:l})}let s=(await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:r,sender:i.address})).events?.filter(u=>z(u.type).name==="FetchPositionFeesEvent");if(s.length===0)return[];let a=[];for(let u=0;u<s.length;u+=1){let{parsedJson:l}=s[u],m={feeOwedA:new Re.default(l.fee_owned_a),feeOwedB:new Re.default(l.fee_owned_b),position_id:l.position_id};a.push(m)}return a}async fetchPosRewardersAmount(t){let{clmm_pool:e,integrate:n,simulationAccount:i}=this.sdk.sdkOptions,r=new fa.TransactionBlock;for(let u of t){let l=[u.coinTypeA,u.coinTypeB],m=[r.object(R(e).global_config_id),r.object(u.poolAddress),r.pure(u.positionId),r.object(W)];r.moveCall({target:`${n.published_at}::${Yt}::fetch_position_rewards`,arguments:m,typeArguments:l})}if(!zt(i.address))throw new Y(`this config simulationAccount: ${i.address} is not set right`,"InvalidSimulateAccount");let o=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:r,sender:i.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(u=>z(u.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 u=0;u<s.length;u+=1){let l={poolAddress:t[u].poolAddress,positionId:t[u].positionId,rewarderAmountOwed:[]};for(let m=0;m<t[u].rewarderInfo.length;m+=1)l.rewarderAmountOwed.push({amount_owed:new Re.default(s[u].parsedJson.data[m]),coin_address:t[u].rewarderInfo[m].coinAddress});a.push(l)}return a}async fetchPoolRewardersAmount(t,e){let n=await this.sdk.Pool.getPool(e),i=await this.sdk.Position.getPositionList(t,[e]),r=[];for(let a of i)r.push({poolAddress:n.poolAddress,positionId:a.pos_object_id,rewarderInfo:n.rewarder_infos,coinTypeA:n.coinTypeA,coinTypeB:n.coinTypeB});let o=await this.fetchPosRewardersAmount(r),s=[re,re,re];if(o!=null)for(let a of o)for(let u=0;u<a.rewarderAmountOwed.length;u+=1)s[u]=s[u].add(a.rewarderAmountOwed[u].amount_owed);return s}async getPoolLowerAndUpperTicks(t,e){let n=[],i=[];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);n.push(o),i.push(s)}return[n,i]}async collectRewarderTransactionPayload(t){if(!zt(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),n=new fa.TransactionBlock;return n=oe.createCollectRewarderAndFeeParams(this._sdk,n,t,e),n}createCollectRewarderPaylod(t,e,n){let{clmm_pool:i,integrate:r}=this.sdk.sdkOptions,o=R(i),s=[t.coinTypeA,t.coinTypeB];return t.rewarder_coin_types.forEach((a,u)=>{e&&e.moveCall({target:`${r.published_at}::${ti}::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),n[u],e.object(W)]})}),e}};function la(t,e){return{pair:`${t}-${e}`,reversePair:`${e}-${t}`}}var Iv=class{graph;pathProviders;coinProviders;_coinAddressMap;poolAddressMap;_sdk;constructor(t){this.pathProviders=[],this.coinProviders={coins:[]},this.graph=new Yi.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:n,reversePair:i}=la(t,e),r=this.poolAddressMap.get(n);if(r!=null)return{addressMap:r,direction:!0};if(r=this.poolAddressMap.get(i),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(n=>{let{paths:i}=n;i.forEach(r=>{let o=this.graph.getVertexByKey(r.base)??new Yi.GraphVertex(r.base),s=this.graph.getVertexByKey(r.quote)??new Yi.GraphVertex(r.quote);this.graph.addEdge(new Yi.GraphEdge(o,s));let a=this._coinAddressMap.get(r.base),u=this._coinAddressMap.get(r.quote);if(a!=null&&u!=null){let l=la(r.base,r.quote).pair;this.poolAddressMap.set(l,r.addressMap)}})})}addPathProvider(t){for(let e=0;e<t.paths.length;e+=1){let{base:n,quote:i}=t.paths[e];n.localeCompare(i)<0&&(t.paths[e].base=i,t.paths[e].quote=n),n==="0x2::sui::SUI"&&(t.paths[e].base=i,t.paths[e].quote=n),i==="0x2::sui::SUI"&&(t.paths[e].base=n,t.paths[e].quote=i)}return this.pathProviders.push(t),this}addCoinProvider(t){return this.coinProviders=t,this}tokenInfo(t){return this._coinAddressMap.get(t)}getFeeRate(t,e,n){let i=la(t,e).pair,r=this.poolAddressMap.get(i);if(r!=null){for(let[a,u]of r.entries())if(u===n)return a*100}let o=la(t,e).reversePair,s=this.poolAddressMap.get(o);if(s!=null){for(let[a,u]of s.entries())if(u===n)return a*100}return 0}async price(t,e,n,i,r,o,s){let a=this.tokenInfo(t),u=this.tokenInfo(e);if(a===void 0||u===void 0)throw new Y("From/To coin is undefined","InvalidCoin");let l=this.graph.getVertexByKey(a.address),m=this.graph.getVertexByKey(u.address),b=this.graph.findAllPath(l,m),v=Array.from(b);if(v.length===0)throw new Y("No find valid path in coin graph","NotFoundPath");let T=[];for(let x=0;x<v.length;x+=1){let j=v[x];if(j.length>3)continue;let k=[],S=[],c=[],d=[];for(let f=0;f<j.length-1;f+=1){let _=j[f].value.toString(),h=j[f+1].value.toString(),p=this.getPoolAddressMapAndDirection(_,h),w=p?.addressMap,y=p?.direction;w!=null&&y!=null&&(S.push(y),k.push(_),k.push(h),w.forEach(g=>{f===0?c.push(g):d.push(g)}))}for(let f of c)if(d.length>0)for(let _ of d){let h={stepNums:2,poolAB:f,poolBC:_,a2b:S[0],b2c:S[1],amount:n,byAmountIn:i,coinTypeA:k[0],coinTypeB:k[1],coinTypeC:k[3]};T.push(h)}else{let _={stepNums:1,poolAB:f,poolBC:void 0,a2b:S[0],b2c:void 0,amount:n,byAmountIn:i,coinTypeA:k[0],coinTypeB:k[1],coinTypeC:void 0};T.push(_)}}let O=T.filter(x=>x.stepNums===1),P=T.filter(x=>x.stepNums!==1),M=[];try{M=await this.getPoolWithTVL()}catch{M=[]}if(M.length>0){let x=new Map(M.map(j=>[j.poolAddress,j]));P.sort((j,k)=>{let S=0,c=0;if(x.has(j.poolAB)&&x.has(j.poolBC)){let d=x.get(j.poolAB),f=x.get(j.poolBC);S=Math.min(d.tvl,f.tvl)}if(x.has(k.poolAB)&&x.has(k.poolBC)){let d=x.get(k.poolAB),f=x.get(k.poolBC);c=Math.min(d.tvl,f.tvl)}return c-S})}if(T=[...O,...P],T.length===0){if(s!=null){let x=await this.sdk.Swap.preSwapWithMultiPool(s),j={amountIn:new sn.default(x.estimatedAmountIn),amountOut:new sn.default(x.estimatedAmountOut),poolAddress:[x.poolAddress],a2b:[x.aToB],rawAmountLimit:i?[x.estimatedAmountOut]:[x.estimatedAmountIn],isExceed:x.isExceed,coinType:[t,e]},k={paths:[j],partner:o,priceSlippagePoint:r};return{amountIn:new sn.default(x.estimatedAmountIn),amountOut:new sn.default(x.estimatedAmountOut),paths:[j],a2b:x.aToB,b2c:void 0,byAmountIn:i,isExceed:x.isExceed,targetSqrtPrice:[x.estimatedEndSqrtPrice],currentSqrtPrice:[x.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 j=await this.sdk.Swap.preSwapWithMultiPool(s),k={amountIn:new sn.default(j.estimatedAmountIn),amountOut:new sn.default(j.estimatedAmountOut),poolAddress:[j.poolAddress],a2b:[j.aToB],rawAmountLimit:i?[j.estimatedAmountOut]:[j.estimatedAmountIn],isExceed:j.isExceed,coinType:[t,e]},S={paths:[k],partner:o,priceSlippagePoint:r};return{amountIn:new sn.default(j.estimatedAmountIn),amountOut:new sn.default(j.estimatedAmountOut),paths:[k],a2b:j.aToB,b2c:void 0,byAmountIn:i,isExceed:j.isExceed,targetSqrtPrice:[j.estimatedEndSqrtPrice],currentSqrtPrice:[j.estimatedStartSqrtPrice],coinTypeA:t,coinTypeB:e,coinTypeC:void 0,createTxParams:S}}return{amountIn:re,amountOut:re,paths:[],a2b:!1,b2c:!1,byAmountIn:i,isExceed:!0,targetSqrtPrice:[],currentSqrtPrice:[],coinTypeA:"",coinTypeB:"",coinTypeC:void 0,createTxParams:void 0}}let E=B.index,q=T[E].poolBC!=null?[T[E].poolAB,T[E].poolBC]:[T[E].poolAB],K=i?[B.amountMedium,B.amountOut]:[B.amountIn,B.amountMedium],X=[];X.push(T[E].a2b),B.stepNum>1&&X.push(T[E].b2c);let G=[];G.push(T[E].coinTypeA),G.push(T[E].coinTypeB),B.stepNum>1&&G.push(T[E].coinTypeC);let Z={amountIn:B.amountIn,amountOut:B.amountOut,poolAddress:q,a2b:X,rawAmountLimit:K,isExceed:B.isExceed,coinType:G},A={paths:[Z],partner:o,priceSlippagePoint:r};return{amountIn:B.amountIn,amountOut:B.amountOut,paths:[Z],a2b:T[E].a2b,b2c:B.stepNum>1?T[E].b2c:void 0,byAmountIn:i,isExceed:B.isExceed,targetSqrtPrice:B.targetSqrtPrice,currentSqrtPrice:B.currentSqrtPrice,coinTypeA:T[E].coinTypeA,coinTypeB:T[E].coinTypeB,coinTypeC:B.stepNum>1?T[E].coinTypeC:void 0,createTxParams:A}}async preRouterSwapA2B2C(t){if(t.length===0)return null;let{integrate:e,simulationAccount:n}=this.sdk.sdkOptions,i=new lp.TransactionBlock;for(let b of t)if(b.stepNums>1){let v=[i.object(b.poolAB),i.object(b.poolBC),i.pure(b.a2b),i.pure(b.b2c),i.pure(b.byAmountIn),i.pure(b.amount.toString())],T=[];b.a2b?T.push(b.coinTypeA,b.coinTypeB):T.push(b.coinTypeB,b.coinTypeA),b.b2c?T.push(b.coinTypeB,b.coinTypeC):T.push(b.coinTypeC,b.coinTypeB),i.moveCall({target:`${e.published_at}::${Ci}::calculate_router_swap_result`,typeArguments:T,arguments:v})}else{let v=[i.pure(b.poolAB),i.pure(b.a2b),i.pure(b.byAmountIn),i.pure(b.amount.toString())],T=b.a2b?[b.coinTypeA,b.coinTypeB]:[b.coinTypeB,b.coinTypeA];i.moveCall({target:`${e.published_at}::${$b}::get_expect_swap_result`,arguments:v,typeArguments:T})}if(!zt(n.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let o=(await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:i,sender:n.address})).events?.filter(b=>z(b.type).name==="CalculatedRouterSwapResultEvent"||z(b.type).name==="ExpectSwapResultEvent");if(o.length===0)return null;let s=t[0].byAmountIn?re:Br,a=0;for(let b=0;b<o.length;b+=1)if(!o[b].parsedJson.data.is_exceed)if(t[0].byAmountIn){let v=new sn.default(o[b].parsedJson.data.amount_out);v.gt(s)&&(a=b,s=v)}else{let v=t[b].stepNums>1?new sn.default(o[b].parsedJson.data.amount_in):new sn.default(o[b].parsedJson.data.amount_in).add(new sn.default(o[b].parsedJson.data.fee_amount));v.lt(s)&&(a=b,s=v)}let u=[],l=[];return t[a].stepNums>1?(l.push(o[a].parsedJson.data.target_sqrt_price_ab,o[a].parsedJson.data.target_sqrt_price_cd),u.push(o[a].parsedJson.data.current_sqrt_price_ab,o[a].parsedJson.data.current_sqrt_price_cd)):(l.push(o[a].parsedJson.data.after_sqrt_price),u.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:l,currentSqrtPrice:u,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 n;try{n=await fetch(e)}catch{throw new Y(`Failed to get pool list with liquidity from ${e}.`,"InvalidSwapCountUrl")}let i;try{i=await n.json()}catch{throw new Y(`Failed tp [arse response from ${e}].`,"InvalidSwapCountUrl")}if(i.code!==200)throw new Y(`Failed to get pool list from ${e}. Statu code is ${i.code}.`,"InvalidSwapCountUrl");let{pools:r}=i.data;for(let o of r)t.push({poolAddress:o.swap_account,tvl:Number(o.tvl_in_usd)});return t}};var Ov=class{_sdk;constructor(t){this._sdk=t}get sdk(){return this._sdk}calculateSwapFee(t){let e=D(0);return t.forEach(n=>{let i=n.basePaths.length;if(i>0){let r=n.basePaths[0],o=r.label==="Cetus"?new $(r.feeRate).div(10**6):new $(r.feeRate).div(10**9),s=D(r.inputAmount).div(10**r.fromDecimal).mul(o);if(e=e.add(s),i>1){let a=n.basePaths[1],u=r.direction?r.currentPrice:new $(1).div(r.currentPrice),l=a.direction?a.currentPrice:new $(1).div(a.currentPrice),m=a.label==="Cetus"?new $(a.feeRate).div(10**6):new $(a.feeRate).div(10**9),v=D(a.outputAmount).div(10**a.toDecimal).mul(m).div(u.mul(l));e=e.add(v)}}}),e.toString()}calculateSwapPriceImpact(t){let e=D(0);return t.forEach(n=>{let i=n.basePaths.length;if(i===1){let r=n.basePaths[0],o=D(r.outputAmount).div(10**r.toDecimal),s=D(r.inputAmount).div(10**r.fromDecimal),a=o.div(s),u=r.direction?new $(r.currentPrice):new $(1).div(r.currentPrice);e=e.add(this.calculateSingleImpact(a,u))}if(i===2){let r=n.basePaths[0],o=n.basePaths[1],s=r.direction?new $(r.currentPrice):new $(1).div(r.currentPrice),a=o.direction?new $(o.currentPrice):new $(1).div(o.currentPrice),u=s.mul(a),l=new $(o.outputAmount).div(10**o.toDecimal),m=new $(r.inputAmount).div(10**r.fromDecimal),b=l.div(m);e=e.add(this.calculateSingleImpact(b,u))}}),e.toString()}calculateSingleImpact=(t,e)=>e.minus(t).div(e).mul(100);async preSwapWithMultiPool(t){let{integrate:e,simulationAccount:n}=this.sdk.sdkOptions,i=new Uu.TransactionBlock,r=[t.coinTypeA,t.coinTypeB];for(let l=0;l<t.poolAddresses.length;l+=1){let m=[i.pure(t.poolAddresses[l]),i.pure(t.a2b),i.pure(t.byAmountIn),i.pure(t.amount)];i.moveCall({target:`${e.published_at}::${Yt}::calculate_swap_result`,arguments:m,typeArguments:r})}if(!zt(n.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let o=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:i,sender:n.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(l=>z(l.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:Br,u=0;for(let l=0;l<s.length;l+=1)if(!s[l].parsedJson.data.is_exceed)if(t.byAmountIn){let m=new Ji.default(s[l].parsedJson.data.amount_out);m.gt(a)&&(u=l,a=m)}else{let m=new Ji.default(s[l].parsedJson.data.amount_out);m.lt(a)&&(u=l,a=m)}return this.transformSwapWithMultiPoolData({poolAddress:t.poolAddresses[u],a2b:t.a2b,byAmountIn:t.byAmountIn,amount:t.amount,coinTypeA:t.coinTypeA,coinTypeB:t.coinTypeB},s[u].parsedJson)}async preswap(t){let{integrate:e,simulationAccount:n}=this.sdk.sdkOptions,i=new Uu.TransactionBlock,r=[t.coinTypeA,t.coinTypeB],o=[i.pure(t.pool.poolAddress),i.pure(t.a2b),i.pure(t.byAmountIn),i.pure(t.amount)];if(i.moveCall({target:`${e.published_at}::${Yt}::calculate_swap_result`,arguments:o,typeArguments:r}),!zt(n.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let s=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:i,sender:n.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(u=>z(u.type).name==="CalculatedSwapResultEvent");return a.length===0?null:this.transformSwapData(t,a[0].parsedJson.data)}transformSwapData(t,e){let n=e.amount_in&&e.fee_amount?new Ji.default(e.amount_in).add(new Ji.default(e.fee_amount)).toString():"";return{poolAddress:t.pool.poolAddress,currentSqrtPrice:t.currentSqrtPrice,estimatedAmountIn:n,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:n}=e,i=n.amount_in&&n.fee_amount?new Ji.default(n.amount_in).add(new Ji.default(n.fee_amount)).toString():"";return{poolAddress:t.poolAddress,estimatedAmountIn:i,estimatedAmountOut:n.amount_out,estimatedEndSqrtPrice:n.after_sqrt_price,estimatedStartSqrtPrice:e.current_sqrt_price,estimatedFeeAmount:n.fee_amount,isExceed:n.is_exceed,amount:t.amount,aToB:t.a2b,byAmountIn:t.byAmountIn}}calculateRates(t){let{currentPool:e}=t,n=Lb(e),i;t.a2b?i=t.swapTicks.sort((b,v)=>v.index-b.index):i=t.swapTicks.sort((b,v)=>b.index-v.index);let r=iv(t.a2b,t.byAmountIn,t.amount,n,i),o=!1;t.byAmountIn?o=r.amountIn.lt(t.amount):o=r.amountOut.lt(t.amount);let s=En.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 u=ne.sqrtPriceX64ToPrice(n.currentSqrtPrice,t.decimalsA,t.decimalsB).toNumber(),l=ne.sqrtPriceX64ToPrice(r.nextSqrtPrice,t.decimalsA,t.decimalsB).toNumber(),m=Math.abs(u-l)/u*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:m}}async createSwapTransactionPayload(t,e){if(this._sdk.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let n=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);if(e){let{isAdjustCoinA:i,isAdjustCoinB:r}=ma(t);if(t.a2b&&i||!t.a2b&&r)return await oe.buildSwapTransactionForGas(this._sdk,t,n,e)}return oe.buildSwapTransaction(this.sdk,t,n)}async createSwapTransactionWithoutTransferCoinsPayload(t,e){if(this._sdk.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let n=await this._sdk.getOwnerCoinAssets(this._sdk.senderAddress);if(e){let{isAdjustCoinA:i,isAdjustCoinB:r}=ma(t);if(t.a2b&&i||!t.a2b&&r)return await oe.buildSwapTransactionWithoutTransferCoinsForGas(this._sdk,t,n,e)}return oe.buildSwapTransactionWithoutTransferCoins(this.sdk,t,n)}},Pv=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="",n=!1){return await this.factchWarpPoolList(t,e,n)}async getTokenListByCoinTypes(t){let e={},i=this.getCache("getAllRegisteredTokenList");if(i!==void 0){let o=i;for(let s of t)for(let a of o)if(qt(s)===qt(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 u=await this._sdk.fullClient.getCoinMetadata({coinType:o});if(u){let l={id:u.id,name:u.name,symbol:u.symbol,official_symbol:u.symbol,coingecko_id:"",decimals:u.decimals,project_url:"",logo_url:u.iconUrl,address:o};e[o]=l,this.updateCache(s,l,J)}}}return e}async factchTokenList(t="",e=!1){let{simulationAccount:n,token:i}=this.sdk.sdkOptions,o=this.getCache("getAllRegisteredTokenList",e);if(o!==void 0)return o;let s=t.length>0,a=512,u=0,l=[];if(i===void 0)throw Error("please config token ofsdkOptions");let m=R(i);for(;;){let b=new $u.TransactionBlock;b.moveCall({target:`${i.published_at}::coin_list::${s?"fetch_full_list_with_limit":"fetch_all_registered_coin_info_with_limit"}`,arguments:s?[b.pure(m.coin_registry_id),b.pure(t),b.pure(u),b.pure(a)]:[b.pure(m.coin_registry_id),b.pure(u),b.pure(a)]});let v=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:b,sender:n.address}),T=[];if(v.events?.forEach(O=>{z(O.type).full_address===`${i.published_at}::coin_list::FetchCoinListEvent`&&O.parsedJson.full_list.value_list.forEach(M=>{T.push(this.transformData(M,!1))})}),l=[...l,...T],T.length<a)break;u=l.length}return l}async factchPoolList(t="",e=!1){let{simulationAccount:n,token:i}=this.sdk.sdkOptions,o=this.getCache("getAllRegisteredPoolList",e);if(o!==void 0)return o;let s=[],a=512,u=0,l=t.length>0;if(i===void 0)throw Error("please config token ofsdkOptions");let m=R(i);for(;;){let b=new $u.TransactionBlock;if(b.moveCall({target:`${i.published_at}::lp_list::${l?"fetch_full_list_with_limit":"fetch_all_registered_coin_info_with_limit"}`,arguments:l?[b.pure(m.pool_registry_id),b.pure(t),b.pure(u),b.pure(a)]:[b.pure(m.pool_registry_id),b.pure(u),b.pure(a)]}),!zt(n.address))throw new Y("this config simulationAccount is not set right","InvalidSimulateAccount");let v=await this.sdk.fullClient.devInspectTransactionBlock({transactionBlock:b,sender:n.address}),T=[];if(v.events?.forEach(O=>{z(O.type).full_address===`${i.published_at}::lp_list::FetchPoolListEvent`&&O.parsedJson.full_list.value_list.forEach(M=>{T.push(this.transformData(M,!0))})}),s=[...s,...T],T.length<a)break;u=s.length}return s}async factchWarpPoolList(t="",e="",n=!1){let i=await this.factchPoolList(t,n);if(i.length===0)return[];let r=await this.factchTokenList(e,n),o=[];for(let s of i){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,n=`${e}_getTokenConfigEvent`,i=this.getCache(n,t);if(i!==void 0)return i;let r=await this._sdk.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=Qi(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(u=>{let l=z(u.type);if(u.transactionModule==="coin_list")switch(l.name){case"InitListEvent":a.coin_list_owner=u.parsedJson.list_id;break;case"InitRegistryEvent":a.coin_registry_id=u.parsedJson.registry_id;break;default:break}else if(u.transactionModule==="lp_list")switch(l.name){case"InitListEvent<address>":a.pool_list_owner=u.parsedJson.list_id;break;case"InitRegistryEvent<address>":a.pool_registry_id=u.parsedJson.registry_id;break;default:break}}),a.coin_registry_id.length>0&&this.updateCache(n,a,J),a}transformData(t,e){let n={...t};if(e)try{n.coin_a_address=z(n.coin_a_address).full_address,n.coin_b_address=z(n.coin_b_address).full_address}catch{}else n.address=z(n.address).full_address;if(t.extensions){let i=t.extensions.contents;for(let r of i){let{key:o}=r,{value:s}=r;if(o==="labels")try{s=JSON.parse(decodeURIComponent(Pr.decode(s)))}catch{}o==="pyth_id"&&(s=(0,dp.normalizeSuiObjectId)(s)),n[o]=s}delete n.extensions}return n}updateCache(t,e,n=We){let i=this._cache[t];i?(i.overdueTime=ye(n),i.value=e):i=new qe(e,ye(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t],i=n?.isValid();if(!e&&i)return n.value;i||delete this._cache[t]}},Ev=class{_sdk;constructor(t){this._sdk=t}get sdk(){return this._sdk}calculatePrice(t,e,n,i,r){let o=i?e:n,s=i?n:e;return r==="Cetus"?ne.sqrtPriceX64ToPrice(t,o,s):new $(t.toString()).div(new $(10).pow(new $(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(n=>({pathIndex:n.path_index,lastQuoteOutput:n.last_quote_output,percent:n.percent,basePaths:n.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 Pn.default(r.current_sqrt_price.toString()),afterSqrtPrice:r.label==="Cetus"?new Pn.default(r.after_sqrt_price.toString()):re,fromDecimal:r.from_decimal,toDecimal:r.to_decimal,currentPrice:this.calculatePrice(new Pn.default(r.current_sqrt_price.toString()),r.from_decimal,r.to_decimal,r.direction,r.label)})),inputAmount:n.input_amount,outputAmount:n.output_amount}))}}async fetchWithTimeout(t,e,n){let i=new AbortController,r=setTimeout(()=>i.abort(),n);try{let o=await fetch(t,{...e,signal:i.signal});return clearTimeout(r),o}catch{return null}}async fetchAndParseData(t,e){try{let i=await this.fetchWithTimeout(t,e,1500);return i.status===200?this.parseJsonResult(await i.json()):null}catch{return null}}async getBestRouter(t,e,n,i,r,o,s,a,u=!1,l=!1,m=[]){let b=null,v="v2",T={},O=this.sdk.sdkOptions.aggregatorUrl;if(m.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:n,by_amount_in:i,order_split:u,external_router:l,sender_address:"None",request_id:encodeURIComponent(aa()),lp_changes:m})}}else O=`
4
+ ${O}?from=${encodeURIComponent(t)}&to=${encodeURIComponent(e)}&amount=${encodeURIComponent(n)}&by_amount_in=${encodeURIComponent(i)}&order_split=${encodeURIComponent(u)}&external_router=${encodeURIComponent(l)}&sender_address=''&request_id=${encodeURIComponent(aa())}
5
+ `;if(b=await this.fetchAndParseData(O,T),b?.isTimeout||b==null){let P=await this.sdk.Router.price(t,e,new Pn.default(n),i,r,o,a),M=[];for(let E of P.paths){let q=[];if(E.poolAddress.length>1){let X=this.sdk.Router.tokenInfo(E.coinType[0]).decimals,G=this.sdk.Router.tokenInfo(E.coinType[1]).decimals,Z=E.a2b[0]?ne.sqrtPriceX64ToPrice(new Pn.default(P.currentSqrtPrice[0]),X,G):ne.sqrtPriceX64ToPrice(new Pn.default(P.currentSqrtPrice[0]),G,X),A={direction:E.a2b[0],label:"Cetus",poolAddress:E.poolAddress[0],fromCoin:E.coinType[0],toCoin:E.coinType[1],feeRate:this.sdk.Router.getFeeRate(E.coinType[0],E.coinType[1],E.poolAddress[0]),outputAmount:P.byAmountIn?E.rawAmountLimit[0].toString():E.rawAmountLimit[1].toString(),inputAmount:E.amountIn.toString(),currentSqrtPrice:P.currentSqrtPrice[0],currentPrice:Z,fromDecimal:X,toDecimal:G},I=this.sdk.Router.tokenInfo(E.coinType[1]).decimals,x=this.sdk.Router.tokenInfo(E.coinType[2]).decimals,j=E.a2b[1]?ne.sqrtPriceX64ToPrice(new Pn.default(P.currentSqrtPrice[1]),I,x):ne.sqrtPriceX64ToPrice(new Pn.default(P.currentSqrtPrice[1]),x,I),k={direction:E.a2b[1],label:"Cetus",poolAddress:E.poolAddress[1],fromCoin:E.coinType[1],toCoin:E.coinType[2],feeRate:this.sdk.Router.getFeeRate(E.coinType[1],E.coinType[2],E.poolAddress[1]),outputAmount:E.amountOut.toString(),inputAmount:P.byAmountIn?E.rawAmountLimit[0].toString():E.rawAmountLimit[1].toString(),currentSqrtPrice:P.currentSqrtPrice[1],currentPrice:j,fromDecimal:I,toDecimal:x};q.push(A,k)}else{let X=this.sdk.Router.tokenInfo(E.coinType[0]).decimals,G=this.sdk.Router.tokenInfo(E.coinType[1]).decimals,Z=E.a2b[0]?ne.sqrtPriceX64ToPrice(new Pn.default(P.currentSqrtPrice[0]),X,G):ne.sqrtPriceX64ToPrice(new Pn.default(P.currentSqrtPrice[0]),G,X),A={direction:E.a2b[0],label:"Cetus",poolAddress:E.poolAddress[0],fromCoin:E.coinType[0],toCoin:E.coinType[1],feeRate:this.sdk.Router.getFeeRate(E.coinType[0],E.coinType[1],E.poolAddress[0]),outputAmount:E.amountOut.toString(),inputAmount:E.amountIn.toString(),currentSqrtPrice:P.currentSqrtPrice[0],currentPrice:Z,fromDecimal:X,toDecimal:G};q.push(A)}let K={percent:Number(E.amountIn)/Number(P.amountIn)*100,inputAmount:Number(E.amountIn.toString()),outputAmount:Number(E.amountOut.toString()),pathIndex:0,lastQuoteOutput:0,basePaths:q};M.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:M};v="v1",b=B}return{result:b,version:v}}},Dv=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}setTokenListCache(t){let{coin_list_handle:e}=R(this.sdk.sdkOptions.cetus_config),n=`${e}_getCoinConfigs`,i=this.getCache(n),r=i?[...i,...t]:t;this.updateCache(n,r,J)}async getTokenListByCoinTypes(t){let e={},{coin_list_handle:n}=R(this.sdk.sdkOptions.cetus_config),i=`${n}_getCoinConfigs`,r=this.getCache(i);if(r!==void 0){let s=r;for(let a of t)for(let u of s)if(qt(a)===qt(u.address)){e[a]=u;continue}}let o=t.filter(s=>e[s]===void 0);for(let s of o){let a=`${s}_metadata`,u=this.getCache(a);if(u!==void 0)e[s]=u;else{let l=await this._sdk.fullClient.getCoinMetadata({coinType:s});if(l){let m={id:l.id,pyth_id:"",name:l.name,symbol:l.symbol,official_symbol:l.symbol,coingecko_id:"",decimals:l.decimals,project_url:"",logo_url:l.iconUrl,address:s};e[s]=m,this.updateCache(a,m,J)}else console.log(`not found ${s}`)}}return e}async getCoinConfigs(t=!1,e=!0){let{coin_list_handle:n}=R(this.sdk.sdkOptions.cetus_config),i=`${n}_getCoinConfigs`,r=this.getCache(i,t);if(r)return r;let s=(await this._sdk.fullClient.getDynamicFieldsByPage(n)).data.map(l=>l.objectId),a=await this._sdk.fullClient.batchGetObjects(s,{showContent:!0}),u=[];return a.forEach(l=>{if(l.error!=null||l.data?.content?.dataType!=="moveObject")throw new Y(`when getCoinConfigs get objects error: ${l.error}, please check the rpc and contracts address config.`,"InvalidConfig");let m=this.buildCoinConfig(l,e);this.updateCache(`${n}_${m.address}_getCoinConfig`,m,J),u.push({...m})}),this.updateCache(i,u,J),u}async getCoinConfig(t,e=!1,n=!0){let{coin_list_handle:i}=R(this.sdk.sdkOptions.cetus_config),r=`${i}_${t}_getCoinConfig`,o=this.getCache(r,e);if(o)return o;let s=await this._sdk.fullClient.getDynamicFieldObject({parentId:i,name:{type:"0x1::type_name::TypeName",value:{name:cv(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,n);return this.updateCache(r,a,J),a}buildCoinConfig(t,e=!0){let n=te(t);n=n.value.fields;let i={...n};return i.id=Ht(t),i.address=z(n.coin_type.fields.name).full_address,n.pyth_id&&(i.pyth_id=(0,ha.normalizeSuiObjectId)(n.pyth_id)),this.transformExtensions(i,n.extension_fields.fields.contents,e),delete i.coin_type,i}async getClmmPoolConfigs(t=!1,e=!0){let{clmm_pools_handle:n}=R(this.sdk.sdkOptions.cetus_config),i=`${n}_getClmmPoolConfigs`,r=this.getCache(i,t);if(r)return r;let s=(await this._sdk.fullClient.getDynamicFieldsByPage(n)).data.map(l=>l.objectId),a=await this._sdk.fullClient.batchGetObjects(s,{showContent:!0}),u=[];return a.forEach(l=>{if(l.error!=null||l.data?.content?.dataType!=="moveObject")throw new Y(`when getClmmPoolsConfigs get objects error: ${l.error}, please check the rpc and contracts address config.`,"InvalidConfig");let m=this.buildClmmPoolConfig(l,e);this.updateCache(`${m.pool_address}_getClmmPoolConfig`,m,J),u.push({...m})}),this.updateCache(i,u,J),u}async getClmmPoolConfig(t,e=!1,n=!0){let{clmm_pools_handle:i}=R(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:i,name:{type:"address",value:t}}),a=this.buildClmmPoolConfig(s,n);return this.updateCache(r,a,J),a}buildClmmPoolConfig(t,e=!0){let n=te(t);n=n.value.fields;let i={...n};return i.id=Ht(t),i.pool_address=(0,ha.normalizeSuiObjectId)(n.pool_address),this.transformExtensions(i,n.extension_fields.fields.contents,e),i}async getLaunchpadPoolConfigs(t=!1,e=!0){let{launchpad_pools_handle:n}=R(this.sdk.sdkOptions.cetus_config),i=`${n}_getLaunchpadPoolConfigs`,r=this.getCache(i,t);if(r)return r;let s=(await this._sdk.fullClient.getDynamicFieldsByPage(n)).data.map(l=>l.objectId),a=await this._sdk.fullClient.batchGetObjects(s,{showContent:!0}),u=[];return a.forEach(l=>{if(l.error!=null||l.data?.content?.dataType!=="moveObject")throw new Y(`when getCoinConfigs get objects error: ${l.error}, please check the rpc and contracts address config.`,"InvalidConfig");let m=this.buildLaunchpadPoolConfig(l,e);this.updateCache(`${m.pool_address}_getLaunchpadPoolConfig`,m,J),u.push({...m})}),this.updateCache(i,u,J),u}async getLaunchpadPoolConfig(t,e=!1,n=!0){let{launchpad_pools_handle:i}=R(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:i,name:{type:"address",value:t}}),a=this.buildLaunchpadPoolConfig(s,n);return this.updateCache(r,a,J),a}buildLaunchpadPoolConfig(t,e=!0){let n=te(t);n=n.value.fields;let i={...n};i.id=Ht(t),i.pool_address=(0,ha.normalizeSuiObjectId)(n.pool_address),this.transformExtensions(i,n.extension_fields.fields.contents,e);let r=[];n.social_media.fields.contents.forEach(o=>{r.push({name:o.fields.value.fields.name,link:o.fields.value.fields.link})}),i.social_media=r;try{i.regulation=decodeURIComponent(Pr.decode(i.regulation).replace(/%/g,"%25"))}catch{i.regulation=Pr.decode(i.regulation)}return i}transformExtensions(t,e,n=!0){let i=[];for(let r of e){let{key:o}=r.fields,{value:s}=r.fields;if(o==="labels")try{s=JSON.parse(decodeURIComponent(Pr.decode(s)))}catch{}n&&(t[o]=s),i.push({key:o,value:s})}delete t.extension_fields,n||(t.extensions=i)}async getCetusConfig(t=!1){let e=this._sdk.sdkOptions.cetus_config.package_id,n=`${e}_getCetusConfig`,i=this.getCache(n,t);if(i!==void 0)return i;let r=await this._sdk.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=Qi(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 u of s.data)switch(z(u.type).name){case"InitCoinListEvent":a.coin_list_id=u.parsedJson.coin_list_id;break;case"InitLaunchpadPoolsEvent":a.launchpad_pools_id=u.parsedJson.launchpad_pools_id;break;case"InitClmmPoolsEvent":a.clmm_pools_id=u.parsedJson.pools_id;break;case"InitConfigEvent":a.global_config_id=u.parsedJson.global_config_id,a.admin_cap_id=u.parsedJson.admin_cap_id;break;default:break}return a=await this.getCetusConfigHandle(a),a.clmm_pools_id.length>0&&this.updateCache(n,a,J),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(i=>{if(i.error!=null||i.data?.content?.dataType!=="moveObject")throw new Y(`when getCetusConfigHandle get objects error: ${i.error}, please check the rpc and contracts address config.`,"InvalidConfigHandle");let r=te(i),o=Dn(i);switch(z(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,n=We){let i=this._cache[t];i?(i.overdueTime=ye(n),i.value=e):i=new qe(e,ye(n)),this._cache[t]=i}getCache(t,e=!1){try{let n=this._cache[t];if(!n)return;if(e||!n.isValid()){delete this._cache[t];return}return n.value}catch(n){console.error(`Error accessing cache for key ${t}:`,n);return}}},Mv=class extends hp.SuiClient{async queryEventsByPage(t,e="all"){let n=[],i=!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?(n=[...n,...s.data],i=s.hasNextPage,o=s.nextCursor):i=!1}while(r&&i);return{data:n,nextCursor:o,hasNextPage:i}}async getOwnedObjectsByPage(t,e,n="all"){let i=[],r=!0,o=n==="all",s=o?null:n.cursor;do{let a=await this.getOwnedObjects({owner:t,...e,cursor:s,limit:o?null:n.limit});a.data?(i=[...i,...a.data],r=a.hasNextPage,s=a.nextCursor):r=!1}while(o&&r);return{data:i,nextCursor:s,hasNextPage:r}}async getDynamicFieldsByPage(t,e="all"){let n=[],i=!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?(n=[...n,...s.data],i=s.hasNextPage,o=s.nextCursor):i=!1}while(r&&i);return{data:n,nextCursor:o,hasNextPage:i}}async batchGetObjects(t,e,n=50){let i=[];try{for(let r=0;r<Math.ceil(t.length/n);r++){let o=await this.multiGetObjects({ids:t.slice(r*n,n*(r+1)),options:e});i=[...i,...o]}}catch(r){console.log(r)}return i}async calculationTxGas(t){let{sender:e}=t.blockData;if(e===void 0)throw Error("sdk sender is empty");let n=await this.devInspectTransactionBlock({transactionBlock:t,sender:e}),{gasUsed:i}=n.effects;return Number(i.computationCost)+Number(i.storageCost)-Number(i.storageRebate)}async sendTransaction(t,e){try{return await this.signAndExecuteTransactionBlock({transactionBlock:e,signer:t,options:{showEffects:!0,showEvents:!0}})}catch(n){console.log("error: ",n)}}async sendSimulationTransaction(t,e,n=!0){try{if(n)return await this.devInspectTransactionBlock({transactionBlock:t,sender:e});let r={ProgrammableTransaction:{inputs:t.blockData.inputs.map(u=>{let{type:l,value:m}=u;return l==="object"?fp.Inputs.SharedObjectRef({objectId:m,initialSharedVersion:0,mutable:!0}):m}),transactions:t.blockData.transactions}},o=pp.bcs.TransactionKind.serialize(r,{maxSize:131072}).toBytes(),s=wu(o);return await this.transport.request({method:"sui_devInspectTransactionBlock",params:[e,s,null,null]})}catch(i){console.log("devInspectTransactionBlock error",i)}}},qr=class{_cache={};_rpcModule;_pool;_position;_swap;_rewarder;_router;_router_v2;_token;_config;_sdkOptions;_senderAddress="";constructor(t){this._sdkOptions=t,this._rpcModule=new Mv({url:t.fullRpcUrl}),this._swap=new Ov(this),this._pool=new Sv(this),this._position=new Av(this),this._rewarder=new xv(this),this._router=new Iv(this),this._router_v2=new Ev(this),this._token=new Pv(this),this._config=new Dv(this),ba(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,n=!0){let i=[],r=null,o=`${this.sdkOptions.fullRpcUrl}_${t}_${e}_getOwnerCoinAssets`,s=this.getCache(o,n);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(u=>{BigInt(u.balance)>0&&i.push({coinAddress:z(u.coinType).source_address,coinObjectId:u.coinObjectId,balance:BigInt(u.balance)})}),r=a.nextCursor,!a.hasNextPage)break}return this.updateCache(o,i,30*1e3),i}async getOwnerCoinBalances(t,e){let n=[];return e?n=[await this.fullClient.getBalance({owner:t,coinType:e})]:n=[...await this.fullClient.getAllBalances({owner:t})],n}updateCache(t,e,n=J){let i=this._cache[t];i?(i.overdueTime=ye(n),i.value=e):i=new qe(e,ye(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t],i=n?.isValid();if(!e&&i)return n.value;i||delete this._cache[t]}};var _p=require("@mysten/sui.js/utils");var Sa=require("@mysten/sui.js/transactions");var an=require("@mysten/sui.js/transactions"),zr=require("@mysten/sui.js/utils"),jo=be(Se(),1);var yp=require("@mysten/sui.js/utils");var Hu=require("@mysten/sui.js/transactions");var ii=require("@mysten/sui.js/transactions");var Vn=require("@mysten/sui.js/utils"),cn=require("@mysten/sui.js/transactions");var Xu=require("@mysten/sui.js/utils");var Kv=require("@mysten/sui.js/utils");var Ke=be(Se(),1);var vp=be(Se(),1);var Zu=be(Se(),1);var ri=require("@mysten/sui.js/transactions"),tr=require("@mysten/sui.js/transactions");var nr=require("@mysten/sui.js/transactions");var je=be(Se(),1);var Ju=require("@mysten/sui.js/bcs"),Do=require("@mysten/sui.js/utils"),Aa=require("@mysten/sui.js/transactions");var un=require("@mysten/sui.js/transactions"),Vu="router",Kr=1e4,Ti=class{static buildPoolImmutables(t){let{fields:e}=t.value.fields.value;return{clmm_pool_id:z(e.clmm_pool_id).address,booster_type:z(e.booster_type.fields.name).source_address,pool_id:z(e.pool_id).address,coinTypeA:z(e.coin_type_a.fields.name).source_address,coinTypeB:z(e.coin_type_b.fields.name).source_address}}static buildPoolState(t){let e=te(t),n=[];return e.config.fields.contents.forEach(r=>{n.push({lock_day:Number(r.fields.key),multiplier:Number(D(r.fields.value).div(Kr))})}),{basic_percent:Number(D(e.basic_percent).div(Kr)),balances:{balances_handle:e.balances.fields.id.id,size:e.balances.fields.size},config:n,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=z(Ht(t)).address;return{lock_clmm_position:ni(t),locked_nft_id:e}}static buildLockPositionInfo(t){let e=te(t),{value:n}=e.value.fields;return{type:n.type,position_id:n.fields.position_id,start_time:Number(n.fields.start_time),lock_period:Number(n.fields.lock_period),end_time:Number(n.fields.end_time),growth_rewarder:n.fields.growth_rewarder,rewarder_owned:n.fields.rewarder_owned,is_settled:n.fields.is_settled}}static isLocked(t){return t.end_time>Date.parse(new Date().toString())/1e3}},jv=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPoolImmutables(t=!1){let{booster:e}=this._sdk.sdkOptions,n=`${e.package_id}_getPoolImmutables`,i=this.getCache(n,t),r=[];if(i!==void 0)r.push(...i);else{let o=[];(await this._sdk.ClmmSDK.fullClient.getDynamicFieldsByPage(R(e).booster_pool_handle)).data?.forEach(u=>{o.push(u.objectId)});let a=await this._sdk.ClmmSDK.fullClient.batchGetObjects(o,{showContent:!0});for(let u of a){let l=te(u);if(l){let m=Ti.buildPoolImmutables(l);this.updateCache(`${m.pool_id}_getPoolImmutable`,m,J),r.push(m)}}}return this.updateCache(n,r,J),r}async getPoolImmutable(t){let{booster:e}=this._sdk.sdkOptions,n=`${t}_getPoolImmutable`,i=this.getCache(n);if(i!==void 0)return i;let r=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:R(e).booster_pool_handle,name:{type:"0x2::object::ID",value:t}}),o=te(r),s=Ti.buildPoolImmutables(o);return this.updateCache(n,s,J),s}async getPools(){let t=[],n=(await this.getPoolImmutables()).map(r=>r.pool_id),i=await this._sdk.ClmmSDK.fullClient.batchGetObjects(n,{showType:!0,showContent:!0});for(let r of i){let o=Ti.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,J)}}return t}async getPool(t,e=!0){let n=`${t}_getPoolObject`,i=this.getCache(n,e),r=await this.getPoolImmutable(t);if(i!==void 0)return{...r,...i};let o=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),s=Ti.buildPoolState(o),a={...r,...s};return this.updateCache(n,a,J),a}async getPoolHandleId(t){let e=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),n=te(e);return n?n.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,n={booster_config_id:"",booster_pool_handle:""};return e.length>0&&e.forEach(i=>{let r=i.parsedJson;r&&(n.booster_config_id=r.config_id)}),n.booster_pool_handle=await this.getPoolHandleId(n.booster_config_id),n}async getOwnerBoosterPositions(t,e,n){let{booster:i}=this.sdk.sdkOptions,r=[],o=[],s=`${i.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 l of a.data)if(z(Lt(l)).source_address===s&&l.data){let b=Ti.buildLockNFT(l);this.updateCache(`${b.locked_nft_id}_getBoosterPositionById`,b,J),b&&(e===void 0||e===b.lock_clmm_position.pool)&&r.push(b)}let u=await this.getLockPositionInfos(n,r.map(l=>l.locked_nft_id));for(let l of r)for(let m of u)if(l.lock_clmm_position.pos_object_id===m.position_id){o.push({...l,...m});break}return o}async getBoosterPosition(t,e){let n=`${e}_getBoosterPositionById`,i=this.getCache(n),r;if(i!==void 0)r=i;else{let s=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0,showOwner:!0}});r=Ti.buildLockNFT(s),this.updateCache(n,r,J)}let o=await this.getLockPositionInfo(t,e);return{...r,...o}}async getLockPositionInfos(t,e=[]){let n=await this._sdk.ClmmSDK.fullClient.getDynamicFieldsByPage(t),i=[],r=[];return n.data?.forEach(o=>{e.length>0?e.includes(o.name.value)&&i.push(o.objectId):i.push(o.objectId)}),i.length>0&&(await this._sdk.ClmmSDK.fullClient.batchGetObjects(i,{showContent:!0})).forEach(s=>{let a=Ti.buildLockPositionInfo(s);a&&r.push(a)}),r}async getLockPositionInfo(t,e){let n=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}});return Ti.buildLockPositionInfo(n)}calculateXCetusRewarder(t,e,n){let i=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())}),n.is_settled||e.config.forEach(a=>{a.lock_day===n.lock_period&&(i=a.multiplier)});let o=D(r).sub(n.growth_rewarder).mul(i);return D(n.rewarder_owned).add(o).toString()}lockPositionPayload(t){let{booster:e}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions,i=new Sa.TransactionBlock;return i.moveCall({target:`${e.published_at}::${Vu}::lock_position`,typeArguments:[t.booster_type,t.coinTypeA,t.coinTypeB],arguments:[i.pure(R(e).booster_config_id),i.pure(R(n).global_config_id),i.pure(t.booster_pool_id),i.pure(t.clmm_pool_id),i.pure(t.clmm_position_id),i.pure(t.lock_day),i.pure(W)]}),i}canceLockPositionPayload(t){let{booster:e}=this.sdk.sdkOptions,n=new Sa.TransactionBlock;return n.moveCall({target:`${e.published_at}::${Vu}::cancel_lock`,typeArguments:[t.booster_type],arguments:[n.pure(R(e).booster_config_id),n.pure(t.booster_pool_id),n.pure(t.lock_nft_id),n.pure(W)]}),n}redeemPayload(t){let{booster:e,xcetus:n}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions,r=new Sa.TransactionBlock,o=R(n);return r.moveCall({target:`${e.published_at}::${Vu}::redeem`,typeArguments:[t.booster_type,t.coinTypeA,t.coinTypeB],arguments:[r.pure(R(e).booster_config_id),r.pure(R(i).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(W)]}),r}updateCache(t,e,n=We){let i=this._cache[t];i?(i.overdueTime=ye(n),i.value=e):i=new qe(e,ye(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t];if(!e&&n?.isValid())return n.value;delete this._cache[t]}},Qt="router",wp=1e9;var zn=class{static priceRealToFix(t,e,n){let i=D(e-n).toNumber();return Number(D(t).div(D(10).pow(D(i))).toString())}static priceFixToReal(t,e,n){let i=D(e-n).toNumber();return Number(D(t).mul(D(10).pow(D(i))).toString())}static raiseTotalAmount(t,e,n){let i=D(e-n).abs().toNumber();return e>n?Number(D(t.total_supply).mul(t.current_price).div(D(10).pow(D(i))).toString()):Number(D(t.total_supply).mul(t.current_price).mul(D(10).pow(D(i))).toString())}static buildLaunchPadPool(t){let e=Lt(t),n=z(e),i=te(t),r={coin_type_sale:n.type_arguments[0],coin_type_raise:n.type_arguments[1],pool_address:(0,yp.normalizeSuiObjectId)(Ht(t)),is_settle:i.is_settle,current_price:D(i.initialize_price).div(D(wp)).toString(),price:i.initialize_price,min_price:"0",max_price:"0",sale_coin_amount:i.sale_coin,raise_coin_amount:i.raise_coin,total_purchase_amount:i.reality_raise_total,total_supply:i.sale_total,min_purchase:i.min_purchase,max_purchase:i.max_purchase,complete_raise_limit:i.least_raise_amount,softcap:i.softcap,max_raise_amount:i.hardcap,sale_decimals:0,raise_decimals:0,liquidity_injection_ratio:Number(i.liquidity_rate)/1e4,is_cancel:i.is_cancel,duration_summary:{start_time:Number(i.duration_manager.fields.start_time),end_time:0,settle_end_time:0,purchase_duration:Number(i.duration_manager.fields.activity_duration),settle_duration:Number(i.duration_manager.fields.settle_duration),lock_up_duration:Number(i.duration_manager.fields.locked_duration)},white_summary:{white_handle:i.white_list.fields.users.fields.id.id,protection_hard_cap:i.white_list.fields.hard_cap_total,protection_limit_used:i.white_list.fields.purchase_total,size:Number(i.white_list.fields.users.fields.size)},unused_sale:i.unused_sale,harvest_raise:i.harvest_raise,tick_spacing:Number(i.tick_spacing),owner:i.recipient,purchase_summary:{purchase_handle:i.purchase_list.fields.id.id,size:Number(i.purchase_list.fields.size)},pool_status:"Failed"};return zn.updatePoolStatus(r),r}static updatePoolStatus(t){let e=Number(D(Date.now()/1e3).toFixed(0)),{duration_summary:n}=t,i=n.start_time+n.purchase_duration,r=i+n.settle_duration;if(n.end_time=i,n.settle_end_time=r,t.is_settle)t.pool_status="Ended";else if(t.is_cancel)t.pool_status="Canceled";else if(e<n.start_time)t.pool_status="Upcoming";else if(e>n.start_time&&e<i)t.pool_status="Live";else if(e>i&&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 n=await t.ClmmSDK.CetusConfig.getTokenListByCoinTypes([e.coin_type_sale,e.coin_type_raise]),i=n[e.coin_type_sale].decimals,r=n[e.coin_type_raise].decimals;e.min_price=this.priceFixToReal(Number(D(e.softcap).div(D(e.total_supply))),i,r).toString(),e.max_price=this.priceFixToReal(Number(D(e.max_raise_amount).div(D(e.total_supply))),i,r).toString(),e.current_price=this.priceFixToReal(Number(e.current_price),i,r).toString(),e.sale_decimals=i,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(D(e.harvest_raise).equals(D(0))){let i=await t.Launchpad.getSettleEvent(e.pool_address);i&&(e.harvest_raise=i.unused_raise)}let n=(0,jo.min)(new jo.default(e.total_purchase_amount),new jo.default(e.max_raise_amount));return D(n.toString()).mul(1-e.liquidity_injection_ratio).toString()}return"0"}static async getHistoryWithdrawSale(t,e){if(e.pool_status==="Ended"){let n=await t.Launchpad.getSettleEvent(e.pool_address);return n&&(e.unused_sale=n.unused_sale),e.unused_sale}return"0"}static async getOverrecruitReverseAmount(t,e){let n=await t.Launchpad.getPurchaseMarks(t.ClmmSDK.senderAddress,[e.pool_address],!1);if(n.length>0){let i=n[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 D(i).sub(r).div(D(e.total_purchase_amount).sub(o)).mul(D(e.total_purchase_amount).sub(e.max_raise_amount)).toString()}return"0"}static async getCanPurchaseAmount(t,e){let n=await zn.getOverrecruitReverseAmount(t,e),i=await t.Launchpad.getPurchaseMarks(t.ClmmSDK.senderAddress,[e.pool_address],!1);if(i){let r=i[0].purchased_raise_amount;D(r).sub(n).div(e.current_price)}return"0"}},Bv=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPoolImmutables(t=[],e=0,n=100,i=!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,i),a=[],u=[];if(s!==void 0&&a.push(...s),a.length===0)try{((await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${r}::factory::CreatePoolEvent`}))?.data).forEach(b=>{let v=b.parsedJson;v&&a.push({pool_address:v.pool_id,coin_type_sale:z(v.sale_coin.name).full_address,coin_type_raise:z(v.raise_coin.name).full_address})}),this.updateCache(o,a,J)}catch(m){console.log("getPoolImmutables",m)}let l=t.length>0;for(let m=0;m<a.length;m+=1){let b=a[m];if(!(l&&!t.includes(b.pool_address))){if(!l){let v=m;if(v<e||v>=e+n)continue}u.push(b)}}return u}async getPoolImmutablesWithPage(t="all",e=!1){let{package_id:n}=this._sdk.sdkOptions.launchpad,i=`${n}_getPoolImmutables`,r=[],o={data:[],hasNextPage:!1},s=t==="all";if(s){let a=this.getCache(i,e);a&&r.push(...a)}if(r.length===0)try{let a=await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${n}::factory::CreatePoolEvent`},t);o.hasNextPage=a.hasNextPage,o.nextCursor=a.nextCursor,a.data.forEach(u=>{let l=u.parsedJson;l&&r.push({pool_address:l.pool_id,coin_type_sale:z(l.sale_coin.name).full_address,coin_type_raise:z(l.raise_coin.name).full_address})})}catch(a){console.log("getPoolImmutables",a)}return o.data=r,s&&this.updateCache(i,r,J),o}async getPools(t=[],e=0,n=100){let i=[],r=[];t.length>0?r=[...t]:(await this.getPoolImmutables([],e,n,!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=zn.buildLaunchPadPool(s);await zn.calculatePoolPrice(this._sdk,a),i.push(a);let u=`${a.pool_address}_getPoolObject`;this.updateCache(u,a,J)}return i}async getPool(t,e=!0){let n=`${t}_getPoolObject`,i=this.getCache(n,e);if(i!==void 0){let s=i;return zn.updatePoolStatus(s),s}let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),o=zn.buildLaunchPadPool(r);return await zn.calculatePoolPrice(this._sdk,o),this.updateCache(n,o),o}async getInitConfig(t=!1){let e=this._sdk.sdkOptions.launchpad.package_id,n=`${e}_getInitEvent`,i=this.getCache(n,t);if(i!==void 0)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=Qi(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(u=>{let l=u.parsedJson;if(l)switch(z(u.type).full_address){case`${e}::config::InitConfigEvent`:a.admin_cap_id=l.admin_cap_id,a.config_cap_id=l.config_cap_id;break;case`${e}::factory::InitFactoryEvent`:a.pools_id=l.pools_id;break;default:break}}),this.updateCache(n,a,J)),a}async getLockNFT(t,e=!1){let n=`${t}_getLockNFT`,i=this.getCache(n,e);if(i!==void 0)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}});if(!r.error)return ni(r)}async getLockNFTList(t){let{package_id:e}=this._sdk.ClmmSDK.sdkOptions.clmm_pool,{sdkOptions:n}=this._sdk,i=[];try{let r=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${n.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}`===z(a.nft_type).address){let u=await this.getLockNFT(a.lock_nft_id);if(u){let l=z(u.coin_type_a).full_address,m=z(u.coin_type_b).full_address;i.push({...u,coin_type_a:l,coin_type_b:m,...a})}}}}return i}catch(r){return console.log("getLockNFTList:",r),[]}}async creatPoolTransactionPayload(t){let{launchpad:e}=this.sdk.sdkOptions,n=R(e);if(this.assertLuanchpadConfig(),this._sdk.ClmmSDK.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");let i=zn.priceRealToFix(Number(t.initialize_price),t.sale_decimals,t.raise_decimals),r=new an.TransactionBlock,o=D(t.total_supply).add(D(t.total_supply).mul(D(t.liquidity_rate))).toNumber(),s=await oe.syncBuildCoinInputForAmount(this._sdk.ClmmSDK,r,BigInt(o),t.coin_type_sale),a=[r.pure(n.admin_cap_id),r.pure(n.config_cap_id),r.pure(n.pools_id),r.pure((0,zr.normalizeSuiAddress)(t.recipient)),r.pure((i*wp).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(W)],u=[t.coin_type_sale,t.coin_type_raise];return r.moveCall({target:`${e.published_at}::${Qt}::create_launch_pool`,typeArguments:u,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 n=new an.TransactionBlock,i=await oe.syncBuildCoinInputForAmount(this._sdk.ClmmSDK,n,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=[n.pure(t.pool_address),n.pure(R(e).config_cap_id),n.pure(r.id),i,n.pure(t.purchase_amount.toString()),n.pure(W)]:s=[n.pure(t.pool_address),n.pure(R(e).config_cap_id),i,n.pure(t.purchase_amount.toString()),n.pure(W)],n.moveCall({target:`${e.published_at}::${Qt}::${r===void 0?"create_and_purchase":"purchase"}`,typeArguments:o,arguments:s}),n}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 n=(await this.getPurchaseMarks(this._sdk.ClmmSDK.senderAddress,[t.pool_address],!1))[0],i=new an.TransactionBlock,r=[t.coin_type_sale,t.coin_type_raise],o=[i.pure(t.pool_address),i.pure(R(e).config_cap_id),i.pure(n?.id),i.pure(W)];return i.moveCall({target:`${e.published_at}::${Qt}::claim`,typeArguments:r,arguments:o}),i}async creatSettlePayload(t){let{launchpad:e}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions;if(this._sdk.ClmmSDK.senderAddress.length===0)throw Error("this config sdk senderAddress is empty");this.assertLuanchpadConfig();let i=R(n),{clmm_args:r}=t,o=new an.TransactionBlock;o.setSender(this.sdk.ClmmSDK.senderAddress);let s=[t.coin_type_sale,t.coin_type_raise];if(r){let a=r.opposite?ne.priceToSqrtPriceX64(D(1).div(r.current_price),r.raise_decimals,r.sale_decimals).toString():ne.priceToSqrtPriceX64(D(r.current_price),r.sale_decimals,r.raise_decimals).toString(),u=BigInt(a)<BigInt(r.clmm_sqrt_price),l=r.opposite?u?t.coin_type_raise:t.coin_type_sale:u?t.coin_type_sale:t.coin_type_raise,m=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress,l),b=Ce.calculateTotalBalance(m);Ce.isSuiCoin(l)&&(b-=BigInt(2e8));let T=oe.buildCoinForAmount(o,m,b,l).targetCoin,O=r.opposite?u?"settle_with_reverse_clmm_only_with_a":"settle_with_reverse_clmm_only_with_b":u?"settle_only_with_a":"settle_only_with_b",P=[o.pure(t.pool_address),o.pure(R(e).config_cap_id),o.pure(r.clmm_pool_address),o.pure(i.global_config_id),o.pure(a),T,o.pure(W)];o.moveCall({target:`${e.published_at}::${Qt}::${O}`,typeArguments:s,arguments:P})}else o.moveCall({target:`${e.published_at}::${Qt}::settle`,typeArguments:s,arguments:[o.pure(t.pool_address),o.pure(R(e).config_cap_id),o.pure(W)]});return o}creatWithdrawPayload(t){let{launchpad:e}=this.sdk.sdkOptions,n=new an.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise],r=[n.object(t.pool_address),n.object(R(e).config_cap_id),n.object(W)];return t.sale_amount>BigInt(0)&&n.moveCall({target:`${e.published_at}::${Qt}::withdraw_sale`,typeArguments:i,arguments:r}),t.raise_amount>BigInt(0)&&n.moveCall({target:`${e.published_at}::${Qt}::withdraw_raise`,typeArguments:i,arguments:r}),n}addUserToWhitelisPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let n=new an.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise];return t.user_addrs.forEach(r=>{let o=[n.object(R(e).admin_cap_id),n.object(R(e).config_cap_id),n.object(t.pool_address),n.object(r),n.pure(t.safe_limit_amount),n.object(W)];n.moveCall({target:`${e.published_at}::${Qt}::add_user_to_whitelist`,typeArguments:i,arguments:o})}),n}updateWhitelistCapPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let n=new an.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise];return t.safe_limit_amount>0&&n.moveCall({target:`${e.published_at}::${Qt}::update_whitelist_member_safe_limit_amount`,typeArguments:i,arguments:[n.object(R(e).admin_cap_id),n.object(R(e).config_cap_id),n.object(t.pool_address),n.pure(t.white_list_member),n.pure(t.safe_limit_amount),n.object(W)]}),t.hard_cap_total>0&&n.moveCall({target:`${e.published_at}::${Qt}::update_whitelist_hard_cap_total`,typeArguments:i,arguments:[n.object(R(e).admin_cap_id),n.object(R(e).config_cap_id),n.object(t.pool_address),n.pure(t.hard_cap_total),n.object(W)]}),n}creatRemoveWhitelistPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let n=new an.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise];return t.user_addrs.forEach(r=>{let o=[n.object(R(e).admin_cap_id),n.object(R(e).config_cap_id),n.object(t.pool_address),n.object(r),n.object(W)];n.moveCall({target:`${e.published_at}::${Qt}::remove_user_from_whitelist`,typeArguments:i,arguments:o})}),n}creatCancelPoolPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let n=new an.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise],r=[n.pure(R(e).admin_cap_id),n.pure(R(e).config_cap_id),n.pure(t.pool_address),n.pure(W)];return n.moveCall({target:`${e.published_at}::${Qt}::cancel`,typeArguments:i,arguments:r}),n}updateRecipientPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let n=new an.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise],r=[n.pure(R(e).admin_cap_id),n.pure(R(e).config_cap_id),n.pure(t.pool_address),n.pure(t.new_recipient),n.pure(W)];return n.moveCall({target:`${e.published_at}::${Qt}::update_recipient_address`,typeArguments:i,arguments:r}),n}updatePoolDuractionPayload(t){let{launchpad:e}=this.sdk.sdkOptions;this.assertLuanchpadConfig();let n=new an.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise],r=[n.pure(R(e).admin_cap_id),n.pure(R(e).config_cap_id),n.pure(t.pool_address),n.pure(t.activity_duration),n.pure(t.settle_duration),n.pure(t.lock_duration),n.pure(W)];return n.moveCall({target:`${e.published_at}::${Qt}::update_pool_duration`,typeArguments:i,arguments:r}),n}creatUnlockNftPayload(t){let{launchpad:e}=this.sdk.sdkOptions;if(R(e)===void 0)throw Error("getPackagerConfigs(launchpad) is null");let n=new an.TransactionBlock,i=[t.nft_type],r=[n.pure(t.lock_nft),n.pure(W)];return n.moveCall({target:`${e.published_at}::lock::unlock_nft`,typeArguments:i,arguments:r}),n}async isAdminCap(t){let{launchpad:e}=this._sdk.sdkOptions;if(R(e)===void 0)throw Error("launchpad config is empty");let n=`${t}_isAdminCap`,i=this.getCache(n);if(i)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:R(e).admin_cap_id,options:{showType:!0,showOwner:!0}});console.log(r);let o=Dn(r),s=Rr(r),a=!1;return s&&o&&z(o).source_address===`${e.package_id}::config::AdminCap`&&(a=(0,zr.normalizeSuiAddress)(s.AddressOwner)===(0,zr.normalizeSuiAddress)(t)),this.updateCache(n,a,J),a}async isWhiteListUser(t,e){let n={type:"address",value:e};try{let i=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:n});return!!(i&&i.data)}catch{return!1}}async getPurchaseAmount(t,e){let n={type:"address",value:e};try{let i=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:n}),r=te(i);if(console.log(r),r)return r?.value?.fields}catch{}return{safe_limit_amount:"0",safe_purchased_amount:"0"}}async getPurchaseMarks(t,e=[],n=!0){let{launchpad:i}=this._sdk.sdkOptions,r=`${e}_getPurchaseMark`,o=this.getCache(r,n);if(!n&&o!==void 0)return o;let s=null,a=[];for(;;){let u=await this._sdk.ClmmSDK.fullClient.getOwnedObjects({owner:t,options:{showType:!0,showContent:!0,showDisplay:!0},cursor:s});for(let l of u.data){let{fields:m}=l.data.content;if(z(Lt(l)).source_address===`${i.package_id}::pool::PurchaseMark`){console.log("fields: ",m);let v={id:m.id.id,pool_id:z(m.pool_id).address,purchased_raise_amount:m.purchase_total,obtain_sale_amount:m.obtain_sale_amount,used_raise_amount:m.used_raise_amount};e.length>0?e.includes(v.pool_id)&&a.push(v):a.push(v)}}if(u.hasNextPage)s=u.nextCursor;else break}return this.updateCache(r,a,J),a}async getSettleEvent(t){let{launchpad:e}=this._sdk.sdkOptions,n=`${t}_getPurchaseMark`,i=this.getCache(n);if(i!==void 0)return i;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,zr.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(n,a,J),a}}}buildLaunchpadCoinType(t,e){return Nr(this._sdk.sdkOptions.launchpad.package_id,"pool","PoolLiquidityCoin",[t,e])}assertLuanchpadConfig(){let{launchpad:t}=this.sdk.sdkOptions;if(R(t)===void 0)throw Error("sdk getPackagerConfigs(launchpad) is null")}updateCache(t,e,n=We){let i=this._cache[t];i?(i.overdueTime=ye(n),i.value=e):i=new qe(e,ye(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t];if(!e&&n?.isValid())return n.value;delete this._cache[t]}},Si=class{static buildPoolImmutables(t){let{fields:e}=t.value.fields.value;return{clmm_pool_id:z(e.clmm_pool_id).address,bonus_type:z(e.bonus_type.fields.name).source_address,pool_id:z(e.pool_id).address,coinTypeA:z(e.coin_type_a.fields.name).source_address,coinTypeB:z(e.coin_type_b.fields.name).source_address}}static buildPoolState(t){let e=te(t),n=[];return e.config.fields.contents.forEach(r=>{n.push({rate:Number(D(r.fields.key).div(Kr)),multiplier:Number(D(r.fields.value).div(Kr))})}),{balance:e.balance,config:n,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(D(e.minimum_percent_to_reward).div(Kr)),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,n=[],i=t.id.id;return e.forEach(r=>{let{key:o,value:s}=r.fields,a={id:o,period_id:i,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(D(s.fields.percent).div(Kr)),fee_share_rate:0,is_redeemed:s.fields.is_redeemed};n.push(a)}),n}static buildPoolBonusInfo(t){let{fields:e,type:n}=t.value.fields.value;return{type:n,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 n=0;for(let i of t)e>=i.rate&&i.rate>n&&(n=i.multiplier);return n}},mp="router",Nv=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPoolImmutables(t=!1){let{maker_bonus:e}=this._sdk.sdkOptions,n=`${e.package_id}_getPoolImmutables`,i=this.getCache(n,t),r=[];if(i!==void 0)r.push(...i);else{let o=[];(await this._sdk.ClmmSDK.fullClient.getDynamicFieldsByPage(R(e).maker_pool_handle)).data?.forEach(u=>{o.push(u.objectId)});let a=await this._sdk.ClmmSDK.fullClient.batchGetObjects(o,{showContent:!0});for(let u of a){let l=te(u);l&&r.push(Si.buildPoolImmutables(l))}}return r}async getPoolImmutable(t){let{maker_bonus:e}=this._sdk.sdkOptions,n=`${e.package_id}_getPoolImmutables`,i=this.getCache(n);if(i!==void 0){let s=i.filter(a=>t===a.pool_id);if(s.length>0)return s[0]}let r=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:R(e).maker_pool_handle,name:{type:"0x2::object::ID",value:t}}),o=te(r);return Si.buildPoolImmutables(o)}async getPools(){let t=[],e=await this.getPoolImmutables(),n=e.map(o=>o.pool_id),i=await this._sdk.ClmmSDK.fullClient.batchGetObjects(n,{showType:!0,showContent:!0}),r=0;for(let o of i){let s=Si.buildPoolState(o);if(s){let a={...e[r],...s};t.push(a);let u=`${a.pool_id}_getPoolObject`;this.updateCache(u,a,J)}r+=1}return t}async getPool(t,e=!0){let n=`${t}_getPoolObject`,i=this.getCache(n,e),r=await this.getPoolImmutable(t);if(i!==void 0)return i;let o=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),s=Si.buildPoolState(o),a={...r,...s};return this.updateCache(n,a,J),a}async getPoolHandleId(t){let e=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),n=te(e);return n?n.list.fields.id.id:""}async getMakerPoolPeriods(t,e=!1){let n=[],i=`${t.pool_id}_getMakerPoolPeriods`,r=this.getCache(i,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(D(t.start_time).add(D(t.interval_day).mul(24*3600).mul(a.period)).toFixed(0,$.ROUND_DOWN)),a.end_time=Number(D(a.start_time).add(D(t.interval_day).mul(24*3600)).toFixed(0,$.ROUND_DOWN)),n.push(a)}),this.updateCache(i,n,J),n)}async getMakerBonusInitConfigs(){let{package_id:t}=this.sdk.sdkOptions.maker_bonus,e=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::config::InitEvent`}))?.data,n={maker_config_id:"",maker_pool_handle:""};return e.length>0&&e.forEach(i=>{let r=i.parsedJson;r&&(n.maker_config_id=r.config_id)}),n.maker_pool_handle=await this.getPoolHandleId(n.maker_config_id),n}async getPoolMarkerPositionList(t,e,n=!1){let i={},r=[];n||e.forEach(o=>{let s=`${t}_${o.period}_getPoolMarkerPositionList`,a=this.getCache(s);a!==void 0?i[o.period]=a:(i[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 u=te(a),l=Si.buildMarkerPositions(u);if(l.length>0){let{period_id:m}=l[0],b=e.filter(v=>v.id===m)[0];i[b.period]=l}});let o=[];for(let s in i)i[s].forEach(u=>{o.push(u)});if(o.length>0){let s=await this._sdk.ClmmSDK.Position.getSipmlePositionList(o.map(a=>a.id));for(let a of o)for(let u of s)if(a.id===u.pos_object_id){a.clmm_position=u;break}}}catch(o){console.log(o)}for(let o in i){let s=`${t}_${o}_getPoolMarkerPositionList`;this.updateCache(s,i[o],J)}return i}async updateXCetusRewarderAndFee(t,e,n){let i=await this.calculateTotalPointsAfterMultiper(t,n);for(let r of e)await this.calculateXCetusRewarder(t,r,n.period,i);return e}async calculateXCetusRewarder(t,e,n,i){let r=await this.getPoolBonusInfo(t.rewarders.rewarder_handle,n),{fee_share_rate:o}=this.calculateFeeShareRate(t,e,i),s=D(o).mul(r.total_bonus);return e.is_redeemed?e.bonus_num="0":e.bonus_num=s.toString(),e.bonus_num}calculateFeeShareRate(t,e,n){let i=Si.getBonusPercent(t.config,e.percent),r=D(e.point).mul(i),o=D(r).div(n);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 n=await this.getPoolMarkerPositionList(t.whale_nfts.whale_nfts_handle,[e]),i=D(0),r=n[e.period];for(let o of r){let s=Si.getBonusPercent(t.config,o.percent),a=D(o.point).mul(s);i=i.add(a)}return i.toString()}async calculateAllXCetusRewarder(t){let e=this._sdk.ClmmSDK.senderAddress,n=D(0),i=[];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 u of o){let l=s[u.period].filter(m=>e.length===0?!1:m.clmm_position?.owner===e);l.length>0&&(await this._sdk.MakerModule.updateXCetusRewarderAndFee(r,l,u),l.forEach(m=>{m.clmm_position?.position_status===Ku.Exists&&D(m.bonus_num).greaterThan(0)&&(n=n.add(m.bonus_num),a.includes(m.clmm_position.pos_object_id)||a.push(m.clmm_position.pos_object_id))}))}i.push({bonus_type:r.bonus_type,pool_id:r.pool_id,nft_ids:a})}return{claimtotal:n,claimRecord:i}}async getPoolBonusInfo(t,e,n=!1){let i=`${t}_${e}_getPoolBonusInfo`,r=this.getCache(i,n);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=Si.buildPoolBonusInfo(s);return this.updateCache(i,a,We),a}claimPayload(t){let{maker_bonus:e,xcetus:n}=this.sdk.sdkOptions,i=new Hu.TransactionBlock;return i.moveCall({target:`${e.published_at}::${mp}::claim`,typeArguments:[t.bonus_type],arguments:[i.pure(R(e).maker_config_id),i.pure(t.market_pool_id),i.pure(t.position_nft_id),i.pure(t.phase),i.pure(R(n).lock_manager_id),i.pure(R(n).xcetus_manager_id),i.pure(t.ve_nft_id)]}),i}claimAllPayload(t){let{maker_bonus:e,xcetus:n}=this.sdk.sdkOptions,i=new Hu.TransactionBlock;return t.whale_nfts.forEach(r=>{r.nft_ids.forEach(o=>{i.moveCall({target:`${e.published_at}::${mp}::claim_all`,typeArguments:[r.bonus_type],arguments:[i.object(R(e).maker_config_id),i.object(r.pool_id),i.object(o),i.object(R(n).lock_manager_id),i.object(R(n).xcetus_manager_id),i.object(t.ve_nft_id)]})})}),i}updateCache(t,e,n=We){let i=this._cache[t];i?(i.overdueTime=ye(n),i.value=e):i=new qe(e,ye(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t];if(!e&&n?.isValid())return n.value;delete this._cache[t]}},Lr="router",Gu="router",Mo=24*3600,xa=1e3,yn=1e11,ir=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(n=>{let i=[];n.fields.value.fields.contents.forEach(r=>{i.push({coin_type:z(r.fields.key.fields.name).source_address,amount:r.fields.value})}),e.rewards.push({period:Number(n.fields.key),rewards:i})}),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(n=>{e.bonus_types.push(z(n.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:qt(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,n={id:e.id.id,type:z(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 n.lock_day=(n.locked_until_time-n.locked_start_time)/Mo,n}static getAvailableXCetus(t,e){let n=D(0);return e.forEach(i=>{n=n.add(i.xcetus_amount)}),D(t.xcetus_balance).sub(n).toString()}static getWaitUnLockCetuss(t){return t.filter(e=>!ir.isLocked(e))}static getLockingCetuss(t){return t.filter(e=>ir.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(n=>{n.rewards.forEach(i=>{e.add(i.coin_type)})}),Array.from(e)}static getNextStartTime(t){let e=Date.now()/1e3,{start_time:n,interval_day:i}=t,r=Math.ceil((e-n)/(i*Mo));return n+r*i*Mo}},Fv=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getOwnerVeNFT(t,e=!0){let{xcetus:n}=this.sdk.sdkOptions,i=`${t}_getLockUpManagerEvent`,r=this.getCache(i,e);if(r!==void 0)return r;let o,s=`${n.package_id}::xcetus::VeNFT`;return(await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0,showDisplay:!0},filter:{StructType:s}})).data.forEach(u=>{let l=z(Lt(u)).source_address;if(l===s&&u.data&&u.data.content){let{fields:m}=u.data.content;o={...er(u),id:m.id.id,index:m.index,type:l,xcetus_balance:m.xcetus_balance},this.updateCache(i,o,J)}}),o}async getOwnerLockCetuss(t){let{xcetus:e}=this.sdk.sdkOptions,n=[],i=`${e.package_id}::lock_coin::LockedCoin<${this.buileCetusCoinType()}>`,r=await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0},filter:{StructType:i}});for(let o of r.data)if(z(Lt(o)).source_address===i&&o.data){let a=ir.buildLockCetus(o.data.content);a.xcetus_amount=await this.getXCetusAmount(a.id),n.push(a)}return n}async getLockCetus(t){let e=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0}});if(e.data?.content){let n=ir.buildLockCetus(e.data.content);return n.xcetus_amount=await this.getXCetusAmount(n.id),n}}async getOwnerCetusCoins(t){return await this._sdk.ClmmSDK.getOwnerCoinAssets(t,this.buileCetusCoinType())}mintVeNFTPayload(){let{xcetus:t}=this.sdk.sdkOptions,e=new ii.TransactionBlock;return e.moveCall({target:`${t.published_at}::${Lr}::mint_venft`,typeArguments:[],arguments:[e.pure(R(t).xcetus_manager_id)]}),e}async convertPayload(t){let{xcetus:e}=this.sdk.sdkOptions,n=new ii.TransactionBlock,i=this.buileCetusCoinType(),r=await oe.syncBuildCoinInputForAmount(this._sdk.ClmmSDK,n,BigInt(t.amount),i);return t.venft_id===void 0?n.moveCall({target:`${e.published_at}::${Lr}::mint_and_convert`,typeArguments:[],arguments:[n.object(R(e).lock_manager_id),n.object(R(e).xcetus_manager_id),r,n.pure(t.amount)]}):n.moveCall({target:`${e.published_at}::${Lr}::convert`,typeArguments:[],arguments:[n.object(R(e).lock_manager_id),n.object(R(e).xcetus_manager_id),r,n.pure(t.amount),n.pure(t.venft_id)]}),n}redeemLockPayload(t){let{xcetus:e}=this.sdk.sdkOptions,n=new ii.TransactionBlock;return n.moveCall({target:`${e.published_at}::${Lr}::redeem_lock`,typeArguments:[],arguments:[n.pure(R(e).lock_manager_id),n.pure(R(e).xcetus_manager_id),n.pure(t.venft_id),n.pure(t.amount),n.pure(t.lock_day),n.pure(W)]}),n}redeemPayload(t){let{xcetus:e}=this.sdk.sdkOptions,n=new ii.TransactionBlock;return n.moveCall({target:`${e.published_at}::${Lr}::redeem`,typeArguments:[],arguments:[n.pure(R(e).lock_manager_id),n.pure(R(e).xcetus_manager_id),n.pure(t.venft_id),n.pure(t.lock_id),n.pure(W)]}),n}redeemDividendPayload(t,e){let{xcetus:n,xcetus_dividends:i}=this.sdk.sdkOptions,r=new ii.TransactionBlock;return e.forEach(o=>{r.moveCall({target:`${n.published_at}::${Gu}::redeem`,typeArguments:[o],arguments:[r.object(R(i).dividend_manager_id),r.object(t)]})}),r}redeemDividendV2Payload(t,e,n){let{xcetus_dividends:i}=this.sdk.sdkOptions,r=new ii.TransactionBlock;return e.filter(s=>n.includes(s)).length>0&&(r=this.redeemDividendXTokenPayload(t,r)),e.forEach(s=>{n.includes(s)||r.moveCall({target:`${i.published_at}::${Gu}::redeem_v2`,typeArguments:[s],arguments:[r.object(R(i).dividend_manager_id),r.object(t),r.object(W)]})}),r}redeemDividendXTokenPayload(t,e){let{xcetus_dividends:n,xcetus:i}=this.sdk.sdkOptions,{xcetus_manager_id:r,lock_manager_id:o}=R(i),{dividend_manager_id:s}=R(n);return e=e===void 0?new ii.TransactionBlock:e,e.moveCall({target:`${n.published_at}::${Gu}::redeem_xtoken`,typeArguments:[],arguments:[e.object(o),e.object(r),e.object(s),e.object(t),e.object(W)]}),e}buileCetusCoinType(){return`${this.sdk.sdkOptions.cetus_faucet.package_id}::cetus::CETUS`}buileXTokenCoinType(t=this._sdk.sdkOptions.xcetus.package_id,e="xcetus",n="XCETUS"){return`${t}::${e}::${n}`}cancelRedeemPayload(t){let{xcetus:e}=this.sdk.sdkOptions,n=new ii.TransactionBlock;return n.moveCall({target:`${e.published_at}::${Lr}::cancel_redeem_lock`,typeArguments:[],arguments:[n.pure(R(e).lock_manager_id),n.pure(R(e).xcetus_manager_id),n.pure(t.venft_id),n.pure(t.lock_id),n.pure(W)]}),n}async getInitConfigs(){let{package_id:t}=this.sdk.sdkOptions.xcetus,e=`${t}_getInitFactoryEvent`,n=this.getCache(e);if(n!==void 0)return n;let i=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::xcetus::InitEvent`}))?.data,r={xcetus_manager_id:"",lock_manager_id:"",lock_handle_id:""};i.length>0&&i.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,J),r}async getLockUpManager(t=R(this.sdk.sdkOptions.xcetus).lock_manager_id,e=!1){let n=`${t}_getLockUpManager`,i=this.getCache(n,e);if(i!==void 0)return i;let r=await this.sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),o=ir.buildLockUpManager(te(r));return this.updateCache(n,o,J),o}async getDividendConfigs(){let{package_id:t}=this.sdk.sdkOptions.xcetus_dividends,e=`${t}_getDividendManagerEvent`,n=this.getCache(e);if(n!==void 0)return n;let i=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::dividend::InitEvent`}))?.data,r={dividend_manager_id:"",dividend_admin_id:"",dividend_settle_id:""};return i.length>0&&i.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,J))}),r}async getDividendManager(t=!1){let{dividend_manager_id:e}=R(this._sdk.sdkOptions.xcetus_dividends),n=`${e}_getDividendManager`,i=this.getCache(n,t);if(i!==void 0)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0}}),o=te(r),s=ir.buildDividendManager(o);return this.updateCache(n,s,J),s}async getXcetusManager(t=!0){let{xcetus_manager_id:e}=R(this._sdk.sdkOptions.xcetus),n=`${e}_getXcetusManager`,i=this.getCache(n,t);if(i)return i;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(n,s),s}async getVeNFTDividendInfo(t,e){try{let n=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),i=te(n);return ir.buildVeNFTDividendInfo(i)}catch{return}}async redeemNum(t,e){if(BigInt(t)===BigInt(0))return{amountOut:"0",percent:"0"};let n=await this.getLockUpManager(R(this._sdk.sdkOptions.xcetus).lock_manager_id),i=D(yn).mul(D(n.max_lock_day).sub(D(e))).mul(D(n.max_percent_numerator).sub(D(n.min_percent_numerator))).div(D(n.max_lock_day).sub(D(n.min_lock_day))),r=D(yn).mul(D(n.max_percent_numerator)).sub(i).div(D(xa)).div(yn);return{amountOut:D(r).mul(D(t)).round().toString(),percent:r.toString()}}async reverseRedeemNum(t,e){if(BigInt(t)===BigInt(0))return{amountOut:"0",percent:"0"};let n=await this.getLockUpManager(R(this._sdk.sdkOptions.xcetus).lock_manager_id),i=D(yn).mul(D(n.max_lock_day).sub(D(e))).mul(D(n.max_percent_numerator).sub(D(n.min_percent_numerator))).div(D(n.max_lock_day).sub(D(n.min_lock_day))),r=D(yn).mul(D(n.max_percent_numerator)).sub(i).div(D(xa)).div(yn);return{amountOut:D(t).div(r).toFixed(0,$.ROUND_UP),percent:r.toString()}}async getXCetusAmount(t){let{lock_handle_id:e}=R(this._sdk.sdkOptions.xcetus),n=`${t}_getXCetusAmount`,i=this.getCache(n);if(i!==void 0)return i;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(n,s,J),s}}catch{}return"0"}async getVeNftAmount(t,e){try{let n=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),i=te(n);if(i){let{lock_amount:r,xcetus_amount:o}=i.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 i=(await this.getDividendManager()).dividends.id,r=`${i}_${t}_getPhaseDividendInfo`,o=this._sdk.getCache(r,e);if(o)return o;try{let s=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:i,name:{type:"u64",value:t}}),a=te(s),u=a.value.fields.value.fields,l=u.redeemed_num.fields.contents.map(T=>({name:T.fields.key.fields.name,value:T.fields.value})),m=u.bonus_types.map(T=>T.fields.name),b=u.bonus.fields.contents.map(T=>({name:T.fields.key.fields.name,value:T.fields.value})),v={id:Ht(s),phase:a.name,settled_num:u.settled_num,register_time:u.register_time,redeemed_num:l,is_settled:u.is_settled,bonus_types:m,bonus:b,phase_end_time:""};return this.updateCache(r,v),v}catch{}}updateCache(t,e,n=We){let i=this._cache[t];i?(i.overdueTime=ye(n),i.value=e):i=new qe(e,ye(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t];if(!e&&n?.isValid())return n.value;delete this._cache[t]}},Rv="factory",_n="oversubscribe_pool",bp=1e6,$r=1e18;var Ur="router",Wu="router",ka="router";var gp={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 qv(t){return"master_address"in t}var Lv="router",Uv="vaults",$v=1e4;var Xt=class{static buildIdoPoolImmutables(t){return{pool_address:(0,Xu.normalizeSuiObjectId)(t.pool_id),coin_type_sale:z(t.sale_coin_type.name).full_address,coin_type_raise:z(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=Lt(t),n=z(e),i=te(t);console.log("fields:",i);let r={pool_address:(0,Xu.normalizeSuiObjectId)(i.id.id),coin_type_sale:n.type_arguments[0],coin_type_raise:n.type_arguments[1],tick_spacing:Number(i.tick_spacing),total_supply:i.total_supply,min_purchase:i.min_purchase_amount,max_purchase:i.max_purchase_amount},o={start_time:Number(i.duration_manager.fields.start_time),lock_up_duration:Number(i.duration_manager.fields.lock_up_duration),purchase_duration:Number(i.duration_manager.fields.purchase_duration),end_time:0};o.end_time=o.start_time+o.purchase_duration;let s={complete_raise_limit:i.complete_raise_limit,liquidity_injection_ratio:D(i.liquidity_injection_ratio).div(bp).toNumber(),current_sqrt_price_min:i.current_sqrt_price_min,current_sqrt_price_max:i.current_sqrt_price_max,owner:i.owner,sale_coin_amount:i.sale_coin,raise_coin_amount:i.raise_coin,price:i.price,current_price:i.price,duration_summary:o,is_cancelled:i.is_cancelled,is_liquidity_injected:i.is_liquidity_injected,liquidity_used_raise_amount:i.liquidity_used_raise_amount,liquidity_used_sale_amount:i.liquidity_used_sale_amount,purchase_summary:{size:Number(i.purchase_manager.fields.purchases.fields.size),purchase_handle:i.purchase_manager.fields.purchases.fields.id.id},total_purchase_amount:i.total_purchase_amount,white_summary:{white_list_id:i.white_list.fields.id.id,protection_limit_used:i.white_list.fields.protection_limit_used,protection_hard_cap:i.white_list.fields.protection_hard_cap,white_handle:i.white_list.fields.addresses.fields.id.id,size:Number(i.white_list.fields.addresses.fields.size)},pool_status:"Upcoming",max_raise_amount:"",sale_decimals:0,raise_decimals:0,is_withdrawn:i.is_withdrawn};return Xt.updatePoolStatus(s),{...r,...s}}static is_init_period(t){return Number(D(Date.now()/1e3).toFixed(0))<t.start_time}static is_purchase_period(t){let e=Number(D(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(D(Date.now()/1e3).toFixed(0)),n=t.start_time+t.purchase_duration;return e>n}static is_can_inject_liquidity(t){return!t.is_cancelled&&t.liquidity_injection_ratio!==0&&Xt.is_claim_period(t.duration_summary)&&!t.is_liquidity_injected}static is_can_withdraw(t){return t.is_withdrawn?!1:Xt.is_sale_failed(t)?!0:(t.liquidity_injection_ratio===0||t.is_liquidity_injected)&&Xt.is_claim_period(t.duration_summary)}static is_sale_failed(t){return!!(t.is_cancelled||Xt.is_claim_period(t.duration_summary)&&D(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 n,i;if(Xt.is_sale_failed(t))n="0",i="0";else if(e.is_redeemed)n=e.obtained_sale_amount,i=e.used_raise_amount;else if(D(t.total_purchase_amount).lessThanOrEqualTo(t.max_raise_amount))n=D(e.purchased_raise_amount).mul($r).div(t.price).toString(),i=e.purchased_raise_amount;else{let o=Xt.redeemForSaleOversubcribeV2(t,e);n=o.user_obtained_sale_amount,i=o.user_used_raise_amount_ceil}n=$.floor(n);let r=$.floor(D(e.purchased_raise_amount).sub(i).toString());return{obtained_sale_amount:n,refunded_raise_amount:r}}static calculateWithdrawAmount(t){let e,n,i=D(t.total_supply).mul(t.liquidity_injection_ratio);if(Xt.is_sale_failed(t))e="0",n=D(i).add(t.total_supply);else{let{max_raise_amount:r}=t;D(t.total_purchase_amount).greaterThanOrEqualTo(r)?(e=D(r).sub(t.liquidity_used_raise_amount).toString(),n="0"):(e=D(t.total_purchase_amount).sub(t.liquidity_used_raise_amount),n=D(t.total_supply).add(i).sub(t.liquidity_used_sale_amount).sub(Xt.get_sold_amount(t)))}return{obtained_raise_amount:$.floor(e).toString(),refunded_sale_amount:$.ceil(n).toString()}}static get_sold_amount(t){return D(t.total_purchase_amount).greaterThanOrEqualTo(t.max_raise_amount)?t.total_supply:D(t.total_purchase_amount).mul($r).div(t.price)}static redeemForSaleOversubcribe(t,e){let n=e.protection_raise_amount,i=D(e.purchased_raise_amount).sub(n),r=t.max_raise_amount,{protection_limit_used:o}=t.white_summary,s=D(r).sub(o),a=D(t.total_purchase_amount).sub(o),u=$.ceil(i.mul(s).div(a).add(n)),l=$.floor(i.mul(s).div(a).add(n));return{user_obtained_sale_amount:$.floor(D(t.total_supply).mul(l).div(r)),user_used_raise_amount_ceil:u}}static redeemForSaleOversubcribeV2(t,e){let n=e.protection_raise_amount,i=D(e.purchased_raise_amount).sub(n),r=t.max_raise_amount,{protection_limit_used:o}=t.white_summary,s=D(r).sub(o),a=D(t.total_purchase_amount).sub(o),u=D(n).mul(a).add(D(i).mul(s)).mul($r).div(D(a).mul(t.price)),l=$.ceil(u.mul(t.price).div($r));return{user_obtained_sale_amount:u,user_used_raise_amount_ceil:l}}static raiseTotalAmount(t){let e=D(t.sale_decimals-t.raise_decimals).abs().toNumber();return t.sale_decimals>t.raise_decimals?D(t.total_supply).mul(t.current_price).div(D(10).pow(D(e))).toString():D(t.total_supply).mul(t.current_price).mul(D(10).pow(D(e))).toString()}static updatePoolStatus(t){let e=Number(D(Date.now()/1e3).toFixed(0)),n=t.duration_summary,i=n.start_time+n.purchase_duration;t.is_cancelled?t.pool_status="Canceled":e<n.start_time?t.pool_status="Upcoming":e>n.start_time&&e<i?t.pool_status="Live":D(t.total_purchase_amount).lessThan(t.complete_raise_limit)?t.pool_status="Failed":t.pool_status="Ended"}static async calculatePoolUiPrice(t,e){let n=await t.ClmmSDK.CetusConfig.getTokenListByCoinTypes([e.coin_type_sale,e.coin_type_raise]),i=n[e.coin_type_sale].decimals,r=n[e.coin_type_raise].decimals;e.current_price=zn.priceFixToReal(Number(D(e.price).div(D($r)).toString()),i,r).toString(),e.sale_decimals=i,e.raise_decimals=r,e.max_raise_amount=this.raiseTotalAmount(e)}};var rr=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(n=>{let i=[];n.fields.value.fields.contents.forEach(r=>{i.push({coin_type:z(r.fields.key.fields.name).source_address,amount:r.fields.value})}),e.rewards.push({period:Number(n.fields.key),rewards:i})}),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(n=>{e.bonus_types.push(z(n.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:qt(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,n={id:e.id.id,type:z(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 n.lock_day=(n.locked_until_time-n.locked_start_time)/Mo,n}static getAvailableXToken(t,e){let n=D(0);return e.forEach(i=>{n=n.add(i.xtoken_amount)}),D(t.xtoken_balance).sub(n).toString()}static getWaitUnLockTokens(t){return t.filter(e=>!rr.isLocked(e))}static getLockingTokens(t){return t.filter(e=>rr.isLocked(e))}static buildDividendRewardTypeList(t){let e=new Set;return t.forEach(n=>{n.rewards.forEach(i=>{e.add(i.coin_type)})}),Array.from(e)}static isLocked(t){return t.locked_until_time>Date.parse(new Date().toString())/1e3}static getNextStartTime(t,e=Mo){let n=Date.now()/1e3,{start_time:i,interval_day:r}=t,o=Math.ceil((n-i)/(r*e));return i+o*r*e}},oi=class{static getDefaultStrategyConfig(t){let e;switch(t){case 4:e=gp.bidAsk;break;default:e=gp.curve;break}return e}static geTickIndexRange(t,e,n,i){let r,o;switch(t=ne.getInitializableTickIndex(t,e),i){case"left":t>0?(o=D(t).sub(e).toNumber(),r=D(t).mul(D(1).add(n)).toDecimalPlaces(0).toNumber()):(o=D(t).sub(e).toNumber(),r=D(t).mul(D(1).sub(n)).toDecimalPlaces(0).toNumber());break;case"right":t>0?(o=D(t).mul(D(1).add(n)).toDecimalPlaces(0).toNumber(),r=D(t).add(e).toNumber()):(o=D(t).mul(D(1).sub(n)).toDecimalPlaces(0).toNumber(),r=D(t).add(e).toNumber());break;default:t>0?(r=D(t).mul(D(1).sub(n)).toDecimalPlaces(0).toNumber(),o=D(t).mul(D(1).add(n)).toDecimalPlaces(0).toNumber()):(r=D(t).mul(D(1).add(n)).toDecimalPlaces(0).toNumber(),o=D(t).mul(D(1).sub(n)).toDecimalPlaces(0).toNumber());break}if(r=ne.getInitializableTickIndex(r,e),o=ne.getInitializableTickIndex(o,e),r<Qh)throw Error("Tick lower value is below the minimum allowed value.");if(o>Yh)throw Error("Tick upper value is above the maximum allowed value.");return{tick_lower:r,tick_upper:o}}static getCreateLiquidityBins(t,e){let n=[];switch(e){case 4:n=oi.getCreateBidAskLiquidityBins(t);break;default:n=oi.getCreateCurveLiquidityBins(t);break}return n}static getCreateBidAskLiquidityBins(t){let e=D(Math.floor(D(t.tick_upper).sub(t.tick_lower).div(t.div_width).toNumber())).abs(),n=[],i=t.ratios,r,o;for(let s=0;s<i.length;s++){let a,u;t.tick_upper<=t.curr_tick?(u=D(t.tick_upper).sub(e.mul(s)).toNumber(),a=D(u).sub(e).toNumber()):t.tick_lower>=t.curr_tick?(a=D(t.tick_lower).add(e.mul(s)).toNumber(),u=D(t.tick_lower).add(e.mul(s+1)).toNumber()):s===4?(a=D(t.tick_lower).add(e.mul(s)).toNumber(),u=D(a).add(e.mul(2)).toNumber()):s>4?(a=D(t.tick_lower).add(e.mul(s+1)).toNumber(),u=D(a).add(e).toNumber()):(a=D(t.tick_lower).add(e.mul(s)).toNumber(),u=D(a).add(e).toNumber()),r=ne.getInitializableTickIndex(a,t.tick_spacing),o=ne.getInitializableTickIndex(u,t.tick_spacing),n.push({tick_lower:r,tick_upper:o,ratio:i[s],liquidity:"0"})}return n}static getCreateCurveLiquidityBins(t){let e=D(Math.floor(D(t.tick_upper).sub(t.tick_lower).div(t.div_width).toNumber())).abs(),n=[],i=t.ratios;for(let r=0;r<i.length;r++){let o,s;t.tick_upper<=t.curr_tick?(s=t.tick_upper,o=D(t.tick_upper).sub(e.mul(r+1)).toNumber()):t.tick_lower>=t.curr_tick?(o=t.tick_lower,s=D(o).add(e.mul(r+1)).toNumber()):(o=D(t.curr_tick).sub(e.mul(r+1)).toNumber(),s=D(t.curr_tick).add(e.mul(r+1)).toNumber()),n.push({tick_lower:ne.getInitializableTickIndex(o,t.tick_spacing),tick_upper:ne.getInitializableTickIndex(s,t.tick_spacing),ratio:i[r],liquidity:"0"})}return n}static calculateAddLiquidityInputs(t){let e=new Ke.default(ne.tickIndexToSqrtPriceX64(t.curr_tick)),n=oi.calculateCoinRatios(t.curr_tick,t.liquidity_bins),i=t.liquidity_bins.map((r,o)=>{let s=n[o],a=D(t.coin_amount).mul(t.fix_amount_a?s.coinRatioA:s.coinRatioB).toFixed(0).toString();try{return{...Ge.estLiquidityAndcoinAmountFromOneAmounts(r.tick_lower,r.tick_upper,new Ke.default(a),t.fix_amount_a,!0,t.slippage,e),...r}}catch{return{coinAmountA:new Ke.default(0),coinAmountB:new Ke.default(0),tokenMaxA:new Ke.default(0),tokenMaxB:new Ke.default(0),liquidityAmount:new Ke.default(0),fix_amount_a:!t.fix_amount_a,...r}}});return oi.fixLiquidityInputs(e,t.slippage,i,!0)}static fixLiquidityInputs(t,e,n,i){let r=n.filter(s=>s.liquidityAmount.gt(re));if(r.length===0)return[];let o=r[0];return n.map(s=>{if(s.liquidityAmount.eq(re)){let a=D(o.liquidityAmount.toString()).mul(s.ratio).div(o.ratio).toFixed(0),u=ne.tickIndexToSqrtPriceX64(s.tick_lower),l=ne.tickIndexToSqrtPriceX64(s.tick_upper),m=Ge.getCoinAmountFromLiquidity(new Ke.default(a.toString()),t,u,l,!1);return{coinAmountA:m.coinA,coinAmountB:m.coinB,liquidityAmount:new Ke.default(a.toString()),fix_amount_a:s.fix_amount_a,...va(m,Fr.fromDecimal(D(e).mul(100)),i)}}return s})}static calculateCoinRatios(t,e){let n=new Ke.default(ne.tickIndexToSqrtPriceX64(t)),i=[],r=D(0),o=D(0),s=e.map(l=>{let m=D(ap(100,6).toString()).mul(l.ratio).toFixed(0).toString(),b=ne.tickIndexToSqrtPriceX64(l.tick_lower),v=ne.tickIndexToSqrtPriceX64(l.tick_upper),T=Ge.getCoinAmountFromLiquidity(new Ke.default(m),n,b,v,!0);return r=r.add(T.coinA.toString()),o=o.add(T.coinB.toString()),{...T,liquidity:m}}),a=[],u=[];return s.forEach((l,m)=>{let b={coinRatioA:r.eq(D(0))?0:D(l.coinA.toString()).div(r).toNumber(),coinRatioB:o.eq(D(0))?0:D(l.coinB.toString()).div(o).toNumber(),liquiditys:l.liquidity,tick_lower:e[m].tick_lower,tick_upper:e[m].tick_upper};i.push(b),a.push(r.eq(D(0))?0:D(l.coinA.toString()).div(r).toNumber()),u.push(o.eq(D(0))?0:D(l.coinB.toString()).div(o).toNumber())}),i}static calculateCloseMasterLiquidityInputs(t){let e=new Ke.default(ne.tickIndexToSqrtPriceX64(t.curr_tick));return t.positions.map(i=>{let r=new Ke.default(i.liquidity),o=ne.tickIndexToSqrtPriceX64(i.tick_lower_index),s=ne.tickIndexToSqrtPriceX64(i.tick_upper_index),a=Ge.getCoinAmountFromLiquidity(r,e,o,s,!1),u=Fr.fromDecimal(D(t.slippage).mul(100)),{tokenMaxA:l,tokenMaxB:m}=va(a,u,!1);return{coinAmountA:a.coinA,coinAmountB:a.coinB,tokenMaxA:l,tokenMaxB:m,liquidityAmount:r,fix_amount_a:!1}})}static calculateRemoveMasterLiquidityInputs(t){let e=new Ke.default(ne.tickIndexToSqrtPriceX64(t.curr_tick)),{fix_token:n}=t;if(n){let r=t.positions.map((a,u)=>({tick_lower:a.tick_lower_index,tick_upper:a.tick_upper_index,ratio:t.ratios[u]})),o=oi.calculateCoinRatios(t.curr_tick,r),s=t.positions.map((a,u)=>{let l=o[u],m=D(n.coin_amount).mul(n.fix_amount_a?l.coinRatioA:l.coinRatioB).toFixed(0).toString();try{let b=Ge.estLiquidityAndcoinAmountFromOneAmounts(a.tick_lower_index,a.tick_upper_index,new Ke.default(m),n.fix_amount_a,!1,t.slippage,e);return{...b,tick_lower:a.tick_lower_index,tick_upper:a.tick_upper_index,liquidity:b.liquidityAmount.toString(),ratio:t.ratios[u]}}catch{return{coinAmountA:new Ke.default(0),coinAmountB:new Ke.default(0),tokenMaxA:new Ke.default(0),tokenMaxB:new Ke.default(0),liquidityAmount:new Ke.default(0),fix_amount_a:!n.fix_amount_a,tick_lower:a.tick_lower_index,tick_upper:a.tick_upper_index,liquidity:"0",ratio:t.ratios[u]}}});return oi.fixLiquidityInputs(e,t.slippage,s,!1)}return t.positions.map((r,o)=>{let s=t.ratios[o],a=D(t.liquidity).mul(s).toFixed(0);D(a).greaterThan(r.liquidity)&&(a=r.liquidity);let u=ne.tickIndexToSqrtPriceX64(r.tick_lower_index),l=ne.tickIndexToSqrtPriceX64(r.tick_upper_index),m=Ge.getCoinAmountFromLiquidity(new Ke.default(a),e,u,l,!1),b=Fr.fromDecimal(D(t.slippage).mul(100)),{tokenMaxA:v,tokenMaxB:T}=va(m,b,!1);return{coinAmountA:m.coinA,coinAmountB:m.coinB,tokenMaxA:v,tokenMaxB:T,liquidityAmount:new Ke.default(a),fix_amount_a:!1}})}static buildMasterPosition(t){return{coin_type_a:z(t.coin_type_a.fields.name).full_address,coin_type_b:z(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 n={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:[],...er(t)};return n.positions=e.positions.map(i=>oi.buildMasterPosition(i.fields)),n}}},Kn=class{static generateNextTickRange(t,e,n){let i=t-e/2,r=t+e/2;return{new_tick_lower:Kn.getValidTickIndex(i,n),new_tick_upper:Kn.getValidTickIndex(r,n)}}static calculateDepositRatio(t,e,n){let i=ne.sqrtPriceX64ToTickIndex(n);if(i<t)return{ratioA:new $(1),ratioB:new $(0)};if(i>e)return{ratioA:new $(0),ratioB:new $(1)};let r=new vp.default(1e8),{coinAmountB:o}=Ge.estLiquidityAndcoinAmountFromOneAmounts(t,e,r,!0,!0,0,n),s=ne.sqrtPriceX64ToPrice(n,0,0),a=D(r.toString()).mul(s),u=a.add(o.toString()),l=a.div(u),m=D(o.toString()).div(u);return{ratioA:l,ratioB:m}}static getValidTickIndex(t,e){if(t%e===0)return t;let n;if(t>0?n=t-t%e+e:t<0?n=t+Math.abs(t)%e-e:n=t,n%e!==0)throw new Error("Assertion failed: res % tickSpacing == 0");if(Math.abs(n)<Math.abs(t))throw new Error("Assertion failed: res.abs() >= tickIndex");return n}static get_lp_amount_by_liquidity(t,e){return t.total_supply==="0"?"0":D(t.total_supply).mul(e).div(t.liquidity).toFixed(0,$.ROUND_DOWN).toString()}static get_share_liquidity_by_amount(t,e){return t.total_supply==="0"?"0":D(e).mul(t.liquidity).div(t.total_supply).toFixed(0,$.ROUND_DOWN).toString()}static get_protocol_fee_amount(t,e){return D(e).mul(t.protocol_fee_rate).div($v).toFixed(0,$.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:z(e.coin_type_a.fields.name).full_address,coinTypeB:z(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),n=Dn(t),{positions:i}=e;if(e&&i.length>0){let r=Kn.buildFramsPositionNFT(i[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:z(n).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}}}},Ca=class{static calculatePositionShare(t,e,n,i,r,o,s){if(e<=r||t>=o)return"0";let a=0;t<r?a=r:a=t;let u=0;e<o?u=e:u=o;let l=ne.tickIndexToSqrtPriceX64(a),m=ne.tickIndexToSqrtPriceX64(u),{coinA:b,coinB:v}=Ge.getCoinAmountFromLiquidity(new Zu.default(n),new Zu.default(s),l,m,!0);return D(b.toString()).mul(i).div(1e12).add(v.toString()).toString()}static buildFramsPool(t){let e=te(t);if(e)try{let n=[];return e.rewarders.forEach(r=>{n.push({reward_coin:z(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:n,positions:{positions_handle:e.positions.fields.id.id,size:e.positions.fields.size},sqrt_price:e.sqrt_price}}catch(n){console.log(n)}}static buildFramsPositionNFT(t){let e=te(t);if(e){let n=e.clmm_postion.fields;return{id:e.id.id,url:n.url,pool_id:e.pool_id,coinTypeA:z(n.coin_type_a.fields.name).full_address,coinTypeB:z(n.coin_type_b.fields.name).full_address,description:n.description,name:n.name,liquidity:n.liquidity,clmm_position_id:n.id.id,clmm_pool_id:n.pool,tick_lower_index:$e(BigInt(n.tick_lower_index.fields.bits)),tick_upper_index:$e(BigInt(n.tick_upper_index.fields.bits)),rewards:[]}}}},zv=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getPoolImmutables(t="all",e=!1){let{package_id:n}=this._sdk.sdkOptions.ido,i=`${n}_getPoolImmutables`,r=this.getCache(i,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:`${n}::oversubscribe_pool::CreatePoolEvent`},t);a.data.forEach(u=>{let l=u.parsedJson;if(l){let m=Xt.buildIdoPoolImmutables(l);s.push(m)}}),o.hasNextPage=a.hasNextPage,o.nextCursor=a.nextCursor,this.updateCache(i,s,J)}catch(a){console.log("getPoolImmutables",a)}return o.data=s,o}async getPools(t=[],e=!1){let n=[],i=[];t.length>0?i=[...t]:(await this.getPoolImmutables("all",e)).data.forEach(s=>{i.push(s.pool_address)});let r=await this._sdk.ClmmSDK.fullClient.batchGetObjects(i,{showType:!0,showContent:!0});for(let o of r){let s=Xt.buildIdoPool(o);await Xt.calculatePoolUiPrice(this._sdk,s),n.push(s);let a=`${s.pool_address}_getPoolObject`;this.updateCache(a,s,J)}return n}async getPool(t,e=!0){let n=`${t}_getPoolObject`,i=this.getCache(n,e);if(i!==void 0)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),o=Xt.buildIdoPool(r);return await Xt.calculatePoolUiPrice(this._sdk,o),this.updateCache(n,o),o}async getIdoConfigs(t=!1){let{package_id:e}=this._sdk.sdkOptions.ido,n=`${e}_getInitEvent`,i=this.getCache(n,t);if(i!==void 0)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showPreviousTransaction:!0}}),o=Qi(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(u=>{console.log("item: ",u);let l=u.parsedJson;if(l)switch(z(u.type).full_address){case`${e}::config::InitConfigEvent`:a.admin_cap_id=l.admin_cap_id,a.package_version_id=l.package_version_id;break;case`${e}::factory::InitFactoryEvent`:a.pools_id=l.pools_id;break;default:break}}),this.updateCache(n,a,J)),a}async getPurchaseInfo(t,e,n=!0){let i=`${t}_${e}_getPurchaseInfo`,r=this.getCache(i,n);if(r)return r;try{let o=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"address",value:e}}),s=Xt.buildPurchaseInfo(te(o));return this.updateCache(i,s,We),s}catch{return}}async getLockNFT(t,e=!1){let n=`${t}_getLockNFT`,i=this.getCache(n,e);if(i!==void 0)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}});if(!r.error)return ni(r)}async getLockNFTList(t){let{clmm_pool:e}=this._sdk.ClmmSDK.sdkOptions,{ido:n}=this._sdk.sdkOptions,i=[];try{let r=(await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{filter:{StructType:`${n.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,u={locked_at:Number(s.locked_at),lock_duration:Number(s.lock_duration),lock_nft_id:s.id.id,type:s.nft.type,...a};u.end_lock_time=u.locked_at+u.lock_duration,u.coin_type_a=z(a.coin_type_a.fields.name).full_address,u.coin_type_b=z(a.coin_type_b.fields.name).full_address,u.id=a.id.id,u.tick_lower_index=$e(BigInt(a.tick_lower_index.fields.bits)),u.tick_upper_index=$e(BigInt(a.tick_upper_index.fields.bits)),i.push(u)}}return i}catch(r){return console.log("getLockNFTList:",r),[]}}async creatPool(t){let{ido:e}=this.sdk.sdkOptions;pa((0,Vn.normalizeSuiAddress)(t.coin_type_sale),(0,Vn.normalizeSuiAddress)(t.coin_type_raise))&&(t.price_min=D(1).div(t.price_max).toNumber(),t.price_max=D(1).div(t.price_min).toNumber());let i=zn.priceRealToFix(Number(t.price),t.sale_decimals,t.raise_decimals),r=ne.priceToSqrtPriceX64(D(t.price_min),t.sale_decimals,t.raise_decimals).toString(),o=ne.priceToSqrtPriceX64(D(t.price_max),t.sale_decimals,t.raise_decimals).toString(),s=new cn.TransactionBlock,a=D(t.total_supply).add(D(t.total_supply).mul(D(t.liquidity_injection_ratio))).toNumber(),u=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress,t.coin_type_sale),l=oe.buildCoinForAmount(s,u,BigInt(a),t.coin_type_sale,!1),m=[s.pure(R(e).admin_cap_id),s.pure(R(e).package_version_id),s.pure(R(e).pools_id),s.pure((0,Vn.normalizeSuiAddress)(t.owner)),s.pure(D(i).mul($r).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*bp).toString()),s.pure(r),s.pure(o),s.pure(t.tick_spacing.toString()),l.targetCoin,s.pure(t.protection_hard_cap.toString()),s.pure(W)],b=[t.coin_type_sale,t.coin_type_raise];return s.moveCall({target:`${e.published_at}::${Rv}::create_oversubscribe_pool`,typeArguments:b,arguments:m}),s}async creatPurchasePayload(t){let{ido:e}=this.sdk.sdkOptions,n=new cn.TransactionBlock,i=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(n,r,BigInt(t.raise_amount),t.coin_type_raise,!1),s=[t.coin_type_sale,t.coin_type_raise],a,u;return i?(u="purchase",a=[n.object(R(e).package_version_id),n.object(t.pool_address),n.object(i.purchase_certificate_id),n.pure(t.raise_amount.toString()),o.targetCoin,n.pure(W)]):(u="create_certificate_and_purchase",a=[n.object(R(e).package_version_id),n.object(t.pool_address),n.pure(t.raise_amount.toString()),o.targetCoin,n.pure(W)]),n.moveCall({target:`${e.published_at}::${_n}::${u}`,typeArguments:s,arguments:a}),n}async redeemPayload(t){let{ido:e}=this.sdk.sdkOptions,n=await this.getPurchaseInfo(t.purchase_handle,this._sdk.ClmmSDK.senderAddress,!1);if(n===void 0)throw Error("get purchase certificate fail");let i=new cn.TransactionBlock,r=[t.coin_type_sale,t.coin_type_raise],o=[i.pure(R(e).package_version_id),i.pure(t.pool_address),i.pure(n.purchase_certificate_id),i.pure(W)];return i.moveCall({target:`${e.published_at}::${_n}::redeem`,typeArguments:r,arguments:o}),i}injectLiquidityPayload(t){let{ido:e}=this.sdk.sdkOptions,{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions,i=new cn.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=[i.pure(R(e).package_version_id),i.pure(t.pool_address),i.pure(R(n).global_config_id),i.pure(t.clmm_pool_address),i.pure(W)];return i.moveCall({target:`${e.published_at}::${_n}::${o}`,typeArguments:r,arguments:s}),i}unPauseInjectLiquidity(t){let{ido:e}=this.sdk.sdkOptions,{integrate:n,clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions,r=new cn.TransactionBlock;r.moveCall({target:`${n.published_at}::${jr}::unpause_pool`,typeArguments:[t.coin_type_a,t.coin_type_b],arguments:[r.object(R(i).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(R(e).package_version_id),r.object(t.pool_address),r.object(R(i).global_config_id),r.object(t.clmm_pool_address),r.object(W)];return r.moveCall({target:`${e.published_at}::${_n}::${s}`,typeArguments:o,arguments:a}),r}async findClmmPoolForLiquidity(t){let e=null,n=!1,i=await this.sdk.ClmmSDK.Pool.getPoolImmutables();for(let r of i){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),n=!0;break}}return e&&(D(e.current_sqrt_price).lessThanOrEqualTo(t.current_sqrt_price_min)||D(e.current_sqrt_price).greaterThanOrEqualTo(t.current_sqrt_price_max))?(console.log("clmmPool: ",e.poolAddress),{is_reverse:n,clmmPool:null}):{is_reverse:n,clmmPool:e}}withdrawPayload(t){let{ido:e}=this.sdk.sdkOptions,n=new cn.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise],r=[n.object(R(e).package_version_id),n.object(t.pool_address),n.object(W)];return n.moveCall({target:`${e.published_at}::${_n}::withdraw`,typeArguments:i,arguments:r}),n}updateWhitelistCapPayload(t){let{ido:e}=this.sdk.sdkOptions,n=new cn.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise];return t.add_whites&&t.add_whites.addresses.length>0&&n.moveCall({target:`${e.published_at}::${_n}::add_white_listed_addresses`,typeArguments:i,arguments:[n.object(R(e).admin_cap_id),n.object(R(e).package_version_id),n.object(t.pool_address),n.makeMoveVec({type:"address",objects:t.add_whites.addresses.map(r=>n.object((0,Vn.normalizeSuiObjectId)(r)))}),n.pure(t.add_whites.protection_limit),n.object(W)]}),t.remove_whites&&t.remove_whites.length>0&&n.moveCall({target:`${e.published_at}::${_n}::remove_white_listed_addresses`,typeArguments:i,arguments:[n.object(R(e).admin_cap_id),n.object(R(e).package_version_id),n.object(t.pool_address),n.makeMoveVec({type:"address",objects:t.remove_whites.map(r=>n.object((0,Vn.normalizeSuiObjectId)(r)))}),n.object(W)]}),t.update_whites&&t.update_whites.forEach(r=>{n.moveCall({target:`${e.published_at}::${_n}::update_white_listed_address`,typeArguments:i,arguments:[n.object(R(e).admin_cap_id),n.object(R(e).package_version_id),n.object(t.pool_address),n.object(r.address),n.pure(r.protection_limit),n.object(W)]})}),n}creatCancelPoolPayload(t){let{ido:e}=this.sdk.sdkOptions,n=new cn.TransactionBlock,i=[t.coin_type_sale,t.coin_type_raise],r=[n.pure(R(e).admin_cap_id),n.pure(R(e).package_version_id),n.pure(t.pool_address),n.pure(W)];return n.moveCall({target:`${e.published_at}::${_n}::cancel`,typeArguments:i,arguments:r}),n}updatePoolOwnerPayload(t,e){let{ido:n}=this.sdk.sdkOptions;e=e===void 0?new cn.TransactionBlock:e;let i=[t.coin_type_sale,t.coin_type_raise],r=[e.object(R(n).admin_cap_id),e.object(R(n).package_version_id),e.object(t.pool_address),e.object(t.new_owner),e.object(W)];return e.moveCall({target:`${n.published_at}::${_n}::update_pool_owner`,typeArguments:i,arguments:r}),e}updatePoolDuractionPayload(t,e){let{ido:n}=this.sdk.sdkOptions;e=e===void 0?new cn.TransactionBlock:e;let i=[t.coin_type_sale,t.coin_type_raise],r=[e.object(R(n).admin_cap_id),e.object(R(n).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(W)];return e.moveCall({target:`${n.published_at}::${_n}::update_pool_duration`,typeArguments:i,arguments:r}),e}updateProtectionHardCapPayload(t,e){let{ido:n}=this.sdk.sdkOptions;e=e===void 0?new cn.TransactionBlock:e;let i=[t.coin_type_sale,t.coin_type_raise],r=[e.object(R(n).admin_cap_id),e.object(R(n).package_version_id),e.object(t.pool_address),e.pure(t.protection_hard_cap),e.object(W)];return e.moveCall({target:`${n.published_at}::${_n}::update_protection_hard_cap`,typeArguments:i,arguments:r}),e}unlockNftPayload(t){let{ido:e}=this.sdk.sdkOptions,n=new cn.TransactionBlock,i=[t.nft_type],r=[n.pure(t.lock_nft_id),n.pure(W)];return n.moveCall({target:`${e.published_at}::lock::unlock_nft`,typeArguments:i,arguments:r}),n}async isAdminCap(t){let{ido:e}=this._sdk.sdkOptions,n=`${e.package_id}_${t}_isAdminCap`,i=this.getCache(n);if(i)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:R(e).admin_cap_id,options:{showType:!0,showOwner:!0}});console.log(r);let o=Dn(r),s=Rr(r),a=!1;return s&&o&&z(o).source_address===`${e.package_id}::config::AdminCap`&&(a=(0,Vn.normalizeSuiAddress)(s.AddressOwner)===(0,Vn.normalizeSuiAddress)(t)),this.updateCache(n,a,J),a}async getWhiteProtectionLimit(t,e,n=!0){let i=`${t}_${e}_getWhiteProtectionLimit`,r=this._sdk.getCache(i,n);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(i,s.value),s.value}return}catch{return}}async getWhiteList(t,e){let n={type:"address",value:e};try{let i=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:n}),r=te(i);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=`${R(t).admin_cap_id}_getAdminAddress`,n=this.getCache(e);if(n)return n;let i=await this._sdk.ClmmSDK.fullClient.getObject({id:R(t).admin_cap_id,options:{showType:!0,showOwner:!0}});console.log(i);let r=Dn(i),o=Rr(i);if(o&&r&&z(r).source_address===`${t.package_id}::config::AdminCap`){let a=(0,Vn.normalizeSuiAddress)(o.AddressOwner);return this.updateCache(e,a,J),a}return""}updateCache(t,e,n=J){let i=this._cache[t];i?(i.overdueTime=ye(n),i.value=e):i=new qe(e,ye(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t];if(!e&&n?.isValid())return n.value;delete this._cache[t]}},Vv=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}async getOwnerVeNFT(t,e=!0){let{xtoken:n}=this.sdk.sdkOptions,i=`${t}_getLockUpManagerEvent`,r=this.getCache(i,e);if(r!==void 0)return r;let o,s=`${n.package_id}::xtoken::VeNFT`;return(await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0,showDisplay:!0},filter:{StructType:s}})).data.forEach(u=>{let l=z(Lt(u)).source_address;if(l===s&&u.data&&u.data.content){let{fields:m}=u.data.content;o={...er(u),id:m.id.id,index:m.index,type:l,xtoken_balance:m.xtoken_balance},this.updateCache(i,o,J)}}),o}async getOwnerLockTokens(t){let{xtoken:e}=this.sdk.sdkOptions,n=[],i=`${e.package_id}::lock_coin::LockedCoin<${this.buileTokenCoinType()}>`,r=await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{options:{showType:!0,showContent:!0},filter:{StructType:i}});for(let o of r.data)if(z(Lt(o)).source_address===i&&o.data){let a=rr.buildLockToken(o.data.content),u=await this.getLockXToken(a.id);u&&(a.xtoken_amount=u.xtoken_amount),n.push(a)}return n}async getLockToken(t){let e=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0}});if(e.data?.content){let n=rr.buildLockToken(e.data.content),i=await this.getLockXToken(n.id);return i&&(n.xtoken_amount=i.xtoken_amount),n}}async getOwnerTokenCoins(t){return await this._sdk.ClmmSDK.getOwnerCoinAssets(t,this.buileTokenCoinType())}mintVeNFTPayload(){let{xtoken:t}=this.sdk.sdkOptions,e=new ri.TransactionBlock;return e.moveCall({target:`${t.published_at}::${Ur}::mint_venft`,typeArguments:[],arguments:[e.pure(R(t).xtoken_manager_id)]}),e}async convertPayload(t){let{xtoken:e}=this.sdk.sdkOptions,n=new ri.TransactionBlock,i=this.buileTokenCoinType(),r=await oe.syncBuildCoinInputForAmount(this._sdk.ClmmSDK,n,BigInt(t.amount),i);return t.venft_id===void 0?n.moveCall({target:`${e.published_at}::${Ur}::mint_and_convert`,typeArguments:[],arguments:[n.object(R(e).lock_manager_id),n.object(R(e).xtoken_manager_id),r,n.pure(t.amount)]}):n.moveCall({target:`${e.published_at}::${Ur}::convert`,typeArguments:[],arguments:[n.object(R(e).lock_manager_id),n.object(R(e).xtoken_manager_id),r,n.pure(t.amount),n.pure(t.venft_id)]}),n}redeemLockPayload(t){let{xtoken:e}=this.sdk.sdkOptions,n=new ri.TransactionBlock;return n.moveCall({target:`${e.published_at}::${Ur}::redeem_lock`,typeArguments:[],arguments:[n.pure(R(e).lock_manager_id),n.pure(R(e).xtoken_manager_id),n.pure(t.venft_id),n.pure(t.amount),n.pure(t.lock_day),n.pure(W)]}),n}redeemPayload(t){let{xtoken:e}=this.sdk.sdkOptions,n=new ri.TransactionBlock;return n.moveCall({target:`${e.published_at}::${Ur}::redeem`,typeArguments:[],arguments:[n.pure(R(e).lock_manager_id),n.pure(R(e).xtoken_manager_id),n.pure(t.venft_id),n.pure(t.lock_id),n.pure(W)]}),n}redeemDividendPayload(t,e){let{xtoken_dividends:n}=this.sdk.sdkOptions,i=new ri.TransactionBlock;return e.forEach(r=>{i.moveCall({target:`${n.published_at}::${Wu}::redeem`,typeArguments:[r],arguments:[i.object(R(n).dividend_manager_id),i.object(t)]})}),i}redeemDividendV2Payload(t,e,n){let{xtoken_dividends:i}=this.sdk.sdkOptions,r=new ri.TransactionBlock;return e.filter(s=>n.includes(s)).length>0&&(r=this.redeemDividendXTokenPayload(t,r)),e.forEach(s=>{n.includes(s)||r.moveCall({target:`${i.published_at}::${Wu}::redeem_v2`,typeArguments:[s],arguments:[r.object(R(i).dividend_manager_id),r.object(t),r.object(W)]})}),r}redeemDividendXTokenPayload(t,e){let{xtoken_dividends:n,xtoken:i}=this.sdk.sdkOptions,{xtoken_manager_id:r,lock_manager_id:o}=R(i),{dividend_manager_id:s}=R(n);return e=e===void 0?new ri.TransactionBlock:e,e.moveCall({target:`${n.published_at}::${Wu}::redeem_xtoken`,typeArguments:[],arguments:[e.object(o),e.object(r),e.object(s),e.object(t),e.object(W)]}),e}buileTokenCoinType(){return`${this.sdk.sdkOptions.token_faucet.package_id}::token::TOKEN`}buileXTokenCoinType(t=this._sdk.sdkOptions.xtoken.package_id,e="xtoken",n="XTOKEN"){return`${t}::${e}::${n}`}cancelRedeemPayload(t){let{xtoken:e}=this.sdk.sdkOptions,n=new ri.TransactionBlock;return n.moveCall({target:`${e.published_at}::${Ur}::cancel_redeem_lock`,typeArguments:[],arguments:[n.pure(R(e).lock_manager_id),n.pure(R(e).xtoken_manager_id),n.pure(t.venft_id),n.pure(t.lock_id),n.pure(W)]}),n}async getInitConfigs(){let{package_id:t}=this.sdk.sdkOptions.xtoken,e=`${t}_getInitFactoryEvent`,n=this.getCache(e);if(n!==void 0)return n;let i=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::xtoken::InitEvent`}))?.data,r={xtoken_manager_id:"",lock_manager_id:"",lock_handle_id:""};i.length>0&&i.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,J),r}async getLockUpManager(t=R(this.sdk.sdkOptions.xtoken).lock_manager_id,e=!1){let n=`${t}_getLockUpManagerEvent`,i=this.getCache(n,e);if(i!==void 0)return i;let r=await this.sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),o=rr.buildLockUpManager(te(r));return this.updateCache(n,o,J),o}async getLockInfoHandle(t){let e=`${t}_getLockInfoHandle`,n=this.getCache(e);if(n!==void 0)return n;let i="",r=await this.sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0}}),o=te(r);return o&&(i=o.lock_infos.fields.id.id,this.updateCache(e,i,J)),i}async getDividendConfigs(){let{package_id:t}=this.sdk.sdkOptions.xtoken_dividends,e=`${t}_getDividendManagerEvent`,n=this.getCache(e);if(n!==void 0)return n;let i=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::dividend::InitEvent`}))?.data,r={dividend_manager_id:"",dividend_admin_id:"",dividend_settle_id:""};return i.length>0&&i.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,J))}),r}async getDividendManager(t=!1){let{dividend_manager_id:e}=R(this.sdk.sdkOptions.xtoken_dividends),n=`${e}_getDividendManager`,i=this.getCache(n,t);if(i!==void 0)return i;let r=await this._sdk.ClmmSDK.fullClient.getObject({id:e,options:{showContent:!0}}),o=te(r),s=rr.buildDividendManager(o);return this.updateCache(n,s,J),s}async getXcetusManager(t=!0){let{xtoken_manager_id:e}=R(this.sdk.sdkOptions.xtoken),n=`${e}_getXcetusManager`,i=this.getCache(n,t);if(i)return i;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(n,s),s}async getVeNFTDividendInfo(t,e){try{let n=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),i=te(n);return rr.buildVeNFTDividendInfo(i)}catch{return}}async redeemNum(t,e){if(BigInt(t)===BigInt(0))return{amountOut:"0",percent:"0"};let n=await this.getLockUpManager(),i=D(yn).mul(D(n.max_lock_day).sub(D(e))).mul(D(n.max_percent_numerator).sub(D(n.min_percent_numerator))).div(D(n.max_lock_day).sub(D(n.min_lock_day))),r=D(yn).mul(D(n.max_percent_numerator)).sub(i).div(D(xa)).div(yn);return{amountOut:D(r).mul(D(t)).round().toString(),percent:r.toString()}}async reverseRedeemNum(t,e){if(BigInt(t)===BigInt(0))return{amountOut:"0",percent:"0"};let n=await this.getLockUpManager(),i=D(yn).mul(D(n.max_lock_day).sub(D(e))).mul(D(n.max_percent_numerator).sub(D(n.min_percent_numerator))).div(D(n.max_lock_day).sub(D(n.min_lock_day))),r=D(yn).mul(D(n.max_percent_numerator)).sub(i).div(D(xa)).div(yn);return{amountOut:D(t).div(r).toFixed(0,$.ROUND_UP),percent:r.toString()}}async getLockXToken(t){let{lock_handle_id:e}=R(this._sdk.sdkOptions.xtoken),n=`${t}_getXTokenAmount`,i=this.getCache(n);if(i)return i;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(n,s,J),s}}catch{}}async getVeNftAmount(t,e){try{let n=await this.sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:t,name:{type:"0x2::object::ID",value:e}}),i=te(n);if(i){let{lock_amount:r,xtoken_amount:o}=i.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 i=(await this.getDividendManager()).dividends.id,r=`${i}_${t}_getPhaseDividendInfo`,o=this._sdk.getCache(r,e);if(o)return o;try{let s=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:i,name:{type:"u64",value:t}}),a=te(s),u=a.value.fields.value.fields,l=u.redeemed_num.fields.contents.map(T=>({name:T.fields.key.fields.name,value:T.fields.value})),m=u.bonus_types.map(T=>T.fields.name),b=u.bonus.fields.contents.map(T=>({name:T.fields.key.fields.name,value:T.fields.value})),v={id:Ht(s),phase:a.name,settled_num:u.settled_num,register_time:u.register_time,redeemed_num:l,is_settled:u.is_settled,bonus_types:m,bonus:b,phase_end_time:""};return this.updateCache(r,v),v}catch{}}updateCache(t,e,n=We){let i=this._cache[t];i?(i.overdueTime=ye(n),i.value=e):i=new qe(e,ye(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t];if(!e&&n?.isValid())return n.value;delete this._cache[t]}},Gv=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:n}=this._sdk.ClmmSDK.sdkOptions,i=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress),r=D(0),o=D(0),s=[],a=[],u=[],l=[],m=[];t.liquidity_bins.forEach((P,M)=>{let B=t.amounts_a[M],E=t.amounts_b[M],q=t.bins_fix_amount_a[M];r=r.add(B),o=o.add(E),s.push(B),a.push(E),u.push(xt(BigInt(P.tick_lower)).toString()),l.push(xt(BigInt(P.tick_upper)).toString()),m.push(q)});let b=[t.coinTypeA,t.coinTypeB],v=new tr.TransactionBlock,T=oe.buildAddLiquidityFixTokenCoinInput(v,!t.fix_amount_a,r.toString(),t.slippage,t.coinTypeA,i,!1)?.targetCoin,O=oe.buildAddLiquidityFixTokenCoinInput(v,t.fix_amount_a,o.toString(),t.slippage,t.coinTypeB,i,!1)?.targetCoin;return qv(t)?v.moveCall({target:`${e.published_at}::router::increase_liquidity`,typeArguments:b,arguments:[v.object(R(e).master_manger_id),v.object(t.master_address),v.object(R(n).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(m.map(P=>v.pure(P,"bool"))),v.object(W)]}):v.moveCall({target:`${e.published_at}::router::create_master_liquidity`,typeArguments:b,arguments:[v.object(R(e).master_manger_id),v.object(R(n).global_config_id),v.object(t.pool_address),T,O,v.pure(u.map(P=>v.pure(P,"u32"))),v.pure(l.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(m.map(P=>v.pure(P,"bool"))),v.pure(t.strategy),v.pure(xt(BigInt(t.tick_lower)).toString()),v.pure(xt(BigInt(t.tick_upper)).toString()),v.object(W)]}),v}buildMasterNFTType(){return`${this._sdk.sdkOptions.liquidity_stratefy.package_id}::master_liquidity::MasterLiquidity`}async getMasterNFTList(t,e=[]){let n=[],i=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 i.data)if(z(o.data.type).full_address===this.buildMasterNFTType()){let a=oi.buildMasterNFT(o);if(a){let u=`${a.id}_masterNFT`;this.updateCache(u,a,J),r?e.includes(a.pool_id)&&n.push(a):n.push(a)}}return n}async getMasterNFT(t,e=!1){let n="$masterId}_masterNFT",i=this.getCache(n,e);if(i)return i;try{let r=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}});if(z(r.data.type).full_address===this.buildMasterNFTType()){let s=oi.buildMasterNFT(r);return s&&this.updateCache(n,s,J),s}}catch(r){console.log(r)}}async fetchMasterPositionInfos(t){let e={},{clmm_pool:n,integrate:i,simulationAccount:r}=this.sdk.ClmmSDK.sdkOptions,o=new tr.TransactionBlock;return t.forEach(a=>{a.position_ids.forEach(u=>{let l=[a.coinTypeA,a.coinTypeB],m=[o.object(R(n).global_config_id),o.object(a.pool_id),o.object(u)];o.moveCall({target:`${i.published_at}::${Yt}::fetch_position_fees`,arguments:m,typeArguments:l}),o.moveCall({target:`${i.published_at}::${Yt}::fetch_position_rewards`,arguments:[...m,o.object(W)],typeArguments:l})})}),(await this.sdk.ClmmSDK.fullClient.devInspectTransactionBlock({transactionBlock:o,sender:r.address})).events?.forEach(a=>{let{parsedJson:u}=a,{position_id:l}=u,m=e[l];switch(m===void 0&&(m={position_id:l,feeOwedA:"0",feeOwedB:"0",rewarders:[]},e[l]=m),z(a.type).name){case"FetchPositionFeesEvent":m.feeOwedA=u.fee_owned_a,m.feeOwedB=u.fee_owned_b;break;case"FetchPositionRewardsEvent":m.rewarders=u.data;break}}),e}async getLiquidityStrategyConfigs(t=!1){let{package_id:e}=this._sdk.sdkOptions.liquidity_stratefy,n=`${e}_getLiquidityStrategyConfigst`,i=this.getCache(n,t);if(i!==void 0)return i;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 u=await this._sdk.ClmmSDK.fullClient.getObject({id:a.id,options:{showContent:!0}}),l=te(u);o.master_liquidity_handle=l.position_maps.fields.id.id;break}this.updateCache(n,o,J)}return o}removeMasterLiquidity(t){let{clmm_pool:e}=this.sdk.ClmmSDK.sdkOptions,{liquidity_stratefy:n}=this.sdk.sdkOptions,i=new tr.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},i);let o=[i.object(R(n).master_manger_id),i.object(t.pool_address),i.object(t.master_address),i.object(R(e).global_config_id),i.pure(t.delta_liquidities.map(s=>i.pure(s,"u128"))),i.pure(t.min_amounts_a.map(s=>i.pure(s,"u64"))),i.pure(t.min_amounts_b.map(s=>i.pure(s,"u64"))),i.object(W)];return i.moveCall({target:`${n.published_at}::${ka}::remove_liquidity`,typeArguments:r,arguments:o}),i}closeMasterLiquidity(t){let{clmm_pool:e}=this.sdk.ClmmSDK.sdkOptions,{liquidity_stratefy:n}=this.sdk.sdkOptions,i=new tr.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},i),i.moveCall({target:`${n.published_at}::${ka}::close_master_liquidity`,typeArguments:r,arguments:[i.object(R(n).master_manger_id),i.object(t.master_address),i.object(R(e).global_config_id),i.object(t.pool_address),i.pure(t.min_amounts_a.map(o=>i.pure(o,"u64"))),i.pure(t.min_amounts_b.map(o=>i.pure(o,"u64"))),i.object(W)]}),i}collectFee(t,e){let{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions,{liquidity_stratefy:i}=this.sdk.sdkOptions;e=e===void 0?new tr.TransactionBlock:e;let r=[t.coinTypeA,t.coinTypeB],o=[e.object(R(i).master_manger_id),e.object(t.master_address),e.object(R(n).global_config_id),e.object(t.pool_address)];return e.moveCall({target:`${i.published_at}::${ka}::collect_fee`,typeArguments:r,arguments:o}),e}collectReward(t,e){let{clmm_pool:n}=this.sdk.ClmmSDK.sdkOptions,{liquidity_stratefy:i}=this.sdk.sdkOptions;return e=e===void 0?new tr.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(R(i).master_manger_id),e.object(t.master_address),e.object(R(n).global_config_id),e.object(t.pool_address),e.object(R(n).global_vault_id),e.object(W)];e.moveCall({target:`${i.published_at}::${ka}::collect_reward`,typeArguments:o,arguments:s})}}),e}updateCache(t,e,n=We){let i=this._cache[t];i?(i.overdueTime=ye(n),i.value=e):i=new qe(e,ye(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t],i=n?.isValid();if(!e&&i)return n.value;i||delete this._cache[t]}},Wv=class{_sdk;_cache={};constructor(t){this._sdk=t}get sdk(){return this._sdk}buildCoinInput(t,e,n,i,r){let{selectedCoins:o,remainingCoins:s}=Ce.selectCoinAssetGreaterThanOrEqual(e,BigInt(i)),a=Ce.calculateTotalBalance(o);if(a<BigInt(i))throw new Error(`The amount(${a}) is Insufficient balance for ${n} , expect ${i} `);let u=a-BigInt(i),l;if(Ce.isSuiCoin(n))l=t.splitCoins(t.gas,[t.pure(i)]);else{let[m,...b]=o.map(v=>v.coinObjectId);l=t.object(m),b.length>0?r?t.mergeCoins(l,[...b.map(v=>t.object(v)),r]):t.mergeCoins(l,[...b.map(v=>t.object(v))]):r&&t.mergeCoins(l,[r])}return{selectedUnusedAmount:u,coinInput:l,remainingCoins:s}}async deposit(t){console.log("1110 deposit \u53C2\u6570: ",{params:t});let{vaults:e,frams:n}=this._sdk.sdkOptions,{clmm_pool:i}=this._sdk.ClmmSDK.sdkOptions,r=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.getVerifySenderAddress()),o=new nr.TransactionBlock,s,a;if(t.swapParams){let b=await this.handleDepositSwap(t,o,r);s=b.primaryCoinAInputs,a=b.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 u=R(e),l=R(n),m=R(i);return o.moveCall({target:`${e.published_at}::${Lv}::deposit`,typeArguments:[t.coinTypeA,t.coinTypeB,t.lp_token_type],arguments:[o.object(u.vaults_manager_id),o.object(t.vault_id),o.object(l.rewarder_manager_id),o.object(l.global_config_id),o.object(t.farming_pool),o.object(m.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(W)]}),o}async handleDepositSwap(t,e,n){let{clmm_pool:i,integrate:r}=this._sdk.ClmmSDK.sdkOptions,{swap_amount:o,a2b:s,route_obj:a,staking_id:u}=t.swapParams,l=s?t.coinTypeA:t.coinTypeB,m=oe.buildCoinForAmount(e,n,BigInt(o),l,!1),b=BigInt(m.tragetCoinAmount)-BigInt(o),v=[];if(u){let B=this.requestStakeCoin(u,e,m.targetCoin),E=oe.buildCoinForAmount(e,m.remainCoins,BigInt(0),l,!1).targetCoin;v=s?[E,B]:[B,E]}else if(a){let B=oe.buildCoinForAmount(e,n,0n,s?t.coinTypeB:t.coinTypeA,!1),E=await oe.buildAggregatorSwapReturnCoins(this._sdk.ClmmSDK,a,m,B,"",t.slippage,e);v=s?[E.fromCoin,E.toCoin]:[E.toCoin,E.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,n,0n,s?t.coinTypeB:t.coinTypeA,!1),E=En.getDefaultSqrtPriceLimit(s).toString();v=e.moveCall({target:`${r.published_at}::${Ci}::swap`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[e.object(R(i).global_config_id),e.object(t.clmm_pool),s?m.targetCoin:B.targetCoin,s?B.targetCoin:m.targetCoin,e.pure(s),e.pure(!0),e.pure(o),e.pure(E),e.pure(!1),e.object(W)]})}let T,O,P=v[0],M=v[1];if(s){let B=BigInt(t.amount_a)-b;Ce.isSuiCoin(l)?(e.transferObjects([P],e.pure(this._sdk.getVerifySenderAddress())),T=e.splitCoins(e.gas,[e.pure(t.amount_a)])):B>0n?T=this.buildCoinInput(e,m.remainCoins,l,B,P).coinInput:T=P,O=M}else{T=P;let B=BigInt(t.amount_b)-b;Ce.isSuiCoin(l)?(e.transferObjects([M],e.pure(this._sdk.getVerifySenderAddress())),O=e.splitCoins(e.gas,[e.pure(t.amount_b)])):B>0n?O=this.buildCoinInput(e,m.remainCoins,l,B,M).coinInput:O=M}return{primaryCoinAInputs:T,primaryCoinBInputs:O}}async remove(t){console.log({params:t});let{vaults:e,frams:n}=this.sdk.sdkOptions,{clmm_pool:i,integrate:r}=this._sdk.ClmmSDK.sdkOptions,o=new nr.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,u=R(e),l=R(n),m=R(i),b=[t.coinTypeA,t.coinTypeB,t.lp_token_type],v=o.moveCall({target:`${e.published_at}::${Uv}::remove`,typeArguments:b,arguments:[o.object(u.vaults_manager_id),o.object(t.vault_id),o.object(l.rewarder_manager_id),o.object(l.global_config_id),o.object(t.farming_pool),o.object(m.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(W)]}),T=v[0],O=v[1];if(t.swapParams){let{a2b:P,swap_amount:M,route_obj:B}=t.swapParams;if(B){let E={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,E,q,"",t.slippage,o),X=P?[K.fromCoin,K.toCoin]:[K.toCoin,K.fromCoin];P?o.mergeCoins(X[1],[O]):o.mergeCoins(X[0],[T]),o.transferObjects([...X],o.pure(this._sdk.getVerifySenderAddress()))}else{let E=En.getDefaultSqrtPriceLimit(P).toString(),q=o.moveCall({target:`${r.published_at}::${Ci}::swap`,typeArguments:[t.coinTypeA,t.coinTypeB],arguments:[o.object(R(i).global_config_id),o.object(t.clmm_pool),T,O,o.pure(P),o.pure(!0),o.pure(M),o.pure(E),o.pure(!0),o.object(W)]});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,n=await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${e.package_id}::vaults::CreateEvent`},t),i=n.data.map(s=>s.parsedJson.id),r=await this._sdk.ClmmSDK.fullClient.batchGetObjects(i,{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}),o=[];return r.forEach(s=>{let a=Kn.buildPool(s);a&&(a.staking_id=this.findHaedalStakeId(a.position.coinTypeA,a.position.coinTypeB),this.savePoolToCache(a),o.push(a))}),n.data=o,n}findHaedalStakeId(t,e){let{haedal:n}=this._sdk.sdkOptions,{support_stakings:i}=R(n);return i.length===0?void 0:i.filter(o=>{let s=z(o.from_coin_type).full_address,a=z(o.to_coin_type).full_address,u=z(t).full_address,l=z(e).full_address;return u===s&&l===a||u===a&&l===s})[0]?.staking_id||void 0}savePoolToCache(t){let e=`${t.id}_mirrorPool`;this.updateCache(e,t,J)}readPoolFromCache(t,e=!1){let n=`${t}_mirrorPool`;return this.getCache(n,e)}async calculateMaxAvailable(t){let{integrate:e,simulationAccount:n}=this.sdk.ClmmSDK.sdkOptions,i=new nr.TransactionBlock,r=ne.tickIndexToSqrtPriceX64(t.lowerTick),o=ne.tickIndexToSqrtPriceX64(t.upperTick),s=new je.default(t.curSqrtPrice),a=Ge.getCoinAmountFromLiquidity(new je.default(t.input_amount),s,r,o,!1),u=[t.coinTypeA,t.coinTypeB];i.moveCall({target:`${e.published_at}::${Yt}::calculate_swap_result`,arguments:[i.object(t.clmm_pool),i.pure(!0),i.pure(!0),i.pure(a.coinA.toString())],typeArguments:u}),i.moveCall({target:`${e.published_at}::${Yt}::calculate_swap_result`,arguments:[i.object(t.clmm_pool),i.pure(!1),i.pure(!0),i.pure(a.coinB.toString())],typeArguments:u});let m=(await this.sdk.ClmmSDK.fullClient.devInspectTransactionBlock({transactionBlock:i,sender:n.address})).events?.filter(P=>z(P.type).name==="CalculatedSwapResultEvent");if(m.length===0)return null;let b=m[0].parsedJson.data,v=m[1].parsedJson.data,T=D(a.coinB.toString()).add(b.amount_out),O=D(a.coinA.toString()).add(v.amount_out);return{maxAmountB:T,maxAmountA:O}}async calculateRemoveSwapAmount(t,e){let n=Kn.calculateDepositRatio(t.lowerTick,t.upperTick,new je.default(t.curSqrtPrice)),i=t.fix_amount_a?n.ratioA:n.ratioB;console.log({fixRatio:i});let r=D(t.receive_amount).mul(i),o,s;if(t.removeLiquidity){let P=ne.tickIndexToSqrtPriceX64(t.lowerTick),M=ne.tickIndexToSqrtPriceX64(t.upperTick),B=Ge.getCoinAmountFromLiquidity(new je.default(t.removeLiquidity),new je.default(t.curSqrtPrice),P,M,!1);s=t.removeLiquidity,o=t.fix_amount_a?B.coinB.toString():B.coinA.toString(),r=t.fix_amount_a?D(B.coinA.toString()):D(B.coinB.toString())}else{let P=Ge.estLiquidityAndcoinAmountFromOneAmounts(t.lowerTick,t.upperTick,new je.default(r.toFixed(0)),t.fix_amount_a,!1,.2,new je.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,u=await this.clmmPreSwap(t.clmm_pool,t.curSqrtPrice,a,D(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:u,range:e});let l=r.add(u.amount_out),m=D(t.receive_amount),b=m.sub(l);if(console.log(`\u5B9E\u9645\u5F97\u5230: ${l.toString()} , \u671F\u671B\u5F97\u5230: ${t.receive_amount}, \u5269\u4F59: ${b.toString()} `),(!t.removeLiquidity||t.removeLiquidity&&e)&&b.abs().greaterThan(m.mul(.01))){let P=l.lessThan(m),M,B;e?P?(M=D(s),B=e.right):(M=e.left,B=D(s)):(M=P?D(s):D(0),B=P?D(t.maxLiquidity):D(s));let E=D(M).add(B).div(2).toFixed(0);if(console.log({left:M.toString(),right:B.toString(),midLiquidity:E.toString()}),!e||e&&e.count<15&&M<B)return await this.calculateRemoveSwapAmount({...t,removeLiquidity:E},{left:M,right:B,count:e?e.count+1:0})}let v=u.amount_in&&u.fee_amount?new je.default(u.amount_in).add(new je.default(u.fee_amount)).toString():u.amount_in,T=u.amount_out,{is_exceed:O}=u;return{swapInAmount:v,swapOutAmount:T,liquidity:s,is_exceed:O,routeObj:u.route_obj,request_id:t.request_id}}async calculateHaedalDepositFixSui(t){let e=t.inputSuiAmount.mul(t.remainRate),n=t.inputSuiAmount.sub(t.swapSuiAmount),i=t.exchangeRate?t.exchangeRate:await this.getExchangeRateForHaedal(t.staking_id,t.shouldRequestStake,Number(t.swapSuiAmount.toFixed(0))),r=t.swapSuiAmount.div(i).toFixed(0);console.log({swapAmount:t.swapSuiAmount.toString(),hasuiAmount:r.toString(),leftSuiAmount:t.leftSuiAmount.toString(),rightSuiAmount:t.rightSuiAmount.toString(),exchangeRate:i});let o=Ge.estLiquidityAndcoinAmountFromOneAmounts(t.lowerTick,t.upperTick,new je.default(r.toString()),!t.fixCoinA,!0,0,new je.default(t.curSqrtPrice)),s=t.fixCoinA?o.coinAmountA.toString():o.coinAmountB.toString(),a=D(n).sub(s);return console.log({useSuiAmount:s.toString(),hasuiAmount:r.toString(),remainSui:n.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:i,rebalanceCount:t.rebalanceCount+1}):a.greaterThan(e)?await this.calculateHaedalDepositFixSui({...t,leftSuiAmount:t.swapSuiAmount,swapSuiAmount:t.swapSuiAmount.add(t.rightSuiAmount).div(2),exchangeRate:i,rebalanceCount:t.rebalanceCount+1}):null}async calculateDepositSwapAmount(t,e=!1){let n=ne.sqrtPriceX64ToTickIndex(new je.default(t.curSqrtPrice)),{ratioA:i,ratioB:r}=Kn.calculateDepositRatio(t.lowerTick,t.upperTick,new je.default(t.curSqrtPrice));console.log("1110 calculateDepositSwapAmount params: ",{...t,currentTick:n,adjustBestAmount:e});let o=D(t.input_amount).mul(t.fix_amount_a?i:r),s=D(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:D(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 $(s.toFixed(0)):new $(0),rightSuiAmount:a?new $(t.input_amount):new $(s.toFixed(0)),staking_id:t.staking_id});return G?{...G,request_id:t.request_id}:null}throw Error("Only support fix sui")}let u=n<t.lowerTick||n>t.upperTick,l={clmm_pool:t.clmm_pool,curSqrtPrice:t.curSqrtPrice,a2b:a,amount_a:a?new $(t.input_amount):new $(0),amount_b:a?new $(0):new $(t.input_amount),amount_left:a?new $(s.toFixed(0)):new $(0),amount_right:a?new $(t.input_amount):new $(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},m=e&&n<=t.upperTick,b=m?await this.calculateRebalance(l):await this.clmmPreSwap(t.clmm_pool,t.curSqrtPrice,a,s,t.coinTypeA,t.coinTypeB,!0,t.priceSplitPoint,t.use_route),v=b.after_sqrt_price,T=ne.sqrtPriceX64ToTickIndex(new je.default(v));console.log("1110 \u9996\u6B21\u8BA1\u7B97 \u7ED3\u679C: ",{...b,currentTick:T},null,2);let O=T<t.lowerTick||T>t.upperTick;if(u!==O&&!m&&T<=t.upperTick){console.log("1110 \u533A\u95F4\u53D1\u751F\u53D8\u5316, \u518D\u6B21\u8FDB\u884Cswap: ");let{ratioA:G,ratioB:Z}=Kn.calculateDepositRatio(t.lowerTick,t.upperTick,new je.default(v));console.log("1110 ",{newAfterRatioA:G,newAfterRatioB:Z}),s=D(t.input_amount).sub(D(t.input_amount).mul(t.fix_amount_a?G:Z)),l.amount_left=a?new $(s.toFixed(0)):new $(0),l.amount_right=a?new $(t.input_amount):new $(s.toFixed(0)),b=await this.calculateRebalance(l),v=b.after_sqrt_price;let A=ne.sqrtPriceX64ToTickIndex(new je.default(v));console.log("1110 \u518D\u6B21\u8BA1\u7B97\u53D8\u5316\u540E: ",{lowerTick:t.lowerTick,upperTick:t.upperTick,currentTick:A,afterSqrtPrice:v})}let{ratioA:P,ratioB:M}=Kn.calculateDepositRatio(t.lowerTick,t.upperTick,new je.default(v));console.log("1110 1",{afterRatioA:P,afterRatioB:M,data:b});let B=M.div(P).sub(r.div(i)).greaterThan("0"),E=b.amount_in&&b.fee_amount?new je.default(b.amount_in).add(new je.default(b.fee_amount)).toString():b.amount_in,q=b.amount_out,{is_exceed:K}=b;if(T<t.lowerTick)B=!0;else if(T>t.upperTick)B=!1;else{let G=B===a?new je.default(D(t.input_amount).sub(E).toString()):new je.default(q),Z=Ge.estLiquidityAndcoinAmountFromOneAmounts(t.lowerTick,t.upperTick,G,B,!0,0,new je.default(v)),A=Z.coinAmountA,I=Z.coinAmountB,x=D(t.fix_amount_a?A.toString():I.toString()).add(E);console.log("1110 \u5B9E\u9645\u6D88\u8017:",{preAmountTotal:x.toString(),fixAmountA:B}),x.greaterThanOrEqualTo(t.input_amount)&&(B=!B)}let X={swapInAmount:E,swapOutAmount:q,afterSqrtPrice:v,is_exceed:K,fixAmountA:B,routeObj:b.route_obj,request_id:t.request_id,use_Haedal_stake:!1};return console.log(X),X}async calculateHaedalDepositSwapAmount(t){let e=ne.sqrtPriceX64ToTickIndex(new je.default(t.curSqrtPrice)),{ratioA:n,ratioB:i}=Kn.calculateDepositRatio(t.lowerTick,t.upperTick,new je.default(t.curSqrtPrice));console.log("1110 calculateDepositSwapAmount params: ",{...t,currentTick:e});let r=D(t.input_amount).mul(t.fix_amount_a?n:i),o=D(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:D(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 $(o.toFixed(0)):new $(0),rightSuiAmount:s?new $(t.input_amount):new $(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:n,curSqrtPrice:i,amount_a:r,amount_b:o,lowerTick:s,upperTick:a,amount_left:u,amount_right:l,coinTypeA:m,coinTypeB:b,useRoute:v,priceSplitPoint:T,remainRate:O}=t,P=async(M,B,E)=>{let q=M.plus(B).div(2),K=await this.clmmPreSwap(e,i,n,q,m,b,!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(M,B,E+1);let X=n?r.sub(K.amount_in):r.add(K.amount_out),G=n?o.add(K.amount_out):o.sub(K.amount_in),Z=ne.sqrtPriceX64ToTickIndex(new je.default(K.after_sqrt_price)),A=Ge.estLiquidityAndcoinAmountFromOneAmounts(s,a,new je.default(X.toString()),!0,!0,1,new je.default(K.after_sqrt_price)),I=new $(A.coinAmountA.toString()),x=new $(A.coinAmountB.toString());if(console.log("1110 swap\u9012\u5F52\u8BA1\u7B97 ",{preRes:K,left:M.toString(),right:B.toString(),mid:q.toString(),afterPoolTickIndex:Z,afterA:X.toString(),afterB:G.toString(),usedA:I.toString(),usedB:toString(),count:E}),I.toString()!==X.toString())throw new Error("usedA does not match afterA");if(G.lessThan(x))n?M=q:B=q;else{n?B=q:M=q;let j=G.sub(x),k=G.mul(O);if(console.log("1110 \u5269\u4F59\u672A\u4F7F\u7528amount ",{remainingB:j.toString(),maxRemainingB:k.toString(),remainRate:O,count:E}),k.sub(j).greaterThanOrEqualTo(0))return console.log("break"),{...K,remainingB:j}}return M.greaterThan(B)||B.sub(M).lessThan(10)?K:P(M,B,E+1)};return u.greaterThanOrEqualTo(l)?P(new $(0),u,0):P(u,l,0)}async clmmPreSwap(t,e,n,i,r,o,s,a,u,l){if(u)try{let B=await this._sdk.ClmmSDK.RouterV2.getBestRouter(n?r:o,n?o:r,Number(i.toFixed(0)),s,a,"",void 0,void 0,!0,!1,l);if(!B.result)throw new Error("route unavailable");let{result:E}=B,q=e;return E.splitPaths.forEach(K=>{let X=K.basePaths.find(G=>G.poolAddress.toLowerCase()===t.toLowerCase());X&&(q=X.afterSqrtPrice.toString())}),{amount_in:E.inputAmount.toString(),amount_out:E.outputAmount.toString(),after_sqrt_price:q,is_exceed:E.isExceed,route_obj:E}}catch{throw new Error("route unavailable")}let{integrate:m,simulationAccount:b}=this.sdk.ClmmSDK.sdkOptions,v=new nr.TransactionBlock,T=[r,o],O=[v.pure(t),v.pure(n),v.pure(s),v.pure(i.toFixed(0))];v.moveCall({target:`${m.published_at}::${Yt}::calculate_swap_result`,arguments:O,typeArguments:T});let M=(await this.sdk.ClmmSDK.fullClient.devInspectTransactionBlock({transactionBlock:v,sender:b.address})).events?.filter(B=>z(B.type).name==="CalculatedSwapResultEvent");return M.length===0?null:M[0].parsedJson.data}async getVault(t,e=!1){let n=this.readPoolFromCache(t,e);if(n)return n;try{let i=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0,showDisplay:!0,showOwner:!0}}),r=Kn.buildPool(i);if(r)return r.staking_id=this.findHaedalStakeId(r.position.coinTypeA,r.position.coinTypeB),this.savePoolToCache(r),r}catch(i){console.log(i)}}async getVaultsConfigs(t=!1){let{package_id:e}=this._sdk.sdkOptions.vaults,n=`${e}_getMirrorPoolConfigs`,i=this.getCache(n,t);if(i!==void 0)return i;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 u=await this._sdk.ClmmSDK.fullClient.getObject({id:o.vaults_manager_id,options:{showContent:!0}}),l=te(u);o.vaults_pool_handle=l.vault_to_pool_maps.fields.id.id;break}this.updateCache(n,o,J)}return o}async getExchangeRateForHaedal(t,e,n){let{haedal:i}=this._sdk.sdkOptions,{simulationAccount:r}=this._sdk.ClmmSDK.sdkOptions;try{let o=new nr.TransactionBlock;e?await this.requestStake(t,n||1e9,o):o.moveCall({target:`${i.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 l=s.events.find(T=>T.type.includes("UserStaked")),{sui_amount:m,st_amount:b}=l.parsedJson,v=D(m).div(b).toString();return console.log({st_amount:b,sui_amount:m,rate:v}),v}let a=s.results[0].returnValues[0][0],u=Ju.bcs.de("u64",Uint8Array.from(a))/1e6;return console.log("rate ",Ju.bcs.de("u64",Uint8Array.from(a))),u.toString()}catch(o){console.log("getExchangeRateForHaedal",o)}return"0"}requestStakeCoin(t,e,n){let{haedal:i}=this._sdk.sdkOptions;return e.moveCall({target:`${i.published_at}::staking::request_stake_coin`,typeArguments:[],arguments:[e.object((0,Do.normalizeSuiObjectId)("0x5")),e.object(t),n,e.pure((0,Do.normalizeSuiObjectId)("0x0"))]})}async requestStake(t,e,n){let{haedal:i}=this._sdk.sdkOptions,r=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.getVerifySenderAddress(),Po);n=n||new nr.TransactionBlock;let o;if(e>95e10){let[s,...a]=r;a.length>0&&n.mergeCoins(n.object(s.coinObjectId),a.map(u=>n.object(u.coinObjectId))),o=n.splitCoins(n.object(s.coinObjectId),[e])}else o=oe.buildCoinForAmount(n,r,BigInt(e),Po,!1,!0).targetCoin;return n.moveCall({target:`${i.published_at}::interface::request_stake`,typeArguments:[],arguments:[n.object((0,Do.normalizeSuiObjectId)("0x5")),n.object(t),o,n.pure((0,Do.normalizeSuiObjectId)("0x0"))]}),n}updateCache(t,e,n=We){let i=this._cache[t];i?(i.overdueTime=ye(n),i.value=e):i=new qe(e,ye(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t],i=n?.isValid();if(!e&&i)return n.value;i||delete this._cache[t]}},Ta=class{static buildOrderLimitEvent(t){let{events:e}=t,n=[];return e&&e.forEach(i=>{let r=z(i.type).name;if(r==="OrderPlacedEvent"||r==="OrderCanceledEvent"||r==="FlashLoanEvent"){let o={digest:t.digest,type:r,timestampMs:t.timestampMs,parsedJson:i.parsedJson};n.push(o)}}),n}static buildLimitOrderInfo(t){let e=te(t),n=Dn(t);if(e&&n)try{let i=z(n),r={pay_coin_type:i.type_arguments[0],target_coin_type:i.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=D(r.total_pay_amount).mul(1e20).div(r.rate).toFixed(0);r.obtained_amount===o?r.status="Completed":r.status="Cancelled"}return r}catch(i){console.log(i)}}static calculateFormatRate(t,e,n){let i=20+e-n;return D(t).mul(D(10).pow(i)).toString()}static calculateRate(t,e,n){let i=20+e-n;return Number(t)/10**i}},Hv=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}=R(t),{fullClient:n}=this._sdk.ClmmSDK,r=(await n.getDynamicFieldsByPage(e)).data.map(s=>s.objectId);return(await n.batchGetObjects(r,{showContent:!0})).map(s=>{let{fields:a}=s.data.content;return{coin_type:z(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}=R(t),{fullClient:n}=this._sdk.ClmmSDK,r=(await n.getDynamicFieldsByPage(e)).data.map(s=>s.objectId);return(await n.batchGetObjects(r,{showContent:!0})).map(s=>{let{fields:a}=s.data.content.fields.value,u={pay_coin_type:z(a.pay_coin.fields.name).full_address,target_coin_type:z(a.target_coin.fields.name).full_address,indexer_id:a.indexer_id};return this._sdk.updateCache(`${u.pay_coin_type}_${u.target_coin_type}`,u.indexer_id),u})}async getPoolIndexerId(t,e){let n=this._sdk.getCache(`${t}_${e}`);try{if(n===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 n}async getOwnerLimitOrderList(t,e){let{fullClient:n}=this._sdk.ClmmSDK,i={data:[],hasNextPage:!1};try{let r=await this.getUserIndexerHandle(t);if(!r)return i;let o=await n.getDynamicFieldsByPage(r,e);i.hasNextPage=o.hasNextPage,i.nextCursor=o.nextCursor;let s=o.data.map(l=>l.name.value),u=(await n.batchGetObjects(s,{showContent:!0})).map(l=>Ta.buildLimitOrderInfo(l)).filter(l=>l!==void 0);i.data=u}catch(r){console.error("Error in getOwnerLimitOrderList:",r)}return i}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:""},n=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::limit_order::InitEvent`})).data;if(n.length>0){let r=n[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 i=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::config::InitFactoryEvent`})).data;if(i.length>0){let r=i[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 n=await e.getObject({id:t,options:{showContent:!0}});return Ta.buildLimitOrderInfo(n)}catch(n){console.error("Error in getLimitOrder:",n);return}}async getLimitOrderLogs(t){let{fullClient:e}=this._sdk.ClmmSDK;try{let n=await e.queryTransactionBlocks({filter:{ChangedObject:t},options:{showEvents:!0}}),i=[];return n.data.forEach(r=>{i.push(...Ta.buildOrderLimitEvent(r))}),i}catch(n){return console.error("Error in getLimitOrderLogs:",n),[]}}buildRateOrdersIndexerType(t){let{limit_order:e}=this._sdk.sdkOptions;return Nr(`${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:n,global_config_id:i,rate_orders_indexer_id:r}=R(e),o=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress,t.pay_coin_type),s=new Aa.TransactionBlock,a=await this.getPoolIndexerId(t.pay_coin_type,t.target_coin_type),u=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(i),a===void 0?s.object(r):s.object(a),s.object(n),u.targetCoin,s.pure(Ta.calculateFormatRate(t.rate,t.pay_decimal,t.target_decimal)),s.pure(t.expired_ts),s.object(W)]}),s}async cancelOrdersByOwner(t){let{limit_order:e}=this._sdk.sdkOptions,{global_config_id:n}=R(e),i=new Aa.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=>{i.moveCall({target:`${e.published_at}::limit_order::cancel_order_by_owner`,typeArguments:[t.pay_coin_type,t.target_coin_type],arguments:[i.object(n),i.object(r),i.object(o),i.object(W)]})}),i}async getUserIndexerHandle(t){let{fullClient:e}=this._sdk.ClmmSDK,{limit_order:n}=this._sdk.sdkOptions,i=this.getUserIndexerHandleByCache(t);if(i===void 0){let r=new Aa.TransactionBlock;r.moveCall({target:`${n.published_at}::limit_order::get_orders_indexer_by_owner`,typeArguments:[],arguments:[r.pure(t),r.object(R(n).user_orders_indexer_id)]}),i=(await e.devInspectTransactionBlock({transactionBlock:r,sender:this._sdk.ClmmSDK.sdkOptions.simulationAccount.address})).events[0].parsedJson.orders_table_id,i&&this.saveUserIndexerHandleByCache(t,i)}return i}getUserIndexerHandleByCache(t){let e=`getUserIndexerHandleByCache_${t}`;return this.getCache(e)}saveUserIndexerHandleByCache(t,e){let n=`getUserIndexerHandleByCache_${t}`;return this.updateCache(n,e)}updateCache(t,e,n=J){let i=this._cache[t];i?(i.overdueTime=ye(n),i.value=e):i=new qe(e,ye(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t],i=n?.isValid();if(!e&&i)return n.value;i||delete this._cache[t]}},Xv=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,n={data:[],hasNextPage:!1};try{let i=await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${e}::pool::CreatePoolEvent`},t),r=i.data.map(o=>o.parsedJson.pool_id);if(n.hasNextPage=i.hasNextPage,n.nextCursor=i.nextCursor,r.length>0){let o=await this._sdk.ClmmSDK.fullClient.batchGetObjects(r,{showType:!0,showContent:!0});for(let s of o){let a=Ca.buildFramsPool(s);a&&(a.rewarders=await this.getFramsRewarderConfig(a.clmm_pool_id,a.rewarders.map(u=>u.reward_coin)),n.data.push(a),this.updateCache(a.id,a))}}}catch(i){console.log("getFramsPoolList error ",i)}return n}async getFramsPool(t,e=!1){let n=this.getCache(t,e);if(n)return n;let i=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showType:!0,showContent:!0}}),r=Ca.buildFramsPool(i.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,n=!1){let{frams:i}=this._sdk.sdkOptions,r=[];for(let o of e){let s=`getFramsRewarderConfig_${o}_${t}`,a=this.getCache(s,n);if(a)r.push(a);else try{let u=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:R(i).rewarder_manager_handle,name:{type:"0x1::type_name::TypeName",value:zu(o)}}),{fields:l}=u.data.content.fields.value.fields.value,m={reward_coin:o,last_reward_time:l.last_reward_time,emission_per_second:l.emission_per_second,total_allocate_point:l.total_allocate_point,allocate_point:""},b=l.pools.fields.id.id,v=await this._sdk.ClmmSDK.fullClient.getDynamicFieldObject({parentId:b,name:{type:"0x2::object::ID",value:t}}),{allocate_point:T}=v.data.content.fields.value.fields.value.fields;m.allocate_point=T,this.updateCache(s,m),r.push(m)}catch(u){console.log(u)}}return r}async getOwnedFramsPositionNFTList(t,e=[],n=!1,i=!0,r="all"){let{package_id:o}=this._sdk.sdkOptions.frams,s={data:[],hasNextPage:!1},a={},u=[],l=e.length>0,m=await this._sdk.ClmmSDK.fullClient.getOwnedObjectsByPage(t,{filter:{StructType:`${o}::pool::WrappedPositionNFT`},options:{showContent:!0}},r);s.hasNextPage=m.hasNextPage,s.nextCursor=m.nextCursor;for(let b of m.data){let v=Ca.buildFramsPositionNFT(b);if(v)if(l){if(e.includes(v.pool_id)){u.push(v);let T=a[v.pool_id];T?T.push(v):T=[v],a[v.pool_id]=T}}else u.push(v)}if(n&&u.length>0){let b=await this.calculateFarmingRewards(u.map(v=>({pool_id:v.pool_id,position_nft_id:v.id,clmm_pool_id:v.clmm_pool_id})),i);l?(a={},u.forEach(v=>{b[v.id]&&(v.rewards=b[v.id]);let O=a[v.pool_id];O?O.push(v):O=[v],a[v.pool_id]=O})):u.forEach(v=>{b[v.id]&&(v.rewards=b[v.id])})}return l?a:(s.data=u,s)}async getFramsPositionNFT(t,e=!0){let n=await this._sdk.ClmmSDK.fullClient.getObject({id:t,options:{showContent:!0,showType:!0}}),i=Ca.buildFramsPositionNFT(n);if(e&&i){let r=await this.calculateFarmingRewards([{pool_id:i.pool_id,position_nft_id:i.id}]);r[i.id]&&(i.rewards=r[i.id])}return i}async calculateFarmingRewards(t,e=!0){let{frams:n}=this._sdk.sdkOptions,i=new un.TransactionBlock,{rewarder_manager_id:r,global_config_id:o}=R(n);t.forEach(a=>{i.moveCall({target:`${n.published_at}::router::accumulated_position_rewards`,typeArguments:[],arguments:[i.object(o),i.object(r),i.object(a.pool_id),i.pure(a.position_nft_id,"address"),i.object(W)]})});let s={};try{let a=await this._sdk.ClmmSDK.fullClient.sendSimulationTransaction(i,this._sdk.ClmmSDK.senderAddress,e);console.log({simulateRes:a});let u=a?.events?.filter(l=>z(l.type).name==="AccumulatedPositionRewardsEvent");if(u&&u.length>0)for(let l=0;l<u.length;l+=1){let{parsedJson:m}=u[l],b=[];m.rewards.contents.forEach(v=>{b.push({rewarder_type:z(v.key.name).full_address,rewarder_amount:v.value})}),s[m.wrapped_position_id]=b}}catch(a){console.log(a)}return s}depositPayload(t,e){let{frams:n}=this.sdk.sdkOptions;e=e||new un.TransactionBlock;let{global_config_id:i,rewarder_manager_id:r}=R(n);return e.moveCall({target:`${n.published_at}::router::deposit`,typeArguments:[],arguments:[e.object(i),e.object(r),e.object(t.pool_id),e.object(t.clmm_position_id),e.object(W)]}),e}async withdrawPayload(t,e){let{frams:n}=this.sdk.sdkOptions,{global_config_id:i,rewarder_manager_id:r}=R(n);return e=e||new un.TransactionBlock,e=await this.harvestPayload({pool_id:t.pool_id,position_nft_id:t.position_nft_id},e),e.moveCall({target:`${n.published_at}::router::withdraw`,typeArguments:[],arguments:[e.object(i),e.object(r),e.object(t.pool_id),e.object(t.position_nft_id),e.object(W)]}),e}async batchHarvestPayload(t,e){e=e||new un.TransactionBlock;for(let n of t)await this.harvestPayload(n,e);return e}async harvestPayload(t,e){let{frams:n}=this.sdk.sdkOptions;e=e||new un.TransactionBlock;let i=await this.getFramsPool(t.pool_id,!1);if(i===void 0)throw Error(`not found ${t.pool_id}`);let{global_config_id:r,rewarder_manager_id:o}=R(n);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 i.rewarders.forEach(a=>{e&&e.moveCall({target:`${n.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(W)]})}),e}async claimFeeAndClmmReward(t){let e=new un.TransactionBlock,n=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,n),e}async openPositionAddLiquidityStakePaylod(t){let e=new un.TransactionBlock,{clmm_pool:n,integrate:i}=this._sdk.ClmmSDK.sdkOptions,r=R(n),o=e.moveCall({target:`${n.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(xt(BigInt(t.tick_lower)).toString()),e.pure(xt(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),u=oe.buildCoinForAmount(e,s,BigInt(t.amount_b),t.coinTypeB,!1);e.moveCall({target:`${i.published_at}::${ti}::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,u.targetCoin,e.pure(t.amount_a.toString()),e.pure(t.amount_b.toString()),e.pure(t.fix_amount_a),e.object(W)]});let{frams:l}=this.sdk.sdkOptions,{global_config_id:m,rewarder_manager_id:b}=R(l);return e.moveCall({target:`${l.published_at}::router::deposit`,typeArguments:[],arguments:[e.object(m),e.object(b),e.object(t.pool_id),o,e.object(W)]}),e}async addLiquidityPayload(t,e){let{frams:n}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions;e=e||new un.TransactionBlock;let r=R(n),o=R(i),s=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress),a=oe.buildCoinForAmount(e,s,BigInt(t.amount_limit_a),t.coinTypeA,!1),u=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 l=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,l,a.remainCoins,u.remainCoins)}return e.moveCall({target:`${n.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,u.targetCoin,e.pure(t.amount_limit_a),e.pure(t.amount_limit_b),e.pure(t.delta_liquidity),e.object(W)]}),e}async addLiquidityFixCoinPayload(t,e){let{frams:n}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions;e=e||new un.TransactionBlock;let r=R(n),o=R(i),s=await this._sdk.ClmmSDK.getOwnerCoinAssets(this._sdk.ClmmSDK.senderAddress),a=oe.buildCoinForAmount(e,s,BigInt(t.amount_a),t.coinTypeA,!1),u=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 l=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,l,a.remainCoins,u.remainCoins)}return e.moveCall({target:`${n.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,u.targetCoin,e.pure(t.amount_a.toString()),e.pure(t.amount_b.toString()),e.pure(t.fix_amount_a),e.object(W)]}),e}async removeLiquidityPayload(t,e){let{frams:n}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions;e=e||new un.TransactionBlock;let r=R(n),o=R(i);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:`${n.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(W)]})}else e.moveCall({target:`${n.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(W)]}),t.unstake&&this.withdrawPayload({pool_id:t.pool_id,position_nft_id:t.position_nft_id});return e}async buildCollectRewarderAndFeeParams(t,e,n,i,r){i===void 0&&(i=[...n]),r===void 0&&(r=[...n]);let o=qt(t.coinTypeA),s=qt(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(u=>{switch(qt(u)){case o:a.push(oe.buildCoinForAmount(e,i,BigInt(0),u,!1).targetCoin);break;case s:a.push(oe.buildCoinForAmount(e,r,BigInt(0),u,!1).targetCoin);break;default:a.push(oe.buildCoinForAmount(e,n,BigInt(0),u,!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:n}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions;e=e||new un.TransactionBlock;let r=R(n),o=R(i);return e.moveCall({target:`${n.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:n}=this.sdk.sdkOptions,{clmm_pool:i}=this.sdk.ClmmSDK.sdkOptions;e=e||new un.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(u=>{r.push(oe.buildCoinForAmount(e,a,BigInt(0),u,!1).targetCoin)})}let o=R(n),s=R(i);return t.clmm_rewarder_types?.forEach((a,u)=>{e&&e.moveCall({target:`${n.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[u],e.object(W)]})}),e}async getFrarmsConfigs(){let{package_id:t}=this._sdk.sdkOptions.frams,e={global_config_id:"",rewarder_manager_id:"",rewarder_manager_handle:""},n=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::config::InitConfigEvent`})).data;if(n.length>0){let r=n[0].parsedJson;e.global_config_id=r.global_config_id,e.admin_cap_id=r.admin_cap_id}let i=(await this._sdk.ClmmSDK.fullClient.queryEventsByPage({MoveEventType:`${t}::rewarder::InitRewarderManagerEvent`})).data;if(i.length>0){let r=i[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,n=J){let i=this._cache[t];i?(i.overdueTime=ye(n),i.value=e):i=new qe(e,ye(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t];if(!e&&n?.isValid())return n.value;delete this._cache[t]}},Zt=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 Bv(this),this._ido=new zv(this),this._xcetusModule=new Fv(this),this._xtokenModule=new Vv(this),this._boosterModule=new jv(this),this._makerModule=new Nv(this),this._vaults=new Wv(this),this._limitOrder=new Hv(this),this._farmsModule=new Xv(this),this._liquidityStrategy=new Gv(this),ba(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,_p.isValidSuiAddress)(t))throw Error("this clmm config sdk senderAddess is illegal");return t}updateCache(t,e,n=J){let i=this._cache[t];i?(i.overdueTime=ye(n),i.value=e):i=new qe(e,ye(n)),this._cache[t]=i}getCache(t,e=!1){let n=this._cache[t];if(!e&&n?.isValid())return n.value;delete this._cache[t]}};var V_=require("@msafe/sui3-utils"),c0=require("@mysten/sui.js/client"),gi=be(require("axios"),1),br=require("@mysten/sui.js/utils"),As=require("@mysten/sui.js/transactions"),Pd=require("@mysten/sui.js/transactions"),Es=require("@mysten/sui.js/utils"),Ed=require("buffer"),f0=require("@mysten/sui.js/utils"),zd=require("@mysten/sui.js/bcs"),Ds=require("@mysten/sui.js/utils");var kp=(t=21)=>crypto.getRandomValues(new Uint8Array(t)).reduce((e,n)=>(n&=63,n<36?e+=n.toString(36):n<62?e+=(n-26).toString(36).toUpperCase():n>62?e+="-":e+="_",e),"");var jd=require("@mysten/sui.js/transactions"),xs=require("@mysten/sui.js/transactions"),Ms=require("@mysten/sui.js/utils");var si=class extends Error{},Ia=class extends si{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},Oa=class extends si{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},Pa=class extends si{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},Mn=class extends si{},Vr=class extends si{constructor(e){super(`Invalid unit ${e}`)}},St=class extends si{},jn=class extends si{constructor(){super("Zone is an abstract class")}};var Q="numeric",Bn="short",ln="long",Ai={year:Q,month:Q,day:Q},Bo={year:Q,month:Bn,day:Q},Yu={year:Q,month:Bn,day:Q,weekday:Bn},No={year:Q,month:ln,day:Q},Fo={year:Q,month:ln,day:Q,weekday:ln},Ro={hour:Q,minute:Q},qo={hour:Q,minute:Q,second:Q},Lo={hour:Q,minute:Q,second:Q,timeZoneName:Bn},Uo={hour:Q,minute:Q,second:Q,timeZoneName:ln},$o={hour:Q,minute:Q,hourCycle:"h23"},Ko={hour:Q,minute:Q,second:Q,hourCycle:"h23"},zo={hour:Q,minute:Q,second:Q,hourCycle:"h23",timeZoneName:Bn},Vo={hour:Q,minute:Q,second:Q,hourCycle:"h23",timeZoneName:ln},Go={year:Q,month:Q,day:Q,hour:Q,minute:Q},Wo={year:Q,month:Q,day:Q,hour:Q,minute:Q,second:Q},Ho={year:Q,month:Bn,day:Q,hour:Q,minute:Q},Xo={year:Q,month:Bn,day:Q,hour:Q,minute:Q,second:Q},Qu={year:Q,month:Bn,day:Q,weekday:Bn,hour:Q,minute:Q},Zo={year:Q,month:ln,day:Q,hour:Q,minute:Q,timeZoneName:Bn},Jo={year:Q,month:ln,day:Q,hour:Q,minute:Q,second:Q,timeZoneName:Bn},Yo={year:Q,month:ln,day:Q,weekday:ln,hour:Q,minute:Q,timeZoneName:ln},Qo={year:Q,month:ln,day:Q,weekday:ln,hour:Q,minute:Q,second:Q,timeZoneName:ln};var en=class{get type(){throw new jn}get name(){throw new jn}get ianaName(){return this.name}get isUniversal(){throw new jn}offsetName(e,n){throw new jn}formatOffset(e,n){throw new jn}offset(e){throw new jn}equals(e){throw new jn}get isValid(){throw new jn}};var el=null,xi=class t extends en{static get instance(){return el===null&&(el=new t),el}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:i}){return Da(e,n,i)}formatOffset(e,n){return Ii(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}};var ja={};function Zv(t){return ja[t]||(ja[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"})),ja[t]}var Jv={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Yv(t,e){let n=t.format(e).replace(/\u200E/g,""),i=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n),[,r,o,s,a,u,l,m]=i;return[s,r,o,a,u,l,m]}function Qv(t,e){let n=t.formatToParts(e),i=[];for(let r=0;r<n.length;r++){let{type:o,value:s}=n[r],a=Jv[o];o==="era"?i[a]=s:fe(a)||(i[a]=parseInt(s,10))}return i}var Ma={},Vt=class t extends en{static create(e){return Ma[e]||(Ma[e]=new t(e)),Ma[e]}static resetCache(){Ma={},ja={}}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:n,locale:i}){return Da(e,n,i,this.name)}formatOffset(e,n){return Ii(this.offset(e),n)}offset(e){let n=new Date(e);if(isNaN(n))return NaN;let i=Zv(this.name),[r,o,s,a,u,l,m]=i.formatToParts?Qv(i,n):Yv(i,n);a==="BC"&&(r=-Math.abs(r)+1);let v=Gr({year:r,month:o,day:s,hour:u===24?0:u,minute:l,second:m,millisecond:0}),T=+n,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 Cp={};function ek(t,e={}){let n=JSON.stringify([t,e]),i=Cp[n];return i||(i=new Intl.ListFormat(t,e),Cp[n]=i),i}var tl={};function nl(t,e={}){let n=JSON.stringify([t,e]),i=tl[n];return i||(i=new Intl.DateTimeFormat(t,e),tl[n]=i),i}var il={};function tk(t,e={}){let n=JSON.stringify([t,e]),i=il[n];return i||(i=new Intl.NumberFormat(t,e),il[n]=i),i}var rl={};function nk(t,e={}){let{base:n,...i}=e,r=JSON.stringify([t,i]),o=rl[r];return o||(o=new Intl.RelativeTimeFormat(t,e),rl[r]=o),o}var es=null;function ik(){return es||(es=new Intl.DateTimeFormat().resolvedOptions().locale,es)}var Tp={};function rk(t){let e=Tp[t];if(!e){let n=new Intl.Locale(t);e="getWeekInfo"in n?n.getWeekInfo():n.weekInfo,Tp[t]=e}return e}function ok(t){let e=t.indexOf("-x-");e!==-1&&(t=t.substring(0,e));let n=t.indexOf("-u-");if(n===-1)return[t];{let i,r;try{i=nl(t).resolvedOptions(),r=t}catch{let u=t.substring(0,n);i=nl(u).resolvedOptions(),r=u}let{numberingSystem:o,calendar:s}=i;return[r,o,s]}}function sk(t,e,n){return(n||e)&&(t.includes("-u-")||(t+="-u"),n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function ak(t){let e=[];for(let n=1;n<=12;n++){let i=Te.utc(2009,n,1);e.push(t(i))}return e}function ck(t){let e=[];for(let n=1;n<=7;n++){let i=Te.utc(2016,11,13+n);e.push(t(i))}return e}function Ba(t,e,n,i){let r=t.listingMode();return r==="error"?null:r==="en"?n(e):i(e)}function uk(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 ol=class{constructor(e,n,i){this.padTo=i.padTo||0,this.floor=i.floor||!1;let{padTo:r,floor:o,...s}=i;if(!n||Object.keys(s).length>0){let a={useGrouping:!1,...i};i.padTo>0&&(a.minimumIntegerDigits=i.padTo),this.inf=tk(e,a)}}format(e){if(this.inf){let n=this.floor?Math.floor(e):e;return this.inf.format(n)}else{let n=this.floor?Math.floor(e):Wr(e,3);return ze(n,this.padTo)}}},sl=class{constructor(e,n,i){this.opts=i,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&&Vt.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=nl(n,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(n=>{if(n.type==="timeZoneName"){let i=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...n,value:i}}else return n}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},al=class{constructor(e,n,i){this.opts={style:"long",...i},!n&&Na()&&(this.rtf=nk(e,i))}format(e,n){return this.rtf?this.rtf.format(e,n):Sp(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}},lk={firstDay:1,minimalDays:4,weekend:[6,7]},Ee=class t{static fromOpts(e){return t.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,n,i,r,o=!1){let s=e||Ie.defaultLocale,a=s||(o?"en-US":ik()),u=n||Ie.defaultNumberingSystem,l=i||Ie.defaultOutputCalendar,m=ts(r)||Ie.defaultWeekSettings;return new t(a,u,l,m,s)}static resetCache(){es=null,tl={},il={},rl={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:i,weekSettings:r}={}){return t.create(e,n,i,r)}constructor(e,n,i,r,o){let[s,a,u]=ok(e);this.locale=s,this.numberingSystem=n||a||null,this.outputCalendar=i||u||null,this.weekSettings=r,this.intl=sk(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=uk(this)),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"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,ts(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,n=!1){return Ba(this,e,cl,()=>{let i=n?{month:e,day:"numeric"}:{month:e},r=n?"format":"standalone";return this.monthsCache[r][e]||(this.monthsCache[r][e]=ak(o=>this.extract(o,i,"month"))),this.monthsCache[r][e]})}weekdays(e,n=!1){return Ba(this,e,ul,()=>{let i=n?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},r=n?"format":"standalone";return this.weekdaysCache[r][e]||(this.weekdaysCache[r][e]=ck(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[r][e]})}meridiems(){return Ba(this,void 0,()=>ll,()=>{if(!this.meridiemCache){let e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[Te.utc(2016,11,13,9),Te.utc(2016,11,13,19)].map(n=>this.extract(n,e,"dayperiod"))}return this.meridiemCache})}eras(e){return Ba(this,e,dl,()=>{let n={era:e};return this.eraCache[e]||(this.eraCache[e]=[Te.utc(-40,1,1),Te.utc(2017,1,1)].map(i=>this.extract(i,n,"era"))),this.eraCache[e]})}extract(e,n,i){let r=this.dtFormatter(e,n),o=r.formatToParts(),s=o.find(a=>a.type.toLowerCase()===i);return s?s.value:null}numberFormatter(e={}){return new ol(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new sl(e,this.intl,n)}relFormatter(e={}){return new al(this.intl,this.isEnglish(),e)}listFormatter(e={}){return ek(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:Fa()?rk(this.locale):lk}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 hl=null,Pt=class t extends en{static get utcInstance(){return hl===null&&(hl=new t(0)),hl}static instance(e){return e===0?t.utcInstance:new t(e)}static parseSpecifier(e){if(e){let n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new t(or(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${Ii(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${Ii(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return Ii(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}};var Hr=class extends en{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 Nn(t,e){let n;if(fe(t)||t===null)return e;if(t instanceof en)return t;if(Ap(t)){let i=t.toLowerCase();return i==="default"?e:i==="local"||i==="system"?xi.instance:i==="utc"||i==="gmt"?Pt.utcInstance:Pt.parseSpecifier(i)||Vt.create(t)}else return Gn(t)?Pt.instance(t):typeof t=="object"&&"offset"in t&&typeof t.offset=="function"?t:new Hr(t)}var xp=()=>Date.now(),Ip="system",Op=null,Pp=null,Ep=null,Dp=60,Mp,jp=null,Ie=class{static get now(){return xp}static set now(e){xp=e}static set defaultZone(e){Ip=e}static get defaultZone(){return Nn(Ip,xi.instance)}static get defaultLocale(){return Op}static set defaultLocale(e){Op=e}static get defaultNumberingSystem(){return Pp}static set defaultNumberingSystem(e){Pp=e}static get defaultOutputCalendar(){return Ep}static set defaultOutputCalendar(e){Ep=e}static get defaultWeekSettings(){return jp}static set defaultWeekSettings(e){jp=ts(e)}static get twoDigitCutoffYear(){return Dp}static set twoDigitCutoffYear(e){Dp=e%100}static get throwOnInvalid(){return Mp}static set throwOnInvalid(e){Mp=e}static resetCaches(){Ee.resetCache(),Vt.resetCache()}};var Et=class{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}};var Bp=[0,31,59,90,120,151,181,212,243,273,304,334],Np=[0,31,60,91,121,152,182,213,244,274,305,335];function wn(t,e){return new Et("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function Ra(t,e,n){let i=new Date(Date.UTC(t,e-1,n));t<100&&t>=0&&i.setUTCFullYear(i.getUTCFullYear()-1900);let r=i.getUTCDay();return r===0?7:r}function Fp(t,e,n){return n+(ar(t)?Np:Bp)[e-1]}function Rp(t,e){let n=ar(t)?Np:Bp,i=n.findIndex(o=>o<e),r=e-n[i];return{month:i+1,day:r}}function qa(t,e){return(t-e+7)%7+1}function ns(t,e=4,n=1){let{year:i,month:r,day:o}=t,s=Fp(i,r,o),a=qa(Ra(i,r,o),n),u=Math.floor((s-a+14-e)/7),l;return u<1?(l=i-1,u=sr(l,e,n)):u>sr(i,e,n)?(l=i+1,u=1):l=i,{weekYear:l,weekNumber:u,weekday:a,...rs(t)}}function pl(t,e=4,n=1){let{weekYear:i,weekNumber:r,weekday:o}=t,s=qa(Ra(i,1,e),n),a=Oi(i),u=r*7+o-s-7+e,l;u<1?(l=i-1,u+=Oi(l)):u>a?(l=i+1,u-=Oi(i)):l=i;let{month:m,day:b}=Rp(l,u);return{year:l,month:m,day:b,...rs(t)}}function La(t){let{year:e,month:n,day:i}=t,r=Fp(e,n,i);return{year:e,ordinal:r,...rs(t)}}function ml(t){let{year:e,ordinal:n}=t,{month:i,day:r}=Rp(e,n);return{year:e,month:i,day:r,...rs(t)}}function gl(t,e){if(!fe(t.localWeekday)||!fe(t.localWeekNumber)||!fe(t.localWeekYear)){if(!fe(t.weekday)||!fe(t.weekNumber)||!fe(t.weekYear))throw new Mn("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 qp(t,e=4,n=1){let i=is(t.weekYear),r=dn(t.weekNumber,1,sr(t.weekYear,e,n)),o=dn(t.weekday,1,7);return i?r?o?!1:wn("weekday",t.weekday):wn("week",t.weekNumber):wn("weekYear",t.weekYear)}function Lp(t){let e=is(t.year),n=dn(t.ordinal,1,Oi(t.year));return e?n?!1:wn("ordinal",t.ordinal):wn("year",t.year)}function _l(t){let e=is(t.year),n=dn(t.month,1,12),i=dn(t.day,1,Xr(t.year,t.month));return e?n?i?!1:wn("day",t.day):wn("month",t.month):wn("year",t.year)}function yl(t){let{hour:e,minute:n,second:i,millisecond:r}=t,o=dn(e,0,23)||e===24&&n===0&&i===0&&r===0,s=dn(n,0,59),a=dn(i,0,59),u=dn(r,0,999);return o?s?a?u?!1:wn("millisecond",r):wn("second",i):wn("minute",n):wn("hour",e)}function fe(t){return typeof t>"u"}function Gn(t){return typeof t=="number"}function is(t){return typeof t=="number"&&t%1===0}function Ap(t){return typeof t=="string"}function $p(t){return Object.prototype.toString.call(t)==="[object Date]"}function Na(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function Fa(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function Kp(t){return Array.isArray(t)?t:[t]}function wl(t,e,n){if(t.length!==0)return t.reduce((i,r)=>{let o=[e(r),r];return i&&n(i[0],o[0])===i[0]?i:o},null)[1]}function zp(t,e){return e.reduce((n,i)=>(n[i]=t[i],n),{})}function Pi(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function ts(t){if(t==null)return null;if(typeof t!="object")throw new St("Week settings must be an object");if(!dn(t.firstDay,1,7)||!dn(t.minimalDays,1,7)||!Array.isArray(t.weekend)||t.weekend.some(e=>!dn(e,1,7)))throw new St("Invalid week settings");return{firstDay:t.firstDay,minimalDays:t.minimalDays,weekend:Array.from(t.weekend)}}function dn(t,e,n){return is(t)&&t>=e&&t<=n}function dk(t,e){return t-e*Math.floor(t/e)}function ze(t,e=2){let n=t<0,i;return n?i="-"+(""+-t).padStart(e,"0"):i=(""+t).padStart(e,"0"),i}function ai(t){if(!(fe(t)||t===null||t===""))return parseInt(t,10)}function Ei(t){if(!(fe(t)||t===null||t===""))return parseFloat(t)}function os(t){if(!(fe(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function Wr(t,e,n=!1){let i=10**e;return(n?Math.trunc:Math.round)(t*i)/i}function ar(t){return t%4===0&&(t%100!==0||t%400===0)}function Oi(t){return ar(t)?366:365}function Xr(t,e){let n=dk(e-1,12)+1,i=t+(e-n)/12;return n===2?ar(i)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function Gr(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 Up(t,e,n){return-qa(Ra(t,1,e),n)+e-1}function sr(t,e=4,n=1){let i=Up(t,e,n),r=Up(t+1,e,n);return(Oi(t)-i+r)/7}function ss(t){return t>99?t:t>Ie.twoDigitCutoffYear?1900+t:2e3+t}function Da(t,e,n,i=null){let r=new Date(t),o={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};i&&(o.timeZone=i);let s={timeZoneName:e,...o},a=new Intl.DateTimeFormat(n,s).formatToParts(r).find(u=>u.type.toLowerCase()==="timezonename");return a?a.value:null}function or(t,e){let n=parseInt(t,10);Number.isNaN(n)&&(n=0);let i=parseInt(e,10)||0,r=n<0||Object.is(n,-0)?-i:i;return n*60+r}function bl(t){let e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new St(`Invalid unit value ${t}`);return e}function Zr(t,e){let n={};for(let i in t)if(Pi(t,i)){let r=t[i];if(r==null)continue;n[e(i)]=bl(r)}return n}function Ii(t,e){let n=Math.trunc(Math.abs(t/60)),i=Math.trunc(Math.abs(t%60)),r=t>=0?"+":"-";switch(e){case"short":return`${r}${ze(n,2)}:${ze(i,2)}`;case"narrow":return`${r}${n}${i>0?`:${i}`:""}`;case"techie":return`${r}${ze(n,2)}${ze(i,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function rs(t){return zp(t,["hour","minute","second","millisecond"])}var fk=["January","February","March","April","May","June","July","August","September","October","November","December"],vl=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],hk=["J","F","M","A","M","J","J","A","S","O","N","D"];function cl(t){switch(t){case"narrow":return[...hk];case"short":return[...vl];case"long":return[...fk];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"],Cl=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],pk=["M","T","W","T","F","S","S"];function ul(t){switch(t){case"narrow":return[...pk];case"short":return[...Cl];case"long":return[...kl];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var ll=["AM","PM"],mk=["Before Christ","Anno Domini"],gk=["BC","AD"],_k=["B","A"];function dl(t){switch(t){case"narrow":return[..._k];case"short":return[...gk];case"long":return[...mk];default:return null}}function Vp(t){return ll[t.hour<12?0:1]}function Gp(t,e){return ul(e)[t.weekday-1]}function Wp(t,e){return cl(e)[t.month-1]}function Hp(t,e){return dl(e)[t.year<0?0:1]}function Sp(t,e,n="always",i=!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(n==="auto"&&o){let b=t==="days";switch(e){case 1:return b?"tomorrow":`next ${r[t][0]}`;case-1:return b?"yesterday":`last ${r[t][0]}`;case 0:return b?"today":`this ${r[t][0]}`;default:}}let s=Object.is(e,-0)||e<0,a=Math.abs(e),u=a===1,l=r[t],m=i?u?l[1]:l[2]||l[1]:u?r[t][0]:t;return s?`${a} ${m} ago`:`in ${a} ${m}`}function Xp(t,e){let n="";for(let i of t)i.literal?n+=i.val:n+=e(i.val);return n}var yk={D:Ai,DD:Bo,DDD:No,DDDD:Fo,t:Ro,tt:qo,ttt:Lo,tttt:Uo,T:$o,TT:Ko,TTT:zo,TTTT:Vo,f:Go,ff:Ho,fff:Zo,ffff:Yo,F:Wo,FF:Xo,FFF:Jo,FFFF:Qo},Dt=class t{static create(e,n={}){return new t(e,n)}static parseFormat(e){let n=null,i="",r=!1,o=[];for(let s=0;s<e.length;s++){let a=e.charAt(s);a==="'"?(i.length>0&&o.push({literal:r||/^\s+$/.test(i),val:i}),n=null,i="",r=!r):r||a===n?i+=a:(i.length>0&&o.push({literal:/^\s+$/.test(i),val:i}),i=a,n=a)}return i.length>0&&o.push({literal:r||/^\s+$/.test(i),val:i}),o}static macroTokenToFormatOpts(e){return yk[e]}constructor(e,n){this.opts=n,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,n){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...n}).format()}dtFormatter(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n})}formatDateTime(e,n){return this.dtFormatter(e,n).format()}formatDateTimeParts(e,n){return this.dtFormatter(e,n).formatToParts()}formatInterval(e,n){return this.dtFormatter(e.start,n).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,n){return this.dtFormatter(e,n).resolvedOptions()}num(e,n=0){if(this.opts.forceSimple)return ze(e,n);let i={...this.opts};return n>0&&(i.padTo=n),this.loc.numberFormatter(i).format(e)}formatDateTimeFromString(e,n){let i=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=()=>i?Vp(e):o({hour:"numeric",hourCycle:"h12"},"dayperiod"),u=(T,O)=>i?Wp(e,T):o(O?{month:T}:{month:T,day:"numeric"},"month"),l=(T,O)=>i?Gp(e,T):o(O?{weekday:T}:{weekday:T,month:"long",day:"numeric"},"weekday"),m=T=>{let O=t.macroTokenToFormatOpts(T);return O?this.formatWithSystemDefault(e,O):T},b=T=>i?Hp(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 l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("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 u("short",!0);case"LLLL":return u("long",!0);case"LLLLL":return u("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 u("short",!1);case"MMMM":return u("long",!1);case"MMMMM":return u("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 b("short");case"GG":return b("long");case"GGGGG":return b("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 m(T)}};return Xp(t.parseFormat(n),v)}formatDurationFromString(e,n){let i=u=>{switch(u[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=u=>l=>{let m=i(l);return m?this.num(u.get(m),l.length):l},o=t.parseFormat(n),s=o.reduce((u,{literal:l,val:m})=>l?u:u.concat(m),[]),a=e.shiftTo(...s.map(i).filter(u=>u));return Xp(o,r(a))}};var Jp=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function Yr(...t){let e=t.reduce((n,i)=>n+i.source,"");return RegExp(`^${e}$`)}function Qr(...t){return e=>t.reduce(([n,i,r],o)=>{let[s,a,u]=o(e,r);return[{...n,...s},a||i,u]},[{},null,1]).slice(0,2)}function eo(t,...e){if(t==null)return[null,null];for(let[n,i]of e){let r=n.exec(t);if(r)return i(r)}return[null,null]}function Yp(...t){return(e,n)=>{let i={},r;for(r=0;r<t.length;r++)i[t[r]]=ai(e[n+r]);return[i,null,n+r]}}var Qp=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,wk=`(?:${Qp.source}?(?:\\[(${Jp.source})\\])?)?`,Tl=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,em=RegExp(`${Tl.source}${wk}`),Sl=RegExp(`(?:T${em.source})?`),bk=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,vk=/(\d{4})-?W(\d\d)(?:-?(\d))?/,kk=/(\d{4})-?(\d{3})/,Ck=Yp("weekYear","weekNumber","weekDay"),Tk=Yp("year","ordinal"),Sk=/(\d{4})-(\d\d)-(\d\d)/,tm=RegExp(`${Tl.source} ?(?:${Qp.source}|(${Jp.source}))?`),Ak=RegExp(`(?: ${tm.source})?`);function Jr(t,e,n){let i=t[e];return fe(i)?n:ai(i)}function xk(t,e){return[{year:Jr(t,e),month:Jr(t,e+1,1),day:Jr(t,e+2,1)},null,e+3]}function to(t,e){return[{hours:Jr(t,e,0),minutes:Jr(t,e+1,0),seconds:Jr(t,e+2,0),milliseconds:os(t[e+3])},null,e+4]}function as(t,e){let n=!t[e]&&!t[e+1],i=or(t[e+1],t[e+2]),r=n?null:Pt.instance(i);return[{},r,e+3]}function cs(t,e){let n=t[e]?Vt.create(t[e]):null;return[{},n,e+1]}var Ik=RegExp(`^T?${Tl.source}$`),Ok=/^-?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 Pk(t){let[e,n,i,r,o,s,a,u,l]=t,m=e[0]==="-",b=u&&u[0]==="-",v=(T,O=!1)=>T!==void 0&&(O||T&&m)?-T:T;return[{years:v(Ei(n)),months:v(Ei(i)),weeks:v(Ei(r)),days:v(Ei(o)),hours:v(Ei(s)),minutes:v(Ei(a)),seconds:v(Ei(u),u==="-0"),milliseconds:v(os(l),b)}]}var Ek={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 Al(t,e,n,i,r,o,s){let a={year:e.length===2?ss(ai(e)):ai(e),month:vl.indexOf(n)+1,day:ai(i),hour:ai(r),minute:ai(o)};return s&&(a.second=ai(s)),t&&(a.weekday=t.length>3?kl.indexOf(t)+1:Cl.indexOf(t)+1),a}var Dk=/^(?:(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 Mk(t){let[,e,n,i,r,o,s,a,u,l,m,b]=t,v=Al(e,r,i,n,o,s,a),T;return u?T=Ek[u]:l?T=0:T=or(m,b),[v,new Pt(T)]}function jk(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var Bk=/^(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$/,Nk=/^(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$/,Fk=/^(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 Zp(t){let[,e,n,i,r,o,s,a]=t;return[Al(e,r,i,n,o,s,a),Pt.utcInstance]}function Rk(t){let[,e,n,i,r,o,s,a]=t;return[Al(e,a,n,i,r,o,s),Pt.utcInstance]}var qk=Yr(bk,Sl),Lk=Yr(vk,Sl),Uk=Yr(kk,Sl),$k=Yr(em),nm=Qr(xk,to,as,cs),Kk=Qr(Ck,to,as,cs),zk=Qr(Tk,to,as,cs),Vk=Qr(to,as,cs);function im(t){return eo(t,[qk,nm],[Lk,Kk],[Uk,zk],[$k,Vk])}function rm(t){return eo(jk(t),[Dk,Mk])}function om(t){return eo(t,[Bk,Zp],[Nk,Zp],[Fk,Rk])}function sm(t){return eo(t,[Ok,Pk])}var Gk=Qr(to);function am(t){return eo(t,[Ik,Gk])}var Wk=Yr(Sk,Ak),Hk=Yr(tm),Xk=Qr(to,as,cs);function cm(t){return eo(t,[Wk,nm],[Hk,Xk])}var um="Invalid Duration",dm={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}},Zk={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},...dm},bn=146097/400,no=146097/4800,Jk={years:{quarters:4,months:12,weeks:bn/7,days:bn,hours:bn*24,minutes:bn*24*60,seconds:bn*24*60*60,milliseconds:bn*24*60*60*1e3},quarters:{months:3,weeks:bn/28,days:bn/4,hours:bn*24/4,minutes:bn*24*60/4,seconds:bn*24*60*60/4,milliseconds:bn*24*60*60*1e3/4},months:{weeks:no/7,days:no,hours:no*24,minutes:no*24*60,seconds:no*24*60*60,milliseconds:no*24*60*60*1e3},...dm},cr=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Yk=cr.slice(0).reverse();function Di(t,e,n=!1){let i={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy,matrix:e.matrix||t.matrix};return new Be(i)}function fm(t,e){let n=e.milliseconds??0;for(let i of Yk.slice(1))e[i]&&(n+=e[i]*t[i].milliseconds);return n}function lm(t,e){let n=fm(t,e)<0?-1:1;cr.reduceRight((i,r)=>{if(fe(e[r]))return i;if(i){let o=e[i]*n,s=t[r][i],a=Math.floor(o/s);e[r]+=a*n,e[i]-=a*s*n}return r},null),cr.reduce((i,r)=>{if(fe(e[r]))return i;if(i){let o=e[i]%1;e[i]-=o,e[r]+=o*t[i][r]}return r},null)}function Qk(t){let e={};for(let[n,i]of Object.entries(t))i!==0&&(e[n]=i);return e}var Be=class t{constructor(e){let n=e.conversionAccuracy==="longterm"||!1,i=n?Jk:Zk;e.matrix&&(i=e.matrix),this.values=e.values,this.loc=e.loc||Ee.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=i,this.isLuxonDuration=!0}static fromMillis(e,n){return t.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new St(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new t({values:Zr(e,t.normalizeUnit),loc:Ee.fromObject(n),conversionAccuracy:n.conversionAccuracy,matrix:n.matrix})}static fromDurationLike(e){if(Gn(e))return t.fromMillis(e);if(t.isDuration(e))return e;if(typeof e=="object")return t.fromObject(e);throw new St(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){let[i]=sm(e);return i?t.fromObject(i,n):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){let[i]=am(e);return i?t.fromObject(i,n):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new St("need to specify a reason the Duration is invalid");let i=e instanceof Et?e:new Et(e,n);if(Ie.throwOnInvalid)throw new Pa(i);return new t({invalid:i})}static normalizeUnit(e){let n={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(!n)throw new Vr(e);return n}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,n={}){let i={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?Dt.create(this.loc,i).formatDurationFromString(this,e):um}toHuman(e={}){if(!this.isValid)return um;let n=cr.map(i=>{let r=this.values[i];return fe(r)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:i.slice(0,-1)}).format(r)}).filter(i=>i);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}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+=Wr(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;let n=this.toMillis();return n<0||n>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1},Te.fromMillis(n,{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?fm(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;let n=t.fromDurationLike(e),i={};for(let r of cr)(Pi(n.values,r)||Pi(this.values,r))&&(i[r]=n.get(r)+this.get(r));return Di(this,{values:i},!0)}minus(e){if(!this.isValid)return this;let n=t.fromDurationLike(e);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;let n={};for(let i of Object.keys(this.values))n[i]=bl(e(this.values[i],i));return Di(this,{values:n},!0)}get(e){return this[t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let n={...this.values,...Zr(e,t.normalizeUnit)};return Di(this,{values:n})}reconfigure({locale:e,numberingSystem:n,conversionAccuracy:i,matrix:r}={}){let s={loc:this.loc.clone({locale:e,numberingSystem:n}),matrix:r,conversionAccuracy:i};return Di(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return lm(this.matrix,e),Di(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=Qk(this.normalize().shiftToAll().toObject());return Di(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 n={},i={},r=this.toObject(),o;for(let s of cr)if(e.indexOf(s)>=0){o=s;let a=0;for(let l in i)a+=this.matrix[l][s]*i[l],i[l]=0;Gn(r[s])&&(a+=r[s]);let u=Math.trunc(a);n[s]=u,i[s]=(a*1e3-u*1e3)/1e3}else Gn(r[s])&&(i[s]=r[s]);for(let s in i)i[s]!==0&&(n[o]+=s===o?i[s]:i[s]/this.matrix[o][s]);return lm(this.matrix,n),Di(this,{values:n},!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 n of Object.keys(this.values))e[n]=this.values[n]===0?0:-this.values[n];return Di(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 n(i,r){return i===void 0||i===0?r===void 0||r===0:i===r}for(let i of cr)if(!n(this.values[i],e.values[i]))return!1;return!0}};var io="Invalid Interval";function e1(t,e){return!t||!t.isValid?ci.invalid("missing or invalid start"):!e||!e.isValid?ci.invalid("missing or invalid end"):e<t?ci.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 ci=class t{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new St("need to specify a reason the Interval is invalid");let i=e instanceof Et?e:new Et(e,n);if(Ie.throwOnInvalid)throw new Oa(i);return new t({invalid:i})}static fromDateTimes(e,n){let i=ro(e),r=ro(n),o=e1(i,r);return o??new t({start:i,end:r})}static after(e,n){let i=Be.fromDurationLike(n),r=ro(e);return t.fromDateTimes(r,r.plus(i))}static before(e,n){let i=Be.fromDurationLike(n),r=ro(e);return t.fromDateTimes(r.minus(i),r)}static fromISO(e,n){let[i,r]=(e||"").split("/",2);if(i&&r){let o,s;try{o=Te.fromISO(i,n),s=o.isValid}catch{s=!1}let a,u;try{a=Te.fromISO(r,n),u=a.isValid}catch{u=!1}if(s&&u)return t.fromDateTimes(o,a);if(s){let l=Be.fromISO(r,n);if(l.isValid)return t.after(o,l)}else if(u){let l=Be.fromISO(i,n);if(l.isValid)return t.before(a,l)}}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",n){if(!this.isValid)return NaN;let i=this.start.startOf(e,n),r;return n?.useLocaleWeeks?r=this.end.reconfigure({locale:i.locale}):r=this.end,r=r.startOf(e,n),Math.floor(r.diff(i,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:n}={}){return this.isValid?t.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];let n=e.map(ro).filter(s=>this.contains(s)).sort((s,a)=>s.toMillis()-a.toMillis()),i=[],{s:r}=this,o=0;for(;r<this.e;){let s=n[o]||this.e,a=+s>+this.e?this.e:s;i.push(t.fromDateTimes(r,a)),r=a,o+=1}return i}splitBy(e){let n=Be.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:i}=this,r=1,o,s=[];for(;i<this.e;){let a=this.start.plus(n.mapUnits(u=>u*r));o=+a>+this.e?this.e:a,s.push(t.fromDateTimes(i,o)),i=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 n=this.s>e.s?this.s:e.s,i=this.e<e.e?this.e:e.e;return n>=i?null:t.fromDateTimes(n,i)}union(e){if(!this.isValid)return this;let n=this.s<e.s?this.s:e.s,i=this.e>e.e?this.e:e.e;return t.fromDateTimes(n,i)}static merge(e){let[n,i]=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 i&&n.push(i),n}static xor(e){let n=null,i=0,r=[],o=e.map(u=>[{time:u.s,type:"s"},{time:u.e,type:"e"}]),s=Array.prototype.concat(...o),a=s.sort((u,l)=>u.time-l.time);for(let u of a)i+=u.type==="s"?1:-1,i===1?n=u.time:(n&&+n!=+u.time&&r.push(t.fromDateTimes(n,u.time)),n=null);return t.merge(r)}difference(...e){return t.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \u2013 ${this.e.toISO()})`:io}[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=Ai,n={}){return this.isValid?Dt.create(this.s.loc.clone(n),e).formatInterval(this):io}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:io}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:io}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:io}toFormat(e,{separator:n=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:io}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):Be.invalid(this.invalidReason)}mapEndpoints(e){return t.fromDateTimes(e(this.s),e(this.e))}};var ui=class{static hasDST(e=Ie.defaultZone){let n=Te.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Vt.isValidZone(e)}static normalizeZone(e){return Nn(e,Ie.defaultZone)}static getStartOfWeek({locale:e=null,locObj:n=null}={}){return(n||Ee.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:n=null}={}){return(n||Ee.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:n=null}={}){return(n||Ee.create(e)).getWeekendDays().slice()}static months(e="long",{locale:n=null,numberingSystem:i=null,locObj:r=null,outputCalendar:o="gregory"}={}){return(r||Ee.create(n,i,o)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:i=null,locObj:r=null,outputCalendar:o="gregory"}={}){return(r||Ee.create(n,i,o)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:i=null,locObj:r=null}={}){return(r||Ee.create(n,i,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:i=null,locObj:r=null}={}){return(r||Ee.create(n,i,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return Ee.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return Ee.create(n,null,"gregory").eras(e)}static features(){return{relative:Na(),localeWeek:Fa()}}};function hm(t,e){let n=r=>r.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),i=n(e)-n(t);return Math.floor(Be.fromMillis(i).as("days"))}function t1(t,e,n){let i=[["years",(u,l)=>l.year-u.year],["quarters",(u,l)=>l.quarter-u.quarter+(l.year-u.year)*4],["months",(u,l)=>l.month-u.month+(l.year-u.year)*12],["weeks",(u,l)=>{let m=hm(u,l);return(m-m%7)/7}],["days",hm]],r={},o=t,s,a;for(let[u,l]of i)n.indexOf(u)>=0&&(s=u,r[u]=l(t,e),a=o.plus(r),a>e?(r[u]--,t=o.plus(r),t>e&&(a=t,r[u]--,t=o.plus(r))):t=a);return[t,r,a,s]}function pm(t,e,n,i){let[r,o,s,a]=t1(t,e,n),u=e-r,l=n.filter(b=>["hours","minutes","seconds","milliseconds"].indexOf(b)>=0);l.length===0&&(s<e&&(s=r.plus({[a]:1})),s!==r&&(o[a]=(o[a]||0)+u/(s-r)));let m=Be.fromObject(o,i);return l.length>0?Be.fromMillis(u,i).shiftTo(...l).plus(m):m}var xl={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"},mm={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]},n1=xl.hanidec.replace(/[\[|\]]/g,"").split("");function gm(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let n=0;n<t.length;n++){let i=t.charCodeAt(n);if(t[n].search(xl.hanidec)!==-1)e+=n1.indexOf(t[n]);else for(let r in mm){let[o,s]=mm[r];i>=o&&i<=s&&(e+=i-o)}}return parseInt(e,10)}else return e}function vn({numberingSystem:t},e=""){return new RegExp(`${xl[t||"latn"]}${e}`)}var i1="missing Intl.DateTimeFormat.formatToParts support";function Oe(t,e=n=>n){return{regex:t,deser:([n])=>e(gm(n))}}var r1="\xA0",wm=`[ ${r1}]`,bm=new RegExp(wm,"g");function o1(t){return t.replace(/\./g,"\\.?").replace(bm,wm)}function _m(t){return t.replace(/\./g,"").replace(bm," ").toLowerCase()}function Fn(t,e){return t===null?null:{regex:RegExp(t.map(o1).join("|")),deser:([n])=>t.findIndex(i=>_m(n)===_m(i))+e}}function ym(t,e){return{regex:t,deser:([,n,i])=>or(n,i),groups:e}}function Ua(t){return{regex:t,deser:([e])=>e}}function s1(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function a1(t,e){let n=vn(e),i=vn(e,"{2}"),r=vn(e,"{3}"),o=vn(e,"{4}"),s=vn(e,"{6}"),a=vn(e,"{1,2}"),u=vn(e,"{1,3}"),l=vn(e,"{1,6}"),m=vn(e,"{1,9}"),b=vn(e,"{2,4}"),v=vn(e,"{4,6}"),T=M=>({regex:RegExp(s1(M.val)),deser:([B])=>B,literal:!0}),P=(M=>{if(t.literal)return T(M);switch(M.val){case"G":return Fn(e.eras("short"),0);case"GG":return Fn(e.eras("long"),0);case"y":return Oe(l);case"yy":return Oe(b,ss);case"yyyy":return Oe(o);case"yyyyy":return Oe(v);case"yyyyyy":return Oe(s);case"M":return Oe(a);case"MM":return Oe(i);case"MMM":return Fn(e.months("short",!0),1);case"MMMM":return Fn(e.months("long",!0),1);case"L":return Oe(a);case"LL":return Oe(i);case"LLL":return Fn(e.months("short",!1),1);case"LLLL":return Fn(e.months("long",!1),1);case"d":return Oe(a);case"dd":return Oe(i);case"o":return Oe(u);case"ooo":return Oe(r);case"HH":return Oe(i);case"H":return Oe(a);case"hh":return Oe(i);case"h":return Oe(a);case"mm":return Oe(i);case"m":return Oe(a);case"q":return Oe(a);case"qq":return Oe(i);case"s":return Oe(a);case"ss":return Oe(i);case"S":return Oe(u);case"SSS":return Oe(r);case"u":return Ua(m);case"uu":return Ua(a);case"uuu":return Oe(n);case"a":return Fn(e.meridiems(),0);case"kkkk":return Oe(o);case"kk":return Oe(b,ss);case"W":return Oe(a);case"WW":return Oe(i);case"E":case"c":return Oe(n);case"EEE":return Fn(e.weekdays("short",!1),1);case"EEEE":return Fn(e.weekdays("long",!1),1);case"ccc":return Fn(e.weekdays("short",!0),1);case"cccc":return Fn(e.weekdays("long",!0),1);case"Z":case"ZZ":return ym(new RegExp(`([+-]${a.source})(?::(${i.source}))?`),2);case"ZZZ":return ym(new RegExp(`([+-]${a.source})(${i.source})?`),2);case"z":return Ua(/[a-z_+-/]{1,256}?/i);case" ":return Ua(/[^\S\n\r]/);default:return T(M)}})(t)||{invalidReason:i1};return P.token=t,P}var c1={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 u1(t,e,n){let{type:i,value:r}=t;if(i==="literal"){let u=/^\s+$/.test(r);return{literal:!u,val:u?" ":r}}let o=e[i],s=i;i==="hour"&&(e.hour12!=null?s=e.hour12?"hour12":"hour24":e.hourCycle!=null?e.hourCycle==="h11"||e.hourCycle==="h12"?s="hour12":s="hour24":s=n.hour12?"hour12":"hour24");let a=c1[s];if(typeof a=="object"&&(a=a[o]),a)return{literal:!1,val:a}}function l1(t){return[`^${t.map(n=>n.regex).reduce((n,i)=>`${n}(${i.source})`,"")}$`,t]}function d1(t,e,n){let i=t.match(e);if(i){let r={},o=1;for(let s in n)if(Pi(n,s)){let a=n[s],u=a.groups?a.groups+1:1;!a.literal&&a.token&&(r[a.token.val[0]]=a.deser(i.slice(o,o+u))),o+=u}return[i,r]}else return[i,{}]}function f1(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}},n=null,i;return fe(t.z)||(n=Vt.create(t.z)),fe(t.Z)||(n||(n=new Pt(t.Z)),i=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=os(t.u)),[Object.keys(t).reduce((o,s)=>{let a=e(s);return a&&(o[a]=t[s]),o},{}),n,i]}var Il=null;function h1(){return Il||(Il=Te.fromMillis(1555555555555)),Il}function p1(t,e){if(t.literal)return t;let n=Dt.macroTokenToFormatOpts(t.val),i=El(n,e);return i==null||i.includes(void 0)?t:i}function Ol(t,e){return Array.prototype.concat(...t.map(n=>p1(n,e)))}function Pl(t,e,n){let i=Ol(Dt.parseFormat(n),t),r=i.map(s=>a1(s,t)),o=r.find(s=>s.invalidReason);if(o)return{input:e,tokens:i,invalidReason:o.invalidReason};{let[s,a]=l1(r),u=RegExp(s,"i"),[l,m]=d1(e,u,a),[b,v,T]=m?f1(m):[null,null,void 0];if(Pi(m,"a")&&Pi(m,"H"))throw new Mn("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:i,regex:u,rawMatches:l,matches:m,result:b,zone:v,specificOffset:T}}}function vm(t,e,n){let{result:i,zone:r,specificOffset:o,invalidReason:s}=Pl(t,e,n);return[i,r,o,s]}function El(t,e){if(!t)return null;let i=Dt.create(e,t).dtFormatter(h1()),r=i.formatToParts(),o=i.resolvedOptions();return r.map(s=>u1(s,t,o))}var Dl="Invalid DateTime",km=864e13;function $a(t){return new Et("unsupported zone",`the zone "${t.name}" is not supported`)}function Ml(t){return t.weekData===null&&(t.weekData=ns(t.c)),t.weekData}function jl(t){return t.localWeekData===null&&(t.localWeekData=ns(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}function ur(t,e){let n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new Te({...n,...e,old:n})}function Om(t,e,n){let i=t-e*60*1e3,r=n.offset(i);if(e===r)return[i,e];i-=(r-e)*60*1e3;let o=n.offset(i);return r===o?[i,r]:[t-Math.min(r,o)*60*1e3,Math.max(r,o)]}function Ka(t,e){t+=e*60*1e3;let n=new Date(t);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function Va(t,e,n){return Om(Gr(t),e,n)}function Cm(t,e){let n=t.o,i=t.c.year+Math.trunc(e.years),r=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,o={...t.c,year:i,month:r,day:Math.min(t.c.day,Xr(i,r))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},s=Be.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=Gr(o),[u,l]=Om(a,n,t.zone);return s!==0&&(u+=s,l=t.zone.offset(u)),{ts:u,o:l}}function us(t,e,n,i,r,o){let{setZone:s,zone:a}=n;if(t&&Object.keys(t).length!==0||e){let u=e||a,l=Te.fromObject(t,{...n,zone:u,specificOffset:o});return s?l:l.setZone(a)}else return Te.invalid(new Et("unparsable",`the input "${r}" can't be parsed as ${i}`))}function za(t,e,n=!0){return t.isValid?Dt.create(Ee.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function Bl(t,e){let n=t.c.year>9999||t.c.year<0,i="";return n&&t.c.year>=0&&(i+="+"),i+=ze(t.c.year,n?6:4),e?(i+="-",i+=ze(t.c.month),i+="-",i+=ze(t.c.day)):(i+=ze(t.c.month),i+=ze(t.c.day)),i}function Tm(t,e,n,i,r,o){let s=ze(t.c.hour);return e?(s+=":",s+=ze(t.c.minute),(t.c.millisecond!==0||t.c.second!==0||!n)&&(s+=":")):s+=ze(t.c.minute),(t.c.millisecond!==0||t.c.second!==0||!n)&&(s+=ze(t.c.second),(t.c.millisecond!==0||!i)&&(s+=".",s+=ze(t.c.millisecond,3))),r&&(t.isOffsetFixed&&t.offset===0&&!o?s+="Z":t.o<0?(s+="-",s+=ze(Math.trunc(-t.o/60)),s+=":",s+=ze(Math.trunc(-t.o%60))):(s+="+",s+=ze(Math.trunc(t.o/60)),s+=":",s+=ze(Math.trunc(t.o%60)))),o&&(s+="["+t.zone.ianaName+"]"),s}var Pm={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},m1={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},g1={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Em=["year","month","day","hour","minute","second","millisecond"],_1=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],y1=["year","ordinal","hour","minute","second","millisecond"];function w1(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 Vr(t);return e}function Sm(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return w1(t)}}function Am(t,e){let n=Nn(e.zone,Ie.defaultZone),i=Ee.fromObject(e),r=Ie.now(),o,s;if(fe(t.year))o=r;else{for(let l of Em)fe(t[l])&&(t[l]=Pm[l]);let a=_l(t)||yl(t);if(a)return Te.invalid(a);let u=n.offset(r);[o,s]=Va(t,u,n)}return new Te({ts:o,zone:n,loc:i,o:s})}function xm(t,e,n){let i=fe(n.round)?!0:n.round,r=(s,a)=>(s=Wr(s,i||n.calendary?0:2,!0),e.loc.clone(n).relFormatter(n).format(s,a)),o=s=>n.calendary?e.hasSame(t,s)?0:e.startOf(s).diff(t.startOf(s),s).get(s):e.diff(t,s).get(s);if(n.unit)return r(o(n.unit),n.unit);for(let s of n.units){let a=o(s);if(Math.abs(a)>=1)return r(a,s)}return r(t>e?-0:0,n.units[n.units.length-1])}function Im(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}var Te=class t{constructor(e){let n=e.zone||Ie.defaultZone,i=e.invalid||(Number.isNaN(e.ts)?new Et("invalid input"):null)||(n.isValid?null:$a(n));this.ts=fe(e.ts)?Ie.now():e.ts;let r=null,o=null;if(!i)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(n))[r,o]=[e.old.c,e.old.o];else{let a=n.offset(this.ts);r=Ka(this.ts,a),i=Number.isNaN(r.year)?new Et("invalid input"):null,r=i?null:r,o=i?null:a}this._zone=n,this.loc=e.loc||Ee.create(),this.invalid=i,this.weekData=null,this.localWeekData=null,this.c=r,this.o=o,this.isLuxonDateTime=!0}static now(){return new t({})}static local(){let[e,n]=Im(arguments),[i,r,o,s,a,u,l]=n;return Am({year:i,month:r,day:o,hour:s,minute:a,second:u,millisecond:l},e)}static utc(){let[e,n]=Im(arguments),[i,r,o,s,a,u,l]=n;return e.zone=Pt.utcInstance,Am({year:i,month:r,day:o,hour:s,minute:a,second:u,millisecond:l},e)}static fromJSDate(e,n={}){let i=$p(e)?e.valueOf():NaN;if(Number.isNaN(i))return t.invalid("invalid input");let r=Nn(n.zone,Ie.defaultZone);return r.isValid?new t({ts:i,zone:r,loc:Ee.fromObject(n)}):t.invalid($a(r))}static fromMillis(e,n={}){if(Gn(e))return e<-km||e>km?t.invalid("Timestamp out of range"):new t({ts:e,zone:Nn(n.zone,Ie.defaultZone),loc:Ee.fromObject(n)});throw new St(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(Gn(e))return new t({ts:e*1e3,zone:Nn(n.zone,Ie.defaultZone),loc:Ee.fromObject(n)});throw new St("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};let i=Nn(n.zone,Ie.defaultZone);if(!i.isValid)return t.invalid($a(i));let r=Ee.fromObject(n),o=Zr(e,Sm),{minDaysInFirstWeek:s,startOfWeek:a}=gl(o,r),u=Ie.now(),l=fe(n.specificOffset)?i.offset(u):n.specificOffset,m=!fe(o.ordinal),b=!fe(o.year),v=!fe(o.month)||!fe(o.day),T=b||v,O=o.weekYear||o.weekNumber;if((T||m)&&O)throw new Mn("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(v&&m)throw new Mn("Can't mix ordinal dates with month/day");let P=O||o.weekday&&!T,M,B,E=Ka(u,l);P?(M=_1,B=m1,E=ns(E,s,a)):m?(M=y1,B=g1,E=La(E)):(M=Em,B=Pm);let q=!1;for(let x of M){let j=o[x];fe(j)?q?o[x]=B[x]:o[x]=E[x]:q=!0}let K=P?qp(o,s,a):m?Lp(o):_l(o),X=K||yl(o);if(X)return t.invalid(X);let G=P?pl(o,s,a):m?ml(o):o,[Z,A]=Va(G,l,i),I=new t({ts:Z,zone:i,o:A,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,n={}){let[i,r]=im(e);return us(i,r,n,"ISO 8601",e)}static fromRFC2822(e,n={}){let[i,r]=rm(e);return us(i,r,n,"RFC 2822",e)}static fromHTTP(e,n={}){let[i,r]=om(e);return us(i,r,n,"HTTP",n)}static fromFormat(e,n,i={}){if(fe(e)||fe(n))throw new St("fromFormat requires an input string and a format");let{locale:r=null,numberingSystem:o=null}=i,s=Ee.fromOpts({locale:r,numberingSystem:o,defaultToEN:!0}),[a,u,l,m]=vm(s,e,n);return m?t.invalid(m):us(a,u,i,`format ${n}`,e,l)}static fromString(e,n,i={}){return t.fromFormat(e,n,i)}static fromSQL(e,n={}){let[i,r]=cm(e);return us(i,r,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new St("need to specify a reason the DateTime is invalid");let i=e instanceof Et?e:new Et(e,n);if(Ie.throwOnInvalid)throw new Ia(i);return new t({invalid:i})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,n={}){let i=El(e,Ee.fromObject(n));return i?i.map(r=>r?r.val:null).join(""):null}static expandFormat(e,n={}){return Ol(Dt.parseFormat(e),Ee.fromObject(n)).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?Ml(this).weekYear:NaN}get weekNumber(){return this.isValid?Ml(this).weekNumber:NaN}get weekday(){return this.isValid?Ml(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?jl(this).weekday:NaN}get localWeekNumber(){return this.isValid?jl(this).weekNumber:NaN}get localWeekYear(){return this.isValid?jl(this).weekYear:NaN}get ordinal(){return this.isValid?La(this.c).ordinal:NaN}get monthShort(){return this.isValid?ui.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?ui.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?ui.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?ui.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,n=6e4,i=Gr(this.c),r=this.zone.offset(i-e),o=this.zone.offset(i+e),s=this.zone.offset(i-r*n),a=this.zone.offset(i-o*n);if(s===a)return[this];let u=i-s*n,l=i-a*n,m=Ka(u,s),b=Ka(l,a);return m.hour===b.hour&&m.minute===b.minute&&m.second===b.second&&m.millisecond===b.millisecond?[ur(this,{ts:u}),ur(this,{ts:l})]:[this]}get isInLeapYear(){return ar(this.year)}get daysInMonth(){return Xr(this.year,this.month)}get daysInYear(){return this.isValid?Oi(this.year):NaN}get weeksInWeekYear(){return this.isValid?sr(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?sr(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:n,numberingSystem:i,calendar:r}=Dt.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:i,outputCalendar:r}}toUTC(e=0,n={}){return this.setZone(Pt.instance(e),n)}toLocal(){return this.setZone(Ie.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:i=!1}={}){if(e=Nn(e,Ie.defaultZone),e.equals(this.zone))return this;if(e.isValid){let r=this.ts;if(n||i){let o=e.offset(this.ts),s=this.toObject();[r]=Va(s,o,e)}return ur(this,{ts:r,zone:e})}else return t.invalid($a(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:i}={}){let r=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:i});return ur(this,{loc:r})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let n=Zr(e,Sm),{minDaysInFirstWeek:i,startOfWeek:r}=gl(n,this.loc),o=!fe(n.weekYear)||!fe(n.weekNumber)||!fe(n.weekday),s=!fe(n.ordinal),a=!fe(n.year),u=!fe(n.month)||!fe(n.day),l=a||u,m=n.weekYear||n.weekNumber;if((l||s)&&m)throw new Mn("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(u&&s)throw new Mn("Can't mix ordinal dates with month/day");let b;o?b=pl({...ns(this.c,i,r),...n},i,r):fe(n.ordinal)?(b={...this.toObject(),...n},fe(n.day)&&(b.day=Math.min(Xr(b.year,b.month),b.day))):b=ml({...La(this.c),...n});let[v,T]=Va(b,this.o,this.zone);return ur(this,{ts:v,o:T})}plus(e){if(!this.isValid)return this;let n=Be.fromDurationLike(e);return ur(this,Cm(this,n))}minus(e){if(!this.isValid)return this;let n=Be.fromDurationLike(e).negate();return ur(this,Cm(this,n))}startOf(e,{useLocaleWeeks:n=!1}={}){if(!this.isValid)return this;let i={},r=Be.normalizeUnit(e);switch(r){case"years":i.month=1;case"quarters":case"months":i.day=1;case"weeks":case"days":i.hour=0;case"hours":i.minute=0;case"minutes":i.second=0;case"seconds":i.millisecond=0;break;case"milliseconds":break}if(r==="weeks")if(n){let o=this.loc.getStartOfWeek(),{weekday:s}=this;s<o&&(i.weekNumber=this.weekNumber-1),i.weekday=o}else i.weekday=1;if(r==="quarters"){let o=Math.ceil(this.month/3);i.month=(o-1)*3+1}return this.set(i)}endOf(e,n){return this.isValid?this.plus({[e]:1}).startOf(e,n).minus(1):this}toFormat(e,n={}){return this.isValid?Dt.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):Dl}toLocaleString(e=Ai,n={}){return this.isValid?Dt.create(this.loc.clone(n),e).formatDateTime(this):Dl}toLocaleParts(e={}){return this.isValid?Dt.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:n=!1,suppressMilliseconds:i=!1,includeOffset:r=!0,extendedZone:o=!1}={}){if(!this.isValid)return null;let s=e==="extended",a=Bl(this,s);return a+="T",a+=Tm(this,s,n,i,r,o),a}toISODate({format:e="extended"}={}){return this.isValid?Bl(this,e==="extended"):null}toISOWeekDate(){return za(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:n=!1,includeOffset:i=!0,includePrefix:r=!1,extendedZone:o=!1,format:s="extended"}={}){return this.isValid?(r?"T":"")+Tm(this,s==="extended",n,e,i,o):null}toRFC2822(){return za(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return za(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?Bl(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:n=!1,includeOffsetSpace:i=!0}={}){let r="HH:mm:ss.SSS";return(n||e)&&(i&&(r+=" "),n?r+="z":e&&(r+="ZZ")),za(this,r,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():Dl}[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 n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",i={}){if(!this.isValid||!e.isValid)return Be.invalid("created by diffing an invalid DateTime");let r={locale:this.locale,numberingSystem:this.numberingSystem,...i},o=Kp(n).map(Be.normalizeUnit),s=e.valueOf()>this.valueOf(),a=s?this:e,u=s?e:this,l=pm(a,u,o,r);return s?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(t.now(),e,n)}until(e){return this.isValid?ci.fromDateTimes(this,e):this}hasSame(e,n,i){if(!this.isValid)return!1;let r=e.valueOf(),o=this.setZone(e.zone,{keepLocalTime:!0});return o.startOf(n,i)<=r&&r<=o.endOf(n,i)}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 n=e.base||t.fromObject({},{zone:this.zone}),i=e.padding?this<n?-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),xm(n,this.plus(i),{...e,numeric:"always",units:r,unit:o})}toRelativeCalendar(e={}){return this.isValid?xm(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 St("min requires all arguments be DateTimes");return wl(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new St("max requires all arguments be DateTimes");return wl(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,i={}){let{locale:r=null,numberingSystem:o=null}=i,s=Ee.fromOpts({locale:r,numberingSystem:o,defaultToEN:!0});return Pl(s,e,n)}static fromStringExplain(e,n,i={}){return t.fromFormatExplain(e,n,i)}static get DATE_SHORT(){return Ai}static get DATE_MED(){return Bo}static get DATE_MED_WITH_WEEKDAY(){return Yu}static get DATE_FULL(){return No}static get DATE_HUGE(){return Fo}static get TIME_SIMPLE(){return Ro}static get TIME_WITH_SECONDS(){return qo}static get TIME_WITH_SHORT_OFFSET(){return Lo}static get TIME_WITH_LONG_OFFSET(){return Uo}static get TIME_24_SIMPLE(){return $o}static get TIME_24_WITH_SECONDS(){return Ko}static get TIME_24_WITH_SHORT_OFFSET(){return zo}static get TIME_24_WITH_LONG_OFFSET(){return Vo}static get DATETIME_SHORT(){return Go}static get DATETIME_SHORT_WITH_SECONDS(){return Wo}static get DATETIME_MED(){return Ho}static get DATETIME_MED_WITH_SECONDS(){return Xo}static get DATETIME_MED_WITH_WEEKDAY(){return Qu}static get DATETIME_FULL(){return Zo}static get DATETIME_FULL_WITH_SECONDS(){return Jo}static get DATETIME_HUGE(){return Yo}static get DATETIME_HUGE_WITH_SECONDS(){return Qo}};function ro(t){if(Te.isDateTime(t))return t;if(t&&t.valueOf&&Gn(t.valueOf()))return Te.fromJSDate(t);if(t&&typeof t=="object")return Te.fromObject(t);throw new St(`Unknown datetime argument: ${t}, of type ${typeof t}`)}var ko=require("@mysten/sui.js/utils");var Vi=require("@mysten/sui.js/utils");var I0=be(Gs(),1),O0=require("@msafe/sui3-utils"),P0=require("@msafe/sui3-utils"),E0=require("@msafe/sui3-utils"),Rd=require("@mysten/sui.js/bcs"),Ui=require("@mysten/sui.js/utils"),M0=require("@msafe/sui3-utils"),vo=require("@msafe/sui3-utils"),j0=require("@msafe/sui3-utils"),N0=require("@msafe/sui3-utils"),R0=require("@msafe/sui3-utils"),q0=require("@mysten/sui.js/transactions"),U0=require("@msafe/sui3-utils"),yo=require("@msafe/sui3-utils"),qd=require("@mysten/sui.js/bcs"),$i=require("@mysten/sui.js/utils"),$0=require("@mysten/sui.js/transactions"),z0=require("@mysten/sui.js/transactions"),G0=require("@mysten/sui.js/transactions"),X0=require("@mysten/sui.js/transactions"),J0=require("@mysten/sui.js/transactions"),Oc=require("@msafe/sui3-utils"),Q0=require("@mysten/sui.js/transactions"),Pc=require("@mysten/sui.js/utils"),i3=be(Gs(),1),ey=require("@msafe/sui3-utils"),ty=require("@msafe/sui3-utils"),Ld=require("@mysten/sui.js/bcs"),Ki=require("@mysten/sui.js/utils"),Ot=require("@mysten/sui.js/transactions"),ny=require("@mysten/sui.js/utils");var b1=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,Nl=Math.ceil,Cn=Math.floor,tn="[BigNumber Error] ",Dm=tn+"Number primitive has more than 15 significant digits: ",Rn=1e14,we=14,Fl=9007199254740991,Rl=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Mi=1e7,Mt=1e9;function Mm(t){var e,n,i,r=E.prototype={constructor:E,toString:null,valueOf:null},o=new E(1),s=20,a=4,u=-7,l=21,m=-1e7,b=1e7,v=!1,T=1,O=0,P={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},M="0123456789abcdefghijklmnopqrstuvwxyz",B=!0;function E(A,I){var x,j,k,S,c,d,f,_,h=this;if(!(h instanceof E))return new E(A,I);if(I==null){if(A&&A._isBigNumber===!0){h.s=A.s,!A.c||A.e>b?h.c=h.e=null:A.e<m?h.c=[h.e=0]:(h.e=A.e,h.c=A.c.slice());return}if((d=typeof A=="number")&&A*0==0){if(h.s=1/A<0?(A=-A,-1):1,A===~~A){for(S=0,c=A;c>=10;c/=10,S++);S>b?h.c=h.e=null:(h.e=S,h.c=[A]);return}_=String(A)}else{if(!b1.test(_=String(A)))return i(h,_,d);h.s=_.charCodeAt(0)==45?(_=_.slice(1),-1):1}(S=_.indexOf("."))>-1&&(_=_.replace(".","")),(c=_.search(/e/i))>0?(S<0&&(S=c),S+=+_.slice(c+1),_=_.substring(0,c)):S<0&&(S=_.length)}else{if(Ve(I,2,M.length,"Base"),I==10&&B)return h=new E(A),G(h,s+h.e+1,a);if(_=String(A),d=typeof A=="number"){if(A*0!=0)return i(h,_,d,I);if(h.s=1/A<0?(_=_.slice(1),-1):1,E.DEBUG&&_.replace(/^0\.0*|\./,"").length>15)throw Error(Dm+A)}else h.s=_.charCodeAt(0)===45?(_=_.slice(1),-1):1;for(x=M.slice(0,I),S=c=0,f=_.length;c<f;c++)if(x.indexOf(j=_.charAt(c))<0){if(j=="."){if(c>S){S=f;continue}}else if(!k&&(_==_.toUpperCase()&&(_=_.toLowerCase())||_==_.toLowerCase()&&(_=_.toUpperCase()))){k=!0,c=-1,S=0;continue}return i(h,String(A),d,I)}d=!1,_=n(_,I,10,h.s),(S=_.indexOf("."))>-1?_=_.replace(".",""):S=_.length}for(c=0;_.charCodeAt(c)===48;c++);for(f=_.length;_.charCodeAt(--f)===48;);if(_=_.slice(c,++f)){if(f-=c,d&&E.DEBUG&&f>15&&(A>Fl||A!==Cn(A)))throw Error(Dm+h.s*A);if((S=S-c-1)>b)h.c=h.e=null;else if(S<m)h.c=[h.e=0];else{if(h.e=S,h.c=[],c=(S+1)%we,S<0&&(c+=we),c<f){for(c&&h.c.push(+_.slice(0,c)),f-=we;c<f;)h.c.push(+_.slice(c,c+=we));c=we-(_=_.slice(c)).length}else c-=f;for(;c--;_+="0");h.c.push(+_)}}else h.c=[h.e=0]}E.clone=Mm,E.ROUND_UP=0,E.ROUND_DOWN=1,E.ROUND_CEIL=2,E.ROUND_FLOOR=3,E.ROUND_HALF_UP=4,E.ROUND_HALF_DOWN=5,E.ROUND_HALF_EVEN=6,E.ROUND_HALF_CEIL=7,E.ROUND_HALF_FLOOR=8,E.EUCLID=9,E.config=E.set=function(A){var I,x;if(A!=null)if(typeof A=="object"){if(A.hasOwnProperty(I="DECIMAL_PLACES")&&(x=A[I],Ve(x,0,Mt,I),s=x),A.hasOwnProperty(I="ROUNDING_MODE")&&(x=A[I],Ve(x,0,8,I),a=x),A.hasOwnProperty(I="EXPONENTIAL_AT")&&(x=A[I],x&&x.pop?(Ve(x[0],-Mt,0,I),Ve(x[1],0,Mt,I),u=x[0],l=x[1]):(Ve(x,-Mt,Mt,I),u=-(l=x<0?-x:x))),A.hasOwnProperty(I="RANGE"))if(x=A[I],x&&x.pop)Ve(x[0],-Mt,-1,I),Ve(x[1],1,Mt,I),m=x[0],b=x[1];else if(Ve(x,-Mt,Mt,I),x)m=-(b=x<0?-x:x);else throw Error(tn+I+" cannot be zero: "+x);if(A.hasOwnProperty(I="CRYPTO"))if(x=A[I],x===!!x)if(x)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))v=x;else throw v=!x,Error(tn+"crypto unavailable");else v=x;else throw Error(tn+I+" not true or false: "+x);if(A.hasOwnProperty(I="MODULO_MODE")&&(x=A[I],Ve(x,0,9,I),T=x),A.hasOwnProperty(I="POW_PRECISION")&&(x=A[I],Ve(x,0,Mt,I),O=x),A.hasOwnProperty(I="FORMAT"))if(x=A[I],typeof x=="object")P=x;else throw Error(tn+I+" not an object: "+x);if(A.hasOwnProperty(I="ALPHABET"))if(x=A[I],typeof x=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(x))B=x.slice(0,10)=="0123456789",M=x;else throw Error(tn+I+" invalid: "+x)}else throw Error(tn+"Object expected: "+A);return{DECIMAL_PLACES:s,ROUNDING_MODE:a,EXPONENTIAL_AT:[u,l],RANGE:[m,b],CRYPTO:v,MODULO_MODE:T,POW_PRECISION:O,FORMAT:P,ALPHABET:M}},E.isBigNumber=function(A){if(!A||A._isBigNumber!==!0)return!1;if(!E.DEBUG)return!0;var I,x,j=A.c,k=A.e,S=A.s;e:if({}.toString.call(j)=="[object Array]"){if((S===1||S===-1)&&k>=-Mt&&k<=Mt&&k===Cn(k)){if(j[0]===0){if(k===0&&j.length===1)return!0;break e}if(I=(k+1)%we,I<1&&(I+=we),String(j[0]).length==I){for(I=0;I<j.length;I++)if(x=j[I],x<0||x>=Rn||x!==Cn(x))break e;if(x!==0)return!0}}}else if(j===null&&k===null&&(S===null||S===1||S===-1))return!0;throw Error(tn+"Invalid BigNumber: "+A)},E.maximum=E.max=function(){return K(arguments,-1)},E.minimum=E.min=function(){return K(arguments,1)},E.random=function(){var A=9007199254740992,I=Math.random()*A&2097151?function(){return Cn(Math.random()*A)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(x){var j,k,S,c,d,f=0,_=[],h=new E(o);if(x==null?x=s:Ve(x,0,Mt),c=Nl(x/we),v)if(crypto.getRandomValues){for(j=crypto.getRandomValues(new Uint32Array(c*=2));f<c;)d=j[f]*131072+(j[f+1]>>>11),d>=9e15?(k=crypto.getRandomValues(new Uint32Array(2)),j[f]=k[0],j[f+1]=k[1]):(_.push(d%1e14),f+=2);f=c/2}else if(crypto.randomBytes){for(j=crypto.randomBytes(c*=7);f<c;)d=(j[f]&31)*281474976710656+j[f+1]*1099511627776+j[f+2]*4294967296+j[f+3]*16777216+(j[f+4]<<16)+(j[f+5]<<8)+j[f+6],d>=9e15?crypto.randomBytes(7).copy(j,f):(_.push(d%1e14),f+=7);f=c/7}else throw v=!1,Error(tn+"crypto unavailable");if(!v)for(;f<c;)d=I(),d<9e15&&(_[f++]=d%1e14);for(c=_[--f],x%=we,c&&x&&(d=Rl[we-x],_[f]=Cn(c/d)*d);_[f]===0;_.pop(),f--);if(f<0)_=[S=0];else{for(S=-1;_[0]===0;_.splice(0,1),S-=we);for(f=1,d=_[0];d>=10;d/=10,f++);f<we&&(S-=we-f)}return h.e=S,h.c=_,h}}(),E.sum=function(){for(var A=1,I=arguments,x=new E(I[0]);A<I.length;)x=x.plus(I[A++]);return x},n=function(){var A="0123456789";function I(x,j,k,S){for(var c,d=[0],f,_=0,h=x.length;_<h;){for(f=d.length;f--;d[f]*=j);for(d[0]+=S.indexOf(x.charAt(_++)),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(x,j,k,S,c){var d,f,_,h,p,w,y,g,C=x.indexOf("."),N=s,F=a;for(C>=0&&(h=O,O=0,x=x.replace(".",""),g=new E(j),w=g.pow(x.length-C),O=h,g.c=I(li(kn(w.c),w.e,"0"),10,k,A),g.e=g.c.length),y=I(x,j,k,c?(d=M,A):(d=A,M)),_=h=y.length;y[--h]==0;y.pop());if(!y[0])return d.charAt(0);if(C<0?--_:(w.c=y,w.e=_,w.s=S,w=e(w,g,N,F,k),y=w.c,p=w.r,_=w.e),f=_+N+1,C=y[f],h=k/2,p=p||f<0||y[f+1]!=null,p=F<4?(C!=null||p)&&(F==0||F==(w.s<0?3:2)):C>h||C==h&&(F==4||p||F==6&&y[f-1]&1||F==(w.s<0?8:7)),f<1||!y[0])x=p?li(d.charAt(1),-N,d.charAt(0)):d.charAt(0);else{if(y.length=f,p)for(--k;++y[--f]>k;)y[f]=0,f||(++_,y=[1].concat(y));for(h=y.length;!y[--h];);for(C=0,x="";C<=h;x+=d.charAt(y[C++]));x=li(x,_,d.charAt(0))}return x}}(),e=function(){function A(j,k,S){var c,d,f,_,h=0,p=j.length,w=k%Mi,y=k/Mi|0;for(j=j.slice();p--;)f=j[p]%Mi,_=j[p]/Mi|0,c=y*f+_*w,d=w*f+c%Mi*Mi+h,h=(d/S|0)+(c/Mi|0)+y*_,j[p]=d%S;return h&&(j=[h].concat(j)),j}function I(j,k,S,c){var d,f;if(S!=c)f=S>c?1:-1;else for(d=f=0;d<S;d++)if(j[d]!=k[d]){f=j[d]>k[d]?1:-1;break}return f}function x(j,k,S,c){for(var d=0;S--;)j[S]-=d,d=j[S]<k[S]?1:0,j[S]=d*c+j[S]-k[S];for(;!j[0]&&j.length>1;j.splice(0,1));}return function(j,k,S,c,d){var f,_,h,p,w,y,g,C,N,F,U,L,H,ee,ge,ie,me,Ae=j.s==k.s?1:-1,_e=j.c,he=k.c;if(!_e||!_e[0]||!he||!he[0])return new E(!j.s||!k.s||(_e?he&&_e[0]==he[0]:!he)?NaN:_e&&_e[0]==0||!he?Ae*0:Ae/0);for(C=new E(Ae),N=C.c=[],_=j.e-k.e,Ae=S+_+1,d||(d=Rn,_=Tn(j.e/we)-Tn(k.e/we),Ae=Ae/we|0),h=0;he[h]==(_e[h]||0);h++);if(he[h]>(_e[h]||0)&&_--,Ae<0)N.push(1),p=!0;else{for(ee=_e.length,ie=he.length,h=0,Ae+=2,w=Cn(d/(he[0]+1)),w>1&&(he=A(he,w,d),_e=A(_e,w,d),ie=he.length,ee=_e.length),H=ie,F=_e.slice(0,ie),U=F.length;U<ie;F[U++]=0);me=he.slice(),me=[0].concat(me),ge=he[0],he[1]>=d/2&&ge++;do{if(w=0,f=I(he,F,ie,U),f<0){if(L=F[0],ie!=U&&(L=L*d+(F[1]||0)),w=Cn(L/ge),w>1)for(w>=d&&(w=d-1),y=A(he,w,d),g=y.length,U=F.length;I(y,F,g,U)==1;)w--,x(y,ie<g?me:he,g,d),g=y.length,f=1;else w==0&&(f=w=1),y=he.slice(),g=y.length;if(g<U&&(y=[0].concat(y)),x(F,y,U,d),U=F.length,f==-1)for(;I(he,F,ie,U)<1;)w++,x(F,ie<U?me:he,U,d),U=F.length}else f===0&&(w++,F=[0]);N[h++]=w,F[0]?F[U++]=_e[H]||0:(F=[_e[H]],U=1)}while((H++<ee||F[0]!=null)&&Ae--);p=F[0]!=null,N[0]||N.splice(0,1)}if(d==Rn){for(h=1,Ae=N[0];Ae>=10;Ae/=10,h++);G(C,S+(C.e=h+_*we-1)+1,c,p)}else C.e=_,C.r=+p;return C}}();function q(A,I,x,j){var k,S,c,d,f;if(x==null?x=a:Ve(x,0,8),!A.c)return A.toString();if(k=A.c[0],c=A.e,I==null)f=kn(A.c),f=j==1||j==2&&(c<=u||c>=l)?Wa(f,c):li(f,c,"0");else if(A=G(new E(A),I,x),S=A.e,f=kn(A.c),d=f.length,j==1||j==2&&(I<=S||S<=u)){for(;d<I;f+="0",d++);f=Wa(f,S)}else if(I-=c,f=li(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 A.s<0&&k?"-"+f:f}function K(A,I){for(var x,j,k=1,S=new E(A[0]);k<A.length;k++)j=new E(A[k]),(!j.s||(x=lr(S,j))===I||x===0&&S.s===I)&&(S=j);return S}function X(A,I,x){for(var j=1,k=I.length;!I[--k];I.pop());for(k=I[0];k>=10;k/=10,j++);return(x=j+x*we-1)>b?A.c=A.e=null:x<m?A.c=[A.e=0]:(A.e=x,A.c=I),A}i=function(){var A=/^(-?)0([xbo])(?=\w[\w.]*$)/i,I=/^([^.]+)\.$/,x=/^\.([^.]+)$/,j=/^-?(Infinity|NaN)$/,k=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(S,c,d,f){var _,h=d?c:c.replace(k,"");if(j.test(h))S.s=isNaN(h)?null:h<0?-1:1;else{if(!d&&(h=h.replace(A,function(p,w,y){return _=(y=y.toLowerCase())=="x"?16:y=="b"?2:8,!f||f==_?w:p}),f&&(_=f,h=h.replace(I,"$1").replace(x,"0.$1")),c!=h))return new E(h,_);if(E.DEBUG)throw Error(tn+"Not a"+(f?" base "+f:"")+" number: "+c);S.s=null}S.c=S.e=null}}();function G(A,I,x,j){var k,S,c,d,f,_,h,p=A.c,w=Rl;if(p){e:{for(k=1,d=p[0];d>=10;d/=10,k++);if(S=I-k,S<0)S+=we,c=I,f=p[_=0],h=Cn(f/w[k-c-1]%10);else if(_=Nl((S+1)/we),_>=p.length)if(j){for(;p.length<=_;p.push(0));f=h=0,k=1,S%=we,c=S-we+1}else break e;else{for(f=d=p[_],k=1;d>=10;d/=10,k++);S%=we,c=S-we+k,h=c<0?0:Cn(f/w[k-c-1]%10)}if(j=j||I<0||p[_+1]!=null||(c<0?f:f%w[k-c-1]),j=x<4?(h||j)&&(x==0||x==(A.s<0?3:2)):h>5||h==5&&(x==4||j||x==6&&(S>0?c>0?f/w[k-c]:0:p[_-1])%10&1||x==(A.s<0?8:7)),I<1||!p[0])return p.length=0,j?(I-=A.e+1,p[0]=w[(we-I%we)%we],A.e=-I||0):p[0]=A.e=0,A;if(S==0?(p.length=_,d=1,_--):(p.length=_+1,d=w[we-S],p[_]=c>0?Cn(f/w[k-c]%w[c])*d:0),j)for(;;)if(_==0){for(S=1,c=p[0];c>=10;c/=10,S++);for(c=p[0]+=d,d=1;c>=10;c/=10,d++);S!=d&&(A.e++,p[0]==Rn&&(p[0]=1));break}else{if(p[_]+=d,p[_]!=Rn)break;p[_--]=0,d=1}for(S=p.length;p[--S]===0;p.pop());}A.e>b?A.c=A.e=null:A.e<m&&(A.c=[A.e=0])}return A}function Z(A){var I,x=A.e;return x===null?A.toString():(I=kn(A.c),I=x<=u||x>=l?Wa(I,x):li(I,x,"0"),A.s<0?"-"+I:I)}return r.absoluteValue=r.abs=function(){var A=new E(this);return A.s<0&&(A.s=1),A},r.comparedTo=function(A,I){return lr(this,new E(A,I))},r.decimalPlaces=r.dp=function(A,I){var x,j,k,S=this;if(A!=null)return Ve(A,0,Mt),I==null?I=a:Ve(I,0,8),G(new E(S),A+S.e+1,I);if(!(x=S.c))return null;if(j=((k=x.length-1)-Tn(this.e/we))*we,k=x[k])for(;k%10==0;k/=10,j--);return j<0&&(j=0),j},r.dividedBy=r.div=function(A,I){return e(this,new E(A,I),s,a)},r.dividedToIntegerBy=r.idiv=function(A,I){return e(this,new E(A,I),0,1)},r.exponentiatedBy=r.pow=function(A,I){var x,j,k,S,c,d,f,_,h,p=this;if(A=new E(A),A.c&&!A.isInteger())throw Error(tn+"Exponent not an integer: "+Z(A));if(I!=null&&(I=new E(I)),d=A.e>14,!p.c||!p.c[0]||p.c[0]==1&&!p.e&&p.c.length==1||!A.c||!A.c[0])return h=new E(Math.pow(+Z(p),d?A.s*(2-Ga(A)):+Z(A))),I?h.mod(I):h;if(f=A.s<0,I){if(I.c?!I.c[0]:!I.s)return new E(NaN);j=!f&&p.isInteger()&&I.isInteger(),j&&(p=p.mod(I))}else{if(A.e>9&&(p.e>0||p.e<-1||(p.e==0?p.c[0]>1||d&&p.c[1]>=24e7:p.c[0]<8e13||d&&p.c[0]<=9999975e7)))return S=p.s<0&&Ga(A)?-0:0,p.e>-1&&(S=1/S),new E(f?1/S:S);O&&(S=Nl(O/we+2))}for(d?(x=new E(.5),f&&(A.s=1),_=Ga(A)):(k=Math.abs(+Z(A)),_=k%2),h=new E(o);;){if(_){if(h=h.times(p),!h.c)break;S?h.c.length>S&&(h.c.length=S):j&&(h=h.mod(I))}if(k){if(k=Cn(k/2),k===0)break;_=k%2}else if(A=A.times(x),G(A,A.e+1,1),A.e>14)_=Ga(A);else{if(k=+Z(A),k===0)break;_=k%2}p=p.times(p),S?p.c&&p.c.length>S&&(p.c.length=S):j&&(p=p.mod(I))}return j?h:(f&&(h=o.div(h)),I?h.mod(I):S?G(h,O,a,c):h)},r.integerValue=function(A){var I=new E(this);return A==null?A=a:Ve(A,0,8),G(I,I.e+1,A)},r.isEqualTo=r.eq=function(A,I){return lr(this,new E(A,I))===0},r.isFinite=function(){return!!this.c},r.isGreaterThan=r.gt=function(A,I){return lr(this,new E(A,I))>0},r.isGreaterThanOrEqualTo=r.gte=function(A,I){return(I=lr(this,new E(A,I)))===1||I===0},r.isInteger=function(){return!!this.c&&Tn(this.e/we)>this.c.length-2},r.isLessThan=r.lt=function(A,I){return lr(this,new E(A,I))<0},r.isLessThanOrEqualTo=r.lte=function(A,I){return(I=lr(this,new E(A,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(A,I){var x,j,k,S,c=this,d=c.s;if(A=new E(A,I),I=A.s,!d||!I)return new E(NaN);if(d!=I)return A.s=-I,c.plus(A);var f=c.e/we,_=A.e/we,h=c.c,p=A.c;if(!f||!_){if(!h||!p)return h?(A.s=-I,A):new E(p?c:NaN);if(!h[0]||!p[0])return p[0]?(A.s=-I,A):new E(h[0]?c:a==3?-0:0)}if(f=Tn(f),_=Tn(_),h=h.slice(),d=f-_){for((S=d<0)?(d=-d,k=h):(_=f,k=p),k.reverse(),I=d;I--;k.push(0));k.reverse()}else for(j=(S=(d=h.length)<(I=p.length))?d:I,d=I=0;I<j;I++)if(h[I]!=p[I]){S=h[I]<p[I];break}if(S&&(k=h,h=p,p=k,A.s=-A.s),I=(j=p.length)-(x=h.length),I>0)for(;I--;h[x++]=0);for(I=Rn-1;j>d;){if(h[--j]<p[j]){for(x=j;x&&!h[--x];h[x]=I);--h[x],h[j]+=Rn}h[j]-=p[j]}for(;h[0]==0;h.splice(0,1),--_);return h[0]?X(A,h,_):(A.s=a==3?-1:1,A.c=[A.e=0],A)},r.modulo=r.mod=function(A,I){var x,j,k=this;return A=new E(A,I),!k.c||!A.s||A.c&&!A.c[0]?new E(NaN):!A.c||k.c&&!k.c[0]?new E(k):(T==9?(j=A.s,A.s=1,x=e(k,A,0,3),A.s=j,x.s*=j):x=e(k,A,0,T),A=k.minus(x.times(A)),!A.c[0]&&T==1&&(A.s=k.s),A)},r.multipliedBy=r.times=function(A,I){var x,j,k,S,c,d,f,_,h,p,w,y,g,C,N,F=this,U=F.c,L=(A=new E(A,I)).c;if(!U||!L||!U[0]||!L[0])return!F.s||!A.s||U&&!U[0]&&!L||L&&!L[0]&&!U?A.c=A.e=A.s=null:(A.s*=F.s,!U||!L?A.c=A.e=null:(A.c=[0],A.e=0)),A;for(j=Tn(F.e/we)+Tn(A.e/we),A.s*=F.s,f=U.length,p=L.length,f<p&&(g=U,U=L,L=g,k=f,f=p,p=k),k=f+p,g=[];k--;g.push(0));for(C=Rn,N=Mi,k=p;--k>=0;){for(x=0,w=L[k]%N,y=L[k]/N|0,c=f,S=k+c;S>k;)_=U[--c]%N,h=U[c]/N|0,d=y*_+h*w,_=w*_+d%N*N+g[S]+x,x=(_/C|0)+(d/N|0)+y*h,g[S--]=_%C;g[S]=x}return x?++j:g.splice(0,1),X(A,g,j)},r.negated=function(){var A=new E(this);return A.s=-A.s||null,A},r.plus=function(A,I){var x,j=this,k=j.s;if(A=new E(A,I),I=A.s,!k||!I)return new E(NaN);if(k!=I)return A.s=-I,j.minus(A);var S=j.e/we,c=A.e/we,d=j.c,f=A.c;if(!S||!c){if(!d||!f)return new E(k/0);if(!d[0]||!f[0])return f[0]?A:new E(d[0]?j:k*0)}if(S=Tn(S),c=Tn(c),d=d.slice(),k=S-c){for(k>0?(c=S,x=f):(k=-k,x=d),x.reverse();k--;x.push(0));x.reverse()}for(k=d.length,I=f.length,k-I<0&&(x=f,f=d,d=x,I=k),k=0;I;)k=(d[--I]=d[I]+f[I]+k)/Rn|0,d[I]=Rn===d[I]?0:d[I]%Rn;return k&&(d=[k].concat(d),++c),X(A,d,c)},r.precision=r.sd=function(A,I){var x,j,k,S=this;if(A!=null&&A!==!!A)return Ve(A,1,Mt),I==null?I=a:Ve(I,0,8),G(new E(S),A,I);if(!(x=S.c))return null;if(k=x.length-1,j=k*we+1,k=x[k]){for(;k%10==0;k/=10,j--);for(k=x[0];k>=10;k/=10,j++);}return A&&S.e+1>j&&(j=S.e+1),j},r.shiftedBy=function(A){return Ve(A,-Fl,Fl),this.times("1e"+A)},r.squareRoot=r.sqrt=function(){var A,I,x,j,k,S=this,c=S.c,d=S.s,f=S.e,_=s+4,h=new E("0.5");if(d!==1||!c||!c[0])return new E(!d||d<0&&(!c||c[0])?NaN:c?S:1/0);if(d=Math.sqrt(+Z(S)),d==0||d==1/0?(I=kn(c),(I.length+f)%2==0&&(I+="0"),d=Math.sqrt(+I),f=Tn((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),x=new E(I)):x=new E(d+""),x.c[0]){for(f=x.e,d=f+_,d<3&&(d=0);;)if(k=x,x=h.times(k.plus(e(S,k,_,1))),kn(k.c).slice(0,d)===(I=kn(x.c)).slice(0,d))if(x.e<f&&--d,I=I.slice(d-3,d+1),I=="9999"||!j&&I=="4999"){if(!j&&(G(k,k.e+s+2,0),k.times(k).eq(S))){x=k;break}_+=4,d+=4,j=1}else{(!+I||!+I.slice(1)&&I.charAt(0)=="5")&&(G(x,x.e+s+2,1),A=!x.times(x).eq(S));break}}return G(x,x.e+s+1,a,A)},r.toExponential=function(A,I){return A!=null&&(Ve(A,0,Mt),A++),q(this,A,I,1)},r.toFixed=function(A,I){return A!=null&&(Ve(A,0,Mt),A=A+this.e+1),q(this,A,I)},r.toFormat=function(A,I,x){var j,k=this;if(x==null)A!=null&&I&&typeof I=="object"?(x=I,I=null):A&&typeof A=="object"?(x=A,A=I=null):x=P;else if(typeof x!="object")throw Error(tn+"Argument not an object: "+x);if(j=k.toFixed(A,I),k.c){var S,c=j.split("."),d=+x.groupSize,f=+x.secondaryGroupSize,_=x.groupSeparator||"",h=c[0],p=c[1],w=k.s<0,y=w?h.slice(1):h,g=y.length;if(f&&(S=d,d=f,f=S,g-=S),d>0&&g>0){for(S=g%d||d,h=y.substr(0,S);S<g;S+=d)h+=_+y.substr(S,d);f>0&&(h+=_+y.slice(S)),w&&(h="-"+h)}j=p?h+(x.decimalSeparator||"")+((f=+x.fractionGroupSize)?p.replace(new RegExp("\\d{"+f+"}\\B","g"),"$&"+(x.fractionGroupSeparator||"")):p):h}return(x.prefix||"")+j+(x.suffix||"")},r.toFraction=function(A){var I,x,j,k,S,c,d,f,_,h,p,w,y=this,g=y.c;if(A!=null&&(d=new E(A),!d.isInteger()&&(d.c||d.s!==1)||d.lt(o)))throw Error(tn+"Argument "+(d.isInteger()?"out of range: ":"not an integer: ")+Z(d));if(!g)return new E(y);for(I=new E(o),_=x=new E(o),j=f=new E(o),w=kn(g),S=I.e=w.length-y.e-1,I.c[0]=Rl[(c=S%we)<0?we+c:c],A=!A||d.comparedTo(I)>0?S>0?I:_:d,c=b,b=1/0,d=new E(w),f.c[0]=0;h=e(d,I,0,1),k=x.plus(h.times(j)),k.comparedTo(A)!=1;)x=j,j=k,_=f.plus(h.times(k=_)),f=k,I=d.minus(h.times(k=I)),d=k;return k=e(A.minus(x),j,0,1),f=f.plus(k.times(_)),x=x.plus(k.times(j)),f.s=_.s=y.s,S=S*2,p=e(_,j,S,a).minus(y).abs().comparedTo(e(f,x,S,a).minus(y).abs())<1?[_,j]:[f,x],b=c,p},r.toNumber=function(){return+Z(this)},r.toPrecision=function(A,I){return A!=null&&Ve(A,1,Mt),q(this,A,I,2)},r.toString=function(A){var I,x=this,j=x.s,k=x.e;return k===null?j?(I="Infinity",j<0&&(I="-"+I)):I="NaN":(A==null?I=k<=u||k>=l?Wa(kn(x.c),k):li(kn(x.c),k,"0"):A===10&&B?(x=G(new E(x),s+k+1,a),I=li(kn(x.c),x.e,"0")):(Ve(A,2,M.length,"Base"),I=n(li(kn(x.c),k,"0"),10,A,j,!0)),j<0&&x.c[0]&&(I="-"+I)),I},r.valueOf=r.toJSON=function(){return Z(this)},r._isBigNumber=!0,r[Symbol.toStringTag]="BigNumber",r[Symbol.for("nodejs.util.inspect.custom")]=r.valueOf,t!=null&&E.set(t),E}function Tn(t){var e=t|0;return t>0||t===e?e:e-1}function kn(t){for(var e,n,i=1,r=t.length,o=t[0]+"";i<r;){for(e=t[i++]+"",n=we-e.length;n--;e="0"+e);o+=e}for(r=o.length;o.charCodeAt(--r)===48;);return o.slice(0,r+1||1)}function lr(t,e){var n,i,r=t.c,o=e.c,s=t.s,a=e.s,u=t.e,l=e.e;if(!s||!a)return null;if(n=r&&!r[0],i=o&&!o[0],n||i)return n?i?0:-a:s;if(s!=a)return s;if(n=s<0,i=u==l,!r||!o)return i?0:!r^n?1:-1;if(!i)return u>l^n?1:-1;for(a=(u=r.length)<(l=o.length)?u:l,s=0;s<a;s++)if(r[s]!=o[s])return r[s]>o[s]^n?1:-1;return u==l?0:u>l^n?1:-1}function Ve(t,e,n,i){if(t<e||t>n||t!==Cn(t))throw Error(tn+(i||"Argument")+(typeof t=="number"?t<e||t>n?" out of range: ":" not an integer: ":" not a primitive number: ")+String(t))}function Ga(t){var e=t.c.length-1;return Tn(t.e/we)==e&&t.c[e]%2!=0}function Wa(t,e){return(t.length>1?t.charAt(0)+"."+t.slice(1):t)+(e<0?"e":"e+")+e}function li(t,e,n){var i,r;if(e<0){for(r=n+".";++e;r+=n);t=r+t}else if(i=t.length,++e>i){for(r=n,e-=i;--e;r+=n);t+=r}else e<i&&(t=t.slice(0,e)+"."+t.slice(e));return t}var v1=Mm(),It=v1;var iy=be(require("axios"),1),cy=require("@mysten/sui.js/transactions"),uy=require("@mysten/sui.js/utils"),js=require("@mysten/sui.js/utils"),Gi=require("@mysten/sui.js/utils");var ly=require("@mysten/sui.js/transactions");var Ne=require("@mysten/sui.js/utils"),Zd=require("@mysten/sui.js/transactions"),Ud=require("@mysten/sui.js/utils");var Is=require("@mysten/sui.js/utils"),mi=require("@mysten/sui.js/utils"),Fs=require("@mysten/sui.js/utils"),jc=be(wg(),1),Os=require("@mysten/sui.js/utils"),bo=require("@mysten/sui.js/utils"),My=require("@msafe/sui3-utils"),wr=require("@msafe/sui3-utils"),$d=require("@mysten/sui.js/bcs"),zi=require("@mysten/sui.js/utils");var DC=be(Se(),1);var gr=require("@mysten/sui.js/client"),Ng=require("@mysten/sui.js/keypairs/ed25519");function bg(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(`Wrong positive integer: ${t}`)}function uC(t){return t instanceof Uint8Array||t!=null&&typeof t=="object"&&t.constructor.name==="Uint8Array"}function ud(t,...e){if(!uC(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 ld(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 vg(t,e){ud(t);let n=e.outputLen;if(t.length<n)throw new Error(`digestInto() expects output buffer of length at least ${n}`)}var nc=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function lC(t){return t instanceof Uint8Array||t!=null&&typeof t=="object"&&t.constructor.name==="Uint8Array"}var rc=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),qn=(t,e)=>t<<32-e|t>>>e,dC=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!dC)throw new Error("Non little-endian hardware is not supported");function fC(t){if(typeof t!="string")throw new Error(`utf8ToBytes expected string, got ${typeof t}`);return new Uint8Array(new TextEncoder().encode(t))}function dd(t){if(typeof t=="string"&&(t=fC(t)),!lC(t))throw new Error(`expected Uint8Array, got ${typeof t}`);return t}var ic=class{clone(){return this._cloneInto()}},c6={}.toString;function kg(t){let e=i=>t().update(dd(i)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function Cg(t=32){if(nc&&typeof nc.getRandomValues=="function")return nc.getRandomValues(new Uint8Array(t));throw new Error("crypto.getRandomValues must be defined")}function hC(t,e,n,i){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,i);let r=BigInt(32),o=BigInt(4294967295),s=Number(n>>r&o),a=Number(n&o),u=i?4:0,l=i?0:4;t.setUint32(e+u,s,i),t.setUint32(e+l,a,i)}var oc=class extends ic{constructor(e,n,i,r){super(),this.blockLen=e,this.outputLen=n,this.padOffset=i,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=rc(this.buffer)}update(e){ld(this);let{view:n,buffer:i,blockLen:r}=this;e=dd(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let u=rc(e);for(;r<=o-s;s+=r)this.process(u,s);continue}i.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ld(this),vg(e,this),this.finished=!0;let{buffer:n,view:i,blockLen:r,isLE:o}=this,{pos:s}=this;n[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(i,0),s=0);for(let b=s;b<r;b++)n[b]=0;hC(i,r-8,BigInt(this.length*8),o),this.process(i,0);let a=rc(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=u/4,m=this.get();if(l>m.length)throw new Error("_sha2: outputLen bigger than state");for(let b=0;b<l;b++)a.setUint32(4*b,m[b],o)}digest(){let{buffer:e,outputLen:n}=this;this.digestInto(e);let i=e.slice(0,n);return this.destroy(),i}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:n,buffer:i,length:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%n&&e.buffer.set(i),e}};var pC=(t,e,n)=>t&e^~t&n,mC=(t,e,n)=>t&e^t&n^e&n,gC=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]),ji=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Bi=new Uint32Array(64),fd=class extends oc{constructor(){super(64,32,8,!1),this.A=ji[0]|0,this.B=ji[1]|0,this.C=ji[2]|0,this.D=ji[3]|0,this.E=ji[4]|0,this.F=ji[5]|0,this.G=ji[6]|0,this.H=ji[7]|0}get(){let{A:e,B:n,C:i,D:r,E:o,F:s,G:a,H:u}=this;return[e,n,i,r,o,s,a,u]}set(e,n,i,r,o,s,a,u){this.A=e|0,this.B=n|0,this.C=i|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,n){for(let b=0;b<16;b++,n+=4)Bi[b]=e.getUint32(n,!1);for(let b=16;b<64;b++){let v=Bi[b-15],T=Bi[b-2],O=qn(v,7)^qn(v,18)^v>>>3,P=qn(T,17)^qn(T,19)^T>>>10;Bi[b]=P+Bi[b-7]+O+Bi[b-16]|0}let{A:i,B:r,C:o,D:s,E:a,F:u,G:l,H:m}=this;for(let b=0;b<64;b++){let v=qn(a,6)^qn(a,11)^qn(a,25),T=m+v+pC(a,u,l)+gC[b]+Bi[b]|0,P=(qn(i,2)^qn(i,13)^qn(i,22))+mC(i,r,o)|0;m=l,l=u,u=a,a=s+T|0,s=o,o=r,r=i,i=T+P|0}i=i+this.A|0,r=r+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,l=l+this.G|0,m=m+this.H|0,this.set(i,r,o,s,a,u,l,m)}roundClean(){Bi.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Tg=kg(()=>new fd);function hr(t){if(!Number.isSafeInteger(t))throw new Error(`Wrong integer: ${t}`)}function sc(t){return t instanceof Uint8Array||t!=null&&typeof t=="object"&&t.constructor.name==="Uint8Array"}function _C(...t){let e=o=>o,n=(o,s)=>a=>o(s(a)),i=t.map(o=>o.encode).reduceRight(n,e),r=t.map(o=>o.decode).reduce(n,e);return{encode:i,decode:r}}function yC(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(n=>{if(n<0||n>=t.length)throw new Error(`Digit index outside alphabet: ${n} (alphabet: ${t.length})`);return t[n]})},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(n=>{if(typeof n!="string")throw new Error(`alphabet.decode: not string element=${n}`);let i=t.indexOf(n);if(i===-1)throw new Error(`Unknown letter: "${n}". Allowed: ${t}`);return i})}}}function wC(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 n of e)if(typeof n!="string")throw new Error(`join.encode: non-string input=${n}`);return e.join(t)},decode:e=>{if(typeof e!="string")throw new Error("join.decode input should be string");return e.split(t)}}}function bC(t,e="="){if(typeof e!="string")throw new Error("padding chr should be string");return{encode(n){if(!Array.isArray(n)||n.length&&typeof n[0]!="string")throw new Error("padding.encode input should be array of strings");for(let i of n)if(typeof i!="string")throw new Error(`padding.encode: non-string input=${i}`);for(;n.length*t%8;)n.push(e);return n},decode(n){if(!Array.isArray(n)||n.length&&typeof n[0]!="string")throw new Error("padding.encode input should be array of strings");for(let r of n)if(typeof r!="string")throw new Error(`padding.decode: non-string input=${r}`);let i=n.length;if(i*t%8)throw new Error("Invalid padding: string should have whole number of bytes");for(;i>0&&n[i-1]===e;i--)if(!((i-1)*t%8))throw new Error("Invalid padding: string has too much padding");return n.slice(0,i)}}}function hd(t,e,n){if(e<2)throw new Error(`convertRadix: wrong from=${e}, base cannot be less than 2`);if(n<2)throw new Error(`convertRadix: wrong to=${n}, base cannot be less than 2`);if(!Array.isArray(t))throw new Error("convertRadix: data should be array");if(!t.length)return[];let i=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 u=i;u<o.length;u++){let l=o[u],m=e*s+l;if(!Number.isSafeInteger(m)||e*s/e!==s||m-l!==e*s)throw new Error("convertRadix: carry overflow");s=m%n;let b=Math.floor(m/n);if(o[u]=b,!Number.isSafeInteger(b)||b*n+s!==m)throw new Error("convertRadix: carry overflow");if(a)b?a=!1:i=u;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 Sg=(t,e)=>e?Sg(e,t%e):t,ac=(t,e)=>t+(e-Sg(t,e));function pd(t,e,n,i){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(n<=0||n>32)throw new Error(`convertRadix2: wrong to=${n}`);if(ac(e,n)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${n} carryBits=${ac(e,n)}`);let r=0,o=0,s=2**n-1,a=[];for(let u of t){if(u>=2**e)throw new Error(`convertRadix2: invalid data word=${u} from=${e}`);if(r=r<<e|u,o+e>32)throw new Error(`convertRadix2: carry overflow pos=${o} from=${e}`);for(o+=e;o>=n;o-=n)a.push((r>>o-n&s)>>>0);r&=2**o-1}if(r=r<<n-o&s,!i&&o>=e)throw new Error("Excess padding");if(!i&&r)throw new Error(`Non-zero padding: ${r}`);return i&&o>0&&a.push(r>>>0),a}function vC(t){return{encode:e=>{if(!sc(e))throw new Error("radix.encode input should be Uint8Array");return hd(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(hd(e,t,2**8))}}}function kC(t,e=!1){if(t<=0||t>32)throw new Error("radix2: bits should be in (0..32]");if(ac(8,t)>32||ac(t,8)>32)throw new Error("radix2: carry overflow");return{encode:n=>{if(!sc(n))throw new Error("radix2.encode input should be Uint8Array");return pd(Array.from(n),8,t,!e)},decode:n=>{if(!Array.isArray(n)||n.length&&typeof n[0]!="number")throw new Error("radix2.decode input should be array of numbers");return Uint8Array.from(pd(n,t,8,e))}}}function CC(t,e){if(typeof e!="function")throw new Error("checksum fn should be function");return{encode(n){if(!sc(n))throw new Error("checksum.encode: input should be Uint8Array");let i=e(n).slice(0,t),r=new Uint8Array(n.length+t);return r.set(n),r.set(i,n.length),r},decode(n){if(!sc(n))throw new Error("checksum.decode: input should be Uint8Array");let i=n.slice(0,-t),r=e(i).slice(0,t),o=n.slice(-t);for(let s=0;s<t;s++)if(r[s]!==o[s])throw new Error("Invalid checksum");return i}}}var ws={alphabet:yC,chain:_C,checksum:CC,convertRadix:hd,convertRadix2:pd,radix:vC,radix2:kC,join:wC,padding:bC};var TC=t=>t[0]==="\u3042\u3044\u3053\u304F\u3057\u3093";function SC(t){ud(t,16,20,24,28,32)}function Ag(t,e=128){if(bg(e),e%32!==0||e>256)throw new TypeError("Invalid entropy");return IC(Cg(e/8),t)}var AC=t=>{let e=8-t.length/4;return new Uint8Array([Tg(t)[0]>>e<<e])};function xC(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}`)}),ws.chain(ws.checksum(1,AC),ws.radix2(11,!0),ws.alphabet(t))}function IC(t,e){return SC(t),xC(e).encode(t).join(TC(e)?"\u3000":" ")}var xg=`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 To=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Fh=new Set,bu=typeof process=="object"&&process?process:{},Rh=(t,e,n,i)=>{typeof bu.emitWarning=="function"?bu.emitWarning(t,e,n,i):console.error(`[${n}] ${e}: ${t}`)},Hs=globalThis.AbortController,Nh=globalThis.AbortSignal;if(typeof Hs>"u"){Nh=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(i,r){this._onabort.push(r)}},Hs=class{constructor(){e()}signal=new Nh;abort(i){if(!this.signal.aborted){this.signal.reason=i,this.signal.aborted=!0;for(let r of this.signal._onabort)r(i);this.signal.onabort?.(i)}}};let t=bu.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",e=()=>{t&&(t=!1,Rh("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 ab=t=>!Fh.has(t),EA=Symbol("type"),ui=t=>t&&t===Math.floor(t)&&t>0&&isFinite(t),qh=t=>ui(t)?t<=Math.pow(2,8)?Uint8Array:t<=Math.pow(2,16)?Uint16Array:t<=Math.pow(2,32)?Uint32Array:t<=Number.MAX_SAFE_INTEGER?xr:null:null,xr=class extends Array{constructor(e){super(e),this.fill(0)}},vu=class t{heap;length;static#c=!1;static create(e){let n=qh(e);if(!n)return[];t.#c=!0;let i=new t(e,n);return t.#c=!1,i}constructor(e,n){if(!t.#c)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new n(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},Zs=class t{#c;#d;#y;#m;#O;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#i;#p;#r;#n;#e;#u;#f;#a;#o;#g;#s;#k;#T;#_;#w;#S;#l;static unsafeExposeInternals(e){return{starts:e.#T,ttls:e.#_,sizes:e.#k,keyMap:e.#r,keyList:e.#n,valList:e.#e,next:e.#u,prev:e.#f,get head(){return e.#a},get tail(){return e.#o},free:e.#g,isBackgroundFetch:n=>e.#t(n),backgroundFetch:(n,i,r,o)=>e.#E(n,i,r,o),moveToTail:n=>e.#I(n),indexes:n=>e.#b(n),rindexes:n=>e.#v(n),isStale:n=>e.#h(n)}}get max(){return this.#c}get maxSize(){return this.#d}get calculatedSize(){return this.#p}get size(){return this.#i}get fetchMethod(){return this.#O}get dispose(){return this.#y}get disposeAfter(){return this.#m}constructor(e){let{max:n=0,ttl:i,ttlResolution:r=1,ttlAutopurge:o,updateAgeOnGet:s,updateAgeOnHas:a,allowStale:u,dispose:l,disposeAfter:h,noDisposeOnSet:w,noUpdateTTL:v,maxSize:T=0,maxEntrySize:I=0,sizeCalculation:x,fetchMethod:P,noDeleteOnFetchRejection:O,noDeleteOnStaleGet:E,allowStaleOnFetchRejection:B,allowStaleOnFetchAbort:$,ignoreFetchAbort:Z}=e;if(n!==0&&!ui(n))throw new TypeError("max option must be a nonnegative integer");let H=n?qh(n):Array;if(!H)throw new Error("invalid max value: "+n);if(this.#c=n,this.#d=T,this.maxEntrySize=I||this.#d,this.sizeCalculation=x,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(P!==void 0&&typeof P!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#O=P,this.#S=!!P,this.#r=new Map,this.#n=new Array(n).fill(void 0),this.#e=new Array(n).fill(void 0),this.#u=new H(n),this.#f=new H(n),this.#a=0,this.#o=0,this.#g=vu.create(n),this.#i=0,this.#p=0,typeof l=="function"&&(this.#y=l),typeof h=="function"?(this.#m=h,this.#s=[]):(this.#m=void 0,this.#s=void 0),this.#w=!!this.#y,this.#l=!!this.#m,this.noDisposeOnSet=!!w,this.noUpdateTTL=!!v,this.noDeleteOnFetchRejection=!!O,this.allowStaleOnFetchRejection=!!B,this.allowStaleOnFetchAbort=!!$,this.ignoreFetchAbort=!!Z,this.maxEntrySize!==0){if(this.#d!==0&&!ui(this.#d))throw new TypeError("maxSize must be a positive integer if specified");if(!ui(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#R()}if(this.allowStale=!!u,this.noDeleteOnStaleGet=!!E,this.updateAgeOnGet=!!s,this.updateAgeOnHas=!!a,this.ttlResolution=ui(r)||r===0?r:1,this.ttlAutopurge=!!o,this.ttl=i||0,this.ttl){if(!ui(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 te="LRU_CACHE_UNBOUNDED";ab(te)&&(Fh.add(te),Rh("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",te,t))}}getRemainingTTL(e){return this.#r.has(e)?1/0:0}#M(){let e=new xr(this.#c),n=new xr(this.#c);this.#_=e,this.#T=n,this.#B=(o,s,a=To.now())=>{if(n[o]=s!==0?a:0,e[o]=s,s!==0&&this.ttlAutopurge){let u=setTimeout(()=>{this.#h(o)&&this.delete(this.#n[o])},s+1);u.unref&&u.unref()}},this.#A=o=>{n[o]=e[o]!==0?To.now():0},this.#C=(o,s)=>{if(e[s]){let a=e[s],u=n[s];o.ttl=a,o.start=u,o.now=i||r();let l=o.now-u;o.remainingTTL=a-l}};let i=0,r=()=>{let o=To.now();if(this.ttlResolution>0){i=o;let s=setTimeout(()=>i=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],u=n[s];if(a===0||u===0)return 1/0;let l=(i||r())-u;return a-l},this.#h=o=>e[o]!==0&&n[o]!==0&&(i||r())-n[o]>e[o]}#A=()=>{};#C=()=>{};#B=()=>{};#h=()=>!1;#R(){let e=new xr(this.#c);this.#p=0,this.#k=e,this.#x=n=>{this.#p-=e[n],e[n]=0},this.#j=(n,i,r,o)=>{if(this.#t(i))return 0;if(!ui(r))if(o){if(typeof o!="function")throw new TypeError("sizeCalculation must be a function");if(r=o(i,n),!ui(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=(n,i,r)=>{if(e[n]=i,this.#d){let o=this.#d-e[n];for(;this.#p>o;)this.#D(!0)}this.#p+=e[n],r&&(r.entrySize=i,r.totalCalculatedSize=this.#p)}}#x=e=>{};#P=(e,n,i)=>{};#j=(e,n,i,r)=>{if(i||r)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#b({allowStale:e=this.allowStale}={}){if(this.#i)for(let n=this.#o;!(!this.#N(n)||((e||!this.#h(n))&&(yield n),n===this.#a));)n=this.#f[n]}*#v({allowStale:e=this.allowStale}={}){if(this.#i)for(let n=this.#a;!(!this.#N(n)||((e||!this.#h(n))&&(yield n),n===this.#o));)n=this.#u[n]}#N(e){return e!==void 0&&this.#r.get(this.#n[e])===e}*entries(){for(let e of this.#b())this.#e[e]!==void 0&&this.#n[e]!==void 0&&!this.#t(this.#e[e])&&(yield[this.#n[e],this.#e[e]])}*rentries(){for(let e of this.#v())this.#e[e]!==void 0&&this.#n[e]!==void 0&&!this.#t(this.#e[e])&&(yield[this.#n[e],this.#e[e]])}*keys(){for(let e of this.#b()){let n=this.#n[e];n!==void 0&&!this.#t(this.#e[e])&&(yield n)}}*rkeys(){for(let e of this.#v()){let n=this.#n[e];n!==void 0&&!this.#t(this.#e[e])&&(yield n)}}*values(){for(let e of this.#b())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,n={}){for(let i of this.#b()){let r=this.#e[i],o=this.#t(r)?r.__staleWhileFetching:r;if(o!==void 0&&e(o,this.#n[i],this))return this.get(this.#n[i],n)}}forEach(e,n=this){for(let i of this.#b()){let r=this.#e[i],o=this.#t(r)?r.__staleWhileFetching:r;o!==void 0&&e.call(n,o,this.#n[i],this)}}rforEach(e,n=this){for(let i of this.#v()){let r=this.#e[i],o=this.#t(r)?r.__staleWhileFetching:r;o!==void 0&&e.call(n,o,this.#n[i],this)}}purgeStale(){let e=!1;for(let n of this.#v({allowStale:!0}))this.#h(n)&&(this.delete(this.#n[n]),e=!0);return e}dump(){let e=[];for(let n of this.#b({allowStale:!0})){let i=this.#n[n],r=this.#e[n],o=this.#t(r)?r.__staleWhileFetching:r;if(o===void 0||i===void 0)continue;let s={value:o};if(this.#_&&this.#T){s.ttl=this.#_[n];let a=To.now()-this.#T[n];s.start=Math.floor(Date.now()-a)}this.#k&&(s.size=this.#k[n]),e.unshift([i,s])}return e}load(e){this.clear();for(let[n,i]of e){if(i.start){let r=Date.now()-i.start;i.start=To.now()-r}this.set(n,i.value,i)}}set(e,n,i={}){if(n===void 0)return this.delete(e),this;let{ttl:r=this.ttl,start:o,noDisposeOnSet:s=this.noDisposeOnSet,sizeCalculation:a=this.sizeCalculation,status:u}=i,{noUpdateTTL:l=this.noUpdateTTL}=i,h=this.#j(e,n,i.size||0,a);if(this.maxEntrySize&&h>this.maxEntrySize)return u&&(u.set="miss",u.maxEntrySizeExceeded=!0),this.delete(e),this;let w=this.#i===0?void 0:this.#r.get(e);if(w===void 0)w=this.#i===0?this.#o:this.#g.length!==0?this.#g.pop():this.#i===this.#c?this.#D(!1):this.#i,this.#n[w]=e,this.#e[w]=n,this.#r.set(e,w),this.#u[this.#o]=w,this.#f[w]=this.#o,this.#o=w,this.#i++,this.#P(w,h,u),u&&(u.set="add"),l=!1;else{this.#I(w);let v=this.#e[w];if(n!==v){if(this.#S&&this.#t(v)?v.__abortController.abort(new Error("replaced")):s||(this.#w&&this.#y?.(v,e,"set"),this.#l&&this.#s?.push([v,e,"set"])),this.#x(w),this.#P(w,h,u),this.#e[w]=n,u){u.set="replace";let T=v&&this.#t(v)?v.__staleWhileFetching:v;T!==void 0&&(u.oldValue=T)}}else u&&(u.set="update")}if(r!==0&&!this.#_&&this.#M(),this.#_&&(l||this.#B(w,r,o),u&&this.#C(u,w)),!s&&this.#l&&this.#s){let v=this.#s,T;for(;T=v?.shift();)this.#m?.(...T)}return this}pop(){try{for(;this.#i;){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.#l&&this.#s){let e=this.#s,n;for(;n=e?.shift();)this.#m?.(...n)}}}#D(e){let n=this.#a,i=this.#n[n],r=this.#e[n];return this.#S&&this.#t(r)?r.__abortController.abort(new Error("evicted")):(this.#w||this.#l)&&(this.#w&&this.#y?.(r,i,"evict"),this.#l&&this.#s?.push([r,i,"evict"])),this.#x(n),e&&(this.#n[n]=void 0,this.#e[n]=void 0,this.#g.push(n)),this.#i===1?(this.#a=this.#o=0,this.#g.length=0):this.#a=this.#u[n],this.#r.delete(i),this.#i--,n}has(e,n={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:r}=n,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.#C(r,o));else return i&&this.#A(o),r&&(r.has="hit",this.#C(r,o)),!0}else r&&(r.has="miss");return!1}peek(e,n={}){let{allowStale:i=this.allowStale}=n,r=this.#r.get(e);if(r!==void 0&&(i||!this.#h(r))){let o=this.#e[r];return this.#t(o)?o.__staleWhileFetching:o}}#E(e,n,i,r){let o=n===void 0?void 0:this.#e[n];if(this.#t(o))return o;let s=new Hs,{signal:a}=i;a?.addEventListener("abort",()=>s.abort(a.reason),{signal:s.signal});let u={signal:s.signal,options:i,context:r},l=(x,P=!1)=>{let{aborted:O}=s.signal,E=i.ignoreFetchAbort&&x!==void 0;if(i.status&&(O&&!P?(i.status.fetchAborted=!0,i.status.fetchError=s.signal.reason,E&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),O&&!E&&!P)return w(s.signal.reason);let B=T;return this.#e[n]===T&&(x===void 0?B.__staleWhileFetching?this.#e[n]=B.__staleWhileFetching:this.delete(e):(i.status&&(i.status.fetchUpdated=!0),this.set(e,x,u.options))),x},h=x=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=x),w(x)),w=x=>{let{aborted:P}=s.signal,O=P&&i.allowStaleOnFetchAbort,E=O||i.allowStaleOnFetchRejection,B=E||i.noDeleteOnFetchRejection,$=T;if(this.#e[n]===T&&(!B||$.__staleWhileFetching===void 0?this.delete(e):O||(this.#e[n]=$.__staleWhileFetching)),E)return i.status&&$.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),$.__staleWhileFetching;if($.__returned===$)throw x},v=(x,P)=>{let O=this.#O?.(e,o,u);O&&O instanceof Promise&&O.then(E=>x(E),P),s.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(x(),i.allowStaleOnFetchAbort&&(x=E=>l(E,!0)))})};i.status&&(i.status.fetchDispatched=!0);let T=new Promise(v).then(l,h),I=Object.assign(T,{__abortController:s,__staleWhileFetching:o,__returned:void 0});return n===void 0?(this.set(e,I,{...u.options,status:void 0}),n=this.#r.get(e)):this.#e[n]=I,I}#t(e){if(!this.#S)return!1;let n=e;return!!n&&n instanceof Promise&&n.hasOwnProperty("__staleWhileFetching")&&n.__abortController instanceof Hs}async fetch(e,n={}){let{allowStale:i=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,ttl:s=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:u=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:h=this.noUpdateTTL,noDeleteOnFetchRejection:w=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:v=this.allowStaleOnFetchRejection,ignoreFetchAbort:T=this.ignoreFetchAbort,allowStaleOnFetchAbort:I=this.allowStaleOnFetchAbort,context:x,forceRefresh:P=!1,status:O,signal:E}=n;if(!this.#S)return O&&(O.fetch="get"),this.get(e,{allowStale:i,updateAgeOnGet:r,noDeleteOnStaleGet:o,status:O});let B={allowStale:i,updateAgeOnGet:r,noDeleteOnStaleGet:o,ttl:s,noDisposeOnSet:a,size:u,sizeCalculation:l,noUpdateTTL:h,noDeleteOnFetchRejection:w,allowStaleOnFetchRejection:v,allowStaleOnFetchAbort:I,ignoreFetchAbort:T,status:O,signal:E},$=this.#r.get(e);if($===void 0){O&&(O.fetch="miss");let Z=this.#E(e,$,B,x);return Z.__returned=Z}else{let Z=this.#e[$];if(this.#t(Z)){let F=i&&Z.__staleWhileFetching!==void 0;return O&&(O.fetch="inflight",F&&(O.returnedStale=!0)),F?Z.__staleWhileFetching:Z.__returned=Z}let H=this.#h($);if(!P&&!H)return O&&(O.fetch="hit"),this.#I($),r&&this.#A($),O&&this.#C(O,$),Z;let te=this.#E(e,$,B,x),V=te.__staleWhileFetching!==void 0&&i;return O&&(O.fetch=H?"stale":"refresh",V&&H&&(O.returnedStale=!0)),V?te.__staleWhileFetching:te.__returned=te}}get(e,n={}){let{allowStale:i=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,status:s}=n,a=this.#r.get(e);if(a!==void 0){let u=this.#e[a],l=this.#t(u);return s&&this.#C(s,a),this.#h(a)?(s&&(s.get="stale"),l?(s&&i&&u.__staleWhileFetching!==void 0&&(s.returnedStale=!0),i?u.__staleWhileFetching:void 0):(o||this.delete(e),s&&i&&(s.returnedStale=!0),i?u:void 0)):(s&&(s.get="hit"),l?u.__staleWhileFetching:(this.#I(a),r&&this.#A(a),u))}else s&&(s.get="miss")}#F(e,n){this.#f[n]=e,this.#u[e]=n}#I(e){e!==this.#o&&(e===this.#a?this.#a=this.#u[e]:this.#F(this.#f[e],this.#u[e]),this.#F(this.#o,e),this.#o=e)}delete(e){let n=!1;if(this.#i!==0){let i=this.#r.get(e);if(i!==void 0)if(n=!0,this.#i===1)this.clear();else{this.#x(i);let r=this.#e[i];this.#t(r)?r.__abortController.abort(new Error("deleted")):(this.#w||this.#l)&&(this.#w&&this.#y?.(r,e,"delete"),this.#l&&this.#s?.push([r,e,"delete"])),this.#r.delete(e),this.#n[i]=void 0,this.#e[i]=void 0,i===this.#o?this.#o=this.#f[i]:i===this.#a?this.#a=this.#u[i]:(this.#u[this.#f[i]]=this.#u[i],this.#f[this.#u[i]]=this.#f[i]),this.#i--,this.#g.push(i)}}if(this.#l&&this.#s?.length){let i=this.#s,r;for(;r=i?.shift();)this.#m?.(...r)}return n}clear(){for(let e of this.#v({allowStale:!0})){let n=this.#e[e];if(this.#t(n))n.__abortController.abort(new Error("deleted"));else{let i=this.#n[e];this.#w&&this.#y?.(n,i,"delete"),this.#l&&this.#s?.push([n,i,"delete"])}}if(this.#r.clear(),this.#e.fill(void 0),this.#n.fill(void 0),this.#_&&this.#T&&(this.#_.fill(0),this.#T.fill(0)),this.#k&&this.#k.fill(0),this.#a=0,this.#o=0,this.#g.length=0,this.#p=0,this.#i=0,this.#l&&this.#s){let e=this.#s,n;for(;n=e?.shift();)this.#m?.(...n)}}};var ae=ge(ke(),1);var Qs=ge(Lh(),1),Ni=require("@mysten/sui.js/utils"),Fi=require("@mysten/sui.js/transactions");var Co=ge(ke(),1),Hh=require("@mysten/sui.js/transactions"),Wt=ge(ke(),1);var li=ge(ke(),1),ln=ge(ke(),1);var xo=ge(ke(),1);var Zh=require("@mysten/sui.js/utils"),ea=require("@mysten/sui.js/transactions"),ta=require("@mysten/sui.js/utils");var xu=ge(ke(),1),cb=Object.defineProperty,ub=(t,e,n)=>e in t?cb(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,On=(t,e,n)=>(ub(t,typeof e!="symbol"?e+"":e,n),n);var Xs=443636,Js=-443636,Cu="79226673515401279992447579055",Su="4295048016",db=14,fb="59543866431248",hb="184467440737095516",mb="15793534762490258745",pb=class{generateMnemonic(t=24){return Bh(jh,t===12?128:256)}getKeypairFromMnemonics(t,e={}){let n=this.getDerivePath(e);return zh.Ed25519Keypair.deriveKeypair(t,n)}getDerivePath(t={}){let{accountIndex:e=0,isExternal:n=!1,addressIndex:i=0}=t;return`m/44'/784'/${e}'/${n?1:0}'/${i}'`}},Ao=class{constructor(t){this.sdk=t,On(this,"_lru"),On(this,"_fetching",{})}async getCacheOrSet(t,e,n=0){var i;let r=this._lru||(this._lru=new Zs({max:100}));if(r.has(t))return r.get(t);let s=await((i=this._fetching)[t]||(i[t]=e()));return delete this._fetching[t],r.set(t,s,{ttl:n}),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 gb(t){if("reference"in t)return t.reference;let e=Iu(t);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:Gh(t)}function ia(t){var e,n;return"objectId"in t?t.objectId:(n=(e=gb(t))==null?void 0:e.objectId)!=null?n:Wh(t)}function Pn(t){var e;return"fields"in t?t.fields:(e=Vh(t))==null?void 0:e.fields}function Vh(t){let e="data"in t?Iu(t):t;if(!(!e||!_b(e)||e.content.dataType!=="moveObject"))return e.content}function _b(t){return t.content!==void 0}function Iu(t){return t.data}function Gh(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 Wh(t){if(t.error&&"object_id"in t.error&&!("version"in t.error)&&!("digest"in t.error))return t.error.object_id}function yb(t){return t.data!==void 0}function wb(t){var e;let n=yb(t)?t.data:t;return!n?.type&&"data"in t?((e=n?.content)==null?void 0:e.dataType)==="package"?"package":na(t):n?.type}function na(t){var e;return(e=Vh(t))==null?void 0:e.type}function bb(t){var e;return(e=Iu(t))==null?void 0:e.owner}var So=async(t,e,n)=>{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:n}));return(await Promise.all(o)).flat()}return await t.multiGetObjects({ids:e,options:n})},vb=class extends Ao{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 So(this.provider,Object.values(e),{showContent:!0})).map(i=>{let r=Pn(i),o=ia(i),s=na(i);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())}},$h=new ae.default(2).pow(new ae.default(128)),kb=class{priceToSqrtPriceX64(t,e,n){return new ae.default(new N(t).mul(N.pow(10,n-e)).sqrt().mul(N.pow(2,64)).floor().toFixed(0))}sqrtPriceX64ToPrice(t,e,n){return new N(t.toString()).mul(N.pow(2,-64)).pow(2).mul(N.pow(10,e-n))}priceToTickIndex(t,e,n){return this.sqrtPriceX64ToTickIndex(this.priceToSqrtPriceX64(t,e,n))}sqrtPriceX64ToTickIndex(t){if(t.gt(new ae.default(Cu))||t.lt(new ae.default(Su)))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let e=t.bitLength()-1,n=new ae.default(e-64),i=this.signedShiftLeft(n,32,128),r=new ae.default("8000000000000000","hex"),o=0,s=new ae.default(0),a=e>=64?t.shrn(e-63):t.shln(63-e);for(;r.gt(new ae.default(0))&&o<db;){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 u=s.shrn(32),h=i.add(u).mul(new ae.default(fb)),w=this.signedShiftRight(h.sub(new ae.default(hb)),64,128).toNumber(),v=this.signedShiftRight(h.add(new ae.default(mb)),64,128).toNumber();return w==v?w:this.tickIndexToSqrtPriceX64(v).lte(t)?v:w}tickIndexToSqrtPriceX64(t){return t>0?new ae.default(this.tickIndexToSqrtPricePositive(t)):new ae.default(this.tickIndexToSqrtPriceNegative(t))}tickIndexToPrice(t,e,n){return this.sqrtPriceX64ToPrice(this.tickIndexToSqrtPriceX64(t),e,n)}toX64_Decimal(t){return t.mul(N.pow(2,64))}fromX64_Decimal(t){return t.mul(N.pow(2,-64))}scaleDown(t,e){return new N(t).div(N.pow(10,e)).toString()}scaleUp(t,e){return new N(t).mul(N.pow(10,e)).toString()}bitsToNumber(t,e=32){return Qs.default.toNumber(Qs.default.asIntN(e,Qs.default.BigInt(t)))}subUnderflowU128(t,e){return t.add($h).sub(e).mod($h)}tickIndexToSqrtPricePositive(t){let e;return t&1?e=new ae.default("79232123823359799118286999567"):e=new ae.default("79228162514264337593543950336"),t&2&&(e=this.signedShiftRight(e.mul(new ae.default("79236085330515764027303304731")),96,256)),t&4&&(e=this.signedShiftRight(e.mul(new ae.default("79244008939048815603706035061")),96,256)),t&8&&(e=this.signedShiftRight(e.mul(new ae.default("79259858533276714757314932305")),96,256)),t&16&&(e=this.signedShiftRight(e.mul(new ae.default("79291567232598584799939703904")),96,256)),t&32&&(e=this.signedShiftRight(e.mul(new ae.default("79355022692464371645785046466")),96,256)),t&64&&(e=this.signedShiftRight(e.mul(new ae.default("79482085999252804386437311141")),96,256)),t&128&&(e=this.signedShiftRight(e.mul(new ae.default("79736823300114093921829183326")),96,256)),t&256&&(e=this.signedShiftRight(e.mul(new ae.default("80248749790819932309965073892")),96,256)),t&512&&(e=this.signedShiftRight(e.mul(new ae.default("81282483887344747381513967011")),96,256)),t&1024&&(e=this.signedShiftRight(e.mul(new ae.default("83390072131320151908154831281")),96,256)),t&2048&&(e=this.signedShiftRight(e.mul(new ae.default("87770609709833776024991924138")),96,256)),t&4096&&(e=this.signedShiftRight(e.mul(new ae.default("97234110755111693312479820773")),96,256)),t&8192&&(e=this.signedShiftRight(e.mul(new ae.default("119332217159966728226237229890")),96,256)),t&16384&&(e=this.signedShiftRight(e.mul(new ae.default("179736315981702064433883588727")),96,256)),t&32768&&(e=this.signedShiftRight(e.mul(new ae.default("407748233172238350107850275304")),96,256)),t&65536&&(e=this.signedShiftRight(e.mul(new ae.default("2098478828474011932436660412517")),96,256)),t&131072&&(e=this.signedShiftRight(e.mul(new ae.default("55581415166113811149459800483533")),96,256)),t&262144&&(e=this.signedShiftRight(e.mul(new ae.default("38992368544603139932233054999993551")),96,256)),this.signedShiftRight(e,32,256)}tickIndexToSqrtPriceNegative(t){let e=Math.abs(t),n;return e&1?n=new ae.default("18445821805675392311"):n=new ae.default("18446744073709551616"),e&2&&(n=this.signedShiftRight(n.mul(new ae.default("18444899583751176498")),64,256)),e&4&&(n=this.signedShiftRight(n.mul(new ae.default("18443055278223354162")),64,256)),e&8&&(n=this.signedShiftRight(n.mul(new ae.default("18439367220385604838")),64,256)),e&16&&(n=this.signedShiftRight(n.mul(new ae.default("18431993317065449817")),64,256)),e&32&&(n=this.signedShiftRight(n.mul(new ae.default("18417254355718160513")),64,256)),e&64&&(n=this.signedShiftRight(n.mul(new ae.default("18387811781193591352")),64,256)),e&128&&(n=this.signedShiftRight(n.mul(new ae.default("18329067761203520168")),64,256)),e&256&&(n=this.signedShiftRight(n.mul(new ae.default("18212142134806087854")),64,256)),e&512&&(n=this.signedShiftRight(n.mul(new ae.default("17980523815641551639")),64,256)),e&1024&&(n=this.signedShiftRight(n.mul(new ae.default("17526086738831147013")),64,256)),e&2048&&(n=this.signedShiftRight(n.mul(new ae.default("16651378430235024244")),64,256)),e&4096&&(n=this.signedShiftRight(n.mul(new ae.default("15030750278693429944")),64,256)),e&8192&&(n=this.signedShiftRight(n.mul(new ae.default("12247334978882834399")),64,256)),e&16384&&(n=this.signedShiftRight(n.mul(new ae.default("8131365268884726200")),64,256)),e&32768&&(n=this.signedShiftRight(n.mul(new ae.default("3584323654723342297")),64,256)),e&65536&&(n=this.signedShiftRight(n.mul(new ae.default("696457651847595233")),64,256)),e&131072&&(n=this.signedShiftRight(n.mul(new ae.default("26294789957452057")),64,256)),e&262144&&(n=this.signedShiftRight(n.mul(new ae.default("37481735321082")),64,256)),n}signedShiftLeft(t,e,n){let i=t.toTwos(n).shln(e);return i.imaskn(n+1),i.fromTwos(n)}signedShiftRight(t,e,n){let i=t.toTwos(n).shrn(e);return i.imaskn(n-e+1),i.fromTwos(n-e)}},Au=(t,e)=>{let n=ia(t);if(Gh(t))throw new Error(`${e}(${n}) had been deleted`);if(Wh(t))throw new Error(`${e}(${n}) is not found`);return!0},Ir=60*1e3,Tb=class extends Ao{async getPools(t=!1){let e=await this.contract.getConfig(),n=[],i;do i=await this.provider.getDynamicFields({parentId:e.PoolTableId,cursor:i?.nextCursor,limit:15}),n.push(...i.data.map(a=>a.objectId));while(i.hasNextPage);if(!n.length)return[];let o=(await So(this.provider,n,{showContent:!0})).map(a=>Pn(a).value.fields.pool_id);if(!o.length)return[];let s=await So(this.provider,o,{showContent:!0});return t||(s=s.filter(a=>Pn(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 Au(e,"pool"),this.parsePool(e)},1500)}async createPool(t){let{fee:e,address:n,tickLower:i,tickUpper:r,sqrtPrice:o,slippage:s,coinTypeA:a,coinTypeB:u}=t,l=await this.contract.getConfig(),h=new N(t.amountA),w=new N(t.amountB),[v,T]=await Promise.all([this.coin.selectTradeCoins(n,a,h),this.coin.selectTradeCoins(n,u,w)]),I=t.txb||new Fi.TransactionBlock,x=v.length>0?this.coin.convertTradeCoins(I,v,a,h):[this.coin.zero(a,I)],P=T.length>0?this.coin.convertTradeCoins(I,T,u,w):[this.coin.zero(u,I)];return I.moveCall({target:`${l.PackageId}::pool_factory::deploy_pool_and_mint`,typeArguments:[a,u,e.type],arguments:[I.object(l.PoolConfig),I.object(e.objectId),I.pure(o,"u128"),I.object(l.Positions),I.makeMoveVec({objects:x}),I.makeMoveVec({objects:P}),I.pure(Math.abs(i).toFixed(0),"u32"),I.pure(i<0,"bool"),I.pure(Math.abs(r).toFixed(0),"u32"),I.pure(r<0,"bool"),I.pure(h.toFixed(0),"u64"),I.pure(w.toFixed(0),"u64"),I.pure(this.getMinimumAmountBySlippage(h,s),"u64"),I.pure(this.getMinimumAmountBySlippage(w,s),"u64"),I.pure(n,"address"),I.pure(Date.now()+Ir,"u64"),I.object(Ni.SUI_CLOCK_OBJECT_ID),I.object(l.Versioned)]}),I}async addLiquidity(t){let{address:e,tickLower:n,tickUpper:i,slippage:r,pool:o}=t,s=await this.contract.getConfig(),a=await this.getPoolTypeArguments(o),[u,l]=a,[h,w]=await Promise.all([this.coin.getMetadata(u),this.coin.getMetadata(l)]);if(!h||!w)throw new Error("Invalid coin type");let v=new N(t.amountA),T=new N(t.amountB),[I,x]=await Promise.all([this.coin.selectTradeCoins(e,u,v),this.coin.selectTradeCoins(e,l,T)]),P=t.txb||new Fi.TransactionBlock,O=I.length>0?this.coin.convertTradeCoins(P,I,u,v):[this.coin.zero(u,P)],E=x.length>0?this.coin.convertTradeCoins(P,x,l,T):[this.coin.zero(l,P)];return P.moveCall({target:`${s.PackageId}::position_manager::mint`,typeArguments:a,arguments:[P.object(o),P.object(s.Positions),P.makeMoveVec({objects:O}),P.makeMoveVec({objects:E}),P.pure(Math.abs(n).toFixed(0),"u32"),P.pure(n<0,"bool"),P.pure(Math.abs(i).toFixed(0),"u32"),P.pure(i<0,"bool"),P.pure(v.toFixed(0),"u64"),P.pure(T.toFixed(0),"u64"),P.pure(this.getMinimumAmountBySlippage(v,r),"u64"),P.pure(this.getMinimumAmountBySlippage(T,r),"u64"),P.pure(e,"address"),P.pure(Date.now()+Ir,"u64"),P.object(Ni.SUI_CLOCK_OBJECT_ID),P.object(s.Versioned)]}),P}async increaseLiquidity(t){let{pool:e,slippage:n,address:i,nft:r}=t,o=await this.contract.getConfig(),s=new N(t.amountA),a=new N(t.amountB),u=await this.getPoolTypeArguments(e),[l,h]=u,[w,v]=await Promise.all([this.coin.selectTradeCoins(i,l,s),this.coin.selectTradeCoins(i,h,a)]),T=t.txb||new Fi.TransactionBlock,I=w.length>0?this.coin.convertTradeCoins(T,w,l,s):[this.coin.zero(l,T)],x=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:u,arguments:[T.object(e),T.object(o.Positions),T.makeMoveVec({objects:I}),T.makeMoveVec({objects:x}),T.object(r),T.pure(s.toFixed(0),"u64"),T.pure(a.toFixed(0),"u64"),T.pure(this.getMinimumAmountBySlippage(s,n),"u64"),T.pure(this.getMinimumAmountBySlippage(a,n),"u64"),T.pure(Date.now()+Ir*3,"u64"),T.object(Ni.SUI_CLOCK_OBJECT_ID),T.object(o.Versioned)]}),T}async decreaseLiquidity(t){let{slippage:e,nft:n,pool:i,decreaseLiquidity:r}=t,o=new N(t.amountA),s=new N(t.amountB),a=await this.contract.getConfig(),u=await this.getPoolTypeArguments(i),l=t.txb||new Fi.TransactionBlock;return l.moveCall({target:`${a.PackageId}::position_manager::decrease_liquidity`,typeArguments:u,arguments:[l.object(i),l.object(a.Positions),l.object(n),l.pure(new Co.default(r).toString(),"u128"),l.pure(this.getMinimumAmountBySlippage(o,e),"u64"),l.pure(this.getMinimumAmountBySlippage(s,e),"u64"),l.pure(Date.now()+Ir*3,"u64"),l.object(Ni.SUI_CLOCK_OBJECT_ID),l.object(a.Versioned)]}),l}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:n,address:i,collectAmountA:r,collectAmountB:o}=t,s=t.txb||new Fi.TransactionBlock;if(Number(r)===0&&Number(o)===0)return s;let a=await this.contract.getConfig(),u=await this.getPoolTypeArguments(e);return s.moveCall({target:`${a.PackageId}::position_manager::collect`,typeArguments:u,arguments:[s.object(e),s.object(a.Positions),s.object(n),s.pure(r,"u64"),s.pure(o,"u64"),s.pure(i),s.pure(Date.now()+Ir*3,"u64"),s.object(Ni.SUI_CLOCK_OBJECT_ID),s.object(a.Versioned)]}),s}async collectReward(t){let{pool:e,nft:n,rewardAmounts:i,address:r}=t,o=t.txb||new Fi.TransactionBlock,s=await this.contract.getConfig(),a=await this.getPoolTypeArguments(e);return(await this.getPool(e)).reward_infos.forEach((l,h)=>{o.moveCall({target:`${s.PackageId}::position_manager::collect_reward`,typeArguments:[...a,l.fields.vault_coin_type],arguments:[o.object(e),o.object(s.Positions),o.object(n),o.object(l.fields.vault),o.pure(h,"u64"),o.pure(i[h],"u64"),o.pure(r),o.pure(Date.now()+Ir*3,"u64"),o.object(Ni.SUI_CLOCK_OBJECT_ID),o.object(s.Versioned)]})}),o}getTokenAmountsFromLiquidity(t){let e=new N((t.liquidity||new Co.default(1e8)).toString()),n=new N(t.currentSqrtPrice.toString()),i=new N(t.lowerSqrtPrice.toString()),r=new N(t.upperSqrtPrice.toString()),o,s;t.currentSqrtPrice.lt(t.lowerSqrtPrice)?(o=this.math.toX64_Decimal(e).mul(r.sub(i)).div(i.mul(r)),s=new N(0)):t.currentSqrtPrice.lt(t.upperSqrtPrice)?(o=this.math.toX64_Decimal(e).mul(r.sub(n)).div(n.mul(r)),s=this.math.fromX64_Decimal(e.mul(n.sub(i)))):(o=new N(0),s=this.math.fromX64_Decimal(e.mul(r.sub(i))));let a=t.ceil!==!1?"ceil":"floor";return[new Co.default(o[a]().toString()),new Co.default(s[a]().toString())]}async getPoolTypeArguments(t){return this.getCacheOrSet("pool-type-"+t,async()=>(await this.getPool(t)).types)}parsePoolType(t,e){var n;let i=((n=t.replace(">","").split("<")[1])==null?void 0:n.split(/,\s*/))||[];if(e!==void 0&&e!==i.length)throw new Error("Invalid pool type");return i}async getFixedLiquidity(t){var e,n;let{coinTypeA:i,coinTypeB:r,amountA:o,amountB:s}=t,[a,u]=await Promise.all([this.coin.getMetadata(i),this.coin.getMetadata(r)]),l=new N(this.math.scaleDown(o,a.decimals)).mul((e=t.priceA)!=null?e:1),h=new N(this.math.scaleDown(s,u.decimals)).mul((n=t.priceB)!=null?n:1);return{liquidityA:l.toString(),liquidityB:h.toString(),liquidity:l.plus(h).toString()}}parsePool(t){let e=Pn(t),n=ia(t),i=wb(t),r=this.parsePoolType(i,3);return this.getCacheOrSet("pool-type-"+n,async()=>r),{...e,objectId:n,type:i,types:r}}getMinimumAmountBySlippage(t,e){let n=new N(t),i=new N(1).minus(new N(e).div(100));if(i.lte(0)||i.gt(1))throw new Error("invalid slippage range");return n.mul(i).toFixed(0)}},Cb=(t,e)=>{let{pool:n,position:i,tickLowerDetail:r,tickUpperDetail:o}=e,s=new li.default(n.fee_growth_global_a),a=new li.default(i.fee_growth_inside_a),u=new li.default(i.tokens_owed_a),l=new li.default(n.fee_growth_global_b),h=new li.default(i.fee_growth_inside_b),w=new li.default(i.tokens_owed_b),v=new li.default(i.liquidity),T,I,x,P,O=t.bitsToNumber(n.tick_current_index.fields.bits),E=t.bitsToNumber(i.tick_lower_index.fields.bits),B=t.bitsToNumber(i.tick_upper_index.fields.bits);O<E?(T=t.subUnderflowU128(s,r.feeGrowthOutsideA),I=t.subUnderflowU128(l,r.feeGrowthOutsideB)):(T=r.feeGrowthOutsideA,I=r.feeGrowthOutsideB),O<B?(x=o.feeGrowthOutsideA,P=o.feeGrowthOutsideB):(x=t.subUnderflowU128(s,o.feeGrowthOutsideA),P=t.subUnderflowU128(l,o.feeGrowthOutsideB));let $=t.subUnderflowU128(t.subUnderflowU128(s,T),x),Z=t.subUnderflowU128(t.subUnderflowU128(l,I),P),H=t.subUnderflowU128($,a).mul(v).shrn(64),te=t.subUnderflowU128(Z,h).mul(v).shrn(64);return{feeOwedA:u.add(H).toString(),feeOwedB:w.add(te).toString()}},Uh=new xo.default(0),Kh=new xo.default(1),Sb=new xo.default(2),Ab={mul(t,e,n){let i=t.mul(e);if(this.isOverLimit(i,n))throw new Error(`Mul result higher than u${n}`);return i},mulDiv(t,e,n,i){return this.mulDivRoundUpIf(t,e,n,!1,i)},mulDivRoundUpIf(t,e,n,i,r){if(n.eq(Uh))throw new Error("mulDiv denominator is zero");let o=this.mul(t,e,r),s=o.div(n);return i&&o.mod(n).gt(Uh)?s.add(Kh):s},isOverLimit(t,e){let n=Sb.pow(new xo.default(e)).sub(Kh);return t.gt(n)}},xb=(t,e)=>{var n,i,r,o;let{pool:s,position:a,tickLowerDetail:u,tickUpperDetail:l,timeStampInSeconds:h}=e,w=new ln.default(new N(s.reward_last_updated_time_ms).div(1e3).toFixed(0)),T=(h??new ln.default(Date.now()).div(new ln.default(1e3))).sub(new ln.default(w)),I=[],x=new ln.default(s.liquidity),P=new ln.default(a.liquidity);for(let O=0;O<3;++O){let E=s.reward_infos[O],B={emissionsPerSecondX64:new ln.default(E?E.fields.emissions_per_second:"0"),growthGlobalX64:new ln.default(E?E.fields.growth_global:"0")},$={growthInsideCheckpoint:new ln.default((i=(n=a.reward_infos[O])==null?void 0:n.fields.reward_growth_inside)!=null?i:"0"),amountOwed:new ln.default((o=(r=a.reward_infos[O])==null?void 0:r.fields.amount_owed)!=null?o:"0")},Z=B.growthGlobalX64;if(!x.isZero()){let C=Ab.mulDiv(T,B.emissionsPerSecondX64,x,128);Z=B.growthGlobalX64.add(C)}let H=u.rewardGrowthsOutside[O],te=l.rewardGrowthsOutside[O],U=Z;u.initialized&&(U=t.bitsToNumber(s.tick_current_index.fields.bits)<t.bitsToNumber(a.tick_lower_index.fields.bits)?t.subUnderflowU128(Z,H):H);let V=new ln.default(0);l.initialized&&(V=t.bitsToNumber(s.tick_current_index.fields.bits)<t.bitsToNumber(a.tick_upper_index.fields.bits)?te:t.subUnderflowU128(Z,te));let F=t.subUnderflowU128(t.subUnderflowU128(Z,U),V),K=$.amountOwed.shln(64);I[O]=K.add(t.subUnderflowU128(F,$.growthInsideCheckpoint).mul(P)).shrn(64).toString()}return I},Ib=class extends Ao{async getOwner(t){let e=await this.getObject(t),n=bb(e);if(!(!n||typeof n=="string")){if("ObjectOwner"in n)return n.ObjectOwner;if("AddressOwner"in n)return n.AddressOwner}}async getFields(t){let e=await this.getObject(t);return Pn(e)}async getPositionFields(t){let e=await this.contract.getConfig(),n=await this.provider.getDynamicFieldObject({parentId:e.Positions,name:{type:"address",value:t}});return Pn(n)}async getPositionFieldsByPositionId(t){let e=await this.provider.getObject({id:t,options:{showContent:!0}});return Au(e,"position"),Pn(e)}async getPositionTick(t,e){let n=await this.provider.getDynamicFieldObject({parentId:t,name:{type:e.type,value:e.fields}}),i=Pn(n);if(i)return{tickIndex:this.math.bitsToNumber(i.name.fields.bits),initialized:i.value.fields.initialized,liquidityNet:new Wt.default(this.math.bitsToNumber(i.value.fields.liquidity_net.fields.bits,128).toString()),liquidityGross:new Wt.default(i.value.fields.liquidity_gross),feeGrowthOutsideA:new Wt.default(i.value.fields.fee_growth_outside_a),feeGrowthOutsideB:new Wt.default(i.value.fields.fee_growth_outside_b),rewardGrowthsOutside:i.value.fields.reward_growths_outside.map(r=>new Wt.default(r))}}async getPositionAPR(t){let{poolId:e,getPrice:n,fees24h:i,tickLower:r,tickUpper:o}=t,s=await this.pool.getPool(e),a=this.math.bitsToNumber(s.tick_current_index.fields.bits),[u,l,h,w]=await Promise.all([this.coin.getMetadata(s.types[0]),this.coin.getMetadata(s.types[1]),n(s.types[0]),n(s.types[1])]);if(!h||!w||r>=o||a<r||a>=o)return{fees:"0",rewards:"0",total:"0"};let{minTokenA:v,minTokenB:T}=this.getRemoveLiquidityQuote(s,r,o),I=new N(this.math.scaleDown(v.toString(),u.decimals)).mul(h),x=new N(this.math.scaleDown(T.toString(),l.decimals)).mul(w),P=I.add(x),O=P.isZero()?new N(0):new N(i).mul(365).div(P).mul(100),E=new N(0);return await Promise.all(s.reward_infos.map(async B=>{let{emissions_per_second:$}=B.fields,Z=this.coin.formatCoinType(B.fields.vault_coin_type),[H,te]=await Promise.all([n(Z),this.coin.getMetadata(Z)]);!$||$==="0"||!H||(E=E.add(new N(new Wt.default($).shrn(64).toString()).div(10**te.decimals).mul(31536e3).mul(H).div(P).mul(100)))})),{fees:O.toString(),rewards:E.toString(),total:O.plus(E).toString()}}getRemoveLiquidityQuote(t,e,n){let i=new Wt.default(0),r=new Wt.default(t.liquidity),o=this.math.bitsToNumber(t.tick_current_index.fields.bits),s=this.math.tickIndexToSqrtPriceX64(e),a=this.math.tickIndexToSqrtPriceX64(n);if(o<e){let l=this.getTokenAFromLiquidity(r,s,a);return{minTokenA:this.adjustForSlippage(l),minTokenB:i}}if(o<n){let l=new Wt.default(t.sqrt_price),h=this.getTokenAFromLiquidity(r,l,a),w=this.getTokenBFromLiquidity(r,s,l);return{minTokenA:this.adjustForSlippage(h),minTokenB:this.adjustForSlippage(w)}}let u=this.getTokenBFromLiquidity(r,s,a);return{minTokenA:i,minTokenB:this.adjustForSlippage(u)}}adjustForSlippage(t){let e={numerator:new Wt.default(0),denominator:new Wt.default(1e3)};return t.mul(e.denominator).div(e.denominator.add(e.numerator))}getTokenAFromLiquidity(t,e,n){let i=t.mul(n.sub(e)).shln(64),r=n.mul(e);return i.div(r)}getTokenBFromLiquidity(t,e,n){return t.mul(n.sub(e)).shrn(64)}async burn(t){let{pool:e,nft:n}=t,i=t.txb||new Hh.TransactionBlock,r=await this.contract.getConfig(),o=await this.pool.getPoolTypeArguments(e);return i.moveCall({target:`${r.PackageId}::position_manager::burn`,typeArguments:o,arguments:[i.object(r.Positions),i.object(n),i.object(r.Versioned)]}),i}async getPositionLiquidityUSD(t){let{position:e,poolId:n,priceA:i,priceB:r}=t,o=await this.pool.getPool(n),s=this.pool.getTokenAmountsFromLiquidity({currentSqrtPrice:new Wt.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 Wt.default(e.liquidity===void 0?1e8:e.liquidity)}),[a,u]=await Promise.all([this.coin.getMetadata(o.types[0]),this.coin.getMetadata(o.types[1])]),l=new N(s[0].toString()).div(10**a.decimals).mul(i||0),h=new N(s[1].toString()).div(10**u.decimals).mul(r||0);return l.plus(h).toString()}async getUnclaimedFeesAndRewards(t){let{position:e,poolId:n}=t,[i,r,o]=await Promise.all([this.pool.getPool(n),this.nft.getPositionTick(n,e.tick_lower_index),this.nft.getPositionTick(n,e.tick_upper_index)]),s={...t,pool:i,tickLowerDetail:r,tickUpperDetail:o},[a,u]=await Promise.all([this.getUnclaimedFees(s),this.getUnclaimedRewards(s)]),{unclaimedFees:l,...h}=a,{unclaimedRewards:w,...v}=u;return{fees:a.unclaimedFees.toString(),rewards:w.toString(),total:l.plus(w).toString(),fields:{...h,...v}}}async getUnclaimedFees(t){let{position:e,pool:n,getPrice:i,tickLowerDetail:r,tickUpperDetail:o}=t,[s,a,u,l]=await Promise.all([this.coin.getMetadata(n.types[0]),this.coin.getMetadata(n.types[1]),i(n.types[0]),i(n.types[1])]),h=Cb(this.math,{pool:n,position:e,tickLowerDetail:r,tickUpperDetail:o}),w=this.math.scaleDown(h.feeOwedA,s.decimals),v=this.math.scaleDown(h.feeOwedB,a.decimals);function T(P,O){return new N(1e6).mul(N.pow(10,O)).lt(P)}T(w,s.decimals)&&(w="0",h.feeOwedA="0"),T(v,a.decimals)&&(v="0",h.feeOwedB="0");let I=u===void 0?new N(0):new N(u).mul(w),x=l===void 0?new N(0):new N(l).mul(v);return{unclaimedFees:I.plus(x),scaledFeeOwedA:w,scaledFeeOwedB:v,...h}}async getUnclaimedRewards(t){let{position:e,pool:n,getPrice:i,tickLowerDetail:r,tickUpperDetail:o}=t,s=xb(this.math,{pool:n,position:e,tickLowerDetail:r,tickUpperDetail:o}),a=[...s],u=n.reward_infos.map(v=>this.coin.formatCoinType(v.fields.vault_coin_type)),l=await Promise.all([...n.reward_infos.map((v,T)=>this.coin.getMetadata(u[T]))]),h=await Promise.all(n.reward_infos.map((v,T)=>i(u[T])));l.forEach((v,T)=>{a[T]=this.math.scaleDown(a[T],v.decimals)});let w=new N(0);return n.reward_infos.some((v,T)=>{let I=h[T];return I?(w=w.plus(new N(I).mul(a[T])),!1):(w=w.plus(1),!0)}),{unclaimedRewards:w,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 Au(e,"nft"),e})}},Ob=class extends Ao{isSUI(t){return(0,Zh.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,n){if(n.eq(0))return[];let i=[],r=[],o=new N(0),s;do s=await this.provider.getCoins({owner:t,coinType:e,cursor:s?.nextCursor}),i.push(...s.data);while(s.hasNextPage);i.sort((a,u)=>Number(u.balance)-Number(a.balance));for(let a of i)if(r.push(a.coinObjectId),o=o.add(a.balance),o.gte(n))break;return r}convertTradeCoins(t,e,n,i){return this.isSUI(n)?[t.splitCoins(t.gas,[t.pure(i.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 i=t.replace(/^0x/i,"");return i=i.replace(/^0+(2::sui::SUI)$/,"$1"),"0x"+(e&&i.length<64&&t!=="2::sui:SUI"?"0".repeat(64-i.length):"")+i}},Pb=60*1e3,Ys=100,Db=class extends Ao{async swap(t){let{coinTypeA:e,coinTypeB:n,address:i,amountSpecifiedIsInput:r,slippage:o}=t,s=new N(t.amountA),a=new N(t.amountB),u=await this.contract.getConfig(),l=await Promise.all(t.routes.map(async x=>{let P=await this.pool.getPoolTypeArguments(x.pool),[O,E]=await Promise.all([this.coin.getMetadata(P[0]),this.coin.getMetadata(P[1])]);return{...x,coinA:O,coinB:E,typeArguments:P}})),h=await this.coin.selectTradeCoins(i,e,s),{functionName:w,typeArguments:v}=this.getFunctionNameAndTypeArguments(l.map(({typeArguments:x})=>x),e,n),T=l.map(({nextTickIndex:x,coinA:P,coinB:O,a2b:E})=>{let B=this.math.tickIndexToPrice(x,P.decimals,O.decimals);return this.sqrtPriceWithSlippage(B,o,E,P.decimals,O.decimals)}),I=t.txb||new ea.TransactionBlock;return I.moveCall({target:`${u.PackageId}::swap_router::${w}`,typeArguments:v,arguments:[...l.map(({pool:x})=>I.object(x)),I.makeMoveVec({objects:this.coin.convertTradeCoins(I,h,e,s)}),I.pure((r?s:a).toFixed(0),"u64"),I.pure(this.amountOutWithSlippage(r?a:s,o,r),"u64"),...T.map(x=>I.pure(x,"u128")),I.pure(r,"bool"),I.pure(i,"address"),I.pure(Date.now()+Pb*3,"u64"),I.object(ta.SUI_CLOCK_OBJECT_ID),I.object(u.Versioned)]}),I}async computeSwapResult(t){let{pools:e,amountSpecified:n,amountSpecifiedIsInput:i,address:r,tickStep:o}=t,s=await this.contract.getConfig(),a=e.map(w=>w.pool),u=await So(this.provider,a,{showContent:!0}),l=new ea.TransactionBlock;u.map(async w=>{let v=Pn(w),T=e.find(E=>E.pool===v.id.id),I=this.math.bitsToNumber(v.tick_current_index.fields.bits),x=I-v.tick_spacing*(o||Ys),P=I+v.tick_spacing*(o||Ys);x=x<Js?Js:x,P=P>Xs?Xs:P;let O=this.pool.parsePoolType(na(w));l.moveCall({target:`${s.PackageId}::pool_fetcher::compute_swap_result`,typeArguments:O,arguments:[l.object(v.id.id),l.pure(T.a2b,"bool"),l.pure(new N(n).toFixed(0),"u128"),l.pure(i,"bool"),l.pure(this.math.tickIndexToSqrtPriceX64(T.a2b?x:P).toString(),"u128"),l.object(ta.SUI_CLOCK_OBJECT_ID),l.object(s.Versioned)]})});let h=await this.provider.devInspectTransactionBlock({transactionBlock:l,sender:r});if(h.error)throw new Error(h.error);return h.events.map(w=>w.parsedJson)}async computeSwapResultV2(t){let{pools:e,amountSpecifiedIsInput:n,address:i,tickStep:r}=t,o=await this.contract.getConfig(),s=e.map(h=>h.pool),a=await So(this.provider,Array.from(new Set(s)),{showContent:!0}),u=new ea.TransactionBlock;e.forEach(async h=>{let w=a.find(O=>ia(O)===h.pool),v=Pn(w),T=this.math.bitsToNumber(v.tick_current_index.fields.bits),I=T-v.tick_spacing*(r||Ys),x=T+v.tick_spacing*(r||Ys);I=I<Js?Js:I,x=x>Xs?Xs:x;let P=this.pool.parsePoolType(na(w));u.moveCall({target:`${o.PackageId}::pool_fetcher::compute_swap_result`,typeArguments:P,arguments:[u.object(v.id.id),u.pure(h.a2b,"bool"),u.pure(new N(h.amountSpecified).toFixed(0),"u128"),u.pure(n,"bool"),u.pure(this.math.tickIndexToSqrtPriceX64(h.a2b?I:x).toString(),"u128"),u.object(ta.SUI_CLOCK_OBJECT_ID),u.object(o.Versioned)]})});let l=await this.provider.devInspectTransactionBlock({transactionBlock:u,sender:i});if(l.error)throw new Error(l.error);return l.events.map(h=>h.parsedJson)}getFunctionNameAndTypeArguments(t,e,n){let i=[],r=["swap"];if(t.length===1)i=t[0],e===i[0]?r.push("a","b"):r.push("b","a");else{let o=t[0],s=t[1];e===o[0]?(r.push("a","b"),i.push(o[0],o[2],o[1])):(r.push("b","a"),i.push(o[1],o[2],o[0])),i.push(s[2],n),n===s[0]?r.push("c","b"):r.push("b","c")}return{functionName:r.join("_"),typeArguments:i}}amountOutWithSlippage(t,e,n){if(n){let r=new N(100).minus(e).div(100);return new N(t).mul(r).toFixed(0)}let i=new N(100).plus(e).div(100);return new N(t).mul(i).toFixed(0)}sqrtPriceWithSlippage(t,e,n,i,r){let o=new N(t).mul(n?new N(100).minus(e).div(100):new N(100).plus(e).div(100)),s=this.math.priceToSqrtPriceX64(o,i,r);return s.lt(new xu.BN(Su))?Su:s.gt(new xu.BN(Cu))?Cu:s.toString()}},Rt=class{constructor(t,e){this.network=t,On(this,"pool"),On(this,"contract"),On(this,"math",new kb),On(this,"account",new pb),On(this,"coin"),On(this,"nft"),On(this,"trade"),On(this,"provider"),this.provider=e?e instanceof Ri.SuiClient?e:new Ri.SuiClient(e):new Ri.SuiClient({url:t==="mainnet"?(0,Ri.getFullnodeUrl)("mainnet"):(0,Ri.getFullnodeUrl)("testnet")}),this.contract=new vb(this),this.pool=new Tb(this),this.nft=new Ib(this),this.coin=new Ob(this),this.trade=new Db(this)}};var Eb=Object.defineProperty,km=(t,e)=>{for(var n in e)Eb(t,n,{get:e[n],enumerable:!0})},ve=class{constructor(t){this.data=t}get application(){return"msafe-core"}serialize(){return JSON.stringify((0,Cm.default)(this.data))}},Ku={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"},tn={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"}]}}},Dn=new ar(Ku),Mb=async(t,e,n)=>(console.log("getAddLiquidityTxb suiClient: ",n),console.log("getAddLiquidityTxb txbParams: ",t),Dn.senderAddress=e.address,await Dn.Position.createAddLiquidityFixTokenPayload(t?.parameter,t?.gasEstimateArg)),Bb=async(t,e,n)=>(console.log("getIncreaseLiquidityTxb suiClient: ",n),Dn.senderAddress=e.address,console.log("getIncreaseLiquidityTxb txbParams: ",t),await Dn.Position.createAddLiquidityFixTokenPayload(t?.parameter,t?.gasEstimateArg)),jb=async(t,e,n)=>(console.log("getRemoveLiquidityTxb txbParams: ",t),console.log("getRemoveLiquidityTxb suiClient: ",n),Dn.senderAddress=e.address,await Dn.Position.closePositionTransactionPayload(t?.parameter)),Nb=async(t,e,n)=>(console.log("getDecreaseLiquidityTxb txbParams: ",t),console.log("getDecreaseLiquidityTxb suiClient: ",n),Dn.senderAddress=e.address,await Dn.Position.removeLiquidityTransactionPayload(t?.parameter)),Fb=async(t,e,n)=>(console.log("getClaimFeeAndMiningTxb txbParams: ",t),console.log("getClaimFeeAndMiningTxb suiClient: ",n),Dn.senderAddress=e.address,await Dn.Rewarder.collectRewarderTransactionPayload(t?.parameter)),Rb=class Sm extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("AddLiquidityIntention this.data: ",this.data),console.log("AddLiquidityIntention txbParams: ",r);let o=await Mb(r,n,i);return console.log("AddLiquidityIntention build txb: ",o),o}static fromData(e){return new Sm(e)}},qb=class Am extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("ClaimFeeAndMiningIntention this.data: ",this.data),console.log("ClaimFeeAndMiningIntention txbParams: ",r);let o=await Fb(r,n,i);return console.log("ClaimFeeAndMiningIntention build txb: ",o),o}static fromData(e){return new Am(e)}},Lb=class xm extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("DecreaseLiquidityIntention this.data: ",this.data),console.log("DecreaseLiquidityIntention txbParams: ",r);let o=await Nb(r,n,i);return console.log("DecreaseLiquidityIntention build txb: ",o),o}static fromData(e){return new xm(e)}},qt=new ar(Ku),$b=async(t,e,n)=>(console.log("getFarmingAddLiquidityTxb account: ",e),console.log("getFarmingAddLiquidityTxb suiClient: ",n),qt.senderAddress=e.address,await new Ut(tn,qt).Farms.openPositionAddLiquidityStakePaylod(t?.parameter)),Ub=async(t,e,n)=>(console.log("getFarmingIncreaseLiquidityTxb account: ",e),console.log("getFarmingIncreaseLiquidityTxb suiClient: ",n),qt.senderAddress=e.address,await new Ut(tn,qt).Farms.addLiquidityFixCoinPayload(t?.parameter)),Kb=async(t,e,n)=>(console.log("getFarmingDecreaseLiquidityTxb account: ",e),console.log("getFarmingDecreaseLiquidityTxb suiClient: ",n),qt.senderAddress=e.address,await new Ut(tn,qt).Farms.removeLiquidityPayload(t?.parameter)),zb=async(t,e,n)=>(console.log("getFarmingRemoveLiquidityTxb account: ",e),console.log("getFarmingRemoveLiquidityTxb suiClient: ",n),qt.senderAddress=e.address,await new Ut(tn,qt).Farms.removeLiquidityPayload(t?.parameter)),Vb=async(t,e,n)=>(console.log("getFarmingClaimFeeAndRewardTxb account: ",e),console.log("getFarmingClaimFeeAndRewardTxb suiClient: ",n),qt.senderAddress=e.address,await new Ut(tn,qt).Farms.claimFeeAndClmmReward(t?.parameter)),Im=async(t,e,n)=>(console.log("getFarmingBatchHarvest account: ",e),console.log("getFarmingBatchHarvest suiClient: ",n),qt.senderAddress=e.address,await new Ut(tn,qt).Farms.batchHarvestPayload(t?.parameter)),Gb=async(t,e,n)=>(console.log("getFarmingStake account: ",e),console.log("getFarmingStake suiClient: ",n),qt.senderAddress=e.address,await new Ut(tn,qt).Farms.depositPayload(t?.parameter)),Wb=async(t,e,n)=>(console.log("getFarmingUnstake account: ",e),console.log("getFarmingUnstake suiClient: ",n),qt.senderAddress=e.address,await new Ut(tn,qt).Farms.withdrawPayload(t?.parameter)),Hb=class Om extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingAddLiquidityIntention this.data: ",this.data),console.log("FarmingAddLiquidityIntention txbParams: ",r);let o=await $b(r,n,i);return console.log("FarmingAddLiquidityIntention build txb: ",o),o}static fromData(e){return new Om(e)}},Zb=class Pm extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingBatchHarvestIntention this.data: ",this.data),console.log("FarmingBatchHarvestIntention txbParams: ",r);let o=await Im(r,n,i);return console.log("FarmingBatchHarvestIntention build txb: ",o),o}static fromData(e){return new Pm(e)}},Xb=class Dm extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingClaimFeeAndRewardIntention this.data: ",this.data),console.log("FarmingClaimFeeAndRewardIntention txbParams: ",r);let o=await Vb(r,n,i);return console.log("FarmingClaimFeeAndRewardIntention build txb: ",o),o}static fromData(e){return new Dm(e)}},Jb=class Em extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingDecreaseLiquidityIntention this.data: ",this.data),console.log("FarmingDecreaseLiquidityIntention txbParams: ",r);let o=await Kb(r,n,i);return console.log("FarmingDecreaseLiquidityIntention build txb: ",o),o}static fromData(e){return new Em(e)}},Yb=class Mm extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingHarvestIntention this.data: ",this.data),console.log("FarmingHarvestIntention txbParams: ",r);let o=await Im(r,n,i);return console.log("FarmingHarvestIntention build txb: ",o),o}static fromData(e){return new Mm(e)}},Qb=class Bm extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingIncreaseLiquidityIntention this.data: ",this.data),console.log("FarmingIncreaseLiquidityIntention txbParams: ",r);let o=await Ub(r,n,i);return console.log("FarmingIncreaseLiquidityIntention build txb: ",o),o}static fromData(e){return new Bm(e)}},ev=class jm extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingRemoveLiquidityIntention this.data: ",this.data),console.log("FarmingRemoveLiquidityIntention txbParams: ",r);let o=await zb(r,n,i);return console.log("FarmingRemoveLiquidityIntention build txb: ",o),o}static fromData(e){return new jm(e)}},tv=class Nm extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingStakeIntention this.data: ",this.data),console.log("FarmingStakeIntention txbParams: ",r);let o=await Gb(r,n,i);return console.log("FarmingStakeIntention build txb: ",o),o}static fromData(e){return new Nm(e)}},nv=class Fm extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingUnstakeIntention this.data: ",this.data),console.log("FarmingUnstakeIntention txbParams: ",r);let o=await Wb(r,n,i);return console.log("FarmingUnstakeIntention build txb: ",o),o}static fromData(e){return new Fm(e)}},iv=class Rm extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("IncreaseLiquidityIntention this.data: ",this.data),console.log("IncreaseLiquidityIntention txbParams: ",r);let o=await Bb(r,n,i);return console.log("IncreaseLiquidityIntention build txb: ",o),o}static fromData(e){return new Rm(e)}},rv=class qm extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("RemoveLiquidityIntention this.data: ",this.data),console.log("RemoveLiquidityIntention txbParams: ",r);let o=await jb(r,n,i);return console.log("RemoveLiquidityIntention build txb: ",o),o}static fromData(e){return new qm(e)}},En=new ar(Ku),ov=async(t,e,n)=>(console.log("getXcetusConvertTxb account: ",e),console.log("getXcetusConvertTxb suiClient: ",n),En.senderAddress=e.address,await new Ut(tn,En).XCetusModule.convertPayload(t?.parameter)),sv=async(t,e,n)=>(console.log("getXcetusRedeemLockTxb account: ",e),console.log("getXcetusRedeemLockTxb suiClient: ",n),En.senderAddress=e.address,await new Ut(tn,En).XCetusModule.redeemLockPayload(t?.parameter)),av=async(t,e,n)=>(console.log("getXcetusClaimingStakeRewardsTxb account: ",e),console.log("getXcetusClaimingStakeRewardsTxb suiClient: ",n),En.senderAddress=e.address,await new Ut(tn,En).XCetusModule.redeemDividendV2Payload(t.parameter.venft_id,t.parameter.bonus_types,t.parameter.xTokenType)),cv=async(t,e,n)=>(console.log("getXcetusCancelRedeemTxb account: ",e),console.log("getXcetusCancelRedeemTxb suiClient: ",n),En.senderAddress=e.address,await new Ut(tn,En).XCetusModule.cancelRedeemPayload(t?.parameter)),uv=async(t,e,n)=>(console.log("getXcetusRedeemTxb account: ",e),console.log("getXcetusRedeemTxb suiClient: ",n),En.senderAddress=e.address,await new Ut(tn,En).XCetusModule.redeemPayload(t?.parameter)),lv=class Lm extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("XcetusCancelIntention this.data: ",this.data),console.log("XcetusCancelIntention txbParams: ",r);let o=await cv(r,n,i);return console.log("XcetusCancelIntention build txb: ",o),o}static fromData(e){return new Lm(e)}},dv=class $m extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("XcetusClaimingStakeRewardsIntention this.data: ",this.data),console.log("XcetusClaimingStakeRewardsIntention txbParams: ",r);let o=await av(r,n,i);return console.log("XcetusClaimingStakeRewardsIntention build txb: ",o),o}static fromData(e){return new $m(e)}},fv=class Um extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("XcetusConvertIntention this.data: ",this.data),console.log("XcetusConvertIntention txbParams: ",r);let o=await ov(r,n,i);return console.log("XcetusConvertIntention build txb: ",o),o}static fromData(e){return new Um(e)}},hv=class Km extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("XcetusRedeemIntention this.data: ",this.data),console.log("XcetusRedeemIntention txbParams: ",r);let o=await uv(r,n,i);return console.log("XcetusRedeemIntention build txb: ",o),o}static fromData(e){return new Km(e)}},mv=class zm extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("XcetusRedeemLockIntention this.data: ",this.data),console.log("XcetusRedeemLockIntention txbParams: ",r);let o=await sv(r,n,i);return console.log("XcetusRedeemLockIntention build txb: ",o),o}static fromData(e){return new zm(e)}},pv=class{application="cetus";async deserialize(t){console.log("Helper deserialize input: ",t);let{txbParams:e,action:n}=t;return{txType:Tm.TransactionType.Other,txSubType:n,intentionData:{txbParams:e,action:n}}}async build(t){let{suiClient:e,account:n}=t,i;switch(t.txSubType){case"OpenAndAddLiquidity":i=Rb.fromData(t.intentionData);break;case"IncreaseLiquidity":i=iv.fromData(t.intentionData);break;case"DecreaseLiquidity":i=Lb.fromData(t.intentionData);break;case"RemoveLiquidity":i=rv.fromData(t.intentionData);break;case"ClaimFeeAndMining":i=qb.fromData(t.intentionData);break;case"FarmingOpenAndAddLiquidity":i=Hb.fromData(t.intentionData);break;case"FarmingIncreaseLiquidity":i=Qb.fromData(t.intentionData);break;case"FarmingDecreaseLiquidity":i=Jb.fromData(t.intentionData);break;case"FarmingRemoveLiquidity":i=ev.fromData(t.intentionData);break;case"FarmingClaimFeeAndReward":i=Xb.fromData(t.intentionData);break;case"FarmingHarvest":i=Yb.fromData(t.intentionData);break;case"FarmingBatchHarvest":i=Zb.fromData(t.intentionData);break;case"FarmingStake":i=tv.fromData(t.intentionData);break;case"FarmingUnstake":i=nv.fromData(t.intentionData);break;case"xCETUSConvert":i=fv.fromData(t.intentionData);break;case"xCETUSRedeemLock":i=mv.fromData(t.intentionData);break;case"xCETUSClaimStakingRwewards":i=dv.fromData(t.intentionData);break;case"xCETUSCancelRedeem":i=lv.fromData(t.intentionData);break;case"xCETUSRedeem":i=hv.fromData(t.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:e,account:n})}},Gm={};km(Gm,{contractId:()=>Zm,default:()=>gv,feeObjId:()=>Ym,roleObjId:()=>Xm,status:()=>Hm,transaction:()=>Wm,upgradeCapObjId:()=>Qm,vaultObjId:()=>Jm});var Wm="DiBZq4UmVVYiRL6ZJmFKYoHcxtxqrhsCXSkFyT7wUr3j",Hm="success",Zm="0x81c960dc653975fbd0072deca8afb92d322898c911622898ba1b2e3ad0c4bd8d",Xm="0xc6ec0bdee0bb59a72077e9acd2f42457043cf47080b3d3fad4d39abf28bba63a",Jm="0xbc4021387fbac149119fd24e92be9e58f745774292f3a2a12e2ac6daf5363e1d",Ym="0x4178f63970fe2daeb256dc5730ad172e82b3e8eb45f31b33e0daae72cd35e1e1",Qm="0xe1e9aa7d222d151bfe6dd83358b0d7fdcb11260f710800cfaf7ccc1b1e245115",gv={transaction:Wm,status:Hm,contractId:Zm,roleObjId:Xm,vaultObjId:Jm,feeObjId:Ym,upgradeCapObjId:Qm},ep={};km(ep,{contractId:()=>ip,default:()=>_v,feeObjId:()=>sp,roleObjId:()=>rp,status:()=>np,transaction:()=>tp,upgradeCapObjId:()=>ap,vaultObjId:()=>op});var tp="855FNDV8o8Z3fWULPnQo9qdhLJpsg7wZrkCpNyfw9KfB",np="success",ip="0xc357c3985e8fb875d6b37141497af660779aa1bab0ec489b2213efd74067d1fa",rp="0x5ab49bdf9fd1413e328ef242b3f8d83dde791b38a0b627bfc87fb25c010d34f1",op="0xb483558770d8eb26007f193b75db40f0a45f2e36863a687625885d4de6993378",sp="0x48453fc4d7cde3fe35aad89e5dfb496608a6a55ea529a1c0274681a808627f94",ap="0x34279779a0d0d36bd5044b04830d607fa1b0ecf316548c8ac3a44151e4f1a42a",_v={transaction:tp,status:np,contractId:ip,roleObjId:rp,vaultObjId:op,feeObjId:sp,upgradeCapObjId:ap},yv="https://sui-testnet.blockvision.org/v1/2Sgk89ivT64MnKdcGzjmyjY2ndD",wv="https://sui-testnet.blockvision.org/v1/2Sgk89ivT64MnKdcGzjmyjY2ndD",bv="https://sui-mainnet.blockvision.org/v1/2Sgk7NPvqkd7mESYkxF01yX15l7",vv="https://sui-mainnet.blockvision.org/v1/2Sgk7NPvqkd7mESYkxF01yX15l7",kv="https://bc3p6l5unl.execute-api.us-west-1.amazonaws.com/prod",Tv="https://rolsbkota7.execute-api.us-west-1.amazonaws.com/prod",Cv="https://6p6mkx33ne.execute-api.us-west-1.amazonaws.com/prod",Sv="https://xrae3mrjv5.execute-api.us-west-1.amazonaws.com/prod",Xh=Gm,Jh=ep,Av=new Map([["dev",{env:"dev",rpc:{url:yv},backend:{url:kv},contract:Xh}],["stg",{env:"stg",rpc:{url:wv},backend:{url:Tv},contract:Xh}],["prev",{env:"prev",rpc:{url:bv},backend:{url:Cv},contract:Jh}],["prod",{env:"prod",rpc:{url:vv},backend:{url:Sv},contract:Jh}]]);function xv(t,e){let n=Av.get(t);if(!n)throw new Error(`Env not supported: ${t}`);return e&&e.rpc&&(n.rpc=e.rpc),e&&e.backend&&(n.backend=e.backend),e&&e.contract&&(n.contract=e.contract),n}var nn=class extends Error{mpayErrorCode;context;constructor(t,e,n={}){let{cause:i,context:r}=n;i?super(`[MPay] ${e}: ${i}`):super(`[MPay] ${e}`),this.mpayErrorCode=t,this.context=r}},Iv=class extends nn{constructor(){super(11,"Backend is not specified")}},Ov=class extends nn{constructor(){super(1,"Wallet not connected")}},Ou=class extends nn{constructor(t,e){super(10,t,{context:e})}},Pv=class Li{constructor(e){this.apiURL=e}static parseResponseData(e){if(e instanceof zn.AxiosError)throw new Ou(e.response?.statusText);if(e.status===200){if(e.data.success)return e.data.data;throw new Ou(e.data.code)}throw new Ou(e.status.toString())}async getIncomingStreams(e,n){let i=await zn.default.post(`${this.apiURL}/stream`,{recipient:e,...n});return Li.parseResponseData(i)}async getOutgoingStreams(e,n){let i=await zn.default.post(`${this.apiURL}/stream`,{sender:e,...n});return Li.parseResponseData(i)}async getStreamHistory(e){let n=await zn.default.post(`${this.apiURL}/stream-events`,e),i=Li.parseResponseData(n);return i.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}),i}async getAllCoinTypes(e){let n=await zn.default.post(`${this.apiURL}/stream-info`,{address:e});return Li.parseResponseData(n)}async getAllRecipients(e,n){let i=await zn.default.post(`${this.apiURL}/stream-info`,{sender:e,status:n});return Li.parseResponseData(i)}async getAllSenders(e,n){let i=await zn.default.post(`${this.apiURL}/stream-info`,{recipient:e,status:n});return Li.parseResponseData(i)}},up=class lp{signer;suiClient;envConfig;_backend;constructor(e){this.envConfig=e,this.suiClient=new cp.SuiClient({url:e.rpc.url}),e.backend&&(this._backend=new Pv(e.backend.url))}static new(e,n){let i=xv(e,n);return new lp(i)}get walletType(){return this.wallet?this.wallet.type:"disconnected"}get backend(){if(!this._backend)throw new Iv;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 Ov;return this.signer}async walletAddress(){return this.wallet.address()}},Yh=50n,Pu=10000n,Dv=25n,Qh=100000000n,qi=class{constructor(t){this.object=t}moveArg(t){return t.object(this.object)}},em=class{constructor(t){this.objects=t}moveArgs(t){return t.makeMoveVec({objects:this.objects.map(e=>t.object(e))})}},ca=class dp{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(n,i){if(i in n)return Reflect.get(n,i);let r=s=>new dp(n.result[s]);if(i===Symbol.iterator)return function*(){let s=0;for(;;)yield r(s),s++};if(typeof i=="symbol")return;let o=parseInt(i,10);if(!(Number.isNaN(o)||o<0))return r(o)}})}moveArg(){return this.result}},tm=class extends nn{constructor(t,e){super(3,t,{context:e})}},Ev=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 n=this.callResult(t);return this.returnValue(n,e)}getAddress(t=0,e=0){let[n,i]=this.getValue(t,e);if(i!=="address")throw new tm("Invalid contract return type.",{ctx:{expectType:"address",gotType:i}});return(0,fp.normalizeSuiAddress)(Mu.Buffer.from(n).toString("hex"))}getU64(t=0,e=0){let[n,i]=this.getValue(t,e);if(i!=="u64")throw new tm("Invalid contract return type.",{ctx:{expectType:"u64",gotType:i}});return Mu.Buffer.from(n).readBigInt64LE()}},en=class extends nn{constructor(t,e,n){super(2,`Invalid input: ${t}`,{context:{fieldKey:e,fieldValue:n}})}},hp={groupId:"string",name:"string"},Mv=64;function Bv(t){return mp(t),zu.bcs.ser(hp,t).toString("base64")}function Bu(t){let e=zu.bcs.de(hp,t,"base64");return mp(e),e}function mp(t){if(!nm(t.name))throw new en("Invalid metadata: Name contains unknown character");if(!nm(t.groupId))throw new en("Invalid metadata: Group ID contains unknown character");if(t.name.length>Mv)throw new en("Invalid metadata: Name exceed max length 64")}function nm(t){return/^[\x00-\x7F]+$/.test(t)}function pp(t,e){return(0,Do.normalizeStructTag)(t)===(0,Do.normalizeStructTag)(e)}function Pr(t,e){return(0,Do.normalizeStructTag)(t)===(0,Do.normalizeStructTag)(e)}var gp="txn.gas";function jv(){return yf()}var ju=class _p{constructor(e,n,i){this.globals=e,this.feeContract=n,this.streamContract=i}static convertCreateStreamInfoToInternal(e){return{metadata:Bv({name:e.name,groupId:jv()}),coinType:(0,Po.normalizeStructTag)(e.coinType),recipients:e.recipients.map(n=>({address:n.address,cliffAmount:n.cliffAmount,amountPerEpoch:n.amountPerStep})),epochInterval:e.interval,numberEpoch:e.steps,startTime:e.startTimeMs,cancelable:e.cancelable}}async buildCreateStreamTransactionBlock(e){let n=new Eu.TransactionBlock,i=this.calculateFeesInternal(e),r=this.getCreateStreamCoinRequests(e,i),o=await this.wallet.requestCoins(r),s=await this.addMergeCoins(n,o[0]),a;r.length>1?a=await this.addMergeCoins(n,o[1]):a=s;for(let u=0;u<e.recipients.length;u++){let l=e.recipients[u],h=this.amountForRecipient(l,e.numberEpoch),w=this.getStreamFeeLocal(h),[v]=n.splitCoins(s,[n.pure(h+w,"u64")]),[T]=n.splitCoins(a,[n.pure(this.flatSuiFee,"u64")]);this.streamContract.createStream(n,{paymentCoin:new ca(v),flatFeeCoin:new ca(T),metadata:e.metadata,recipient:l.address,timeStart:e.startTime,cliff:l.cliffAmount,epochInterval:e.epochInterval,numEpoch:e.numberEpoch,amountPerEpoch:l.amountPerEpoch,cancelable:e.cancelable,coinType:e.coinType})}return n}calculateCreateStreamFees(e){let n=_p.convertCreateStreamInfoToInternal(e);return this.calculateFeesInternal(n)}feeParams(){return{createFeePercent:{numerator:Yh,denominator:Pu},claimFeePercent:{numerator:Dv,denominator:Pu},flatFeePerStream:Qh}}async addMergeCoins(e,n){let i;return n.mergedCoins&&n.mergedCoins.length?(e.mergeCoins(e.object(n.primaryCoin),n.mergedCoins.map(r=>e.object(r))),i=e.object(n.primaryCoin)):n.primaryCoin===gp?i=e.gas:i=e.object(n.primaryCoin),i}getCreateStreamCoinRequests(e,n){let i=e.coinType;return pp(i,Po.SUI_TYPE_ARG)?[{coinType:i,amount:n.totalAmount+n.streamFeeAmount+n.flatFeeAmount}]:[{coinType:i,amount:n.totalAmount+n.streamFeeAmount},{coinType:Po.SUI_TYPE_ARG,amount:n.flatFeeAmount}]}calculateFeesInternal(e){let n=e.recipients.reduce((i,r)=>{let o=this.amountForRecipient(r,e.numberEpoch),s=this.getStreamFeeLocal(o);return{totalAmount:i.totalAmount+o,streamFeeAmount:i.streamFeeAmount+s}},{totalAmount:0n,streamFeeAmount:0n});return{flatFeeAmount:BigInt(e.recipients.length)*this.flatSuiFee,...n}}amountForRecipient(e,n){return BigInt(e.amountPerEpoch)*BigInt(n)+BigInt(e.cliffAmount)}get flatSuiFee(){return Qh}getStreamFeeLocal(e){return e*Yh/Pu}async getStreamFeeRemote(e){let n=this.feeContract.streamingFee(new Eu.TransactionBlock,e),i=await this.globals.suiClient.devInspectTransactionBlock({sender:await this.globals.walletAddress(),transactionBlock:n});return new Ev(i).getU64()}get wallet(){return this.globals.wallet}},Nv="0x0000000000000000000000000000000000000000000000000000000000000006",yp=class{constructor(t,e,n){this.moduleName=t,this.config=e,this.globals=n}addContractCall(t,e){let n=`${this.config.contractId}::${this.moduleName}::${e.method}`;return t.add(Nu.Transactions.MoveCall({target:n,arguments:e.arguments.map(i=>i instanceof em?i.moveArgs(t):i instanceof qi?i.moveArg(t):i instanceof ca?i.moveArg():t.pure(i)),typeArguments:e.typeArgs})),t}addTransactionBlock(t,e,n=[],i=[]){t.add(Nu.Transactions.MoveCall({target:e,arguments:n.map(r=>r instanceof em?r.moveArgs(t):r instanceof qi?r.moveArg(t):r instanceof ca?r.moveArg():t.pure(r)),typeArguments:i}))}makeObject(t){return typeof t=="string"?new qi(t):t}vaultObject(){return new qi(this.config.vaultObjId)}roleObject(){return new qi(this.config.roleObjId)}feeObject(){return new qi(this.config.feeObjId)}clockObject(){return new qi(Nv)}},wp=class di extends yp{constructor(e,n){super(di.ModuleName,e,n),this.config=e,this.globals=n}static ModuleName="fee_module";static MethodName={set_streaming_fee:"set_streaming_fee",set_claim_fee:"set_claim_fee",set_streaming_flat_fee:"set_streaming_flat_fee",streaming_flat_fee:"streaming_flat_fee",streaming_fee:"streaming_fee",claim_fee:"claim_fee",fee_denominator:"fee_denominator"};setStreamingFee(e,n){let i=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:di.MethodName.set_streaming_fee,arguments:[i,r,n],typeArgs:[]})}setStreamingFlatFee(e,n){let i=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:di.MethodName.set_streaming_flat_fee,arguments:[i,r,n],typeArgs:[]})}setClaimFee(e,n){let i=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:di.MethodName.set_claim_fee,arguments:[i,r,n],typeArgs:[]})}streamingFee(e,n){let i=this.feeObject();return this.addContractCall(e,{method:di.MethodName.streaming_fee,arguments:[i,n],typeArgs:[]})}claimFee(e,n){return this.addContractCall(e,{method:di.MethodName.claim_fee,arguments:[this.feeObject(),n],typeArgs:[]})}feeDenominator(e){return this.addContractCall(e,{method:di.MethodName.fee_denominator,arguments:[this.feeObject()],typeArgs:[]})}},la=class Bt extends yp{constructor(e,n){super(Bt.ModuleName,e,n),this.config=e,this.globals=n}static ModuleName="stream";static MethodName={create_stream:"create_stream",set_auto_claim:"set_auto_claim",cancel_stream:"cancel_stream",claim_stream:"claim_stream",claim_stream_by_proxy:"claim_stream_by_proxy",stream_current_epoch:"stream_current_epoch",now_milli_seconds:"now_milli_seconds"};createStream(e,n){let i=this.feeObject(),r=this.vaultObject(),o=this.makeObject(n.paymentCoin),s=this.makeObject(n.flatFeeCoin),a=this.clockObject();return this.addContractCall(e,{method:Bt.MethodName.create_stream,arguments:[i,r,o,s,n.metadata,n.recipient,n.timeStart,n.cliff,n.epochInterval,n.numEpoch,n.amountPerEpoch,n.cancelable,a],typeArgs:[n.coinType]})}setAutoClaim(e,n){let i=this.makeObject(n.streamId);return this.addContractCall(e,{method:Bt.MethodName.set_auto_claim,arguments:[i,n.enabled],typeArgs:[n.coinType]})}cancelStream(e,n){let i=this.makeObject(n.streamId),r=this.clockObject();return this.addContractCall(e,{method:Bt.MethodName.cancel_stream,arguments:[i,r],typeArgs:[n.coinType]})}claimStream(e,n){let i=this.makeObject(n.streamId),r=this.clockObject();return this.addContractCall(e,{method:Bt.MethodName.claim_stream,arguments:[i,r],typeArgs:[n.coinType]})}claimStreamByProxy(e,n){let i=this.makeObject(n.streamId),r=this.vaultObject(),o=this.feeObject(),s=this.clockObject();return this.addContractCall(e,{method:Bt.MethodName.claim_stream_by_proxy,arguments:[i,r,o,s],typeArgs:[n.coinType]})}get createStreamTarget(){return`${this.config.contractId}::${Bt.ModuleName}::${Bt.MethodName.create_stream}`}get setAutoClaimTarget(){return`${this.config.contractId}::${Bt.ModuleName}::${Bt.MethodName.set_auto_claim}`}get cancelStreamTarget(){return`${this.config.contractId}::${Bt.ModuleName}::${Bt.MethodName.cancel_stream}`}get claimStreamTarget(){return`${this.config.contractId}::${Bt.ModuleName}::${Bt.MethodName.claim_stream}`}get claimStreamByProxyTarget(){return`${this.config.contractId}::${Bt.ModuleName}::${Bt.MethodName.claim_stream_by_proxy}`}},bp=class{constructor(t){this.globals=t;let e=t.envConfig.contract;this.feeContract=new wp(e,t),this.streamContract=new la(e,t)}feeContract;streamContract;async createStreams(t){let e=ju.convertCreateStreamInfoToInternal(t);return this.createStreamHelper().buildCreateStreamTransactionBlock(e)}createStreamHelper(){return new ju(this.globals,this.feeContract,this.streamContract)}setAutoClaim(t,e,n){let i=new Io.TransactionBlock;return this.streamContract.setAutoClaim(i,{streamId:t,enabled:e,coinType:n})}claimStream(t,e){let n=new Io.TransactionBlock;return this.streamContract.claimStream(n,{streamId:t,coinType:e})}claimStreamByProxy(t,e){let n=new Io.TransactionBlock;return this.streamContract.claimStreamByProxy(n,{streamId:t,coinType:e})}cancelStream(t,e){let n=new Io.TransactionBlock;return this.streamContract.cancelStream(n,{streamId:t,coinType:e}),n}},kn=class extends nn{constructor(t,e={}){super(0,t,e)}};async function Fv(t){let e=[];for(;await t.hasNext();){let n=await t.next();e.push(n)}return e&&Array.isArray(e[0])?e.flat(1):e}var Rv=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)}},vp=class{constructor(t){this.requester=t,this.pager=new Rv(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]}},qv=class extends nn{constructor(t,e,n){super(4,`Not enough balance: ${t}`,{context:{coinType:t,requestAmount:e,gotAmount:n}}),this.coinType=t,this.requestAmount=e,this.gotAmount=n}},Lv=25;async function $v(t,e,n,i="0x2::sui::SUI",r=Lv){let o=new Uv(t,e,i,r),s=BigInt(0),a=[];for(;await o.hasNext()&&s<n;){let u=await o.next();u&&(a.push(u),s+=BigInt(u.balance))}if(s<n)throw new qv(i,n,s);return a}var Uv=class extends vp{constructor(t,e,n,i){super(new Kv(t,e,n,i)),this.suiClient=t,this.owner=e,this.coinType=n,this.reqPageSize=i}},Kv=class{constructor(t,e,n,i){if(this.suiClient=t,this.owner=e,this.coinType=n,this.reqPageSize=i,i<=0)throw new kn("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}}},zv=class extends nn{constructor(){super(7,"Connected wallet is not creator")}},im=class extends nn{constructor(){super(8,"Connected wallet is not recipient")}},rm=class extends nn{constructor(t,e){super(6,t,{context:e})}},Vv=class extends nn{constructor(t){super(5,"Stream not found",{context:{streamId:t}})}},Gv=(1n<<64n)-1n,ua=1e3;function om(t){let e;typeof t=="number"?e=t:typeof t=="bigint"?e=Number(t):e=t.toMillis();let n=Math.round(e/ua);return be.fromMillis(n*ua)}function sm(t){let e;typeof t=="number"?e=t:typeof t=="bigint"?e=Number(t):e=t.toMillis();let n=Math.round(e/ua);return Pe.fromMillis(n*ua)}var Vu=class fi{constructor(e,n,i){this.globals=e,this.streamId=n,this.rawData=i,this.streamContract=new la(e.envConfig.contract,e)}streamContract;type="Stream";static async new(e,n){let i=await fi.fetchStreamData(e,n);return new fi(e,n,i)}static fromObjectData(e,n,i){let r=fi.parseRawStreamData(n,i);return new fi(e,n,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 fi.fetchStreamData(this.globals,this.streamId)}refreshWithData(e){if(e.data?.objectId!==this.streamId)throw new kn("Object Id does not align");this.rawData=fi.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 zv;let e=new Oo.TransactionBlock;return this.streamContract.cancelStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async claim(){if(await this.globals.walletAddress()!==this.recipient)throw new im;let e=new Oo.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 im;let n=new Oo.TransactionBlock;return this.streamContract.setAutoClaim(n,{streamId:this.streamId,coinType:this.coinType,enabled:e}),n}async claimByProxy(){let e=new Oo.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,Eo.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 sm(this.rawData.config.epochInterval)}get groupId(){let{metadata:e}=this.rawData.config;return Bu(e).groupId}get name(){let{metadata:e}=this.rawData.config;return Bu(e).name}get recipient(){return this.rawData.config.recipient}get timeStart(){return om(this.rawData.config.timeStart)}get duration(){let e=this.rawData.config,n=e.epochInterval*e.totalEpoch;return sm(n)}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:om((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===Gv?0n:this.rawData.status.epochClaimed*this.amountPerEpoch+this.cliff}get currentEpoch(){let e=be.now().toMillis(),n=this.timeStart.toMillis();if(e<n)return-1n;let i=Math.floor((e-n)/Number(this.rawData.config.epochInterval));return BigInt(i)>Number(this.rawData.config.totalEpoch)?this.rawData.config.totalEpoch:BigInt(i)}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,n){let i=await e.suiClient.getObject({id:n,options:{showContent:!0,showType:!0}});return fi.parseRawStreamData(n,i)}static parseRawStreamData(e,n){if(n.error)throw n.error.code==="notExists"?new Vv(e):new rm(`get stream data: ${n.error.code}`,{streamId:e,...n.error});let i=n.data.content;if(i.dataType!=="moveObject")throw new rm("Unexpected object type",{gotType:i.dataType});let{typeParams:r}=(0,Eo.parseStructTag)(i.type),o=(0,Eo.normalizeStructTag)(r[0]),s=i.fields,a=s.config.fields,u=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:u.status,epochCanceled:BigInt(u.epoch_canceled),epochClaimed:BigInt(u.epoch_claimed)}}}},Wv=class extends nn{constructor(t,e){super(12,`Transaction failed: ${e}`,{context:{status:t,msg:e}})}},Hv=1e3,Zv=class{constructor(t){this.globals=t,this.coinMetaHelper=new Xv(t.suiClient),this.createStreamHelper=new bp(t).createStreamHelper()}coinMetaHelper;createStreamHelper;getStreamIdsFromCreateStreamResponse(t){if(t.effects?.status.status!=="success")throw new Wv(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 en("Invalid stream steps: 0");let e=t.cliff?t.cliff:{numerator:0n,denominator:100n},n=t.totalAmount*e.numerator/e.denominator,i=(t.totalAmount-n)/t.steps,r={realTotalAmount:i*t.steps+n,cliffAmount:n,amountPerStep:i};return this.validateStreamAmount(r,t.totalAmount),r}calculateTimelineByInterval(t){if(t.steps===0n)throw new en("Invalid stream steps: 0");let e=t.timeStart.plus(t.interval.toMillis()*Number(t.steps)),n={timeStart:t.timeStart,timeEnd:e,interval:t.interval,steps:t.steps};return this.validateTimeline(n),n}calculateTimelineByTotalDuration(t){if(t.steps===0n)throw new en("Invalid stream steps: 0");let e=BigInt(t.total.toMillis())/t.steps,n=t.timeStart.plus(Pe.fromMillis(Number(e*t.steps))),i={timeStart:t.timeStart,timeEnd:n,interval:Pe.fromMillis(Number(e)),steps:t.steps};return this.validateTimeline(i),i}async getBalance(t,e){let n=await this.globals.suiClient.getBalance({owner:t,coinType:e}),i=await this.getCoinMeta(e);return{...n,coinType:(0,Mr.normalizeStructTag)(n.coinType),coinMeta:i}}async getAllBalance(t){let e=await this.globals.suiClient.getAllBalances({owner:t}),n=await Promise.all(e.map(i=>this.getCoinMeta(i.coinType)));return e.map((i,r)=>({...i,coinType:(0,Mr.normalizeStructTag)(i.coinType),coinMeta:n[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 en("Stream amount too small","totalAmount",e);if(t.cliffAmount>t.realTotalAmount)throw new en("Invalid cliff settings")}validateTimeline(t){if(t.interval.toMillis()<Hv)throw new en("Interval shall be at least 1 second","interval",t.interval)}},Xv=class{constructor(t){this.suiClient=t,this.coinMetaReg=new Map}coinMetaReg;async getCoinMeta(t){let e=(0,Mr.normalizeStructTag)(t||Mr.SUI_TYPE_ARG);if(this.coinMetaReg.has(e))return this.coinMetaReg.get(e);let n=await this.queryCoinMeta(e);return n&&this.coinMetaReg.set(e,n),n}async queryCoinMeta(t){return await this.suiClient.getCoinMetadata({coinType:t})||void 0}},Du=class extends nn{constructor(t,e){super(9,`Invalid stream group: ${t}`,{context:e})}},Jv=25;async function am(t,e,n){let i=new kp(e),r=new Tp(t,i,n);return await Fv(r)}var kp=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]}},Tp=class extends vp{constructor(t,e,n){super(new Yv(t,e,n)),this.suiClient=t,this.idIter=e,this.options=n}},Yv=class{constructor(t,e,n){this.suiClient=t,this.stringIter=e,this.options=n,this.filter=n?.filter,this.pageSize=n?.pageSize||Jv,this.objectOptions=n?.objectOptions||{showType:!0,showContent:!0}}filter;pageSize;objectOptions;async doNextRequest(){let t=[];for(;t.length<this.pageSize&&await this.stringIter.hasNext();){let i=await this.stringIter.next();i&&t.push(i)}let e=await this.suiClient.multiGetObjects({ids:t,options:this.objectOptions}),n;if(this.filter){let{filter:i}=this;n=e.filter(r=>i?.(r))}else n=e;return{data:n,hasNext:await this.stringIter.hasNext()}}},Qv=class ra{constructor(e,n){if(this.globals=e,this.streams=n,n.length===0)throw new Du("stream size 0");let i=n.map(r=>r.groupId);if(new Set(i).size!==1)throw new en("Stream does not have same group ID")}type="StreamGroup";static async new(e,n){let i=await am(e.suiClient,n);return i.forEach(r=>{if(!r)throw new kn("stream group object data undefined")}),ra.newFromObjectResponse(e,n,i)}static async newFromObjectResponse(e,n,i){let r=await ra.parseGroupStreams(e,n,i);return new ra(e,r)}static checkStreamGroup(e){let n=e.map(o=>o.groupCommonInfo),i=n[0],r=!0;return n.forEach(o=>{e1(i,o)||(r=!1)}),r}async refresh(){let e=await am(this.globals.suiClient,this.streams.map(n=>n.streamId));this.streams.forEach((n,i)=>{n.refreshWithData(e[i])})}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,n)=>e+n.totalAmount,0n),start:this.streams[0].timeStart,end:this.streams[0].timeEnd,cancelable:this.streams[0].cancelable,cliffAmount:this.streams.reduce((e,n)=>e+n.cliff,0n),duration:this.streams[0].duration,interval:this.streams[0].interval,steps:this.streams[0].totalSteps,nextReleaseAmount:this.streams.reduce((e,n)=>n.nextReleaseAmount===null?e:e+n.nextReleaseAmount,0n),nextReleaseDate:this.streams[0].nextReleaseDate}}get progress(){return{total:this.streams.reduce((e,n)=>e+n.totalAmount,0n),streamed:this.streams.reduce((e,n)=>e+n.streamedAmount,0n),claimed:this.streams.reduce((e,n)=>e+n.claimedAmount,0n),claimable:this.streams.reduce((e,n)=>e+n.claimable,0n),canceled:this.streams.reduce((e,n)=>e+n.canceledAmount,0n)}}async historyEvents(e){return this.globals.backend.getStreamHistory({groupId:this.groupId,pagination:e})}static async parseGroupStreams(e,n,i){let r=i.map((o,s)=>Vu.fromObjectData(e,n[s],o)).filter(o=>!!o);if(new Set(r.map(o=>o.groupId)).size!==1)throw new Du("Not same group ID");if(!this.checkStreamGroup(r))throw new Du("Not same stream settings");return r}};function e1(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 cm=class Fu{constructor(e,n){this.it=e,this.pageSize=n}static async newIncoming(e){let n=await um.newIncoming(e);return new Fu(n,e.pageSize)}static async newOutgoing(e){let n=await um.newOutgoing(e);return new Fu(n,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}},um=class Ru{constructor(e){this.requester=e}cachedNext;static async newIncoming(e){let n=await lm.newIncomingQuery(e);return new Ru(n)}static async newOutgoing(e){let n=await lm.newOutgoingQuery(e);return new Ru(n)}async hasNext(){return this.cachedNext===void 0&&(this.cachedNext=await this.requester.doNextRequest()),this.cachedNext!==null}async next(){if(this.cachedNext===void 0){let n=await this.requester.doNextRequest();if(n===null)throw new kn("No more results");return n}let e=this.cachedNext;if(this.cachedNext=void 0,e===null)throw new kn("No more results");return e}},lm=class qu{constructor(e,n,i,r){this.globals=e,this.recipient=n,this.groupRefs=i,this.query=r,this.current=0;let o=new kp(i.flat().map(s=>s.streamId));this.objectIter=new Tp(e.suiClient,o)}current=0;objectIter;static async newIncomingQuery(e){let n=o1(e.query),i=await e.globals.walletAddress(),r=(await e.globals.backend.getIncomingStreams(i,n)).filter(s=>(0,gi.normalizeSuiAddress)(s.recipient)===(0,gi.normalizeSuiAddress)(i)),o=dm(r);return new qu(e.globals,i,o,e.query)}static async newOutgoingQuery(e){let n=s1(e.query),i=await e.globals.walletAddress(),r=await e.globals.backend.getOutgoingStreams(i,n),o=dm(r);return new qu(e.globals,i,o,e.query)}async doNextRequest(){if(this.current>=this.groupRefs.length)return null;let e=this.groupRefs[this.current];if(e.length===1){let n=await i1(this.globals,e[0].streamId,this.objectIter);return this.current++,Cp(n,this.query)?n:this.doNextRequest()}if(e.length>1){let n=await r1(this.globals,e.map(i=>i.streamId),this.objectIter);return this.current++,n1(n,this.query)?n:this.doNextRequest()}throw new kn("Stream group with no stream")}};function dm(t){let e=new Map;return t.forEach(n=>{let i=e.get(n.groupId);i?(i.push(n),e.set(n.groupId,i)):e.set(n.groupId,[n])}),Array.from(e.values()).sort((n,i)=>be.fromISO(i[0].createDate).toMillis()-be.fromISO(n[0].createDate).toMillis())}function Cp(t,e){if(e===void 0)return!0;let n=t1(t,e.status);if(e&&"claimable"in e&&e.claimable!==void 0){let i=e.claimable?t.progress.claimable!==0n:t.progress.claimable===0n;return n&&i}return n}function t1(t,e){return e===void 0?!0:Array.isArray(e)?e.includes(t.progress.status):t.progress.status===e}function n1(t,e){if(!e)return!0;let n=!1;return t.streams.forEach(i=>{Cp(i,e)&&(n=!0)}),n}async function i1(t,e,n){let i=await Sp(n,e);return Vu.fromObjectData(t,e,i)}async function r1(t,e,n){let i=[];for(;i.length<e.length;){let r=await Sp(n,e[i.length]);i.push(r)}return Qv.newFromObjectResponse(t,e,i)}async function Sp(t,e){if(!await t.hasNext())throw new kn("object iterator has been consumed");let n=await t.next();if(!n||n.error||n.data===void 0||n.data===null)throw new kn("object iterator undefined response",{cause:n?.error});if(n?.data?.objectId!==e)throw new kn("stream id not aligned");return n}function o1(t){return{status:Gu(t?.status),coinType:Ap(t?.coinType),sender:xp(t?.sender)}}function s1(t){return{status:Gu(t?.status),coinType:Ap(t?.coinType),recipient:xp(t?.recipient)}}function Gu(t){return t===void 0||t.length===0?"all":Array.isArray(t)?t.reduce((e,n)=>{let i=Gu(n);return!e||e===i?i:"all"},void 0):a1(t)}function a1(t){switch(t){case"STREAMING":case"STREAMED":case"CANCELED":return"active";case"COMPLETED":case"SETTLED":return"inactive";default:throw new en("Unknown stream filtered status")}}function Ap(t){if(t)return Array.isArray(t)?t.length!==0?t.map(e=>(0,gi.normalizeStructTag)(e)):void 0:(0,gi.normalizeStructTag)(t)}function xp(t){if(t)return Array.isArray(t)?t.length!==0?t.map(e=>(0,gi.normalizeSuiAddress)(e)):void 0:(0,gi.normalizeSuiAddress)(t)}var c1=class{constructor(t){this.msafe=t}get type(){return"msafe"}async address(){return this.msafe.address()}async requestCoins(t){return this.msafe.requestCoins(t)}},u1=class{constructor(t){this.account=t}async address(){return this.account.address}},l1=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(pp(t.coinType,Ui.SUI_TYPE_ARG))return{primaryCoin:gp};if(t.amount<=0)throw new en("Invalid coin request","coinAmount",t.amount);let e=await $v(this.suiClient,await this.address(),t.amount,t.coinType);if(e.length===0)throw new kn("no coins available");return{primaryCoin:e[0].coinObjectId,mergedCoins:e.slice(1).map(n=>n.coinObjectId)}}},d1=class{globals;helper;constructor(t,e){this.globals=up.new(t,e),this.helper=new Zv(this.globals)}connectSingleWallet(t){let e=new l1(t,this.globals.suiClient);this.globals.connectWallet(e)}connectMSafeAccount(t){let e=new c1(t);this.globals.connectWallet(e)}async createStream(t){return this.builder().createStreams(t)}async getStream(t){return Vu.new(this.globals,t)}async getIncomingStreams(t,e=10){return cm.newIncoming({globals:this.globals,query:t,pageSize:e})}async getOutgoingStreams(t,e=10){return cm.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,Ui.normalizeStructTag)(e))}async getRecipientsForStreamFilter(t){let e=await this.wallet.address();return(await this.globals.backend.getAllRecipients(e,t)).map(n=>(0,Ui.normalizeSuiAddress)(n))}async getCreatorsForStreamFilter(t){let e=await this.wallet.address();return(await this.globals.backend.getAllSenders(e,t)).map(n=>(0,Ui.normalizeSuiAddress)(n))}get wallet(){return this.globals.wallet}builder(){return new bp(this.globals)}},f1=class{constructor(t){this.data=t}serialize(){return JSON.stringify((0,Ip.default)(this.data))}},Mo=class extends f1{application="mpay";getClient(t,e){let n=new d1(t==="sui:mainnet"?"prod":"dev");return n.connectSingleWallet(new u1(e)),n}},fm=class extends Mo{constructor(t){super(t),this.data=t}txType=Vm.TransactionType.Stream;txSubType="Cancel";async build(t){let{network:e,account:n}=t;return(await this.getClient(e,n).getStream(this.data.streamId)).cancel()}},hm=class extends Mo{constructor(t){super(t),this.data=t}txType=Op.TransactionType.Stream;txSubType="ClaimByProxy";async build(t){let{network:e,account:n}=t;return(await this.getClient(e,n).getStream(this.data.streamId)).claimByProxy()}},mm=class extends Mo{constructor(t){super(t),this.data=t}txType=Pp.TransactionType.Stream;txSubType="Claim";async build(t){let{network:e,account:n}=t;return(await this.getClient(e,n).getStream(this.data.streamId)).claim()}},pm=class extends Mo{constructor(t){super(t),this.data=t}txType=Dp.TransactionType.Stream;txSubType="CreateStream";async build(t){let{network:e,account:n}=t;return this.getClient(e,n).createStream(this.data)}},Ep=class oa{constructor(e,n){this.moveCall=e,this.txb=n}decodeSharedObjectId(e){let n=this.getInputParam(e);return oa.getSharedObjectId(n)}decodeOwnedObjectId(e){let n=this.getInputParam(e);return oa.getOwnedObjectId(n)}decodeInputU64(e){let n=this.decodePureArg(e,"u64");return BigInt(n)}decodeInputAddress(e){let n=this.decodePureArg(e,"address");return(0,hi.normalizeSuiAddress)(n)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,n){let i=this.getInputParam(e);return oa.getPureInputValue(i,n)}getInputParam(e){let n=this.moveCall.arguments[e];if(n.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[n.index]}static getPureInputValue(e,n){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let i=e.value.Pure;return Lu.bcs.de(n,new Uint8Array(i))}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,hi.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,hi.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,hi.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,hi.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,n){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 i=e.value.Pure;return Lu.bcs.de(n,new Uint8Array(i))}typeArg(e){return(0,hi.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},h1=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"&&Pr(e.target,this.contract.createStreamTarget));if(t.length===0)throw new kn("No create stream transactions");return t.map(e=>new Ep(e,this.txb))}getCreationInfoFromMoveCall(t){let e=t.decodeInputString(4),{name:n,groupId:i}=Bu(e),r=t.decodeInputAddress(5),o=t.decodeInputU64(6),s=t.decodeInputU64(7),a=t.decodeInputU64(8),u=t.decodeInputU64(9),l=t.decodeInputU64(10),h=t.decodeInputBool(11),w=t.typeArg(0);return{name:n,groupId:i,recipient:r,timeStart:o,cliff:s,epochInterval:a,totalEpoch:u,amountPerEpoch:l,cancelable:h,coinType:w}}aggregateGroupStreamInfo(t){if(new Set(t.map(n=>JSON.stringify({name:n.name,groupId:n.groupId,timeStart:String(n.timeStart),epochInterval:String(n.epochInterval),totalEpoch:String(n.totalEpoch),cancelable:n.cancelable,coinType:n.coinType}))).size!==1)throw new en("Stream group not have common info");let e=t.map(n=>({address:n.recipient,amountPerStep:n.amountPerEpoch,cliffAmount:n.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 la(this.globals.envConfig.contract,this.globals)}get feeContract(){return new wp(this.globals.envConfig.contract,this.globals)}createStreamHelper(){return new ju(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]}},m1=class{constructor(t,e){this.globals=t,this.txb=e,this.contract=new la(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"&&Pr(t.target,this.contract.createStreamTarget))!==-1}isSetAutoClaimTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&Pr(this.transactions[0].target,this.contract.setAutoClaimTarget)}isCancelStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&Pr(this.transactions[0].target,this.contract.cancelStreamTarget)}isClaimStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&Pr(this.transactions[0].target,this.contract.claimStreamTarget)}isClaimByProxyTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&Pr(this.transactions[0].target,this.contract.claimStreamByProxyTarget)}decodeCreateStreamTransaction(){return new h1(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 Ep(t,this.txb)}},gm=class extends Mo{constructor(t){super(t),this.data=t}txType=Mp.TransactionType.Stream;txSubType="SetAutoClaim";async build(t){let{network:e,account:n}=t;return(await this.getClient(e,n).getStream(this.data.streamId)).setAutoClaim(this.data.enabled)}},p1=class{application="mpay";async deserialize(t){let{network:e,transactionBlock:n}=t,i=up.new(e==="sui:mainnet"?"prod":"dev"),r=new m1(i,n).decode(),o;switch(r.type){case"CreateStream":o=new pm(r.info);break;case"SetAutoClaim":o=new gm({streamId:r.streamId,enabled:r.enabled});break;case"Claim":o=new mm({streamId:r.streamId});break;case"ClaimByProxy":o=new hm({streamId:r.streamId});break;case"Cancel":o=new fm({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,n;switch(t.txSubType){case"CreateStream":n=new pm(e);break;case"Claim":n=new mm(e);break;case"ClaimByProxy":n=new hm(e);break;case"SetAutoClaim":n=new gm(e);break;case"Cancel":n=new fm(e);break;default:throw new Error("not implemented")}return n.build({...t})}},g1=class jp extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:n,account:i}=e;return(0,Bp.buildCoinTransferTxb)(n,this.data,i.address)}static fromData(e){return new jp(e)}},_1=class Fp extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:n,account:i}=e;return(0,Np.buildObjectTransferTxb)(n,this.data,i.address)}static fromData(e){return new Fp(e)}},y1=class Lp extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n}=e,i=qp.TransactionBlock.from(this.data.content);if(!(0,Rp.isSameAddress)(i.blockData.sender,n.address))throw new Error("Invalid sender address");return i}static fromData(e){return new Lp(e)}},w1=class{application;constructor(){this.application=Er.TransactionDefaultApplication}deserialize(){throw new Error("MSafe core transaction intention should be build from API")}async build(t){let{suiClient:e,account:n}=t,i;switch(t.txSubType){case Er.TransactionSubTypes.assets.coin.send:i=g1.fromData(t.intentionData);break;case Er.TransactionSubTypes.assets.object.send:i=_1.fromData(t.intentionData);break;case Er.TransactionSubTypes.others.plain:i=y1.fromData(t.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:e,account:n})}},b1={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"}}},ye=b1,v1=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(`${ye.ProtocolPackage}::incentive_v2::claim_reward`)}isEntryBorrowTransaction(){return!!this.getMoveCallTransaction(`${ye.ProtocolPackage}::incentive_v2::entry_borrow`)}isEntryDepositTransaction(){return!!this.getMoveCallTransaction(`${ye.ProtocolPackage}::incentive_v2::entry_deposit`)}isEntryRepayTransaction(){return!!this.getMoveCallTransaction(`${ye.ProtocolPackage}::incentive_v2::entry_repay`)}isEntryWithdrawTransaction(){return!!this.getMoveCallTransaction(`${ye.ProtocolPackage}::incentive_v2::entry_withdraw`)}findPoolByAssetId(t){let e=Object.values(ye.pool).find(n=>n.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===`${ye.ProtocolPackage}::incentive_v2::claim_reward`){let n=new _m(e,this.txb),i=n.decodeInputU8(4),r=n.decodeInputU8(5),o=n.decodeSharedObjectId(2),s=this.findPoolByAssetId(i),a=[...e.typeArguments];t.push({coinType:s.coinType,option:r,typeArguments:a,assetId:i,poolId:o})}}),console.log("decode claims",t),{txType:Dr.TransactionType.Other,type:"ClaimReward",intentionData:{claims:t}}}decodeEntryBorrow(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(5),n=this.findPoolByAssetId(t);return{txType:Dr.TransactionType.Other,type:"EntryBorrow",intentionData:{amount:e,coinType:n.coinType}}}decodeEntryDeposit(){let t=this.helper.decodeInputU8(3),e=this.helper.decodeInputU64(5),n=this.findPoolByAssetId(t);return{txType:Dr.TransactionType.Other,type:"EntryDeposit",intentionData:{amount:e,coinType:n.coinType}}}decodeEntryRepay(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(6),n=this.findPoolByAssetId(t);return{txType:Dr.TransactionType.Other,type:"EntryRepay",intentionData:{amount:e,coinType:n.coinType}}}decodeEntryWithdraw(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(5),n=this.findPoolByAssetId(t);return{txType:Dr.TransactionType.Other,type:"EntryWithdraw",intentionData:{amount:e,coinType:n.coinType}}}get helper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(ye.ProtocolPackage));return new _m(t,this.txb)}},_m=class sa{constructor(e,n){this.moveCall=e,this.txb=n}decodeSharedObjectId(e){let n=this.getInputParam(e);return sa.getSharedObjectId(n)}decodeOwnedObjectId(e){let n=this.getInputParam(e);return sa.getOwnedObjectId(n)}decodeInputU64(e){let n=this.decodePureArg(e,"u64");return Number(n)}decodeInputU8(e){let n=this.decodePureArg(e,"u8");return Number(n)}decodeInputAddress(e){let n=this.decodePureArg(e,"address");return(0,mi.normalizeSuiAddress)(n)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,n){let i=this.getInputParam(e);return sa.getPureInputValue(i,n)}getInputParam(e){let n=this.moveCall.arguments[e];if(n.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[n.index]}static getPureInputValue(e,n){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let i=e.value.Pure;return $u.bcs.de(n,new Uint8Array(i))}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,mi.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,mi.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,mi.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,mi.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,n){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 i=e.value.Pure;return $u.bcs.de(n,new Uint8Array(i))}typeArg(e){return(0,mi.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};function ym(t,e,n,i){return t.moveCall({target:`${ye.ProtocolPackage}::incentive_v2::entry_deposit`,arguments:[t.object("0x06"),t.object(ye.StorageId),t.object(e.poolId),t.pure(e.assetId),n,t.pure(i),t.object(ye.Incentive),t.object(ye.IncentiveV2)],typeArguments:[e.type]}),t}function k1(t,e,n){return t.moveCall({target:`${ye.ProtocolPackage}::incentive_v2::entry_withdraw`,arguments:[t.object("0x06"),t.object(ye.PriceOracle),t.object(ye.StorageId),t.object(e.poolId),t.pure(e.assetId),t.pure(n),t.object(ye.Incentive),t.object(ye.IncentiveV2)],typeArguments:[e.type]}),t}function T1(t,e,n){return t.moveCall({target:`${ye.ProtocolPackage}::incentive_v2::entry_borrow`,arguments:[t.object("0x06"),t.object(ye.PriceOracle),t.object(ye.StorageId),t.object(e.poolId),t.pure(e.assetId),t.pure(n),t.object(ye.IncentiveV2)],typeArguments:[e.type]}),t}function wm(t,e,n,i){return t.moveCall({target:`${ye.ProtocolPackage}::incentive_v2::entry_repay`,arguments:[t.object("0x06"),t.object(ye.PriceOracle),t.object(ye.StorageId),t.object(e.poolId),t.pure(e.assetId),n,t.pure(i),t.object(ye.IncentiveV2)],typeArguments:[e.type]}),t}function C1(t,e,n,i,r){return t.moveCall({target:`${ye.ProtocolPackage}::incentive_v2::claim_reward`,arguments:[t.object("0x06"),t.object(ye.IncentiveV2),t.object(n),t.object(ye.StorageId),t.pure(e),t.pure(i)],typeArguments:r}),t}var S1=class Kp extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{claims:e}=this.data,n=new Up.TransactionBlock;return e.forEach(i=>{let{assetId:r,poolId:o,option:s,typeArguments:a}=i;C1(n,r,o,s,a)}),n}static fromData(e){return new Kp(e)}},A1=class Vp extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{coinType:e,amount:n}=this.data,i=new zp.TransactionBlock;console.log("build",this.data);let r=ye.pool[e];if(!r)throw new Error(`${e} not support, please use ${Object.keys(ye.pool).join(", ")}.`);return T1(i,r,n)}static fromData(e){return new Vp(e)}};async function Wp(t,e,n){let i=await t.getCoins({owner:e,coinType:n});return console.log("getTokenObjs",e,i),i}var x1=class Hp extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:n,account:i}=e,{coinType:r,amount:o}=this.data,s=new Gp.TransactionBlock;if(console.log("build",this.data),r==="sui"){let[h]=s.splitCoins(s.gas,[o]);return ym(s,ye.pool.sui,h,o)}let a=ye.pool[r];if(!a)throw new Error(`${r} not support, please use ${Object.keys(ye.pool).join(", ")}.`);let u=await Wp(n,i.address,a.type);if(!u.data[0])throw new Error(`Insufficient balance for ${a.name} Token`);let l=u.data[0].coinObjectId;if(u.data.length>=2){let h=1;for(;h<u.data.length;)s.mergeCoins(l,[u.data[h].coinObjectId]),h++}return ym(s,a,s.object(l),o)}static fromData(e){return new Hp(e)}},I1=class Xp extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:n,account:i}=e,{coinType:r,amount:o}=this.data,s=new Zp.TransactionBlock;if(console.log("build",this.data),r==="sui"){let[h]=s.splitCoins(s.gas,[o]);return wm(s,ye.pool.sui,h,o)}let a=ye.pool[r];if(!a)throw new Error(`${r} not support, please use ${Object.keys(ye.pool).join(", ")}.`);let u=await Wp(n,i.address,a.type);if(!u.data[0])throw new Error(`Insufficient balance for ${a.name} Token`);let l=u.data[0].coinObjectId;if(u.data.length>=2){let h=1;for(;h<u.data.length;)s.mergeCoins(l,[u.data[h].coinObjectId]),h++}return wm(s,a,s.object(l),o)}static fromData(e){return new Xp(e)}},O1=class Yp extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{coinType:e,amount:n}=this.data,i=new Jp.TransactionBlock;console.log("build",this.data);let r=ye.pool[e];if(!r)throw new Error(`${e} not support, please use ${Object.keys(ye.pool).join(", ")}.`);return k1(i,r,n)}static fromData(e){return new Yp(e)}},P1=class{application="navi";async deserialize(t){let{transactionBlock:e}=t,n=new v1(e).decode();return{txType:$p.TransactionType.Other,txSubType:n.type,intentionData:n.intentionData}}async build(t){let{suiClient:e,account:n}=t,i;switch(t.txSubType){case"EntryDeposit":i=x1.fromData(t.intentionData);break;case"EntryBorrow":i=A1.fromData(t.intentionData);break;case"EntryRepay":i=I1.fromData(t.intentionData);break;case"EntryWithdraw":i=O1.fromData(t.intentionData);break;case"ClaimReward":i=S1.fromData(t.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:e,account:n})}},D1="msafe-plain-tx",E1=da.TransactionSubTypes.others.plain,M1=class{application;constructor(){this.application=D1}async deserialize(t){let{transactionBlock:e,suiClient:n}=t,i=await e.build({client:n});return{txType:da.TransactionType.Other,txSubType:E1,intentionData:{content:(0,fa.toHEX)(i)}}}async build(t){let{suiClient:e,account:n}=t,i=Qp.TransactionBlock.from((0,fa.fromHEX)(t.intentionData.content)),r=await e.devInspectTransactionBlock({transactionBlock:i,sender:n.address});if(r.effects.status.status!=="success")throw new Error(r.effects.status.error);return i}},B1=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}},Or={PackageId:"0x9632f61a796fc54952d9151d80b319e066cba5498a27b495c99e113db09726b1"},j1=class{constructor(t){this.txb=t}get transactions(){return this.txb.blockData.transactions}decode(t){if(this.isAddLiquidityTransaction())return this.decodeAddLiquidity();if(this.isIncreaseLiquidityTransaction())return this.decodeIncreaseLiquidity(t);if(this.isDecreaseLiquidityTransaction())return this.decodeDecreaseLiquidity(t);if(this.isCollectFeeLiquidityTransaction())return this.decodeCollectFeeLiquidity();if(this.isCollectRewardLiquidityTransaction())return this.decodeCollectRewardLiquidity();if(this.isBurnTransaction())return this.decodeCollectRewardLiquidity();throw new Error("Unknown transaction type")}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isAddLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Or.PackageId}::position_manager::mint`)}isIncreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Or.PackageId}::position_manager::increase_liquidity`)}isDecreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Or.PackageId}::position_manager::decrease_liquidity`)}isCollectFeeLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Or.PackageId}::position_manager::collect`)}isCollectRewardLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Or.PackageId}::position_manager::collect`)}isBurnTransaction(){return!!this.getMoveCallTransaction(`${Or.PackageId}::position_manager::burn`)}decodeAddLiquidity(){console.log(this.helper,"this.helper");let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeInputAddress(12),n=this.helper.decodeInputU64(8),i=this.helper.decodeInputU64(9),r=this.helper.decodeInputU32(4),o=this.helper.decodeInputU32(6);return{txType:$i.TransactionType.Other,type:"AddLiquidity",intentionData:{pool:t,slippage:5,address:e,amountA:n,amountB:i,tickLower:r,tickUpper:o}}}decodeIncreaseLiquidity(t){let e=this.helper.decodeSharedObjectId(0),n=this.helper.decodeSharedObjectId(4),i=this.helper.decodeInputU64(5),r=this.helper.decodeInputU64(6);return{txType:$i.TransactionType.Other,type:"IncreaseLiquidity",intentionData:{pool:e,slippage:5,address:t,amountA:i,amountB:r,nft:n}}}decodeDecreaseLiquidity(t){let e=this.helper.decodeSharedObjectId(0),n=this.helper.decodeSharedObjectId(2),i=this.helper.decodeInputU64(3),r=this.helper.decodeInputU64(4),o=this.helper.decodeInputU64(5);return{txType:$i.TransactionType.Other,type:"AddLiquidity",intentionData:{pool:e,decreaseLiquidity:i,nft:n,amountA:r,amountB:o,slippage:3,address:t}}}decodeCollectFeeLiquidity(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2),n=this.helper.decodeInputAddress(5),i=this.helper.decodeInputU64(3),r=this.helper.decodeInputU64(4);return{txType:$i.TransactionType.Other,type:"CollectFee",intentionData:{pool:t,address:n,collectAmountA:i,collectAmountB:r,nft:e}}}decodeCollectRewardLiquidity(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2),n=this.helper.decodeInputAddress(5);return{txType:$i.TransactionType.Other,type:"CollectReward",intentionData:{pool:t,address:n,rewardAmounts:[0,0,0],nft:e}}}decodeBurnLiquidity(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2);return{txType:$i.TransactionType.Other,type:"Burn",intentionData:{pool:t,nft:e}}}get helper(){console.log(this.transactions,"this.transactions");let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith("")&&e.target!=="0x2::coin::zero");return console.log(t,this.txb,"this.txb"),new bm(t,this.txb)}get helpers(){console.log(this.transactions,"this.transactions");let t=this.transactions.filter(e=>e.kind==="MoveCall"&&e.target.startsWith("")&&e.target!=="0x2::coin::zero");return console.log(t,this.txb,"this.txb"),t.map(e=>new bm(e,this.txb))}},bm=class aa{constructor(e,n){this.moveCall=e,this.txb=n}decodeSharedObjectId(e){let n=this.getInputParam(e);return aa.getSharedObjectId(n)}decodeOwnedObjectId(e){let n=this.getInputParam(e);return aa.getOwnedObjectId(n)}decodeInputU128(e){let n=this.decodePureArg(e,"u128");return Number(n)}decodeInputU64(e){let n=this.decodePureArg(e,"u64");return Number(n)}decodeInputU32(e){let n=this.decodePureArg(e,"u32");return Number(n)}decodeInputU8(e){let n=this.decodePureArg(e,"u8");return Number(n)}decodeInputAddress(e){let n=this.decodePureArg(e,"address");return(0,pi.normalizeSuiAddress)(n)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,n){let i=this.getInputParam(e);return aa.getPureInputValue(i,n)}getInputParam(e){let n=this.moveCall.arguments[e];if(n.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[n.index]}static getPureInputValue(e,n){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let i=e.value.Pure;return Uu.bcs.de(n,new Uint8Array(i))}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,pi.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,pi.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,pi.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,pi.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,n){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 i=e.value.Pure;return Uu.bcs.de(n,new Uint8Array(i))}typeArg(e){return(0,pi.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},N1=class tg extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new Rt(e.network.replace("sui:",""),e.suiClient),{pool:i,address:r,amountA:o,amountB:s,slippage:a,tickLower:u,tickUpper:l,txb:h}=this.data;return n.pool.addLiquidity({pool:i,slippage:a,address:r,amountA:o,amountB:s,tickLower:u,tickUpper:l,txb:h})}static fromData(e){return new tg(e)}},F1=class ng extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new Rt(e.network.replace("sui:",""),e.suiClient),{pool:i,nft:r,txb:o}=this.data;return n.nft.burn({pool:i,nft:r,txb:o})}static fromData(e){return new ng(e)}},R1=class ig extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new Rt(e.network.replace("sui:",""),e.suiClient),{pool:i,address:r,nft:o,collectAmountA:s,collectAmountB:a,txb:u}=this.data;return n.pool.collectFee({pool:i,address:r,collectAmountA:s,collectAmountB:a,nft:o,txb:u})}static fromData(e){return new ig(e)}},q1=class rg extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new Rt(e.network.replace("sui:",""),e.suiClient),{pool:i,address:r,nft:o,rewardAmounts:s,txb:a}=this.data;return n.pool.collectReward({pool:i,address:r,rewardAmounts:s,nft:o,txb:a})}static fromData(e){return new rg(e)}},L1=class og extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new Rt(e.network.replace("sui:",""),e.suiClient),{fee:i,address:r,tickLower:o,tickUpper:s,sqrtPrice:a,slippage:u,coinTypeA:l,coinTypeB:h,amountA:w,amountB:v,txb:T}=this.data;return n.pool.createPool({fee:i,amountA:w,amountB:v,address:r,tickLower:o,tickUpper:s,sqrtPrice:a,slippage:u,coinTypeA:l,coinTypeB:h,txb:T})}static fromData(e){return new og(e)}},$1=class sg extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new Rt(e.network.replace("sui:",""),e.suiClient),{pool:i,address:r,amountA:o,amountB:s,slippage:a,nft:u,decreaseLiquidity:l,txb:h}=this.data;return n.pool.decreaseLiquidity({pool:i,slippage:a,address:r,amountA:o,amountB:s,nft:u,decreaseLiquidity:l,txb:h})}static fromData(e){return new sg(e)}},U1=class ag extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new Rt(e.network.replace("sui:",""),e.suiClient),{pool:i,address:r,amountA:o,amountB:s,slippage:a,nft:u,txb:l}=this.data;return n.pool.increaseLiquidity({pool:i,slippage:a,address:r,amountA:o,amountB:s,nft:u,txb:l})}static fromData(e){return new ag(e)}},K1=class cg extends ve{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new Rt(e.network.replace("sui:",""),e.suiClient),{pool:i,address:r,amountA:o,amountB:s,slippage:a,nft:u,decreaseLiquidity:l,collectAmountA:h,collectAmountB:w,rewardAmounts:v,txb:T}=this.data;return n.pool.removeLiquidity({pool:i,decreaseLiquidity:l,nft:u,amountA:o,amountB:s,slippage:a,address:r,collectAmountA:h,collectAmountB:w,rewardAmounts:v,txb:T})}static fromData(e){return new cg(e)}},vm=class{application="turbos";async deserialize(t){let{transactionBlock:e,account:n}=t,i=new j1(e).decode(n.address);return{txType:eg.TransactionType.Other,txSubType:i.type,intentionData:i.intentionData}}async build(t){let{suiClient:e,account:n,network:i}=t,r;switch(t.txSubType){case"CreatePool":r=L1.fromData(t.intentionData);break;case"AddLiquidity":r=N1.fromData(t.intentionData);break;case"IncreaseLiquidity":r=U1.fromData(t.intentionData);break;case"DecreaseLiquidity":r=$1.fromData(t.intentionData);break;case"RemoveLiquidity":r=K1.fromData(t.intentionData);break;case"CollectFee":r=R1.fromData(t.intentionData);break;case"CollectReward":r=q1.fromData(t.intentionData);break;case"Burn":r=F1.fromData(t.intentionData);break;default:throw new Error("not implemented")}return r.build({suiClient:e,account:n,network:i})}},ha=new B1([new w1,new P1,new vm,new p1,new M1,new pv,new vm]);var Ae=require("@msafe/sui3-utils"),tl=require("@mysten/sui.js/transactions"),ba=require("@mysten/sui.js/utils");var ug=require("@mysten/sui.js/transactions"),z1=1000n,V1=120n,G1=100n,W1={multiplier:{numerator:V1,denominator:G1}};var ma=class{constructor(e){this.globals=e}async simulate(e,n=W1){let i=this.copyTransactionBlock(e.txb),{suiClient:r}=this.globals,o=await this.getGasPrice(n);i.setGasPrice(o);let s=await r.devInspectTransactionBlock({transactionBlock:i,sender:e.sender}),{gasUsed:a}=s.effects,u=this.toGasBudget(a,o),l=s.effects.status.status==="success",h;return l||(h=s.effects.status.error),{success:l,gasPrice:o,gasObject:s.effects.gasObject.reference,gasUsed:a,gasBudget:u,simulationError:h}}async getGasPrice(e){if(this.isFixedValue(e))return e.fixedVal;let n=await this.globals.suiClient.getReferenceGasPrice();return this.applyGasOption(n,e)}toGasBudget(e,n){let{computationCost:i,storageCost:r}=e,o=z1*n,s=BigInt(i)+o,a=s+BigInt(r);return a>s?a:s}isFixedValue(e){return"fixedVal"in e}isMultiplier(e){return"multiplier"in e}applyGasOption(e,n){if(this.isFixedValue(n))return n.fixedVal;if(this.isMultiplier(n)){let{multiplier:i}=n;return e*i.numerator/i.denominator}throw new Error("Sanity: Unknown gas price option")}copyTransactionBlock(e){return ug.TransactionBlock.from(e.serialize())}};var Wu=require("buffer");function pa(t){return Wu.Buffer.from(t,"utf-8")}function H1(t){return`0x${Array.prototype.map.call(t,e=>`0${e.toString(16)}`.slice(-2)).join("")}`}function ga(t){return Uint8Array.from(Wu.Buffer.from(t.startsWith("0x")?t.slice(2):t,"hex"))}var ya=require("@mysten/sui.js/verify");var _i=require("@mysten/sui.js/utils");var _a=require("@mysten/sui.js/utils"),Bo=class{_client;_coinMetaReg;constructor(e){this._client=e,this._coinMetaReg=new Map}async getCoinMeta(e){let n=(0,_a.normalizeStructTag)(e);if(this._coinMetaReg.has(n))return this._coinMetaReg.get(n);let i=await this.queryCoinMeta(n);return i&&this._coinMetaReg.set(n,i),i}async queryCoinMeta(e){return await this._client.getCoinMetadata({coinType:e})||void 0}},Hu=/^0x0000000000000000000000000000000000000000000000000000000000000002::coin::Coin<(.+)>$/,jo=class t{static isCoin(e){return e?(0,_a.normalizeStructTag)(e).match(Hu)!=null:!1}static getCoinType(e){let[,n]=(0,_a.normalizeStructTag)(e).match(Hu)??[];return n||null}static getBalance(e){if(!t.isCoin(e.type)||e.content?.dataType!=="moveObject")return;let{balance:n}=e.content?.fields;if(n!==void 0)return BigInt(n)}};var Vn=class{static normalizeSuiAddress(e){return(0,_i.normalizeSuiAddress)(e)}static normalizeStructTag(e){return(0,_i.normalizeStructTag)(e)}static isSuiAddressEqual(e,n){return(0,_i.normalizeSuiAddress)(e)===(0,_i.normalizeSuiAddress)(n)}static isSuiStructEqual(e,n){return(0,_i.normalizeStructTag)(e)===(0,_i.normalizeStructTag)(n)}static isCoinObjectType(e){return jo.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,ya.verifyTransactionBlock)(e.message,e.signature):(0,ya.verifyPersonalMessage)(e.message,e.signature)}static async getPublicKeyFromPersonalSignature(e){let n=pa(e.messageStr);return this.getPublicKeyFromSignature({message:n,messageType:"Personal",signature:e.signature})}static async verifySignature(e){let n=await t.getPublicKeyFromSignature(e);return Vn.isSuiAddressEqual(n.toSuiAddress(),e.targetAddress)}static async verifyPersonalSignature(e){let n=pa(e.messageStr);return this.verifySignature({message:n,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 lg=require("@msafe/sui3-utils"),dg=require("@mysten/sui.js/cryptography"),fg=require("@mysten/sui.js/multisig");var Z1="0x2::sui::SUI";async function Ju(t,e){let n;try{n=await t.queryTransactionBlocks({filter:{FromAddress:e},options:{showInput:!0},limit:2})}catch{return}if(n.data.length===0||!n.data[0].transaction?.txSignatures)return;let r=n.data[0].transaction?.txSignatures;for(let o=0;o!==r.length;o++){let s=r[o],a=X1(s,e);if(a)return a}}function X1(t,e){let n=(0,dg.parseSerializedSignature)(t);switch(n.signatureScheme){case"MultiSig":{let i=new fg.MultiSigPublicKey(n.multisig.multisig_pk).toSuiAddress();if(Vn.isSuiAddressEqual(i,e))throw new Error("multi-sig wallet cannot be owner");return}case"ZkLogin":{if(Vn.isSuiAddressEqual(n.zkLogin.address,e))throw new Error("ZkLogin wallet cannot be owner");return}case"ED25519":case"Secp256k1":case"Secp256r1":{let i=lg.PublicKeySerde.de({publicKeyEncoded:n.publicKey,schema:n.signatureScheme});return Vn.isSuiAddressEqual(i.toSuiAddress(),e)?i:void 0}default:throw new Error("Unknown schema")}}async function J1(t){let e=!0,n,i=[];for(;e;){let r=await t.suiClient.getCoins({owner:t.owner,coinType:t.coinType,cursor:n});i.push(...r.data),e=r.hasNextPage,n=r.nextCursor}return i}var hg=25;async function mg(t){let e=[];for(;await t.hasNext();){let n=await t.next();e.push(n)}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)}},wa=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 pg(t,e,n){let i=new Qu(t,e,n);return await mg(i)}var Qu=class extends wa{constructor(n,i,r){super(new el(n,i,r));this.provider=n;this.owner=i;this.options=r}},el=class{constructor(e,n,i){this.provider=e;this.owner=n;this.options=i;this.nextCursor=null,this.filter=i?.filter,this.pageSize=i?.pageSize||hg,this.objectOptions=i?.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 n;if(this.filter){let{filter:i}=this;n=e.data.filter(r=>i?.(r))}else n=e.data;return{data:n.map(i=>i.data).filter(i=>i),hasNext:e.hasNextPage}}};var Ki=class t{constructor(e,n){this.globals=e;this.info=n;this.multiSig=new Ae.MultiSigAccount({threshold:n.threshold,ownersWithWeight:n.owners,creationNonce:n.creationNonce}),this.coinHelper=new Bo(this.suiClient),this.simulator=new ma(e)}multiSig;coinHelper;simulator;static async New(e,n){let i=await e.backend.getMSafeAccountInfo(n);if(new t(e,i).address!==n)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 n=>{let i=await this.coinHelper.getCoinMeta(n.coinType),r=n.lockedBalance.number?BigInt(n.totalBalance)-BigInt(n.lockedBalance.number):BigInt(n.totalBalance);return{type:(0,ba.normalizeStructTag)(n.coinType),balance:BigInt(r),metadata:i}}))}async ownedObjects(e){let n={filter:i=>!i?.data?.type?.startsWith("0x2::coin::Coin"),...e};return pg(this.suiClient,this.address,n)}async pendingTransaction(){let e=await this.backend.getPendingTransactions({msafeAddress:this.address});if(!e.pending)return;let n=e.pending,i=e.reject;return{application:n.application,txType:n.txType,txSubType:n.txSubType,createdAt:n.createdAt,creator:n.creator,digest:n.digest,intention:n.intention,sequenceNumber:n.sequenceNumber,payload:n.payload,votes:n.votes,approvalWeight:this.calculateWeightFromVotes(n.votes),msafeAddress:n.msafeAddress,rejectDigest:i?.digest??"",rejectPayload:i?.payload??"",rejectVotes:i?.votes??[],rejectWeight:this.calculateWeightFromVotes(i?.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 n=ha.getAppHelper(e.application);if(!n)throw new Error(`Can't find app helper for application ${e.application}`);let i=await n.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:i,sender:this.address})}async proposeIntention(e){let n=Ae.SigningMessageHelper.proposeIntentionMessage({msafeAddress:this.address,intention:e.intention,sn:e.sequenceNumber}),i=await this.wallet.signPersonalMessage({messageStr:n});return this.backend.proposeIntention({...e,msafeAddress:this.address,signature:i.signature})}async proposeIntentionAndBuildVote(e){let n=ha.getAppHelper(e.application);if(!n)throw new Error(`Can't find app helper for application ${e.application}`);let i=await n.build({network:this.globals.config.network,intentionData:e.intention,txType:e.txType,txSubType:e.txSubType,suiClient:this.globals.suiClient,account:{address:this.address}});i.setGasPrice(e.gasPrice),i.setGasBudget(e.gasBudget),i.setSender(this.address);let r=await i.build({client:this.globals.suiClient}),o=await i.getDigest({client:this.globals.suiClient}),s=await this.wallet.signTransactionBlock({transactionBlock:r});return this.backend.proposeIntentionAndBuildVote({...e,payload:(0,ba.toHEX)(r),digest:o,msafeAddress:this.address,signature:s.signature})}async simulateCoinTransferIntention(e){let n=await this.nextSequenceNumber();return this.simulateIntention({application:Ae.TransactionDefaultApplication,txType:Ae.TransactionType.Assets,txSubType:Ae.TransactionSubTypes.assets.coin.send,sequenceNumber:n,intention:e})}async proposeCoinTransferIntention(e){let n=await this.nextSequenceNumber();return this.proposeIntention({application:Ae.TransactionDefaultApplication,txType:Ae.TransactionType.Assets,txSubType:Ae.TransactionSubTypes.assets.coin.send,sequenceNumber:n,intention:e})}async simulateObjectTransferIntention(e){let n=await this.nextSequenceNumber();return this.simulateIntention({application:Ae.TransactionDefaultApplication,txType:Ae.TransactionType.Assets,txSubType:Ae.TransactionSubTypes.assets.object.send,sequenceNumber:n,intention:e})}async proposeObjectTransferIntention(e){let n=await this.nextSequenceNumber();return this.proposeIntention({application:Ae.TransactionDefaultApplication,txType:Ae.TransactionType.Assets,txSubType:Ae.TransactionSubTypes.assets.object.send,sequenceNumber:n,intention:e})}async simulatePlainPayloadIntention(e){let n=await this.nextSequenceNumber();return this.simulateIntention({application:Ae.TransactionDefaultApplication,txType:Ae.TransactionType.Other,txSubType:Ae.TransactionSubTypes.others.plain,sequenceNumber:n,intention:e})}async proposePlainPayloadIntention(e){let n=await this.nextSequenceNumber(),i=tl.TransactionBlock.from(e.payload);if(!i.blockData.sender||!(0,Ae.isSameAddress)(i.blockData.sender,this.address))throw new Error("Transaction sender is not same as the multisig address");return this.proposeIntention({application:Ae.TransactionDefaultApplication,txType:Ae.TransactionType.Other,txSubType:Ae.TransactionSubTypes.others.plain,sequenceNumber:n,intention:e})}async voteForTransaction(e,n){let i=ga(n),r=await this.wallet.signTransactionBlock({transactionBlock:i});return this.backend.voteForTransaction({msafeAddress:this.address,digest:e,signature:r.signature})}async proposePendingTransaction(e){let n=new tl.TransactionBlock,i=await n.build({client:this.suiClient}),r=await n.getDigest({client:this.suiClient}),o=await this.wallet.signTransactionBlock({transactionBlock:i});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 n=e.payload,i=(0,Ae.buildRejectTxb)(this.address,n);return this.simulator.simulate({txb:i,sender:this.address})}async rejectCurrentTx(e){let n=await this.pendingTransaction();if(!n||n.rejectDigest!=="")throw new Error("Already rejected");let i=n.payload,r=(0,Ae.buildRejectTxb)(this.address,i),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}),n=ha.getAppHelper(e.application);if(!n)throw new Error(`Can't find app helper for application ${e.application}`);let i=await n.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:i,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,n=!1){let i=n?e.rejectVotes:e.votes,r=n?e.rejectPayload:e.payload;if(this.calculateWeightFromVotes(i)<this.info.threshold)throw new Error("Not enough signature");let o=[],s=new Map(i.map(u=>[u.userAddress,u.signature]));for(let u=0;u<this.info.owners.length;u++){let l=this.info.owners[u],h=s.get(l.address);h&&o.push(h)}let a=this.multiSig.combinePartialSignatures(o);return this.suiClient.executeTransactionBlock({transactionBlock:ga(r),signature:a,options:{showEffects:!0,showEvents:!0}})}async dashboard(){return this.backend.getDashboard({msafeAddress:this.address})}calculateWeightFromVotes(e){return this.calculateWeight(e.map(n=>n.userAddress))}calculateWeight(e){let n=0;for(let i=0;i<e.length;i++){let r=this.info.owners.find(o=>(0,Ae.isSameAddress)(o.address,e[i]));r&&(n+=r.weight)}return n}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 gg=require("@msafe/sui3-utils"),_g=require("@mysten/sui.js/utils");var va=class{constructor(e){this.globals=e;this.knownPublicKeys=new Map}knownPublicKeys;async getPublicKey(e){let n=this.knownPublicKeys.get(e);if(n)return n;let i=await this._getPublicKey(e);return i&&this.knownPublicKeys.set(e,i),i}async getPublicKeyBatch(e){let n=new Array(e.length).fill(void 0);for(let o=0;o<e.length;o++){let s=e[o];n[o]=this.knownPublicKeys.get(s)}let i=n.map((o,s)=>o===void 0?s:-1).filter(o=>o!==-1);if(i.length===0)return n;let r=await this.globals.backend.getPublicKeyBatch(i.map(o=>e[o]));for(let o=0;o<i.length;o++){let s=i[o];n[s]=r[o]}for(let o=0;o<n.length;o++)n[o]===void 0&&(n[o]=await this.getPublicKeyFromChain(e[o]));for(let o=0;o<e.length;o++)n[o]&&this.knownPublicKeys.set(e[o],n[o]);return n}addPublicKey(e,n){if(!(0,gg.isSameAddress)(e,n.toSuiAddress()))throw new Error("Invalid public key");this.knownPublicKeys.set((0,_g.normalizeSuiAddress)(e),n)}async _getPublicKey(e){let n=await this.getPublicKeyFromBackend(e);if(n)return n;let i=await this.getPublicKeyFromChain(e);if(i)return i}async getPublicKeyFromBackend(e){try{return await this.globals.backend.getPublicKey(e)}catch{return}}async getPublicKeyFromChain(e){return Ju(this.globals.suiClient,e)}};var ka=class{constructor(e){this.globals=e}async create(e){return this.globals.backend.submitReport(e)}};var Cg=require("@mysten/sui.js/client");var Fo=require("@msafe/sui3-utils"),No=ge(require("axios"),1);var Ta=class t{constructor(e){this.apiURL=e}_token;async authSign(e){let n=await this.post("/auth/login",e);return this._token=n.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 n={userAddressList:e};return(await this.get("/user/public-keys",{params:n,headers:this.headers()})).data?.map(r=>r?Fo.PublicKeySerde.de(r):void 0)}async getMSafeAccountInfo(e){let n={msafeAddress:e},i=await this.get("/msafe",{params:n,headers:this.headers()});return t.toMSafeConfig(i.data)}async getUserInfo(){return(await this.get("/user",{headers:this.headers()})).data}async getOwnedMSafeByStatus(e){let n={status:e.status??Fo.UserMSafeStatus.active,...e.pagination?{page:e.pagination.page.toString(),limit:e.pagination.limit.toString()}:{}},i=await this.get("/msafe/owned",{params:n,headers:this.headers()});return{data:i.data.data.map(t.toMSafeConfig),meta:i.data.meta}}async updateMSafeStatus(e){let n=e;await this.post("/msafe/status",n,{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(n=>({address:n.address,weight:n.weight,publicKey:Fo.PublicKeySerde.de({publicKeyEncoded:n.publicKeyEncoded,schema:n.schema})}))}}async get(e,n){let i=this.getFullUrl(e);try{return await No.default.get(i,n)}catch(r){throw Ca.fromError(r)??r}}async post(e,n,i){let r=this.getFullUrl(e);try{return await No.default.post(r,n,{...i,transformRequest:this.getTransformRequest()})}catch(o){throw Ca.fromError(o)??o}}getFullUrl(e){return e.startsWith(this.apiURL)?e:`${this.apiURL}${Zu(e,"/")}`}getTransformRequest(){let e=[],{transformRequest:n}=No.default.defaults;return n?n instanceof Array?e=n:e=[n]:e=[],[i=>JSON.parse(JSON.stringify(i,(r,o)=>typeof o=="bigint"?`${o.toString()}n`:o)),...e]}},Ca=class t extends Error{constructor(n){super();this.e=n;Error.captureStackTrace(this,this.constructor)}name;static fromError(n){if(No.default.isAxiosError(n)&&n?.response?.data&&"message"in n.response.data)return new t(n)}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 yg=(o=>(o.local="local",o.unit="unit",o.dev="dev",o.prev="prev",o.prod="prod",o))(yg||{}),Sa="https://fullnode.testnet.sui.io",nl="https://fullnode.mainnet.sui.io",il="http://127.0.0.1:3000",rl="http://127.0.0.1:3001",wg="https://sui-dev.m-safe.link",bg="http://13.56.226.148:81",vg="https://sui-preview.m-safe.link",kg="https://sui.m-safe.link",Tg=new Map([["unit",{suiClient:{url:Sa},backend:{url:il},syncingURL:rl,network:"sui:testnet"}],["local",{suiClient:{url:Sa},backend:{url:il},syncingURL:rl,network:"sui:testnet"}],["dev",{suiClient:{url:Sa},backend:{url:wg},syncingURL:bg,network:"sui:testnet"}],["prev",{suiClient:{url:nl},backend:{url:vg},syncingURL:"",network:"sui:mainnet"}],["prod",{suiClient:{url:nl},backend:{url:kg},syncingURL:"",network:"sui:mainnet"}]]);function ol(t,e){let n=Tg.get(t);if(!n)throw new Error("Unknown environment");return e?.suiClient?.url&&(n.suiClient.url=e.suiClient.url),e?.backend?.url&&(n.backend.url=e.backend.url),n}var Ro=class t{backend;suiClient;config;_wallet;constructor(e){this.backend=e.backend,this.suiClient=e.suiClient,this.config=e.config}static async New(e,n){let i=ol(e,n),r=new Cg.SuiClient(i.suiClient),o=new Ta(i.backend.url);return new t({backend:o,suiClient:r,config:i})}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 Aa=class t{constructor(e){this.globals=e}_creationHelper;_publicKeyHelper;static async New(e,n){let i=await Ro.New(e,n);return new t(i)}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 n=await this.authSign(e.wallet);return this.globals.wallet=e.wallet,this.backend.setJWTToken(n),n}async authSign(e){let n=xa.SigningMessageHelper.loginMessageWithTimestamp(new Date().toUTCString()),i=await e.signPersonalMessage({messageStr:n});return this.backend.authSign({address:await e.address(),message:n,signature:i.signature,walletType:e.walletType})}async userInfo(){return this.globals.backend.getUserInfo()}async ownedMSafe(e){return this.globals.backend.getOwnedMSafeByStatus({status:xa.UserMSafeStatus.active,pagination:e})}async createAccount(e){return this.creationHelper.submitMSafeCreation(e)}getMSafeAccount(e){return new Ki(this.globals,e)}async getMSafeAccountFromAddress(e){let n=await this.backend.getMSafeAccountInfo(e);return new Ki(this.globals,n)}get creationHelper(){return this._creationHelper||(this._creationHelper=new Vi(this.globals,this.publicKeyHelper)),this._creationHelper}get publicKeyHelper(){return this._publicKeyHelper||(this._publicKeyHelper=new va(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 Gi(this.globals)}get Invitation(){return new $o(this.globals)}get Report(){return new ka(this.globals)}async walletAddress(){return this.wallet.address()}};
2053
+ `);var bs=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Og=new Set,md=typeof process=="object"&&process?process:{},Pg=(t,e,n,i)=>{typeof md.emitWarning=="function"?md.emitWarning(t,e,n,i):console.error(`[${n}] ${e}: ${t}`)},cc=globalThis.AbortController,Ig=globalThis.AbortSignal;if(typeof cc>"u"){Ig=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(i,r){this._onabort.push(r)}},cc=class{constructor(){e()}signal=new Ig;abort(i){if(!this.signal.aborted){this.signal.reason=i,this.signal.aborted=!0;for(let r of this.signal._onabort)r(i);this.signal.onabort?.(i)}}};let t=md.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",e=()=>{t&&(t=!1,Pg("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 OC=t=>!Og.has(t),S6=Symbol("type"),Ni=t=>t&&t===Math.floor(t)&&t>0&&isFinite(t),Eg=t=>Ni(t)?t<=Math.pow(2,8)?Uint8Array:t<=Math.pow(2,16)?Uint16Array:t<=Math.pow(2,32)?Uint32Array:t<=Number.MAX_SAFE_INTEGER?ho:null:null,ho=class extends Array{constructor(e){super(e),this.fill(0)}},gd=class t{heap;length;static#c=!1;static create(e){let n=Eg(e);if(!n)return[];t.#c=!0;let i=new t(e,n);return t.#c=!1,i}constructor(e,n){if(!t.#c)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new n(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},uc=class t{#c;#d;#y;#p;#O;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#i;#m;#r;#n;#e;#u;#f;#a;#o;#g;#s;#k;#C;#_;#w;#S;#l;static unsafeExposeInternals(e){return{starts:e.#C,ttls:e.#_,sizes:e.#k,keyMap:e.#r,keyList:e.#n,valList:e.#e,next:e.#u,prev:e.#f,get head(){return e.#a},get tail(){return e.#o},free:e.#g,isBackgroundFetch:n=>e.#t(n),backgroundFetch:(n,i,r,o)=>e.#D(n,i,r,o),moveToTail:n=>e.#I(n),indexes:n=>e.#b(n),rindexes:n=>e.#v(n),isStale:n=>e.#h(n)}}get max(){return this.#c}get maxSize(){return this.#d}get calculatedSize(){return this.#m}get size(){return this.#i}get fetchMethod(){return this.#O}get dispose(){return this.#y}get disposeAfter(){return this.#p}constructor(e){let{max:n=0,ttl:i,ttlResolution:r=1,ttlAutopurge:o,updateAgeOnGet:s,updateAgeOnHas:a,allowStale:u,dispose:l,disposeAfter:m,noDisposeOnSet:b,noUpdateTTL:v,maxSize:T=0,maxEntrySize:O=0,sizeCalculation:P,fetchMethod:M,noDeleteOnFetchRejection:B,noDeleteOnStaleGet:E,allowStaleOnFetchRejection:q,allowStaleOnFetchAbort:K,ignoreFetchAbort:X}=e;if(n!==0&&!Ni(n))throw new TypeError("max option must be a nonnegative integer");let G=n?Eg(n):Array;if(!G)throw new Error("invalid max value: "+n);if(this.#c=n,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(M!==void 0&&typeof M!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#O=M,this.#S=!!M,this.#r=new Map,this.#n=new Array(n).fill(void 0),this.#e=new Array(n).fill(void 0),this.#u=new G(n),this.#f=new G(n),this.#a=0,this.#o=0,this.#g=gd.create(n),this.#i=0,this.#m=0,typeof l=="function"&&(this.#y=l),typeof m=="function"?(this.#p=m,this.#s=[]):(this.#p=void 0,this.#s=void 0),this.#w=!!this.#y,this.#l=!!this.#p,this.noDisposeOnSet=!!b,this.noUpdateTTL=!!v,this.noDeleteOnFetchRejection=!!B,this.allowStaleOnFetchRejection=!!q,this.allowStaleOnFetchAbort=!!K,this.ignoreFetchAbort=!!X,this.maxEntrySize!==0){if(this.#d!==0&&!Ni(this.#d))throw new TypeError("maxSize must be a positive integer if specified");if(!Ni(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#R()}if(this.allowStale=!!u,this.noDeleteOnStaleGet=!!E,this.updateAgeOnGet=!!s,this.updateAgeOnHas=!!a,this.ttlResolution=Ni(r)||r===0?r:1,this.ttlAutopurge=!!o,this.ttl=i||0,this.ttl){if(!Ni(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 Z="LRU_CACHE_UNBOUNDED";OC(Z)&&(Og.add(Z),Pg("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",Z,t))}}getRemainingTTL(e){return this.#r.has(e)?1/0:0}#M(){let e=new ho(this.#c),n=new ho(this.#c);this.#_=e,this.#C=n,this.#j=(o,s,a=bs.now())=>{if(n[o]=s!==0?a:0,e[o]=s,s!==0&&this.ttlAutopurge){let u=setTimeout(()=>{this.#h(o)&&this.delete(this.#n[o])},s+1);u.unref&&u.unref()}},this.#A=o=>{n[o]=e[o]!==0?bs.now():0},this.#T=(o,s)=>{if(e[s]){let a=e[s],u=n[s];o.ttl=a,o.start=u,o.now=i||r();let l=o.now-u;o.remainingTTL=a-l}};let i=0,r=()=>{let o=bs.now();if(this.ttlResolution>0){i=o;let s=setTimeout(()=>i=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],u=n[s];if(a===0||u===0)return 1/0;let l=(i||r())-u;return a-l},this.#h=o=>e[o]!==0&&n[o]!==0&&(i||r())-n[o]>e[o]}#A=()=>{};#T=()=>{};#j=()=>{};#h=()=>!1;#R(){let e=new ho(this.#c);this.#m=0,this.#k=e,this.#x=n=>{this.#m-=e[n],e[n]=0},this.#B=(n,i,r,o)=>{if(this.#t(i))return 0;if(!Ni(r))if(o){if(typeof o!="function")throw new TypeError("sizeCalculation must be a function");if(r=o(i,n),!Ni(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=(n,i,r)=>{if(e[n]=i,this.#d){let o=this.#d-e[n];for(;this.#m>o;)this.#E(!0)}this.#m+=e[n],r&&(r.entrySize=i,r.totalCalculatedSize=this.#m)}}#x=e=>{};#P=(e,n,i)=>{};#B=(e,n,i,r)=>{if(i||r)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#b({allowStale:e=this.allowStale}={}){if(this.#i)for(let n=this.#o;!(!this.#N(n)||((e||!this.#h(n))&&(yield n),n===this.#a));)n=this.#f[n]}*#v({allowStale:e=this.allowStale}={}){if(this.#i)for(let n=this.#a;!(!this.#N(n)||((e||!this.#h(n))&&(yield n),n===this.#o));)n=this.#u[n]}#N(e){return e!==void 0&&this.#r.get(this.#n[e])===e}*entries(){for(let e of this.#b())this.#e[e]!==void 0&&this.#n[e]!==void 0&&!this.#t(this.#e[e])&&(yield[this.#n[e],this.#e[e]])}*rentries(){for(let e of this.#v())this.#e[e]!==void 0&&this.#n[e]!==void 0&&!this.#t(this.#e[e])&&(yield[this.#n[e],this.#e[e]])}*keys(){for(let e of this.#b()){let n=this.#n[e];n!==void 0&&!this.#t(this.#e[e])&&(yield n)}}*rkeys(){for(let e of this.#v()){let n=this.#n[e];n!==void 0&&!this.#t(this.#e[e])&&(yield n)}}*values(){for(let e of this.#b())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,n={}){for(let i of this.#b()){let r=this.#e[i],o=this.#t(r)?r.__staleWhileFetching:r;if(o!==void 0&&e(o,this.#n[i],this))return this.get(this.#n[i],n)}}forEach(e,n=this){for(let i of this.#b()){let r=this.#e[i],o=this.#t(r)?r.__staleWhileFetching:r;o!==void 0&&e.call(n,o,this.#n[i],this)}}rforEach(e,n=this){for(let i of this.#v()){let r=this.#e[i],o=this.#t(r)?r.__staleWhileFetching:r;o!==void 0&&e.call(n,o,this.#n[i],this)}}purgeStale(){let e=!1;for(let n of this.#v({allowStale:!0}))this.#h(n)&&(this.delete(this.#n[n]),e=!0);return e}dump(){let e=[];for(let n of this.#b({allowStale:!0})){let i=this.#n[n],r=this.#e[n],o=this.#t(r)?r.__staleWhileFetching:r;if(o===void 0||i===void 0)continue;let s={value:o};if(this.#_&&this.#C){s.ttl=this.#_[n];let a=bs.now()-this.#C[n];s.start=Math.floor(Date.now()-a)}this.#k&&(s.size=this.#k[n]),e.unshift([i,s])}return e}load(e){this.clear();for(let[n,i]of e){if(i.start){let r=Date.now()-i.start;i.start=bs.now()-r}this.set(n,i.value,i)}}set(e,n,i={}){if(n===void 0)return this.delete(e),this;let{ttl:r=this.ttl,start:o,noDisposeOnSet:s=this.noDisposeOnSet,sizeCalculation:a=this.sizeCalculation,status:u}=i,{noUpdateTTL:l=this.noUpdateTTL}=i,m=this.#B(e,n,i.size||0,a);if(this.maxEntrySize&&m>this.maxEntrySize)return u&&(u.set="miss",u.maxEntrySizeExceeded=!0),this.delete(e),this;let b=this.#i===0?void 0:this.#r.get(e);if(b===void 0)b=this.#i===0?this.#o:this.#g.length!==0?this.#g.pop():this.#i===this.#c?this.#E(!1):this.#i,this.#n[b]=e,this.#e[b]=n,this.#r.set(e,b),this.#u[this.#o]=b,this.#f[b]=this.#o,this.#o=b,this.#i++,this.#P(b,m,u),u&&(u.set="add"),l=!1;else{this.#I(b);let v=this.#e[b];if(n!==v){if(this.#S&&this.#t(v)?v.__abortController.abort(new Error("replaced")):s||(this.#w&&this.#y?.(v,e,"set"),this.#l&&this.#s?.push([v,e,"set"])),this.#x(b),this.#P(b,m,u),this.#e[b]=n,u){u.set="replace";let T=v&&this.#t(v)?v.__staleWhileFetching:v;T!==void 0&&(u.oldValue=T)}}else u&&(u.set="update")}if(r!==0&&!this.#_&&this.#M(),this.#_&&(l||this.#j(b,r,o),u&&this.#T(u,b)),!s&&this.#l&&this.#s){let v=this.#s,T;for(;T=v?.shift();)this.#p?.(...T)}return this}pop(){try{for(;this.#i;){let e=this.#e[this.#a];if(this.#E(!0),this.#t(e)){if(e.__staleWhileFetching)return e.__staleWhileFetching}else if(e!==void 0)return e}}finally{if(this.#l&&this.#s){let e=this.#s,n;for(;n=e?.shift();)this.#p?.(...n)}}}#E(e){let n=this.#a,i=this.#n[n],r=this.#e[n];return this.#S&&this.#t(r)?r.__abortController.abort(new Error("evicted")):(this.#w||this.#l)&&(this.#w&&this.#y?.(r,i,"evict"),this.#l&&this.#s?.push([r,i,"evict"])),this.#x(n),e&&(this.#n[n]=void 0,this.#e[n]=void 0,this.#g.push(n)),this.#i===1?(this.#a=this.#o=0,this.#g.length=0):this.#a=this.#u[n],this.#r.delete(i),this.#i--,n}has(e,n={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:r}=n,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 i&&this.#A(o),r&&(r.has="hit",this.#T(r,o)),!0}else r&&(r.has="miss");return!1}peek(e,n={}){let{allowStale:i=this.allowStale}=n,r=this.#r.get(e);if(r!==void 0&&(i||!this.#h(r))){let o=this.#e[r];return this.#t(o)?o.__staleWhileFetching:o}}#D(e,n,i,r){let o=n===void 0?void 0:this.#e[n];if(this.#t(o))return o;let s=new cc,{signal:a}=i;a?.addEventListener("abort",()=>s.abort(a.reason),{signal:s.signal});let u={signal:s.signal,options:i,context:r},l=(P,M=!1)=>{let{aborted:B}=s.signal,E=i.ignoreFetchAbort&&P!==void 0;if(i.status&&(B&&!M?(i.status.fetchAborted=!0,i.status.fetchError=s.signal.reason,E&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),B&&!E&&!M)return b(s.signal.reason);let q=T;return this.#e[n]===T&&(P===void 0?q.__staleWhileFetching?this.#e[n]=q.__staleWhileFetching:this.delete(e):(i.status&&(i.status.fetchUpdated=!0),this.set(e,P,u.options))),P},m=P=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=P),b(P)),b=P=>{let{aborted:M}=s.signal,B=M&&i.allowStaleOnFetchAbort,E=B||i.allowStaleOnFetchRejection,q=E||i.noDeleteOnFetchRejection,K=T;if(this.#e[n]===T&&(!q||K.__staleWhileFetching===void 0?this.delete(e):B||(this.#e[n]=K.__staleWhileFetching)),E)return i.status&&K.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),K.__staleWhileFetching;if(K.__returned===K)throw P},v=(P,M)=>{let B=this.#O?.(e,o,u);B&&B instanceof Promise&&B.then(E=>P(E),M),s.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(P(),i.allowStaleOnFetchAbort&&(P=E=>l(E,!0)))})};i.status&&(i.status.fetchDispatched=!0);let T=new Promise(v).then(l,m),O=Object.assign(T,{__abortController:s,__staleWhileFetching:o,__returned:void 0});return n===void 0?(this.set(e,O,{...u.options,status:void 0}),n=this.#r.get(e)):this.#e[n]=O,O}#t(e){if(!this.#S)return!1;let n=e;return!!n&&n instanceof Promise&&n.hasOwnProperty("__staleWhileFetching")&&n.__abortController instanceof cc}async fetch(e,n={}){let{allowStale:i=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,ttl:s=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:u=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:m=this.noUpdateTTL,noDeleteOnFetchRejection:b=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:v=this.allowStaleOnFetchRejection,ignoreFetchAbort:T=this.ignoreFetchAbort,allowStaleOnFetchAbort:O=this.allowStaleOnFetchAbort,context:P,forceRefresh:M=!1,status:B,signal:E}=n;if(!this.#S)return B&&(B.fetch="get"),this.get(e,{allowStale:i,updateAgeOnGet:r,noDeleteOnStaleGet:o,status:B});let q={allowStale:i,updateAgeOnGet:r,noDeleteOnStaleGet:o,ttl:s,noDisposeOnSet:a,size:u,sizeCalculation:l,noUpdateTTL:m,noDeleteOnFetchRejection:b,allowStaleOnFetchRejection:v,allowStaleOnFetchAbort:O,ignoreFetchAbort:T,status:B,signal:E},K=this.#r.get(e);if(K===void 0){B&&(B.fetch="miss");let X=this.#D(e,K,q,P);return X.__returned=X}else{let X=this.#e[K];if(this.#t(X)){let x=i&&X.__staleWhileFetching!==void 0;return B&&(B.fetch="inflight",x&&(B.returnedStale=!0)),x?X.__staleWhileFetching:X.__returned=X}let G=this.#h(K);if(!M&&!G)return B&&(B.fetch="hit"),this.#I(K),r&&this.#A(K),B&&this.#T(B,K),X;let Z=this.#D(e,K,q,P),I=Z.__staleWhileFetching!==void 0&&i;return B&&(B.fetch=G?"stale":"refresh",I&&G&&(B.returnedStale=!0)),I?Z.__staleWhileFetching:Z.__returned=Z}}get(e,n={}){let{allowStale:i=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,status:s}=n,a=this.#r.get(e);if(a!==void 0){let u=this.#e[a],l=this.#t(u);return s&&this.#T(s,a),this.#h(a)?(s&&(s.get="stale"),l?(s&&i&&u.__staleWhileFetching!==void 0&&(s.returnedStale=!0),i?u.__staleWhileFetching:void 0):(o||this.delete(e),s&&i&&(s.returnedStale=!0),i?u:void 0)):(s&&(s.get="hit"),l?u.__staleWhileFetching:(this.#I(a),r&&this.#A(a),u))}else s&&(s.get="miss")}#F(e,n){this.#f[n]=e,this.#u[e]=n}#I(e){e!==this.#o&&(e===this.#a?this.#a=this.#u[e]:this.#F(this.#f[e],this.#u[e]),this.#F(this.#o,e),this.#o=e)}delete(e){let n=!1;if(this.#i!==0){let i=this.#r.get(e);if(i!==void 0)if(n=!0,this.#i===1)this.clear();else{this.#x(i);let r=this.#e[i];this.#t(r)?r.__abortController.abort(new Error("deleted")):(this.#w||this.#l)&&(this.#w&&this.#y?.(r,e,"delete"),this.#l&&this.#s?.push([r,e,"delete"])),this.#r.delete(e),this.#n[i]=void 0,this.#e[i]=void 0,i===this.#o?this.#o=this.#f[i]:i===this.#a?this.#a=this.#u[i]:(this.#u[this.#f[i]]=this.#u[i],this.#f[this.#u[i]]=this.#f[i]),this.#i--,this.#g.push(i)}}if(this.#l&&this.#s?.length){let i=this.#s,r;for(;r=i?.shift();)this.#p?.(...r)}return n}clear(){for(let e of this.#v({allowStale:!0})){let n=this.#e[e];if(this.#t(n))n.__abortController.abort(new Error("deleted"));else{let i=this.#n[e];this.#w&&this.#y?.(n,i,"delete"),this.#l&&this.#s?.push([n,i,"delete"])}}if(this.#r.clear(),this.#e.fill(void 0),this.#n.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.#i=0,this.#l&&this.#s){let e=this.#s,n;for(;n=e?.shift();)this.#p?.(...n)}}};var ce=be(Se(),1);var hc=be(Dg(),1),pr=require("@mysten/sui.js/utils"),mr=require("@mysten/sui.js/transactions");var vs=be(Se(),1),Lg=require("@mysten/sui.js/transactions"),on=be(Se(),1);var Fi=be(Se(),1),Sn=be(Se(),1);var Ts=be(Se(),1);var Ug=require("@mysten/sui.js/utils"),pc=require("@mysten/sui.js/transactions"),mc=require("@mysten/sui.js/utils");var kd=be(Se(),1),PC=Object.defineProperty,EC=(t,e,n)=>e in t?PC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Xn=(t,e,n)=>(EC(t,typeof e!="symbol"?e+"":e,n),n);var lc=443636,dc=-443636,wd="79226673515401279992447579055",bd="4295048016",MC=14,jC="59543866431248",BC="184467440737095516",NC="15793534762490258745",FC=class{generateMnemonic(t=24){return Ag(xg,t===12?128:256)}getKeypairFromMnemonics(t,e={}){let n=this.getDerivePath(e);return Ng.Ed25519Keypair.deriveKeypair(t,n)}getDerivePath(t={}){let{accountIndex:e=0,isExternal:n=!1,addressIndex:i=0}=t;return`m/44'/784'/${e}'/${n?1:0}'/${i}'`}},Cs=class{constructor(t){this.sdk=t,Xn(this,"_lru"),Xn(this,"_fetching",{})}async getCacheOrSet(t,e,n=0){var i;let r=this._lru||(this._lru=new uc({max:100}));if(r.has(t))return r.get(t);let s=await((i=this._fetching)[t]||(i[t]=e()));return delete this._fetching[t],r.set(t,s,{ttl:n}),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 RC(t){if("reference"in t)return t.reference;let e=Cd(t);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:Rg(t)}function _c(t){var e,n;return"objectId"in t?t.objectId:(n=(e=RC(t))==null?void 0:e.objectId)!=null?n:qg(t)}function Zn(t){var e;return"fields"in t?t.fields:(e=Fg(t))==null?void 0:e.fields}function Fg(t){let e="data"in t?Cd(t):t;if(!(!e||!qC(e)||e.content.dataType!=="moveObject"))return e.content}function qC(t){return t.content!==void 0}function Cd(t){return t.data}function Rg(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 qg(t){if(t.error&&"object_id"in t.error&&!("version"in t.error)&&!("digest"in t.error))return t.error.object_id}function LC(t){return t.data!==void 0}function UC(t){var e;let n=LC(t)?t.data:t;return!n?.type&&"data"in t?((e=n?.content)==null?void 0:e.dataType)==="package"?"package":gc(t):n?.type}function gc(t){var e;return(e=Fg(t))==null?void 0:e.type}function $C(t){var e;return(e=Cd(t))==null?void 0:e.owner}var ks=async(t,e,n)=>{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:n}));return(await Promise.all(o)).flat()}return await t.multiGetObjects({ids:e,options:n})},KC=class extends Cs{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 ks(this.provider,Object.values(e),{showContent:!0})).map(i=>{let r=Zn(i),o=_c(i),s=gc(i);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())}},Mg=new ce.default(2).pow(new ce.default(128)),zC=class{priceToSqrtPriceX64(t,e,n){return new ce.default(new $(t).mul($.pow(10,n-e)).sqrt().mul($.pow(2,64)).floor().toFixed(0))}sqrtPriceX64ToPrice(t,e,n){return new $(t.toString()).mul($.pow(2,-64)).pow(2).mul($.pow(10,e-n))}priceToTickIndex(t,e,n){return this.sqrtPriceX64ToTickIndex(this.priceToSqrtPriceX64(t,e,n))}sqrtPriceX64ToTickIndex(t){if(t.gt(new ce.default(wd))||t.lt(new ce.default(bd)))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let e=t.bitLength()-1,n=new ce.default(e-64),i=this.signedShiftLeft(n,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<MC;){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 u=s.shrn(32),m=i.add(u).mul(new ce.default(jC)),b=this.signedShiftRight(m.sub(new ce.default(BC)),64,128).toNumber(),v=this.signedShiftRight(m.add(new ce.default(NC)),64,128).toNumber();return b==v?b:this.tickIndexToSqrtPriceX64(v).lte(t)?v:b}tickIndexToSqrtPriceX64(t){return t>0?new ce.default(this.tickIndexToSqrtPricePositive(t)):new ce.default(this.tickIndexToSqrtPriceNegative(t))}tickIndexToPrice(t,e,n){return this.sqrtPriceX64ToPrice(this.tickIndexToSqrtPriceX64(t),e,n)}toX64_Decimal(t){return t.mul($.pow(2,64))}fromX64_Decimal(t){return t.mul($.pow(2,-64))}scaleDown(t,e){return new $(t).div($.pow(10,e)).toString()}scaleUp(t,e){return new $(t).mul($.pow(10,e)).toString()}bitsToNumber(t,e=32){return hc.default.toNumber(hc.default.asIntN(e,hc.default.BigInt(t)))}subUnderflowU128(t,e){return t.add(Mg).sub(e).mod(Mg)}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),n;return e&1?n=new ce.default("18445821805675392311"):n=new ce.default("18446744073709551616"),e&2&&(n=this.signedShiftRight(n.mul(new ce.default("18444899583751176498")),64,256)),e&4&&(n=this.signedShiftRight(n.mul(new ce.default("18443055278223354162")),64,256)),e&8&&(n=this.signedShiftRight(n.mul(new ce.default("18439367220385604838")),64,256)),e&16&&(n=this.signedShiftRight(n.mul(new ce.default("18431993317065449817")),64,256)),e&32&&(n=this.signedShiftRight(n.mul(new ce.default("18417254355718160513")),64,256)),e&64&&(n=this.signedShiftRight(n.mul(new ce.default("18387811781193591352")),64,256)),e&128&&(n=this.signedShiftRight(n.mul(new ce.default("18329067761203520168")),64,256)),e&256&&(n=this.signedShiftRight(n.mul(new ce.default("18212142134806087854")),64,256)),e&512&&(n=this.signedShiftRight(n.mul(new ce.default("17980523815641551639")),64,256)),e&1024&&(n=this.signedShiftRight(n.mul(new ce.default("17526086738831147013")),64,256)),e&2048&&(n=this.signedShiftRight(n.mul(new ce.default("16651378430235024244")),64,256)),e&4096&&(n=this.signedShiftRight(n.mul(new ce.default("15030750278693429944")),64,256)),e&8192&&(n=this.signedShiftRight(n.mul(new ce.default("12247334978882834399")),64,256)),e&16384&&(n=this.signedShiftRight(n.mul(new ce.default("8131365268884726200")),64,256)),e&32768&&(n=this.signedShiftRight(n.mul(new ce.default("3584323654723342297")),64,256)),e&65536&&(n=this.signedShiftRight(n.mul(new ce.default("696457651847595233")),64,256)),e&131072&&(n=this.signedShiftRight(n.mul(new ce.default("26294789957452057")),64,256)),e&262144&&(n=this.signedShiftRight(n.mul(new ce.default("37481735321082")),64,256)),n}signedShiftLeft(t,e,n){let i=t.toTwos(n).shln(e);return i.imaskn(n+1),i.fromTwos(n)}signedShiftRight(t,e,n){let i=t.toTwos(n).shrn(e);return i.imaskn(n-e+1),i.fromTwos(n-e)}},vd=(t,e)=>{let n=_c(t);if(Rg(t))throw new Error(`${e}(${n}) had been deleted`);if(qg(t))throw new Error(`${e}(${n}) is not found`);return!0},po=60*1e3,VC=class extends Cs{async getPools(t=!1){let e=await this.contract.getConfig(),n=[],i;do i=await this.provider.getDynamicFields({parentId:e.PoolTableId,cursor:i?.nextCursor,limit:15}),n.push(...i.data.map(a=>a.objectId));while(i.hasNextPage);if(!n.length)return[];let o=(await ks(this.provider,n,{showContent:!0})).map(a=>Zn(a).value.fields.pool_id);if(!o.length)return[];let s=await ks(this.provider,o,{showContent:!0});return t||(s=s.filter(a=>Zn(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 vd(e,"pool"),this.parsePool(e)},1500)}async createPool(t){let{fee:e,address:n,tickLower:i,tickUpper:r,sqrtPrice:o,slippage:s,coinTypeA:a,coinTypeB:u}=t,l=await this.contract.getConfig(),m=new $(t.amountA),b=new $(t.amountB),[v,T]=await Promise.all([this.coin.selectTradeCoins(n,a,m),this.coin.selectTradeCoins(n,u,b)]),O=t.txb||new mr.TransactionBlock,P=v.length>0?this.coin.convertTradeCoins(O,v,a,m):[this.coin.zero(a,O)],M=T.length>0?this.coin.convertTradeCoins(O,T,u,b):[this.coin.zero(u,O)];return O.moveCall({target:`${l.PackageId}::pool_factory::deploy_pool_and_mint`,typeArguments:[a,u,e.type],arguments:[O.object(l.PoolConfig),O.object(e.objectId),O.pure(o,"u128"),O.object(l.Positions),O.makeMoveVec({objects:P}),O.makeMoveVec({objects:M}),O.pure(Math.abs(i).toFixed(0),"u32"),O.pure(i<0,"bool"),O.pure(Math.abs(r).toFixed(0),"u32"),O.pure(r<0,"bool"),O.pure(m.toFixed(0),"u64"),O.pure(b.toFixed(0),"u64"),O.pure(this.getMinimumAmountBySlippage(m,s),"u64"),O.pure(this.getMinimumAmountBySlippage(b,s),"u64"),O.pure(n,"address"),O.pure(Date.now()+po,"u64"),O.object(pr.SUI_CLOCK_OBJECT_ID),O.object(l.Versioned)]}),O}async addLiquidity(t){let{address:e,tickLower:n,tickUpper:i,slippage:r,pool:o}=t,s=await this.contract.getConfig(),a=await this.getPoolTypeArguments(o),[u,l]=a,[m,b]=await Promise.all([this.coin.getMetadata(u),this.coin.getMetadata(l)]);if(!m||!b)throw new Error("Invalid coin type");let v=new $(t.amountA),T=new $(t.amountB),[O,P]=await Promise.all([this.coin.selectTradeCoins(e,u,v),this.coin.selectTradeCoins(e,l,T)]),M=t.txb||new mr.TransactionBlock,B=O.length>0?this.coin.convertTradeCoins(M,O,u,v):[this.coin.zero(u,M)],E=P.length>0?this.coin.convertTradeCoins(M,P,l,T):[this.coin.zero(l,M)];return M.moveCall({target:`${s.PackageId}::position_manager::mint`,typeArguments:a,arguments:[M.object(o),M.object(s.Positions),M.makeMoveVec({objects:B}),M.makeMoveVec({objects:E}),M.pure(Math.abs(n).toFixed(0),"u32"),M.pure(n<0,"bool"),M.pure(Math.abs(i).toFixed(0),"u32"),M.pure(i<0,"bool"),M.pure(v.toFixed(0),"u64"),M.pure(T.toFixed(0),"u64"),M.pure(this.getMinimumAmountBySlippage(v,r),"u64"),M.pure(this.getMinimumAmountBySlippage(T,r),"u64"),M.pure(e,"address"),M.pure(Date.now()+po,"u64"),M.object(pr.SUI_CLOCK_OBJECT_ID),M.object(s.Versioned)]}),M}async increaseLiquidity(t){let{pool:e,slippage:n,address:i,nft:r}=t,o=await this.contract.getConfig(),s=new $(t.amountA),a=new $(t.amountB),u=await this.getPoolTypeArguments(e),[l,m]=u,[b,v]=await Promise.all([this.coin.selectTradeCoins(i,l,s),this.coin.selectTradeCoins(i,m,a)]),T=t.txb||new mr.TransactionBlock,O=b.length>0?this.coin.convertTradeCoins(T,b,l,s):[this.coin.zero(l,T)],P=v.length>0?this.coin.convertTradeCoins(T,v,m,a):[this.coin.zero(m,T)];return T.moveCall({target:`${o.PackageId}::position_manager::increase_liquidity`,typeArguments:u,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,n),"u64"),T.pure(this.getMinimumAmountBySlippage(a,n),"u64"),T.pure(Date.now()+po*3,"u64"),T.object(pr.SUI_CLOCK_OBJECT_ID),T.object(o.Versioned)]}),T}async decreaseLiquidity(t){let{slippage:e,nft:n,pool:i,decreaseLiquidity:r}=t,o=new $(t.amountA),s=new $(t.amountB),a=await this.contract.getConfig(),u=await this.getPoolTypeArguments(i),l=t.txb||new mr.TransactionBlock;return l.moveCall({target:`${a.PackageId}::position_manager::decrease_liquidity`,typeArguments:u,arguments:[l.object(i),l.object(a.Positions),l.object(n),l.pure(new vs.default(r).toString(),"u128"),l.pure(this.getMinimumAmountBySlippage(o,e),"u64"),l.pure(this.getMinimumAmountBySlippage(s,e),"u64"),l.pure(Date.now()+po*3,"u64"),l.object(pr.SUI_CLOCK_OBJECT_ID),l.object(a.Versioned)]}),l}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:n,address:i,collectAmountA:r,collectAmountB:o}=t,s=t.txb||new mr.TransactionBlock;if(Number(r)===0&&Number(o)===0)return s;let a=await this.contract.getConfig(),u=await this.getPoolTypeArguments(e);return s.moveCall({target:`${a.PackageId}::position_manager::collect`,typeArguments:u,arguments:[s.object(e),s.object(a.Positions),s.object(n),s.pure(r,"u64"),s.pure(o,"u64"),s.pure(i),s.pure(Date.now()+po*3,"u64"),s.object(pr.SUI_CLOCK_OBJECT_ID),s.object(a.Versioned)]}),s}async collectReward(t){let{pool:e,nft:n,rewardAmounts:i,address:r}=t,o=t.txb||new mr.TransactionBlock,s=await this.contract.getConfig(),a=await this.getPoolTypeArguments(e);return(await this.getPool(e)).reward_infos.forEach((l,m)=>{o.moveCall({target:`${s.PackageId}::position_manager::collect_reward`,typeArguments:[...a,l.fields.vault_coin_type],arguments:[o.object(e),o.object(s.Positions),o.object(n),o.object(l.fields.vault),o.pure(m,"u64"),o.pure(i[m],"u64"),o.pure(r),o.pure(Date.now()+po*3,"u64"),o.object(pr.SUI_CLOCK_OBJECT_ID),o.object(s.Versioned)]})}),o}getTokenAmountsFromLiquidity(t){let e=new $((t.liquidity||new vs.default(1e8)).toString()),n=new $(t.currentSqrtPrice.toString()),i=new $(t.lowerSqrtPrice.toString()),r=new $(t.upperSqrtPrice.toString()),o,s;t.currentSqrtPrice.lt(t.lowerSqrtPrice)?(o=this.math.toX64_Decimal(e).mul(r.sub(i)).div(i.mul(r)),s=new $(0)):t.currentSqrtPrice.lt(t.upperSqrtPrice)?(o=this.math.toX64_Decimal(e).mul(r.sub(n)).div(n.mul(r)),s=this.math.fromX64_Decimal(e.mul(n.sub(i)))):(o=new $(0),s=this.math.fromX64_Decimal(e.mul(r.sub(i))));let a=t.ceil!==!1?"ceil":"floor";return[new vs.default(o[a]().toString()),new vs.default(s[a]().toString())]}async getPoolTypeArguments(t){return this.getCacheOrSet("pool-type-"+t,async()=>(await this.getPool(t)).types)}parsePoolType(t,e){var n;let i=((n=t.replace(">","").split("<")[1])==null?void 0:n.split(/,\s*/))||[];if(e!==void 0&&e!==i.length)throw new Error("Invalid pool type");return i}async getFixedLiquidity(t){var e,n;let{coinTypeA:i,coinTypeB:r,amountA:o,amountB:s}=t,[a,u]=await Promise.all([this.coin.getMetadata(i),this.coin.getMetadata(r)]),l=new $(this.math.scaleDown(o,a.decimals)).mul((e=t.priceA)!=null?e:1),m=new $(this.math.scaleDown(s,u.decimals)).mul((n=t.priceB)!=null?n:1);return{liquidityA:l.toString(),liquidityB:m.toString(),liquidity:l.plus(m).toString()}}parsePool(t){let e=Zn(t),n=_c(t),i=UC(t),r=this.parsePoolType(i,3);return this.getCacheOrSet("pool-type-"+n,async()=>r),{...e,objectId:n,type:i,types:r}}getMinimumAmountBySlippage(t,e){let n=new $(t),i=new $(1).minus(new $(e).div(100));if(i.lte(0)||i.gt(1))throw new Error("invalid slippage range");return n.mul(i).toFixed(0)}},GC=(t,e)=>{let{pool:n,position:i,tickLowerDetail:r,tickUpperDetail:o}=e,s=new Fi.default(n.fee_growth_global_a),a=new Fi.default(i.fee_growth_inside_a),u=new Fi.default(i.tokens_owed_a),l=new Fi.default(n.fee_growth_global_b),m=new Fi.default(i.fee_growth_inside_b),b=new Fi.default(i.tokens_owed_b),v=new Fi.default(i.liquidity),T,O,P,M,B=t.bitsToNumber(n.tick_current_index.fields.bits),E=t.bitsToNumber(i.tick_lower_index.fields.bits),q=t.bitsToNumber(i.tick_upper_index.fields.bits);B<E?(T=t.subUnderflowU128(s,r.feeGrowthOutsideA),O=t.subUnderflowU128(l,r.feeGrowthOutsideB)):(T=r.feeGrowthOutsideA,O=r.feeGrowthOutsideB),B<q?(P=o.feeGrowthOutsideA,M=o.feeGrowthOutsideB):(P=t.subUnderflowU128(s,o.feeGrowthOutsideA),M=t.subUnderflowU128(l,o.feeGrowthOutsideB));let K=t.subUnderflowU128(t.subUnderflowU128(s,T),P),X=t.subUnderflowU128(t.subUnderflowU128(l,O),M),G=t.subUnderflowU128(K,a).mul(v).shrn(64),Z=t.subUnderflowU128(X,m).mul(v).shrn(64);return{feeOwedA:u.add(G).toString(),feeOwedB:b.add(Z).toString()}},jg=new Ts.default(0),Bg=new Ts.default(1),WC=new Ts.default(2),HC={mul(t,e,n){let i=t.mul(e);if(this.isOverLimit(i,n))throw new Error(`Mul result higher than u${n}`);return i},mulDiv(t,e,n,i){return this.mulDivRoundUpIf(t,e,n,!1,i)},mulDivRoundUpIf(t,e,n,i,r){if(n.eq(jg))throw new Error("mulDiv denominator is zero");let o=this.mul(t,e,r),s=o.div(n);return i&&o.mod(n).gt(jg)?s.add(Bg):s},isOverLimit(t,e){let n=WC.pow(new Ts.default(e)).sub(Bg);return t.gt(n)}},XC=(t,e)=>{var n,i,r,o;let{pool:s,position:a,tickLowerDetail:u,tickUpperDetail:l,timeStampInSeconds:m}=e,b=new Sn.default(new $(s.reward_last_updated_time_ms).div(1e3).toFixed(0)),T=(m??new Sn.default(Date.now()).div(new Sn.default(1e3))).sub(new Sn.default(b)),O=[],P=new Sn.default(s.liquidity),M=new Sn.default(a.liquidity);for(let B=0;B<3;++B){let E=s.reward_infos[B],q={emissionsPerSecondX64:new Sn.default(E?E.fields.emissions_per_second:"0"),growthGlobalX64:new Sn.default(E?E.fields.growth_global:"0")},K={growthInsideCheckpoint:new Sn.default((i=(n=a.reward_infos[B])==null?void 0:n.fields.reward_growth_inside)!=null?i:"0"),amountOwed:new Sn.default((o=(r=a.reward_infos[B])==null?void 0:r.fields.amount_owed)!=null?o:"0")},X=q.growthGlobalX64;if(!P.isZero()){let k=HC.mulDiv(T,q.emissionsPerSecondX64,P,128);X=q.growthGlobalX64.add(k)}let G=u.rewardGrowthsOutside[B],Z=l.rewardGrowthsOutside[B],A=X;u.initialized&&(A=t.bitsToNumber(s.tick_current_index.fields.bits)<t.bitsToNumber(a.tick_lower_index.fields.bits)?t.subUnderflowU128(X,G):G);let I=new Sn.default(0);l.initialized&&(I=t.bitsToNumber(s.tick_current_index.fields.bits)<t.bitsToNumber(a.tick_upper_index.fields.bits)?Z:t.subUnderflowU128(X,Z));let x=t.subUnderflowU128(t.subUnderflowU128(X,A),I),j=K.amountOwed.shln(64);O[B]=j.add(t.subUnderflowU128(x,K.growthInsideCheckpoint).mul(M)).shrn(64).toString()}return O},ZC=class extends Cs{async getOwner(t){let e=await this.getObject(t),n=$C(e);if(!(!n||typeof n=="string")){if("ObjectOwner"in n)return n.ObjectOwner;if("AddressOwner"in n)return n.AddressOwner}}async getFields(t){let e=await this.getObject(t);return Zn(e)}async getPositionFields(t){let e=await this.contract.getConfig(),n=await this.provider.getDynamicFieldObject({parentId:e.Positions,name:{type:"address",value:t}});return Zn(n)}async getPositionFieldsByPositionId(t){let e=await this.provider.getObject({id:t,options:{showContent:!0}});return vd(e,"position"),Zn(e)}async getPositionTick(t,e){let n=await this.provider.getDynamicFieldObject({parentId:t,name:{type:e.type,value:e.fields}}),i=Zn(n);if(i)return{tickIndex:this.math.bitsToNumber(i.name.fields.bits),initialized:i.value.fields.initialized,liquidityNet:new on.default(this.math.bitsToNumber(i.value.fields.liquidity_net.fields.bits,128).toString()),liquidityGross:new on.default(i.value.fields.liquidity_gross),feeGrowthOutsideA:new on.default(i.value.fields.fee_growth_outside_a),feeGrowthOutsideB:new on.default(i.value.fields.fee_growth_outside_b),rewardGrowthsOutside:i.value.fields.reward_growths_outside.map(r=>new on.default(r))}}async getPositionAPR(t){let{poolId:e,getPrice:n,fees24h:i,tickLower:r,tickUpper:o}=t,s=await this.pool.getPool(e),a=this.math.bitsToNumber(s.tick_current_index.fields.bits),[u,l,m,b]=await Promise.all([this.coin.getMetadata(s.types[0]),this.coin.getMetadata(s.types[1]),n(s.types[0]),n(s.types[1])]);if(!m||!b||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 $(this.math.scaleDown(v.toString(),u.decimals)).mul(m),P=new $(this.math.scaleDown(T.toString(),l.decimals)).mul(b),M=O.add(P),B=M.isZero()?new $(0):new $(i).mul(365).div(M).mul(100),E=new $(0);return await Promise.all(s.reward_infos.map(async q=>{let{emissions_per_second:K}=q.fields,X=this.coin.formatCoinType(q.fields.vault_coin_type),[G,Z]=await Promise.all([n(X),this.coin.getMetadata(X)]);!K||K==="0"||!G||(E=E.add(new $(new on.default(K).shrn(64).toString()).div(10**Z.decimals).mul(31536e3).mul(G).div(M).mul(100)))})),{fees:B.toString(),rewards:E.toString(),total:B.plus(E).toString()}}getRemoveLiquidityQuote(t,e,n){let i=new on.default(0),r=new on.default(t.liquidity),o=this.math.bitsToNumber(t.tick_current_index.fields.bits),s=this.math.tickIndexToSqrtPriceX64(e),a=this.math.tickIndexToSqrtPriceX64(n);if(o<e){let l=this.getTokenAFromLiquidity(r,s,a);return{minTokenA:this.adjustForSlippage(l),minTokenB:i}}if(o<n){let l=new on.default(t.sqrt_price),m=this.getTokenAFromLiquidity(r,l,a),b=this.getTokenBFromLiquidity(r,s,l);return{minTokenA:this.adjustForSlippage(m),minTokenB:this.adjustForSlippage(b)}}let u=this.getTokenBFromLiquidity(r,s,a);return{minTokenA:i,minTokenB:this.adjustForSlippage(u)}}adjustForSlippage(t){let e={numerator:new on.default(0),denominator:new on.default(1e3)};return t.mul(e.denominator).div(e.denominator.add(e.numerator))}getTokenAFromLiquidity(t,e,n){let i=t.mul(n.sub(e)).shln(64),r=n.mul(e);return i.div(r)}getTokenBFromLiquidity(t,e,n){return t.mul(n.sub(e)).shrn(64)}async burn(t){let{pool:e,nft:n}=t,i=t.txb||new Lg.TransactionBlock,r=await this.contract.getConfig(),o=await this.pool.getPoolTypeArguments(e);return i.moveCall({target:`${r.PackageId}::position_manager::burn`,typeArguments:o,arguments:[i.object(r.Positions),i.object(n),i.object(r.Versioned)]}),i}async getPositionLiquidityUSD(t){let{position:e,poolId:n,priceA:i,priceB:r}=t,o=await this.pool.getPool(n),s=this.pool.getTokenAmountsFromLiquidity({currentSqrtPrice:new on.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 on.default(e.liquidity===void 0?1e8:e.liquidity)}),[a,u]=await Promise.all([this.coin.getMetadata(o.types[0]),this.coin.getMetadata(o.types[1])]),l=new $(s[0].toString()).div(10**a.decimals).mul(i||0),m=new $(s[1].toString()).div(10**u.decimals).mul(r||0);return l.plus(m).toString()}async getUnclaimedFeesAndRewards(t){let{position:e,poolId:n}=t,[i,r,o]=await Promise.all([this.pool.getPool(n),this.nft.getPositionTick(n,e.tick_lower_index),this.nft.getPositionTick(n,e.tick_upper_index)]),s={...t,pool:i,tickLowerDetail:r,tickUpperDetail:o},[a,u]=await Promise.all([this.getUnclaimedFees(s),this.getUnclaimedRewards(s)]),{unclaimedFees:l,...m}=a,{unclaimedRewards:b,...v}=u;return{fees:a.unclaimedFees.toString(),rewards:b.toString(),total:l.plus(b).toString(),fields:{...m,...v}}}async getUnclaimedFees(t){let{position:e,pool:n,getPrice:i,tickLowerDetail:r,tickUpperDetail:o}=t,[s,a,u,l]=await Promise.all([this.coin.getMetadata(n.types[0]),this.coin.getMetadata(n.types[1]),i(n.types[0]),i(n.types[1])]),m=GC(this.math,{pool:n,position:e,tickLowerDetail:r,tickUpperDetail:o}),b=this.math.scaleDown(m.feeOwedA,s.decimals),v=this.math.scaleDown(m.feeOwedB,a.decimals);function T(M,B){return new $(1e6).mul($.pow(10,B)).lt(M)}T(b,s.decimals)&&(b="0",m.feeOwedA="0"),T(v,a.decimals)&&(v="0",m.feeOwedB="0");let O=u===void 0?new $(0):new $(u).mul(b),P=l===void 0?new $(0):new $(l).mul(v);return{unclaimedFees:O.plus(P),scaledFeeOwedA:b,scaledFeeOwedB:v,...m}}async getUnclaimedRewards(t){let{position:e,pool:n,getPrice:i,tickLowerDetail:r,tickUpperDetail:o}=t,s=XC(this.math,{pool:n,position:e,tickLowerDetail:r,tickUpperDetail:o}),a=[...s],u=n.reward_infos.map(v=>this.coin.formatCoinType(v.fields.vault_coin_type)),l=await Promise.all([...n.reward_infos.map((v,T)=>this.coin.getMetadata(u[T]))]),m=await Promise.all(n.reward_infos.map((v,T)=>i(u[T])));l.forEach((v,T)=>{a[T]=this.math.scaleDown(a[T],v.decimals)});let b=new $(0);return n.reward_infos.some((v,T)=>{let O=m[T];return O?(b=b.plus(new $(O).mul(a[T])),!1):(b=b.plus(1),!0)}),{unclaimedRewards:b,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 vd(e,"nft"),e})}},JC=class extends Cs{isSUI(t){return(0,Ug.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,n){if(n.eq(0))return[];let i=[],r=[],o=new $(0),s;do s=await this.provider.getCoins({owner:t,coinType:e,cursor:s?.nextCursor}),i.push(...s.data);while(s.hasNextPage);i.sort((a,u)=>Number(u.balance)-Number(a.balance));for(let a of i)if(r.push(a.coinObjectId),o=o.add(a.balance),o.gte(n))break;return r}convertTradeCoins(t,e,n,i){return this.isSUI(n)?[t.splitCoins(t.gas,[t.pure(i.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 i=t.replace(/^0x/i,"");return i=i.replace(/^0+(2::sui::SUI)$/,"$1"),"0x"+(e&&i.length<64&&t!=="2::sui:SUI"?"0".repeat(64-i.length):"")+i}},YC=60*1e3,fc=100,QC=class extends Cs{async swap(t){let{coinTypeA:e,coinTypeB:n,address:i,amountSpecifiedIsInput:r,slippage:o}=t,s=new $(t.amountA),a=new $(t.amountB),u=await this.contract.getConfig(),l=await Promise.all(t.routes.map(async P=>{let M=await this.pool.getPoolTypeArguments(P.pool),[B,E]=await Promise.all([this.coin.getMetadata(M[0]),this.coin.getMetadata(M[1])]);return{...P,coinA:B,coinB:E,typeArguments:M}})),m=await this.coin.selectTradeCoins(i,e,s),{functionName:b,typeArguments:v}=this.getFunctionNameAndTypeArguments(l.map(({typeArguments:P})=>P),e,n),T=l.map(({nextTickIndex:P,coinA:M,coinB:B,a2b:E})=>{let q=this.math.tickIndexToPrice(P,M.decimals,B.decimals);return this.sqrtPriceWithSlippage(q,o,E,M.decimals,B.decimals)}),O=t.txb||new pc.TransactionBlock;return O.moveCall({target:`${u.PackageId}::swap_router::${b}`,typeArguments:v,arguments:[...l.map(({pool:P})=>O.object(P)),O.makeMoveVec({objects:this.coin.convertTradeCoins(O,m,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(i,"address"),O.pure(Date.now()+YC*3,"u64"),O.object(mc.SUI_CLOCK_OBJECT_ID),O.object(u.Versioned)]}),O}async computeSwapResult(t){let{pools:e,amountSpecified:n,amountSpecifiedIsInput:i,address:r,tickStep:o}=t,s=await this.contract.getConfig(),a=e.map(b=>b.pool),u=await ks(this.provider,a,{showContent:!0}),l=new pc.TransactionBlock;u.map(async b=>{let v=Zn(b),T=e.find(E=>E.pool===v.id.id),O=this.math.bitsToNumber(v.tick_current_index.fields.bits),P=O-v.tick_spacing*(o||fc),M=O+v.tick_spacing*(o||fc);P=P<dc?dc:P,M=M>lc?lc:M;let B=this.pool.parsePoolType(gc(b));l.moveCall({target:`${s.PackageId}::pool_fetcher::compute_swap_result`,typeArguments:B,arguments:[l.object(v.id.id),l.pure(T.a2b,"bool"),l.pure(new $(n).toFixed(0),"u128"),l.pure(i,"bool"),l.pure(this.math.tickIndexToSqrtPriceX64(T.a2b?P:M).toString(),"u128"),l.object(mc.SUI_CLOCK_OBJECT_ID),l.object(s.Versioned)]})});let m=await this.provider.devInspectTransactionBlock({transactionBlock:l,sender:r});if(m.error)throw new Error(m.error);return m.events.map(b=>b.parsedJson)}async computeSwapResultV2(t){let{pools:e,amountSpecifiedIsInput:n,address:i,tickStep:r}=t,o=await this.contract.getConfig(),s=e.map(m=>m.pool),a=await ks(this.provider,Array.from(new Set(s)),{showContent:!0}),u=new pc.TransactionBlock;e.forEach(async m=>{let b=a.find(B=>_c(B)===m.pool),v=Zn(b),T=this.math.bitsToNumber(v.tick_current_index.fields.bits),O=T-v.tick_spacing*(r||fc),P=T+v.tick_spacing*(r||fc);O=O<dc?dc:O,P=P>lc?lc:P;let M=this.pool.parsePoolType(gc(b));u.moveCall({target:`${o.PackageId}::pool_fetcher::compute_swap_result`,typeArguments:M,arguments:[u.object(v.id.id),u.pure(m.a2b,"bool"),u.pure(new $(m.amountSpecified).toFixed(0),"u128"),u.pure(n,"bool"),u.pure(this.math.tickIndexToSqrtPriceX64(m.a2b?O:P).toString(),"u128"),u.object(mc.SUI_CLOCK_OBJECT_ID),u.object(o.Versioned)]})});let l=await this.provider.devInspectTransactionBlock({transactionBlock:u,sender:i});if(l.error)throw new Error(l.error);return l.events.map(m=>m.parsedJson)}getFunctionNameAndTypeArguments(t,e,n){let i=[],r=["swap"];if(t.length===1)i=t[0],e===i[0]?r.push("a","b"):r.push("b","a");else{let o=t[0],s=t[1];e===o[0]?(r.push("a","b"),i.push(o[0],o[2],o[1])):(r.push("b","a"),i.push(o[1],o[2],o[0])),i.push(s[2],n),n===s[0]?r.push("c","b"):r.push("b","c")}return{functionName:r.join("_"),typeArguments:i}}amountOutWithSlippage(t,e,n){if(n){let r=new $(100).minus(e).div(100);return new $(t).mul(r).toFixed(0)}let i=new $(100).plus(e).div(100);return new $(t).mul(i).toFixed(0)}sqrtPriceWithSlippage(t,e,n,i,r){let o=new $(t).mul(n?new $(100).minus(e).div(100):new $(100).plus(e).div(100)),s=this.math.priceToSqrtPriceX64(o,i,r);return s.lt(new kd.BN(bd))?bd:s.gt(new kd.BN(wd))?wd:s.toString()}},Gt=class{constructor(t,e){this.network=t,Xn(this,"pool"),Xn(this,"contract"),Xn(this,"math",new zC),Xn(this,"account",new FC),Xn(this,"coin"),Xn(this,"nft"),Xn(this,"trade"),Xn(this,"provider"),this.provider=e?e instanceof gr.SuiClient?e:new gr.SuiClient(e):new gr.SuiClient({url:t==="mainnet"?(0,gr.getFullnodeUrl)("mainnet"):(0,gr.getFullnodeUrl)("testnet")}),this.contract=new KC(this),this.pool=new VC(this),this.nft=new ZC(this),this.coin=new JC(this),this.trade=new QC(this)}};var eT=Object.defineProperty,k_=(t,e)=>{for(var n in e)eT(t,n,{get:e[n],enumerable:!0})},le=class{constructor(t){this.data=t}get application(){return"msafe-core"}serialize(){return JSON.stringify((0,T_.default)(this.data))}},Kd={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"},pn={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"}]}}},Jn=new qr(Kd),tT=async(t,e,n)=>(console.log("getAddLiquidityTxb suiClient: ",n),console.log("getAddLiquidityTxb txbParams: ",t),Jn.senderAddress=e.address,await Jn.Position.createAddLiquidityFixTokenPayload(t?.parameter,t?.gasEstimateArg)),nT=async(t,e,n)=>(console.log("getIncreaseLiquidityTxb suiClient: ",n),Jn.senderAddress=e.address,console.log("getIncreaseLiquidityTxb txbParams: ",t),await Jn.Position.createAddLiquidityFixTokenPayload(t?.parameter,t?.gasEstimateArg)),iT=async(t,e,n)=>(console.log("getRemoveLiquidityTxb txbParams: ",t),console.log("getRemoveLiquidityTxb suiClient: ",n),Jn.senderAddress=e.address,await Jn.Position.closePositionTransactionPayload(t?.parameter)),rT=async(t,e,n)=>(console.log("getDecreaseLiquidityTxb txbParams: ",t),console.log("getDecreaseLiquidityTxb suiClient: ",n),Jn.senderAddress=e.address,await Jn.Position.removeLiquidityTransactionPayload(t?.parameter)),oT=async(t,e,n)=>(console.log("getClaimFeeAndMiningTxb txbParams: ",t),console.log("getClaimFeeAndMiningTxb suiClient: ",n),Jn.senderAddress=e.address,await Jn.Rewarder.collectRewarderTransactionPayload(t?.parameter)),sT=class S_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("AddLiquidityIntention this.data: ",this.data),console.log("AddLiquidityIntention txbParams: ",r);let o=await tT(r,n,i);return console.log("AddLiquidityIntention build txb: ",o),o}static fromData(e){return new S_(e)}},aT=class A_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("ClaimFeeAndMiningIntention this.data: ",this.data),console.log("ClaimFeeAndMiningIntention txbParams: ",r);let o=await oT(r,n,i);return console.log("ClaimFeeAndMiningIntention build txb: ",o),o}static fromData(e){return new A_(e)}},cT=class x_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("DecreaseLiquidityIntention this.data: ",this.data),console.log("DecreaseLiquidityIntention txbParams: ",r);let o=await rT(r,n,i);return console.log("DecreaseLiquidityIntention build txb: ",o),o}static fromData(e){return new x_(e)}},Wt=new qr(Kd),uT=async(t,e,n)=>(console.log("getFarmingAddLiquidityTxb account: ",e),console.log("getFarmingAddLiquidityTxb suiClient: ",n),Wt.senderAddress=e.address,await new Zt(pn,Wt).Farms.openPositionAddLiquidityStakePaylod(t?.parameter)),lT=async(t,e,n)=>(console.log("getFarmingIncreaseLiquidityTxb account: ",e),console.log("getFarmingIncreaseLiquidityTxb suiClient: ",n),Wt.senderAddress=e.address,await new Zt(pn,Wt).Farms.addLiquidityFixCoinPayload(t?.parameter)),dT=async(t,e,n)=>(console.log("getFarmingDecreaseLiquidityTxb account: ",e),console.log("getFarmingDecreaseLiquidityTxb suiClient: ",n),Wt.senderAddress=e.address,await new Zt(pn,Wt).Farms.removeLiquidityPayload(t?.parameter)),fT=async(t,e,n)=>(console.log("getFarmingRemoveLiquidityTxb account: ",e),console.log("getFarmingRemoveLiquidityTxb suiClient: ",n),Wt.senderAddress=e.address,await new Zt(pn,Wt).Farms.removeLiquidityPayload(t?.parameter)),hT=async(t,e,n)=>(console.log("getFarmingClaimFeeAndRewardTxb account: ",e),console.log("getFarmingClaimFeeAndRewardTxb suiClient: ",n),Wt.senderAddress=e.address,await new Zt(pn,Wt).Farms.claimFeeAndClmmReward(t?.parameter)),I_=async(t,e,n)=>(console.log("getFarmingBatchHarvest account: ",e),console.log("getFarmingBatchHarvest suiClient: ",n),Wt.senderAddress=e.address,await new Zt(pn,Wt).Farms.batchHarvestPayload(t?.parameter)),pT=async(t,e,n)=>(console.log("getFarmingStake account: ",e),console.log("getFarmingStake suiClient: ",n),Wt.senderAddress=e.address,await new Zt(pn,Wt).Farms.depositPayload(t?.parameter)),mT=async(t,e,n)=>(console.log("getFarmingUnstake account: ",e),console.log("getFarmingUnstake suiClient: ",n),Wt.senderAddress=e.address,await new Zt(pn,Wt).Farms.withdrawPayload(t?.parameter)),gT=class O_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingAddLiquidityIntention this.data: ",this.data),console.log("FarmingAddLiquidityIntention txbParams: ",r);let o=await uT(r,n,i);return console.log("FarmingAddLiquidityIntention build txb: ",o),o}static fromData(e){return new O_(e)}},_T=class P_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingBatchHarvestIntention this.data: ",this.data),console.log("FarmingBatchHarvestIntention txbParams: ",r);let o=await I_(r,n,i);return console.log("FarmingBatchHarvestIntention build txb: ",o),o}static fromData(e){return new P_(e)}},yT=class E_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingClaimFeeAndRewardIntention this.data: ",this.data),console.log("FarmingClaimFeeAndRewardIntention txbParams: ",r);let o=await hT(r,n,i);return console.log("FarmingClaimFeeAndRewardIntention build txb: ",o),o}static fromData(e){return new E_(e)}},wT=class D_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingDecreaseLiquidityIntention this.data: ",this.data),console.log("FarmingDecreaseLiquidityIntention txbParams: ",r);let o=await dT(r,n,i);return console.log("FarmingDecreaseLiquidityIntention build txb: ",o),o}static fromData(e){return new D_(e)}},bT=class M_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingHarvestIntention this.data: ",this.data),console.log("FarmingHarvestIntention txbParams: ",r);let o=await I_(r,n,i);return console.log("FarmingHarvestIntention build txb: ",o),o}static fromData(e){return new M_(e)}},vT=class j_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingIncreaseLiquidityIntention this.data: ",this.data),console.log("FarmingIncreaseLiquidityIntention txbParams: ",r);let o=await lT(r,n,i);return console.log("FarmingIncreaseLiquidityIntention build txb: ",o),o}static fromData(e){return new j_(e)}},kT=class B_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingRemoveLiquidityIntention this.data: ",this.data),console.log("FarmingRemoveLiquidityIntention txbParams: ",r);let o=await fT(r,n,i);return console.log("FarmingRemoveLiquidityIntention build txb: ",o),o}static fromData(e){return new B_(e)}},CT=class N_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingStakeIntention this.data: ",this.data),console.log("FarmingStakeIntention txbParams: ",r);let o=await pT(r,n,i);return console.log("FarmingStakeIntention build txb: ",o),o}static fromData(e){return new N_(e)}},TT=class F_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("FarmingUnstakeIntention this.data: ",this.data),console.log("FarmingUnstakeIntention txbParams: ",r);let o=await mT(r,n,i);return console.log("FarmingUnstakeIntention build txb: ",o),o}static fromData(e){return new F_(e)}},ST=class R_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("IncreaseLiquidityIntention this.data: ",this.data),console.log("IncreaseLiquidityIntention txbParams: ",r);let o=await nT(r,n,i);return console.log("IncreaseLiquidityIntention build txb: ",o),o}static fromData(e){return new R_(e)}},AT=class q_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("RemoveLiquidityIntention this.data: ",this.data),console.log("RemoveLiquidityIntention txbParams: ",r);let o=await iT(r,n,i);return console.log("RemoveLiquidityIntention build txb: ",o),o}static fromData(e){return new q_(e)}},Yn=new qr(Kd),xT=async(t,e,n)=>(console.log("getXcetusConvertTxb account: ",e),console.log("getXcetusConvertTxb suiClient: ",n),Yn.senderAddress=e.address,await new Zt(pn,Yn).XCetusModule.convertPayload(t?.parameter)),IT=async(t,e,n)=>(console.log("getXcetusRedeemLockTxb account: ",e),console.log("getXcetusRedeemLockTxb suiClient: ",n),Yn.senderAddress=e.address,await new Zt(pn,Yn).XCetusModule.redeemLockPayload(t?.parameter)),OT=async(t,e,n)=>(console.log("getXcetusClaimingStakeRewardsTxb account: ",e),console.log("getXcetusClaimingStakeRewardsTxb suiClient: ",n),Yn.senderAddress=e.address,await new Zt(pn,Yn).XCetusModule.redeemDividendV2Payload(t.parameter.venft_id,t.parameter.bonus_types,t.parameter.xTokenType)),PT=async(t,e,n)=>(console.log("getXcetusCancelRedeemTxb account: ",e),console.log("getXcetusCancelRedeemTxb suiClient: ",n),Yn.senderAddress=e.address,await new Zt(pn,Yn).XCetusModule.cancelRedeemPayload(t?.parameter)),ET=async(t,e,n)=>(console.log("getXcetusRedeemTxb account: ",e),console.log("getXcetusRedeemTxb suiClient: ",n),Yn.senderAddress=e.address,await new Zt(pn,Yn).XCetusModule.redeemPayload(t?.parameter)),DT=class L_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("XcetusCancelIntention this.data: ",this.data),console.log("XcetusCancelIntention txbParams: ",r);let o=await PT(r,n,i);return console.log("XcetusCancelIntention build txb: ",o),o}static fromData(e){return new L_(e)}},MT=class U_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("XcetusClaimingStakeRewardsIntention this.data: ",this.data),console.log("XcetusClaimingStakeRewardsIntention txbParams: ",r);let o=await OT(r,n,i);return console.log("XcetusClaimingStakeRewardsIntention build txb: ",o),o}static fromData(e){return new U_(e)}},jT=class $_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("XcetusConvertIntention this.data: ",this.data),console.log("XcetusConvertIntention txbParams: ",r);let o=await xT(r,n,i);return console.log("XcetusConvertIntention build txb: ",o),o}static fromData(e){return new $_(e)}},BT=class K_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("XcetusRedeemIntention this.data: ",this.data),console.log("XcetusRedeemIntention txbParams: ",r);let o=await ET(r,n,i);return console.log("XcetusRedeemIntention build txb: ",o),o}static fromData(e){return new K_(e)}},NT=class z_ extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n,suiClient:i}=e,{txbParams:r}=this.data;console.log("XcetusRedeemLockIntention this.data: ",this.data),console.log("XcetusRedeemLockIntention txbParams: ",r);let o=await IT(r,n,i);return console.log("XcetusRedeemLockIntention build txb: ",o),o}static fromData(e){return new z_(e)}},FT=class{application="cetus";async deserialize(t){console.log("Helper deserialize input: ",t);let{txbParams:e,action:n}=t;return{txType:C_.TransactionType.Other,txSubType:n,intentionData:{txbParams:{...e},action:n}}}async build(t){let{suiClient:e,account: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 i;switch(t.txSubType){case"OpenAndAddLiquidity":i=sT.fromData(t.intentionData);break;case"IncreaseLiquidity":i=ST.fromData(t.intentionData);break;case"DecreaseLiquidity":i=cT.fromData(t.intentionData);break;case"RemoveLiquidity":i=AT.fromData(t.intentionData);break;case"ClaimFeeAndMining":i=aT.fromData(t.intentionData);break;case"FarmingOpenAndAddLiquidity":i=gT.fromData(t.intentionData);break;case"FarmingIncreaseLiquidity":i=vT.fromData(t.intentionData);break;case"FarmingDecreaseLiquidity":i=wT.fromData(t.intentionData);break;case"FarmingRemoveLiquidity":i=kT.fromData(t.intentionData);break;case"FarmingClaimFeeAndReward":i=yT.fromData(t.intentionData);break;case"FarmingHarvest":i=bT.fromData(t.intentionData);break;case"FarmingBatchHarvest":i=_T.fromData(t.intentionData);break;case"FarmingStake":i=CT.fromData(t.intentionData);break;case"FarmingUnstake":i=TT.fromData(t.intentionData);break;case"xCETUSConvert":i=jT.fromData(t.intentionData);break;case"xCETUSRedeemLock":i=NT.fromData(t.intentionData);break;case"xCETUSClaimStakingRwewards":i=MT.fromData(t.intentionData);break;case"xCETUSCancelRedeem":i=DT.fromData(t.intentionData);break;case"xCETUSRedeem":i=BT.fromData(t.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:e,account:n})}},G_={};k_(G_,{contractId:()=>X_,default:()=>RT,feeObjId:()=>Y_,roleObjId:()=>Z_,status:()=>H_,transaction:()=>W_,upgradeCapObjId:()=>Q_,vaultObjId:()=>J_});var W_="DiBZq4UmVVYiRL6ZJmFKYoHcxtxqrhsCXSkFyT7wUr3j",H_="success",X_="0x81c960dc653975fbd0072deca8afb92d322898c911622898ba1b2e3ad0c4bd8d",Z_="0xc6ec0bdee0bb59a72077e9acd2f42457043cf47080b3d3fad4d39abf28bba63a",J_="0xbc4021387fbac149119fd24e92be9e58f745774292f3a2a12e2ac6daf5363e1d",Y_="0x4178f63970fe2daeb256dc5730ad172e82b3e8eb45f31b33e0daae72cd35e1e1",Q_="0xe1e9aa7d222d151bfe6dd83358b0d7fdcb11260f710800cfaf7ccc1b1e245115",RT={transaction:W_,status:H_,contractId:X_,roleObjId:Z_,vaultObjId:J_,feeObjId:Y_,upgradeCapObjId:Q_},e0={};k_(e0,{contractId:()=>i0,default:()=>qT,feeObjId:()=>s0,roleObjId:()=>r0,status:()=>n0,transaction:()=>t0,upgradeCapObjId:()=>a0,vaultObjId:()=>o0});var t0="855FNDV8o8Z3fWULPnQo9qdhLJpsg7wZrkCpNyfw9KfB",n0="success",i0="0xc357c3985e8fb875d6b37141497af660779aa1bab0ec489b2213efd74067d1fa",r0="0x5ab49bdf9fd1413e328ef242b3f8d83dde791b38a0b627bfc87fb25c010d34f1",o0="0xb483558770d8eb26007f193b75db40f0a45f2e36863a687625885d4de6993378",s0="0x48453fc4d7cde3fe35aad89e5dfb496608a6a55ea529a1c0274681a808627f94",a0="0x34279779a0d0d36bd5044b04830d607fa1b0ecf316548c8ac3a44151e4f1a42a",qT={transaction:t0,status:n0,contractId:i0,roleObjId:r0,vaultObjId:o0,feeObjId:s0,upgradeCapObjId:a0},LT="https://sui-testnet.blockvision.org/v1/2Sgk89ivT64MnKdcGzjmyjY2ndD",UT="https://sui-testnet.blockvision.org/v1/2Sgk89ivT64MnKdcGzjmyjY2ndD",$T="https://sui-mainnet.blockvision.org/v1/2Sgk7NPvqkd7mESYkxF01yX15l7",KT="https://sui-mainnet.blockvision.org/v1/2Sgk7NPvqkd7mESYkxF01yX15l7",zT="https://bc3p6l5unl.execute-api.us-west-1.amazonaws.com/prod",VT="https://rolsbkota7.execute-api.us-west-1.amazonaws.com/prod",GT="https://6p6mkx33ne.execute-api.us-west-1.amazonaws.com/prod",WT="https://xrae3mrjv5.execute-api.us-west-1.amazonaws.com/prod",$g=G_,Kg=e0,HT=new Map([["dev",{env:"dev",rpc:{url:LT},backend:{url:zT},contract:$g}],["stg",{env:"stg",rpc:{url:UT},backend:{url:VT},contract:$g}],["prev",{env:"prev",rpc:{url:$T},backend:{url:GT},contract:Kg}],["prod",{env:"prod",rpc:{url:KT},backend:{url:WT},contract:Kg}]]);function XT(t,e){let n=HT.get(t);if(!n)throw new Error(`Env not supported: ${t}`);return e&&e.rpc&&(n.rpc=e.rpc),e&&e.backend&&(n.backend=e.backend),e&&e.contract&&(n.contract=e.contract),n}var mn=class extends Error{mpayErrorCode;context;constructor(t,e,n={}){let{cause:i,context:r}=n;i?super(`[MPay] ${e}: ${i}`):super(`[MPay] ${e}`),this.mpayErrorCode=t,this.context=r}},ZT=class extends mn{constructor(){super(11,"Backend is not specified")}},JT=class extends mn{constructor(){super(1,"Wallet not connected")}},Td=class extends mn{constructor(t,e){super(10,t,{context:e})}},YT=class yr{constructor(e){this.apiURL=e}static parseResponseData(e){if(e instanceof gi.AxiosError)throw new Td(e.response?.statusText);if(e.status===200){if(e.data.success)return e.data.data;throw new Td(e.data.code)}throw new Td(e.status.toString())}async getIncomingStreams(e,n){let i=await gi.default.post(`${this.apiURL}/stream`,{recipient:e,...n});return yr.parseResponseData(i)}async getOutgoingStreams(e,n){let i=await gi.default.post(`${this.apiURL}/stream`,{sender:e,...n});return yr.parseResponseData(i)}async getStreamHistory(e){let n=await gi.default.post(`${this.apiURL}/stream-events`,e),i=yr.parseResponseData(n);return i.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}),i}async getAllCoinTypes(e){let n=await gi.default.post(`${this.apiURL}/stream-info`,{address:e});return yr.parseResponseData(n)}async getAllRecipients(e,n){let i=await gi.default.post(`${this.apiURL}/stream-info`,{sender:e,status:n});return yr.parseResponseData(i)}async getAllSenders(e,n){let i=await gi.default.post(`${this.apiURL}/stream-info`,{recipient:e,status:n});return yr.parseResponseData(i)}},u0=class l0{signer;suiClient;envConfig;_backend;constructor(e){this.envConfig=e,this.suiClient=new c0.SuiClient({url:e.rpc.url}),e.backend&&(this._backend=new YT(e.backend.url))}static new(e,n){let i=XT(e,n);return new l0(i)}get walletType(){return this.wallet?this.wallet.type:"disconnected"}get backend(){if(!this._backend)throw new ZT;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 JT;return this.signer}async walletAddress(){return this.wallet.address()}},zg=50n,Sd=10000n,QT=25n,Vg=100000000n,_r=class{constructor(t){this.object=t}moveArg(t){return t.object(this.object)}},Gg=class{constructor(t){this.objects=t}moveArgs(t){return t.makeMoveVec({objects:this.objects.map(e=>t.object(e))})}},Ac=class d0{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(n,i){if(i in n)return Reflect.get(n,i);let r=s=>new d0(n.result[s]);if(i===Symbol.iterator)return function*(){let s=0;for(;;)yield r(s),s++};if(typeof i=="symbol")return;let o=parseInt(i,10);if(!(Number.isNaN(o)||o<0))return r(o)}})}moveArg(){return this.result}},Wg=class extends mn{constructor(t,e){super(3,t,{context:e})}},eS=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 n=this.callResult(t);return this.returnValue(n,e)}getAddress(t=0,e=0){let[n,i]=this.getValue(t,e);if(i!=="address")throw new Wg("Invalid contract return type.",{ctx:{expectType:"address",gotType:i}});return(0,f0.normalizeSuiAddress)(Ed.Buffer.from(n).toString("hex"))}getU64(t=0,e=0){let[n,i]=this.getValue(t,e);if(i!=="u64")throw new Wg("Invalid contract return type.",{ctx:{expectType:"u64",gotType:i}});return Ed.Buffer.from(n).readBigInt64LE()}},hn=class extends mn{constructor(t,e,n){super(2,`Invalid input: ${t}`,{context:{fieldKey:e,fieldValue:n}})}},h0={groupId:"string",name:"string"},tS=64;function nS(t){return p0(t),zd.bcs.ser(h0,t).toString("base64")}function Dd(t){let e=zd.bcs.de(h0,t,"base64");return p0(e),e}function p0(t){if(!Hg(t.name))throw new hn("Invalid metadata: Name contains unknown character");if(!Hg(t.groupId))throw new hn("Invalid metadata: Group ID contains unknown character");if(t.name.length>tS)throw new hn("Invalid metadata: Name exceed max length 64")}function Hg(t){return/^[\x00-\x7F]+$/.test(t)}function m0(t,e){return(0,Ds.normalizeStructTag)(t)===(0,Ds.normalizeStructTag)(e)}function _o(t,e){return(0,Ds.normalizeStructTag)(t)===(0,Ds.normalizeStructTag)(e)}var g0="txn.gas";function iS(){return kp()}var Md=class _0{constructor(e,n,i){this.globals=e,this.feeContract=n,this.streamContract=i}static convertCreateStreamInfoToInternal(e){return{metadata:nS({name:e.name,groupId:iS()}),coinType:(0,Es.normalizeStructTag)(e.coinType),recipients:e.recipients.map(n=>({address:n.address,cliffAmount:n.cliffAmount,amountPerEpoch:n.amountPerStep})),epochInterval:e.interval,numberEpoch:e.steps,startTime:e.startTimeMs,cancelable:e.cancelable}}async buildCreateStreamTransactionBlock(e){let n=new Pd.TransactionBlock,i=this.calculateFeesInternal(e),r=this.getCreateStreamCoinRequests(e,i),o=await this.wallet.requestCoins(r),s=await this.addMergeCoins(n,o[0]),a;r.length>1?a=await this.addMergeCoins(n,o[1]):a=s;for(let u=0;u<e.recipients.length;u++){let l=e.recipients[u],m=this.amountForRecipient(l,e.numberEpoch),b=this.getStreamFeeLocal(m),[v]=n.splitCoins(s,[n.pure(m+b,"u64")]),[T]=n.splitCoins(a,[n.pure(this.flatSuiFee,"u64")]);this.streamContract.createStream(n,{paymentCoin:new Ac(v),flatFeeCoin:new Ac(T),metadata:e.metadata,recipient:l.address,timeStart:e.startTime,cliff:l.cliffAmount,epochInterval:e.epochInterval,numEpoch:e.numberEpoch,amountPerEpoch:l.amountPerEpoch,cancelable:e.cancelable,coinType:e.coinType})}return n}calculateCreateStreamFees(e){let n=_0.convertCreateStreamInfoToInternal(e);return this.calculateFeesInternal(n)}feeParams(){return{createFeePercent:{numerator:zg,denominator:Sd},claimFeePercent:{numerator:QT,denominator:Sd},flatFeePerStream:Vg}}async addMergeCoins(e,n){let i;return n.mergedCoins&&n.mergedCoins.length?(e.mergeCoins(e.object(n.primaryCoin),n.mergedCoins.map(r=>e.object(r))),i=e.object(n.primaryCoin)):n.primaryCoin===g0?i=e.gas:i=e.object(n.primaryCoin),i}getCreateStreamCoinRequests(e,n){let i=e.coinType;return m0(i,Es.SUI_TYPE_ARG)?[{coinType:i,amount:n.totalAmount+n.streamFeeAmount+n.flatFeeAmount}]:[{coinType:i,amount:n.totalAmount+n.streamFeeAmount},{coinType:Es.SUI_TYPE_ARG,amount:n.flatFeeAmount}]}calculateFeesInternal(e){let n=e.recipients.reduce((i,r)=>{let o=this.amountForRecipient(r,e.numberEpoch),s=this.getStreamFeeLocal(o);return{totalAmount:i.totalAmount+o,streamFeeAmount:i.streamFeeAmount+s}},{totalAmount:0n,streamFeeAmount:0n});return{flatFeeAmount:BigInt(e.recipients.length)*this.flatSuiFee,...n}}amountForRecipient(e,n){return BigInt(e.amountPerEpoch)*BigInt(n)+BigInt(e.cliffAmount)}get flatSuiFee(){return Vg}getStreamFeeLocal(e){return e*zg/Sd}async getStreamFeeRemote(e){let n=this.feeContract.streamingFee(new Pd.TransactionBlock,e),i=await this.globals.suiClient.devInspectTransactionBlock({sender:await this.globals.walletAddress(),transactionBlock:n});return new eS(i).getU64()}get wallet(){return this.globals.wallet}},rS="0x0000000000000000000000000000000000000000000000000000000000000006",y0=class{constructor(t,e,n){this.moduleName=t,this.config=e,this.globals=n}addContractCall(t,e){let n=`${this.config.contractId}::${this.moduleName}::${e.method}`;return t.add(jd.Transactions.MoveCall({target:n,arguments:e.arguments.map(i=>i instanceof Gg?i.moveArgs(t):i instanceof _r?i.moveArg(t):i instanceof Ac?i.moveArg():t.pure(i)),typeArguments:e.typeArgs})),t}addTransactionBlock(t,e,n=[],i=[]){t.add(jd.Transactions.MoveCall({target:e,arguments:n.map(r=>r instanceof Gg?r.moveArgs(t):r instanceof _r?r.moveArg(t):r instanceof Ac?r.moveArg():t.pure(r)),typeArguments:i}))}makeObject(t){return typeof t=="string"?new _r(t):t}vaultObject(){return new _r(this.config.vaultObjId)}roleObject(){return new _r(this.config.roleObjId)}feeObject(){return new _r(this.config.feeObjId)}clockObject(){return new _r(rS)}},w0=class qi extends y0{constructor(e,n){super(qi.ModuleName,e,n),this.config=e,this.globals=n}static ModuleName="fee_module";static MethodName={set_streaming_fee:"set_streaming_fee",set_claim_fee:"set_claim_fee",set_streaming_flat_fee:"set_streaming_flat_fee",streaming_flat_fee:"streaming_flat_fee",streaming_fee:"streaming_fee",claim_fee:"claim_fee",fee_denominator:"fee_denominator"};setStreamingFee(e,n){let i=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:qi.MethodName.set_streaming_fee,arguments:[i,r,n],typeArgs:[]})}setStreamingFlatFee(e,n){let i=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:qi.MethodName.set_streaming_flat_fee,arguments:[i,r,n],typeArgs:[]})}setClaimFee(e,n){let i=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:qi.MethodName.set_claim_fee,arguments:[i,r,n],typeArgs:[]})}streamingFee(e,n){let i=this.feeObject();return this.addContractCall(e,{method:qi.MethodName.streaming_fee,arguments:[i,n],typeArgs:[]})}claimFee(e,n){return this.addContractCall(e,{method:qi.MethodName.claim_fee,arguments:[this.feeObject(),n],typeArgs:[]})}feeDenominator(e){return this.addContractCall(e,{method:qi.MethodName.fee_denominator,arguments:[this.feeObject()],typeArgs:[]})}},Ic=class Ut extends y0{constructor(e,n){super(Ut.ModuleName,e,n),this.config=e,this.globals=n}static ModuleName="stream";static MethodName={create_stream:"create_stream",set_auto_claim:"set_auto_claim",cancel_stream:"cancel_stream",claim_stream:"claim_stream",claim_stream_by_proxy:"claim_stream_by_proxy",stream_current_epoch:"stream_current_epoch",now_milli_seconds:"now_milli_seconds"};createStream(e,n){let i=this.feeObject(),r=this.vaultObject(),o=this.makeObject(n.paymentCoin),s=this.makeObject(n.flatFeeCoin),a=this.clockObject();return this.addContractCall(e,{method:Ut.MethodName.create_stream,arguments:[i,r,o,s,n.metadata,n.recipient,n.timeStart,n.cliff,n.epochInterval,n.numEpoch,n.amountPerEpoch,n.cancelable,a],typeArgs:[n.coinType]})}setAutoClaim(e,n){let i=this.makeObject(n.streamId);return this.addContractCall(e,{method:Ut.MethodName.set_auto_claim,arguments:[i,n.enabled],typeArgs:[n.coinType]})}cancelStream(e,n){let i=this.makeObject(n.streamId),r=this.clockObject();return this.addContractCall(e,{method:Ut.MethodName.cancel_stream,arguments:[i,r],typeArgs:[n.coinType]})}claimStream(e,n){let i=this.makeObject(n.streamId),r=this.clockObject();return this.addContractCall(e,{method:Ut.MethodName.claim_stream,arguments:[i,r],typeArgs:[n.coinType]})}claimStreamByProxy(e,n){let i=this.makeObject(n.streamId),r=this.vaultObject(),o=this.feeObject(),s=this.clockObject();return this.addContractCall(e,{method:Ut.MethodName.claim_stream_by_proxy,arguments:[i,r,o,s],typeArgs:[n.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}`}},b0=class{constructor(t){this.globals=t;let e=t.envConfig.contract;this.feeContract=new w0(e,t),this.streamContract=new Ic(e,t)}feeContract;streamContract;async createStreams(t){let e=Md.convertCreateStreamInfoToInternal(t);return this.createStreamHelper().buildCreateStreamTransactionBlock(e)}createStreamHelper(){return new Md(this.globals,this.feeContract,this.streamContract)}setAutoClaim(t,e,n){let i=new As.TransactionBlock;return this.streamContract.setAutoClaim(i,{streamId:t,enabled:e,coinType:n})}claimStream(t,e){let n=new As.TransactionBlock;return this.streamContract.claimStream(n,{streamId:t,coinType:e})}claimStreamByProxy(t,e){let n=new As.TransactionBlock;return this.streamContract.claimStreamByProxy(n,{streamId:t,coinType:e})}cancelStream(t,e){let n=new As.TransactionBlock;return this.streamContract.cancelStream(n,{streamId:t,coinType:e}),n}},Ln=class extends mn{constructor(t,e={}){super(0,t,e)}};async function oS(t){let e=[];for(;await t.hasNext();){let n=await t.next();e.push(n)}return e&&Array.isArray(e[0])?e.flat(1):e}var sS=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)}},v0=class{constructor(t){this.requester=t,this.pager=new sS(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]}},aS=class extends mn{constructor(t,e,n){super(4,`Not enough balance: ${t}`,{context:{coinType:t,requestAmount:e,gotAmount:n}}),this.coinType=t,this.requestAmount=e,this.gotAmount=n}},cS=25;async function uS(t,e,n,i="0x2::sui::SUI",r=cS){let o=new lS(t,e,i,r),s=BigInt(0),a=[];for(;await o.hasNext()&&s<n;){let u=await o.next();u&&(a.push(u),s+=BigInt(u.balance))}if(s<n)throw new aS(i,n,s);return a}var lS=class extends v0{constructor(t,e,n,i){super(new dS(t,e,n,i)),this.suiClient=t,this.owner=e,this.coinType=n,this.reqPageSize=i}},dS=class{constructor(t,e,n,i){if(this.suiClient=t,this.owner=e,this.coinType=n,this.reqPageSize=i,i<=0)throw new Ln("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}}},fS=class extends mn{constructor(){super(7,"Connected wallet is not creator")}},Xg=class extends mn{constructor(){super(8,"Connected wallet is not recipient")}},Zg=class extends mn{constructor(t,e){super(6,t,{context:e})}},hS=class extends mn{constructor(t){super(5,"Stream not found",{context:{streamId:t}})}},pS=(1n<<64n)-1n,xc=1e3;function Jg(t){let e;typeof t=="number"?e=t:typeof t=="bigint"?e=Number(t):e=t.toMillis();let n=Math.round(e/xc);return Te.fromMillis(n*xc)}function Yg(t){let e;typeof t=="number"?e=t:typeof t=="bigint"?e=Number(t):e=t.toMillis();let n=Math.round(e/xc);return Be.fromMillis(n*xc)}var Vd=class Li{constructor(e,n,i){this.globals=e,this.streamId=n,this.rawData=i,this.streamContract=new Ic(e.envConfig.contract,e)}streamContract;type="Stream";static async new(e,n){let i=await Li.fetchStreamData(e,n);return new Li(e,n,i)}static fromObjectData(e,n,i){let r=Li.parseRawStreamData(n,i);return new Li(e,n,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 Li.fetchStreamData(this.globals,this.streamId)}refreshWithData(e){if(e.data?.objectId!==this.streamId)throw new Ln("Object Id does not align");this.rawData=Li.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 fS;let e=new xs.TransactionBlock;return this.streamContract.cancelStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async claim(){if(await this.globals.walletAddress()!==this.recipient)throw new Xg;let e=new xs.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 Xg;let n=new xs.TransactionBlock;return this.streamContract.setAutoClaim(n,{streamId:this.streamId,coinType:this.coinType,enabled:e}),n}async claimByProxy(){let e=new xs.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,Ms.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 Yg(this.rawData.config.epochInterval)}get groupId(){let{metadata:e}=this.rawData.config;return Dd(e).groupId}get name(){let{metadata:e}=this.rawData.config;return Dd(e).name}get recipient(){return this.rawData.config.recipient}get timeStart(){return Jg(this.rawData.config.timeStart)}get duration(){let e=this.rawData.config,n=e.epochInterval*e.totalEpoch;return Yg(n)}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:Jg((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===pS?0n:this.rawData.status.epochClaimed*this.amountPerEpoch+this.cliff}get currentEpoch(){let e=Te.now().toMillis(),n=this.timeStart.toMillis();if(e<n)return-1n;let i=Math.floor((e-n)/Number(this.rawData.config.epochInterval));return BigInt(i)>Number(this.rawData.config.totalEpoch)?this.rawData.config.totalEpoch:BigInt(i)}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,n){let i=await e.suiClient.getObject({id:n,options:{showContent:!0,showType:!0}});return Li.parseRawStreamData(n,i)}static parseRawStreamData(e,n){if(n.error)throw n.error.code==="notExists"?new hS(e):new Zg(`get stream data: ${n.error.code}`,{streamId:e,...n.error});let i=n.data.content;if(i.dataType!=="moveObject")throw new Zg("Unexpected object type",{gotType:i.dataType});let{typeParams:r}=(0,Ms.parseStructTag)(i.type),o=(0,Ms.normalizeStructTag)(r[0]),s=i.fields,a=s.config.fields,u=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:u.status,epochCanceled:BigInt(u.epoch_canceled),epochClaimed:BigInt(u.epoch_claimed)}}}},mS=class extends mn{constructor(t,e){super(12,`Transaction failed: ${e}`,{context:{status:t,msg:e}})}},gS=1e3,_S=class{constructor(t){this.globals=t,this.coinMetaHelper=new yS(t.suiClient),this.createStreamHelper=new b0(t).createStreamHelper()}coinMetaHelper;createStreamHelper;getStreamIdsFromCreateStreamResponse(t){if(t.effects?.status.status!=="success")throw new mS(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 hn("Invalid stream steps: 0");let e=t.cliff?t.cliff:{numerator:0n,denominator:100n},n=t.totalAmount*e.numerator/e.denominator,i=(t.totalAmount-n)/t.steps,r={realTotalAmount:i*t.steps+n,cliffAmount:n,amountPerStep:i};return this.validateStreamAmount(r,t.totalAmount),r}calculateTimelineByInterval(t){if(t.steps===0n)throw new hn("Invalid stream steps: 0");let e=t.timeStart.plus(t.interval.toMillis()*Number(t.steps)),n={timeStart:t.timeStart,timeEnd:e,interval:t.interval,steps:t.steps};return this.validateTimeline(n),n}calculateTimelineByTotalDuration(t){if(t.steps===0n)throw new hn("Invalid stream steps: 0");let e=BigInt(t.total.toMillis())/t.steps,n=t.timeStart.plus(Be.fromMillis(Number(e*t.steps))),i={timeStart:t.timeStart,timeEnd:n,interval:Be.fromMillis(Number(e)),steps:t.steps};return this.validateTimeline(i),i}async getBalance(t,e){let n=await this.globals.suiClient.getBalance({owner:t,coinType:e}),i=await this.getCoinMeta(e);return{...n,coinType:(0,ko.normalizeStructTag)(n.coinType),coinMeta:i}}async getAllBalance(t){let e=await this.globals.suiClient.getAllBalances({owner:t}),n=await Promise.all(e.map(i=>this.getCoinMeta(i.coinType)));return e.map((i,r)=>({...i,coinType:(0,ko.normalizeStructTag)(i.coinType),coinMeta:n[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 hn("Stream amount too small","totalAmount",e);if(t.cliffAmount>t.realTotalAmount)throw new hn("Invalid cliff settings")}validateTimeline(t){if(t.interval.toMillis()<gS)throw new hn("Interval shall be at least 1 second","interval",t.interval)}},yS=class{constructor(t){this.suiClient=t,this.coinMetaReg=new Map}coinMetaReg;async getCoinMeta(t){let e=(0,ko.normalizeStructTag)(t||ko.SUI_TYPE_ARG);if(this.coinMetaReg.has(e))return this.coinMetaReg.get(e);let n=await this.queryCoinMeta(e);return n&&this.coinMetaReg.set(e,n),n}async queryCoinMeta(t){return await this.suiClient.getCoinMetadata({coinType:t})||void 0}},Ad=class extends mn{constructor(t,e){super(9,`Invalid stream group: ${t}`,{context:e})}},wS=25;async function Qg(t,e,n){let i=new k0(e),r=new C0(t,i,n);return await oS(r)}var k0=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]}},C0=class extends v0{constructor(t,e,n){super(new bS(t,e,n)),this.suiClient=t,this.idIter=e,this.options=n}},bS=class{constructor(t,e,n){this.suiClient=t,this.stringIter=e,this.options=n,this.filter=n?.filter,this.pageSize=n?.pageSize||wS,this.objectOptions=n?.objectOptions||{showType:!0,showContent:!0}}filter;pageSize;objectOptions;async doNextRequest(){let t=[];for(;t.length<this.pageSize&&await this.stringIter.hasNext();){let i=await this.stringIter.next();i&&t.push(i)}let e=await this.suiClient.multiGetObjects({ids:t,options:this.objectOptions}),n;if(this.filter){let{filter:i}=this;n=e.filter(r=>i?.(r))}else n=e;return{data:n,hasNext:await this.stringIter.hasNext()}}},vS=class vc{constructor(e,n){if(this.globals=e,this.streams=n,n.length===0)throw new Ad("stream size 0");let i=n.map(r=>r.groupId);if(new Set(i).size!==1)throw new hn("Stream does not have same group ID")}type="StreamGroup";static async new(e,n){let i=await Qg(e.suiClient,n);return i.forEach(r=>{if(!r)throw new Ln("stream group object data undefined")}),vc.newFromObjectResponse(e,n,i)}static async newFromObjectResponse(e,n,i){let r=await vc.parseGroupStreams(e,n,i);return new vc(e,r)}static checkStreamGroup(e){let n=e.map(o=>o.groupCommonInfo),i=n[0],r=!0;return n.forEach(o=>{kS(i,o)||(r=!1)}),r}async refresh(){let e=await Qg(this.globals.suiClient,this.streams.map(n=>n.streamId));this.streams.forEach((n,i)=>{n.refreshWithData(e[i])})}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,n)=>e+n.totalAmount,0n),start:this.streams[0].timeStart,end:this.streams[0].timeEnd,cancelable:this.streams[0].cancelable,cliffAmount:this.streams.reduce((e,n)=>e+n.cliff,0n),duration:this.streams[0].duration,interval:this.streams[0].interval,steps:this.streams[0].totalSteps,nextReleaseAmount:this.streams.reduce((e,n)=>n.nextReleaseAmount===null?e:e+n.nextReleaseAmount,0n),nextReleaseDate:this.streams[0].nextReleaseDate}}get progress(){return{total:this.streams.reduce((e,n)=>e+n.totalAmount,0n),streamed:this.streams.reduce((e,n)=>e+n.streamedAmount,0n),claimed:this.streams.reduce((e,n)=>e+n.claimedAmount,0n),claimable:this.streams.reduce((e,n)=>e+n.claimable,0n),canceled:this.streams.reduce((e,n)=>e+n.canceledAmount,0n)}}async historyEvents(e){return this.globals.backend.getStreamHistory({groupId:this.groupId,pagination:e})}static async parseGroupStreams(e,n,i){let r=i.map((o,s)=>Vd.fromObjectData(e,n[s],o)).filter(o=>!!o);if(new Set(r.map(o=>o.groupId)).size!==1)throw new Ad("Not same group ID");if(!this.checkStreamGroup(r))throw new Ad("Not same stream settings");return r}};function kS(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 e_=class Bd{constructor(e,n){this.it=e,this.pageSize=n}static async newIncoming(e){let n=await t_.newIncoming(e);return new Bd(n,e.pageSize)}static async newOutgoing(e){let n=await t_.newOutgoing(e);return new Bd(n,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}},t_=class Nd{constructor(e){this.requester=e}cachedNext;static async newIncoming(e){let n=await n_.newIncomingQuery(e);return new Nd(n)}static async newOutgoing(e){let n=await n_.newOutgoingQuery(e);return new Nd(n)}async hasNext(){return this.cachedNext===void 0&&(this.cachedNext=await this.requester.doNextRequest()),this.cachedNext!==null}async next(){if(this.cachedNext===void 0){let n=await this.requester.doNextRequest();if(n===null)throw new Ln("No more results");return n}let e=this.cachedNext;if(this.cachedNext=void 0,e===null)throw new Ln("No more results");return e}},n_=class Fd{constructor(e,n,i,r){this.globals=e,this.recipient=n,this.groupRefs=i,this.query=r,this.current=0;let o=new k0(i.flat().map(s=>s.streamId));this.objectIter=new C0(e.suiClient,o)}current=0;objectIter;static async newIncomingQuery(e){let n=xS(e.query),i=await e.globals.walletAddress(),r=(await e.globals.backend.getIncomingStreams(i,n)).filter(s=>(0,Vi.normalizeSuiAddress)(s.recipient)===(0,Vi.normalizeSuiAddress)(i)),o=i_(r);return new Fd(e.globals,i,o,e.query)}static async newOutgoingQuery(e){let n=IS(e.query),i=await e.globals.walletAddress(),r=await e.globals.backend.getOutgoingStreams(i,n),o=i_(r);return new Fd(e.globals,i,o,e.query)}async doNextRequest(){if(this.current>=this.groupRefs.length)return null;let e=this.groupRefs[this.current];if(e.length===1){let n=await SS(this.globals,e[0].streamId,this.objectIter);return this.current++,T0(n,this.query)?n:this.doNextRequest()}if(e.length>1){let n=await AS(this.globals,e.map(i=>i.streamId),this.objectIter);return this.current++,TS(n,this.query)?n:this.doNextRequest()}throw new Ln("Stream group with no stream")}};function i_(t){let e=new Map;return t.forEach(n=>{let i=e.get(n.groupId);i?(i.push(n),e.set(n.groupId,i)):e.set(n.groupId,[n])}),Array.from(e.values()).sort((n,i)=>Te.fromISO(i[0].createDate).toMillis()-Te.fromISO(n[0].createDate).toMillis())}function T0(t,e){if(e===void 0)return!0;let n=CS(t,e.status);if(e&&"claimable"in e&&e.claimable!==void 0){let i=e.claimable?t.progress.claimable!==0n:t.progress.claimable===0n;return n&&i}return n}function CS(t,e){return e===void 0?!0:Array.isArray(e)?e.includes(t.progress.status):t.progress.status===e}function TS(t,e){if(!e)return!0;let n=!1;return t.streams.forEach(i=>{T0(i,e)&&(n=!0)}),n}async function SS(t,e,n){let i=await S0(n,e);return Vd.fromObjectData(t,e,i)}async function AS(t,e,n){let i=[];for(;i.length<e.length;){let r=await S0(n,e[i.length]);i.push(r)}return vS.newFromObjectResponse(t,e,i)}async function S0(t,e){if(!await t.hasNext())throw new Ln("object iterator has been consumed");let n=await t.next();if(!n||n.error||n.data===void 0||n.data===null)throw new Ln("object iterator undefined response",{cause:n?.error});if(n?.data?.objectId!==e)throw new Ln("stream id not aligned");return n}function xS(t){return{status:Gd(t?.status),coinType:A0(t?.coinType),sender:x0(t?.sender)}}function IS(t){return{status:Gd(t?.status),coinType:A0(t?.coinType),recipient:x0(t?.recipient)}}function Gd(t){return t===void 0||t.length===0?"all":Array.isArray(t)?t.reduce((e,n)=>{let i=Gd(n);return!e||e===i?i:"all"},void 0):OS(t)}function OS(t){switch(t){case"STREAMING":case"STREAMED":case"CANCELED":return"active";case"COMPLETED":case"SETTLED":return"inactive";default:throw new hn("Unknown stream filtered status")}}function A0(t){if(t)return Array.isArray(t)?t.length!==0?t.map(e=>(0,Vi.normalizeStructTag)(e)):void 0:(0,Vi.normalizeStructTag)(t)}function x0(t){if(t)return Array.isArray(t)?t.length!==0?t.map(e=>(0,Vi.normalizeSuiAddress)(e)):void 0:(0,Vi.normalizeSuiAddress)(t)}var PS=class{constructor(t){this.msafe=t}get type(){return"msafe"}async address(){return this.msafe.address()}async requestCoins(t){return this.msafe.requestCoins(t)}},ES=class{constructor(t){this.account=t}async address(){return this.account.address}},DS=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(m0(t.coinType,br.SUI_TYPE_ARG))return{primaryCoin:g0};if(t.amount<=0)throw new hn("Invalid coin request","coinAmount",t.amount);let e=await uS(this.suiClient,await this.address(),t.amount,t.coinType);if(e.length===0)throw new Ln("no coins available");return{primaryCoin:e[0].coinObjectId,mergedCoins:e.slice(1).map(n=>n.coinObjectId)}}},MS=class{globals;helper;constructor(t,e){this.globals=u0.new(t,e),this.helper=new _S(this.globals)}connectSingleWallet(t){let e=new DS(t,this.globals.suiClient);this.globals.connectWallet(e)}connectMSafeAccount(t){let e=new PS(t);this.globals.connectWallet(e)}async createStream(t){return this.builder().createStreams(t)}async getStream(t){return Vd.new(this.globals,t)}async getIncomingStreams(t,e=10){return e_.newIncoming({globals:this.globals,query:t,pageSize:e})}async getOutgoingStreams(t,e=10){return e_.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,br.normalizeStructTag)(e))}async getRecipientsForStreamFilter(t){let e=await this.wallet.address();return(await this.globals.backend.getAllRecipients(e,t)).map(n=>(0,br.normalizeSuiAddress)(n))}async getCreatorsForStreamFilter(t){let e=await this.wallet.address();return(await this.globals.backend.getAllSenders(e,t)).map(n=>(0,br.normalizeSuiAddress)(n))}get wallet(){return this.globals.wallet}builder(){return new b0(this.globals)}},jS=class{constructor(t){this.data=t}serialize(){return JSON.stringify((0,I0.default)(this.data))}},Bs=class extends jS{application="mpay";getClient(t,e){let n=new MS(t==="sui:mainnet"?"prod":"dev");return n.connectSingleWallet(new ES(e)),n}},r_=class extends Bs{constructor(t){super(t),this.data=t}txType=V_.TransactionType.Stream;txSubType="Cancel";async build(t){let{network:e,account:n}=t;return(await this.getClient(e,n).getStream(this.data.streamId)).cancel()}},o_=class extends Bs{constructor(t){super(t),this.data=t}txType=O0.TransactionType.Stream;txSubType="ClaimByProxy";async build(t){let{network:e,account:n}=t;return(await this.getClient(e,n).getStream(this.data.streamId)).claimByProxy()}},s_=class extends Bs{constructor(t){super(t),this.data=t}txType=P0.TransactionType.Stream;txSubType="Claim";async build(t){let{network:e,account:n}=t;return(await this.getClient(e,n).getStream(this.data.streamId)).claim()}},a_=class extends Bs{constructor(t){super(t),this.data=t}txType=E0.TransactionType.Stream;txSubType="CreateStream";async build(t){let{network:e,account:n}=t;return this.getClient(e,n).createStream(this.data)}},D0=class kc{constructor(e,n){this.moveCall=e,this.txb=n}decodeSharedObjectId(e){let n=this.getInputParam(e);return kc.getSharedObjectId(n)}decodeOwnedObjectId(e){let n=this.getInputParam(e);return kc.getOwnedObjectId(n)}decodeInputU64(e){let n=this.decodePureArg(e,"u64");return BigInt(n)}decodeInputAddress(e){let n=this.decodePureArg(e,"address");return(0,Ui.normalizeSuiAddress)(n)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,n){let i=this.getInputParam(e);return kc.getPureInputValue(i,n)}getInputParam(e){let n=this.moveCall.arguments[e];if(n.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[n.index]}static getPureInputValue(e,n){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let i=e.value.Pure;return Rd.bcs.de(n,new Uint8Array(i))}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,Ui.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Ui.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,Ui.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Ui.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,n){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 i=e.value.Pure;return Rd.bcs.de(n,new Uint8Array(i))}typeArg(e){return(0,Ui.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},BS=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"&&_o(e.target,this.contract.createStreamTarget));if(t.length===0)throw new Ln("No create stream transactions");return t.map(e=>new D0(e,this.txb))}getCreationInfoFromMoveCall(t){let e=t.decodeInputString(4),{name:n,groupId:i}=Dd(e),r=t.decodeInputAddress(5),o=t.decodeInputU64(6),s=t.decodeInputU64(7),a=t.decodeInputU64(8),u=t.decodeInputU64(9),l=t.decodeInputU64(10),m=t.decodeInputBool(11),b=t.typeArg(0);return{name:n,groupId:i,recipient:r,timeStart:o,cliff:s,epochInterval:a,totalEpoch:u,amountPerEpoch:l,cancelable:m,coinType:b}}aggregateGroupStreamInfo(t){if(new Set(t.map(n=>JSON.stringify({name:n.name,groupId:n.groupId,timeStart:String(n.timeStart),epochInterval:String(n.epochInterval),totalEpoch:String(n.totalEpoch),cancelable:n.cancelable,coinType:n.coinType}))).size!==1)throw new hn("Stream group not have common info");let e=t.map(n=>({address:n.recipient,amountPerStep:n.amountPerEpoch,cliffAmount:n.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 Ic(this.globals.envConfig.contract,this.globals)}get feeContract(){return new w0(this.globals.envConfig.contract,this.globals)}createStreamHelper(){return new Md(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]}},NS=class{constructor(t,e){this.globals=t,this.txb=e,this.contract=new Ic(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"&&_o(t.target,this.contract.createStreamTarget))!==-1}isSetAutoClaimTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&_o(this.transactions[0].target,this.contract.setAutoClaimTarget)}isCancelStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&_o(this.transactions[0].target,this.contract.cancelStreamTarget)}isClaimStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&_o(this.transactions[0].target,this.contract.claimStreamTarget)}isClaimByProxyTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&_o(this.transactions[0].target,this.contract.claimStreamByProxyTarget)}decodeCreateStreamTransaction(){return new BS(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 D0(t,this.txb)}},c_=class extends Bs{constructor(t){super(t),this.data=t}txType=M0.TransactionType.Stream;txSubType="SetAutoClaim";async build(t){let{network:e,account:n}=t;return(await this.getClient(e,n).getStream(this.data.streamId)).setAutoClaim(this.data.enabled)}},FS=class{application="mpay";async deserialize(t){let{network:e,transactionBlock:n}=t,i=u0.new(e==="sui:mainnet"?"prod":"dev"),r=new NS(i,n).decode(),o;switch(r.type){case"CreateStream":o=new a_(r.info);break;case"SetAutoClaim":o=new c_({streamId:r.streamId,enabled:r.enabled});break;case"Claim":o=new s_({streamId:r.streamId});break;case"ClaimByProxy":o=new o_({streamId:r.streamId});break;case"Cancel":o=new r_({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,n;switch(t.txSubType){case"CreateStream":n=new a_(e);break;case"Claim":n=new s_(e);break;case"ClaimByProxy":n=new o_(e);break;case"SetAutoClaim":n=new c_(e);break;case"Cancel":n=new r_(e);break;default:throw new Error("not implemented")}return n.build({...t})}},RS=class B0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:n,account:i}=e;return(0,j0.buildCoinTransferTxb)(n,this.data,i.address)}static fromData(e){return new B0(e)}},qS=class F0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:n,account:i}=e;return(0,N0.buildObjectTransferTxb)(n,this.data,i.address)}static fromData(e){return new F0(e)}},LS=class L0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:n}=e,i=q0.TransactionBlock.from(this.data.content);if(!(0,R0.isSameAddress)(i.blockData.sender,n.address))throw new Error("Invalid sender address");return i}static fromData(e){return new L0(e)}},US=class{application;constructor(){this.application=vo.TransactionDefaultApplication}deserialize(){throw new Error("MSafe core transaction intention should be build from API")}async build(t){let{suiClient:e,account:n}=t,i;switch(t.txSubType){case vo.TransactionSubTypes.assets.coin.send:i=RS.fromData(t.intentionData);break;case vo.TransactionSubTypes.assets.object.send:i=qS.fromData(t.intentionData);break;case vo.TransactionSubTypes.others.plain:i=LS.fromData(t.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:e,account:n})}},$S={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=$S,KS=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(n=>n.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 n=new u_(e,this.txb),i=n.decodeInputU8(4),r=n.decodeInputU8(5),o=n.decodeSharedObjectId(2),s=this.findPoolByAssetId(i),a=[...e.typeArguments];t.push({coinType:s.coinType,option:r,typeArguments:a,assetId:i,poolId:o})}}),console.log("decode claims",t),{txType:yo.TransactionType.Other,type:"ClaimReward",intentionData:{claims:t}}}decodeEntryBorrow(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(5),n=this.findPoolByAssetId(t);return{txType:yo.TransactionType.Other,type:"EntryBorrow",intentionData:{amount:e,coinType:n.coinType}}}decodeEntryDeposit(){let t=this.helper.decodeInputU8(3),e=this.helper.decodeInputU64(5),n=this.findPoolByAssetId(t);return{txType:yo.TransactionType.Other,type:"EntryDeposit",intentionData:{amount:e,coinType:n.coinType}}}decodeEntryRepay(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(6),n=this.findPoolByAssetId(t);return{txType:yo.TransactionType.Other,type:"EntryRepay",intentionData:{amount:e,coinType:n.coinType}}}decodeEntryWithdraw(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(5),n=this.findPoolByAssetId(t);return{txType:yo.TransactionType.Other,type:"EntryWithdraw",intentionData:{amount:e,coinType:n.coinType}}}get helper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(ke.ProtocolPackage));return new u_(t,this.txb)}},u_=class Cc{constructor(e,n){this.moveCall=e,this.txb=n}decodeSharedObjectId(e){let n=this.getInputParam(e);return Cc.getSharedObjectId(n)}decodeOwnedObjectId(e){let n=this.getInputParam(e);return Cc.getOwnedObjectId(n)}decodeInputU64(e){let n=this.decodePureArg(e,"u64");return Number(n)}decodeInputU8(e){let n=this.decodePureArg(e,"u8");return Number(n)}decodeInputAddress(e){let n=this.decodePureArg(e,"address");return(0,$i.normalizeSuiAddress)(n)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,n){let i=this.getInputParam(e);return Cc.getPureInputValue(i,n)}getInputParam(e){let n=this.moveCall.arguments[e];if(n.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[n.index]}static getPureInputValue(e,n){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let i=e.value.Pure;return qd.bcs.de(n,new Uint8Array(i))}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,$i.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,$i.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,$i.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,$i.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,n){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 i=e.value.Pure;return qd.bcs.de(n,new Uint8Array(i))}typeArg(e){return(0,$i.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};function l_(t,e,n,i){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),n,t.pure(i),t.object(ke.Incentive),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function zS(t,e,n){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(n),t.object(ke.Incentive),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function VS(t,e,n){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(n),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function d_(t,e,n,i){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),n,t.pure(i),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function GS(t,e,n,i,r){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::claim_reward`,arguments:[t.object("0x06"),t.object(ke.IncentiveV2),t.object(n),t.object(ke.StorageId),t.pure(e),t.pure(i)],typeArguments:r}),t}var WS=class K0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{claims:e}=this.data,n=new $0.TransactionBlock;return e.forEach(i=>{let{assetId:r,poolId:o,option:s,typeArguments:a}=i;GS(n,r,o,s,a)}),n}static fromData(e){return new K0(e)}},HS=class V0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{coinType:e,amount:n}=this.data,i=new z0.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 VS(i,r,n)}static fromData(e){return new V0(e)}};async function W0(t,e,n){let i=await t.getCoins({owner:e,coinType:n});return console.log("getTokenObjs",e,i),i}var XS=class H0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:n,account:i}=e,{coinType:r,amount:o}=this.data,s=new G0.TransactionBlock;if(console.log("build",this.data),r==="sui"){let[m]=s.splitCoins(s.gas,[o]);return l_(s,ke.pool.sui,m,o)}let a=ke.pool[r];if(!a)throw new Error(`${r} not support, please use ${Object.keys(ke.pool).join(", ")}.`);let u=await W0(n,i.address,a.type);if(!u.data[0])throw new Error(`Insufficient balance for ${a.name} Token`);let l=u.data[0].coinObjectId;if(u.data.length>=2){let m=1;for(;m<u.data.length;)s.mergeCoins(l,[u.data[m].coinObjectId]),m++}return l_(s,a,s.object(l),o)}static fromData(e){return new H0(e)}},ZS=class Z0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:n,account:i}=e,{coinType:r,amount:o}=this.data,s=new X0.TransactionBlock;if(console.log("build",this.data),r==="sui"){let[m]=s.splitCoins(s.gas,[o]);return d_(s,ke.pool.sui,m,o)}let a=ke.pool[r];if(!a)throw new Error(`${r} not support, please use ${Object.keys(ke.pool).join(", ")}.`);let u=await W0(n,i.address,a.type);if(!u.data[0])throw new Error(`Insufficient balance for ${a.name} Token`);let l=u.data[0].coinObjectId;if(u.data.length>=2){let m=1;for(;m<u.data.length;)s.mergeCoins(l,[u.data[m].coinObjectId]),m++}return d_(s,a,s.object(l),o)}static fromData(e){return new Z0(e)}},JS=class Y0 extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{coinType:e,amount:n}=this.data,i=new J0.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 zS(i,r,n)}static fromData(e){return new Y0(e)}},YS=class{application="navi";async deserialize(t){let{transactionBlock:e}=t,n=new KS(e).decode();return{txType:U0.TransactionType.Other,txSubType:n.type,intentionData:n.intentionData}}async build(t){let{suiClient:e,account:n}=t,i;switch(t.txSubType){case"EntryDeposit":i=XS.fromData(t.intentionData);break;case"EntryBorrow":i=HS.fromData(t.intentionData);break;case"EntryRepay":i=ZS.fromData(t.intentionData);break;case"EntryWithdraw":i=JS.fromData(t.intentionData);break;case"ClaimReward":i=WS.fromData(t.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:e,account:n})}},QS="msafe-plain-tx",eA=Oc.TransactionSubTypes.others.plain,tA=class{application;constructor(){this.application=QS}async deserialize(t){let{transactionBlock:e,suiClient:n}=t,i=await e.build({client:n});return{txType:Oc.TransactionType.Other,txSubType:eA,intentionData:{content:(0,Pc.toHEX)(i)}}}async build(t){let{suiClient:e,account:n}=t,i=Q0.TransactionBlock.from((0,Pc.fromHEX)(t.intentionData.content)),r=await e.devInspectTransactionBlock({transactionBlock:i,sender:n.address});if(r.effects.status.status!=="success")throw new Error(r.effects.status.error);return i}},nA=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}},iA=class{constructor(t,e){this.txb=t,this._protocolId=e}_protocolId;decode(){if(console.log("txb",this.txb),this.isSupplyLendingTransaction())return this.decodeSupplyLending();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)}isSupplyLendingTransaction(){return!!this.getMoveCallTransaction(`${this._protocolId}::mint::mint`)}decodeSupplyLending(){let t=this.helper.decodeOwnedObjectId(0),e=this.helper.decodeInputU64(5);return{txType:ty.TransactionType.Other,type:"SupplyLending",intentionData:{amount:e,coinType:t}}}get helper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(this._protocolId));return new rA(t,this.txb)}},rA=class Tc{constructor(e,n){this.moveCall=e,this.txb=n}decodeSharedObjectId(e){let n=this.getInputParam(e);return Tc.getSharedObjectId(n)}decodeOwnedObjectId(e){let n=this.getInputParam(e);return Tc.getOwnedObjectId(n)}decodeInputU64(e){let n=this.decodePureArg(e,"u64");return Number(n)}decodeInputU8(e){let n=this.decodePureArg(e,"u8");return Number(n)}decodeInputAddress(e){let n=this.decodePureArg(e,"address");return(0,Ki.normalizeSuiAddress)(n)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,n){let i=this.getInputParam(e);return Tc.getPureInputValue(i,n)}getInputParam(e){let n=this.moveCall.arguments[e];if(n.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[n.index]}static getPureInputValue(e,n){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let i=e.value.Pure;return Ld.bcs.de(n,new Uint8Array(i))}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,Ki.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Ki.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,Ki.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Ki.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,n){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 i=e.value.Pure;return Ld.bcs.de(n,new Uint8Array(i))}typeArg(e){return(0,Ki.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},f_="https://sui.api.scallop.io",Ec="6601955b8b0024600a917079",ry="0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf",oA="0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",xd="0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6::sca::SCA",Dc=["eth","btc","usdc","usdt","sui","apt","sol","cetus","afsui","hasui","vsui","sca"],oy=["eth","btc","usdc","usdt","sui","apt","sol","cetus","afsui","hasui","vsui","sca"],h_=["seth","ssui","susdc","susdt","scetus","safsui","shasui","svsui"],sA=["sui"],Ps=["sui","usdc","usdt"],Id=["sui","sca"],aA={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},sy={seth:"sui",ssui:"sui",susdc:"sui",susdt:"sui",scetus:"sui",safsui:"sui",shasui:"sui",svsui:"sui"},ay={sui:["sui","sca"],usdc:["sui","sca"],usdt:["sui","sca"]},cA={sui:"0x0000000000000000000000000000000000000000000000000000000000000002",eth:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",btc:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",usdc:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",usdt:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",apt:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",sol:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",cetus:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",afsui:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",hasui:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",vsui:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",sca:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6"},An={eth:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",btc:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",usdc:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",usdt:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",apt:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",sol:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8"},p_={vsui:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55"},Mc=class{_auth;_requestClient;_id;_network;_currentAddresses;_addressesMap;constructor(t){let{id:e,auth:n,network:i}=t;n&&(this._auth=n),this._id=e,this._network=i||"mainnet",this._addressesMap=new Map,this._requestClient=iy.default.create({baseURL:f_,headers:{"Content-Type":"application/json",Accept:"application/json"},timeout:3e4})}getId(){return this._id||void 0}get(t){if(this._currentAddresses)return t.split(".").reduce((e,n)=>typeof e=="object"?e[n]:e,this._currentAddresses)||void 0}set(t,e){if(this._currentAddresses){let n=t.split(".");n.reduce((i,r,o)=>{if(o===n.length-1){let s=i;s[r]=e}return i[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 n=e||this._network;n===this._network&&(this._currentAddresses=t),this._addressesMap.set(n,t)}getAllAddresses(){return Object.fromEntries(this._addressesMap)}async read(t){let e=t||this._id||void 0;if(e!==void 0){let n=await this._requestClient.get(`${f_}/addresses/${e}`,{headers:{"Content-Type":"application/json"}});if(n.status===200)return Object.entries(n.data).forEach(([i,r])=>{["localnet","devnet","testnet","mainnet"].includes(i)&&(i===this._network&&(this._currentAddresses=r),this._addressesMap.set(i,r))}),this._id=n.data.id,this.getAllAddresses();throw Error("Failed to create addresses.")}else throw Error("Please provide API addresses id.")}},xn=t=>{let{sender:e}=t.blockData;if(!e)throw new Error("Sender is required");return e},uA=(t,e,n,i)=>{let r=!i,o=!r&&i*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(Ns(i),typeof t=="number"&&t<1e9)throw new Error("Minimum top up amount is 1 SCA");if(n&&i&&n-i>126057600)throw new Error("Maximum lock period is ~4 years (1459 days)")}},lA=(t,e,n)=>{if(Ns(n),t<=0)throw new Error("Lock period must be greater than 0");if(n&&n*1e3<=new Date().getTime())throw new Error("veSca is expired, use renewExpiredVeScaQuick instead");if(n&&e-n>126057600)throw new Error("Maximum lock period is ~4 years (1459 days)")},dA=(t,e)=>{if(Ns(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")},fA=(t,e,n)=>{if(Ns(n),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)")},Ns=t=>{if(t===void 0)throw new Error("veSca not found")},hA=t=>({pointType:(0,Gi.normalizeStructTag)(t.point_type.name),distributedPointPerPeriod:Number(t.distributed_point_per_period),period:Number(t.point_distribution_time),distributedPoint:Number(t.distributed_point),points:Number(t.points),index:Number(t.index),baseWeight:Number(t.base_weight),weightedAmount:Number(t.weighted_amount),lastUpdate:Number(t.last_update)}),pA=t=>({poolType:(0,Gi.normalizeStructTag)(t.pool_type.name),minStakes:Number(t.min_stakes),maxStakes:Number(t.max_stakes),staked:Number(t.stakes),createdAt:Number(t.created_at),poolPoints:t.points.reduce((e,n)=>{let i=hA(n),r=(0,Gi.parseStructTag)(i.pointType).name.toLowerCase();return e[r]=i,e},{})}),mA=t=>({pointType:(0,Gi.normalizeStructTag)(t.point_type.name),weightedAmount:Number(t.weighted_amount),points:Number(t.points),totalPoints:Number(t.total_points),index:Number(t.index)}),gA=t=>({poolType:(0,Gi.normalizeStructTag)(t.pool_type.name),debtAmount:Number(t.debt_amount),pointList:t.points_list.reduce((e,n)=>{let i=mA(n),r=(0,Gi.parseStructTag)(i.pointType).name.toLowerCase();return e[r]=i,e},{})}),m_=t=>{let e=t.slice(1).toLowerCase();return t.charAt(0).toLowerCase()==="s"&&[...new Set([...Dc,...oy,...sA])].includes(e)},g_=t=>{switch(t){case"afsui":return"afSUI";case"hasui":return"haSUI";case"vsui":return"vSUI";default:return t.toUpperCase()}},_A=t=>{let e=new Date(t*1e3),n=new Date(t*1e3);n.setUTCHours(0,0,0,0),e.getUTCHours()>=0&&n.setUTCDate(n.getUTCDate()+1);let i=new Date().getTime();return n.getTime()-i>126144e3*1e3&&n.setUTCDate(n.getUTCDate()-1),Math.floor(n.getTime()/1e3)},Wd=class{params;isTestnet;_address;client;constructor(t,e){this.params=t,this._address=e?.address??new Mc({id:t?.addressesId||Ec,network:t?.networkType}),this.isTestnet=t.networkType?t.networkType==="testnet":!1,this.client=t.client}async init(t=!1,e){t||!this._address.getAddresses()||!e?.getAddresses()?await this._address.read():this._address=e}parseSymbol(t){if(m_(t)){let e=t.slice(1).toLowerCase();return t.slice(0,1).toLowerCase()+g_(e)}return g_(t)}parseCoinType(t){let e=m_(t)?this.parseCoinName(t):t,n=this._address.get(`core.coins.${e}.id`)||cA[t]||void 0;if(!n)throw Error(`Coin ${t} is not supported`);if(t==="sui")return(0,js.normalizeStructTag)(`${n}::sui::SUI`);let i=[this._address.get("core.coins.usdc.id")??An.usdc,this._address.get("core.coins.usdt.id")??An.usdt,this._address.get("core.coins.eth.id")??An.eth,this._address.get("core.coins.btc.id")??An.btc,this._address.get("core.coins.sol.id")??An.sol,this._address.get("core.coins.apt.id")??An.apt],r=[this._address.get("core.coins.vsui.id")??p_.vsui];return i.includes(n)?`${n}::coin::COIN`:r.includes(n)?`${n}::cert::CERT`:`${n}::${e}::${e.toUpperCase()}`}parseMarketCoinType(t){let e=this._address.get("core.object")||ry,n=this.parseCoinType(t);return`${e}::reserve::MarketCoin<${n}>`}parseCoinNameFromType(t){let e=(0,js.normalizeStructTag)(t),n=/((0x[^:]+::[^:]+::[^<>]+))(?![^<>]*<)/,i=t.match(n),r=t.includes("reserve::MarketCoin");e=i?.[1]||t;let o={[`${this._address.get("core.coins.usdc.id")??An.usdc}::coin::COIN`]:"usdc",[`${this._address.get("core.coins.usdt.id")??An.usdt}::coin::COIN`]:"usdt",[`${this._address.get("core.coins.eth.id")??An.eth}::coin::COIN`]:"eth",[`${this._address.get("core.coins.btc.id")??An.btc}::coin::COIN`]:"btc",[`${this._address.get("core.coins.sol.id")??An.sol}::coin::COIN`]:"sol",[`${this._address.get("core.coins.apt.id")??An.apt}::coin::COIN`]:"apt"},s={[`${this._address.get("core.coins.vsui.id")??p_.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=>sy[t];getBorrowIncentiveRewardCoinName=t=>ay[t];getCoinDecimal(t){return aA[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=js.SUI_TYPE_ARG,n){let i=n,r=[],o=0,s=!0,a=null;for(;s&&o<t;){let u=await this.client.getCoins({owner:i,coinType:e,cursor:a});u.data.sort((l,m)=>parseInt(m.balance,10)-parseInt(l.balance,10));for(let l=0;l<u.data.length&&(r.push({objectId:u.data[l].coinObjectId,digest:u.data[l].digest,version:u.data[l].version}),o+=parseInt(u.data[l].balance,10),!(o>=t));l++);a=u.nextCursor,s=u.hasNextPage}if(!r.length)throw new Error("No valid coins found for the transaction.");return r.map(u=>u.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,n){let i=e.map(s=>t.object(s)),r=i[0];i.length>1&&t.mergeCoins(r,i.slice(1));let[o]=t.splitCoins(r,[t.pure(n)]);return[o,r]}getUnlockAt(t,e){let n=Math.floor(new Date().getTime()/1e3),i=e?Math.max(e-n,0):0,r=0;if(i===0){let o=(t??1)*86400;r=Math.min(n+o,n+126144e3)}else{let o=Math.min(t?t*86400+i:i,126144e3);r=n+o}return _A(r)}},Hd=async(t,e)=>{let n=e,i=t.address.get("core.object")||ry,r=[],o=!1,s=null;do{let m=await t.client.getOwnedObjects({owner:n,filter:{StructType:`${i}::obligation::ObligationKey`},cursor:s});r.push(...m.data),m.hasNextPage&&m.nextCursor?(o=!0,s=m.nextCursor):o=!1}while(o);let a=r.map(m=>m?.data?.objectId).filter(m=>m!==void 0),u=await t.client.multiGetObjects({ids:a,options:{showContent:!0,showType:!0}}),l=[];for(let m=0;m<u.length;m++){let b=u[m].data.objectId,{content:v}=u[m].data;if(v&&"fields"in v){let T=v.fields,O=String(T.ownership.fields.of),P=await dy(t,O);l.push({id:O,keyId:b,locked:P})}}return l},dy=async(t,e)=>{let n=await t.client.getObject({id:e,options:{showContent:!0}}),i=!1;return n.data&&n?.data?.content?.dataType==="moveObject"&&"lock_key"in n.data.content.fields&&(i=!!n.data.content.fields.lock_key),i},yA=async(t,e,n)=>{let i=n||[...Dc],r=e,o=[],s=!1,a=null;do{let l=await t.client.getOwnedObjects({owner:r,filter:{MatchAny:i.map(m=>({StructType:`0x2::coin::Coin<${t.utils.parseCoinType(m)}>`}))},options:{showType:!0,showContent:!0},cursor:a});o.push(...l.data),l.hasNextPage&&l.nextCursor?(s=!0,a=l.nextCursor):s=!1}while(s);let u={};return o.map(l=>l.data).filter(l=>l!=null).forEach(l=>{let m=l.type;if(l.content&&"fields"in l.content){let b=l.content.fields,v=t.utils.parseCoinNameFromType(m);v&&(u[v]=It(u[v]??0).plus(b.balance).toNumber())}}),u},wA=async(t,e,n)=>{let i=n,r=t.utils.parseCoinType(e),o=[],s=!1,a=null;do{let l=await t.client.getOwnedObjects({owner:i,filter:{StructType:`0x2::coin::Coin<${r}>`},options:{showContent:!0},cursor:a});o.push(...l.data),l.hasNextPage&&l.nextCursor?(s=!0,a=l.nextCursor):s=!1}while(s);let u=0;return o.map(l=>l.data).filter(l=>l!=null).forEach(l=>{if(l.content&&"fields"in l.content){let m=l.content.fields;u=It(u).plus(m.balance).toNumber()}}),u},bA=async(t,e,n)=>{let i=n||[...Dc].map(l=>t.utils.parseMarketCoinName(l)),r=e,o=[],s=!1,a=null;do{let l=await t.client.getOwnedObjects({owner:r,filter:{MatchAny:i.map(m=>({StructType:`0x2::coin::Coin<${t.utils.parseMarketCoinType(m)}>`}))},options:{showType:!0,showContent:!0},cursor:a});o.push(...l.data),l.hasNextPage&&l.nextCursor?(s=!0,a=l.nextCursor):s=!1}while(s);let u={};return o.map(l=>l.data).filter(l=>l!=null).forEach(l=>{let m=l.type;if(l.content&&"fields"in l.content){let b=l.content.fields,v=t.utils.parseCoinNameFromType(m);v&&(u[v]=It(u[v]??0).plus(b.balance).toNumber())}}),u},vA=async(t,e,n)=>{let i=n,r=t.utils.parseMarketCoinType(e),o=[],s=!1,a=null;do{let l=await t.client.getOwnedObjects({owner:i,filter:{StructType:`0x2::coin::Coin<${r}>`},options:{showContent:!0},cursor:a});o.push(...l.data),l.hasNextPage&&l.nextCursor?(s=!0,a=l.nextCursor):s=!1}while(s);let u=0;return o.map(l=>l.data).filter(l=>l!=null).forEach(l=>{if(l.content&&"fields"in l.content){let m=l.content.fields;u=It(u).plus(m.balance).toNumber()}}),u},kA=async(t,e)=>{let n=`${t.address.get("core.packages.query.id")}::obligation_query::obligation_data`,i=new ly.TransactionBlock;return i.moveCall({target:n,arguments:[i.object(e)]}),(await t.client.devInspectTransactionBlock({transactionBlock:i,sender:t.walletAddress})).events[0].parsedJson},Xd=async(t,e)=>{let n=e,i=t.address.get("spool.object"),r=`${i}::spool_account::SpoolAccount`,o=[],s=!1,a=null;do{let b=await t.client.getOwnedObjects({owner:n,filter:{StructType:r},options:{showContent:!0,showType:!0},cursor:a});o.push(...b.data),b.hasNextPage&&b.nextCursor?(s=!0,a=b.nextCursor):s=!1}while(s);let u={seth:[],ssui:[],susdc:[],susdt:[],scetus:[],safsui:[],shasui:[],svsui:[]},l=Object.keys(u).reduce((b,v)=>{let T=t.utils.parseCoinName(v),O=t.utils.parseMarketCoinType(T),P={...b},M=`${i}::spool_account::SpoolAccount<${O}>`;return P[v]=M,P},{}),m=o.map(b=>b?.data?.objectId).filter(b=>b!==void 0);return(await t.client.multiGetObjects({ids:m,options:{showContent:!0,showType:!0}})).forEach(b=>{let v=b.data.objectId,T=b.data.type;if(b.data.content&&"fields"in b.data.content){let O=b.data.content.fields,P=String(O.spool_id),M=String(O.stake_type.fields.name),B=Number(O.stakes),E=Number(O.index),q=Number(O.points),K=Number(O.total_points);(0,Ne.normalizeStructTag)(T)===l.seth?u.seth.push({id:v,type:(0,Ne.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Ne.normalizeStructTag)(M),staked:B,index:E,points:q,totalPoints:K}):(0,Ne.normalizeStructTag)(T)===l.ssui?u.ssui.push({id:v,type:(0,Ne.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Ne.normalizeStructTag)(M),staked:B,index:E,points:q,totalPoints:K}):(0,Ne.normalizeStructTag)(T)===l.susdc?u.susdc.push({id:v,type:(0,Ne.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Ne.normalizeStructTag)(M),staked:B,index:E,points:q,totalPoints:K}):(0,Ne.normalizeStructTag)(T)===l.susdt?u.susdt.push({id:v,type:(0,Ne.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Ne.normalizeStructTag)(M),staked:B,index:E,points:q,totalPoints:K}):(0,Ne.normalizeStructTag)(T)===l.scetus?u.scetus.push({id:v,type:(0,Ne.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Ne.normalizeStructTag)(M),staked:B,index:E,points:q,totalPoints:K}):(0,Ne.normalizeStructTag)(T)===l.safsui?u.safsui.push({id:v,type:(0,Ne.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Ne.normalizeStructTag)(M),staked:B,index:E,points:q,totalPoints:K}):(0,Ne.normalizeStructTag)(T)===l.shasui?u.shasui.push({id:v,type:(0,Ne.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Ne.normalizeStructTag)(M),staked:B,index:E,points:q,totalPoints:K}):(0,Ne.normalizeStructTag)(T)===l.svsui&&u.svsui.push({id:v,type:(0,Ne.normalizeStructTag)(T),stakePoolId:P,stakeType:(0,Ne.normalizeStructTag)(M),staked:B,index:E,points:q,totalPoints:K})}}),u},__=async(t,e)=>{let n=t.address.get(`spool.pools.${e}.id`),i,r=await t.client.getObject({id:n,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 u=o.content.fields,l=Number(u.max_distributed_point),m=Number(u.distributed_point),b=Number(u.distributed_point_per_period),v=Number(u.point_distribution_time),T=Number(u.max_stakes),O=String(u.stake_type.fields.name),P=Number(u.stakes),M=Number(u.index),B=Number(u.created_at),E=Number(u.last_update);i={id:s,type:(0,Ne.normalizeStructTag)(a),maxPoint:l,distributedPoint:m,pointPerPeriod:b,period:v,maxStake:T,stakeType:(0,Ne.normalizeStructTag)(O),totalStaked:P,index:M,createdAt:B,lastUpdate:E}}}return i},y_=async(t,e)=>{let n=t.address.get(`spool.pools.${e}.rewardPoolId`),i,r=await t.client.getObject({id:n,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 u=o.content.fields,l=String(u.spool_id),m=Number(u.exchange_rate_numerator),b=Number(u.exchange_rate_denominator),v=Number(u.rewards),T=Number(u.claimed_rewards);i={id:s,type:(0,Ne.normalizeStructTag)(a),stakePoolId:l,ratioNumerator:m,ratioDenominator:b,rewards:v,claimedRewards:T}}}return i},CA=async(t,e,n,i)=>{let r=i||[...Ps],o=t.address.get("borrowIncentive.query"),s=t.address.get("borrowIncentive.incentiveAccounts"),a=`${o}::incentive_account_query::incentive_account_data`,u=new Zd.TransactionBlock;u.moveCall({target:a,arguments:[u.object(s),u.object(e)]});let l=(await t.client.devInspectTransactionBlock({transactionBlock:u,sender:n})).events[0].parsedJson,m={};return l.pool_records.forEach(b=>{let v=gA(b),{poolType:T}=v,O=t.utils.parseCoinNameFromType(T);r.length>=1&&r.includes(O)&&(m[O]=v)},{}),m},TA=async(t,e)=>{let n=e||[...Ps],i=t.address.get("borrowIncentive.query"),r=t.address.get("borrowIncentive.incentivePools"),o=new Zd.TransactionBlock,s=`${i}::incentive_pools_query::incentive_pools_data`;o.moveCall({target:s,arguments:[o.object(r)]});let a=(await t.client.devInspectTransactionBlock({transactionBlock:o,sender:t.walletAddress})).events[0].parsedJson,u={};for(let l=0;l<a.incentive_pools.length;l++){let m=a.incentive_pools[l],b={},v=pA(m),T=(0,Ud.normalizeStructTag)(m.pool_type.name),O=t.utils.parseCoinNameFromType(T);n.includes(O)&&(Object.entries(v.poolPoints).forEach(([P,M])=>{let B=(0,Ud.normalizeStructTag)(M.pointType),E=t.utils.parseCoinNameFromType(B),q=It(Math.floor(new Date().getTime()/1e3)-M.lastUpdate).dividedBy(M.period).toFixed(0),K=It.minimum(It(q).multipliedBy(M.distributedPointPerPeriod),It(M.points)),X=It(M.index).plus(K.dividedBy(M.weightedAmount).isFinite()?It(1e9).multipliedBy(K).dividedBy(M.weightedAmount):0);b[P]={points:M.points,coinDecimal:t.utils.getCoinDecimal(E),distributedPoint:M.distributedPoint,weightedAmount:M.weightedAmount,currentPointIndex:X.toNumber()}}),u[O]={coinName:O,symbol:t.utils.parseSymbol(O),coinType:T,points:b})}return u},SA=async(t,e)=>{let n=t.address.get(`core.coins.${e}.oracle.pyth.feedObject`),i=await t.client.getObject({id:n,options:{showContent:!0}});if(i.data){let r=i.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),u=Number(o.price_info.fields.price_feed.fields.price.fields.price.fields.magnitude),l=Number(o.price_info.fields.price_feed.fields.price.fields.price.fields.negative);return u*10**((a?-1:1)*s)*(l?-1:1)}}return 0},fy=async(t,e)=>{let n=e,i=`${t.address.get("vesca.id")}::ve_sca::VeScaKey`,r=[],o=!1,s=null;do{let a=await t.client.getOwnedObjects({owner:n,filter:{StructType:i},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)},AA=async(t,e)=>{let n=(await fy(t,e)).map(r=>r.objectId),i=[];for(let r=0;r<n.length;r++){let o=await hy(t,n[r]);o&&i.push(o)}return i},hy=async(t,e,n)=>{let i=t.address.get("vesca.tableId"),r=e||(await fy(t,n))[0].objectId,o,s=(await t.client.getDynamicFieldObject({parentId:i,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:It(a.locked_sca_amount).toNumber(),lockedScaCoin:It(a.locked_sca_amount).shiftedBy(-9).toNumber(),unlockAt:It(a.unlock_at).toNumber()}}return o},py=class{params;address;client;utils;walletAddress;constructor(t,e){this.params=t,this.address=e?.address??new Mc({id:t?.addressesId||Ec,network:t?.networkType}),this.client=t.client,this.utils=e?.utils??new Wd(this.params,{address:this.address}),this.walletAddress=t.walletAddress}async init(t=!1,e){t||!this.address.getAddresses()||!e?.getAddresses()?await this.address.read():this.address=e}async getObligations(t){return Hd(this,t)}async getCoinAmounts(t,e){return yA(this,t,e)}async getCoinAmount(t,e){return wA(this,t,e)}async getMarketCoinAmounts(t,e){return bA(this,t,e)}async getMarketCoinAmount(t,e){return vA(this,t,e)}async getPriceFromPyth(t){return SA(this,t)}async getAllStakeAccounts(t){return Xd(this,t)}async getStakeAccounts(t,e){return(await this.getAllStakeAccounts(e))[t]??[]}async getStakePools(t){let e=t??[...h_],n={};for(let i=0;i<e.length;i++){let r=e[i],o=await __(this,r);o&&(n[r]=o)}return n}async getStakePool(t){return __(this,t)}async getStakeRewardPools(t){let e=t??[...h_],n={};for(let i=0;i<e.length;i++){let r=await y_(this,e[i]);r&&(n[e[i]]=r)}return n}async getStakeRewardPool(t){return y_(this,t)}async getBorrowIncentiveAccounts(t,e,n){return CA(this,t,e||this.walletAddress,n)}async getObligationCoinNames(t){let e=await kA(this,t),n=e.collaterals.map(r=>`0x${r.type.name}`),i=e.debts.map(r=>`0x${r.type.name}`);return[...new Set([...n,...i])].map(r=>this.utils.parseCoinNameFromType(r))}},my=class{params;isTestnet;address;query;utils;client;walletAddress;constructor(t,e){this.params=t,this.address=e?.address??new Mc({id:t?.addressesId||Ec,network:t?.networkType}),this.query=e?.query??new py(t,{address:this.address}),this.utils=e?.utils??new Wd(this.params,{address:this.address,query:this.query}),this.client=t.client,this.walletAddress=(0,uy.normalizeSuiAddress)(t.walletAddress),this.isTestnet=t.networkType?t.networkType==="testnet":!1}async init(t=!1,e){t||!this.address.getAddresses()||!e?.getAddresses()?await this.address.read():this.address=e,await this.query.init(t,this.address),await this.utils.init(t,this.address)}createTxBlock(t){return new cy.TransactionBlock(t)}async selectCoin(t,e,n,i){let r=this.utils.parseCoinType(e),o=await this.utils.selectCoinIds(n,r,i),[s,a]=this.utils.takeAmountFromCoins(t,o,n);return{takeCoin:s,leftCoin:a}}async selectMarketCoin(t,e,n,i){let r=this.utils.parseMarketCoinType(e),o=await this.utils.selectCoinIds(n,r,i),[s,a]=this.utils.takeAmountFromCoins(t,o,n);return{takeCoin:s,leftCoin:a}}},wo=async(...t)=>{let[e,n,i]=t;if(t.length===3&&i&&typeof i=="string")return await hy(e.query,i)||void 0;let r=xn(n),o=await AA(e.query,r);if(o.length!==0)return o[0]},xA=async(t,e)=>{let n=t.address.get("borrowIncentive.id"),i=t.address.get("borrowIncentive.incentivePools"),r=t.address.get("vesca.id"),{client:o}=t,s=await o.getObject({id:i,options:{showContent:!0}});if(s.data?.content?.dataType!=="moveObject")return!1;let a=s.data.content.fields.ve_sca_bind.fields.id.id,u=`${n}::typed_id::TypedID<${r}::ve_sca::VeScaKey>`,l=await o.getDynamicFieldObject({parentId:a,name:{type:u,value:e}});return l.data?.content?.dataType!=="moveObject"?!1:l.data.content.fields.value.fields.id},yc=async(...t)=>{let[e,n,i,r]=t;if(t.length===4&&i&&r&&typeof i=="string"){let a=await dy(e.query,i);return{obligationId:i,obligationKey:r,obligationLocked:a}}let o=xn(n),s=await Hd(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}},IA=({builder:t,txBlock:e})=>{let n={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")},i={table:t.address.get("vesca.table"),treasury:t.address.get("vesca.treasury"),config:t.address.get("vesca.config")};return{stakeObligation:(r,o)=>{e.moveCall({target:`${n.borrowIncentivePkg}::user::stake`,arguments:[e.object(n.config),e.object(n.incentivePools),e.object(n.incentiveAccounts),e.object(o),e.object(r),e.object(n.obligationAccessStore),e.object(Is.SUI_CLOCK_OBJECT_ID)]})},stakeObligationWithVesca:(r,o,s)=>{e.moveCall({target:`${n.borrowIncentivePkg}::user::stake_with_ve_sca`,arguments:[e.object(n.config),e.object(n.incentivePools),e.object(n.incentiveAccounts),e.object(o),e.object(r),e.object(n.obligationAccessStore),e.object(i.config),e.object(i.treasury),e.object(i.table),e.object(s),e.object(Is.SUI_CLOCK_OBJECT_ID)]})},unstakeObligation:(r,o)=>{e.moveCall({target:`${n.borrowIncentivePkg}::user::unstake`,arguments:[e.object(n.config),e.object(n.incentivePools),e.object(n.incentiveAccounts),e.object(o),e.object(r),e.object(Is.SUI_CLOCK_OBJECT_ID)]})},claimBorrowIncentive:(r,o,s,a)=>{if(ay[s].includes(a)===!1)throw new Error(`Invalid reward coin name ${a}`);let u=t.utils.parseCoinType(a);return e.moveCall({target:`${n.borrowIncentivePkg}::user::redeem_rewards`,arguments:[e.object(n.config),e.object(n.incentivePools),e.object(n.incentiveAccounts),e.object(o),e.object(r),e.object(Is.SUI_CLOCK_OBJECT_ID)],typeArguments:[u]})}}},mo=({builder:t,txBlock:e})=>{let n=IA({builder:t,txBlock:e});return{normalMethod:n,stakeObligationQuick:async(i,r)=>{let{obligationId:o,obligationKey:s,obligationLocked:a}=await yc(t,e,i,r),u=!!e.blockData.transactions.find(l=>l.kind==="MoveCall"&&l.target===`${t.address.get("borrowIncentive.id")}::user::unstake`);(!a||u)&&n.stakeObligation(o,s)},unstakeObligationQuick:async(i,r)=>{let{obligationId:o,obligationKey:s,obligationLocked:a}=await yc(t,e,i,r);a&&n.unstakeObligation(o,s)},stakeObligationWithVeScaQuick:async(i,r,o)=>{let{obligationId:s,obligationKey:a,obligationLocked:u}=await yc(t,e,i,r),l=!!e.blockData.transactions.find(m=>m.kind==="MoveCall"&&(m.target===`${oA}::user::unstake`||m.target===`${t.address.get("borrowIncentive.id")}::user::unstake`));if(!u||l){let m=await wo(t,e,o);if(m){let b=await xA(t,m.keyId);!b||b===s?n.stakeObligationWithVesca(s,a,m.keyId):n.stakeObligation(s,a)}else n.stakeObligation(s,a)}},claimBorrowIncentiveQuick:async(i,r,o,s)=>{let{obligationId:a,obligationKey:u}=await yc(t,e,o,s);return n.claimBorrowIncentive(a,u,i,r)}}},OA={testnet:["https://hermes-beta.pyth.network"],mainnet:["https://hermes.pyth.network","https://scallop.rpc.p2p.world"]},Od=async(t,e,n)=>{let i=n??[...new Set([...Dc,...oy])],r=t.isTestnet?["pyth"]:["pyth"];if(r.includes("pyth")){let s=new jc.SuiPythClient(t.client,t.address.get("core.oracles.pyth.state"),t.address.get("core.oracles.pyth.wormholeState")),a=i.map(l=>t.address.get(`core.coins.${l}.oracle.pyth.feed`)),u=t.params.pythEndpoints??OA[t.isTestnet?"testnet":"mainnet"];for(let l=0;l<u.length;l++)try{let m=await new jc.SuiPriceServiceConnection(u[l]).getPriceFeedsUpdateData(a);await s.updatePriceFeeds(e,m,a);break}catch(m){console.warn(`Failed to update price feeds with endpoint ${u[l]}: ${m}`)}}let o=[...new Set(i)];for(let s=0;s<o.length;s++)await PA(t,e,o[s],r)},PA=async(t,e,n,i)=>{let r=t.utils.parseCoinType(n);EA(e,i,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.${n}.oracle.pyth.feedObject`),t.address.get("core.packages.switchboard.id"),t.address.get("core.oracles.switchboard.registry"),t.address.get(`core.coins.${n}.oracle.switchboard`),t.address.get("core.packages.supra.id"),t.address.get("core.oracles.supra.registry"),t.address.get("core.oracles.supra.holder"),r)},EA=(t,e,n,i,r,o,s,a,u,l,m,b,v,T,O)=>{let P=DA(t,n,i,O);return e.includes("pyth")&&NA(t,r,P,s,a,o,O),e.includes("switchboard")&&BA(t,u,P,m,l,O),e.includes("supra")&&jA(t,b,P,T,v,O),MA(t,n,i,P,O),t},DA=(t,e,n,i)=>{let r=typeof n=="string"?t.object(n):n,o=`${e}::x_oracle::price_update_request`,s=[i];return t.moveCall({target:o,arguments:[r],typeArguments:s})},MA=(t,e,n,i,r)=>{let o=`${e}::x_oracle::confirm_price_update_request`,s=[r],a=typeof n=="string"?t.object(n):n;return t.moveCall({target:o,arguments:[a,i,t.object(Fs.SUI_CLOCK_OBJECT_ID)],typeArguments:s}),t},jA=(t,e,n,i,r,o)=>{let s=typeof i=="string"?t.object(i):i,a=typeof r=="string"?t.object(r):r;t.moveCall({target:`${e}::rule::set_price`,arguments:[n,s,a,t.object(Fs.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},BA=(t,e,n,i,r,o)=>{let s=typeof i=="string"?t.object(i):i,a=typeof r=="string"?t.object(r):r;t.moveCall({target:`${e}::rule::set_price`,arguments:[n,s,a,t.object(Fs.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},NA=(t,e,n,i,r,o,s)=>{let a=typeof n=="string"?t.object(n):n,u=typeof i=="string"?t.object(i):i,l=typeof r=="string"?t.object(r):r,m=typeof o=="string"?t.object(o):o;t.moveCall({target:`${e}::rule::set_price`,arguments:[a,u,l,m,t.object(Fs.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},wc=async(...t)=>{let[e,n,i,r]=t;if(t.length===3&&i)return{obligationId:i};if(t.length===4&&i&&r)return{obligationId:i,obligationKey:r};let o=xn(e),s=await Hd(n.query,o);if(s.length===0)throw new Error(`No obligation found for sender ${o}`);return{obligationId:s[0].id,obligationKey:s[0].keyId}},FA=({builder:t,txBlock:e})=>{let n={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:`${n.protocolPkg}::open_obligation::open_obligation`,arguments:[e.pure(n.version)]}),returnObligation:(i,r)=>e.moveCall({target:`${n.protocolPkg}::open_obligation::return_obligation`,arguments:[e.object(n.version),e.object(i),e.object(r)]}),openObligationEntry:()=>e.moveCall({target:`${n.protocolPkg}::open_obligation::open_obligation_entry`,arguments:[e.object(n.version)]}),addCollateral:(i,r,o)=>{let s=t.utils.parseCoinType(o);return e.moveCall({target:`${n.protocolPkg}::deposit_collateral::deposit_collateral`,arguments:[e.object(n.version),e.object(i),e.object(n.market),typeof r!="string"?r:e.pure(r)],typeArguments:[s]})},takeCollateral:(i,r,o,s)=>{let a=t.utils.parseCoinType(s);return e.moveCall({target:`${n.protocolPkg}::withdraw_collateral::withdraw_collateral`,arguments:[e.object(n.version),e.object(i),e.object(r),e.object(n.market),e.object(n.coinDecimalsRegistry),e.pure(o),e.object(n.xOracle),e.object(mi.SUI_CLOCK_OBJECT_ID)],typeArguments:[a]})},deposit:(i,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${n.protocolPkg}::mint::mint`,arguments:[e.object(n.version),e.object(n.market),typeof i!="string"?i:e.pure(i),e.object(mi.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},depositEntry:(i,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${n.protocolPkg}::mint::mint_entry`,arguments:[e.object(n.version),e.object(n.market),typeof i!="string"?i:e.pure(i),e.object(mi.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},withdraw:(i,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${n.protocolPkg}::redeem::redeem`,arguments:[e.object(n.version),e.object(n.market),typeof i!="string"?i:e.pure(i),e.object(mi.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},withdrawEntry:(i,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${n.protocolPkg}::redeem::redeem_entry`,arguments:[e.object(n.version),e.object(n.market),typeof i!="string"?i:e.pure(i),e.object(mi.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},borrow:(i,r,o,s)=>{let a=t.utils.parseCoinType(s);return e.moveCall({target:`${n.protocolPkg}::borrow::borrow`,arguments:[e.object(n.version),e.object(i),e.object(r),e.object(n.market),e.object(n.coinDecimalsRegistry),e.pure(o),e.object(n.xOracle),e.object(mi.SUI_CLOCK_OBJECT_ID)],typeArguments:[a]})},borrowEntry:(i,r,o,s)=>{let a=t.utils.parseCoinType(s);return e.moveCall({target:`${n.protocolPkg}::borrow::borrow_entry`,arguments:[e.object(n.version),e.object(i),e.object(r),e.object(n.market),e.object(n.coinDecimalsRegistry),e.pure(o),e.object(n.xOracle),e.object(mi.SUI_CLOCK_OBJECT_ID)],typeArguments:[a]})},repay:(i,r,o)=>{let s=t.utils.parseCoinType(o);return e.moveCall({target:`${n.protocolPkg}::repay::repay`,arguments:[e.object(n.version),e.object(i),e.object(n.market),typeof r!="string"?r:e.pure(r),e.object(mi.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},borrowFlashLoan:(i,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${n.protocolPkg}::flash_loan::borrow_flash_loan`,arguments:[e.object(n.version),e.object(n.market),e.pure(i)],typeArguments:[o]})},repayFlashLoan:(i,r,o)=>{let s=t.utils.parseCoinType(o);return e.moveCall({target:`${n.protocolPkg}::flash_loan::repay_flash_loan`,arguments:[e.object(n.version),e.object(n.market),e.pure(i),e.object(r)],typeArguments:[s]})}}},Ri=({builder:t,txBlock:e})=>{let n=FA({builder:t,txBlock:e});return{normalMethod:n,addCollateralQuick:async(i,r,o)=>{let s=xn(e),{obligationId:a}=await wc(e,t,o);if(r==="sui"){let[u]=e.splitCoins(e.gas,[i]);n.addCollateral(a,u,r)}else{let{leftCoin:u,takeCoin:l}=await t.selectCoin(e,r,i,s);n.addCollateral(a,l,r),e.transferObjects([u],s)}},takeCollateralQuick:async(i,r,o,s)=>{let a=await wc(e,t,o,s),u=await t.query.getObligationCoinNames(a.obligationId);return await Od(t,e,u),n.takeCollateral(a.obligationId,a.obligationKey,i,r)},depositQuick:async(i,r,o)=>{if(r==="sui"){let[u]=e.splitCoins(e.gas,[i]);return n.deposit(u,r)}let{leftCoin:s,takeCoin:a}=await t.selectCoin(e,r,i,o);return e.transferObjects([s],o),n.deposit(a,r)},withdrawQuick:async(i,r)=>{let o=xn(e),s=t.utils.parseMarketCoinName(r),{leftCoin:a,takeCoin:u}=await t.selectMarketCoin(e,s,i,o);return e.transferObjects([a],o),n.withdraw(u,r)},borrowQuick:async(i,r,o,s)=>{let a=await wc(e,t,o,s),u=[...await t.query.getObligationCoinNames(a.obligationId),r];return await Od(t,e,u),n.borrow(a.obligationId,a.obligationKey,i,r)},repayQuick:async(i,r,o,s)=>{let a=await wc(e,t,o);if(r==="sui"){let[m]=e.splitCoins(e.gas,[i]);return n.repay(a.obligationId,m,r)}let{leftCoin:u,takeCoin:l}=await t.selectCoin(e,r,i,s);return e.transferObjects([u],s),n.repay(a.obligationId,l,r)},updateAssetPricesQuick:async i=>Od(t,e,i)}},w_=async(...t)=>{let[e,n,i,r]=t;if(t.length===4&&r)return[r];let o=xn(n),s=await Xd(e.query,o);if(s[i].length===0)throw new Error(`No stake account id found for sender ${o}`);return s[i].map(a=>a.id)},RA=async(...t)=>{let[e,n,i,r]=t,o=xn(n),s=await Xd(e.query,o);if(s[i].length===0)throw new Error(`No stake account found for sender ${o}`);return r?s[i].filter(a=>a.id===r):s[i]},qA=({builder:t,txBlock:e})=>{let n={spoolPkg:t.address.get("spool.id")};return{createStakeAccount:i=>{let r=t.utils.parseMarketCoinType(i),o=t.address.get(`spool.pools.${i}.id`);return e.moveCall({target:`${n.spoolPkg}::user::new_spool_account`,arguments:[e.object(o),e.object(Os.SUI_CLOCK_OBJECT_ID)],typeArguments:[r]})},stake:(i,r,o)=>{let s=t.utils.parseMarketCoinType(o),a=t.address.get(`spool.pools.${o}.id`);e.moveCall({target:`${n.spoolPkg}::user::stake`,arguments:[e.object(a),e.object(i),typeof r=="string"?e.pure(r):r,e.object(Os.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},unstake:(i,r,o)=>{let s=t.utils.parseMarketCoinType(o),a=t.address.get(`spool.pools.${o}.id`);return e.moveCall({target:`${n.spoolPkg}::user::unstake`,arguments:[e.object(a),e.object(i),e.pure(r),e.object(Os.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},claim:(i,r)=>{let o=t.address.get(`spool.pools.${r}.id`),s=t.address.get(`spool.pools.${r}.rewardPoolId`),a=t.utils.parseMarketCoinType(r),u=sy[r],l=t.utils.parseCoinType(u);return e.moveCall({target:`${n.spoolPkg}::user::redeem_rewards`,arguments:[e.object(o),e.object(s),e.object(i),e.object(Os.SUI_CLOCK_OBJECT_ID)],typeArguments:[a,l]})}}},bc=({builder:t,txBlock:e})=>{let n=qA({builder:t,txBlock:e});return{normalMethod:n,stakeQuick:async(i,r,o)=>{let s=xn(e),a=await w_(t,e,r,o),u=t.utils.parseMarketCoinType(r);if(typeof i=="number"){let l=await t.utils.selectCoinIds(i,u,s),[m,b]=t.utils.takeAmountFromCoins(e,l,i);n.stake(a[0],m,r),e.transferObjects([b],s)}else n.stake(a[0],i,r)},unstakeQuick:async(i,r,o)=>{let s=i,a=await RA(t,e,r,o),u=[];for(let l=0;l<a.length;l++){if(a[l].staked===0)continue;let m=Math.min(s,a[l].staked),b=n.unstake(a[l].id,m,r);if(u.push(b),s-=m,s===0)break}return u},claimQuick:async(i,r)=>{let o=await w_(t,e,i,r),s=[];return o.forEach(a=>{let u=n.claim(a,i);s.push(u)}),s}}},LA=({builder:t,txBlock:e})=>{let n={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:(i,r)=>e.moveCall({target:`${n.pkgId}::ve_sca::mint_ve_sca_key`,arguments:[e.object(n.config),e.object(n.table),e.object(n.treasury),typeof i=="string"?e.pure(i):i,e.pure(r),e.object(bo.SUI_CLOCK_OBJECT_ID)]}),extendLockPeriod:(i,r)=>{e.moveCall({target:`${n.pkgId}::ve_sca::extend_lock_period`,arguments:[e.object(n.config),e.object(i),e.object(n.table),e.object(n.treasury),e.pure(r),e.object(bo.SUI_CLOCK_OBJECT_ID)]})},extendLockAmount:(i,r)=>{e.moveCall({target:`${n.pkgId}::ve_sca::lock_more_sca`,arguments:[e.object(n.config),e.object(i),e.object(n.table),e.object(n.treasury),typeof r=="string"?e.pure(r):r,e.object(bo.SUI_CLOCK_OBJECT_ID)]})},renewExpiredVeSca:(i,r,o)=>{e.moveCall({target:`${n.pkgId}::ve_sca::renew_expired_ve_sca`,arguments:[e.object(n.config),e.object(i),e.object(n.table),e.object(n.treasury),typeof r=="string"?e.pure(r):r,e.pure(o),e.object(bo.SUI_CLOCK_OBJECT_ID)]})},redeemSca:i=>e.moveCall({target:`${n.pkgId}::ve_sca::redeem`,arguments:[e.object(n.config),e.object(i),e.object(n.table),e.object(n.treasury),e.object(bo.SUI_CLOCK_OBJECT_ID)]})}},Ss=({builder:t,txBlock:e})=>{let n=LA({builder:t,txBlock:e});return{normalMethod:n,lockScaQuick:async(i,r,o=!0)=>{let s=xn(e),a=await wo(t,e),u,l=[];if(i!==void 0&&typeof i=="number"){let T=await t.utils.selectCoinIds(i,xd,s),[O,P]=t.utils.takeAmountFromCoins(e,T,i);u=O,l.push(P)}else u=i;let m=t.utils.getUnlockAt(r,a?.unlockAt);o&&uA(i,r,m,a?.unlockAt),console.log(new Date(m*1e3).toLocaleString("en-CA",{hour12:!0}));let b=!a?.unlockAt,v=!b&&a.unlockAt*1e3<=new Date().getTime();if(b||v){if(u)if(b){let T=n.lockSca(u,m);l.push(T)}else{if(a.lockedScaAmount!==0){let T=n.redeemSca(a.keyId);l.push(T)}n.renewExpiredVeSca(a.keyId,u,m)}}else u&&r?(n.extendLockPeriod(a.keyId,m),n.extendLockAmount(a.keyId,u)):r?n.extendLockPeriod(a.keyId,m):u&&n.extendLockAmount(a.keyId,u);l.length>0&&e.transferObjects(l,s)},extendLockPeriodQuick:async(i,r,o=!0)=>{let s=await wo(t,e,r),a=t.utils.getUnlockAt(i);o&&lA(i,a,s?.unlockAt),s&&n.extendLockPeriod(s.keyId,a)},extendLockAmountQuick:async(i,r,o=!0)=>{let s=xn(e),a=await wo(t,e,r);if(o&&dA(i,a?.unlockAt),a){let u=await t.utils.selectCoinIds(i,xd,s),[l,m]=t.utils.takeAmountFromCoins(e,u,i);n.extendLockAmount(a.keyId,l),e.transferObjects([m],s)}},renewExpiredVeScaQuick:async(i,r,o,s=!0)=>{let a=xn(e),u=await wo(t,e,o),l=t.utils.getUnlockAt(r,u?.unlockAt);if(s&&fA(i,r,u?.unlockAt),u){let m=[];if(u.lockedScaAmount!==0){let O=n.redeemSca(u.keyId);m.push(O)}let b=await t.utils.selectCoinIds(i,xd,a),[v,T]=t.utils.takeAmountFromCoins(e,b,i);m.push(T),n.renewExpiredVeSca(u.keyId,v,l),e.transferObjects(m,a)}},redeemScaQuick:async i=>{let r=xn(e),o=await wo(t,e,i);if(Ns(o?.unlockAt),o){let s=n.redeemSca(o.keyId);e.transferObjects([s],r)}}}},$t=class{params;client;address;builder;query;utils;walletAddress;constructor(t,e){this.params=t,this.client=t.client,this.address=e?.address??new Mc({id:t?.addressesId||Ec,network:t?.networkType}),this.query=e?.query??new py(t,{address:this.address}),this.utils=e?.utils??new Wd(t,{address:this.address,query:this.query}),this.builder=e?.builder??new my(t,{address:this.address,query:this.query,utils:this.utils}),this.walletAddress=(0,ny.normalizeSuiAddress)(t.walletAddress)}async init(t=!1){(t||!this.address.getAddresses())&&await this.address.read(),await this.builder.init(t,this.address),await this.query.init(t,this.address),await 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 n=e||this.walletAddress;return this.query.getStakeAccounts(t,n)}async getStakePool(t){return this.query.getStakePool(t)}async getStakeRewardPool(t){return this.query.getStakeRewardPool(t)}async openObligation(t){let e=new Ot.TransactionBlock,n=Ri({builder:this.builder,txBlock:e}),i=t||this.walletAddress;return e.setSender(i),n.normalMethod.openObligationEntry(),e}async depositCollateral(t,e,n,i){let r=new Ot.TransactionBlock,o=i||this.walletAddress;r.setSender(o);let s=Ri({builder:this.builder,txBlock:r}),a=await this.query.getObligations(o),u=n||a?.[0]?.id;if(u)await s.addCollateralQuick(e,t,u);else{let[l,m,b]=s.normalMethod.openObligation();await s.addCollateralQuick(e,t,l),s.normalMethod.returnObligation(l,b),r.transferObjects([m],o)}return r}async withdrawCollateral(t,e,n,i,r){let o=new Ot.TransactionBlock,s=Ri({builder:this.builder,txBlock:o}),a=r||this.walletAddress;o.setSender(a);let u=await s.takeCollateralQuick(e,t,n,i);return o.transferObjects([u],a),o}async deposit(t,e,n){let i=new Ot.TransactionBlock,r=Ri({builder:this.builder,txBlock:i}),o=n||this.walletAddress;i.splitCoins(i.gas,[e]),i.setSender(o);let s=await r.depositQuick(e,t,n);return i.transferObjects([s],o),i}async withdraw(t,e,n){let i=new Ot.TransactionBlock,r=n||this.walletAddress,o=Ri({builder:this.builder,txBlock:i});i.setSender(r);let s=await o.withdrawQuick(e,t);return i.transferObjects([s],r),i}async borrow(t,e,n,i,r){let o=new Ot.TransactionBlock,s=Ri({builder:this.builder,txBlock:o}),a=mo({builder:this.builder,txBlock:o}),u=r||this.walletAddress;o.setSender(u);let l=Ps.includes(t);l&&await a.unstakeObligationQuick(n,i);let m=await s.borrowQuick(e,t,n,i);return o.transferObjects([m],u),l&&await a.stakeObligationQuick(n,i),o}async borrowWithBoost(t,e,n,i,r,o){let s=new Ot.TransactionBlock,a=Ri({builder:this.builder,txBlock:s}),u=mo({builder:this.builder,txBlock:s}),l=o||this.walletAddress;s.setSender(l);let m=Ps.includes(t);m&&await u.unstakeObligationQuick(n,i);let b=await a.borrowQuick(e,t,n,i);return s.transferObjects([b],l),m&&await u.stakeObligationWithVeScaQuick(n,i,r),s}async repay(t,e,n,i,r){let o=new Ot.TransactionBlock,s=Ri({builder:this.builder,txBlock:o}),a=mo({builder:this.builder,txBlock:o}),u=r||this.walletAddress;o.setSender(u);let l=Ps.includes(t);return l&&await a.unstakeObligationQuick(n,i),await s.repayQuick(e,t,n),l&&await a.stakeObligationQuick(n,i),o}async createStakeAccount(t,e){let n=new Ot.TransactionBlock,i=bc({builder:this.builder,txBlock:n}),r=e||this.walletAddress;n.setSender(r);let o=i.normalMethod.createStakeAccount(t);return n.transferObjects([o],r),n}async stake(t,e,n,i){let r=new Ot.TransactionBlock,o=bc({builder:this.builder,txBlock:r}),s=i||this.walletAddress;r.setSender(s);let a=await this.query.getStakeAccounts(t,s),u=n||a[0].id;if(u)await o.stakeQuick(e,t,u);else{let l=o.normalMethod.createStakeAccount(t);await o.stakeQuick(e,t,l),r.transferObjects([l],s)}return r}async unstake(t,e,n,i){let r=new Ot.TransactionBlock,o=bc({builder:this.builder,txBlock:r}),s=i||this.walletAddress;r.setSender(s);let a=await o.unstakeQuick(e,t,n);return r.transferObjects(a,s),r}async claim(t,e,n){let i=new Ot.TransactionBlock,r=bc({builder:this.builder,txBlock:i}),o=n||this.walletAddress;i.setSender(o);let s=await r.claimQuick(t,e);return i.transferObjects(s,o),i}async stakeObligation(t,e,n){let i=this.builder.createTxBlock(),r=mo({builder:this.builder,txBlock:i}),o=n||this.walletAddress;return i.setSender(o),await r.stakeObligationQuick(t,e),i}async unstakeObligation(t,e,n){let i=this.builder.createTxBlock(),r=mo({builder:this.builder,txBlock:i}),o=n||this.walletAddress;return i.setSender(o),await r.unstakeObligationQuick(t,e),i}async claimBorrowIncentive(t,e,n,i){let r=new Ot.TransactionBlock,o=mo({builder:this.builder,txBlock:r}),s=i||this.walletAddress;r.setSender(s);let a=await this.query.getBorrowIncentiveAccounts(e,s,[t]),u=await TA(this.query,[t]);if(!a[t])throw new Error(`No incentive account found for ${t}`);let l=[];for(let m=0;m<Id.length;m++){let b=Id[m],v=a[t].pointList[b],T=u[t].points[b];if(v===void 0||T===void 0||this.calculateAvailableClaimCoin(v,T).isZero())continue;let O=await o.claimBorrowIncentiveQuick(t,Id[m],e,n);l.push(O)}return r.transferObjects(l,r.pure(s)),r}async stakeSca(t,e,n){let i=new Ot.TransactionBlock,r=Ss({builder:this.builder,txBlock:i}),o=n||this.walletAddress;return i.setSender(o),await r.lockScaQuick(t,e),i}async stakeMoreSca(t,e,n){let i=new Ot.TransactionBlock,r=Ss({builder:this.builder,txBlock:i}),o=n||this.walletAddress;return i.setSender(o),await r.extendLockAmountQuick(t,e),i}async extendStakeScaLockPeriod(t,e,n){let i=new Ot.TransactionBlock,r=Ss({builder:this.builder,txBlock:i}),o=n||this.walletAddress;return i.setSender(o),await r.extendLockPeriodQuick(t,e),i}async renewExpiredStakeSca(t,e,n,i){let r=new Ot.TransactionBlock,o=Ss({builder:this.builder,txBlock:r}),s=i||this.walletAddress;return r.setSender(s),await o.renewExpiredVeScaQuick(t,e,n),r}async withdrawUnlockedSca(t,e){let n=new Ot.TransactionBlock,i=Ss({builder:this.builder,txBlock:n}),r=e||this.walletAddress;return n.setSender(r),await i.redeemScaQuick(t),n}calculateAvailableClaimCoin(t,e){let n=new It(t.weightedAmount),i=e.currentPointIndex?It(e.currentPointIndex-t.index).dividedBy(1e9):1;return n.multipliedBy(i).plus(t.points).shiftedBy(-1*e.coinDecimal)}},UA=class gy extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await n.init(),n.borrow(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new gy(e)}},$A=class _y extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await n.init(),n.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 _y(e)}},KA=class yy extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await n.init(),n.claimBorrowIncentive(this.data.coinName,this.data.obligationId,this.data.obligationKeyId,e.account.address)}static fromData(e){return new yy(e)}},zA=class wy extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await n.init(),n.claim(this.data.coinName)}static fromData(e){return new wy(e)}},VA=class by extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await n.init(),n.depositCollateral(this.data.collateralCoinName,Number(this.data.amount),this.data.obligationId,e.account.address)}static fromData(e){return new by(e)}},GA=class vy extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await n.init(),n.extendStakeScaLockPeriod(this.data.lockPeriodInDays,this.data.vescaKey,e.account.address)}static fromData(e){return new vy(e)}},WA=class ky extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=e.network.split(":")[1],i=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:n});return await i.init(),i.openObligation()}static fromData(e){return new ky(e)}},HA=class Cy extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await n.init(),n.renewExpiredStakeSca(this.data.amount,this.data.lockPeriodInDays,this.data.vescaKey,e.account.address)}static fromData(e){return new Cy(e)}},XA=class Ty extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await n.init(),n.repay(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new Ty(e)}},ZA=class Sy extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await n.init(),n.stakeMoreSca(this.data.amount,this.data.vescaKey,e.account.address)}static fromData(e){return new Sy(e)}},JA=class Ay extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await n.init(),n.stakeSca(this.data.amount,this.data.lockPeriodInDays,e.account.address)}static fromData(e){return new Ay(e)}},YA=class xy extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await n.init(),n.stake(this.data.marketCoinName,Number(this.data.amount),void 0,e.account.address)}static fromData(e){return new xy(e)}},QA=class Iy extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=e.network.split(":")[1],i=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:n});return await i.init(),i.deposit(this.data.coinName,Number(this.data.amount),e.account.address)}static fromData(e){return new Iy(e)}},ex=class Oy extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await n.init(),n.unstake(this.data.marketCoinName,Number(this.data.amount),void 0,e.account.address)}static fromData(e){return new Oy(e)}},tx=class Py extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await n.init(),n.withdrawCollateral(this.data.collateralCoinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new Py(e)}},nx=class Ey extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=e.network.split(":")[1],i=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:n});return await i.init(),i.withdraw(this.data.coinName,Number(this.data.amount),e.account.address)}static fromData(e){return new Ey(e)}},ix=class Dy extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new $t({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await n.init(),n.withdrawUnlockedSca(this.data.vescaKey,e.account.address)}static fromData(e){return new Dy(e)}},rx=class{application="scallop";async deserialize(t){let e=new my({client:t.suiClient,walletAddress:t.account.address,networkType:t.network.split(":")[1]});await e.init();let{transactionBlock:n}=t,i=new iA(n,e.address.get("core.packages.protocol.id")).decode();return{txType:ey.TransactionType.Other,txSubType:i.type,intentionData:i.intentionData}}async build(t){let{suiClient:e,account:n,network:i}=t,r;switch(t.txSubType){case"SupplyLending":r=QA.fromData(t.intentionData);break;case"WithdrawLending":r=nx.fromData(t.intentionData);break;case"Borrow":r=UA.fromData(t.intentionData);break;case"Repay":r=XA.fromData(t.intentionData);break;case"DepositCollateral":r=VA.fromData(t.intentionData);break;case"WithdrawCollateral":r=tx.fromData(t.intentionData);break;case"OpenObligation":r=WA.fromData(t.intentionData);break;case"StakeSpool":r=YA.fromData(t.intentionData);break;case"UnstakeSpool":r=ex.fromData(t.intentionData);break;case"ClaimBorrowReward":r=KA.fromData(t.intentionData);break;case"ClaimSupplyReward":r=zA.fromData(t.intentionData);break;case"BorrowWithBoost":r=$A.fromData(t.intentionData);break;case"StakeSca":r=JA.fromData(t.intentionData);break;case"StakeMoreSca":r=ZA.fromData(t.intentionData);break;case"ExtendStakeScaPeriod":r=GA.fromData(t.intentionData);break;case"RenewExpStakePeriod":r=HA.fromData(t.intentionData);break;case"WithdrawStakedSca":r=ix.fromData(t.intentionData);break;default:throw new Error("not implemented")}return r.build({suiClient:e,account:n,network:i})}},go={PackageId:"0x9632f61a796fc54952d9151d80b319e066cba5498a27b495c99e113db09726b1"},ox=class{constructor(t){this.txb=t}get transactions(){return this.txb.blockData.transactions}decode(t){if(this.isAddLiquidityTransaction())return this.decodeAddLiquidity();if(this.isIncreaseLiquidityTransaction())return this.decodeIncreaseLiquidity(t);if(this.isDecreaseLiquidityTransaction())return this.decodeDecreaseLiquidity(t);if(this.isCollectFeeLiquidityTransaction())return this.decodeCollectFeeLiquidity();if(this.isCollectRewardLiquidityTransaction())return this.decodeCollectRewardLiquidity();if(this.isBurnTransaction())return this.decodeCollectRewardLiquidity();throw new Error("Unknown transaction type")}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isAddLiquidityTransaction(){return!!this.getMoveCallTransaction(`${go.PackageId}::position_manager::mint`)}isIncreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${go.PackageId}::position_manager::increase_liquidity`)}isDecreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${go.PackageId}::position_manager::decrease_liquidity`)}isCollectFeeLiquidityTransaction(){return!!this.getMoveCallTransaction(`${go.PackageId}::position_manager::collect`)}isCollectRewardLiquidityTransaction(){return!!this.getMoveCallTransaction(`${go.PackageId}::position_manager::collect`)}isBurnTransaction(){return!!this.getMoveCallTransaction(`${go.PackageId}::position_manager::burn`)}decodeAddLiquidity(){console.log(this.helper,"this.helper");let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeInputAddress(12),n=this.helper.decodeInputU64(8),i=this.helper.decodeInputU64(9),r=this.helper.decodeInputU32(4),o=this.helper.decodeInputU32(6);return{txType:wr.TransactionType.Other,type:"AddLiquidity",intentionData:{pool:t,slippage:5,address:e,amountA:n,amountB:i,tickLower:r,tickUpper:o}}}decodeIncreaseLiquidity(t){let e=this.helper.decodeSharedObjectId(0),n=this.helper.decodeSharedObjectId(4),i=this.helper.decodeInputU64(5),r=this.helper.decodeInputU64(6);return{txType:wr.TransactionType.Other,type:"IncreaseLiquidity",intentionData:{pool:e,slippage:5,address:t,amountA:i,amountB:r,nft:n}}}decodeDecreaseLiquidity(t){let e=this.helper.decodeSharedObjectId(0),n=this.helper.decodeSharedObjectId(2),i=this.helper.decodeInputU64(3),r=this.helper.decodeInputU64(4),o=this.helper.decodeInputU64(5);return{txType:wr.TransactionType.Other,type:"AddLiquidity",intentionData:{pool:e,decreaseLiquidity:i,nft:n,amountA:r,amountB:o,slippage:3,address:t}}}decodeCollectFeeLiquidity(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2),n=this.helper.decodeInputAddress(5),i=this.helper.decodeInputU64(3),r=this.helper.decodeInputU64(4);return{txType:wr.TransactionType.Other,type:"CollectFee",intentionData:{pool:t,address:n,collectAmountA:i,collectAmountB:r,nft:e}}}decodeCollectRewardLiquidity(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2),n=this.helper.decodeInputAddress(5);return{txType:wr.TransactionType.Other,type:"CollectReward",intentionData:{pool:t,address:n,rewardAmounts:[0,0,0],nft:e}}}decodeBurnLiquidity(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2);return{txType:wr.TransactionType.Other,type:"Burn",intentionData:{pool:t,nft:e}}}get helper(){console.log(this.transactions,"this.transactions");let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith("")&&e.target!=="0x2::coin::zero");return console.log(t,this.txb,"this.txb"),new b_(t,this.txb)}get helpers(){console.log(this.transactions,"this.transactions");let t=this.transactions.filter(e=>e.kind==="MoveCall"&&e.target.startsWith("")&&e.target!=="0x2::coin::zero");return console.log(t,this.txb,"this.txb"),t.map(e=>new b_(e,this.txb))}},b_=class Sc{constructor(e,n){this.moveCall=e,this.txb=n}decodeSharedObjectId(e){let n=this.getInputParam(e);return Sc.getSharedObjectId(n)}decodeOwnedObjectId(e){let n=this.getInputParam(e);return Sc.getOwnedObjectId(n)}decodeInputU128(e){let n=this.decodePureArg(e,"u128");return Number(n)}decodeInputU64(e){let n=this.decodePureArg(e,"u64");return Number(n)}decodeInputU32(e){let n=this.decodePureArg(e,"u32");return Number(n)}decodeInputU8(e){let n=this.decodePureArg(e,"u8");return Number(n)}decodeInputAddress(e){let n=this.decodePureArg(e,"address");return(0,zi.normalizeSuiAddress)(n)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,n){let i=this.getInputParam(e);return Sc.getPureInputValue(i,n)}getInputParam(e){let n=this.moveCall.arguments[e];if(n.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[n.index]}static getPureInputValue(e,n){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let i=e.value.Pure;return $d.bcs.de(n,new Uint8Array(i))}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,zi.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,zi.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,zi.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,zi.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,n){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 i=e.value.Pure;return $d.bcs.de(n,new Uint8Array(i))}typeArg(e){return(0,zi.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},sx=class jy extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new Gt(e.network.replace("sui:",""),e.suiClient),{pool:i,address:r,amountA:o,amountB:s,slippage:a,tickLower:u,tickUpper:l,txb:m}=this.data;return n.pool.addLiquidity({pool:i,slippage:a,address:r,amountA:o,amountB:s,tickLower:u,tickUpper:l,txb:m})}static fromData(e){return new jy(e)}},ax=class By extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new Gt(e.network.replace("sui:",""),e.suiClient),{pool:i,nft:r,txb:o}=this.data;return n.nft.burn({pool:i,nft:r,txb:o})}static fromData(e){return new By(e)}},cx=class Ny extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new Gt(e.network.replace("sui:",""),e.suiClient),{pool:i,address:r,nft:o,collectAmountA:s,collectAmountB:a,txb:u}=this.data;return n.pool.collectFee({pool:i,address:r,collectAmountA:s,collectAmountB:a,nft:o,txb:u})}static fromData(e){return new Ny(e)}},ux=class Fy extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new Gt(e.network.replace("sui:",""),e.suiClient),{pool:i,address:r,nft:o,rewardAmounts:s,txb:a}=this.data;return n.pool.collectReward({pool:i,address:r,rewardAmounts:s,nft:o,txb:a})}static fromData(e){return new Fy(e)}},lx=class Ry extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new Gt(e.network.replace("sui:",""),e.suiClient),{fee:i,address:r,tickLower:o,tickUpper:s,sqrtPrice:a,slippage:u,coinTypeA:l,coinTypeB:m,amountA:b,amountB:v,txb:T}=this.data;return n.pool.createPool({fee:i,amountA:b,amountB:v,address:r,tickLower:o,tickUpper:s,sqrtPrice:a,slippage:u,coinTypeA:l,coinTypeB:m,txb:T})}static fromData(e){return new Ry(e)}},dx=class qy extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new Gt(e.network.replace("sui:",""),e.suiClient),{pool:i,address:r,amountA:o,amountB:s,slippage:a,nft:u,decreaseLiquidity:l,txb:m}=this.data;return n.pool.decreaseLiquidity({pool:i,slippage:a,address:r,amountA:o,amountB:s,nft:u,decreaseLiquidity:l,txb:m})}static fromData(e){return new qy(e)}},fx=class Ly extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new Gt(e.network.replace("sui:",""),e.suiClient),{pool:i,address:r,amountA:o,amountB:s,slippage:a,nft:u,txb:l}=this.data;return n.pool.increaseLiquidity({pool:i,slippage:a,address:r,amountA:o,amountB:s,nft:u,txb:l})}static fromData(e){return new Ly(e)}},hx=class Uy extends le{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let n=new Gt(e.network.replace("sui:",""),e.suiClient),{pool:i,address:r,amountA:o,amountB:s,slippage:a,nft:u,decreaseLiquidity:l,collectAmountA:m,collectAmountB:b,rewardAmounts:v,txb:T}=this.data;return n.pool.removeLiquidity({pool:i,decreaseLiquidity:l,nft:u,amountA:o,amountB:s,slippage:a,address:r,collectAmountA:m,collectAmountB:b,rewardAmounts:v,txb:T})}static fromData(e){return new Uy(e)}},v_=class{application="turbos";async deserialize(t){let{transactionBlock:e,account:n}=t,i=new ox(e).decode(n.address);return{txType:My.TransactionType.Other,txSubType:i.type,intentionData:i.intentionData}}async build(t){let{suiClient:e,account:n,network:i}=t,r;switch(t.txSubType){case"CreatePool":r=lx.fromData(t.intentionData);break;case"AddLiquidity":r=sx.fromData(t.intentionData);break;case"IncreaseLiquidity":r=fx.fromData(t.intentionData);break;case"DecreaseLiquidity":r=dx.fromData(t.intentionData);break;case"RemoveLiquidity":r=hx.fromData(t.intentionData);break;case"CollectFee":r=cx.fromData(t.intentionData);break;case"CollectReward":r=ux.fromData(t.intentionData);break;case"Burn":r=ax.fromData(t.intentionData);break;default:throw new Error("not implemented")}return r.build({suiClient:e,account:n,network:i})}},Bc=new nA([new US,new YS,new v_,new FS,new tA,new FT,new v_,new rx]);var Pe=require("@msafe/sui3-utils"),sf=require("@mysten/sui.js/transactions"),$c=require("@mysten/sui.js/utils");var $y=require("@mysten/sui.js/transactions"),px=1000n,mx=120n,gx=100n,_x={multiplier:{numerator:mx,denominator:gx}};var Nc=class{constructor(e){this.globals=e}async simulate(e,n=_x){let i=this.copyTransactionBlock(e.txb),{suiClient:r}=this.globals,o=await this.getGasPrice(n);i.setGasPrice(o);let s=await r.devInspectTransactionBlock({transactionBlock:i,sender:e.sender}),{gasUsed:a}=s.effects,u=this.toGasBudget(a,o),l=s.effects.status.status==="success",m;return l||(m=s.effects.status.error),{success:l,gasPrice:o,gasObject:s.effects.gasObject.reference,gasUsed:a,gasBudget:u,simulationError:m}}async getGasPrice(e){if(this.isFixedValue(e))return e.fixedVal;let n=await this.globals.suiClient.getReferenceGasPrice();return this.applyGasOption(n,e)}toGasBudget(e,n){let{computationCost:i,storageCost:r}=e,o=px*n,s=BigInt(i)+o,a=s+BigInt(r);return a>s?a:s}isFixedValue(e){return"fixedVal"in e}isMultiplier(e){return"multiplier"in e}applyGasOption(e,n){if(this.isFixedValue(n))return n.fixedVal;if(this.isMultiplier(n)){let{multiplier:i}=n;return e*i.numerator/i.denominator}throw new Error("Sanity: Unknown gas price option")}copyTransactionBlock(e){return $y.TransactionBlock.from(e.serialize())}};var Jd=require("buffer");function Fc(t){return Jd.Buffer.from(t,"utf-8")}function yx(t){return`0x${Array.prototype.map.call(t,e=>`0${e.toString(16)}`.slice(-2)).join("")}`}function Rc(t){return Uint8Array.from(Jd.Buffer.from(t.startsWith("0x")?t.slice(2):t,"hex"))}var Lc=require("@mysten/sui.js/verify");var Wi=require("@mysten/sui.js/utils");var qc=require("@mysten/sui.js/utils"),Rs=class{_client;_coinMetaReg;constructor(e){this._client=e,this._coinMetaReg=new Map}async getCoinMeta(e){let n=(0,qc.normalizeStructTag)(e);if(this._coinMetaReg.has(n))return this._coinMetaReg.get(n);let i=await this.queryCoinMeta(n);return i&&this._coinMetaReg.set(n,i),i}async queryCoinMeta(e){return await this._client.getCoinMetadata({coinType:e})||void 0}},Yd=/^0x0000000000000000000000000000000000000000000000000000000000000002::coin::Coin<(.+)>$/,qs=class t{static isCoin(e){return e?(0,qc.normalizeStructTag)(e).match(Yd)!=null:!1}static getCoinType(e){let[,n]=(0,qc.normalizeStructTag)(e).match(Yd)??[];return n||null}static getBalance(e){if(!t.isCoin(e.type)||e.content?.dataType!=="moveObject")return;let{balance:n}=e.content?.fields;if(n!==void 0)return BigInt(n)}};var _i=class{static normalizeSuiAddress(e){return(0,Wi.normalizeSuiAddress)(e)}static normalizeStructTag(e){return(0,Wi.normalizeStructTag)(e)}static isSuiAddressEqual(e,n){return(0,Wi.normalizeSuiAddress)(e)===(0,Wi.normalizeSuiAddress)(n)}static isSuiStructEqual(e,n){return(0,Wi.normalizeStructTag)(e)===(0,Wi.normalizeStructTag)(n)}static isCoinObjectType(e){return qs.isCoin(e)}};function Qd(t,e){return t.startsWith(e)?t:e+t}var ef=class t{static async getPublicKeyFromSignature(e){return e.messageType==="TransactionBlock"?(0,Lc.verifyTransactionBlock)(e.message,e.signature):(0,Lc.verifyPersonalMessage)(e.message,e.signature)}static async getPublicKeyFromPersonalSignature(e){let n=Fc(e.messageStr);return this.getPublicKeyFromSignature({message:n,messageType:"Personal",signature:e.signature})}static async verifySignature(e){let n=await t.getPublicKeyFromSignature(e);return _i.isSuiAddressEqual(n.toSuiAddress(),e.targetAddress)}static async verifyPersonalSignature(e){let n=Fc(e.messageStr);return this.verifySignature({message:n,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 Ky=require("@msafe/sui3-utils"),zy=require("@mysten/sui.js/cryptography"),Vy=require("@mysten/sui.js/multisig");var wx="0x2::sui::SUI";async function tf(t,e){let n;try{n=await t.queryTransactionBlocks({filter:{FromAddress:e},options:{showInput:!0},limit:2})}catch{return}if(n.data.length===0||!n.data[0].transaction?.txSignatures)return;let r=n.data[0].transaction?.txSignatures;for(let o=0;o!==r.length;o++){let s=r[o],a=bx(s,e);if(a)return a}}function bx(t,e){let n=(0,zy.parseSerializedSignature)(t);switch(n.signatureScheme){case"MultiSig":{let i=new Vy.MultiSigPublicKey(n.multisig.multisig_pk).toSuiAddress();if(_i.isSuiAddressEqual(i,e))throw new Error("multi-sig wallet cannot be owner");return}case"ZkLogin":{if(_i.isSuiAddressEqual(n.zkLogin.address,e))throw new Error("ZkLogin wallet cannot be owner");return}case"ED25519":case"Secp256k1":case"Secp256r1":{let i=Ky.PublicKeySerde.de({publicKeyEncoded:n.publicKey,schema:n.signatureScheme});return _i.isSuiAddressEqual(i.toSuiAddress(),e)?i:void 0}default:throw new Error("Unknown schema")}}async function vx(t){let e=!0,n,i=[];for(;e;){let r=await t.suiClient.getCoins({owner:t.owner,coinType:t.coinType,cursor:n});i.push(...r.data),e=r.hasNextPage,n=r.nextCursor}return i}var Gy=25;async function Wy(t){let e=[];for(;await t.hasNext();){let n=await t.next();e.push(n)}return e&&Array.isArray(e[0])?e.flat(1):e}var nf=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)}},Uc=class{constructor(e){this.requester=e;this.pager=new nf(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 Hy(t,e,n){let i=new rf(t,e,n);return await Wy(i)}var rf=class extends Uc{constructor(n,i,r){super(new of(n,i,r));this.provider=n;this.owner=i;this.options=r}},of=class{constructor(e,n,i){this.provider=e;this.owner=n;this.options=i;this.nextCursor=null,this.filter=i?.filter,this.pageSize=i?.pageSize||Gy,this.objectOptions=i?.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 n;if(this.filter){let{filter:i}=this;n=e.data.filter(r=>i?.(r))}else n=e.data;return{data:n.map(i=>i.data).filter(i=>i),hasNext:e.hasNextPage}}};var vr=class t{constructor(e,n){this.globals=e;this.info=n;this.multiSig=new Pe.MultiSigAccount({threshold:n.threshold,ownersWithWeight:n.owners,creationNonce:n.creationNonce}),this.coinHelper=new Rs(this.suiClient),this.simulator=new Nc(e)}multiSig;coinHelper;simulator;static async New(e,n){let i=await e.backend.getMSafeAccountInfo(n);if(new t(e,i).address!==n)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 n=>{let i=await this.coinHelper.getCoinMeta(n.coinType),r=n.lockedBalance.number?BigInt(n.totalBalance)-BigInt(n.lockedBalance.number):BigInt(n.totalBalance);return{type:(0,$c.normalizeStructTag)(n.coinType),balance:BigInt(r),metadata:i}}))}async ownedObjects(e){let n={filter:i=>!i?.data?.type?.startsWith("0x2::coin::Coin"),...e};return Hy(this.suiClient,this.address,n)}async pendingTransaction(){let e=await this.backend.getPendingTransactions({msafeAddress:this.address});if(!e.pending)return;let n=e.pending,i=e.reject;return{application:n.application,txType:n.txType,txSubType:n.txSubType,createdAt:n.createdAt,creator:n.creator,digest:n.digest,intention:n.intention,sequenceNumber:n.sequenceNumber,payload:n.payload,votes:n.votes,approvalWeight:this.calculateWeightFromVotes(n.votes),msafeAddress:n.msafeAddress,rejectDigest:i?.digest??"",rejectPayload:i?.payload??"",rejectVotes:i?.votes??[],rejectWeight:this.calculateWeightFromVotes(i?.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 n=Bc.getAppHelper(e.application);if(!n)throw new Error(`Can't find app helper for application ${e.application}`);let i=await n.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:i,sender:this.address})}async proposeIntention(e){let n=Pe.SigningMessageHelper.proposeIntentionMessage({msafeAddress:this.address,intention:e.intention,sn:e.sequenceNumber}),i=await this.wallet.signPersonalMessage({messageStr:n});return this.backend.proposeIntention({...e,msafeAddress:this.address,signature:i.signature})}async proposeIntentionAndBuildVote(e){let n=Bc.getAppHelper(e.application);if(!n)throw new Error(`Can't find app helper for application ${e.application}`);let i=await n.build({network:this.globals.config.network,intentionData:e.intention,txType:e.txType,txSubType:e.txSubType,suiClient:this.globals.suiClient,account:{address:this.address}});i.setGasPrice(e.gasPrice),i.setGasBudget(e.gasBudget),i.setSender(this.address);let r=await i.build({client:this.globals.suiClient}),o=await i.getDigest({client:this.globals.suiClient}),s=await this.wallet.signTransactionBlock({transactionBlock:r});return this.backend.proposeIntentionAndBuildVote({...e,payload:(0,$c.toHEX)(r),digest:o,msafeAddress:this.address,signature:s.signature})}async simulateCoinTransferIntention(e){let n=await this.nextSequenceNumber();return this.simulateIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.coin.send,sequenceNumber:n,intention:e})}async proposeCoinTransferIntention(e){let n=await this.nextSequenceNumber();return this.proposeIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.coin.send,sequenceNumber:n,intention:e})}async simulateObjectTransferIntention(e){let n=await this.nextSequenceNumber();return this.simulateIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.object.send,sequenceNumber:n,intention:e})}async proposeObjectTransferIntention(e){let n=await this.nextSequenceNumber();return this.proposeIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.object.send,sequenceNumber:n,intention:e})}async simulatePlainPayloadIntention(e){let n=await this.nextSequenceNumber();return this.simulateIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Other,txSubType:Pe.TransactionSubTypes.others.plain,sequenceNumber:n,intention:e})}async proposePlainPayloadIntention(e){let n=await this.nextSequenceNumber(),i=sf.TransactionBlock.from(e.payload);if(!i.blockData.sender||!(0,Pe.isSameAddress)(i.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:n,intention:e})}async voteForTransaction(e,n){let i=Rc(n),r=await this.wallet.signTransactionBlock({transactionBlock:i});return this.backend.voteForTransaction({msafeAddress:this.address,digest:e,signature:r.signature})}async proposePendingTransaction(e){let n=new sf.TransactionBlock,i=await n.build({client:this.suiClient}),r=await n.getDigest({client:this.suiClient}),o=await this.wallet.signTransactionBlock({transactionBlock:i});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 n=e.payload,i=(0,Pe.buildRejectTxb)(this.address,n);return this.simulator.simulate({txb:i,sender:this.address})}async rejectCurrentTx(e){let n=await this.pendingTransaction();if(!n||n.rejectDigest!=="")throw new Error("Already rejected");let i=n.payload,r=(0,Pe.buildRejectTxb)(this.address,i),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}),n=Bc.getAppHelper(e.application);if(!n)throw new Error(`Can't find app helper for application ${e.application}`);let i=await n.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:i,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,n=!1){let i=n?e.rejectVotes:e.votes,r=n?e.rejectPayload:e.payload;if(this.calculateWeightFromVotes(i)<this.info.threshold)throw new Error("Not enough signature");let o=[],s=new Map(i.map(u=>[u.userAddress,u.signature]));for(let u=0;u<this.info.owners.length;u++){let l=this.info.owners[u],m=s.get(l.address);m&&o.push(m)}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(n=>n.userAddress))}calculateWeight(e){let n=0;for(let i=0;i<e.length;i++){let r=this.info.owners.find(o=>(0,Pe.isSameAddress)(o.address,e[i]));r&&(n+=r.weight)}return n}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 Xy=require("@msafe/sui3-utils"),Zy=require("@mysten/sui.js/utils");var Kc=class{constructor(e){this.globals=e;this.knownPublicKeys=new Map}knownPublicKeys;async getPublicKey(e){let n=this.knownPublicKeys.get(e);if(n)return n;let i=await this._getPublicKey(e);return i&&this.knownPublicKeys.set(e,i),i}async getPublicKeyBatch(e){let n=new Array(e.length).fill(void 0);for(let o=0;o<e.length;o++){let s=e[o];n[o]=this.knownPublicKeys.get(s)}let i=n.map((o,s)=>o===void 0?s:-1).filter(o=>o!==-1);if(i.length===0)return n;let r=await this.globals.backend.getPublicKeyBatch(i.map(o=>e[o]));for(let o=0;o<i.length;o++){let s=i[o];n[s]=r[o]}for(let o=0;o<n.length;o++)n[o]===void 0&&(n[o]=await this.getPublicKeyFromChain(e[o]));for(let o=0;o<e.length;o++)n[o]&&this.knownPublicKeys.set(e[o],n[o]);return n}addPublicKey(e,n){if(!(0,Xy.isSameAddress)(e,n.toSuiAddress()))throw new Error("Invalid public key");this.knownPublicKeys.set((0,Zy.normalizeSuiAddress)(e),n)}async _getPublicKey(e){let n=await this.getPublicKeyFromBackend(e);if(n)return n;let i=await this.getPublicKeyFromChain(e);if(i)return i}async getPublicKeyFromBackend(e){try{return await this.globals.backend.getPublicKey(e)}catch{return}}async getPublicKeyFromChain(e){return tf(this.globals.suiClient,e)}};var zc=class{constructor(e){this.globals=e}async create(e){return this.globals.backend.submitReport(e)}};var iw=require("@mysten/sui.js/client");var Us=require("@msafe/sui3-utils"),Ls=be(require("axios"),1);var Vc=class t{constructor(e){this.apiURL=e}_token;async authSign(e){let n=await this.post("/auth/login",e);return this._token=n.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 n={userAddressList:e};return(await this.get("/user/public-keys",{params:n,headers:this.headers()})).data?.map(r=>r?Us.PublicKeySerde.de(r):void 0)}async getMSafeAccountInfo(e){let n={msafeAddress:e},i=await this.get("/msafe",{params:n,headers:this.headers()});return t.toMSafeConfig(i.data)}async getUserInfo(){return(await this.get("/user",{headers:this.headers()})).data}async getOwnedMSafeByStatus(e){let n={status:e.status??Us.UserMSafeStatus.active,...e.pagination?{page:e.pagination.page.toString(),limit:e.pagination.limit.toString()}:{}},i=await this.get("/msafe/owned",{params:n,headers:this.headers()});return{data:i.data.data.map(t.toMSafeConfig),meta:i.data.meta}}async updateMSafeStatus(e){let n=e;await this.post("/msafe/status",n,{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(n=>({address:n.address,weight:n.weight,publicKey:Us.PublicKeySerde.de({publicKeyEncoded:n.publicKeyEncoded,schema:n.schema})}))}}async get(e,n){let i=this.getFullUrl(e);try{return await Ls.default.get(i,n)}catch(r){throw Gc.fromError(r)??r}}async post(e,n,i){let r=this.getFullUrl(e);try{return await Ls.default.post(r,n,{...i,transformRequest:this.getTransformRequest()})}catch(o){throw Gc.fromError(o)??o}}getFullUrl(e){return e.startsWith(this.apiURL)?e:`${this.apiURL}${Qd(e,"/")}`}getTransformRequest(){let e=[],{transformRequest:n}=Ls.default.defaults;return n?n instanceof Array?e=n:e=[n]:e=[],[i=>JSON.parse(JSON.stringify(i,(r,o)=>typeof o=="bigint"?`${o.toString()}n`:o)),...e]}},Gc=class t extends Error{constructor(n){super();this.e=n;Error.captureStackTrace(this,this.constructor)}name;static fromError(n){if(Ls.default.isAxiosError(n)&&n?.response?.data&&"message"in n.response.data)return new t(n)}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 Jy=(o=>(o.local="local",o.unit="unit",o.dev="dev",o.prev="prev",o.prod="prod",o))(Jy||{}),Wc="https://fullnode.testnet.sui.io",af="https://fullnode.mainnet.sui.io",cf="http://127.0.0.1:3000",uf="http://127.0.0.1:3001",Yy="https://sui-dev.m-safe.link",Qy="http://13.56.226.148:81",ew="https://sui-preview.m-safe.link",tw="https://sui.m-safe.link",nw=new Map([["unit",{suiClient:{url:Wc},backend:{url:cf},syncingURL:uf,network:"sui:testnet"}],["local",{suiClient:{url:Wc},backend:{url:cf},syncingURL:uf,network:"sui:testnet"}],["dev",{suiClient:{url:Wc},backend:{url:Yy},syncingURL:Qy,network:"sui:testnet"}],["prev",{suiClient:{url:af},backend:{url:ew},syncingURL:"",network:"sui:mainnet"}],["prod",{suiClient:{url:af},backend:{url:tw},syncingURL:"",network:"sui:mainnet"}]]);function lf(t,e){let n=nw.get(t);if(!n)throw new Error("Unknown environment");return e?.suiClient?.url&&(n.suiClient.url=e.suiClient.url),e?.backend?.url&&(n.backend.url=e.backend.url),n}var $s=class t{backend;suiClient;config;_wallet;constructor(e){this.backend=e.backend,this.suiClient=e.suiClient,this.config=e.config}static async New(e,n){let i=lf(e,n),r=new iw.SuiClient(i.suiClient),o=new Vc(i.backend.url);return new t({backend:o,suiClient:r,config:i})}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 Hc=class t{constructor(e){this.globals=e}_creationHelper;_publicKeyHelper;static async New(e,n){let i=await $s.New(e,n);return new t(i)}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 n=await this.authSign(e.wallet);return this.globals.wallet=e.wallet,this.backend.setJWTToken(n),n}async authSign(e){let n=Xc.SigningMessageHelper.loginMessageWithTimestamp(new Date().toUTCString()),i=await e.signPersonalMessage({messageStr:n});return this.backend.authSign({address:await e.address(),message:n,signature:i.signature,walletType:e.walletType})}async userInfo(){return this.globals.backend.getUserInfo()}async ownedMSafe(e){return this.globals.backend.getOwnedMSafeByStatus({status:Xc.UserMSafeStatus.active,pagination:e})}async createAccount(e){return this.creationHelper.submitMSafeCreation(e)}getMSafeAccount(e){return new vr(this.globals,e)}async getMSafeAccountFromAddress(e){let n=await this.backend.getMSafeAccountInfo(e);return new vr(this.globals,n)}get creationHelper(){return this._creationHelper||(this._creationHelper=new Cr(this.globals,this.publicKeyHelper)),this._creationHelper}get publicKeyHelper(){return this._publicKeyHelper||(this._publicKeyHelper=new Kc(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 Tr(this.globals)}get Invitation(){return new Vs(this.globals)}get Report(){return new zc(this.globals)}async walletAddress(){return this.wallet.address()}};
2054
2054
  /*! Bundled license information:
2055
2055
 
2056
2056
  @syntsugar/cc-graph/dist/index.umd.js:
@@ -2069,6 +2069,9 @@ zoo`.split(`
2069
2069
  and limitations under the License.
2070
2070
  ***************************************************************************** *)
2071
2071
 
2072
+ @babel/runtime/helpers/regeneratorRuntime.js:
2073
+ (*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE *)
2074
+
2072
2075
  decimal.js/decimal.mjs:
2073
2076
  (*!
2074
2077
  * decimal.js v10.4.3