@msafe/sui3-sdk 0.0.49-pre-a4d9be1.0 → 0.0.49-pre-8a41384.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 +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -2050,7 +2050,7 @@ zebra
|
|
|
2050
2050
|
zero
|
|
2051
2051
|
zone
|
|
2052
2052
|
zoo`.split(`
|
|
2053
|
-
`);var Jo=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Gp=new Set,_u=typeof process=="object"&&process?process:{},Hp=(t,e,i,n)=>{typeof _u.emitWarning=="function"?_u.emitWarning(t,e,i,n):console.error(`[${i}] ${e}: ${t}`)},Pa=globalThis.AbortController,zp=globalThis.AbortSignal;if(typeof Pa>"u"){zp=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(n,r){this._onabort.push(r)}},Pa=class{constructor(){e()}signal=new zp;abort(n){if(!this.signal.aborted){this.signal.reason=n,this.signal.aborted=!0;for(let r of this.signal._onabort)r(n);this.signal.onabort?.(n)}}};let t=_u.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",e=()=>{t&&(t=!1,Hp("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 M1=t=>!Gp.has(t),T4=Symbol("type"),Dn=t=>t&&t===Math.floor(t)&&t>0&&isFinite(t),Zp=t=>Dn(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)}},bu=class t{heap;length;static#c=!1;static create(e){let i=Zp(e);if(!i)return[];t.#c=!0;let n=new t(e,i);return t.#c=!1,n}constructor(e,i){if(!t.#c)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new i(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},Da=class t{#c;#d;#b;#p;#O;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#m;#r;#i;#e;#l;#f;#a;#o;#g;#s;#k;#T;#_;#y;#S;#u;static unsafeExposeInternals(e){return{starts:e.#T,ttls:e.#_,sizes:e.#k,keyMap:e.#r,keyList:e.#i,valList:e.#e,next:e.#l,prev:e.#f,get head(){return e.#a},get tail(){return e.#o},free:e.#g,isBackgroundFetch:i=>e.#t(i),backgroundFetch:(i,n,r,o)=>e.#M(i,n,r,o),moveToTail:i=>e.#I(i),indexes:i=>e.#w(i),rindexes:i=>e.#v(i),isStale:i=>e.#h(i)}}get max(){return this.#c}get maxSize(){return this.#d}get calculatedSize(){return this.#m}get size(){return this.#n}get fetchMethod(){return this.#O}get dispose(){return this.#b}get disposeAfter(){return this.#p}constructor(e){let{max:i=0,ttl:n,ttlResolution:r=1,ttlAutopurge:o,updateAgeOnGet:s,updateAgeOnHas:a,allowStale:l,dispose:u,disposeAfter:h,noDisposeOnSet:y,noUpdateTTL:v,maxSize:C=0,maxEntrySize:O=0,sizeCalculation:P,fetchMethod:j,noDeleteOnFetchRejection:B,noDeleteOnStaleGet:D,allowStaleOnFetchRejection:q,allowStaleOnFetchAbort:K,ignoreFetchAbort:Z}=e;if(i!==0&&!Dn(i))throw new TypeError("max option must be a nonnegative integer");let G=i?Zp(i):Array;if(!G)throw new Error("invalid max value: "+i);if(this.#c=i,this.#d=C,this.maxEntrySize=O||this.#d,this.sizeCalculation=P,this.sizeCalculation){if(!this.#d&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(j!==void 0&&typeof j!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#O=j,this.#S=!!j,this.#r=new Map,this.#i=new Array(i).fill(void 0),this.#e=new Array(i).fill(void 0),this.#l=new G(i),this.#f=new G(i),this.#a=0,this.#o=0,this.#g=bu.create(i),this.#n=0,this.#m=0,typeof u=="function"&&(this.#b=u),typeof h=="function"?(this.#p=h,this.#s=[]):(this.#p=void 0,this.#s=void 0),this.#y=!!this.#b,this.#u=!!this.#p,this.noDisposeOnSet=!!y,this.noUpdateTTL=!!v,this.noDeleteOnFetchRejection=!!B,this.allowStaleOnFetchRejection=!!q,this.allowStaleOnFetchAbort=!!K,this.ignoreFetchAbort=!!Z,this.maxEntrySize!==0){if(this.#d!==0&&!Dn(this.#d))throw new TypeError("maxSize must be a positive integer if specified");if(!Dn(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#R()}if(this.allowStale=!!l,this.noDeleteOnStaleGet=!!D,this.updateAgeOnGet=!!s,this.updateAgeOnHas=!!a,this.ttlResolution=Dn(r)||r===0?r:1,this.ttlAutopurge=!!o,this.ttl=n||0,this.ttl){if(!Dn(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#E()}if(this.#c===0&&this.ttl===0&&this.#d===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#c&&!this.#d){let J="LRU_CACHE_UNBOUNDED";M1(J)&&(Gp.add(J),Hp("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",J,t))}}getRemainingTTL(e){return this.#r.has(e)?1/0:0}#E(){let e=new Xr(this.#c),i=new Xr(this.#c);this.#_=e,this.#T=i,this.#j=(o,s,a=Jo.now())=>{if(i[o]=s!==0?a:0,e[o]=s,s!==0&&this.ttlAutopurge){let l=setTimeout(()=>{this.#h(o)&&this.delete(this.#i[o])},s+1);l.unref&&l.unref()}},this.#x=o=>{i[o]=e[o]!==0?Jo.now():0},this.#C=(o,s)=>{if(e[s]){let a=e[s],l=i[s];o.ttl=a,o.start=l,o.now=n||r();let u=o.now-l;o.remainingTTL=a-u}};let n=0,r=()=>{let o=Jo.now();if(this.ttlResolution>0){n=o;let s=setTimeout(()=>n=0,this.ttlResolution);s.unref&&s.unref()}return o};this.getRemainingTTL=o=>{let s=this.#r.get(o);if(s===void 0)return 0;let a=e[s],l=i[s];if(a===0||l===0)return 1/0;let u=(n||r())-l;return a-u},this.#h=o=>e[o]!==0&&i[o]!==0&&(n||r())-i[o]>e[o]}#x=()=>{};#C=()=>{};#j=()=>{};#h=()=>!1;#R(){let e=new Xr(this.#c);this.#m=0,this.#k=e,this.#A=i=>{this.#m-=e[i],e[i]=0},this.#B=(i,n,r,o)=>{if(this.#t(n))return 0;if(!Dn(r))if(o){if(typeof o!="function")throw new TypeError("sizeCalculation must be a function");if(r=o(n,i),!Dn(r))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return r},this.#P=(i,n,r)=>{if(e[i]=n,this.#d){let o=this.#d-e[i];for(;this.#m>o;)this.#D(!0)}this.#m+=e[i],r&&(r.entrySize=n,r.totalCalculatedSize=this.#m)}}#A=e=>{};#P=(e,i,n)=>{};#B=(e,i,n,r)=>{if(n||r)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#w({allowStale:e=this.allowStale}={}){if(this.#n)for(let i=this.#o;!(!this.#N(i)||((e||!this.#h(i))&&(yield i),i===this.#a));)i=this.#f[i]}*#v({allowStale:e=this.allowStale}={}){if(this.#n)for(let i=this.#a;!(!this.#N(i)||((e||!this.#h(i))&&(yield i),i===this.#o));)i=this.#l[i]}#N(e){return e!==void 0&&this.#r.get(this.#i[e])===e}*entries(){for(let e of this.#w())this.#e[e]!==void 0&&this.#i[e]!==void 0&&!this.#t(this.#e[e])&&(yield[this.#i[e],this.#e[e]])}*rentries(){for(let e of this.#v())this.#e[e]!==void 0&&this.#i[e]!==void 0&&!this.#t(this.#e[e])&&(yield[this.#i[e],this.#e[e]])}*keys(){for(let e of this.#w()){let i=this.#i[e];i!==void 0&&!this.#t(this.#e[e])&&(yield i)}}*rkeys(){for(let e of this.#v()){let i=this.#i[e];i!==void 0&&!this.#t(this.#e[e])&&(yield i)}}*values(){for(let e of this.#w())this.#e[e]!==void 0&&!this.#t(this.#e[e])&&(yield this.#e[e])}*rvalues(){for(let e of this.#v())this.#e[e]!==void 0&&!this.#t(this.#e[e])&&(yield this.#e[e])}[Symbol.iterator](){return this.entries()}find(e,i={}){for(let n of this.#w()){let r=this.#e[n],o=this.#t(r)?r.__staleWhileFetching:r;if(o!==void 0&&e(o,this.#i[n],this))return this.get(this.#i[n],i)}}forEach(e,i=this){for(let n of this.#w()){let r=this.#e[n],o=this.#t(r)?r.__staleWhileFetching:r;o!==void 0&&e.call(i,o,this.#i[n],this)}}rforEach(e,i=this){for(let n of this.#v()){let r=this.#e[n],o=this.#t(r)?r.__staleWhileFetching:r;o!==void 0&&e.call(i,o,this.#i[n],this)}}purgeStale(){let e=!1;for(let i of this.#v({allowStale:!0}))this.#h(i)&&(this.delete(this.#i[i]),e=!0);return e}dump(){let e=[];for(let i of this.#w({allowStale:!0})){let n=this.#i[i],r=this.#e[i],o=this.#t(r)?r.__staleWhileFetching:r;if(o===void 0||n===void 0)continue;let s={value:o};if(this.#_&&this.#T){s.ttl=this.#_[i];let a=Jo.now()-this.#T[i];s.start=Math.floor(Date.now()-a)}this.#k&&(s.size=this.#k[i]),e.unshift([n,s])}return e}load(e){this.clear();for(let[i,n]of e){if(n.start){let r=Date.now()-n.start;n.start=Jo.now()-r}this.set(i,n.value,n)}}set(e,i,n={}){if(i===void 0)return this.delete(e),this;let{ttl:r=this.ttl,start:o,noDisposeOnSet:s=this.noDisposeOnSet,sizeCalculation:a=this.sizeCalculation,status:l}=n,{noUpdateTTL:u=this.noUpdateTTL}=n,h=this.#B(e,i,n.size||0,a);if(this.maxEntrySize&&h>this.maxEntrySize)return l&&(l.set="miss",l.maxEntrySizeExceeded=!0),this.delete(e),this;let y=this.#n===0?void 0:this.#r.get(e);if(y===void 0)y=this.#n===0?this.#o:this.#g.length!==0?this.#g.pop():this.#n===this.#c?this.#D(!1):this.#n,this.#i[y]=e,this.#e[y]=i,this.#r.set(e,y),this.#l[this.#o]=y,this.#f[y]=this.#o,this.#o=y,this.#n++,this.#P(y,h,l),l&&(l.set="add"),u=!1;else{this.#I(y);let v=this.#e[y];if(i!==v){if(this.#S&&this.#t(v)?v.__abortController.abort(new Error("replaced")):s||(this.#y&&this.#b?.(v,e,"set"),this.#u&&this.#s?.push([v,e,"set"])),this.#A(y),this.#P(y,h,l),this.#e[y]=i,l){l.set="replace";let C=v&&this.#t(v)?v.__staleWhileFetching:v;C!==void 0&&(l.oldValue=C)}}else l&&(l.set="update")}if(r!==0&&!this.#_&&this.#E(),this.#_&&(u||this.#j(y,r,o),l&&this.#C(l,y)),!s&&this.#u&&this.#s){let v=this.#s,C;for(;C=v?.shift();)this.#p?.(...C)}return this}pop(){try{for(;this.#n;){let e=this.#e[this.#a];if(this.#D(!0),this.#t(e)){if(e.__staleWhileFetching)return e.__staleWhileFetching}else if(e!==void 0)return e}}finally{if(this.#u&&this.#s){let e=this.#s,i;for(;i=e?.shift();)this.#p?.(...i)}}}#D(e){let i=this.#a,n=this.#i[i],r=this.#e[i];return this.#S&&this.#t(r)?r.__abortController.abort(new Error("evicted")):(this.#y||this.#u)&&(this.#y&&this.#b?.(r,n,"evict"),this.#u&&this.#s?.push([r,n,"evict"])),this.#A(i),e&&(this.#i[i]=void 0,this.#e[i]=void 0,this.#g.push(i)),this.#n===1?(this.#a=this.#o=0,this.#g.length=0):this.#a=this.#l[i],this.#r.delete(n),this.#n--,i}has(e,i={}){let{updateAgeOnHas:n=this.updateAgeOnHas,status:r}=i,o=this.#r.get(e);if(o!==void 0){let s=this.#e[o];if(this.#t(s)&&s.__staleWhileFetching===void 0)return!1;if(this.#h(o))r&&(r.has="stale",this.#C(r,o));else return n&&this.#x(o),r&&(r.has="hit",this.#C(r,o)),!0}else r&&(r.has="miss");return!1}peek(e,i={}){let{allowStale:n=this.allowStale}=i,r=this.#r.get(e);if(r!==void 0&&(n||!this.#h(r))){let o=this.#e[r];return this.#t(o)?o.__staleWhileFetching:o}}#M(e,i,n,r){let o=i===void 0?void 0:this.#e[i];if(this.#t(o))return o;let s=new Pa,{signal:a}=n;a?.addEventListener("abort",()=>s.abort(a.reason),{signal:s.signal});let l={signal:s.signal,options:n,context:r},u=(P,j=!1)=>{let{aborted:B}=s.signal,D=n.ignoreFetchAbort&&P!==void 0;if(n.status&&(B&&!j?(n.status.fetchAborted=!0,n.status.fetchError=s.signal.reason,D&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),B&&!D&&!j)return y(s.signal.reason);let q=C;return this.#e[i]===C&&(P===void 0?q.__staleWhileFetching?this.#e[i]=q.__staleWhileFetching:this.delete(e):(n.status&&(n.status.fetchUpdated=!0),this.set(e,P,l.options))),P},h=P=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=P),y(P)),y=P=>{let{aborted:j}=s.signal,B=j&&n.allowStaleOnFetchAbort,D=B||n.allowStaleOnFetchRejection,q=D||n.noDeleteOnFetchRejection,K=C;if(this.#e[i]===C&&(!q||K.__staleWhileFetching===void 0?this.delete(e):B||(this.#e[i]=K.__staleWhileFetching)),D)return n.status&&K.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),K.__staleWhileFetching;if(K.__returned===K)throw P},v=(P,j)=>{let B=this.#O?.(e,o,l);B&&B instanceof Promise&&B.then(D=>P(D),j),s.signal.addEventListener("abort",()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(P(),n.allowStaleOnFetchAbort&&(P=D=>u(D,!0)))})};n.status&&(n.status.fetchDispatched=!0);let C=new Promise(v).then(u,h),O=Object.assign(C,{__abortController:s,__staleWhileFetching:o,__returned:void 0});return i===void 0?(this.set(e,O,{...l.options,status:void 0}),i=this.#r.get(e)):this.#e[i]=O,O}#t(e){if(!this.#S)return!1;let i=e;return!!i&&i instanceof Promise&&i.hasOwnProperty("__staleWhileFetching")&&i.__abortController instanceof Pa}async fetch(e,i={}){let{allowStale:n=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,ttl:s=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:l=0,sizeCalculation:u=this.sizeCalculation,noUpdateTTL:h=this.noUpdateTTL,noDeleteOnFetchRejection:y=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:v=this.allowStaleOnFetchRejection,ignoreFetchAbort:C=this.ignoreFetchAbort,allowStaleOnFetchAbort:O=this.allowStaleOnFetchAbort,context:P,forceRefresh:j=!1,status:B,signal:D}=i;if(!this.#S)return B&&(B.fetch="get"),this.get(e,{allowStale:n,updateAgeOnGet:r,noDeleteOnStaleGet:o,status:B});let q={allowStale:n,updateAgeOnGet:r,noDeleteOnStaleGet:o,ttl:s,noDisposeOnSet:a,size:l,sizeCalculation:u,noUpdateTTL:h,noDeleteOnFetchRejection:y,allowStaleOnFetchRejection:v,allowStaleOnFetchAbort:O,ignoreFetchAbort:C,status:B,signal:D},K=this.#r.get(e);if(K===void 0){B&&(B.fetch="miss");let Z=this.#M(e,K,q,P);return Z.__returned=Z}else{let Z=this.#e[K];if(this.#t(Z)){let A=n&&Z.__staleWhileFetching!==void 0;return B&&(B.fetch="inflight",A&&(B.returnedStale=!0)),A?Z.__staleWhileFetching:Z.__returned=Z}let G=this.#h(K);if(!j&&!G)return B&&(B.fetch="hit"),this.#I(K),r&&this.#x(K),B&&this.#C(B,K),Z;let J=this.#M(e,K,q,P),I=J.__staleWhileFetching!==void 0&&n;return B&&(B.fetch=G?"stale":"refresh",I&&G&&(B.returnedStale=!0)),I?J.__staleWhileFetching:J.__returned=J}}get(e,i={}){let{allowStale:n=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,status:s}=i,a=this.#r.get(e);if(a!==void 0){let l=this.#e[a],u=this.#t(l);return s&&this.#C(s,a),this.#h(a)?(s&&(s.get="stale"),u?(s&&n&&l.__staleWhileFetching!==void 0&&(s.returnedStale=!0),n?l.__staleWhileFetching:void 0):(o||this.delete(e),s&&n&&(s.returnedStale=!0),n?l:void 0)):(s&&(s.get="hit"),u?l.__staleWhileFetching:(this.#I(a),r&&this.#x(a),l))}else s&&(s.get="miss")}#F(e,i){this.#f[i]=e,this.#l[e]=i}#I(e){e!==this.#o&&(e===this.#a?this.#a=this.#l[e]:this.#F(this.#f[e],this.#l[e]),this.#F(this.#o,e),this.#o=e)}delete(e){let i=!1;if(this.#n!==0){let n=this.#r.get(e);if(n!==void 0)if(i=!0,this.#n===1)this.clear();else{this.#A(n);let r=this.#e[n];this.#t(r)?r.__abortController.abort(new Error("deleted")):(this.#y||this.#u)&&(this.#y&&this.#b?.(r,e,"delete"),this.#u&&this.#s?.push([r,e,"delete"])),this.#r.delete(e),this.#i[n]=void 0,this.#e[n]=void 0,n===this.#o?this.#o=this.#f[n]:n===this.#a?this.#a=this.#l[n]:(this.#l[this.#f[n]]=this.#l[n],this.#f[this.#l[n]]=this.#f[n]),this.#n--,this.#g.push(n)}}if(this.#u&&this.#s?.length){let n=this.#s,r;for(;r=n?.shift();)this.#p?.(...r)}return i}clear(){for(let e of this.#v({allowStale:!0})){let i=this.#e[e];if(this.#t(i))i.__abortController.abort(new Error("deleted"));else{let n=this.#i[e];this.#y&&this.#b?.(i,n,"delete"),this.#u&&this.#s?.push([i,n,"delete"])}}if(this.#r.clear(),this.#e.fill(void 0),this.#i.fill(void 0),this.#_&&this.#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.#m=0,this.#n=0,this.#u&&this.#s){let e=this.#s,i;for(;i=e?.shift();)this.#p?.(...i)}}};var le=we(Se(),1);var Ba=we(Xp(),1),ar=require("@mysten/sui.js/utils"),cr=require("@mysten/sui.js/transactions");var Yo=we(Se(),1),rm=require("@mysten/sui.js/transactions"),ii=we(Se(),1);var Mn=we(Se(),1),ki=we(Se(),1);var ts=we(Se(),1);var om=require("@mysten/sui.js/utils"),Na=require("@mysten/sui.js/transactions"),Fa=require("@mysten/sui.js/utils");var Cu=we(Se(),1),E1=Object.defineProperty,j1=(t,e,i)=>e in t?E1(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,Wi=(t,e,i)=>(j1(t,typeof e!="symbol"?e+"":e,i),i);var Ma=443636,Ea=-443636,vu="79226673515401279992447579055",ku="4295048016",B1=14,N1="59543866431248",F1="184467440737095516",R1="15793534762490258745",q1=class{generateMnemonic(t=24){return Vp(Wp,t===12?128:256)}getKeypairFromMnemonics(t,e={}){let i=this.getDerivePath(e);return em.Ed25519Keypair.deriveKeypair(t,i)}getDerivePath(t={}){let{accountIndex:e=0,isExternal:i=!1,addressIndex:n=0}=t;return`m/44'/784'/${e}'/${i?1:0}'/${n}'`}},es=class{constructor(t){this.sdk=t,Wi(this,"_lru"),Wi(this,"_fetching",{})}async getCacheOrSet(t,e,i=0){var n;let r=this._lru||(this._lru=new Da({max:100}));if(r.has(t))return r.get(t);let s=await((n=this._fetching)[t]||(n[t]=e()));return delete this._fetching[t],r.set(t,s,{ttl:i}),s}get provider(){return this.sdk.provider}get math(){return this.sdk.math}get account(){return this.sdk.account}get network(){return this.sdk.network}get contract(){return this.sdk.contract}get nft(){return this.sdk.nft}get coin(){return this.sdk.coin}get trade(){return this.sdk.trade}get pool(){return this.sdk.pool}};function L1(t){if("reference"in t)return t.reference;let e=xu(t);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:im(t)}function qa(t){var e,i;return"objectId"in t?t.objectId:(i=(e=L1(t))==null?void 0:e.objectId)!=null?i:nm(t)}function zi(t){var e;return"fields"in t?t.fields:(e=tm(t))==null?void 0:e.fields}function tm(t){let e="data"in t?xu(t):t;if(!(!e||!$1(e)||e.content.dataType!=="moveObject"))return e.content}function $1(t){return t.content!==void 0}function xu(t){return t.data}function im(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 nm(t){if(t.error&&"object_id"in t.error&&!("version"in t.error)&&!("digest"in t.error))return t.error.object_id}function U1(t){return t.data!==void 0}function K1(t){var e;let i=U1(t)?t.data:t;return!i?.type&&"data"in t?((e=i?.content)==null?void 0:e.dataType)==="package"?"package":Ra(t):i?.type}function Ra(t){var e;return(e=tm(t))==null?void 0:e.type}function V1(t){var e;return(e=xu(t))==null?void 0:e.owner}var Qo=async(t,e,i)=>{let r=e.length;if(r>50){let o=[],s=0,a=Math.ceil(r/50);for(s;s<a;s++)o.push(t.multiGetObjects({ids:e.slice(s*50,(s+1)*50),options:i}));return(await Promise.all(o)).flat()}return await t.multiGetObjects({ids:e,options:i})},W1=class extends es{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 Qo(this.provider,Object.values(e),{showContent:!0})).map(n=>{let r=zi(n),o=qa(n),s=Ra(n);return{objectId:o,type:s.split("<")[1].slice(0,-1),fee:r.fee,tickSpacing:r.tick_spacing}})})}fetchJSON(){return this.getCacheOrSet("contract-json",async()=>await(await fetch("https://s3.amazonaws.com/app.turbos.finance/sdk/contract.json?t="+Date.now(),{method:"GET"})).json())}},Jp=new le.default(2).pow(new le.default(128)),z1=class{priceToSqrtPriceX64(t,e,i){return new le.default(new U(t).mul(U.pow(10,i-e)).sqrt().mul(U.pow(2,64)).floor().toFixed(0))}sqrtPriceX64ToPrice(t,e,i){return new U(t.toString()).mul(U.pow(2,-64)).pow(2).mul(U.pow(10,e-i))}priceToTickIndex(t,e,i){return this.sqrtPriceX64ToTickIndex(this.priceToSqrtPriceX64(t,e,i))}sqrtPriceX64ToTickIndex(t){if(t.gt(new le.default(vu))||t.lt(new le.default(ku)))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let e=t.bitLength()-1,i=new le.default(e-64),n=this.signedShiftLeft(i,32,128),r=new le.default("8000000000000000","hex"),o=0,s=new le.default(0),a=e>=64?t.shrn(e-63):t.shln(63-e);for(;r.gt(new le.default(0))&&o<B1;){a=a.mul(a);let C=a.shrn(127);a=a.shrn(63+C.toNumber()),s=s.add(r.mul(C)),r=r.shrn(1),o+=1}let l=s.shrn(32),h=n.add(l).mul(new le.default(N1)),y=this.signedShiftRight(h.sub(new le.default(F1)),64,128).toNumber(),v=this.signedShiftRight(h.add(new le.default(R1)),64,128).toNumber();return y==v?y:this.tickIndexToSqrtPriceX64(v).lte(t)?v:y}tickIndexToSqrtPriceX64(t){return t>0?new le.default(this.tickIndexToSqrtPricePositive(t)):new le.default(this.tickIndexToSqrtPriceNegative(t))}tickIndexToPrice(t,e,i){return this.sqrtPriceX64ToPrice(this.tickIndexToSqrtPriceX64(t),e,i)}toX64_Decimal(t){return t.mul(U.pow(2,64))}fromX64_Decimal(t){return t.mul(U.pow(2,-64))}scaleDown(t,e){return new U(t).div(U.pow(10,e)).toString()}scaleUp(t,e){return new U(t).mul(U.pow(10,e)).toString()}bitsToNumber(t,e=32){return Ba.default.toNumber(Ba.default.asIntN(e,Ba.default.BigInt(t)))}subUnderflowU128(t,e){return t.add(Jp).sub(e).mod(Jp)}tickIndexToSqrtPricePositive(t){let e;return t&1?e=new le.default("79232123823359799118286999567"):e=new le.default("79228162514264337593543950336"),t&2&&(e=this.signedShiftRight(e.mul(new le.default("79236085330515764027303304731")),96,256)),t&4&&(e=this.signedShiftRight(e.mul(new le.default("79244008939048815603706035061")),96,256)),t&8&&(e=this.signedShiftRight(e.mul(new le.default("79259858533276714757314932305")),96,256)),t&16&&(e=this.signedShiftRight(e.mul(new le.default("79291567232598584799939703904")),96,256)),t&32&&(e=this.signedShiftRight(e.mul(new le.default("79355022692464371645785046466")),96,256)),t&64&&(e=this.signedShiftRight(e.mul(new le.default("79482085999252804386437311141")),96,256)),t&128&&(e=this.signedShiftRight(e.mul(new le.default("79736823300114093921829183326")),96,256)),t&256&&(e=this.signedShiftRight(e.mul(new le.default("80248749790819932309965073892")),96,256)),t&512&&(e=this.signedShiftRight(e.mul(new le.default("81282483887344747381513967011")),96,256)),t&1024&&(e=this.signedShiftRight(e.mul(new le.default("83390072131320151908154831281")),96,256)),t&2048&&(e=this.signedShiftRight(e.mul(new le.default("87770609709833776024991924138")),96,256)),t&4096&&(e=this.signedShiftRight(e.mul(new le.default("97234110755111693312479820773")),96,256)),t&8192&&(e=this.signedShiftRight(e.mul(new le.default("119332217159966728226237229890")),96,256)),t&16384&&(e=this.signedShiftRight(e.mul(new le.default("179736315981702064433883588727")),96,256)),t&32768&&(e=this.signedShiftRight(e.mul(new le.default("407748233172238350107850275304")),96,256)),t&65536&&(e=this.signedShiftRight(e.mul(new le.default("2098478828474011932436660412517")),96,256)),t&131072&&(e=this.signedShiftRight(e.mul(new le.default("55581415166113811149459800483533")),96,256)),t&262144&&(e=this.signedShiftRight(e.mul(new le.default("38992368544603139932233054999993551")),96,256)),this.signedShiftRight(e,32,256)}tickIndexToSqrtPriceNegative(t){let e=Math.abs(t),i;return e&1?i=new le.default("18445821805675392311"):i=new le.default("18446744073709551616"),e&2&&(i=this.signedShiftRight(i.mul(new le.default("18444899583751176498")),64,256)),e&4&&(i=this.signedShiftRight(i.mul(new le.default("18443055278223354162")),64,256)),e&8&&(i=this.signedShiftRight(i.mul(new le.default("18439367220385604838")),64,256)),e&16&&(i=this.signedShiftRight(i.mul(new le.default("18431993317065449817")),64,256)),e&32&&(i=this.signedShiftRight(i.mul(new le.default("18417254355718160513")),64,256)),e&64&&(i=this.signedShiftRight(i.mul(new le.default("18387811781193591352")),64,256)),e&128&&(i=this.signedShiftRight(i.mul(new le.default("18329067761203520168")),64,256)),e&256&&(i=this.signedShiftRight(i.mul(new le.default("18212142134806087854")),64,256)),e&512&&(i=this.signedShiftRight(i.mul(new le.default("17980523815641551639")),64,256)),e&1024&&(i=this.signedShiftRight(i.mul(new le.default("17526086738831147013")),64,256)),e&2048&&(i=this.signedShiftRight(i.mul(new le.default("16651378430235024244")),64,256)),e&4096&&(i=this.signedShiftRight(i.mul(new le.default("15030750278693429944")),64,256)),e&8192&&(i=this.signedShiftRight(i.mul(new le.default("12247334978882834399")),64,256)),e&16384&&(i=this.signedShiftRight(i.mul(new le.default("8131365268884726200")),64,256)),e&32768&&(i=this.signedShiftRight(i.mul(new le.default("3584323654723342297")),64,256)),e&65536&&(i=this.signedShiftRight(i.mul(new le.default("696457651847595233")),64,256)),e&131072&&(i=this.signedShiftRight(i.mul(new le.default("26294789957452057")),64,256)),e&262144&&(i=this.signedShiftRight(i.mul(new le.default("37481735321082")),64,256)),i}signedShiftLeft(t,e,i){let n=t.toTwos(i).shln(e);return n.imaskn(i+1),n.fromTwos(i)}signedShiftRight(t,e,i){let n=t.toTwos(i).shrn(e);return n.imaskn(i-e+1),n.fromTwos(i-e)}},Tu=(t,e)=>{let i=qa(t);if(im(t))throw new Error(`${e}(${i}) had been deleted`);if(nm(t))throw new Error(`${e}(${i}) is not found`);return!0},Jr=60*1e3,G1=class extends es{async getPools(t=!1){let e=await this.contract.getConfig(),i=[],n;do n=await this.provider.getDynamicFields({parentId:e.PoolTableId,cursor:n?.nextCursor,limit:15}),i.push(...n.data.map(a=>a.objectId));while(n.hasNextPage);if(!i.length)return[];let o=(await Qo(this.provider,i,{showContent:!0})).map(a=>zi(a).value.fields.pool_id);if(!o.length)return[];let s=await Qo(this.provider,o,{showContent:!0});return t||(s=s.filter(a=>zi(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 Tu(e,"pool"),this.parsePool(e)},1500)}async createPool(t){let{fee:e,address:i,tickLower:n,tickUpper:r,sqrtPrice:o,slippage:s,coinTypeA:a,coinTypeB:l}=t,u=await this.contract.getConfig(),h=new U(t.amountA),y=new U(t.amountB),[v,C]=await Promise.all([this.coin.selectTradeCoins(i,a,h),this.coin.selectTradeCoins(i,l,y)]),O=t.txb||new cr.TransactionBlock,P=v.length>0?this.coin.convertTradeCoins(O,v,a,h):[this.coin.zero(a,O)],j=C.length>0?this.coin.convertTradeCoins(O,C,l,y):[this.coin.zero(l,O)];return O.moveCall({target:`${u.PackageId}::pool_factory::deploy_pool_and_mint`,typeArguments:[a,l,e.type],arguments:[O.object(u.PoolConfig),O.object(e.objectId),O.pure(o,"u128"),O.object(u.Positions),O.makeMoveVec({objects:P}),O.makeMoveVec({objects:j}),O.pure(Math.abs(n).toFixed(0),"u32"),O.pure(n<0,"bool"),O.pure(Math.abs(r).toFixed(0),"u32"),O.pure(r<0,"bool"),O.pure(h.toFixed(0),"u64"),O.pure(y.toFixed(0),"u64"),O.pure(this.getMinimumAmountBySlippage(h,s),"u64"),O.pure(this.getMinimumAmountBySlippage(y,s),"u64"),O.pure(i,"address"),O.pure(Date.now()+(t.deadline||Jr),"u64"),O.object(ar.SUI_CLOCK_OBJECT_ID),O.object(u.Versioned)]}),O}async addLiquidity(t){let{address:e,tickLower:i,tickUpper:n,slippage:r,pool:o}=t,s=await this.contract.getConfig(),a=await this.getPoolTypeArguments(o),[l,u]=a,[h,y]=await Promise.all([this.coin.getMetadata(l),this.coin.getMetadata(u)]);if(!h||!y)throw new Error("Invalid coin type");let v=new U(t.amountA),C=new U(t.amountB),[O,P]=await Promise.all([this.coin.selectTradeCoins(e,l,v),this.coin.selectTradeCoins(e,u,C)]),j=t.txb||new cr.TransactionBlock,B=O.length>0?this.coin.convertTradeCoins(j,O,l,v):[this.coin.zero(l,j)],D=P.length>0?this.coin.convertTradeCoins(j,P,u,C):[this.coin.zero(u,j)];return j.moveCall({target:`${s.PackageId}::position_manager::mint`,typeArguments:a,arguments:[j.object(o),j.object(s.Positions),j.makeMoveVec({objects:B}),j.makeMoveVec({objects:D}),j.pure(Math.abs(i).toFixed(0),"u32"),j.pure(i<0,"bool"),j.pure(Math.abs(n).toFixed(0),"u32"),j.pure(n<0,"bool"),j.pure(v.toFixed(0),"u64"),j.pure(C.toFixed(0),"u64"),j.pure(this.getMinimumAmountBySlippage(v,r),"u64"),j.pure(this.getMinimumAmountBySlippage(C,r),"u64"),j.pure(e,"address"),j.pure(Date.now()+(t.deadline||Jr),"u64"),j.object(ar.SUI_CLOCK_OBJECT_ID),j.object(s.Versioned)]}),j}async increaseLiquidity(t){let{pool:e,slippage:i,address:n,nft:r}=t,o=await this.contract.getConfig(),s=new U(t.amountA),a=new U(t.amountB),l=await this.getPoolTypeArguments(e),[u,h]=l,[y,v]=await Promise.all([this.coin.selectTradeCoins(n,u,s),this.coin.selectTradeCoins(n,h,a)]),C=t.txb||new cr.TransactionBlock,O=y.length>0?this.coin.convertTradeCoins(C,y,u,s):[this.coin.zero(u,C)],P=v.length>0?this.coin.convertTradeCoins(C,v,h,a):[this.coin.zero(h,C)];return C.moveCall({target:`${o.PackageId}::position_manager::increase_liquidity`,typeArguments:l,arguments:[C.object(e),C.object(o.Positions),C.makeMoveVec({objects:O}),C.makeMoveVec({objects:P}),C.object(r),C.pure(s.toFixed(0),"u64"),C.pure(a.toFixed(0),"u64"),C.pure(this.getMinimumAmountBySlippage(s,i),"u64"),C.pure(this.getMinimumAmountBySlippage(a,i),"u64"),C.pure(Date.now()+(t.deadline||Jr*3),"u64"),C.object(ar.SUI_CLOCK_OBJECT_ID),C.object(o.Versioned)]}),C}async decreaseLiquidity(t){let{slippage:e,nft:i,pool:n,decreaseLiquidity:r}=t,o=new U(t.amountA),s=new U(t.amountB),a=await this.contract.getConfig(),l=await this.getPoolTypeArguments(n),u=t.txb||new cr.TransactionBlock;return u.moveCall({target:`${a.PackageId}::position_manager::decrease_liquidity`,typeArguments:l,arguments:[u.object(n),u.object(a.Positions),u.object(i),u.pure(new Yo.default(r).toString(),"u128"),u.pure(this.getMinimumAmountBySlippage(o,e),"u64"),u.pure(this.getMinimumAmountBySlippage(s,e),"u64"),u.pure(Date.now()+(t.deadline||Jr*3),"u64"),u.object(ar.SUI_CLOCK_OBJECT_ID),u.object(a.Versioned)]}),u}async removeLiquidity(t){let e=await this.decreaseLiquidity(t);return e=await this.collectFee({txb:e,...t}),e=await this.collectReward({txb:e,...t}),e=await this.nft.burn({txb:e,nft:t.nft,pool:t.pool}),e}async collectFee(t){let{pool:e,nft:i,address:n,collectAmountA:r,collectAmountB:o}=t,s=t.txb||new cr.TransactionBlock;if(Number(r)===0&&Number(o)===0)return s;let a=await this.contract.getConfig(),l=await this.getPoolTypeArguments(e);return s.moveCall({target:`${a.PackageId}::position_manager::collect`,typeArguments:l,arguments:[s.object(e),s.object(a.Positions),s.object(i),s.pure(r,"u64"),s.pure(o,"u64"),s.pure(n),s.pure(Date.now()+(t.deadline||Jr*3),"u64"),s.object(ar.SUI_CLOCK_OBJECT_ID),s.object(a.Versioned)]}),s}async collectReward(t){let{pool:e,nft:i,rewardAmounts:n,address:r}=t,o=t.txb||new cr.TransactionBlock,s=await this.contract.getConfig(),a=await this.getPoolTypeArguments(e);return(await this.getPool(e)).reward_infos.forEach((u,h)=>{o.moveCall({target:`${s.PackageId}::position_manager::collect_reward`,typeArguments:[...a,u.fields.vault_coin_type],arguments:[o.object(e),o.object(s.Positions),o.object(i),o.object(u.fields.vault),o.pure(h,"u64"),o.pure(n[h],"u64"),o.pure(r),o.pure(Date.now()+(t.deadline||Jr*3),"u64"),o.object(ar.SUI_CLOCK_OBJECT_ID),o.object(s.Versioned)]})}),o}getTokenAmountsFromLiquidity(t){let e=new U((t.liquidity||new Yo.default(1e8)).toString()),i=new U(t.currentSqrtPrice.toString()),n=new U(t.lowerSqrtPrice.toString()),r=new U(t.upperSqrtPrice.toString()),o,s;t.currentSqrtPrice.lt(t.lowerSqrtPrice)?(o=this.math.toX64_Decimal(e).mul(r.sub(n)).div(n.mul(r)),s=new U(0)):t.currentSqrtPrice.lt(t.upperSqrtPrice)?(o=this.math.toX64_Decimal(e).mul(r.sub(i)).div(i.mul(r)),s=this.math.fromX64_Decimal(e.mul(i.sub(n)))):(o=new U(0),s=this.math.fromX64_Decimal(e.mul(r.sub(n))));let a=t.ceil!==!1?"ceil":"floor";return[new Yo.default(o[a]().toString()),new Yo.default(s[a]().toString())]}async getPoolTypeArguments(t){return this.getCacheOrSet("pool-type-"+t,async()=>(await this.getPool(t)).types)}parsePoolType(t,e){var i;let n=((i=t.replace(">","").split("<")[1])==null?void 0:i.split(/,\s*/))||[];if(e!==void 0&&e!==n.length)throw new Error("Invalid pool type");return n}async getFixedLiquidity(t){var e,i;let{coinTypeA:n,coinTypeB:r,amountA:o,amountB:s}=t,[a,l]=await Promise.all([this.coin.getMetadata(n),this.coin.getMetadata(r)]),u=new U(this.math.scaleDown(o,a.decimals)).mul((e=t.priceA)!=null?e:1),h=new U(this.math.scaleDown(s,l.decimals)).mul((i=t.priceB)!=null?i:1);return{liquidityA:u.toString(),liquidityB:h.toString(),liquidity:u.plus(h).toString()}}parsePool(t){let e=zi(t),i=qa(t),n=K1(t),r=this.parsePoolType(n,3);return this.getCacheOrSet("pool-type-"+i,async()=>r),{...e,objectId:i,type:n,types:r}}getMinimumAmountBySlippage(t,e){let i=new U(t),n=new U(1).minus(new U(e).div(100));if(n.lte(0)||n.gt(1))throw new Error("invalid slippage range");return i.mul(n).toFixed(0)}},H1=(t,e)=>{let{pool:i,position:n,tickLowerDetail:r,tickUpperDetail:o}=e,s=new Mn.default(i.fee_growth_global_a),a=new Mn.default(n.fee_growth_inside_a),l=new Mn.default(n.tokens_owed_a),u=new Mn.default(i.fee_growth_global_b),h=new Mn.default(n.fee_growth_inside_b),y=new Mn.default(n.tokens_owed_b),v=new Mn.default(n.liquidity),C,O,P,j,B=t.bitsToNumber(i.tick_current_index.fields.bits),D=t.bitsToNumber(n.tick_lower_index.fields.bits),q=t.bitsToNumber(n.tick_upper_index.fields.bits);B<D?(C=t.subUnderflowU128(s,r.feeGrowthOutsideA),O=t.subUnderflowU128(u,r.feeGrowthOutsideB)):(C=r.feeGrowthOutsideA,O=r.feeGrowthOutsideB),B<q?(P=o.feeGrowthOutsideA,j=o.feeGrowthOutsideB):(P=t.subUnderflowU128(s,o.feeGrowthOutsideA),j=t.subUnderflowU128(u,o.feeGrowthOutsideB));let K=t.subUnderflowU128(t.subUnderflowU128(s,C),P),Z=t.subUnderflowU128(t.subUnderflowU128(u,O),j),G=t.subUnderflowU128(K,a).mul(v).shrn(64),J=t.subUnderflowU128(Z,h).mul(v).shrn(64);return{feeOwedA:l.add(G).toString(),feeOwedB:y.add(J).toString()}},Yp=new ts.default(0),Qp=new ts.default(1),Z1=new ts.default(2),X1={mul(t,e,i){let n=t.mul(e);if(this.isOverLimit(n,i))throw new Error(`Mul result higher than u${i}`);return n},mulDiv(t,e,i,n){return this.mulDivRoundUpIf(t,e,i,!1,n)},mulDivRoundUpIf(t,e,i,n,r){if(i.eq(Yp))throw new Error("mulDiv denominator is zero");let o=this.mul(t,e,r),s=o.div(i);return n&&o.mod(i).gt(Yp)?s.add(Qp):s},isOverLimit(t,e){let i=Z1.pow(new ts.default(e)).sub(Qp);return t.gt(i)}},J1=(t,e)=>{var i,n,r,o;let{pool:s,position:a,tickLowerDetail:l,tickUpperDetail:u,timeStampInSeconds:h}=e,y=new ki.default(new U(s.reward_last_updated_time_ms).div(1e3).toFixed(0)),C=(h??new ki.default(Date.now()).div(new ki.default(1e3))).sub(new ki.default(y)),O=[],P=new ki.default(s.liquidity),j=new ki.default(a.liquidity);for(let B=0;B<3;++B){let D=s.reward_infos[B],q={emissionsPerSecondX64:new ki.default(D?D.fields.emissions_per_second:"0"),growthGlobalX64:new ki.default(D?D.fields.growth_global:"0")},K={growthInsideCheckpoint:new ki.default((n=(i=a.reward_infos[B])==null?void 0:i.fields.reward_growth_inside)!=null?n:"0"),amountOwed:new ki.default((o=(r=a.reward_infos[B])==null?void 0:r.fields.amount_owed)!=null?o:"0")},Z=q.growthGlobalX64;if(!P.isZero()){let k=X1.mulDiv(C,q.emissionsPerSecondX64,P,128);Z=q.growthGlobalX64.add(k)}let G=l.rewardGrowthsOutside[B],J=u.rewardGrowthsOutside[B],x=Z;l.initialized&&(x=t.bitsToNumber(s.tick_current_index.fields.bits)<t.bitsToNumber(a.tick_lower_index.fields.bits)?t.subUnderflowU128(Z,G):G);let I=new ki.default(0);u.initialized&&(I=t.bitsToNumber(s.tick_current_index.fields.bits)<t.bitsToNumber(a.tick_upper_index.fields.bits)?J:t.subUnderflowU128(Z,J));let A=t.subUnderflowU128(t.subUnderflowU128(Z,x),I),E=K.amountOwed.shln(64);O[B]=E.add(t.subUnderflowU128(A,K.growthInsideCheckpoint).mul(j)).shrn(64).toString()}return O},Y1=class extends es{async getOwner(t){let e=await this.getObject(t),i=V1(e);if(!(!i||typeof i=="string")){if("ObjectOwner"in i)return i.ObjectOwner;if("AddressOwner"in i)return i.AddressOwner}}async getFields(t){let e=await this.getObject(t);return zi(e)}async getPositionFields(t){let e=await this.contract.getConfig(),i=await this.provider.getDynamicFieldObject({parentId:e.Positions,name:{type:"address",value:t}});return zi(i)}async getPositionFieldsByPositionId(t){let e=await this.provider.getObject({id:t,options:{showContent:!0}});return Tu(e,"position"),zi(e)}async getPositionTick(t,e){let i=await this.provider.getDynamicFieldObject({parentId:t,name:{type:e.type,value:e.fields}}),n=zi(i);if(n)return{tickIndex:this.math.bitsToNumber(n.name.fields.bits),initialized:n.value.fields.initialized,liquidityNet:new ii.default(this.math.bitsToNumber(n.value.fields.liquidity_net.fields.bits,128).toString()),liquidityGross:new ii.default(n.value.fields.liquidity_gross),feeGrowthOutsideA:new ii.default(n.value.fields.fee_growth_outside_a),feeGrowthOutsideB:new ii.default(n.value.fields.fee_growth_outside_b),rewardGrowthsOutside:n.value.fields.reward_growths_outside.map(r=>new ii.default(r))}}async getPositionAPR(t){let{poolId:e,getPrice:i,fees24h:n,tickLower:r,tickUpper:o}=t,s=await this.pool.getPool(e),a=this.math.bitsToNumber(s.tick_current_index.fields.bits),[l,u,h,y]=await Promise.all([this.coin.getMetadata(s.types[0]),this.coin.getMetadata(s.types[1]),i(s.types[0]),i(s.types[1])]);if(!h||!y||r>=o||a<r||a>=o)return{fees:"0",rewards:"0",total:"0"};let{minTokenA:v,minTokenB:C}=this.getRemoveLiquidityQuote(s,r,o),O=new U(this.math.scaleDown(v.toString(),l.decimals)).mul(h),P=new U(this.math.scaleDown(C.toString(),u.decimals)).mul(y),j=O.add(P),B=j.isZero()?new U(0):new U(n).mul(365).div(j).mul(100),D=new U(0);return await Promise.all(s.reward_infos.map(async q=>{let{emissions_per_second:K}=q.fields,Z=this.coin.formatCoinType(q.fields.vault_coin_type),[G,J]=await Promise.all([i(Z),this.coin.getMetadata(Z)]);!K||K==="0"||!G||(D=D.add(new U(new ii.default(K).shrn(64).toString()).div(10**J.decimals).mul(31536e3).mul(G).div(j).mul(100)))})),{fees:B.toString(),rewards:D.toString(),total:B.plus(D).toString()}}getRemoveLiquidityQuote(t,e,i){let n=new ii.default(0),r=new ii.default(t.liquidity),o=this.math.bitsToNumber(t.tick_current_index.fields.bits),s=this.math.tickIndexToSqrtPriceX64(e),a=this.math.tickIndexToSqrtPriceX64(i);if(o<e){let u=this.getTokenAFromLiquidity(r,s,a);return{minTokenA:this.adjustForSlippage(u),minTokenB:n}}if(o<i){let u=new ii.default(t.sqrt_price),h=this.getTokenAFromLiquidity(r,u,a),y=this.getTokenBFromLiquidity(r,s,u);return{minTokenA:this.adjustForSlippage(h),minTokenB:this.adjustForSlippage(y)}}let l=this.getTokenBFromLiquidity(r,s,a);return{minTokenA:n,minTokenB:this.adjustForSlippage(l)}}adjustForSlippage(t){let e={numerator:new ii.default(0),denominator:new ii.default(1e3)};return t.mul(e.denominator).div(e.denominator.add(e.numerator))}getTokenAFromLiquidity(t,e,i){let n=t.mul(i.sub(e)).shln(64),r=i.mul(e);return n.div(r)}getTokenBFromLiquidity(t,e,i){return t.mul(i.sub(e)).shrn(64)}async burn(t){let{pool:e,nft:i}=t,n=t.txb||new rm.TransactionBlock,r=await this.contract.getConfig(),o=await this.pool.getPoolTypeArguments(e);return n.moveCall({target:`${r.PackageId}::position_manager::burn`,typeArguments:o,arguments:[n.object(r.Positions),n.object(i),n.object(r.Versioned)]}),n}async getPositionLiquidityUSD(t){let{position:e,poolId:i,priceA:n,priceB:r}=t,o=await this.pool.getPool(i),s=this.pool.getTokenAmountsFromLiquidity({currentSqrtPrice:new ii.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 ii.default(e.liquidity===void 0?1e8:e.liquidity)}),[a,l]=await Promise.all([this.coin.getMetadata(o.types[0]),this.coin.getMetadata(o.types[1])]),u=new U(s[0].toString()).div(10**a.decimals).mul(n||0),h=new U(s[1].toString()).div(10**l.decimals).mul(r||0);return u.plus(h).toString()}async getUnclaimedFeesAndRewards(t){let{position:e,poolId:i}=t,[n,r,o]=await Promise.all([this.pool.getPool(i),this.nft.getPositionTick(i,e.tick_lower_index),this.nft.getPositionTick(i,e.tick_upper_index)]),s={...t,pool:n,tickLowerDetail:r,tickUpperDetail:o},[a,l]=await Promise.all([this.getUnclaimedFees(s),this.getUnclaimedRewards(s)]),{unclaimedFees:u,...h}=a,{unclaimedRewards:y,...v}=l;return{fees:a.unclaimedFees.toString(),rewards:y.toString(),total:u.plus(y).toString(),fields:{...h,...v}}}async getUnclaimedFees(t){let{position:e,pool:i,getPrice:n,tickLowerDetail:r,tickUpperDetail:o}=t,[s,a,l,u]=await Promise.all([this.coin.getMetadata(i.types[0]),this.coin.getMetadata(i.types[1]),n(i.types[0]),n(i.types[1])]),h=H1(this.math,{pool:i,position:e,tickLowerDetail:r,tickUpperDetail:o}),y=this.math.scaleDown(h.feeOwedA,s.decimals),v=this.math.scaleDown(h.feeOwedB,a.decimals);function C(j,B){return new U(1e6).mul(U.pow(10,B)).lt(j)}C(y,s.decimals)&&(y="0",h.feeOwedA="0"),C(v,a.decimals)&&(v="0",h.feeOwedB="0");let O=l===void 0?new U(0):new U(l).mul(y),P=u===void 0?new U(0):new U(u).mul(v);return{unclaimedFees:O.plus(P),scaledFeeOwedA:y,scaledFeeOwedB:v,...h}}async getUnclaimedRewards(t){let{position:e,pool:i,getPrice:n,tickLowerDetail:r,tickUpperDetail:o}=t,s=J1(this.math,{pool:i,position:e,tickLowerDetail:r,tickUpperDetail:o}),a=[...s],l=i.reward_infos.map(v=>this.coin.formatCoinType(v.fields.vault_coin_type)),u=await Promise.all([...i.reward_infos.map((v,C)=>this.coin.getMetadata(l[C]))]),h=await Promise.all(i.reward_infos.map((v,C)=>n(l[C])));u.forEach((v,C)=>{a[C]=this.math.scaleDown(a[C],v.decimals)});let y=new U(0);return i.reward_infos.some((v,C)=>{let O=h[C];return O?(y=y.plus(new U(O).mul(a[C])),!1):(y=y.plus(1),!0)}),{unclaimedRewards:y,collectRewards:s,scaledCollectRewards:a}}getObject(t){return this.getCacheOrSet("nft-object-"+t,async()=>{let e=await this.provider.getObject({id:t,options:{showContent:!0,showOwner:!0}});return Tu(e,"nft"),e})}},Q1=class extends es{isSUI(t){return(0,om.normalizeSuiAddress)(t)==="0x000000000000000000000000000000000000000000000000000002::sui::sui"}async getMetadata(t){return this.getCacheOrSet(`coin-metadata-${t}`,async()=>{let e=await this.provider.getCoinMetadata({coinType:t});if(!e)throw new Error(`Coin "${t}" is not found`);return e})}async selectTradeCoins(t,e,i){if(i.eq(0))return[];let n=[],r=[],o=new U(0),s;do s=await this.provider.getCoins({owner:t,coinType:e,cursor:s?.nextCursor}),n.push(...s.data);while(s.hasNextPage);n.sort((a,l)=>Number(l.balance)-Number(a.balance));for(let a of n)if(r.push(a.coinObjectId),o=o.add(a.balance),o.gte(i))break;return r}convertTradeCoins(t,e,i,n){return this.isSUI(i)?[t.splitCoins(t.gas,[t.pure(n.toNumber())])[0]]:e.map(r=>t.object(r))}zero(t,e){return e.moveCall({typeArguments:[t],target:"0x2::coin::zero",arguments:[]})}formatCoinType(t,e=!1){let n=t.replace(/^0x/i,"");return n=n.replace(/^0+(2::sui::SUI)$/,"$1"),"0x"+(e&&n.length<64&&t!=="2::sui:SUI"?"0".repeat(64-n.length):"")+n}},ek=60*1e3,ja=100,tk=class extends es{async swap(t){let{coinTypeA:e,coinTypeB:i,address:n,amountSpecifiedIsInput:r,slippage:o}=t,s=new U(t.amountA),a=new U(t.amountB),l=await this.contract.getConfig(),u=await Promise.all(t.routes.map(async P=>{let j=await this.pool.getPoolTypeArguments(P.pool),[B,D]=await Promise.all([this.coin.getMetadata(j[0]),this.coin.getMetadata(j[1])]);return{...P,coinA:B,coinB:D,typeArguments:j}})),h=await this.coin.selectTradeCoins(n,e,s),{functionName:y,typeArguments:v}=this.getFunctionNameAndTypeArguments(u.map(({typeArguments:P})=>P),e,i),C=u.map(({nextTickIndex:P,coinA:j,coinB:B,a2b:D})=>{let q=this.math.tickIndexToPrice(P,j.decimals,B.decimals);return this.sqrtPriceWithSlippage(q,o,D,j.decimals,B.decimals)}),O=t.txb||new Na.TransactionBlock;return O.moveCall({target:`${l.PackageId}::swap_router::${y}`,typeArguments:v,arguments:[...u.map(({pool:P})=>O.object(P)),O.makeMoveVec({objects:this.coin.convertTradeCoins(O,h,e,s)}),O.pure((r?s:a).toFixed(0),"u64"),O.pure(this.amountOutWithSlippage(r?a:s,o,r),"u64"),...C.map(P=>O.pure(P,"u128")),O.pure(r,"bool"),O.pure(n,"address"),O.pure(Date.now()+(t.deadline||ek*3),"u64"),O.object(Fa.SUI_CLOCK_OBJECT_ID),O.object(l.Versioned)]}),O}async computeSwapResult(t){let{pools:e,amountSpecified:i,amountSpecifiedIsInput:n,address:r,tickStep:o}=t,s=await this.contract.getConfig(),a=e.map(y=>y.pool),l=await Qo(this.provider,a,{showContent:!0}),u=new Na.TransactionBlock;l.map(async y=>{let v=zi(y),C=e.find(D=>D.pool===v.id.id),O=this.math.bitsToNumber(v.tick_current_index.fields.bits),P=O-v.tick_spacing*(o||ja),j=O+v.tick_spacing*(o||ja);P=P<Ea?Ea:P,j=j>Ma?Ma:j;let B=this.pool.parsePoolType(Ra(y));u.moveCall({target:`${s.PackageId}::pool_fetcher::compute_swap_result`,typeArguments:B,arguments:[u.object(v.id.id),u.pure(C.a2b,"bool"),u.pure(new U(i).toFixed(0),"u128"),u.pure(n,"bool"),u.pure(this.math.tickIndexToSqrtPriceX64(C.a2b?P:j).toString(),"u128"),u.object(Fa.SUI_CLOCK_OBJECT_ID),u.object(s.Versioned)]})});let h=await this.provider.devInspectTransactionBlock({transactionBlock:u,sender:r});if(h.error)throw new Error(h.error);return h.events.map(y=>y.parsedJson)}async computeSwapResultV2(t){let{pools:e,amountSpecifiedIsInput:i,address:n,tickStep:r}=t,o=await this.contract.getConfig(),s=e.map(h=>h.pool),a=await Qo(this.provider,Array.from(new Set(s)),{showContent:!0}),l=new Na.TransactionBlock;e.forEach(async h=>{let y=a.find(B=>qa(B)===h.pool),v=zi(y),C=this.math.bitsToNumber(v.tick_current_index.fields.bits),O=C-v.tick_spacing*(r||ja),P=C+v.tick_spacing*(r||ja);O=O<Ea?Ea:O,P=P>Ma?Ma:P;let j=this.pool.parsePoolType(Ra(y));l.moveCall({target:`${o.PackageId}::pool_fetcher::compute_swap_result`,typeArguments:j,arguments:[l.object(v.id.id),l.pure(h.a2b,"bool"),l.pure(new U(h.amountSpecified).toFixed(0),"u128"),l.pure(i,"bool"),l.pure(this.math.tickIndexToSqrtPriceX64(h.a2b?O:P).toString(),"u128"),l.object(Fa.SUI_CLOCK_OBJECT_ID),l.object(o.Versioned)]})});let u=await this.provider.devInspectTransactionBlock({transactionBlock:l,sender:n});if(u.error)throw new Error(u.error);return u.events.map(h=>h.parsedJson)}getFunctionNameAndTypeArguments(t,e,i){let n=[],r=["swap"];if(t.length===1)n=t[0],e===n[0]?r.push("a","b"):r.push("b","a");else{let o=t[0],s=t[1];e===o[0]?(r.push("a","b"),n.push(o[0],o[2],o[1])):(r.push("b","a"),n.push(o[1],o[2],o[0])),n.push(s[2],i),i===s[0]?r.push("c","b"):r.push("b","c")}return{functionName:r.join("_"),typeArguments:n}}amountOutWithSlippage(t,e,i){if(i){let r=new U(100).minus(e).div(100);return new U(t).mul(r).toFixed(0)}let n=new U(100).plus(e).div(100);return new U(t).mul(n).toFixed(0)}sqrtPriceWithSlippage(t,e,i,n,r){let o=new U(t).mul(i?new U(100).minus(e).div(100):new U(100).plus(e).div(100)),s=this.math.priceToSqrtPriceX64(o,n,r);return s.lt(new Cu.BN(ku))?ku:s.gt(new Cu.BN(vu))?vu:s.toString()}},At=class{constructor(t,e){this.network=t,Wi(this,"pool"),Wi(this,"contract"),Wi(this,"math",new z1),Wi(this,"account",new q1),Wi(this,"coin"),Wi(this,"nft"),Wi(this,"trade"),Wi(this,"provider"),this.provider=e?e instanceof lr.SuiClient?e:new lr.SuiClient(e):new lr.SuiClient({url:t==="mainnet"?(0,lr.getFullnodeUrl)("mainnet"):(0,lr.getFullnodeUrl)("testnet")}),this.contract=new W1(this),this.pool=new G1(this),this.nft=new Y1(this),this.coin=new Q1(this),this.trade=new tk(this)}};var ln=require("@msafe/sui3-utils"),Vu=require("@mysten/sui.js/bcs"),Rn=require("@mysten/sui.js/utils");var k_=require("@mysten/sui.js/transactions");var S_=require("@msafe/sui3-utils"),Xa=require("@msafe/sui3-utils"),zu=require("@mysten/sui.js/bcs"),qn=require("@mysten/sui.js/utils"),x_=require("@mysten/sui.js/transactions"),I_=require("@mysten/sui.js/transactions"),P_=require("@mysten/sui.js/transactions"),ik=Object.defineProperty,Nm=(t,e)=>{for(var i in e)ik(t,i,{get:e[i],enumerable:!0})},re=class{constructor(t){this.data=t}get application(){return"msafe-core"}serialize(){return JSON.stringify((0,qm.default)(this.data))}},nk={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"},rk={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"}]}}},ok={fullRpcUrl:"https://fullnode.testnet.sui.io/",simulationAccount:{address:"0xcd0247d0b67e53dde69b285e7a748e3dc390e8a5244eb9dd9c5c53d95e4cf0aa"},cetus_config:{package_id:"0xf5ff7d5ba73b581bca6b4b9fa0049cd320360abd154b809f8700a8fd3cfaf7ca",published_at:"0xf5ff7d5ba73b581bca6b4b9fa0049cd320360abd154b809f8700a8fd3cfaf7ca",config:{coin_list_id:"0x257eb2ba592a5480bba0a97d05338fab17cc3283f8df6998a0e12e4ab9b84478",launchpad_pools_id:"0xdc3a7bd66a6dcff73c77c866e87d73826e446e9171f34e1c1b656377314f94da",clmm_pools_id:"0x26c85500f5dd2983bf35123918a144de24e18936d0b234ef2b49fbb2d3d6307d",admin_cap_id:"0x1a496f6c67668eb2c27c99e07e1d61754715c1acf86dac45020c886ac601edb8",global_config_id:"0xe1f3db327e75f7ec30585fa52241edf66f7e359ef550b533f89aa1528dd1be52",coin_list_handle:"0x3204350fc603609c91675e07b8f9ac0999b9607d83845086321fca7f469de235",launchpad_pools_handle:"0xae67ff87c34aceea4d28107f9c6c62e297a111e9f8e70b9abbc2f4c9f5ec20fd",clmm_pools_handle:"0xd28736923703342b4752f5ed8c2f2a5c0cb2336c30e1fed42b387234ce8408ec"}},clmm_pool:{package_id:"0x0868b71c0cba55bf0faf6c40df8c179c67a4d0ba0e79965b68b3d72d7dfbf666",published_at:"0x1c29d658882c40eeb39a8bb8fe58f71a216a918acb3e3eb3b47d24efd07257f2",config:{pools_id:"0xc090b101978bd6370def2666b7a31d7d07704f84e833e108a969eda86150e8cf",global_config_id:"0x6f4149091a5aea0e818e7243a13adcfb403842d670b9a2089de058512620687a",global_vault_id:"0xf3114a74d54cbe56b3e68f9306661c043ede8c6615f0351b0c3a93ce895e1699",admin_cap_id:""}},integrate:{package_id:"0x8627c5cdcd8b63bc3daa09a6ab7ed81a829a90cafce6003ae13372d611fbb1a9",published_at:"0xf1a5d0c5b0593e41d13f9684ca91365bdfe54a98836c1d33c90e361a031fac74",version:6},deepbook:{package_id:"0x000000000000000000000000000000000000000000000000000000000000dee9",published_at:"0x000000000000000000000000000000000000000000000000000000000000dee9"},deepbook_endpoint_v2:{package_id:"0xa34ffca2c6540e1ca9e53963ab43e7b1eed7b82e37696c743bb7c6179c15dfa6",published_at:"0xa34ffca2c6540e1ca9e53963ab43e7b1eed7b82e37696c743bb7c6179c15dfa6"},aggregatorUrl:"https://api-sui.devcetus.com/router",swapCountUrl:"https://api-sui.devcetus.com/v2/sui/swap/count"},sk={launchpad:{package_id:"0x3beee8416089a5cbff9cfd5c0a2ce2937b0452dc7e2a3ab4dc431c7be05c2335",published_at:"0x3beee8416089a5cbff9cfd5c0a2ce2937b0452dc7e2a3ab4dc431c7be05c2335",config:{pools_id:"0xccc10403ab3da4ae943847908e0e674fe1fdab81c6383e4c6dcd0eea0edade3d",admin_cap_id:"0x8a72713049dbcfc40902ff209dc5e6066fe455d152baa235957c84d7a3b875ed",config_cap_id:"0x16492b4252b01debb60f8a825334020d7fdb9d895b52f8139c98618de30817fc"}},ido:{package_id:"0x1352bf18ef20458f7cc773852d4a90b240015a6a54479dda3a1debfc500bf044",published_at:"0xbd09a0889ea9970b821512428bab3e2fd01e16809a90a325cd3b3d3573eab6a4",config:{pools_id:"0x346bee25ab4d15bcfa9484ef5ebd4d7c94eb665ebaa745ff4094936a7f59a8b1",admin_cap_id:"0xc1bb19a24d3bb65dfd4f3835637b63347c223c67cde4b0888f1a857974f33cbb",package_version_id:"0x3ccf1b38e3259e638b980d4e6b49eac8c5aa94d3cb2ace5e75f0a551c8e67e5e"}},xcetus:{package_id:"0xdebaab6b851fd3414c0a62dbdf8eb752d6b0d31f5cfce5e38541bc6c6daa8966",published_at:"0xdebaab6b851fd3414c0a62dbdf8eb752d6b0d31f5cfce5e38541bc6c6daa8966",config:{xcetus_manager_id:"0x3be34cbad122c8b100ed7157d762b9610e68b3c65734e08bc3c3baf857da807d",lock_manager_id:"0x7c67e805182e3fecd098bd68a6b06c317f28f8c6249bd771e07904a10b424e60",lock_handle_id:"0xc5f3bbfefe9a45c13da7a34bc72cac122ee45d633690476a8ac56bd2c4e78c86"}},xcetus_dividends:{package_id:"0x20d948d640edd0c749f533d41efc5f843f212d441220324ad7959c6e1d281828",published_at:"0x20d948d640edd0c749f533d41efc5f843f212d441220324ad7959c6e1d281828",config:{dividend_manager_id:"0x13b7facb704fae1d199ff0038b8acabc253415a77d142b39189dee97d457e442",dividend_admin_id:"0x5eb78463007422d4130b21f61c180bcd190819b7792f56e00a61df3b8fb928ef",dividend_settle_id:"0x495095e13a170ff494d242ae44ac2c7453011ca6c33cff27498010105e10e4b4"}},cetus_faucet:{package_id:"0x1a69aee6be709054750949959a67aedbb4200583b39586d5e3eabe57f40012c7",published_at:"0x1a69aee6be709054750949959a67aedbb4200583b39586d5e3eabe57f40012c7"},xtoken:{package_id:"",published_at:"",config:{xtoken_manager_id:"",lock_manager_id:"",lock_handle_id:""}},xtoken_dividends:{package_id:"",published_at:"",config:{dividend_manager_id:"",dividend_admin_id:"",dividend_settle_id:""}},token_faucet:{package_id:"",published_at:""},booster:{package_id:"",published_at:"",config:{booster_config_id:"",booster_pool_handle:""}},maker_bonus:{package_id:"",published_at:"",config:{maker_config_id:"",maker_pool_handle:""}},liquidity_stratefy:{package_id:"",published_at:"",version:void 0,config:void 0},vaults:{package_id:"0x25cff94bdb454bae6a5565d09047bfe2b230025ef3bd2199622ec48d854b86b9",published_at:"0x25cff94bdb454bae6a5565d09047bfe2b230025ef3bd2199622ec48d854b86b9",config:{admin_cap_id:"0x9b2d6f5be2650d16d27cd630c4539a76d7793970343ed3cbb023e13f1637c07c",vaults_manager_id:"0xc0a1a937df08880e395d85014ff40c74f13abe7a53abdbffea36f51adaaaf79e",vaults_pool_handle:"0x3ab02203de753de9c8198cc0ce7594dc960878f2c34c5c5a4b7742082241860a"}},limit_order:{package_id:"",published_at:"",version:1,config:{rate_orders_indexer_id:"",rate_orders_indexer_handle:"",global_config_id:"",token_list_handle:"",user_orders_indexer_id:"",user_orders_indexer_handle:""}},frams:{package_id:"0xfa0d98e99c1dbdbea1b0fe089fa93ebab40a7719ae4160c42cc78ebfe029fda0",published_at:"0xfa0d98e99c1dbdbea1b0fe089fa93ebab40a7719ae4160c42cc78ebfe029fda0",config:{global_config_id:"0x5082c7a5ee9a758025d7b0a5e8aa08b56625c7cd535b8909d2b7993991e229cc",rewarder_manager_id:"0xe789e092dbd9dceadbe89350c4761a6f2e11647aab97f09746a01b151926cc0e",rewarder_manager_handle:"0x7e7dd42392b5d82564dc9ad5093a111c5f0598cc9f806cff257d7dacb71f7837",admin_cap_id:"0x4ec248bca2d1fc05f39fd7491ab490464a46d128624caa4d3c2a66d957ef40b0"}},haedal:{package_id:"0xac2afb455cbcdc2ff1a2e9bbb8aa4ccb4506a544b08c740886892a5cdf92f472",published_at:"0x9dac9c5770e5f930d2223ff68782958701acfaee9337e8d8363978ce7670dffb",config:{support_stakings:[{staking_id:"0x6e384d2da5b040b27f973155e25bbe4beb0ad5ca8ee0a36e20dff356094c9fc0",from_coin_type:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",to_coin_type:"0xac2afb455cbcdc2ff1a2e9bbb8aa4ccb4506a544b08c740886892a5cdf92f472::hasui::HASUI"}]}}},ao=(t,e)=>{let i=t==="sui:mainnet"?nk:ok,n=new _h(i);return n.senderAddress=e.address,n},ni=(t,e)=>{let i=ao(t,e),n=t==="sui:mainnet"?rk:sk;return new Sh(n,i)},ak=async(t,e,i)=>await ao(i,e).Position.createAddLiquidityFixTokenPayload(t?.parameter,t?.gasEstimateArg),ck=async(t,e,i)=>await ao(i,e).Position.createAddLiquidityFixTokenPayload(t?.parameter,t?.gasEstimateArg),lk=async(t,e,i)=>await ao(i,e).Position.closePositionTransactionPayload(t),uk=async(t,e,i)=>await ao(i,e).Position.removeLiquidityTransactionPayload(t),dk=async(t,e,i)=>await ao(i,e).Rewarder.collectRewarderTransactionPayload(t),fk=class Lm extends re{constructor(e){super(e),this.data=e}txType=Rm.TransactionType.Other;txSubType="OpenAndAddLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await ak(r,i,n)}static fromData(e){return new Lm(e)}},hk=class Um extends re{constructor(e){super(e),this.data=e}txType=$m.TransactionType.Other;txSubType="ClaimFeeAndMining";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await dk(r,i,n)}static fromData(e){return new Um(e)}},pk=class Vm extends re{constructor(e){super(e),this.data=e}txType=Km.TransactionType.Other;txSubType="DecreaseLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await uk(r,i,n)}static fromData(e){return new Vm(e)}},mk=async(t,e,i)=>await ni(i,e).Farms.openPositionAddLiquidityStakePaylod(t),gk=async(t,e,i)=>await ni(i,e).Farms.addLiquidityFixCoinPayload(t),_k=async(t,e,i)=>await ni(i,e).Farms.removeLiquidityPayload(t),bk=async(t,e,i)=>await ni(i,e).Farms.removeLiquidityPayload(t),yk=async(t,e,i)=>await ni(i,e).Farms.claimFeeAndClmmReward(t),wk=async(t,e,i)=>{let n=ni(i,e);return console.log("getFarmingHarvest txbParams: ",t),await n.Farms.harvestPayload(t)},vk=async(t,e,i)=>{let n=ni(i,e),r=Object.values(t);return console.log("getFarmingBatchHarvest params: ",r),await n.Farms.batchHarvestPayload(r)},kk=async(t,e,i)=>await ni(i,e).Farms.depositPayload(t),Tk=async(t,e,i)=>await ni(i,e).Farms.withdrawPayload(t),Ck=class zm extends re{constructor(e){super(e),this.data=e}txType=Wm.TransactionType.Other;txSubType="FarmingOpenAndAddLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await mk(r,i,n)}static fromData(e){return new zm(e)}},Sk=class Hm extends re{constructor(e){super(e),this.data=e}txType=Gm.TransactionType.Other;txSubType="FarmingBatchHarvest";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await vk(r,i,n)}static fromData(e){return new Hm(e)}},xk=class Xm extends re{constructor(e){super(e),this.data=e}txType=Zm.TransactionType.Other;txSubType="FarmingClaimFeeAndReward";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await yk(r,i,n)}static fromData(e){return new Xm(e)}},Ak=class Ym extends re{constructor(e){super(e),this.data=e}txType=Jm.TransactionType.Other;txSubType="FarmingDecreaseLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await _k(r,i,n)}static fromData(e){return new Ym(e)}},Ik=class eg extends re{constructor(e){super(e),this.data=e}txType=Qm.TransactionType.Other;txSubType="FarmingHarvest";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await wk(r,i,n)}static fromData(e){return new eg(e)}},Ok=class ig extends re{constructor(e){super(e),this.data=e}txType=tg.TransactionType.Other;txSubType="FarmingIncreaseLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await gk(r,i,n)}static fromData(e){return new ig(e)}},Pk=class rg extends re{constructor(e){super(e),this.data=e}txType=ng.TransactionType.Other;txSubType="FarmingRemoveLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await bk(r,i,n)}static fromData(e){return new rg(e)}},Dk=class sg extends re{constructor(e){super(e),this.data=e}txType=og.TransactionType.Other;txSubType="FarmingStake";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await kk(r,i,n)}static fromData(e){return new sg(e)}},Mk=class cg extends re{constructor(e){super(e),this.data=e}txType=ag.TransactionType.Other;txSubType="FarmingUnstake";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Tk(r,i,n)}static fromData(e){return new cg(e)}},Ek=class ug extends re{constructor(e){super(e),this.data=e}txType=lg.TransactionType.Other;txSubType="IncreaseLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await ck(r,i,n)}static fromData(e){return new ug(e)}},jk=class fg extends re{constructor(e){super(e),this.data=e}txType=dg.TransactionType.Other;txSubType="RemoveLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await lk(r,i,n)}static fromData(e){return new fg(e)}},Bk=async(t,e,i)=>await ni(i,e).XCetusModule.convertPayload(t),Nk=async(t,e,i)=>await ni(i,e).XCetusModule.redeemLockPayload(t),Fk=async(t,e,i)=>await ni(i,e).XCetusModule.redeemDividendV2Payload(t.venft_id,t.bonus_types,t.xTokenType),Rk=async(t,e,i)=>await ni(i,e).XCetusModule.cancelRedeemPayload(t),qk=async(t,e,i)=>await ni(i,e).XCetusModule.redeemPayload(t),Lk=class pg extends re{constructor(e){super(e),this.data=e}txType=hg.TransactionType.Other;txSubType="xCETUSCancelRedeem";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Rk(r,i,n)}static fromData(e){return new pg(e)}},$k=class gg extends re{constructor(e){super(e),this.data=e}txType=mg.TransactionType.Other;txSubType="xCETUSClaimStakingRwewards";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Fk(r,i,n)}static fromData(e){return new gg(e)}},Uk=class bg extends re{constructor(e){super(e),this.data=e}txType=_g.TransactionType.Other;txSubType="xCETUSConvert";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Bk(r,i,n)}static fromData(e){return new bg(e)}},Kk=class wg extends re{constructor(e){super(e),this.data=e}txType=yg.TransactionType.Other;txSubType="xCETUSRedeem";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await qk(r,i,n)}static fromData(e){return new wg(e)}},Vk=class kg extends re{constructor(e){super(e),this.data=e}txType=vg.TransactionType.Other;txSubType="xCETUSRedeemLock";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Nk(r,i,n)}static fromData(e){return new kg(e)}},Wk=class{application="cetus";async deserialize(t){console.log("Cetus helper deserialize input: ",t);let{txbParams:e,action:i}=t;return{txType:Fm.TransactionType.Other,txSubType:i,intentionData:{txbParams:{...e},action:i}}}async build(t){let{suiClient:e,account:i,network:n}=t;console.log("helper build input: ",t),console.log("helper build input.intentionData: ",t.intentionData),console.log("helper build input.intentionData JSON: ",JSON.stringify(t.intentionData));let r;switch(t.txSubType){case"OpenAndAddLiquidity":r=fk.fromData(t.intentionData);break;case"IncreaseLiquidity":r=Ek.fromData(t.intentionData);break;case"DecreaseLiquidity":r=pk.fromData(t.intentionData);break;case"RemoveLiquidity":r=jk.fromData(t.intentionData);break;case"ClaimFeeAndMining":r=hk.fromData(t.intentionData);break;case"FarmingOpenAndAddLiquidity":r=Ck.fromData(t.intentionData);break;case"FarmingIncreaseLiquidity":r=Ok.fromData(t.intentionData);break;case"FarmingDecreaseLiquidity":r=Ak.fromData(t.intentionData);break;case"FarmingRemoveLiquidity":r=Pk.fromData(t.intentionData);break;case"FarmingClaimFeeAndReward":r=xk.fromData(t.intentionData);break;case"FarmingHarvest":r=Ik.fromData(t.intentionData);break;case"FarmingBatchHarvest":r=Sk.fromData(t.intentionData);break;case"FarmingStake":r=Dk.fromData(t.intentionData);break;case"FarmingUnstake":r=Mk.fromData(t.intentionData);break;case"xCETUSConvert":r=Uk.fromData(t.intentionData);break;case"xCETUSRedeemLock":r=Vk.fromData(t.intentionData);break;case"xCETUSClaimStakingRwewards":r=$k.fromData(t.intentionData);break;case"xCETUSCancelRedeem":r=Lk.fromData(t.intentionData);break;case"xCETUSRedeem":r=Kk.fromData(t.intentionData);break;default:throw new Error("not implemented")}return console.log("helper build intention: ",r),console.log("helper build account: ",i),console.log("helper build network: ",n),r.build({suiClient:e,account:i,network:n})}},Cg={};Nm(Cg,{contractId:()=>Ag,default:()=>zk,feeObjId:()=>Pg,roleObjId:()=>Ig,status:()=>xg,transaction:()=>Sg,upgradeCapObjId:()=>Dg,vaultObjId:()=>Og});var Sg="DiBZq4UmVVYiRL6ZJmFKYoHcxtxqrhsCXSkFyT7wUr3j",xg="success",Ag="0x81c960dc653975fbd0072deca8afb92d322898c911622898ba1b2e3ad0c4bd8d",Ig="0xc6ec0bdee0bb59a72077e9acd2f42457043cf47080b3d3fad4d39abf28bba63a",Og="0xbc4021387fbac149119fd24e92be9e58f745774292f3a2a12e2ac6daf5363e1d",Pg="0x4178f63970fe2daeb256dc5730ad172e82b3e8eb45f31b33e0daae72cd35e1e1",Dg="0xe1e9aa7d222d151bfe6dd83358b0d7fdcb11260f710800cfaf7ccc1b1e245115",zk={transaction:Sg,status:xg,contractId:Ag,roleObjId:Ig,vaultObjId:Og,feeObjId:Pg,upgradeCapObjId:Dg},Mg={};Nm(Mg,{contractId:()=>Bg,default:()=>Gk,feeObjId:()=>Rg,roleObjId:()=>Ng,status:()=>jg,transaction:()=>Eg,upgradeCapObjId:()=>qg,vaultObjId:()=>Fg});var Eg="855FNDV8o8Z3fWULPnQo9qdhLJpsg7wZrkCpNyfw9KfB",jg="success",Bg="0xc357c3985e8fb875d6b37141497af660779aa1bab0ec489b2213efd74067d1fa",Ng="0x5ab49bdf9fd1413e328ef242b3f8d83dde791b38a0b627bfc87fb25c010d34f1",Fg="0xb483558770d8eb26007f193b75db40f0a45f2e36863a687625885d4de6993378",Rg="0x48453fc4d7cde3fe35aad89e5dfb496608a6a55ea529a1c0274681a808627f94",qg="0x34279779a0d0d36bd5044b04830d607fa1b0ecf316548c8ac3a44151e4f1a42a",Gk={transaction:Eg,status:jg,contractId:Bg,roleObjId:Ng,vaultObjId:Fg,feeObjId:Rg,upgradeCapObjId:qg},Hk="https://sui-testnet.blockvision.org/v1/2Sgk89ivT64MnKdcGzjmyjY2ndD",Zk="https://sui-testnet.blockvision.org/v1/2Sgk89ivT64MnKdcGzjmyjY2ndD",Xk="https://sui-mainnet.blockvision.org/v1/2Sgk7NPvqkd7mESYkxF01yX15l7",Jk="https://sui-mainnet.blockvision.org/v1/2Sgk7NPvqkd7mESYkxF01yX15l7",Yk="https://bc3p6l5unl.execute-api.us-west-1.amazonaws.com/prod",Qk="https://rolsbkota7.execute-api.us-west-1.amazonaws.com/prod",eT="https://6p6mkx33ne.execute-api.us-west-1.amazonaws.com/prod",tT="https://xrae3mrjv5.execute-api.us-west-1.amazonaws.com/prod",sm=Cg,am=Mg,iT=new Map([["dev",{env:"dev",rpc:{url:Hk},backend:{url:Yk},contract:sm}],["stg",{env:"stg",rpc:{url:Zk},backend:{url:Qk},contract:sm}],["prev",{env:"prev",rpc:{url:Xk},backend:{url:eT},contract:am}],["prod",{env:"prod",rpc:{url:Jk},backend:{url:tT},contract:am}]]);function nT(t,e){let i=iT.get(t);if(!i)throw new Error(`Env not supported: ${t}`);return e&&e.rpc&&(i.rpc=e.rpc),e&&e.backend&&(i.backend=e.backend),e&&e.contract&&(i.contract=e.contract),i}var di=class extends Error{mpayErrorCode;context;constructor(t,e,i={}){let{cause:n,context:r}=i;n?super(`[MPay] ${e}: ${n}`):super(`[MPay] ${e}`),this.mpayErrorCode=t,this.context=r}},rT=class extends di{constructor(){super(11,"Backend is not specified")}},oT=class extends di{constructor(){super(1,"Wallet not connected")}},Au=class extends di{constructor(t,e){super(10,t,{context:e})}},sT=class dr{constructor(e){this.apiURL=e}static parseResponseData(e){if(e instanceof un.AxiosError)throw new Au(e.response?.statusText);if(e.status===200){if(e.data.success)return e.data.data;throw new Au(e.data.code)}throw new Au(e.status.toString())}async getIncomingStreams(e,i){let n=await un.default.post(`${this.apiURL}/stream`,{recipient:e,...i});return dr.parseResponseData(n)}async getOutgoingStreams(e,i){let n=await un.default.post(`${this.apiURL}/stream`,{sender:e,...i});return dr.parseResponseData(n)}async getStreamHistory(e){let i=await un.default.post(`${this.apiURL}/stream-events`,e),n=dr.parseResponseData(i);return n.data.forEach(r=>{let o=r;return o.data.type==="create_stream"?o.data.balance=BigInt(o.data.balance):o.data.type==="cancel_stream"?o.data.withdrawAmount=BigInt(o.data.withdrawAmount):o.data.type==="claim"||o.data.type==="auto_claim"?o.data.claimAmount=BigInt(o.data.claimAmount):o.data.type==="set_auto_claim"&&(o.data.enabled=!!o.data.enabled),o.createdAt=new Date(o.createdAt),o}),n}async getAllCoinTypes(e){let i=await un.default.post(`${this.apiURL}/stream-info`,{address:e});return dr.parseResponseData(i)}async getAllRecipients(e,i){let n=await un.default.post(`${this.apiURL}/stream-info`,{sender:e,status:i});return dr.parseResponseData(n)}async getAllSenders(e,i){let n=await un.default.post(`${this.apiURL}/stream-info`,{recipient:e,status:i});return dr.parseResponseData(n)}},$g=class Ug{signer;suiClient;envConfig;_backend;constructor(e){this.envConfig=e,this.suiClient=new Lg.SuiClient({url:e.rpc.url}),e.backend&&(this._backend=new sT(e.backend.url))}static new(e,i){let n=nT(e,i);return new Ug(n)}get walletType(){return this.wallet?this.wallet.type:"disconnected"}get backend(){if(!this._backend)throw new rT;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 oT;return this.signer}async walletAddress(){return this.wallet.address()}},cm=50n,Iu=10000n,aT=25n,lm=100000000n,ur=class{constructor(t){this.object=t}moveArg(t){return t.object(this.object)}},um=class{constructor(t){this.objects=t}moveArgs(t){return t.makeMoveVec({objects:this.objects.map(e=>t.object(e))})}},Ya=class Kg{constructor(e){return this.result=e,new Proxy(this,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(i,n){if(n in i)return Reflect.get(i,n);let r=s=>new Kg(i.result[s]);if(n===Symbol.iterator)return function*(){let s=0;for(;;)yield r(s),s++};if(typeof n=="symbol")return;let o=parseInt(n,10);if(!(Number.isNaN(o)||o<0))return r(o)}})}moveArg(){return this.result}},dm=class extends di{constructor(t,e){super(3,t,{context:e})}},cT=class{constructor(t){this.results=t}callResult(t){return this.results.results[t]}returnValue(t,e){return t.returnValues[e]}getValue(t=0,e=0){let i=this.callResult(t);return this.returnValue(i,e)}getAddress(t=0,e=0){let[i,n]=this.getValue(t,e);if(n!=="address")throw new dm("Invalid contract return type.",{ctx:{expectType:"address",gotType:n}});return(0,Vg.normalizeSuiAddress)(ju.Buffer.from(i).toString("hex"))}getU64(t=0,e=0){let[i,n]=this.getValue(t,e);if(n!=="u64")throw new dm("Invalid contract return type.",{ctx:{expectType:"u64",gotType:n}});return ju.Buffer.from(i).readBigInt64LE()}},ui=class extends di{constructor(t,e,i){super(2,`Invalid input: ${t}`,{context:{fieldKey:e,fieldValue:i}})}},Wg={groupId:"string",name:"string"},lT=64;function uT(t){return zg(t),Gu.bcs.ser(Wg,t).toString("base64")}function Bu(t){let e=Gu.bcs.de(Wg,t,"base64");return zg(e),e}function zg(t){if(!fm(t.name))throw new ui("Invalid metadata: Name contains unknown character");if(!fm(t.groupId))throw new ui("Invalid metadata: Group ID contains unknown character");if(t.name.length>lT)throw new ui("Invalid metadata: Name exceed max length 64")}function fm(t){return/^[\x00-\x7F]+$/.test(t)}function Gg(t,e){return(0,as.normalizeStructTag)(t)===(0,as.normalizeStructTag)(e)}function eo(t,e){return(0,as.normalizeStructTag)(t)===(0,as.normalizeStructTag)(e)}var Hg="txn.gas";function dT(){return xh()}var Nu=class Zg{constructor(e,i,n){this.globals=e,this.feeContract=i,this.streamContract=n}static convertCreateStreamInfoToInternal(e){return{metadata:uT({name:e.name,groupId:dT()}),coinType:(0,ss.normalizeStructTag)(e.coinType),recipients:e.recipients.map(i=>({address:i.address,cliffAmount:i.cliffAmount,amountPerEpoch:i.amountPerStep})),epochInterval:e.interval,numberEpoch:e.steps,startTime:e.startTimeMs,cancelable:e.cancelable}}async buildCreateStreamTransactionBlock(e){let i=new Eu.TransactionBlock,n=this.calculateFeesInternal(e),r=this.getCreateStreamCoinRequests(e,n),o=await this.wallet.requestCoins(r),s=await this.addMergeCoins(i,o[0]),a;r.length>1?a=await this.addMergeCoins(i,o[1]):a=s;for(let l=0;l<e.recipients.length;l++){let u=e.recipients[l],h=this.amountForRecipient(u,e.numberEpoch),y=this.getStreamFeeLocal(h),[v]=i.splitCoins(s,[i.pure(h+y,"u64")]),[C]=i.splitCoins(a,[i.pure(this.flatSuiFee,"u64")]);this.streamContract.createStream(i,{paymentCoin:new Ya(v),flatFeeCoin:new Ya(C),metadata:e.metadata,recipient:u.address,timeStart:e.startTime,cliff:u.cliffAmount,epochInterval:e.epochInterval,numEpoch:e.numberEpoch,amountPerEpoch:u.amountPerEpoch,cancelable:e.cancelable,coinType:e.coinType})}return i}calculateCreateStreamFees(e){let i=Zg.convertCreateStreamInfoToInternal(e);return this.calculateFeesInternal(i)}feeParams(){return{createFeePercent:{numerator:cm,denominator:Iu},claimFeePercent:{numerator:aT,denominator:Iu},flatFeePerStream:lm}}async addMergeCoins(e,i){let n;return i.mergedCoins&&i.mergedCoins.length?(e.mergeCoins(e.object(i.primaryCoin),i.mergedCoins.map(r=>e.object(r))),n=e.object(i.primaryCoin)):i.primaryCoin===Hg?n=e.gas:n=e.object(i.primaryCoin),n}getCreateStreamCoinRequests(e,i){let n=e.coinType;return Gg(n,ss.SUI_TYPE_ARG)?[{coinType:n,amount:i.totalAmount+i.streamFeeAmount+i.flatFeeAmount}]:[{coinType:n,amount:i.totalAmount+i.streamFeeAmount},{coinType:ss.SUI_TYPE_ARG,amount:i.flatFeeAmount}]}calculateFeesInternal(e){let i=e.recipients.reduce((n,r)=>{let o=this.amountForRecipient(r,e.numberEpoch),s=this.getStreamFeeLocal(o);return{totalAmount:n.totalAmount+o,streamFeeAmount:n.streamFeeAmount+s}},{totalAmount:0n,streamFeeAmount:0n});return{flatFeeAmount:BigInt(e.recipients.length)*this.flatSuiFee,...i}}amountForRecipient(e,i){return BigInt(e.amountPerEpoch)*BigInt(i)+BigInt(e.cliffAmount)}get flatSuiFee(){return lm}getStreamFeeLocal(e){return e*cm/Iu}async getStreamFeeRemote(e){let i=this.feeContract.streamingFee(new Eu.TransactionBlock,e),n=await this.globals.suiClient.devInspectTransactionBlock({sender:await this.globals.walletAddress(),transactionBlock:i});return new cT(n).getU64()}get wallet(){return this.globals.wallet}},fT="0x0000000000000000000000000000000000000000000000000000000000000006",Xg=class{constructor(t,e,i){this.moduleName=t,this.config=e,this.globals=i}addContractCall(t,e){let i=`${this.config.contractId}::${this.moduleName}::${e.method}`;return t.add(Fu.Transactions.MoveCall({target:i,arguments:e.arguments.map(n=>n instanceof um?n.moveArgs(t):n instanceof ur?n.moveArg(t):n instanceof Ya?n.moveArg():t.pure(n)),typeArguments:e.typeArgs})),t}addTransactionBlock(t,e,i=[],n=[]){t.add(Fu.Transactions.MoveCall({target:e,arguments:i.map(r=>r instanceof um?r.moveArgs(t):r instanceof ur?r.moveArg(t):r instanceof Ya?r.moveArg():t.pure(r)),typeArguments:n}))}makeObject(t){return typeof t=="string"?new ur(t):t}vaultObject(){return new ur(this.config.vaultObjId)}roleObject(){return new ur(this.config.roleObjId)}feeObject(){return new ur(this.config.feeObjId)}clockObject(){return new ur(fT)}},Jg=class En extends Xg{constructor(e,i){super(En.ModuleName,e,i),this.config=e,this.globals=i}static ModuleName="fee_module";static MethodName={set_streaming_fee:"set_streaming_fee",set_claim_fee:"set_claim_fee",set_streaming_flat_fee:"set_streaming_flat_fee",streaming_flat_fee:"streaming_flat_fee",streaming_fee:"streaming_fee",claim_fee:"claim_fee",fee_denominator:"fee_denominator"};setStreamingFee(e,i){let n=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:En.MethodName.set_streaming_fee,arguments:[n,r,i],typeArgs:[]})}setStreamingFlatFee(e,i){let n=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:En.MethodName.set_streaming_flat_fee,arguments:[n,r,i],typeArgs:[]})}setClaimFee(e,i){let n=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:En.MethodName.set_claim_fee,arguments:[n,r,i],typeArgs:[]})}streamingFee(e,i){let n=this.feeObject();return this.addContractCall(e,{method:En.MethodName.streaming_fee,arguments:[n,i],typeArgs:[]})}claimFee(e,i){return this.addContractCall(e,{method:En.MethodName.claim_fee,arguments:[this.feeObject(),i],typeArgs:[]})}feeDenominator(e){return this.addContractCall(e,{method:En.MethodName.fee_denominator,arguments:[this.feeObject()],typeArgs:[]})}},tc=class Kt extends Xg{constructor(e,i){super(Kt.ModuleName,e,i),this.config=e,this.globals=i}static ModuleName="stream";static MethodName={create_stream:"create_stream",set_auto_claim:"set_auto_claim",cancel_stream:"cancel_stream",claim_stream:"claim_stream",claim_stream_by_proxy:"claim_stream_by_proxy",stream_current_epoch:"stream_current_epoch",now_milli_seconds:"now_milli_seconds"};createStream(e,i){let n=this.feeObject(),r=this.vaultObject(),o=this.makeObject(i.paymentCoin),s=this.makeObject(i.flatFeeCoin),a=this.clockObject();return this.addContractCall(e,{method:Kt.MethodName.create_stream,arguments:[n,r,o,s,i.metadata,i.recipient,i.timeStart,i.cliff,i.epochInterval,i.numEpoch,i.amountPerEpoch,i.cancelable,a],typeArgs:[i.coinType]})}setAutoClaim(e,i){let n=this.makeObject(i.streamId);return this.addContractCall(e,{method:Kt.MethodName.set_auto_claim,arguments:[n,i.enabled],typeArgs:[i.coinType]})}cancelStream(e,i){let n=this.makeObject(i.streamId),r=this.clockObject();return this.addContractCall(e,{method:Kt.MethodName.cancel_stream,arguments:[n,r],typeArgs:[i.coinType]})}claimStream(e,i){let n=this.makeObject(i.streamId),r=this.clockObject();return this.addContractCall(e,{method:Kt.MethodName.claim_stream,arguments:[n,r],typeArgs:[i.coinType]})}claimStreamByProxy(e,i){let n=this.makeObject(i.streamId),r=this.vaultObject(),o=this.feeObject(),s=this.clockObject();return this.addContractCall(e,{method:Kt.MethodName.claim_stream_by_proxy,arguments:[n,r,o,s],typeArgs:[i.coinType]})}get createStreamTarget(){return`${this.config.contractId}::${Kt.ModuleName}::${Kt.MethodName.create_stream}`}get setAutoClaimTarget(){return`${this.config.contractId}::${Kt.ModuleName}::${Kt.MethodName.set_auto_claim}`}get cancelStreamTarget(){return`${this.config.contractId}::${Kt.ModuleName}::${Kt.MethodName.cancel_stream}`}get claimStreamTarget(){return`${this.config.contractId}::${Kt.ModuleName}::${Kt.MethodName.claim_stream}`}get claimStreamByProxyTarget(){return`${this.config.contractId}::${Kt.ModuleName}::${Kt.MethodName.claim_stream_by_proxy}`}},Yg=class{constructor(t){this.globals=t;let e=t.envConfig.contract;this.feeContract=new Jg(e,t),this.streamContract=new tc(e,t)}feeContract;streamContract;async createStreams(t){let e=Nu.convertCreateStreamInfoToInternal(t);return this.createStreamHelper().buildCreateStreamTransactionBlock(e)}createStreamHelper(){return new Nu(this.globals,this.feeContract,this.streamContract)}setAutoClaim(t,e,i){let n=new is.TransactionBlock;return this.streamContract.setAutoClaim(n,{streamId:t,enabled:e,coinType:i})}claimStream(t,e){let i=new is.TransactionBlock;return this.streamContract.claimStream(i,{streamId:t,coinType:e})}claimStreamByProxy(t,e){let i=new is.TransactionBlock;return this.streamContract.claimStreamByProxy(i,{streamId:t,coinType:e})}cancelStream(t,e){let i=new is.TransactionBlock;return this.streamContract.cancelStream(i,{streamId:t,coinType:e}),i}},Ri=class extends di{constructor(t,e={}){super(0,t,e)}};async function hT(t){let e=[];for(;await t.hasNext();){let i=await t.next();e.push(i)}return e&&Array.isArray(e[0])?e.flat(1):e}var pT=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)}},Qg=class{constructor(t){this.requester=t,this.pager=new pT(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]}},mT=class extends di{constructor(t,e,i){super(4,`Not enough balance: ${t}`,{context:{coinType:t,requestAmount:e,gotAmount:i}}),this.coinType=t,this.requestAmount=e,this.gotAmount=i}},gT=25;async function _T(t,e,i,n="0x2::sui::SUI",r=gT){let o=new bT(t,e,n,r),s=BigInt(0),a=[];for(;await o.hasNext()&&s<i;){let l=await o.next();l&&(a.push(l),s+=BigInt(l.balance))}if(s<i)throw new mT(n,i,s);return a}var bT=class extends Qg{constructor(t,e,i,n){super(new yT(t,e,i,n)),this.suiClient=t,this.owner=e,this.coinType=i,this.reqPageSize=n}},yT=class{constructor(t,e,i,n){if(this.suiClient=t,this.owner=e,this.coinType=i,this.reqPageSize=n,n<=0)throw new Ri("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}}},wT=class extends di{constructor(){super(7,"Connected wallet is not creator")}},hm=class extends di{constructor(){super(8,"Connected wallet is not recipient")}},pm=class extends di{constructor(t,e){super(6,t,{context:e})}},vT=class extends di{constructor(t){super(5,"Stream not found",{context:{streamId:t}})}},kT=(1n<<64n)-1n,Qa=1e3;function mm(t){let e;typeof t=="number"?e=t:typeof t=="bigint"?e=Number(t):e=t.toMillis();let i=Math.round(e/Qa);return Ce.fromMillis(i*Qa)}function gm(t){let e;typeof t=="number"?e=t:typeof t=="bigint"?e=Number(t):e=t.toMillis();let i=Math.round(e/Qa);return je.fromMillis(i*Qa)}var Hu=class jn{constructor(e,i,n){this.globals=e,this.streamId=i,this.rawData=n,this.streamContract=new tc(e.envConfig.contract,e)}streamContract;type="Stream";static async new(e,i){let n=await jn.fetchStreamData(e,i);return new jn(e,i,n)}static fromObjectData(e,i,n){let r=jn.parseRawStreamData(i,n);return new jn(e,i,r)}get info(){return{name:this.name,creator:this.creator,coinType:this.coinType,totalAmount:this.totalAmount,start:this.timeStart,end:this.timeEnd,cancelable:this.cancelable,cliffAmount:this.cliff,duration:this.duration,interval:this.interval,steps:this.totalSteps,nextReleaseDate:this.nextReleaseDate,nextReleaseAmount:this.nextReleaseAmount,groupId:this.groupId,streamId:this.streamId,recipient:this.recipient,progress:this.progress,autoClaim:this.autoClaim}}get groupCommonInfo(){return{name:this.name,groupId:this.groupId,creator:this.creator,start:this.timeStart,interval:this.interval,steps:this.totalSteps,cancelable:this.cancelable}}async refresh(){this.rawData=await jn.fetchStreamData(this.globals,this.streamId)}refreshWithData(e){if(e.data?.objectId!==this.streamId)throw new Ri("Object Id does not align");this.rawData=jn.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 wT;let e=new ns.TransactionBlock;return this.streamContract.cancelStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async claim(){if(await this.globals.walletAddress()!==this.recipient)throw new hm;let e=new ns.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 hm;let i=new ns.TransactionBlock;return this.streamContract.setAutoClaim(i,{streamId:this.streamId,coinType:this.coinType,enabled:e}),i}async claimByProxy(){let e=new ns.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,cs.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 gm(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 mm(this.rawData.config.timeStart)}get duration(){let e=this.rawData.config,i=e.epochInterval*e.totalEpoch;return gm(i)}get timeEnd(){return this.timeStart.plus(this.duration)}get totalSteps(){return this.rawData.config.totalEpoch}get claimable(){return this.streamedAmount-this.claimedAmount}get nextReleaseDate(){return this.currentEpoch===-1n?this.timeStart:this.currentEpoch>=this.totalSteps||this.isCanceled?null:mm((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===kT?0n:this.rawData.status.epochClaimed*this.amountPerEpoch+this.cliff}get currentEpoch(){let e=Ce.now().toMillis(),i=this.timeStart.toMillis();if(e<i)return-1n;let n=Math.floor((e-i)/Number(this.rawData.config.epochInterval));return BigInt(n)>Number(this.rawData.config.totalEpoch)?this.rawData.config.totalEpoch:BigInt(n)}get totalAmount(){let e=this.rawData.config;return e.amountPerEpoch*e.totalEpoch+e.cliff}get isCanceled(){let e=this.rawData.status.status;return e===16||e===17}get canceledAmount(){return this.isCanceled?this.totalAmount-this.streamedAmount:0n}static async fetchStreamData(e,i){let n=await e.suiClient.getObject({id:i,options:{showContent:!0,showType:!0}});return jn.parseRawStreamData(i,n)}static parseRawStreamData(e,i){if(i.error)throw i.error.code==="notExists"?new vT(e):new pm(`get stream data: ${i.error.code}`,{streamId:e,...i.error});let n=i.data.content;if(n.dataType!=="moveObject")throw new pm("Unexpected object type",{gotType:n.dataType});let{typeParams:r}=(0,cs.parseStructTag)(n.type),o=(0,cs.normalizeStructTag)(r[0]),s=n.fields,a=s.config.fields,l=s.status.fields;return{coinType:o,autoClaim:s.auto_claim,balance:BigInt(s.balance.fields.balance),config:{amountPerEpoch:BigInt(a.amount_per_epoch),cancelable:a.cancelable,cliff:BigInt(a.cliff),creator:a.creator,epochInterval:BigInt(a.epoch_interval),metadata:a.metadata,recipient:a.recipient,timeStart:BigInt(a.time_start),totalEpoch:BigInt(a.total_epoch)},status:{status:l.status,epochCanceled:BigInt(l.epoch_canceled),epochClaimed:BigInt(l.epoch_claimed)}}}},TT=class extends di{constructor(t,e){super(12,`Transaction failed: ${e}`,{context:{status:t,msg:e}})}},CT=1e3,ST=class{constructor(t){this.globals=t,this.coinMetaHelper=new xT(t.suiClient),this.createStreamHelper=new Yg(t).createStreamHelper()}coinMetaHelper;createStreamHelper;getStreamIdsFromCreateStreamResponse(t){if(t.effects?.status.status!=="success")throw new TT(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 ui("Invalid stream steps: 0");let e=t.cliff?t.cliff:{numerator:0n,denominator:100n},i=t.totalAmount*e.numerator/e.denominator,n=(t.totalAmount-i)/t.steps,r={realTotalAmount:n*t.steps+i,cliffAmount:i,amountPerStep:n};return this.validateStreamAmount(r,t.totalAmount),r}calculateTimelineByInterval(t){if(t.steps===0n)throw new ui("Invalid stream steps: 0");let e=t.timeStart.plus(t.interval.toMillis()*Number(t.steps)),i={timeStart:t.timeStart,timeEnd:e,interval:t.interval,steps:t.steps};return this.validateTimeline(i),i}calculateTimelineByTotalDuration(t){if(t.steps===0n)throw new ui("Invalid stream steps: 0");let e=BigInt(t.total.toMillis())/t.steps,i=t.timeStart.plus(je.fromMillis(Number(e*t.steps))),n={timeStart:t.timeStart,timeEnd:i,interval:je.fromMillis(Number(e)),steps:t.steps};return this.validateTimeline(n),n}async getBalance(t,e){let i=await this.globals.suiClient.getBalance({owner:t,coinType:e}),n=await this.getCoinMeta(e);return{...i,coinType:(0,so.normalizeStructTag)(i.coinType),coinMeta:n}}async getAllBalance(t){let e=await this.globals.suiClient.getAllBalances({owner:t}),i=await Promise.all(e.map(n=>this.getCoinMeta(n.coinType)));return e.map((n,r)=>({...n,coinType:(0,so.normalizeStructTag)(n.coinType),coinMeta:i[r]}))}async getCoinMeta(t){return this.coinMetaHelper.getCoinMeta(t)}async simulateTransactionBlock(t){return this.globals.suiClient.devInspectTransactionBlock({transactionBlock:t,sender:await this.globals.wallet.address()})}validateStreamAmount(t,e){if(t.amountPerStep===0n)throw new ui("Stream amount too small","totalAmount",e);if(t.cliffAmount>t.realTotalAmount)throw new ui("Invalid cliff settings")}validateTimeline(t){if(t.interval.toMillis()<CT)throw new ui("Interval shall be at least 1 second","interval",t.interval)}},xT=class{constructor(t){this.suiClient=t,this.coinMetaReg=new Map}coinMetaReg;async getCoinMeta(t){let e=(0,so.normalizeStructTag)(t||so.SUI_TYPE_ARG);if(this.coinMetaReg.has(e))return this.coinMetaReg.get(e);let i=await this.queryCoinMeta(e);return i&&this.coinMetaReg.set(e,i),i}async queryCoinMeta(t){return await this.suiClient.getCoinMetadata({coinType:t})||void 0}},Ou=class extends di{constructor(t,e){super(9,`Invalid stream group: ${t}`,{context:e})}},AT=25;async function _m(t,e,i){let n=new e0(e),r=new t0(t,n,i);return await hT(r)}var e0=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]}},t0=class extends Qg{constructor(t,e,i){super(new IT(t,e,i)),this.suiClient=t,this.idIter=e,this.options=i}},IT=class{constructor(t,e,i){this.suiClient=t,this.stringIter=e,this.options=i,this.filter=i?.filter,this.pageSize=i?.pageSize||AT,this.objectOptions=i?.objectOptions||{showType:!0,showContent:!0}}filter;pageSize;objectOptions;async doNextRequest(){let t=[];for(;t.length<this.pageSize&&await this.stringIter.hasNext();){let n=await this.stringIter.next();n&&t.push(n)}let e=await this.suiClient.multiGetObjects({ids:t,options:this.objectOptions}),i;if(this.filter){let{filter:n}=this;i=e.filter(r=>n?.(r))}else i=e;return{data:i,hasNext:await this.stringIter.hasNext()}}},OT=class Ua{constructor(e,i){if(this.globals=e,this.streams=i,i.length===0)throw new Ou("stream size 0");let n=i.map(r=>r.groupId);if(new Set(n).size!==1)throw new ui("Stream does not have same group ID")}type="StreamGroup";static async new(e,i){let n=await _m(e.suiClient,i);return n.forEach(r=>{if(!r)throw new Ri("stream group object data undefined")}),Ua.newFromObjectResponse(e,i,n)}static async newFromObjectResponse(e,i,n){let r=await Ua.parseGroupStreams(e,i,n);return new Ua(e,r)}static checkStreamGroup(e){let i=e.map(o=>o.groupCommonInfo),n=i[0],r=!0;return i.forEach(o=>{PT(n,o)||(r=!1)}),r}async refresh(){let e=await _m(this.globals.suiClient,this.streams.map(i=>i.streamId));this.streams.forEach((i,n)=>{i.refreshWithData(e[n])})}get groupId(){return this.streams[0].groupId}get creator(){return this.streams[0].creator}get info(){return{groupId:this.groupId,streamIds:this.streams.map(e=>e.streamId),progress:this.progress,name:this.streams[0].name,creator:this.creator,coinType:this.streams[0].coinType,totalAmount:this.streams.reduce((e,i)=>e+i.totalAmount,0n),start:this.streams[0].timeStart,end:this.streams[0].timeEnd,cancelable:this.streams[0].cancelable,cliffAmount:this.streams.reduce((e,i)=>e+i.cliff,0n),duration:this.streams[0].duration,interval:this.streams[0].interval,steps:this.streams[0].totalSteps,nextReleaseAmount:this.streams.reduce((e,i)=>i.nextReleaseAmount===null?e:e+i.nextReleaseAmount,0n),nextReleaseDate:this.streams[0].nextReleaseDate}}get progress(){return{total:this.streams.reduce((e,i)=>e+i.totalAmount,0n),streamed:this.streams.reduce((e,i)=>e+i.streamedAmount,0n),claimed:this.streams.reduce((e,i)=>e+i.claimedAmount,0n),claimable:this.streams.reduce((e,i)=>e+i.claimable,0n),canceled:this.streams.reduce((e,i)=>e+i.canceledAmount,0n)}}async historyEvents(e){return this.globals.backend.getStreamHistory({groupId:this.groupId,pagination:e})}static async parseGroupStreams(e,i,n){let r=n.map((o,s)=>Hu.fromObjectData(e,i[s],o)).filter(o=>!!o);if(new Set(r.map(o=>o.groupId)).size!==1)throw new Ou("Not same group ID");if(!this.checkStreamGroup(r))throw new Ou("Not same stream settings");return r}};function PT(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 bm=class Ru{constructor(e,i){this.it=e,this.pageSize=i}static async newIncoming(e){let i=await ym.newIncoming(e);return new Ru(i,e.pageSize)}static async newOutgoing(e){let i=await ym.newOutgoing(e);return new Ru(i,e.pageSize)}async hasNext(){return this.it.hasNext()}async next(){let e=[];for(;e.length<this.pageSize&&await this.it.hasNext();)e.push(await this.it.next());return e}},ym=class qu{constructor(e){this.requester=e}cachedNext;static async newIncoming(e){let i=await wm.newIncomingQuery(e);return new qu(i)}static async newOutgoing(e){let i=await wm.newOutgoingQuery(e);return new qu(i)}async hasNext(){return this.cachedNext===void 0&&(this.cachedNext=await this.requester.doNextRequest()),this.cachedNext!==null}async next(){if(this.cachedNext===void 0){let i=await this.requester.doNextRequest();if(i===null)throw new Ri("No more results");return i}let e=this.cachedNext;if(this.cachedNext=void 0,e===null)throw new Ri("No more results");return e}},wm=class Lu{constructor(e,i,n,r){this.globals=e,this.recipient=i,this.groupRefs=n,this.query=r,this.current=0;let o=new e0(n.flat().map(s=>s.streamId));this.objectIter=new t0(e.suiClient,o)}current=0;objectIter;static async newIncomingQuery(e){let i=BT(e.query),n=await e.globals.walletAddress(),r=(await e.globals.backend.getIncomingStreams(n,i)).filter(s=>(0,Ln.normalizeSuiAddress)(s.recipient)===(0,Ln.normalizeSuiAddress)(n)),o=vm(r);return new Lu(e.globals,n,o,e.query)}static async newOutgoingQuery(e){let i=NT(e.query),n=await e.globals.walletAddress(),r=await e.globals.backend.getOutgoingStreams(n,i),o=vm(r);return new Lu(e.globals,n,o,e.query)}async doNextRequest(){if(this.current>=this.groupRefs.length)return null;let e=this.groupRefs[this.current];if(e.length===1){let i=await ET(this.globals,e[0].streamId,this.objectIter);return this.current++,i0(i,this.query)?i:this.doNextRequest()}if(e.length>1){let i=await jT(this.globals,e.map(n=>n.streamId),this.objectIter);return this.current++,MT(i,this.query)?i:this.doNextRequest()}throw new Ri("Stream group with no stream")}};function vm(t){let e=new Map;return t.forEach(i=>{let n=e.get(i.groupId);n?(n.push(i),e.set(i.groupId,n)):e.set(i.groupId,[i])}),Array.from(e.values()).sort((i,n)=>Ce.fromISO(n[0].createDate).toMillis()-Ce.fromISO(i[0].createDate).toMillis())}function i0(t,e){if(e===void 0)return!0;let i=DT(t,e.status);if(e&&"claimable"in e&&e.claimable!==void 0){let n=e.claimable?t.progress.claimable!==0n:t.progress.claimable===0n;return i&&n}return i}function DT(t,e){return e===void 0?!0:Array.isArray(e)?e.includes(t.progress.status):t.progress.status===e}function MT(t,e){if(!e)return!0;let i=!1;return t.streams.forEach(n=>{i0(n,e)&&(i=!0)}),i}async function ET(t,e,i){let n=await n0(i,e);return Hu.fromObjectData(t,e,n)}async function jT(t,e,i){let n=[];for(;n.length<e.length;){let r=await n0(i,e[n.length]);n.push(r)}return OT.newFromObjectResponse(t,e,n)}async function n0(t,e){if(!await t.hasNext())throw new Ri("object iterator has been consumed");let i=await t.next();if(!i||i.error||i.data===void 0||i.data===null)throw new Ri("object iterator undefined response",{cause:i?.error});if(i?.data?.objectId!==e)throw new Ri("stream id not aligned");return i}function BT(t){return{status:Zu(t?.status),coinType:r0(t?.coinType),sender:o0(t?.sender)}}function NT(t){return{status:Zu(t?.status),coinType:r0(t?.coinType),recipient:o0(t?.recipient)}}function Zu(t){return t===void 0||t.length===0?"all":Array.isArray(t)?t.reduce((e,i)=>{let n=Zu(i);return!e||e===n?n:"all"},void 0):FT(t)}function FT(t){switch(t){case"STREAMING":case"STREAMED":case"CANCELED":return"active";case"COMPLETED":case"SETTLED":return"inactive";default:throw new ui("Unknown stream filtered status")}}function r0(t){if(t)return Array.isArray(t)?t.length!==0?t.map(e=>(0,Ln.normalizeStructTag)(e)):void 0:(0,Ln.normalizeStructTag)(t)}function o0(t){if(t)return Array.isArray(t)?t.length!==0?t.map(e=>(0,Ln.normalizeSuiAddress)(e)):void 0:(0,Ln.normalizeSuiAddress)(t)}var RT=class{constructor(t){this.msafe=t}get type(){return"msafe"}async address(){return this.msafe.address()}async requestCoins(t){return this.msafe.requestCoins(t)}},qT=class{constructor(t){this.account=t}async address(){return this.account.address}},LT=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(Gg(t.coinType,fr.SUI_TYPE_ARG))return{primaryCoin:Hg};if(t.amount<=0)throw new ui("Invalid coin request","coinAmount",t.amount);let e=await _T(this.suiClient,await this.address(),t.amount,t.coinType);if(e.length===0)throw new Ri("no coins available");return{primaryCoin:e[0].coinObjectId,mergedCoins:e.slice(1).map(i=>i.coinObjectId)}}},$T=class{globals;helper;constructor(t,e){this.globals=$g.new(t,e),this.helper=new ST(this.globals)}connectSingleWallet(t){let e=new LT(t,this.globals.suiClient);this.globals.connectWallet(e)}connectMSafeAccount(t){let e=new RT(t);this.globals.connectWallet(e)}async createStream(t){return this.builder().createStreams(t)}async getStream(t){return Hu.new(this.globals,t)}async getIncomingStreams(t,e=10){return bm.newIncoming({globals:this.globals,query:t,pageSize:e})}async getOutgoingStreams(t,e=10){return bm.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,fr.normalizeStructTag)(e))}async getRecipientsForStreamFilter(t){let e=await this.wallet.address();return(await this.globals.backend.getAllRecipients(e,t)).map(i=>(0,fr.normalizeSuiAddress)(i))}async getCreatorsForStreamFilter(t){let e=await this.wallet.address();return(await this.globals.backend.getAllSenders(e,t)).map(i=>(0,fr.normalizeSuiAddress)(i))}get wallet(){return this.globals.wallet}builder(){return new Yg(this.globals)}},UT=class{constructor(t){this.data=t}serialize(){return JSON.stringify((0,s0.default)(this.data))}},us=class extends UT{application="mpay";getClient(t,e){let i=new $T(t==="sui:mainnet"?"prod":"dev");return i.connectSingleWallet(new qT(e)),i}},km=class extends us{constructor(t){super(t),this.data=t}txType=Tg.TransactionType.Stream;txSubType="Cancel";async build(t){let{network:e,account:i}=t;return(await this.getClient(e,i).getStream(this.data.streamId)).cancel()}},Tm=class extends us{constructor(t){super(t),this.data=t}txType=a0.TransactionType.Stream;txSubType="ClaimByProxy";async build(t){let{network:e,account:i}=t;return(await this.getClient(e,i).getStream(this.data.streamId)).claimByProxy()}},Cm=class extends us{constructor(t){super(t),this.data=t}txType=c0.TransactionType.Stream;txSubType="Claim";async build(t){let{network:e,account:i}=t;return(await this.getClient(e,i).getStream(this.data.streamId)).claim()}},Sm=class extends us{constructor(t){super(t),this.data=t}txType=l0.TransactionType.Stream;txSubType="CreateStream";async build(t){let{network:e,account:i}=t;return this.getClient(e,i).createStream(this.data)}},u0=class Ka{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return Ka.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return Ka.getOwnedObjectId(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return BigInt(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,Bn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return Ka.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}static getPureInputValue(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure;return $u.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Bn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Bn.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Bn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Bn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let n=e.value.Pure;return $u.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,Bn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},KT=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"&&eo(e.target,this.contract.createStreamTarget));if(t.length===0)throw new Ri("No create stream transactions");return t.map(e=>new u0(e,this.txb))}getCreationInfoFromMoveCall(t){let e=t.decodeInputString(4),{name:i,groupId:n}=Bu(e),r=t.decodeInputAddress(5),o=t.decodeInputU64(6),s=t.decodeInputU64(7),a=t.decodeInputU64(8),l=t.decodeInputU64(9),u=t.decodeInputU64(10),h=t.decodeInputBool(11),y=t.typeArg(0);return{name:i,groupId:n,recipient:r,timeStart:o,cliff:s,epochInterval:a,totalEpoch:l,amountPerEpoch:u,cancelable:h,coinType:y}}aggregateGroupStreamInfo(t){if(new Set(t.map(i=>JSON.stringify({name:i.name,groupId:i.groupId,timeStart:String(i.timeStart),epochInterval:String(i.epochInterval),totalEpoch:String(i.totalEpoch),cancelable:i.cancelable,coinType:i.coinType}))).size!==1)throw new ui("Stream group not have common info");let e=t.map(i=>({address:i.recipient,amountPerStep:i.amountPerEpoch,cliffAmount:i.cliff}));return{name:t[0].name,coinType:t[0].coinType,recipients:e,interval:t[0].epochInterval,steps:t[0].totalEpoch,startTimeMs:t[0].timeStart,cancelable:t[0].cancelable}}mergeCoinTransactions(){return this.transactions.filter(t=>t.kind==="MergeCoins")}get transactions(){return this.txb.blockData.transactions}get contract(){return new tc(this.globals.envConfig.contract,this.globals)}get feeContract(){return new Jg(this.globals.envConfig.contract,this.globals)}createStreamHelper(){return new Nu(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]}},VT=class{constructor(t,e){this.globals=t,this.txb=e,this.contract=new tc(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"&&eo(t.target,this.contract.createStreamTarget))!==-1}isSetAutoClaimTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&eo(this.transactions[0].target,this.contract.setAutoClaimTarget)}isCancelStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&eo(this.transactions[0].target,this.contract.cancelStreamTarget)}isClaimStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&eo(this.transactions[0].target,this.contract.claimStreamTarget)}isClaimByProxyTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&eo(this.transactions[0].target,this.contract.claimStreamByProxyTarget)}decodeCreateStreamTransaction(){return new KT(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 u0(t,this.txb)}},xm=class extends us{constructor(t){super(t),this.data=t}txType=d0.TransactionType.Stream;txSubType="SetAutoClaim";async build(t){let{network:e,account:i}=t;return(await this.getClient(e,i).getStream(this.data.streamId)).setAutoClaim(this.data.enabled)}},WT=class{application="mpay";async deserialize(t){let{network:e,transactionBlock:i}=t,n=$g.new(e==="sui:mainnet"?"prod":"dev"),r=new VT(n,i).decode(),o;switch(r.type){case"CreateStream":o=new Sm(r.info);break;case"SetAutoClaim":o=new xm({streamId:r.streamId,enabled:r.enabled});break;case"Claim":o=new Cm({streamId:r.streamId});break;case"ClaimByProxy":o=new Tm({streamId:r.streamId});break;case"Cancel":o=new km({streamId:r.streamId});break;default:throw new Error(`Unknown transaction type: ${r}`)}return{txType:o.txType,txSubType:o.txSubType,intentionData:o.data}}async build(t){let{intentionData:e}=t,i;switch(t.txSubType){case"CreateStream":i=new Sm(e);break;case"Claim":i=new Cm(e);break;case"ClaimByProxy":i=new Tm(e);break;case"SetAutoClaim":i=new xm(e);break;case"Cancel":i=new km(e);break;default:throw new Error("not implemented")}return i.build({...t})}},zT=class h0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:i,account:n}=e;return(0,f0.buildCoinTransferTxb)(i,this.data,n.address)}static fromData(e){return new h0(e)}},GT=class m0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:i,account:n}=e;return(0,p0.buildObjectTransferTxb)(i,this.data,n.address)}static fromData(e){return new m0(e)}},HT=class b0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:i}=e,n=_0.TransactionBlock.from(this.data.content);if(!(0,g0.isSameAddress)(n.blockData.sender,i.address))throw new Error("Invalid sender address");return n}static fromData(e){return new b0(e)}},ZT=class{application;constructor(){this.application=ro.TransactionDefaultApplication}deserialize(){throw new Error("MSafe core transaction intention should be build from API")}async build(t){let{suiClient:e,account:i}=t,n;switch(t.txSubType){case ro.TransactionSubTypes.assets.coin.send:n=zT.fromData(t.intentionData);break;case ro.TransactionSubTypes.assets.object.send:n=GT.fromData(t.intentionData);break;case ro.TransactionSubTypes.others.plain:n=HT.fromData(t.intentionData);break;default:throw new Error("not implemented")}return n.build({suiClient:e,account:i})}},XT={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=XT,JT=class{constructor(t){this.txb=t}decode(){if(console.log("txb",this.txb),this.isClaimRewardTransaction())return this.decodeClaimReward();if(this.isEntryBorrowTransaction())return this.decodeEntryBorrow();if(this.isEntryDepositTransaction())return this.decodeEntryDeposit();if(this.isEntryRepayTransaction())return this.decodeEntryRepay();if(this.isEntryWithdrawTransaction())return this.decodeEntryWithdraw();throw new Error("Unknown transaction type")}get transactions(){return this.txb.blockData.transactions}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isClaimRewardTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::claim_reward`)}isEntryBorrowTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::entry_borrow`)}isEntryDepositTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::entry_deposit`)}isEntryRepayTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::entry_repay`)}isEntryWithdrawTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::entry_withdraw`)}findPoolByAssetId(t){let e=Object.values(ke.pool).find(i=>i.assetId===t);if(!e)throw new Error("Pool not found");return e}decodeClaimReward(){let t=[];return this.transactions.forEach(e=>{if(e.kind==="MoveCall"&&e.target===`${ke.ProtocolPackage}::incentive_v2::claim_reward`){let i=new Am(e,this.txb),n=i.decodeInputU8(4),r=i.decodeInputU8(5),o=i.decodeSharedObjectId(2),s=this.findPoolByAssetId(n),a=[...e.typeArguments];t.push({coinType:s.coinType,option:r,typeArguments:a,assetId:n,poolId:o})}}),console.log("decode claims",t),{txType:to.TransactionType.Other,type:"ClaimReward",intentionData:{claims:t}}}decodeEntryBorrow(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(5),i=this.findPoolByAssetId(t);return{txType:to.TransactionType.Other,type:"EntryBorrow",intentionData:{amount:e,coinType:i.coinType}}}decodeEntryDeposit(){let t=this.helper.decodeInputU8(3),e=this.helper.decodeInputU64(5),i=this.findPoolByAssetId(t);return{txType:to.TransactionType.Other,type:"EntryDeposit",intentionData:{amount:e,coinType:i.coinType}}}decodeEntryRepay(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(6),i=this.findPoolByAssetId(t);return{txType:to.TransactionType.Other,type:"EntryRepay",intentionData:{amount:e,coinType:i.coinType}}}decodeEntryWithdraw(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(5),i=this.findPoolByAssetId(t);return{txType:to.TransactionType.Other,type:"EntryWithdraw",intentionData:{amount:e,coinType:i.coinType}}}get helper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(ke.ProtocolPackage));return new Am(t,this.txb)}},Am=class Va{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return Va.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return Va.getOwnedObjectId(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return Number(i)}decodeInputU8(e){let i=this.decodePureArg(e,"u8");return Number(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,Nn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return Va.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}static getPureInputValue(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure;return Uu.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Nn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Nn.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Nn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Nn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let n=e.value.Pure;return Uu.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,Nn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};function Im(t,e,i,n){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::entry_deposit`,arguments:[t.object("0x06"),t.object(ke.StorageId),t.object(e.poolId),t.pure(e.assetId),i,t.pure(n),t.object(ke.Incentive),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function YT(t,e,i){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::entry_withdraw`,arguments:[t.object("0x06"),t.object(ke.PriceOracle),t.object(ke.StorageId),t.object(e.poolId),t.pure(e.assetId),t.pure(i),t.object(ke.Incentive),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function QT(t,e,i){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::entry_borrow`,arguments:[t.object("0x06"),t.object(ke.PriceOracle),t.object(ke.StorageId),t.object(e.poolId),t.pure(e.assetId),t.pure(i),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function Om(t,e,i,n){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::entry_repay`,arguments:[t.object("0x06"),t.object(ke.PriceOracle),t.object(ke.StorageId),t.object(e.poolId),t.pure(e.assetId),i,t.pure(n),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function eC(t,e,i,n,r){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::claim_reward`,arguments:[t.object("0x06"),t.object(ke.IncentiveV2),t.object(i),t.object(ke.StorageId),t.pure(e),t.pure(n)],typeArguments:r}),t}var tC=class v0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{claims:e}=this.data,i=new w0.TransactionBlock;return e.forEach(n=>{let{assetId:r,poolId:o,option:s,typeArguments:a}=n;eC(i,r,o,s,a)}),i}static fromData(e){return new v0(e)}},iC=class T0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{coinType:e,amount:i}=this.data,n=new k0.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 QT(n,r,i)}static fromData(e){return new T0(e)}};async function S0(t,e,i){let n=await t.getCoins({owner:e,coinType:i});return console.log("getTokenObjs",e,n),n}var nC=class x0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:i,account:n}=e,{coinType:r,amount:o}=this.data,s=new C0.TransactionBlock;if(console.log("build",this.data),r==="sui"){let[h]=s.splitCoins(s.gas,[o]);return Im(s,ke.pool.sui,h,o)}let a=ke.pool[r];if(!a)throw new Error(`${r} not support, please use ${Object.keys(ke.pool).join(", ")}.`);let l=await S0(i,n.address,a.type);if(!l.data[0])throw new Error(`Insufficient balance for ${a.name} Token`);let u=l.data[0].coinObjectId;if(l.data.length>=2){let h=1;for(;h<l.data.length;)s.mergeCoins(u,[l.data[h].coinObjectId]),h++}return Im(s,a,s.object(u),o)}static fromData(e){return new x0(e)}},rC=class I0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:i,account:n}=e,{coinType:r,amount:o}=this.data,s=new A0.TransactionBlock;if(console.log("build",this.data),r==="sui"){let[h]=s.splitCoins(s.gas,[o]);return Om(s,ke.pool.sui,h,o)}let a=ke.pool[r];if(!a)throw new Error(`${r} not support, please use ${Object.keys(ke.pool).join(", ")}.`);let l=await S0(i,n.address,a.type);if(!l.data[0])throw new Error(`Insufficient balance for ${a.name} Token`);let u=l.data[0].coinObjectId;if(l.data.length>=2){let h=1;for(;h<l.data.length;)s.mergeCoins(u,[l.data[h].coinObjectId]),h++}return Om(s,a,s.object(u),o)}static fromData(e){return new I0(e)}},oC=class P0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{coinType:e,amount:i}=this.data,n=new O0.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 YT(n,r,i)}static fromData(e){return new P0(e)}},sC=class{application="navi";async deserialize(t){let{transactionBlock:e}=t,i=new JT(e).decode();return{txType:y0.TransactionType.Other,txSubType:i.type,intentionData:i.intentionData}}async build(t){let{suiClient:e,account:i}=t,n;switch(t.txSubType){case"EntryDeposit":n=nC.fromData(t.intentionData);break;case"EntryBorrow":n=iC.fromData(t.intentionData);break;case"EntryRepay":n=rC.fromData(t.intentionData);break;case"EntryWithdraw":n=oC.fromData(t.intentionData);break;case"ClaimReward":n=tC.fromData(t.intentionData);break;default:throw new Error("not implemented")}return n.build({suiClient:e,account:i})}},aC="msafe-plain-tx",cC=ic.TransactionSubTypes.others.plain,lC=class{application;constructor(){this.application=aC}async deserialize(t){let{transactionBlock:e,suiClient:i}=t,n=await e.build({client:i});return{txType:ic.TransactionType.Other,txSubType:cC,intentionData:{content:(0,nc.toHEX)(n)}}}async build(t){let{suiClient:e,account:i}=t,n=D0.TransactionBlock.from((0,nc.fromHEX)(t.intentionData.content)),r=await e.devInspectTransactionBlock({transactionBlock:n,sender:i.address});if(r.effects.status.status!=="success")throw new Error(r.effects.status.error);return n}},uC=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}},rc="6601955b8b0024600a917079",E0="0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf",Wa="0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",oo="0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6::sca::SCA",oc=["eth","btc","usdc","usdt","sui","apt","sol","cetus","afsui","hasui","vsui","sca"],j0=["eth","btc","usdc","usdt","sui","apt","sol","cetus","afsui","hasui","vsui","sca"],Ku=["seth","ssui","susdc","susdt","scetus","safsui","shasui","svsui"],dC=["sui"],za=["sui","usdc","usdt"],fC={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},B0={seth:"sui",ssui:"sui",susdc:"sui",susdt:"sui",scetus:"sui",safsui:"sui",shasui:"sui",svsui:"sui"},hC={sui:["sui","sca"],usdc:["sui","sca"],usdt:["sui","sca"]},pC={sui:"0x0000000000000000000000000000000000000000000000000000000000000002",eth:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",btc:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",usdc:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",usdt:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",apt:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",sol:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",cetus:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",afsui:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",hasui:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",vsui:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",sca:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6"},Ti={eth:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",btc:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",usdc:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",usdt:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",apt:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",sol:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8"},Pm={vsui:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55"},mC=class{constructor(t,e){this.txb=t,this._builder=e}_builder;decode(){if(this.isExtendPeriodAndStakeMoreSca())return this.decodePeriodAndStakeMoreSca();if(this.isStakeScaFirsTime()||this.isStakeMoreSca())return this.decodeStakeSca();if(this.isSupplyWithStakeSpoolTransaction())return this.decodeSupplyWithStakeSpool();if(this.isUnstakeAndWithdrawTransaction())return this.decodeUnstakeAndWithdraw();if(this.isStakeSpoolTransaction())return this.decodeStakeSpool();if(this.isDepositCollateralTransaction())return this.decodeDepositCollateral();if(this.isWithdrawCollateralTransaction())return this.decodeWithdrawCollateral();if(this.isWithdrawLendingTransaction())return this.decodeWithdrawLending();if(this.isSupplyLendingTransaction())return this.decodeSupplyLending();if(this.isBorrowWithBoostTransaction())return this.decodeBorrowWithBoost();if(this.isBorrowTransaction())return this.decodeBorrow();if(this.isRepayTransaction())return this.decodeRepay();if(this.isUnstakeSpoolTransaction())return this.decodeUnstakeSpool();if(this.isClaimRewardTransaction())return this.decodeClaimReward();if(this.isRenewExpiredVeSca())return this.decodeRenewExpiredVeSca();if(this.isExtendPeriod())return this.decodeExtendStakePeriod();if(this.isOpenObligationTransaction())return this.decodeOpenObligation();if(this.isRedeemSca())return this.decodeRedeemSca();if(this.isMigrateAndClaim())return this.decodeMigrateAndClaim();throw new Error("Unknown transaction type")}get coreId(){return{protocolPkg:this._builder.address.get("core.packages.protocol.id"),market:this._builder.address.get("core.market"),version:this._builder.address.get("core.version"),coinDecimalsRegistry:this._builder.address.get("core.coinDecimalsRegistry"),xOracle:this._builder.address.get("core.oracles.xOracle"),spoolPkg:this._builder.address.get("spool.id"),borrowIncentivePkg:this._builder.address.get("borrowIncentive.id"),veScaPkgId:this._builder.address.get("vesca.id")}}get transactions(){return this.txb.blockData.transactions}get inputTransaction(){return this.txb.blockData.inputs}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isSupplyLendingTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::mint::mint`)}isSupplyWithStakeSpoolTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.protocolPkg}::mint::mint`),e=this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::stake`);return!!t&&!!e}isUnstakeAndWithdrawTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::unstake`),e=this.getMoveCallTransaction(`${this.coreId.protocolPkg}::redeem::redeem`);return!!t&&!!e}isStakeSpoolTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::stake`)}isWithdrawLendingTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::redeem::redeem`)}isDepositCollateralTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::deposit_collateral::deposit_collateral`)}isWithdrawCollateralTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::withdraw_collateral::withdraw_collateral`)}isBorrowTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::borrow::borrow`)}isBorrowWithBoostTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.protocolPkg}::borrow::borrow`),e=this.getMoveCallTransaction(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca`);return!!t&&!!e}isRepayTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::repay::repay`)}isUnstakeSpoolTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::unstake`)}isCreateStakeAccountTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::new_spool_account`)}isClaimRewardTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::redeem_rewards`),e=this.getMoveCallTransaction(`${this.coreId.borrowIncentivePkg}::user::redeem_rewards`);return!!t||!!e}isStakeScaFirsTime(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_key`)}isExtendPeriodAndStakeMoreSca(){let t=this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`),e=this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`);return!!t&&!!e}isRedeemSca(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::redeem`)}isStakeMoreSca(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`)}isExtendPeriod(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`)}isRenewExpiredVeSca(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::renew_expired_ve_sca`)}isOpenObligationTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::open_obligation::open_obligation_entry`)}isMigrateAndClaim(){let t=this.getMoveCallTransaction(`${Wa}::user::redeem_rewards`),e=this.getMoveCallTransaction(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca`);return!!t&&!!e}decodeMigrateAndClaim(){let t=this.helperStakeObligationWithVeSca.decodeOwnedObjectId(9),e=this.helperClaimBorrowReward[0].decodeSharedObjectId(2),i=this.helperClaimBorrowReward[0].decodeOwnedObjectId(3),n=this._builder.utils.parseCoinNameFromType(this.helperClaimBorrowReward[0].typeArg(0));return{txType:It.TransactionType.Other,type:"MigrateAndClaim",intentionData:{veScaKey:t,obligationKey:e,obligationId:i,rewardCoinName:n}}}decodeOpenObligation(){return{txType:It.TransactionType.Other,type:"OpenObligation",intentionData:{}}}decodeRedeemSca(){let t=this.helperRedeemSca.decodeOwnedObjectId(1);return{txType:It.TransactionType.Other,type:"RedeemSca",intentionData:{veScaKey:t}}}decodeRenewExpiredVeSca(){let t=this.helperRenewExpired.getNestedInputParam(4),e=this.helperRenewExpired.decodeInputU64(5),i=new Gi(t,this.txb).getAmountInput().reduce((C,O)=>C+O,0),n=this.helperRenewExpired.decodeOwnedObjectId(1),r=!!this.helperRedeemSca.moveCall,o=[],s=[],a=[];this.helperOldUnstakeObligation.moveCall&&(o=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(s=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeObligationWithVeSca.moveCall&&(a=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let l=!1,u=!1,h,y,v=[{condition:o,isOld:!0},{condition:s,isOld:!1},{condition:a,isOld:!1}];for(let C=0;C<v.length;C++)v[C].condition.length>1&&([y,h]=v[C].condition,l=!0,u=v[C].isOld);return{txType:It.TransactionType.Other,type:"RenewExpStakePeriod",intentionData:{amount:i,lockPeriodInDays:e,obligationId:h,obligationKey:y,veScaKey:n,isHaveRedeem:r,isObligationLocked:l,isOldBorrowIncentive:u}}}decodeExtendStakePeriod(){let t=this.helperExtendStakePeriod.decodeInputU64(4),e=this.helperExtendStakePeriod.decodeOwnedObjectId(1),i=[],n=[],r=[];this.helperOldUnstakeObligation.moveCall&&(i=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(n=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeObligationWithVeSca.moveCall&&(r=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let o=!1,s=!1,a,l,u=[{condition:i,isOld:!0},{condition:n,isOld:!1},{condition:r,isOld:!1}];for(let h=0;h<u.length;h++)u[h].condition.length>1&&([l,a]=u[h].condition,o=!0,s=u[h].isOld);return{txType:It.TransactionType.Other,type:"ExtendStakePeriod",intentionData:{lockPeriodInDays:t,obligationId:a,obligationKey:l,veScaKey:e,isObligationLocked:o,isOldBorrowIncentive:s}}}decodePeriodAndStakeMoreSca(){let t=this.helperStakeMoreSca.getNestedInputParam(4),e=this.helperExtendStakePeriod.decodeInputU64(4),i=new Gi(t,this.txb).getAmountInput().reduce((v,C)=>v+C,0),n=[],r=[],o,s=[];this.helperOldUnstakeObligation.moveCall&&(n=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(r=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeMoreSca.moveCall&&(o=this.helperStakeMoreSca.decodeOwnedObjectId(1)),this.helperStakeObligationWithVeSca.moveCall&&(s=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let a=!1,l=!1,u,h,y=[{condition:n,isOld:!0},{condition:r,isOld:!1},{condition:s,isOld:!1}];for(let v=0;v<y.length;v++)y[v].condition.length>1&&([h,u]=y[v].condition,a=!0,l=y[v].isOld);return{txType:It.TransactionType.Other,type:"ExtendPeriodAndStakeMore",intentionData:{amount:i,veScaKey:o,lockPeriodInDays:e,obligationId:u,obligationKey:h,isOldBorrowIncentive:l,isObligationLocked:a}}}decodeStakeSca(){let t,e;this.helperStakeSca.moveCall&&this.helperStakeMoreSca.moveCall===void 0?(t=this.helperStakeSca.getNestedInputParam(3),e=this.helperStakeSca.decodeInputU64(4)):(t=this.helperStakeMoreSca.getNestedInputParam(4),console.log(t));let i=new Gi(t,this.txb).getAmountInput().reduce((v,C)=>v+C,0),n=[],r=[],o,s=[];this.helperOldUnstakeObligation.moveCall&&(n=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(r=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeMoreSca.moveCall&&(o=this.helperStakeMoreSca.decodeOwnedObjectId(1)),this.helperStakeObligationWithVeSca.moveCall&&(s=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let a=!1,l=!1,u,h,y=[{condition:n,isOld:!0},{condition:r,isOld:!1},{condition:s,isOld:!1}];for(let v=0;v<y.length;v++)y[v].condition.length>1&&([h,u]=y[v].condition,a=!0,l=y[v].isOld);return{txType:It.TransactionType.Other,type:"StakeSca",intentionData:{amount:i,lockPeriodInDays:e,obligationId:u,obligationKey:h,veScaKey:o,isObligationLocked:a,isOldBorrowIncentive:l}}}decodeSupplyLending(){let t=this._builder.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),e=this.helperMint.getNestedInputParam(2),i=new Gi(e,this.txb).getAmountInput().reduce((n,r)=>n+r,0);return{txType:It.TransactionType.Other,type:"SupplyLending",intentionData:{amount:i,coinName:t}}}decodeWithdrawLending(){let t=this._builder.utils.parseCoinNameFromType(this.helperRedeem.typeArg(0)),e=this.helperRedeem.getNestedInputParam(2),i=new Gi(e,this.txb).getAmountInput().reduce((n,r)=>n+r,0);return{txType:It.TransactionType.Other,type:"WithdrawLending",intentionData:{amount:i,coinName:t}}}decodeDepositCollateral(){let t=this._builder.utils.parseCoinNameFromType(this.helperDepositCollateral.typeArg(0)),e=this.helperDepositCollateral.getNestedInputParam(3),i=new Gi(e,this.txb).getAmountInput().reduce((r,o)=>r+o,0),n=this.helperDepositCollateral.decodeSharedObjectId(1);return{txType:It.TransactionType.Other,type:"DepositCollateral",intentionData:{amount:i,obligationId:n,collateralCoinName:t}}}decodeWithdrawCollateral(){let t=this._builder.utils.parseCoinNameFromType(this.helperWithdrawCollateral.typeArg(0)),e=this.helperWithdrawCollateral.decodeInputU64(5),i=this.helperWithdrawCollateral.decodeSharedObjectId(1),n=this.helperWithdrawCollateral.decodeOwnedObjectId(2);return{txType:It.TransactionType.Other,type:"WithdrawCollateral",intentionData:{amount:e,collateralCoinName:t,obligationKey:n,obligationId:i}}}decodeBorrow(){let t=this._builder.utils.parseCoinNameFromType(this.helperBorrow.typeArg(0)),e=this.helperBorrow.decodeInputU64(5),i=this.helperBorrow.decodeSharedObjectId(1),n=this.helperBorrow.decodeOwnedObjectId(2);return{txType:It.TransactionType.Other,type:"Borrow",intentionData:{amount:e,coinName:t,obligationKey:n,obligationId:i}}}decodeBorrowWithBoost(){let t=this._builder.utils.parseCoinNameFromType(this.helperBorrow.typeArg(0)),e=this.helperStakeObligationWithVeSca.decodeOwnedObjectId(9),i=this.helperBorrow.decodeInputU64(5),n=this.helperBorrow.decodeSharedObjectId(1),r=this.helperBorrow.decodeOwnedObjectId(2);return{txType:It.TransactionType.Other,type:"BorrowWithBoost",intentionData:{amount:i,coinName:t,obligationKey:r,obligationId:n,veScaKey:e}}}decodeRepay(){let t=this._builder.utils.parseCoinNameFromType(this.helperRepay.typeArg(0)),e=this.helperRepay.getNestedInputParam(3),i=new Gi(e,this.txb).getAmountInput().reduce((r,o)=>r+o,0),n=this.helperRepay.decodeSharedObjectId(1);return{txType:It.TransactionType.Other,type:"Repay",intentionData:{amount:i,obligationId:n,coinName:t}}}decodeStakeSpool(){let t;this.isCreateStakeAccountTransaction()||(t=this.helperStake.decodeOwnedObjectId(1));let e=this.helperStake.getNestedInputParam(2),i=new Gi(e,this.txb).getAmountInput().reduce((o,s)=>o+s,0),n=this.helperStake.typeArg(0),r=this._builder.utils.parseCoinNameFromType(n);return{txType:It.TransactionType.Other,type:"StakeSpool",intentionData:{amount:i,marketCoinName:r,stakeAccountId:t}}}decodeUnstakeSpool(){let t=this.helperUnstake.decodeOwnedObjectId(1),e=this.helperUnstake.decodeInputU64(2),i=this.helperUnstake.typeArg(0),n=this._builder.utils.parseCoinNameFromType(i);return{txType:It.TransactionType.Other,type:"UnstakeSpool",intentionData:{amount:e,marketCoinName:n,stakeAccountId:t}}}decodeSupplyWithStakeSpool(){let t=this._builder.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),e=this.helperMint.getNestedInputParam(2),i=new Gi(e,this.txb).getAmountInput().reduce((r,o)=>r+o,0),n;return this.isCreateStakeAccountTransaction()||(n=this.helperStake.decodeOwnedObjectId(1)),{txType:It.TransactionType.Other,type:"SupplyAndStakeLending",intentionData:{amount:i,coinName:t,stakeAccountId:n}}}decodeUnstakeAndWithdraw(){let t=[];this.helperUnstakes.forEach(r=>{let o=r.decodeOwnedObjectId(1),s=r.decodeInputU64(2);t.push({id:o,coin:s})});let e=this._builder.utils.parseCoinNameFromType(this.helperRedeems[0].typeArg(0)),i=this.helperRedeems.find(r=>r.isHaveNestedInput(2)),n;return i&&(n=new Gi(i.getNestedInputParam(2),this.txb).getAmountInput().reduce((r,o)=>r+o,0)),{txType:It.TransactionType.Other,type:"WithdrawAndUnstakeLending",intentionData:{amount:n,coinName:e,stakeAccountId:t}}}decodeClaimReward(){let t=[],e=[],i=[];return this.helperClaimLendingReward.forEach(n=>{let r=n.decodeOwnedObjectId(2),o=n.typeArg(0),s=this._builder.utils.parseCoinNameFromType(o);t.push({stakeMarketCoinName:s,stakeAccountId:r})}),this.helperClaimBorrowV2Reward.forEach(n=>{let r=n.decodeSharedObjectId(3),o=n.decodeOwnedObjectId(4),s=this._builder.utils.parseCoinNameFromType(n.typeArg(0));e.push({obligationId:o,obligationKey:r,rewardCoinName:s})}),this.helperClaimBorrowReward.forEach(n=>{let r=n.decodeSharedObjectId(2),o=n.decodeOwnedObjectId(3),s=this._builder.utils.parseCoinNameFromType(n.typeArg(0));i.push({obligationId:o,obligationKey:r,rewardCoinName:s})}),{txType:It.TransactionType.Other,type:"ClaimIncentiveReward",intentionData:{lendingIncentive:t,borrowIncentiveV2:e,borrowIncentive:i}}}get helperClaimLendingReward(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${this.coreId.spoolPkg}::user::redeem_rewards`)).map(t=>new Ge(t,this.txb))}get helperClaimBorrowV2Reward(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${this.coreId.borrowIncentivePkg}::user::redeem_rewards`)).map(t=>new Ge(t,this.txb))}get helperStakeMoreSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`));return new Ge(t,this.txb)}get helperStakeSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_key`));return new Ge(t,this.txb)}get helperExtendStakePeriod(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`));return new Ge(t,this.txb)}get helperRedeemSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::redeem`));return new Ge(t,this.txb)}get helperRenewExpired(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::renew_expired_ve_sca`));return new Ge(t,this.txb)}get helperOldUnstakeObligation(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${Wa}::user::unstake`));return new Ge(t,this.txb)}get helperUnstakeObligation(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.borrowIncentivePkg}::user::unstake`));return new Ge(t,this.txb)}get helperStakeObligationWithVeSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca`));return new Ge(t,this.txb)}get helperClaimBorrowReward(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${Wa}::user::redeem_rewards`)).map(t=>new Ge(t,this.txb))}get helperMint(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::mint::mint`));return new Ge(t,this.txb)}get helperUnstakes(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${this.coreId.spoolPkg}::user::unstake`)).map(t=>new Ge(t,this.txb))}get helperRedeems(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${this.coreId.protocolPkg}::redeem::redeem`)).map(t=>new Ge(t,this.txb))}get helperRedeem(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::redeem::redeem`));return new Ge(t,this.txb)}get helperStake(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.spoolPkg}::user::stake`));return new Ge(t,this.txb)}get helperUnstake(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.spoolPkg}::user::unstake`));return new Ge(t,this.txb)}get helperDepositCollateral(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::deposit_collateral::deposit_collateral`));return new Ge(t,this.txb)}get helperWithdrawCollateral(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::withdraw_collateral::withdraw_collateral`));return new Ge(t,this.txb)}get helperBorrow(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::borrow::borrow`));return new Ge(t,this.txb)}get helperRepay(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::repay::repay`));return new Ge(t,this.txb)}},Gi=class{constructor(t,e){this.splitCoin=t,this.txb=e}getAmountInput(){return this.splitCoin.amounts.map(t=>{if(t.kind==="Input")return Number(Ge.getPureInputValue(t,"u64"))}).filter(t=>t!==void 0)}static getPureInputValue(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value=="object"&&"Pure"in t.value){let i=t.value.Pure;return ec.bcs.de(e,new Uint8Array(i))}return t.value}},Ge=class Ga{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return Ga.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return Ga.getOwnedObjectId(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return Number(i)}decodeInputU8(e){let i=this.decodePureArg(e,"u8");return Number(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,Fn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return Ga.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}getNestedInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="NestedResult")throw new Error("not input type");return this.txb.blockData.transactions[i.index]}isHaveNestedInput(e){return this.moveCall.arguments[e].kind==="NestedResult"}static getPureInputValue(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure;return ec.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Fn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Fn.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Fn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Fn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let n=e.value.Pure;return ec.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,Fn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},gC={mainnet:{core:{version:"0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",versionCap:"0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",object:"0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf",market:"0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",adminCap:"0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",coinDecimalsRegistry:"0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",obligationAccessStore:"0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9",coins:{cetus:{id:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",metaData:"0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",feedObject:"0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"}}},apt:{id:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",metaData:"0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",feedObject:"0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"}}},sol:{id:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",metaData:"0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",feedObject:"0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"}}},btc:{id:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",metaData:"0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",feedObject:"0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"}}},eth:{id:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",metaData:"0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",feedObject:"0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"}}},usdc:{id:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",metaData:"0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",feedObject:"0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"}}},usdt:{id:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",metaData:"0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",feedObject:"0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"}}},sui:{id:"0x0000000000000000000000000000000000000000000000000000000000000002",metaData:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",treasury:"",oracle:{supra:"",switchboard:"0xbca474133638352ba83ccf7b5c931d50f764b09550e16612c9f70f1e21f3f594",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},afsui:{id:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",metaData:"0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},hasui:{id:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",metaData:"0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},vsui:{id:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",metaData:"0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},sca:{id:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",metaData:"0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",feedObject:"0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"}}}},oracles:{xOracle:"0x93d5bf0936b71eb27255941e532fac33b5a5c7759e377b4923af0a1359ad494f",xOracleCap:"0x1edeae568fde99e090dbdec4bcdbd33a15f53a1ce1f87aeef1a560dedf4b4a90",supra:{registry:"",registryCap:"",holder:""},switchboard:{registry:"",registryCap:""},pyth:{registry:"0xedc293f9413a5a7a5d53bdba1fd889d0a4030894469228f0acdae4aa3c55a213",registryCap:"0xbcb07141eb1f7e01fbda4130ecf5f5adaeabb77f5d9c32158b7532bcd2197acd",state:"0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",wormhole:"0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",wormholeState:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"}},packages:{coinDecimalsRegistry:{id:"0xca5a5a62f01c79a104bf4d31669e29daa387f325c241de4edbe30986a9bc8b0d",upgradeCap:"0x34e76a945d29f195bc53ca704fa70877d1cf3a5d7bbfdda1b13e633fff13c0f6"},math:{id:"0xad013d5fde39e15eabda32b3dbdafd67dac32b798ce63237c27a8f73339b9b6f",upgradeCap:"0x3a329598231de02e6135c62284b66005b41cad1d9ab7ca2dc79c08293aba2ec6"},whitelist:{id:"0x1318fdc90319ec9c24df1456d960a447521b0a658316155895014a6e39b5482f",upgradeCap:"0xf5a22aea23db664f7b69855b6a546747f17c1ec4230319cfc17225e462b05761"},x:{id:"0x779b5c547976899f5474f3a5bc0db36ddf4697ad7e5a901db0415c2281d28162",upgradeCap:"0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"},protocol:{id:"0x38fe42a5a69f7eb3635404389e8003be9457b1a5c873f133184648c7e9bd47b7",upgradeCap:"0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"},protocolWhitelist:{id:"0x4c262d9343dac53ecb28f482a2a3f62c73d0ebac5b5f03d57383d56ff219acdf",upgradeCap:"0x4a5e88a75039b00988f633f811f58117f31b8627a46bf822aa114d9010049449"},query:{id:"0xb8d603a39114a5efef3dd0bf84df0bed1be1fbd39b78b7dd6e8a61ccc5e6006f",upgradeCap:"0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"},supra:{id:"",upgradeCap:""},pyth:{id:"0x910f30cbc7f601f75a5141a01265cd47c62d468707c5e1aecb32a18f448cb25a",upgradeCap:"0xdf0ffbae1ea5bb25fbca5efba433dcf00c7cced65679af2f04728901275c6157"},switchboard:{id:"",upgradeCap:""},xOracle:{id:"0x1478a432123e4b3d61878b629f2c692969fdb375644f1251cd278a4b1e7d7cd6",upgradeCap:"0x0f928a6b2e26b73330fecaf9b44acfc9800a4a9794d6415c2a3153bc70e3c1f0"},testCoin:{id:"",upgradeCap:""}}},spool:{id:"0xec1ac7f4d01c5bf178ff4e62e523e7df7721453d81d4904a42a0ffc2686c843d",adminCap:"0xdd8a047cbbf802bfcde5288b8ef1910965d789cc614da11d39af05fca0bd020a",object:"0xe87f1b2d498106a2c61421cec75b7b5c5e348512b0dc263949a0e7a3c256571a",pools:{seth:{id:"0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",rewardPoolId:"0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"},ssui:{id:"0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",rewardPoolId:"0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9"},susdc:{id:"0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",rewardPoolId:"0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8"},susdt:{id:"0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",rewardPoolId:"0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080"},scetus:{id:"0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",rewardPoolId:"0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"},safsui:{id:"0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",rewardPoolId:"0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e"},shasui:{id:"0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",rewardPoolId:"0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66"},svsui:{id:"0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",rewardPoolId:"0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a"}},version:"",versionCap:""},borrowIncentive:{id:"0x874f1d43d81e2256e120bab2485938fe07ba0cc21d87129a99a1db11cacb382d",adminCap:"0xc486afa253646f4d381e81d7f1df8aa4723b845a6bb356f69bad635ffefffe2c",object:"0x002875153e09f8145ab63527bc85c00f2bd102e12f9573c47f8cdf1a1cb62934",query:"0x529edc54a3dce2207703ceebbccb0ac14133f7825c1f528775ba0d85a4063489",incentivePools:"0x6547e143d406b5ccd5f46aae482497de279cc1a68c406f701df70a05f9212ab4",incentiveAccounts:"0xc4701fdbc1c92f9a636d334d66012b3027659e9fb8aff27279a82edfb6b77d02",config:"0xdf5d04b4691cc67e82fd4db8394d89ff44823a9de29716c924f74bb4f11cc1f7",version:"",versionCap:""},vesca:{id:"0xcfe2d87aa5712b67cad2732edb6a2201bfdf592377e5c0968b7cb02099bd8e21",adminCap:"0x4d105b16467acca81d18c132cdd1a3cee159920a86c1ef4bdbf2e8d7878500c5",tableId:"0x0a0b7f749baeb61e3dfee2b42245e32d0e6b484063f0a536b33e771d573d7246",table:"0xd3a4632b1080f7d96e1c2487d4dabf2c1196916937c505a69954ac9f393be8d0",treasury:"0xafa4b6231e49c15a22d641ce33fda761baaf650fa21899dfa2eb1716146e7306",config:"0x7cbcb0a342179577a117dfdff974cf1ab765d3b571067bf22ddf5f9e3a667922"}}},sc=class{_auth;_id;_network;_currentAddresses;_addressesMap;constructor(t){let{id:e,auth:i,network:n}=t;i&&(this._auth=i),this._id=e,this._network=n||"mainnet",this._addressesMap=new Map}getId(){return this._id||void 0}get(t){if(this._currentAddresses)return t.split(".").reduce((e,i)=>typeof e=="object"?e[i]:e,this._currentAddresses)||void 0}set(t,e){if(this._currentAddresses){let i=t.split(".");i.reduce((n,r,o)=>{if(o===i.length-1){let s=n;s[r]=e}return n[r]},this._currentAddresses)}return this._currentAddresses}switchCurrentAddresses(t){return this._addressesMap.has(t)&&(this._currentAddresses=this._addressesMap.get(t),this._network=t),this._currentAddresses}getAddresses(t){return t?this._addressesMap.get(t):this._currentAddresses??this._addressesMap.get(this._network)}setAddresses(t,e){let i=e||this._network;i===this._network&&(this._currentAddresses=t),this._addressesMap.set(i,t)}getAllAddresses(){return Object.fromEntries(this._addressesMap)}read(){return Object.entries(gC).forEach(([t,e])=>{["localnet","devnet","testnet","mainnet"].includes(t)&&(t===this._network&&(this._currentAddresses=e),this._addressesMap.set(t,e))}),this.getAllAddresses()}},Ci=t=>{let{sender:e}=t.blockData;if(!e)throw new Error("Sender is required");return e},_C=(t,e,i,n)=>{let r=!n,o=!r&&n*1e3<=new Date().getTime();if(r||o)if(t!==void 0&&e!==void 0){if(e<=0)throw new Error("Lock period must be greater than 0");if(typeof t=="number"&&t<1e10)throw new Error(`Minimum lock amount for ${o?"renewing expired veSca":"initial lock"} is 10 SCA`);if(e*86400>126144e3)throw new Error("Maximum lock period is ~4 years (1460 days)")}else throw new Error(`SCA amount and lock period is required for ${o?"renewing expired veSca":"initial lock"}`);else{if(ds(n),typeof t=="number"&&t<1e9)throw new Error("Minimum top up amount is 1 SCA");if(i&&n&&i-n>126057600)throw new Error("Maximum lock period is ~4 years (1459 days)")}},bC=(t,e,i)=>{if(ds(i),t<=0)throw new Error("Lock period must be greater than 0");if(i&&i*1e3<=new Date().getTime())throw new Error("veSca is expired, use renewExpiredVeScaQuick instead");if(i&&e-(i??0)>126057600)throw new Error("Maximum lock period is ~4 years (1459 days)")},yC=(t,e)=>{if(ds(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")},wC=(t,e,i)=>{if(ds(i),t<1e10)throw new Error("Minimum lock amount for renewing expired vesca 10 SCA");if(e*86400>=126057600)throw new Error("Maximum lock period is ~4 years (1459 days)")},ds=t=>{if(t===void 0)throw new Error("veSca not found")},vC=t=>({pointType:(0,fs.normalizeStructTag)(t.point_type.name),weightedAmount:Number(t.weighted_amount),points:Number(t.points),totalPoints:Number(t.total_points),index:Number(t.index)}),kC=t=>({poolType:(0,fs.normalizeStructTag)(t.pool_type.name),debtAmount:Number(t.debt_amount),pointList:t.points_list.reduce((e,i)=>{let n=vC(i),r=(0,fs.parseStructTag)(n.pointType).name.toLowerCase();return e[r]=n,e},{})}),Dm=t=>{let e=t.slice(1).toLowerCase();return t.charAt(0).toLowerCase()==="s"&&[...new Set([...oc,...j0,...dC])].includes(e)},Mm=t=>{switch(t){case"afsui":return"afSUI";case"hasui":return"haSUI";case"vsui":return"vSUI";default:return t.toUpperCase()}},TC=t=>{let e=new Date(t*1e3),i=new Date(t*1e3);i.setUTCHours(0,0,0,0),e.getUTCHours()>=0&&i.setUTCDate(i.getUTCDate()+1);let n=new Date().getTime();return i.getTime()-n>126144e3*1e3&&i.setUTCDate(i.getUTCDate()-1),Math.floor(i.getTime()/1e3)},Xu=class{params;isTestnet;_address;client;constructor(t,e){this.params=t,this._address=e?.address??new sc({id:t?.addressesId||rc,network:t?.networkType}),this.isTestnet=t.networkType?t.networkType==="testnet":!1,this.client=t.client}init(t=!1,e){t||!this._address.getAddresses()||!e?.getAddresses()?this._address.read():this._address=e}parseSymbol(t){if(Dm(t)){let e=t.slice(1).toLowerCase();return t.slice(0,1).toLowerCase()+Mm(e)}return Mm(t)}parseCoinType(t){let e=Dm(t)?this.parseCoinName(t):t,i=this._address.get(`core.coins.${e}.id`)||pC[t]||void 0;if(!i)throw Error(`Coin ${t} is not supported`);if(t==="sui")return(0,ls.normalizeStructTag)(`${i}::sui::SUI`);let n=[this._address.get("core.coins.usdc.id")??Ti.usdc,this._address.get("core.coins.usdt.id")??Ti.usdt,this._address.get("core.coins.eth.id")??Ti.eth,this._address.get("core.coins.btc.id")??Ti.btc,this._address.get("core.coins.sol.id")??Ti.sol,this._address.get("core.coins.apt.id")??Ti.apt],r=[this._address.get("core.coins.vsui.id")??Pm.vsui];return n.includes(i)?`${i}::coin::COIN`:r.includes(i)?`${i}::cert::CERT`:`${i}::${e}::${e.toUpperCase()}`}parseMarketCoinType(t){let e=this._address.get("core.object")||E0,i=this.parseCoinType(t);return`${e}::reserve::MarketCoin<${i}>`}parseCoinNameFromType(t){let e=(0,ls.normalizeStructTag)(t),i=/((0x[^:]+::[^:]+::[^<>]+))(?![^<>]*<)/,n=t.match(i),r=t.includes("reserve::MarketCoin");e=n?.[1]||t;let o={[`${this._address.get("core.coins.usdc.id")??Ti.usdc}::coin::COIN`]:"usdc",[`${this._address.get("core.coins.usdt.id")??Ti.usdt}::coin::COIN`]:"usdt",[`${this._address.get("core.coins.eth.id")??Ti.eth}::coin::COIN`]:"eth",[`${this._address.get("core.coins.btc.id")??Ti.btc}::coin::COIN`]:"btc",[`${this._address.get("core.coins.sol.id")??Ti.sol}::coin::COIN`]:"sol",[`${this._address.get("core.coins.apt.id")??Ti.apt}::coin::COIN`]:"apt"},s={[`${this._address.get("core.coins.vsui.id")??Pm.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=>B0[t];getBorrowIncentiveRewardCoinName=t=>hC[t];getCoinDecimal(t){return fC[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=ls.SUI_TYPE_ARG,i){let n=i,r=[],o=0,s=!0,a=null;for(;s&&o<t;){let l=await this.client.getCoins({owner:n,coinType:e,cursor:a});l.data.sort((u,h)=>parseInt(h.balance,10)-parseInt(u.balance,10));for(let u=0;u<l.data.length&&(r.push({objectId:l.data[u].coinObjectId,digest:l.data[u].digest,version:l.data[u].version}),o+=parseInt(l.data[u].balance,10),!(o>=t));u++);a=l.nextCursor,s=l.hasNextPage}if(!r.length)throw new Error("No valid coins found for the transaction.");return r.map(l=>l.objectId)}parseAprToApy(t,e=365){return(1+t/e)**e-1}parseApyToApr(t,e=365){return((1+t)**(1/e)-1)*e}takeAmountFromCoins(t,e,i){let n=e.map(s=>t.object(s)),r=n[0];n.length>1&&t.mergeCoins(r,n.slice(1));let[o]=t.splitCoins(r,[t.pure(i)]);return[o,r]}getUnlockAt(t,e){let i=Math.floor(new Date().getTime()/1e3),n=e?Math.max(e-i,0):0,r=0;if(n===0){let o=(t??1)*86400;r=Math.min(i+o,i+126144e3)}else{let o=Math.min(t?t*86400+n:n,126144e3);r=i+o}return TC(r)}},Ju=async(t,e)=>{let i=e,n=t.address.get("core.object")||E0,r=[],o=!1,s=null;do{let h=await t.client.getOwnedObjects({owner:i,filter:{StructType:`${n}::obligation::ObligationKey`},cursor:s});r.push(...h.data),h.hasNextPage&&h.nextCursor?(o=!0,s=h.nextCursor):o=!1}while(o);let a=r.map(h=>h?.data?.objectId).filter(h=>h!==void 0),l=await t.client.multiGetObjects({ids:a,options:{showContent:!0,showType:!0}}),u=[];for(let h=0;h<l.length;h++){let y=l[h].data.objectId,{content:v}=l[h].data;if(v&&"fields"in v){let C=v.fields,O=String(C.ownership.fields.of),P=await L0(t,O);u.push({id:O,keyId:y,locked:P})}}return u},L0=async(t,e)=>{let i=await t.client.getObject({id:e,options:{showContent:!0}}),n=!1;return i.data&&i?.data?.content?.dataType==="moveObject"&&"lock_key"in i.data.content.fields&&(n=!!i.data.content.fields.lock_key),n},CC=async(t,e,i)=>{let n=i||[...oc],r=e,o=[],s=!1,a=null;do{let u=await t.client.getOwnedObjects({owner:r,filter:{MatchAny:n.map(h=>({StructType:`0x2::coin::Coin<${t.utils.parseCoinType(h)}>`}))},options:{showType:!0,showContent:!0},cursor:a});o.push(...u.data),u.hasNextPage&&u.nextCursor?(s=!0,a=u.nextCursor):s=!1}while(s);let l={};return o.map(u=>u.data).filter(u=>u!=null).forEach(u=>{let h=u.type;if(u.content&&"fields"in u.content){let y=u.content.fields,v=t.utils.parseCoinNameFromType(h);v&&(l[v]=vi(l[v]??0).plus(y.balance).toNumber())}}),l},SC=async(t,e,i)=>{let n=i,r=t.utils.parseCoinType(e),o=[],s=!1,a=null;do{let u=await t.client.getOwnedObjects({owner:n,filter:{StructType:`0x2::coin::Coin<${r}>`},options:{showContent:!0},cursor:a});o.push(...u.data),u.hasNextPage&&u.nextCursor?(s=!0,a=u.nextCursor):s=!1}while(s);let l=0;return o.map(u=>u.data).filter(u=>u!=null).forEach(u=>{if(u.content&&"fields"in u.content){let h=u.content.fields;l=vi(l).plus(h.balance).toNumber()}}),l},xC=async(t,e,i)=>{let n=i||[...oc].map(u=>t.utils.parseMarketCoinName(u)),r=e,o=[],s=!1,a=null;do{let u=await t.client.getOwnedObjects({owner:r,filter:{MatchAny:n.map(h=>({StructType:`0x2::coin::Coin<${t.utils.parseMarketCoinType(h)}>`}))},options:{showType:!0,showContent:!0},cursor:a});o.push(...u.data),u.hasNextPage&&u.nextCursor?(s=!0,a=u.nextCursor):s=!1}while(s);let l={};return o.map(u=>u.data).filter(u=>u!=null).forEach(u=>{let h=u.type;if(u.content&&"fields"in u.content){let y=u.content.fields,v=t.utils.parseCoinNameFromType(h);v&&(l[v]=vi(l[v]??0).plus(y.balance).toNumber())}}),l},AC=async(t,e,i)=>{let n=i,r=t.utils.parseMarketCoinType(e),o=[],s=!1,a=null;do{let u=await t.client.getOwnedObjects({owner:n,filter:{StructType:`0x2::coin::Coin<${r}>`},options:{showContent:!0},cursor:a});o.push(...u.data),u.hasNextPage&&u.nextCursor?(s=!0,a=u.nextCursor):s=!1}while(s);let l=0;return o.map(u=>u.data).filter(u=>u!=null).forEach(u=>{if(u.content&&"fields"in u.content){let h=u.content.fields;l=vi(l).plus(h.balance).toNumber()}}),l},IC=async(t,e)=>{let i=`${t.address.get("core.packages.query.id")}::obligation_query::obligation_data`,n=new q0.TransactionBlock;return n.moveCall({target:i,arguments:[n.object(e)]}),(await t.client.devInspectTransactionBlock({transactionBlock:n,sender:t.walletAddress})).events[0].parsedJson},Yu=async(t,e)=>{let i=e,n=t.address.get("spool.object"),r=`${n}::spool_account::SpoolAccount`,o=[],s=!1,a=null;do{let y=await t.client.getOwnedObjects({owner:i,filter:{StructType:r},options:{showContent:!0,showType:!0},cursor:a});o.push(...y.data),y.hasNextPage&&y.nextCursor?(s=!0,a=y.nextCursor):s=!1}while(s);let l={seth:[],ssui:[],susdc:[],susdt:[],scetus:[],safsui:[],shasui:[],svsui:[]},u=Object.keys(l).reduce((y,v)=>{let C=t.utils.parseCoinName(v),O=t.utils.parseMarketCoinType(C),P={...y},j=`${n}::spool_account::SpoolAccount<${O}>`;return P[v]=j,P},{}),h=o.map(y=>y?.data?.objectId).filter(y=>y!==void 0);return(await t.client.multiGetObjects({ids:h,options:{showContent:!0,showType:!0}})).forEach(y=>{let v=y.data.objectId,C=y.data.type;if(y.data.content&&"fields"in y.data.content){let O=y.data.content.fields,P=String(O.spool_id),j=String(O.stake_type.fields.name),B=Number(O.stakes),D=Number(O.index),q=Number(O.points),K=Number(O.total_points);(0,Be.normalizeStructTag)(C)===u.seth?l.seth.push({id:v,type:(0,Be.normalizeStructTag)(C),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(C)===u.ssui?l.ssui.push({id:v,type:(0,Be.normalizeStructTag)(C),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(C)===u.susdc?l.susdc.push({id:v,type:(0,Be.normalizeStructTag)(C),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(C)===u.susdt?l.susdt.push({id:v,type:(0,Be.normalizeStructTag)(C),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(C)===u.scetus?l.scetus.push({id:v,type:(0,Be.normalizeStructTag)(C),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(C)===u.safsui?l.safsui.push({id:v,type:(0,Be.normalizeStructTag)(C),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(C)===u.shasui?l.shasui.push({id:v,type:(0,Be.normalizeStructTag)(C),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(C)===u.svsui&&l.svsui.push({id:v,type:(0,Be.normalizeStructTag)(C),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K})}}),l},Em=async(t,e)=>{let i=t.address.get(`spool.pools.${e}.id`),n,r=await t.client.getObject({id:i,options:{showContent:!0,showType:!0}});if(r.data){let o=r.data,s=o.objectId,a=o.type;if(o.content&&"fields"in o.content){let l=o.content.fields,u=Number(l.max_distributed_point),h=Number(l.distributed_point),y=Number(l.distributed_point_per_period),v=Number(l.point_distribution_time),C=Number(l.max_stakes),O=String(l.stake_type.fields.name),P=Number(l.stakes),j=Number(l.index),B=Number(l.created_at),D=Number(l.last_update);n={id:s,type:(0,Be.normalizeStructTag)(a),maxPoint:u,distributedPoint:h,pointPerPeriod:y,period:v,maxStake:C,stakeType:(0,Be.normalizeStructTag)(O),totalStaked:P,index:j,createdAt:B,lastUpdate:D}}}return n},jm=async(t,e)=>{let i=t.address.get(`spool.pools.${e}.rewardPoolId`),n,r=await t.client.getObject({id:i,options:{showContent:!0,showType:!0}});if(r.data){let o=r.data,s=o.objectId,a=o.type;if(o.content&&"fields"in o.content){let l=o.content.fields,u=String(l.spool_id),h=Number(l.exchange_rate_numerator),y=Number(l.exchange_rate_denominator),v=Number(l.rewards),C=Number(l.claimed_rewards);n={id:s,type:(0,Be.normalizeStructTag)(a),stakePoolId:u,ratioNumerator:h,ratioDenominator:y,rewards:v,claimedRewards:C}}}return n},OC=async(t,e,i,n)=>{let r=n||[...za],o=t.address.get("borrowIncentive.query"),s=t.address.get("borrowIncentive.incentiveAccounts"),a=`${o}::incentive_account_query::incentive_account_data`,l=new $0.TransactionBlock;l.moveCall({target:a,arguments:[l.object(s),l.object(e)]});let u=(await t.client.devInspectTransactionBlock({transactionBlock:l,sender:i})).events[0].parsedJson,h={};return u.pool_records.forEach(y=>{let v=kC(y),{poolType:C}=v,O=t.utils.parseCoinNameFromType(C);r.length>=1&&r.includes(O)&&(h[O]=v)},{}),h},PC=async(t,e)=>{let i=t.address.get(`core.coins.${e}.oracle.pyth.feedObject`),n=await t.client.getObject({id:i,options:{showContent:!0}});if(n.data){let r=n.data;if(r.content&&"fields"in r.content){let o=r.content.fields,s=Number(o.price_info.fields.price_feed.fields.price.fields.expo.fields.magnitude),a=Number(o.price_info.fields.price_feed.fields.price.fields.expo.fields.negative),l=Number(o.price_info.fields.price_feed.fields.price.fields.price.fields.magnitude),u=Number(o.price_info.fields.price_feed.fields.price.fields.price.fields.negative);return l*10**((a?-1:1)*s)*(u?-1:1)}}return 0},U0=async(t,e)=>{let i=e,n=`${t.address.get("vesca.id")}::ve_sca::VeScaKey`,r=[],o=!1,s=null;do{let a=await t.client.getOwnedObjects({owner:i,filter:{StructType:n},cursor:s});r.push(...a.data),a.hasNextPage&&a.nextCursor?(o=!0,s=a.nextCursor):o=!1}while(o);return r.map(a=>a.data).filter(a=>!!a)},DC=async(t,e)=>{let i=(await U0(t,e)).map(r=>r.objectId),n=[];for(let r=0;r<i.length;r++){let o=await K0(t,i[r]);o&&n.push(o)}return n},K0=async(t,e,i)=>{let n=t.address.get("vesca.tableId"),r=e||(await U0(t,i))[0].objectId,o,s=(await t.client.getDynamicFieldObject({parentId:n,name:{type:"0x2::object::ID",value:r}})).data;if(s&&s.content&&s.content.dataType==="moveObject"&&"fields"in s.content){let a=s.content.fields.value.fields;o={id:s.objectId,keyId:r,lockedScaAmount:vi(a.locked_sca_amount).toNumber(),lockedScaCoin:vi(a.locked_sca_amount).shiftedBy(-9).toNumber(),unlockAt:vi(a.unlock_at).toNumber()}}return o},V0=class{params;address;client;utils;walletAddress;constructor(t,e){this.params=t,this.address=e?.address??new sc({id:t?.addressesId||rc,network:t?.networkType}),this.client=t.client,this.utils=e?.utils??new Xu(this.params,{address:this.address}),this.walletAddress=t.walletAddress}init(t=!1,e){t||!this.address.getAddresses()||!e?.getAddresses()?this.address.read():this.address=e}async getObligations(t){return Ju(this,t)}async getCoinAmounts(t,e){return CC(this,t,e)}async getCoinAmount(t,e){return SC(this,t,e)}async getMarketCoinAmounts(t,e){return xC(this,t,e)}async getMarketCoinAmount(t,e){return AC(this,t,e)}async getPriceFromPyth(t){return PC(this,t)}async getAllStakeAccounts(t){return Yu(this,t)}async getStakeAccounts(t,e){return(await this.getAllStakeAccounts(e))[t]??[]}async getStakePools(t){let e=t??[...Ku],i={};for(let n=0;n<e.length;n++){let r=e[n],o=await Em(this,r);o&&(i[r]=o)}return i}async getStakePool(t){return Em(this,t)}async getStakeRewardPools(t){let e=t??[...Ku],i={};for(let n=0;n<e.length;n++){let r=await jm(this,e[n]);r&&(i[e[n]]=r)}return i}async getStakeRewardPool(t){return jm(this,t)}async getBorrowIncentiveAccounts(t,e,i){return OC(this,t,e||this.walletAddress,i)}async getObligationCoinNames(t){let e=await IC(this,t),i=e.collaterals.map(r=>`0x${r.type.name}`),n=e.debts.map(r=>`0x${r.type.name}`);return[...new Set([...i,...n])].map(r=>this.utils.parseCoinNameFromType(r))}},W0=class{params;isTestnet;address;query;utils;client;walletAddress;constructor(t,e){this.params=t,this.address=e?.address??new sc({id:t?.addressesId||rc,network:t?.networkType}),this.query=e?.query??new V0(t,{address:this.address}),this.utils=e?.utils??new Xu(this.params,{address:this.address,query:this.query}),this.client=t.client,this.walletAddress=(0,R0.normalizeSuiAddress)(t.walletAddress),this.isTestnet=t.networkType?t.networkType==="testnet":!1}async init(t=!1,e){t||!this.address.getAddresses()||!e?.getAddresses()?this.address.read():this.address=e,this.query.init(t,this.address),this.utils.init(t,this.address)}createTxBlock(t){return new F0.TransactionBlock(t)}async selectCoin(t,e,i,n){let r=this.utils.parseCoinType(e),o=await this.utils.selectCoinIds(i,r,n),[s,a]=this.utils.takeAmountFromCoins(t,o,i);return{takeCoin:s,leftCoin:a}}async selectMarketCoin(t,e,i,n){let r=this.utils.parseMarketCoinType(e),o=await this.utils.selectCoinIds(i,r,n),[s,a]=this.utils.takeAmountFromCoins(t,o,i);return{takeCoin:s,leftCoin:a}}},io=async(...t)=>{let[e,i,n]=t;if(t.length===3&&n&&typeof n=="string")return await K0(e.query,n)||void 0;let r=Ci(i),o=await DC(e.query,r);if(o.length!==0)return o[0]},MC=async(t,e)=>{let i=t.address.get("borrowIncentive.object"),n=t.address.get("borrowIncentive.incentivePools"),r=t.address.get("vesca.id"),{client:o}=t,s=await o.getObject({id:n,options:{showContent:!0}});if(s.data?.content?.dataType!=="moveObject")return!1;let a=s.data.content.fields.ve_sca_bind.fields.id.id,l=`${i}::typed_id::TypedID<${r}::ve_sca::VeScaKey>`,u=await o.getDynamicFieldObject({parentId:a,name:{type:l,value:e}});return u.data?.content?.dataType!=="moveObject"?!1:u.data.content.fields.value.fields.id},Pu=async(...t)=>{let[e,i,n,r]=t;if(t.length===4&&n&&r&&typeof n=="string"){let a=await L0(e.query,n);return{obligationId:n,obligationKey:r,obligationLocked:a}}let o=Ci(i),s=await Ju(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}},EC=({builder:t,txBlock:e})=>{let i={borrowIncentivePkg:t.address.get("borrowIncentive.id"),query:t.address.get("borrowIncentive.query"),incentivePools:t.address.get("borrowIncentive.incentivePools"),incentiveAccounts:t.address.get("borrowIncentive.incentiveAccounts"),obligationAccessStore:t.address.get("core.obligationAccessStore"),config:t.address.get("borrowIncentive.config")},n={id:"0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",incentivePools:"0x64972b713ccec45ec3964809e477cea6f97350c0c50ca3aec85bb631639266ec",incentiveAccounts:"0x3c0b707068bdcea8bb859d751ad3e2149a9f83c13fcf4054ef91372a00bccdd3"},r={table:t.address.get("vesca.table"),treasury:t.address.get("vesca.treasury"),config:t.address.get("vesca.config")};return{stakeObligation:(o,s)=>{e.moveCall({target:`${i.borrowIncentivePkg}::user::stake`,arguments:[e.object(i.config),e.object(i.incentivePools),e.object(i.incentiveAccounts),e.object(s),e.object(o),e.object(i.obligationAccessStore),e.object(dn.SUI_CLOCK_OBJECT_ID)]})},stakeObligationWithVesca:(o,s,a)=>{e.moveCall({target:`${i.borrowIncentivePkg}::user::stake_with_ve_sca`,arguments:[e.object(i.config),e.object(i.incentivePools),e.object(i.incentiveAccounts),e.object(s),e.object(o),e.object(i.obligationAccessStore),e.object(r.config),e.object(r.treasury),e.object(r.table),e.object(a),e.object(dn.SUI_CLOCK_OBJECT_ID)]})},unstakeObligation:(o,s)=>{e.moveCall({target:`${i.borrowIncentivePkg}::user::unstake`,arguments:[e.object(i.config),e.object(i.incentivePools),e.object(i.incentiveAccounts),e.object(s),e.object(o),e.object(dn.SUI_CLOCK_OBJECT_ID)]})},oldUnstakeObligation:(o,s)=>{e.moveCall({target:`${i.borrowIncentivePkg}::user::unstake`,arguments:[e.object(n.incentivePools),e.object(n.incentiveAccounts),e.object(s),e.object(o),e.object(dn.SUI_CLOCK_OBJECT_ID)],typeArguments:[dn.SUI_TYPE_ARG]})},claimBorrowIncentive:(o,s,a)=>{let l=t.utils.parseCoinType(a);return e.moveCall({target:`${i.borrowIncentivePkg}::user::redeem_rewards`,arguments:[e.object(i.config),e.object(i.incentivePools),e.object(i.incentiveAccounts),e.object(s),e.object(o),e.object(dn.SUI_CLOCK_OBJECT_ID)],typeArguments:[l]})},oldClaimBorrowIncentive(o,s,a){let l=t.utils.parseCoinType(a);return e.moveCall({target:`${n.id}::user::redeem_rewards`,arguments:[e.object(n.incentivePools),e.object(n.incentiveAccounts),e.object(s),e.object(o),e.object(dn.SUI_CLOCK_OBJECT_ID)],typeArguments:[l]})}}},Fi=({builder:t,txBlock:e})=>{let i=EC({builder:t,txBlock:e});return{normalMethod:i,stakeObligationQuick:async(n,r)=>{let{obligationId:o,obligationKey:s,obligationLocked:a}=await Pu(t,e,n,r),l=!!e.blockData.transactions.find(u=>u.kind==="MoveCall"&&u.target===`${t.address.get("borrowIncentive.id")}::user::unstake`);(!a||l)&&i.stakeObligation(o,s)},unstakeObligationQuick:async(n,r)=>{let{obligationId:o,obligationKey:s,obligationLocked:a}=await Pu(t,e,n,r);a&&i.unstakeObligation(o,s)},stakeObligationWithVeScaQuick:async(n,r,o)=>{let{obligationId:s,obligationKey:a,obligationLocked:l}=await Pu(t,e,n,r),u=!!e.blockData.transactions.find(h=>h.kind==="MoveCall"&&(h.target===`${Wa}::user::unstake`||h.target===`${t.address.get("borrowIncentive.id")}::user::unstake`));if(!l||u){let h=await io(t,e,o);if(h){let y=await MC(t,h.keyId);!y||y===s?i.stakeObligationWithVesca(s,a,h.keyId):i.stakeObligation(s,a)}else i.stakeObligation(s,a)}},claimBorrowIncentiveQuick:(n,r,o)=>i.claimBorrowIncentive(r,o,n)}},jC={testnet:["https://hermes-beta.pyth.network"],mainnet:["https://hermes.pyth.network","https://scallop.rpc.p2p.world"]},Du=16*1024,BC=class{provider;pythStateId;wormholeStateId;pythPackageId;wormholePackageId;priceTableInfo;priceFeedObjectIdCache=new Map;baseUpdateFee;constructor(t,e,i){this.provider=t,this.pythStateId=e,this.wormholeStateId=i,this.pythPackageId=void 0,this.wormholePackageId=void 0}async getBaseUpdateFee(){if(this.baseUpdateFee===void 0){let t=await this.provider.getObject({id:this.pythStateId,options:{showContent:!0}});if(!t.data||!t.data.content||t.data.content.dataType!=="moveObject")throw new Error("Unable to fetch pyth state object");this.baseUpdateFee=t.data.content.fields.base_update_fee}return this.baseUpdateFee}async getPackageId(t){let e=await this.provider.getObject({id:t,options:{showContent:!0}}).then(i=>{if(i.data?.content?.dataType==="moveObject")return i.data.content.fields;throw console.log(i.data?.content),new Error(`Cannot fetch package id for object ${t}`)});if("upgrade_cap"in e)return e.upgrade_cap.fields.package;throw new Error("upgrade_cap not found")}async verifyVaas(t,e){let i=await this.getWormholePackageId(),n=[];return t.forEach(r=>{let[o]=e.moveCall({target:`${i}::vaa::parse_and_verify`,arguments:[e.object(this.wormholeStateId),e.pure(Ha.bcs.ser("vector<u8>",Array.from(r),{maxSize:Du}).toBytes()),e.object(rs.SUI_CLOCK_OBJECT_ID)]});n.push(o)}),n}async updatePriceFeeds(t,e,i){let n=await this.getPythPackageId(),r;if(e.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let o=this.extractVaaBytesFromAccumulatorMessage(e[0]),s=await this.verifyVaas([o],t);[r]=t.moveCall({target:`${n}::pyth::create_authenticated_price_infos_using_accumulator`,arguments:[t.object(this.pythStateId),t.pure(Ha.bcs.ser("vector<u8>",Array.from(e[0]),{maxSize:Du}).toBytes()),s[0],t.object(rs.SUI_CLOCK_OBJECT_ID)]});let a=[],l=await this.getBaseUpdateFee(),u=t.splitCoins(t.gas,i.map(()=>t.pure(l))),h=0;for(let y=0;y<i.length;y++){let v=await this.getPriceFeedObjectId(i[y]);if(!v)throw new Error(`Price feed ${i[0]} not found, please create it first`);a.push(v),[r]=t.moveCall({target:`${n}::pyth::update_single_price_feed`,arguments:[t.object(this.pythStateId),r,t.object(v),u[h],t.object(rs.SUI_CLOCK_OBJECT_ID)]}),h++}return t.moveCall({target:`${n}::hot_potato_vector::destroy`,arguments:[r],typeArguments:[`${n}::price_info::PriceInfo`]}),a}async createPriceFeed(t,e){let i=await this.getPythPackageId();if(e.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let n=this.extractVaaBytesFromAccumulatorMessage(e[0]),r=await this.verifyVaas([n],t);t.moveCall({target:`${i}::pyth::create_price_feeds_using_accumulator`,arguments:[t.object(this.pythStateId),t.pure(Ha.bcs.ser("vector<u8>",Array.from(e[0]),{maxSize:Du}).toBytes()),r[0],t.object(rs.SUI_CLOCK_OBJECT_ID)]})}async getWormholePackageId(){return this.wormholePackageId||(this.wormholePackageId=await this.getPackageId(this.wormholeStateId)),this.wormholePackageId}async getPythPackageId(){return this.pythPackageId||(this.pythPackageId=await this.getPackageId(this.pythStateId)),this.pythPackageId}async getPriceFeedObjectId(t){let e=t.replace("0x","");if(!this.priceFeedObjectIdCache.has(e)){let{id:i,fieldType:n}=await this.getPriceTableInfo(),r=await this.provider.getDynamicFieldObject({parentId:i,name:{type:`${n}::price_identifier::PriceIdentifier`,value:{bytes:Array.from(Buffer.from(e,"hex"))}}});if(!r.data||!r.data.content)return;if(r.data.content.dataType!=="moveObject")throw new Error("Price feed type mismatch");this.priceFeedObjectIdCache.set(e,r.data.content.fields.value)}return this.priceFeedObjectIdCache.get(e)}async getPriceTableInfo(){if(this.priceTableInfo===void 0){let t=await this.provider.getDynamicFieldObject({parentId:this.pythStateId,name:{type:"vector<u8>",value:"price_info"}});if(!t.data||!t.data.type)throw new Error("Price Table not found, contract may not be initialized");let e=t.data.type.replace("0x2::table::Table<","");e=e.replace("::price_identifier::PriceIdentifier, 0x2::object::ID>",""),this.priceTableInfo={id:t.data.objectId,fieldType:e}}return this.priceTableInfo}extractVaaBytesFromAccumulatorMessage(t){let e=7+t.readUint8(6)+1,i=t.readUint16BE(e),n=e+2;return t.subarray(n,n+i)}},NC=async(t,e)=>(await z0.default.get(`${t}/api/latest_vaas`,{params:{ids:e}})).data.map(i=>Buffer.from(i,"base64")),Mu=async(t,e,i)=>{let n=i??[...new Set([...oc,...j0])],r=t.isTestnet?["pyth"]:["pyth"];if(r.includes("pyth")){let s=new BC(t.client,t.address.get("core.oracles.pyth.state"),t.address.get("core.oracles.pyth.wormholeState")),a=n.map(u=>t.address.get(`core.coins.${u}.oracle.pyth.feed`)),l=t.params.pythEndpoints??jC[t.isTestnet?"testnet":"mainnet"];try{let u=await NC(l[0],a);await s.updatePriceFeeds(e,u,a)}catch(u){console.warn(`Failed to update price feeds with endpoint ${l[0]}: ${u}`)}}let o=[...new Set(n)];for(let s=0;s<o.length;s++)await FC(t,e,o[s],r)},FC=async(t,e,i,n)=>{let r=t.utils.parseCoinType(i);RC(e,n,t.address.get("core.packages.xOracle.id"),t.address.get("core.oracles.xOracle"),t.address.get("core.packages.pyth.id"),t.address.get("core.oracles.pyth.registry"),t.address.get("core.oracles.pyth.state"),t.address.get(`core.coins.${i}.oracle.pyth.feedObject`),t.address.get("core.packages.switchboard.id"),t.address.get("core.oracles.switchboard.registry"),t.address.get(`core.coins.${i}.oracle.switchboard`),t.address.get("core.packages.supra.id"),t.address.get("core.oracles.supra.registry"),t.address.get("core.oracles.supra.holder"),r)},RC=(t,e,i,n,r,o,s,a,l,u,h,y,v,C,O)=>{let P=qC(t,i,n,O);return e.includes("pyth")&&KC(t,r,P,s,a,o,O),e.includes("switchboard")&&UC(t,l,P,h,u,O),e.includes("supra")&&$C(t,y,P,C,v,O),LC(t,i,n,P,O),t},qC=(t,e,i,n)=>{let r=typeof i=="string"?t.object(i):i,o=`${e}::x_oracle::price_update_request`,s=[n];return t.moveCall({target:o,arguments:[r],typeArguments:s})},LC=(t,e,i,n,r)=>{let o=`${e}::x_oracle::confirm_price_update_request`,s=[r],a=typeof i=="string"?t.object(i):i;return t.moveCall({target:o,arguments:[a,n,t.object(hs.SUI_CLOCK_OBJECT_ID)],typeArguments:s}),t},$C=(t,e,i,n,r,o)=>{let s=typeof n=="string"?t.object(n):n,a=typeof r=="string"?t.object(r):r;t.moveCall({target:`${e}::rule::set_price`,arguments:[i,s,a,t.object(hs.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},UC=(t,e,i,n,r,o)=>{let s=typeof n=="string"?t.object(n):n,a=typeof r=="string"?t.object(r):r;t.moveCall({target:`${e}::rule::set_price`,arguments:[i,s,a,t.object(hs.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},KC=(t,e,i,n,r,o,s)=>{let a=typeof i=="string"?t.object(i):i,l=typeof n=="string"?t.object(n):n,u=typeof r=="string"?t.object(r):r,h=typeof o=="string"?t.object(o):o;t.moveCall({target:`${e}::rule::set_price`,arguments:[a,l,u,h,t.object(hs.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},La=async(...t)=>{let[e,i,n,r]=t;if(t.length===3&&n)return{obligationId:n};if(t.length===4&&n&&r)return{obligationId:n,obligationKey:r};let o=Ci(e),s=await Ju(i.query,o);if(s.length===0)throw new Error(`No obligation found for sender ${o}`);return{obligationId:s[0].id,obligationKey:s[0].keyId}},VC=({builder:t,txBlock:e})=>{let i={protocolPkg:t.address.get("core.packages.protocol.id"),market:t.address.get("core.market"),version:t.address.get("core.version"),coinDecimalsRegistry:t.address.get("core.coinDecimalsRegistry"),xOracle:t.address.get("core.oracles.xOracle")};return{openObligation:()=>e.moveCall({target:`${i.protocolPkg}::open_obligation::open_obligation`,arguments:[e.pure(i.version)]}),returnObligation:(n,r)=>e.moveCall({target:`${i.protocolPkg}::open_obligation::return_obligation`,arguments:[e.object(i.version),e.object(n),e.object(r)]}),openObligationEntry:()=>e.moveCall({target:`${i.protocolPkg}::open_obligation::open_obligation_entry`,arguments:[e.object(i.version)]}),addCollateral:(n,r,o)=>{let s=t.utils.parseCoinType(o);return e.moveCall({target:`${i.protocolPkg}::deposit_collateral::deposit_collateral`,arguments:[e.object(i.version),e.object(n),e.object(i.market),typeof r!="string"?r:e.pure(r)],typeArguments:[s]})},takeCollateral:(n,r,o,s)=>{let a=t.utils.parseCoinType(s);return e.moveCall({target:`${i.protocolPkg}::withdraw_collateral::withdraw_collateral`,arguments:[e.object(i.version),e.object(n),e.object(r),e.object(i.market),e.object(i.coinDecimalsRegistry),e.pure(o),e.object(i.xOracle),e.object(cn.SUI_CLOCK_OBJECT_ID)],typeArguments:[a]})},deposit:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::mint::mint`,arguments:[e.object(i.version),e.object(i.market),typeof n!="string"?n:e.pure(n),e.object(cn.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},depositEntry:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::mint::mint_entry`,arguments:[e.object(i.version),e.object(i.market),typeof n!="string"?n:e.pure(n),e.object(cn.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},withdraw:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::redeem::redeem`,arguments:[e.object(i.version),e.object(i.market),typeof n!="string"?n:e.pure(n),e.object(cn.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},withdrawEntry:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::redeem::redeem_entry`,arguments:[e.object(i.version),e.object(i.market),typeof n!="string"?n:e.pure(n),e.object(cn.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},borrow:(n,r,o,s)=>{let a=t.utils.parseCoinType(s);return e.moveCall({target:`${i.protocolPkg}::borrow::borrow`,arguments:[e.object(i.version),e.object(n),e.object(r),e.object(i.market),e.object(i.coinDecimalsRegistry),e.pure(o),e.object(i.xOracle),e.object(cn.SUI_CLOCK_OBJECT_ID)],typeArguments:[a]})},borrowEntry:(n,r,o,s)=>{let a=t.utils.parseCoinType(s);return e.moveCall({target:`${i.protocolPkg}::borrow::borrow_entry`,arguments:[e.object(i.version),e.object(n),e.object(r),e.object(i.market),e.object(i.coinDecimalsRegistry),e.pure(o),e.object(i.xOracle),e.object(cn.SUI_CLOCK_OBJECT_ID)],typeArguments:[a]})},repay:(n,r,o)=>{let s=t.utils.parseCoinType(o);return e.moveCall({target:`${i.protocolPkg}::repay::repay`,arguments:[e.object(i.version),e.object(n),e.object(i.market),typeof r!="string"?r:e.pure(r),e.object(cn.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},borrowFlashLoan:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::flash_loan::borrow_flash_loan`,arguments:[e.object(i.version),e.object(i.market),e.pure(n)],typeArguments:[o]})},repayFlashLoan:(n,r,o)=>{let s=t.utils.parseCoinType(o);return e.moveCall({target:`${i.protocolPkg}::flash_loan::repay_flash_loan`,arguments:[e.object(i.version),e.object(i.market),e.pure(n),e.object(r)],typeArguments:[s]})}}},Hi=({builder:t,txBlock:e})=>{let i=VC({builder:t,txBlock:e});return{normalMethod:i,addCollateralQuick:async(n,r,o)=>{let s=Ci(e),{obligationId:a}=await La(e,t,o);if(r==="sui"){let[l]=e.splitCoins(e.gas,[n]);i.addCollateral(a,l,r)}else{let{leftCoin:l,takeCoin:u}=await t.selectCoin(e,r,n,s);i.addCollateral(a,u,r),e.transferObjects([l],s)}},takeCollateralQuick:async(n,r,o,s)=>{let a=await La(e,t,o,s),l=await t.query.getObligationCoinNames(a.obligationId);return await Mu(t,e,l),i.takeCollateral(a.obligationId,a.obligationKey,n,r)},depositQuick:async(n,r,o)=>{if(r==="sui"){let[l]=e.splitCoins(e.gas,[n]);return i.deposit(l,r)}let{leftCoin:s,takeCoin:a}=await t.selectCoin(e,r,n,o);return e.transferObjects([s],o),i.deposit(a,r)},withdrawQuick:async(n,r)=>{let o=Ci(e),s=t.utils.parseMarketCoinName(r),{leftCoin:a,takeCoin:l}=await t.selectMarketCoin(e,s,n,o);return e.transferObjects([a],o),i.withdraw(l,r)},borrowQuick:async(n,r,o,s)=>{let a=await La(e,t,o,s),l=[...await t.query.getObligationCoinNames(a.obligationId),r];return await Mu(t,e,l),i.borrow(a.obligationId,a.obligationKey,n,r)},repayQuick:async(n,r,o,s)=>{let a=await La(e,t,o);if(r==="sui"){let[h]=e.splitCoins(e.gas,[n]);return i.repay(a.obligationId,h,r)}let{leftCoin:l,takeCoin:u}=await t.selectCoin(e,r,n,s);return e.transferObjects([l],s),i.repay(a.obligationId,u,r)},updateAssetPricesQuick:async n=>Mu(t,e,n)}},Bm=async(...t)=>{let[e,i,n,r]=t;if(t.length===4&&r)return[r];let o=Ci(i),s=await Yu(e.query,o);if(s[n].length===0)throw new Error(`No stake account id found for sender ${o}`);return s[n].map(a=>a.id)},WC=async(...t)=>{let[e,i,n,r]=t,o=Ci(i),s=await Yu(e.query,o);if(s[n].length===0)throw new Error(`No stake account found for sender ${o}`);return r?s[n].filter(a=>a.id===r):s[n]},zC=({builder:t,txBlock:e})=>{let i={spoolPkg:t.address.get("spool.id")};return{createStakeAccount:n=>{let r=t.utils.parseMarketCoinType(n),o=t.address.get(`spool.pools.${n}.id`);return e.moveCall({target:`${i.spoolPkg}::user::new_spool_account`,arguments:[e.object(o),e.object(os.SUI_CLOCK_OBJECT_ID)],typeArguments:[r]})},stake:(n,r,o)=>{let s=t.utils.parseMarketCoinType(o),a=t.address.get(`spool.pools.${o}.id`);e.moveCall({target:`${i.spoolPkg}::user::stake`,arguments:[e.object(a),e.object(n),typeof r=="string"?e.pure(r):r,e.object(os.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},unstake:(n,r,o)=>{let s=t.utils.parseMarketCoinType(o),a=t.address.get(`spool.pools.${o}.id`);return e.moveCall({target:`${i.spoolPkg}::user::unstake`,arguments:[e.object(a),e.object(n),e.pure(r),e.object(os.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},claim:(n,r)=>{let o=t.address.get(`spool.pools.${r}.id`),s=t.address.get(`spool.pools.${r}.rewardPoolId`),a=t.utils.parseMarketCoinType(r),l=B0[r],u=t.utils.parseCoinType(l);return e.moveCall({target:`${i.spoolPkg}::user::redeem_rewards`,arguments:[e.object(o),e.object(s),e.object(n),e.object(os.SUI_CLOCK_OBJECT_ID)],typeArguments:[a,u]})}}},Yr=({builder:t,txBlock:e})=>{let i=zC({builder:t,txBlock:e});return{normalMethod:i,stakeQuick:async(n,r,o)=>{let s=Ci(e),a=await Bm(t,e,r,o),l=t.utils.parseMarketCoinType(r);if(typeof n=="number"){let u=await t.utils.selectCoinIds(n,l,s),[h,y]=t.utils.takeAmountFromCoins(e,u,n);i.stake(a[0],h,r),e.transferObjects([y],s)}else i.stake(a[0],n,r)},unstakeQuick:async(n,r,o)=>{let s=n,a=await WC(t,e,r,o),l=[];for(let u=0;u<a.length;u++){if(a[u].staked===0)continue;let h=Math.min(s,a[u].staked),y=i.unstake(a[u].id,h,r);if(l.push(y),s-=h,s===0)break}return l},claimQuick:async(n,r)=>{let o=await Bm(t,e,n,r),s=[];return o.forEach(a=>{let l=i.claim(a,n);s.push(l)}),s}}},GC=({builder:t,txBlock:e})=>{let i={pkgId:t.address.get("vesca.id"),table:t.address.get("vesca.table"),treasury:t.address.get("vesca.treasury"),config:t.address.get("vesca.config")};return{lockSca:(n,r)=>e.moveCall({target:`${i.pkgId}::ve_sca::mint_ve_sca_key`,arguments:[e.object(i.config),e.object(i.table),e.object(i.treasury),typeof n=="string"?e.pure(n):n,e.pure(r),e.object(no.SUI_CLOCK_OBJECT_ID)]}),extendLockPeriod:(n,r)=>{e.moveCall({target:`${i.pkgId}::ve_sca::extend_lock_period`,arguments:[e.object(i.config),e.object(n),e.object(i.table),e.object(i.treasury),e.pure(r),e.object(no.SUI_CLOCK_OBJECT_ID)]})},extendLockAmount:(n,r)=>{e.moveCall({target:`${i.pkgId}::ve_sca::lock_more_sca`,arguments:[e.object(i.config),e.object(n),e.object(i.table),e.object(i.treasury),typeof r=="string"?e.pure(r):r,e.object(no.SUI_CLOCK_OBJECT_ID)]})},renewExpiredVeSca:(n,r,o)=>{e.moveCall({target:`${i.pkgId}::ve_sca::renew_expired_ve_sca`,arguments:[e.object(i.config),e.object(n),e.object(i.table),e.object(i.treasury),typeof r=="string"?e.pure(r):r,e.pure(o),e.object(no.SUI_CLOCK_OBJECT_ID)]})},redeemSca:n=>e.moveCall({target:`${i.pkgId}::ve_sca::redeem`,arguments:[e.object(i.config),e.object(n),e.object(i.table),e.object(i.treasury),e.object(no.SUI_CLOCK_OBJECT_ID)]})}},Qr=({builder:t,txBlock:e})=>{let i=GC({builder:t,txBlock:e});return{normalMethod:i,lockScaQuick:async(n,r,o=!0)=>{let s=Ci(e),a=await io(t,e),l,u=[];if(n!==void 0&&typeof n=="number"){let C=await t.utils.selectCoinIds(n,oo,s),[O,P]=t.utils.takeAmountFromCoins(e,C,n);l=O,u.push(P)}else l=n;let h=t.utils.getUnlockAt(r,a?.unlockAt);o&&_C(n,r,h,a?.unlockAt),console.log(new Date(h*1e3).toLocaleString("en-CA",{hour12:!0}));let y=!a?.unlockAt,v=!y&&a.unlockAt*1e3<=new Date().getTime();if(y||v){if(l)if(y){let C=i.lockSca(l,h);u.push(C)}else{if(a.lockedScaAmount!==0){let C=i.redeemSca(a.keyId);u.push(C)}i.renewExpiredVeSca(a.keyId,l,h)}}else l&&r?(i.extendLockPeriod(a.keyId,h),i.extendLockAmount(a.keyId,l)):r?i.extendLockPeriod(a.keyId,h):l&&i.extendLockAmount(a.keyId,l);u.length>0&&e.transferObjects(u,s)},extendLockPeriodQuick:async(n,r,o=!0)=>{let s=await io(t,e,r),a=t.utils.getUnlockAt(n);o&&bC(n,a,s?.unlockAt),s&&i.extendLockPeriod(s.keyId,a)},extendLockAmountQuick:async(n,r,o=!0)=>{let s=Ci(e),a=await io(t,e,r);if(o&&yC(n,a?.unlockAt),a){let l=await t.utils.selectCoinIds(n,oo,s),[u,h]=t.utils.takeAmountFromCoins(e,l,n);i.extendLockAmount(a.keyId,u),e.transferObjects([h],s)}},renewExpiredVeScaQuick:async(n,r,o,s=!0)=>{let a=Ci(e),l=await io(t,e,o),u=t.utils.getUnlockAt(r,l?.unlockAt);if(s&&wC(n,r,l?.unlockAt),l){let h=[];if(l.lockedScaAmount!==0){let O=i.redeemSca(l.keyId);h.push(O)}let y=await t.utils.selectCoinIds(n,oo,a),[v,C]=t.utils.takeAmountFromCoins(e,y,n);h.push(C),i.renewExpiredVeSca(l.keyId,v,u),e.transferObjects(h,a)}},redeemScaQuick:async n=>{let r=Ci(e),o=await io(t,e,n);if(ds(o?.unlockAt),o){let s=i.redeemSca(o.keyId);e.transferObjects([s],r)}}}},Ot=class{params;client;address;builder;query;utils;walletAddress;constructor(t,e){this.params=t,this.client=t.client,this.address=e?.address??new sc({id:t?.addressesId||rc,network:t?.networkType}),this.query=e?.query??new V0(t,{address:this.address}),this.utils=e?.utils??new Xu(t,{address:this.address,query:this.query}),this.builder=e?.builder??new W0(t,{address:this.address,query:this.query,utils:this.utils}),this.walletAddress=(0,N0.normalizeSuiAddress)(t.walletAddress)}init(t=!1){(t||!this.address.getAddresses())&&this.address.read(),this.builder.init(t,this.address),this.query.init(t,this.address),this.utils.init(t,this.address)}async getObligations(t){let e=t||this.walletAddress;return this.query.getObligations(e)}async getAllStakeAccounts(t){let e=t||this.walletAddress;return this.query.getAllStakeAccounts(e)}async getStakeAccounts(t,e){let i=e||this.walletAddress;return this.query.getStakeAccounts(t,i)}async getStakePool(t){return this.query.getStakePool(t)}async getStakeRewardPool(t){return this.query.getStakeRewardPool(t)}async openObligation(t){let e=new We.TransactionBlock,i=Hi({builder:this.builder,txBlock:e}),n=t||this.walletAddress;return e.setSender(n),i.normalMethod.openObligationEntry(),e}async depositCollateral(t,e,i,n){let r=new We.TransactionBlock,o=n||this.walletAddress;r.setSender(o);let s=Hi({builder:this.builder,txBlock:r}),a=await this.query.getObligations(o),l=i||a?.[0]?.id;if(l)await s.addCollateralQuick(e,t,l);else{let[u,h,y]=s.normalMethod.openObligation();await s.addCollateralQuick(e,t,u),s.normalMethod.returnObligation(u,y),r.transferObjects([h],o)}return r}async withdrawCollateral(t,e,i,n,r){let o=new We.TransactionBlock,s=Hi({builder:this.builder,txBlock:o}),a=r||this.walletAddress;o.setSender(a);let l=await s.takeCollateralQuick(e,t,i,n);return o.transferObjects([l],a),o}async deposit(t,e,i){let n=new We.TransactionBlock,r=Hi({builder:this.builder,txBlock:n}),o=i||this.walletAddress;n.setSender(o);let s=await r.depositQuick(e,t,i);return n.transferObjects([s],o),n}async withdraw(t,e,i){let n=new We.TransactionBlock,r=i||this.walletAddress,o=Hi({builder:this.builder,txBlock:n});n.setSender(r);let s=await o.withdrawQuick(e,t);return n.transferObjects([s],r),n}async borrow(t,e,i,n,r){let o=new We.TransactionBlock,s=Hi({builder:this.builder,txBlock:o}),a=Fi({builder:this.builder,txBlock:o}),l=r||this.walletAddress;o.setSender(l);let u=za.includes(t);u&&await a.unstakeObligationQuick(i,n);let h=await s.borrowQuick(e,t,i,n);return o.transferObjects([h],l),u&&await a.stakeObligationQuick(i,n),o}async borrowWithBoost(t,e,i,n,r,o){let s=new We.TransactionBlock,a=Hi({builder:this.builder,txBlock:s}),l=Fi({builder:this.builder,txBlock:s}),u=o||this.walletAddress;s.setSender(u);let h=za.includes(t);h&&await l.unstakeObligationQuick(i,n);let y=await a.borrowQuick(e,t,i,n);return s.transferObjects([y],u),h&&await l.stakeObligationWithVeScaQuick(i,n,r),s}async repay(t,e,i,n,r){let o=new We.TransactionBlock,s=Hi({builder:this.builder,txBlock:o}),a=Fi({builder:this.builder,txBlock:o}),l=r||this.walletAddress;o.setSender(l);let u=za.includes(t);return u&&await a.unstakeObligationQuick(i,n),await s.repayQuick(e,t,i,l),u&&await a.stakeObligationQuick(i,n),o}async createStakeAccount(t,e){let i=new We.TransactionBlock,n=Yr({builder:this.builder,txBlock:i}),r=e||this.walletAddress;i.setSender(r);let o=n.normalMethod.createStakeAccount(t);return i.transferObjects([o],r),i}async supplyAndStake(t,e,i,n){let r=new We.TransactionBlock,o=Hi({builder:this.builder,txBlock:r}),s=Yr({builder:this.builder,txBlock:r}),a=n||this.walletAddress;r.setSender(a);let l=await o.depositQuick(e,t,n),u=this.utils.parseMarketCoinName(t);if(!Ku.find(v=>v===u))return r;let h=await this.query.getStakeAccounts(u,a),y=i||(h.length>0?h[0].id:void 0);if(y)await s.stakeQuick(l,u,y);else{let v=s.normalMethod.createStakeAccount(u);await s.stakeQuick(l,u,v),r.transferObjects([v],a)}return r}async unstakeAndWithdraw(t,e,i){let n=new We.TransactionBlock,r=Hi({builder:this.builder,txBlock:n}),o=Yr({builder:this.builder,txBlock:n}),s=this.walletAddress,a=[];n.setSender(s);let l=this.utils.parseMarketCoinName(t);for(let u=0;u<i.length;u++){let h=i[u],[y]=await o.unstakeQuick(h.coin,l,h.id);if(y){let v=r.normalMethod.withdraw(y,t);a.push(v)}}if(e>0){let u=await r.withdrawQuick(e,t);a.push(u)}return n.transferObjects(a,s),n}async stake(t,e,i,n){let r=new We.TransactionBlock,o=Yr({builder:this.builder,txBlock:r}),s=n||this.walletAddress;r.setSender(s);let a=await this.query.getStakeAccounts(t,s),l=i||(a.length>0?a[0].id:void 0);if(l)await o.stakeQuick(e,t,l);else{let u=o.normalMethod.createStakeAccount(t);await o.stakeQuick(e,t,u),r.transferObjects([u],s)}return r}async unstake(t,e,i,n){let r=new We.TransactionBlock,o=Yr({builder:this.builder,txBlock:r}),s=n||this.walletAddress;r.setSender(s);let a=await o.unstakeQuick(e,t,i);return r.transferObjects(a,s),r}async claim(t,e,i,n){let r=new We.TransactionBlock,o=Yr({builder:this.builder,txBlock:r}),s=Fi({builder:this.builder,txBlock:r}),a=n||this.walletAddress;r.setSender(a);let l={sui:[],sca:[]};for(let u=0;u<t.length;u++){let{stakeMarketCoinName:h,stakeAccountId:y}=t[u],v=o.normalMethod.claim(y,h);l.sui.push(v)}for(let u=0;u<e.length;u++){let{obligationId:h,obligationKey:y,rewardCoinName:v}=e[u],C=s.normalMethod.claimBorrowIncentive(h,y,v);l[v].push(C)}for(let u=0;u<i.length;u++){let{obligationId:h,obligationKey:y,rewardCoinName:v}=i[u],C=s.normalMethod.oldClaimBorrowIncentive(h,y,v);l[v].push(C)}return l.sui.length>0&&(l.sui.length>1&&r.mergeCoins(l.sui[0],l.sui.slice(1)),r.transferObjects([l.sui[0]],r.pure(a))),l.sca.length>0&&(l.sca.length>1&&r.mergeCoins(l.sca[0],l.sca.slice(1)),r.transferObjects([l.sca[0]],r.pure(a))),r}async stakeObligation(t,e,i){let n=this.builder.createTxBlock(),r=Fi({builder:this.builder,txBlock:n}),o=i||this.walletAddress;return n.setSender(o),await r.stakeObligationQuick(t,e),n}async unstakeObligation(t,e,i){let n=this.builder.createTxBlock(),r=Fi({builder:this.builder,txBlock:n}),o=i||this.walletAddress;return n.setSender(o),await r.unstakeObligationQuick(t,e),n}async stakeSca(t,e=!1,i=!1,n,r,o,s,a){let l=new We.TransactionBlock,u=Qr({builder:this.builder,txBlock:l}),h=Fi({builder:this.builder,txBlock:l}),y=a||this.walletAddress;l.setSender(y);let v=await this.builder.utils.selectCoinIds(t,oo,y),[C,O]=this.builder.utils.takeAmountFromCoins(l,v,t),P;return s?u.normalMethod.extendLockAmount(s,C):P=u.normalMethod.lockSca(C,o),n&&r&&(e&&(i?h.normalMethod.oldUnstakeObligation(n,r):h.normalMethod.unstakeObligation(n,r)),h.normalMethod.stakeObligationWithVesca(n,r,s||P)),s||l.transferObjects([P,O],y),l}async stakeMoreSca(t,e,i){let n=new We.TransactionBlock,r=i||this.walletAddress;return n.setSender(r),n}async extendStakeScaLockPeriod(t,e,i,n,r=!1,o=!1,s){let a=new We.TransactionBlock,l=Qr({builder:this.builder,txBlock:a}),u=Fi({builder:this.builder,txBlock:a}),h=s||this.walletAddress;return a.setSender(h),l.normalMethod.extendLockPeriod(e,t),i&&n&&(r&&(o?u.normalMethod.oldUnstakeObligation(i,n):u.normalMethod.unstakeObligation(i,n)),u.normalMethod.stakeObligationWithVesca(i,n,e)),a}async extendPeriodAndStakeMoreSca(t,e,i,n,r,o=!1,s=!1,a){let l=new We.TransactionBlock,u=Qr({builder:this.builder,txBlock:l}),h=Fi({builder:this.builder,txBlock:l}),y=a||this.walletAddress;l.setSender(y);let v=await this.builder.utils.selectCoinIds(t,oo,y),[C,O]=this.builder.utils.takeAmountFromCoins(l,v,t);return u.normalMethod.extendLockPeriod(e,i),u.normalMethod.extendLockAmount(e,C),l.transferObjects([O],y),!n||!r||(o&&(s?h.normalMethod.oldUnstakeObligation(n,r):h.normalMethod.unstakeObligation(n,r)),h.normalMethod.stakeObligationWithVesca(n,r,e)),l}async renewExpiredStakeSca(t,e,i,n=!1,r,o,s=!1,a=!1,l){let u=new We.TransactionBlock,h=Qr({builder:this.builder,txBlock:u}),y=Fi({builder:this.builder,txBlock:u}),v=l||this.walletAddress;if(u.setSender(v),n){let j=h.normalMethod.redeemSca(i);u.transferObjects([j],v)}let C=await this.builder.utils.selectCoinIds(t,oo,v),[O,P]=this.builder.utils.takeAmountFromCoins(u,C,t);return u.transferObjects([P],v),h.normalMethod.renewExpiredVeSca(i,O,e),!r||!o||(s&&(a?y.normalMethod.oldUnstakeObligation(r,o):y.normalMethod.unstakeObligation(r,o)),y.normalMethod.stakeObligationWithVesca(r,o,i)),u}async redeemSca(t){let e=new We.TransactionBlock,i=Qr({builder:this.builder,txBlock:e}),n=this.walletAddress;return e.setSender(n),await i.redeemScaQuick(t),e}async migrateAndClaim(t,e,i,n){let r=new We.TransactionBlock,o=Fi({builder:this.builder,txBlock:r}),s=this.walletAddress;r.setSender(s);let a=o.normalMethod.oldClaimBorrowIncentive(i,e,n);return r.transferObjects([a],s),o.stakeObligationWithVeScaQuick(i,e,t),r}async withdrawUnlockedSca(t,e){let i=new We.TransactionBlock,n=Qr({builder:this.builder,txBlock:i}),r=e||this.walletAddress;return i.setSender(r),await n.redeemScaQuick(t),i}calculateAvailableClaimCoin(t,e){let i=new vi(t.weightedAmount),n=e.currentPointIndex?vi(e.currentPointIndex-t.index).dividedBy(1e9):1;return i.multipliedBy(n).plus(t.points).shiftedBy(-1*e.coinDecimal)}},HC=class G0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.borrow(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new G0(e)}},ZC=class H0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await i.init(),i.borrowWithBoost(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,this.data.veScaKey,e.account.address)}static fromData(e){return new H0(e)}},XC=class Z0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.claim(this.data.lendingIncentive,this.data.borrowIncentiveV2,this.data.borrowIncentive,e.account.address)}static fromData(e){return new Z0(e)}},JC=class X0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.depositCollateral(this.data.collateralCoinName,Number(this.data.amount),this.data.obligationId,e.account.address)}static fromData(e){return new X0(e)}},YC=class J0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.extendPeriodAndStakeMoreSca(this.data.amount,this.data.veScaKey,this.data.lockPeriodInDays,this.data.obligationId,this.data.obligationKey,this.data.isObligationLocked,this.data.isOldBorrowIncentive,e.account.address)}static fromData(e){return new J0(e)}},QC=class Y0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.extendStakeScaLockPeriod(this.data.lockPeriodInDays,this.data.veScaKey,this.data.obligationId,this.data.obligationKey,this.data.isObligationLocked,this.data.isOldBorrowIncentive,e.account.address)}static fromData(e){return new Y0(e)}},eS=class Q0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await i.init(),i.migrateAndClaim(this.data.veScaKey,this.data.obligationKey,this.data.obligationId,this.data.rewardCoinName)}static fromData(e){return new Q0(e)}},tS=class e_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.openObligation()}static fromData(e){return new e_(e)}},iS=class t_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.redeemSca(this.data.veScaKey)}static fromData(e){return new t_(e)}},nS=class i_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.renewExpiredStakeSca(this.data.amount,this.data.lockPeriodInDays,this.data.vescaKey,this.data.isHaveRedeem,this.data.obligation,this.data.obligationKey,this.data.isObligationLocked,this.data.isOldBorrowIncentive,e.account.address)}static fromData(e){return new i_(e)}},rS=class n_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.repay(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new n_(e)}},oS=class r_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.stakeSca(this.data.amount,this.data.isObligationLocked,this.data.isOldBorrowIncentive,this.data.obligationId,this.data.obligationKey,this.data.lockPeriodInDays,this.data.veScaKey,e.account.address)}static fromData(e){return new r_(e)}},sS=class o_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.stake(this.data.marketCoinName,Number(this.data.amount),void 0,e.account.address)}static fromData(e){return new o_(e)}},aS=class s_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.supplyAndStake(this.data.coinName,Number(this.data.amount),this.data.stakeAccountId,e.account.address)}static fromData(e){return new s_(e)}},cS=class a_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.deposit(this.data.coinName,Number(this.data.amount),e.account.address)}static fromData(e){return new a_(e)}},lS=class c_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.unstake(this.data.marketCoinName,Number(this.data.amount),void 0,e.account.address)}static fromData(e){return new c_(e)}},uS=class l_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.unstakeAndWithdraw(this.data.coinName,Number(this.data.amount),this.data.stakeAccountId)}static fromData(e){return new l_(e)}},dS=class u_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.withdrawCollateral(this.data.collateralCoinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new u_(e)}},fS=class d_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.withdraw(this.data.coinName,Number(this.data.amount),e.account.address)}static fromData(e){return new d_(e)}},hS=class f_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.withdrawUnlockedSca(this.data.vescaKey,e.account.address)}static fromData(e){return new f_(e)}},pS=class{application="scallop";async deserialize(t){let e=new W0({client:t.suiClient,walletAddress:t.account.address,networkType:t.network.split(":")[1]});await e.init();let{transactionBlock:i}=t,n=new mC(i,e).decode();return{txType:M0.TransactionType.Other,txSubType:n.type,intentionData:n.intentionData}}async build(t){let{suiClient:e,account:i,network:n}=t,r;switch(t.txSubType){case"SupplyLending":r=cS.fromData(t.intentionData);break;case"WithdrawLending":r=fS.fromData(t.intentionData);break;case"Borrow":r=HC.fromData(t.intentionData);break;case"Repay":r=rS.fromData(t.intentionData);break;case"DepositCollateral":r=JC.fromData(t.intentionData);break;case"WithdrawCollateral":r=dS.fromData(t.intentionData);break;case"OpenObligation":r=tS.fromData(t.intentionData);break;case"StakeSpool":r=sS.fromData(t.intentionData);break;case"UnstakeSpool":r=lS.fromData(t.intentionData);break;case"ClaimIncentiveReward":r=XC.fromData(t.intentionData);break;case"BorrowWithBoost":r=ZC.fromData(t.intentionData);break;case"StakeSca":r=oS.fromData(t.intentionData);break;case"ExtendStakePeriod":r=QC.fromData(t.intentionData);break;case"ExtendPeriodAndStakeMore":r=YC.fromData(t.intentionData);break;case"RenewExpStakePeriod":r=nS.fromData(t.intentionData);break;case"WithdrawStakedSca":r=hS.fromData(t.intentionData);break;case"SupplyAndStakeLending":r=aS.fromData(t.intentionData);break;case"WithdrawAndUnstakeLending":r=uS.fromData(t.intentionData);break;case"RedeemSca":r=iS.fromData(t.intentionData);break;case"MigrateAndClaim":r=eS.fromData(t.intentionData);break;default:throw new Error("not implemented")}return r.build({suiClient:e,account:i,network:n})}},Vt={PackageId:"0x9632f61a796fc54952d9151d80b319e066cba5498a27b495c99e113db09726b1"},p_=[`${Vt.PackageId}::swap_router::swap_a_b`,`${Vt.PackageId}::swap_router::swap_b_a`],Wu=[`${Vt.PackageId}::swap_router::swap_a_b_b_c`,`${Vt.PackageId}::swap_router::swap_a_b_c_b`,`${Vt.PackageId}::swap_router::swap_b_a_b_c`,`${Vt.PackageId}::swap_router::swap_b_a_c_b`],mS=(t,e)=>{if(t===1)switch(Wu.findIndex(i=>i===e)){case 0:return[!0,!0];case 1:return[!0,!1];case 2:return[!1,!0];case 4:return[!1,!1];default:throw new Error(`not target: ${e}`)}switch(p_.findIndex(i=>i===e)){case 0:return[!0];case 1:return[!1];default:throw new Error(`not target: ${e}`)}},gS=class{constructor(t,e){this.txb=t,this.turbosSdk=e}get transactions(){return this.txb.blockData.transactions}decode(t){if(this.isSwapTransaction())return this.decodeSwap();if(this.isAddLiquidityTransaction())return this.decodeAddLiquidity();if(this.isIncreaseLiquidityTransaction())return this.decodeIncreaseLiquidity(t);if(this.isRemoveLiquidityTransaction())return this.decodeRemoveLiquidity(t);if(this.isDecreaseLiquidityTransaction())return this.decodeDecreaseLiquidity(t);if(this.isCollectFeeTransaction())return this.decodeCollectFee();if(this.isCollectRewardTransaction())return this.decodeCollectReward();if(this.isBurnTransaction())return this.decodeBurn();throw new Error("Unknown transaction type")}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}getMoveCallsTransaction(t){return t.every(e=>this.transactions.find(i=>i.kind==="MoveCall"&&i.target===e))}getSwapMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&t.includes(e.target))}isSwapTransaction(){return!!this.getSwapMoveCallTransaction([...p_,...Wu])}isAddLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Vt.PackageId}::position_manager::mint`)}isIncreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Vt.PackageId}::position_manager::increase_liquidity`)}isDecreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Vt.PackageId}::position_manager::decrease_liquidity`)}isCollectFeeTransaction(){return!!this.getMoveCallTransaction(`${Vt.PackageId}::position_manager::collect`)}isCollectRewardTransaction(){return!!this.getMoveCallTransaction(`${Vt.PackageId}::position_manager::collect_reward`)}isBurnTransaction(){return!!this.getMoveCallTransaction(`${Vt.PackageId}::position_manager::burn`)}isRemoveLiquidityTransaction(){return!!this.getMoveCallsTransaction([`${Vt.PackageId}::position_manager::decrease_liquidity`,`${Vt.PackageId}::position_manager::burn`])}decodeSwap(){let t=this.transactions.find(y=>y.kind==="MoveCall"),e=0;Wu.includes(t.target)&&(e=1);let i=mS(e,t.target),n=i.map((y,v)=>{let C=this.helper.decodeSharedObjectId(v),O=this.helper.decodeInputU128(4+v+e),P=this.turbosSdk.math.sqrtPriceX64ToTickIndex(new Su.default(O.toString()));return{pool:C,a2b:y,nextTickIndex:P}}),r=i[0]?t.typeArguments[0]:t.typeArguments[1],o=e===1?t.typeArguments[4]:i[0]?t.typeArguments[1]:t.typeArguments[0],s=this.helper.decodeInputAddress(6+2*e),a=this.helper.decodeInputU64(7+2*e),l=this.helper.decodeInputBool(5+2*e),u=this.helper.decodeInputU64(2+e),h=this.helper.decodeInputU64(3+e);return{txType:ln.TransactionType.Other,type:"Swap",intentionData:{routes:n,coinTypeA:r,coinTypeB:o,address:s,amountA:l?u:h,amountB:l?h:u,amountSpecifiedIsInput:l,slippage:"0.1",deadline:a}}}decodeAddLiquidity(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeInputAddress(12),i=this.helper.decodeInputU64(8),n=this.helper.decodeInputU64(9),r=this.helper.decodeInputU32(4),o=this.helper.decodeInputBool(5),s=this.helper.decodeInputU32(6),a=this.helper.decodeInputBool(7),l=this.helper.decodeInputU64(13);return{txType:ln.TransactionType.Other,type:"AddLiquidity",intentionData:{pool:t,slippage:5,address:e,amountA:i,amountB:n,tickLower:o?-r:r,tickUpper:a?-s:s,deadline:l}}}decodeIncreaseLiquidity(t){let e=this.helper.decodeSharedObjectId(0),i=this.helper.decodeSharedObjectId(4),n=this.helper.decodeInputU64(5),r=this.helper.decodeInputU64(6),o=this.helper.decodeInputU64(9);return{txType:ln.TransactionType.Other,type:"IncreaseLiquidity",intentionData:{pool:e,slippage:5,address:t,amountA:n,amountB:r,nft:i,deadline:o}}}decodeDecreaseLiquidity(t){let e=this.helper.decodeSharedObjectId(0),i=this.helper.decodeSharedObjectId(2),n=this.helper.decodeInputU64(3),r=this.helper.decodeInputU64(4),o=this.helper.decodeInputU64(5),s=this.helper.decodeInputU64(6);return{txType:ln.TransactionType.Other,type:"DecreaseLiquidity",intentionData:{pool:e,decreaseLiquidity:n,nft:i,amountA:r,amountB:o,slippage:3,address:t,deadline:s}}}decodeCollectFee(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2),i=this.helper.decodeInputAddress(5),n=this.helper.decodeInputU64(3),r=this.helper.decodeInputU64(4),o=this.helper.decodeInputU64(6);return{txType:ln.TransactionType.Other,type:"CollectFee",intentionData:{pool:t,address:i,collectAmountA:n,collectAmountB:r,nft:e,deadline:o}}}decodeCollectReward(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2),i=this.helper.decodeInputAddress(6),n=this.collectRewardHelper.map(o=>o.decodeInputU64(5)),r=this.helper.decodeInputU64(7);return{txType:ln.TransactionType.Other,type:"CollectReward",intentionData:{pool:t,address:i,rewardAmounts:n,nft:e,deadline:r}}}decodeBurn(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2);return{txType:ln.TransactionType.Other,type:"Burn",intentionData:{pool:t,nft:e}}}decodeRemoveLiquidity(t){let e=this.decreaseLiquidityHelper.decodeSharedObjectId(0),i=this.decreaseLiquidityHelper.decodeSharedObjectId(2),n=this.decreaseLiquidityHelper.decodeInputU64(3),r=this.decreaseLiquidityHelper.decodeInputU64(4),o=this.decreaseLiquidityHelper.decodeInputU64(5),s=this.decreaseLiquidityHelper.decodeInputU64(6),a=this.collectRewardHelper.map(h=>h.decodeInputU64(5)),l=this.collectFeeHelper.decodeInputU64(3)||0,u=this.collectFeeHelper.decodeInputU64(4)||0;return{txType:ln.TransactionType.Other,type:"RemoveLiquidity",intentionData:{pool:e,decreaseLiquidity:n,nft:i,amountA:r,amountB:o,slippage:3,address:t,collectAmountA:l,collectAmountB:u,rewardAmounts:a,deadline:s}}}get helper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target!=="0x2::coin::zero");return new $a(t,this.txb)}get collectRewardHelper(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target===`${Vt.PackageId}::position_manager::collect_reward`).map(t=>new $a(t,this.txb))}get collectFeeHelper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target===`${Vt.PackageId}::position_manager::collect`);return new $a(t,this.txb)}get decreaseLiquidityHelper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target===`${Vt.PackageId}::position_manager::decrease_liquidity`);return new $a(t,this.txb)}},$a=class Za{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return Za.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return Za.getOwnedObjectId(i)}decodeInputU128(e){let i=this.decodePureArg(e,"u128");return Number(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return Number(i)}decodeInputU32(e){let i=this.decodePureArg(e,"u32");return Number(i)}decodeInputU8(e){let i=this.decodePureArg(e,"u8");return Number(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,Rn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return Za.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}static getPureInputValue(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure;return Vu.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Rn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Rn.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,Rn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Rn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let n=e.value.Pure;return Vu.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,Rn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},_S=class m_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,amountA:o,amountB:s,slippage:a,tickLower:l,tickUpper:u,deadline:h,txb:y}=this.data;return i.pool.addLiquidity({pool:n,slippage:a,address:r,amountA:o,amountB:s,tickLower:l,tickUpper:u,deadline:h,txb:y})}static fromData(e){return new m_(e)}},bS=class g_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),{pool:n,nft:r,txb:o}=this.data;return i.nft.burn({pool:n,nft:r,txb:o})}static fromData(e){return new g_(e)}},yS=class __ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,nft:o,collectAmountA:s,collectAmountB:a,deadline:l,txb:u}=this.data;return i.pool.collectFee({pool:n,address:r,collectAmountA:s,collectAmountB:a,nft:o,deadline:l,txb:u})}static fromData(e){return new __(e)}},wS=class b_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,nft:o,rewardAmounts:s,deadline:a,txb:l}=this.data;return i.pool.collectReward({pool:n,address:r,rewardAmounts:s,nft:o,deadline:a,txb:l})}static fromData(e){return new b_(e)}},vS=class y_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),{fee:n,address:r,tickLower:o,tickUpper:s,sqrtPrice:a,slippage:l,coinTypeA:u,coinTypeB:h,amountA:y,amountB:v,deadline:C,txb:O}=this.data;return i.pool.createPool({fee:n,amountA:y,amountB:v,address:r,tickLower:o,tickUpper:s,sqrtPrice:a,slippage:l,coinTypeA:u,coinTypeB:h,deadline:C,txb:O})}static fromData(e){return new y_(e)}},kS=class w_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,amountA:o,amountB:s,slippage:a,nft:l,decreaseLiquidity:u,deadline:h,txb:y}=this.data;return i.pool.decreaseLiquidity({pool:n,slippage:a,address:r,amountA:o,amountB:s,nft:l,decreaseLiquidity:u,deadline:h,txb:y})}static fromData(e){return new w_(e)}},TS=class v_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,amountA:o,amountB:s,slippage:a,nft:l,deadline:u,txb:h}=this.data;return i.pool.increaseLiquidity({pool:n,slippage:a,address:r,amountA:o,amountB:s,nft:l,deadline:u,txb:h})}static fromData(e){return new v_(e)}},CS=class T_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),n=new k_.TransactionBlock;return n=await i.pool.collectFee({txb:n,...this.data}),n=await i.pool.collectReward({txb:n,...this.data}),n=await i.pool.decreaseLiquidity({txb:n,...this.data}),n=await i.nft.burn({txb:n,nft:this.data.nft,pool:this.data.pool}),n}static fromData(e){return new T_(e)}},SS=class C_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),{routes:n,coinTypeA:r,coinTypeB:o,address:s,amountA:a,amountB:l,slippage:u,amountSpecifiedIsInput:h,deadline:y,txb:v}=this.data;return i.trade.swap({routes:n,coinTypeA:r,coinTypeB:o,address:s,amountA:a,amountB:l,amountSpecifiedIsInput:h,slippage:u,deadline:y,txb:v})}static fromData(e){return new C_(e)}},xS=class{application="turbos";async deserialize(t){let e=new At(t.network.replace("sui:",""),t.suiClient),{transactionBlock:i,account:n}=t,r=new gS(i,e).decode(n.address);return{txType:h_.TransactionType.Other,txSubType:r.type,intentionData:r.intentionData}}async build(t){let{suiClient:e,account:i,network:n}=t,r;switch(t.txSubType){case"CreatePool":r=vS.fromData(t.intentionData);break;case"AddLiquidity":r=_S.fromData(t.intentionData);break;case"IncreaseLiquidity":r=TS.fromData(t.intentionData);break;case"DecreaseLiquidity":r=kS.fromData(t.intentionData);break;case"RemoveLiquidity":r=CS.fromData(t.intentionData);break;case"CollectFee":r=yS.fromData(t.intentionData);break;case"CollectReward":r=wS.fromData(t.intentionData);break;case"Burn":r=bS.fromData(t.intentionData);break;case"Swap":r=SS.fromData(t.intentionData);break;default:throw new Error("not implemented")}return r.build({suiClient:e,account:i,network:n})}},AS={packageId:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",poolObjectId:"0x7fa2faa111b8c65bea48a23049bfd81ca8f971a262d981dcd9a17c3825cb5baf",metadataObjectId:"0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",systemStateObjectId:"0x0000000000000000000000000000000000000000000000000000000000000005",certType:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT"},Ht=AS,IS=class{constructor(t){this.txb=t}decode(){if(console.log("txb",this.txb),this.isStakeTransaction())return this.decodeStake();if(this.isUnStakeTransaction())return this.decodeUnStake();if(this.isClaimTicketTransaction())return this.decodeClaimTicket();throw new Error("Unknown transaction type")}get transactions(){return this.txb.blockData.transactions}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isStakeTransaction(){return!!this.getMoveCallTransaction(`${Ht.packageId}::native_pool::stake`)}isUnStakeTransaction(){return!!this.getMoveCallTransaction(`${Ht.packageId}::native_pool::unstake`)}isClaimTicketTransaction(){return!!this.getMoveCallTransaction(`${Ht.packageId}::native_pool::burn_ticket`)}decodeStake(){let t=this.transactions[0].amounts[0].value.div(1e9).toNumber();return{txType:Xa.TransactionType.Other,type:"Stake",intentionData:{amount:t}}}decodeUnStake(){let t=this.transactions.find(e=>e.kind==="SplitCoins").amounts[0].value.div(1e9).toNumber();return{txType:Xa.TransactionType.Other,type:"UnStake",intentionData:{amount:t}}}decodeClaimTicket(){let t=this.helper.decodeOwnedObjectId(2);return console.log(t),{txType:Xa.TransactionType.Other,type:"ClaimTicket",intentionData:{ticketId:t}}}get helper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(Ht.packageId));return new OS(t,this.txb)}},OS=class Ja{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return Ja.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return Ja.getOwnedObjectId(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return Number(i)}decodeInputU8(e){let i=this.decodePureArg(e,"u8");return Number(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,qn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return Ja.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}static getPureInputValue(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure;return zu.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,qn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,qn.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,qn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,qn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let n=e.value.Pure;return zu.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,qn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},PS=class A_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){console.log(e);let i=new x_.TransactionBlock,{ticketId:n}=this.data;return i.moveCall({target:`${Ht.packageId}::native_pool::burn_ticket`,arguments:[i.object(Ht.poolObjectId),i.object(Ht.systemStateObjectId),i.object(n)]}),i}static fromData(e){return new A_(e)}},DS=class O_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){console.log(e);let i=new I_.TransactionBlock,{amount:n}=this.data,[r]=i.splitCoins(i.gas,[i.pure(n)]);return i.moveCall({target:`${Ht.packageId}::native_pool::stake`,arguments:[i.object(Ht.poolObjectId),i.object(Ht.metadataObjectId),i.object(Ht.systemStateObjectId),r]}),i}static fromData(e){return new O_(e)}},MS=class D_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){console.log(e);let i=new P_.TransactionBlock,{amount:n}=this.data,r=(await e.suiClient.getAllCoins({owner:e.account.address,limit:100})).data,[o,...s]=r.filter(u=>u.coinType.split("::")[0]===Ht.certType),a=i.object(o.coinObjectId);s.length&&i.mergeCoins(a,s.map(u=>i.object(u.coinObjectId)));let l=i.splitCoins(i.object(o.coinObjectId),[i.pure(n)]);return i.moveCall({target:`${Ht.packageId}::native_pool::unstake`,arguments:[i.object(Ht.poolObjectId),i.object(Ht.metadataObjectId),i.object(Ht.systemStateObjectId),l]}),i}static fromData(e){return new D_(e)}},ES=class{application="volo";async deserialize(t){let{transactionBlock:e}=t,i=new IS(e).decode();return{txType:S_.TransactionType.Other,txSubType:i.type,intentionData:i.intentionData}}async build(t){let{suiClient:e,account:i}=t,n;switch(t.txSubType){case"Stake":n=DS.fromData(t.intentionData);break;case"UnStake":n=MS.fromData(t.intentionData);break;case"ClaimTicket":n=PS.fromData(t.intentionData);break;default:throw new Error("not implemented")}return n.build({suiClient:e,account:i})}},ac=new uC([new ZT,new sC,new WT,new lC,new Wk,new xS,new pS,new ES]);var Pe=require("@msafe/sui3-utils"),ad=require("@mysten/sui.js/transactions"),pc=require("@mysten/sui.js/utils");var M_=require("@mysten/sui.js/transactions"),jS=1000n,BS=120n,NS=100n,FS={multiplier:{numerator:BS,denominator:NS}};var cc=class{constructor(e){this.globals=e}async simulate(e,i=FS){let n=this.copyTransactionBlock(e.txb),{suiClient:r}=this.globals,o=await this.getGasPrice(i);n.setGasPrice(o);let s=await r.devInspectTransactionBlock({transactionBlock:n,sender:e.sender}),{gasUsed:a}=s.effects,l=this.toGasBudget(a,o),u=s.effects.status.status==="success",h;return u||(h=s.effects.status.error),{success:u,gasPrice:o,gasObject:s.effects.gasObject.reference,gasUsed:a,gasBudget:l,simulationError:h}}async getGasPrice(e){if(this.isFixedValue(e))return e.fixedVal;let i=await this.globals.suiClient.getReferenceGasPrice();return this.applyGasOption(i,e)}toGasBudget(e,i){let{computationCost:n,storageCost:r}=e,o=jS*i,s=BigInt(n)+o,a=s+BigInt(r);return a>s?a:s}isFixedValue(e){return"fixedVal"in e}isMultiplier(e){return"multiplier"in e}applyGasOption(e,i){if(this.isFixedValue(i))return i.fixedVal;if(this.isMultiplier(i)){let{multiplier:n}=i;return e*n.numerator/n.denominator}throw new Error("Sanity: Unknown gas price option")}copyTransactionBlock(e){return M_.TransactionBlock.from(e.serialize())}};var Qu=require("buffer");function lc(t){return Qu.Buffer.from(t,"utf-8")}function RS(t){return`0x${Array.prototype.map.call(t,e=>`0${e.toString(16)}`.slice(-2)).join("")}`}function uc(t){return Uint8Array.from(Qu.Buffer.from(t.startsWith("0x")?t.slice(2):t,"hex"))}var fc=require("@mysten/sui.js/verify");var $n=require("@mysten/sui.js/utils");var dc=require("@mysten/sui.js/utils"),ps=class{_client;_coinMetaReg;constructor(e){this._client=e,this._coinMetaReg=new Map}async getCoinMeta(e){let i=(0,dc.normalizeStructTag)(e);if(this._coinMetaReg.has(i))return this._coinMetaReg.get(i);let n=await this.queryCoinMeta(i);return n&&this._coinMetaReg.set(i,n),n}async queryCoinMeta(e){return await this._client.getCoinMetadata({coinType:e})||void 0}},ed=/^0x0000000000000000000000000000000000000000000000000000000000000002::coin::Coin<(.+)>$/,ms=class t{static isCoin(e){return e?(0,dc.normalizeStructTag)(e).match(ed)!=null:!1}static getCoinType(e){let[,i]=(0,dc.normalizeStructTag)(e).match(ed)??[];return i||null}static getBalance(e){if(!t.isCoin(e.type)||e.content?.dataType!=="moveObject")return;let{balance:i}=e.content?.fields;if(i!==void 0)return BigInt(i)}};var fn=class{static normalizeSuiAddress(e){return(0,$n.normalizeSuiAddress)(e)}static normalizeStructTag(e){return(0,$n.normalizeStructTag)(e)}static isSuiAddressEqual(e,i){return(0,$n.normalizeSuiAddress)(e)===(0,$n.normalizeSuiAddress)(i)}static isSuiStructEqual(e,i){return(0,$n.normalizeStructTag)(e)===(0,$n.normalizeStructTag)(i)}static isCoinObjectType(e){return ms.isCoin(e)}};function td(t,e){return t.startsWith(e)?t:e+t}var id=class t{static async getPublicKeyFromSignature(e){return e.messageType==="TransactionBlock"?(0,fc.verifyTransactionBlock)(e.message,e.signature):(0,fc.verifyPersonalMessage)(e.message,e.signature)}static async getPublicKeyFromPersonalSignature(e){let i=lc(e.messageStr);return this.getPublicKeyFromSignature({message:i,messageType:"Personal",signature:e.signature})}static async verifySignature(e){let i=await t.getPublicKeyFromSignature(e);return fn.isSuiAddressEqual(i.toSuiAddress(),e.targetAddress)}static async verifyPersonalSignature(e){let i=lc(e.messageStr);return this.verifySignature({message:i,messageType:"Personal",signature:e.signature,targetAddress:e.targetAddress})}static async verifyTransactionSignature(e){return this.verifySignature({messageType:"TransactionBlock",message:e.payload,signature:e.signature,targetAddress:e.targetAddress})}};var E_=require("@msafe/sui3-utils"),j_=require("@mysten/sui.js/cryptography"),B_=require("@mysten/sui.js/multisig");var qS="0x2::sui::SUI";async function nd(t,e){let i;try{i=await t.queryTransactionBlocks({filter:{FromAddress:e},options:{showInput:!0},limit:2})}catch{return}if(i.data.length===0||!i.data[0].transaction?.txSignatures)return;let r=i.data[0].transaction?.txSignatures;for(let o=0;o!==r.length;o++){let s=r[o],a=LS(s,e);if(a)return a}}function LS(t,e){let i=(0,j_.parseSerializedSignature)(t);switch(i.signatureScheme){case"MultiSig":{let n=new B_.MultiSigPublicKey(i.multisig.multisig_pk).toSuiAddress();if(fn.isSuiAddressEqual(n,e))throw new Error("multi-sig wallet cannot be owner");return}case"ZkLogin":{if(fn.isSuiAddressEqual(i.zkLogin.address,e))throw new Error("ZkLogin wallet cannot be owner");return}case"ED25519":case"Secp256k1":case"Secp256r1":{let n=E_.PublicKeySerde.de({publicKeyEncoded:i.publicKey,schema:i.signatureScheme});return fn.isSuiAddressEqual(n.toSuiAddress(),e)?n:void 0}default:throw new Error("Unknown schema")}}async function $S(t){let e=!0,i,n=[];for(;e;){let r=await t.suiClient.getCoins({owner:t.owner,coinType:t.coinType,cursor:i});n.push(...r.data),e=r.hasNextPage,i=r.nextCursor}return n}var N_=25;async function F_(t){let e=[];for(;await t.hasNext();){let i=await t.next();e.push(i)}return e&&Array.isArray(e[0])?e.flat(1):e}var rd=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)}},hc=class{constructor(e){this.requester=e;this.pager=new rd(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 R_(t,e,i){let n=new od(t,e,i);return await F_(n)}var od=class extends hc{constructor(i,n,r){super(new sd(i,n,r));this.provider=i;this.owner=n;this.options=r}},sd=class{constructor(e,i,n){this.provider=e;this.owner=i;this.options=n;this.nextCursor=null,this.filter=n?.filter,this.pageSize=n?.pageSize||N_,this.objectOptions=n?.objectOptions||{showType:!0,showContent:!0}}nextCursor;filter;pageSize;objectOptions;async doNextRequest(){let e=await this.provider.getOwnedObjects({owner:this.owner,options:this.objectOptions,cursor:this.nextCursor,limit:this.pageSize});this.nextCursor=e.nextCursor;let i;if(this.filter){let{filter:n}=this;i=e.data.filter(r=>n?.(r))}else i=e.data;return{data:i.map(n=>n.data).filter(n=>n),hasNext:e.hasNextPage}}};var hr=class t{constructor(e,i){this.globals=e;this.info=i;this.multiSig=new Pe.MultiSigAccount({threshold:i.threshold,ownersWithWeight:i.owners,creationNonce:i.creationNonce}),this.coinHelper=new ps(this.suiClient),this.simulator=new cc(e)}multiSig;coinHelper;simulator;static async New(e,i){let n=await e.backend.getMSafeAccountInfo(i);if(new t(e,n).address!==i)throw new Error("Invalid msafe config with address")}async ownedCoins(){let e=await this.suiClient.getAllBalances({owner:this.address});return Promise.all(e.map(async i=>{let n=await this.coinHelper.getCoinMeta(i.coinType),r=i.lockedBalance.number?BigInt(i.totalBalance)-BigInt(i.lockedBalance.number):BigInt(i.totalBalance);return{type:(0,pc.normalizeStructTag)(i.coinType),balance:BigInt(r),metadata:n}}))}async ownedObjects(e){let i={filter:n=>!n?.data?.type?.startsWith("0x2::coin::Coin"),...e};return R_(this.suiClient,this.address,i)}async pendingTransaction(){let e=await this.backend.getPendingTransactions({msafeAddress:this.address});if(!e.pending)return;let i=e.pending,n=e.reject;return{application:i.application,txType:i.txType,txSubType:i.txSubType,createdAt:i.createdAt,creator:i.creator,digest:i.digest,intention:i.intention,sequenceNumber:i.sequenceNumber,payload:i.payload,votes:i.votes,approvalWeight:this.calculateWeightFromVotes(i.votes),msafeAddress:i.msafeAddress,rejectDigest:n?.digest??"",rejectPayload:n?.payload??"",rejectVotes:n?.votes??[],rejectWeight:this.calculateWeightFromVotes(n?.votes??[])}}async historyTransaction(e){return this.backend.getHistoryTransactions({msafeAddress:this.address,...e})}async futureIntentions(e){return this.backend.getFutureIntentions({msafeAddress:this.address,...e})}async currentSequenceNumber(){return this.backend.getCurrentSequenceNumber(this.address)}async nextSequenceNumber(){return this.backend.getNextSequenceNumber(this.address)}async simulateIntention(e){let i=ac.getAppHelper(e.application);if(!i)throw new Error(`Can't find app helper for application ${e.application}`);let n=await i.build({network:this.globals.config.network,intentionData:e.intention,txType:e.txType,txSubType:e.txSubType,suiClient:this.globals.suiClient,account:{address:this.address}});return this.simulator.simulate({txb:n,sender:this.address})}async proposeIntention(e){let i=Pe.SigningMessageHelper.proposeIntentionMessage({msafeAddress:this.address,intention:e.intention,sn:e.sequenceNumber}),n=await this.wallet.signPersonalMessage({messageStr:i});return this.backend.proposeIntention({...e,msafeAddress:this.address,signature:n.signature})}async proposeIntentionAndBuildVote(e){let i=ac.getAppHelper(e.application);if(!i)throw new Error(`Can't find app helper for application ${e.application}`);let n=await i.build({network:this.globals.config.network,intentionData:e.intention,txType:e.txType,txSubType:e.txSubType,suiClient:this.globals.suiClient,account:{address:this.address}});n.setGasPrice(e.gasPrice),n.setGasBudget(e.gasBudget),n.setSender(this.address);let r=await n.build({client:this.globals.suiClient}),o=await n.getDigest({client:this.globals.suiClient}),s=await this.wallet.signTransactionBlock({transactionBlock:r});return this.backend.proposeIntentionAndBuildVote({...e,payload:(0,pc.toHEX)(r),digest:o,msafeAddress:this.address,signature:s.signature})}async simulateCoinTransferIntention(e){let i=await this.nextSequenceNumber();return this.simulateIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.coin.send,sequenceNumber:i,intention:e})}async proposeCoinTransferIntention(e){let i=await this.nextSequenceNumber();return this.proposeIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.coin.send,sequenceNumber:i,intention:e})}async simulateObjectTransferIntention(e){let i=await this.nextSequenceNumber();return this.simulateIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.object.send,sequenceNumber:i,intention:e})}async proposeObjectTransferIntention(e){let i=await this.nextSequenceNumber();return this.proposeIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.object.send,sequenceNumber:i,intention:e})}async simulatePlainPayloadIntention(e){let i=await this.nextSequenceNumber();return this.simulateIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Other,txSubType:Pe.TransactionSubTypes.others.plain,sequenceNumber:i,intention:e})}async proposePlainPayloadIntention(e){let i=await this.nextSequenceNumber(),n=ad.TransactionBlock.from(e.payload);if(!n.blockData.sender||!(0,Pe.isSameAddress)(n.blockData.sender,this.address))throw new Error("Transaction sender is not same as the multisig address");return this.proposeIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Other,txSubType:Pe.TransactionSubTypes.others.plain,sequenceNumber:i,intention:e})}async voteForTransaction(e,i){let n=uc(i),r=await this.wallet.signTransactionBlock({transactionBlock:n});return this.backend.voteForTransaction({msafeAddress:this.address,digest:e,signature:r.signature})}async proposePendingTransaction(e){let i=new ad.TransactionBlock,n=await i.build({client:this.suiClient}),r=await i.getDigest({client:this.suiClient}),o=await this.wallet.signTransactionBlock({transactionBlock:n});return this.backend.proposePendingTransaction({msafeAddress:this.address,userAddress:await this.userAddress(),intention:e,digest:r,signature:o.signature})}async simulateRejectTx(){let e=await this.pendingTransaction();if(!e||e.rejectDigest!=="")throw new Error("Already rejected");let i=e.payload,n=(0,Pe.buildRejectTxb)(this.address,i);return this.simulator.simulate({txb:n,sender:this.address})}async rejectCurrentTx(e){let i=await this.pendingTransaction();if(!i||i.rejectDigest!=="")throw new Error("Already rejected");let n=i.payload,r=(0,Pe.buildRejectTxb)(this.address,n),o=await r.getDigest({client:this.suiClient}),s=await r.build({client:this.suiClient}),a=await this.wallet.signTransactionBlock({transactionBlock:s});return this.backend.rejectCurrentTx({msafeAddress:this.address,digest:o,signature:a.signature,...e})}async simulateBuildTransaction(){let e=await this.backend.getNextIntention({msafeAddress:this.address}),i=ac.getAppHelper(e.application);if(!i)throw new Error(`Can't find app helper for application ${e.application}`);console.log("\u{1F680} ~ MSafeAccount ~ simulateBuildTransaction ~ intention:",e);let n=await i.build({network:this.globals.config.network,intentionData:e.intention,txType:e.txType,txSubType:e.txSubType,suiClient:this.globals.suiClient,account:{address:this.address}});return this.simulator.simulate({txb:n,sender:this.address})}async buildNextIntentionAndAddToPending(e){return this.backend.buildNextIntentionAndAddToPending({msafeAddress:this.address,forceBuild:e.forceBuild,gasPrice:e.gasPrice,gasBudget:e.gasBudget})}async skipNextFailedIntention(){return this.backend.skipNextFailedIntention({msafeAddress:this.address})}async executePendingTx(e,i=!1){let n=i?e.rejectVotes:e.votes,r=i?e.rejectPayload:e.payload;if(this.calculateWeightFromVotes(n)<this.info.threshold)throw new Error("Not enough signature");let o=[],s=new Map(n.map(l=>[l.userAddress,l.signature]));for(let l=0;l<this.info.owners.length;l++){let u=this.info.owners[l],h=s.get(u.address);h&&o.push(h)}let a=this.multiSig.combinePartialSignatures(o);return this.suiClient.executeTransactionBlock({transactionBlock:uc(r),signature:a,options:{showEffects:!0,showEvents:!0}})}async dashboard(){return this.backend.getDashboard({msafeAddress:this.address})}calculateWeightFromVotes(e){return this.calculateWeight(e.map(i=>i.userAddress))}calculateWeight(e){let i=0;for(let n=0;n<e.length;n++){let r=this.info.owners.find(o=>(0,Pe.isSameAddress)(o.address,e[n]));r&&(i+=r.weight)}return i}get address(){return this.multiSig.address}get backend(){return this.globals.backend}get wallet(){return this.globals.wallet}async userAddress(){return this.globals.wallet.address()}get suiClient(){return this.globals.suiClient}};var q_=require("@msafe/sui3-utils"),L_=require("@mysten/sui.js/utils");var mc=class{constructor(e){this.globals=e;this.knownPublicKeys=new Map}knownPublicKeys;async getPublicKey(e){let i=this.knownPublicKeys.get(e);if(i)return i;let n=await this._getPublicKey(e);return n&&this.knownPublicKeys.set(e,n),n}async getPublicKeyBatch(e){let i=new Array(e.length).fill(void 0);for(let o=0;o<e.length;o++){let s=e[o];i[o]=this.knownPublicKeys.get(s)}let n=i.map((o,s)=>o===void 0?s:-1).filter(o=>o!==-1);if(n.length===0)return i;let r=await this.globals.backend.getPublicKeyBatch(n.map(o=>e[o]));for(let o=0;o<n.length;o++){let s=n[o];i[s]=r[o]}for(let o=0;o<i.length;o++)i[o]===void 0&&(i[o]=await this.getPublicKeyFromChain(e[o]));for(let o=0;o<e.length;o++)i[o]&&this.knownPublicKeys.set(e[o],i[o]);return i}addPublicKey(e,i){if(!(0,q_.isSameAddress)(e,i.toSuiAddress()))throw new Error("Invalid public key");this.knownPublicKeys.set((0,L_.normalizeSuiAddress)(e),i)}async _getPublicKey(e){let i=await this.getPublicKeyFromBackend(e);if(i)return i;let n=await this.getPublicKeyFromChain(e);if(n)return n}async getPublicKeyFromBackend(e){try{return await this.globals.backend.getPublicKey(e)}catch{return}}async getPublicKeyFromChain(e){return nd(this.globals.suiClient,e)}};var gc=class{constructor(e){this.globals=e}async create(e){return this.globals.backend.submitReport(e)}};var G_=require("@mysten/sui.js/client");var _s=require("@msafe/sui3-utils"),gs=we(require("axios"),1);var _c=class t{constructor(e){this.apiURL=e}_token;async authSign(e){let i=await this.post("/auth/login",e);return this._token=i.data.accessToken,this._token}async verifyToken(e){try{return(await this.get("/auth",{headers:this.headers(e)})).status===200}catch{return!1}}setJWTToken(e){this._token=e}async getPublicKey(e){return(await this.getPublicKeyBatch([e]))[0]}async getPublicKeyBatch(e){let i={userAddressList:e};return(await this.get("/user/public-keys",{params:i,headers:this.headers()})).data?.map(r=>r?_s.PublicKeySerde.de(r):void 0)}async getMSafeAccountInfo(e){let i={msafeAddress:e},n=await this.get("/msafe",{params:i,headers:this.headers()});return t.toMSafeConfig(n.data)}async getUserInfo(){return(await this.get("/user",{headers:this.headers()})).data}async getOwnedMSafeByStatus(e){let i={status:e.status??_s.UserMSafeStatus.active,...e.pagination?{page:e.pagination.page.toString(),limit:e.pagination.limit.toString()}:{}},n=await this.get("/msafe/owned",{params:i,headers:this.headers()});return{data:n.data.data.map(t.toMSafeConfig),meta:n.data.meta}}async updateMSafeStatus(e){let i=e;await this.post("/msafe/status",i,{headers:this.headers()})}async getPendingTransactions(e){return(await this.get("/transaction/pending",{params:e,headers:this.headers()})).data}async getHistoryTransactions(e){return(await this.get("/transaction/history",{params:e,headers:this.headers()})).data}async getFutureIntentions(e){return(await this.get("/transaction/intention",{params:e,headers:this.headers()})).data}async getNextIntention(e){return(await this.get("/transaction/intention/next",{params:e,headers:this.headers()})).data}async getCurrentSequenceNumber(e){return(await this.get("/transaction/sn/current",{params:{msafeAddress:e},headers:this.headers()})).data}async getNextSequenceNumber(e){return(await this.get("/transaction/sn/next",{params:{msafeAddress:e},headers:this.headers()})).data}async createMSafeAccount(e){await this.post("/msafe/create",e,{headers:this.headers()})}async proposeIntention(e){await this.post("/transaction/intention",e,{headers:this.headers()})}async proposePendingTransaction(e){}async rejectCurrentTx(e){await this.post("/transaction/pending/reject",{...e,gasPrice:e.gasPrice.toString(),gasBudget:e.gasBudget.toString()},{headers:this.headers()})}async voteForTransaction(e){await this.post("/transaction/pending/vote",e,{headers:this.headers()})}async buildNextIntentionAndAddToPending(e){await this.post("/transaction/pending/build",{...e,gasPrice:e.gasPrice.toString(),gasBudget:e.gasBudget.toString()},{headers:this.headers()})}async proposeIntentionAndBuildVote(e){await this.post("/transaction/intention/build",{...e,gasPrice:e.gasPrice.toString(),gasBudget:e.gasBudget.toString()},{headers:this.headers()})}async skipNextFailedIntention(e){await this.post("/transaction/pending/skip",e,{headers:this.headers()})}async getAddressBookEntries(e){return(await this.get("/address-book",{headers:this.headers(),params:e})).data}async updateAddressBook(e){await this.post("/address-book",e,{headers:this.headers()})}async getAddressBookMode(){return(await this.get("/address-book/mode",{headers:this.headers()})).data}async setAddressBookMode(e){await this.post("/address-book/mode",{mode:e.mode},{headers:this.headers()})}async submitReport(e){await this.post("/report",e)}async getDashboard(e){return(await this.get("/dashboard",{params:e,headers:this.headers()})).data}headers(e){return{Authorization:`Bearer ${e||this._token}`}}static toMSafeConfig(e){return{...e,owners:e.owners.map(i=>({address:i.address,weight:i.weight,publicKey:_s.PublicKeySerde.de({publicKeyEncoded:i.publicKeyEncoded,schema:i.schema})}))}}async get(e,i){let n=this.getFullUrl(e);try{return await gs.default.get(n,i)}catch(r){throw bc.fromError(r)??r}}async post(e,i,n){let r=this.getFullUrl(e);try{return await gs.default.post(r,i,{...n,transformRequest:this.getTransformRequest()})}catch(o){throw bc.fromError(o)??o}}getFullUrl(e){return e.startsWith(this.apiURL)?e:`${this.apiURL}${td(e,"/")}`}getTransformRequest(){let e=[],{transformRequest:i}=gs.default.defaults;return i?i instanceof Array?e=i:e=[i]:e=[],[n=>JSON.parse(JSON.stringify(n,(r,o)=>typeof o=="bigint"?`${o.toString()}n`:o)),...e]}},bc=class t extends Error{constructor(i){super();this.e=i;Error.captureStackTrace(this,this.constructor)}name;static fromError(i){if(gs.default.isAxiosError(i)&&i?.response?.data&&"message"in i.response.data)return new t(i)}get status(){return this.e.response?.status??void 0}get message(){return`${this.respMessage()??"Unknown resp"}`}respMessage(){if(this.e.response?.data)return(this.e.response?.data).message??void 0}get endpoint(){return this.e.config?.url??""}toString(){return this.message}};var $_=(o=>(o.local="local",o.unit="unit",o.dev="dev",o.prev="prev",o.prod="prod",o))($_||{}),yc="https://fullnode.testnet.sui.io",cd="https://fullnode.mainnet.sui.io",ld="http://127.0.0.1:3000",ud="http://127.0.0.1:3001",U_="https://sui-dev.m-safe.link",K_="http://13.56.226.148:81",V_="https://sui-preview.m-safe.link",W_="https://sui.m-safe.link",z_=new Map([["unit",{suiClient:{url:yc},backend:{url:ld},syncingURL:ud,network:"sui:testnet"}],["local",{suiClient:{url:yc},backend:{url:ld},syncingURL:ud,network:"sui:testnet"}],["dev",{suiClient:{url:yc},backend:{url:U_},syncingURL:K_,network:"sui:testnet"}],["prev",{suiClient:{url:cd},backend:{url:V_},syncingURL:"",network:"sui:mainnet"}],["prod",{suiClient:{url:cd},backend:{url:W_},syncingURL:"",network:"sui:mainnet"}]]);function dd(t,e){let i=z_.get(t);if(!i)throw new Error("Unknown environment");return e?.suiClient?.url&&(i.suiClient.url=e.suiClient.url),e?.backend?.url&&(i.backend.url=e.backend.url),i}var bs=class t{backend;suiClient;config;_wallet;constructor(e){this.backend=e.backend,this.suiClient=e.suiClient,this.config=e.config}static async New(e,i){let n=dd(e,i),r=new G_.SuiClient(n.suiClient),o=new _c(n.backend.url);return new t({backend:o,suiClient:r,config:n})}connectWallet(e){this._wallet=e}get wallet(){if(!this._wallet)throw new Error("wallet not connected");return this._wallet}set wallet(e){this._wallet=e}};var wc=class t{constructor(e){this.globals=e}_creationHelper;_publicKeyHelper;static async New(e,i){let n=await bs.New(e,i);return new t(n)}async connectWallet(e){if(e.jwtToken&&await this.backend.verifyToken(e.jwtToken))return this.globals.wallet=e.wallet,this.backend.setJWTToken(e.jwtToken),e.jwtToken;let i=await this.authSign(e.wallet);return this.globals.wallet=e.wallet,this.backend.setJWTToken(i),i}async authSign(e){let i=vc.SigningMessageHelper.loginMessageWithTimestamp(new Date().toUTCString()),n=await e.signPersonalMessage({messageStr:i});return this.backend.authSign({address:await e.address(),message:i,signature:n.signature,walletType:e.walletType})}async userInfo(){return this.globals.backend.getUserInfo()}async ownedMSafe(e){return this.globals.backend.getOwnedMSafeByStatus({status:vc.UserMSafeStatus.active,pagination:e})}async createAccount(e){return this.creationHelper.submitMSafeCreation(e)}getMSafeAccount(e){return new hr(this.globals,e)}async getMSafeAccountFromAddress(e){let i=await this.backend.getMSafeAccountInfo(e);return new hr(this.globals,i)}get creationHelper(){return this._creationHelper||(this._creationHelper=new mr(this.globals,this.publicKeyHelper)),this._creationHelper}get publicKeyHelper(){return this._publicKeyHelper||(this._publicKeyHelper=new mc(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 gr(this.globals)}get Invitation(){return new vs(this.globals)}get Report(){return new gc(this.globals)}async walletAddress(){return this.wallet.address()}};
|
|
2053
|
+
`);var Jo=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Gp=new Set,_u=typeof process=="object"&&process?process:{},Hp=(t,e,i,n)=>{typeof _u.emitWarning=="function"?_u.emitWarning(t,e,i,n):console.error(`[${i}] ${e}: ${t}`)},Pa=globalThis.AbortController,zp=globalThis.AbortSignal;if(typeof Pa>"u"){zp=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(n,r){this._onabort.push(r)}},Pa=class{constructor(){e()}signal=new zp;abort(n){if(!this.signal.aborted){this.signal.reason=n,this.signal.aborted=!0;for(let r of this.signal._onabort)r(n);this.signal.onabort?.(n)}}};let t=_u.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",e=()=>{t&&(t=!1,Hp("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 M1=t=>!Gp.has(t),T4=Symbol("type"),Dn=t=>t&&t===Math.floor(t)&&t>0&&isFinite(t),Zp=t=>Dn(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)}},bu=class t{heap;length;static#c=!1;static create(e){let i=Zp(e);if(!i)return[];t.#c=!0;let n=new t(e,i);return t.#c=!1,n}constructor(e,i){if(!t.#c)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new i(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},Da=class t{#c;#d;#b;#p;#O;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#m;#r;#i;#e;#l;#f;#a;#o;#g;#s;#k;#T;#_;#y;#S;#u;static unsafeExposeInternals(e){return{starts:e.#T,ttls:e.#_,sizes:e.#k,keyMap:e.#r,keyList:e.#i,valList:e.#e,next:e.#l,prev:e.#f,get head(){return e.#a},get tail(){return e.#o},free:e.#g,isBackgroundFetch:i=>e.#t(i),backgroundFetch:(i,n,r,o)=>e.#M(i,n,r,o),moveToTail:i=>e.#I(i),indexes:i=>e.#w(i),rindexes:i=>e.#v(i),isStale:i=>e.#h(i)}}get max(){return this.#c}get maxSize(){return this.#d}get calculatedSize(){return this.#m}get size(){return this.#n}get fetchMethod(){return this.#O}get dispose(){return this.#b}get disposeAfter(){return this.#p}constructor(e){let{max:i=0,ttl:n,ttlResolution:r=1,ttlAutopurge:o,updateAgeOnGet:s,updateAgeOnHas:a,allowStale:l,dispose:u,disposeAfter:h,noDisposeOnSet:y,noUpdateTTL:v,maxSize:C=0,maxEntrySize:O=0,sizeCalculation:P,fetchMethod:j,noDeleteOnFetchRejection:B,noDeleteOnStaleGet:D,allowStaleOnFetchRejection:q,allowStaleOnFetchAbort:K,ignoreFetchAbort:Z}=e;if(i!==0&&!Dn(i))throw new TypeError("max option must be a nonnegative integer");let G=i?Zp(i):Array;if(!G)throw new Error("invalid max value: "+i);if(this.#c=i,this.#d=C,this.maxEntrySize=O||this.#d,this.sizeCalculation=P,this.sizeCalculation){if(!this.#d&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(j!==void 0&&typeof j!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#O=j,this.#S=!!j,this.#r=new Map,this.#i=new Array(i).fill(void 0),this.#e=new Array(i).fill(void 0),this.#l=new G(i),this.#f=new G(i),this.#a=0,this.#o=0,this.#g=bu.create(i),this.#n=0,this.#m=0,typeof u=="function"&&(this.#b=u),typeof h=="function"?(this.#p=h,this.#s=[]):(this.#p=void 0,this.#s=void 0),this.#y=!!this.#b,this.#u=!!this.#p,this.noDisposeOnSet=!!y,this.noUpdateTTL=!!v,this.noDeleteOnFetchRejection=!!B,this.allowStaleOnFetchRejection=!!q,this.allowStaleOnFetchAbort=!!K,this.ignoreFetchAbort=!!Z,this.maxEntrySize!==0){if(this.#d!==0&&!Dn(this.#d))throw new TypeError("maxSize must be a positive integer if specified");if(!Dn(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#R()}if(this.allowStale=!!l,this.noDeleteOnStaleGet=!!D,this.updateAgeOnGet=!!s,this.updateAgeOnHas=!!a,this.ttlResolution=Dn(r)||r===0?r:1,this.ttlAutopurge=!!o,this.ttl=n||0,this.ttl){if(!Dn(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#E()}if(this.#c===0&&this.ttl===0&&this.#d===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#c&&!this.#d){let J="LRU_CACHE_UNBOUNDED";M1(J)&&(Gp.add(J),Hp("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",J,t))}}getRemainingTTL(e){return this.#r.has(e)?1/0:0}#E(){let e=new Xr(this.#c),i=new Xr(this.#c);this.#_=e,this.#T=i,this.#j=(o,s,a=Jo.now())=>{if(i[o]=s!==0?a:0,e[o]=s,s!==0&&this.ttlAutopurge){let l=setTimeout(()=>{this.#h(o)&&this.delete(this.#i[o])},s+1);l.unref&&l.unref()}},this.#x=o=>{i[o]=e[o]!==0?Jo.now():0},this.#C=(o,s)=>{if(e[s]){let a=e[s],l=i[s];o.ttl=a,o.start=l,o.now=n||r();let u=o.now-l;o.remainingTTL=a-u}};let n=0,r=()=>{let o=Jo.now();if(this.ttlResolution>0){n=o;let s=setTimeout(()=>n=0,this.ttlResolution);s.unref&&s.unref()}return o};this.getRemainingTTL=o=>{let s=this.#r.get(o);if(s===void 0)return 0;let a=e[s],l=i[s];if(a===0||l===0)return 1/0;let u=(n||r())-l;return a-u},this.#h=o=>e[o]!==0&&i[o]!==0&&(n||r())-i[o]>e[o]}#x=()=>{};#C=()=>{};#j=()=>{};#h=()=>!1;#R(){let e=new Xr(this.#c);this.#m=0,this.#k=e,this.#A=i=>{this.#m-=e[i],e[i]=0},this.#B=(i,n,r,o)=>{if(this.#t(n))return 0;if(!Dn(r))if(o){if(typeof o!="function")throw new TypeError("sizeCalculation must be a function");if(r=o(n,i),!Dn(r))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return r},this.#P=(i,n,r)=>{if(e[i]=n,this.#d){let o=this.#d-e[i];for(;this.#m>o;)this.#D(!0)}this.#m+=e[i],r&&(r.entrySize=n,r.totalCalculatedSize=this.#m)}}#A=e=>{};#P=(e,i,n)=>{};#B=(e,i,n,r)=>{if(n||r)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#w({allowStale:e=this.allowStale}={}){if(this.#n)for(let i=this.#o;!(!this.#N(i)||((e||!this.#h(i))&&(yield i),i===this.#a));)i=this.#f[i]}*#v({allowStale:e=this.allowStale}={}){if(this.#n)for(let i=this.#a;!(!this.#N(i)||((e||!this.#h(i))&&(yield i),i===this.#o));)i=this.#l[i]}#N(e){return e!==void 0&&this.#r.get(this.#i[e])===e}*entries(){for(let e of this.#w())this.#e[e]!==void 0&&this.#i[e]!==void 0&&!this.#t(this.#e[e])&&(yield[this.#i[e],this.#e[e]])}*rentries(){for(let e of this.#v())this.#e[e]!==void 0&&this.#i[e]!==void 0&&!this.#t(this.#e[e])&&(yield[this.#i[e],this.#e[e]])}*keys(){for(let e of this.#w()){let i=this.#i[e];i!==void 0&&!this.#t(this.#e[e])&&(yield i)}}*rkeys(){for(let e of this.#v()){let i=this.#i[e];i!==void 0&&!this.#t(this.#e[e])&&(yield i)}}*values(){for(let e of this.#w())this.#e[e]!==void 0&&!this.#t(this.#e[e])&&(yield this.#e[e])}*rvalues(){for(let e of this.#v())this.#e[e]!==void 0&&!this.#t(this.#e[e])&&(yield this.#e[e])}[Symbol.iterator](){return this.entries()}find(e,i={}){for(let n of this.#w()){let r=this.#e[n],o=this.#t(r)?r.__staleWhileFetching:r;if(o!==void 0&&e(o,this.#i[n],this))return this.get(this.#i[n],i)}}forEach(e,i=this){for(let n of this.#w()){let r=this.#e[n],o=this.#t(r)?r.__staleWhileFetching:r;o!==void 0&&e.call(i,o,this.#i[n],this)}}rforEach(e,i=this){for(let n of this.#v()){let r=this.#e[n],o=this.#t(r)?r.__staleWhileFetching:r;o!==void 0&&e.call(i,o,this.#i[n],this)}}purgeStale(){let e=!1;for(let i of this.#v({allowStale:!0}))this.#h(i)&&(this.delete(this.#i[i]),e=!0);return e}dump(){let e=[];for(let i of this.#w({allowStale:!0})){let n=this.#i[i],r=this.#e[i],o=this.#t(r)?r.__staleWhileFetching:r;if(o===void 0||n===void 0)continue;let s={value:o};if(this.#_&&this.#T){s.ttl=this.#_[i];let a=Jo.now()-this.#T[i];s.start=Math.floor(Date.now()-a)}this.#k&&(s.size=this.#k[i]),e.unshift([n,s])}return e}load(e){this.clear();for(let[i,n]of e){if(n.start){let r=Date.now()-n.start;n.start=Jo.now()-r}this.set(i,n.value,n)}}set(e,i,n={}){if(i===void 0)return this.delete(e),this;let{ttl:r=this.ttl,start:o,noDisposeOnSet:s=this.noDisposeOnSet,sizeCalculation:a=this.sizeCalculation,status:l}=n,{noUpdateTTL:u=this.noUpdateTTL}=n,h=this.#B(e,i,n.size||0,a);if(this.maxEntrySize&&h>this.maxEntrySize)return l&&(l.set="miss",l.maxEntrySizeExceeded=!0),this.delete(e),this;let y=this.#n===0?void 0:this.#r.get(e);if(y===void 0)y=this.#n===0?this.#o:this.#g.length!==0?this.#g.pop():this.#n===this.#c?this.#D(!1):this.#n,this.#i[y]=e,this.#e[y]=i,this.#r.set(e,y),this.#l[this.#o]=y,this.#f[y]=this.#o,this.#o=y,this.#n++,this.#P(y,h,l),l&&(l.set="add"),u=!1;else{this.#I(y);let v=this.#e[y];if(i!==v){if(this.#S&&this.#t(v)?v.__abortController.abort(new Error("replaced")):s||(this.#y&&this.#b?.(v,e,"set"),this.#u&&this.#s?.push([v,e,"set"])),this.#A(y),this.#P(y,h,l),this.#e[y]=i,l){l.set="replace";let C=v&&this.#t(v)?v.__staleWhileFetching:v;C!==void 0&&(l.oldValue=C)}}else l&&(l.set="update")}if(r!==0&&!this.#_&&this.#E(),this.#_&&(u||this.#j(y,r,o),l&&this.#C(l,y)),!s&&this.#u&&this.#s){let v=this.#s,C;for(;C=v?.shift();)this.#p?.(...C)}return this}pop(){try{for(;this.#n;){let e=this.#e[this.#a];if(this.#D(!0),this.#t(e)){if(e.__staleWhileFetching)return e.__staleWhileFetching}else if(e!==void 0)return e}}finally{if(this.#u&&this.#s){let e=this.#s,i;for(;i=e?.shift();)this.#p?.(...i)}}}#D(e){let i=this.#a,n=this.#i[i],r=this.#e[i];return this.#S&&this.#t(r)?r.__abortController.abort(new Error("evicted")):(this.#y||this.#u)&&(this.#y&&this.#b?.(r,n,"evict"),this.#u&&this.#s?.push([r,n,"evict"])),this.#A(i),e&&(this.#i[i]=void 0,this.#e[i]=void 0,this.#g.push(i)),this.#n===1?(this.#a=this.#o=0,this.#g.length=0):this.#a=this.#l[i],this.#r.delete(n),this.#n--,i}has(e,i={}){let{updateAgeOnHas:n=this.updateAgeOnHas,status:r}=i,o=this.#r.get(e);if(o!==void 0){let s=this.#e[o];if(this.#t(s)&&s.__staleWhileFetching===void 0)return!1;if(this.#h(o))r&&(r.has="stale",this.#C(r,o));else return n&&this.#x(o),r&&(r.has="hit",this.#C(r,o)),!0}else r&&(r.has="miss");return!1}peek(e,i={}){let{allowStale:n=this.allowStale}=i,r=this.#r.get(e);if(r!==void 0&&(n||!this.#h(r))){let o=this.#e[r];return this.#t(o)?o.__staleWhileFetching:o}}#M(e,i,n,r){let o=i===void 0?void 0:this.#e[i];if(this.#t(o))return o;let s=new Pa,{signal:a}=n;a?.addEventListener("abort",()=>s.abort(a.reason),{signal:s.signal});let l={signal:s.signal,options:n,context:r},u=(P,j=!1)=>{let{aborted:B}=s.signal,D=n.ignoreFetchAbort&&P!==void 0;if(n.status&&(B&&!j?(n.status.fetchAborted=!0,n.status.fetchError=s.signal.reason,D&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),B&&!D&&!j)return y(s.signal.reason);let q=C;return this.#e[i]===C&&(P===void 0?q.__staleWhileFetching?this.#e[i]=q.__staleWhileFetching:this.delete(e):(n.status&&(n.status.fetchUpdated=!0),this.set(e,P,l.options))),P},h=P=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=P),y(P)),y=P=>{let{aborted:j}=s.signal,B=j&&n.allowStaleOnFetchAbort,D=B||n.allowStaleOnFetchRejection,q=D||n.noDeleteOnFetchRejection,K=C;if(this.#e[i]===C&&(!q||K.__staleWhileFetching===void 0?this.delete(e):B||(this.#e[i]=K.__staleWhileFetching)),D)return n.status&&K.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),K.__staleWhileFetching;if(K.__returned===K)throw P},v=(P,j)=>{let B=this.#O?.(e,o,l);B&&B instanceof Promise&&B.then(D=>P(D),j),s.signal.addEventListener("abort",()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(P(),n.allowStaleOnFetchAbort&&(P=D=>u(D,!0)))})};n.status&&(n.status.fetchDispatched=!0);let C=new Promise(v).then(u,h),O=Object.assign(C,{__abortController:s,__staleWhileFetching:o,__returned:void 0});return i===void 0?(this.set(e,O,{...l.options,status:void 0}),i=this.#r.get(e)):this.#e[i]=O,O}#t(e){if(!this.#S)return!1;let i=e;return!!i&&i instanceof Promise&&i.hasOwnProperty("__staleWhileFetching")&&i.__abortController instanceof Pa}async fetch(e,i={}){let{allowStale:n=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,ttl:s=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:l=0,sizeCalculation:u=this.sizeCalculation,noUpdateTTL:h=this.noUpdateTTL,noDeleteOnFetchRejection:y=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:v=this.allowStaleOnFetchRejection,ignoreFetchAbort:C=this.ignoreFetchAbort,allowStaleOnFetchAbort:O=this.allowStaleOnFetchAbort,context:P,forceRefresh:j=!1,status:B,signal:D}=i;if(!this.#S)return B&&(B.fetch="get"),this.get(e,{allowStale:n,updateAgeOnGet:r,noDeleteOnStaleGet:o,status:B});let q={allowStale:n,updateAgeOnGet:r,noDeleteOnStaleGet:o,ttl:s,noDisposeOnSet:a,size:l,sizeCalculation:u,noUpdateTTL:h,noDeleteOnFetchRejection:y,allowStaleOnFetchRejection:v,allowStaleOnFetchAbort:O,ignoreFetchAbort:C,status:B,signal:D},K=this.#r.get(e);if(K===void 0){B&&(B.fetch="miss");let Z=this.#M(e,K,q,P);return Z.__returned=Z}else{let Z=this.#e[K];if(this.#t(Z)){let A=n&&Z.__staleWhileFetching!==void 0;return B&&(B.fetch="inflight",A&&(B.returnedStale=!0)),A?Z.__staleWhileFetching:Z.__returned=Z}let G=this.#h(K);if(!j&&!G)return B&&(B.fetch="hit"),this.#I(K),r&&this.#x(K),B&&this.#C(B,K),Z;let J=this.#M(e,K,q,P),I=J.__staleWhileFetching!==void 0&&n;return B&&(B.fetch=G?"stale":"refresh",I&&G&&(B.returnedStale=!0)),I?J.__staleWhileFetching:J.__returned=J}}get(e,i={}){let{allowStale:n=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,status:s}=i,a=this.#r.get(e);if(a!==void 0){let l=this.#e[a],u=this.#t(l);return s&&this.#C(s,a),this.#h(a)?(s&&(s.get="stale"),u?(s&&n&&l.__staleWhileFetching!==void 0&&(s.returnedStale=!0),n?l.__staleWhileFetching:void 0):(o||this.delete(e),s&&n&&(s.returnedStale=!0),n?l:void 0)):(s&&(s.get="hit"),u?l.__staleWhileFetching:(this.#I(a),r&&this.#x(a),l))}else s&&(s.get="miss")}#F(e,i){this.#f[i]=e,this.#l[e]=i}#I(e){e!==this.#o&&(e===this.#a?this.#a=this.#l[e]:this.#F(this.#f[e],this.#l[e]),this.#F(this.#o,e),this.#o=e)}delete(e){let i=!1;if(this.#n!==0){let n=this.#r.get(e);if(n!==void 0)if(i=!0,this.#n===1)this.clear();else{this.#A(n);let r=this.#e[n];this.#t(r)?r.__abortController.abort(new Error("deleted")):(this.#y||this.#u)&&(this.#y&&this.#b?.(r,e,"delete"),this.#u&&this.#s?.push([r,e,"delete"])),this.#r.delete(e),this.#i[n]=void 0,this.#e[n]=void 0,n===this.#o?this.#o=this.#f[n]:n===this.#a?this.#a=this.#l[n]:(this.#l[this.#f[n]]=this.#l[n],this.#f[this.#l[n]]=this.#f[n]),this.#n--,this.#g.push(n)}}if(this.#u&&this.#s?.length){let n=this.#s,r;for(;r=n?.shift();)this.#p?.(...r)}return i}clear(){for(let e of this.#v({allowStale:!0})){let i=this.#e[e];if(this.#t(i))i.__abortController.abort(new Error("deleted"));else{let n=this.#i[e];this.#y&&this.#b?.(i,n,"delete"),this.#u&&this.#s?.push([i,n,"delete"])}}if(this.#r.clear(),this.#e.fill(void 0),this.#i.fill(void 0),this.#_&&this.#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.#m=0,this.#n=0,this.#u&&this.#s){let e=this.#s,i;for(;i=e?.shift();)this.#p?.(...i)}}};var le=we(Se(),1);var Ba=we(Xp(),1),ar=require("@mysten/sui.js/utils"),cr=require("@mysten/sui.js/transactions");var Yo=we(Se(),1),rm=require("@mysten/sui.js/transactions"),ii=we(Se(),1);var Mn=we(Se(),1),ki=we(Se(),1);var ts=we(Se(),1);var om=require("@mysten/sui.js/utils"),Na=require("@mysten/sui.js/transactions"),Fa=require("@mysten/sui.js/utils");var Cu=we(Se(),1),E1=Object.defineProperty,j1=(t,e,i)=>e in t?E1(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,Wi=(t,e,i)=>(j1(t,typeof e!="symbol"?e+"":e,i),i);var Ma=443636,Ea=-443636,vu="79226673515401279992447579055",ku="4295048016",B1=14,N1="59543866431248",F1="184467440737095516",R1="15793534762490258745",q1=class{generateMnemonic(t=24){return Vp(Wp,t===12?128:256)}getKeypairFromMnemonics(t,e={}){let i=this.getDerivePath(e);return em.Ed25519Keypair.deriveKeypair(t,i)}getDerivePath(t={}){let{accountIndex:e=0,isExternal:i=!1,addressIndex:n=0}=t;return`m/44'/784'/${e}'/${i?1:0}'/${n}'`}},es=class{constructor(t){this.sdk=t,Wi(this,"_lru"),Wi(this,"_fetching",{})}async getCacheOrSet(t,e,i=0){var n;let r=this._lru||(this._lru=new Da({max:100}));if(r.has(t))return r.get(t);let s=await((n=this._fetching)[t]||(n[t]=e()));return delete this._fetching[t],r.set(t,s,{ttl:i}),s}get provider(){return this.sdk.provider}get math(){return this.sdk.math}get account(){return this.sdk.account}get network(){return this.sdk.network}get contract(){return this.sdk.contract}get nft(){return this.sdk.nft}get coin(){return this.sdk.coin}get trade(){return this.sdk.trade}get pool(){return this.sdk.pool}};function L1(t){if("reference"in t)return t.reference;let e=xu(t);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:im(t)}function qa(t){var e,i;return"objectId"in t?t.objectId:(i=(e=L1(t))==null?void 0:e.objectId)!=null?i:nm(t)}function zi(t){var e;return"fields"in t?t.fields:(e=tm(t))==null?void 0:e.fields}function tm(t){let e="data"in t?xu(t):t;if(!(!e||!$1(e)||e.content.dataType!=="moveObject"))return e.content}function $1(t){return t.content!==void 0}function xu(t){return t.data}function im(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 nm(t){if(t.error&&"object_id"in t.error&&!("version"in t.error)&&!("digest"in t.error))return t.error.object_id}function U1(t){return t.data!==void 0}function K1(t){var e;let i=U1(t)?t.data:t;return!i?.type&&"data"in t?((e=i?.content)==null?void 0:e.dataType)==="package"?"package":Ra(t):i?.type}function Ra(t){var e;return(e=tm(t))==null?void 0:e.type}function V1(t){var e;return(e=xu(t))==null?void 0:e.owner}var Qo=async(t,e,i)=>{let r=e.length;if(r>50){let o=[],s=0,a=Math.ceil(r/50);for(s;s<a;s++)o.push(t.multiGetObjects({ids:e.slice(s*50,(s+1)*50),options:i}));return(await Promise.all(o)).flat()}return await t.multiGetObjects({ids:e,options:i})},W1=class extends es{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 Qo(this.provider,Object.values(e),{showContent:!0})).map(n=>{let r=zi(n),o=qa(n),s=Ra(n);return{objectId:o,type:s.split("<")[1].slice(0,-1),fee:r.fee,tickSpacing:r.tick_spacing}})})}fetchJSON(){return this.getCacheOrSet("contract-json",async()=>await(await fetch("https://s3.amazonaws.com/app.turbos.finance/sdk/contract.json?t="+Date.now(),{method:"GET"})).json())}},Jp=new le.default(2).pow(new le.default(128)),z1=class{priceToSqrtPriceX64(t,e,i){return new le.default(new U(t).mul(U.pow(10,i-e)).sqrt().mul(U.pow(2,64)).floor().toFixed(0))}sqrtPriceX64ToPrice(t,e,i){return new U(t.toString()).mul(U.pow(2,-64)).pow(2).mul(U.pow(10,e-i))}priceToTickIndex(t,e,i){return this.sqrtPriceX64ToTickIndex(this.priceToSqrtPriceX64(t,e,i))}sqrtPriceX64ToTickIndex(t){if(t.gt(new le.default(vu))||t.lt(new le.default(ku)))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let e=t.bitLength()-1,i=new le.default(e-64),n=this.signedShiftLeft(i,32,128),r=new le.default("8000000000000000","hex"),o=0,s=new le.default(0),a=e>=64?t.shrn(e-63):t.shln(63-e);for(;r.gt(new le.default(0))&&o<B1;){a=a.mul(a);let C=a.shrn(127);a=a.shrn(63+C.toNumber()),s=s.add(r.mul(C)),r=r.shrn(1),o+=1}let l=s.shrn(32),h=n.add(l).mul(new le.default(N1)),y=this.signedShiftRight(h.sub(new le.default(F1)),64,128).toNumber(),v=this.signedShiftRight(h.add(new le.default(R1)),64,128).toNumber();return y==v?y:this.tickIndexToSqrtPriceX64(v).lte(t)?v:y}tickIndexToSqrtPriceX64(t){return t>0?new le.default(this.tickIndexToSqrtPricePositive(t)):new le.default(this.tickIndexToSqrtPriceNegative(t))}tickIndexToPrice(t,e,i){return this.sqrtPriceX64ToPrice(this.tickIndexToSqrtPriceX64(t),e,i)}toX64_Decimal(t){return t.mul(U.pow(2,64))}fromX64_Decimal(t){return t.mul(U.pow(2,-64))}scaleDown(t,e){return new U(t).div(U.pow(10,e)).toString()}scaleUp(t,e){return new U(t).mul(U.pow(10,e)).toString()}bitsToNumber(t,e=32){return Ba.default.toNumber(Ba.default.asIntN(e,Ba.default.BigInt(t)))}subUnderflowU128(t,e){return t.add(Jp).sub(e).mod(Jp)}tickIndexToSqrtPricePositive(t){let e;return t&1?e=new le.default("79232123823359799118286999567"):e=new le.default("79228162514264337593543950336"),t&2&&(e=this.signedShiftRight(e.mul(new le.default("79236085330515764027303304731")),96,256)),t&4&&(e=this.signedShiftRight(e.mul(new le.default("79244008939048815603706035061")),96,256)),t&8&&(e=this.signedShiftRight(e.mul(new le.default("79259858533276714757314932305")),96,256)),t&16&&(e=this.signedShiftRight(e.mul(new le.default("79291567232598584799939703904")),96,256)),t&32&&(e=this.signedShiftRight(e.mul(new le.default("79355022692464371645785046466")),96,256)),t&64&&(e=this.signedShiftRight(e.mul(new le.default("79482085999252804386437311141")),96,256)),t&128&&(e=this.signedShiftRight(e.mul(new le.default("79736823300114093921829183326")),96,256)),t&256&&(e=this.signedShiftRight(e.mul(new le.default("80248749790819932309965073892")),96,256)),t&512&&(e=this.signedShiftRight(e.mul(new le.default("81282483887344747381513967011")),96,256)),t&1024&&(e=this.signedShiftRight(e.mul(new le.default("83390072131320151908154831281")),96,256)),t&2048&&(e=this.signedShiftRight(e.mul(new le.default("87770609709833776024991924138")),96,256)),t&4096&&(e=this.signedShiftRight(e.mul(new le.default("97234110755111693312479820773")),96,256)),t&8192&&(e=this.signedShiftRight(e.mul(new le.default("119332217159966728226237229890")),96,256)),t&16384&&(e=this.signedShiftRight(e.mul(new le.default("179736315981702064433883588727")),96,256)),t&32768&&(e=this.signedShiftRight(e.mul(new le.default("407748233172238350107850275304")),96,256)),t&65536&&(e=this.signedShiftRight(e.mul(new le.default("2098478828474011932436660412517")),96,256)),t&131072&&(e=this.signedShiftRight(e.mul(new le.default("55581415166113811149459800483533")),96,256)),t&262144&&(e=this.signedShiftRight(e.mul(new le.default("38992368544603139932233054999993551")),96,256)),this.signedShiftRight(e,32,256)}tickIndexToSqrtPriceNegative(t){let e=Math.abs(t),i;return e&1?i=new le.default("18445821805675392311"):i=new le.default("18446744073709551616"),e&2&&(i=this.signedShiftRight(i.mul(new le.default("18444899583751176498")),64,256)),e&4&&(i=this.signedShiftRight(i.mul(new le.default("18443055278223354162")),64,256)),e&8&&(i=this.signedShiftRight(i.mul(new le.default("18439367220385604838")),64,256)),e&16&&(i=this.signedShiftRight(i.mul(new le.default("18431993317065449817")),64,256)),e&32&&(i=this.signedShiftRight(i.mul(new le.default("18417254355718160513")),64,256)),e&64&&(i=this.signedShiftRight(i.mul(new le.default("18387811781193591352")),64,256)),e&128&&(i=this.signedShiftRight(i.mul(new le.default("18329067761203520168")),64,256)),e&256&&(i=this.signedShiftRight(i.mul(new le.default("18212142134806087854")),64,256)),e&512&&(i=this.signedShiftRight(i.mul(new le.default("17980523815641551639")),64,256)),e&1024&&(i=this.signedShiftRight(i.mul(new le.default("17526086738831147013")),64,256)),e&2048&&(i=this.signedShiftRight(i.mul(new le.default("16651378430235024244")),64,256)),e&4096&&(i=this.signedShiftRight(i.mul(new le.default("15030750278693429944")),64,256)),e&8192&&(i=this.signedShiftRight(i.mul(new le.default("12247334978882834399")),64,256)),e&16384&&(i=this.signedShiftRight(i.mul(new le.default("8131365268884726200")),64,256)),e&32768&&(i=this.signedShiftRight(i.mul(new le.default("3584323654723342297")),64,256)),e&65536&&(i=this.signedShiftRight(i.mul(new le.default("696457651847595233")),64,256)),e&131072&&(i=this.signedShiftRight(i.mul(new le.default("26294789957452057")),64,256)),e&262144&&(i=this.signedShiftRight(i.mul(new le.default("37481735321082")),64,256)),i}signedShiftLeft(t,e,i){let n=t.toTwos(i).shln(e);return n.imaskn(i+1),n.fromTwos(i)}signedShiftRight(t,e,i){let n=t.toTwos(i).shrn(e);return n.imaskn(i-e+1),n.fromTwos(i-e)}},Tu=(t,e)=>{let i=qa(t);if(im(t))throw new Error(`${e}(${i}) had been deleted`);if(nm(t))throw new Error(`${e}(${i}) is not found`);return!0},Jr=60*1e3,G1=class extends es{async getPools(t=!1){let e=await this.contract.getConfig(),i=[],n;do n=await this.provider.getDynamicFields({parentId:e.PoolTableId,cursor:n?.nextCursor,limit:15}),i.push(...n.data.map(a=>a.objectId));while(n.hasNextPage);if(!i.length)return[];let o=(await Qo(this.provider,i,{showContent:!0})).map(a=>zi(a).value.fields.pool_id);if(!o.length)return[];let s=await Qo(this.provider,o,{showContent:!0});return t||(s=s.filter(a=>zi(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 Tu(e,"pool"),this.parsePool(e)},1500)}async createPool(t){let{fee:e,address:i,tickLower:n,tickUpper:r,sqrtPrice:o,slippage:s,coinTypeA:a,coinTypeB:l}=t,u=await this.contract.getConfig(),h=new U(t.amountA),y=new U(t.amountB),[v,C]=await Promise.all([this.coin.selectTradeCoins(i,a,h),this.coin.selectTradeCoins(i,l,y)]),O=t.txb||new cr.TransactionBlock,P=v.length>0?this.coin.convertTradeCoins(O,v,a,h):[this.coin.zero(a,O)],j=C.length>0?this.coin.convertTradeCoins(O,C,l,y):[this.coin.zero(l,O)];return O.moveCall({target:`${u.PackageId}::pool_factory::deploy_pool_and_mint`,typeArguments:[a,l,e.type],arguments:[O.object(u.PoolConfig),O.object(e.objectId),O.pure(o,"u128"),O.object(u.Positions),O.makeMoveVec({objects:P}),O.makeMoveVec({objects:j}),O.pure(Math.abs(n).toFixed(0),"u32"),O.pure(n<0,"bool"),O.pure(Math.abs(r).toFixed(0),"u32"),O.pure(r<0,"bool"),O.pure(h.toFixed(0),"u64"),O.pure(y.toFixed(0),"u64"),O.pure(this.getMinimumAmountBySlippage(h,s),"u64"),O.pure(this.getMinimumAmountBySlippage(y,s),"u64"),O.pure(i,"address"),O.pure(Date.now()+(t.deadline||Jr),"u64"),O.object(ar.SUI_CLOCK_OBJECT_ID),O.object(u.Versioned)]}),O}async addLiquidity(t){let{address:e,tickLower:i,tickUpper:n,slippage:r,pool:o}=t,s=await this.contract.getConfig(),a=await this.getPoolTypeArguments(o),[l,u]=a,[h,y]=await Promise.all([this.coin.getMetadata(l),this.coin.getMetadata(u)]);if(!h||!y)throw new Error("Invalid coin type");let v=new U(t.amountA),C=new U(t.amountB),[O,P]=await Promise.all([this.coin.selectTradeCoins(e,l,v),this.coin.selectTradeCoins(e,u,C)]),j=t.txb||new cr.TransactionBlock,B=O.length>0?this.coin.convertTradeCoins(j,O,l,v):[this.coin.zero(l,j)],D=P.length>0?this.coin.convertTradeCoins(j,P,u,C):[this.coin.zero(u,j)];return j.moveCall({target:`${s.PackageId}::position_manager::mint`,typeArguments:a,arguments:[j.object(o),j.object(s.Positions),j.makeMoveVec({objects:B}),j.makeMoveVec({objects:D}),j.pure(Math.abs(i).toFixed(0),"u32"),j.pure(i<0,"bool"),j.pure(Math.abs(n).toFixed(0),"u32"),j.pure(n<0,"bool"),j.pure(v.toFixed(0),"u64"),j.pure(C.toFixed(0),"u64"),j.pure(this.getMinimumAmountBySlippage(v,r),"u64"),j.pure(this.getMinimumAmountBySlippage(C,r),"u64"),j.pure(e,"address"),j.pure(Date.now()+(t.deadline||Jr),"u64"),j.object(ar.SUI_CLOCK_OBJECT_ID),j.object(s.Versioned)]}),j}async increaseLiquidity(t){let{pool:e,slippage:i,address:n,nft:r}=t,o=await this.contract.getConfig(),s=new U(t.amountA),a=new U(t.amountB),l=await this.getPoolTypeArguments(e),[u,h]=l,[y,v]=await Promise.all([this.coin.selectTradeCoins(n,u,s),this.coin.selectTradeCoins(n,h,a)]),C=t.txb||new cr.TransactionBlock,O=y.length>0?this.coin.convertTradeCoins(C,y,u,s):[this.coin.zero(u,C)],P=v.length>0?this.coin.convertTradeCoins(C,v,h,a):[this.coin.zero(h,C)];return C.moveCall({target:`${o.PackageId}::position_manager::increase_liquidity`,typeArguments:l,arguments:[C.object(e),C.object(o.Positions),C.makeMoveVec({objects:O}),C.makeMoveVec({objects:P}),C.object(r),C.pure(s.toFixed(0),"u64"),C.pure(a.toFixed(0),"u64"),C.pure(this.getMinimumAmountBySlippage(s,i),"u64"),C.pure(this.getMinimumAmountBySlippage(a,i),"u64"),C.pure(Date.now()+(t.deadline||Jr*3),"u64"),C.object(ar.SUI_CLOCK_OBJECT_ID),C.object(o.Versioned)]}),C}async decreaseLiquidity(t){let{slippage:e,nft:i,pool:n,decreaseLiquidity:r}=t,o=new U(t.amountA),s=new U(t.amountB),a=await this.contract.getConfig(),l=await this.getPoolTypeArguments(n),u=t.txb||new cr.TransactionBlock;return u.moveCall({target:`${a.PackageId}::position_manager::decrease_liquidity`,typeArguments:l,arguments:[u.object(n),u.object(a.Positions),u.object(i),u.pure(new Yo.default(r).toString(),"u128"),u.pure(this.getMinimumAmountBySlippage(o,e),"u64"),u.pure(this.getMinimumAmountBySlippage(s,e),"u64"),u.pure(Date.now()+(t.deadline||Jr*3),"u64"),u.object(ar.SUI_CLOCK_OBJECT_ID),u.object(a.Versioned)]}),u}async removeLiquidity(t){let e=await this.decreaseLiquidity(t);return e=await this.collectFee({txb:e,...t}),e=await this.collectReward({txb:e,...t}),e=await this.nft.burn({txb:e,nft:t.nft,pool:t.pool}),e}async collectFee(t){let{pool:e,nft:i,address:n,collectAmountA:r,collectAmountB:o}=t,s=t.txb||new cr.TransactionBlock;if(Number(r)===0&&Number(o)===0)return s;let a=await this.contract.getConfig(),l=await this.getPoolTypeArguments(e);return s.moveCall({target:`${a.PackageId}::position_manager::collect`,typeArguments:l,arguments:[s.object(e),s.object(a.Positions),s.object(i),s.pure(r,"u64"),s.pure(o,"u64"),s.pure(n),s.pure(Date.now()+(t.deadline||Jr*3),"u64"),s.object(ar.SUI_CLOCK_OBJECT_ID),s.object(a.Versioned)]}),s}async collectReward(t){let{pool:e,nft:i,rewardAmounts:n,address:r}=t,o=t.txb||new cr.TransactionBlock,s=await this.contract.getConfig(),a=await this.getPoolTypeArguments(e);return(await this.getPool(e)).reward_infos.forEach((u,h)=>{o.moveCall({target:`${s.PackageId}::position_manager::collect_reward`,typeArguments:[...a,u.fields.vault_coin_type],arguments:[o.object(e),o.object(s.Positions),o.object(i),o.object(u.fields.vault),o.pure(h,"u64"),o.pure(n[h],"u64"),o.pure(r),o.pure(Date.now()+(t.deadline||Jr*3),"u64"),o.object(ar.SUI_CLOCK_OBJECT_ID),o.object(s.Versioned)]})}),o}getTokenAmountsFromLiquidity(t){let e=new U((t.liquidity||new Yo.default(1e8)).toString()),i=new U(t.currentSqrtPrice.toString()),n=new U(t.lowerSqrtPrice.toString()),r=new U(t.upperSqrtPrice.toString()),o,s;t.currentSqrtPrice.lt(t.lowerSqrtPrice)?(o=this.math.toX64_Decimal(e).mul(r.sub(n)).div(n.mul(r)),s=new U(0)):t.currentSqrtPrice.lt(t.upperSqrtPrice)?(o=this.math.toX64_Decimal(e).mul(r.sub(i)).div(i.mul(r)),s=this.math.fromX64_Decimal(e.mul(i.sub(n)))):(o=new U(0),s=this.math.fromX64_Decimal(e.mul(r.sub(n))));let a=t.ceil!==!1?"ceil":"floor";return[new Yo.default(o[a]().toString()),new Yo.default(s[a]().toString())]}async getPoolTypeArguments(t){return this.getCacheOrSet("pool-type-"+t,async()=>(await this.getPool(t)).types)}parsePoolType(t,e){var i;let n=((i=t.replace(">","").split("<")[1])==null?void 0:i.split(/,\s*/))||[];if(e!==void 0&&e!==n.length)throw new Error("Invalid pool type");return n}async getFixedLiquidity(t){var e,i;let{coinTypeA:n,coinTypeB:r,amountA:o,amountB:s}=t,[a,l]=await Promise.all([this.coin.getMetadata(n),this.coin.getMetadata(r)]),u=new U(this.math.scaleDown(o,a.decimals)).mul((e=t.priceA)!=null?e:1),h=new U(this.math.scaleDown(s,l.decimals)).mul((i=t.priceB)!=null?i:1);return{liquidityA:u.toString(),liquidityB:h.toString(),liquidity:u.plus(h).toString()}}parsePool(t){let e=zi(t),i=qa(t),n=K1(t),r=this.parsePoolType(n,3);return this.getCacheOrSet("pool-type-"+i,async()=>r),{...e,objectId:i,type:n,types:r}}getMinimumAmountBySlippage(t,e){let i=new U(t),n=new U(1).minus(new U(e).div(100));if(n.lte(0)||n.gt(1))throw new Error("invalid slippage range");return i.mul(n).toFixed(0)}},H1=(t,e)=>{let{pool:i,position:n,tickLowerDetail:r,tickUpperDetail:o}=e,s=new Mn.default(i.fee_growth_global_a),a=new Mn.default(n.fee_growth_inside_a),l=new Mn.default(n.tokens_owed_a),u=new Mn.default(i.fee_growth_global_b),h=new Mn.default(n.fee_growth_inside_b),y=new Mn.default(n.tokens_owed_b),v=new Mn.default(n.liquidity),C,O,P,j,B=t.bitsToNumber(i.tick_current_index.fields.bits),D=t.bitsToNumber(n.tick_lower_index.fields.bits),q=t.bitsToNumber(n.tick_upper_index.fields.bits);B<D?(C=t.subUnderflowU128(s,r.feeGrowthOutsideA),O=t.subUnderflowU128(u,r.feeGrowthOutsideB)):(C=r.feeGrowthOutsideA,O=r.feeGrowthOutsideB),B<q?(P=o.feeGrowthOutsideA,j=o.feeGrowthOutsideB):(P=t.subUnderflowU128(s,o.feeGrowthOutsideA),j=t.subUnderflowU128(u,o.feeGrowthOutsideB));let K=t.subUnderflowU128(t.subUnderflowU128(s,C),P),Z=t.subUnderflowU128(t.subUnderflowU128(u,O),j),G=t.subUnderflowU128(K,a).mul(v).shrn(64),J=t.subUnderflowU128(Z,h).mul(v).shrn(64);return{feeOwedA:l.add(G).toString(),feeOwedB:y.add(J).toString()}},Yp=new ts.default(0),Qp=new ts.default(1),Z1=new ts.default(2),X1={mul(t,e,i){let n=t.mul(e);if(this.isOverLimit(n,i))throw new Error(`Mul result higher than u${i}`);return n},mulDiv(t,e,i,n){return this.mulDivRoundUpIf(t,e,i,!1,n)},mulDivRoundUpIf(t,e,i,n,r){if(i.eq(Yp))throw new Error("mulDiv denominator is zero");let o=this.mul(t,e,r),s=o.div(i);return n&&o.mod(i).gt(Yp)?s.add(Qp):s},isOverLimit(t,e){let i=Z1.pow(new ts.default(e)).sub(Qp);return t.gt(i)}},J1=(t,e)=>{var i,n,r,o;let{pool:s,position:a,tickLowerDetail:l,tickUpperDetail:u,timeStampInSeconds:h}=e,y=new ki.default(new U(s.reward_last_updated_time_ms).div(1e3).toFixed(0)),C=(h??new ki.default(Date.now()).div(new ki.default(1e3))).sub(new ki.default(y)),O=[],P=new ki.default(s.liquidity),j=new ki.default(a.liquidity);for(let B=0;B<3;++B){let D=s.reward_infos[B],q={emissionsPerSecondX64:new ki.default(D?D.fields.emissions_per_second:"0"),growthGlobalX64:new ki.default(D?D.fields.growth_global:"0")},K={growthInsideCheckpoint:new ki.default((n=(i=a.reward_infos[B])==null?void 0:i.fields.reward_growth_inside)!=null?n:"0"),amountOwed:new ki.default((o=(r=a.reward_infos[B])==null?void 0:r.fields.amount_owed)!=null?o:"0")},Z=q.growthGlobalX64;if(!P.isZero()){let k=X1.mulDiv(C,q.emissionsPerSecondX64,P,128);Z=q.growthGlobalX64.add(k)}let G=l.rewardGrowthsOutside[B],J=u.rewardGrowthsOutside[B],x=Z;l.initialized&&(x=t.bitsToNumber(s.tick_current_index.fields.bits)<t.bitsToNumber(a.tick_lower_index.fields.bits)?t.subUnderflowU128(Z,G):G);let I=new ki.default(0);u.initialized&&(I=t.bitsToNumber(s.tick_current_index.fields.bits)<t.bitsToNumber(a.tick_upper_index.fields.bits)?J:t.subUnderflowU128(Z,J));let A=t.subUnderflowU128(t.subUnderflowU128(Z,x),I),E=K.amountOwed.shln(64);O[B]=E.add(t.subUnderflowU128(A,K.growthInsideCheckpoint).mul(j)).shrn(64).toString()}return O},Y1=class extends es{async getOwner(t){let e=await this.getObject(t),i=V1(e);if(!(!i||typeof i=="string")){if("ObjectOwner"in i)return i.ObjectOwner;if("AddressOwner"in i)return i.AddressOwner}}async getFields(t){let e=await this.getObject(t);return zi(e)}async getPositionFields(t){let e=await this.contract.getConfig(),i=await this.provider.getDynamicFieldObject({parentId:e.Positions,name:{type:"address",value:t}});return zi(i)}async getPositionFieldsByPositionId(t){let e=await this.provider.getObject({id:t,options:{showContent:!0}});return Tu(e,"position"),zi(e)}async getPositionTick(t,e){let i=await this.provider.getDynamicFieldObject({parentId:t,name:{type:e.type,value:e.fields}}),n=zi(i);if(n)return{tickIndex:this.math.bitsToNumber(n.name.fields.bits),initialized:n.value.fields.initialized,liquidityNet:new ii.default(this.math.bitsToNumber(n.value.fields.liquidity_net.fields.bits,128).toString()),liquidityGross:new ii.default(n.value.fields.liquidity_gross),feeGrowthOutsideA:new ii.default(n.value.fields.fee_growth_outside_a),feeGrowthOutsideB:new ii.default(n.value.fields.fee_growth_outside_b),rewardGrowthsOutside:n.value.fields.reward_growths_outside.map(r=>new ii.default(r))}}async getPositionAPR(t){let{poolId:e,getPrice:i,fees24h:n,tickLower:r,tickUpper:o}=t,s=await this.pool.getPool(e),a=this.math.bitsToNumber(s.tick_current_index.fields.bits),[l,u,h,y]=await Promise.all([this.coin.getMetadata(s.types[0]),this.coin.getMetadata(s.types[1]),i(s.types[0]),i(s.types[1])]);if(!h||!y||r>=o||a<r||a>=o)return{fees:"0",rewards:"0",total:"0"};let{minTokenA:v,minTokenB:C}=this.getRemoveLiquidityQuote(s,r,o),O=new U(this.math.scaleDown(v.toString(),l.decimals)).mul(h),P=new U(this.math.scaleDown(C.toString(),u.decimals)).mul(y),j=O.add(P),B=j.isZero()?new U(0):new U(n).mul(365).div(j).mul(100),D=new U(0);return await Promise.all(s.reward_infos.map(async q=>{let{emissions_per_second:K}=q.fields,Z=this.coin.formatCoinType(q.fields.vault_coin_type),[G,J]=await Promise.all([i(Z),this.coin.getMetadata(Z)]);!K||K==="0"||!G||(D=D.add(new U(new ii.default(K).shrn(64).toString()).div(10**J.decimals).mul(31536e3).mul(G).div(j).mul(100)))})),{fees:B.toString(),rewards:D.toString(),total:B.plus(D).toString()}}getRemoveLiquidityQuote(t,e,i){let n=new ii.default(0),r=new ii.default(t.liquidity),o=this.math.bitsToNumber(t.tick_current_index.fields.bits),s=this.math.tickIndexToSqrtPriceX64(e),a=this.math.tickIndexToSqrtPriceX64(i);if(o<e){let u=this.getTokenAFromLiquidity(r,s,a);return{minTokenA:this.adjustForSlippage(u),minTokenB:n}}if(o<i){let u=new ii.default(t.sqrt_price),h=this.getTokenAFromLiquidity(r,u,a),y=this.getTokenBFromLiquidity(r,s,u);return{minTokenA:this.adjustForSlippage(h),minTokenB:this.adjustForSlippage(y)}}let l=this.getTokenBFromLiquidity(r,s,a);return{minTokenA:n,minTokenB:this.adjustForSlippage(l)}}adjustForSlippage(t){let e={numerator:new ii.default(0),denominator:new ii.default(1e3)};return t.mul(e.denominator).div(e.denominator.add(e.numerator))}getTokenAFromLiquidity(t,e,i){let n=t.mul(i.sub(e)).shln(64),r=i.mul(e);return n.div(r)}getTokenBFromLiquidity(t,e,i){return t.mul(i.sub(e)).shrn(64)}async burn(t){let{pool:e,nft:i}=t,n=t.txb||new rm.TransactionBlock,r=await this.contract.getConfig(),o=await this.pool.getPoolTypeArguments(e);return n.moveCall({target:`${r.PackageId}::position_manager::burn`,typeArguments:o,arguments:[n.object(r.Positions),n.object(i),n.object(r.Versioned)]}),n}async getPositionLiquidityUSD(t){let{position:e,poolId:i,priceA:n,priceB:r}=t,o=await this.pool.getPool(i),s=this.pool.getTokenAmountsFromLiquidity({currentSqrtPrice:new ii.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 ii.default(e.liquidity===void 0?1e8:e.liquidity)}),[a,l]=await Promise.all([this.coin.getMetadata(o.types[0]),this.coin.getMetadata(o.types[1])]),u=new U(s[0].toString()).div(10**a.decimals).mul(n||0),h=new U(s[1].toString()).div(10**l.decimals).mul(r||0);return u.plus(h).toString()}async getUnclaimedFeesAndRewards(t){let{position:e,poolId:i}=t,[n,r,o]=await Promise.all([this.pool.getPool(i),this.nft.getPositionTick(i,e.tick_lower_index),this.nft.getPositionTick(i,e.tick_upper_index)]),s={...t,pool:n,tickLowerDetail:r,tickUpperDetail:o},[a,l]=await Promise.all([this.getUnclaimedFees(s),this.getUnclaimedRewards(s)]),{unclaimedFees:u,...h}=a,{unclaimedRewards:y,...v}=l;return{fees:a.unclaimedFees.toString(),rewards:y.toString(),total:u.plus(y).toString(),fields:{...h,...v}}}async getUnclaimedFees(t){let{position:e,pool:i,getPrice:n,tickLowerDetail:r,tickUpperDetail:o}=t,[s,a,l,u]=await Promise.all([this.coin.getMetadata(i.types[0]),this.coin.getMetadata(i.types[1]),n(i.types[0]),n(i.types[1])]),h=H1(this.math,{pool:i,position:e,tickLowerDetail:r,tickUpperDetail:o}),y=this.math.scaleDown(h.feeOwedA,s.decimals),v=this.math.scaleDown(h.feeOwedB,a.decimals);function C(j,B){return new U(1e6).mul(U.pow(10,B)).lt(j)}C(y,s.decimals)&&(y="0",h.feeOwedA="0"),C(v,a.decimals)&&(v="0",h.feeOwedB="0");let O=l===void 0?new U(0):new U(l).mul(y),P=u===void 0?new U(0):new U(u).mul(v);return{unclaimedFees:O.plus(P),scaledFeeOwedA:y,scaledFeeOwedB:v,...h}}async getUnclaimedRewards(t){let{position:e,pool:i,getPrice:n,tickLowerDetail:r,tickUpperDetail:o}=t,s=J1(this.math,{pool:i,position:e,tickLowerDetail:r,tickUpperDetail:o}),a=[...s],l=i.reward_infos.map(v=>this.coin.formatCoinType(v.fields.vault_coin_type)),u=await Promise.all([...i.reward_infos.map((v,C)=>this.coin.getMetadata(l[C]))]),h=await Promise.all(i.reward_infos.map((v,C)=>n(l[C])));u.forEach((v,C)=>{a[C]=this.math.scaleDown(a[C],v.decimals)});let y=new U(0);return i.reward_infos.some((v,C)=>{let O=h[C];return O?(y=y.plus(new U(O).mul(a[C])),!1):(y=y.plus(1),!0)}),{unclaimedRewards:y,collectRewards:s,scaledCollectRewards:a}}getObject(t){return this.getCacheOrSet("nft-object-"+t,async()=>{let e=await this.provider.getObject({id:t,options:{showContent:!0,showOwner:!0}});return Tu(e,"nft"),e})}},Q1=class extends es{isSUI(t){return(0,om.normalizeSuiAddress)(t)==="0x000000000000000000000000000000000000000000000000000002::sui::sui"}async getMetadata(t){return this.getCacheOrSet(`coin-metadata-${t}`,async()=>{let e=await this.provider.getCoinMetadata({coinType:t});if(!e)throw new Error(`Coin "${t}" is not found`);return e})}async selectTradeCoins(t,e,i){if(i.eq(0))return[];let n=[],r=[],o=new U(0),s;do s=await this.provider.getCoins({owner:t,coinType:e,cursor:s?.nextCursor}),n.push(...s.data);while(s.hasNextPage);n.sort((a,l)=>Number(l.balance)-Number(a.balance));for(let a of n)if(r.push(a.coinObjectId),o=o.add(a.balance),o.gte(i))break;return r}convertTradeCoins(t,e,i,n){return this.isSUI(i)?[t.splitCoins(t.gas,[t.pure(n.toNumber())])[0]]:e.map(r=>t.object(r))}zero(t,e){return e.moveCall({typeArguments:[t],target:"0x2::coin::zero",arguments:[]})}formatCoinType(t,e=!1){let n=t.replace(/^0x/i,"");return n=n.replace(/^0+(2::sui::SUI)$/,"$1"),"0x"+(e&&n.length<64&&t!=="2::sui:SUI"?"0".repeat(64-n.length):"")+n}},ek=60*1e3,ja=100,tk=class extends es{async swap(t){let{coinTypeA:e,coinTypeB:i,address:n,amountSpecifiedIsInput:r,slippage:o}=t,s=new U(t.amountA),a=new U(t.amountB),l=await this.contract.getConfig(),u=await Promise.all(t.routes.map(async P=>{let j=await this.pool.getPoolTypeArguments(P.pool),[B,D]=await Promise.all([this.coin.getMetadata(j[0]),this.coin.getMetadata(j[1])]);return{...P,coinA:B,coinB:D,typeArguments:j}})),h=await this.coin.selectTradeCoins(n,e,s),{functionName:y,typeArguments:v}=this.getFunctionNameAndTypeArguments(u.map(({typeArguments:P})=>P),e,i),C=u.map(({nextTickIndex:P,coinA:j,coinB:B,a2b:D})=>{let q=this.math.tickIndexToPrice(P,j.decimals,B.decimals);return this.sqrtPriceWithSlippage(q,o,D,j.decimals,B.decimals)}),O=t.txb||new Na.TransactionBlock;return O.moveCall({target:`${l.PackageId}::swap_router::${y}`,typeArguments:v,arguments:[...u.map(({pool:P})=>O.object(P)),O.makeMoveVec({objects:this.coin.convertTradeCoins(O,h,e,s)}),O.pure((r?s:a).toFixed(0),"u64"),O.pure(this.amountOutWithSlippage(r?a:s,o,r),"u64"),...C.map(P=>O.pure(P,"u128")),O.pure(r,"bool"),O.pure(n,"address"),O.pure(Date.now()+(t.deadline||ek*3),"u64"),O.object(Fa.SUI_CLOCK_OBJECT_ID),O.object(l.Versioned)]}),O}async computeSwapResult(t){let{pools:e,amountSpecified:i,amountSpecifiedIsInput:n,address:r,tickStep:o}=t,s=await this.contract.getConfig(),a=e.map(y=>y.pool),l=await Qo(this.provider,a,{showContent:!0}),u=new Na.TransactionBlock;l.map(async y=>{let v=zi(y),C=e.find(D=>D.pool===v.id.id),O=this.math.bitsToNumber(v.tick_current_index.fields.bits),P=O-v.tick_spacing*(o||ja),j=O+v.tick_spacing*(o||ja);P=P<Ea?Ea:P,j=j>Ma?Ma:j;let B=this.pool.parsePoolType(Ra(y));u.moveCall({target:`${s.PackageId}::pool_fetcher::compute_swap_result`,typeArguments:B,arguments:[u.object(v.id.id),u.pure(C.a2b,"bool"),u.pure(new U(i).toFixed(0),"u128"),u.pure(n,"bool"),u.pure(this.math.tickIndexToSqrtPriceX64(C.a2b?P:j).toString(),"u128"),u.object(Fa.SUI_CLOCK_OBJECT_ID),u.object(s.Versioned)]})});let h=await this.provider.devInspectTransactionBlock({transactionBlock:u,sender:r});if(h.error)throw new Error(h.error);return h.events.map(y=>y.parsedJson)}async computeSwapResultV2(t){let{pools:e,amountSpecifiedIsInput:i,address:n,tickStep:r}=t,o=await this.contract.getConfig(),s=e.map(h=>h.pool),a=await Qo(this.provider,Array.from(new Set(s)),{showContent:!0}),l=new Na.TransactionBlock;e.forEach(async h=>{let y=a.find(B=>qa(B)===h.pool),v=zi(y),C=this.math.bitsToNumber(v.tick_current_index.fields.bits),O=C-v.tick_spacing*(r||ja),P=C+v.tick_spacing*(r||ja);O=O<Ea?Ea:O,P=P>Ma?Ma:P;let j=this.pool.parsePoolType(Ra(y));l.moveCall({target:`${o.PackageId}::pool_fetcher::compute_swap_result`,typeArguments:j,arguments:[l.object(v.id.id),l.pure(h.a2b,"bool"),l.pure(new U(h.amountSpecified).toFixed(0),"u128"),l.pure(i,"bool"),l.pure(this.math.tickIndexToSqrtPriceX64(h.a2b?O:P).toString(),"u128"),l.object(Fa.SUI_CLOCK_OBJECT_ID),l.object(o.Versioned)]})});let u=await this.provider.devInspectTransactionBlock({transactionBlock:l,sender:n});if(u.error)throw new Error(u.error);return u.events.map(h=>h.parsedJson)}getFunctionNameAndTypeArguments(t,e,i){let n=[],r=["swap"];if(t.length===1)n=t[0],e===n[0]?r.push("a","b"):r.push("b","a");else{let o=t[0],s=t[1];e===o[0]?(r.push("a","b"),n.push(o[0],o[2],o[1])):(r.push("b","a"),n.push(o[1],o[2],o[0])),n.push(s[2],i),i===s[0]?r.push("c","b"):r.push("b","c")}return{functionName:r.join("_"),typeArguments:n}}amountOutWithSlippage(t,e,i){if(i){let r=new U(100).minus(e).div(100);return new U(t).mul(r).toFixed(0)}let n=new U(100).plus(e).div(100);return new U(t).mul(n).toFixed(0)}sqrtPriceWithSlippage(t,e,i,n,r){let o=new U(t).mul(i?new U(100).minus(e).div(100):new U(100).plus(e).div(100)),s=this.math.priceToSqrtPriceX64(o,n,r);return s.lt(new Cu.BN(ku))?ku:s.gt(new Cu.BN(vu))?vu:s.toString()}},At=class{constructor(t,e){this.network=t,Wi(this,"pool"),Wi(this,"contract"),Wi(this,"math",new z1),Wi(this,"account",new q1),Wi(this,"coin"),Wi(this,"nft"),Wi(this,"trade"),Wi(this,"provider"),this.provider=e?e instanceof lr.SuiClient?e:new lr.SuiClient(e):new lr.SuiClient({url:t==="mainnet"?(0,lr.getFullnodeUrl)("mainnet"):(0,lr.getFullnodeUrl)("testnet")}),this.contract=new W1(this),this.pool=new G1(this),this.nft=new Y1(this),this.coin=new Q1(this),this.trade=new tk(this)}};var ln=require("@msafe/sui3-utils"),Vu=require("@mysten/sui.js/bcs"),Rn=require("@mysten/sui.js/utils");var k_=require("@mysten/sui.js/transactions");var S_=require("@msafe/sui3-utils"),Xa=require("@msafe/sui3-utils"),zu=require("@mysten/sui.js/bcs"),qn=require("@mysten/sui.js/utils"),x_=require("@mysten/sui.js/transactions"),I_=require("@mysten/sui.js/transactions"),P_=require("@mysten/sui.js/transactions"),ik=Object.defineProperty,Nm=(t,e)=>{for(var i in e)ik(t,i,{get:e[i],enumerable:!0})},re=class{constructor(t){this.data=t}get application(){return"msafe-core"}serialize(){return JSON.stringify((0,qm.default)(this.data))}},nk={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"},rk={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"}]}}},ok={fullRpcUrl:"https://fullnode.testnet.sui.io/",simulationAccount:{address:"0xcd0247d0b67e53dde69b285e7a748e3dc390e8a5244eb9dd9c5c53d95e4cf0aa"},cetus_config:{package_id:"0xf5ff7d5ba73b581bca6b4b9fa0049cd320360abd154b809f8700a8fd3cfaf7ca",published_at:"0xf5ff7d5ba73b581bca6b4b9fa0049cd320360abd154b809f8700a8fd3cfaf7ca",config:{coin_list_id:"0x257eb2ba592a5480bba0a97d05338fab17cc3283f8df6998a0e12e4ab9b84478",launchpad_pools_id:"0xdc3a7bd66a6dcff73c77c866e87d73826e446e9171f34e1c1b656377314f94da",clmm_pools_id:"0x26c85500f5dd2983bf35123918a144de24e18936d0b234ef2b49fbb2d3d6307d",admin_cap_id:"0x1a496f6c67668eb2c27c99e07e1d61754715c1acf86dac45020c886ac601edb8",global_config_id:"0xe1f3db327e75f7ec30585fa52241edf66f7e359ef550b533f89aa1528dd1be52",coin_list_handle:"0x3204350fc603609c91675e07b8f9ac0999b9607d83845086321fca7f469de235",launchpad_pools_handle:"0xae67ff87c34aceea4d28107f9c6c62e297a111e9f8e70b9abbc2f4c9f5ec20fd",clmm_pools_handle:"0xd28736923703342b4752f5ed8c2f2a5c0cb2336c30e1fed42b387234ce8408ec"}},clmm_pool:{package_id:"0x0868b71c0cba55bf0faf6c40df8c179c67a4d0ba0e79965b68b3d72d7dfbf666",published_at:"0x1c29d658882c40eeb39a8bb8fe58f71a216a918acb3e3eb3b47d24efd07257f2",config:{pools_id:"0xc090b101978bd6370def2666b7a31d7d07704f84e833e108a969eda86150e8cf",global_config_id:"0x6f4149091a5aea0e818e7243a13adcfb403842d670b9a2089de058512620687a",global_vault_id:"0xf3114a74d54cbe56b3e68f9306661c043ede8c6615f0351b0c3a93ce895e1699",admin_cap_id:""}},integrate:{package_id:"0x8627c5cdcd8b63bc3daa09a6ab7ed81a829a90cafce6003ae13372d611fbb1a9",published_at:"0xf1a5d0c5b0593e41d13f9684ca91365bdfe54a98836c1d33c90e361a031fac74",version:6},deepbook:{package_id:"0x000000000000000000000000000000000000000000000000000000000000dee9",published_at:"0x000000000000000000000000000000000000000000000000000000000000dee9"},deepbook_endpoint_v2:{package_id:"0xa34ffca2c6540e1ca9e53963ab43e7b1eed7b82e37696c743bb7c6179c15dfa6",published_at:"0xa34ffca2c6540e1ca9e53963ab43e7b1eed7b82e37696c743bb7c6179c15dfa6"},aggregatorUrl:"https://api-sui.devcetus.com/router",swapCountUrl:"https://api-sui.devcetus.com/v2/sui/swap/count"},sk={launchpad:{package_id:"0x3beee8416089a5cbff9cfd5c0a2ce2937b0452dc7e2a3ab4dc431c7be05c2335",published_at:"0x3beee8416089a5cbff9cfd5c0a2ce2937b0452dc7e2a3ab4dc431c7be05c2335",config:{pools_id:"0xccc10403ab3da4ae943847908e0e674fe1fdab81c6383e4c6dcd0eea0edade3d",admin_cap_id:"0x8a72713049dbcfc40902ff209dc5e6066fe455d152baa235957c84d7a3b875ed",config_cap_id:"0x16492b4252b01debb60f8a825334020d7fdb9d895b52f8139c98618de30817fc"}},ido:{package_id:"0x1352bf18ef20458f7cc773852d4a90b240015a6a54479dda3a1debfc500bf044",published_at:"0xbd09a0889ea9970b821512428bab3e2fd01e16809a90a325cd3b3d3573eab6a4",config:{pools_id:"0x346bee25ab4d15bcfa9484ef5ebd4d7c94eb665ebaa745ff4094936a7f59a8b1",admin_cap_id:"0xc1bb19a24d3bb65dfd4f3835637b63347c223c67cde4b0888f1a857974f33cbb",package_version_id:"0x3ccf1b38e3259e638b980d4e6b49eac8c5aa94d3cb2ace5e75f0a551c8e67e5e"}},xcetus:{package_id:"0xdebaab6b851fd3414c0a62dbdf8eb752d6b0d31f5cfce5e38541bc6c6daa8966",published_at:"0xdebaab6b851fd3414c0a62dbdf8eb752d6b0d31f5cfce5e38541bc6c6daa8966",config:{xcetus_manager_id:"0x3be34cbad122c8b100ed7157d762b9610e68b3c65734e08bc3c3baf857da807d",lock_manager_id:"0x7c67e805182e3fecd098bd68a6b06c317f28f8c6249bd771e07904a10b424e60",lock_handle_id:"0xc5f3bbfefe9a45c13da7a34bc72cac122ee45d633690476a8ac56bd2c4e78c86"}},xcetus_dividends:{package_id:"0x20d948d640edd0c749f533d41efc5f843f212d441220324ad7959c6e1d281828",published_at:"0x20d948d640edd0c749f533d41efc5f843f212d441220324ad7959c6e1d281828",config:{dividend_manager_id:"0x13b7facb704fae1d199ff0038b8acabc253415a77d142b39189dee97d457e442",dividend_admin_id:"0x5eb78463007422d4130b21f61c180bcd190819b7792f56e00a61df3b8fb928ef",dividend_settle_id:"0x495095e13a170ff494d242ae44ac2c7453011ca6c33cff27498010105e10e4b4"}},cetus_faucet:{package_id:"0x1a69aee6be709054750949959a67aedbb4200583b39586d5e3eabe57f40012c7",published_at:"0x1a69aee6be709054750949959a67aedbb4200583b39586d5e3eabe57f40012c7"},xtoken:{package_id:"",published_at:"",config:{xtoken_manager_id:"",lock_manager_id:"",lock_handle_id:""}},xtoken_dividends:{package_id:"",published_at:"",config:{dividend_manager_id:"",dividend_admin_id:"",dividend_settle_id:""}},token_faucet:{package_id:"",published_at:""},booster:{package_id:"",published_at:"",config:{booster_config_id:"",booster_pool_handle:""}},maker_bonus:{package_id:"",published_at:"",config:{maker_config_id:"",maker_pool_handle:""}},liquidity_stratefy:{package_id:"",published_at:"",version:void 0,config:void 0},vaults:{package_id:"0x25cff94bdb454bae6a5565d09047bfe2b230025ef3bd2199622ec48d854b86b9",published_at:"0x25cff94bdb454bae6a5565d09047bfe2b230025ef3bd2199622ec48d854b86b9",config:{admin_cap_id:"0x9b2d6f5be2650d16d27cd630c4539a76d7793970343ed3cbb023e13f1637c07c",vaults_manager_id:"0xc0a1a937df08880e395d85014ff40c74f13abe7a53abdbffea36f51adaaaf79e",vaults_pool_handle:"0x3ab02203de753de9c8198cc0ce7594dc960878f2c34c5c5a4b7742082241860a"}},limit_order:{package_id:"",published_at:"",version:1,config:{rate_orders_indexer_id:"",rate_orders_indexer_handle:"",global_config_id:"",token_list_handle:"",user_orders_indexer_id:"",user_orders_indexer_handle:""}},frams:{package_id:"0xfa0d98e99c1dbdbea1b0fe089fa93ebab40a7719ae4160c42cc78ebfe029fda0",published_at:"0xfa0d98e99c1dbdbea1b0fe089fa93ebab40a7719ae4160c42cc78ebfe029fda0",config:{global_config_id:"0x5082c7a5ee9a758025d7b0a5e8aa08b56625c7cd535b8909d2b7993991e229cc",rewarder_manager_id:"0xe789e092dbd9dceadbe89350c4761a6f2e11647aab97f09746a01b151926cc0e",rewarder_manager_handle:"0x7e7dd42392b5d82564dc9ad5093a111c5f0598cc9f806cff257d7dacb71f7837",admin_cap_id:"0x4ec248bca2d1fc05f39fd7491ab490464a46d128624caa4d3c2a66d957ef40b0"}},haedal:{package_id:"0xac2afb455cbcdc2ff1a2e9bbb8aa4ccb4506a544b08c740886892a5cdf92f472",published_at:"0x9dac9c5770e5f930d2223ff68782958701acfaee9337e8d8363978ce7670dffb",config:{support_stakings:[{staking_id:"0x6e384d2da5b040b27f973155e25bbe4beb0ad5ca8ee0a36e20dff356094c9fc0",from_coin_type:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",to_coin_type:"0xac2afb455cbcdc2ff1a2e9bbb8aa4ccb4506a544b08c740886892a5cdf92f472::hasui::HASUI"}]}}},ao=(t,e)=>{let i=t==="sui:mainnet"?nk:ok,n=new _h(i);return n.senderAddress=e.address,n},ni=(t,e)=>{let i=ao(t,e),n=t==="sui:mainnet"?rk:sk;return new Sh(n,i)},ak=async(t,e,i)=>await ao(i,e).Position.createAddLiquidityFixTokenPayload(t?.parameter,t?.gasEstimateArg),ck=async(t,e,i)=>await ao(i,e).Position.createAddLiquidityFixTokenPayload(t?.parameter,t?.gasEstimateArg),lk=async(t,e,i)=>await ao(i,e).Position.closePositionTransactionPayload(t),uk=async(t,e,i)=>await ao(i,e).Position.removeLiquidityTransactionPayload(t),dk=async(t,e,i)=>await ao(i,e).Rewarder.collectRewarderTransactionPayload(t),fk=class Lm extends re{constructor(e){super(e),this.data=e}txType=Rm.TransactionType.Other;txSubType="OpenAndAddLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await ak(r,i,n)}static fromData(e){return new Lm(e)}},hk=class Um extends re{constructor(e){super(e),this.data=e}txType=$m.TransactionType.Other;txSubType="ClaimFeeAndMining";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await dk(r,i,n)}static fromData(e){return new Um(e)}},pk=class Vm extends re{constructor(e){super(e),this.data=e}txType=Km.TransactionType.Other;txSubType="DecreaseLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await uk(r,i,n)}static fromData(e){return new Vm(e)}},mk=async(t,e,i)=>await ni(i,e).Farms.openPositionAddLiquidityStakePaylod(t),gk=async(t,e,i)=>await ni(i,e).Farms.addLiquidityFixCoinPayload(t),_k=async(t,e,i)=>await ni(i,e).Farms.removeLiquidityPayload(t),bk=async(t,e,i)=>await ni(i,e).Farms.removeLiquidityPayload(t),yk=async(t,e,i)=>await ni(i,e).Farms.claimFeeAndClmmReward(t),wk=async(t,e,i)=>{let n=ni(i,e);return console.log("getFarmingHarvest txbParams: ",t),await n.Farms.harvestPayload(t)},vk=async(t,e,i)=>{let n=ni(i,e),r=Object.values(t);return console.log("getFarmingBatchHarvest params: ",r),await n.Farms.batchHarvestPayload(r)},kk=async(t,e,i)=>await ni(i,e).Farms.depositPayload(t),Tk=async(t,e,i)=>await ni(i,e).Farms.withdrawPayload(t),Ck=class zm extends re{constructor(e){super(e),this.data=e}txType=Wm.TransactionType.Other;txSubType="FarmingOpenAndAddLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await mk(r,i,n)}static fromData(e){return new zm(e)}},Sk=class Hm extends re{constructor(e){super(e),this.data=e}txType=Gm.TransactionType.Other;txSubType="FarmingBatchHarvest";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await vk(r,i,n)}static fromData(e){return new Hm(e)}},xk=class Xm extends re{constructor(e){super(e),this.data=e}txType=Zm.TransactionType.Other;txSubType="FarmingClaimFeeAndReward";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await yk(r,i,n)}static fromData(e){return new Xm(e)}},Ak=class Ym extends re{constructor(e){super(e),this.data=e}txType=Jm.TransactionType.Other;txSubType="FarmingDecreaseLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await _k(r,i,n)}static fromData(e){return new Ym(e)}},Ik=class eg extends re{constructor(e){super(e),this.data=e}txType=Qm.TransactionType.Other;txSubType="FarmingHarvest";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await wk(r,i,n)}static fromData(e){return new eg(e)}},Ok=class ig extends re{constructor(e){super(e),this.data=e}txType=tg.TransactionType.Other;txSubType="FarmingIncreaseLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await gk(r,i,n)}static fromData(e){return new ig(e)}},Pk=class rg extends re{constructor(e){super(e),this.data=e}txType=ng.TransactionType.Other;txSubType="FarmingRemoveLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await bk(r,i,n)}static fromData(e){return new rg(e)}},Dk=class sg extends re{constructor(e){super(e),this.data=e}txType=og.TransactionType.Other;txSubType="FarmingStake";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await kk(r,i,n)}static fromData(e){return new sg(e)}},Mk=class cg extends re{constructor(e){super(e),this.data=e}txType=ag.TransactionType.Other;txSubType="FarmingUnstake";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Tk(r,i,n)}static fromData(e){return new cg(e)}},Ek=class ug extends re{constructor(e){super(e),this.data=e}txType=lg.TransactionType.Other;txSubType="IncreaseLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await ck(r,i,n)}static fromData(e){return new ug(e)}},jk=class fg extends re{constructor(e){super(e),this.data=e}txType=dg.TransactionType.Other;txSubType="RemoveLiquidity";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await lk(r,i,n)}static fromData(e){return new fg(e)}},Bk=async(t,e,i)=>await ni(i,e).XCetusModule.convertPayload(t),Nk=async(t,e,i)=>await ni(i,e).XCetusModule.redeemLockPayload(t),Fk=async(t,e,i)=>await ni(i,e).XCetusModule.redeemDividendV2Payload(t.venft_id,t.bonus_types,t.xTokenType),Rk=async(t,e,i)=>await ni(i,e).XCetusModule.cancelRedeemPayload(t),qk=async(t,e,i)=>await ni(i,e).XCetusModule.redeemPayload(t),Lk=class pg extends re{constructor(e){super(e),this.data=e}txType=hg.TransactionType.Other;txSubType="xCETUSCancelRedeem";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Rk(r,i,n)}static fromData(e){return new pg(e)}},$k=class gg extends re{constructor(e){super(e),this.data=e}txType=mg.TransactionType.Other;txSubType="xCETUSClaimStakingRwewards";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Fk(r,i,n)}static fromData(e){return new gg(e)}},Uk=class bg extends re{constructor(e){super(e),this.data=e}txType=_g.TransactionType.Other;txSubType="xCETUSConvert";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Bk(r,i,n)}static fromData(e){return new bg(e)}},Kk=class wg extends re{constructor(e){super(e),this.data=e}txType=yg.TransactionType.Other;txSubType="xCETUSRedeem";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await qk(r,i,n)}static fromData(e){return new wg(e)}},Vk=class kg extends re{constructor(e){super(e),this.data=e}txType=vg.TransactionType.Other;txSubType="xCETUSRedeemLock";async build(e){let{account:i,network:n}=e,{txbParams:r}=this.data;return await Nk(r,i,n)}static fromData(e){return new kg(e)}},Wk=class{application="cetus";async deserialize(t){console.log("Cetus helper deserialize input: ",t);let{txbParams:e,action:i}=t;return{txType:Fm.TransactionType.Other,txSubType:i,intentionData:{txbParams:{...e},action:i}}}async build(t){let{suiClient:e,account:i,network:n}=t;console.log("helper build input: ",t),console.log("helper build input.intentionData: ",t.intentionData),console.log("helper build input.intentionData JSON: ",JSON.stringify(t.intentionData));let r;switch(t.txSubType){case"OpenAndAddLiquidity":r=fk.fromData(t.intentionData);break;case"IncreaseLiquidity":r=Ek.fromData(t.intentionData);break;case"DecreaseLiquidity":r=pk.fromData(t.intentionData);break;case"RemoveLiquidity":r=jk.fromData(t.intentionData);break;case"ClaimFeeAndMining":r=hk.fromData(t.intentionData);break;case"FarmingOpenAndAddLiquidity":r=Ck.fromData(t.intentionData);break;case"FarmingIncreaseLiquidity":r=Ok.fromData(t.intentionData);break;case"FarmingDecreaseLiquidity":r=Ak.fromData(t.intentionData);break;case"FarmingRemoveLiquidity":r=Pk.fromData(t.intentionData);break;case"FarmingClaimFeeAndReward":r=xk.fromData(t.intentionData);break;case"FarmingHarvest":r=Ik.fromData(t.intentionData);break;case"FarmingBatchHarvest":r=Sk.fromData(t.intentionData);break;case"FarmingStake":r=Dk.fromData(t.intentionData);break;case"FarmingUnstake":r=Mk.fromData(t.intentionData);break;case"xCETUSConvert":r=Uk.fromData(t.intentionData);break;case"xCETUSRedeemLock":r=Vk.fromData(t.intentionData);break;case"xCETUSClaimStakingRwewards":r=$k.fromData(t.intentionData);break;case"xCETUSCancelRedeem":r=Lk.fromData(t.intentionData);break;case"xCETUSRedeem":r=Kk.fromData(t.intentionData);break;default:throw new Error("not implemented")}return console.log("helper build intention: ",r),console.log("helper build account: ",i),console.log("helper build network: ",n),r.build({suiClient:e,account:i,network:n})}},Cg={};Nm(Cg,{contractId:()=>Ag,default:()=>zk,feeObjId:()=>Pg,roleObjId:()=>Ig,status:()=>xg,transaction:()=>Sg,upgradeCapObjId:()=>Dg,vaultObjId:()=>Og});var Sg="DiBZq4UmVVYiRL6ZJmFKYoHcxtxqrhsCXSkFyT7wUr3j",xg="success",Ag="0x81c960dc653975fbd0072deca8afb92d322898c911622898ba1b2e3ad0c4bd8d",Ig="0xc6ec0bdee0bb59a72077e9acd2f42457043cf47080b3d3fad4d39abf28bba63a",Og="0xbc4021387fbac149119fd24e92be9e58f745774292f3a2a12e2ac6daf5363e1d",Pg="0x4178f63970fe2daeb256dc5730ad172e82b3e8eb45f31b33e0daae72cd35e1e1",Dg="0xe1e9aa7d222d151bfe6dd83358b0d7fdcb11260f710800cfaf7ccc1b1e245115",zk={transaction:Sg,status:xg,contractId:Ag,roleObjId:Ig,vaultObjId:Og,feeObjId:Pg,upgradeCapObjId:Dg},Mg={};Nm(Mg,{contractId:()=>Bg,default:()=>Gk,feeObjId:()=>Rg,roleObjId:()=>Ng,status:()=>jg,transaction:()=>Eg,upgradeCapObjId:()=>qg,vaultObjId:()=>Fg});var Eg="855FNDV8o8Z3fWULPnQo9qdhLJpsg7wZrkCpNyfw9KfB",jg="success",Bg="0xc357c3985e8fb875d6b37141497af660779aa1bab0ec489b2213efd74067d1fa",Ng="0x5ab49bdf9fd1413e328ef242b3f8d83dde791b38a0b627bfc87fb25c010d34f1",Fg="0xb483558770d8eb26007f193b75db40f0a45f2e36863a687625885d4de6993378",Rg="0x48453fc4d7cde3fe35aad89e5dfb496608a6a55ea529a1c0274681a808627f94",qg="0x34279779a0d0d36bd5044b04830d607fa1b0ecf316548c8ac3a44151e4f1a42a",Gk={transaction:Eg,status:jg,contractId:Bg,roleObjId:Ng,vaultObjId:Fg,feeObjId:Rg,upgradeCapObjId:qg},Hk="https://sui-testnet.blockvision.org/v1/2Sgk89ivT64MnKdcGzjmyjY2ndD",Zk="https://sui-testnet.blockvision.org/v1/2Sgk89ivT64MnKdcGzjmyjY2ndD",Xk="https://sui-mainnet.blockvision.org/v1/2Sgk7NPvqkd7mESYkxF01yX15l7",Jk="https://sui-mainnet.blockvision.org/v1/2Sgk7NPvqkd7mESYkxF01yX15l7",Yk="https://bc3p6l5unl.execute-api.us-west-1.amazonaws.com/prod",Qk="https://rolsbkota7.execute-api.us-west-1.amazonaws.com/prod",eT="https://6p6mkx33ne.execute-api.us-west-1.amazonaws.com/prod",tT="https://xrae3mrjv5.execute-api.us-west-1.amazonaws.com/prod",sm=Cg,am=Mg,iT=new Map([["dev",{env:"dev",rpc:{url:Hk},backend:{url:Yk},contract:sm}],["stg",{env:"stg",rpc:{url:Zk},backend:{url:Qk},contract:sm}],["prev",{env:"prev",rpc:{url:Xk},backend:{url:eT},contract:am}],["prod",{env:"prod",rpc:{url:Jk},backend:{url:tT},contract:am}]]);function nT(t,e){let i=iT.get(t);if(!i)throw new Error(`Env not supported: ${t}`);return e&&e.rpc&&(i.rpc=e.rpc),e&&e.backend&&(i.backend=e.backend),e&&e.contract&&(i.contract=e.contract),i}var di=class extends Error{mpayErrorCode;context;constructor(t,e,i={}){let{cause:n,context:r}=i;n?super(`[MPay] ${e}: ${n}`):super(`[MPay] ${e}`),this.mpayErrorCode=t,this.context=r}},rT=class extends di{constructor(){super(11,"Backend is not specified")}},oT=class extends di{constructor(){super(1,"Wallet not connected")}},Au=class extends di{constructor(t,e){super(10,t,{context:e})}},sT=class dr{constructor(e){this.apiURL=e}static parseResponseData(e){if(e instanceof un.AxiosError)throw new Au(e.response?.statusText);if(e.status===200){if(e.data.success)return e.data.data;throw new Au(e.data.code)}throw new Au(e.status.toString())}async getIncomingStreams(e,i){let n=await un.default.post(`${this.apiURL}/stream`,{recipient:e,...i});return dr.parseResponseData(n)}async getOutgoingStreams(e,i){let n=await un.default.post(`${this.apiURL}/stream`,{sender:e,...i});return dr.parseResponseData(n)}async getStreamHistory(e){let i=await un.default.post(`${this.apiURL}/stream-events`,e),n=dr.parseResponseData(i);return n.data.forEach(r=>{let o=r;return o.data.type==="create_stream"?o.data.balance=BigInt(o.data.balance):o.data.type==="cancel_stream"?o.data.withdrawAmount=BigInt(o.data.withdrawAmount):o.data.type==="claim"||o.data.type==="auto_claim"?o.data.claimAmount=BigInt(o.data.claimAmount):o.data.type==="set_auto_claim"&&(o.data.enabled=!!o.data.enabled),o.createdAt=new Date(o.createdAt),o}),n}async getAllCoinTypes(e){let i=await un.default.post(`${this.apiURL}/stream-info`,{address:e});return dr.parseResponseData(i)}async getAllRecipients(e,i){let n=await un.default.post(`${this.apiURL}/stream-info`,{sender:e,status:i});return dr.parseResponseData(n)}async getAllSenders(e,i){let n=await un.default.post(`${this.apiURL}/stream-info`,{recipient:e,status:i});return dr.parseResponseData(n)}},$g=class Ug{signer;suiClient;envConfig;_backend;constructor(e){this.envConfig=e,this.suiClient=new Lg.SuiClient({url:e.rpc.url}),e.backend&&(this._backend=new sT(e.backend.url))}static new(e,i){let n=nT(e,i);return new Ug(n)}get walletType(){return this.wallet?this.wallet.type:"disconnected"}get backend(){if(!this._backend)throw new rT;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 oT;return this.signer}async walletAddress(){return this.wallet.address()}},cm=50n,Iu=10000n,aT=25n,lm=100000000n,ur=class{constructor(t){this.object=t}moveArg(t){return t.object(this.object)}},um=class{constructor(t){this.objects=t}moveArgs(t){return t.makeMoveVec({objects:this.objects.map(e=>t.object(e))})}},Ya=class Kg{constructor(e){return this.result=e,new Proxy(this,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(i,n){if(n in i)return Reflect.get(i,n);let r=s=>new Kg(i.result[s]);if(n===Symbol.iterator)return function*(){let s=0;for(;;)yield r(s),s++};if(typeof n=="symbol")return;let o=parseInt(n,10);if(!(Number.isNaN(o)||o<0))return r(o)}})}moveArg(){return this.result}},dm=class extends di{constructor(t,e){super(3,t,{context:e})}},cT=class{constructor(t){this.results=t}callResult(t){return this.results.results[t]}returnValue(t,e){return t.returnValues[e]}getValue(t=0,e=0){let i=this.callResult(t);return this.returnValue(i,e)}getAddress(t=0,e=0){let[i,n]=this.getValue(t,e);if(n!=="address")throw new dm("Invalid contract return type.",{ctx:{expectType:"address",gotType:n}});return(0,Vg.normalizeSuiAddress)(ju.Buffer.from(i).toString("hex"))}getU64(t=0,e=0){let[i,n]=this.getValue(t,e);if(n!=="u64")throw new dm("Invalid contract return type.",{ctx:{expectType:"u64",gotType:n}});return ju.Buffer.from(i).readBigInt64LE()}},ui=class extends di{constructor(t,e,i){super(2,`Invalid input: ${t}`,{context:{fieldKey:e,fieldValue:i}})}},Wg={groupId:"string",name:"string"},lT=64;function uT(t){return zg(t),Gu.bcs.ser(Wg,t).toString("base64")}function Bu(t){let e=Gu.bcs.de(Wg,t,"base64");return zg(e),e}function zg(t){if(!fm(t.name))throw new ui("Invalid metadata: Name contains unknown character");if(!fm(t.groupId))throw new ui("Invalid metadata: Group ID contains unknown character");if(t.name.length>lT)throw new ui("Invalid metadata: Name exceed max length 64")}function fm(t){return/^[\x00-\x7F]+$/.test(t)}function Gg(t,e){return(0,as.normalizeStructTag)(t)===(0,as.normalizeStructTag)(e)}function eo(t,e){return(0,as.normalizeStructTag)(t)===(0,as.normalizeStructTag)(e)}var Hg="txn.gas";function dT(){return xh()}var Nu=class Zg{constructor(e,i,n){this.globals=e,this.feeContract=i,this.streamContract=n}static convertCreateStreamInfoToInternal(e){return{metadata:uT({name:e.name,groupId:dT()}),coinType:(0,ss.normalizeStructTag)(e.coinType),recipients:e.recipients.map(i=>({address:i.address,cliffAmount:i.cliffAmount,amountPerEpoch:i.amountPerStep})),epochInterval:e.interval,numberEpoch:e.steps,startTime:e.startTimeMs,cancelable:e.cancelable}}async buildCreateStreamTransactionBlock(e){let i=new Eu.TransactionBlock,n=this.calculateFeesInternal(e),r=this.getCreateStreamCoinRequests(e,n),o=await this.wallet.requestCoins(r),s=await this.addMergeCoins(i,o[0]),a;r.length>1?a=await this.addMergeCoins(i,o[1]):a=s;for(let l=0;l<e.recipients.length;l++){let u=e.recipients[l],h=this.amountForRecipient(u,e.numberEpoch),y=this.getStreamFeeLocal(h),[v]=i.splitCoins(s,[i.pure(h+y,"u64")]),[C]=i.splitCoins(a,[i.pure(this.flatSuiFee,"u64")]);this.streamContract.createStream(i,{paymentCoin:new Ya(v),flatFeeCoin:new Ya(C),metadata:e.metadata,recipient:u.address,timeStart:e.startTime,cliff:u.cliffAmount,epochInterval:e.epochInterval,numEpoch:e.numberEpoch,amountPerEpoch:u.amountPerEpoch,cancelable:e.cancelable,coinType:e.coinType})}return i}calculateCreateStreamFees(e){let i=Zg.convertCreateStreamInfoToInternal(e);return this.calculateFeesInternal(i)}feeParams(){return{createFeePercent:{numerator:cm,denominator:Iu},claimFeePercent:{numerator:aT,denominator:Iu},flatFeePerStream:lm}}async addMergeCoins(e,i){let n;return i.mergedCoins&&i.mergedCoins.length?(e.mergeCoins(e.object(i.primaryCoin),i.mergedCoins.map(r=>e.object(r))),n=e.object(i.primaryCoin)):i.primaryCoin===Hg?n=e.gas:n=e.object(i.primaryCoin),n}getCreateStreamCoinRequests(e,i){let n=e.coinType;return Gg(n,ss.SUI_TYPE_ARG)?[{coinType:n,amount:i.totalAmount+i.streamFeeAmount+i.flatFeeAmount}]:[{coinType:n,amount:i.totalAmount+i.streamFeeAmount},{coinType:ss.SUI_TYPE_ARG,amount:i.flatFeeAmount}]}calculateFeesInternal(e){let i=e.recipients.reduce((n,r)=>{let o=this.amountForRecipient(r,e.numberEpoch),s=this.getStreamFeeLocal(o);return{totalAmount:n.totalAmount+o,streamFeeAmount:n.streamFeeAmount+s}},{totalAmount:0n,streamFeeAmount:0n});return{flatFeeAmount:BigInt(e.recipients.length)*this.flatSuiFee,...i}}amountForRecipient(e,i){return BigInt(e.amountPerEpoch)*BigInt(i)+BigInt(e.cliffAmount)}get flatSuiFee(){return lm}getStreamFeeLocal(e){return e*cm/Iu}async getStreamFeeRemote(e){let i=this.feeContract.streamingFee(new Eu.TransactionBlock,e),n=await this.globals.suiClient.devInspectTransactionBlock({sender:await this.globals.walletAddress(),transactionBlock:i});return new cT(n).getU64()}get wallet(){return this.globals.wallet}},fT="0x0000000000000000000000000000000000000000000000000000000000000006",Xg=class{constructor(t,e,i){this.moduleName=t,this.config=e,this.globals=i}addContractCall(t,e){let i=`${this.config.contractId}::${this.moduleName}::${e.method}`;return t.add(Fu.Transactions.MoveCall({target:i,arguments:e.arguments.map(n=>n instanceof um?n.moveArgs(t):n instanceof ur?n.moveArg(t):n instanceof Ya?n.moveArg():t.pure(n)),typeArguments:e.typeArgs})),t}addTransactionBlock(t,e,i=[],n=[]){t.add(Fu.Transactions.MoveCall({target:e,arguments:i.map(r=>r instanceof um?r.moveArgs(t):r instanceof ur?r.moveArg(t):r instanceof Ya?r.moveArg():t.pure(r)),typeArguments:n}))}makeObject(t){return typeof t=="string"?new ur(t):t}vaultObject(){return new ur(this.config.vaultObjId)}roleObject(){return new ur(this.config.roleObjId)}feeObject(){return new ur(this.config.feeObjId)}clockObject(){return new ur(fT)}},Jg=class En extends Xg{constructor(e,i){super(En.ModuleName,e,i),this.config=e,this.globals=i}static ModuleName="fee_module";static MethodName={set_streaming_fee:"set_streaming_fee",set_claim_fee:"set_claim_fee",set_streaming_flat_fee:"set_streaming_flat_fee",streaming_flat_fee:"streaming_flat_fee",streaming_fee:"streaming_fee",claim_fee:"claim_fee",fee_denominator:"fee_denominator"};setStreamingFee(e,i){let n=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:En.MethodName.set_streaming_fee,arguments:[n,r,i],typeArgs:[]})}setStreamingFlatFee(e,i){let n=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:En.MethodName.set_streaming_flat_fee,arguments:[n,r,i],typeArgs:[]})}setClaimFee(e,i){let n=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:En.MethodName.set_claim_fee,arguments:[n,r,i],typeArgs:[]})}streamingFee(e,i){let n=this.feeObject();return this.addContractCall(e,{method:En.MethodName.streaming_fee,arguments:[n,i],typeArgs:[]})}claimFee(e,i){return this.addContractCall(e,{method:En.MethodName.claim_fee,arguments:[this.feeObject(),i],typeArgs:[]})}feeDenominator(e){return this.addContractCall(e,{method:En.MethodName.fee_denominator,arguments:[this.feeObject()],typeArgs:[]})}},tc=class Kt extends Xg{constructor(e,i){super(Kt.ModuleName,e,i),this.config=e,this.globals=i}static ModuleName="stream";static MethodName={create_stream:"create_stream",set_auto_claim:"set_auto_claim",cancel_stream:"cancel_stream",claim_stream:"claim_stream",claim_stream_by_proxy:"claim_stream_by_proxy",stream_current_epoch:"stream_current_epoch",now_milli_seconds:"now_milli_seconds"};createStream(e,i){let n=this.feeObject(),r=this.vaultObject(),o=this.makeObject(i.paymentCoin),s=this.makeObject(i.flatFeeCoin),a=this.clockObject();return this.addContractCall(e,{method:Kt.MethodName.create_stream,arguments:[n,r,o,s,i.metadata,i.recipient,i.timeStart,i.cliff,i.epochInterval,i.numEpoch,i.amountPerEpoch,i.cancelable,a],typeArgs:[i.coinType]})}setAutoClaim(e,i){let n=this.makeObject(i.streamId);return this.addContractCall(e,{method:Kt.MethodName.set_auto_claim,arguments:[n,i.enabled],typeArgs:[i.coinType]})}cancelStream(e,i){let n=this.makeObject(i.streamId),r=this.clockObject();return this.addContractCall(e,{method:Kt.MethodName.cancel_stream,arguments:[n,r],typeArgs:[i.coinType]})}claimStream(e,i){let n=this.makeObject(i.streamId),r=this.clockObject();return this.addContractCall(e,{method:Kt.MethodName.claim_stream,arguments:[n,r],typeArgs:[i.coinType]})}claimStreamByProxy(e,i){let n=this.makeObject(i.streamId),r=this.vaultObject(),o=this.feeObject(),s=this.clockObject();return this.addContractCall(e,{method:Kt.MethodName.claim_stream_by_proxy,arguments:[n,r,o,s],typeArgs:[i.coinType]})}get createStreamTarget(){return`${this.config.contractId}::${Kt.ModuleName}::${Kt.MethodName.create_stream}`}get setAutoClaimTarget(){return`${this.config.contractId}::${Kt.ModuleName}::${Kt.MethodName.set_auto_claim}`}get cancelStreamTarget(){return`${this.config.contractId}::${Kt.ModuleName}::${Kt.MethodName.cancel_stream}`}get claimStreamTarget(){return`${this.config.contractId}::${Kt.ModuleName}::${Kt.MethodName.claim_stream}`}get claimStreamByProxyTarget(){return`${this.config.contractId}::${Kt.ModuleName}::${Kt.MethodName.claim_stream_by_proxy}`}},Yg=class{constructor(t){this.globals=t;let e=t.envConfig.contract;this.feeContract=new Jg(e,t),this.streamContract=new tc(e,t)}feeContract;streamContract;async createStreams(t){let e=Nu.convertCreateStreamInfoToInternal(t);return this.createStreamHelper().buildCreateStreamTransactionBlock(e)}createStreamHelper(){return new Nu(this.globals,this.feeContract,this.streamContract)}setAutoClaim(t,e,i){let n=new is.TransactionBlock;return this.streamContract.setAutoClaim(n,{streamId:t,enabled:e,coinType:i})}claimStream(t,e){let i=new is.TransactionBlock;return this.streamContract.claimStream(i,{streamId:t,coinType:e})}claimStreamByProxy(t,e){let i=new is.TransactionBlock;return this.streamContract.claimStreamByProxy(i,{streamId:t,coinType:e})}cancelStream(t,e){let i=new is.TransactionBlock;return this.streamContract.cancelStream(i,{streamId:t,coinType:e}),i}},Ri=class extends di{constructor(t,e={}){super(0,t,e)}};async function hT(t){let e=[];for(;await t.hasNext();){let i=await t.next();e.push(i)}return e&&Array.isArray(e[0])?e.flat(1):e}var pT=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)}},Qg=class{constructor(t){this.requester=t,this.pager=new pT(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]}},mT=class extends di{constructor(t,e,i){super(4,`Not enough balance: ${t}`,{context:{coinType:t,requestAmount:e,gotAmount:i}}),this.coinType=t,this.requestAmount=e,this.gotAmount=i}},gT=25;async function _T(t,e,i,n="0x2::sui::SUI",r=gT){let o=new bT(t,e,n,r),s=BigInt(0),a=[];for(;await o.hasNext()&&s<i;){let l=await o.next();l&&(a.push(l),s+=BigInt(l.balance))}if(s<i)throw new mT(n,i,s);return a}var bT=class extends Qg{constructor(t,e,i,n){super(new yT(t,e,i,n)),this.suiClient=t,this.owner=e,this.coinType=i,this.reqPageSize=n}},yT=class{constructor(t,e,i,n){if(this.suiClient=t,this.owner=e,this.coinType=i,this.reqPageSize=n,n<=0)throw new Ri("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}}},wT=class extends di{constructor(){super(7,"Connected wallet is not creator")}},hm=class extends di{constructor(){super(8,"Connected wallet is not recipient")}},pm=class extends di{constructor(t,e){super(6,t,{context:e})}},vT=class extends di{constructor(t){super(5,"Stream not found",{context:{streamId:t}})}},kT=(1n<<64n)-1n,Qa=1e3;function mm(t){let e;typeof t=="number"?e=t:typeof t=="bigint"?e=Number(t):e=t.toMillis();let i=Math.round(e/Qa);return Ce.fromMillis(i*Qa)}function gm(t){let e;typeof t=="number"?e=t:typeof t=="bigint"?e=Number(t):e=t.toMillis();let i=Math.round(e/Qa);return je.fromMillis(i*Qa)}var Hu=class jn{constructor(e,i,n){this.globals=e,this.streamId=i,this.rawData=n,this.streamContract=new tc(e.envConfig.contract,e)}streamContract;type="Stream";static async new(e,i){let n=await jn.fetchStreamData(e,i);return new jn(e,i,n)}static fromObjectData(e,i,n){let r=jn.parseRawStreamData(i,n);return new jn(e,i,r)}get info(){return{name:this.name,creator:this.creator,coinType:this.coinType,totalAmount:this.totalAmount,start:this.timeStart,end:this.timeEnd,cancelable:this.cancelable,cliffAmount:this.cliff,duration:this.duration,interval:this.interval,steps:this.totalSteps,nextReleaseDate:this.nextReleaseDate,nextReleaseAmount:this.nextReleaseAmount,groupId:this.groupId,streamId:this.streamId,recipient:this.recipient,progress:this.progress,autoClaim:this.autoClaim}}get groupCommonInfo(){return{name:this.name,groupId:this.groupId,creator:this.creator,start:this.timeStart,interval:this.interval,steps:this.totalSteps,cancelable:this.cancelable}}async refresh(){this.rawData=await jn.fetchStreamData(this.globals,this.streamId)}refreshWithData(e){if(e.data?.objectId!==this.streamId)throw new Ri("Object Id does not align");this.rawData=jn.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 wT;let e=new ns.TransactionBlock;return this.streamContract.cancelStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async claim(){if(await this.globals.walletAddress()!==this.recipient)throw new hm;let e=new ns.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 hm;let i=new ns.TransactionBlock;return this.streamContract.setAutoClaim(i,{streamId:this.streamId,coinType:this.coinType,enabled:e}),i}async claimByProxy(){let e=new ns.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,cs.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 gm(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 mm(this.rawData.config.timeStart)}get duration(){let e=this.rawData.config,i=e.epochInterval*e.totalEpoch;return gm(i)}get timeEnd(){return this.timeStart.plus(this.duration)}get totalSteps(){return this.rawData.config.totalEpoch}get claimable(){return this.streamedAmount-this.claimedAmount}get nextReleaseDate(){return this.currentEpoch===-1n?this.timeStart:this.currentEpoch>=this.totalSteps||this.isCanceled?null:mm((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===kT?0n:this.rawData.status.epochClaimed*this.amountPerEpoch+this.cliff}get currentEpoch(){let e=Ce.now().toMillis(),i=this.timeStart.toMillis();if(e<i)return-1n;let n=Math.floor((e-i)/Number(this.rawData.config.epochInterval));return BigInt(n)>Number(this.rawData.config.totalEpoch)?this.rawData.config.totalEpoch:BigInt(n)}get totalAmount(){let e=this.rawData.config;return e.amountPerEpoch*e.totalEpoch+e.cliff}get isCanceled(){let e=this.rawData.status.status;return e===16||e===17}get canceledAmount(){return this.isCanceled?this.totalAmount-this.streamedAmount:0n}static async fetchStreamData(e,i){let n=await e.suiClient.getObject({id:i,options:{showContent:!0,showType:!0}});return jn.parseRawStreamData(i,n)}static parseRawStreamData(e,i){if(i.error)throw i.error.code==="notExists"?new vT(e):new pm(`get stream data: ${i.error.code}`,{streamId:e,...i.error});let n=i.data.content;if(n.dataType!=="moveObject")throw new pm("Unexpected object type",{gotType:n.dataType});let{typeParams:r}=(0,cs.parseStructTag)(n.type),o=(0,cs.normalizeStructTag)(r[0]),s=n.fields,a=s.config.fields,l=s.status.fields;return{coinType:o,autoClaim:s.auto_claim,balance:BigInt(s.balance.fields.balance),config:{amountPerEpoch:BigInt(a.amount_per_epoch),cancelable:a.cancelable,cliff:BigInt(a.cliff),creator:a.creator,epochInterval:BigInt(a.epoch_interval),metadata:a.metadata,recipient:a.recipient,timeStart:BigInt(a.time_start),totalEpoch:BigInt(a.total_epoch)},status:{status:l.status,epochCanceled:BigInt(l.epoch_canceled),epochClaimed:BigInt(l.epoch_claimed)}}}},TT=class extends di{constructor(t,e){super(12,`Transaction failed: ${e}`,{context:{status:t,msg:e}})}},CT=1e3,ST=class{constructor(t){this.globals=t,this.coinMetaHelper=new xT(t.suiClient),this.createStreamHelper=new Yg(t).createStreamHelper()}coinMetaHelper;createStreamHelper;getStreamIdsFromCreateStreamResponse(t){if(t.effects?.status.status!=="success")throw new TT(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 ui("Invalid stream steps: 0");let e=t.cliff?t.cliff:{numerator:0n,denominator:100n},i=t.totalAmount*e.numerator/e.denominator,n=(t.totalAmount-i)/t.steps,r={realTotalAmount:n*t.steps+i,cliffAmount:i,amountPerStep:n};return this.validateStreamAmount(r,t.totalAmount),r}calculateTimelineByInterval(t){if(t.steps===0n)throw new ui("Invalid stream steps: 0");let e=t.timeStart.plus(t.interval.toMillis()*Number(t.steps)),i={timeStart:t.timeStart,timeEnd:e,interval:t.interval,steps:t.steps};return this.validateTimeline(i),i}calculateTimelineByTotalDuration(t){if(t.steps===0n)throw new ui("Invalid stream steps: 0");let e=BigInt(t.total.toMillis())/t.steps,i=t.timeStart.plus(je.fromMillis(Number(e*t.steps))),n={timeStart:t.timeStart,timeEnd:i,interval:je.fromMillis(Number(e)),steps:t.steps};return this.validateTimeline(n),n}async getBalance(t,e){let i=await this.globals.suiClient.getBalance({owner:t,coinType:e}),n=await this.getCoinMeta(e);return{...i,coinType:(0,so.normalizeStructTag)(i.coinType),coinMeta:n}}async getAllBalance(t){let e=await this.globals.suiClient.getAllBalances({owner:t}),i=await Promise.all(e.map(n=>this.getCoinMeta(n.coinType)));return e.map((n,r)=>({...n,coinType:(0,so.normalizeStructTag)(n.coinType),coinMeta:i[r]}))}async getCoinMeta(t){return this.coinMetaHelper.getCoinMeta(t)}async simulateTransactionBlock(t){return this.globals.suiClient.devInspectTransactionBlock({transactionBlock:t,sender:await this.globals.wallet.address()})}validateStreamAmount(t,e){if(t.amountPerStep===0n)throw new ui("Stream amount too small","totalAmount",e);if(t.cliffAmount>t.realTotalAmount)throw new ui("Invalid cliff settings")}validateTimeline(t){if(t.interval.toMillis()<CT)throw new ui("Interval shall be at least 1 second","interval",t.interval)}},xT=class{constructor(t){this.suiClient=t,this.coinMetaReg=new Map}coinMetaReg;async getCoinMeta(t){let e=(0,so.normalizeStructTag)(t||so.SUI_TYPE_ARG);if(this.coinMetaReg.has(e))return this.coinMetaReg.get(e);let i=await this.queryCoinMeta(e);return i&&this.coinMetaReg.set(e,i),i}async queryCoinMeta(t){return await this.suiClient.getCoinMetadata({coinType:t})||void 0}},Ou=class extends di{constructor(t,e){super(9,`Invalid stream group: ${t}`,{context:e})}},AT=25;async function _m(t,e,i){let n=new e0(e),r=new t0(t,n,i);return await hT(r)}var e0=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]}},t0=class extends Qg{constructor(t,e,i){super(new IT(t,e,i)),this.suiClient=t,this.idIter=e,this.options=i}},IT=class{constructor(t,e,i){this.suiClient=t,this.stringIter=e,this.options=i,this.filter=i?.filter,this.pageSize=i?.pageSize||AT,this.objectOptions=i?.objectOptions||{showType:!0,showContent:!0}}filter;pageSize;objectOptions;async doNextRequest(){let t=[];for(;t.length<this.pageSize&&await this.stringIter.hasNext();){let n=await this.stringIter.next();n&&t.push(n)}let e=await this.suiClient.multiGetObjects({ids:t,options:this.objectOptions}),i;if(this.filter){let{filter:n}=this;i=e.filter(r=>n?.(r))}else i=e;return{data:i,hasNext:await this.stringIter.hasNext()}}},OT=class Ua{constructor(e,i){if(this.globals=e,this.streams=i,i.length===0)throw new Ou("stream size 0");let n=i.map(r=>r.groupId);if(new Set(n).size!==1)throw new ui("Stream does not have same group ID")}type="StreamGroup";static async new(e,i){let n=await _m(e.suiClient,i);return n.forEach(r=>{if(!r)throw new Ri("stream group object data undefined")}),Ua.newFromObjectResponse(e,i,n)}static async newFromObjectResponse(e,i,n){let r=await Ua.parseGroupStreams(e,i,n);return new Ua(e,r)}static checkStreamGroup(e){let i=e.map(o=>o.groupCommonInfo),n=i[0],r=!0;return i.forEach(o=>{PT(n,o)||(r=!1)}),r}async refresh(){let e=await _m(this.globals.suiClient,this.streams.map(i=>i.streamId));this.streams.forEach((i,n)=>{i.refreshWithData(e[n])})}get groupId(){return this.streams[0].groupId}get creator(){return this.streams[0].creator}get info(){return{groupId:this.groupId,streamIds:this.streams.map(e=>e.streamId),progress:this.progress,name:this.streams[0].name,creator:this.creator,coinType:this.streams[0].coinType,totalAmount:this.streams.reduce((e,i)=>e+i.totalAmount,0n),start:this.streams[0].timeStart,end:this.streams[0].timeEnd,cancelable:this.streams[0].cancelable,cliffAmount:this.streams.reduce((e,i)=>e+i.cliff,0n),duration:this.streams[0].duration,interval:this.streams[0].interval,steps:this.streams[0].totalSteps,nextReleaseAmount:this.streams.reduce((e,i)=>i.nextReleaseAmount===null?e:e+i.nextReleaseAmount,0n),nextReleaseDate:this.streams[0].nextReleaseDate}}get progress(){return{total:this.streams.reduce((e,i)=>e+i.totalAmount,0n),streamed:this.streams.reduce((e,i)=>e+i.streamedAmount,0n),claimed:this.streams.reduce((e,i)=>e+i.claimedAmount,0n),claimable:this.streams.reduce((e,i)=>e+i.claimable,0n),canceled:this.streams.reduce((e,i)=>e+i.canceledAmount,0n)}}async historyEvents(e){return this.globals.backend.getStreamHistory({groupId:this.groupId,pagination:e})}static async parseGroupStreams(e,i,n){let r=n.map((o,s)=>Hu.fromObjectData(e,i[s],o)).filter(o=>!!o);if(new Set(r.map(o=>o.groupId)).size!==1)throw new Ou("Not same group ID");if(!this.checkStreamGroup(r))throw new Ou("Not same stream settings");return r}};function PT(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 bm=class Ru{constructor(e,i){this.it=e,this.pageSize=i}static async newIncoming(e){let i=await ym.newIncoming(e);return new Ru(i,e.pageSize)}static async newOutgoing(e){let i=await ym.newOutgoing(e);return new Ru(i,e.pageSize)}async hasNext(){return this.it.hasNext()}async next(){let e=[];for(;e.length<this.pageSize&&await this.it.hasNext();)e.push(await this.it.next());return e}},ym=class qu{constructor(e){this.requester=e}cachedNext;static async newIncoming(e){let i=await wm.newIncomingQuery(e);return new qu(i)}static async newOutgoing(e){let i=await wm.newOutgoingQuery(e);return new qu(i)}async hasNext(){return this.cachedNext===void 0&&(this.cachedNext=await this.requester.doNextRequest()),this.cachedNext!==null}async next(){if(this.cachedNext===void 0){let i=await this.requester.doNextRequest();if(i===null)throw new Ri("No more results");return i}let e=this.cachedNext;if(this.cachedNext=void 0,e===null)throw new Ri("No more results");return e}},wm=class Lu{constructor(e,i,n,r){this.globals=e,this.recipient=i,this.groupRefs=n,this.query=r,this.current=0;let o=new e0(n.flat().map(s=>s.streamId));this.objectIter=new t0(e.suiClient,o)}current=0;objectIter;static async newIncomingQuery(e){let i=BT(e.query),n=await e.globals.walletAddress(),r=(await e.globals.backend.getIncomingStreams(n,i)).filter(s=>(0,Ln.normalizeSuiAddress)(s.recipient)===(0,Ln.normalizeSuiAddress)(n)),o=vm(r);return new Lu(e.globals,n,o,e.query)}static async newOutgoingQuery(e){let i=NT(e.query),n=await e.globals.walletAddress(),r=await e.globals.backend.getOutgoingStreams(n,i),o=vm(r);return new Lu(e.globals,n,o,e.query)}async doNextRequest(){if(this.current>=this.groupRefs.length)return null;let e=this.groupRefs[this.current];if(e.length===1){let i=await ET(this.globals,e[0].streamId,this.objectIter);return this.current++,i0(i,this.query)?i:this.doNextRequest()}if(e.length>1){let i=await jT(this.globals,e.map(n=>n.streamId),this.objectIter);return this.current++,MT(i,this.query)?i:this.doNextRequest()}throw new Ri("Stream group with no stream")}};function vm(t){let e=new Map;return t.forEach(i=>{let n=e.get(i.groupId);n?(n.push(i),e.set(i.groupId,n)):e.set(i.groupId,[i])}),Array.from(e.values()).sort((i,n)=>Ce.fromISO(n[0].createDate).toMillis()-Ce.fromISO(i[0].createDate).toMillis())}function i0(t,e){if(e===void 0)return!0;let i=DT(t,e.status);if(e&&"claimable"in e&&e.claimable!==void 0){let n=e.claimable?t.progress.claimable!==0n:t.progress.claimable===0n;return i&&n}return i}function DT(t,e){return e===void 0?!0:Array.isArray(e)?e.includes(t.progress.status):t.progress.status===e}function MT(t,e){if(!e)return!0;let i=!1;return t.streams.forEach(n=>{i0(n,e)&&(i=!0)}),i}async function ET(t,e,i){let n=await n0(i,e);return Hu.fromObjectData(t,e,n)}async function jT(t,e,i){let n=[];for(;n.length<e.length;){let r=await n0(i,e[n.length]);n.push(r)}return OT.newFromObjectResponse(t,e,n)}async function n0(t,e){if(!await t.hasNext())throw new Ri("object iterator has been consumed");let i=await t.next();if(!i||i.error||i.data===void 0||i.data===null)throw new Ri("object iterator undefined response",{cause:i?.error});if(i?.data?.objectId!==e)throw new Ri("stream id not aligned");return i}function BT(t){return{status:Zu(t?.status),coinType:r0(t?.coinType),sender:o0(t?.sender)}}function NT(t){return{status:Zu(t?.status),coinType:r0(t?.coinType),recipient:o0(t?.recipient)}}function Zu(t){return t===void 0||t.length===0?"all":Array.isArray(t)?t.reduce((e,i)=>{let n=Zu(i);return!e||e===n?n:"all"},void 0):FT(t)}function FT(t){switch(t){case"STREAMING":case"STREAMED":case"CANCELED":return"active";case"COMPLETED":case"SETTLED":return"inactive";default:throw new ui("Unknown stream filtered status")}}function r0(t){if(t)return Array.isArray(t)?t.length!==0?t.map(e=>(0,Ln.normalizeStructTag)(e)):void 0:(0,Ln.normalizeStructTag)(t)}function o0(t){if(t)return Array.isArray(t)?t.length!==0?t.map(e=>(0,Ln.normalizeSuiAddress)(e)):void 0:(0,Ln.normalizeSuiAddress)(t)}var RT=class{constructor(t){this.msafe=t}get type(){return"msafe"}async address(){return this.msafe.address()}async requestCoins(t){return this.msafe.requestCoins(t)}},qT=class{constructor(t){this.account=t}async address(){return this.account.address}},LT=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(Gg(t.coinType,fr.SUI_TYPE_ARG))return{primaryCoin:Hg};if(t.amount<=0)throw new ui("Invalid coin request","coinAmount",t.amount);let e=await _T(this.suiClient,await this.address(),t.amount,t.coinType);if(e.length===0)throw new Ri("no coins available");return{primaryCoin:e[0].coinObjectId,mergedCoins:e.slice(1).map(i=>i.coinObjectId)}}},$T=class{globals;helper;constructor(t,e){this.globals=$g.new(t,e),this.helper=new ST(this.globals)}connectSingleWallet(t){let e=new LT(t,this.globals.suiClient);this.globals.connectWallet(e)}connectMSafeAccount(t){let e=new RT(t);this.globals.connectWallet(e)}async createStream(t){return this.builder().createStreams(t)}async getStream(t){return Hu.new(this.globals,t)}async getIncomingStreams(t,e=10){return bm.newIncoming({globals:this.globals,query:t,pageSize:e})}async getOutgoingStreams(t,e=10){return bm.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,fr.normalizeStructTag)(e))}async getRecipientsForStreamFilter(t){let e=await this.wallet.address();return(await this.globals.backend.getAllRecipients(e,t)).map(i=>(0,fr.normalizeSuiAddress)(i))}async getCreatorsForStreamFilter(t){let e=await this.wallet.address();return(await this.globals.backend.getAllSenders(e,t)).map(i=>(0,fr.normalizeSuiAddress)(i))}get wallet(){return this.globals.wallet}builder(){return new Yg(this.globals)}},UT=class{constructor(t){this.data=t}serialize(){return JSON.stringify((0,s0.default)(this.data))}},us=class extends UT{application="mpay";getClient(t,e){let i=new $T(t==="sui:mainnet"?"prod":"dev");return i.connectSingleWallet(new qT(e)),i}},km=class extends us{constructor(t){super(t),this.data=t}txType=Tg.TransactionType.Stream;txSubType="Cancel";async build(t){let{network:e,account:i}=t;return(await this.getClient(e,i).getStream(this.data.streamId)).cancel()}},Tm=class extends us{constructor(t){super(t),this.data=t}txType=a0.TransactionType.Stream;txSubType="ClaimByProxy";async build(t){let{network:e,account:i}=t;return(await this.getClient(e,i).getStream(this.data.streamId)).claimByProxy()}},Cm=class extends us{constructor(t){super(t),this.data=t}txType=c0.TransactionType.Stream;txSubType="Claim";async build(t){let{network:e,account:i}=t;return(await this.getClient(e,i).getStream(this.data.streamId)).claim()}},Sm=class extends us{constructor(t){super(t),this.data=t}txType=l0.TransactionType.Stream;txSubType="CreateStream";async build(t){let{network:e,account:i}=t;return this.getClient(e,i).createStream(this.data)}},u0=class Ka{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return Ka.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return Ka.getOwnedObjectId(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return BigInt(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,Bn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return Ka.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}static getPureInputValue(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure;return $u.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Bn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Bn.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Bn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Bn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let n=e.value.Pure;return $u.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,Bn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},KT=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"&&eo(e.target,this.contract.createStreamTarget));if(t.length===0)throw new Ri("No create stream transactions");return t.map(e=>new u0(e,this.txb))}getCreationInfoFromMoveCall(t){let e=t.decodeInputString(4),{name:i,groupId:n}=Bu(e),r=t.decodeInputAddress(5),o=t.decodeInputU64(6),s=t.decodeInputU64(7),a=t.decodeInputU64(8),l=t.decodeInputU64(9),u=t.decodeInputU64(10),h=t.decodeInputBool(11),y=t.typeArg(0);return{name:i,groupId:n,recipient:r,timeStart:o,cliff:s,epochInterval:a,totalEpoch:l,amountPerEpoch:u,cancelable:h,coinType:y}}aggregateGroupStreamInfo(t){if(new Set(t.map(i=>JSON.stringify({name:i.name,groupId:i.groupId,timeStart:String(i.timeStart),epochInterval:String(i.epochInterval),totalEpoch:String(i.totalEpoch),cancelable:i.cancelable,coinType:i.coinType}))).size!==1)throw new ui("Stream group not have common info");let e=t.map(i=>({address:i.recipient,amountPerStep:i.amountPerEpoch,cliffAmount:i.cliff}));return{name:t[0].name,coinType:t[0].coinType,recipients:e,interval:t[0].epochInterval,steps:t[0].totalEpoch,startTimeMs:t[0].timeStart,cancelable:t[0].cancelable}}mergeCoinTransactions(){return this.transactions.filter(t=>t.kind==="MergeCoins")}get transactions(){return this.txb.blockData.transactions}get contract(){return new tc(this.globals.envConfig.contract,this.globals)}get feeContract(){return new Jg(this.globals.envConfig.contract,this.globals)}createStreamHelper(){return new Nu(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]}},VT=class{constructor(t,e){this.globals=t,this.txb=e,this.contract=new tc(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"&&eo(t.target,this.contract.createStreamTarget))!==-1}isSetAutoClaimTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&eo(this.transactions[0].target,this.contract.setAutoClaimTarget)}isCancelStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&eo(this.transactions[0].target,this.contract.cancelStreamTarget)}isClaimStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&eo(this.transactions[0].target,this.contract.claimStreamTarget)}isClaimByProxyTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&eo(this.transactions[0].target,this.contract.claimStreamByProxyTarget)}decodeCreateStreamTransaction(){return new KT(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 u0(t,this.txb)}},xm=class extends us{constructor(t){super(t),this.data=t}txType=d0.TransactionType.Stream;txSubType="SetAutoClaim";async build(t){let{network:e,account:i}=t;return(await this.getClient(e,i).getStream(this.data.streamId)).setAutoClaim(this.data.enabled)}},WT=class{application="mpay";async deserialize(t){let{network:e,transactionBlock:i}=t,n=$g.new(e==="sui:mainnet"?"prod":"dev"),r=new VT(n,i).decode(),o;switch(r.type){case"CreateStream":o=new Sm(r.info);break;case"SetAutoClaim":o=new xm({streamId:r.streamId,enabled:r.enabled});break;case"Claim":o=new Cm({streamId:r.streamId});break;case"ClaimByProxy":o=new Tm({streamId:r.streamId});break;case"Cancel":o=new km({streamId:r.streamId});break;default:throw new Error(`Unknown transaction type: ${r}`)}return{txType:o.txType,txSubType:o.txSubType,intentionData:o.data}}async build(t){let{intentionData:e}=t,i;switch(t.txSubType){case"CreateStream":i=new Sm(e);break;case"Claim":i=new Cm(e);break;case"ClaimByProxy":i=new Tm(e);break;case"SetAutoClaim":i=new xm(e);break;case"Cancel":i=new km(e);break;default:throw new Error("not implemented")}return i.build({...t})}},zT=class h0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:i,account:n}=e;return(0,f0.buildCoinTransferTxb)(i,this.data,n.address)}static fromData(e){return new h0(e)}},GT=class m0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:i,account:n}=e;return(0,p0.buildObjectTransferTxb)(i,this.data,n.address)}static fromData(e){return new m0(e)}},HT=class b0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{account:i}=e,n=_0.TransactionBlock.from(this.data.content);if(!(0,g0.isSameAddress)(n.blockData.sender,i.address))throw new Error("Invalid sender address");return n}static fromData(e){return new b0(e)}},ZT=class{application;constructor(){this.application=ro.TransactionDefaultApplication}deserialize(){throw new Error("MSafe core transaction intention should be build from API")}async build(t){let{suiClient:e,account:i}=t,n;switch(t.txSubType){case ro.TransactionSubTypes.assets.coin.send:n=zT.fromData(t.intentionData);break;case ro.TransactionSubTypes.assets.object.send:n=GT.fromData(t.intentionData);break;case ro.TransactionSubTypes.others.plain:n=HT.fromData(t.intentionData);break;default:throw new Error("not implemented")}return n.build({suiClient:e,account:i})}},XT={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=XT,JT=class{constructor(t){this.txb=t}decode(){if(console.log("txb",this.txb),this.isClaimRewardTransaction())return this.decodeClaimReward();if(this.isEntryBorrowTransaction())return this.decodeEntryBorrow();if(this.isEntryDepositTransaction())return this.decodeEntryDeposit();if(this.isEntryRepayTransaction())return this.decodeEntryRepay();if(this.isEntryWithdrawTransaction())return this.decodeEntryWithdraw();throw new Error("Unknown transaction type")}get transactions(){return this.txb.blockData.transactions}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isClaimRewardTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::claim_reward`)}isEntryBorrowTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::entry_borrow`)}isEntryDepositTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::entry_deposit`)}isEntryRepayTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::entry_repay`)}isEntryWithdrawTransaction(){return!!this.getMoveCallTransaction(`${ke.ProtocolPackage}::incentive_v2::entry_withdraw`)}findPoolByAssetId(t){let e=Object.values(ke.pool).find(i=>i.assetId===t);if(!e)throw new Error("Pool not found");return e}decodeClaimReward(){let t=[];return this.transactions.forEach(e=>{if(e.kind==="MoveCall"&&e.target===`${ke.ProtocolPackage}::incentive_v2::claim_reward`){let i=new Am(e,this.txb),n=i.decodeInputU8(4),r=i.decodeInputU8(5),o=i.decodeSharedObjectId(2),s=this.findPoolByAssetId(n),a=[...e.typeArguments];t.push({coinType:s.coinType,option:r,typeArguments:a,assetId:n,poolId:o})}}),console.log("decode claims",t),{txType:to.TransactionType.Other,type:"ClaimReward",intentionData:{claims:t}}}decodeEntryBorrow(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(5),i=this.findPoolByAssetId(t);return{txType:to.TransactionType.Other,type:"EntryBorrow",intentionData:{amount:e,coinType:i.coinType}}}decodeEntryDeposit(){let t=this.helper.decodeInputU8(3),e=this.helper.decodeInputU64(5),i=this.findPoolByAssetId(t);return{txType:to.TransactionType.Other,type:"EntryDeposit",intentionData:{amount:e,coinType:i.coinType}}}decodeEntryRepay(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(6),i=this.findPoolByAssetId(t);return{txType:to.TransactionType.Other,type:"EntryRepay",intentionData:{amount:e,coinType:i.coinType}}}decodeEntryWithdraw(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(5),i=this.findPoolByAssetId(t);return{txType:to.TransactionType.Other,type:"EntryWithdraw",intentionData:{amount:e,coinType:i.coinType}}}get helper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(ke.ProtocolPackage));return new Am(t,this.txb)}},Am=class Va{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return Va.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return Va.getOwnedObjectId(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return Number(i)}decodeInputU8(e){let i=this.decodePureArg(e,"u8");return Number(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,Nn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return Va.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}static getPureInputValue(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure;return Uu.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Nn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Nn.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Nn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Nn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let n=e.value.Pure;return Uu.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,Nn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};function Im(t,e,i,n){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::entry_deposit`,arguments:[t.object("0x06"),t.object(ke.StorageId),t.object(e.poolId),t.pure(e.assetId),i,t.pure(n),t.object(ke.Incentive),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function YT(t,e,i){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::entry_withdraw`,arguments:[t.object("0x06"),t.object(ke.PriceOracle),t.object(ke.StorageId),t.object(e.poolId),t.pure(e.assetId),t.pure(i),t.object(ke.Incentive),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function QT(t,e,i){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::entry_borrow`,arguments:[t.object("0x06"),t.object(ke.PriceOracle),t.object(ke.StorageId),t.object(e.poolId),t.pure(e.assetId),t.pure(i),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function Om(t,e,i,n){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::entry_repay`,arguments:[t.object("0x06"),t.object(ke.PriceOracle),t.object(ke.StorageId),t.object(e.poolId),t.pure(e.assetId),i,t.pure(n),t.object(ke.IncentiveV2)],typeArguments:[e.type]}),t}function eC(t,e,i,n,r){return t.moveCall({target:`${ke.ProtocolPackage}::incentive_v2::claim_reward`,arguments:[t.object("0x06"),t.object(ke.IncentiveV2),t.object(i),t.object(ke.StorageId),t.pure(e),t.pure(n)],typeArguments:r}),t}var tC=class v0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{claims:e}=this.data,i=new w0.TransactionBlock;return e.forEach(n=>{let{assetId:r,poolId:o,option:s,typeArguments:a}=n;eC(i,r,o,s,a)}),i}static fromData(e){return new v0(e)}},iC=class T0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{coinType:e,amount:i}=this.data,n=new k0.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 QT(n,r,i)}static fromData(e){return new T0(e)}};async function S0(t,e,i){let n=await t.getCoins({owner:e,coinType:i});return console.log("getTokenObjs",e,n),n}var nC=class x0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:i,account:n}=e,{coinType:r,amount:o}=this.data,s=new C0.TransactionBlock;if(console.log("build",this.data),r==="sui"){let[h]=s.splitCoins(s.gas,[o]);return Im(s,ke.pool.sui,h,o)}let a=ke.pool[r];if(!a)throw new Error(`${r} not support, please use ${Object.keys(ke.pool).join(", ")}.`);let l=await S0(i,n.address,a.type);if(!l.data[0])throw new Error(`Insufficient balance for ${a.name} Token`);let u=l.data[0].coinObjectId;if(l.data.length>=2){let h=1;for(;h<l.data.length;)s.mergeCoins(u,[l.data[h].coinObjectId]),h++}return Im(s,a,s.object(u),o)}static fromData(e){return new x0(e)}},rC=class I0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let{suiClient:i,account:n}=e,{coinType:r,amount:o}=this.data,s=new A0.TransactionBlock;if(console.log("build",this.data),r==="sui"){let[h]=s.splitCoins(s.gas,[o]);return Om(s,ke.pool.sui,h,o)}let a=ke.pool[r];if(!a)throw new Error(`${r} not support, please use ${Object.keys(ke.pool).join(", ")}.`);let l=await S0(i,n.address,a.type);if(!l.data[0])throw new Error(`Insufficient balance for ${a.name} Token`);let u=l.data[0].coinObjectId;if(l.data.length>=2){let h=1;for(;h<l.data.length;)s.mergeCoins(u,[l.data[h].coinObjectId]),h++}return Om(s,a,s.object(u),o)}static fromData(e){return new I0(e)}},oC=class P0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(){let{coinType:e,amount:i}=this.data,n=new O0.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 YT(n,r,i)}static fromData(e){return new P0(e)}},sC=class{application="navi";async deserialize(t){let{transactionBlock:e}=t,i=new JT(e).decode();return{txType:y0.TransactionType.Other,txSubType:i.type,intentionData:i.intentionData}}async build(t){let{suiClient:e,account:i}=t,n;switch(t.txSubType){case"EntryDeposit":n=nC.fromData(t.intentionData);break;case"EntryBorrow":n=iC.fromData(t.intentionData);break;case"EntryRepay":n=rC.fromData(t.intentionData);break;case"EntryWithdraw":n=oC.fromData(t.intentionData);break;case"ClaimReward":n=tC.fromData(t.intentionData);break;default:throw new Error("not implemented")}return n.build({suiClient:e,account:i})}},aC="msafe-plain-tx",cC=ic.TransactionSubTypes.others.plain,lC=class{application;constructor(){this.application=aC}async deserialize(t){let{transactionBlock:e,suiClient:i}=t,n=await e.build({client:i});return{txType:ic.TransactionType.Other,txSubType:cC,intentionData:{content:(0,nc.toHEX)(n)}}}async build(t){let{suiClient:e,account:i}=t,n=D0.TransactionBlock.from((0,nc.fromHEX)(t.intentionData.content)),r=await e.devInspectTransactionBlock({transactionBlock:n,sender:i.address});if(r.effects.status.status!=="success")throw new Error(r.effects.status.error);return n}},uC=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}},rc="6601955b8b0024600a917079",E0="0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf",Wa="0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",oo="0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6::sca::SCA",oc=["eth","btc","usdc","usdt","sui","apt","sol","cetus","afsui","hasui","vsui","sca"],j0=["eth","btc","usdc","usdt","sui","apt","sol","cetus","afsui","hasui","vsui","sca"],Ku=["seth","ssui","susdc","susdt","scetus","safsui","shasui","svsui"],dC=["sui"],za=["sui","usdc","usdt"],fC={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},B0={seth:"sui",ssui:"sui",susdc:"sui",susdt:"sui",scetus:"sui",safsui:"sui",shasui:"sui",svsui:"sui"},hC={sui:["sui","sca"],usdc:["sui","sca"],usdt:["sui","sca"]},pC={sui:"0x0000000000000000000000000000000000000000000000000000000000000002",eth:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",btc:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",usdc:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",usdt:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",apt:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",sol:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",cetus:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",afsui:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",hasui:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",vsui:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",sca:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6"},Ti={eth:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",btc:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",usdc:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",usdt:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",apt:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",sol:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8"},Pm={vsui:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55"},mC=class{constructor(t,e){this.txb=t,this._builder=e}_builder;decode(){if(this.isExtendPeriodAndStakeMoreSca())return this.decodePeriodAndStakeMoreSca();if(this.isStakeScaFirsTime()||this.isStakeMoreSca())return this.decodeStakeSca();if(this.isSupplyWithStakeSpoolTransaction())return this.decodeSupplyWithStakeSpool();if(this.isUnstakeAndWithdrawTransaction())return this.decodeUnstakeAndWithdraw();if(this.isStakeSpoolTransaction())return this.decodeStakeSpool();if(this.isDepositCollateralTransaction())return this.decodeDepositCollateral();if(this.isWithdrawCollateralTransaction())return this.decodeWithdrawCollateral();if(this.isWithdrawLendingTransaction())return this.decodeWithdrawLending();if(this.isSupplyLendingTransaction())return this.decodeSupplyLending();if(this.isBorrowWithBoostTransaction())return this.decodeBorrowWithBoost();if(this.isBorrowTransaction())return this.decodeBorrow();if(this.isRepayTransaction())return this.decodeRepay();if(this.isUnstakeSpoolTransaction())return this.decodeUnstakeSpool();if(this.isClaimRewardTransaction())return this.decodeClaimReward();if(this.isRenewExpiredVeSca())return this.decodeRenewExpiredVeSca();if(this.isExtendPeriod())return this.decodeExtendStakePeriod();if(this.isOpenObligationTransaction())return this.decodeOpenObligation();if(this.isRedeemSca())return this.decodeRedeemSca();if(this.isMigrateAndClaim())return this.decodeMigrateAndClaim();throw new Error("Unknown transaction type")}get coreId(){return{protocolPkg:this._builder.address.get("core.packages.protocol.id"),market:this._builder.address.get("core.market"),version:this._builder.address.get("core.version"),coinDecimalsRegistry:this._builder.address.get("core.coinDecimalsRegistry"),xOracle:this._builder.address.get("core.oracles.xOracle"),spoolPkg:this._builder.address.get("spool.id"),borrowIncentivePkg:this._builder.address.get("borrowIncentive.id"),veScaPkgId:this._builder.address.get("vesca.id")}}get transactions(){return this.txb.blockData.transactions}get inputTransaction(){return this.txb.blockData.inputs}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isSupplyLendingTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::mint::mint`)}isSupplyWithStakeSpoolTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.protocolPkg}::mint::mint`),e=this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::stake`);return!!t&&!!e}isUnstakeAndWithdrawTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::unstake`),e=this.getMoveCallTransaction(`${this.coreId.protocolPkg}::redeem::redeem`);return!!t&&!!e}isStakeSpoolTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::stake`)}isWithdrawLendingTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::redeem::redeem`)}isDepositCollateralTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::deposit_collateral::deposit_collateral`)}isWithdrawCollateralTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::withdraw_collateral::withdraw_collateral`)}isBorrowTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::borrow::borrow`)}isBorrowWithBoostTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.protocolPkg}::borrow::borrow`),e=this.getMoveCallTransaction(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca`);return!!t&&!!e}isRepayTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::repay::repay`)}isUnstakeSpoolTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::unstake`)}isCreateStakeAccountTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::new_spool_account`)}isClaimRewardTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::redeem_rewards`),e=this.getMoveCallTransaction(`${this.coreId.borrowIncentivePkg}::user::redeem_rewards`);return!!t||!!e}isStakeScaFirsTime(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_key`)}isExtendPeriodAndStakeMoreSca(){let t=this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`),e=this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`);return!!t&&!!e}isRedeemSca(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::redeem`)}isStakeMoreSca(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`)}isExtendPeriod(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`)}isRenewExpiredVeSca(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::renew_expired_ve_sca`)}isOpenObligationTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::open_obligation::open_obligation_entry`)}isMigrateAndClaim(){let t=this.getMoveCallTransaction(`${Wa}::user::redeem_rewards`),e=this.getMoveCallTransaction(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca`);return!!t&&!!e}decodeMigrateAndClaim(){let t=this.helperStakeObligationWithVeSca.decodeOwnedObjectId(9),e=this.helperClaimBorrowReward[0].decodeSharedObjectId(2),i=this.helperClaimBorrowReward[0].decodeOwnedObjectId(3),n=this._builder.utils.parseCoinNameFromType(this.helperClaimBorrowReward[0].typeArg(0));return{txType:It.TransactionType.Other,type:"MigrateAndClaim",intentionData:{veScaKey:t,obligationKey:e,obligationId:i,rewardCoinName:n}}}decodeOpenObligation(){return{txType:It.TransactionType.Other,type:"OpenObligation",intentionData:{}}}decodeRedeemSca(){let t=this.helperRedeemSca.decodeOwnedObjectId(1);return{txType:It.TransactionType.Other,type:"RedeemSca",intentionData:{veScaKey:t}}}decodeRenewExpiredVeSca(){let t=this.helperRenewExpired.getNestedInputParam(4),e=this.helperRenewExpired.decodeInputU64(5),i=new Gi(t,this.txb).getAmountInput().reduce((C,O)=>C+O,0),n=this.helperRenewExpired.decodeOwnedObjectId(1),r=!!this.helperRedeemSca.moveCall,o=[],s=[],a=[];this.helperOldUnstakeObligation.moveCall&&(o=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(s=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeObligationWithVeSca.moveCall&&(a=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let l=!1,u=!1,h,y,v=[{condition:o,isOld:!0},{condition:s,isOld:!1},{condition:a,isOld:!1}];for(let C=0;C<v.length;C++)v[C].condition.length>1&&([y,h]=v[C].condition,l=!0,u=v[C].isOld);return{txType:It.TransactionType.Other,type:"RenewExpStakePeriod",intentionData:{amount:i,lockPeriodInDays:e,obligationId:h,obligationKey:y,veScaKey:n,isHaveRedeem:r,isObligationLocked:l,isOldBorrowIncentive:u}}}decodeExtendStakePeriod(){let t=this.helperExtendStakePeriod.decodeInputU64(4),e=this.helperExtendStakePeriod.decodeOwnedObjectId(1),i=[],n=[],r=[];this.helperOldUnstakeObligation.moveCall&&(i=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(n=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeObligationWithVeSca.moveCall&&(r=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let o=!1,s=!1,a,l,u=[{condition:i,isOld:!0},{condition:n,isOld:!1},{condition:r,isOld:!1}];for(let h=0;h<u.length;h++)u[h].condition.length>1&&([l,a]=u[h].condition,o=!0,s=u[h].isOld);return{txType:It.TransactionType.Other,type:"ExtendStakePeriod",intentionData:{lockPeriodInDays:t,obligationId:a,obligationKey:l,veScaKey:e,isObligationLocked:o,isOldBorrowIncentive:s}}}decodePeriodAndStakeMoreSca(){let t=this.helperStakeMoreSca.getNestedInputParam(4),e=this.helperExtendStakePeriod.decodeInputU64(4),i=new Gi(t,this.txb).getAmountInput().reduce((v,C)=>v+C,0),n=[],r=[],o,s=[];this.helperOldUnstakeObligation.moveCall&&(n=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(r=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeMoreSca.moveCall&&(o=this.helperStakeMoreSca.decodeOwnedObjectId(1)),this.helperStakeObligationWithVeSca.moveCall&&(s=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let a=!1,l=!1,u,h,y=[{condition:n,isOld:!0},{condition:r,isOld:!1},{condition:s,isOld:!1}];for(let v=0;v<y.length;v++)y[v].condition.length>1&&([h,u]=y[v].condition,a=!0,l=y[v].isOld);return{txType:It.TransactionType.Other,type:"ExtendPeriodAndStakeMore",intentionData:{amount:i,veScaKey:o,lockPeriodInDays:e,obligationId:u,obligationKey:h,isOldBorrowIncentive:l,isObligationLocked:a}}}decodeStakeSca(){let t,e;this.helperStakeSca.moveCall&&this.helperStakeMoreSca.moveCall===void 0?(t=this.helperStakeSca.getNestedInputParam(3),e=this.helperStakeSca.decodeInputU64(4)):(t=this.helperStakeMoreSca.getNestedInputParam(4),console.log(t));let i=new Gi(t,this.txb).getAmountInput().reduce((v,C)=>v+C,0),n=[],r=[],o,s=[];this.helperOldUnstakeObligation.moveCall&&(n=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(r=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeMoreSca.moveCall&&(o=this.helperStakeMoreSca.decodeOwnedObjectId(1)),this.helperStakeObligationWithVeSca.moveCall&&(s=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let a=!1,l=!1,u,h,y=[{condition:n,isOld:!0},{condition:r,isOld:!1},{condition:s,isOld:!1}];for(let v=0;v<y.length;v++)y[v].condition.length>1&&([h,u]=y[v].condition,a=!0,l=y[v].isOld);return{txType:It.TransactionType.Other,type:"StakeSca",intentionData:{amount:i,lockPeriodInDays:e,obligationId:u,obligationKey:h,veScaKey:o,isObligationLocked:a,isOldBorrowIncentive:l}}}decodeSupplyLending(){let t=this._builder.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),e=this.helperMint.getNestedInputParam(2),i=new Gi(e,this.txb).getAmountInput().reduce((n,r)=>n+r,0);return{txType:It.TransactionType.Other,type:"SupplyLending",intentionData:{amount:i,coinName:t}}}decodeWithdrawLending(){let t=this._builder.utils.parseCoinNameFromType(this.helperRedeem.typeArg(0)),e=this.helperRedeem.getNestedInputParam(2),i=new Gi(e,this.txb).getAmountInput().reduce((n,r)=>n+r,0);return{txType:It.TransactionType.Other,type:"WithdrawLending",intentionData:{amount:i,coinName:t}}}decodeDepositCollateral(){let t=this._builder.utils.parseCoinNameFromType(this.helperDepositCollateral.typeArg(0)),e=this.helperDepositCollateral.getNestedInputParam(3),i=new Gi(e,this.txb).getAmountInput().reduce((r,o)=>r+o,0),n=this.helperDepositCollateral.decodeSharedObjectId(1);return{txType:It.TransactionType.Other,type:"DepositCollateral",intentionData:{amount:i,obligationId:n,collateralCoinName:t}}}decodeWithdrawCollateral(){let t=this._builder.utils.parseCoinNameFromType(this.helperWithdrawCollateral.typeArg(0)),e=this.helperWithdrawCollateral.decodeInputU64(5),i=this.helperWithdrawCollateral.decodeSharedObjectId(1),n=this.helperWithdrawCollateral.decodeOwnedObjectId(2);return{txType:It.TransactionType.Other,type:"WithdrawCollateral",intentionData:{amount:e,collateralCoinName:t,obligationKey:n,obligationId:i}}}decodeBorrow(){let t=this._builder.utils.parseCoinNameFromType(this.helperBorrow.typeArg(0)),e=this.helperBorrow.decodeInputU64(5),i=this.helperBorrow.decodeSharedObjectId(1),n=this.helperBorrow.decodeOwnedObjectId(2);return{txType:It.TransactionType.Other,type:"Borrow",intentionData:{amount:e,coinName:t,obligationKey:n,obligationId:i}}}decodeBorrowWithBoost(){let t=this._builder.utils.parseCoinNameFromType(this.helperBorrow.typeArg(0)),e=this.helperStakeObligationWithVeSca.decodeOwnedObjectId(9),i=this.helperBorrow.decodeInputU64(5),n=this.helperBorrow.decodeSharedObjectId(1),r=this.helperBorrow.decodeOwnedObjectId(2);return{txType:It.TransactionType.Other,type:"BorrowWithBoost",intentionData:{amount:i,coinName:t,obligationKey:r,obligationId:n,veScaKey:e}}}decodeRepay(){let t=this._builder.utils.parseCoinNameFromType(this.helperRepay.typeArg(0)),e=this.helperRepay.getNestedInputParam(3),i=new Gi(e,this.txb).getAmountInput().reduce((r,o)=>r+o,0),n=this.helperRepay.decodeSharedObjectId(1);return{txType:It.TransactionType.Other,type:"Repay",intentionData:{amount:i,obligationId:n,coinName:t}}}decodeStakeSpool(){let t;this.isCreateStakeAccountTransaction()||(t=this.helperStake.decodeOwnedObjectId(1));let e=this.helperStake.getNestedInputParam(2),i=new Gi(e,this.txb).getAmountInput().reduce((o,s)=>o+s,0),n=this.helperStake.typeArg(0),r=this._builder.utils.parseCoinNameFromType(n);return{txType:It.TransactionType.Other,type:"StakeSpool",intentionData:{amount:i,marketCoinName:r,stakeAccountId:t}}}decodeUnstakeSpool(){let t=this.helperUnstake.decodeOwnedObjectId(1),e=this.helperUnstake.decodeInputU64(2),i=this.helperUnstake.typeArg(0),n=this._builder.utils.parseCoinNameFromType(i);return{txType:It.TransactionType.Other,type:"UnstakeSpool",intentionData:{amount:e,marketCoinName:n,stakeAccountId:t}}}decodeSupplyWithStakeSpool(){let t=this._builder.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),e=this.helperMint.getNestedInputParam(2),i=new Gi(e,this.txb).getAmountInput().reduce((r,o)=>r+o,0),n;return this.isCreateStakeAccountTransaction()||(n=this.helperStake.decodeOwnedObjectId(1)),{txType:It.TransactionType.Other,type:"SupplyAndStakeLending",intentionData:{amount:i,coinName:t,stakeAccountId:n}}}decodeUnstakeAndWithdraw(){let t=[];this.helperUnstakes.forEach(r=>{let o=r.decodeOwnedObjectId(1),s=r.decodeInputU64(2);t.push({id:o,coin:s})});let e=this._builder.utils.parseCoinNameFromType(this.helperRedeems[0].typeArg(0)),i=this.helperRedeems.find(r=>r.isHaveNestedInput(2)),n;return i&&(n=new Gi(i.getNestedInputParam(2),this.txb).getAmountInput().reduce((r,o)=>r+o,0)),{txType:It.TransactionType.Other,type:"WithdrawAndUnstakeLending",intentionData:{amount:n,coinName:e,stakeAccountId:t}}}decodeClaimReward(){let t=[],e=[],i=[];return this.helperClaimLendingReward.forEach(n=>{let r=n.decodeOwnedObjectId(2),o=n.typeArg(0),s=this._builder.utils.parseCoinNameFromType(o);t.push({stakeMarketCoinName:s,stakeAccountId:r})}),this.helperClaimBorrowV2Reward.forEach(n=>{let r=n.decodeSharedObjectId(3),o=n.decodeOwnedObjectId(4),s=this._builder.utils.parseCoinNameFromType(n.typeArg(0));e.push({obligationId:o,obligationKey:r,rewardCoinName:s})}),this.helperClaimBorrowReward.forEach(n=>{let r=n.decodeSharedObjectId(2),o=n.decodeOwnedObjectId(3),s=this._builder.utils.parseCoinNameFromType(n.typeArg(0));i.push({obligationId:o,obligationKey:r,rewardCoinName:s})}),{txType:It.TransactionType.Other,type:"ClaimIncentiveReward",intentionData:{lendingIncentive:t,borrowIncentiveV2:e,borrowIncentive:i}}}get helperClaimLendingReward(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${this.coreId.spoolPkg}::user::redeem_rewards`)).map(t=>new Ge(t,this.txb))}get helperClaimBorrowV2Reward(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${this.coreId.borrowIncentivePkg}::user::redeem_rewards`)).map(t=>new Ge(t,this.txb))}get helperStakeMoreSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`));return new Ge(t,this.txb)}get helperStakeSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_key`));return new Ge(t,this.txb)}get helperExtendStakePeriod(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`));return new Ge(t,this.txb)}get helperRedeemSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::redeem`));return new Ge(t,this.txb)}get helperRenewExpired(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::renew_expired_ve_sca`));return new Ge(t,this.txb)}get helperOldUnstakeObligation(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${Wa}::user::unstake`));return new Ge(t,this.txb)}get helperUnstakeObligation(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.borrowIncentivePkg}::user::unstake`));return new Ge(t,this.txb)}get helperStakeObligationWithVeSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca`));return new Ge(t,this.txb)}get helperClaimBorrowReward(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${Wa}::user::redeem_rewards`)).map(t=>new Ge(t,this.txb))}get helperMint(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::mint::mint`));return new Ge(t,this.txb)}get helperUnstakes(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${this.coreId.spoolPkg}::user::unstake`)).map(t=>new Ge(t,this.txb))}get helperRedeems(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target.startsWith(`${this.coreId.protocolPkg}::redeem::redeem`)).map(t=>new Ge(t,this.txb))}get helperRedeem(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::redeem::redeem`));return new Ge(t,this.txb)}get helperStake(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.spoolPkg}::user::stake`));return new Ge(t,this.txb)}get helperUnstake(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.spoolPkg}::user::unstake`));return new Ge(t,this.txb)}get helperDepositCollateral(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::deposit_collateral::deposit_collateral`));return new Ge(t,this.txb)}get helperWithdrawCollateral(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::withdraw_collateral::withdraw_collateral`));return new Ge(t,this.txb)}get helperBorrow(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::borrow::borrow`));return new Ge(t,this.txb)}get helperRepay(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::repay::repay`));return new Ge(t,this.txb)}},Gi=class{constructor(t,e){this.splitCoin=t,this.txb=e}getAmountInput(){return this.splitCoin.amounts.map(t=>{if(t.kind==="Input")return Number(Ge.getPureInputValue(t,"u64"))}).filter(t=>t!==void 0)}static getPureInputValue(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value=="object"&&"Pure"in t.value){let i=t.value.Pure;return ec.bcs.de(e,new Uint8Array(i))}return t.value}},Ge=class Ga{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return Ga.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return Ga.getOwnedObjectId(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return Number(i)}decodeInputU8(e){let i=this.decodePureArg(e,"u8");return Number(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,Fn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return Ga.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}getNestedInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="NestedResult")throw new Error("not input type");return this.txb.blockData.transactions[i.index]}isHaveNestedInput(e){return this.moveCall.arguments[e].kind==="NestedResult"}static getPureInputValue(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure;return ec.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Fn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Fn.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Fn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Fn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let n=e.value.Pure;return ec.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,Fn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},gC={mainnet:{core:{version:"0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",versionCap:"0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",object:"0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf",market:"0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",adminCap:"0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",coinDecimalsRegistry:"0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",obligationAccessStore:"0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9",coins:{cetus:{id:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",metaData:"0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",feedObject:"0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"}}},apt:{id:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",metaData:"0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",feedObject:"0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"}}},sol:{id:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",metaData:"0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",feedObject:"0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"}}},btc:{id:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",metaData:"0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",feedObject:"0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"}}},eth:{id:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",metaData:"0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",feedObject:"0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"}}},usdc:{id:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",metaData:"0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",feedObject:"0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"}}},usdt:{id:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",metaData:"0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",feedObject:"0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"}}},sui:{id:"0x0000000000000000000000000000000000000000000000000000000000000002",metaData:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",treasury:"",oracle:{supra:"",switchboard:"0xbca474133638352ba83ccf7b5c931d50f764b09550e16612c9f70f1e21f3f594",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},afsui:{id:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",metaData:"0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},hasui:{id:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",metaData:"0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},vsui:{id:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",metaData:"0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},sca:{id:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",metaData:"0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",feedObject:"0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"}}}},oracles:{xOracle:"0x93d5bf0936b71eb27255941e532fac33b5a5c7759e377b4923af0a1359ad494f",xOracleCap:"0x1edeae568fde99e090dbdec4bcdbd33a15f53a1ce1f87aeef1a560dedf4b4a90",supra:{registry:"",registryCap:"",holder:""},switchboard:{registry:"",registryCap:""},pyth:{registry:"0xedc293f9413a5a7a5d53bdba1fd889d0a4030894469228f0acdae4aa3c55a213",registryCap:"0xbcb07141eb1f7e01fbda4130ecf5f5adaeabb77f5d9c32158b7532bcd2197acd",state:"0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",wormhole:"0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",wormholeState:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"}},packages:{coinDecimalsRegistry:{id:"0xca5a5a62f01c79a104bf4d31669e29daa387f325c241de4edbe30986a9bc8b0d",upgradeCap:"0x34e76a945d29f195bc53ca704fa70877d1cf3a5d7bbfdda1b13e633fff13c0f6"},math:{id:"0xad013d5fde39e15eabda32b3dbdafd67dac32b798ce63237c27a8f73339b9b6f",upgradeCap:"0x3a329598231de02e6135c62284b66005b41cad1d9ab7ca2dc79c08293aba2ec6"},whitelist:{id:"0x1318fdc90319ec9c24df1456d960a447521b0a658316155895014a6e39b5482f",upgradeCap:"0xf5a22aea23db664f7b69855b6a546747f17c1ec4230319cfc17225e462b05761"},x:{id:"0x779b5c547976899f5474f3a5bc0db36ddf4697ad7e5a901db0415c2281d28162",upgradeCap:"0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"},protocol:{id:"0x38fe42a5a69f7eb3635404389e8003be9457b1a5c873f133184648c7e9bd47b7",upgradeCap:"0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"},protocolWhitelist:{id:"0x4c262d9343dac53ecb28f482a2a3f62c73d0ebac5b5f03d57383d56ff219acdf",upgradeCap:"0x4a5e88a75039b00988f633f811f58117f31b8627a46bf822aa114d9010049449"},query:{id:"0xb8d603a39114a5efef3dd0bf84df0bed1be1fbd39b78b7dd6e8a61ccc5e6006f",upgradeCap:"0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"},supra:{id:"",upgradeCap:""},pyth:{id:"0x910f30cbc7f601f75a5141a01265cd47c62d468707c5e1aecb32a18f448cb25a",upgradeCap:"0xdf0ffbae1ea5bb25fbca5efba433dcf00c7cced65679af2f04728901275c6157"},switchboard:{id:"",upgradeCap:""},xOracle:{id:"0x1478a432123e4b3d61878b629f2c692969fdb375644f1251cd278a4b1e7d7cd6",upgradeCap:"0x0f928a6b2e26b73330fecaf9b44acfc9800a4a9794d6415c2a3153bc70e3c1f0"},testCoin:{id:"",upgradeCap:""}}},spool:{id:"0xec1ac7f4d01c5bf178ff4e62e523e7df7721453d81d4904a42a0ffc2686c843d",adminCap:"0xdd8a047cbbf802bfcde5288b8ef1910965d789cc614da11d39af05fca0bd020a",object:"0xe87f1b2d498106a2c61421cec75b7b5c5e348512b0dc263949a0e7a3c256571a",pools:{seth:{id:"0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",rewardPoolId:"0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"},ssui:{id:"0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",rewardPoolId:"0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9"},susdc:{id:"0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",rewardPoolId:"0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8"},susdt:{id:"0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",rewardPoolId:"0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080"},scetus:{id:"0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",rewardPoolId:"0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"},safsui:{id:"0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",rewardPoolId:"0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e"},shasui:{id:"0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",rewardPoolId:"0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66"},svsui:{id:"0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",rewardPoolId:"0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a"}},version:"",versionCap:""},borrowIncentive:{id:"0x874f1d43d81e2256e120bab2485938fe07ba0cc21d87129a99a1db11cacb382d",adminCap:"0xc486afa253646f4d381e81d7f1df8aa4723b845a6bb356f69bad635ffefffe2c",object:"0x002875153e09f8145ab63527bc85c00f2bd102e12f9573c47f8cdf1a1cb62934",query:"0x529edc54a3dce2207703ceebbccb0ac14133f7825c1f528775ba0d85a4063489",incentivePools:"0x6547e143d406b5ccd5f46aae482497de279cc1a68c406f701df70a05f9212ab4",incentiveAccounts:"0xc4701fdbc1c92f9a636d334d66012b3027659e9fb8aff27279a82edfb6b77d02",config:"0xdf5d04b4691cc67e82fd4db8394d89ff44823a9de29716c924f74bb4f11cc1f7",version:"",versionCap:""},vesca:{id:"0xcfe2d87aa5712b67cad2732edb6a2201bfdf592377e5c0968b7cb02099bd8e21",adminCap:"0x4d105b16467acca81d18c132cdd1a3cee159920a86c1ef4bdbf2e8d7878500c5",tableId:"0x0a0b7f749baeb61e3dfee2b42245e32d0e6b484063f0a536b33e771d573d7246",table:"0xd3a4632b1080f7d96e1c2487d4dabf2c1196916937c505a69954ac9f393be8d0",treasury:"0xafa4b6231e49c15a22d641ce33fda761baaf650fa21899dfa2eb1716146e7306",config:"0x7cbcb0a342179577a117dfdff974cf1ab765d3b571067bf22ddf5f9e3a667922"}}},sc=class{_auth;_id;_network;_currentAddresses;_addressesMap;constructor(t){let{id:e,auth:i,network:n}=t;i&&(this._auth=i),this._id=e,this._network=n||"mainnet",this._addressesMap=new Map}getId(){return this._id||void 0}get(t){if(this._currentAddresses)return t.split(".").reduce((e,i)=>typeof e=="object"?e[i]:e,this._currentAddresses)||void 0}set(t,e){if(this._currentAddresses){let i=t.split(".");i.reduce((n,r,o)=>{if(o===i.length-1){let s=n;s[r]=e}return n[r]},this._currentAddresses)}return this._currentAddresses}switchCurrentAddresses(t){return this._addressesMap.has(t)&&(this._currentAddresses=this._addressesMap.get(t),this._network=t),this._currentAddresses}getAddresses(t){return t?this._addressesMap.get(t):this._currentAddresses??this._addressesMap.get(this._network)}setAddresses(t,e){let i=e||this._network;i===this._network&&(this._currentAddresses=t),this._addressesMap.set(i,t)}getAllAddresses(){return Object.fromEntries(this._addressesMap)}read(){return Object.entries(gC).forEach(([t,e])=>{["localnet","devnet","testnet","mainnet"].includes(t)&&(t===this._network&&(this._currentAddresses=e),this._addressesMap.set(t,e))}),this.getAllAddresses()}},Ci=t=>{let{sender:e}=t.blockData;if(!e)throw new Error("Sender is required");return e},_C=(t,e,i,n)=>{let r=!n,o=!r&&n*1e3<=new Date().getTime();if(r||o)if(t!==void 0&&e!==void 0){if(e<=0)throw new Error("Lock period must be greater than 0");if(typeof t=="number"&&t<1e10)throw new Error(`Minimum lock amount for ${o?"renewing expired veSca":"initial lock"} is 10 SCA`);if(e*86400>126144e3)throw new Error("Maximum lock period is ~4 years (1460 days)")}else throw new Error(`SCA amount and lock period is required for ${o?"renewing expired veSca":"initial lock"}`);else{if(ds(n),typeof t=="number"&&t<1e9)throw new Error("Minimum top up amount is 1 SCA");if(i&&n&&i-n>126057600)throw new Error("Maximum lock period is ~4 years (1459 days)")}},bC=(t,e,i)=>{if(ds(i),t<=0)throw new Error("Lock period must be greater than 0");if(i&&i*1e3<=new Date().getTime())throw new Error("veSca is expired, use renewExpiredVeScaQuick instead");if(i&&e-(i??0)>126057600)throw new Error("Maximum lock period is ~4 years (1459 days)")},yC=(t,e)=>{if(ds(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")},wC=(t,e,i)=>{if(ds(i),t<1e10)throw new Error("Minimum lock amount for renewing expired vesca 10 SCA");if(e*86400>=126057600)throw new Error("Maximum lock period is ~4 years (1459 days)")},ds=t=>{if(t===void 0)throw new Error("veSca not found")},vC=t=>({pointType:(0,fs.normalizeStructTag)(t.point_type.name),weightedAmount:Number(t.weighted_amount),points:Number(t.points),totalPoints:Number(t.total_points),index:Number(t.index)}),kC=t=>({poolType:(0,fs.normalizeStructTag)(t.pool_type.name),debtAmount:Number(t.debt_amount),pointList:t.points_list.reduce((e,i)=>{let n=vC(i),r=(0,fs.parseStructTag)(n.pointType).name.toLowerCase();return e[r]=n,e},{})}),Dm=t=>{let e=t.slice(1).toLowerCase();return t.charAt(0).toLowerCase()==="s"&&[...new Set([...oc,...j0,...dC])].includes(e)},Mm=t=>{switch(t){case"afsui":return"afSUI";case"hasui":return"haSUI";case"vsui":return"vSUI";default:return t.toUpperCase()}},TC=t=>{let e=new Date(t*1e3),i=new Date(t*1e3);i.setUTCHours(0,0,0,0),e.getUTCHours()>=0&&i.setUTCDate(i.getUTCDate()+1);let n=new Date().getTime();return i.getTime()-n>126144e3*1e3&&i.setUTCDate(i.getUTCDate()-1),Math.floor(i.getTime()/1e3)},Xu=class{params;isTestnet;_address;client;constructor(t,e){this.params=t,this._address=e?.address??new sc({id:t?.addressesId||rc,network:t?.networkType}),this.isTestnet=t.networkType?t.networkType==="testnet":!1,this.client=t.client}init(t=!1,e){t||!this._address.getAddresses()||!e?.getAddresses()?this._address.read():this._address=e}parseSymbol(t){if(Dm(t)){let e=t.slice(1).toLowerCase();return t.slice(0,1).toLowerCase()+Mm(e)}return Mm(t)}parseCoinType(t){let e=Dm(t)?this.parseCoinName(t):t,i=this._address.get(`core.coins.${e}.id`)||pC[t]||void 0;if(!i)throw Error(`Coin ${t} is not supported`);if(t==="sui")return(0,ls.normalizeStructTag)(`${i}::sui::SUI`);let n=[this._address.get("core.coins.usdc.id")??Ti.usdc,this._address.get("core.coins.usdt.id")??Ti.usdt,this._address.get("core.coins.eth.id")??Ti.eth,this._address.get("core.coins.btc.id")??Ti.btc,this._address.get("core.coins.sol.id")??Ti.sol,this._address.get("core.coins.apt.id")??Ti.apt],r=[this._address.get("core.coins.vsui.id")??Pm.vsui];return n.includes(i)?`${i}::coin::COIN`:r.includes(i)?`${i}::cert::CERT`:`${i}::${e}::${e.toUpperCase()}`}parseMarketCoinType(t){let e=this._address.get("core.object")||E0,i=this.parseCoinType(t);return`${e}::reserve::MarketCoin<${i}>`}parseCoinNameFromType(t){let e=(0,ls.normalizeStructTag)(t),i=/((0x[^:]+::[^:]+::[^<>]+))(?![^<>]*<)/,n=t.match(i),r=t.includes("reserve::MarketCoin");e=n?.[1]||t;let o={[`${this._address.get("core.coins.usdc.id")??Ti.usdc}::coin::COIN`]:"usdc",[`${this._address.get("core.coins.usdt.id")??Ti.usdt}::coin::COIN`]:"usdt",[`${this._address.get("core.coins.eth.id")??Ti.eth}::coin::COIN`]:"eth",[`${this._address.get("core.coins.btc.id")??Ti.btc}::coin::COIN`]:"btc",[`${this._address.get("core.coins.sol.id")??Ti.sol}::coin::COIN`]:"sol",[`${this._address.get("core.coins.apt.id")??Ti.apt}::coin::COIN`]:"apt"},s={[`${this._address.get("core.coins.vsui.id")??Pm.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=>B0[t];getBorrowIncentiveRewardCoinName=t=>hC[t];getCoinDecimal(t){return fC[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=ls.SUI_TYPE_ARG,i){let n=i,r=[],o=0,s=!0,a=null;for(;s&&o<t;){let l=await this.client.getCoins({owner:n,coinType:e,cursor:a});l.data.sort((u,h)=>parseInt(h.balance,10)-parseInt(u.balance,10));for(let u=0;u<l.data.length&&(r.push({objectId:l.data[u].coinObjectId,digest:l.data[u].digest,version:l.data[u].version}),o+=parseInt(l.data[u].balance,10),!(o>=t));u++);a=l.nextCursor,s=l.hasNextPage}if(!r.length)throw new Error("No valid coins found for the transaction.");return r.map(l=>l.objectId)}parseAprToApy(t,e=365){return(1+t/e)**e-1}parseApyToApr(t,e=365){return((1+t)**(1/e)-1)*e}takeAmountFromCoins(t,e,i){let n=e.map(s=>t.object(s)),r=n[0];n.length>1&&t.mergeCoins(r,n.slice(1));let[o]=t.splitCoins(r,[t.pure(i)]);return[o,r]}getUnlockAt(t,e){let i=Math.floor(new Date().getTime()/1e3),n=e?Math.max(e-i,0):0,r=0;if(n===0){let o=(t??1)*86400;r=Math.min(i+o,i+126144e3)}else{let o=Math.min(t?t*86400+n:n,126144e3);r=i+o}return TC(r)}},Ju=async(t,e)=>{let i=e,n=t.address.get("core.object")||E0,r=[],o=!1,s=null;do{let h=await t.client.getOwnedObjects({owner:i,filter:{StructType:`${n}::obligation::ObligationKey`},cursor:s});r.push(...h.data),h.hasNextPage&&h.nextCursor?(o=!0,s=h.nextCursor):o=!1}while(o);let a=r.map(h=>h?.data?.objectId).filter(h=>h!==void 0),l=await t.client.multiGetObjects({ids:a,options:{showContent:!0,showType:!0}}),u=[];for(let h=0;h<l.length;h++){let y=l[h].data.objectId,{content:v}=l[h].data;if(v&&"fields"in v){let C=v.fields,O=String(C.ownership.fields.of),P=await L0(t,O);u.push({id:O,keyId:y,locked:P})}}return u},L0=async(t,e)=>{let i=await t.client.getObject({id:e,options:{showContent:!0}}),n=!1;return i.data&&i?.data?.content?.dataType==="moveObject"&&"lock_key"in i.data.content.fields&&(n=!!i.data.content.fields.lock_key),n},CC=async(t,e,i)=>{let n=i||[...oc],r=e,o=[],s=!1,a=null;do{let u=await t.client.getOwnedObjects({owner:r,filter:{MatchAny:n.map(h=>({StructType:`0x2::coin::Coin<${t.utils.parseCoinType(h)}>`}))},options:{showType:!0,showContent:!0},cursor:a});o.push(...u.data),u.hasNextPage&&u.nextCursor?(s=!0,a=u.nextCursor):s=!1}while(s);let l={};return o.map(u=>u.data).filter(u=>u!=null).forEach(u=>{let h=u.type;if(u.content&&"fields"in u.content){let y=u.content.fields,v=t.utils.parseCoinNameFromType(h);v&&(l[v]=vi(l[v]??0).plus(y.balance).toNumber())}}),l},SC=async(t,e,i)=>{let n=i,r=t.utils.parseCoinType(e),o=[],s=!1,a=null;do{let u=await t.client.getOwnedObjects({owner:n,filter:{StructType:`0x2::coin::Coin<${r}>`},options:{showContent:!0},cursor:a});o.push(...u.data),u.hasNextPage&&u.nextCursor?(s=!0,a=u.nextCursor):s=!1}while(s);let l=0;return o.map(u=>u.data).filter(u=>u!=null).forEach(u=>{if(u.content&&"fields"in u.content){let h=u.content.fields;l=vi(l).plus(h.balance).toNumber()}}),l},xC=async(t,e,i)=>{let n=i||[...oc].map(u=>t.utils.parseMarketCoinName(u)),r=e,o=[],s=!1,a=null;do{let u=await t.client.getOwnedObjects({owner:r,filter:{MatchAny:n.map(h=>({StructType:`0x2::coin::Coin<${t.utils.parseMarketCoinType(h)}>`}))},options:{showType:!0,showContent:!0},cursor:a});o.push(...u.data),u.hasNextPage&&u.nextCursor?(s=!0,a=u.nextCursor):s=!1}while(s);let l={};return o.map(u=>u.data).filter(u=>u!=null).forEach(u=>{let h=u.type;if(u.content&&"fields"in u.content){let y=u.content.fields,v=t.utils.parseCoinNameFromType(h);v&&(l[v]=vi(l[v]??0).plus(y.balance).toNumber())}}),l},AC=async(t,e,i)=>{let n=i,r=t.utils.parseMarketCoinType(e),o=[],s=!1,a=null;do{let u=await t.client.getOwnedObjects({owner:n,filter:{StructType:`0x2::coin::Coin<${r}>`},options:{showContent:!0},cursor:a});o.push(...u.data),u.hasNextPage&&u.nextCursor?(s=!0,a=u.nextCursor):s=!1}while(s);let l=0;return o.map(u=>u.data).filter(u=>u!=null).forEach(u=>{if(u.content&&"fields"in u.content){let h=u.content.fields;l=vi(l).plus(h.balance).toNumber()}}),l},IC=async(t,e)=>{let i=`${t.address.get("core.packages.query.id")}::obligation_query::obligation_data`,n=new q0.TransactionBlock;return n.moveCall({target:i,arguments:[n.object(e)]}),(await t.client.devInspectTransactionBlock({transactionBlock:n,sender:t.walletAddress})).events[0].parsedJson},Yu=async(t,e)=>{let i=e,n=t.address.get("spool.object"),r=`${n}::spool_account::SpoolAccount`,o=[],s=!1,a=null;do{let y=await t.client.getOwnedObjects({owner:i,filter:{StructType:r},options:{showContent:!0,showType:!0},cursor:a});o.push(...y.data),y.hasNextPage&&y.nextCursor?(s=!0,a=y.nextCursor):s=!1}while(s);let l={seth:[],ssui:[],susdc:[],susdt:[],scetus:[],safsui:[],shasui:[],svsui:[]},u=Object.keys(l).reduce((y,v)=>{let C=t.utils.parseCoinName(v),O=t.utils.parseMarketCoinType(C),P={...y},j=`${n}::spool_account::SpoolAccount<${O}>`;return P[v]=j,P},{}),h=o.map(y=>y?.data?.objectId).filter(y=>y!==void 0);return(await t.client.multiGetObjects({ids:h,options:{showContent:!0,showType:!0}})).forEach(y=>{let v=y.data.objectId,C=y.data.type;if(y.data.content&&"fields"in y.data.content){let O=y.data.content.fields,P=String(O.spool_id),j=String(O.stake_type.fields.name),B=Number(O.stakes),D=Number(O.index),q=Number(O.points),K=Number(O.total_points);(0,Be.normalizeStructTag)(C)===u.seth?l.seth.push({id:v,type:(0,Be.normalizeStructTag)(C),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(C)===u.ssui?l.ssui.push({id:v,type:(0,Be.normalizeStructTag)(C),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(C)===u.susdc?l.susdc.push({id:v,type:(0,Be.normalizeStructTag)(C),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(C)===u.susdt?l.susdt.push({id:v,type:(0,Be.normalizeStructTag)(C),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(C)===u.scetus?l.scetus.push({id:v,type:(0,Be.normalizeStructTag)(C),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(C)===u.safsui?l.safsui.push({id:v,type:(0,Be.normalizeStructTag)(C),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(C)===u.shasui?l.shasui.push({id:v,type:(0,Be.normalizeStructTag)(C),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K}):(0,Be.normalizeStructTag)(C)===u.svsui&&l.svsui.push({id:v,type:(0,Be.normalizeStructTag)(C),stakePoolId:P,stakeType:(0,Be.normalizeStructTag)(j),staked:B,index:D,points:q,totalPoints:K})}}),l},Em=async(t,e)=>{let i=t.address.get(`spool.pools.${e}.id`),n,r=await t.client.getObject({id:i,options:{showContent:!0,showType:!0}});if(r.data){let o=r.data,s=o.objectId,a=o.type;if(o.content&&"fields"in o.content){let l=o.content.fields,u=Number(l.max_distributed_point),h=Number(l.distributed_point),y=Number(l.distributed_point_per_period),v=Number(l.point_distribution_time),C=Number(l.max_stakes),O=String(l.stake_type.fields.name),P=Number(l.stakes),j=Number(l.index),B=Number(l.created_at),D=Number(l.last_update);n={id:s,type:(0,Be.normalizeStructTag)(a),maxPoint:u,distributedPoint:h,pointPerPeriod:y,period:v,maxStake:C,stakeType:(0,Be.normalizeStructTag)(O),totalStaked:P,index:j,createdAt:B,lastUpdate:D}}}return n},jm=async(t,e)=>{let i=t.address.get(`spool.pools.${e}.rewardPoolId`),n,r=await t.client.getObject({id:i,options:{showContent:!0,showType:!0}});if(r.data){let o=r.data,s=o.objectId,a=o.type;if(o.content&&"fields"in o.content){let l=o.content.fields,u=String(l.spool_id),h=Number(l.exchange_rate_numerator),y=Number(l.exchange_rate_denominator),v=Number(l.rewards),C=Number(l.claimed_rewards);n={id:s,type:(0,Be.normalizeStructTag)(a),stakePoolId:u,ratioNumerator:h,ratioDenominator:y,rewards:v,claimedRewards:C}}}return n},OC=async(t,e,i,n)=>{let r=n||[...za],o=t.address.get("borrowIncentive.query"),s=t.address.get("borrowIncentive.incentiveAccounts"),a=`${o}::incentive_account_query::incentive_account_data`,l=new $0.TransactionBlock;l.moveCall({target:a,arguments:[l.object(s),l.object(e)]});let u=(await t.client.devInspectTransactionBlock({transactionBlock:l,sender:i})).events[0].parsedJson,h={};return u.pool_records.forEach(y=>{let v=kC(y),{poolType:C}=v,O=t.utils.parseCoinNameFromType(C);r.length>=1&&r.includes(O)&&(h[O]=v)},{}),h},PC=async(t,e)=>{let i=t.address.get(`core.coins.${e}.oracle.pyth.feedObject`),n=await t.client.getObject({id:i,options:{showContent:!0}});if(n.data){let r=n.data;if(r.content&&"fields"in r.content){let o=r.content.fields,s=Number(o.price_info.fields.price_feed.fields.price.fields.expo.fields.magnitude),a=Number(o.price_info.fields.price_feed.fields.price.fields.expo.fields.negative),l=Number(o.price_info.fields.price_feed.fields.price.fields.price.fields.magnitude),u=Number(o.price_info.fields.price_feed.fields.price.fields.price.fields.negative);return l*10**((a?-1:1)*s)*(u?-1:1)}}return 0},U0=async(t,e)=>{let i=e,n=`${t.address.get("vesca.id")}::ve_sca::VeScaKey`,r=[],o=!1,s=null;do{let a=await t.client.getOwnedObjects({owner:i,filter:{StructType:n},cursor:s});r.push(...a.data),a.hasNextPage&&a.nextCursor?(o=!0,s=a.nextCursor):o=!1}while(o);return r.map(a=>a.data).filter(a=>!!a)},DC=async(t,e)=>{let i=(await U0(t,e)).map(r=>r.objectId),n=[];for(let r=0;r<i.length;r++){let o=await K0(t,i[r]);o&&n.push(o)}return n},K0=async(t,e,i)=>{let n=t.address.get("vesca.tableId"),r=e||(await U0(t,i))[0].objectId,o,s=(await t.client.getDynamicFieldObject({parentId:n,name:{type:"0x2::object::ID",value:r}})).data;if(s&&s.content&&s.content.dataType==="moveObject"&&"fields"in s.content){let a=s.content.fields.value.fields;o={id:s.objectId,keyId:r,lockedScaAmount:vi(a.locked_sca_amount).toNumber(),lockedScaCoin:vi(a.locked_sca_amount).shiftedBy(-9).toNumber(),unlockAt:vi(a.unlock_at).toNumber()}}return o},V0=class{params;address;client;utils;walletAddress;constructor(t,e){this.params=t,this.address=e?.address??new sc({id:t?.addressesId||rc,network:t?.networkType}),this.client=t.client,this.utils=e?.utils??new Xu(this.params,{address:this.address}),this.walletAddress=t.walletAddress}init(t=!1,e){t||!this.address.getAddresses()||!e?.getAddresses()?this.address.read():this.address=e}async getObligations(t){return Ju(this,t)}async getCoinAmounts(t,e){return CC(this,t,e)}async getCoinAmount(t,e){return SC(this,t,e)}async getMarketCoinAmounts(t,e){return xC(this,t,e)}async getMarketCoinAmount(t,e){return AC(this,t,e)}async getPriceFromPyth(t){return PC(this,t)}async getAllStakeAccounts(t){return Yu(this,t)}async getStakeAccounts(t,e){return(await this.getAllStakeAccounts(e))[t]??[]}async getStakePools(t){let e=t??[...Ku],i={};for(let n=0;n<e.length;n++){let r=e[n],o=await Em(this,r);o&&(i[r]=o)}return i}async getStakePool(t){return Em(this,t)}async getStakeRewardPools(t){let e=t??[...Ku],i={};for(let n=0;n<e.length;n++){let r=await jm(this,e[n]);r&&(i[e[n]]=r)}return i}async getStakeRewardPool(t){return jm(this,t)}async getBorrowIncentiveAccounts(t,e,i){return OC(this,t,e||this.walletAddress,i)}async getObligationCoinNames(t){let e=await IC(this,t),i=e.collaterals.map(r=>`0x${r.type.name}`),n=e.debts.map(r=>`0x${r.type.name}`);return[...new Set([...i,...n])].map(r=>this.utils.parseCoinNameFromType(r))}},W0=class{params;isTestnet;address;query;utils;client;walletAddress;constructor(t,e){this.params=t,this.address=e?.address??new sc({id:t?.addressesId||rc,network:t?.networkType}),this.query=e?.query??new V0(t,{address:this.address}),this.utils=e?.utils??new Xu(this.params,{address:this.address,query:this.query}),this.client=t.client,this.walletAddress=(0,R0.normalizeSuiAddress)(t.walletAddress),this.isTestnet=t.networkType?t.networkType==="testnet":!1}async init(t=!1,e){t||!this.address.getAddresses()||!e?.getAddresses()?this.address.read():this.address=e,this.query.init(t,this.address),this.utils.init(t,this.address)}createTxBlock(t){return new F0.TransactionBlock(t)}async selectCoin(t,e,i,n){let r=this.utils.parseCoinType(e),o=await this.utils.selectCoinIds(i,r,n),[s,a]=this.utils.takeAmountFromCoins(t,o,i);return{takeCoin:s,leftCoin:a}}async selectMarketCoin(t,e,i,n){let r=this.utils.parseMarketCoinType(e),o=await this.utils.selectCoinIds(i,r,n),[s,a]=this.utils.takeAmountFromCoins(t,o,i);return{takeCoin:s,leftCoin:a}}},io=async(...t)=>{let[e,i,n]=t;if(t.length===3&&n&&typeof n=="string")return await K0(e.query,n)||void 0;let r=Ci(i),o=await DC(e.query,r);if(o.length!==0)return o[0]},MC=async(t,e)=>{let i=t.address.get("borrowIncentive.object"),n=t.address.get("borrowIncentive.incentivePools"),r=t.address.get("vesca.id"),{client:o}=t,s=await o.getObject({id:n,options:{showContent:!0}});if(s.data?.content?.dataType!=="moveObject")return!1;let a=s.data.content.fields.ve_sca_bind.fields.id.id,l=`${i}::typed_id::TypedID<${r}::ve_sca::VeScaKey>`,u=await o.getDynamicFieldObject({parentId:a,name:{type:l,value:e}});return u.data?.content?.dataType!=="moveObject"?!1:u.data.content.fields.value.fields.id},Pu=async(...t)=>{let[e,i,n,r]=t;if(t.length===4&&n&&r&&typeof n=="string"){let a=await L0(e.query,n);return{obligationId:n,obligationKey:r,obligationLocked:a}}let o=Ci(i),s=await Ju(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}},EC=({builder:t,txBlock:e})=>{let i={borrowIncentivePkg:t.address.get("borrowIncentive.id"),query:t.address.get("borrowIncentive.query"),incentivePools:t.address.get("borrowIncentive.incentivePools"),incentiveAccounts:t.address.get("borrowIncentive.incentiveAccounts"),obligationAccessStore:t.address.get("core.obligationAccessStore"),config:t.address.get("borrowIncentive.config")},n={id:"0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",incentivePools:"0x64972b713ccec45ec3964809e477cea6f97350c0c50ca3aec85bb631639266ec",incentiveAccounts:"0x3c0b707068bdcea8bb859d751ad3e2149a9f83c13fcf4054ef91372a00bccdd3"},r={table:t.address.get("vesca.table"),treasury:t.address.get("vesca.treasury"),config:t.address.get("vesca.config")};return{stakeObligation:(o,s)=>{e.moveCall({target:`${i.borrowIncentivePkg}::user::stake`,arguments:[e.object(i.config),e.object(i.incentivePools),e.object(i.incentiveAccounts),e.object(s),e.object(o),e.object(i.obligationAccessStore),e.object(dn.SUI_CLOCK_OBJECT_ID)]})},stakeObligationWithVesca:(o,s,a)=>{e.moveCall({target:`${i.borrowIncentivePkg}::user::stake_with_ve_sca`,arguments:[e.object(i.config),e.object(i.incentivePools),e.object(i.incentiveAccounts),e.object(s),e.object(o),e.object(i.obligationAccessStore),e.object(r.config),e.object(r.treasury),e.object(r.table),e.object(a),e.object(dn.SUI_CLOCK_OBJECT_ID)]})},unstakeObligation:(o,s)=>{e.moveCall({target:`${i.borrowIncentivePkg}::user::unstake`,arguments:[e.object(i.config),e.object(i.incentivePools),e.object(i.incentiveAccounts),e.object(s),e.object(o),e.object(dn.SUI_CLOCK_OBJECT_ID)]})},oldUnstakeObligation:(o,s)=>{e.moveCall({target:`${i.borrowIncentivePkg}::user::unstake`,arguments:[e.object(n.incentivePools),e.object(n.incentiveAccounts),e.object(s),e.object(o),e.object(dn.SUI_CLOCK_OBJECT_ID)],typeArguments:[dn.SUI_TYPE_ARG]})},claimBorrowIncentive:(o,s,a)=>{let l=t.utils.parseCoinType(a);return e.moveCall({target:`${i.borrowIncentivePkg}::user::redeem_rewards`,arguments:[e.object(i.config),e.object(i.incentivePools),e.object(i.incentiveAccounts),e.object(s),e.object(o),e.object(dn.SUI_CLOCK_OBJECT_ID)],typeArguments:[l]})},oldClaimBorrowIncentive(o,s,a){let l=t.utils.parseCoinType(a);return e.moveCall({target:`${n.id}::user::redeem_rewards`,arguments:[e.object(n.incentivePools),e.object(n.incentiveAccounts),e.object(s),e.object(o),e.object(dn.SUI_CLOCK_OBJECT_ID)],typeArguments:[l]})}}},Fi=({builder:t,txBlock:e})=>{let i=EC({builder:t,txBlock:e});return{normalMethod:i,stakeObligationQuick:async(n,r)=>{let{obligationId:o,obligationKey:s,obligationLocked:a}=await Pu(t,e,n,r),l=!!e.blockData.transactions.find(u=>u.kind==="MoveCall"&&u.target===`${t.address.get("borrowIncentive.id")}::user::unstake`);(!a||l)&&i.stakeObligation(o,s)},unstakeObligationQuick:async(n,r)=>{let{obligationId:o,obligationKey:s,obligationLocked:a}=await Pu(t,e,n,r);a&&i.unstakeObligation(o,s)},stakeObligationWithVeScaQuick:async(n,r,o)=>{let{obligationId:s,obligationKey:a,obligationLocked:l}=await Pu(t,e,n,r),u=!!e.blockData.transactions.find(h=>h.kind==="MoveCall"&&(h.target===`${Wa}::user::unstake`||h.target===`${t.address.get("borrowIncentive.id")}::user::unstake`));if(!l||u){let h=await io(t,e,o);if(h){let y=await MC(t,h.keyId);!y||y===s?i.stakeObligationWithVesca(s,a,h.keyId):i.stakeObligation(s,a)}else i.stakeObligation(s,a)}},claimBorrowIncentiveQuick:(n,r,o)=>i.claimBorrowIncentive(r,o,n)}},jC={testnet:["https://hermes-beta.pyth.network"],mainnet:["https://hermes.pyth.network","https://scallop.rpc.p2p.world"]},Du=16*1024,BC=class{provider;pythStateId;wormholeStateId;pythPackageId;wormholePackageId;priceTableInfo;priceFeedObjectIdCache=new Map;baseUpdateFee;constructor(t,e,i){this.provider=t,this.pythStateId=e,this.wormholeStateId=i,this.pythPackageId=void 0,this.wormholePackageId=void 0}async getBaseUpdateFee(){if(this.baseUpdateFee===void 0){let t=await this.provider.getObject({id:this.pythStateId,options:{showContent:!0}});if(!t.data||!t.data.content||t.data.content.dataType!=="moveObject")throw new Error("Unable to fetch pyth state object");this.baseUpdateFee=t.data.content.fields.base_update_fee}return this.baseUpdateFee}async getPackageId(t){let e=await this.provider.getObject({id:t,options:{showContent:!0}}).then(i=>{if(i.data?.content?.dataType==="moveObject")return i.data.content.fields;throw console.log(i.data?.content),new Error(`Cannot fetch package id for object ${t}`)});if("upgrade_cap"in e)return e.upgrade_cap.fields.package;throw new Error("upgrade_cap not found")}async verifyVaas(t,e){let i=await this.getWormholePackageId(),n=[];return t.forEach(r=>{let[o]=e.moveCall({target:`${i}::vaa::parse_and_verify`,arguments:[e.object(this.wormholeStateId),e.pure(Ha.bcs.ser("vector<u8>",Array.from(r),{maxSize:Du}).toBytes()),e.object(rs.SUI_CLOCK_OBJECT_ID)]});n.push(o)}),n}async updatePriceFeeds(t,e,i){let n=await this.getPythPackageId(),r;if(e.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let o=this.extractVaaBytesFromAccumulatorMessage(e[0]),s=await this.verifyVaas([o],t);[r]=t.moveCall({target:`${n}::pyth::create_authenticated_price_infos_using_accumulator`,arguments:[t.object(this.pythStateId),t.pure(Ha.bcs.ser("vector<u8>",Array.from(e[0]),{maxSize:Du}).toBytes()),s[0],t.object(rs.SUI_CLOCK_OBJECT_ID)]});let a=[],l=await this.getBaseUpdateFee(),u=t.splitCoins(t.gas,i.map(()=>t.pure(l))),h=0;for(let y=0;y<i.length;y++){let v=await this.getPriceFeedObjectId(i[y]);if(!v)throw new Error(`Price feed ${i[0]} not found, please create it first`);a.push(v),[r]=t.moveCall({target:`${n}::pyth::update_single_price_feed`,arguments:[t.object(this.pythStateId),r,t.object(v),u[h],t.object(rs.SUI_CLOCK_OBJECT_ID)]}),h++}return t.moveCall({target:`${n}::hot_potato_vector::destroy`,arguments:[r],typeArguments:[`${n}::price_info::PriceInfo`]}),a}async createPriceFeed(t,e){let i=await this.getPythPackageId();if(e.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let n=this.extractVaaBytesFromAccumulatorMessage(e[0]),r=await this.verifyVaas([n],t);t.moveCall({target:`${i}::pyth::create_price_feeds_using_accumulator`,arguments:[t.object(this.pythStateId),t.pure(Ha.bcs.ser("vector<u8>",Array.from(e[0]),{maxSize:Du}).toBytes()),r[0],t.object(rs.SUI_CLOCK_OBJECT_ID)]})}async getWormholePackageId(){return this.wormholePackageId||(this.wormholePackageId=await this.getPackageId(this.wormholeStateId)),this.wormholePackageId}async getPythPackageId(){return this.pythPackageId||(this.pythPackageId=await this.getPackageId(this.pythStateId)),this.pythPackageId}async getPriceFeedObjectId(t){let e=t.replace("0x","");if(!this.priceFeedObjectIdCache.has(e)){let{id:i,fieldType:n}=await this.getPriceTableInfo(),r=await this.provider.getDynamicFieldObject({parentId:i,name:{type:`${n}::price_identifier::PriceIdentifier`,value:{bytes:Array.from(Buffer.from(e,"hex"))}}});if(!r.data||!r.data.content)return;if(r.data.content.dataType!=="moveObject")throw new Error("Price feed type mismatch");this.priceFeedObjectIdCache.set(e,r.data.content.fields.value)}return this.priceFeedObjectIdCache.get(e)}async getPriceTableInfo(){if(this.priceTableInfo===void 0){let t=await this.provider.getDynamicFieldObject({parentId:this.pythStateId,name:{type:"vector<u8>",value:"price_info"}});if(!t.data||!t.data.type)throw new Error("Price Table not found, contract may not be initialized");let e=t.data.type.replace("0x2::table::Table<","");e=e.replace("::price_identifier::PriceIdentifier, 0x2::object::ID>",""),this.priceTableInfo={id:t.data.objectId,fieldType:e}}return this.priceTableInfo}extractVaaBytesFromAccumulatorMessage(t){let e=7+t.readUint8(6)+1,i=t.readUint16BE(e),n=e+2;return t.subarray(n,n+i)}},NC=async(t,e)=>(await z0.default.get(`${t}/api/latest_vaas`,{params:{ids:e}})).data.map(i=>Buffer.from(i,"base64")),Mu=async(t,e,i)=>{let n=i??[...new Set([...oc,...j0])],r=t.isTestnet?["pyth"]:["pyth"];if(r.includes("pyth")){let s=new BC(t.client,t.address.get("core.oracles.pyth.state"),t.address.get("core.oracles.pyth.wormholeState")),a=n.map(u=>t.address.get(`core.coins.${u}.oracle.pyth.feed`)),l=t.params.pythEndpoints??jC[t.isTestnet?"testnet":"mainnet"];try{let u=await NC(l[0],a);await s.updatePriceFeeds(e,u,a)}catch(u){console.warn(`Failed to update price feeds with endpoint ${l[0]}: ${u}`)}}let o=[...new Set(n)];for(let s=0;s<o.length;s++)await FC(t,e,o[s],r)},FC=async(t,e,i,n)=>{let r=t.utils.parseCoinType(i);RC(e,n,t.address.get("core.packages.xOracle.id"),t.address.get("core.oracles.xOracle"),t.address.get("core.packages.pyth.id"),t.address.get("core.oracles.pyth.registry"),t.address.get("core.oracles.pyth.state"),t.address.get(`core.coins.${i}.oracle.pyth.feedObject`),t.address.get("core.packages.switchboard.id"),t.address.get("core.oracles.switchboard.registry"),t.address.get(`core.coins.${i}.oracle.switchboard`),t.address.get("core.packages.supra.id"),t.address.get("core.oracles.supra.registry"),t.address.get("core.oracles.supra.holder"),r)},RC=(t,e,i,n,r,o,s,a,l,u,h,y,v,C,O)=>{let P=qC(t,i,n,O);return e.includes("pyth")&&KC(t,r,P,s,a,o,O),e.includes("switchboard")&&UC(t,l,P,h,u,O),e.includes("supra")&&$C(t,y,P,C,v,O),LC(t,i,n,P,O),t},qC=(t,e,i,n)=>{let r=typeof i=="string"?t.object(i):i,o=`${e}::x_oracle::price_update_request`,s=[n];return t.moveCall({target:o,arguments:[r],typeArguments:s})},LC=(t,e,i,n,r)=>{let o=`${e}::x_oracle::confirm_price_update_request`,s=[r],a=typeof i=="string"?t.object(i):i;return t.moveCall({target:o,arguments:[a,n,t.object(hs.SUI_CLOCK_OBJECT_ID)],typeArguments:s}),t},$C=(t,e,i,n,r,o)=>{let s=typeof n=="string"?t.object(n):n,a=typeof r=="string"?t.object(r):r;t.moveCall({target:`${e}::rule::set_price`,arguments:[i,s,a,t.object(hs.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},UC=(t,e,i,n,r,o)=>{let s=typeof n=="string"?t.object(n):n,a=typeof r=="string"?t.object(r):r;t.moveCall({target:`${e}::rule::set_price`,arguments:[i,s,a,t.object(hs.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},KC=(t,e,i,n,r,o,s)=>{let a=typeof i=="string"?t.object(i):i,l=typeof n=="string"?t.object(n):n,u=typeof r=="string"?t.object(r):r,h=typeof o=="string"?t.object(o):o;t.moveCall({target:`${e}::rule::set_price`,arguments:[a,l,u,h,t.object(hs.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},La=async(...t)=>{let[e,i,n,r]=t;if(t.length===3&&n)return{obligationId:n};if(t.length===4&&n&&r)return{obligationId:n,obligationKey:r};let o=Ci(e),s=await Ju(i.query,o);if(s.length===0)throw new Error(`No obligation found for sender ${o}`);return{obligationId:s[0].id,obligationKey:s[0].keyId}},VC=({builder:t,txBlock:e})=>{let i={protocolPkg:t.address.get("core.packages.protocol.id"),market:t.address.get("core.market"),version:t.address.get("core.version"),coinDecimalsRegistry:t.address.get("core.coinDecimalsRegistry"),xOracle:t.address.get("core.oracles.xOracle")};return{openObligation:()=>e.moveCall({target:`${i.protocolPkg}::open_obligation::open_obligation`,arguments:[e.pure(i.version)]}),returnObligation:(n,r)=>e.moveCall({target:`${i.protocolPkg}::open_obligation::return_obligation`,arguments:[e.object(i.version),e.object(n),e.object(r)]}),openObligationEntry:()=>e.moveCall({target:`${i.protocolPkg}::open_obligation::open_obligation_entry`,arguments:[e.object(i.version)]}),addCollateral:(n,r,o)=>{let s=t.utils.parseCoinType(o);return e.moveCall({target:`${i.protocolPkg}::deposit_collateral::deposit_collateral`,arguments:[e.object(i.version),e.object(n),e.object(i.market),typeof r!="string"?r:e.pure(r)],typeArguments:[s]})},takeCollateral:(n,r,o,s)=>{let a=t.utils.parseCoinType(s);return e.moveCall({target:`${i.protocolPkg}::withdraw_collateral::withdraw_collateral`,arguments:[e.object(i.version),e.object(n),e.object(r),e.object(i.market),e.object(i.coinDecimalsRegistry),e.pure(o),e.object(i.xOracle),e.object(cn.SUI_CLOCK_OBJECT_ID)],typeArguments:[a]})},deposit:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::mint::mint`,arguments:[e.object(i.version),e.object(i.market),typeof n!="string"?n:e.pure(n),e.object(cn.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},depositEntry:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::mint::mint_entry`,arguments:[e.object(i.version),e.object(i.market),typeof n!="string"?n:e.pure(n),e.object(cn.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},withdraw:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::redeem::redeem`,arguments:[e.object(i.version),e.object(i.market),typeof n!="string"?n:e.pure(n),e.object(cn.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},withdrawEntry:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::redeem::redeem_entry`,arguments:[e.object(i.version),e.object(i.market),typeof n!="string"?n:e.pure(n),e.object(cn.SUI_CLOCK_OBJECT_ID)],typeArguments:[o]})},borrow:(n,r,o,s)=>{let a=t.utils.parseCoinType(s);return e.moveCall({target:`${i.protocolPkg}::borrow::borrow`,arguments:[e.object(i.version),e.object(n),e.object(r),e.object(i.market),e.object(i.coinDecimalsRegistry),e.pure(o),e.object(i.xOracle),e.object(cn.SUI_CLOCK_OBJECT_ID)],typeArguments:[a]})},borrowEntry:(n,r,o,s)=>{let a=t.utils.parseCoinType(s);return e.moveCall({target:`${i.protocolPkg}::borrow::borrow_entry`,arguments:[e.object(i.version),e.object(n),e.object(r),e.object(i.market),e.object(i.coinDecimalsRegistry),e.pure(o),e.object(i.xOracle),e.object(cn.SUI_CLOCK_OBJECT_ID)],typeArguments:[a]})},repay:(n,r,o)=>{let s=t.utils.parseCoinType(o);return e.moveCall({target:`${i.protocolPkg}::repay::repay`,arguments:[e.object(i.version),e.object(n),e.object(i.market),typeof r!="string"?r:e.pure(r),e.object(cn.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},borrowFlashLoan:(n,r)=>{let o=t.utils.parseCoinType(r);return e.moveCall({target:`${i.protocolPkg}::flash_loan::borrow_flash_loan`,arguments:[e.object(i.version),e.object(i.market),e.pure(n)],typeArguments:[o]})},repayFlashLoan:(n,r,o)=>{let s=t.utils.parseCoinType(o);return e.moveCall({target:`${i.protocolPkg}::flash_loan::repay_flash_loan`,arguments:[e.object(i.version),e.object(i.market),e.pure(n),e.object(r)],typeArguments:[s]})}}},Hi=({builder:t,txBlock:e})=>{let i=VC({builder:t,txBlock:e});return{normalMethod:i,addCollateralQuick:async(n,r,o)=>{let s=Ci(e),{obligationId:a}=await La(e,t,o);if(r==="sui"){let[l]=e.splitCoins(e.gas,[n]);i.addCollateral(a,l,r)}else{let{leftCoin:l,takeCoin:u}=await t.selectCoin(e,r,n,s);i.addCollateral(a,u,r),e.transferObjects([l],s)}},takeCollateralQuick:async(n,r,o,s)=>{let a=await La(e,t,o,s),l=await t.query.getObligationCoinNames(a.obligationId);return await Mu(t,e,l),i.takeCollateral(a.obligationId,a.obligationKey,n,r)},depositQuick:async(n,r,o)=>{if(r==="sui"){let[l]=e.splitCoins(e.gas,[n]);return i.deposit(l,r)}let{leftCoin:s,takeCoin:a}=await t.selectCoin(e,r,n,o);return e.transferObjects([s],o),i.deposit(a,r)},withdrawQuick:async(n,r)=>{let o=Ci(e),s=t.utils.parseMarketCoinName(r),{leftCoin:a,takeCoin:l}=await t.selectMarketCoin(e,s,n,o);return e.transferObjects([a],o),i.withdraw(l,r)},borrowQuick:async(n,r,o,s)=>{let a=await La(e,t,o,s),l=[...await t.query.getObligationCoinNames(a.obligationId),r];return await Mu(t,e,l),i.borrow(a.obligationId,a.obligationKey,n,r)},repayQuick:async(n,r,o,s)=>{let a=await La(e,t,o);if(r==="sui"){let[h]=e.splitCoins(e.gas,[n]);return i.repay(a.obligationId,h,r)}let{leftCoin:l,takeCoin:u}=await t.selectCoin(e,r,n,s);return e.transferObjects([l],s),i.repay(a.obligationId,u,r)},updateAssetPricesQuick:async n=>Mu(t,e,n)}},Bm=async(...t)=>{let[e,i,n,r]=t;if(t.length===4&&r)return[r];let o=Ci(i),s=await Yu(e.query,o);if(s[n].length===0)throw new Error(`No stake account id found for sender ${o}`);return s[n].map(a=>a.id)},WC=async(...t)=>{let[e,i,n,r]=t,o=Ci(i),s=await Yu(e.query,o);if(s[n].length===0)throw new Error(`No stake account found for sender ${o}`);return r?s[n].filter(a=>a.id===r):s[n]},zC=({builder:t,txBlock:e})=>{let i={spoolPkg:t.address.get("spool.id")};return{createStakeAccount:n=>{let r=t.utils.parseMarketCoinType(n),o=t.address.get(`spool.pools.${n}.id`);return e.moveCall({target:`${i.spoolPkg}::user::new_spool_account`,arguments:[e.object(o),e.object(os.SUI_CLOCK_OBJECT_ID)],typeArguments:[r]})},stake:(n,r,o)=>{let s=t.utils.parseMarketCoinType(o),a=t.address.get(`spool.pools.${o}.id`);e.moveCall({target:`${i.spoolPkg}::user::stake`,arguments:[e.object(a),e.object(n),typeof r=="string"?e.pure(r):r,e.object(os.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},unstake:(n,r,o)=>{let s=t.utils.parseMarketCoinType(o),a=t.address.get(`spool.pools.${o}.id`);return e.moveCall({target:`${i.spoolPkg}::user::unstake`,arguments:[e.object(a),e.object(n),e.pure(r),e.object(os.SUI_CLOCK_OBJECT_ID)],typeArguments:[s]})},claim:(n,r)=>{let o=t.address.get(`spool.pools.${r}.id`),s=t.address.get(`spool.pools.${r}.rewardPoolId`),a=t.utils.parseMarketCoinType(r),l=B0[r],u=t.utils.parseCoinType(l);return e.moveCall({target:`${i.spoolPkg}::user::redeem_rewards`,arguments:[e.object(o),e.object(s),e.object(n),e.object(os.SUI_CLOCK_OBJECT_ID)],typeArguments:[a,u]})}}},Yr=({builder:t,txBlock:e})=>{let i=zC({builder:t,txBlock:e});return{normalMethod:i,stakeQuick:async(n,r,o)=>{let s=Ci(e),a=await Bm(t,e,r,o),l=t.utils.parseMarketCoinType(r);if(typeof n=="number"){let u=await t.utils.selectCoinIds(n,l,s),[h,y]=t.utils.takeAmountFromCoins(e,u,n);i.stake(a[0],h,r),e.transferObjects([y],s)}else i.stake(a[0],n,r)},unstakeQuick:async(n,r,o)=>{let s=n,a=await WC(t,e,r,o),l=[];for(let u=0;u<a.length;u++){if(a[u].staked===0)continue;let h=Math.min(s,a[u].staked),y=i.unstake(a[u].id,h,r);if(l.push(y),s-=h,s===0)break}return l},claimQuick:async(n,r)=>{let o=await Bm(t,e,n,r),s=[];return o.forEach(a=>{let l=i.claim(a,n);s.push(l)}),s}}},GC=({builder:t,txBlock:e})=>{let i={pkgId:t.address.get("vesca.id"),table:t.address.get("vesca.table"),treasury:t.address.get("vesca.treasury"),config:t.address.get("vesca.config")};return{lockSca:(n,r)=>e.moveCall({target:`${i.pkgId}::ve_sca::mint_ve_sca_key`,arguments:[e.object(i.config),e.object(i.table),e.object(i.treasury),typeof n=="string"?e.pure(n):n,e.pure(r),e.object(no.SUI_CLOCK_OBJECT_ID)]}),extendLockPeriod:(n,r)=>{e.moveCall({target:`${i.pkgId}::ve_sca::extend_lock_period`,arguments:[e.object(i.config),e.object(n),e.object(i.table),e.object(i.treasury),e.pure(r),e.object(no.SUI_CLOCK_OBJECT_ID)]})},extendLockAmount:(n,r)=>{e.moveCall({target:`${i.pkgId}::ve_sca::lock_more_sca`,arguments:[e.object(i.config),e.object(n),e.object(i.table),e.object(i.treasury),typeof r=="string"?e.pure(r):r,e.object(no.SUI_CLOCK_OBJECT_ID)]})},renewExpiredVeSca:(n,r,o)=>{e.moveCall({target:`${i.pkgId}::ve_sca::renew_expired_ve_sca`,arguments:[e.object(i.config),e.object(n),e.object(i.table),e.object(i.treasury),typeof r=="string"?e.pure(r):r,e.pure(o),e.object(no.SUI_CLOCK_OBJECT_ID)]})},redeemSca:n=>e.moveCall({target:`${i.pkgId}::ve_sca::redeem`,arguments:[e.object(i.config),e.object(n),e.object(i.table),e.object(i.treasury),e.object(no.SUI_CLOCK_OBJECT_ID)]})}},Qr=({builder:t,txBlock:e})=>{let i=GC({builder:t,txBlock:e});return{normalMethod:i,lockScaQuick:async(n,r,o=!0)=>{let s=Ci(e),a=await io(t,e),l,u=[];if(n!==void 0&&typeof n=="number"){let C=await t.utils.selectCoinIds(n,oo,s),[O,P]=t.utils.takeAmountFromCoins(e,C,n);l=O,u.push(P)}else l=n;let h=t.utils.getUnlockAt(r,a?.unlockAt);o&&_C(n,r,h,a?.unlockAt),console.log(new Date(h*1e3).toLocaleString("en-CA",{hour12:!0}));let y=!a?.unlockAt,v=!y&&a.unlockAt*1e3<=new Date().getTime();if(y||v){if(l)if(y){let C=i.lockSca(l,h);u.push(C)}else{if(a.lockedScaAmount!==0){let C=i.redeemSca(a.keyId);u.push(C)}i.renewExpiredVeSca(a.keyId,l,h)}}else l&&r?(i.extendLockPeriod(a.keyId,h),i.extendLockAmount(a.keyId,l)):r?i.extendLockPeriod(a.keyId,h):l&&i.extendLockAmount(a.keyId,l);u.length>0&&e.transferObjects(u,s)},extendLockPeriodQuick:async(n,r,o=!0)=>{let s=await io(t,e,r),a=t.utils.getUnlockAt(n);o&&bC(n,a,s?.unlockAt),s&&i.extendLockPeriod(s.keyId,a)},extendLockAmountQuick:async(n,r,o=!0)=>{let s=Ci(e),a=await io(t,e,r);if(o&&yC(n,a?.unlockAt),a){let l=await t.utils.selectCoinIds(n,oo,s),[u,h]=t.utils.takeAmountFromCoins(e,l,n);i.extendLockAmount(a.keyId,u),e.transferObjects([h],s)}},renewExpiredVeScaQuick:async(n,r,o,s=!0)=>{let a=Ci(e),l=await io(t,e,o),u=t.utils.getUnlockAt(r,l?.unlockAt);if(s&&wC(n,r,l?.unlockAt),l){let h=[];if(l.lockedScaAmount!==0){let O=i.redeemSca(l.keyId);h.push(O)}let y=await t.utils.selectCoinIds(n,oo,a),[v,C]=t.utils.takeAmountFromCoins(e,y,n);h.push(C),i.renewExpiredVeSca(l.keyId,v,u),e.transferObjects(h,a)}},redeemScaQuick:async n=>{let r=Ci(e),o=await io(t,e,n);if(ds(o?.unlockAt),o){let s=i.redeemSca(o.keyId);e.transferObjects([s],r)}}}},Ot=class{params;client;address;builder;query;utils;walletAddress;constructor(t,e){this.params=t,this.client=t.client,this.address=e?.address??new sc({id:t?.addressesId||rc,network:t?.networkType}),this.query=e?.query??new V0(t,{address:this.address}),this.utils=e?.utils??new Xu(t,{address:this.address,query:this.query}),this.builder=e?.builder??new W0(t,{address:this.address,query:this.query,utils:this.utils}),this.walletAddress=(0,N0.normalizeSuiAddress)(t.walletAddress)}init(t=!1){(t||!this.address.getAddresses())&&this.address.read(),this.builder.init(t,this.address),this.query.init(t,this.address),this.utils.init(t,this.address)}async getObligations(t){let e=t||this.walletAddress;return this.query.getObligations(e)}async getAllStakeAccounts(t){let e=t||this.walletAddress;return this.query.getAllStakeAccounts(e)}async getStakeAccounts(t,e){let i=e||this.walletAddress;return this.query.getStakeAccounts(t,i)}async getStakePool(t){return this.query.getStakePool(t)}async getStakeRewardPool(t){return this.query.getStakeRewardPool(t)}async openObligation(t){let e=new We.TransactionBlock,i=Hi({builder:this.builder,txBlock:e}),n=t||this.walletAddress;return e.setSender(n),i.normalMethod.openObligationEntry(),e}async depositCollateral(t,e,i,n){let r=new We.TransactionBlock,o=n||this.walletAddress;r.setSender(o);let s=Hi({builder:this.builder,txBlock:r}),a=await this.query.getObligations(o),l=i||a?.[0]?.id;if(l)await s.addCollateralQuick(e,t,l);else{let[u,h,y]=s.normalMethod.openObligation();await s.addCollateralQuick(e,t,u),s.normalMethod.returnObligation(u,y),r.transferObjects([h],o)}return r}async withdrawCollateral(t,e,i,n,r){let o=new We.TransactionBlock,s=Hi({builder:this.builder,txBlock:o}),a=r||this.walletAddress;o.setSender(a);let l=await s.takeCollateralQuick(e,t,i,n);return o.transferObjects([l],a),o}async deposit(t,e,i){let n=new We.TransactionBlock,r=Hi({builder:this.builder,txBlock:n}),o=i||this.walletAddress;n.setSender(o);let s=await r.depositQuick(e,t,i);return n.transferObjects([s],o),n}async withdraw(t,e,i){let n=new We.TransactionBlock,r=i||this.walletAddress,o=Hi({builder:this.builder,txBlock:n});n.setSender(r);let s=await o.withdrawQuick(e,t);return n.transferObjects([s],r),n}async borrow(t,e,i,n,r){let o=new We.TransactionBlock,s=Hi({builder:this.builder,txBlock:o}),a=Fi({builder:this.builder,txBlock:o}),l=r||this.walletAddress;o.setSender(l);let u=za.includes(t);u&&await a.unstakeObligationQuick(i,n);let h=await s.borrowQuick(e,t,i,n);return o.transferObjects([h],l),u&&await a.stakeObligationQuick(i,n),o}async borrowWithBoost(t,e,i,n,r,o){let s=new We.TransactionBlock,a=Hi({builder:this.builder,txBlock:s}),l=Fi({builder:this.builder,txBlock:s}),u=o||this.walletAddress;s.setSender(u);let h=za.includes(t);h&&await l.unstakeObligationQuick(i,n);let y=await a.borrowQuick(e,t,i,n);return s.transferObjects([y],u),h&&await l.stakeObligationWithVeScaQuick(i,n,r),s}async repay(t,e,i,n,r){let o=new We.TransactionBlock,s=Hi({builder:this.builder,txBlock:o}),a=Fi({builder:this.builder,txBlock:o}),l=r||this.walletAddress;o.setSender(l);let u=za.includes(t);return u&&await a.unstakeObligationQuick(i,n),await s.repayQuick(e,t,i,l),u&&await a.stakeObligationQuick(i,n),o}async createStakeAccount(t,e){let i=new We.TransactionBlock,n=Yr({builder:this.builder,txBlock:i}),r=e||this.walletAddress;i.setSender(r);let o=n.normalMethod.createStakeAccount(t);return i.transferObjects([o],r),i}async supplyAndStake(t,e,i,n){let r=new We.TransactionBlock,o=Hi({builder:this.builder,txBlock:r}),s=Yr({builder:this.builder,txBlock:r}),a=n||this.walletAddress;r.setSender(a);let l=await o.depositQuick(e,t,n),u=this.utils.parseMarketCoinName(t);if(!Ku.find(v=>v===u))return r;let h=await this.query.getStakeAccounts(u,a),y=i||(h.length>0?h[0].id:void 0);if(y)await s.stakeQuick(l,u,y);else{let v=s.normalMethod.createStakeAccount(u);await s.stakeQuick(l,u,v),r.transferObjects([v],a)}return r}async unstakeAndWithdraw(t,e,i){let n=new We.TransactionBlock,r=Hi({builder:this.builder,txBlock:n}),o=Yr({builder:this.builder,txBlock:n}),s=this.walletAddress,a=[];n.setSender(s);let l=this.utils.parseMarketCoinName(t);for(let u=0;u<i.length;u++){let h=i[u],[y]=await o.unstakeQuick(h.coin,l,h.id);if(y){let v=r.normalMethod.withdraw(y,t);a.push(v)}}if(e>0){let u=await r.withdrawQuick(e,t);a.push(u)}return n.transferObjects(a,s),n}async stake(t,e,i,n){let r=new We.TransactionBlock,o=Yr({builder:this.builder,txBlock:r}),s=n||this.walletAddress;r.setSender(s);let a=await this.query.getStakeAccounts(t,s),l=i||(a.length>0?a[0].id:void 0);if(l)await o.stakeQuick(e,t,l);else{let u=o.normalMethod.createStakeAccount(t);await o.stakeQuick(e,t,u),r.transferObjects([u],s)}return r}async unstake(t,e,i,n){let r=new We.TransactionBlock,o=Yr({builder:this.builder,txBlock:r}),s=n||this.walletAddress;r.setSender(s);let a=await o.unstakeQuick(e,t,i);return r.transferObjects(a,s),r}async claim(t,e,i,n){let r=new We.TransactionBlock,o=Yr({builder:this.builder,txBlock:r}),s=Fi({builder:this.builder,txBlock:r}),a=n||this.walletAddress;r.setSender(a);let l={sui:[],sca:[]};for(let u=0;u<t.length;u++){let{stakeMarketCoinName:h,stakeAccountId:y}=t[u],v=o.normalMethod.claim(y,h);l.sui.push(v)}for(let u=0;u<e.length;u++){let{obligationId:h,obligationKey:y,rewardCoinName:v}=e[u],C=s.normalMethod.claimBorrowIncentive(h,y,v);l[v].push(C)}for(let u=0;u<i.length;u++){let{obligationId:h,obligationKey:y,rewardCoinName:v}=i[u],C=s.normalMethod.oldClaimBorrowIncentive(h,y,v);l[v].push(C)}return l.sui.length>0&&(l.sui.length>1&&r.mergeCoins(l.sui[0],l.sui.slice(1)),r.transferObjects([l.sui[0]],r.pure(a))),l.sca.length>0&&(l.sca.length>1&&r.mergeCoins(l.sca[0],l.sca.slice(1)),r.transferObjects([l.sca[0]],r.pure(a))),r}async stakeObligation(t,e,i){let n=this.builder.createTxBlock(),r=Fi({builder:this.builder,txBlock:n}),o=i||this.walletAddress;return n.setSender(o),await r.stakeObligationQuick(t,e),n}async unstakeObligation(t,e,i){let n=this.builder.createTxBlock(),r=Fi({builder:this.builder,txBlock:n}),o=i||this.walletAddress;return n.setSender(o),await r.unstakeObligationQuick(t,e),n}async stakeSca(t,e=!1,i=!1,n,r,o,s,a){let l=new We.TransactionBlock,u=Qr({builder:this.builder,txBlock:l}),h=Fi({builder:this.builder,txBlock:l}),y=a||this.walletAddress;l.setSender(y);let v=await this.builder.utils.selectCoinIds(t,oo,y),[C,O]=this.builder.utils.takeAmountFromCoins(l,v,t),P;return s?u.normalMethod.extendLockAmount(s,C):P=u.normalMethod.lockSca(C,o),n&&r&&(e&&(i?h.normalMethod.oldUnstakeObligation(n,r):h.normalMethod.unstakeObligation(n,r)),h.normalMethod.stakeObligationWithVesca(n,r,s||P)),s||l.transferObjects([P,O],y),l}async stakeMoreSca(t,e,i){let n=new We.TransactionBlock,r=i||this.walletAddress;return n.setSender(r),n}async extendStakeScaLockPeriod(t,e,i,n,r=!1,o=!1,s){let a=new We.TransactionBlock,l=Qr({builder:this.builder,txBlock:a}),u=Fi({builder:this.builder,txBlock:a}),h=s||this.walletAddress;return a.setSender(h),l.normalMethod.extendLockPeriod(e,t),i&&n&&(r&&(o?u.normalMethod.oldUnstakeObligation(i,n):u.normalMethod.unstakeObligation(i,n)),u.normalMethod.stakeObligationWithVesca(i,n,e)),a}async extendPeriodAndStakeMoreSca(t,e,i,n,r,o=!1,s=!1,a){let l=new We.TransactionBlock,u=Qr({builder:this.builder,txBlock:l}),h=Fi({builder:this.builder,txBlock:l}),y=a||this.walletAddress;l.setSender(y);let v=await this.builder.utils.selectCoinIds(t,oo,y),[C,O]=this.builder.utils.takeAmountFromCoins(l,v,t);return u.normalMethod.extendLockPeriod(e,i),u.normalMethod.extendLockAmount(e,C),l.transferObjects([O],y),!n||!r||(o&&(s?h.normalMethod.oldUnstakeObligation(n,r):h.normalMethod.unstakeObligation(n,r)),h.normalMethod.stakeObligationWithVesca(n,r,e)),l}async renewExpiredStakeSca(t,e,i,n=!1,r,o,s=!1,a=!1,l){let u=new We.TransactionBlock,h=Qr({builder:this.builder,txBlock:u}),y=Fi({builder:this.builder,txBlock:u}),v=l||this.walletAddress;if(u.setSender(v),n){let j=h.normalMethod.redeemSca(i);u.transferObjects([j],v)}let C=await this.builder.utils.selectCoinIds(t,oo,v),[O,P]=this.builder.utils.takeAmountFromCoins(u,C,t);return u.transferObjects([P],v),h.normalMethod.renewExpiredVeSca(i,O,e),!r||!o||(s&&(a?y.normalMethod.oldUnstakeObligation(r,o):y.normalMethod.unstakeObligation(r,o)),y.normalMethod.stakeObligationWithVesca(r,o,i)),u}async redeemSca(t){let e=new We.TransactionBlock,i=Qr({builder:this.builder,txBlock:e}),n=this.walletAddress;return e.setSender(n),await i.redeemScaQuick(t),e}async migrateAndClaim(t,e,i,n){let r=new We.TransactionBlock,o=Fi({builder:this.builder,txBlock:r}),s=this.walletAddress;r.setSender(s);let a=o.normalMethod.oldClaimBorrowIncentive(i,e,n);return r.transferObjects([a],s),o.stakeObligationWithVeScaQuick(i,e,t),r}async withdrawUnlockedSca(t,e){let i=new We.TransactionBlock,n=Qr({builder:this.builder,txBlock:i}),r=e||this.walletAddress;return i.setSender(r),await n.redeemScaQuick(t),i}calculateAvailableClaimCoin(t,e){let i=new vi(t.weightedAmount),n=e.currentPointIndex?vi(e.currentPointIndex-t.index).dividedBy(1e9):1;return i.multipliedBy(n).plus(t.points).shiftedBy(-1*e.coinDecimal)}},HC=class G0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.borrow(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new G0(e)}},ZC=class H0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await i.init(),i.borrowWithBoost(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,this.data.veScaKey,e.account.address)}static fromData(e){return new H0(e)}},XC=class Z0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.claim(this.data.lendingIncentive,this.data.borrowIncentiveV2,this.data.borrowIncentive,e.account.address)}static fromData(e){return new Z0(e)}},JC=class X0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.depositCollateral(this.data.collateralCoinName,Number(this.data.amount),this.data.obligationId,e.account.address)}static fromData(e){return new X0(e)}},YC=class J0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.extendPeriodAndStakeMoreSca(this.data.amount,this.data.veScaKey,this.data.lockPeriodInDays,this.data.obligationId,this.data.obligationKey,this.data.isObligationLocked,this.data.isOldBorrowIncentive,e.account.address)}static fromData(e){return new J0(e)}},QC=class Y0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.extendStakeScaLockPeriod(this.data.lockPeriodInDays,this.data.veScaKey,this.data.obligationId,this.data.obligationKey,this.data.isObligationLocked,this.data.isOldBorrowIncentive,e.account.address)}static fromData(e){return new Y0(e)}},eS=class Q0 extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await i.init(),i.migrateAndClaim(this.data.veScaKey,this.data.obligationKey,this.data.obligationId,this.data.rewardCoinName)}static fromData(e){return new Q0(e)}},tS=class e_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.openObligation()}static fromData(e){return new e_(e)}},iS=class t_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.redeemSca(this.data.veScaKey)}static fromData(e){return new t_(e)}},nS=class i_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.renewExpiredStakeSca(this.data.amount,this.data.lockPeriodInDays,this.data.vescaKey,this.data.isHaveRedeem,this.data.obligation,this.data.obligationKey,this.data.isObligationLocked,this.data.isOldBorrowIncentive,e.account.address)}static fromData(e){return new i_(e)}},rS=class n_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.repay(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new n_(e)}},oS=class r_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.stakeSca(this.data.amount,this.data.isObligationLocked,this.data.isOldBorrowIncentive,this.data.obligationId,this.data.obligationKey,this.data.lockPeriodInDays,this.data.veScaKey,e.account.address)}static fromData(e){return new r_(e)}},sS=class o_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.stake(this.data.marketCoinName,Number(this.data.amount),void 0,e.account.address)}static fromData(e){return new o_(e)}},aS=class s_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.supplyAndStake(this.data.coinName,Number(this.data.amount),this.data.stakeAccountId,e.account.address)}static fromData(e){return new s_(e)}},cS=class a_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.deposit(this.data.coinName,Number(this.data.amount),e.account.address)}static fromData(e){return new a_(e)}},lS=class c_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.unstake(this.data.marketCoinName,Number(this.data.amount),void 0,e.account.address)}static fromData(e){return new c_(e)}},uS=class l_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.unstakeAndWithdraw(this.data.coinName,Number(this.data.amount),this.data.stakeAccountId)}static fromData(e){return new l_(e)}},dS=class u_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.withdrawCollateral(this.data.collateralCoinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new u_(e)}},fS=class d_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=e.network.split(":")[1],n=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:i});return n.init(),n.withdraw(this.data.coinName,Number(this.data.amount),e.account.address)}static fromData(e){return new d_(e)}},hS=class f_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new Ot({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return i.init(),i.withdrawUnlockedSca(this.data.vescaKey,e.account.address)}static fromData(e){return new f_(e)}},pS=class{application="scallop";async deserialize(t){let e=new W0({client:t.suiClient,walletAddress:t.account.address,networkType:t.network.split(":")[1]});await e.init();let{transactionBlock:i}=t,n=new mC(i,e).decode();return{txType:M0.TransactionType.Other,txSubType:n.type,intentionData:n.intentionData}}async build(t){let{suiClient:e,account:i,network:n}=t,r;switch(t.txSubType){case"SupplyLending":r=cS.fromData(t.intentionData);break;case"WithdrawLending":r=fS.fromData(t.intentionData);break;case"Borrow":r=HC.fromData(t.intentionData);break;case"Repay":r=rS.fromData(t.intentionData);break;case"DepositCollateral":r=JC.fromData(t.intentionData);break;case"WithdrawCollateral":r=dS.fromData(t.intentionData);break;case"OpenObligation":r=tS.fromData(t.intentionData);break;case"StakeSpool":r=sS.fromData(t.intentionData);break;case"UnstakeSpool":r=lS.fromData(t.intentionData);break;case"ClaimIncentiveReward":r=XC.fromData(t.intentionData);break;case"BorrowWithBoost":r=ZC.fromData(t.intentionData);break;case"StakeSca":r=oS.fromData(t.intentionData);break;case"ExtendStakePeriod":r=QC.fromData(t.intentionData);break;case"ExtendPeriodAndStakeMore":r=YC.fromData(t.intentionData);break;case"RenewExpStakePeriod":r=nS.fromData(t.intentionData);break;case"WithdrawStakedSca":r=hS.fromData(t.intentionData);break;case"SupplyAndStakeLending":r=aS.fromData(t.intentionData);break;case"WithdrawAndUnstakeLending":r=uS.fromData(t.intentionData);break;case"RedeemSca":r=iS.fromData(t.intentionData);break;case"MigrateAndClaim":r=eS.fromData(t.intentionData);break;default:throw new Error("not implemented")}return r.build({suiClient:e,account:i,network:n})}},Vt={PackageId:"0x9632f61a796fc54952d9151d80b319e066cba5498a27b495c99e113db09726b1"},p_=[`${Vt.PackageId}::swap_router::swap_a_b`,`${Vt.PackageId}::swap_router::swap_b_a`],Wu=[`${Vt.PackageId}::swap_router::swap_a_b_b_c`,`${Vt.PackageId}::swap_router::swap_a_b_c_b`,`${Vt.PackageId}::swap_router::swap_b_a_b_c`,`${Vt.PackageId}::swap_router::swap_b_a_c_b`],mS=(t,e)=>{if(t===1)switch(Wu.findIndex(i=>i===e)){case 0:return[!0,!0];case 1:return[!0,!1];case 2:return[!1,!0];case 3:return[!1,!1];default:throw new Error(`not target: ${e}`)}switch(p_.findIndex(i=>i===e)){case 0:return[!0];case 1:return[!1];default:throw new Error(`not target: ${e}`)}},gS=class{constructor(t,e){this.txb=t,this.turbosSdk=e}get transactions(){return this.txb.blockData.transactions}decode(t){if(this.isSwapTransaction())return this.decodeSwap();if(this.isAddLiquidityTransaction())return this.decodeAddLiquidity();if(this.isIncreaseLiquidityTransaction())return this.decodeIncreaseLiquidity(t);if(this.isRemoveLiquidityTransaction())return this.decodeRemoveLiquidity(t);if(this.isDecreaseLiquidityTransaction())return this.decodeDecreaseLiquidity(t);if(this.isCollectFeeTransaction())return this.decodeCollectFee();if(this.isCollectRewardTransaction())return this.decodeCollectReward();if(this.isBurnTransaction())return this.decodeBurn();throw new Error("Unknown transaction type")}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}getMoveCallsTransaction(t){return t.every(e=>this.transactions.find(i=>i.kind==="MoveCall"&&i.target===e))}getSwapMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&t.includes(e.target))}isSwapTransaction(){return!!this.getSwapMoveCallTransaction([...p_,...Wu])}isAddLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Vt.PackageId}::position_manager::mint`)}isIncreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Vt.PackageId}::position_manager::increase_liquidity`)}isDecreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${Vt.PackageId}::position_manager::decrease_liquidity`)}isCollectFeeTransaction(){return!!this.getMoveCallTransaction(`${Vt.PackageId}::position_manager::collect`)}isCollectRewardTransaction(){return!!this.getMoveCallTransaction(`${Vt.PackageId}::position_manager::collect_reward`)}isBurnTransaction(){return!!this.getMoveCallTransaction(`${Vt.PackageId}::position_manager::burn`)}isRemoveLiquidityTransaction(){return!!this.getMoveCallsTransaction([`${Vt.PackageId}::position_manager::decrease_liquidity`,`${Vt.PackageId}::position_manager::burn`])}decodeSwap(){let t=this.transactions.find(y=>y.kind==="MoveCall"),e=0;Wu.includes(t.target)&&(e=1);let i=mS(e,t.target),n=i.map((y,v)=>{let C=this.helper.decodeSharedObjectId(v),O=this.helper.decodeInputU128(4+v+e),P=this.turbosSdk.math.sqrtPriceX64ToTickIndex(new Su.default(O.toString()));return{pool:C,a2b:y,nextTickIndex:P}}),r=i[0]||e===1?t.typeArguments[0]:t.typeArguments[1],o=e===1?t.typeArguments[4]:i[0]?t.typeArguments[1]:t.typeArguments[0],s=this.helper.decodeInputAddress(6+2*e),a=this.helper.decodeInputU64(7+2*e),l=this.helper.decodeInputBool(5+2*e),u=this.helper.decodeInputU64(2+e),h=this.helper.decodeInputU64(3+e);return{txType:ln.TransactionType.Other,type:"Swap",intentionData:{routes:n,coinTypeA:r,coinTypeB:o,address:s,amountA:l?u:h,amountB:l?h:u,amountSpecifiedIsInput:l,slippage:"0.1",deadline:a}}}decodeAddLiquidity(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeInputAddress(12),i=this.helper.decodeInputU64(8),n=this.helper.decodeInputU64(9),r=this.helper.decodeInputU32(4),o=this.helper.decodeInputBool(5),s=this.helper.decodeInputU32(6),a=this.helper.decodeInputBool(7),l=this.helper.decodeInputU64(13);return{txType:ln.TransactionType.Other,type:"AddLiquidity",intentionData:{pool:t,slippage:10,address:e,amountA:i,amountB:n,tickLower:o?-r:r,tickUpper:a?-s:s,deadline:l}}}decodeIncreaseLiquidity(t){let e=this.helper.decodeSharedObjectId(0),i=this.helper.decodeSharedObjectId(4),n=this.helper.decodeInputU64(5),r=this.helper.decodeInputU64(6),o=this.helper.decodeInputU64(9);return{txType:ln.TransactionType.Other,type:"IncreaseLiquidity",intentionData:{pool:e,slippage:10,address:t,amountA:n,amountB:r,nft:i,deadline:o}}}decodeDecreaseLiquidity(t){let e=this.helper.decodeSharedObjectId(0),i=this.helper.decodeSharedObjectId(2),n=this.helper.decodeInputU64(3),r=this.helper.decodeInputU64(4),o=this.helper.decodeInputU64(5),s=this.helper.decodeInputU64(6);return{txType:ln.TransactionType.Other,type:"DecreaseLiquidity",intentionData:{pool:e,decreaseLiquidity:n,nft:i,amountA:r,amountB:o,slippage:10,address:t,deadline:s}}}decodeCollectFee(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2),i=this.helper.decodeInputAddress(5),n=this.helper.decodeInputU64(3),r=this.helper.decodeInputU64(4),o=this.helper.decodeInputU64(6);return{txType:ln.TransactionType.Other,type:"CollectFee",intentionData:{pool:t,address:i,collectAmountA:n,collectAmountB:r,nft:e,deadline:o}}}decodeCollectReward(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2),i=this.helper.decodeInputAddress(6),n=this.collectRewardHelper.map(o=>o.decodeInputU64(5)),r=this.helper.decodeInputU64(7);return{txType:ln.TransactionType.Other,type:"CollectReward",intentionData:{pool:t,address:i,rewardAmounts:n,nft:e,deadline:r}}}decodeBurn(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2);return{txType:ln.TransactionType.Other,type:"Burn",intentionData:{pool:t,nft:e}}}decodeRemoveLiquidity(t){let e=this.decreaseLiquidityHelper.decodeSharedObjectId(0),i=this.decreaseLiquidityHelper.decodeSharedObjectId(2),n=this.decreaseLiquidityHelper.decodeInputU64(3),r=this.decreaseLiquidityHelper.decodeInputU64(4),o=this.decreaseLiquidityHelper.decodeInputU64(5),s=this.decreaseLiquidityHelper.decodeInputU64(6),a=this.collectRewardHelper.map(h=>h.decodeInputU64(5)),l=this.collectFeeHelper.decodeInputU64(3)||0,u=this.collectFeeHelper.decodeInputU64(4)||0;return{txType:ln.TransactionType.Other,type:"RemoveLiquidity",intentionData:{pool:e,decreaseLiquidity:n,nft:i,amountA:r,amountB:o,slippage:10,address:t,collectAmountA:l,collectAmountB:u,rewardAmounts:a,deadline:s}}}get helper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target!=="0x2::coin::zero");return new $a(t,this.txb)}get collectRewardHelper(){return this.transactions.filter(t=>t.kind==="MoveCall"&&t.target===`${Vt.PackageId}::position_manager::collect_reward`).map(t=>new $a(t,this.txb))}get collectFeeHelper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target===`${Vt.PackageId}::position_manager::collect`);return new $a(t,this.txb)}get decreaseLiquidityHelper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target===`${Vt.PackageId}::position_manager::decrease_liquidity`);return new $a(t,this.txb)}},$a=class Za{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return Za.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return Za.getOwnedObjectId(i)}decodeInputU128(e){let i=this.decodePureArg(e,"u128");return Number(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return Number(i)}decodeInputU32(e){let i=this.decodePureArg(e,"u32");return Number(i)}decodeInputU8(e){let i=this.decodePureArg(e,"u8");return Number(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,Rn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return Za.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}static getPureInputValue(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure;return Vu.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Rn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Rn.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,Rn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Rn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let n=e.value.Pure;return Vu.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,Rn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},_S=class m_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,amountA:o,amountB:s,slippage:a,tickLower:l,tickUpper:u,deadline:h,txb:y}=this.data;return i.pool.addLiquidity({pool:n,slippage:a,address:r,amountA:o,amountB:s,tickLower:l,tickUpper:u,deadline:h,txb:y})}static fromData(e){return new m_(e)}},bS=class g_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),{pool:n,nft:r,txb:o}=this.data;return i.nft.burn({pool:n,nft:r,txb:o})}static fromData(e){return new g_(e)}},yS=class __ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,nft:o,collectAmountA:s,collectAmountB:a,deadline:l,txb:u}=this.data;return i.pool.collectFee({pool:n,address:r,collectAmountA:s,collectAmountB:a,nft:o,deadline:l,txb:u})}static fromData(e){return new __(e)}},wS=class b_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,nft:o,rewardAmounts:s,deadline:a,txb:l}=this.data;return i.pool.collectReward({pool:n,address:r,rewardAmounts:s,nft:o,deadline:a,txb:l})}static fromData(e){return new b_(e)}},vS=class y_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),{fee:n,address:r,tickLower:o,tickUpper:s,sqrtPrice:a,slippage:l,coinTypeA:u,coinTypeB:h,amountA:y,amountB:v,deadline:C,txb:O}=this.data;return i.pool.createPool({fee:n,amountA:y,amountB:v,address:r,tickLower:o,tickUpper:s,sqrtPrice:a,slippage:l,coinTypeA:u,coinTypeB:h,deadline:C,txb:O})}static fromData(e){return new y_(e)}},kS=class w_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,amountA:o,amountB:s,slippage:a,nft:l,decreaseLiquidity:u,deadline:h,txb:y}=this.data;return i.pool.decreaseLiquidity({pool:n,slippage:a,address:r,amountA:o,amountB:s,nft:l,decreaseLiquidity:u,deadline:h,txb:y})}static fromData(e){return new w_(e)}},TS=class v_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),{pool:n,address:r,amountA:o,amountB:s,slippage:a,nft:l,deadline:u,txb:h}=this.data;return i.pool.increaseLiquidity({pool:n,slippage:a,address:r,amountA:o,amountB:s,nft:l,deadline:u,txb:h})}static fromData(e){return new v_(e)}},CS=class T_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),n=new k_.TransactionBlock;return n=await i.pool.collectFee({txb:n,...this.data}),n=await i.pool.collectReward({txb:n,...this.data}),n=await i.pool.decreaseLiquidity({txb:n,...this.data}),n=await i.nft.burn({txb:n,nft:this.data.nft,pool:this.data.pool}),n}static fromData(e){return new T_(e)}},SS=class C_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){let i=new At(e.network.replace("sui:",""),e.suiClient),{routes:n,coinTypeA:r,coinTypeB:o,address:s,amountA:a,amountB:l,slippage:u,amountSpecifiedIsInput:h,deadline:y,txb:v}=this.data;return i.trade.swap({routes:n,coinTypeA:r,coinTypeB:o,address:s,amountA:a,amountB:l,amountSpecifiedIsInput:h,slippage:u,deadline:y,txb:v})}static fromData(e){return new C_(e)}},xS=class{application="turbos";async deserialize(t){let e=new At(t.network.replace("sui:",""),t.suiClient),{transactionBlock:i,account:n}=t,r=new gS(i,e).decode(n.address);return{txType:h_.TransactionType.Other,txSubType:r.type,intentionData:r.intentionData}}async build(t){let{suiClient:e,account:i,network:n}=t,r;switch(t.txSubType){case"CreatePool":r=vS.fromData(t.intentionData);break;case"AddLiquidity":r=_S.fromData(t.intentionData);break;case"IncreaseLiquidity":r=TS.fromData(t.intentionData);break;case"DecreaseLiquidity":r=kS.fromData(t.intentionData);break;case"RemoveLiquidity":r=CS.fromData(t.intentionData);break;case"CollectFee":r=yS.fromData(t.intentionData);break;case"CollectReward":r=wS.fromData(t.intentionData);break;case"Burn":r=bS.fromData(t.intentionData);break;case"Swap":r=SS.fromData(t.intentionData);break;default:throw new Error("not implemented")}return r.build({suiClient:e,account:i,network:n})}},AS={packageId:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",poolObjectId:"0x7fa2faa111b8c65bea48a23049bfd81ca8f971a262d981dcd9a17c3825cb5baf",metadataObjectId:"0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",systemStateObjectId:"0x0000000000000000000000000000000000000000000000000000000000000005",certType:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT"},Ht=AS,IS=class{constructor(t){this.txb=t}decode(){if(console.log("txb",this.txb),this.isStakeTransaction())return this.decodeStake();if(this.isUnStakeTransaction())return this.decodeUnStake();if(this.isClaimTicketTransaction())return this.decodeClaimTicket();throw new Error("Unknown transaction type")}get transactions(){return this.txb.blockData.transactions}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isStakeTransaction(){return!!this.getMoveCallTransaction(`${Ht.packageId}::native_pool::stake`)}isUnStakeTransaction(){return!!this.getMoveCallTransaction(`${Ht.packageId}::native_pool::unstake`)}isClaimTicketTransaction(){return!!this.getMoveCallTransaction(`${Ht.packageId}::native_pool::burn_ticket`)}decodeStake(){let t=this.transactions[0].amounts[0].value.div(1e9).toNumber();return{txType:Xa.TransactionType.Other,type:"Stake",intentionData:{amount:t}}}decodeUnStake(){let t=this.transactions.find(e=>e.kind==="SplitCoins").amounts[0].value.div(1e9).toNumber();return{txType:Xa.TransactionType.Other,type:"UnStake",intentionData:{amount:t}}}decodeClaimTicket(){let t=this.helper.decodeOwnedObjectId(2);return console.log(t),{txType:Xa.TransactionType.Other,type:"ClaimTicket",intentionData:{ticketId:t}}}get helper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(Ht.packageId));return new OS(t,this.txb)}},OS=class Ja{constructor(e,i){this.moveCall=e,this.txb=i}decodeSharedObjectId(e){let i=this.getInputParam(e);return Ja.getSharedObjectId(i)}decodeOwnedObjectId(e){let i=this.getInputParam(e);return Ja.getOwnedObjectId(i)}decodeInputU64(e){let i=this.decodePureArg(e,"u64");return Number(i)}decodeInputU8(e){let i=this.decodePureArg(e,"u8");return Number(i)}decodeInputAddress(e){let i=this.decodePureArg(e,"address");return(0,qn.normalizeSuiAddress)(i)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,i){let n=this.getInputParam(e);return Ja.getPureInputValue(n,i)}getInputParam(e){let i=this.moveCall.arguments[e];if(i.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[i.index]}static getPureInputValue(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure;return zu.bcs.de(i,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,qn.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,qn.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,qn.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,qn.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,i){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let n=e.value.Pure;return zu.bcs.de(i,new Uint8Array(n))}typeArg(e){return(0,qn.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}},PS=class A_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){console.log(e);let i=new x_.TransactionBlock,{ticketId:n}=this.data;return i.moveCall({target:`${Ht.packageId}::native_pool::burn_ticket`,arguments:[i.object(Ht.poolObjectId),i.object(Ht.systemStateObjectId),i.object(n)]}),i}static fromData(e){return new A_(e)}},DS=class O_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){console.log(e);let i=new I_.TransactionBlock,{amount:n}=this.data,[r]=i.splitCoins(i.gas,[i.pure(n)]);return i.moveCall({target:`${Ht.packageId}::native_pool::stake`,arguments:[i.object(Ht.poolObjectId),i.object(Ht.metadataObjectId),i.object(Ht.systemStateObjectId),r]}),i}static fromData(e){return new O_(e)}},MS=class D_ extends re{constructor(e){super(e),this.data=e}txType;txSubType;async build(e){console.log(e);let i=new P_.TransactionBlock,{amount:n}=this.data,r=(await e.suiClient.getAllCoins({owner:e.account.address,limit:100})).data,[o,...s]=r.filter(u=>u.coinType.split("::")[0]===Ht.certType),a=i.object(o.coinObjectId);s.length&&i.mergeCoins(a,s.map(u=>i.object(u.coinObjectId)));let l=i.splitCoins(i.object(o.coinObjectId),[i.pure(n)]);return i.moveCall({target:`${Ht.packageId}::native_pool::unstake`,arguments:[i.object(Ht.poolObjectId),i.object(Ht.metadataObjectId),i.object(Ht.systemStateObjectId),l]}),i}static fromData(e){return new D_(e)}},ES=class{application="volo";async deserialize(t){let{transactionBlock:e}=t,i=new IS(e).decode();return{txType:S_.TransactionType.Other,txSubType:i.type,intentionData:i.intentionData}}async build(t){let{suiClient:e,account:i}=t,n;switch(t.txSubType){case"Stake":n=DS.fromData(t.intentionData);break;case"UnStake":n=MS.fromData(t.intentionData);break;case"ClaimTicket":n=PS.fromData(t.intentionData);break;default:throw new Error("not implemented")}return n.build({suiClient:e,account:i})}},ac=new uC([new ZT,new sC,new WT,new lC,new Wk,new xS,new pS,new ES]);var Pe=require("@msafe/sui3-utils"),ad=require("@mysten/sui.js/transactions"),pc=require("@mysten/sui.js/utils");var M_=require("@mysten/sui.js/transactions"),jS=1000n,BS=120n,NS=100n,FS={multiplier:{numerator:BS,denominator:NS}};var cc=class{constructor(e){this.globals=e}async simulate(e,i=FS){let n=this.copyTransactionBlock(e.txb),{suiClient:r}=this.globals,o=await this.getGasPrice(i);n.setGasPrice(o);let s=await r.devInspectTransactionBlock({transactionBlock:n,sender:e.sender}),{gasUsed:a}=s.effects,l=this.toGasBudget(a,o),u=s.effects.status.status==="success",h;return u||(h=s.effects.status.error),{success:u,gasPrice:o,gasObject:s.effects.gasObject.reference,gasUsed:a,gasBudget:l,simulationError:h}}async getGasPrice(e){if(this.isFixedValue(e))return e.fixedVal;let i=await this.globals.suiClient.getReferenceGasPrice();return this.applyGasOption(i,e)}toGasBudget(e,i){let{computationCost:n,storageCost:r}=e,o=jS*i,s=BigInt(n)+o,a=s+BigInt(r);return a>s?a:s}isFixedValue(e){return"fixedVal"in e}isMultiplier(e){return"multiplier"in e}applyGasOption(e,i){if(this.isFixedValue(i))return i.fixedVal;if(this.isMultiplier(i)){let{multiplier:n}=i;return e*n.numerator/n.denominator}throw new Error("Sanity: Unknown gas price option")}copyTransactionBlock(e){return M_.TransactionBlock.from(e.serialize())}};var Qu=require("buffer");function lc(t){return Qu.Buffer.from(t,"utf-8")}function RS(t){return`0x${Array.prototype.map.call(t,e=>`0${e.toString(16)}`.slice(-2)).join("")}`}function uc(t){return Uint8Array.from(Qu.Buffer.from(t.startsWith("0x")?t.slice(2):t,"hex"))}var fc=require("@mysten/sui.js/verify");var $n=require("@mysten/sui.js/utils");var dc=require("@mysten/sui.js/utils"),ps=class{_client;_coinMetaReg;constructor(e){this._client=e,this._coinMetaReg=new Map}async getCoinMeta(e){let i=(0,dc.normalizeStructTag)(e);if(this._coinMetaReg.has(i))return this._coinMetaReg.get(i);let n=await this.queryCoinMeta(i);return n&&this._coinMetaReg.set(i,n),n}async queryCoinMeta(e){return await this._client.getCoinMetadata({coinType:e})||void 0}},ed=/^0x0000000000000000000000000000000000000000000000000000000000000002::coin::Coin<(.+)>$/,ms=class t{static isCoin(e){return e?(0,dc.normalizeStructTag)(e).match(ed)!=null:!1}static getCoinType(e){let[,i]=(0,dc.normalizeStructTag)(e).match(ed)??[];return i||null}static getBalance(e){if(!t.isCoin(e.type)||e.content?.dataType!=="moveObject")return;let{balance:i}=e.content?.fields;if(i!==void 0)return BigInt(i)}};var fn=class{static normalizeSuiAddress(e){return(0,$n.normalizeSuiAddress)(e)}static normalizeStructTag(e){return(0,$n.normalizeStructTag)(e)}static isSuiAddressEqual(e,i){return(0,$n.normalizeSuiAddress)(e)===(0,$n.normalizeSuiAddress)(i)}static isSuiStructEqual(e,i){return(0,$n.normalizeStructTag)(e)===(0,$n.normalizeStructTag)(i)}static isCoinObjectType(e){return ms.isCoin(e)}};function td(t,e){return t.startsWith(e)?t:e+t}var id=class t{static async getPublicKeyFromSignature(e){return e.messageType==="TransactionBlock"?(0,fc.verifyTransactionBlock)(e.message,e.signature):(0,fc.verifyPersonalMessage)(e.message,e.signature)}static async getPublicKeyFromPersonalSignature(e){let i=lc(e.messageStr);return this.getPublicKeyFromSignature({message:i,messageType:"Personal",signature:e.signature})}static async verifySignature(e){let i=await t.getPublicKeyFromSignature(e);return fn.isSuiAddressEqual(i.toSuiAddress(),e.targetAddress)}static async verifyPersonalSignature(e){let i=lc(e.messageStr);return this.verifySignature({message:i,messageType:"Personal",signature:e.signature,targetAddress:e.targetAddress})}static async verifyTransactionSignature(e){return this.verifySignature({messageType:"TransactionBlock",message:e.payload,signature:e.signature,targetAddress:e.targetAddress})}};var E_=require("@msafe/sui3-utils"),j_=require("@mysten/sui.js/cryptography"),B_=require("@mysten/sui.js/multisig");var qS="0x2::sui::SUI";async function nd(t,e){let i;try{i=await t.queryTransactionBlocks({filter:{FromAddress:e},options:{showInput:!0},limit:2})}catch{return}if(i.data.length===0||!i.data[0].transaction?.txSignatures)return;let r=i.data[0].transaction?.txSignatures;for(let o=0;o!==r.length;o++){let s=r[o],a=LS(s,e);if(a)return a}}function LS(t,e){let i=(0,j_.parseSerializedSignature)(t);switch(i.signatureScheme){case"MultiSig":{let n=new B_.MultiSigPublicKey(i.multisig.multisig_pk).toSuiAddress();if(fn.isSuiAddressEqual(n,e))throw new Error("multi-sig wallet cannot be owner");return}case"ZkLogin":{if(fn.isSuiAddressEqual(i.zkLogin.address,e))throw new Error("ZkLogin wallet cannot be owner");return}case"ED25519":case"Secp256k1":case"Secp256r1":{let n=E_.PublicKeySerde.de({publicKeyEncoded:i.publicKey,schema:i.signatureScheme});return fn.isSuiAddressEqual(n.toSuiAddress(),e)?n:void 0}default:throw new Error("Unknown schema")}}async function $S(t){let e=!0,i,n=[];for(;e;){let r=await t.suiClient.getCoins({owner:t.owner,coinType:t.coinType,cursor:i});n.push(...r.data),e=r.hasNextPage,i=r.nextCursor}return n}var N_=25;async function F_(t){let e=[];for(;await t.hasNext();){let i=await t.next();e.push(i)}return e&&Array.isArray(e[0])?e.flat(1):e}var rd=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)}},hc=class{constructor(e){this.requester=e;this.pager=new rd(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 R_(t,e,i){let n=new od(t,e,i);return await F_(n)}var od=class extends hc{constructor(i,n,r){super(new sd(i,n,r));this.provider=i;this.owner=n;this.options=r}},sd=class{constructor(e,i,n){this.provider=e;this.owner=i;this.options=n;this.nextCursor=null,this.filter=n?.filter,this.pageSize=n?.pageSize||N_,this.objectOptions=n?.objectOptions||{showType:!0,showContent:!0}}nextCursor;filter;pageSize;objectOptions;async doNextRequest(){let e=await this.provider.getOwnedObjects({owner:this.owner,options:this.objectOptions,cursor:this.nextCursor,limit:this.pageSize});this.nextCursor=e.nextCursor;let i;if(this.filter){let{filter:n}=this;i=e.data.filter(r=>n?.(r))}else i=e.data;return{data:i.map(n=>n.data).filter(n=>n),hasNext:e.hasNextPage}}};var hr=class t{constructor(e,i){this.globals=e;this.info=i;this.multiSig=new Pe.MultiSigAccount({threshold:i.threshold,ownersWithWeight:i.owners,creationNonce:i.creationNonce}),this.coinHelper=new ps(this.suiClient),this.simulator=new cc(e)}multiSig;coinHelper;simulator;static async New(e,i){let n=await e.backend.getMSafeAccountInfo(i);if(new t(e,n).address!==i)throw new Error("Invalid msafe config with address")}async ownedCoins(){let e=await this.suiClient.getAllBalances({owner:this.address});return Promise.all(e.map(async i=>{let n=await this.coinHelper.getCoinMeta(i.coinType),r=i.lockedBalance.number?BigInt(i.totalBalance)-BigInt(i.lockedBalance.number):BigInt(i.totalBalance);return{type:(0,pc.normalizeStructTag)(i.coinType),balance:BigInt(r),metadata:n}}))}async ownedObjects(e){let i={filter:n=>!n?.data?.type?.startsWith("0x2::coin::Coin"),...e};return R_(this.suiClient,this.address,i)}async pendingTransaction(){let e=await this.backend.getPendingTransactions({msafeAddress:this.address});if(!e.pending)return;let i=e.pending,n=e.reject;return{application:i.application,txType:i.txType,txSubType:i.txSubType,createdAt:i.createdAt,creator:i.creator,digest:i.digest,intention:i.intention,sequenceNumber:i.sequenceNumber,payload:i.payload,votes:i.votes,approvalWeight:this.calculateWeightFromVotes(i.votes),msafeAddress:i.msafeAddress,rejectDigest:n?.digest??"",rejectPayload:n?.payload??"",rejectVotes:n?.votes??[],rejectWeight:this.calculateWeightFromVotes(n?.votes??[])}}async historyTransaction(e){return this.backend.getHistoryTransactions({msafeAddress:this.address,...e})}async futureIntentions(e){return this.backend.getFutureIntentions({msafeAddress:this.address,...e})}async currentSequenceNumber(){return this.backend.getCurrentSequenceNumber(this.address)}async nextSequenceNumber(){return this.backend.getNextSequenceNumber(this.address)}async simulateIntention(e){let i=ac.getAppHelper(e.application);if(!i)throw new Error(`Can't find app helper for application ${e.application}`);let n=await i.build({network:this.globals.config.network,intentionData:e.intention,txType:e.txType,txSubType:e.txSubType,suiClient:this.globals.suiClient,account:{address:this.address}});return this.simulator.simulate({txb:n,sender:this.address})}async proposeIntention(e){let i=Pe.SigningMessageHelper.proposeIntentionMessage({msafeAddress:this.address,intention:e.intention,sn:e.sequenceNumber}),n=await this.wallet.signPersonalMessage({messageStr:i});return this.backend.proposeIntention({...e,msafeAddress:this.address,signature:n.signature})}async proposeIntentionAndBuildVote(e){let i=ac.getAppHelper(e.application);if(!i)throw new Error(`Can't find app helper for application ${e.application}`);let n=await i.build({network:this.globals.config.network,intentionData:e.intention,txType:e.txType,txSubType:e.txSubType,suiClient:this.globals.suiClient,account:{address:this.address}});n.setGasPrice(e.gasPrice),n.setGasBudget(e.gasBudget),n.setSender(this.address);let r=await n.build({client:this.globals.suiClient}),o=await n.getDigest({client:this.globals.suiClient}),s=await this.wallet.signTransactionBlock({transactionBlock:r});return this.backend.proposeIntentionAndBuildVote({...e,payload:(0,pc.toHEX)(r),digest:o,msafeAddress:this.address,signature:s.signature})}async simulateCoinTransferIntention(e){let i=await this.nextSequenceNumber();return this.simulateIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.coin.send,sequenceNumber:i,intention:e})}async proposeCoinTransferIntention(e){let i=await this.nextSequenceNumber();return this.proposeIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.coin.send,sequenceNumber:i,intention:e})}async simulateObjectTransferIntention(e){let i=await this.nextSequenceNumber();return this.simulateIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.object.send,sequenceNumber:i,intention:e})}async proposeObjectTransferIntention(e){let i=await this.nextSequenceNumber();return this.proposeIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Assets,txSubType:Pe.TransactionSubTypes.assets.object.send,sequenceNumber:i,intention:e})}async simulatePlainPayloadIntention(e){let i=await this.nextSequenceNumber();return this.simulateIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Other,txSubType:Pe.TransactionSubTypes.others.plain,sequenceNumber:i,intention:e})}async proposePlainPayloadIntention(e){let i=await this.nextSequenceNumber(),n=ad.TransactionBlock.from(e.payload);if(!n.blockData.sender||!(0,Pe.isSameAddress)(n.blockData.sender,this.address))throw new Error("Transaction sender is not same as the multisig address");return this.proposeIntention({application:Pe.TransactionDefaultApplication,txType:Pe.TransactionType.Other,txSubType:Pe.TransactionSubTypes.others.plain,sequenceNumber:i,intention:e})}async voteForTransaction(e,i){let n=uc(i),r=await this.wallet.signTransactionBlock({transactionBlock:n});return this.backend.voteForTransaction({msafeAddress:this.address,digest:e,signature:r.signature})}async proposePendingTransaction(e){let i=new ad.TransactionBlock,n=await i.build({client:this.suiClient}),r=await i.getDigest({client:this.suiClient}),o=await this.wallet.signTransactionBlock({transactionBlock:n});return this.backend.proposePendingTransaction({msafeAddress:this.address,userAddress:await this.userAddress(),intention:e,digest:r,signature:o.signature})}async simulateRejectTx(){let e=await this.pendingTransaction();if(!e||e.rejectDigest!=="")throw new Error("Already rejected");let i=e.payload,n=(0,Pe.buildRejectTxb)(this.address,i);return this.simulator.simulate({txb:n,sender:this.address})}async rejectCurrentTx(e){let i=await this.pendingTransaction();if(!i||i.rejectDigest!=="")throw new Error("Already rejected");let n=i.payload,r=(0,Pe.buildRejectTxb)(this.address,n),o=await r.getDigest({client:this.suiClient}),s=await r.build({client:this.suiClient}),a=await this.wallet.signTransactionBlock({transactionBlock:s});return this.backend.rejectCurrentTx({msafeAddress:this.address,digest:o,signature:a.signature,...e})}async simulateBuildTransaction(){let e=await this.backend.getNextIntention({msafeAddress:this.address}),i=ac.getAppHelper(e.application);if(!i)throw new Error(`Can't find app helper for application ${e.application}`);console.log("\u{1F680} ~ MSafeAccount ~ simulateBuildTransaction ~ intention:",e);let n=await i.build({network:this.globals.config.network,intentionData:e.intention,txType:e.txType,txSubType:e.txSubType,suiClient:this.globals.suiClient,account:{address:this.address}});return this.simulator.simulate({txb:n,sender:this.address})}async buildNextIntentionAndAddToPending(e){return this.backend.buildNextIntentionAndAddToPending({msafeAddress:this.address,forceBuild:e.forceBuild,gasPrice:e.gasPrice,gasBudget:e.gasBudget})}async skipNextFailedIntention(){return this.backend.skipNextFailedIntention({msafeAddress:this.address})}async executePendingTx(e,i=!1){let n=i?e.rejectVotes:e.votes,r=i?e.rejectPayload:e.payload;if(this.calculateWeightFromVotes(n)<this.info.threshold)throw new Error("Not enough signature");let o=[],s=new Map(n.map(l=>[l.userAddress,l.signature]));for(let l=0;l<this.info.owners.length;l++){let u=this.info.owners[l],h=s.get(u.address);h&&o.push(h)}let a=this.multiSig.combinePartialSignatures(o);return this.suiClient.executeTransactionBlock({transactionBlock:uc(r),signature:a,options:{showEffects:!0,showEvents:!0}})}async dashboard(){return this.backend.getDashboard({msafeAddress:this.address})}calculateWeightFromVotes(e){return this.calculateWeight(e.map(i=>i.userAddress))}calculateWeight(e){let i=0;for(let n=0;n<e.length;n++){let r=this.info.owners.find(o=>(0,Pe.isSameAddress)(o.address,e[n]));r&&(i+=r.weight)}return i}get address(){return this.multiSig.address}get backend(){return this.globals.backend}get wallet(){return this.globals.wallet}async userAddress(){return this.globals.wallet.address()}get suiClient(){return this.globals.suiClient}};var q_=require("@msafe/sui3-utils"),L_=require("@mysten/sui.js/utils");var mc=class{constructor(e){this.globals=e;this.knownPublicKeys=new Map}knownPublicKeys;async getPublicKey(e){let i=this.knownPublicKeys.get(e);if(i)return i;let n=await this._getPublicKey(e);return n&&this.knownPublicKeys.set(e,n),n}async getPublicKeyBatch(e){let i=new Array(e.length).fill(void 0);for(let o=0;o<e.length;o++){let s=e[o];i[o]=this.knownPublicKeys.get(s)}let n=i.map((o,s)=>o===void 0?s:-1).filter(o=>o!==-1);if(n.length===0)return i;let r=await this.globals.backend.getPublicKeyBatch(n.map(o=>e[o]));for(let o=0;o<n.length;o++){let s=n[o];i[s]=r[o]}for(let o=0;o<i.length;o++)i[o]===void 0&&(i[o]=await this.getPublicKeyFromChain(e[o]));for(let o=0;o<e.length;o++)i[o]&&this.knownPublicKeys.set(e[o],i[o]);return i}addPublicKey(e,i){if(!(0,q_.isSameAddress)(e,i.toSuiAddress()))throw new Error("Invalid public key");this.knownPublicKeys.set((0,L_.normalizeSuiAddress)(e),i)}async _getPublicKey(e){let i=await this.getPublicKeyFromBackend(e);if(i)return i;let n=await this.getPublicKeyFromChain(e);if(n)return n}async getPublicKeyFromBackend(e){try{return await this.globals.backend.getPublicKey(e)}catch{return}}async getPublicKeyFromChain(e){return nd(this.globals.suiClient,e)}};var gc=class{constructor(e){this.globals=e}async create(e){return this.globals.backend.submitReport(e)}};var G_=require("@mysten/sui.js/client");var _s=require("@msafe/sui3-utils"),gs=we(require("axios"),1);var _c=class t{constructor(e){this.apiURL=e}_token;async authSign(e){let i=await this.post("/auth/login",e);return this._token=i.data.accessToken,this._token}async verifyToken(e){try{return(await this.get("/auth",{headers:this.headers(e)})).status===200}catch{return!1}}setJWTToken(e){this._token=e}async getPublicKey(e){return(await this.getPublicKeyBatch([e]))[0]}async getPublicKeyBatch(e){let i={userAddressList:e};return(await this.get("/user/public-keys",{params:i,headers:this.headers()})).data?.map(r=>r?_s.PublicKeySerde.de(r):void 0)}async getMSafeAccountInfo(e){let i={msafeAddress:e},n=await this.get("/msafe",{params:i,headers:this.headers()});return t.toMSafeConfig(n.data)}async getUserInfo(){return(await this.get("/user",{headers:this.headers()})).data}async getOwnedMSafeByStatus(e){let i={status:e.status??_s.UserMSafeStatus.active,...e.pagination?{page:e.pagination.page.toString(),limit:e.pagination.limit.toString()}:{}},n=await this.get("/msafe/owned",{params:i,headers:this.headers()});return{data:n.data.data.map(t.toMSafeConfig),meta:n.data.meta}}async updateMSafeStatus(e){let i=e;await this.post("/msafe/status",i,{headers:this.headers()})}async getPendingTransactions(e){return(await this.get("/transaction/pending",{params:e,headers:this.headers()})).data}async getHistoryTransactions(e){return(await this.get("/transaction/history",{params:e,headers:this.headers()})).data}async getFutureIntentions(e){return(await this.get("/transaction/intention",{params:e,headers:this.headers()})).data}async getNextIntention(e){return(await this.get("/transaction/intention/next",{params:e,headers:this.headers()})).data}async getCurrentSequenceNumber(e){return(await this.get("/transaction/sn/current",{params:{msafeAddress:e},headers:this.headers()})).data}async getNextSequenceNumber(e){return(await this.get("/transaction/sn/next",{params:{msafeAddress:e},headers:this.headers()})).data}async createMSafeAccount(e){await this.post("/msafe/create",e,{headers:this.headers()})}async proposeIntention(e){await this.post("/transaction/intention",e,{headers:this.headers()})}async proposePendingTransaction(e){}async rejectCurrentTx(e){await this.post("/transaction/pending/reject",{...e,gasPrice:e.gasPrice.toString(),gasBudget:e.gasBudget.toString()},{headers:this.headers()})}async voteForTransaction(e){await this.post("/transaction/pending/vote",e,{headers:this.headers()})}async buildNextIntentionAndAddToPending(e){await this.post("/transaction/pending/build",{...e,gasPrice:e.gasPrice.toString(),gasBudget:e.gasBudget.toString()},{headers:this.headers()})}async proposeIntentionAndBuildVote(e){await this.post("/transaction/intention/build",{...e,gasPrice:e.gasPrice.toString(),gasBudget:e.gasBudget.toString()},{headers:this.headers()})}async skipNextFailedIntention(e){await this.post("/transaction/pending/skip",e,{headers:this.headers()})}async getAddressBookEntries(e){return(await this.get("/address-book",{headers:this.headers(),params:e})).data}async updateAddressBook(e){await this.post("/address-book",e,{headers:this.headers()})}async getAddressBookMode(){return(await this.get("/address-book/mode",{headers:this.headers()})).data}async setAddressBookMode(e){await this.post("/address-book/mode",{mode:e.mode},{headers:this.headers()})}async submitReport(e){await this.post("/report",e)}async getDashboard(e){return(await this.get("/dashboard",{params:e,headers:this.headers()})).data}headers(e){return{Authorization:`Bearer ${e||this._token}`}}static toMSafeConfig(e){return{...e,owners:e.owners.map(i=>({address:i.address,weight:i.weight,publicKey:_s.PublicKeySerde.de({publicKeyEncoded:i.publicKeyEncoded,schema:i.schema})}))}}async get(e,i){let n=this.getFullUrl(e);try{return await gs.default.get(n,i)}catch(r){throw bc.fromError(r)??r}}async post(e,i,n){let r=this.getFullUrl(e);try{return await gs.default.post(r,i,{...n,transformRequest:this.getTransformRequest()})}catch(o){throw bc.fromError(o)??o}}getFullUrl(e){return e.startsWith(this.apiURL)?e:`${this.apiURL}${td(e,"/")}`}getTransformRequest(){let e=[],{transformRequest:i}=gs.default.defaults;return i?i instanceof Array?e=i:e=[i]:e=[],[n=>JSON.parse(JSON.stringify(n,(r,o)=>typeof o=="bigint"?`${o.toString()}n`:o)),...e]}},bc=class t extends Error{constructor(i){super();this.e=i;Error.captureStackTrace(this,this.constructor)}name;static fromError(i){if(gs.default.isAxiosError(i)&&i?.response?.data&&"message"in i.response.data)return new t(i)}get status(){return this.e.response?.status??void 0}get message(){return`${this.respMessage()??"Unknown resp"}`}respMessage(){if(this.e.response?.data)return(this.e.response?.data).message??void 0}get endpoint(){return this.e.config?.url??""}toString(){return this.message}};var $_=(o=>(o.local="local",o.unit="unit",o.dev="dev",o.prev="prev",o.prod="prod",o))($_||{}),yc="https://fullnode.testnet.sui.io",cd="https://fullnode.mainnet.sui.io",ld="http://127.0.0.1:3000",ud="http://127.0.0.1:3001",U_="https://sui-dev.m-safe.link",K_="http://13.56.226.148:81",V_="https://sui-preview.m-safe.link",W_="https://sui.m-safe.link",z_=new Map([["unit",{suiClient:{url:yc},backend:{url:ld},syncingURL:ud,network:"sui:testnet"}],["local",{suiClient:{url:yc},backend:{url:ld},syncingURL:ud,network:"sui:testnet"}],["dev",{suiClient:{url:yc},backend:{url:U_},syncingURL:K_,network:"sui:testnet"}],["prev",{suiClient:{url:cd},backend:{url:V_},syncingURL:"",network:"sui:mainnet"}],["prod",{suiClient:{url:cd},backend:{url:W_},syncingURL:"",network:"sui:mainnet"}]]);function dd(t,e){let i=z_.get(t);if(!i)throw new Error("Unknown environment");return e?.suiClient?.url&&(i.suiClient.url=e.suiClient.url),e?.backend?.url&&(i.backend.url=e.backend.url),i}var bs=class t{backend;suiClient;config;_wallet;constructor(e){this.backend=e.backend,this.suiClient=e.suiClient,this.config=e.config}static async New(e,i){let n=dd(e,i),r=new G_.SuiClient(n.suiClient),o=new _c(n.backend.url);return new t({backend:o,suiClient:r,config:n})}connectWallet(e){this._wallet=e}get wallet(){if(!this._wallet)throw new Error("wallet not connected");return this._wallet}set wallet(e){this._wallet=e}};var wc=class t{constructor(e){this.globals=e}_creationHelper;_publicKeyHelper;static async New(e,i){let n=await bs.New(e,i);return new t(n)}async connectWallet(e){if(e.jwtToken&&await this.backend.verifyToken(e.jwtToken))return this.globals.wallet=e.wallet,this.backend.setJWTToken(e.jwtToken),e.jwtToken;let i=await this.authSign(e.wallet);return this.globals.wallet=e.wallet,this.backend.setJWTToken(i),i}async authSign(e){let i=vc.SigningMessageHelper.loginMessageWithTimestamp(new Date().toUTCString()),n=await e.signPersonalMessage({messageStr:i});return this.backend.authSign({address:await e.address(),message:i,signature:n.signature,walletType:e.walletType})}async userInfo(){return this.globals.backend.getUserInfo()}async ownedMSafe(e){return this.globals.backend.getOwnedMSafeByStatus({status:vc.UserMSafeStatus.active,pagination:e})}async createAccount(e){return this.creationHelper.submitMSafeCreation(e)}getMSafeAccount(e){return new hr(this.globals,e)}async getMSafeAccountFromAddress(e){let i=await this.backend.getMSafeAccountInfo(e);return new hr(this.globals,i)}get creationHelper(){return this._creationHelper||(this._creationHelper=new mr(this.globals,this.publicKeyHelper)),this._creationHelper}get publicKeyHelper(){return this._publicKeyHelper||(this._publicKeyHelper=new mc(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 gr(this.globals)}get Invitation(){return new vs(this.globals)}get Report(){return new gc(this.globals)}async walletAddress(){return this.wallet.address()}};
|
|
2054
2054
|
/*! Bundled license information:
|
|
2055
2055
|
|
|
2056
2056
|
@syntsugar/cc-graph/dist/index.umd.js:
|