@cetusprotocol/deepbook-utils 1.6.0 → 1.6.1

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.
Files changed (2) hide show
  1. package/dist/index.js +9 -9
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,23 +1,23 @@
1
- var rs=Object.defineProperty;var Ua=(n,e,t)=>e in n?rs(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var sr=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+n+'" is not supported')});var Fa=(n,e)=>{for(var t in e)rs(n,t,{get:e[t],enumerable:!0})};var on=(n,e,t)=>(Ua(n,typeof e!="symbol"?e+"":e,t),t);import{isValidSuiAddress as _d}from"@mysten/sui/utils";import{SuiGrpcClient as bd}from"@mysten/sui/grpc";import{normalizeSuiAddress as $r}from"@mysten/sui/utils";import{Ed25519Keypair as kd}from"@mysten/sui/keypairs/ed25519";import{Secp256k1Keypair as Td}from"@mysten/sui/keypairs/secp256k1";import{fromBase64 as Md,fromHex as Ad,normalizeSuiObjectId as Ks}from"@mysten/sui/utils";import{coinWithBalance as Ds}from"@mysten/sui/transactions";import{bcs as Xt}from"@mysten/sui/bcs";import{deriveDynamicFieldID as Mu}from"@mysten/sui/utils";import{graphql as nn}from"@mysten/sui/graphql/schema";import{bcs as Ct}from"@mysten/sui/bcs";import{SuiGrpcClient as qu}from"@mysten/sui/grpc";import{SuiGraphQLClient as $d}from"@mysten/sui/graphql";var cn=class extends Error{constructor(e,t){super(e),this.name="ParseError",this.type=t.type,this.field=t.field,this.value=t.value,this.line=t.line}};function ei(n){}function ns(n){if(typeof n=="function")throw new TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");let{onEvent:e=ei,onError:t=ei,onRetry:r=ei,onComment:i}=n,s="",a=!0,o,u="",l="";function p(T){let A=a?T.replace(/^\xEF\xBB\xBF/,""):T,[E,q]=La(`${s}${A}`);for(let x of E)f(x);s=q,a=!1}function f(T){if(T===""){y();return}if(T.startsWith(":")){i&&i(T.slice(T.startsWith(": ")?2:1));return}let A=T.indexOf(":");if(A!==-1){let E=T.slice(0,A),q=T[A+1]===" "?2:1,x=T.slice(A+q);m(E,x,T);return}m(T,"",T)}function m(T,A,E){switch(T){case"event":l=A;break;case"data":u=`${u}${A}
2
- `;break;case"id":o=A.includes("\0")?void 0:A;break;case"retry":/^\d+$/.test(A)?r(parseInt(A,10)):t(new cn(`Invalid \`retry\` value: "${A}"`,{type:"invalid-retry",value:A,line:E}));break;default:t(new cn(`Unknown field "${T.length>20?`${T.slice(0,20)}\u2026`:T}"`,{type:"unknown-field",field:T,value:A,line:E}));break}}function y(){u.length>0&&e({id:o,event:l||void 0,data:u.endsWith(`
3
- `)?u.slice(0,-1):u}),o=void 0,u="",l=""}function k(T={}){s&&T.consume&&f(s),a=!0,o=void 0,u="",l="",s=""}return{feed:p,reset:k}}function La(n){let e=[],t="",r=0;for(;r<n.length;){let i=n.indexOf("\r",r),s=n.indexOf(`
1
+ var ns=Object.defineProperty;var Fa=(n,e,t)=>e in n?ns(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var sr=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+n+'" is not supported')});var Ua=(n,e)=>{for(var t in e)ns(n,t,{get:e[t],enumerable:!0})};var on=(n,e,t)=>(Fa(n,typeof e!="symbol"?e+"":e,t),t);import{isValidSuiAddress as _d}from"@mysten/sui/utils";import{SuiGrpcClient as bd}from"@mysten/sui/grpc";import{normalizeSuiAddress as $r}from"@mysten/sui/utils";import{Ed25519Keypair as kd}from"@mysten/sui/keypairs/ed25519";import{Secp256k1Keypair as Td}from"@mysten/sui/keypairs/secp256k1";import{fromBase64 as Md,fromHex as Ad,normalizeSuiObjectId as Xs}from"@mysten/sui/utils";import{coinWithBalance as $s}from"@mysten/sui/transactions";import{bcs as Xt}from"@mysten/sui/bcs";import{deriveDynamicFieldID as Mu}from"@mysten/sui/utils";import{graphql as nn}from"@mysten/sui/graphql/schema";import{bcs as Ct}from"@mysten/sui/bcs";import{SuiGrpcClient as qu}from"@mysten/sui/grpc";import{SuiGraphQLClient as $d}from"@mysten/sui/graphql";var cn=class extends Error{constructor(e,t){super(e),this.name="ParseError",this.type=t.type,this.field=t.field,this.value=t.value,this.line=t.line}};function ei(n){}function is(n){if(typeof n=="function")throw new TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");let{onEvent:e=ei,onError:t=ei,onRetry:r=ei,onComment:i}=n,s="",a=!0,o,u="",l="";function p(C){let A=a?C.replace(/^\xEF\xBB\xBF/,""):C,[E,q]=La(`${s}${A}`);for(let x of E)f(x);s=q,a=!1}function f(C){if(C===""){y();return}if(C.startsWith(":")){i&&i(C.slice(C.startsWith(": ")?2:1));return}let A=C.indexOf(":");if(A!==-1){let E=C.slice(0,A),q=C[A+1]===" "?2:1,x=C.slice(A+q);m(E,x,C);return}m(C,"",C)}function m(C,A,E){switch(C){case"event":l=A;break;case"data":u=`${u}${A}
2
+ `;break;case"id":o=A.includes("\0")?void 0:A;break;case"retry":/^\d+$/.test(A)?r(parseInt(A,10)):t(new cn(`Invalid \`retry\` value: "${A}"`,{type:"invalid-retry",value:A,line:E}));break;default:t(new cn(`Unknown field "${C.length>20?`${C.slice(0,20)}\u2026`:C}"`,{type:"unknown-field",field:C,value:A,line:E}));break}}function y(){u.length>0&&e({id:o,event:l||void 0,data:u.endsWith(`
3
+ `)?u.slice(0,-1):u}),o=void 0,u="",l=""}function k(C={}){s&&C.consume&&f(s),a=!0,o=void 0,u="",l="",s=""}return{feed:p,reset:k}}function La(n){let e=[],t="",r=0;for(;r<n.length;){let i=n.indexOf("\r",r),s=n.indexOf(`
4
4
  `,r),a=-1;if(i!==-1&&s!==-1?a=Math.min(i,s):i!==-1?i===n.length-1?a=-1:a=i:s!==-1&&(a=s),a===-1){t=n.slice(r);break}else{let o=n.slice(r,a);e.push(o),r=a+1,n[r-1]==="\r"&&n[r]===`
5
- `&&r++}}return[e,t]}var ln=class extends Event{constructor(e,t){var r,i;super(e),this.code=(r=t?.code)!=null?r:void 0,this.message=(i=t?.message)!=null?i:void 0}[Symbol.for("nodejs.util.inspect.custom")](e,t,r){return r(is(this),t)}[Symbol.for("Deno.customInspect")](e,t){return e(is(this),t)}};function Va(n){let e=globalThis.DOMException;return typeof e=="function"?new e(n,"SyntaxError"):new SyntaxError(n)}function ti(n){return n instanceof Error?"errors"in n&&Array.isArray(n.errors)?n.errors.map(ti).join(", "):"cause"in n&&n.cause instanceof Error?`${n}: ${ti(n.cause)}`:n.message:`${n}`}function is(n){return{type:n.type,message:n.message,code:n.code,defaultPrevented:n.defaultPrevented,cancelable:n.cancelable,timeStamp:n.timeStamp}}var as=n=>{throw TypeError(n)},ui=(n,e,t)=>e.has(n)||as("Cannot "+t),re=(n,e,t)=>(ui(n,e,"read from private field"),t?t.call(n):e.get(n)),it=(n,e,t)=>e.has(n)?as("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),ye=(n,e,t,r)=>(ui(n,e,"write to private field"),e.set(n,t),t),$t=(n,e,t)=>(ui(n,e,"access private method"),t),pt,ar,Sr,un,dn,Zr,Or,Qr,Zt,Mr,Er,Ar,zr,St,ri,ni,ii,ss,si,ai,Gr,oi,ci,or=class extends EventTarget{constructor(e,t){var r,i;super(),it(this,St),this.CONNECTING=0,this.OPEN=1,this.CLOSED=2,it(this,pt),it(this,ar),it(this,Sr),it(this,un),it(this,dn),it(this,Zr),it(this,Or),it(this,Qr,null),it(this,Zt),it(this,Mr),it(this,Er,null),it(this,Ar,null),it(this,zr,null),it(this,ni,async s=>{var a;re(this,Mr).reset();let{body:o,redirected:u,status:l,headers:p}=s;if(l===204){$t(this,St,Gr).call(this,"Server sent HTTP 204, not reconnecting",204),this.close();return}if(u?ye(this,Sr,new URL(s.url)):ye(this,Sr,void 0),l!==200){$t(this,St,Gr).call(this,`Non-200 status code (${l})`,l);return}if(!(p.get("content-type")||"").startsWith("text/event-stream")){$t(this,St,Gr).call(this,'Invalid content type, expected "text/event-stream"',l);return}if(re(this,pt)===this.CLOSED)return;ye(this,pt,this.OPEN);let f=new Event("open");if((a=re(this,zr))==null||a.call(this,f),this.dispatchEvent(f),typeof o!="object"||!o||!("getReader"in o)){$t(this,St,Gr).call(this,"Invalid response body, expected a web ReadableStream",l),this.close();return}let m=new TextDecoder,y=o.getReader(),k=!0;do{let{done:T,value:A}=await y.read();A&&re(this,Mr).feed(m.decode(A,{stream:!T})),T&&(k=!1,re(this,Mr).reset(),$t(this,St,oi).call(this))}while(k)}),it(this,ii,s=>{ye(this,Zt,void 0),!(s.name==="AbortError"||s.type==="aborted")&&$t(this,St,oi).call(this,ti(s))}),it(this,si,s=>{typeof s.id=="string"&&ye(this,Qr,s.id);let a=new MessageEvent(s.event||"message",{data:s.data,origin:re(this,Sr)?re(this,Sr).origin:re(this,ar).origin,lastEventId:s.id||""});re(this,Ar)&&(!s.event||s.event==="message")&&re(this,Ar).call(this,a),this.dispatchEvent(a)}),it(this,ai,s=>{ye(this,Zr,s)}),it(this,ci,()=>{ye(this,Or,void 0),re(this,pt)===this.CONNECTING&&$t(this,St,ri).call(this)});try{if(e instanceof URL)ye(this,ar,e);else if(typeof e=="string")ye(this,ar,new URL(e,za()));else throw new Error("Invalid URL")}catch{throw Va("An invalid or illegal string was specified")}ye(this,Mr,ns({onEvent:re(this,si),onRetry:re(this,ai)})),ye(this,pt,this.CONNECTING),ye(this,Zr,3e3),ye(this,dn,(r=t?.fetch)!=null?r:globalThis.fetch),ye(this,un,(i=t?.withCredentials)!=null?i:!1),$t(this,St,ri).call(this)}get readyState(){return re(this,pt)}get url(){return re(this,ar).href}get withCredentials(){return re(this,un)}get onerror(){return re(this,Er)}set onerror(e){ye(this,Er,e)}get onmessage(){return re(this,Ar)}set onmessage(e){ye(this,Ar,e)}get onopen(){return re(this,zr)}set onopen(e){ye(this,zr,e)}addEventListener(e,t,r){let i=t;super.addEventListener(e,i,r)}removeEventListener(e,t,r){let i=t;super.removeEventListener(e,i,r)}close(){re(this,Or)&&clearTimeout(re(this,Or)),re(this,pt)!==this.CLOSED&&(re(this,Zt)&&re(this,Zt).abort(),ye(this,pt,this.CLOSED),ye(this,Zt,void 0))}};pt=new WeakMap,ar=new WeakMap,Sr=new WeakMap,un=new WeakMap,dn=new WeakMap,Zr=new WeakMap,Or=new WeakMap,Qr=new WeakMap,Zt=new WeakMap,Mr=new WeakMap,Er=new WeakMap,Ar=new WeakMap,zr=new WeakMap,St=new WeakSet,ri=function(){ye(this,pt,this.CONNECTING),ye(this,Zt,new AbortController),re(this,dn)(re(this,ar),$t(this,St,ss).call(this)).then(re(this,ni)).catch(re(this,ii))},ni=new WeakMap,ii=new WeakMap,ss=function(){var n;let e={mode:"cors",redirect:"follow",headers:{Accept:"text/event-stream",...re(this,Qr)?{"Last-Event-ID":re(this,Qr)}:void 0},cache:"no-store",signal:(n=re(this,Zt))==null?void 0:n.signal};return"window"in globalThis&&(e.credentials=this.withCredentials?"include":"same-origin"),e},si=new WeakMap,ai=new WeakMap,Gr=function(n,e){var t;re(this,pt)!==this.CLOSED&&ye(this,pt,this.CLOSED);let r=new ln("error",{code:e,message:n});(t=re(this,Er))==null||t.call(this,r),this.dispatchEvent(r)},oi=function(n,e){var t;if(re(this,pt)===this.CLOSED)return;ye(this,pt,this.CONNECTING);let r=new ln("error",{code:e,message:n});(t=re(this,Er))==null||t.call(this,r),this.dispatchEvent(r),ye(this,Or,setTimeout(re(this,ci),re(this,Zr)))},ci=new WeakMap,or.CONNECTING=0,or.OPEN=1,or.CLOSED=2;function za(){let n="document"in globalThis?globalThis.document:void 0;return n&&typeof n=="object"&&"baseURI"in n&&typeof n.baseURI=="string"?n.baseURI:void 0}function Ga(n){return n.replaceAll(/[A-Z]/g,e=>`_${e.toLowerCase()}`)}function Wr(n){let e={};for(let t of Object.keys(n)){let r=Ga(t),i=n[t];e[r]=i}return e}import nc,{AxiosError as td}from"axios";var V={};Fa(V,{BRAND:()=>yo,DIRTY:()=>cr,EMPTY_PATH:()=>Ha,INVALID:()=>G,NEVER:()=>rc,OK:()=>dt,ParseStatus:()=>st,Schema:()=>Y,ZodAny:()=>Ht,ZodArray:()=>_t,ZodBigInt:()=>It,ZodBoolean:()=>ur,ZodBranded:()=>Kr,ZodCatch:()=>br,ZodDate:()=>Lt,ZodDefault:()=>yr,ZodDiscriminatedUnion:()=>qr,ZodEffects:()=>kt,ZodEnum:()=>Pt,ZodError:()=>lt,ZodFirstPartyTypeKind:()=>Q,ZodFunction:()=>Wt,ZodIntersection:()=>pr,ZodIssueCode:()=>j,ZodLazy:()=>fr,ZodLiteral:()=>gr,ZodMap:()=>Br,ZodNaN:()=>Dr,ZodNativeEnum:()=>_r,ZodNever:()=>Mt,ZodNull:()=>dr,ZodNullable:()=>Rt,ZodNumber:()=>xt,ZodObject:()=>fe,ZodOptional:()=>bt,ZodParsedType:()=>R,ZodPipeline:()=>wr,ZodPromise:()=>Kt,ZodReadonly:()=>vr,ZodRecord:()=>mr,ZodSchema:()=>Y,ZodSet:()=>Vt,ZodString:()=>gt,ZodSymbol:()=>Pr,ZodTransformer:()=>kt,ZodTuple:()=>vt,ZodType:()=>Y,ZodUndefined:()=>lr,ZodUnion:()=>hr,ZodUnknown:()=>Ft,ZodVoid:()=>Rr,addIssueToContext:()=>I,any:()=>Ao,array:()=>xo,bigint:()=>ko,boolean:()=>_s,coerce:()=>tc,custom:()=>ms,date:()=>Co,datetimeRegex:()=>hs,defaultErrorMap:()=>Nt,discriminatedUnion:()=>qo,effect:()=>Qo,enum:()=>zo,function:()=>Fo,getErrorMap:()=>jr,getParsedType:()=>jt,instanceof:()=>wo,intersection:()=>Bo,isAborted:()=>hn,isAsync:()=>xr,isDirty:()=>pn,isValid:()=>Qt,late:()=>bo,lazy:()=>Lo,literal:()=>Vo,makeIssue:()=>Hr,map:()=>No,nan:()=>vo,nativeEnum:()=>Go,never:()=>Eo,null:()=>Mo,nullable:()=>Ho,number:()=>gs,object:()=>Io,objectUtil:()=>li,oboolean:()=>ec,onumber:()=>Yo,optional:()=>Wo,ostring:()=>Jo,pipeline:()=>Xo,preprocess:()=>Ko,promise:()=>Zo,quotelessJson:()=>Za,record:()=>$o,set:()=>Uo,setErrorMap:()=>Wa,strictObject:()=>Po,string:()=>fs,symbol:()=>To,transformer:()=>Qo,tuple:()=>Do,undefined:()=>So,union:()=>Ro,unknown:()=>Oo,util:()=>ne,void:()=>jo});var ne;(function(n){n.assertEqual=i=>{};function e(i){}n.assertIs=e;function t(i){throw new Error}n.assertNever=t,n.arrayToEnum=i=>{let s={};for(let a of i)s[a]=a;return s},n.getValidEnumValues=i=>{let s=n.objectKeys(i).filter(o=>typeof i[i[o]]!="number"),a={};for(let o of s)a[o]=i[o];return n.objectValues(a)},n.objectValues=i=>n.objectKeys(i).map(function(s){return i[s]}),n.objectKeys=typeof Object.keys=="function"?i=>Object.keys(i):i=>{let s=[];for(let a in i)Object.prototype.hasOwnProperty.call(i,a)&&s.push(a);return s},n.find=(i,s)=>{for(let a of i)if(s(a))return a},n.isInteger=typeof Number.isInteger=="function"?i=>Number.isInteger(i):i=>typeof i=="number"&&Number.isFinite(i)&&Math.floor(i)===i;function r(i,s=" | "){return i.map(a=>typeof a=="string"?`'${a}'`:a).join(s)}n.joinValues=r,n.jsonStringifyReplacer=(i,s)=>typeof s=="bigint"?s.toString():s})(ne||(ne={}));var li;(function(n){n.mergeShapes=(e,t)=>({...e,...t})})(li||(li={}));var R=ne.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),jt=n=>{switch(typeof n){case"undefined":return R.undefined;case"string":return R.string;case"number":return Number.isNaN(n)?R.nan:R.number;case"boolean":return R.boolean;case"function":return R.function;case"bigint":return R.bigint;case"symbol":return R.symbol;case"object":return Array.isArray(n)?R.array:n===null?R.null:n.then&&typeof n.then=="function"&&n.catch&&typeof n.catch=="function"?R.promise:typeof Map<"u"&&n instanceof Map?R.map:typeof Set<"u"&&n instanceof Set?R.set:typeof Date<"u"&&n instanceof Date?R.date:R.object;default:return R.unknown}};var j=ne.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),Za=n=>JSON.stringify(n,null,2).replace(/"([^"]+)":/g,"$1:"),lt=class extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){let t=e||function(s){return s.message},r={_errors:[]},i=s=>{for(let a of s.issues)if(a.code==="invalid_union")a.unionErrors.map(i);else if(a.code==="invalid_return_type")i(a.returnTypeError);else if(a.code==="invalid_arguments")i(a.argumentsError);else if(a.path.length===0)r._errors.push(t(a));else{let o=r,u=0;for(;u<a.path.length;){let l=a.path[u];u===a.path.length-1?(o[l]=o[l]||{_errors:[]},o[l]._errors.push(t(a))):o[l]=o[l]||{_errors:[]},o=o[l],u++}}};return i(this),r}static assert(e){if(!(e instanceof lt))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,ne.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=t=>t.message){let t={},r=[];for(let i of this.issues)if(i.path.length>0){let s=i.path[0];t[s]=t[s]||[],t[s].push(e(i))}else r.push(e(i));return{formErrors:r,fieldErrors:t}}get formErrors(){return this.flatten()}};lt.create=n=>new lt(n);var Qa=(n,e)=>{let t;switch(n.code){case j.invalid_type:n.received===R.undefined?t="Required":t=`Expected ${n.expected}, received ${n.received}`;break;case j.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(n.expected,ne.jsonStringifyReplacer)}`;break;case j.unrecognized_keys:t=`Unrecognized key(s) in object: ${ne.joinValues(n.keys,", ")}`;break;case j.invalid_union:t="Invalid input";break;case j.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${ne.joinValues(n.options)}`;break;case j.invalid_enum_value:t=`Invalid enum value. Expected ${ne.joinValues(n.options)}, received '${n.received}'`;break;case j.invalid_arguments:t="Invalid function arguments";break;case j.invalid_return_type:t="Invalid function return type";break;case j.invalid_date:t="Invalid date";break;case j.invalid_string:typeof n.validation=="object"?"includes"in n.validation?(t=`Invalid input: must include "${n.validation.includes}"`,typeof n.validation.position=="number"&&(t=`${t} at one or more positions greater than or equal to ${n.validation.position}`)):"startsWith"in n.validation?t=`Invalid input: must start with "${n.validation.startsWith}"`:"endsWith"in n.validation?t=`Invalid input: must end with "${n.validation.endsWith}"`:ne.assertNever(n.validation):n.validation!=="regex"?t=`Invalid ${n.validation}`:t="Invalid";break;case j.too_small:n.type==="array"?t=`Array must contain ${n.exact?"exactly":n.inclusive?"at least":"more than"} ${n.minimum} element(s)`:n.type==="string"?t=`String must contain ${n.exact?"exactly":n.inclusive?"at least":"over"} ${n.minimum} character(s)`:n.type==="number"?t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`:n.type==="bigint"?t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`:n.type==="date"?t=`Date must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(n.minimum))}`:t="Invalid input";break;case j.too_big:n.type==="array"?t=`Array must contain ${n.exact?"exactly":n.inclusive?"at most":"less than"} ${n.maximum} element(s)`:n.type==="string"?t=`String must contain ${n.exact?"exactly":n.inclusive?"at most":"under"} ${n.maximum} character(s)`:n.type==="number"?t=`Number must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`:n.type==="bigint"?t=`BigInt must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`:n.type==="date"?t=`Date must be ${n.exact?"exactly":n.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(n.maximum))}`:t="Invalid input";break;case j.custom:t="Invalid input";break;case j.invalid_intersection_types:t="Intersection results could not be merged";break;case j.not_multiple_of:t=`Number must be a multiple of ${n.multipleOf}`;break;case j.not_finite:t="Number must be finite";break;default:t=e.defaultError,ne.assertNever(n)}return{message:t}},Nt=Qa;var os=Nt;function Wa(n){os=n}function jr(){return os}var Hr=n=>{let{data:e,path:t,errorMaps:r,issueData:i}=n,s=[...t,...i.path||[]],a={...i,path:s};if(i.message!==void 0)return{...i,path:s,message:i.message};let o="",u=r.filter(l=>!!l).slice().reverse();for(let l of u)o=l(a,{data:e,defaultError:o}).message;return{...i,path:s,message:o}},Ha=[];function I(n,e){let t=jr(),r=Hr({issueData:e,data:n.data,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,t,t===Nt?void 0:Nt].filter(i=>!!i)});n.common.issues.push(r)}var st=class{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,t){let r=[];for(let i of t){if(i.status==="aborted")return G;i.status==="dirty"&&e.dirty(),r.push(i.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,t){let r=[];for(let i of t){let s=await i.key,a=await i.value;r.push({key:s,value:a})}return st.mergeObjectSync(e,r)}static mergeObjectSync(e,t){let r={};for(let i of t){let{key:s,value:a}=i;if(s.status==="aborted"||a.status==="aborted")return G;s.status==="dirty"&&e.dirty(),a.status==="dirty"&&e.dirty(),s.value!=="__proto__"&&(typeof a.value<"u"||i.alwaysSet)&&(r[s.value]=a.value)}return{status:e.value,value:r}}},G=Object.freeze({status:"aborted"}),cr=n=>({status:"dirty",value:n}),dt=n=>({status:"valid",value:n}),hn=n=>n.status==="aborted",pn=n=>n.status==="dirty",Qt=n=>n.status==="valid",xr=n=>typeof Promise<"u"&&n instanceof Promise;var B;(function(n){n.errToObj=e=>typeof e=="string"?{message:e}:e||{},n.toString=e=>typeof e=="string"?e:e?.message})(B||(B={}));var wt=class{constructor(e,t,r,i){this._cachedPath=[],this.parent=e,this.data=t,this._path=r,this._key=i}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},cs=(n,e)=>{if(Qt(e))return{success:!0,data:e.value};if(!n.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new lt(n.common.issues);return this._error=t,this._error}}};function X(n){if(!n)return{};let{errorMap:e,invalid_type_error:t,required_error:r,description:i}=n;if(e&&(t||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:i}:{errorMap:(a,o)=>{let{message:u}=n;return a.code==="invalid_enum_value"?{message:u??o.defaultError}:typeof o.data>"u"?{message:u??r??o.defaultError}:a.code!=="invalid_type"?{message:o.defaultError}:{message:u??t??o.defaultError}},description:i}}var Y=class{get description(){return this._def.description}_getType(e){return jt(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:jt(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new st,ctx:{common:e.parent.common,data:e.data,parsedType:jt(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(xr(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let r=this.safeParse(e,t);if(r.success)return r.data;throw r.error}safeParse(e,t){let r={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:jt(e)},i=this._parseSync({data:e,path:r.path,parent:r});return cs(r,i)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:jt(e)};if(!this["~standard"].async)try{let r=this._parseSync({data:e,path:[],parent:t});return Qt(r)?{value:r.value}:{issues:t.common.issues}}catch(r){r?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(r=>Qt(r)?{value:r.value}:{issues:t.common.issues})}async parseAsync(e,t){let r=await this.safeParseAsync(e,t);if(r.success)return r.data;throw r.error}async safeParseAsync(e,t){let r={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:jt(e)},i=this._parse({data:e,path:r.path,parent:r}),s=await(xr(i)?i:Promise.resolve(i));return cs(r,s)}refine(e,t){let r=i=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(i):t;return this._refinement((i,s)=>{let a=e(i),o=()=>s.addIssue({code:j.custom,...r(i)});return typeof Promise<"u"&&a instanceof Promise?a.then(u=>u?!0:(o(),!1)):a?!0:(o(),!1)})}refinement(e,t){return this._refinement((r,i)=>e(r)?!0:(i.addIssue(typeof t=="function"?t(r,i):t),!1))}_refinement(e){return new kt({schema:this,typeName:Q.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:t=>this["~validate"](t)}}optional(){return bt.create(this,this._def)}nullable(){return Rt.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return _t.create(this)}promise(){return Kt.create(this,this._def)}or(e){return hr.create([this,e],this._def)}and(e){return pr.create(this,e,this._def)}transform(e){return new kt({...X(this._def),schema:this,typeName:Q.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let t=typeof e=="function"?e:()=>e;return new yr({...X(this._def),innerType:this,defaultValue:t,typeName:Q.ZodDefault})}brand(){return new Kr({typeName:Q.ZodBranded,type:this,...X(this._def)})}catch(e){let t=typeof e=="function"?e:()=>e;return new br({...X(this._def),innerType:this,catchValue:t,typeName:Q.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return wr.create(this,e)}readonly(){return vr.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},Ka=/^c[^\s-]{8,}$/i,Xa=/^[0-9a-z]+$/,Ja=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Ya=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,eo=/^[a-z0-9_-]{21}$/i,to=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,ro=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,no=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,io="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",di,so=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ao=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,oo=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,co=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,uo=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,lo=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,ls="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",ho=new RegExp(`^${ls}$`);function ds(n){let e="[0-5]\\d";n.precision?e=`${e}\\.\\d{${n.precision}}`:n.precision==null&&(e=`${e}(\\.\\d+)?`);let t=n.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${t}`}function po(n){return new RegExp(`^${ds(n)}$`)}function hs(n){let e=`${ls}T${ds(n)}`,t=[];return t.push(n.local?"Z?":"Z"),n.offset&&t.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${t.join("|")})`,new RegExp(`^${e}$`)}function mo(n,e){return!!((e==="v4"||!e)&&so.test(n)||(e==="v6"||!e)&&oo.test(n))}function fo(n,e){if(!to.test(n))return!1;try{let[t]=n.split(".");if(!t)return!1;let r=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),i=JSON.parse(atob(r));return!(typeof i!="object"||i===null||"typ"in i&&i?.typ!=="JWT"||!i.alg||e&&i.alg!==e)}catch{return!1}}function go(n,e){return!!((e==="v4"||!e)&&ao.test(n)||(e==="v6"||!e)&&co.test(n))}var gt=class extends Y{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==R.string){let s=this._getOrReturnCtx(e);return I(s,{code:j.invalid_type,expected:R.string,received:s.parsedType}),G}let r=new st,i;for(let s of this._def.checks)if(s.kind==="min")e.data.length<s.value&&(i=this._getOrReturnCtx(e,i),I(i,{code:j.too_small,minimum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),r.dirty());else if(s.kind==="max")e.data.length>s.value&&(i=this._getOrReturnCtx(e,i),I(i,{code:j.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),r.dirty());else if(s.kind==="length"){let a=e.data.length>s.value,o=e.data.length<s.value;(a||o)&&(i=this._getOrReturnCtx(e,i),a?I(i,{code:j.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!0,message:s.message}):o&&I(i,{code:j.too_small,minimum:s.value,type:"string",inclusive:!0,exact:!0,message:s.message}),r.dirty())}else if(s.kind==="email")no.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"email",code:j.invalid_string,message:s.message}),r.dirty());else if(s.kind==="emoji")di||(di=new RegExp(io,"u")),di.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"emoji",code:j.invalid_string,message:s.message}),r.dirty());else if(s.kind==="uuid")Ya.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"uuid",code:j.invalid_string,message:s.message}),r.dirty());else if(s.kind==="nanoid")eo.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"nanoid",code:j.invalid_string,message:s.message}),r.dirty());else if(s.kind==="cuid")Ka.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"cuid",code:j.invalid_string,message:s.message}),r.dirty());else if(s.kind==="cuid2")Xa.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"cuid2",code:j.invalid_string,message:s.message}),r.dirty());else if(s.kind==="ulid")Ja.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"ulid",code:j.invalid_string,message:s.message}),r.dirty());else if(s.kind==="url")try{new URL(e.data)}catch{i=this._getOrReturnCtx(e,i),I(i,{validation:"url",code:j.invalid_string,message:s.message}),r.dirty()}else s.kind==="regex"?(s.regex.lastIndex=0,s.regex.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"regex",code:j.invalid_string,message:s.message}),r.dirty())):s.kind==="trim"?e.data=e.data.trim():s.kind==="includes"?e.data.includes(s.value,s.position)||(i=this._getOrReturnCtx(e,i),I(i,{code:j.invalid_string,validation:{includes:s.value,position:s.position},message:s.message}),r.dirty()):s.kind==="toLowerCase"?e.data=e.data.toLowerCase():s.kind==="toUpperCase"?e.data=e.data.toUpperCase():s.kind==="startsWith"?e.data.startsWith(s.value)||(i=this._getOrReturnCtx(e,i),I(i,{code:j.invalid_string,validation:{startsWith:s.value},message:s.message}),r.dirty()):s.kind==="endsWith"?e.data.endsWith(s.value)||(i=this._getOrReturnCtx(e,i),I(i,{code:j.invalid_string,validation:{endsWith:s.value},message:s.message}),r.dirty()):s.kind==="datetime"?hs(s).test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{code:j.invalid_string,validation:"datetime",message:s.message}),r.dirty()):s.kind==="date"?ho.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{code:j.invalid_string,validation:"date",message:s.message}),r.dirty()):s.kind==="time"?po(s).test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{code:j.invalid_string,validation:"time",message:s.message}),r.dirty()):s.kind==="duration"?ro.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"duration",code:j.invalid_string,message:s.message}),r.dirty()):s.kind==="ip"?mo(e.data,s.version)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"ip",code:j.invalid_string,message:s.message}),r.dirty()):s.kind==="jwt"?fo(e.data,s.alg)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"jwt",code:j.invalid_string,message:s.message}),r.dirty()):s.kind==="cidr"?go(e.data,s.version)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"cidr",code:j.invalid_string,message:s.message}),r.dirty()):s.kind==="base64"?uo.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"base64",code:j.invalid_string,message:s.message}),r.dirty()):s.kind==="base64url"?lo.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"base64url",code:j.invalid_string,message:s.message}),r.dirty()):ne.assertNever(s);return{status:r.value,value:e.data}}_regex(e,t,r){return this.refinement(i=>e.test(i),{validation:t,code:j.invalid_string,...B.errToObj(r)})}_addCheck(e){return new gt({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...B.errToObj(e)})}url(e){return this._addCheck({kind:"url",...B.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...B.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...B.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...B.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...B.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...B.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...B.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...B.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...B.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...B.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...B.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...B.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...B.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...B.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...B.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...B.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...B.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...B.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...B.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...B.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...B.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...B.errToObj(t)})}nonempty(e){return this.min(1,B.errToObj(e))}trim(){return new gt({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new gt({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new gt({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}};gt.create=n=>new gt({checks:[],typeName:Q.ZodString,coerce:n?.coerce??!1,...X(n)});function _o(n,e){let t=(n.toString().split(".")[1]||"").length,r=(e.toString().split(".")[1]||"").length,i=t>r?t:r,s=Number.parseInt(n.toFixed(i).replace(".","")),a=Number.parseInt(e.toFixed(i).replace(".",""));return s%a/10**i}var xt=class extends Y{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==R.number){let s=this._getOrReturnCtx(e);return I(s,{code:j.invalid_type,expected:R.number,received:s.parsedType}),G}let r,i=new st;for(let s of this._def.checks)s.kind==="int"?ne.isInteger(e.data)||(r=this._getOrReturnCtx(e,r),I(r,{code:j.invalid_type,expected:"integer",received:"float",message:s.message}),i.dirty()):s.kind==="min"?(s.inclusive?e.data<s.value:e.data<=s.value)&&(r=this._getOrReturnCtx(e,r),I(r,{code:j.too_small,minimum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),i.dirty()):s.kind==="max"?(s.inclusive?e.data>s.value:e.data>=s.value)&&(r=this._getOrReturnCtx(e,r),I(r,{code:j.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),i.dirty()):s.kind==="multipleOf"?_o(e.data,s.value)!==0&&(r=this._getOrReturnCtx(e,r),I(r,{code:j.not_multiple_of,multipleOf:s.value,message:s.message}),i.dirty()):s.kind==="finite"?Number.isFinite(e.data)||(r=this._getOrReturnCtx(e,r),I(r,{code:j.not_finite,message:s.message}),i.dirty()):ne.assertNever(s);return{status:i.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,B.toString(t))}gt(e,t){return this.setLimit("min",e,!1,B.toString(t))}lte(e,t){return this.setLimit("max",e,!0,B.toString(t))}lt(e,t){return this.setLimit("max",e,!1,B.toString(t))}setLimit(e,t,r,i){return new xt({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:B.toString(i)}]})}_addCheck(e){return new xt({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:B.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:B.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:B.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:B.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:B.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:B.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:B.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:B.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:B.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&ne.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(t===null||r.value>t)&&(t=r.value):r.kind==="max"&&(e===null||r.value<e)&&(e=r.value)}return Number.isFinite(t)&&Number.isFinite(e)}};xt.create=n=>new xt({checks:[],typeName:Q.ZodNumber,coerce:n?.coerce||!1,...X(n)});var It=class extends Y{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==R.bigint)return this._getInvalidInput(e);let r,i=new st;for(let s of this._def.checks)s.kind==="min"?(s.inclusive?e.data<s.value:e.data<=s.value)&&(r=this._getOrReturnCtx(e,r),I(r,{code:j.too_small,type:"bigint",minimum:s.value,inclusive:s.inclusive,message:s.message}),i.dirty()):s.kind==="max"?(s.inclusive?e.data>s.value:e.data>=s.value)&&(r=this._getOrReturnCtx(e,r),I(r,{code:j.too_big,type:"bigint",maximum:s.value,inclusive:s.inclusive,message:s.message}),i.dirty()):s.kind==="multipleOf"?e.data%s.value!==BigInt(0)&&(r=this._getOrReturnCtx(e,r),I(r,{code:j.not_multiple_of,multipleOf:s.value,message:s.message}),i.dirty()):ne.assertNever(s);return{status:i.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return I(t,{code:j.invalid_type,expected:R.bigint,received:t.parsedType}),G}gte(e,t){return this.setLimit("min",e,!0,B.toString(t))}gt(e,t){return this.setLimit("min",e,!1,B.toString(t))}lte(e,t){return this.setLimit("max",e,!0,B.toString(t))}lt(e,t){return this.setLimit("max",e,!1,B.toString(t))}setLimit(e,t,r,i){return new It({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:B.toString(i)}]})}_addCheck(e){return new It({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:B.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:B.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:B.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:B.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:B.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}};It.create=n=>new It({checks:[],typeName:Q.ZodBigInt,coerce:n?.coerce??!1,...X(n)});var ur=class extends Y{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==R.boolean){let r=this._getOrReturnCtx(e);return I(r,{code:j.invalid_type,expected:R.boolean,received:r.parsedType}),G}return dt(e.data)}};ur.create=n=>new ur({typeName:Q.ZodBoolean,coerce:n?.coerce||!1,...X(n)});var Lt=class extends Y{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==R.date){let s=this._getOrReturnCtx(e);return I(s,{code:j.invalid_type,expected:R.date,received:s.parsedType}),G}if(Number.isNaN(e.data.getTime())){let s=this._getOrReturnCtx(e);return I(s,{code:j.invalid_date}),G}let r=new st,i;for(let s of this._def.checks)s.kind==="min"?e.data.getTime()<s.value&&(i=this._getOrReturnCtx(e,i),I(i,{code:j.too_small,message:s.message,inclusive:!0,exact:!1,minimum:s.value,type:"date"}),r.dirty()):s.kind==="max"?e.data.getTime()>s.value&&(i=this._getOrReturnCtx(e,i),I(i,{code:j.too_big,message:s.message,inclusive:!0,exact:!1,maximum:s.value,type:"date"}),r.dirty()):ne.assertNever(s);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new Lt({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:B.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:B.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e!=null?new Date(e):null}};Lt.create=n=>new Lt({checks:[],coerce:n?.coerce||!1,typeName:Q.ZodDate,...X(n)});var Pr=class extends Y{_parse(e){if(this._getType(e)!==R.symbol){let r=this._getOrReturnCtx(e);return I(r,{code:j.invalid_type,expected:R.symbol,received:r.parsedType}),G}return dt(e.data)}};Pr.create=n=>new Pr({typeName:Q.ZodSymbol,...X(n)});var lr=class extends Y{_parse(e){if(this._getType(e)!==R.undefined){let r=this._getOrReturnCtx(e);return I(r,{code:j.invalid_type,expected:R.undefined,received:r.parsedType}),G}return dt(e.data)}};lr.create=n=>new lr({typeName:Q.ZodUndefined,...X(n)});var dr=class extends Y{_parse(e){if(this._getType(e)!==R.null){let r=this._getOrReturnCtx(e);return I(r,{code:j.invalid_type,expected:R.null,received:r.parsedType}),G}return dt(e.data)}};dr.create=n=>new dr({typeName:Q.ZodNull,...X(n)});var Ht=class extends Y{constructor(){super(...arguments),this._any=!0}_parse(e){return dt(e.data)}};Ht.create=n=>new Ht({typeName:Q.ZodAny,...X(n)});var Ft=class extends Y{constructor(){super(...arguments),this._unknown=!0}_parse(e){return dt(e.data)}};Ft.create=n=>new Ft({typeName:Q.ZodUnknown,...X(n)});var Mt=class extends Y{_parse(e){let t=this._getOrReturnCtx(e);return I(t,{code:j.invalid_type,expected:R.never,received:t.parsedType}),G}};Mt.create=n=>new Mt({typeName:Q.ZodNever,...X(n)});var Rr=class extends Y{_parse(e){if(this._getType(e)!==R.undefined){let r=this._getOrReturnCtx(e);return I(r,{code:j.invalid_type,expected:R.void,received:r.parsedType}),G}return dt(e.data)}};Rr.create=n=>new Rr({typeName:Q.ZodVoid,...X(n)});var _t=class extends Y{_parse(e){let{ctx:t,status:r}=this._processInputParams(e),i=this._def;if(t.parsedType!==R.array)return I(t,{code:j.invalid_type,expected:R.array,received:t.parsedType}),G;if(i.exactLength!==null){let a=t.data.length>i.exactLength.value,o=t.data.length<i.exactLength.value;(a||o)&&(I(t,{code:a?j.too_big:j.too_small,minimum:o?i.exactLength.value:void 0,maximum:a?i.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:i.exactLength.message}),r.dirty())}if(i.minLength!==null&&t.data.length<i.minLength.value&&(I(t,{code:j.too_small,minimum:i.minLength.value,type:"array",inclusive:!0,exact:!1,message:i.minLength.message}),r.dirty()),i.maxLength!==null&&t.data.length>i.maxLength.value&&(I(t,{code:j.too_big,maximum:i.maxLength.value,type:"array",inclusive:!0,exact:!1,message:i.maxLength.message}),r.dirty()),t.common.async)return Promise.all([...t.data].map((a,o)=>i.type._parseAsync(new wt(t,a,t.path,o)))).then(a=>st.mergeArray(r,a));let s=[...t.data].map((a,o)=>i.type._parseSync(new wt(t,a,t.path,o)));return st.mergeArray(r,s)}get element(){return this._def.type}min(e,t){return new _t({...this._def,minLength:{value:e,message:B.toString(t)}})}max(e,t){return new _t({...this._def,maxLength:{value:e,message:B.toString(t)}})}length(e,t){return new _t({...this._def,exactLength:{value:e,message:B.toString(t)}})}nonempty(e){return this.min(1,e)}};_t.create=(n,e)=>new _t({type:n,minLength:null,maxLength:null,exactLength:null,typeName:Q.ZodArray,...X(e)});function Ir(n){if(n instanceof fe){let e={};for(let t in n.shape){let r=n.shape[t];e[t]=bt.create(Ir(r))}return new fe({...n._def,shape:()=>e})}else return n instanceof _t?new _t({...n._def,type:Ir(n.element)}):n instanceof bt?bt.create(Ir(n.unwrap())):n instanceof Rt?Rt.create(Ir(n.unwrap())):n instanceof vt?vt.create(n.items.map(e=>Ir(e))):n}var fe=class extends Y{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=ne.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==R.object){let l=this._getOrReturnCtx(e);return I(l,{code:j.invalid_type,expected:R.object,received:l.parsedType}),G}let{status:r,ctx:i}=this._processInputParams(e),{shape:s,keys:a}=this._getCached(),o=[];if(!(this._def.catchall instanceof Mt&&this._def.unknownKeys==="strip"))for(let l in i.data)a.includes(l)||o.push(l);let u=[];for(let l of a){let p=s[l],f=i.data[l];u.push({key:{status:"valid",value:l},value:p._parse(new wt(i,f,i.path,l)),alwaysSet:l in i.data})}if(this._def.catchall instanceof Mt){let l=this._def.unknownKeys;if(l==="passthrough")for(let p of o)u.push({key:{status:"valid",value:p},value:{status:"valid",value:i.data[p]}});else if(l==="strict")o.length>0&&(I(i,{code:j.unrecognized_keys,keys:o}),r.dirty());else if(l!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let l=this._def.catchall;for(let p of o){let f=i.data[p];u.push({key:{status:"valid",value:p},value:l._parse(new wt(i,f,i.path,p)),alwaysSet:p in i.data})}}return i.common.async?Promise.resolve().then(async()=>{let l=[];for(let p of u){let f=await p.key,m=await p.value;l.push({key:f,value:m,alwaysSet:p.alwaysSet})}return l}).then(l=>st.mergeObjectSync(r,l)):st.mergeObjectSync(r,u)}get shape(){return this._def.shape()}strict(e){return B.errToObj,new fe({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,r)=>{let i=this._def.errorMap?.(t,r).message??r.defaultError;return t.code==="unrecognized_keys"?{message:B.errToObj(e).message??i}:{message:i}}}:{}})}strip(){return new fe({...this._def,unknownKeys:"strip"})}passthrough(){return new fe({...this._def,unknownKeys:"passthrough"})}extend(e){return new fe({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new fe({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Q.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new fe({...this._def,catchall:e})}pick(e){let t={};for(let r of ne.objectKeys(e))e[r]&&this.shape[r]&&(t[r]=this.shape[r]);return new fe({...this._def,shape:()=>t})}omit(e){let t={};for(let r of ne.objectKeys(this.shape))e[r]||(t[r]=this.shape[r]);return new fe({...this._def,shape:()=>t})}deepPartial(){return Ir(this)}partial(e){let t={};for(let r of ne.objectKeys(this.shape)){let i=this.shape[r];e&&!e[r]?t[r]=i:t[r]=i.optional()}return new fe({...this._def,shape:()=>t})}required(e){let t={};for(let r of ne.objectKeys(this.shape))if(e&&!e[r])t[r]=this.shape[r];else{let s=this.shape[r];for(;s instanceof bt;)s=s._def.innerType;t[r]=s}return new fe({...this._def,shape:()=>t})}keyof(){return ps(ne.objectKeys(this.shape))}};fe.create=(n,e)=>new fe({shape:()=>n,unknownKeys:"strip",catchall:Mt.create(),typeName:Q.ZodObject,...X(e)});fe.strictCreate=(n,e)=>new fe({shape:()=>n,unknownKeys:"strict",catchall:Mt.create(),typeName:Q.ZodObject,...X(e)});fe.lazycreate=(n,e)=>new fe({shape:n,unknownKeys:"strip",catchall:Mt.create(),typeName:Q.ZodObject,...X(e)});var hr=class extends Y{_parse(e){let{ctx:t}=this._processInputParams(e),r=this._def.options;function i(s){for(let o of s)if(o.result.status==="valid")return o.result;for(let o of s)if(o.result.status==="dirty")return t.common.issues.push(...o.ctx.common.issues),o.result;let a=s.map(o=>new lt(o.ctx.common.issues));return I(t,{code:j.invalid_union,unionErrors:a}),G}if(t.common.async)return Promise.all(r.map(async s=>{let a={...t,common:{...t.common,issues:[]},parent:null};return{result:await s._parseAsync({data:t.data,path:t.path,parent:a}),ctx:a}})).then(i);{let s,a=[];for(let u of r){let l={...t,common:{...t.common,issues:[]},parent:null},p=u._parseSync({data:t.data,path:t.path,parent:l});if(p.status==="valid")return p;p.status==="dirty"&&!s&&(s={result:p,ctx:l}),l.common.issues.length&&a.push(l.common.issues)}if(s)return t.common.issues.push(...s.ctx.common.issues),s.result;let o=a.map(u=>new lt(u));return I(t,{code:j.invalid_union,unionErrors:o}),G}}get options(){return this._def.options}};hr.create=(n,e)=>new hr({options:n,typeName:Q.ZodUnion,...X(e)});var Ut=n=>n instanceof fr?Ut(n.schema):n instanceof kt?Ut(n.innerType()):n instanceof gr?[n.value]:n instanceof Pt?n.options:n instanceof _r?ne.objectValues(n.enum):n instanceof yr?Ut(n._def.innerType):n instanceof lr?[void 0]:n instanceof dr?[null]:n instanceof bt?[void 0,...Ut(n.unwrap())]:n instanceof Rt?[null,...Ut(n.unwrap())]:n instanceof Kr||n instanceof vr?Ut(n.unwrap()):n instanceof br?Ut(n._def.innerType):[],qr=class extends Y{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==R.object)return I(t,{code:j.invalid_type,expected:R.object,received:t.parsedType}),G;let r=this.discriminator,i=t.data[r],s=this.optionsMap.get(i);return s?t.common.async?s._parseAsync({data:t.data,path:t.path,parent:t}):s._parseSync({data:t.data,path:t.path,parent:t}):(I(t,{code:j.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),G)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,r){let i=new Map;for(let s of t){let a=Ut(s.shape[e]);if(!a.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let o of a){if(i.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);i.set(o,s)}}return new qr({typeName:Q.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:i,...X(r)})}};function hi(n,e){let t=jt(n),r=jt(e);if(n===e)return{valid:!0,data:n};if(t===R.object&&r===R.object){let i=ne.objectKeys(e),s=ne.objectKeys(n).filter(o=>i.indexOf(o)!==-1),a={...n,...e};for(let o of s){let u=hi(n[o],e[o]);if(!u.valid)return{valid:!1};a[o]=u.data}return{valid:!0,data:a}}else if(t===R.array&&r===R.array){if(n.length!==e.length)return{valid:!1};let i=[];for(let s=0;s<n.length;s++){let a=n[s],o=e[s],u=hi(a,o);if(!u.valid)return{valid:!1};i.push(u.data)}return{valid:!0,data:i}}else return t===R.date&&r===R.date&&+n==+e?{valid:!0,data:n}:{valid:!1}}var pr=class extends Y{_parse(e){let{status:t,ctx:r}=this._processInputParams(e),i=(s,a)=>{if(hn(s)||hn(a))return G;let o=hi(s.value,a.value);return o.valid?((pn(s)||pn(a))&&t.dirty(),{status:t.value,value:o.data}):(I(r,{code:j.invalid_intersection_types}),G)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([s,a])=>i(s,a)):i(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}};pr.create=(n,e,t)=>new pr({left:n,right:e,typeName:Q.ZodIntersection,...X(t)});var vt=class extends Y{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==R.array)return I(r,{code:j.invalid_type,expected:R.array,received:r.parsedType}),G;if(r.data.length<this._def.items.length)return I(r,{code:j.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),G;!this._def.rest&&r.data.length>this._def.items.length&&(I(r,{code:j.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());let s=[...r.data].map((a,o)=>{let u=this._def.items[o]||this._def.rest;return u?u._parse(new wt(r,a,r.path,o)):null}).filter(a=>!!a);return r.common.async?Promise.all(s).then(a=>st.mergeArray(t,a)):st.mergeArray(t,s)}get items(){return this._def.items}rest(e){return new vt({...this._def,rest:e})}};vt.create=(n,e)=>{if(!Array.isArray(n))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new vt({items:n,typeName:Q.ZodTuple,rest:null,...X(e)})};var mr=class extends Y{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==R.object)return I(r,{code:j.invalid_type,expected:R.object,received:r.parsedType}),G;let i=[],s=this._def.keyType,a=this._def.valueType;for(let o in r.data)i.push({key:s._parse(new wt(r,o,r.path,o)),value:a._parse(new wt(r,r.data[o],r.path,o)),alwaysSet:o in r.data});return r.common.async?st.mergeObjectAsync(t,i):st.mergeObjectSync(t,i)}get element(){return this._def.valueType}static create(e,t,r){return t instanceof Y?new mr({keyType:e,valueType:t,typeName:Q.ZodRecord,...X(r)}):new mr({keyType:gt.create(),valueType:e,typeName:Q.ZodRecord,...X(t)})}},Br=class extends Y{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==R.map)return I(r,{code:j.invalid_type,expected:R.map,received:r.parsedType}),G;let i=this._def.keyType,s=this._def.valueType,a=[...r.data.entries()].map(([o,u],l)=>({key:i._parse(new wt(r,o,r.path,[l,"key"])),value:s._parse(new wt(r,u,r.path,[l,"value"]))}));if(r.common.async){let o=new Map;return Promise.resolve().then(async()=>{for(let u of a){let l=await u.key,p=await u.value;if(l.status==="aborted"||p.status==="aborted")return G;(l.status==="dirty"||p.status==="dirty")&&t.dirty(),o.set(l.value,p.value)}return{status:t.value,value:o}})}else{let o=new Map;for(let u of a){let l=u.key,p=u.value;if(l.status==="aborted"||p.status==="aborted")return G;(l.status==="dirty"||p.status==="dirty")&&t.dirty(),o.set(l.value,p.value)}return{status:t.value,value:o}}}};Br.create=(n,e,t)=>new Br({valueType:e,keyType:n,typeName:Q.ZodMap,...X(t)});var Vt=class extends Y{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==R.set)return I(r,{code:j.invalid_type,expected:R.set,received:r.parsedType}),G;let i=this._def;i.minSize!==null&&r.data.size<i.minSize.value&&(I(r,{code:j.too_small,minimum:i.minSize.value,type:"set",inclusive:!0,exact:!1,message:i.minSize.message}),t.dirty()),i.maxSize!==null&&r.data.size>i.maxSize.value&&(I(r,{code:j.too_big,maximum:i.maxSize.value,type:"set",inclusive:!0,exact:!1,message:i.maxSize.message}),t.dirty());let s=this._def.valueType;function a(u){let l=new Set;for(let p of u){if(p.status==="aborted")return G;p.status==="dirty"&&t.dirty(),l.add(p.value)}return{status:t.value,value:l}}let o=[...r.data.values()].map((u,l)=>s._parse(new wt(r,u,r.path,l)));return r.common.async?Promise.all(o).then(u=>a(u)):a(o)}min(e,t){return new Vt({...this._def,minSize:{value:e,message:B.toString(t)}})}max(e,t){return new Vt({...this._def,maxSize:{value:e,message:B.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};Vt.create=(n,e)=>new Vt({valueType:n,minSize:null,maxSize:null,typeName:Q.ZodSet,...X(e)});var Wt=class extends Y{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==R.function)return I(t,{code:j.invalid_type,expected:R.function,received:t.parsedType}),G;function r(o,u){return Hr({data:o,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,jr(),Nt].filter(l=>!!l),issueData:{code:j.invalid_arguments,argumentsError:u}})}function i(o,u){return Hr({data:o,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,jr(),Nt].filter(l=>!!l),issueData:{code:j.invalid_return_type,returnTypeError:u}})}let s={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof Kt){let o=this;return dt(async function(...u){let l=new lt([]),p=await o._def.args.parseAsync(u,s).catch(y=>{throw l.addIssue(r(u,y)),l}),f=await Reflect.apply(a,this,p);return await o._def.returns._def.type.parseAsync(f,s).catch(y=>{throw l.addIssue(i(f,y)),l})})}else{let o=this;return dt(function(...u){let l=o._def.args.safeParse(u,s);if(!l.success)throw new lt([r(u,l.error)]);let p=Reflect.apply(a,this,l.data),f=o._def.returns.safeParse(p,s);if(!f.success)throw new lt([i(p,f.error)]);return f.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new Wt({...this._def,args:vt.create(e).rest(Ft.create())})}returns(e){return new Wt({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,r){return new Wt({args:e||vt.create([]).rest(Ft.create()),returns:t||Ft.create(),typeName:Q.ZodFunction,...X(r)})}},fr=class extends Y{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};fr.create=(n,e)=>new fr({getter:n,typeName:Q.ZodLazy,...X(e)});var gr=class extends Y{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return I(t,{received:t.data,code:j.invalid_literal,expected:this._def.value}),G}return{status:"valid",value:e.data}}get value(){return this._def.value}};gr.create=(n,e)=>new gr({value:n,typeName:Q.ZodLiteral,...X(e)});function ps(n,e){return new Pt({values:n,typeName:Q.ZodEnum,...X(e)})}var Pt=class extends Y{_parse(e){if(typeof e.data!="string"){let t=this._getOrReturnCtx(e),r=this._def.values;return I(t,{expected:ne.joinValues(r),received:t.parsedType,code:j.invalid_type}),G}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),r=this._def.values;return I(t,{received:t.data,code:j.invalid_enum_value,options:r}),G}return dt(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return Pt.create(e,{...this._def,...t})}exclude(e,t=this._def){return Pt.create(this.options.filter(r=>!e.includes(r)),{...this._def,...t})}};Pt.create=ps;var _r=class extends Y{_parse(e){let t=ne.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==R.string&&r.parsedType!==R.number){let i=ne.objectValues(t);return I(r,{expected:ne.joinValues(i),received:r.parsedType,code:j.invalid_type}),G}if(this._cache||(this._cache=new Set(ne.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let i=ne.objectValues(t);return I(r,{received:r.data,code:j.invalid_enum_value,options:i}),G}return dt(e.data)}get enum(){return this._def.values}};_r.create=(n,e)=>new _r({values:n,typeName:Q.ZodNativeEnum,...X(e)});var Kt=class extends Y{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==R.promise&&t.common.async===!1)return I(t,{code:j.invalid_type,expected:R.promise,received:t.parsedType}),G;let r=t.parsedType===R.promise?t.data:Promise.resolve(t.data);return dt(r.then(i=>this._def.type.parseAsync(i,{path:t.path,errorMap:t.common.contextualErrorMap})))}};Kt.create=(n,e)=>new Kt({type:n,typeName:Q.ZodPromise,...X(e)});var kt=class extends Y{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Q.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:r}=this._processInputParams(e),i=this._def.effect||null,s={addIssue:a=>{I(r,a),a.fatal?t.abort():t.dirty()},get path(){return r.path}};if(s.addIssue=s.addIssue.bind(s),i.type==="preprocess"){let a=i.transform(r.data,s);if(r.common.async)return Promise.resolve(a).then(async o=>{if(t.value==="aborted")return G;let u=await this._def.schema._parseAsync({data:o,path:r.path,parent:r});return u.status==="aborted"?G:u.status==="dirty"?cr(u.value):t.value==="dirty"?cr(u.value):u});{if(t.value==="aborted")return G;let o=this._def.schema._parseSync({data:a,path:r.path,parent:r});return o.status==="aborted"?G:o.status==="dirty"?cr(o.value):t.value==="dirty"?cr(o.value):o}}if(i.type==="refinement"){let a=o=>{let u=i.refinement(o,s);if(r.common.async)return Promise.resolve(u);if(u instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(r.common.async===!1){let o=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return o.status==="aborted"?G:(o.status==="dirty"&&t.dirty(),a(o.value),{status:t.value,value:o.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(o=>o.status==="aborted"?G:(o.status==="dirty"&&t.dirty(),a(o.value).then(()=>({status:t.value,value:o.value}))))}if(i.type==="transform")if(r.common.async===!1){let a=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!Qt(a))return G;let o=i.transform(a.value,s);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:o}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(a=>Qt(a)?Promise.resolve(i.transform(a.value,s)).then(o=>({status:t.value,value:o})):G);ne.assertNever(i)}};kt.create=(n,e,t)=>new kt({schema:n,typeName:Q.ZodEffects,effect:e,...X(t)});kt.createWithPreprocess=(n,e,t)=>new kt({schema:e,effect:{type:"preprocess",transform:n},typeName:Q.ZodEffects,...X(t)});var bt=class extends Y{_parse(e){return this._getType(e)===R.undefined?dt(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};bt.create=(n,e)=>new bt({innerType:n,typeName:Q.ZodOptional,...X(e)});var Rt=class extends Y{_parse(e){return this._getType(e)===R.null?dt(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Rt.create=(n,e)=>new Rt({innerType:n,typeName:Q.ZodNullable,...X(e)});var yr=class extends Y{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return t.parsedType===R.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};yr.create=(n,e)=>new yr({innerType:n,typeName:Q.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...X(e)});var br=class extends Y{_parse(e){let{ctx:t}=this._processInputParams(e),r={...t,common:{...t.common,issues:[]}},i=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return xr(i)?i.then(s=>({status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new lt(r.common.issues)},input:r.data})})):{status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new lt(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}};br.create=(n,e)=>new br({innerType:n,typeName:Q.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...X(e)});var Dr=class extends Y{_parse(e){if(this._getType(e)!==R.nan){let r=this._getOrReturnCtx(e);return I(r,{code:j.invalid_type,expected:R.nan,received:r.parsedType}),G}return{status:"valid",value:e.data}}};Dr.create=n=>new Dr({typeName:Q.ZodNaN,...X(n)});var yo=Symbol("zod_brand"),Kr=class extends Y{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return this._def.type._parse({data:r,path:t.path,parent:t})}unwrap(){return this._def.type}},wr=class extends Y{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.common.async)return(async()=>{let s=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return s.status==="aborted"?G:s.status==="dirty"?(t.dirty(),cr(s.value)):this._def.out._parseAsync({data:s.value,path:r.path,parent:r})})();{let i=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return i.status==="aborted"?G:i.status==="dirty"?(t.dirty(),{status:"dirty",value:i.value}):this._def.out._parseSync({data:i.value,path:r.path,parent:r})}}static create(e,t){return new wr({in:e,out:t,typeName:Q.ZodPipeline})}},vr=class extends Y{_parse(e){let t=this._def.innerType._parse(e),r=i=>(Qt(i)&&(i.value=Object.freeze(i.value)),i);return xr(t)?t.then(i=>r(i)):r(t)}unwrap(){return this._def.innerType}};vr.create=(n,e)=>new vr({innerType:n,typeName:Q.ZodReadonly,...X(e)});function us(n,e){let t=typeof n=="function"?n(e):typeof n=="string"?{message:n}:n;return typeof t=="string"?{message:t}:t}function ms(n,e={},t){return n?Ht.create().superRefine((r,i)=>{let s=n(r);if(s instanceof Promise)return s.then(a=>{if(!a){let o=us(e,r),u=o.fatal??t??!0;i.addIssue({code:"custom",...o,fatal:u})}});if(!s){let a=us(e,r),o=a.fatal??t??!0;i.addIssue({code:"custom",...a,fatal:o})}}):Ht.create()}var bo={object:fe.lazycreate},Q;(function(n){n.ZodString="ZodString",n.ZodNumber="ZodNumber",n.ZodNaN="ZodNaN",n.ZodBigInt="ZodBigInt",n.ZodBoolean="ZodBoolean",n.ZodDate="ZodDate",n.ZodSymbol="ZodSymbol",n.ZodUndefined="ZodUndefined",n.ZodNull="ZodNull",n.ZodAny="ZodAny",n.ZodUnknown="ZodUnknown",n.ZodNever="ZodNever",n.ZodVoid="ZodVoid",n.ZodArray="ZodArray",n.ZodObject="ZodObject",n.ZodUnion="ZodUnion",n.ZodDiscriminatedUnion="ZodDiscriminatedUnion",n.ZodIntersection="ZodIntersection",n.ZodTuple="ZodTuple",n.ZodRecord="ZodRecord",n.ZodMap="ZodMap",n.ZodSet="ZodSet",n.ZodFunction="ZodFunction",n.ZodLazy="ZodLazy",n.ZodLiteral="ZodLiteral",n.ZodEnum="ZodEnum",n.ZodEffects="ZodEffects",n.ZodNativeEnum="ZodNativeEnum",n.ZodOptional="ZodOptional",n.ZodNullable="ZodNullable",n.ZodDefault="ZodDefault",n.ZodCatch="ZodCatch",n.ZodPromise="ZodPromise",n.ZodBranded="ZodBranded",n.ZodPipeline="ZodPipeline",n.ZodReadonly="ZodReadonly"})(Q||(Q={}));var wo=(n,e={message:`Input not instance of ${n.name}`})=>ms(t=>t instanceof n,e),fs=gt.create,gs=xt.create,vo=Dr.create,ko=It.create,_s=ur.create,Co=Lt.create,To=Pr.create,So=lr.create,Mo=dr.create,Ao=Ht.create,Oo=Ft.create,Eo=Mt.create,jo=Rr.create,xo=_t.create,Io=fe.create,Po=fe.strictCreate,Ro=hr.create,qo=qr.create,Bo=pr.create,Do=vt.create,$o=mr.create,No=Br.create,Uo=Vt.create,Fo=Wt.create,Lo=fr.create,Vo=gr.create,zo=Pt.create,Go=_r.create,Zo=Kt.create,Qo=kt.create,Wo=bt.create,Ho=Rt.create,Ko=kt.createWithPreprocess,Xo=wr.create,Jo=()=>fs().optional(),Yo=()=>gs().optional(),ec=()=>_s().optional(),tc={string:n=>gt.create({...n,coerce:!0}),number:n=>xt.create({...n,coerce:!0}),boolean:n=>ur.create({...n,coerce:!0}),bigint:n=>It.create({...n,coerce:!0}),date:n=>Lt.create({...n,coerce:!0})};var rc=G;function ic(n,e){let t={...n};for(let r of e)delete t[r];return t}var sc=/:([a-zA-Z_][a-zA-Z0-9_]*)/g;function ac(n){let e=n.url,t=n.params;return t&&(e=e.replace(sc,(r,i)=>i in t?`${t[i]}`:r)),e}function ys(n,e,t){return n.find(r=>r.method===e&&r.path===t)}function oc(n){let e=new FormData;for(let t in n)e.append(t,n[t]);return{data:e}}var mn=class extends Error{constructor(n,e,t,r){super(n),this.config=e,this.data=t,this.cause=r}},cc={name:"form-data",request:async(n,e)=>{if(typeof e.data!="object"||Array.isArray(e.data))throw new mn("Zodios: multipart/form-data body must be an object",e);let t=oc(e.data);return{...e,data:t.data,headers:{...e.headers,...t.headers}}}};function uc(){return cc}var lc={name:"form-url",request:async(n,e)=>{if(typeof e.data!="object"||Array.isArray(e.data))throw new mn("Zodios: application/x-www-form-urlencoded body must be an object",e);return{...e,data:new URLSearchParams(e.data).toString(),headers:{...e.headers,"Content-Type":"application/x-www-form-urlencoded"}}}};function dc(){return lc}function bs(n,e){return{request:async(t,r)=>({...r,headers:{...r.headers,[n]:e}})}}function ws(n){return[!0,"response","all"].includes(n)}function vs(n){return[!0,"request","all"].includes(n)}function hc({validate:n,transform:e,sendDefaults:t}){return{name:"zod-validation",request:vs(n)?async(r,i)=>{let s=ys(r,i.method,i.url);if(!s)throw new Error(`No endpoint found for ${i.method} ${i.url}`);let{parameters:a}=s;if(!a)return i;let o={...i,queries:{...i.queries},headers:{...i.headers},params:{...i.params}},u={Query:f=>{var m;return(m=o.queries)==null?void 0:m[f]},Body:f=>o.data,Header:f=>{var m;return(m=o.headers)==null?void 0:m[f]},Path:f=>{var m;return(m=o.params)==null?void 0:m[f]}},l={Query:(f,m)=>o.queries[f]=m,Body:(f,m)=>o.data=m,Header:(f,m)=>o.headers[f]=m,Path:(f,m)=>o.params[f]=m},p=vs(e);for(let f of a){let{name:m,schema:y,type:k}=f,T=u[k](m);if(t||T!==void 0){let A=await y.safeParseAsync(T);if(!A.success)throw new mn(`Zodios: Invalid ${k} parameter '${m}'`,i,T,A.error);p&&l[k](m,A.data)}}return o}:void 0,response:ws(n)?async(r,i,s)=>{var a,o,u,l;let p=ys(r,i.method,i.url);if(!p)throw new Error(`No endpoint found for ${i.method} ${i.url}`);if((o=(a=s.headers)==null?void 0:a["content-type"])!=null&&o.includes("application/json")||(l=(u=s.headers)==null?void 0:u["content-type"])!=null&&l.includes("application/vnd.api+json")){let f=await p.response.safeParseAsync(s.data);if(!f.success)throw new mn(`Zodios: Invalid response from endpoint '${p.method} ${p.path}'
5
+ `&&r++}}return[e,t]}var ln=class extends Event{constructor(e,t){var r,i;super(e),this.code=(r=t?.code)!=null?r:void 0,this.message=(i=t?.message)!=null?i:void 0}[Symbol.for("nodejs.util.inspect.custom")](e,t,r){return r(ss(this),t)}[Symbol.for("Deno.customInspect")](e,t){return e(ss(this),t)}};function Va(n){let e=globalThis.DOMException;return typeof e=="function"?new e(n,"SyntaxError"):new SyntaxError(n)}function ti(n){return n instanceof Error?"errors"in n&&Array.isArray(n.errors)?n.errors.map(ti).join(", "):"cause"in n&&n.cause instanceof Error?`${n}: ${ti(n.cause)}`:n.message:`${n}`}function ss(n){return{type:n.type,message:n.message,code:n.code,defaultPrevented:n.defaultPrevented,cancelable:n.cancelable,timeStamp:n.timeStamp}}var os=n=>{throw TypeError(n)},ui=(n,e,t)=>e.has(n)||os("Cannot "+t),re=(n,e,t)=>(ui(n,e,"read from private field"),t?t.call(n):e.get(n)),it=(n,e,t)=>e.has(n)?os("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),ye=(n,e,t,r)=>(ui(n,e,"write to private field"),e.set(n,t),t),$t=(n,e,t)=>(ui(n,e,"access private method"),t),pt,ar,Sr,un,dn,Zr,Or,Qr,Zt,Mr,Er,Ar,zr,Mt,ri,ni,ii,as,si,ai,Gr,oi,ci,or=class extends EventTarget{constructor(e,t){var r,i;super(),it(this,Mt),this.CONNECTING=0,this.OPEN=1,this.CLOSED=2,it(this,pt),it(this,ar),it(this,Sr),it(this,un),it(this,dn),it(this,Zr),it(this,Or),it(this,Qr,null),it(this,Zt),it(this,Mr),it(this,Er,null),it(this,Ar,null),it(this,zr,null),it(this,ni,async s=>{var a;re(this,Mr).reset();let{body:o,redirected:u,status:l,headers:p}=s;if(l===204){$t(this,Mt,Gr).call(this,"Server sent HTTP 204, not reconnecting",204),this.close();return}if(u?ye(this,Sr,new URL(s.url)):ye(this,Sr,void 0),l!==200){$t(this,Mt,Gr).call(this,`Non-200 status code (${l})`,l);return}if(!(p.get("content-type")||"").startsWith("text/event-stream")){$t(this,Mt,Gr).call(this,'Invalid content type, expected "text/event-stream"',l);return}if(re(this,pt)===this.CLOSED)return;ye(this,pt,this.OPEN);let f=new Event("open");if((a=re(this,zr))==null||a.call(this,f),this.dispatchEvent(f),typeof o!="object"||!o||!("getReader"in o)){$t(this,Mt,Gr).call(this,"Invalid response body, expected a web ReadableStream",l),this.close();return}let m=new TextDecoder,y=o.getReader(),k=!0;do{let{done:C,value:A}=await y.read();A&&re(this,Mr).feed(m.decode(A,{stream:!C})),C&&(k=!1,re(this,Mr).reset(),$t(this,Mt,oi).call(this))}while(k)}),it(this,ii,s=>{ye(this,Zt,void 0),!(s.name==="AbortError"||s.type==="aborted")&&$t(this,Mt,oi).call(this,ti(s))}),it(this,si,s=>{typeof s.id=="string"&&ye(this,Qr,s.id);let a=new MessageEvent(s.event||"message",{data:s.data,origin:re(this,Sr)?re(this,Sr).origin:re(this,ar).origin,lastEventId:s.id||""});re(this,Ar)&&(!s.event||s.event==="message")&&re(this,Ar).call(this,a),this.dispatchEvent(a)}),it(this,ai,s=>{ye(this,Zr,s)}),it(this,ci,()=>{ye(this,Or,void 0),re(this,pt)===this.CONNECTING&&$t(this,Mt,ri).call(this)});try{if(e instanceof URL)ye(this,ar,e);else if(typeof e=="string")ye(this,ar,new URL(e,za()));else throw new Error("Invalid URL")}catch{throw Va("An invalid or illegal string was specified")}ye(this,Mr,is({onEvent:re(this,si),onRetry:re(this,ai)})),ye(this,pt,this.CONNECTING),ye(this,Zr,3e3),ye(this,dn,(r=t?.fetch)!=null?r:globalThis.fetch),ye(this,un,(i=t?.withCredentials)!=null?i:!1),$t(this,Mt,ri).call(this)}get readyState(){return re(this,pt)}get url(){return re(this,ar).href}get withCredentials(){return re(this,un)}get onerror(){return re(this,Er)}set onerror(e){ye(this,Er,e)}get onmessage(){return re(this,Ar)}set onmessage(e){ye(this,Ar,e)}get onopen(){return re(this,zr)}set onopen(e){ye(this,zr,e)}addEventListener(e,t,r){let i=t;super.addEventListener(e,i,r)}removeEventListener(e,t,r){let i=t;super.removeEventListener(e,i,r)}close(){re(this,Or)&&clearTimeout(re(this,Or)),re(this,pt)!==this.CLOSED&&(re(this,Zt)&&re(this,Zt).abort(),ye(this,pt,this.CLOSED),ye(this,Zt,void 0))}};pt=new WeakMap,ar=new WeakMap,Sr=new WeakMap,un=new WeakMap,dn=new WeakMap,Zr=new WeakMap,Or=new WeakMap,Qr=new WeakMap,Zt=new WeakMap,Mr=new WeakMap,Er=new WeakMap,Ar=new WeakMap,zr=new WeakMap,Mt=new WeakSet,ri=function(){ye(this,pt,this.CONNECTING),ye(this,Zt,new AbortController),re(this,dn)(re(this,ar),$t(this,Mt,as).call(this)).then(re(this,ni)).catch(re(this,ii))},ni=new WeakMap,ii=new WeakMap,as=function(){var n;let e={mode:"cors",redirect:"follow",headers:{Accept:"text/event-stream",...re(this,Qr)?{"Last-Event-ID":re(this,Qr)}:void 0},cache:"no-store",signal:(n=re(this,Zt))==null?void 0:n.signal};return"window"in globalThis&&(e.credentials=this.withCredentials?"include":"same-origin"),e},si=new WeakMap,ai=new WeakMap,Gr=function(n,e){var t;re(this,pt)!==this.CLOSED&&ye(this,pt,this.CLOSED);let r=new ln("error",{code:e,message:n});(t=re(this,Er))==null||t.call(this,r),this.dispatchEvent(r)},oi=function(n,e){var t;if(re(this,pt)===this.CLOSED)return;ye(this,pt,this.CONNECTING);let r=new ln("error",{code:e,message:n});(t=re(this,Er))==null||t.call(this,r),this.dispatchEvent(r),ye(this,Or,setTimeout(re(this,ci),re(this,Zr)))},ci=new WeakMap,or.CONNECTING=0,or.OPEN=1,or.CLOSED=2;function za(){let n="document"in globalThis?globalThis.document:void 0;return n&&typeof n=="object"&&"baseURI"in n&&typeof n.baseURI=="string"?n.baseURI:void 0}function Ga(n){return n.replaceAll(/[A-Z]/g,e=>`_${e.toLowerCase()}`)}function Wr(n){let e={};for(let t of Object.keys(n)){let r=Ga(t),i=n[t];e[r]=i}return e}import nc,{AxiosError as td}from"axios";var V={};Ua(V,{BRAND:()=>yo,DIRTY:()=>cr,EMPTY_PATH:()=>Ha,INVALID:()=>G,NEVER:()=>rc,OK:()=>dt,ParseStatus:()=>st,Schema:()=>Y,ZodAny:()=>Ht,ZodArray:()=>_t,ZodBigInt:()=>It,ZodBoolean:()=>ur,ZodBranded:()=>Kr,ZodCatch:()=>br,ZodDate:()=>Lt,ZodDefault:()=>yr,ZodDiscriminatedUnion:()=>qr,ZodEffects:()=>kt,ZodEnum:()=>Pt,ZodError:()=>lt,ZodFirstPartyTypeKind:()=>Q,ZodFunction:()=>Wt,ZodIntersection:()=>pr,ZodIssueCode:()=>j,ZodLazy:()=>fr,ZodLiteral:()=>gr,ZodMap:()=>Br,ZodNaN:()=>Dr,ZodNativeEnum:()=>_r,ZodNever:()=>At,ZodNull:()=>dr,ZodNullable:()=>Rt,ZodNumber:()=>xt,ZodObject:()=>fe,ZodOptional:()=>bt,ZodParsedType:()=>R,ZodPipeline:()=>wr,ZodPromise:()=>Kt,ZodReadonly:()=>vr,ZodRecord:()=>mr,ZodSchema:()=>Y,ZodSet:()=>Vt,ZodString:()=>gt,ZodSymbol:()=>Pr,ZodTransformer:()=>kt,ZodTuple:()=>vt,ZodType:()=>Y,ZodUndefined:()=>lr,ZodUnion:()=>hr,ZodUnknown:()=>Ut,ZodVoid:()=>Rr,addIssueToContext:()=>I,any:()=>Ao,array:()=>xo,bigint:()=>ko,boolean:()=>ys,coerce:()=>tc,custom:()=>fs,date:()=>Co,datetimeRegex:()=>ps,defaultErrorMap:()=>Nt,discriminatedUnion:()=>qo,effect:()=>Qo,enum:()=>zo,function:()=>Uo,getErrorMap:()=>jr,getParsedType:()=>jt,instanceof:()=>wo,intersection:()=>Bo,isAborted:()=>hn,isAsync:()=>xr,isDirty:()=>pn,isValid:()=>Qt,late:()=>bo,lazy:()=>Lo,literal:()=>Vo,makeIssue:()=>Hr,map:()=>No,nan:()=>vo,nativeEnum:()=>Go,never:()=>Eo,null:()=>Mo,nullable:()=>Ho,number:()=>_s,object:()=>Io,objectUtil:()=>li,oboolean:()=>ec,onumber:()=>Yo,optional:()=>Wo,ostring:()=>Jo,pipeline:()=>Xo,preprocess:()=>Ko,promise:()=>Zo,quotelessJson:()=>Za,record:()=>$o,set:()=>Fo,setErrorMap:()=>Wa,strictObject:()=>Po,string:()=>gs,symbol:()=>To,transformer:()=>Qo,tuple:()=>Do,undefined:()=>So,union:()=>Ro,unknown:()=>Oo,util:()=>ne,void:()=>jo});var ne;(function(n){n.assertEqual=i=>{};function e(i){}n.assertIs=e;function t(i){throw new Error}n.assertNever=t,n.arrayToEnum=i=>{let s={};for(let a of i)s[a]=a;return s},n.getValidEnumValues=i=>{let s=n.objectKeys(i).filter(o=>typeof i[i[o]]!="number"),a={};for(let o of s)a[o]=i[o];return n.objectValues(a)},n.objectValues=i=>n.objectKeys(i).map(function(s){return i[s]}),n.objectKeys=typeof Object.keys=="function"?i=>Object.keys(i):i=>{let s=[];for(let a in i)Object.prototype.hasOwnProperty.call(i,a)&&s.push(a);return s},n.find=(i,s)=>{for(let a of i)if(s(a))return a},n.isInteger=typeof Number.isInteger=="function"?i=>Number.isInteger(i):i=>typeof i=="number"&&Number.isFinite(i)&&Math.floor(i)===i;function r(i,s=" | "){return i.map(a=>typeof a=="string"?`'${a}'`:a).join(s)}n.joinValues=r,n.jsonStringifyReplacer=(i,s)=>typeof s=="bigint"?s.toString():s})(ne||(ne={}));var li;(function(n){n.mergeShapes=(e,t)=>({...e,...t})})(li||(li={}));var R=ne.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),jt=n=>{switch(typeof n){case"undefined":return R.undefined;case"string":return R.string;case"number":return Number.isNaN(n)?R.nan:R.number;case"boolean":return R.boolean;case"function":return R.function;case"bigint":return R.bigint;case"symbol":return R.symbol;case"object":return Array.isArray(n)?R.array:n===null?R.null:n.then&&typeof n.then=="function"&&n.catch&&typeof n.catch=="function"?R.promise:typeof Map<"u"&&n instanceof Map?R.map:typeof Set<"u"&&n instanceof Set?R.set:typeof Date<"u"&&n instanceof Date?R.date:R.object;default:return R.unknown}};var j=ne.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),Za=n=>JSON.stringify(n,null,2).replace(/"([^"]+)":/g,"$1:"),lt=class extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){let t=e||function(s){return s.message},r={_errors:[]},i=s=>{for(let a of s.issues)if(a.code==="invalid_union")a.unionErrors.map(i);else if(a.code==="invalid_return_type")i(a.returnTypeError);else if(a.code==="invalid_arguments")i(a.argumentsError);else if(a.path.length===0)r._errors.push(t(a));else{let o=r,u=0;for(;u<a.path.length;){let l=a.path[u];u===a.path.length-1?(o[l]=o[l]||{_errors:[]},o[l]._errors.push(t(a))):o[l]=o[l]||{_errors:[]},o=o[l],u++}}};return i(this),r}static assert(e){if(!(e instanceof lt))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,ne.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=t=>t.message){let t={},r=[];for(let i of this.issues)if(i.path.length>0){let s=i.path[0];t[s]=t[s]||[],t[s].push(e(i))}else r.push(e(i));return{formErrors:r,fieldErrors:t}}get formErrors(){return this.flatten()}};lt.create=n=>new lt(n);var Qa=(n,e)=>{let t;switch(n.code){case j.invalid_type:n.received===R.undefined?t="Required":t=`Expected ${n.expected}, received ${n.received}`;break;case j.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(n.expected,ne.jsonStringifyReplacer)}`;break;case j.unrecognized_keys:t=`Unrecognized key(s) in object: ${ne.joinValues(n.keys,", ")}`;break;case j.invalid_union:t="Invalid input";break;case j.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${ne.joinValues(n.options)}`;break;case j.invalid_enum_value:t=`Invalid enum value. Expected ${ne.joinValues(n.options)}, received '${n.received}'`;break;case j.invalid_arguments:t="Invalid function arguments";break;case j.invalid_return_type:t="Invalid function return type";break;case j.invalid_date:t="Invalid date";break;case j.invalid_string:typeof n.validation=="object"?"includes"in n.validation?(t=`Invalid input: must include "${n.validation.includes}"`,typeof n.validation.position=="number"&&(t=`${t} at one or more positions greater than or equal to ${n.validation.position}`)):"startsWith"in n.validation?t=`Invalid input: must start with "${n.validation.startsWith}"`:"endsWith"in n.validation?t=`Invalid input: must end with "${n.validation.endsWith}"`:ne.assertNever(n.validation):n.validation!=="regex"?t=`Invalid ${n.validation}`:t="Invalid";break;case j.too_small:n.type==="array"?t=`Array must contain ${n.exact?"exactly":n.inclusive?"at least":"more than"} ${n.minimum} element(s)`:n.type==="string"?t=`String must contain ${n.exact?"exactly":n.inclusive?"at least":"over"} ${n.minimum} character(s)`:n.type==="number"?t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`:n.type==="bigint"?t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`:n.type==="date"?t=`Date must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(n.minimum))}`:t="Invalid input";break;case j.too_big:n.type==="array"?t=`Array must contain ${n.exact?"exactly":n.inclusive?"at most":"less than"} ${n.maximum} element(s)`:n.type==="string"?t=`String must contain ${n.exact?"exactly":n.inclusive?"at most":"under"} ${n.maximum} character(s)`:n.type==="number"?t=`Number must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`:n.type==="bigint"?t=`BigInt must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`:n.type==="date"?t=`Date must be ${n.exact?"exactly":n.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(n.maximum))}`:t="Invalid input";break;case j.custom:t="Invalid input";break;case j.invalid_intersection_types:t="Intersection results could not be merged";break;case j.not_multiple_of:t=`Number must be a multiple of ${n.multipleOf}`;break;case j.not_finite:t="Number must be finite";break;default:t=e.defaultError,ne.assertNever(n)}return{message:t}},Nt=Qa;var cs=Nt;function Wa(n){cs=n}function jr(){return cs}var Hr=n=>{let{data:e,path:t,errorMaps:r,issueData:i}=n,s=[...t,...i.path||[]],a={...i,path:s};if(i.message!==void 0)return{...i,path:s,message:i.message};let o="",u=r.filter(l=>!!l).slice().reverse();for(let l of u)o=l(a,{data:e,defaultError:o}).message;return{...i,path:s,message:o}},Ha=[];function I(n,e){let t=jr(),r=Hr({issueData:e,data:n.data,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,t,t===Nt?void 0:Nt].filter(i=>!!i)});n.common.issues.push(r)}var st=class{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,t){let r=[];for(let i of t){if(i.status==="aborted")return G;i.status==="dirty"&&e.dirty(),r.push(i.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,t){let r=[];for(let i of t){let s=await i.key,a=await i.value;r.push({key:s,value:a})}return st.mergeObjectSync(e,r)}static mergeObjectSync(e,t){let r={};for(let i of t){let{key:s,value:a}=i;if(s.status==="aborted"||a.status==="aborted")return G;s.status==="dirty"&&e.dirty(),a.status==="dirty"&&e.dirty(),s.value!=="__proto__"&&(typeof a.value<"u"||i.alwaysSet)&&(r[s.value]=a.value)}return{status:e.value,value:r}}},G=Object.freeze({status:"aborted"}),cr=n=>({status:"dirty",value:n}),dt=n=>({status:"valid",value:n}),hn=n=>n.status==="aborted",pn=n=>n.status==="dirty",Qt=n=>n.status==="valid",xr=n=>typeof Promise<"u"&&n instanceof Promise;var B;(function(n){n.errToObj=e=>typeof e=="string"?{message:e}:e||{},n.toString=e=>typeof e=="string"?e:e?.message})(B||(B={}));var wt=class{constructor(e,t,r,i){this._cachedPath=[],this.parent=e,this.data=t,this._path=r,this._key=i}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},us=(n,e)=>{if(Qt(e))return{success:!0,data:e.value};if(!n.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new lt(n.common.issues);return this._error=t,this._error}}};function X(n){if(!n)return{};let{errorMap:e,invalid_type_error:t,required_error:r,description:i}=n;if(e&&(t||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:i}:{errorMap:(a,o)=>{let{message:u}=n;return a.code==="invalid_enum_value"?{message:u??o.defaultError}:typeof o.data>"u"?{message:u??r??o.defaultError}:a.code!=="invalid_type"?{message:o.defaultError}:{message:u??t??o.defaultError}},description:i}}var Y=class{get description(){return this._def.description}_getType(e){return jt(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:jt(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new st,ctx:{common:e.parent.common,data:e.data,parsedType:jt(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(xr(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let r=this.safeParse(e,t);if(r.success)return r.data;throw r.error}safeParse(e,t){let r={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:jt(e)},i=this._parseSync({data:e,path:r.path,parent:r});return us(r,i)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:jt(e)};if(!this["~standard"].async)try{let r=this._parseSync({data:e,path:[],parent:t});return Qt(r)?{value:r.value}:{issues:t.common.issues}}catch(r){r?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(r=>Qt(r)?{value:r.value}:{issues:t.common.issues})}async parseAsync(e,t){let r=await this.safeParseAsync(e,t);if(r.success)return r.data;throw r.error}async safeParseAsync(e,t){let r={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:jt(e)},i=this._parse({data:e,path:r.path,parent:r}),s=await(xr(i)?i:Promise.resolve(i));return us(r,s)}refine(e,t){let r=i=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(i):t;return this._refinement((i,s)=>{let a=e(i),o=()=>s.addIssue({code:j.custom,...r(i)});return typeof Promise<"u"&&a instanceof Promise?a.then(u=>u?!0:(o(),!1)):a?!0:(o(),!1)})}refinement(e,t){return this._refinement((r,i)=>e(r)?!0:(i.addIssue(typeof t=="function"?t(r,i):t),!1))}_refinement(e){return new kt({schema:this,typeName:Q.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:t=>this["~validate"](t)}}optional(){return bt.create(this,this._def)}nullable(){return Rt.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return _t.create(this)}promise(){return Kt.create(this,this._def)}or(e){return hr.create([this,e],this._def)}and(e){return pr.create(this,e,this._def)}transform(e){return new kt({...X(this._def),schema:this,typeName:Q.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let t=typeof e=="function"?e:()=>e;return new yr({...X(this._def),innerType:this,defaultValue:t,typeName:Q.ZodDefault})}brand(){return new Kr({typeName:Q.ZodBranded,type:this,...X(this._def)})}catch(e){let t=typeof e=="function"?e:()=>e;return new br({...X(this._def),innerType:this,catchValue:t,typeName:Q.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return wr.create(this,e)}readonly(){return vr.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},Ka=/^c[^\s-]{8,}$/i,Xa=/^[0-9a-z]+$/,Ja=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Ya=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,eo=/^[a-z0-9_-]{21}$/i,to=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,ro=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,no=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,io="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",di,so=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ao=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,oo=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,co=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,uo=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,lo=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,ds="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",ho=new RegExp(`^${ds}$`);function hs(n){let e="[0-5]\\d";n.precision?e=`${e}\\.\\d{${n.precision}}`:n.precision==null&&(e=`${e}(\\.\\d+)?`);let t=n.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${t}`}function po(n){return new RegExp(`^${hs(n)}$`)}function ps(n){let e=`${ds}T${hs(n)}`,t=[];return t.push(n.local?"Z?":"Z"),n.offset&&t.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${t.join("|")})`,new RegExp(`^${e}$`)}function mo(n,e){return!!((e==="v4"||!e)&&so.test(n)||(e==="v6"||!e)&&oo.test(n))}function fo(n,e){if(!to.test(n))return!1;try{let[t]=n.split(".");if(!t)return!1;let r=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),i=JSON.parse(atob(r));return!(typeof i!="object"||i===null||"typ"in i&&i?.typ!=="JWT"||!i.alg||e&&i.alg!==e)}catch{return!1}}function go(n,e){return!!((e==="v4"||!e)&&ao.test(n)||(e==="v6"||!e)&&co.test(n))}var gt=class extends Y{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==R.string){let s=this._getOrReturnCtx(e);return I(s,{code:j.invalid_type,expected:R.string,received:s.parsedType}),G}let r=new st,i;for(let s of this._def.checks)if(s.kind==="min")e.data.length<s.value&&(i=this._getOrReturnCtx(e,i),I(i,{code:j.too_small,minimum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),r.dirty());else if(s.kind==="max")e.data.length>s.value&&(i=this._getOrReturnCtx(e,i),I(i,{code:j.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),r.dirty());else if(s.kind==="length"){let a=e.data.length>s.value,o=e.data.length<s.value;(a||o)&&(i=this._getOrReturnCtx(e,i),a?I(i,{code:j.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!0,message:s.message}):o&&I(i,{code:j.too_small,minimum:s.value,type:"string",inclusive:!0,exact:!0,message:s.message}),r.dirty())}else if(s.kind==="email")no.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"email",code:j.invalid_string,message:s.message}),r.dirty());else if(s.kind==="emoji")di||(di=new RegExp(io,"u")),di.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"emoji",code:j.invalid_string,message:s.message}),r.dirty());else if(s.kind==="uuid")Ya.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"uuid",code:j.invalid_string,message:s.message}),r.dirty());else if(s.kind==="nanoid")eo.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"nanoid",code:j.invalid_string,message:s.message}),r.dirty());else if(s.kind==="cuid")Ka.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"cuid",code:j.invalid_string,message:s.message}),r.dirty());else if(s.kind==="cuid2")Xa.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"cuid2",code:j.invalid_string,message:s.message}),r.dirty());else if(s.kind==="ulid")Ja.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"ulid",code:j.invalid_string,message:s.message}),r.dirty());else if(s.kind==="url")try{new URL(e.data)}catch{i=this._getOrReturnCtx(e,i),I(i,{validation:"url",code:j.invalid_string,message:s.message}),r.dirty()}else s.kind==="regex"?(s.regex.lastIndex=0,s.regex.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"regex",code:j.invalid_string,message:s.message}),r.dirty())):s.kind==="trim"?e.data=e.data.trim():s.kind==="includes"?e.data.includes(s.value,s.position)||(i=this._getOrReturnCtx(e,i),I(i,{code:j.invalid_string,validation:{includes:s.value,position:s.position},message:s.message}),r.dirty()):s.kind==="toLowerCase"?e.data=e.data.toLowerCase():s.kind==="toUpperCase"?e.data=e.data.toUpperCase():s.kind==="startsWith"?e.data.startsWith(s.value)||(i=this._getOrReturnCtx(e,i),I(i,{code:j.invalid_string,validation:{startsWith:s.value},message:s.message}),r.dirty()):s.kind==="endsWith"?e.data.endsWith(s.value)||(i=this._getOrReturnCtx(e,i),I(i,{code:j.invalid_string,validation:{endsWith:s.value},message:s.message}),r.dirty()):s.kind==="datetime"?ps(s).test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{code:j.invalid_string,validation:"datetime",message:s.message}),r.dirty()):s.kind==="date"?ho.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{code:j.invalid_string,validation:"date",message:s.message}),r.dirty()):s.kind==="time"?po(s).test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{code:j.invalid_string,validation:"time",message:s.message}),r.dirty()):s.kind==="duration"?ro.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"duration",code:j.invalid_string,message:s.message}),r.dirty()):s.kind==="ip"?mo(e.data,s.version)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"ip",code:j.invalid_string,message:s.message}),r.dirty()):s.kind==="jwt"?fo(e.data,s.alg)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"jwt",code:j.invalid_string,message:s.message}),r.dirty()):s.kind==="cidr"?go(e.data,s.version)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"cidr",code:j.invalid_string,message:s.message}),r.dirty()):s.kind==="base64"?uo.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"base64",code:j.invalid_string,message:s.message}),r.dirty()):s.kind==="base64url"?lo.test(e.data)||(i=this._getOrReturnCtx(e,i),I(i,{validation:"base64url",code:j.invalid_string,message:s.message}),r.dirty()):ne.assertNever(s);return{status:r.value,value:e.data}}_regex(e,t,r){return this.refinement(i=>e.test(i),{validation:t,code:j.invalid_string,...B.errToObj(r)})}_addCheck(e){return new gt({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...B.errToObj(e)})}url(e){return this._addCheck({kind:"url",...B.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...B.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...B.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...B.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...B.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...B.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...B.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...B.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...B.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...B.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...B.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...B.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...B.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...B.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...B.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...B.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...B.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...B.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...B.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...B.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...B.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...B.errToObj(t)})}nonempty(e){return this.min(1,B.errToObj(e))}trim(){return new gt({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new gt({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new gt({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}};gt.create=n=>new gt({checks:[],typeName:Q.ZodString,coerce:n?.coerce??!1,...X(n)});function _o(n,e){let t=(n.toString().split(".")[1]||"").length,r=(e.toString().split(".")[1]||"").length,i=t>r?t:r,s=Number.parseInt(n.toFixed(i).replace(".","")),a=Number.parseInt(e.toFixed(i).replace(".",""));return s%a/10**i}var xt=class extends Y{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==R.number){let s=this._getOrReturnCtx(e);return I(s,{code:j.invalid_type,expected:R.number,received:s.parsedType}),G}let r,i=new st;for(let s of this._def.checks)s.kind==="int"?ne.isInteger(e.data)||(r=this._getOrReturnCtx(e,r),I(r,{code:j.invalid_type,expected:"integer",received:"float",message:s.message}),i.dirty()):s.kind==="min"?(s.inclusive?e.data<s.value:e.data<=s.value)&&(r=this._getOrReturnCtx(e,r),I(r,{code:j.too_small,minimum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),i.dirty()):s.kind==="max"?(s.inclusive?e.data>s.value:e.data>=s.value)&&(r=this._getOrReturnCtx(e,r),I(r,{code:j.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),i.dirty()):s.kind==="multipleOf"?_o(e.data,s.value)!==0&&(r=this._getOrReturnCtx(e,r),I(r,{code:j.not_multiple_of,multipleOf:s.value,message:s.message}),i.dirty()):s.kind==="finite"?Number.isFinite(e.data)||(r=this._getOrReturnCtx(e,r),I(r,{code:j.not_finite,message:s.message}),i.dirty()):ne.assertNever(s);return{status:i.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,B.toString(t))}gt(e,t){return this.setLimit("min",e,!1,B.toString(t))}lte(e,t){return this.setLimit("max",e,!0,B.toString(t))}lt(e,t){return this.setLimit("max",e,!1,B.toString(t))}setLimit(e,t,r,i){return new xt({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:B.toString(i)}]})}_addCheck(e){return new xt({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:B.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:B.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:B.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:B.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:B.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:B.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:B.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:B.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:B.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&ne.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(t===null||r.value>t)&&(t=r.value):r.kind==="max"&&(e===null||r.value<e)&&(e=r.value)}return Number.isFinite(t)&&Number.isFinite(e)}};xt.create=n=>new xt({checks:[],typeName:Q.ZodNumber,coerce:n?.coerce||!1,...X(n)});var It=class extends Y{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==R.bigint)return this._getInvalidInput(e);let r,i=new st;for(let s of this._def.checks)s.kind==="min"?(s.inclusive?e.data<s.value:e.data<=s.value)&&(r=this._getOrReturnCtx(e,r),I(r,{code:j.too_small,type:"bigint",minimum:s.value,inclusive:s.inclusive,message:s.message}),i.dirty()):s.kind==="max"?(s.inclusive?e.data>s.value:e.data>=s.value)&&(r=this._getOrReturnCtx(e,r),I(r,{code:j.too_big,type:"bigint",maximum:s.value,inclusive:s.inclusive,message:s.message}),i.dirty()):s.kind==="multipleOf"?e.data%s.value!==BigInt(0)&&(r=this._getOrReturnCtx(e,r),I(r,{code:j.not_multiple_of,multipleOf:s.value,message:s.message}),i.dirty()):ne.assertNever(s);return{status:i.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return I(t,{code:j.invalid_type,expected:R.bigint,received:t.parsedType}),G}gte(e,t){return this.setLimit("min",e,!0,B.toString(t))}gt(e,t){return this.setLimit("min",e,!1,B.toString(t))}lte(e,t){return this.setLimit("max",e,!0,B.toString(t))}lt(e,t){return this.setLimit("max",e,!1,B.toString(t))}setLimit(e,t,r,i){return new It({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:B.toString(i)}]})}_addCheck(e){return new It({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:B.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:B.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:B.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:B.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:B.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}};It.create=n=>new It({checks:[],typeName:Q.ZodBigInt,coerce:n?.coerce??!1,...X(n)});var ur=class extends Y{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==R.boolean){let r=this._getOrReturnCtx(e);return I(r,{code:j.invalid_type,expected:R.boolean,received:r.parsedType}),G}return dt(e.data)}};ur.create=n=>new ur({typeName:Q.ZodBoolean,coerce:n?.coerce||!1,...X(n)});var Lt=class extends Y{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==R.date){let s=this._getOrReturnCtx(e);return I(s,{code:j.invalid_type,expected:R.date,received:s.parsedType}),G}if(Number.isNaN(e.data.getTime())){let s=this._getOrReturnCtx(e);return I(s,{code:j.invalid_date}),G}let r=new st,i;for(let s of this._def.checks)s.kind==="min"?e.data.getTime()<s.value&&(i=this._getOrReturnCtx(e,i),I(i,{code:j.too_small,message:s.message,inclusive:!0,exact:!1,minimum:s.value,type:"date"}),r.dirty()):s.kind==="max"?e.data.getTime()>s.value&&(i=this._getOrReturnCtx(e,i),I(i,{code:j.too_big,message:s.message,inclusive:!0,exact:!1,maximum:s.value,type:"date"}),r.dirty()):ne.assertNever(s);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new Lt({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:B.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:B.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e!=null?new Date(e):null}};Lt.create=n=>new Lt({checks:[],coerce:n?.coerce||!1,typeName:Q.ZodDate,...X(n)});var Pr=class extends Y{_parse(e){if(this._getType(e)!==R.symbol){let r=this._getOrReturnCtx(e);return I(r,{code:j.invalid_type,expected:R.symbol,received:r.parsedType}),G}return dt(e.data)}};Pr.create=n=>new Pr({typeName:Q.ZodSymbol,...X(n)});var lr=class extends Y{_parse(e){if(this._getType(e)!==R.undefined){let r=this._getOrReturnCtx(e);return I(r,{code:j.invalid_type,expected:R.undefined,received:r.parsedType}),G}return dt(e.data)}};lr.create=n=>new lr({typeName:Q.ZodUndefined,...X(n)});var dr=class extends Y{_parse(e){if(this._getType(e)!==R.null){let r=this._getOrReturnCtx(e);return I(r,{code:j.invalid_type,expected:R.null,received:r.parsedType}),G}return dt(e.data)}};dr.create=n=>new dr({typeName:Q.ZodNull,...X(n)});var Ht=class extends Y{constructor(){super(...arguments),this._any=!0}_parse(e){return dt(e.data)}};Ht.create=n=>new Ht({typeName:Q.ZodAny,...X(n)});var Ut=class extends Y{constructor(){super(...arguments),this._unknown=!0}_parse(e){return dt(e.data)}};Ut.create=n=>new Ut({typeName:Q.ZodUnknown,...X(n)});var At=class extends Y{_parse(e){let t=this._getOrReturnCtx(e);return I(t,{code:j.invalid_type,expected:R.never,received:t.parsedType}),G}};At.create=n=>new At({typeName:Q.ZodNever,...X(n)});var Rr=class extends Y{_parse(e){if(this._getType(e)!==R.undefined){let r=this._getOrReturnCtx(e);return I(r,{code:j.invalid_type,expected:R.void,received:r.parsedType}),G}return dt(e.data)}};Rr.create=n=>new Rr({typeName:Q.ZodVoid,...X(n)});var _t=class extends Y{_parse(e){let{ctx:t,status:r}=this._processInputParams(e),i=this._def;if(t.parsedType!==R.array)return I(t,{code:j.invalid_type,expected:R.array,received:t.parsedType}),G;if(i.exactLength!==null){let a=t.data.length>i.exactLength.value,o=t.data.length<i.exactLength.value;(a||o)&&(I(t,{code:a?j.too_big:j.too_small,minimum:o?i.exactLength.value:void 0,maximum:a?i.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:i.exactLength.message}),r.dirty())}if(i.minLength!==null&&t.data.length<i.minLength.value&&(I(t,{code:j.too_small,minimum:i.minLength.value,type:"array",inclusive:!0,exact:!1,message:i.minLength.message}),r.dirty()),i.maxLength!==null&&t.data.length>i.maxLength.value&&(I(t,{code:j.too_big,maximum:i.maxLength.value,type:"array",inclusive:!0,exact:!1,message:i.maxLength.message}),r.dirty()),t.common.async)return Promise.all([...t.data].map((a,o)=>i.type._parseAsync(new wt(t,a,t.path,o)))).then(a=>st.mergeArray(r,a));let s=[...t.data].map((a,o)=>i.type._parseSync(new wt(t,a,t.path,o)));return st.mergeArray(r,s)}get element(){return this._def.type}min(e,t){return new _t({...this._def,minLength:{value:e,message:B.toString(t)}})}max(e,t){return new _t({...this._def,maxLength:{value:e,message:B.toString(t)}})}length(e,t){return new _t({...this._def,exactLength:{value:e,message:B.toString(t)}})}nonempty(e){return this.min(1,e)}};_t.create=(n,e)=>new _t({type:n,minLength:null,maxLength:null,exactLength:null,typeName:Q.ZodArray,...X(e)});function Ir(n){if(n instanceof fe){let e={};for(let t in n.shape){let r=n.shape[t];e[t]=bt.create(Ir(r))}return new fe({...n._def,shape:()=>e})}else return n instanceof _t?new _t({...n._def,type:Ir(n.element)}):n instanceof bt?bt.create(Ir(n.unwrap())):n instanceof Rt?Rt.create(Ir(n.unwrap())):n instanceof vt?vt.create(n.items.map(e=>Ir(e))):n}var fe=class extends Y{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=ne.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==R.object){let l=this._getOrReturnCtx(e);return I(l,{code:j.invalid_type,expected:R.object,received:l.parsedType}),G}let{status:r,ctx:i}=this._processInputParams(e),{shape:s,keys:a}=this._getCached(),o=[];if(!(this._def.catchall instanceof At&&this._def.unknownKeys==="strip"))for(let l in i.data)a.includes(l)||o.push(l);let u=[];for(let l of a){let p=s[l],f=i.data[l];u.push({key:{status:"valid",value:l},value:p._parse(new wt(i,f,i.path,l)),alwaysSet:l in i.data})}if(this._def.catchall instanceof At){let l=this._def.unknownKeys;if(l==="passthrough")for(let p of o)u.push({key:{status:"valid",value:p},value:{status:"valid",value:i.data[p]}});else if(l==="strict")o.length>0&&(I(i,{code:j.unrecognized_keys,keys:o}),r.dirty());else if(l!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let l=this._def.catchall;for(let p of o){let f=i.data[p];u.push({key:{status:"valid",value:p},value:l._parse(new wt(i,f,i.path,p)),alwaysSet:p in i.data})}}return i.common.async?Promise.resolve().then(async()=>{let l=[];for(let p of u){let f=await p.key,m=await p.value;l.push({key:f,value:m,alwaysSet:p.alwaysSet})}return l}).then(l=>st.mergeObjectSync(r,l)):st.mergeObjectSync(r,u)}get shape(){return this._def.shape()}strict(e){return B.errToObj,new fe({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,r)=>{let i=this._def.errorMap?.(t,r).message??r.defaultError;return t.code==="unrecognized_keys"?{message:B.errToObj(e).message??i}:{message:i}}}:{}})}strip(){return new fe({...this._def,unknownKeys:"strip"})}passthrough(){return new fe({...this._def,unknownKeys:"passthrough"})}extend(e){return new fe({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new fe({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Q.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new fe({...this._def,catchall:e})}pick(e){let t={};for(let r of ne.objectKeys(e))e[r]&&this.shape[r]&&(t[r]=this.shape[r]);return new fe({...this._def,shape:()=>t})}omit(e){let t={};for(let r of ne.objectKeys(this.shape))e[r]||(t[r]=this.shape[r]);return new fe({...this._def,shape:()=>t})}deepPartial(){return Ir(this)}partial(e){let t={};for(let r of ne.objectKeys(this.shape)){let i=this.shape[r];e&&!e[r]?t[r]=i:t[r]=i.optional()}return new fe({...this._def,shape:()=>t})}required(e){let t={};for(let r of ne.objectKeys(this.shape))if(e&&!e[r])t[r]=this.shape[r];else{let s=this.shape[r];for(;s instanceof bt;)s=s._def.innerType;t[r]=s}return new fe({...this._def,shape:()=>t})}keyof(){return ms(ne.objectKeys(this.shape))}};fe.create=(n,e)=>new fe({shape:()=>n,unknownKeys:"strip",catchall:At.create(),typeName:Q.ZodObject,...X(e)});fe.strictCreate=(n,e)=>new fe({shape:()=>n,unknownKeys:"strict",catchall:At.create(),typeName:Q.ZodObject,...X(e)});fe.lazycreate=(n,e)=>new fe({shape:n,unknownKeys:"strip",catchall:At.create(),typeName:Q.ZodObject,...X(e)});var hr=class extends Y{_parse(e){let{ctx:t}=this._processInputParams(e),r=this._def.options;function i(s){for(let o of s)if(o.result.status==="valid")return o.result;for(let o of s)if(o.result.status==="dirty")return t.common.issues.push(...o.ctx.common.issues),o.result;let a=s.map(o=>new lt(o.ctx.common.issues));return I(t,{code:j.invalid_union,unionErrors:a}),G}if(t.common.async)return Promise.all(r.map(async s=>{let a={...t,common:{...t.common,issues:[]},parent:null};return{result:await s._parseAsync({data:t.data,path:t.path,parent:a}),ctx:a}})).then(i);{let s,a=[];for(let u of r){let l={...t,common:{...t.common,issues:[]},parent:null},p=u._parseSync({data:t.data,path:t.path,parent:l});if(p.status==="valid")return p;p.status==="dirty"&&!s&&(s={result:p,ctx:l}),l.common.issues.length&&a.push(l.common.issues)}if(s)return t.common.issues.push(...s.ctx.common.issues),s.result;let o=a.map(u=>new lt(u));return I(t,{code:j.invalid_union,unionErrors:o}),G}}get options(){return this._def.options}};hr.create=(n,e)=>new hr({options:n,typeName:Q.ZodUnion,...X(e)});var Ft=n=>n instanceof fr?Ft(n.schema):n instanceof kt?Ft(n.innerType()):n instanceof gr?[n.value]:n instanceof Pt?n.options:n instanceof _r?ne.objectValues(n.enum):n instanceof yr?Ft(n._def.innerType):n instanceof lr?[void 0]:n instanceof dr?[null]:n instanceof bt?[void 0,...Ft(n.unwrap())]:n instanceof Rt?[null,...Ft(n.unwrap())]:n instanceof Kr||n instanceof vr?Ft(n.unwrap()):n instanceof br?Ft(n._def.innerType):[],qr=class extends Y{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==R.object)return I(t,{code:j.invalid_type,expected:R.object,received:t.parsedType}),G;let r=this.discriminator,i=t.data[r],s=this.optionsMap.get(i);return s?t.common.async?s._parseAsync({data:t.data,path:t.path,parent:t}):s._parseSync({data:t.data,path:t.path,parent:t}):(I(t,{code:j.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),G)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,r){let i=new Map;for(let s of t){let a=Ft(s.shape[e]);if(!a.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let o of a){if(i.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);i.set(o,s)}}return new qr({typeName:Q.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:i,...X(r)})}};function hi(n,e){let t=jt(n),r=jt(e);if(n===e)return{valid:!0,data:n};if(t===R.object&&r===R.object){let i=ne.objectKeys(e),s=ne.objectKeys(n).filter(o=>i.indexOf(o)!==-1),a={...n,...e};for(let o of s){let u=hi(n[o],e[o]);if(!u.valid)return{valid:!1};a[o]=u.data}return{valid:!0,data:a}}else if(t===R.array&&r===R.array){if(n.length!==e.length)return{valid:!1};let i=[];for(let s=0;s<n.length;s++){let a=n[s],o=e[s],u=hi(a,o);if(!u.valid)return{valid:!1};i.push(u.data)}return{valid:!0,data:i}}else return t===R.date&&r===R.date&&+n==+e?{valid:!0,data:n}:{valid:!1}}var pr=class extends Y{_parse(e){let{status:t,ctx:r}=this._processInputParams(e),i=(s,a)=>{if(hn(s)||hn(a))return G;let o=hi(s.value,a.value);return o.valid?((pn(s)||pn(a))&&t.dirty(),{status:t.value,value:o.data}):(I(r,{code:j.invalid_intersection_types}),G)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([s,a])=>i(s,a)):i(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}};pr.create=(n,e,t)=>new pr({left:n,right:e,typeName:Q.ZodIntersection,...X(t)});var vt=class extends Y{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==R.array)return I(r,{code:j.invalid_type,expected:R.array,received:r.parsedType}),G;if(r.data.length<this._def.items.length)return I(r,{code:j.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),G;!this._def.rest&&r.data.length>this._def.items.length&&(I(r,{code:j.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());let s=[...r.data].map((a,o)=>{let u=this._def.items[o]||this._def.rest;return u?u._parse(new wt(r,a,r.path,o)):null}).filter(a=>!!a);return r.common.async?Promise.all(s).then(a=>st.mergeArray(t,a)):st.mergeArray(t,s)}get items(){return this._def.items}rest(e){return new vt({...this._def,rest:e})}};vt.create=(n,e)=>{if(!Array.isArray(n))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new vt({items:n,typeName:Q.ZodTuple,rest:null,...X(e)})};var mr=class extends Y{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==R.object)return I(r,{code:j.invalid_type,expected:R.object,received:r.parsedType}),G;let i=[],s=this._def.keyType,a=this._def.valueType;for(let o in r.data)i.push({key:s._parse(new wt(r,o,r.path,o)),value:a._parse(new wt(r,r.data[o],r.path,o)),alwaysSet:o in r.data});return r.common.async?st.mergeObjectAsync(t,i):st.mergeObjectSync(t,i)}get element(){return this._def.valueType}static create(e,t,r){return t instanceof Y?new mr({keyType:e,valueType:t,typeName:Q.ZodRecord,...X(r)}):new mr({keyType:gt.create(),valueType:e,typeName:Q.ZodRecord,...X(t)})}},Br=class extends Y{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==R.map)return I(r,{code:j.invalid_type,expected:R.map,received:r.parsedType}),G;let i=this._def.keyType,s=this._def.valueType,a=[...r.data.entries()].map(([o,u],l)=>({key:i._parse(new wt(r,o,r.path,[l,"key"])),value:s._parse(new wt(r,u,r.path,[l,"value"]))}));if(r.common.async){let o=new Map;return Promise.resolve().then(async()=>{for(let u of a){let l=await u.key,p=await u.value;if(l.status==="aborted"||p.status==="aborted")return G;(l.status==="dirty"||p.status==="dirty")&&t.dirty(),o.set(l.value,p.value)}return{status:t.value,value:o}})}else{let o=new Map;for(let u of a){let l=u.key,p=u.value;if(l.status==="aborted"||p.status==="aborted")return G;(l.status==="dirty"||p.status==="dirty")&&t.dirty(),o.set(l.value,p.value)}return{status:t.value,value:o}}}};Br.create=(n,e,t)=>new Br({valueType:e,keyType:n,typeName:Q.ZodMap,...X(t)});var Vt=class extends Y{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==R.set)return I(r,{code:j.invalid_type,expected:R.set,received:r.parsedType}),G;let i=this._def;i.minSize!==null&&r.data.size<i.minSize.value&&(I(r,{code:j.too_small,minimum:i.minSize.value,type:"set",inclusive:!0,exact:!1,message:i.minSize.message}),t.dirty()),i.maxSize!==null&&r.data.size>i.maxSize.value&&(I(r,{code:j.too_big,maximum:i.maxSize.value,type:"set",inclusive:!0,exact:!1,message:i.maxSize.message}),t.dirty());let s=this._def.valueType;function a(u){let l=new Set;for(let p of u){if(p.status==="aborted")return G;p.status==="dirty"&&t.dirty(),l.add(p.value)}return{status:t.value,value:l}}let o=[...r.data.values()].map((u,l)=>s._parse(new wt(r,u,r.path,l)));return r.common.async?Promise.all(o).then(u=>a(u)):a(o)}min(e,t){return new Vt({...this._def,minSize:{value:e,message:B.toString(t)}})}max(e,t){return new Vt({...this._def,maxSize:{value:e,message:B.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};Vt.create=(n,e)=>new Vt({valueType:n,minSize:null,maxSize:null,typeName:Q.ZodSet,...X(e)});var Wt=class extends Y{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==R.function)return I(t,{code:j.invalid_type,expected:R.function,received:t.parsedType}),G;function r(o,u){return Hr({data:o,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,jr(),Nt].filter(l=>!!l),issueData:{code:j.invalid_arguments,argumentsError:u}})}function i(o,u){return Hr({data:o,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,jr(),Nt].filter(l=>!!l),issueData:{code:j.invalid_return_type,returnTypeError:u}})}let s={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof Kt){let o=this;return dt(async function(...u){let l=new lt([]),p=await o._def.args.parseAsync(u,s).catch(y=>{throw l.addIssue(r(u,y)),l}),f=await Reflect.apply(a,this,p);return await o._def.returns._def.type.parseAsync(f,s).catch(y=>{throw l.addIssue(i(f,y)),l})})}else{let o=this;return dt(function(...u){let l=o._def.args.safeParse(u,s);if(!l.success)throw new lt([r(u,l.error)]);let p=Reflect.apply(a,this,l.data),f=o._def.returns.safeParse(p,s);if(!f.success)throw new lt([i(p,f.error)]);return f.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new Wt({...this._def,args:vt.create(e).rest(Ut.create())})}returns(e){return new Wt({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,r){return new Wt({args:e||vt.create([]).rest(Ut.create()),returns:t||Ut.create(),typeName:Q.ZodFunction,...X(r)})}},fr=class extends Y{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};fr.create=(n,e)=>new fr({getter:n,typeName:Q.ZodLazy,...X(e)});var gr=class extends Y{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return I(t,{received:t.data,code:j.invalid_literal,expected:this._def.value}),G}return{status:"valid",value:e.data}}get value(){return this._def.value}};gr.create=(n,e)=>new gr({value:n,typeName:Q.ZodLiteral,...X(e)});function ms(n,e){return new Pt({values:n,typeName:Q.ZodEnum,...X(e)})}var Pt=class extends Y{_parse(e){if(typeof e.data!="string"){let t=this._getOrReturnCtx(e),r=this._def.values;return I(t,{expected:ne.joinValues(r),received:t.parsedType,code:j.invalid_type}),G}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),r=this._def.values;return I(t,{received:t.data,code:j.invalid_enum_value,options:r}),G}return dt(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return Pt.create(e,{...this._def,...t})}exclude(e,t=this._def){return Pt.create(this.options.filter(r=>!e.includes(r)),{...this._def,...t})}};Pt.create=ms;var _r=class extends Y{_parse(e){let t=ne.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==R.string&&r.parsedType!==R.number){let i=ne.objectValues(t);return I(r,{expected:ne.joinValues(i),received:r.parsedType,code:j.invalid_type}),G}if(this._cache||(this._cache=new Set(ne.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let i=ne.objectValues(t);return I(r,{received:r.data,code:j.invalid_enum_value,options:i}),G}return dt(e.data)}get enum(){return this._def.values}};_r.create=(n,e)=>new _r({values:n,typeName:Q.ZodNativeEnum,...X(e)});var Kt=class extends Y{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==R.promise&&t.common.async===!1)return I(t,{code:j.invalid_type,expected:R.promise,received:t.parsedType}),G;let r=t.parsedType===R.promise?t.data:Promise.resolve(t.data);return dt(r.then(i=>this._def.type.parseAsync(i,{path:t.path,errorMap:t.common.contextualErrorMap})))}};Kt.create=(n,e)=>new Kt({type:n,typeName:Q.ZodPromise,...X(e)});var kt=class extends Y{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Q.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:r}=this._processInputParams(e),i=this._def.effect||null,s={addIssue:a=>{I(r,a),a.fatal?t.abort():t.dirty()},get path(){return r.path}};if(s.addIssue=s.addIssue.bind(s),i.type==="preprocess"){let a=i.transform(r.data,s);if(r.common.async)return Promise.resolve(a).then(async o=>{if(t.value==="aborted")return G;let u=await this._def.schema._parseAsync({data:o,path:r.path,parent:r});return u.status==="aborted"?G:u.status==="dirty"?cr(u.value):t.value==="dirty"?cr(u.value):u});{if(t.value==="aborted")return G;let o=this._def.schema._parseSync({data:a,path:r.path,parent:r});return o.status==="aborted"?G:o.status==="dirty"?cr(o.value):t.value==="dirty"?cr(o.value):o}}if(i.type==="refinement"){let a=o=>{let u=i.refinement(o,s);if(r.common.async)return Promise.resolve(u);if(u instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(r.common.async===!1){let o=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return o.status==="aborted"?G:(o.status==="dirty"&&t.dirty(),a(o.value),{status:t.value,value:o.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(o=>o.status==="aborted"?G:(o.status==="dirty"&&t.dirty(),a(o.value).then(()=>({status:t.value,value:o.value}))))}if(i.type==="transform")if(r.common.async===!1){let a=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!Qt(a))return G;let o=i.transform(a.value,s);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:o}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(a=>Qt(a)?Promise.resolve(i.transform(a.value,s)).then(o=>({status:t.value,value:o})):G);ne.assertNever(i)}};kt.create=(n,e,t)=>new kt({schema:n,typeName:Q.ZodEffects,effect:e,...X(t)});kt.createWithPreprocess=(n,e,t)=>new kt({schema:e,effect:{type:"preprocess",transform:n},typeName:Q.ZodEffects,...X(t)});var bt=class extends Y{_parse(e){return this._getType(e)===R.undefined?dt(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};bt.create=(n,e)=>new bt({innerType:n,typeName:Q.ZodOptional,...X(e)});var Rt=class extends Y{_parse(e){return this._getType(e)===R.null?dt(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Rt.create=(n,e)=>new Rt({innerType:n,typeName:Q.ZodNullable,...X(e)});var yr=class extends Y{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return t.parsedType===R.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};yr.create=(n,e)=>new yr({innerType:n,typeName:Q.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...X(e)});var br=class extends Y{_parse(e){let{ctx:t}=this._processInputParams(e),r={...t,common:{...t.common,issues:[]}},i=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return xr(i)?i.then(s=>({status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new lt(r.common.issues)},input:r.data})})):{status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new lt(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}};br.create=(n,e)=>new br({innerType:n,typeName:Q.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...X(e)});var Dr=class extends Y{_parse(e){if(this._getType(e)!==R.nan){let r=this._getOrReturnCtx(e);return I(r,{code:j.invalid_type,expected:R.nan,received:r.parsedType}),G}return{status:"valid",value:e.data}}};Dr.create=n=>new Dr({typeName:Q.ZodNaN,...X(n)});var yo=Symbol("zod_brand"),Kr=class extends Y{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return this._def.type._parse({data:r,path:t.path,parent:t})}unwrap(){return this._def.type}},wr=class extends Y{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.common.async)return(async()=>{let s=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return s.status==="aborted"?G:s.status==="dirty"?(t.dirty(),cr(s.value)):this._def.out._parseAsync({data:s.value,path:r.path,parent:r})})();{let i=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return i.status==="aborted"?G:i.status==="dirty"?(t.dirty(),{status:"dirty",value:i.value}):this._def.out._parseSync({data:i.value,path:r.path,parent:r})}}static create(e,t){return new wr({in:e,out:t,typeName:Q.ZodPipeline})}},vr=class extends Y{_parse(e){let t=this._def.innerType._parse(e),r=i=>(Qt(i)&&(i.value=Object.freeze(i.value)),i);return xr(t)?t.then(i=>r(i)):r(t)}unwrap(){return this._def.innerType}};vr.create=(n,e)=>new vr({innerType:n,typeName:Q.ZodReadonly,...X(e)});function ls(n,e){let t=typeof n=="function"?n(e):typeof n=="string"?{message:n}:n;return typeof t=="string"?{message:t}:t}function fs(n,e={},t){return n?Ht.create().superRefine((r,i)=>{let s=n(r);if(s instanceof Promise)return s.then(a=>{if(!a){let o=ls(e,r),u=o.fatal??t??!0;i.addIssue({code:"custom",...o,fatal:u})}});if(!s){let a=ls(e,r),o=a.fatal??t??!0;i.addIssue({code:"custom",...a,fatal:o})}}):Ht.create()}var bo={object:fe.lazycreate},Q;(function(n){n.ZodString="ZodString",n.ZodNumber="ZodNumber",n.ZodNaN="ZodNaN",n.ZodBigInt="ZodBigInt",n.ZodBoolean="ZodBoolean",n.ZodDate="ZodDate",n.ZodSymbol="ZodSymbol",n.ZodUndefined="ZodUndefined",n.ZodNull="ZodNull",n.ZodAny="ZodAny",n.ZodUnknown="ZodUnknown",n.ZodNever="ZodNever",n.ZodVoid="ZodVoid",n.ZodArray="ZodArray",n.ZodObject="ZodObject",n.ZodUnion="ZodUnion",n.ZodDiscriminatedUnion="ZodDiscriminatedUnion",n.ZodIntersection="ZodIntersection",n.ZodTuple="ZodTuple",n.ZodRecord="ZodRecord",n.ZodMap="ZodMap",n.ZodSet="ZodSet",n.ZodFunction="ZodFunction",n.ZodLazy="ZodLazy",n.ZodLiteral="ZodLiteral",n.ZodEnum="ZodEnum",n.ZodEffects="ZodEffects",n.ZodNativeEnum="ZodNativeEnum",n.ZodOptional="ZodOptional",n.ZodNullable="ZodNullable",n.ZodDefault="ZodDefault",n.ZodCatch="ZodCatch",n.ZodPromise="ZodPromise",n.ZodBranded="ZodBranded",n.ZodPipeline="ZodPipeline",n.ZodReadonly="ZodReadonly"})(Q||(Q={}));var wo=(n,e={message:`Input not instance of ${n.name}`})=>fs(t=>t instanceof n,e),gs=gt.create,_s=xt.create,vo=Dr.create,ko=It.create,ys=ur.create,Co=Lt.create,To=Pr.create,So=lr.create,Mo=dr.create,Ao=Ht.create,Oo=Ut.create,Eo=At.create,jo=Rr.create,xo=_t.create,Io=fe.create,Po=fe.strictCreate,Ro=hr.create,qo=qr.create,Bo=pr.create,Do=vt.create,$o=mr.create,No=Br.create,Fo=Vt.create,Uo=Wt.create,Lo=fr.create,Vo=gr.create,zo=Pt.create,Go=_r.create,Zo=Kt.create,Qo=kt.create,Wo=bt.create,Ho=Rt.create,Ko=kt.createWithPreprocess,Xo=wr.create,Jo=()=>gs().optional(),Yo=()=>_s().optional(),ec=()=>ys().optional(),tc={string:n=>gt.create({...n,coerce:!0}),number:n=>xt.create({...n,coerce:!0}),boolean:n=>ur.create({...n,coerce:!0}),bigint:n=>It.create({...n,coerce:!0}),date:n=>Lt.create({...n,coerce:!0})};var rc=G;function ic(n,e){let t={...n};for(let r of e)delete t[r];return t}var sc=/:([a-zA-Z_][a-zA-Z0-9_]*)/g;function ac(n){let e=n.url,t=n.params;return t&&(e=e.replace(sc,(r,i)=>i in t?`${t[i]}`:r)),e}function bs(n,e,t){return n.find(r=>r.method===e&&r.path===t)}function oc(n){let e=new FormData;for(let t in n)e.append(t,n[t]);return{data:e}}var mn=class extends Error{constructor(n,e,t,r){super(n),this.config=e,this.data=t,this.cause=r}},cc={name:"form-data",request:async(n,e)=>{if(typeof e.data!="object"||Array.isArray(e.data))throw new mn("Zodios: multipart/form-data body must be an object",e);let t=oc(e.data);return{...e,data:t.data,headers:{...e.headers,...t.headers}}}};function uc(){return cc}var lc={name:"form-url",request:async(n,e)=>{if(typeof e.data!="object"||Array.isArray(e.data))throw new mn("Zodios: application/x-www-form-urlencoded body must be an object",e);return{...e,data:new URLSearchParams(e.data).toString(),headers:{...e.headers,"Content-Type":"application/x-www-form-urlencoded"}}}};function dc(){return lc}function ws(n,e){return{request:async(t,r)=>({...r,headers:{...r.headers,[n]:e}})}}function vs(n){return[!0,"response","all"].includes(n)}function ks(n){return[!0,"request","all"].includes(n)}function hc({validate:n,transform:e,sendDefaults:t}){return{name:"zod-validation",request:ks(n)?async(r,i)=>{let s=bs(r,i.method,i.url);if(!s)throw new Error(`No endpoint found for ${i.method} ${i.url}`);let{parameters:a}=s;if(!a)return i;let o={...i,queries:{...i.queries},headers:{...i.headers},params:{...i.params}},u={Query:f=>{var m;return(m=o.queries)==null?void 0:m[f]},Body:f=>o.data,Header:f=>{var m;return(m=o.headers)==null?void 0:m[f]},Path:f=>{var m;return(m=o.params)==null?void 0:m[f]}},l={Query:(f,m)=>o.queries[f]=m,Body:(f,m)=>o.data=m,Header:(f,m)=>o.headers[f]=m,Path:(f,m)=>o.params[f]=m},p=ks(e);for(let f of a){let{name:m,schema:y,type:k}=f,C=u[k](m);if(t||C!==void 0){let A=await y.safeParseAsync(C);if(!A.success)throw new mn(`Zodios: Invalid ${k} parameter '${m}'`,i,C,A.error);p&&l[k](m,A.data)}}return o}:void 0,response:vs(n)?async(r,i,s)=>{var a,o,u,l;let p=bs(r,i.method,i.url);if(!p)throw new Error(`No endpoint found for ${i.method} ${i.url}`);if((o=(a=s.headers)==null?void 0:a["content-type"])!=null&&o.includes("application/json")||(l=(u=s.headers)==null?void 0:u["content-type"])!=null&&l.includes("application/vnd.api+json")){let f=await p.response.safeParseAsync(s.data);if(!f.success)throw new mn(`Zodios: Invalid response from endpoint '${p.method} ${p.path}'
6
6
  status: ${s.status} ${s.statusText}
7
7
  cause:
8
8
  ${f.error.message}
9
9
  received:
10
- ${JSON.stringify(s.data,null,2)}`,i,s.data,f.error);ws(e)&&(s.data=f.data)}return s}:void 0}}var ks=class{constructor(n,e){this.plugins=[],this.key=`${n}-${e}`}indexOf(n){return this.plugins.findIndex(e=>e?.name===n)}use(n){if(n.name){let e=this.indexOf(n.name);if(e!==-1)return this.plugins[e]=n,{key:this.key,value:e}}return this.plugins.push(n),{key:this.key,value:this.plugins.length-1}}eject(n){if(typeof n=="string"){let e=this.indexOf(n);if(e===-1)throw new Error(`Plugin with name '${n}' not found`);this.plugins[e]=void 0}else{if(n.key!==this.key)throw new Error(`Plugin with key '${n.key}' is not registered for endpoint '${this.key}'`);this.plugins[n.value]=void 0}}async interceptRequest(n,e){let t=e;for(let r of this.plugins)r!=null&&r.request&&(t=await r.request(n,t));return t}async interceptResponse(n,e,t){let r=t;for(let i=this.plugins.length-1;i>=0;i--){let s=this.plugins[i];s&&(r=r.then(s!=null&&s.response?a=>s.response(n,e,a):void 0,s!=null&&s.error?a=>s.error(n,e,a):void 0))}return r}count(){return this.plugins.reduce((n,e)=>e?n+1:n,0)}};function Cs(n){let e=new Set;for(let r of n){let i=`${r.method} ${r.path}`;if(e.has(i))throw new Error(`Zodios: Duplicate path '${i}'`);e.add(i)}let t=new Set;for(let r of n)if(r.alias){if(t.has(r.alias))throw new Error(`Zodios: Duplicate alias '${r.alias}'`);t.add(r.alias)}for(let r of n)if(r.parameters&&r.parameters.filter(i=>i.type==="Body").length>1)throw new Error(`Zodios: Multiple body parameters in endpoint '${r.path}'`)}function Ts(n){return Cs(n),n}var pc=class{constructor(n,e,t){this.endpointPlugins=new Map;let r;if(!n)throw Array.isArray(e)?new Error("Zodios: missing base url"):new Error("Zodios: missing api description");let i;if(typeof n=="string"&&Array.isArray(e))i=n,this.api=e,r=t||{};else if(Array.isArray(n)&&!Array.isArray(e))this.api=n,r=e||{};else throw new Error("Zodios: api must be an array");Cs(this.api),this.options={validate:!0,transform:!0,sendDefaults:!1,...r},this.options.axiosInstance?this.axiosInstance=this.options.axiosInstance:this.axiosInstance=nc.create({...this.options.axiosConfig}),i&&(this.axiosInstance.defaults.baseURL=i),this.injectAliasEndpoints(),this.initPlugins(),[!0,"all","request","response"].includes(this.options.validate)&&this.use(hc(this.options))}initPlugins(){this.endpointPlugins.set("any-any",new ks("any","any")),this.api.forEach(n=>{let e=new ks(n.method,n.path);switch(n.requestFormat){case"binary":e.use(bs("Content-Type","application/octet-stream"));break;case"form-data":e.use(uc());break;case"form-url":e.use(dc());break;case"text":e.use(bs("Content-Type","text/plain"));break}this.endpointPlugins.set(`${n.method}-${n.path}`,e)})}getAnyEndpointPlugins(){return this.endpointPlugins.get("any-any")}findAliasEndpointPlugins(n){let e=this.api.find(t=>t.alias===n);if(e)return this.endpointPlugins.get(`${e.method}-${e.path}`)}findEnpointPlugins(n,e){return this.endpointPlugins.get(`${n}-${e}`)}get baseURL(){return this.axiosInstance.defaults.baseURL}get axios(){return this.axiosInstance}use(...n){if(typeof n[0]=="object")return this.getAnyEndpointPlugins().use(n[0]);if(typeof n[0]=="string"&&typeof n[1]=="object"){let e=this.findAliasEndpointPlugins(n[0]);if(!e)throw new Error(`Zodios: no alias '${n[0]}' found to register plugin`);return e.use(n[1])}else if(typeof n[0]=="string"&&typeof n[1]=="string"&&typeof n[2]=="object"){let e=this.findEnpointPlugins(n[0],n[1]);if(!e)throw new Error(`Zodios: no endpoint '${n[0]} ${n[1]}' found to register plugin`);return e.use(n[2])}throw new Error("Zodios: invalid plugin registration")}eject(n){var e;if(typeof n=="string"){this.getAnyEndpointPlugins().eject(n);return}(e=this.endpointPlugins.get(n.key))==null||e.eject(n)}injectAliasEndpoints(){this.api.forEach(n=>{n.alias&&(["post","put","patch","delete"].includes(n.method)?this[n.alias]=(e,t)=>this.request({...t,method:n.method,url:n.path,data:e}):this[n.alias]=e=>this.request({...e,method:n.method,url:n.path}))})}async request(n){let e=n,t=this.getAnyEndpointPlugins(),r=this.findEnpointPlugins(e.method,e.url);e=await t.interceptRequest(this.api,e),r&&(e=await r.interceptRequest(this.api,e));let i=this.axiosInstance.request({...ic(e,["params","queries"]),url:ac(e),params:e.queries});return r&&(i=r.interceptResponse(this.api,e,i)),i=t.interceptResponse(this.api,e,i),(await i).data}async get(n,...[e]){return this.request({...e,method:"get",url:n})}async post(n,e,...[t]){return this.request({...t,method:"post",url:n,data:e})}async put(n,e,...[t]){return this.request({...t,method:"put",url:n,data:e})}async patch(n,e,...[t]){return this.request({...t,method:"patch",url:n,data:e})}async delete(n,e,...[t]){return this.request({...t,method:"delete",url:n,data:e})}},Ss=pc;var Ms=V.enum(["crypto","fx","equity","metal","rates","crypto_redemption_rate","commodities","crypto_index","crypto_nav","eco","kalshi"]),As=Ms.nullish(),mi=V.string(),Os=V.object({attributes:V.record(V.string()),id:mi}).passthrough(),fn=V.string(),Es=V.enum(["hex","base64"]),fi=V.object({data:V.array(V.string()),encoding:Es}).passthrough(),pi=V.object({conf:V.string(),expo:V.number().int(),price:V.string(),publish_time:V.number().int()}).passthrough(),js=V.object({prev_publish_time:V.number().int().nullable(),proof_available_time:V.number().int().nullable(),slot:V.number().int().gte(0).nullable()}).partial().passthrough(),xs=V.object({ema_price:pi,id:mi,metadata:js,price:pi}).passthrough(),gn=V.object({binary:fi,parsed:V.array(xs).nullish()}).passthrough(),Is=V.object({cap:V.number().int().gte(0),publisher:V.string()}).passthrough(),Ps=V.object({publisher_stake_caps:V.array(Is)}).passthrough(),Rs=V.object({binary:fi,parsed:V.array(Ps).nullish()}).passthrough(),Xr={AssetType:Ms,asset_type:As,RpcPriceIdentifier:mi,PriceFeedMetadata:Os,PriceIdInput:fn,EncodingType:Es,BinaryUpdate:fi,RpcPrice:pi,RpcPriceFeedMetadataV2:js,ParsedPriceUpdate:xs,PriceUpdate:gn,ParsedPublisherStakeCap:Is,ParsedPublisherStakeCapsUpdate:Ps,LatestPublisherStakeCapsUpdateDataResponse:Rs},mc=Ts([{method:"get",path:"/v2/price_feeds",alias:"price_feeds_metadata",description:`Get the set of price feeds.
10
+ ${JSON.stringify(s.data,null,2)}`,i,s.data,f.error);vs(e)&&(s.data=f.data)}return s}:void 0}}var Cs=class{constructor(n,e){this.plugins=[],this.key=`${n}-${e}`}indexOf(n){return this.plugins.findIndex(e=>e?.name===n)}use(n){if(n.name){let e=this.indexOf(n.name);if(e!==-1)return this.plugins[e]=n,{key:this.key,value:e}}return this.plugins.push(n),{key:this.key,value:this.plugins.length-1}}eject(n){if(typeof n=="string"){let e=this.indexOf(n);if(e===-1)throw new Error(`Plugin with name '${n}' not found`);this.plugins[e]=void 0}else{if(n.key!==this.key)throw new Error(`Plugin with key '${n.key}' is not registered for endpoint '${this.key}'`);this.plugins[n.value]=void 0}}async interceptRequest(n,e){let t=e;for(let r of this.plugins)r!=null&&r.request&&(t=await r.request(n,t));return t}async interceptResponse(n,e,t){let r=t;for(let i=this.plugins.length-1;i>=0;i--){let s=this.plugins[i];s&&(r=r.then(s!=null&&s.response?a=>s.response(n,e,a):void 0,s!=null&&s.error?a=>s.error(n,e,a):void 0))}return r}count(){return this.plugins.reduce((n,e)=>e?n+1:n,0)}};function Ts(n){let e=new Set;for(let r of n){let i=`${r.method} ${r.path}`;if(e.has(i))throw new Error(`Zodios: Duplicate path '${i}'`);e.add(i)}let t=new Set;for(let r of n)if(r.alias){if(t.has(r.alias))throw new Error(`Zodios: Duplicate alias '${r.alias}'`);t.add(r.alias)}for(let r of n)if(r.parameters&&r.parameters.filter(i=>i.type==="Body").length>1)throw new Error(`Zodios: Multiple body parameters in endpoint '${r.path}'`)}function Ss(n){return Ts(n),n}var pc=class{constructor(n,e,t){this.endpointPlugins=new Map;let r;if(!n)throw Array.isArray(e)?new Error("Zodios: missing base url"):new Error("Zodios: missing api description");let i;if(typeof n=="string"&&Array.isArray(e))i=n,this.api=e,r=t||{};else if(Array.isArray(n)&&!Array.isArray(e))this.api=n,r=e||{};else throw new Error("Zodios: api must be an array");Ts(this.api),this.options={validate:!0,transform:!0,sendDefaults:!1,...r},this.options.axiosInstance?this.axiosInstance=this.options.axiosInstance:this.axiosInstance=nc.create({...this.options.axiosConfig}),i&&(this.axiosInstance.defaults.baseURL=i),this.injectAliasEndpoints(),this.initPlugins(),[!0,"all","request","response"].includes(this.options.validate)&&this.use(hc(this.options))}initPlugins(){this.endpointPlugins.set("any-any",new Cs("any","any")),this.api.forEach(n=>{let e=new Cs(n.method,n.path);switch(n.requestFormat){case"binary":e.use(ws("Content-Type","application/octet-stream"));break;case"form-data":e.use(uc());break;case"form-url":e.use(dc());break;case"text":e.use(ws("Content-Type","text/plain"));break}this.endpointPlugins.set(`${n.method}-${n.path}`,e)})}getAnyEndpointPlugins(){return this.endpointPlugins.get("any-any")}findAliasEndpointPlugins(n){let e=this.api.find(t=>t.alias===n);if(e)return this.endpointPlugins.get(`${e.method}-${e.path}`)}findEnpointPlugins(n,e){return this.endpointPlugins.get(`${n}-${e}`)}get baseURL(){return this.axiosInstance.defaults.baseURL}get axios(){return this.axiosInstance}use(...n){if(typeof n[0]=="object")return this.getAnyEndpointPlugins().use(n[0]);if(typeof n[0]=="string"&&typeof n[1]=="object"){let e=this.findAliasEndpointPlugins(n[0]);if(!e)throw new Error(`Zodios: no alias '${n[0]}' found to register plugin`);return e.use(n[1])}else if(typeof n[0]=="string"&&typeof n[1]=="string"&&typeof n[2]=="object"){let e=this.findEnpointPlugins(n[0],n[1]);if(!e)throw new Error(`Zodios: no endpoint '${n[0]} ${n[1]}' found to register plugin`);return e.use(n[2])}throw new Error("Zodios: invalid plugin registration")}eject(n){var e;if(typeof n=="string"){this.getAnyEndpointPlugins().eject(n);return}(e=this.endpointPlugins.get(n.key))==null||e.eject(n)}injectAliasEndpoints(){this.api.forEach(n=>{n.alias&&(["post","put","patch","delete"].includes(n.method)?this[n.alias]=(e,t)=>this.request({...t,method:n.method,url:n.path,data:e}):this[n.alias]=e=>this.request({...e,method:n.method,url:n.path}))})}async request(n){let e=n,t=this.getAnyEndpointPlugins(),r=this.findEnpointPlugins(e.method,e.url);e=await t.interceptRequest(this.api,e),r&&(e=await r.interceptRequest(this.api,e));let i=this.axiosInstance.request({...ic(e,["params","queries"]),url:ac(e),params:e.queries});return r&&(i=r.interceptResponse(this.api,e,i)),i=t.interceptResponse(this.api,e,i),(await i).data}async get(n,...[e]){return this.request({...e,method:"get",url:n})}async post(n,e,...[t]){return this.request({...t,method:"post",url:n,data:e})}async put(n,e,...[t]){return this.request({...t,method:"put",url:n,data:e})}async patch(n,e,...[t]){return this.request({...t,method:"patch",url:n,data:e})}async delete(n,e,...[t]){return this.request({...t,method:"delete",url:n,data:e})}},Ms=pc;var As=V.enum(["crypto","fx","equity","metal","rates","crypto_redemption_rate","commodities","crypto_index","crypto_nav","eco","kalshi"]),Os=As.nullish(),mi=V.string(),Es=V.object({attributes:V.record(V.string()),id:mi}).passthrough(),fn=V.string(),js=V.enum(["hex","base64"]),fi=V.object({data:V.array(V.string()),encoding:js}).passthrough(),pi=V.object({conf:V.string(),expo:V.number().int(),price:V.string(),publish_time:V.number().int()}).passthrough(),xs=V.object({prev_publish_time:V.number().int().nullable(),proof_available_time:V.number().int().nullable(),slot:V.number().int().gte(0).nullable()}).partial().passthrough(),Is=V.object({ema_price:pi,id:mi,metadata:xs,price:pi}).passthrough(),gn=V.object({binary:fi,parsed:V.array(Is).nullish()}).passthrough(),Ps=V.object({cap:V.number().int().gte(0),publisher:V.string()}).passthrough(),Rs=V.object({publisher_stake_caps:V.array(Ps)}).passthrough(),qs=V.object({binary:fi,parsed:V.array(Rs).nullish()}).passthrough(),Xr={AssetType:As,asset_type:Os,RpcPriceIdentifier:mi,PriceFeedMetadata:Es,PriceIdInput:fn,EncodingType:js,BinaryUpdate:fi,RpcPrice:pi,RpcPriceFeedMetadataV2:xs,ParsedPriceUpdate:Is,PriceUpdate:gn,ParsedPublisherStakeCap:Ps,ParsedPublisherStakeCapsUpdate:Rs,LatestPublisherStakeCapsUpdateDataResponse:qs},mc=Ss([{method:"get",path:"/v2/price_feeds",alias:"price_feeds_metadata",description:`Get the set of price feeds.
11
11
 
12
12
  This endpoint fetches all price feeds from the Pyth network. It can be filtered by asset type
13
- and query string.`,requestFormat:"json",parameters:[{name:"query",type:"Query",schema:V.string().nullish()},{name:"asset_type",type:"Query",schema:As}],response:V.array(Os)},{method:"get",path:"/v2/updates/price/:publish_time",alias:"timestamp_price_updates",description:`Get the latest price updates by price feed id.
13
+ and query string.`,requestFormat:"json",parameters:[{name:"query",type:"Query",schema:V.string().nullish()},{name:"asset_type",type:"Query",schema:Os}],response:V.array(Es)},{method:"get",path:"/v2/updates/price/:publish_time",alias:"timestamp_price_updates",description:`Get the latest price updates by price feed id.
14
14
 
15
15
  Given a collection of price feed ids, retrieve the latest Pyth price for each price feed.`,requestFormat:"json",parameters:[{name:"publish_time",type:"Path",schema:V.number().int()},{name:"ids[]",type:"Query",schema:V.array(fn)},{name:"encoding",type:"Query",schema:V.enum(["hex","base64"]).optional()},{name:"parsed",type:"Query",schema:V.boolean().optional()},{name:"ignore_invalid_price_ids",type:"Query",schema:V.boolean().optional()}],response:gn,errors:[{status:404,description:"Price ids not found",schema:V.void()}]},{method:"get",path:"/v2/updates/price/latest",alias:"latest_price_updates",description:`Get the latest price updates by price feed id.
16
16
 
17
17
  Given a collection of price feed ids, retrieve the latest Pyth price for each price feed.`,requestFormat:"json",parameters:[{name:"ids[]",type:"Query",schema:V.array(fn)},{name:"encoding",type:"Query",schema:V.enum(["hex","base64"]).optional()},{name:"parsed",type:"Query",schema:V.boolean().optional()},{name:"ignore_invalid_price_ids",type:"Query",schema:V.boolean().optional()}],response:gn,errors:[{status:404,description:"Price ids not found",schema:V.void()}]},{method:"get",path:"/v2/updates/price/stream",alias:"price_stream_sse_handler",description:`SSE route handler for streaming price updates.
18
18
 
19
19
  The connection will automatically close after 24 hours to prevent resource leaks.
20
- Clients should implement reconnection logic to maintain continuous price updates.`,requestFormat:"json",parameters:[{name:"ids[]",type:"Query",schema:V.array(fn)},{name:"encoding",type:"Query",schema:V.enum(["hex","base64"]).optional()},{name:"parsed",type:"Query",schema:V.boolean().optional()},{name:"allow_unordered",type:"Query",schema:V.boolean().optional()},{name:"benchmarks_only",type:"Query",schema:V.boolean().optional()},{name:"ignore_invalid_price_ids",type:"Query",schema:V.boolean().optional()}],response:gn,errors:[{status:404,description:"Price ids not found",schema:V.void()}]},{method:"get",path:"/v2/updates/publisher_stake_caps/latest",alias:"latest_publisher_stake_caps",description:"Get the most recent publisher stake caps update data.",requestFormat:"json",parameters:[{name:"encoding",type:"Query",schema:V.enum(["hex","base64"]).optional()},{name:"parsed",type:"Query",schema:V.boolean().optional()}],response:Rs}]),cd=new Ss(mc);var fc=5e3,gc=3,_n=class{baseURL;timeout;httpRetries;headers;accessToken;constructor(e,t){this.baseURL=e,this.timeout=t?.timeout??fc,this.httpRetries=t?.httpRetries??gc,this.headers=t?.headers??{},this.accessToken=t?.accessToken}async httpRequest(e,t,r,i=this.httpRetries,s=100+Math.floor(Math.random()*100)){try{let a={};this.accessToken!==void 0&&(a.Authorization=`Bearer ${this.accessToken}`);let o=await fetch(e,{...r,signal:AbortSignal.any([...r?.signal?[r.signal]:[],AbortSignal.timeout(this.timeout)]),headers:{...a,...this.headers,...r?.headers}});if(!o.ok){let l=await o.text();throw new Error(`HTTP error! status: ${o.status.toString()}${l?`, body: ${l}`:""}`)}let u=await o.json();return t.parse(u)}catch(a){if(i>0&&!(a instanceof Error&&a.name==="AbortError"))return await new Promise(o=>setTimeout(o,s)),this.httpRequest(e,t,r,i-1,s*2);throw a}}async getPriceFeeds({fetchOptions:e,...t}={}){let r=this.buildURL("price_feeds");if(t){let i=Wr(t);this.appendUrlSearchParams(r,i)}return await this.httpRequest(r.toString(),Xr.PriceFeedMetadata.array(),e)}async getLatestPublisherCaps({fetchOptions:e,...t}={}){let r=this.buildURL("updates/publisher_stake_caps/latest");return t&&this.appendUrlSearchParams(r,t),await this.httpRequest(r.toString(),Xr.LatestPublisherStakeCapsUpdateDataResponse,e)}async getLatestPriceUpdates(e,t,r){let i=this.buildURL("updates/price/latest");for(let s of e)i.searchParams.append("ids[]",s);if(t){let s=Wr(t);this.appendUrlSearchParams(i,s)}return this.httpRequest(i.toString(),Xr.PriceUpdate,r)}async getPriceUpdatesAtTimestamp(e,t,r,i){let s=this.buildURL(`updates/price/${e.toString()}`);for(let a of t)s.searchParams.append("ids[]",a);if(r){let a=Wr(r);this.appendUrlSearchParams(s,a)}return this.httpRequest(s.toString(),Xr.PriceUpdate,i)}async getPriceUpdatesStream(e,t){let r=this.buildURL("updates/price/stream");for(let s of e)r.searchParams.append("ids[]",s);if(t){let s=Wr(t);this.appendUrlSearchParams(r,s)}let i={};return this.accessToken!==void 0&&(i.Authorization=`Bearer ${this.accessToken}`),new or(r.toString(),{fetch:(s,a)=>fetch(s,{...a,headers:{...a?.headers,...i,...this.headers}})})}appendUrlSearchParams(e,t){for(let[r,i]of Object.entries(t))i!==void 0&&e.searchParams.append(r,String(i))}buildURL(e){return new URL(`./v2/${e}`,`${this.baseURL}${this.baseURL.endsWith("/")?"":"/"}`)}};import{bcs as yt}from"@mysten/sui/bcs";import{SUI_CLOCK_OBJECT_ID as _i}from"@mysten/sui/utils";var _c=Object.create,Ws=Object.defineProperty,yc=Object.getOwnPropertyDescriptor,bc=Object.getOwnPropertyNames,wc=Object.getPrototypeOf,vc=Object.prototype.hasOwnProperty,kc=(n=>typeof sr<"u"?sr:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof sr<"u"?sr:e)[t]}):n)(function(n){if(typeof sr<"u")return sr.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')}),Cc=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),Tc=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of bc(e))!vc.call(n,i)&&i!==t&&Ws(n,i,{get:()=>e[i],enumerable:!(r=yc(e,i))||r.enumerable});return n},en=(n,e,t)=>(t=n!=null?_c(wc(n)):{},Tc(e||!n||!n.__esModule?Ws(t,"default",{value:n,enumerable:!0}):t,n)),tn=Cc((n,e)=>{"use strict";(function(t,r){"use strict";function i(c,h){if(!c)throw new Error(h||"Assertion failed")}function s(c,h){c.super_=h;var g=function(){};g.prototype=h.prototype,c.prototype=new g,c.prototype.constructor=c}function a(c,h,g){if(a.isBN(c))return c;this.negative=0,this.words=null,this.length=0,this.red=null,c!==null&&((h==="le"||h==="be")&&(g=h,h=10),this._init(c||0,h||10,g||"be"))}typeof t=="object"?t.exports=a:r.BN=a,a.BN=a,a.wordSize=26;var o;try{typeof window<"u"&&typeof window.Buffer<"u"?o=window.Buffer:o=kc("buffer").Buffer}catch{}a.isBN=function(c){return c instanceof a?!0:c!==null&&typeof c=="object"&&c.constructor.wordSize===a.wordSize&&Array.isArray(c.words)},a.max=function(c,h){return c.cmp(h)>0?c:h},a.min=function(c,h){return c.cmp(h)<0?c:h},a.prototype._init=function(c,h,g){if(typeof c=="number")return this._initNumber(c,h,g);if(typeof c=="object")return this._initArray(c,h,g);h==="hex"&&(h=16),i(h===(h|0)&&h>=2&&h<=36),c=c.toString().replace(/\s+/g,"");var _=0;c[0]==="-"&&(_++,this.negative=1),_<c.length&&(h===16?this._parseHex(c,_,g):(this._parseBase(c,h,_),g==="le"&&this._initArray(this.toArray(),h,g)))},a.prototype._initNumber=function(c,h,g){c<0&&(this.negative=1,c=-c),c<67108864?(this.words=[c&67108863],this.length=1):c<4503599627370496?(this.words=[c&67108863,c/67108864&67108863],this.length=2):(i(c<9007199254740992),this.words=[c&67108863,c/67108864&67108863,1],this.length=3),g==="le"&&this._initArray(this.toArray(),h,g)},a.prototype._initArray=function(c,h,g){if(i(typeof c.length=="number"),c.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(c.length/3),this.words=new Array(this.length);for(var _=0;_<this.length;_++)this.words[_]=0;var w,C,M=0;if(g==="be")for(_=c.length-1,w=0;_>=0;_-=3)C=c[_]|c[_-1]<<8|c[_-2]<<16,this.words[w]|=C<<M&67108863,this.words[w+1]=C>>>26-M&67108863,M+=24,M>=26&&(M-=26,w++);else if(g==="le")for(_=0,w=0;_<c.length;_+=3)C=c[_]|c[_+1]<<8|c[_+2]<<16,this.words[w]|=C<<M&67108863,this.words[w+1]=C>>>26-M&67108863,M+=24,M>=26&&(M-=26,w++);return this._strip()};function u(c,h){var g=c.charCodeAt(h);if(g>=48&&g<=57)return g-48;if(g>=65&&g<=70)return g-55;if(g>=97&&g<=102)return g-87;i(!1,"Invalid character in "+c)}function l(c,h,g){var _=u(c,g);return g-1>=h&&(_|=u(c,g-1)<<4),_}a.prototype._parseHex=function(c,h,g){this.length=Math.ceil((c.length-h)/6),this.words=new Array(this.length);for(var _=0;_<this.length;_++)this.words[_]=0;var w=0,C=0,M;if(g==="be")for(_=c.length-1;_>=h;_-=2)M=l(c,h,_)<<w,this.words[C]|=M&67108863,w>=18?(w-=18,C+=1,this.words[C]|=M>>>26):w+=8;else{var b=c.length-h;for(_=b%2===0?h+1:h;_<c.length;_+=2)M=l(c,h,_)<<w,this.words[C]|=M&67108863,w>=18?(w-=18,C+=1,this.words[C]|=M>>>26):w+=8}this._strip()};function p(c,h,g,_){for(var w=0,C=0,M=Math.min(c.length,g),b=h;b<M;b++){var d=c.charCodeAt(b)-48;w*=_,d>=49?C=d-49+10:d>=17?C=d-17+10:C=d,i(d>=0&&C<_,"Invalid character"),w+=C}return w}a.prototype._parseBase=function(c,h,g){this.words=[0],this.length=1;for(var _=0,w=1;w<=67108863;w*=h)_++;_--,w=w/h|0;for(var C=c.length-g,M=C%_,b=Math.min(C,C-M)+g,d=0,v=g;v<b;v+=_)d=p(c,v,v+_,h),this.imuln(w),this.words[0]+d<67108864?this.words[0]+=d:this._iaddn(d);if(M!==0){var D=1;for(d=p(c,v,c.length,h),v=0;v<M;v++)D*=h;this.imuln(D),this.words[0]+d<67108864?this.words[0]+=d:this._iaddn(d)}this._strip()},a.prototype.copy=function(c){c.words=new Array(this.length);for(var h=0;h<this.length;h++)c.words[h]=this.words[h];c.length=this.length,c.negative=this.negative,c.red=this.red};function f(c,h){c.words=h.words,c.length=h.length,c.negative=h.negative,c.red=h.red}if(a.prototype._move=function(c){f(c,this)},a.prototype.clone=function(){var c=new a(null);return this.copy(c),c},a.prototype._expand=function(c){for(;this.length<c;)this.words[this.length++]=0;return this},a.prototype._strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},a.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{a.prototype[Symbol.for("nodejs.util.inspect.custom")]=m}catch{a.prototype.inspect=m}else a.prototype.inspect=m;function m(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var y=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],k=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],T=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];a.prototype.toString=function(c,h){c=c||10,h=h|0||1;var g;if(c===16||c==="hex"){g="";for(var _=0,w=0,C=0;C<this.length;C++){var M=this.words[C],b=((M<<_|w)&16777215).toString(16);w=M>>>24-_&16777215,_+=2,_>=26&&(_-=26,C--),w!==0||C!==this.length-1?g=y[6-b.length]+b+g:g=b+g}for(w!==0&&(g=w.toString(16)+g);g.length%h!==0;)g="0"+g;return this.negative!==0&&(g="-"+g),g}if(c===(c|0)&&c>=2&&c<=36){var d=k[c],v=T[c];g="";var D=this.clone();for(D.negative=0;!D.isZero();){var $=D.modrn(v).toString(c);D=D.idivn(v),D.isZero()?g=$+g:g=y[d-$.length]+$+g}for(this.isZero()&&(g="0"+g);g.length%h!==0;)g="0"+g;return this.negative!==0&&(g="-"+g),g}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var c=this.words[0];return this.length===2?c+=this.words[1]*67108864:this.length===3&&this.words[2]===1?c+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-c:c},a.prototype.toJSON=function(){return this.toString(16,2)},o&&(a.prototype.toBuffer=function(c,h){return this.toArrayLike(o,c,h)}),a.prototype.toArray=function(c,h){return this.toArrayLike(Array,c,h)};var A=function(c,h){return c.allocUnsafe?c.allocUnsafe(h):new c(h)};a.prototype.toArrayLike=function(c,h,g){this._strip();var _=this.byteLength(),w=g||Math.max(1,_);i(_<=w,"byte array longer than desired length"),i(w>0,"Requested array length <= 0");var C=A(c,w),M=h==="le"?"LE":"BE";return this["_toArrayLike"+M](C,_),C},a.prototype._toArrayLikeLE=function(c,h){for(var g=0,_=0,w=0,C=0;w<this.length;w++){var M=this.words[w]<<C|_;c[g++]=M&255,g<c.length&&(c[g++]=M>>8&255),g<c.length&&(c[g++]=M>>16&255),C===6?(g<c.length&&(c[g++]=M>>24&255),_=0,C=0):(_=M>>>24,C+=2)}if(g<c.length)for(c[g++]=_;g<c.length;)c[g++]=0},a.prototype._toArrayLikeBE=function(c,h){for(var g=c.length-1,_=0,w=0,C=0;w<this.length;w++){var M=this.words[w]<<C|_;c[g--]=M&255,g>=0&&(c[g--]=M>>8&255),g>=0&&(c[g--]=M>>16&255),C===6?(g>=0&&(c[g--]=M>>24&255),_=0,C=0):(_=M>>>24,C+=2)}if(g>=0)for(c[g--]=_;g>=0;)c[g--]=0},Math.clz32?a.prototype._countBits=function(c){return 32-Math.clz32(c)}:a.prototype._countBits=function(c){var h=c,g=0;return h>=4096&&(g+=13,h>>>=13),h>=64&&(g+=7,h>>>=7),h>=8&&(g+=4,h>>>=4),h>=2&&(g+=2,h>>>=2),g+h},a.prototype._zeroBits=function(c){if(c===0)return 26;var h=c,g=0;return!(h&8191)&&(g+=13,h>>>=13),!(h&127)&&(g+=7,h>>>=7),!(h&15)&&(g+=4,h>>>=4),!(h&3)&&(g+=2,h>>>=2),!(h&1)&&g++,g},a.prototype.bitLength=function(){var c=this.words[this.length-1],h=this._countBits(c);return(this.length-1)*26+h};function E(c){for(var h=new Array(c.bitLength()),g=0;g<h.length;g++){var _=g/26|0,w=g%26;h[g]=c.words[_]>>>w&1}return h}a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var c=0,h=0;h<this.length;h++){var g=this._zeroBits(this.words[h]);if(c+=g,g!==26)break}return c},a.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},a.prototype.toTwos=function(c){return this.negative!==0?this.abs().inotn(c).iaddn(1):this.clone()},a.prototype.fromTwos=function(c){return this.testn(c-1)?this.notn(c).iaddn(1).ineg():this.clone()},a.prototype.isNeg=function(){return this.negative!==0},a.prototype.neg=function(){return this.clone().ineg()},a.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},a.prototype.iuor=function(c){for(;this.length<c.length;)this.words[this.length++]=0;for(var h=0;h<c.length;h++)this.words[h]=this.words[h]|c.words[h];return this._strip()},a.prototype.ior=function(c){return i((this.negative|c.negative)===0),this.iuor(c)},a.prototype.or=function(c){return this.length>c.length?this.clone().ior(c):c.clone().ior(this)},a.prototype.uor=function(c){return this.length>c.length?this.clone().iuor(c):c.clone().iuor(this)},a.prototype.iuand=function(c){var h;this.length>c.length?h=c:h=this;for(var g=0;g<h.length;g++)this.words[g]=this.words[g]&c.words[g];return this.length=h.length,this._strip()},a.prototype.iand=function(c){return i((this.negative|c.negative)===0),this.iuand(c)},a.prototype.and=function(c){return this.length>c.length?this.clone().iand(c):c.clone().iand(this)},a.prototype.uand=function(c){return this.length>c.length?this.clone().iuand(c):c.clone().iuand(this)},a.prototype.iuxor=function(c){var h,g;this.length>c.length?(h=this,g=c):(h=c,g=this);for(var _=0;_<g.length;_++)this.words[_]=h.words[_]^g.words[_];if(this!==h)for(;_<h.length;_++)this.words[_]=h.words[_];return this.length=h.length,this._strip()},a.prototype.ixor=function(c){return i((this.negative|c.negative)===0),this.iuxor(c)},a.prototype.xor=function(c){return this.length>c.length?this.clone().ixor(c):c.clone().ixor(this)},a.prototype.uxor=function(c){return this.length>c.length?this.clone().iuxor(c):c.clone().iuxor(this)},a.prototype.inotn=function(c){i(typeof c=="number"&&c>=0);var h=Math.ceil(c/26)|0,g=c%26;this._expand(h),g>0&&h--;for(var _=0;_<h;_++)this.words[_]=~this.words[_]&67108863;return g>0&&(this.words[_]=~this.words[_]&67108863>>26-g),this._strip()},a.prototype.notn=function(c){return this.clone().inotn(c)},a.prototype.setn=function(c,h){i(typeof c=="number"&&c>=0);var g=c/26|0,_=c%26;return this._expand(g+1),h?this.words[g]=this.words[g]|1<<_:this.words[g]=this.words[g]&~(1<<_),this._strip()},a.prototype.iadd=function(c){var h;if(this.negative!==0&&c.negative===0)return this.negative=0,h=this.isub(c),this.negative^=1,this._normSign();if(this.negative===0&&c.negative!==0)return c.negative=0,h=this.isub(c),c.negative=1,h._normSign();var g,_;this.length>c.length?(g=this,_=c):(g=c,_=this);for(var w=0,C=0;C<_.length;C++)h=(g.words[C]|0)+(_.words[C]|0)+w,this.words[C]=h&67108863,w=h>>>26;for(;w!==0&&C<g.length;C++)h=(g.words[C]|0)+w,this.words[C]=h&67108863,w=h>>>26;if(this.length=g.length,w!==0)this.words[this.length]=w,this.length++;else if(g!==this)for(;C<g.length;C++)this.words[C]=g.words[C];return this},a.prototype.add=function(c){var h;return c.negative!==0&&this.negative===0?(c.negative=0,h=this.sub(c),c.negative^=1,h):c.negative===0&&this.negative!==0?(this.negative=0,h=c.sub(this),this.negative=1,h):this.length>c.length?this.clone().iadd(c):c.clone().iadd(this)},a.prototype.isub=function(c){if(c.negative!==0){c.negative=0;var h=this.iadd(c);return c.negative=1,h._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(c),this.negative=1,this._normSign();var g=this.cmp(c);if(g===0)return this.negative=0,this.length=1,this.words[0]=0,this;var _,w;g>0?(_=this,w=c):(_=c,w=this);for(var C=0,M=0;M<w.length;M++)h=(_.words[M]|0)-(w.words[M]|0)+C,C=h>>26,this.words[M]=h&67108863;for(;C!==0&&M<_.length;M++)h=(_.words[M]|0)+C,C=h>>26,this.words[M]=h&67108863;if(C===0&&M<_.length&&_!==this)for(;M<_.length;M++)this.words[M]=_.words[M];return this.length=Math.max(this.length,M),_!==this&&(this.negative=1),this._strip()},a.prototype.sub=function(c){return this.clone().isub(c)};function q(c,h,g){g.negative=h.negative^c.negative;var _=c.length+h.length|0;g.length=_,_=_-1|0;var w=c.words[0]|0,C=h.words[0]|0,M=w*C,b=M&67108863,d=M/67108864|0;g.words[0]=b;for(var v=1;v<_;v++){for(var D=d>>>26,$=d&67108863,z=Math.min(v,h.length-1),K=Math.max(0,v-c.length+1);K<=z;K++){var te=v-K|0;w=c.words[te]|0,C=h.words[K]|0,M=w*C+$,D+=M/67108864|0,$=M&67108863}g.words[v]=$|0,d=D|0}return d!==0?g.words[v]=d|0:g.length--,g._strip()}var x=function(c,h,g){var _=c.words,w=h.words,C=g.words,M=0,b,d,v,D=_[0]|0,$=D&8191,z=D>>>13,K=_[1]|0,te=K&8191,he=K>>>13,Gt=_[2]|0,pe=Gt&8191,_e=Gt>>>13,Ni=_[3]|0,ve=Ni&8191,ke=Ni>>>13,Ui=_[4]|0,Ce=Ui&8191,Te=Ui>>>13,Fi=_[5]|0,Se=Fi&8191,Me=Fi>>>13,Li=_[6]|0,Ae=Li&8191,Oe=Li>>>13,Vi=_[7]|0,Ee=Vi&8191,je=Vi>>>13,zi=_[8]|0,xe=zi&8191,Ie=zi>>>13,Gi=_[9]|0,Pe=Gi&8191,Re=Gi>>>13,Zi=w[0]|0,qe=Zi&8191,Be=Zi>>>13,Qi=w[1]|0,De=Qi&8191,$e=Qi>>>13,Wi=w[2]|0,Ne=Wi&8191,Ue=Wi>>>13,Hi=w[3]|0,Fe=Hi&8191,Le=Hi>>>13,Ki=w[4]|0,Ve=Ki&8191,ze=Ki>>>13,Xi=w[5]|0,Ge=Xi&8191,Ze=Xi>>>13,Ji=w[6]|0,Qe=Ji&8191,We=Ji>>>13,Yi=w[7]|0,He=Yi&8191,Ke=Yi>>>13,es=w[8]|0,Xe=es&8191,Je=es>>>13,ts=w[9]|0,Ye=ts&8191,et=ts>>>13;g.negative=c.negative^h.negative,g.length=19,b=Math.imul($,qe),d=Math.imul($,Be),d=d+Math.imul(z,qe)|0,v=Math.imul(z,Be);var qn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(qn>>>26)|0,qn&=67108863,b=Math.imul(te,qe),d=Math.imul(te,Be),d=d+Math.imul(he,qe)|0,v=Math.imul(he,Be),b=b+Math.imul($,De)|0,d=d+Math.imul($,$e)|0,d=d+Math.imul(z,De)|0,v=v+Math.imul(z,$e)|0;var Bn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Bn>>>26)|0,Bn&=67108863,b=Math.imul(pe,qe),d=Math.imul(pe,Be),d=d+Math.imul(_e,qe)|0,v=Math.imul(_e,Be),b=b+Math.imul(te,De)|0,d=d+Math.imul(te,$e)|0,d=d+Math.imul(he,De)|0,v=v+Math.imul(he,$e)|0,b=b+Math.imul($,Ne)|0,d=d+Math.imul($,Ue)|0,d=d+Math.imul(z,Ne)|0,v=v+Math.imul(z,Ue)|0;var Dn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Dn>>>26)|0,Dn&=67108863,b=Math.imul(ve,qe),d=Math.imul(ve,Be),d=d+Math.imul(ke,qe)|0,v=Math.imul(ke,Be),b=b+Math.imul(pe,De)|0,d=d+Math.imul(pe,$e)|0,d=d+Math.imul(_e,De)|0,v=v+Math.imul(_e,$e)|0,b=b+Math.imul(te,Ne)|0,d=d+Math.imul(te,Ue)|0,d=d+Math.imul(he,Ne)|0,v=v+Math.imul(he,Ue)|0,b=b+Math.imul($,Fe)|0,d=d+Math.imul($,Le)|0,d=d+Math.imul(z,Fe)|0,v=v+Math.imul(z,Le)|0;var $n=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+($n>>>26)|0,$n&=67108863,b=Math.imul(Ce,qe),d=Math.imul(Ce,Be),d=d+Math.imul(Te,qe)|0,v=Math.imul(Te,Be),b=b+Math.imul(ve,De)|0,d=d+Math.imul(ve,$e)|0,d=d+Math.imul(ke,De)|0,v=v+Math.imul(ke,$e)|0,b=b+Math.imul(pe,Ne)|0,d=d+Math.imul(pe,Ue)|0,d=d+Math.imul(_e,Ne)|0,v=v+Math.imul(_e,Ue)|0,b=b+Math.imul(te,Fe)|0,d=d+Math.imul(te,Le)|0,d=d+Math.imul(he,Fe)|0,v=v+Math.imul(he,Le)|0,b=b+Math.imul($,Ve)|0,d=d+Math.imul($,ze)|0,d=d+Math.imul(z,Ve)|0,v=v+Math.imul(z,ze)|0;var Nn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Nn>>>26)|0,Nn&=67108863,b=Math.imul(Se,qe),d=Math.imul(Se,Be),d=d+Math.imul(Me,qe)|0,v=Math.imul(Me,Be),b=b+Math.imul(Ce,De)|0,d=d+Math.imul(Ce,$e)|0,d=d+Math.imul(Te,De)|0,v=v+Math.imul(Te,$e)|0,b=b+Math.imul(ve,Ne)|0,d=d+Math.imul(ve,Ue)|0,d=d+Math.imul(ke,Ne)|0,v=v+Math.imul(ke,Ue)|0,b=b+Math.imul(pe,Fe)|0,d=d+Math.imul(pe,Le)|0,d=d+Math.imul(_e,Fe)|0,v=v+Math.imul(_e,Le)|0,b=b+Math.imul(te,Ve)|0,d=d+Math.imul(te,ze)|0,d=d+Math.imul(he,Ve)|0,v=v+Math.imul(he,ze)|0,b=b+Math.imul($,Ge)|0,d=d+Math.imul($,Ze)|0,d=d+Math.imul(z,Ge)|0,v=v+Math.imul(z,Ze)|0;var Un=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Un>>>26)|0,Un&=67108863,b=Math.imul(Ae,qe),d=Math.imul(Ae,Be),d=d+Math.imul(Oe,qe)|0,v=Math.imul(Oe,Be),b=b+Math.imul(Se,De)|0,d=d+Math.imul(Se,$e)|0,d=d+Math.imul(Me,De)|0,v=v+Math.imul(Me,$e)|0,b=b+Math.imul(Ce,Ne)|0,d=d+Math.imul(Ce,Ue)|0,d=d+Math.imul(Te,Ne)|0,v=v+Math.imul(Te,Ue)|0,b=b+Math.imul(ve,Fe)|0,d=d+Math.imul(ve,Le)|0,d=d+Math.imul(ke,Fe)|0,v=v+Math.imul(ke,Le)|0,b=b+Math.imul(pe,Ve)|0,d=d+Math.imul(pe,ze)|0,d=d+Math.imul(_e,Ve)|0,v=v+Math.imul(_e,ze)|0,b=b+Math.imul(te,Ge)|0,d=d+Math.imul(te,Ze)|0,d=d+Math.imul(he,Ge)|0,v=v+Math.imul(he,Ze)|0,b=b+Math.imul($,Qe)|0,d=d+Math.imul($,We)|0,d=d+Math.imul(z,Qe)|0,v=v+Math.imul(z,We)|0;var Fn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Fn>>>26)|0,Fn&=67108863,b=Math.imul(Ee,qe),d=Math.imul(Ee,Be),d=d+Math.imul(je,qe)|0,v=Math.imul(je,Be),b=b+Math.imul(Ae,De)|0,d=d+Math.imul(Ae,$e)|0,d=d+Math.imul(Oe,De)|0,v=v+Math.imul(Oe,$e)|0,b=b+Math.imul(Se,Ne)|0,d=d+Math.imul(Se,Ue)|0,d=d+Math.imul(Me,Ne)|0,v=v+Math.imul(Me,Ue)|0,b=b+Math.imul(Ce,Fe)|0,d=d+Math.imul(Ce,Le)|0,d=d+Math.imul(Te,Fe)|0,v=v+Math.imul(Te,Le)|0,b=b+Math.imul(ve,Ve)|0,d=d+Math.imul(ve,ze)|0,d=d+Math.imul(ke,Ve)|0,v=v+Math.imul(ke,ze)|0,b=b+Math.imul(pe,Ge)|0,d=d+Math.imul(pe,Ze)|0,d=d+Math.imul(_e,Ge)|0,v=v+Math.imul(_e,Ze)|0,b=b+Math.imul(te,Qe)|0,d=d+Math.imul(te,We)|0,d=d+Math.imul(he,Qe)|0,v=v+Math.imul(he,We)|0,b=b+Math.imul($,He)|0,d=d+Math.imul($,Ke)|0,d=d+Math.imul(z,He)|0,v=v+Math.imul(z,Ke)|0;var Ln=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Ln>>>26)|0,Ln&=67108863,b=Math.imul(xe,qe),d=Math.imul(xe,Be),d=d+Math.imul(Ie,qe)|0,v=Math.imul(Ie,Be),b=b+Math.imul(Ee,De)|0,d=d+Math.imul(Ee,$e)|0,d=d+Math.imul(je,De)|0,v=v+Math.imul(je,$e)|0,b=b+Math.imul(Ae,Ne)|0,d=d+Math.imul(Ae,Ue)|0,d=d+Math.imul(Oe,Ne)|0,v=v+Math.imul(Oe,Ue)|0,b=b+Math.imul(Se,Fe)|0,d=d+Math.imul(Se,Le)|0,d=d+Math.imul(Me,Fe)|0,v=v+Math.imul(Me,Le)|0,b=b+Math.imul(Ce,Ve)|0,d=d+Math.imul(Ce,ze)|0,d=d+Math.imul(Te,Ve)|0,v=v+Math.imul(Te,ze)|0,b=b+Math.imul(ve,Ge)|0,d=d+Math.imul(ve,Ze)|0,d=d+Math.imul(ke,Ge)|0,v=v+Math.imul(ke,Ze)|0,b=b+Math.imul(pe,Qe)|0,d=d+Math.imul(pe,We)|0,d=d+Math.imul(_e,Qe)|0,v=v+Math.imul(_e,We)|0,b=b+Math.imul(te,He)|0,d=d+Math.imul(te,Ke)|0,d=d+Math.imul(he,He)|0,v=v+Math.imul(he,Ke)|0,b=b+Math.imul($,Xe)|0,d=d+Math.imul($,Je)|0,d=d+Math.imul(z,Xe)|0,v=v+Math.imul(z,Je)|0;var Vn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Vn>>>26)|0,Vn&=67108863,b=Math.imul(Pe,qe),d=Math.imul(Pe,Be),d=d+Math.imul(Re,qe)|0,v=Math.imul(Re,Be),b=b+Math.imul(xe,De)|0,d=d+Math.imul(xe,$e)|0,d=d+Math.imul(Ie,De)|0,v=v+Math.imul(Ie,$e)|0,b=b+Math.imul(Ee,Ne)|0,d=d+Math.imul(Ee,Ue)|0,d=d+Math.imul(je,Ne)|0,v=v+Math.imul(je,Ue)|0,b=b+Math.imul(Ae,Fe)|0,d=d+Math.imul(Ae,Le)|0,d=d+Math.imul(Oe,Fe)|0,v=v+Math.imul(Oe,Le)|0,b=b+Math.imul(Se,Ve)|0,d=d+Math.imul(Se,ze)|0,d=d+Math.imul(Me,Ve)|0,v=v+Math.imul(Me,ze)|0,b=b+Math.imul(Ce,Ge)|0,d=d+Math.imul(Ce,Ze)|0,d=d+Math.imul(Te,Ge)|0,v=v+Math.imul(Te,Ze)|0,b=b+Math.imul(ve,Qe)|0,d=d+Math.imul(ve,We)|0,d=d+Math.imul(ke,Qe)|0,v=v+Math.imul(ke,We)|0,b=b+Math.imul(pe,He)|0,d=d+Math.imul(pe,Ke)|0,d=d+Math.imul(_e,He)|0,v=v+Math.imul(_e,Ke)|0,b=b+Math.imul(te,Xe)|0,d=d+Math.imul(te,Je)|0,d=d+Math.imul(he,Xe)|0,v=v+Math.imul(he,Je)|0,b=b+Math.imul($,Ye)|0,d=d+Math.imul($,et)|0,d=d+Math.imul(z,Ye)|0,v=v+Math.imul(z,et)|0;var zn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(zn>>>26)|0,zn&=67108863,b=Math.imul(Pe,De),d=Math.imul(Pe,$e),d=d+Math.imul(Re,De)|0,v=Math.imul(Re,$e),b=b+Math.imul(xe,Ne)|0,d=d+Math.imul(xe,Ue)|0,d=d+Math.imul(Ie,Ne)|0,v=v+Math.imul(Ie,Ue)|0,b=b+Math.imul(Ee,Fe)|0,d=d+Math.imul(Ee,Le)|0,d=d+Math.imul(je,Fe)|0,v=v+Math.imul(je,Le)|0,b=b+Math.imul(Ae,Ve)|0,d=d+Math.imul(Ae,ze)|0,d=d+Math.imul(Oe,Ve)|0,v=v+Math.imul(Oe,ze)|0,b=b+Math.imul(Se,Ge)|0,d=d+Math.imul(Se,Ze)|0,d=d+Math.imul(Me,Ge)|0,v=v+Math.imul(Me,Ze)|0,b=b+Math.imul(Ce,Qe)|0,d=d+Math.imul(Ce,We)|0,d=d+Math.imul(Te,Qe)|0,v=v+Math.imul(Te,We)|0,b=b+Math.imul(ve,He)|0,d=d+Math.imul(ve,Ke)|0,d=d+Math.imul(ke,He)|0,v=v+Math.imul(ke,Ke)|0,b=b+Math.imul(pe,Xe)|0,d=d+Math.imul(pe,Je)|0,d=d+Math.imul(_e,Xe)|0,v=v+Math.imul(_e,Je)|0,b=b+Math.imul(te,Ye)|0,d=d+Math.imul(te,et)|0,d=d+Math.imul(he,Ye)|0,v=v+Math.imul(he,et)|0;var Gn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Gn>>>26)|0,Gn&=67108863,b=Math.imul(Pe,Ne),d=Math.imul(Pe,Ue),d=d+Math.imul(Re,Ne)|0,v=Math.imul(Re,Ue),b=b+Math.imul(xe,Fe)|0,d=d+Math.imul(xe,Le)|0,d=d+Math.imul(Ie,Fe)|0,v=v+Math.imul(Ie,Le)|0,b=b+Math.imul(Ee,Ve)|0,d=d+Math.imul(Ee,ze)|0,d=d+Math.imul(je,Ve)|0,v=v+Math.imul(je,ze)|0,b=b+Math.imul(Ae,Ge)|0,d=d+Math.imul(Ae,Ze)|0,d=d+Math.imul(Oe,Ge)|0,v=v+Math.imul(Oe,Ze)|0,b=b+Math.imul(Se,Qe)|0,d=d+Math.imul(Se,We)|0,d=d+Math.imul(Me,Qe)|0,v=v+Math.imul(Me,We)|0,b=b+Math.imul(Ce,He)|0,d=d+Math.imul(Ce,Ke)|0,d=d+Math.imul(Te,He)|0,v=v+Math.imul(Te,Ke)|0,b=b+Math.imul(ve,Xe)|0,d=d+Math.imul(ve,Je)|0,d=d+Math.imul(ke,Xe)|0,v=v+Math.imul(ke,Je)|0,b=b+Math.imul(pe,Ye)|0,d=d+Math.imul(pe,et)|0,d=d+Math.imul(_e,Ye)|0,v=v+Math.imul(_e,et)|0;var Zn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Zn>>>26)|0,Zn&=67108863,b=Math.imul(Pe,Fe),d=Math.imul(Pe,Le),d=d+Math.imul(Re,Fe)|0,v=Math.imul(Re,Le),b=b+Math.imul(xe,Ve)|0,d=d+Math.imul(xe,ze)|0,d=d+Math.imul(Ie,Ve)|0,v=v+Math.imul(Ie,ze)|0,b=b+Math.imul(Ee,Ge)|0,d=d+Math.imul(Ee,Ze)|0,d=d+Math.imul(je,Ge)|0,v=v+Math.imul(je,Ze)|0,b=b+Math.imul(Ae,Qe)|0,d=d+Math.imul(Ae,We)|0,d=d+Math.imul(Oe,Qe)|0,v=v+Math.imul(Oe,We)|0,b=b+Math.imul(Se,He)|0,d=d+Math.imul(Se,Ke)|0,d=d+Math.imul(Me,He)|0,v=v+Math.imul(Me,Ke)|0,b=b+Math.imul(Ce,Xe)|0,d=d+Math.imul(Ce,Je)|0,d=d+Math.imul(Te,Xe)|0,v=v+Math.imul(Te,Je)|0,b=b+Math.imul(ve,Ye)|0,d=d+Math.imul(ve,et)|0,d=d+Math.imul(ke,Ye)|0,v=v+Math.imul(ke,et)|0;var Qn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Qn>>>26)|0,Qn&=67108863,b=Math.imul(Pe,Ve),d=Math.imul(Pe,ze),d=d+Math.imul(Re,Ve)|0,v=Math.imul(Re,ze),b=b+Math.imul(xe,Ge)|0,d=d+Math.imul(xe,Ze)|0,d=d+Math.imul(Ie,Ge)|0,v=v+Math.imul(Ie,Ze)|0,b=b+Math.imul(Ee,Qe)|0,d=d+Math.imul(Ee,We)|0,d=d+Math.imul(je,Qe)|0,v=v+Math.imul(je,We)|0,b=b+Math.imul(Ae,He)|0,d=d+Math.imul(Ae,Ke)|0,d=d+Math.imul(Oe,He)|0,v=v+Math.imul(Oe,Ke)|0,b=b+Math.imul(Se,Xe)|0,d=d+Math.imul(Se,Je)|0,d=d+Math.imul(Me,Xe)|0,v=v+Math.imul(Me,Je)|0,b=b+Math.imul(Ce,Ye)|0,d=d+Math.imul(Ce,et)|0,d=d+Math.imul(Te,Ye)|0,v=v+Math.imul(Te,et)|0;var Wn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Wn>>>26)|0,Wn&=67108863,b=Math.imul(Pe,Ge),d=Math.imul(Pe,Ze),d=d+Math.imul(Re,Ge)|0,v=Math.imul(Re,Ze),b=b+Math.imul(xe,Qe)|0,d=d+Math.imul(xe,We)|0,d=d+Math.imul(Ie,Qe)|0,v=v+Math.imul(Ie,We)|0,b=b+Math.imul(Ee,He)|0,d=d+Math.imul(Ee,Ke)|0,d=d+Math.imul(je,He)|0,v=v+Math.imul(je,Ke)|0,b=b+Math.imul(Ae,Xe)|0,d=d+Math.imul(Ae,Je)|0,d=d+Math.imul(Oe,Xe)|0,v=v+Math.imul(Oe,Je)|0,b=b+Math.imul(Se,Ye)|0,d=d+Math.imul(Se,et)|0,d=d+Math.imul(Me,Ye)|0,v=v+Math.imul(Me,et)|0;var Hn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Hn>>>26)|0,Hn&=67108863,b=Math.imul(Pe,Qe),d=Math.imul(Pe,We),d=d+Math.imul(Re,Qe)|0,v=Math.imul(Re,We),b=b+Math.imul(xe,He)|0,d=d+Math.imul(xe,Ke)|0,d=d+Math.imul(Ie,He)|0,v=v+Math.imul(Ie,Ke)|0,b=b+Math.imul(Ee,Xe)|0,d=d+Math.imul(Ee,Je)|0,d=d+Math.imul(je,Xe)|0,v=v+Math.imul(je,Je)|0,b=b+Math.imul(Ae,Ye)|0,d=d+Math.imul(Ae,et)|0,d=d+Math.imul(Oe,Ye)|0,v=v+Math.imul(Oe,et)|0;var Kn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Kn>>>26)|0,Kn&=67108863,b=Math.imul(Pe,He),d=Math.imul(Pe,Ke),d=d+Math.imul(Re,He)|0,v=Math.imul(Re,Ke),b=b+Math.imul(xe,Xe)|0,d=d+Math.imul(xe,Je)|0,d=d+Math.imul(Ie,Xe)|0,v=v+Math.imul(Ie,Je)|0,b=b+Math.imul(Ee,Ye)|0,d=d+Math.imul(Ee,et)|0,d=d+Math.imul(je,Ye)|0,v=v+Math.imul(je,et)|0;var Xn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Xn>>>26)|0,Xn&=67108863,b=Math.imul(Pe,Xe),d=Math.imul(Pe,Je),d=d+Math.imul(Re,Xe)|0,v=Math.imul(Re,Je),b=b+Math.imul(xe,Ye)|0,d=d+Math.imul(xe,et)|0,d=d+Math.imul(Ie,Ye)|0,v=v+Math.imul(Ie,et)|0;var Jn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Jn>>>26)|0,Jn&=67108863,b=Math.imul(Pe,Ye),d=Math.imul(Pe,et),d=d+Math.imul(Re,Ye)|0,v=Math.imul(Re,et);var Yn=(M+b|0)+((d&8191)<<13)|0;return M=(v+(d>>>13)|0)+(Yn>>>26)|0,Yn&=67108863,C[0]=qn,C[1]=Bn,C[2]=Dn,C[3]=$n,C[4]=Nn,C[5]=Un,C[6]=Fn,C[7]=Ln,C[8]=Vn,C[9]=zn,C[10]=Gn,C[11]=Zn,C[12]=Qn,C[13]=Wn,C[14]=Hn,C[15]=Kn,C[16]=Xn,C[17]=Jn,C[18]=Yn,M!==0&&(C[19]=M,g.length++),g};Math.imul||(x=q);function U(c,h,g){g.negative=h.negative^c.negative,g.length=c.length+h.length;for(var _=0,w=0,C=0;C<g.length-1;C++){var M=w;w=0;for(var b=_&67108863,d=Math.min(C,h.length-1),v=Math.max(0,C-c.length+1);v<=d;v++){var D=C-v,$=c.words[D]|0,z=h.words[v]|0,K=$*z,te=K&67108863;M=M+(K/67108864|0)|0,te=te+b|0,b=te&67108863,M=M+(te>>>26)|0,w+=M>>>26,M&=67108863}g.words[C]=b,_=M,M=w}return _!==0?g.words[C]=_:g.length--,g._strip()}function ee(c,h,g){return U(c,h,g)}a.prototype.mulTo=function(c,h){var g,_=this.length+c.length;return this.length===10&&c.length===10?g=x(this,c,h):_<63?g=q(this,c,h):_<1024?g=U(this,c,h):g=ee(this,c,h),g};function N(c,h){this.x=c,this.y=h}N.prototype.makeRBT=function(c){for(var h=new Array(c),g=a.prototype._countBits(c)-1,_=0;_<c;_++)h[_]=this.revBin(_,g,c);return h},N.prototype.revBin=function(c,h,g){if(c===0||c===g-1)return c;for(var _=0,w=0;w<h;w++)_|=(c&1)<<h-w-1,c>>=1;return _},N.prototype.permute=function(c,h,g,_,w,C){for(var M=0;M<C;M++)_[M]=h[c[M]],w[M]=g[c[M]]},N.prototype.transform=function(c,h,g,_,w,C){this.permute(C,c,h,g,_,w);for(var M=1;M<w;M<<=1)for(var b=M<<1,d=Math.cos(2*Math.PI/b),v=Math.sin(2*Math.PI/b),D=0;D<w;D+=b)for(var $=d,z=v,K=0;K<M;K++){var te=g[D+K],he=_[D+K],Gt=g[D+K+M],pe=_[D+K+M],_e=$*Gt-z*pe;pe=$*pe+z*Gt,Gt=_e,g[D+K]=te+Gt,_[D+K]=he+pe,g[D+K+M]=te-Gt,_[D+K+M]=he-pe,K!==b&&(_e=d*$-v*z,z=d*z+v*$,$=_e)}},N.prototype.guessLen13b=function(c,h){var g=Math.max(h,c)|1,_=g&1,w=0;for(g=g/2|0;g;g=g>>>1)w++;return 1<<w+1+_},N.prototype.conjugate=function(c,h,g){if(!(g<=1))for(var _=0;_<g/2;_++){var w=c[_];c[_]=c[g-_-1],c[g-_-1]=w,w=h[_],h[_]=-h[g-_-1],h[g-_-1]=-w}},N.prototype.normalize13b=function(c,h){for(var g=0,_=0;_<h/2;_++){var w=Math.round(c[2*_+1]/h)*8192+Math.round(c[2*_]/h)+g;c[_]=w&67108863,w<67108864?g=0:g=w/67108864|0}return c},N.prototype.convert13b=function(c,h,g,_){for(var w=0,C=0;C<h;C++)w=w+(c[C]|0),g[2*C]=w&8191,w=w>>>13,g[2*C+1]=w&8191,w=w>>>13;for(C=2*h;C<_;++C)g[C]=0;i(w===0),i((w&-8192)===0)},N.prototype.stub=function(c){for(var h=new Array(c),g=0;g<c;g++)h[g]=0;return h},N.prototype.mulp=function(c,h,g){var _=2*this.guessLen13b(c.length,h.length),w=this.makeRBT(_),C=this.stub(_),M=new Array(_),b=new Array(_),d=new Array(_),v=new Array(_),D=new Array(_),$=new Array(_),z=g.words;z.length=_,this.convert13b(c.words,c.length,M,_),this.convert13b(h.words,h.length,v,_),this.transform(M,C,b,d,_,w),this.transform(v,C,D,$,_,w);for(var K=0;K<_;K++){var te=b[K]*D[K]-d[K]*$[K];d[K]=b[K]*$[K]+d[K]*D[K],b[K]=te}return this.conjugate(b,d,_),this.transform(b,d,z,C,_,w),this.conjugate(z,C,_),this.normalize13b(z,_),g.negative=c.negative^h.negative,g.length=c.length+h.length,g._strip()},a.prototype.mul=function(c){var h=new a(null);return h.words=new Array(this.length+c.length),this.mulTo(c,h)},a.prototype.mulf=function(c){var h=new a(null);return h.words=new Array(this.length+c.length),ee(this,c,h)},a.prototype.imul=function(c){return this.clone().mulTo(c,this)},a.prototype.imuln=function(c){var h=c<0;h&&(c=-c),i(typeof c=="number"),i(c<67108864);for(var g=0,_=0;_<this.length;_++){var w=(this.words[_]|0)*c,C=(w&67108863)+(g&67108863);g>>=26,g+=w/67108864|0,g+=C>>>26,this.words[_]=C&67108863}return g!==0&&(this.words[_]=g,this.length++),this.length=c===0?1:this.length,h?this.ineg():this},a.prototype.muln=function(c){return this.clone().imuln(c)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(c){var h=E(c);if(h.length===0)return new a(1);for(var g=this,_=0;_<h.length&&h[_]===0;_++,g=g.sqr());if(++_<h.length)for(var w=g.sqr();_<h.length;_++,w=w.sqr())h[_]!==0&&(g=g.mul(w));return g},a.prototype.iushln=function(c){i(typeof c=="number"&&c>=0);var h=c%26,g=(c-h)/26,_=67108863>>>26-h<<26-h,w;if(h!==0){var C=0;for(w=0;w<this.length;w++){var M=this.words[w]&_,b=(this.words[w]|0)-M<<h;this.words[w]=b|C,C=M>>>26-h}C&&(this.words[w]=C,this.length++)}if(g!==0){for(w=this.length-1;w>=0;w--)this.words[w+g]=this.words[w];for(w=0;w<g;w++)this.words[w]=0;this.length+=g}return this._strip()},a.prototype.ishln=function(c){return i(this.negative===0),this.iushln(c)},a.prototype.iushrn=function(c,h,g){i(typeof c=="number"&&c>=0);var _;h?_=(h-h%26)/26:_=0;var w=c%26,C=Math.min((c-w)/26,this.length),M=67108863^67108863>>>w<<w,b=g;if(_-=C,_=Math.max(0,_),b){for(var d=0;d<C;d++)b.words[d]=this.words[d];b.length=C}if(C!==0)if(this.length>C)for(this.length-=C,d=0;d<this.length;d++)this.words[d]=this.words[d+C];else this.words[0]=0,this.length=1;var v=0;for(d=this.length-1;d>=0&&(v!==0||d>=_);d--){var D=this.words[d]|0;this.words[d]=v<<26-w|D>>>w,v=D&M}return b&&v!==0&&(b.words[b.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},a.prototype.ishrn=function(c,h,g){return i(this.negative===0),this.iushrn(c,h,g)},a.prototype.shln=function(c){return this.clone().ishln(c)},a.prototype.ushln=function(c){return this.clone().iushln(c)},a.prototype.shrn=function(c){return this.clone().ishrn(c)},a.prototype.ushrn=function(c){return this.clone().iushrn(c)},a.prototype.testn=function(c){i(typeof c=="number"&&c>=0);var h=c%26,g=(c-h)/26,_=1<<h;if(this.length<=g)return!1;var w=this.words[g];return!!(w&_)},a.prototype.imaskn=function(c){i(typeof c=="number"&&c>=0);var h=c%26,g=(c-h)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=g)return this;if(h!==0&&g++,this.length=Math.min(g,this.length),h!==0){var _=67108863^67108863>>>h<<h;this.words[this.length-1]&=_}return this.length===0&&(this.words[0]=0,this.length=1),this._strip()},a.prototype.maskn=function(c){return this.clone().imaskn(c)},a.prototype.iaddn=function(c){return i(typeof c=="number"),i(c<67108864),c<0?this.isubn(-c):this.negative!==0?this.length===1&&(this.words[0]|0)<=c?(this.words[0]=c-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(c),this.negative=1,this):this._iaddn(c)},a.prototype._iaddn=function(c){this.words[0]+=c;for(var h=0;h<this.length&&this.words[h]>=67108864;h++)this.words[h]-=67108864,h===this.length-1?this.words[h+1]=1:this.words[h+1]++;return this.length=Math.max(this.length,h+1),this},a.prototype.isubn=function(c){if(i(typeof c=="number"),i(c<67108864),c<0)return this.iaddn(-c);if(this.negative!==0)return this.negative=0,this.iaddn(c),this.negative=1,this;if(this.words[0]-=c,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var h=0;h<this.length&&this.words[h]<0;h++)this.words[h]+=67108864,this.words[h+1]-=1;return this._strip()},a.prototype.addn=function(c){return this.clone().iaddn(c)},a.prototype.subn=function(c){return this.clone().isubn(c)},a.prototype.iabs=function(){return this.negative=0,this},a.prototype.abs=function(){return this.clone().iabs()},a.prototype._ishlnsubmul=function(c,h,g){var _=c.length+g,w;this._expand(_);var C,M=0;for(w=0;w<c.length;w++){C=(this.words[w+g]|0)+M;var b=(c.words[w]|0)*h;C-=b&67108863,M=(C>>26)-(b/67108864|0),this.words[w+g]=C&67108863}for(;w<this.length-g;w++)C=(this.words[w+g]|0)+M,M=C>>26,this.words[w+g]=C&67108863;if(M===0)return this._strip();for(i(M===-1),M=0,w=0;w<this.length;w++)C=-(this.words[w]|0)+M,M=C>>26,this.words[w]=C&67108863;return this.negative=1,this._strip()},a.prototype._wordDiv=function(c,h){var g=this.length-c.length,_=this.clone(),w=c,C=w.words[w.length-1]|0,M=this._countBits(C);g=26-M,g!==0&&(w=w.ushln(g),_.iushln(g),C=w.words[w.length-1]|0);var b=_.length-w.length,d;if(h!=="mod"){d=new a(null),d.length=b+1,d.words=new Array(d.length);for(var v=0;v<d.length;v++)d.words[v]=0}var D=_.clone()._ishlnsubmul(w,1,b);D.negative===0&&(_=D,d&&(d.words[b]=1));for(var $=b-1;$>=0;$--){var z=(_.words[w.length+$]|0)*67108864+(_.words[w.length+$-1]|0);for(z=Math.min(z/C|0,67108863),_._ishlnsubmul(w,z,$);_.negative!==0;)z--,_.negative=0,_._ishlnsubmul(w,1,$),_.isZero()||(_.negative^=1);d&&(d.words[$]=z)}return d&&d._strip(),_._strip(),h!=="div"&&g!==0&&_.iushrn(g),{div:d||null,mod:_}},a.prototype.divmod=function(c,h,g){if(i(!c.isZero()),this.isZero())return{div:new a(0),mod:new a(0)};var _,w,C;return this.negative!==0&&c.negative===0?(C=this.neg().divmod(c,h),h!=="mod"&&(_=C.div.neg()),h!=="div"&&(w=C.mod.neg(),g&&w.negative!==0&&w.iadd(c)),{div:_,mod:w}):this.negative===0&&c.negative!==0?(C=this.divmod(c.neg(),h),h!=="mod"&&(_=C.div.neg()),{div:_,mod:C.mod}):this.negative&c.negative?(C=this.neg().divmod(c.neg(),h),h!=="div"&&(w=C.mod.neg(),g&&w.negative!==0&&w.isub(c)),{div:C.div,mod:w}):c.length>this.length||this.cmp(c)<0?{div:new a(0),mod:this}:c.length===1?h==="div"?{div:this.divn(c.words[0]),mod:null}:h==="mod"?{div:null,mod:new a(this.modrn(c.words[0]))}:{div:this.divn(c.words[0]),mod:new a(this.modrn(c.words[0]))}:this._wordDiv(c,h)},a.prototype.div=function(c){return this.divmod(c,"div",!1).div},a.prototype.mod=function(c){return this.divmod(c,"mod",!1).mod},a.prototype.umod=function(c){return this.divmod(c,"mod",!0).mod},a.prototype.divRound=function(c){var h=this.divmod(c);if(h.mod.isZero())return h.div;var g=h.div.negative!==0?h.mod.isub(c):h.mod,_=c.ushrn(1),w=c.andln(1),C=g.cmp(_);return C<0||w===1&&C===0?h.div:h.div.negative!==0?h.div.isubn(1):h.div.iaddn(1)},a.prototype.modrn=function(c){var h=c<0;h&&(c=-c),i(c<=67108863);for(var g=(1<<26)%c,_=0,w=this.length-1;w>=0;w--)_=(g*_+(this.words[w]|0))%c;return h?-_:_},a.prototype.modn=function(c){return this.modrn(c)},a.prototype.idivn=function(c){var h=c<0;h&&(c=-c),i(c<=67108863);for(var g=0,_=this.length-1;_>=0;_--){var w=(this.words[_]|0)+g*67108864;this.words[_]=w/c|0,g=w%c}return this._strip(),h?this.ineg():this},a.prototype.divn=function(c){return this.clone().idivn(c)},a.prototype.egcd=function(c){i(c.negative===0),i(!c.isZero());var h=this,g=c.clone();h.negative!==0?h=h.umod(c):h=h.clone();for(var _=new a(1),w=new a(0),C=new a(0),M=new a(1),b=0;h.isEven()&&g.isEven();)h.iushrn(1),g.iushrn(1),++b;for(var d=g.clone(),v=h.clone();!h.isZero();){for(var D=0,$=1;!(h.words[0]&$)&&D<26;++D,$<<=1);if(D>0)for(h.iushrn(D);D-- >0;)(_.isOdd()||w.isOdd())&&(_.iadd(d),w.isub(v)),_.iushrn(1),w.iushrn(1);for(var z=0,K=1;!(g.words[0]&K)&&z<26;++z,K<<=1);if(z>0)for(g.iushrn(z);z-- >0;)(C.isOdd()||M.isOdd())&&(C.iadd(d),M.isub(v)),C.iushrn(1),M.iushrn(1);h.cmp(g)>=0?(h.isub(g),_.isub(C),w.isub(M)):(g.isub(h),C.isub(_),M.isub(w))}return{a:C,b:M,gcd:g.iushln(b)}},a.prototype._invmp=function(c){i(c.negative===0),i(!c.isZero());var h=this,g=c.clone();h.negative!==0?h=h.umod(c):h=h.clone();for(var _=new a(1),w=new a(0),C=g.clone();h.cmpn(1)>0&&g.cmpn(1)>0;){for(var M=0,b=1;!(h.words[0]&b)&&M<26;++M,b<<=1);if(M>0)for(h.iushrn(M);M-- >0;)_.isOdd()&&_.iadd(C),_.iushrn(1);for(var d=0,v=1;!(g.words[0]&v)&&d<26;++d,v<<=1);if(d>0)for(g.iushrn(d);d-- >0;)w.isOdd()&&w.iadd(C),w.iushrn(1);h.cmp(g)>=0?(h.isub(g),_.isub(w)):(g.isub(h),w.isub(_))}var D;return h.cmpn(1)===0?D=_:D=w,D.cmpn(0)<0&&D.iadd(c),D},a.prototype.gcd=function(c){if(this.isZero())return c.abs();if(c.isZero())return this.abs();var h=this.clone(),g=c.clone();h.negative=0,g.negative=0;for(var _=0;h.isEven()&&g.isEven();_++)h.iushrn(1),g.iushrn(1);do{for(;h.isEven();)h.iushrn(1);for(;g.isEven();)g.iushrn(1);var w=h.cmp(g);if(w<0){var C=h;h=g,g=C}else if(w===0||g.cmpn(1)===0)break;h.isub(g)}while(!0);return g.iushln(_)},a.prototype.invm=function(c){return this.egcd(c).a.umod(c)},a.prototype.isEven=function(){return(this.words[0]&1)===0},a.prototype.isOdd=function(){return(this.words[0]&1)===1},a.prototype.andln=function(c){return this.words[0]&c},a.prototype.bincn=function(c){i(typeof c=="number");var h=c%26,g=(c-h)/26,_=1<<h;if(this.length<=g)return this._expand(g+1),this.words[g]|=_,this;for(var w=_,C=g;w!==0&&C<this.length;C++){var M=this.words[C]|0;M+=w,w=M>>>26,M&=67108863,this.words[C]=M}return w!==0&&(this.words[C]=w,this.length++),this},a.prototype.isZero=function(){return this.length===1&&this.words[0]===0},a.prototype.cmpn=function(c){var h=c<0;if(this.negative!==0&&!h)return-1;if(this.negative===0&&h)return 1;this._strip();var g;if(this.length>1)g=1;else{h&&(c=-c),i(c<=67108863,"Number is too big");var _=this.words[0]|0;g=_===c?0:_<c?-1:1}return this.negative!==0?-g|0:g},a.prototype.cmp=function(c){if(this.negative!==0&&c.negative===0)return-1;if(this.negative===0&&c.negative!==0)return 1;var h=this.ucmp(c);return this.negative!==0?-h|0:h},a.prototype.ucmp=function(c){if(this.length>c.length)return 1;if(this.length<c.length)return-1;for(var h=0,g=this.length-1;g>=0;g--){var _=this.words[g]|0,w=c.words[g]|0;if(_!==w){_<w?h=-1:_>w&&(h=1);break}}return h},a.prototype.gtn=function(c){return this.cmpn(c)===1},a.prototype.gt=function(c){return this.cmp(c)===1},a.prototype.gten=function(c){return this.cmpn(c)>=0},a.prototype.gte=function(c){return this.cmp(c)>=0},a.prototype.ltn=function(c){return this.cmpn(c)===-1},a.prototype.lt=function(c){return this.cmp(c)===-1},a.prototype.lten=function(c){return this.cmpn(c)<=0},a.prototype.lte=function(c){return this.cmp(c)<=0},a.prototype.eqn=function(c){return this.cmpn(c)===0},a.prototype.eq=function(c){return this.cmp(c)===0},a.red=function(c){return new de(c)},a.prototype.toRed=function(c){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),c.convertTo(this)._forceRed(c)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(c){return this.red=c,this},a.prototype.forceRed=function(c){return i(!this.red,"Already a number in reduction context"),this._forceRed(c)},a.prototype.redAdd=function(c){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,c)},a.prototype.redIAdd=function(c){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,c)},a.prototype.redSub=function(c){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,c)},a.prototype.redISub=function(c){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,c)},a.prototype.redShl=function(c){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,c)},a.prototype.redMul=function(c){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,c),this.red.mul(this,c)},a.prototype.redIMul=function(c){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,c),this.red.imul(this,c)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(c){return i(this.red&&!c.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,c)};var ce={k256:null,p224:null,p192:null,p25519:null};function ae(c,h){this.name=c,this.p=new a(h,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ae.prototype._tmp=function(){var c=new a(null);return c.words=new Array(Math.ceil(this.n/13)),c},ae.prototype.ireduce=function(c){var h=c,g;do this.split(h,this.tmp),h=this.imulK(h),h=h.iadd(this.tmp),g=h.bitLength();while(g>this.n);var _=g<this.n?-1:h.ucmp(this.p);return _===0?(h.words[0]=0,h.length=1):_>0?h.isub(this.p):h.strip!==void 0?h.strip():h._strip(),h},ae.prototype.split=function(c,h){c.iushrn(this.n,0,h)},ae.prototype.imulK=function(c){return c.imul(this.k)};function oe(){ae.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}s(oe,ae),oe.prototype.split=function(c,h){for(var g=4194303,_=Math.min(c.length,9),w=0;w<_;w++)h.words[w]=c.words[w];if(h.length=_,c.length<=9){c.words[0]=0,c.length=1;return}var C=c.words[9];for(h.words[h.length++]=C&g,w=10;w<c.length;w++){var M=c.words[w]|0;c.words[w-10]=(M&g)<<4|C>>>22,C=M}C>>>=22,c.words[w-10]=C,C===0&&c.length>10?c.length-=10:c.length-=9},oe.prototype.imulK=function(c){c.words[c.length]=0,c.words[c.length+1]=0,c.length+=2;for(var h=0,g=0;g<c.length;g++){var _=c.words[g]|0;h+=_*977,c.words[g]=h&67108863,h=_*64+(h/67108864|0)}return c.words[c.length-1]===0&&(c.length--,c.words[c.length-1]===0&&c.length--),c};function we(){ae.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}s(we,ae);function nt(){ae.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}s(nt,ae);function ft(){ae.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}s(ft,ae),ft.prototype.imulK=function(c){for(var h=0,g=0;g<c.length;g++){var _=(c.words[g]|0)*19+h,w=_&67108863;_>>>=26,c.words[g]=w,h=_}return h!==0&&(c.words[c.length++]=h),c},a._prime=function(c){if(ce[c])return ce[c];var h;if(c==="k256")h=new oe;else if(c==="p224")h=new we;else if(c==="p192")h=new nt;else if(c==="p25519")h=new ft;else throw new Error("Unknown prime "+c);return ce[c]=h,h};function de(c){if(typeof c=="string"){var h=a._prime(c);this.m=h.p,this.prime=h}else i(c.gtn(1),"modulus must be greater than 1"),this.m=c,this.prime=null}de.prototype._verify1=function(c){i(c.negative===0,"red works only with positives"),i(c.red,"red works only with red numbers")},de.prototype._verify2=function(c,h){i((c.negative|h.negative)===0,"red works only with positives"),i(c.red&&c.red===h.red,"red works only with red numbers")},de.prototype.imod=function(c){return this.prime?this.prime.ireduce(c)._forceRed(this):(f(c,c.umod(this.m)._forceRed(this)),c)},de.prototype.neg=function(c){return c.isZero()?c.clone():this.m.sub(c)._forceRed(this)},de.prototype.add=function(c,h){this._verify2(c,h);var g=c.add(h);return g.cmp(this.m)>=0&&g.isub(this.m),g._forceRed(this)},de.prototype.iadd=function(c,h){this._verify2(c,h);var g=c.iadd(h);return g.cmp(this.m)>=0&&g.isub(this.m),g},de.prototype.sub=function(c,h){this._verify2(c,h);var g=c.sub(h);return g.cmpn(0)<0&&g.iadd(this.m),g._forceRed(this)},de.prototype.isub=function(c,h){this._verify2(c,h);var g=c.isub(h);return g.cmpn(0)<0&&g.iadd(this.m),g},de.prototype.shl=function(c,h){return this._verify1(c),this.imod(c.ushln(h))},de.prototype.imul=function(c,h){return this._verify2(c,h),this.imod(c.imul(h))},de.prototype.mul=function(c,h){return this._verify2(c,h),this.imod(c.mul(h))},de.prototype.isqr=function(c){return this.imul(c,c.clone())},de.prototype.sqr=function(c){return this.mul(c,c)},de.prototype.sqrt=function(c){if(c.isZero())return c.clone();var h=this.m.andln(3);if(i(h%2===1),h===3){var g=this.m.add(new a(1)).iushrn(2);return this.pow(c,g)}for(var _=this.m.subn(1),w=0;!_.isZero()&&_.andln(1)===0;)w++,_.iushrn(1);i(!_.isZero());var C=new a(1).toRed(this),M=C.redNeg(),b=this.m.subn(1).iushrn(1),d=this.m.bitLength();for(d=new a(2*d*d).toRed(this);this.pow(d,b).cmp(M)!==0;)d.redIAdd(M);for(var v=this.pow(d,_),D=this.pow(c,_.addn(1).iushrn(1)),$=this.pow(c,_),z=w;$.cmp(C)!==0;){for(var K=$,te=0;K.cmp(C)!==0;te++)K=K.redSqr();i(te<z);var he=this.pow(v,new a(1).iushln(z-te-1));D=D.redMul(he),v=he.redSqr(),$=$.redMul(v),z=te}return D},de.prototype.invm=function(c){var h=c._invmp(this.m);return h.negative!==0?(h.negative=0,this.imod(h).redNeg()):this.imod(h)},de.prototype.pow=function(c,h){if(h.isZero())return new a(1).toRed(this);if(h.cmpn(1)===0)return c.clone();var g=4,_=new Array(1<<g);_[0]=new a(1).toRed(this),_[1]=c;for(var w=2;w<_.length;w++)_[w]=this.mul(_[w-1],c);var C=_[0],M=0,b=0,d=h.bitLength()%26;for(d===0&&(d=26),w=h.length-1;w>=0;w--){for(var v=h.words[w],D=d-1;D>=0;D--){var $=v>>D&1;if(C!==_[0]&&(C=this.sqr(C)),$===0&&M===0){b=0;continue}M<<=1,M|=$,b++,!(b!==g&&(w!==0||D!==0))&&(C=this.mul(C,_[M]),b=0,M=0)}d=26}return C},de.prototype.convertTo=function(c){var h=c.umod(this.m);return h===c?h.clone():h},de.prototype.convertFrom=function(c){var h=c.clone();return h.red=null,h},a.mont=function(c){return new Tt(c)};function Tt(c){de.call(this,c),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}s(Tt,de),Tt.prototype.convertTo=function(c){return this.imod(c.ushln(this.shift))},Tt.prototype.convertFrom=function(c){var h=this.imod(c.mul(this.rinv));return h.red=null,h},Tt.prototype.imul=function(c,h){if(c.isZero()||h.isZero())return c.words[0]=0,c.length=1,c;var g=c.imul(h),_=g.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),w=g.isub(_).iushrn(this.shift),C=w;return w.cmp(this.m)>=0?C=w.isub(this.m):w.cmpn(0)<0&&(C=w.iadd(this.m)),C._forceRed(this)},Tt.prototype.mul=function(c,h){if(c.isZero()||h.isZero())return new a(0)._forceRed(this);var g=c.mul(h),_=g.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),w=g.isub(_).iushrn(this.shift),C=w;return w.cmp(this.m)>=0?C=w.isub(this.m):w.cmpn(0)<0&&(C=w.iadd(this.m)),C._forceRed(this)},Tt.prototype.invm=function(c){var h=this.imod(c._invmp(this.m).mul(this.r2));return h._forceRed(this)}})(typeof e>"u"||e,n)}),Sc={REQUEST_PARAMS:"requestParams",METHOD_NAME:"methodName"},Mc=class Hs extends Error{constructor(e,t,r){super(e),this.code=t,this.details=r,this.name=this.constructor.name}static{this.DETAILS_KEYS=Sc}toJSON(){return{name:this.name,message:this.message,code:this.code,details:this.details}}toString(){return JSON.stringify(this.toJSON())}static isErrorCode(e,t){return e instanceof Hs&&e.code===t}},Ac=class extends Mc{constructor(n,e,t){super(n,e||"UnknownError",t)}static isCommonErrorCode(n,e){return this.isErrorCode(n,e)}},qs=(n,e,t)=>{throw new Ac(e,n,t)};function Bs(n){return Date.parse(new Date().toString())+n}var Oc=class{constructor(n,e=0){this.overdue_time=e,this.value=n}isValid(){return this.value===null?!1:this.overdue_time===0?!0:!(Date.parse(new Date().toString())>this.overdue_time)}},Nr=9e15,rr=1e9,yi="0123456789abcdef",vn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",kn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",bi={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Nr,maxE:Nr,crypto:!1},Xs,zt,H=!0,Sn="[DecimalError] ",tr=Sn+"Invalid argument: ",Js=Sn+"Precision limit exceeded",Ys=Sn+"crypto unavailable",ea="[object Decimal]",ht=Math.floor,at=Math.pow,Ec=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,jc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,xc=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ta=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,At=1e7,Z=7,Ic=9007199254740991,Pc=vn.length-1,wi=kn.length-1,O={toStringTag:ea};O.absoluteValue=O.abs=function(){var n=new this.constructor(this);return n.s<0&&(n.s=1),F(n)};O.ceil=function(){return F(new this.constructor(this),this.e+1,2)};O.clampedTo=O.clamp=function(n,e){var t,r=this,i=r.constructor;if(n=new i(n),e=new i(e),!n.s||!e.s)return new i(NaN);if(n.gt(e))throw Error(tr+e);return t=r.cmp(n),t<0?n:r.cmp(e)>0?e:new i(r)};O.comparedTo=O.cmp=function(n){var e,t,r,i,s=this,a=s.d,o=(n=new s.constructor(n)).d,u=s.s,l=n.s;if(!a||!o)return!u||!l?NaN:u!==l?u:a===o?0:!a^u<0?1:-1;if(!a[0]||!o[0])return a[0]?u:o[0]?-l:0;if(u!==l)return u;if(s.e!==n.e)return s.e>n.e^u<0?1:-1;for(r=a.length,i=o.length,e=0,t=r<i?r:i;e<t;++e)if(a[e]!==o[e])return a[e]>o[e]^u<0?1:-1;return r===i?0:r>i^u<0?1:-1};O.cosine=O.cos=function(){var n,e,t=this,r=t.constructor;return t.d?t.d[0]?(n=r.precision,e=r.rounding,r.precision=n+Math.max(t.e,t.sd())+Z,r.rounding=1,t=Rc(r,aa(r,t)),r.precision=n,r.rounding=e,F(zt==2||zt==3?t.neg():t,n,e,!0)):new r(1):new r(NaN)};O.cubeRoot=O.cbrt=function(){var n,e,t,r,i,s,a,o,u,l,p=this,f=p.constructor;if(!p.isFinite()||p.isZero())return new f(p);for(H=!1,s=p.s*at(p.s*p,1/3),!s||Math.abs(s)==1/0?(t=ct(p.d),n=p.e,(s=(n-t.length+1)%3)&&(t+=s==1||s==-2?"0":"00"),s=at(t,1/3),n=ht((n+1)/3)-(n%3==(n<0?-1:2)),s==1/0?t="5e"+n:(t=s.toExponential(),t=t.slice(0,t.indexOf("e")+1)+n),r=new f(t),r.s=p.s):r=new f(s.toString()),a=(n=f.precision)+3;;)if(o=r,u=o.times(o).times(o),l=u.plus(p),r=le(l.plus(p).times(o),l.plus(u),a+2,1),ct(o.d).slice(0,a)===(t=ct(r.d)).slice(0,a))if(t=t.slice(a-3,a+1),t=="9999"||!i&&t=="4999"){if(!i&&(F(o,n+1,0),o.times(o).times(o).eq(p))){r=o;break}a+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(F(r,n+1,1),e=!r.times(r).times(r).eq(p));break}return H=!0,F(r,n,f.rounding,e)};O.decimalPlaces=O.dp=function(){var n,e=this.d,t=NaN;if(e){if(n=e.length-1,t=(n-ht(this.e/Z))*Z,n=e[n],n)for(;n%10==0;n/=10)t--;t<0&&(t=0)}return t};O.dividedBy=O.div=function(n){return le(this,new this.constructor(n))};O.dividedToIntegerBy=O.divToInt=function(n){var e=this,t=e.constructor;return F(le(e,new t(n),0,1,1),t.precision,t.rounding)};O.equals=O.eq=function(n){return this.cmp(n)===0};O.floor=function(){return F(new this.constructor(this),this.e+1,3)};O.greaterThan=O.gt=function(n){return this.cmp(n)>0};O.greaterThanOrEqualTo=O.gte=function(n){var e=this.cmp(n);return e==1||e===0};O.hyperbolicCosine=O.cosh=function(){var n,e,t,r,i,s=this,a=s.constructor,o=new a(1);if(!s.isFinite())return new a(s.s?1/0:NaN);if(s.isZero())return o;t=a.precision,r=a.rounding,a.precision=t+Math.max(s.e,s.sd())+4,a.rounding=1,i=s.d.length,i<32?(n=Math.ceil(i/3),e=(1/An(4,n)).toString()):(n=16,e="2.3283064365386962890625e-10"),s=Ur(a,1,s.times(e),new a(1),!0);for(var u,l=n,p=new a(8);l--;)u=s.times(s),s=o.minus(u.times(p.minus(u.times(p))));return F(s,a.precision=t,a.rounding=r,!0)};O.hyperbolicSine=O.sinh=function(){var n,e,t,r,i=this,s=i.constructor;if(!i.isFinite()||i.isZero())return new s(i);if(e=s.precision,t=s.rounding,s.precision=e+Math.max(i.e,i.sd())+4,s.rounding=1,r=i.d.length,r<3)i=Ur(s,2,i,i,!0);else{n=1.4*Math.sqrt(r),n=n>16?16:n|0,i=i.times(1/An(5,n)),i=Ur(s,2,i,i,!0);for(var a,o=new s(5),u=new s(16),l=new s(20);n--;)a=i.times(i),i=i.times(o.plus(a.times(u.times(a).plus(l))))}return s.precision=e,s.rounding=t,F(i,e,t,!0)};O.hyperbolicTangent=O.tanh=function(){var n,e,t=this,r=t.constructor;return t.isFinite()?t.isZero()?new r(t):(n=r.precision,e=r.rounding,r.precision=n+7,r.rounding=1,le(t.sinh(),t.cosh(),r.precision=n,r.rounding=e)):new r(t.s)};O.inverseCosine=O.acos=function(){var n=this,e=n.constructor,t=n.abs().cmp(1),r=e.precision,i=e.rounding;return t!==-1?t===0?n.isNeg()?qt(e,r,i):new e(0):new e(NaN):n.isZero()?qt(e,r+4,i).times(.5):(e.precision=r+6,e.rounding=1,n=new e(1).minus(n).div(n.plus(1)).sqrt().atan(),e.precision=r,e.rounding=i,n.times(2))};O.inverseHyperbolicCosine=O.acosh=function(){var n,e,t=this,r=t.constructor;return t.lte(1)?new r(t.eq(1)?0:NaN):t.isFinite()?(n=r.precision,e=r.rounding,r.precision=n+Math.max(Math.abs(t.e),t.sd())+4,r.rounding=1,H=!1,t=t.times(t).minus(1).sqrt().plus(t),H=!0,r.precision=n,r.rounding=e,t.ln()):new r(t)};O.inverseHyperbolicSine=O.asinh=function(){var n,e,t=this,r=t.constructor;return!t.isFinite()||t.isZero()?new r(t):(n=r.precision,e=r.rounding,r.precision=n+2*Math.max(Math.abs(t.e),t.sd())+6,r.rounding=1,H=!1,t=t.times(t).plus(1).sqrt().plus(t),H=!0,r.precision=n,r.rounding=e,t.ln())};O.inverseHyperbolicTangent=O.atanh=function(){var n,e,t,r,i=this,s=i.constructor;return i.isFinite()?i.e>=0?new s(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(n=s.precision,e=s.rounding,r=i.sd(),Math.max(r,n)<2*-i.e-1?F(new s(i),n,e,!0):(s.precision=t=r-i.e,i=le(i.plus(1),new s(1).minus(i),t+n,1),s.precision=n+4,s.rounding=1,i=i.ln(),s.precision=n,s.rounding=e,i.times(.5))):new s(NaN)};O.inverseSine=O.asin=function(){var n,e,t,r,i=this,s=i.constructor;return i.isZero()?new s(i):(e=i.abs().cmp(1),t=s.precision,r=s.rounding,e!==-1?e===0?(n=qt(s,t+4,r).times(.5),n.s=i.s,n):new s(NaN):(s.precision=t+6,s.rounding=1,i=i.div(new s(1).minus(i.times(i)).sqrt().plus(1)).atan(),s.precision=t,s.rounding=r,i.times(2)))};O.inverseTangent=O.atan=function(){var n,e,t,r,i,s,a,o,u,l=this,p=l.constructor,f=p.precision,m=p.rounding;if(l.isFinite()){if(l.isZero())return new p(l);if(l.abs().eq(1)&&f+4<=wi)return a=qt(p,f+4,m).times(.25),a.s=l.s,a}else{if(!l.s)return new p(NaN);if(f+4<=wi)return a=qt(p,f+4,m).times(.5),a.s=l.s,a}for(p.precision=o=f+10,p.rounding=1,t=Math.min(28,o/Z+2|0),n=t;n;--n)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(H=!1,e=Math.ceil(o/Z),r=1,u=l.times(l),a=new p(l),i=l;n!==-1;)if(i=i.times(u),s=a.minus(i.div(r+=2)),i=i.times(u),a=s.plus(i.div(r+=2)),a.d[e]!==void 0)for(n=e;a.d[n]===s.d[n]&&n--;);return t&&(a=a.times(2<<t-1)),H=!0,F(a,p.precision=f,p.rounding=m,!0)};O.isFinite=function(){return!!this.d};O.isInteger=O.isInt=function(){return!!this.d&&ht(this.e/Z)>this.d.length-2};O.isNaN=function(){return!this.s};O.isNegative=O.isNeg=function(){return this.s<0};O.isPositive=O.isPos=function(){return this.s>0};O.isZero=function(){return!!this.d&&this.d[0]===0};O.lessThan=O.lt=function(n){return this.cmp(n)<0};O.lessThanOrEqualTo=O.lte=function(n){return this.cmp(n)<1};O.logarithm=O.log=function(n){var e,t,r,i,s,a,o,u,l=this,p=l.constructor,f=p.precision,m=p.rounding,y=5;if(n==null)n=new p(10),e=!0;else{if(n=new p(n),t=n.d,n.s<0||!t||!t[0]||n.eq(1))return new p(NaN);e=n.eq(10)}if(t=l.d,l.s<0||!t||!t[0]||l.eq(1))return new p(t&&!t[0]?-1/0:l.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)s=!0;else{for(i=t[0];i%10===0;)i/=10;s=i!==1}if(H=!1,o=f+y,a=Yt(l,o),r=e?Cn(p,o+10):Yt(n,o),u=le(a,r,o,1),Yr(u.d,i=f,m))do if(o+=10,a=Yt(l,o),r=e?Cn(p,o+10):Yt(n,o),u=le(a,r,o,1),!s){+ct(u.d).slice(i+1,i+15)+1==1e14&&(u=F(u,f+1,0));break}while(Yr(u.d,i+=10,m));return H=!0,F(u,f,m)};O.minus=O.sub=function(n){var e,t,r,i,s,a,o,u,l,p,f,m,y=this,k=y.constructor;if(n=new k(n),!y.d||!n.d)return!y.s||!n.s?n=new k(NaN):y.d?n.s=-n.s:n=new k(n.d||y.s!==n.s?y:NaN),n;if(y.s!=n.s)return n.s=-n.s,y.plus(n);if(l=y.d,m=n.d,o=k.precision,u=k.rounding,!l[0]||!m[0]){if(m[0])n.s=-n.s;else if(l[0])n=new k(y);else return new k(u===3?-0:0);return H?F(n,o,u):n}if(t=ht(n.e/Z),p=ht(y.e/Z),l=l.slice(),s=p-t,s){for(f=s<0,f?(e=l,s=-s,a=m.length):(e=m,t=p,a=l.length),r=Math.max(Math.ceil(o/Z),a)+2,s>r&&(s=r,e.length=1),e.reverse(),r=s;r--;)e.push(0);e.reverse()}else{for(r=l.length,a=m.length,f=r<a,f&&(a=r),r=0;r<a;r++)if(l[r]!=m[r]){f=l[r]<m[r];break}s=0}for(f&&(e=l,l=m,m=e,n.s=-n.s),a=l.length,r=m.length-a;r>0;--r)l[a++]=0;for(r=m.length;r>s;){if(l[--r]<m[r]){for(i=r;i&&l[--i]===0;)l[i]=At-1;--l[i],l[r]+=At}l[r]-=m[r]}for(;l[--a]===0;)l.pop();for(;l[0]===0;l.shift())--t;return l[0]?(n.d=l,n.e=Mn(l,t),H?F(n,o,u):n):new k(u===3?-0:0)};O.modulo=O.mod=function(n){var e,t=this,r=t.constructor;return n=new r(n),!t.d||!n.s||n.d&&!n.d[0]?new r(NaN):!n.d||t.d&&!t.d[0]?F(new r(t),r.precision,r.rounding):(H=!1,r.modulo==9?(e=le(t,n.abs(),0,3,1),e.s*=n.s):e=le(t,n,0,r.modulo,1),e=e.times(n),H=!0,t.minus(e))};O.naturalExponential=O.exp=function(){return vi(this)};O.naturalLogarithm=O.ln=function(){return Yt(this)};O.negated=O.neg=function(){var n=new this.constructor(this);return n.s=-n.s,F(n)};O.plus=O.add=function(n){var e,t,r,i,s,a,o,u,l,p,f=this,m=f.constructor;if(n=new m(n),!f.d||!n.d)return!f.s||!n.s?n=new m(NaN):f.d||(n=new m(n.d||f.s===n.s?f:NaN)),n;if(f.s!=n.s)return n.s=-n.s,f.minus(n);if(l=f.d,p=n.d,o=m.precision,u=m.rounding,!l[0]||!p[0])return p[0]||(n=new m(f)),H?F(n,o,u):n;if(s=ht(f.e/Z),r=ht(n.e/Z),l=l.slice(),i=s-r,i){for(i<0?(t=l,i=-i,a=p.length):(t=p,r=s,a=l.length),s=Math.ceil(o/Z),a=s>a?s+1:a+1,i>a&&(i=a,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(a=l.length,i=p.length,a-i<0&&(i=a,t=p,p=l,l=t),e=0;i;)e=(l[--i]=l[i]+p[i]+e)/At|0,l[i]%=At;for(e&&(l.unshift(e),++r),a=l.length;l[--a]==0;)l.pop();return n.d=l,n.e=Mn(l,r),H?F(n,o,u):n};O.precision=O.sd=function(n){var e,t=this;if(n!==void 0&&n!==!!n&&n!==1&&n!==0)throw Error(tr+n);return t.d?(e=ra(t.d),n&&t.e+1>e&&(e=t.e+1)):e=NaN,e};O.round=function(){var n=this,e=n.constructor;return F(new e(n),n.e+1,e.rounding)};O.sine=O.sin=function(){var n,e,t=this,r=t.constructor;return t.isFinite()?t.isZero()?new r(t):(n=r.precision,e=r.rounding,r.precision=n+Math.max(t.e,t.sd())+Z,r.rounding=1,t=Bc(r,aa(r,t)),r.precision=n,r.rounding=e,F(zt>2?t.neg():t,n,e,!0)):new r(NaN)};O.squareRoot=O.sqrt=function(){var n,e,t,r,i,s,a=this,o=a.d,u=a.e,l=a.s,p=a.constructor;if(l!==1||!o||!o[0])return new p(!l||l<0&&(!o||o[0])?NaN:o?a:1/0);for(H=!1,l=Math.sqrt(+a),l==0||l==1/0?(e=ct(o),(e.length+u)%2==0&&(e+="0"),l=Math.sqrt(e),u=ht((u+1)/2)-(u<0||u%2),l==1/0?e="5e"+u:(e=l.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),r=new p(e)):r=new p(l.toString()),t=(u=p.precision)+3;;)if(s=r,r=s.plus(le(a,s,t+2,1)).times(.5),ct(s.d).slice(0,t)===(e=ct(r.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(F(s,u+1,0),s.times(s).eq(a))){r=s;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(F(r,u+1,1),n=!r.times(r).eq(a));break}return H=!0,F(r,u,p.rounding,n)};O.tangent=O.tan=function(){var n,e,t=this,r=t.constructor;return t.isFinite()?t.isZero()?new r(t):(n=r.precision,e=r.rounding,r.precision=n+10,r.rounding=1,t=t.sin(),t.s=1,t=le(t,new r(1).minus(t.times(t)).sqrt(),n+10,0),r.precision=n,r.rounding=e,F(zt==2||zt==4?t.neg():t,n,e,!0)):new r(NaN)};O.times=O.mul=function(n){var e,t,r,i,s,a,o,u,l,p=this,f=p.constructor,m=p.d,y=(n=new f(n)).d;if(n.s*=p.s,!m||!m[0]||!y||!y[0])return new f(!n.s||m&&!m[0]&&!y||y&&!y[0]&&!m?NaN:!m||!y?n.s/0:n.s*0);for(t=ht(p.e/Z)+ht(n.e/Z),u=m.length,l=y.length,u<l&&(s=m,m=y,y=s,a=u,u=l,l=a),s=[],a=u+l,r=a;r--;)s.push(0);for(r=l;--r>=0;){for(e=0,i=u+r;i>r;)o=s[i]+y[r]*m[i-r-1]+e,s[i--]=o%At|0,e=o/At|0;s[i]=(s[i]+e)%At|0}for(;!s[--a];)s.pop();return e?++t:s.shift(),n.d=s,n.e=Mn(s,t),H?F(n,f.precision,f.rounding):n};O.toBinary=function(n,e){return Ci(this,2,n,e)};O.toDecimalPlaces=O.toDP=function(n,e){var t=this,r=t.constructor;return t=new r(t),n===void 0?t:(mt(n,0,rr),e===void 0?e=r.rounding:mt(e,0,8),F(t,n+t.e+1,e))};O.toExponential=function(n,e){var t,r=this,i=r.constructor;return n===void 0?t=Bt(r,!0):(mt(n,0,rr),e===void 0?e=i.rounding:mt(e,0,8),r=F(new i(r),n+1,e),t=Bt(r,!0,n+1)),r.isNeg()&&!r.isZero()?"-"+t:t};O.toFixed=function(n,e){var t,r,i=this,s=i.constructor;return n===void 0?t=Bt(i):(mt(n,0,rr),e===void 0?e=s.rounding:mt(e,0,8),r=F(new s(i),n+i.e+1,e),t=Bt(r,!1,n+r.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};O.toFraction=function(n){var e,t,r,i,s,a,o,u,l,p,f,m,y=this,k=y.d,T=y.constructor;if(!k)return new T(y);if(l=t=new T(1),r=u=new T(0),e=new T(r),s=e.e=ra(k)-y.e-1,a=s%Z,e.d[0]=at(10,a<0?Z+a:a),n==null)n=s>0?e:l;else{if(o=new T(n),!o.isInt()||o.lt(l))throw Error(tr+o);n=o.gt(e)?s>0?e:l:o}for(H=!1,o=new T(ct(k)),p=T.precision,T.precision=s=k.length*Z*2;f=le(o,e,0,1,1),i=t.plus(f.times(r)),i.cmp(n)!=1;)t=r,r=i,i=l,l=u.plus(f.times(i)),u=i,i=e,e=o.minus(f.times(i)),o=i;return i=le(n.minus(t),r,0,1,1),u=u.plus(i.times(l)),t=t.plus(i.times(r)),u.s=l.s=y.s,m=le(l,r,s,1).minus(y).abs().cmp(le(u,t,s,1).minus(y).abs())<1?[l,r]:[u,t],T.precision=p,H=!0,m};O.toHexadecimal=O.toHex=function(n,e){return Ci(this,16,n,e)};O.toNearest=function(n,e){var t=this,r=t.constructor;if(t=new r(t),n==null){if(!t.d)return t;n=new r(1),e=r.rounding}else{if(n=new r(n),e===void 0?e=r.rounding:mt(e,0,8),!t.d)return n.s?t:n;if(!n.d)return n.s&&(n.s=t.s),n}return n.d[0]?(H=!1,t=le(t,n,0,e,1).times(n),H=!0,F(t)):(n.s=t.s,t=n),t};O.toNumber=function(){return+this};O.toOctal=function(n,e){return Ci(this,8,n,e)};O.toPower=O.pow=function(n){var e,t,r,i,s,a,o=this,u=o.constructor,l=+(n=new u(n));if(!o.d||!n.d||!o.d[0]||!n.d[0])return new u(at(+o,l));if(o=new u(o),o.eq(1))return o;if(r=u.precision,s=u.rounding,n.eq(1))return F(o,r,s);if(e=ht(n.e/Z),e>=n.d.length-1&&(t=l<0?-l:l)<=Ic)return i=na(u,o,t,r),n.s<0?new u(1).div(i):F(i,r,s);if(a=o.s,a<0){if(e<n.d.length-1)return new u(NaN);if(!(n.d[e]&1)&&(a=1),o.e==0&&o.d[0]==1&&o.d.length==1)return o.s=a,o}return t=at(+o,l),e=t==0||!isFinite(t)?ht(l*(Math.log("0."+ct(o.d))/Math.LN10+o.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?a/0:0):(H=!1,u.rounding=o.s=1,t=Math.min(12,(e+"").length),i=vi(n.times(Yt(o,r+t)),r),i.d&&(i=F(i,r+5,1),Yr(i.d,r,s)&&(e=r+10,i=F(vi(n.times(Yt(o,e+t)),e),e+5,1),+ct(i.d).slice(r+1,r+15)+1==1e14&&(i=F(i,r+1,0)))),i.s=a,H=!0,u.rounding=s,F(i,r,s))};O.toPrecision=function(n,e){var t,r=this,i=r.constructor;return n===void 0?t=Bt(r,r.e<=i.toExpNeg||r.e>=i.toExpPos):(mt(n,1,rr),e===void 0?e=i.rounding:mt(e,0,8),r=F(new i(r),n,e),t=Bt(r,n<=r.e||r.e<=i.toExpNeg,n)),r.isNeg()&&!r.isZero()?"-"+t:t};O.toSignificantDigits=O.toSD=function(n,e){var t=this,r=t.constructor;return n===void 0?(n=r.precision,e=r.rounding):(mt(n,1,rr),e===void 0?e=r.rounding:mt(e,0,8)),F(new r(t),n,e)};O.toString=function(){var n=this,e=n.constructor,t=Bt(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()&&!n.isZero()?"-"+t:t};O.truncated=O.trunc=function(){return F(new this.constructor(this),this.e+1,1)};O.valueOf=O.toJSON=function(){var n=this,e=n.constructor,t=Bt(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()?"-"+t:t};function ct(n){var e,t,r,i=n.length-1,s="",a=n[0];if(i>0){for(s+=a,e=1;e<i;e++)r=n[e]+"",t=Z-r.length,t&&(s+=Jt(t)),s+=r;a=n[e],r=a+"",t=Z-r.length,t&&(s+=Jt(t))}else if(a===0)return"0";for(;a%10===0;)a/=10;return s+a}function mt(n,e,t){if(n!==~~n||n<e||n>t)throw Error(tr+n)}function Yr(n,e,t,r){var i,s,a,o;for(s=n[0];s>=10;s/=10)--e;return--e<0?(e+=Z,i=0):(i=Math.ceil((e+1)/Z),e%=Z),s=at(10,Z-e),o=n[i]%s|0,r==null?e<3?(e==0?o=o/100|0:e==1&&(o=o/10|0),a=t<4&&o==99999||t>3&&o==49999||o==5e4||o==0):a=(t<4&&o+1==s||t>3&&o+1==s/2)&&(n[i+1]/s/100|0)==at(10,e-2)-1||(o==s/2||o==0)&&(n[i+1]/s/100|0)==0:e<4?(e==0?o=o/1e3|0:e==1?o=o/100|0:e==2&&(o=o/10|0),a=(r||t<4)&&o==9999||!r&&t>3&&o==4999):a=((r||t<4)&&o+1==s||!r&&t>3&&o+1==s/2)&&(n[i+1]/s/1e3|0)==at(10,e-3)-1,a}function yn(n,e,t){for(var r,i=[0],s,a=0,o=n.length;a<o;){for(s=i.length;s--;)i[s]*=e;for(i[0]+=yi.indexOf(n.charAt(a++)),r=0;r<i.length;r++)i[r]>t-1&&(i[r+1]===void 0&&(i[r+1]=0),i[r+1]+=i[r]/t|0,i[r]%=t)}return i.reverse()}function Rc(n,e){var t,r,i;if(e.isZero())return e;r=e.d.length,r<32?(t=Math.ceil(r/3),i=(1/An(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),n.precision+=t,e=Ur(n,1,e.times(i),new n(1));for(var s=t;s--;){var a=e.times(e);e=a.times(a).minus(a).times(8).plus(1)}return n.precision-=t,e}var le=function(){function n(r,i,s){var a,o=0,u=r.length;for(r=r.slice();u--;)a=r[u]*i+o,r[u]=a%s|0,o=a/s|0;return o&&r.unshift(o),r}function e(r,i,s,a){var o,u;if(s!=a)u=s>a?1:-1;else for(o=u=0;o<s;o++)if(r[o]!=i[o]){u=r[o]>i[o]?1:-1;break}return u}function t(r,i,s,a){for(var o=0;s--;)r[s]-=o,o=r[s]<i[s]?1:0,r[s]=o*a+r[s]-i[s];for(;!r[0]&&r.length>1;)r.shift()}return function(r,i,s,a,o,u){var l,p,f,m,y,k,T,A,E,q,x,U,ee,N,ce,ae,oe,we,nt,ft,de=r.constructor,Tt=r.s==i.s?1:-1,c=r.d,h=i.d;if(!c||!c[0]||!h||!h[0])return new de(!r.s||!i.s||(c?h&&c[0]==h[0]:!h)?NaN:c&&c[0]==0||!h?Tt*0:Tt/0);for(u?(y=1,p=r.e-i.e):(u=At,y=Z,p=ht(r.e/y)-ht(i.e/y)),nt=h.length,oe=c.length,E=new de(Tt),q=E.d=[],f=0;h[f]==(c[f]||0);f++);if(h[f]>(c[f]||0)&&p--,s==null?(N=s=de.precision,a=de.rounding):o?N=s+(r.e-i.e)+1:N=s,N<0)q.push(1),k=!0;else{if(N=N/y+2|0,f=0,nt==1){for(m=0,h=h[0],N++;(f<oe||m)&&N--;f++)ce=m*u+(c[f]||0),q[f]=ce/h|0,m=ce%h|0;k=m||f<oe}else{for(m=u/(h[0]+1)|0,m>1&&(h=n(h,m,u),c=n(c,m,u),nt=h.length,oe=c.length),ae=nt,x=c.slice(0,nt),U=x.length;U<nt;)x[U++]=0;ft=h.slice(),ft.unshift(0),we=h[0],h[1]>=u/2&&++we;do m=0,l=e(h,x,nt,U),l<0?(ee=x[0],nt!=U&&(ee=ee*u+(x[1]||0)),m=ee/we|0,m>1?(m>=u&&(m=u-1),T=n(h,m,u),A=T.length,U=x.length,l=e(T,x,A,U),l==1&&(m--,t(T,nt<A?ft:h,A,u))):(m==0&&(l=m=1),T=h.slice()),A=T.length,A<U&&T.unshift(0),t(x,T,U,u),l==-1&&(U=x.length,l=e(h,x,nt,U),l<1&&(m++,t(x,nt<U?ft:h,U,u))),U=x.length):l===0&&(m++,x=[0]),q[f++]=m,l&&x[0]?x[U++]=c[ae]||0:(x=[c[ae]],U=1);while((ae++<oe||x[0]!==void 0)&&N--);k=x[0]!==void 0}q[0]||q.shift()}if(y==1)E.e=p,Xs=k;else{for(f=1,m=q[0];m>=10;m/=10)f++;E.e=f+p*y-1,F(E,o?s+E.e+1:s,a,k)}return E}}();function F(n,e,t,r){var i,s,a,o,u,l,p,f,m,y=n.constructor;e:if(e!=null){if(f=n.d,!f)return n;for(i=1,o=f[0];o>=10;o/=10)i++;if(s=e-i,s<0)s+=Z,a=e,p=f[m=0],u=p/at(10,i-a-1)%10|0;else if(m=Math.ceil((s+1)/Z),o=f.length,m>=o)if(r){for(;o++<=m;)f.push(0);p=u=0,i=1,s%=Z,a=s-Z+1}else break e;else{for(p=o=f[m],i=1;o>=10;o/=10)i++;s%=Z,a=s-Z+i,u=a<0?0:p/at(10,i-a-1)%10|0}if(r=r||e<0||f[m+1]!==void 0||(a<0?p:p%at(10,i-a-1)),l=t<4?(u||r)&&(t==0||t==(n.s<0?3:2)):u>5||u==5&&(t==4||r||t==6&&(s>0?a>0?p/at(10,i-a):0:f[m-1])%10&1||t==(n.s<0?8:7)),e<1||!f[0])return f.length=0,l?(e-=n.e+1,f[0]=at(10,(Z-e%Z)%Z),n.e=-e||0):f[0]=n.e=0,n;if(s==0?(f.length=m,o=1,m--):(f.length=m+1,o=at(10,Z-s),f[m]=a>0?(p/at(10,i-a)%at(10,a)|0)*o:0),l)for(;;)if(m==0){for(s=1,a=f[0];a>=10;a/=10)s++;for(a=f[0]+=o,o=1;a>=10;a/=10)o++;s!=o&&(n.e++,f[0]==At&&(f[0]=1));break}else{if(f[m]+=o,f[m]!=At)break;f[m--]=0,o=1}for(s=f.length;f[--s]===0;)f.pop()}return H&&(n.e>y.maxE?(n.d=null,n.e=NaN):n.e<y.minE&&(n.e=0,n.d=[0])),n}function Bt(n,e,t){if(!n.isFinite())return sa(n);var r,i=n.e,s=ct(n.d),a=s.length;return e?(t&&(r=t-a)>0?s=s.charAt(0)+"."+s.slice(1)+Jt(r):a>1&&(s=s.charAt(0)+"."+s.slice(1)),s=s+(n.e<0?"e":"e+")+n.e):i<0?(s="0."+Jt(-i-1)+s,t&&(r=t-a)>0&&(s+=Jt(r))):i>=a?(s+=Jt(i+1-a),t&&(r=t-i-1)>0&&(s=s+"."+Jt(r))):((r=i+1)<a&&(s=s.slice(0,r)+"."+s.slice(r)),t&&(r=t-a)>0&&(i+1===a&&(s+="."),s+=Jt(r))),s}function Mn(n,e){var t=n[0];for(e*=Z;t>=10;t/=10)e++;return e}function Cn(n,e,t){if(e>Pc)throw H=!0,t&&(n.precision=t),Error(Js);return F(new n(vn),e,1,!0)}function qt(n,e,t){if(e>wi)throw Error(Js);return F(new n(kn),e,t,!0)}function ra(n){var e=n.length-1,t=e*Z+1;if(e=n[e],e){for(;e%10==0;e/=10)t--;for(e=n[0];e>=10;e/=10)t++}return t}function Jt(n){for(var e="";n--;)e+="0";return e}function na(n,e,t,r){var i,s=new n(1),a=Math.ceil(r/Z+4);for(H=!1;;){if(t%2&&(s=s.times(e),Ns(s.d,a)&&(i=!0)),t=ht(t/2),t===0){t=s.d.length-1,i&&s.d[t]===0&&++s.d[t];break}e=e.times(e),Ns(e.d,a)}return H=!0,s}function $s(n){return n.d[n.d.length-1]&1}function ia(n,e,t){for(var r,i,s=new n(e[0]),a=0;++a<e.length;){if(i=new n(e[a]),!i.s){s=i;break}r=s.cmp(i),(r===t||r===0&&s.s===t)&&(s=i)}return s}function vi(n,e){var t,r,i,s,a,o,u,l=0,p=0,f=0,m=n.constructor,y=m.rounding,k=m.precision;if(!n.d||!n.d[0]||n.e>17)return new m(n.d?n.d[0]?n.s<0?0:1/0:1:n.s?n.s<0?0:n:NaN);for(e==null?(H=!1,u=k):u=e,o=new m(.03125);n.e>-2;)n=n.times(o),f+=5;for(r=Math.log(at(2,f))/Math.LN10*2+5|0,u+=r,t=s=a=new m(1),m.precision=u;;){if(s=F(s.times(n),u,1),t=t.times(++p),o=a.plus(le(s,t,u,1)),ct(o.d).slice(0,u)===ct(a.d).slice(0,u)){for(i=f;i--;)a=F(a.times(a),u,1);if(e==null)if(l<3&&Yr(a.d,u-r,y,l))m.precision=u+=10,t=s=o=new m(1),p=0,l++;else return F(a,m.precision=k,y,H=!0);else return m.precision=k,a}a=o}}function Yt(n,e){var t,r,i,s,a,o,u,l,p,f,m,y=1,k=10,T=n,A=T.d,E=T.constructor,q=E.rounding,x=E.precision;if(T.s<0||!A||!A[0]||!T.e&&A[0]==1&&A.length==1)return new E(A&&!A[0]?-1/0:T.s!=1?NaN:A?0:T);if(e==null?(H=!1,p=x):p=e,E.precision=p+=k,t=ct(A),r=t.charAt(0),Math.abs(s=T.e)<15e14){for(;r<7&&r!=1||r==1&&t.charAt(1)>3;)T=T.times(n),t=ct(T.d),r=t.charAt(0),y++;s=T.e,r>1?(T=new E("0."+t),s++):T=new E(r+"."+t.slice(1))}else return l=Cn(E,p+2,x).times(s+""),T=Yt(new E(r+"."+t.slice(1)),p-k).plus(l),E.precision=x,e==null?F(T,x,q,H=!0):T;for(f=T,u=a=T=le(T.minus(1),T.plus(1),p,1),m=F(T.times(T),p,1),i=3;;){if(a=F(a.times(m),p,1),l=u.plus(le(a,new E(i),p,1)),ct(l.d).slice(0,p)===ct(u.d).slice(0,p))if(u=u.times(2),s!==0&&(u=u.plus(Cn(E,p+2,x).times(s+""))),u=le(u,new E(y),p,1),e==null)if(Yr(u.d,p-k,q,o))E.precision=p+=k,l=a=T=le(f.minus(1),f.plus(1),p,1),m=F(T.times(T),p,1),i=o=1;else return F(u,E.precision=x,q,H=!0);else return E.precision=x,u;u=l,i+=2}}function sa(n){return String(n.s*n.s/0)}function bn(n,e){var t,r,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(r=e.search(/e/i))>0?(t<0&&(t=r),t+=+e.slice(r+1),e=e.substring(0,r)):t<0&&(t=e.length),r=0;e.charCodeAt(r)===48;r++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(r,i),e){if(i-=r,n.e=t=t-r-1,n.d=[],r=(t+1)%Z,t<0&&(r+=Z),r<i){for(r&&n.d.push(+e.slice(0,r)),i-=Z;r<i;)n.d.push(+e.slice(r,r+=Z));e=e.slice(r),r=Z-e.length}else r-=i;for(;r--;)e+="0";n.d.push(+e),H&&(n.e>n.constructor.maxE?(n.d=null,n.e=NaN):n.e<n.constructor.minE&&(n.e=0,n.d=[0]))}else n.e=0,n.d=[0];return n}function qc(n,e){var t,r,i,s,a,o,u,l,p;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ta.test(e))return bn(n,e)}else if(e==="Infinity"||e==="NaN")return+e||(n.s=NaN),n.e=NaN,n.d=null,n;if(jc.test(e))t=16,e=e.toLowerCase();else if(Ec.test(e))t=2;else if(xc.test(e))t=8;else throw Error(tr+e);for(s=e.search(/p/i),s>0?(u=+e.slice(s+1),e=e.substring(2,s)):e=e.slice(2),s=e.indexOf("."),a=s>=0,r=n.constructor,a&&(e=e.replace(".",""),o=e.length,s=o-s,i=na(r,new r(t),s,s*2)),l=yn(e,t,At),p=l.length-1,s=p;l[s]===0;--s)l.pop();return s<0?new r(n.s*0):(n.e=Mn(l,p),n.d=l,H=!1,a&&(n=le(n,i,o*4)),u&&(n=n.times(Math.abs(u)<54?at(2,u):rn.pow(2,u))),H=!0,n)}function Bc(n,e){var t,r=e.d.length;if(r<3)return e.isZero()?e:Ur(n,2,e,e);t=1.4*Math.sqrt(r),t=t>16?16:t|0,e=e.times(1/An(5,t)),e=Ur(n,2,e,e);for(var i,s=new n(5),a=new n(16),o=new n(20);t--;)i=e.times(e),e=e.times(s.plus(i.times(a.times(i).minus(o))));return e}function Ur(n,e,t,r,i){var s,a,o,u,l=1,p=n.precision,f=Math.ceil(p/Z);for(H=!1,u=t.times(t),o=new n(r);;){if(a=le(o.times(u),new n(e++*e++),p,1),o=i?r.plus(a):r.minus(a),r=le(a.times(u),new n(e++*e++),p,1),a=o.plus(r),a.d[f]!==void 0){for(s=f;a.d[s]===o.d[s]&&s--;);if(s==-1)break}s=o,o=r,r=a,a=s,l++}return H=!0,a.d.length=f+1,a}function An(n,e){for(var t=n;--e;)t*=n;return t}function aa(n,e){var t,r=e.s<0,i=qt(n,n.precision,1),s=i.times(.5);if(e=e.abs(),e.lte(s))return zt=r?4:1,e;if(t=e.divToInt(i),t.isZero())zt=r?3:2;else{if(e=e.minus(t.times(i)),e.lte(s))return zt=$s(t)?r?2:3:r?4:1,e;zt=$s(t)?r?1:4:r?3:2}return e.minus(i).abs()}function Ci(n,e,t,r){var i,s,a,o,u,l,p,f,m,y=n.constructor,k=t!==void 0;if(k?(mt(t,1,rr),r===void 0?r=y.rounding:mt(r,0,8)):(t=y.precision,r=y.rounding),!n.isFinite())p=sa(n);else{for(p=Bt(n),a=p.indexOf("."),k?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,a>=0&&(p=p.replace(".",""),m=new y(1),m.e=p.length-a,m.d=yn(Bt(m),10,i),m.e=m.d.length),f=yn(p,10,i),s=u=f.length;f[--u]==0;)f.pop();if(!f[0])p=k?"0p+0":"0";else{if(a<0?s--:(n=new y(n),n.d=f,n.e=s,n=le(n,m,t,r,0,i),f=n.d,s=n.e,l=Xs),a=f[t],o=i/2,l=l||f[t+1]!==void 0,l=r<4?(a!==void 0||l)&&(r===0||r===(n.s<0?3:2)):a>o||a===o&&(r===4||l||r===6&&f[t-1]&1||r===(n.s<0?8:7)),f.length=t,l)for(;++f[--t]>i-1;)f[t]=0,t||(++s,f.unshift(1));for(u=f.length;!f[u-1];--u);for(a=0,p="";a<u;a++)p+=yi.charAt(f[a]);if(k){if(u>1)if(e==16||e==8){for(a=e==16?4:3,--u;u%a;u++)p+="0";for(f=yn(p,i,e),u=f.length;!f[u-1];--u);for(a=1,p="1.";a<u;a++)p+=yi.charAt(f[a])}else p=p.charAt(0)+"."+p.slice(1);p=p+(s<0?"p":"p+")+s}else if(s<0){for(;++s;)p="0"+p;p="0."+p}else if(++s>u)for(s-=u;s--;)p+="0";else s<u&&(p=p.slice(0,s)+"."+p.slice(s))}p=(e==16?"0x":e==2?"0b":e==8?"0o":"")+p}return n.s<0?"-"+p:p}function Ns(n,e){if(n.length>e)return n.length=e,!0}function Dc(n){return new this(n).abs()}function $c(n){return new this(n).acos()}function Nc(n){return new this(n).acosh()}function Uc(n,e){return new this(n).plus(e)}function Fc(n){return new this(n).asin()}function Lc(n){return new this(n).asinh()}function Vc(n){return new this(n).atan()}function zc(n){return new this(n).atanh()}function Gc(n,e){n=new this(n),e=new this(e);var t,r=this.precision,i=this.rounding,s=r+4;return!n.s||!e.s?t=new this(NaN):!n.d&&!e.d?(t=qt(this,s,1).times(e.s>0?.25:.75),t.s=n.s):!e.d||n.isZero()?(t=e.s<0?qt(this,r,i):new this(0),t.s=n.s):!n.d||e.isZero()?(t=qt(this,s,1).times(.5),t.s=n.s):e.s<0?(this.precision=s,this.rounding=1,t=this.atan(le(n,e,s,1)),e=qt(this,s,1),this.precision=r,this.rounding=i,t=n.s<0?t.minus(e):t.plus(e)):t=this.atan(le(n,e,s,1)),t}function Zc(n){return new this(n).cbrt()}function Qc(n){return F(n=new this(n),n.e+1,2)}function Wc(n,e,t){return new this(n).clamp(e,t)}function Hc(n){if(!n||typeof n!="object")throw Error(Sn+"Object expected");var e,t,r,i=n.defaults===!0,s=["precision",1,rr,"rounding",0,8,"toExpNeg",-Nr,0,"toExpPos",0,Nr,"maxE",0,Nr,"minE",-Nr,0,"modulo",0,9];for(e=0;e<s.length;e+=3)if(t=s[e],i&&(this[t]=bi[t]),(r=n[t])!==void 0)if(ht(r)===r&&r>=s[e+1]&&r<=s[e+2])this[t]=r;else throw Error(tr+t+": "+r);if(t="crypto",i&&(this[t]=bi[t]),(r=n[t])!==void 0)if(r===!0||r===!1||r===0||r===1)if(r)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(Ys);else this[t]=!1;else throw Error(tr+t+": "+r);return this}function Kc(n){return new this(n).cos()}function Xc(n){return new this(n).cosh()}function oa(n){var e,t,r;function i(s){var a,o,u,l=this;if(!(l instanceof i))return new i(s);if(l.constructor=i,Us(s)){l.s=s.s,H?!s.d||s.e>i.maxE?(l.e=NaN,l.d=null):s.e<i.minE?(l.e=0,l.d=[0]):(l.e=s.e,l.d=s.d.slice()):(l.e=s.e,l.d=s.d?s.d.slice():s.d);return}if(u=typeof s,u==="number"){if(s===0){l.s=1/s<0?-1:1,l.e=0,l.d=[0];return}if(s<0?(s=-s,l.s=-1):l.s=1,s===~~s&&s<1e7){for(a=0,o=s;o>=10;o/=10)a++;H?a>i.maxE?(l.e=NaN,l.d=null):a<i.minE?(l.e=0,l.d=[0]):(l.e=a,l.d=[s]):(l.e=a,l.d=[s]);return}if(s*0!==0){s||(l.s=NaN),l.e=NaN,l.d=null;return}return bn(l,s.toString())}if(u==="string")return(o=s.charCodeAt(0))===45?(s=s.slice(1),l.s=-1):(o===43&&(s=s.slice(1)),l.s=1),ta.test(s)?bn(l,s):qc(l,s);if(u==="bigint")return s<0?(s=-s,l.s=-1):l.s=1,bn(l,s.toString());throw Error(tr+s)}if(i.prototype=O,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=Hc,i.clone=oa,i.isDecimal=Us,i.abs=Dc,i.acos=$c,i.acosh=Nc,i.add=Uc,i.asin=Fc,i.asinh=Lc,i.atan=Vc,i.atanh=zc,i.atan2=Gc,i.cbrt=Zc,i.ceil=Qc,i.clamp=Wc,i.cos=Kc,i.cosh=Xc,i.div=Jc,i.exp=Yc,i.floor=eu,i.hypot=tu,i.ln=ru,i.log=nu,i.log10=su,i.log2=iu,i.max=au,i.min=ou,i.mod=cu,i.mul=uu,i.pow=lu,i.random=du,i.round=hu,i.sign=pu,i.sin=mu,i.sinh=fu,i.sqrt=gu,i.sub=_u,i.sum=yu,i.tan=bu,i.tanh=wu,i.trunc=vu,n===void 0&&(n={}),n&&n.defaults!==!0)for(r=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<r.length;)n.hasOwnProperty(t=r[e++])||(n[t]=this[t]);return i.config(n),i}function Jc(n,e){return new this(n).div(e)}function Yc(n){return new this(n).exp()}function eu(n){return F(n=new this(n),n.e+1,3)}function tu(){var n,e,t=new this(0);for(H=!1,n=0;n<arguments.length;)if(e=new this(arguments[n++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return H=!0,new this(1/0);t=e}return H=!0,t.sqrt()}function Us(n){return n instanceof rn||n&&n.toStringTag===ea||!1}function ru(n){return new this(n).ln()}function nu(n,e){return new this(n).log(e)}function iu(n){return new this(n).log(2)}function su(n){return new this(n).log(10)}function au(){return ia(this,arguments,-1)}function ou(){return ia(this,arguments,1)}function cu(n,e){return new this(n).mod(e)}function uu(n,e){return new this(n).mul(e)}function lu(n,e){return new this(n).pow(e)}function du(n){var e,t,r,i,s=0,a=new this(1),o=[];if(n===void 0?n=this.precision:mt(n,1,rr),r=Math.ceil(n/Z),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(r));s<r;)i=e[s],i>=429e7?e[s]=crypto.getRandomValues(new Uint32Array(1))[0]:o[s++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(r*=4);s<r;)i=e[s]+(e[s+1]<<8)+(e[s+2]<<16)+((e[s+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,s):(o.push(i%1e7),s+=4);s=r/4}else throw Error(Ys);else for(;s<r;)o[s++]=Math.random()*1e7|0;for(r=o[--s],n%=Z,r&&n&&(i=at(10,Z-n),o[s]=(r/i|0)*i);o[s]===0;s--)o.pop();if(s<0)t=0,o=[0];else{for(t=-1;o[0]===0;t-=Z)o.shift();for(r=1,i=o[0];i>=10;i/=10)r++;r<Z&&(t-=Z-r)}return a.e=t,a.d=o,a}function hu(n){return F(n=new this(n),n.e+1,this.rounding)}function pu(n){return n=new this(n),n.d?n.d[0]?n.s:0*n.s:n.s||NaN}function mu(n){return new this(n).sin()}function fu(n){return new this(n).sinh()}function gu(n){return new this(n).sqrt()}function _u(n,e){return new this(n).sub(e)}function yu(){var n=0,e=arguments,t=new this(e[n]);for(H=!1;t.s&&++n<e.length;)t=t.plus(e[n]);return H=!0,F(t,this.precision,this.rounding)}function bu(n){return new this(n).tan()}function wu(n){return new this(n).tanh()}function vu(n){return F(n=new this(n),n.e+1,1)}O[Symbol.for("nodejs.util.inspect.custom")]=O.toString;O[Symbol.toStringTag]="Decimal";var rn=O.constructor=oa(bi);vn=new rn(vn);kn=new rn(kn);var Tn=rn;function wn(n){return Tn.isDecimal(n)?n:new Tn(n===void 0?0:n)}var ca="0x2::sui::SUI",ku="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI";var Cu=class tt{static totalBalance(e,t){let r=BigInt(0);return e.forEach(i=>{t===i.coin_type&&(r+=BigInt(i.balance))}),r}static getCoinAssets(e,t){let r=[];return t.forEach(i=>{Ls(i.coin_type)===Ls(e)&&r.push(i)}),r}static isSuiCoin(e){return er(e).full_address===ca}static selectCoinObjectIdGreaterThanOrEqual(e,t,r=[]){let i=tt.selectCoinAssetGreaterThanOrEqual(e,t,r),s=i.selected_coins.map(u=>u.coin_object_id),a=i.remain_coins,o=i.selected_coins.map(u=>u.balance.toString());return{object_array:s,remain_coins:a,amount_array:o}}static selectCoinAssetGreaterThanOrEqual(e,t,r=[]){let i=tt.sortByBalance(e.filter(l=>!r.includes(l.coin_object_id))),s=tt.calculateTotalBalance(i);if(s<t)return{selected_coins:[],remain_coins:i};if(s===t)return{selected_coins:i,remain_coins:[]};let a=BigInt(0),o=[],u=[...i];for(;a<s;){let l=t-a,p=u.findIndex(m=>m.balance>=l);if(p!==-1){o.push(u[p]),u.splice(p,1);break}let f=u.pop();f.balance>0&&(o.push(f),a+=f.balance)}return{selected_coins:tt.sortByBalance(o),remain_coins:tt.sortByBalance(u)}}static sortByBalance(e){return e.sort((t,r)=>t.balance<r.balance?-1:t.balance>r.balance?1:0)}static sortByBalanceDes(e){return e.sort((t,r)=>t.balance>r.balance?-1:t.balance<r.balance?0:1)}static calculateTotalBalance(e){return e.reduce((t,r)=>t+r.balance,BigInt(0))}static buildCoinForAmount(e,t,r,i,s=!0,a=!0){let o=tt.getCoinAssets(i,t);if(r===BigInt(0))return this.buildZeroValueCoin(t,e,i,s);let u=tt.calculateTotalBalance(o);if(u<r)throw new Error(`The amount(${u}) is Insufficient balance for ${i} , expect ${r} `);return this.buildCoin(e,t,o,r,i,s,a)}static buildCoinWithBalance(e,t,r){return e===BigInt(0)&&tt.isSuiCoin(t)?r.add(Ds({balance:e,useGasCoin:!1})):r.add(Ds({balance:e,type:t}))}static buildVectorCoin(e,t,r,i,s,a=!0){if(tt.isSuiCoin(s)){let m=e.splitCoins(e.gas,[e.pure.u64(i)]);return{selected_coins:[],target_coin:m,remain_coins:t,target_coin_amount:i.toString(),is_mint_zero_coin:!1,original_spited_coin:e.gas}}let{original_spited_coin:o,target_coin:u,target_coin_amount:l,remain_coins:p,selected_coins:f}=this.buildSpitTargeCoin(e,i,r,a);return a?{target_coin:e.makeMoveVec({elements:[u]}),selected_coins:f,remain_coins:p,target_coin_amount:l,is_mint_zero_coin:!1,original_spited_coin:o}:{selected_coins:f,target_coin:e.makeMoveVec({elements:f.map(m=>e.object(m))}),remain_coins:p,target_coin_amount:l,is_mint_zero_coin:!1}}static buildOneCoin(e,t,r,i,s=!0){if(tt.isSuiCoin(i)){if(r===0n&&t.length>1){let u=tt.selectCoinObjectIdGreaterThanOrEqual(t,r);return{selected_coins:u.object_array,target_coin:e.object(u.object_array[0]),remain_coins:u.remain_coins,target_coin_amount:u.amount_array[0],is_mint_zero_coin:!1}}let a=tt.selectCoinObjectIdGreaterThanOrEqual(t,r),o=e.splitCoins(e.gas,[e.pure.u64(r)]);return{selected_coins:[],target_coin:o,remain_coins:a.remain_coins,target_coin_amount:r.toString(),is_mint_zero_coin:!1,original_spited_coin:e.gas}}return this.buildSpitTargeCoin(e,r,t,s)}static buildSpitTargeCoin(e,t,r,i){let s=tt.selectCoinObjectIdGreaterThanOrEqual(r,t),a=s.amount_array.reduce((k,T)=>Number(k)+Number(T),0).toString(),o=s.object_array,[u,...l]=o,p=e.object(u),f=p,m=s.amount_array.reduce((k,T)=>Number(k)+Number(T),0).toString(),y;return l.length>0&&e.mergeCoins(p,l.map(k=>e.object(k))),i&&Number(a)>Number(t)&&(f=e.splitCoins(p,[e.pure.u64(t)]),y=p),{original_spited_coin:y,target_coin:f,target_coin_amount:m,remain_coins:s.remain_coins,selected_coins:s.object_array,is_mint_zero_coin:!1}}static buildCoin(e,t,r,i,s,a=!0,o=!0){return a?this.buildVectorCoin(e,t,r,i,s,o):this.buildOneCoin(e,r,i,s,o)}static buildZeroValueCoin(e,t,r,i=!0){let s=this.callMintZeroValueCoin(t,r),a;return i?a=t.makeMoveVec({elements:[s]}):a=s,{target_coin:a,remain_coins:e,selected_coins:[],is_mint_zero_coin:!0,target_coin_amount:"0"}}static buildCoinForAmountInterval(e,t,r,i,s=!0,a=!0){let o=tt.getCoinAssets(i,t);if(r.amount_first===BigInt(0))return o.length>0?this.buildCoin(e,[...t],[...o],r.amount_first,i,s,a):this.buildZeroValueCoin(t,e,i,s);let u=tt.calculateTotalBalance(o);if(u>=r.amount_first)return this.buildCoin(e,[...t],[...o],r.amount_first,i,s,a);if(u<r.amount_second)throw new Error(`The amount(${u}) is Insufficient balance for ${i} , expect ${r.amount_second} `);return this.buildCoin(e,[...t],[...o],r.amount_second,i,s,a)}static{this.callMintZeroValueCoin=(e,t)=>e.moveCall({target:"0x2::coin::zero",typeArguments:[t]})}static fromBalance(e,t,r){return r.moveCall({target:"0x2::coin::from_balance",typeArguments:[t],arguments:[e]})}static intoBalance(e,t,r){return r.moveCall({target:"0x2::coin::into_balance",typeArguments:[t],arguments:[typeof e=="string"?r.object(e):e]})}static mintBalanceZero(e,t){return t.moveCall({target:"0x2::balance::zero",typeArguments:[e],arguments:[]})}static destroyBalanceZero(e,t,r){return r.moveCall({target:"0x2::balance::destroy_zero",typeArguments:[t],arguments:[e]})}static getCoinAmountObjId(e,t){let r=e.amount_coin_array.find(i=>!i.used&&wn(i.amount).eq(t)?(i.used=!0,!0):!1);return r?r.coin_object_id:qs("CoinNotFound",`Coin not found for ${t} ${e.coin_type}`)}static buildMultiCoinInput(e,t,r,i){let s=tt.getCoinAssets(r,t);if(tt.isSuiCoin(r)){let f=e.splitCoins(e.gas,i.map(m=>e.pure.u64(m)));return{amount_coin_array:i.map((m,y)=>({coin_object_id:f[y],amount:m.toString(),used:!1})),coin_type:r,remain_coins:s}}let a=i.reduce((f,m)=>f+m,BigInt(0)),o=tt.selectCoinObjectIdGreaterThanOrEqual(s,a);if(o.object_array.length===0)return qs("InsufficientBalance",`No enough coins for ${r} expect ${a} actual ${tt.calculateTotalBalance(s)}`);let[u,...l]=o.object_array;l.length>0&&e.mergeCoins(u,[...l]);let p=e.splitCoins(u,i.map(f=>e.pure.u64(f)));return{amount_coin_array:i.map((f,m)=>({coin_object_id:p[m],amount:f.toString(),used:!1})),remain_coins:o.remain_coins,coin_type:r}}};function Tu(n){return n.startsWith("0x")?`${n.slice(2)}`:n}function Fs(n,...e){let t=Array.isArray(e[e.length-1])?e.pop():[],r=[n,...e].filter(Boolean).join("::");return t&&t.length&&(r+=`<${t.join(", ")}>`),r}function er(n){try{let e=n.replace(/\s/g,""),t=e.match(/(<.+>)$/)?.[0]?.match(/(\w+::\w+::\w+)(?:<.*?>(?!>))?/g);if(t){e=e.slice(0,e.indexOf("<"));let s={...er(e),type_arguments:t.map(a=>er(a).source_address)};return s.type_arguments=s.type_arguments.map(a=>Cu.isSuiCoin(a)?a:er(a).source_address),s.source_address=Fs(s.full_address,s.type_arguments),s}let r=e.split("::"),i={full_address:e,address:e===ca||e===ku?"0x2":Ks(r[0]),module:r[1],name:r[2],type_arguments:[],source_address:""};return i.full_address=`${i.address}::${i.module}::${i.name}`,i.source_address=Fs(i.full_address,i.type_arguments),i}catch{return{full_address:n,address:"",module:"",name:"",type_arguments:[],source_address:n}}}function Ls(n){return er(n).source_address}var ki=(n,e=!0)=>{let t=n.split("::"),r=t.shift(),i=Ks(r);return e&&(i=Tu(i)),`${i}::${t.join("::")}`};function Su(n){return`0x${Buffer.from(n).toString("hex")}`}function Au(n,e,t,r){let i;switch(r){case"address":i=Xt.Address.serialize(e).toBytes();break;case"u8":i=Xt.u8().serialize(e).toBytes();break;case"u16":i=Xt.u16().serialize(e).toBytes();break;case"u32":i=Xt.u32().serialize(e).toBytes();break;case"u64":i=Xt.u64().serialize(e).toBytes();break;case"u128":i=Xt.u128().serialize(e).toBytes();break;case"u256":i=Xt.u256().serialize(e).toBytes();break;case"string":i=Xt.string().serialize(e).toBytes();break;default:throw new Error(`Unsupported value type: ${r}`)}return Mu(n,t,i)}var Ou=nn(`
20
+ Clients should implement reconnection logic to maintain continuous price updates.`,requestFormat:"json",parameters:[{name:"ids[]",type:"Query",schema:V.array(fn)},{name:"encoding",type:"Query",schema:V.enum(["hex","base64"]).optional()},{name:"parsed",type:"Query",schema:V.boolean().optional()},{name:"allow_unordered",type:"Query",schema:V.boolean().optional()},{name:"benchmarks_only",type:"Query",schema:V.boolean().optional()},{name:"ignore_invalid_price_ids",type:"Query",schema:V.boolean().optional()}],response:gn,errors:[{status:404,description:"Price ids not found",schema:V.void()}]},{method:"get",path:"/v2/updates/publisher_stake_caps/latest",alias:"latest_publisher_stake_caps",description:"Get the most recent publisher stake caps update data.",requestFormat:"json",parameters:[{name:"encoding",type:"Query",schema:V.enum(["hex","base64"]).optional()},{name:"parsed",type:"Query",schema:V.boolean().optional()}],response:qs}]),cd=new Ms(mc);var fc=5e3,gc=3,_n=class{baseURL;timeout;httpRetries;headers;accessToken;constructor(e,t){this.baseURL=e,this.timeout=t?.timeout??fc,this.httpRetries=t?.httpRetries??gc,this.headers=t?.headers??{},this.accessToken=t?.accessToken}async httpRequest(e,t,r,i=this.httpRetries,s=100+Math.floor(Math.random()*100)){try{let a={};this.accessToken!==void 0&&(a.Authorization=`Bearer ${this.accessToken}`);let o=await fetch(e,{...r,signal:AbortSignal.any([...r?.signal?[r.signal]:[],AbortSignal.timeout(this.timeout)]),headers:{...a,...this.headers,...r?.headers}});if(!o.ok){let l=await o.text();throw new Error(`HTTP error! status: ${o.status.toString()}${l?`, body: ${l}`:""}`)}let u=await o.json();return t.parse(u)}catch(a){if(i>0&&!(a instanceof Error&&a.name==="AbortError"))return await new Promise(o=>setTimeout(o,s)),this.httpRequest(e,t,r,i-1,s*2);throw a}}async getPriceFeeds({fetchOptions:e,...t}={}){let r=this.buildURL("price_feeds");if(t){let i=Wr(t);this.appendUrlSearchParams(r,i)}return await this.httpRequest(r.toString(),Xr.PriceFeedMetadata.array(),e)}async getLatestPublisherCaps({fetchOptions:e,...t}={}){let r=this.buildURL("updates/publisher_stake_caps/latest");return t&&this.appendUrlSearchParams(r,t),await this.httpRequest(r.toString(),Xr.LatestPublisherStakeCapsUpdateDataResponse,e)}async getLatestPriceUpdates(e,t,r){let i=this.buildURL("updates/price/latest");for(let s of e)i.searchParams.append("ids[]",s);if(t){let s=Wr(t);this.appendUrlSearchParams(i,s)}return this.httpRequest(i.toString(),Xr.PriceUpdate,r)}async getPriceUpdatesAtTimestamp(e,t,r,i){let s=this.buildURL(`updates/price/${e.toString()}`);for(let a of t)s.searchParams.append("ids[]",a);if(r){let a=Wr(r);this.appendUrlSearchParams(s,a)}return this.httpRequest(s.toString(),Xr.PriceUpdate,i)}async getPriceUpdatesStream(e,t){let r=this.buildURL("updates/price/stream");for(let s of e)r.searchParams.append("ids[]",s);if(t){let s=Wr(t);this.appendUrlSearchParams(r,s)}let i={};return this.accessToken!==void 0&&(i.Authorization=`Bearer ${this.accessToken}`),new or(r.toString(),{fetch:(s,a)=>fetch(s,{...a,headers:{...a?.headers,...i,...this.headers}})})}appendUrlSearchParams(e,t){for(let[r,i]of Object.entries(t))i!==void 0&&e.searchParams.append(r,String(i))}buildURL(e){return new URL(`./v2/${e}`,`${this.baseURL}${this.baseURL.endsWith("/")?"":"/"}`)}};import{bcs as yt}from"@mysten/sui/bcs";import{SUI_CLOCK_OBJECT_ID as _i}from"@mysten/sui/utils";var _c=Object.create,Hs=Object.defineProperty,yc=Object.getOwnPropertyDescriptor,bc=Object.getOwnPropertyNames,wc=Object.getPrototypeOf,vc=Object.prototype.hasOwnProperty,kc=(n=>typeof sr<"u"?sr:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof sr<"u"?sr:e)[t]}):n)(function(n){if(typeof sr<"u")return sr.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')}),Cc=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),Tc=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of bc(e))!vc.call(n,i)&&i!==t&&Hs(n,i,{get:()=>e[i],enumerable:!(r=yc(e,i))||r.enumerable});return n},en=(n,e,t)=>(t=n!=null?_c(wc(n)):{},Tc(e||!n||!n.__esModule?Hs(t,"default",{value:n,enumerable:!0}):t,n)),tn=Cc((n,e)=>{"use strict";(function(t,r){"use strict";function i(c,h){if(!c)throw new Error(h||"Assertion failed")}function s(c,h){c.super_=h;var g=function(){};g.prototype=h.prototype,c.prototype=new g,c.prototype.constructor=c}function a(c,h,g){if(a.isBN(c))return c;this.negative=0,this.words=null,this.length=0,this.red=null,c!==null&&((h==="le"||h==="be")&&(g=h,h=10),this._init(c||0,h||10,g||"be"))}typeof t=="object"?t.exports=a:r.BN=a,a.BN=a,a.wordSize=26;var o;try{typeof window<"u"&&typeof window.Buffer<"u"?o=window.Buffer:o=kc("buffer").Buffer}catch{}a.isBN=function(c){return c instanceof a?!0:c!==null&&typeof c=="object"&&c.constructor.wordSize===a.wordSize&&Array.isArray(c.words)},a.max=function(c,h){return c.cmp(h)>0?c:h},a.min=function(c,h){return c.cmp(h)<0?c:h},a.prototype._init=function(c,h,g){if(typeof c=="number")return this._initNumber(c,h,g);if(typeof c=="object")return this._initArray(c,h,g);h==="hex"&&(h=16),i(h===(h|0)&&h>=2&&h<=36),c=c.toString().replace(/\s+/g,"");var _=0;c[0]==="-"&&(_++,this.negative=1),_<c.length&&(h===16?this._parseHex(c,_,g):(this._parseBase(c,h,_),g==="le"&&this._initArray(this.toArray(),h,g)))},a.prototype._initNumber=function(c,h,g){c<0&&(this.negative=1,c=-c),c<67108864?(this.words=[c&67108863],this.length=1):c<4503599627370496?(this.words=[c&67108863,c/67108864&67108863],this.length=2):(i(c<9007199254740992),this.words=[c&67108863,c/67108864&67108863,1],this.length=3),g==="le"&&this._initArray(this.toArray(),h,g)},a.prototype._initArray=function(c,h,g){if(i(typeof c.length=="number"),c.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(c.length/3),this.words=new Array(this.length);for(var _=0;_<this.length;_++)this.words[_]=0;var w,T,M=0;if(g==="be")for(_=c.length-1,w=0;_>=0;_-=3)T=c[_]|c[_-1]<<8|c[_-2]<<16,this.words[w]|=T<<M&67108863,this.words[w+1]=T>>>26-M&67108863,M+=24,M>=26&&(M-=26,w++);else if(g==="le")for(_=0,w=0;_<c.length;_+=3)T=c[_]|c[_+1]<<8|c[_+2]<<16,this.words[w]|=T<<M&67108863,this.words[w+1]=T>>>26-M&67108863,M+=24,M>=26&&(M-=26,w++);return this._strip()};function u(c,h){var g=c.charCodeAt(h);if(g>=48&&g<=57)return g-48;if(g>=65&&g<=70)return g-55;if(g>=97&&g<=102)return g-87;i(!1,"Invalid character in "+c)}function l(c,h,g){var _=u(c,g);return g-1>=h&&(_|=u(c,g-1)<<4),_}a.prototype._parseHex=function(c,h,g){this.length=Math.ceil((c.length-h)/6),this.words=new Array(this.length);for(var _=0;_<this.length;_++)this.words[_]=0;var w=0,T=0,M;if(g==="be")for(_=c.length-1;_>=h;_-=2)M=l(c,h,_)<<w,this.words[T]|=M&67108863,w>=18?(w-=18,T+=1,this.words[T]|=M>>>26):w+=8;else{var b=c.length-h;for(_=b%2===0?h+1:h;_<c.length;_+=2)M=l(c,h,_)<<w,this.words[T]|=M&67108863,w>=18?(w-=18,T+=1,this.words[T]|=M>>>26):w+=8}this._strip()};function p(c,h,g,_){for(var w=0,T=0,M=Math.min(c.length,g),b=h;b<M;b++){var d=c.charCodeAt(b)-48;w*=_,d>=49?T=d-49+10:d>=17?T=d-17+10:T=d,i(d>=0&&T<_,"Invalid character"),w+=T}return w}a.prototype._parseBase=function(c,h,g){this.words=[0],this.length=1;for(var _=0,w=1;w<=67108863;w*=h)_++;_--,w=w/h|0;for(var T=c.length-g,M=T%_,b=Math.min(T,T-M)+g,d=0,v=g;v<b;v+=_)d=p(c,v,v+_,h),this.imuln(w),this.words[0]+d<67108864?this.words[0]+=d:this._iaddn(d);if(M!==0){var D=1;for(d=p(c,v,c.length,h),v=0;v<M;v++)D*=h;this.imuln(D),this.words[0]+d<67108864?this.words[0]+=d:this._iaddn(d)}this._strip()},a.prototype.copy=function(c){c.words=new Array(this.length);for(var h=0;h<this.length;h++)c.words[h]=this.words[h];c.length=this.length,c.negative=this.negative,c.red=this.red};function f(c,h){c.words=h.words,c.length=h.length,c.negative=h.negative,c.red=h.red}if(a.prototype._move=function(c){f(c,this)},a.prototype.clone=function(){var c=new a(null);return this.copy(c),c},a.prototype._expand=function(c){for(;this.length<c;)this.words[this.length++]=0;return this},a.prototype._strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},a.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{a.prototype[Symbol.for("nodejs.util.inspect.custom")]=m}catch{a.prototype.inspect=m}else a.prototype.inspect=m;function m(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var y=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],k=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],C=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];a.prototype.toString=function(c,h){c=c||10,h=h|0||1;var g;if(c===16||c==="hex"){g="";for(var _=0,w=0,T=0;T<this.length;T++){var M=this.words[T],b=((M<<_|w)&16777215).toString(16);w=M>>>24-_&16777215,_+=2,_>=26&&(_-=26,T--),w!==0||T!==this.length-1?g=y[6-b.length]+b+g:g=b+g}for(w!==0&&(g=w.toString(16)+g);g.length%h!==0;)g="0"+g;return this.negative!==0&&(g="-"+g),g}if(c===(c|0)&&c>=2&&c<=36){var d=k[c],v=C[c];g="";var D=this.clone();for(D.negative=0;!D.isZero();){var $=D.modrn(v).toString(c);D=D.idivn(v),D.isZero()?g=$+g:g=y[d-$.length]+$+g}for(this.isZero()&&(g="0"+g);g.length%h!==0;)g="0"+g;return this.negative!==0&&(g="-"+g),g}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var c=this.words[0];return this.length===2?c+=this.words[1]*67108864:this.length===3&&this.words[2]===1?c+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-c:c},a.prototype.toJSON=function(){return this.toString(16,2)},o&&(a.prototype.toBuffer=function(c,h){return this.toArrayLike(o,c,h)}),a.prototype.toArray=function(c,h){return this.toArrayLike(Array,c,h)};var A=function(c,h){return c.allocUnsafe?c.allocUnsafe(h):new c(h)};a.prototype.toArrayLike=function(c,h,g){this._strip();var _=this.byteLength(),w=g||Math.max(1,_);i(_<=w,"byte array longer than desired length"),i(w>0,"Requested array length <= 0");var T=A(c,w),M=h==="le"?"LE":"BE";return this["_toArrayLike"+M](T,_),T},a.prototype._toArrayLikeLE=function(c,h){for(var g=0,_=0,w=0,T=0;w<this.length;w++){var M=this.words[w]<<T|_;c[g++]=M&255,g<c.length&&(c[g++]=M>>8&255),g<c.length&&(c[g++]=M>>16&255),T===6?(g<c.length&&(c[g++]=M>>24&255),_=0,T=0):(_=M>>>24,T+=2)}if(g<c.length)for(c[g++]=_;g<c.length;)c[g++]=0},a.prototype._toArrayLikeBE=function(c,h){for(var g=c.length-1,_=0,w=0,T=0;w<this.length;w++){var M=this.words[w]<<T|_;c[g--]=M&255,g>=0&&(c[g--]=M>>8&255),g>=0&&(c[g--]=M>>16&255),T===6?(g>=0&&(c[g--]=M>>24&255),_=0,T=0):(_=M>>>24,T+=2)}if(g>=0)for(c[g--]=_;g>=0;)c[g--]=0},Math.clz32?a.prototype._countBits=function(c){return 32-Math.clz32(c)}:a.prototype._countBits=function(c){var h=c,g=0;return h>=4096&&(g+=13,h>>>=13),h>=64&&(g+=7,h>>>=7),h>=8&&(g+=4,h>>>=4),h>=2&&(g+=2,h>>>=2),g+h},a.prototype._zeroBits=function(c){if(c===0)return 26;var h=c,g=0;return!(h&8191)&&(g+=13,h>>>=13),!(h&127)&&(g+=7,h>>>=7),!(h&15)&&(g+=4,h>>>=4),!(h&3)&&(g+=2,h>>>=2),!(h&1)&&g++,g},a.prototype.bitLength=function(){var c=this.words[this.length-1],h=this._countBits(c);return(this.length-1)*26+h};function E(c){for(var h=new Array(c.bitLength()),g=0;g<h.length;g++){var _=g/26|0,w=g%26;h[g]=c.words[_]>>>w&1}return h}a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var c=0,h=0;h<this.length;h++){var g=this._zeroBits(this.words[h]);if(c+=g,g!==26)break}return c},a.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},a.prototype.toTwos=function(c){return this.negative!==0?this.abs().inotn(c).iaddn(1):this.clone()},a.prototype.fromTwos=function(c){return this.testn(c-1)?this.notn(c).iaddn(1).ineg():this.clone()},a.prototype.isNeg=function(){return this.negative!==0},a.prototype.neg=function(){return this.clone().ineg()},a.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},a.prototype.iuor=function(c){for(;this.length<c.length;)this.words[this.length++]=0;for(var h=0;h<c.length;h++)this.words[h]=this.words[h]|c.words[h];return this._strip()},a.prototype.ior=function(c){return i((this.negative|c.negative)===0),this.iuor(c)},a.prototype.or=function(c){return this.length>c.length?this.clone().ior(c):c.clone().ior(this)},a.prototype.uor=function(c){return this.length>c.length?this.clone().iuor(c):c.clone().iuor(this)},a.prototype.iuand=function(c){var h;this.length>c.length?h=c:h=this;for(var g=0;g<h.length;g++)this.words[g]=this.words[g]&c.words[g];return this.length=h.length,this._strip()},a.prototype.iand=function(c){return i((this.negative|c.negative)===0),this.iuand(c)},a.prototype.and=function(c){return this.length>c.length?this.clone().iand(c):c.clone().iand(this)},a.prototype.uand=function(c){return this.length>c.length?this.clone().iuand(c):c.clone().iuand(this)},a.prototype.iuxor=function(c){var h,g;this.length>c.length?(h=this,g=c):(h=c,g=this);for(var _=0;_<g.length;_++)this.words[_]=h.words[_]^g.words[_];if(this!==h)for(;_<h.length;_++)this.words[_]=h.words[_];return this.length=h.length,this._strip()},a.prototype.ixor=function(c){return i((this.negative|c.negative)===0),this.iuxor(c)},a.prototype.xor=function(c){return this.length>c.length?this.clone().ixor(c):c.clone().ixor(this)},a.prototype.uxor=function(c){return this.length>c.length?this.clone().iuxor(c):c.clone().iuxor(this)},a.prototype.inotn=function(c){i(typeof c=="number"&&c>=0);var h=Math.ceil(c/26)|0,g=c%26;this._expand(h),g>0&&h--;for(var _=0;_<h;_++)this.words[_]=~this.words[_]&67108863;return g>0&&(this.words[_]=~this.words[_]&67108863>>26-g),this._strip()},a.prototype.notn=function(c){return this.clone().inotn(c)},a.prototype.setn=function(c,h){i(typeof c=="number"&&c>=0);var g=c/26|0,_=c%26;return this._expand(g+1),h?this.words[g]=this.words[g]|1<<_:this.words[g]=this.words[g]&~(1<<_),this._strip()},a.prototype.iadd=function(c){var h;if(this.negative!==0&&c.negative===0)return this.negative=0,h=this.isub(c),this.negative^=1,this._normSign();if(this.negative===0&&c.negative!==0)return c.negative=0,h=this.isub(c),c.negative=1,h._normSign();var g,_;this.length>c.length?(g=this,_=c):(g=c,_=this);for(var w=0,T=0;T<_.length;T++)h=(g.words[T]|0)+(_.words[T]|0)+w,this.words[T]=h&67108863,w=h>>>26;for(;w!==0&&T<g.length;T++)h=(g.words[T]|0)+w,this.words[T]=h&67108863,w=h>>>26;if(this.length=g.length,w!==0)this.words[this.length]=w,this.length++;else if(g!==this)for(;T<g.length;T++)this.words[T]=g.words[T];return this},a.prototype.add=function(c){var h;return c.negative!==0&&this.negative===0?(c.negative=0,h=this.sub(c),c.negative^=1,h):c.negative===0&&this.negative!==0?(this.negative=0,h=c.sub(this),this.negative=1,h):this.length>c.length?this.clone().iadd(c):c.clone().iadd(this)},a.prototype.isub=function(c){if(c.negative!==0){c.negative=0;var h=this.iadd(c);return c.negative=1,h._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(c),this.negative=1,this._normSign();var g=this.cmp(c);if(g===0)return this.negative=0,this.length=1,this.words[0]=0,this;var _,w;g>0?(_=this,w=c):(_=c,w=this);for(var T=0,M=0;M<w.length;M++)h=(_.words[M]|0)-(w.words[M]|0)+T,T=h>>26,this.words[M]=h&67108863;for(;T!==0&&M<_.length;M++)h=(_.words[M]|0)+T,T=h>>26,this.words[M]=h&67108863;if(T===0&&M<_.length&&_!==this)for(;M<_.length;M++)this.words[M]=_.words[M];return this.length=Math.max(this.length,M),_!==this&&(this.negative=1),this._strip()},a.prototype.sub=function(c){return this.clone().isub(c)};function q(c,h,g){g.negative=h.negative^c.negative;var _=c.length+h.length|0;g.length=_,_=_-1|0;var w=c.words[0]|0,T=h.words[0]|0,M=w*T,b=M&67108863,d=M/67108864|0;g.words[0]=b;for(var v=1;v<_;v++){for(var D=d>>>26,$=d&67108863,z=Math.min(v,h.length-1),K=Math.max(0,v-c.length+1);K<=z;K++){var te=v-K|0;w=c.words[te]|0,T=h.words[K]|0,M=w*T+$,D+=M/67108864|0,$=M&67108863}g.words[v]=$|0,d=D|0}return d!==0?g.words[v]=d|0:g.length--,g._strip()}var x=function(c,h,g){var _=c.words,w=h.words,T=g.words,M=0,b,d,v,D=_[0]|0,$=D&8191,z=D>>>13,K=_[1]|0,te=K&8191,he=K>>>13,Gt=_[2]|0,pe=Gt&8191,_e=Gt>>>13,Fi=_[3]|0,ke=Fi&8191,Ce=Fi>>>13,Ui=_[4]|0,Te=Ui&8191,Se=Ui>>>13,Li=_[5]|0,Me=Li&8191,Ae=Li>>>13,Vi=_[6]|0,Oe=Vi&8191,Ee=Vi>>>13,zi=_[7]|0,je=zi&8191,xe=zi>>>13,Gi=_[8]|0,Ie=Gi&8191,Pe=Gi>>>13,Zi=_[9]|0,Re=Zi&8191,qe=Zi>>>13,Qi=w[0]|0,Be=Qi&8191,De=Qi>>>13,Wi=w[1]|0,$e=Wi&8191,Ne=Wi>>>13,Hi=w[2]|0,Fe=Hi&8191,Ue=Hi>>>13,Ki=w[3]|0,Le=Ki&8191,Ve=Ki>>>13,Xi=w[4]|0,ze=Xi&8191,Ge=Xi>>>13,Ji=w[5]|0,Ze=Ji&8191,Qe=Ji>>>13,Yi=w[6]|0,We=Yi&8191,He=Yi>>>13,es=w[7]|0,Ke=es&8191,Xe=es>>>13,ts=w[8]|0,Je=ts&8191,Ye=ts>>>13,rs=w[9]|0,et=rs&8191,tt=rs>>>13;g.negative=c.negative^h.negative,g.length=19,b=Math.imul($,Be),d=Math.imul($,De),d=d+Math.imul(z,Be)|0,v=Math.imul(z,De);var qn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(qn>>>26)|0,qn&=67108863,b=Math.imul(te,Be),d=Math.imul(te,De),d=d+Math.imul(he,Be)|0,v=Math.imul(he,De),b=b+Math.imul($,$e)|0,d=d+Math.imul($,Ne)|0,d=d+Math.imul(z,$e)|0,v=v+Math.imul(z,Ne)|0;var Bn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Bn>>>26)|0,Bn&=67108863,b=Math.imul(pe,Be),d=Math.imul(pe,De),d=d+Math.imul(_e,Be)|0,v=Math.imul(_e,De),b=b+Math.imul(te,$e)|0,d=d+Math.imul(te,Ne)|0,d=d+Math.imul(he,$e)|0,v=v+Math.imul(he,Ne)|0,b=b+Math.imul($,Fe)|0,d=d+Math.imul($,Ue)|0,d=d+Math.imul(z,Fe)|0,v=v+Math.imul(z,Ue)|0;var Dn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Dn>>>26)|0,Dn&=67108863,b=Math.imul(ke,Be),d=Math.imul(ke,De),d=d+Math.imul(Ce,Be)|0,v=Math.imul(Ce,De),b=b+Math.imul(pe,$e)|0,d=d+Math.imul(pe,Ne)|0,d=d+Math.imul(_e,$e)|0,v=v+Math.imul(_e,Ne)|0,b=b+Math.imul(te,Fe)|0,d=d+Math.imul(te,Ue)|0,d=d+Math.imul(he,Fe)|0,v=v+Math.imul(he,Ue)|0,b=b+Math.imul($,Le)|0,d=d+Math.imul($,Ve)|0,d=d+Math.imul(z,Le)|0,v=v+Math.imul(z,Ve)|0;var $n=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+($n>>>26)|0,$n&=67108863,b=Math.imul(Te,Be),d=Math.imul(Te,De),d=d+Math.imul(Se,Be)|0,v=Math.imul(Se,De),b=b+Math.imul(ke,$e)|0,d=d+Math.imul(ke,Ne)|0,d=d+Math.imul(Ce,$e)|0,v=v+Math.imul(Ce,Ne)|0,b=b+Math.imul(pe,Fe)|0,d=d+Math.imul(pe,Ue)|0,d=d+Math.imul(_e,Fe)|0,v=v+Math.imul(_e,Ue)|0,b=b+Math.imul(te,Le)|0,d=d+Math.imul(te,Ve)|0,d=d+Math.imul(he,Le)|0,v=v+Math.imul(he,Ve)|0,b=b+Math.imul($,ze)|0,d=d+Math.imul($,Ge)|0,d=d+Math.imul(z,ze)|0,v=v+Math.imul(z,Ge)|0;var Nn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Nn>>>26)|0,Nn&=67108863,b=Math.imul(Me,Be),d=Math.imul(Me,De),d=d+Math.imul(Ae,Be)|0,v=Math.imul(Ae,De),b=b+Math.imul(Te,$e)|0,d=d+Math.imul(Te,Ne)|0,d=d+Math.imul(Se,$e)|0,v=v+Math.imul(Se,Ne)|0,b=b+Math.imul(ke,Fe)|0,d=d+Math.imul(ke,Ue)|0,d=d+Math.imul(Ce,Fe)|0,v=v+Math.imul(Ce,Ue)|0,b=b+Math.imul(pe,Le)|0,d=d+Math.imul(pe,Ve)|0,d=d+Math.imul(_e,Le)|0,v=v+Math.imul(_e,Ve)|0,b=b+Math.imul(te,ze)|0,d=d+Math.imul(te,Ge)|0,d=d+Math.imul(he,ze)|0,v=v+Math.imul(he,Ge)|0,b=b+Math.imul($,Ze)|0,d=d+Math.imul($,Qe)|0,d=d+Math.imul(z,Ze)|0,v=v+Math.imul(z,Qe)|0;var Fn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Fn>>>26)|0,Fn&=67108863,b=Math.imul(Oe,Be),d=Math.imul(Oe,De),d=d+Math.imul(Ee,Be)|0,v=Math.imul(Ee,De),b=b+Math.imul(Me,$e)|0,d=d+Math.imul(Me,Ne)|0,d=d+Math.imul(Ae,$e)|0,v=v+Math.imul(Ae,Ne)|0,b=b+Math.imul(Te,Fe)|0,d=d+Math.imul(Te,Ue)|0,d=d+Math.imul(Se,Fe)|0,v=v+Math.imul(Se,Ue)|0,b=b+Math.imul(ke,Le)|0,d=d+Math.imul(ke,Ve)|0,d=d+Math.imul(Ce,Le)|0,v=v+Math.imul(Ce,Ve)|0,b=b+Math.imul(pe,ze)|0,d=d+Math.imul(pe,Ge)|0,d=d+Math.imul(_e,ze)|0,v=v+Math.imul(_e,Ge)|0,b=b+Math.imul(te,Ze)|0,d=d+Math.imul(te,Qe)|0,d=d+Math.imul(he,Ze)|0,v=v+Math.imul(he,Qe)|0,b=b+Math.imul($,We)|0,d=d+Math.imul($,He)|0,d=d+Math.imul(z,We)|0,v=v+Math.imul(z,He)|0;var Un=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Un>>>26)|0,Un&=67108863,b=Math.imul(je,Be),d=Math.imul(je,De),d=d+Math.imul(xe,Be)|0,v=Math.imul(xe,De),b=b+Math.imul(Oe,$e)|0,d=d+Math.imul(Oe,Ne)|0,d=d+Math.imul(Ee,$e)|0,v=v+Math.imul(Ee,Ne)|0,b=b+Math.imul(Me,Fe)|0,d=d+Math.imul(Me,Ue)|0,d=d+Math.imul(Ae,Fe)|0,v=v+Math.imul(Ae,Ue)|0,b=b+Math.imul(Te,Le)|0,d=d+Math.imul(Te,Ve)|0,d=d+Math.imul(Se,Le)|0,v=v+Math.imul(Se,Ve)|0,b=b+Math.imul(ke,ze)|0,d=d+Math.imul(ke,Ge)|0,d=d+Math.imul(Ce,ze)|0,v=v+Math.imul(Ce,Ge)|0,b=b+Math.imul(pe,Ze)|0,d=d+Math.imul(pe,Qe)|0,d=d+Math.imul(_e,Ze)|0,v=v+Math.imul(_e,Qe)|0,b=b+Math.imul(te,We)|0,d=d+Math.imul(te,He)|0,d=d+Math.imul(he,We)|0,v=v+Math.imul(he,He)|0,b=b+Math.imul($,Ke)|0,d=d+Math.imul($,Xe)|0,d=d+Math.imul(z,Ke)|0,v=v+Math.imul(z,Xe)|0;var Ln=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Ln>>>26)|0,Ln&=67108863,b=Math.imul(Ie,Be),d=Math.imul(Ie,De),d=d+Math.imul(Pe,Be)|0,v=Math.imul(Pe,De),b=b+Math.imul(je,$e)|0,d=d+Math.imul(je,Ne)|0,d=d+Math.imul(xe,$e)|0,v=v+Math.imul(xe,Ne)|0,b=b+Math.imul(Oe,Fe)|0,d=d+Math.imul(Oe,Ue)|0,d=d+Math.imul(Ee,Fe)|0,v=v+Math.imul(Ee,Ue)|0,b=b+Math.imul(Me,Le)|0,d=d+Math.imul(Me,Ve)|0,d=d+Math.imul(Ae,Le)|0,v=v+Math.imul(Ae,Ve)|0,b=b+Math.imul(Te,ze)|0,d=d+Math.imul(Te,Ge)|0,d=d+Math.imul(Se,ze)|0,v=v+Math.imul(Se,Ge)|0,b=b+Math.imul(ke,Ze)|0,d=d+Math.imul(ke,Qe)|0,d=d+Math.imul(Ce,Ze)|0,v=v+Math.imul(Ce,Qe)|0,b=b+Math.imul(pe,We)|0,d=d+Math.imul(pe,He)|0,d=d+Math.imul(_e,We)|0,v=v+Math.imul(_e,He)|0,b=b+Math.imul(te,Ke)|0,d=d+Math.imul(te,Xe)|0,d=d+Math.imul(he,Ke)|0,v=v+Math.imul(he,Xe)|0,b=b+Math.imul($,Je)|0,d=d+Math.imul($,Ye)|0,d=d+Math.imul(z,Je)|0,v=v+Math.imul(z,Ye)|0;var Vn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Vn>>>26)|0,Vn&=67108863,b=Math.imul(Re,Be),d=Math.imul(Re,De),d=d+Math.imul(qe,Be)|0,v=Math.imul(qe,De),b=b+Math.imul(Ie,$e)|0,d=d+Math.imul(Ie,Ne)|0,d=d+Math.imul(Pe,$e)|0,v=v+Math.imul(Pe,Ne)|0,b=b+Math.imul(je,Fe)|0,d=d+Math.imul(je,Ue)|0,d=d+Math.imul(xe,Fe)|0,v=v+Math.imul(xe,Ue)|0,b=b+Math.imul(Oe,Le)|0,d=d+Math.imul(Oe,Ve)|0,d=d+Math.imul(Ee,Le)|0,v=v+Math.imul(Ee,Ve)|0,b=b+Math.imul(Me,ze)|0,d=d+Math.imul(Me,Ge)|0,d=d+Math.imul(Ae,ze)|0,v=v+Math.imul(Ae,Ge)|0,b=b+Math.imul(Te,Ze)|0,d=d+Math.imul(Te,Qe)|0,d=d+Math.imul(Se,Ze)|0,v=v+Math.imul(Se,Qe)|0,b=b+Math.imul(ke,We)|0,d=d+Math.imul(ke,He)|0,d=d+Math.imul(Ce,We)|0,v=v+Math.imul(Ce,He)|0,b=b+Math.imul(pe,Ke)|0,d=d+Math.imul(pe,Xe)|0,d=d+Math.imul(_e,Ke)|0,v=v+Math.imul(_e,Xe)|0,b=b+Math.imul(te,Je)|0,d=d+Math.imul(te,Ye)|0,d=d+Math.imul(he,Je)|0,v=v+Math.imul(he,Ye)|0,b=b+Math.imul($,et)|0,d=d+Math.imul($,tt)|0,d=d+Math.imul(z,et)|0,v=v+Math.imul(z,tt)|0;var zn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(zn>>>26)|0,zn&=67108863,b=Math.imul(Re,$e),d=Math.imul(Re,Ne),d=d+Math.imul(qe,$e)|0,v=Math.imul(qe,Ne),b=b+Math.imul(Ie,Fe)|0,d=d+Math.imul(Ie,Ue)|0,d=d+Math.imul(Pe,Fe)|0,v=v+Math.imul(Pe,Ue)|0,b=b+Math.imul(je,Le)|0,d=d+Math.imul(je,Ve)|0,d=d+Math.imul(xe,Le)|0,v=v+Math.imul(xe,Ve)|0,b=b+Math.imul(Oe,ze)|0,d=d+Math.imul(Oe,Ge)|0,d=d+Math.imul(Ee,ze)|0,v=v+Math.imul(Ee,Ge)|0,b=b+Math.imul(Me,Ze)|0,d=d+Math.imul(Me,Qe)|0,d=d+Math.imul(Ae,Ze)|0,v=v+Math.imul(Ae,Qe)|0,b=b+Math.imul(Te,We)|0,d=d+Math.imul(Te,He)|0,d=d+Math.imul(Se,We)|0,v=v+Math.imul(Se,He)|0,b=b+Math.imul(ke,Ke)|0,d=d+Math.imul(ke,Xe)|0,d=d+Math.imul(Ce,Ke)|0,v=v+Math.imul(Ce,Xe)|0,b=b+Math.imul(pe,Je)|0,d=d+Math.imul(pe,Ye)|0,d=d+Math.imul(_e,Je)|0,v=v+Math.imul(_e,Ye)|0,b=b+Math.imul(te,et)|0,d=d+Math.imul(te,tt)|0,d=d+Math.imul(he,et)|0,v=v+Math.imul(he,tt)|0;var Gn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Gn>>>26)|0,Gn&=67108863,b=Math.imul(Re,Fe),d=Math.imul(Re,Ue),d=d+Math.imul(qe,Fe)|0,v=Math.imul(qe,Ue),b=b+Math.imul(Ie,Le)|0,d=d+Math.imul(Ie,Ve)|0,d=d+Math.imul(Pe,Le)|0,v=v+Math.imul(Pe,Ve)|0,b=b+Math.imul(je,ze)|0,d=d+Math.imul(je,Ge)|0,d=d+Math.imul(xe,ze)|0,v=v+Math.imul(xe,Ge)|0,b=b+Math.imul(Oe,Ze)|0,d=d+Math.imul(Oe,Qe)|0,d=d+Math.imul(Ee,Ze)|0,v=v+Math.imul(Ee,Qe)|0,b=b+Math.imul(Me,We)|0,d=d+Math.imul(Me,He)|0,d=d+Math.imul(Ae,We)|0,v=v+Math.imul(Ae,He)|0,b=b+Math.imul(Te,Ke)|0,d=d+Math.imul(Te,Xe)|0,d=d+Math.imul(Se,Ke)|0,v=v+Math.imul(Se,Xe)|0,b=b+Math.imul(ke,Je)|0,d=d+Math.imul(ke,Ye)|0,d=d+Math.imul(Ce,Je)|0,v=v+Math.imul(Ce,Ye)|0,b=b+Math.imul(pe,et)|0,d=d+Math.imul(pe,tt)|0,d=d+Math.imul(_e,et)|0,v=v+Math.imul(_e,tt)|0;var Zn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Zn>>>26)|0,Zn&=67108863,b=Math.imul(Re,Le),d=Math.imul(Re,Ve),d=d+Math.imul(qe,Le)|0,v=Math.imul(qe,Ve),b=b+Math.imul(Ie,ze)|0,d=d+Math.imul(Ie,Ge)|0,d=d+Math.imul(Pe,ze)|0,v=v+Math.imul(Pe,Ge)|0,b=b+Math.imul(je,Ze)|0,d=d+Math.imul(je,Qe)|0,d=d+Math.imul(xe,Ze)|0,v=v+Math.imul(xe,Qe)|0,b=b+Math.imul(Oe,We)|0,d=d+Math.imul(Oe,He)|0,d=d+Math.imul(Ee,We)|0,v=v+Math.imul(Ee,He)|0,b=b+Math.imul(Me,Ke)|0,d=d+Math.imul(Me,Xe)|0,d=d+Math.imul(Ae,Ke)|0,v=v+Math.imul(Ae,Xe)|0,b=b+Math.imul(Te,Je)|0,d=d+Math.imul(Te,Ye)|0,d=d+Math.imul(Se,Je)|0,v=v+Math.imul(Se,Ye)|0,b=b+Math.imul(ke,et)|0,d=d+Math.imul(ke,tt)|0,d=d+Math.imul(Ce,et)|0,v=v+Math.imul(Ce,tt)|0;var Qn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Qn>>>26)|0,Qn&=67108863,b=Math.imul(Re,ze),d=Math.imul(Re,Ge),d=d+Math.imul(qe,ze)|0,v=Math.imul(qe,Ge),b=b+Math.imul(Ie,Ze)|0,d=d+Math.imul(Ie,Qe)|0,d=d+Math.imul(Pe,Ze)|0,v=v+Math.imul(Pe,Qe)|0,b=b+Math.imul(je,We)|0,d=d+Math.imul(je,He)|0,d=d+Math.imul(xe,We)|0,v=v+Math.imul(xe,He)|0,b=b+Math.imul(Oe,Ke)|0,d=d+Math.imul(Oe,Xe)|0,d=d+Math.imul(Ee,Ke)|0,v=v+Math.imul(Ee,Xe)|0,b=b+Math.imul(Me,Je)|0,d=d+Math.imul(Me,Ye)|0,d=d+Math.imul(Ae,Je)|0,v=v+Math.imul(Ae,Ye)|0,b=b+Math.imul(Te,et)|0,d=d+Math.imul(Te,tt)|0,d=d+Math.imul(Se,et)|0,v=v+Math.imul(Se,tt)|0;var Wn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Wn>>>26)|0,Wn&=67108863,b=Math.imul(Re,Ze),d=Math.imul(Re,Qe),d=d+Math.imul(qe,Ze)|0,v=Math.imul(qe,Qe),b=b+Math.imul(Ie,We)|0,d=d+Math.imul(Ie,He)|0,d=d+Math.imul(Pe,We)|0,v=v+Math.imul(Pe,He)|0,b=b+Math.imul(je,Ke)|0,d=d+Math.imul(je,Xe)|0,d=d+Math.imul(xe,Ke)|0,v=v+Math.imul(xe,Xe)|0,b=b+Math.imul(Oe,Je)|0,d=d+Math.imul(Oe,Ye)|0,d=d+Math.imul(Ee,Je)|0,v=v+Math.imul(Ee,Ye)|0,b=b+Math.imul(Me,et)|0,d=d+Math.imul(Me,tt)|0,d=d+Math.imul(Ae,et)|0,v=v+Math.imul(Ae,tt)|0;var Hn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Hn>>>26)|0,Hn&=67108863,b=Math.imul(Re,We),d=Math.imul(Re,He),d=d+Math.imul(qe,We)|0,v=Math.imul(qe,He),b=b+Math.imul(Ie,Ke)|0,d=d+Math.imul(Ie,Xe)|0,d=d+Math.imul(Pe,Ke)|0,v=v+Math.imul(Pe,Xe)|0,b=b+Math.imul(je,Je)|0,d=d+Math.imul(je,Ye)|0,d=d+Math.imul(xe,Je)|0,v=v+Math.imul(xe,Ye)|0,b=b+Math.imul(Oe,et)|0,d=d+Math.imul(Oe,tt)|0,d=d+Math.imul(Ee,et)|0,v=v+Math.imul(Ee,tt)|0;var Kn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Kn>>>26)|0,Kn&=67108863,b=Math.imul(Re,Ke),d=Math.imul(Re,Xe),d=d+Math.imul(qe,Ke)|0,v=Math.imul(qe,Xe),b=b+Math.imul(Ie,Je)|0,d=d+Math.imul(Ie,Ye)|0,d=d+Math.imul(Pe,Je)|0,v=v+Math.imul(Pe,Ye)|0,b=b+Math.imul(je,et)|0,d=d+Math.imul(je,tt)|0,d=d+Math.imul(xe,et)|0,v=v+Math.imul(xe,tt)|0;var Xn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Xn>>>26)|0,Xn&=67108863,b=Math.imul(Re,Je),d=Math.imul(Re,Ye),d=d+Math.imul(qe,Je)|0,v=Math.imul(qe,Ye),b=b+Math.imul(Ie,et)|0,d=d+Math.imul(Ie,tt)|0,d=d+Math.imul(Pe,et)|0,v=v+Math.imul(Pe,tt)|0;var Jn=(M+b|0)+((d&8191)<<13)|0;M=(v+(d>>>13)|0)+(Jn>>>26)|0,Jn&=67108863,b=Math.imul(Re,et),d=Math.imul(Re,tt),d=d+Math.imul(qe,et)|0,v=Math.imul(qe,tt);var Yn=(M+b|0)+((d&8191)<<13)|0;return M=(v+(d>>>13)|0)+(Yn>>>26)|0,Yn&=67108863,T[0]=qn,T[1]=Bn,T[2]=Dn,T[3]=$n,T[4]=Nn,T[5]=Fn,T[6]=Un,T[7]=Ln,T[8]=Vn,T[9]=zn,T[10]=Gn,T[11]=Zn,T[12]=Qn,T[13]=Wn,T[14]=Hn,T[15]=Kn,T[16]=Xn,T[17]=Jn,T[18]=Yn,M!==0&&(T[19]=M,g.length++),g};Math.imul||(x=q);function U(c,h,g){g.negative=h.negative^c.negative,g.length=c.length+h.length;for(var _=0,w=0,T=0;T<g.length-1;T++){var M=w;w=0;for(var b=_&67108863,d=Math.min(T,h.length-1),v=Math.max(0,T-c.length+1);v<=d;v++){var D=T-v,$=c.words[D]|0,z=h.words[v]|0,K=$*z,te=K&67108863;M=M+(K/67108864|0)|0,te=te+b|0,b=te&67108863,M=M+(te>>>26)|0,w+=M>>>26,M&=67108863}g.words[T]=b,_=M,M=w}return _!==0?g.words[T]=_:g.length--,g._strip()}function ee(c,h,g){return U(c,h,g)}a.prototype.mulTo=function(c,h){var g,_=this.length+c.length;return this.length===10&&c.length===10?g=x(this,c,h):_<63?g=q(this,c,h):_<1024?g=U(this,c,h):g=ee(this,c,h),g};function F(c,h){this.x=c,this.y=h}F.prototype.makeRBT=function(c){for(var h=new Array(c),g=a.prototype._countBits(c)-1,_=0;_<c;_++)h[_]=this.revBin(_,g,c);return h},F.prototype.revBin=function(c,h,g){if(c===0||c===g-1)return c;for(var _=0,w=0;w<h;w++)_|=(c&1)<<h-w-1,c>>=1;return _},F.prototype.permute=function(c,h,g,_,w,T){for(var M=0;M<T;M++)_[M]=h[c[M]],w[M]=g[c[M]]},F.prototype.transform=function(c,h,g,_,w,T){this.permute(T,c,h,g,_,w);for(var M=1;M<w;M<<=1)for(var b=M<<1,d=Math.cos(2*Math.PI/b),v=Math.sin(2*Math.PI/b),D=0;D<w;D+=b)for(var $=d,z=v,K=0;K<M;K++){var te=g[D+K],he=_[D+K],Gt=g[D+K+M],pe=_[D+K+M],_e=$*Gt-z*pe;pe=$*pe+z*Gt,Gt=_e,g[D+K]=te+Gt,_[D+K]=he+pe,g[D+K+M]=te-Gt,_[D+K+M]=he-pe,K!==b&&(_e=d*$-v*z,z=d*z+v*$,$=_e)}},F.prototype.guessLen13b=function(c,h){var g=Math.max(h,c)|1,_=g&1,w=0;for(g=g/2|0;g;g=g>>>1)w++;return 1<<w+1+_},F.prototype.conjugate=function(c,h,g){if(!(g<=1))for(var _=0;_<g/2;_++){var w=c[_];c[_]=c[g-_-1],c[g-_-1]=w,w=h[_],h[_]=-h[g-_-1],h[g-_-1]=-w}},F.prototype.normalize13b=function(c,h){for(var g=0,_=0;_<h/2;_++){var w=Math.round(c[2*_+1]/h)*8192+Math.round(c[2*_]/h)+g;c[_]=w&67108863,w<67108864?g=0:g=w/67108864|0}return c},F.prototype.convert13b=function(c,h,g,_){for(var w=0,T=0;T<h;T++)w=w+(c[T]|0),g[2*T]=w&8191,w=w>>>13,g[2*T+1]=w&8191,w=w>>>13;for(T=2*h;T<_;++T)g[T]=0;i(w===0),i((w&-8192)===0)},F.prototype.stub=function(c){for(var h=new Array(c),g=0;g<c;g++)h[g]=0;return h},F.prototype.mulp=function(c,h,g){var _=2*this.guessLen13b(c.length,h.length),w=this.makeRBT(_),T=this.stub(_),M=new Array(_),b=new Array(_),d=new Array(_),v=new Array(_),D=new Array(_),$=new Array(_),z=g.words;z.length=_,this.convert13b(c.words,c.length,M,_),this.convert13b(h.words,h.length,v,_),this.transform(M,T,b,d,_,w),this.transform(v,T,D,$,_,w);for(var K=0;K<_;K++){var te=b[K]*D[K]-d[K]*$[K];d[K]=b[K]*$[K]+d[K]*D[K],b[K]=te}return this.conjugate(b,d,_),this.transform(b,d,z,T,_,w),this.conjugate(z,T,_),this.normalize13b(z,_),g.negative=c.negative^h.negative,g.length=c.length+h.length,g._strip()},a.prototype.mul=function(c){var h=new a(null);return h.words=new Array(this.length+c.length),this.mulTo(c,h)},a.prototype.mulf=function(c){var h=new a(null);return h.words=new Array(this.length+c.length),ee(this,c,h)},a.prototype.imul=function(c){return this.clone().mulTo(c,this)},a.prototype.imuln=function(c){var h=c<0;h&&(c=-c),i(typeof c=="number"),i(c<67108864);for(var g=0,_=0;_<this.length;_++){var w=(this.words[_]|0)*c,T=(w&67108863)+(g&67108863);g>>=26,g+=w/67108864|0,g+=T>>>26,this.words[_]=T&67108863}return g!==0&&(this.words[_]=g,this.length++),this.length=c===0?1:this.length,h?this.ineg():this},a.prototype.muln=function(c){return this.clone().imuln(c)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(c){var h=E(c);if(h.length===0)return new a(1);for(var g=this,_=0;_<h.length&&h[_]===0;_++,g=g.sqr());if(++_<h.length)for(var w=g.sqr();_<h.length;_++,w=w.sqr())h[_]!==0&&(g=g.mul(w));return g},a.prototype.iushln=function(c){i(typeof c=="number"&&c>=0);var h=c%26,g=(c-h)/26,_=67108863>>>26-h<<26-h,w;if(h!==0){var T=0;for(w=0;w<this.length;w++){var M=this.words[w]&_,b=(this.words[w]|0)-M<<h;this.words[w]=b|T,T=M>>>26-h}T&&(this.words[w]=T,this.length++)}if(g!==0){for(w=this.length-1;w>=0;w--)this.words[w+g]=this.words[w];for(w=0;w<g;w++)this.words[w]=0;this.length+=g}return this._strip()},a.prototype.ishln=function(c){return i(this.negative===0),this.iushln(c)},a.prototype.iushrn=function(c,h,g){i(typeof c=="number"&&c>=0);var _;h?_=(h-h%26)/26:_=0;var w=c%26,T=Math.min((c-w)/26,this.length),M=67108863^67108863>>>w<<w,b=g;if(_-=T,_=Math.max(0,_),b){for(var d=0;d<T;d++)b.words[d]=this.words[d];b.length=T}if(T!==0)if(this.length>T)for(this.length-=T,d=0;d<this.length;d++)this.words[d]=this.words[d+T];else this.words[0]=0,this.length=1;var v=0;for(d=this.length-1;d>=0&&(v!==0||d>=_);d--){var D=this.words[d]|0;this.words[d]=v<<26-w|D>>>w,v=D&M}return b&&v!==0&&(b.words[b.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},a.prototype.ishrn=function(c,h,g){return i(this.negative===0),this.iushrn(c,h,g)},a.prototype.shln=function(c){return this.clone().ishln(c)},a.prototype.ushln=function(c){return this.clone().iushln(c)},a.prototype.shrn=function(c){return this.clone().ishrn(c)},a.prototype.ushrn=function(c){return this.clone().iushrn(c)},a.prototype.testn=function(c){i(typeof c=="number"&&c>=0);var h=c%26,g=(c-h)/26,_=1<<h;if(this.length<=g)return!1;var w=this.words[g];return!!(w&_)},a.prototype.imaskn=function(c){i(typeof c=="number"&&c>=0);var h=c%26,g=(c-h)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=g)return this;if(h!==0&&g++,this.length=Math.min(g,this.length),h!==0){var _=67108863^67108863>>>h<<h;this.words[this.length-1]&=_}return this.length===0&&(this.words[0]=0,this.length=1),this._strip()},a.prototype.maskn=function(c){return this.clone().imaskn(c)},a.prototype.iaddn=function(c){return i(typeof c=="number"),i(c<67108864),c<0?this.isubn(-c):this.negative!==0?this.length===1&&(this.words[0]|0)<=c?(this.words[0]=c-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(c),this.negative=1,this):this._iaddn(c)},a.prototype._iaddn=function(c){this.words[0]+=c;for(var h=0;h<this.length&&this.words[h]>=67108864;h++)this.words[h]-=67108864,h===this.length-1?this.words[h+1]=1:this.words[h+1]++;return this.length=Math.max(this.length,h+1),this},a.prototype.isubn=function(c){if(i(typeof c=="number"),i(c<67108864),c<0)return this.iaddn(-c);if(this.negative!==0)return this.negative=0,this.iaddn(c),this.negative=1,this;if(this.words[0]-=c,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var h=0;h<this.length&&this.words[h]<0;h++)this.words[h]+=67108864,this.words[h+1]-=1;return this._strip()},a.prototype.addn=function(c){return this.clone().iaddn(c)},a.prototype.subn=function(c){return this.clone().isubn(c)},a.prototype.iabs=function(){return this.negative=0,this},a.prototype.abs=function(){return this.clone().iabs()},a.prototype._ishlnsubmul=function(c,h,g){var _=c.length+g,w;this._expand(_);var T,M=0;for(w=0;w<c.length;w++){T=(this.words[w+g]|0)+M;var b=(c.words[w]|0)*h;T-=b&67108863,M=(T>>26)-(b/67108864|0),this.words[w+g]=T&67108863}for(;w<this.length-g;w++)T=(this.words[w+g]|0)+M,M=T>>26,this.words[w+g]=T&67108863;if(M===0)return this._strip();for(i(M===-1),M=0,w=0;w<this.length;w++)T=-(this.words[w]|0)+M,M=T>>26,this.words[w]=T&67108863;return this.negative=1,this._strip()},a.prototype._wordDiv=function(c,h){var g=this.length-c.length,_=this.clone(),w=c,T=w.words[w.length-1]|0,M=this._countBits(T);g=26-M,g!==0&&(w=w.ushln(g),_.iushln(g),T=w.words[w.length-1]|0);var b=_.length-w.length,d;if(h!=="mod"){d=new a(null),d.length=b+1,d.words=new Array(d.length);for(var v=0;v<d.length;v++)d.words[v]=0}var D=_.clone()._ishlnsubmul(w,1,b);D.negative===0&&(_=D,d&&(d.words[b]=1));for(var $=b-1;$>=0;$--){var z=(_.words[w.length+$]|0)*67108864+(_.words[w.length+$-1]|0);for(z=Math.min(z/T|0,67108863),_._ishlnsubmul(w,z,$);_.negative!==0;)z--,_.negative=0,_._ishlnsubmul(w,1,$),_.isZero()||(_.negative^=1);d&&(d.words[$]=z)}return d&&d._strip(),_._strip(),h!=="div"&&g!==0&&_.iushrn(g),{div:d||null,mod:_}},a.prototype.divmod=function(c,h,g){if(i(!c.isZero()),this.isZero())return{div:new a(0),mod:new a(0)};var _,w,T;return this.negative!==0&&c.negative===0?(T=this.neg().divmod(c,h),h!=="mod"&&(_=T.div.neg()),h!=="div"&&(w=T.mod.neg(),g&&w.negative!==0&&w.iadd(c)),{div:_,mod:w}):this.negative===0&&c.negative!==0?(T=this.divmod(c.neg(),h),h!=="mod"&&(_=T.div.neg()),{div:_,mod:T.mod}):this.negative&c.negative?(T=this.neg().divmod(c.neg(),h),h!=="div"&&(w=T.mod.neg(),g&&w.negative!==0&&w.isub(c)),{div:T.div,mod:w}):c.length>this.length||this.cmp(c)<0?{div:new a(0),mod:this}:c.length===1?h==="div"?{div:this.divn(c.words[0]),mod:null}:h==="mod"?{div:null,mod:new a(this.modrn(c.words[0]))}:{div:this.divn(c.words[0]),mod:new a(this.modrn(c.words[0]))}:this._wordDiv(c,h)},a.prototype.div=function(c){return this.divmod(c,"div",!1).div},a.prototype.mod=function(c){return this.divmod(c,"mod",!1).mod},a.prototype.umod=function(c){return this.divmod(c,"mod",!0).mod},a.prototype.divRound=function(c){var h=this.divmod(c);if(h.mod.isZero())return h.div;var g=h.div.negative!==0?h.mod.isub(c):h.mod,_=c.ushrn(1),w=c.andln(1),T=g.cmp(_);return T<0||w===1&&T===0?h.div:h.div.negative!==0?h.div.isubn(1):h.div.iaddn(1)},a.prototype.modrn=function(c){var h=c<0;h&&(c=-c),i(c<=67108863);for(var g=(1<<26)%c,_=0,w=this.length-1;w>=0;w--)_=(g*_+(this.words[w]|0))%c;return h?-_:_},a.prototype.modn=function(c){return this.modrn(c)},a.prototype.idivn=function(c){var h=c<0;h&&(c=-c),i(c<=67108863);for(var g=0,_=this.length-1;_>=0;_--){var w=(this.words[_]|0)+g*67108864;this.words[_]=w/c|0,g=w%c}return this._strip(),h?this.ineg():this},a.prototype.divn=function(c){return this.clone().idivn(c)},a.prototype.egcd=function(c){i(c.negative===0),i(!c.isZero());var h=this,g=c.clone();h.negative!==0?h=h.umod(c):h=h.clone();for(var _=new a(1),w=new a(0),T=new a(0),M=new a(1),b=0;h.isEven()&&g.isEven();)h.iushrn(1),g.iushrn(1),++b;for(var d=g.clone(),v=h.clone();!h.isZero();){for(var D=0,$=1;!(h.words[0]&$)&&D<26;++D,$<<=1);if(D>0)for(h.iushrn(D);D-- >0;)(_.isOdd()||w.isOdd())&&(_.iadd(d),w.isub(v)),_.iushrn(1),w.iushrn(1);for(var z=0,K=1;!(g.words[0]&K)&&z<26;++z,K<<=1);if(z>0)for(g.iushrn(z);z-- >0;)(T.isOdd()||M.isOdd())&&(T.iadd(d),M.isub(v)),T.iushrn(1),M.iushrn(1);h.cmp(g)>=0?(h.isub(g),_.isub(T),w.isub(M)):(g.isub(h),T.isub(_),M.isub(w))}return{a:T,b:M,gcd:g.iushln(b)}},a.prototype._invmp=function(c){i(c.negative===0),i(!c.isZero());var h=this,g=c.clone();h.negative!==0?h=h.umod(c):h=h.clone();for(var _=new a(1),w=new a(0),T=g.clone();h.cmpn(1)>0&&g.cmpn(1)>0;){for(var M=0,b=1;!(h.words[0]&b)&&M<26;++M,b<<=1);if(M>0)for(h.iushrn(M);M-- >0;)_.isOdd()&&_.iadd(T),_.iushrn(1);for(var d=0,v=1;!(g.words[0]&v)&&d<26;++d,v<<=1);if(d>0)for(g.iushrn(d);d-- >0;)w.isOdd()&&w.iadd(T),w.iushrn(1);h.cmp(g)>=0?(h.isub(g),_.isub(w)):(g.isub(h),w.isub(_))}var D;return h.cmpn(1)===0?D=_:D=w,D.cmpn(0)<0&&D.iadd(c),D},a.prototype.gcd=function(c){if(this.isZero())return c.abs();if(c.isZero())return this.abs();var h=this.clone(),g=c.clone();h.negative=0,g.negative=0;for(var _=0;h.isEven()&&g.isEven();_++)h.iushrn(1),g.iushrn(1);do{for(;h.isEven();)h.iushrn(1);for(;g.isEven();)g.iushrn(1);var w=h.cmp(g);if(w<0){var T=h;h=g,g=T}else if(w===0||g.cmpn(1)===0)break;h.isub(g)}while(!0);return g.iushln(_)},a.prototype.invm=function(c){return this.egcd(c).a.umod(c)},a.prototype.isEven=function(){return(this.words[0]&1)===0},a.prototype.isOdd=function(){return(this.words[0]&1)===1},a.prototype.andln=function(c){return this.words[0]&c},a.prototype.bincn=function(c){i(typeof c=="number");var h=c%26,g=(c-h)/26,_=1<<h;if(this.length<=g)return this._expand(g+1),this.words[g]|=_,this;for(var w=_,T=g;w!==0&&T<this.length;T++){var M=this.words[T]|0;M+=w,w=M>>>26,M&=67108863,this.words[T]=M}return w!==0&&(this.words[T]=w,this.length++),this},a.prototype.isZero=function(){return this.length===1&&this.words[0]===0},a.prototype.cmpn=function(c){var h=c<0;if(this.negative!==0&&!h)return-1;if(this.negative===0&&h)return 1;this._strip();var g;if(this.length>1)g=1;else{h&&(c=-c),i(c<=67108863,"Number is too big");var _=this.words[0]|0;g=_===c?0:_<c?-1:1}return this.negative!==0?-g|0:g},a.prototype.cmp=function(c){if(this.negative!==0&&c.negative===0)return-1;if(this.negative===0&&c.negative!==0)return 1;var h=this.ucmp(c);return this.negative!==0?-h|0:h},a.prototype.ucmp=function(c){if(this.length>c.length)return 1;if(this.length<c.length)return-1;for(var h=0,g=this.length-1;g>=0;g--){var _=this.words[g]|0,w=c.words[g]|0;if(_!==w){_<w?h=-1:_>w&&(h=1);break}}return h},a.prototype.gtn=function(c){return this.cmpn(c)===1},a.prototype.gt=function(c){return this.cmp(c)===1},a.prototype.gten=function(c){return this.cmpn(c)>=0},a.prototype.gte=function(c){return this.cmp(c)>=0},a.prototype.ltn=function(c){return this.cmpn(c)===-1},a.prototype.lt=function(c){return this.cmp(c)===-1},a.prototype.lten=function(c){return this.cmpn(c)<=0},a.prototype.lte=function(c){return this.cmp(c)<=0},a.prototype.eqn=function(c){return this.cmpn(c)===0},a.prototype.eq=function(c){return this.cmp(c)===0},a.red=function(c){return new ue(c)},a.prototype.toRed=function(c){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),c.convertTo(this)._forceRed(c)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(c){return this.red=c,this},a.prototype.forceRed=function(c){return i(!this.red,"Already a number in reduction context"),this._forceRed(c)},a.prototype.redAdd=function(c){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,c)},a.prototype.redIAdd=function(c){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,c)},a.prototype.redSub=function(c){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,c)},a.prototype.redISub=function(c){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,c)},a.prototype.redShl=function(c){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,c)},a.prototype.redMul=function(c){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,c),this.red.mul(this,c)},a.prototype.redIMul=function(c){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,c),this.red.imul(this,c)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(c){return i(this.red&&!c.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,c)};var oe={k256:null,p224:null,p192:null,p25519:null};function ae(c,h){this.name=c,this.p=new a(h,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}ae.prototype._tmp=function(){var c=new a(null);return c.words=new Array(Math.ceil(this.n/13)),c},ae.prototype.ireduce=function(c){var h=c,g;do this.split(h,this.tmp),h=this.imulK(h),h=h.iadd(this.tmp),g=h.bitLength();while(g>this.n);var _=g<this.n?-1:h.ucmp(this.p);return _===0?(h.words[0]=0,h.length=1):_>0?h.isub(this.p):h.strip!==void 0?h.strip():h._strip(),h},ae.prototype.split=function(c,h){c.iushrn(this.n,0,h)},ae.prototype.imulK=function(c){return c.imul(this.k)};function ce(){ae.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}s(ce,ae),ce.prototype.split=function(c,h){for(var g=4194303,_=Math.min(c.length,9),w=0;w<_;w++)h.words[w]=c.words[w];if(h.length=_,c.length<=9){c.words[0]=0,c.length=1;return}var T=c.words[9];for(h.words[h.length++]=T&g,w=10;w<c.length;w++){var M=c.words[w]|0;c.words[w-10]=(M&g)<<4|T>>>22,T=M}T>>>=22,c.words[w-10]=T,T===0&&c.length>10?c.length-=10:c.length-=9},ce.prototype.imulK=function(c){c.words[c.length]=0,c.words[c.length+1]=0,c.length+=2;for(var h=0,g=0;g<c.length;g++){var _=c.words[g]|0;h+=_*977,c.words[g]=h&67108863,h=_*64+(h/67108864|0)}return c.words[c.length-1]===0&&(c.length--,c.words[c.length-1]===0&&c.length--),c};function we(){ae.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}s(we,ae);function ve(){ae.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}s(ve,ae);function ft(){ae.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}s(ft,ae),ft.prototype.imulK=function(c){for(var h=0,g=0;g<c.length;g++){var _=(c.words[g]|0)*19+h,w=_&67108863;_>>>=26,c.words[g]=w,h=_}return h!==0&&(c.words[c.length++]=h),c},a._prime=function(c){if(oe[c])return oe[c];var h;if(c==="k256")h=new ce;else if(c==="p224")h=new we;else if(c==="p192")h=new ve;else if(c==="p25519")h=new ft;else throw new Error("Unknown prime "+c);return oe[c]=h,h};function ue(c){if(typeof c=="string"){var h=a._prime(c);this.m=h.p,this.prime=h}else i(c.gtn(1),"modulus must be greater than 1"),this.m=c,this.prime=null}ue.prototype._verify1=function(c){i(c.negative===0,"red works only with positives"),i(c.red,"red works only with red numbers")},ue.prototype._verify2=function(c,h){i((c.negative|h.negative)===0,"red works only with positives"),i(c.red&&c.red===h.red,"red works only with red numbers")},ue.prototype.imod=function(c){return this.prime?this.prime.ireduce(c)._forceRed(this):(f(c,c.umod(this.m)._forceRed(this)),c)},ue.prototype.neg=function(c){return c.isZero()?c.clone():this.m.sub(c)._forceRed(this)},ue.prototype.add=function(c,h){this._verify2(c,h);var g=c.add(h);return g.cmp(this.m)>=0&&g.isub(this.m),g._forceRed(this)},ue.prototype.iadd=function(c,h){this._verify2(c,h);var g=c.iadd(h);return g.cmp(this.m)>=0&&g.isub(this.m),g},ue.prototype.sub=function(c,h){this._verify2(c,h);var g=c.sub(h);return g.cmpn(0)<0&&g.iadd(this.m),g._forceRed(this)},ue.prototype.isub=function(c,h){this._verify2(c,h);var g=c.isub(h);return g.cmpn(0)<0&&g.iadd(this.m),g},ue.prototype.shl=function(c,h){return this._verify1(c),this.imod(c.ushln(h))},ue.prototype.imul=function(c,h){return this._verify2(c,h),this.imod(c.imul(h))},ue.prototype.mul=function(c,h){return this._verify2(c,h),this.imod(c.mul(h))},ue.prototype.isqr=function(c){return this.imul(c,c.clone())},ue.prototype.sqr=function(c){return this.mul(c,c)},ue.prototype.sqrt=function(c){if(c.isZero())return c.clone();var h=this.m.andln(3);if(i(h%2===1),h===3){var g=this.m.add(new a(1)).iushrn(2);return this.pow(c,g)}for(var _=this.m.subn(1),w=0;!_.isZero()&&_.andln(1)===0;)w++,_.iushrn(1);i(!_.isZero());var T=new a(1).toRed(this),M=T.redNeg(),b=this.m.subn(1).iushrn(1),d=this.m.bitLength();for(d=new a(2*d*d).toRed(this);this.pow(d,b).cmp(M)!==0;)d.redIAdd(M);for(var v=this.pow(d,_),D=this.pow(c,_.addn(1).iushrn(1)),$=this.pow(c,_),z=w;$.cmp(T)!==0;){for(var K=$,te=0;K.cmp(T)!==0;te++)K=K.redSqr();i(te<z);var he=this.pow(v,new a(1).iushln(z-te-1));D=D.redMul(he),v=he.redSqr(),$=$.redMul(v),z=te}return D},ue.prototype.invm=function(c){var h=c._invmp(this.m);return h.negative!==0?(h.negative=0,this.imod(h).redNeg()):this.imod(h)},ue.prototype.pow=function(c,h){if(h.isZero())return new a(1).toRed(this);if(h.cmpn(1)===0)return c.clone();var g=4,_=new Array(1<<g);_[0]=new a(1).toRed(this),_[1]=c;for(var w=2;w<_.length;w++)_[w]=this.mul(_[w-1],c);var T=_[0],M=0,b=0,d=h.bitLength()%26;for(d===0&&(d=26),w=h.length-1;w>=0;w--){for(var v=h.words[w],D=d-1;D>=0;D--){var $=v>>D&1;if(T!==_[0]&&(T=this.sqr(T)),$===0&&M===0){b=0;continue}M<<=1,M|=$,b++,!(b!==g&&(w!==0||D!==0))&&(T=this.mul(T,_[M]),b=0,M=0)}d=26}return T},ue.prototype.convertTo=function(c){var h=c.umod(this.m);return h===c?h.clone():h},ue.prototype.convertFrom=function(c){var h=c.clone();return h.red=null,h},a.mont=function(c){return new St(c)};function St(c){ue.call(this,c),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}s(St,ue),St.prototype.convertTo=function(c){return this.imod(c.ushln(this.shift))},St.prototype.convertFrom=function(c){var h=this.imod(c.mul(this.rinv));return h.red=null,h},St.prototype.imul=function(c,h){if(c.isZero()||h.isZero())return c.words[0]=0,c.length=1,c;var g=c.imul(h),_=g.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),w=g.isub(_).iushrn(this.shift),T=w;return w.cmp(this.m)>=0?T=w.isub(this.m):w.cmpn(0)<0&&(T=w.iadd(this.m)),T._forceRed(this)},St.prototype.mul=function(c,h){if(c.isZero()||h.isZero())return new a(0)._forceRed(this);var g=c.mul(h),_=g.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),w=g.isub(_).iushrn(this.shift),T=w;return w.cmp(this.m)>=0?T=w.isub(this.m):w.cmpn(0)<0&&(T=w.iadd(this.m)),T._forceRed(this)},St.prototype.invm=function(c){var h=this.imod(c._invmp(this.m).mul(this.r2));return h._forceRed(this)}})(typeof e>"u"||e,n)}),Sc={REQUEST_PARAMS:"requestParams",METHOD_NAME:"methodName"},Mc=class Ks extends Error{constructor(e,t,r){super(e),this.code=t,this.details=r,this.name=this.constructor.name}static{this.DETAILS_KEYS=Sc}toJSON(){return{name:this.name,message:this.message,code:this.code,details:this.details}}toString(){return JSON.stringify(this.toJSON())}static isErrorCode(e,t){return e instanceof Ks&&e.code===t}},Ac=class extends Mc{constructor(n,e,t){super(n,e||"UnknownError",t)}static isCommonErrorCode(n,e){return this.isErrorCode(n,e)}},Bs=(n,e,t)=>{throw new Ac(e,n,t)};function Ds(n){return Date.parse(new Date().toString())+n}var Oc=class{constructor(n,e=0){this.overdue_time=e,this.value=n}isValid(){return this.value===null?!1:this.overdue_time===0?!0:!(Date.parse(new Date().toString())>this.overdue_time)}},Nr=9e15,rr=1e9,yi="0123456789abcdef",vn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",kn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",bi={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Nr,maxE:Nr,crypto:!1},Js,zt,H=!0,Sn="[DecimalError] ",tr=Sn+"Invalid argument: ",Ys=Sn+"Precision limit exceeded",ea=Sn+"crypto unavailable",ta="[object Decimal]",ht=Math.floor,at=Math.pow,Ec=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,jc=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,xc=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ra=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ot=1e7,Z=7,Ic=9007199254740991,Pc=vn.length-1,wi=kn.length-1,O={toStringTag:ta};O.absoluteValue=O.abs=function(){var n=new this.constructor(this);return n.s<0&&(n.s=1),L(n)};O.ceil=function(){return L(new this.constructor(this),this.e+1,2)};O.clampedTo=O.clamp=function(n,e){var t,r=this,i=r.constructor;if(n=new i(n),e=new i(e),!n.s||!e.s)return new i(NaN);if(n.gt(e))throw Error(tr+e);return t=r.cmp(n),t<0?n:r.cmp(e)>0?e:new i(r)};O.comparedTo=O.cmp=function(n){var e,t,r,i,s=this,a=s.d,o=(n=new s.constructor(n)).d,u=s.s,l=n.s;if(!a||!o)return!u||!l?NaN:u!==l?u:a===o?0:!a^u<0?1:-1;if(!a[0]||!o[0])return a[0]?u:o[0]?-l:0;if(u!==l)return u;if(s.e!==n.e)return s.e>n.e^u<0?1:-1;for(r=a.length,i=o.length,e=0,t=r<i?r:i;e<t;++e)if(a[e]!==o[e])return a[e]>o[e]^u<0?1:-1;return r===i?0:r>i^u<0?1:-1};O.cosine=O.cos=function(){var n,e,t=this,r=t.constructor;return t.d?t.d[0]?(n=r.precision,e=r.rounding,r.precision=n+Math.max(t.e,t.sd())+Z,r.rounding=1,t=Rc(r,oa(r,t)),r.precision=n,r.rounding=e,L(zt==2||zt==3?t.neg():t,n,e,!0)):new r(1):new r(NaN)};O.cubeRoot=O.cbrt=function(){var n,e,t,r,i,s,a,o,u,l,p=this,f=p.constructor;if(!p.isFinite()||p.isZero())return new f(p);for(H=!1,s=p.s*at(p.s*p,1/3),!s||Math.abs(s)==1/0?(t=ct(p.d),n=p.e,(s=(n-t.length+1)%3)&&(t+=s==1||s==-2?"0":"00"),s=at(t,1/3),n=ht((n+1)/3)-(n%3==(n<0?-1:2)),s==1/0?t="5e"+n:(t=s.toExponential(),t=t.slice(0,t.indexOf("e")+1)+n),r=new f(t),r.s=p.s):r=new f(s.toString()),a=(n=f.precision)+3;;)if(o=r,u=o.times(o).times(o),l=u.plus(p),r=de(l.plus(p).times(o),l.plus(u),a+2,1),ct(o.d).slice(0,a)===(t=ct(r.d)).slice(0,a))if(t=t.slice(a-3,a+1),t=="9999"||!i&&t=="4999"){if(!i&&(L(o,n+1,0),o.times(o).times(o).eq(p))){r=o;break}a+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(L(r,n+1,1),e=!r.times(r).times(r).eq(p));break}return H=!0,L(r,n,f.rounding,e)};O.decimalPlaces=O.dp=function(){var n,e=this.d,t=NaN;if(e){if(n=e.length-1,t=(n-ht(this.e/Z))*Z,n=e[n],n)for(;n%10==0;n/=10)t--;t<0&&(t=0)}return t};O.dividedBy=O.div=function(n){return de(this,new this.constructor(n))};O.dividedToIntegerBy=O.divToInt=function(n){var e=this,t=e.constructor;return L(de(e,new t(n),0,1,1),t.precision,t.rounding)};O.equals=O.eq=function(n){return this.cmp(n)===0};O.floor=function(){return L(new this.constructor(this),this.e+1,3)};O.greaterThan=O.gt=function(n){return this.cmp(n)>0};O.greaterThanOrEqualTo=O.gte=function(n){var e=this.cmp(n);return e==1||e===0};O.hyperbolicCosine=O.cosh=function(){var n,e,t,r,i,s=this,a=s.constructor,o=new a(1);if(!s.isFinite())return new a(s.s?1/0:NaN);if(s.isZero())return o;t=a.precision,r=a.rounding,a.precision=t+Math.max(s.e,s.sd())+4,a.rounding=1,i=s.d.length,i<32?(n=Math.ceil(i/3),e=(1/An(4,n)).toString()):(n=16,e="2.3283064365386962890625e-10"),s=Fr(a,1,s.times(e),new a(1),!0);for(var u,l=n,p=new a(8);l--;)u=s.times(s),s=o.minus(u.times(p.minus(u.times(p))));return L(s,a.precision=t,a.rounding=r,!0)};O.hyperbolicSine=O.sinh=function(){var n,e,t,r,i=this,s=i.constructor;if(!i.isFinite()||i.isZero())return new s(i);if(e=s.precision,t=s.rounding,s.precision=e+Math.max(i.e,i.sd())+4,s.rounding=1,r=i.d.length,r<3)i=Fr(s,2,i,i,!0);else{n=1.4*Math.sqrt(r),n=n>16?16:n|0,i=i.times(1/An(5,n)),i=Fr(s,2,i,i,!0);for(var a,o=new s(5),u=new s(16),l=new s(20);n--;)a=i.times(i),i=i.times(o.plus(a.times(u.times(a).plus(l))))}return s.precision=e,s.rounding=t,L(i,e,t,!0)};O.hyperbolicTangent=O.tanh=function(){var n,e,t=this,r=t.constructor;return t.isFinite()?t.isZero()?new r(t):(n=r.precision,e=r.rounding,r.precision=n+7,r.rounding=1,de(t.sinh(),t.cosh(),r.precision=n,r.rounding=e)):new r(t.s)};O.inverseCosine=O.acos=function(){var n=this,e=n.constructor,t=n.abs().cmp(1),r=e.precision,i=e.rounding;return t!==-1?t===0?n.isNeg()?qt(e,r,i):new e(0):new e(NaN):n.isZero()?qt(e,r+4,i).times(.5):(e.precision=r+6,e.rounding=1,n=new e(1).minus(n).div(n.plus(1)).sqrt().atan(),e.precision=r,e.rounding=i,n.times(2))};O.inverseHyperbolicCosine=O.acosh=function(){var n,e,t=this,r=t.constructor;return t.lte(1)?new r(t.eq(1)?0:NaN):t.isFinite()?(n=r.precision,e=r.rounding,r.precision=n+Math.max(Math.abs(t.e),t.sd())+4,r.rounding=1,H=!1,t=t.times(t).minus(1).sqrt().plus(t),H=!0,r.precision=n,r.rounding=e,t.ln()):new r(t)};O.inverseHyperbolicSine=O.asinh=function(){var n,e,t=this,r=t.constructor;return!t.isFinite()||t.isZero()?new r(t):(n=r.precision,e=r.rounding,r.precision=n+2*Math.max(Math.abs(t.e),t.sd())+6,r.rounding=1,H=!1,t=t.times(t).plus(1).sqrt().plus(t),H=!0,r.precision=n,r.rounding=e,t.ln())};O.inverseHyperbolicTangent=O.atanh=function(){var n,e,t,r,i=this,s=i.constructor;return i.isFinite()?i.e>=0?new s(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(n=s.precision,e=s.rounding,r=i.sd(),Math.max(r,n)<2*-i.e-1?L(new s(i),n,e,!0):(s.precision=t=r-i.e,i=de(i.plus(1),new s(1).minus(i),t+n,1),s.precision=n+4,s.rounding=1,i=i.ln(),s.precision=n,s.rounding=e,i.times(.5))):new s(NaN)};O.inverseSine=O.asin=function(){var n,e,t,r,i=this,s=i.constructor;return i.isZero()?new s(i):(e=i.abs().cmp(1),t=s.precision,r=s.rounding,e!==-1?e===0?(n=qt(s,t+4,r).times(.5),n.s=i.s,n):new s(NaN):(s.precision=t+6,s.rounding=1,i=i.div(new s(1).minus(i.times(i)).sqrt().plus(1)).atan(),s.precision=t,s.rounding=r,i.times(2)))};O.inverseTangent=O.atan=function(){var n,e,t,r,i,s,a,o,u,l=this,p=l.constructor,f=p.precision,m=p.rounding;if(l.isFinite()){if(l.isZero())return new p(l);if(l.abs().eq(1)&&f+4<=wi)return a=qt(p,f+4,m).times(.25),a.s=l.s,a}else{if(!l.s)return new p(NaN);if(f+4<=wi)return a=qt(p,f+4,m).times(.5),a.s=l.s,a}for(p.precision=o=f+10,p.rounding=1,t=Math.min(28,o/Z+2|0),n=t;n;--n)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(H=!1,e=Math.ceil(o/Z),r=1,u=l.times(l),a=new p(l),i=l;n!==-1;)if(i=i.times(u),s=a.minus(i.div(r+=2)),i=i.times(u),a=s.plus(i.div(r+=2)),a.d[e]!==void 0)for(n=e;a.d[n]===s.d[n]&&n--;);return t&&(a=a.times(2<<t-1)),H=!0,L(a,p.precision=f,p.rounding=m,!0)};O.isFinite=function(){return!!this.d};O.isInteger=O.isInt=function(){return!!this.d&&ht(this.e/Z)>this.d.length-2};O.isNaN=function(){return!this.s};O.isNegative=O.isNeg=function(){return this.s<0};O.isPositive=O.isPos=function(){return this.s>0};O.isZero=function(){return!!this.d&&this.d[0]===0};O.lessThan=O.lt=function(n){return this.cmp(n)<0};O.lessThanOrEqualTo=O.lte=function(n){return this.cmp(n)<1};O.logarithm=O.log=function(n){var e,t,r,i,s,a,o,u,l=this,p=l.constructor,f=p.precision,m=p.rounding,y=5;if(n==null)n=new p(10),e=!0;else{if(n=new p(n),t=n.d,n.s<0||!t||!t[0]||n.eq(1))return new p(NaN);e=n.eq(10)}if(t=l.d,l.s<0||!t||!t[0]||l.eq(1))return new p(t&&!t[0]?-1/0:l.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)s=!0;else{for(i=t[0];i%10===0;)i/=10;s=i!==1}if(H=!1,o=f+y,a=Yt(l,o),r=e?Cn(p,o+10):Yt(n,o),u=de(a,r,o,1),Yr(u.d,i=f,m))do if(o+=10,a=Yt(l,o),r=e?Cn(p,o+10):Yt(n,o),u=de(a,r,o,1),!s){+ct(u.d).slice(i+1,i+15)+1==1e14&&(u=L(u,f+1,0));break}while(Yr(u.d,i+=10,m));return H=!0,L(u,f,m)};O.minus=O.sub=function(n){var e,t,r,i,s,a,o,u,l,p,f,m,y=this,k=y.constructor;if(n=new k(n),!y.d||!n.d)return!y.s||!n.s?n=new k(NaN):y.d?n.s=-n.s:n=new k(n.d||y.s!==n.s?y:NaN),n;if(y.s!=n.s)return n.s=-n.s,y.plus(n);if(l=y.d,m=n.d,o=k.precision,u=k.rounding,!l[0]||!m[0]){if(m[0])n.s=-n.s;else if(l[0])n=new k(y);else return new k(u===3?-0:0);return H?L(n,o,u):n}if(t=ht(n.e/Z),p=ht(y.e/Z),l=l.slice(),s=p-t,s){for(f=s<0,f?(e=l,s=-s,a=m.length):(e=m,t=p,a=l.length),r=Math.max(Math.ceil(o/Z),a)+2,s>r&&(s=r,e.length=1),e.reverse(),r=s;r--;)e.push(0);e.reverse()}else{for(r=l.length,a=m.length,f=r<a,f&&(a=r),r=0;r<a;r++)if(l[r]!=m[r]){f=l[r]<m[r];break}s=0}for(f&&(e=l,l=m,m=e,n.s=-n.s),a=l.length,r=m.length-a;r>0;--r)l[a++]=0;for(r=m.length;r>s;){if(l[--r]<m[r]){for(i=r;i&&l[--i]===0;)l[i]=Ot-1;--l[i],l[r]+=Ot}l[r]-=m[r]}for(;l[--a]===0;)l.pop();for(;l[0]===0;l.shift())--t;return l[0]?(n.d=l,n.e=Mn(l,t),H?L(n,o,u):n):new k(u===3?-0:0)};O.modulo=O.mod=function(n){var e,t=this,r=t.constructor;return n=new r(n),!t.d||!n.s||n.d&&!n.d[0]?new r(NaN):!n.d||t.d&&!t.d[0]?L(new r(t),r.precision,r.rounding):(H=!1,r.modulo==9?(e=de(t,n.abs(),0,3,1),e.s*=n.s):e=de(t,n,0,r.modulo,1),e=e.times(n),H=!0,t.minus(e))};O.naturalExponential=O.exp=function(){return vi(this)};O.naturalLogarithm=O.ln=function(){return Yt(this)};O.negated=O.neg=function(){var n=new this.constructor(this);return n.s=-n.s,L(n)};O.plus=O.add=function(n){var e,t,r,i,s,a,o,u,l,p,f=this,m=f.constructor;if(n=new m(n),!f.d||!n.d)return!f.s||!n.s?n=new m(NaN):f.d||(n=new m(n.d||f.s===n.s?f:NaN)),n;if(f.s!=n.s)return n.s=-n.s,f.minus(n);if(l=f.d,p=n.d,o=m.precision,u=m.rounding,!l[0]||!p[0])return p[0]||(n=new m(f)),H?L(n,o,u):n;if(s=ht(f.e/Z),r=ht(n.e/Z),l=l.slice(),i=s-r,i){for(i<0?(t=l,i=-i,a=p.length):(t=p,r=s,a=l.length),s=Math.ceil(o/Z),a=s>a?s+1:a+1,i>a&&(i=a,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(a=l.length,i=p.length,a-i<0&&(i=a,t=p,p=l,l=t),e=0;i;)e=(l[--i]=l[i]+p[i]+e)/Ot|0,l[i]%=Ot;for(e&&(l.unshift(e),++r),a=l.length;l[--a]==0;)l.pop();return n.d=l,n.e=Mn(l,r),H?L(n,o,u):n};O.precision=O.sd=function(n){var e,t=this;if(n!==void 0&&n!==!!n&&n!==1&&n!==0)throw Error(tr+n);return t.d?(e=na(t.d),n&&t.e+1>e&&(e=t.e+1)):e=NaN,e};O.round=function(){var n=this,e=n.constructor;return L(new e(n),n.e+1,e.rounding)};O.sine=O.sin=function(){var n,e,t=this,r=t.constructor;return t.isFinite()?t.isZero()?new r(t):(n=r.precision,e=r.rounding,r.precision=n+Math.max(t.e,t.sd())+Z,r.rounding=1,t=Bc(r,oa(r,t)),r.precision=n,r.rounding=e,L(zt>2?t.neg():t,n,e,!0)):new r(NaN)};O.squareRoot=O.sqrt=function(){var n,e,t,r,i,s,a=this,o=a.d,u=a.e,l=a.s,p=a.constructor;if(l!==1||!o||!o[0])return new p(!l||l<0&&(!o||o[0])?NaN:o?a:1/0);for(H=!1,l=Math.sqrt(+a),l==0||l==1/0?(e=ct(o),(e.length+u)%2==0&&(e+="0"),l=Math.sqrt(e),u=ht((u+1)/2)-(u<0||u%2),l==1/0?e="5e"+u:(e=l.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),r=new p(e)):r=new p(l.toString()),t=(u=p.precision)+3;;)if(s=r,r=s.plus(de(a,s,t+2,1)).times(.5),ct(s.d).slice(0,t)===(e=ct(r.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(L(s,u+1,0),s.times(s).eq(a))){r=s;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(L(r,u+1,1),n=!r.times(r).eq(a));break}return H=!0,L(r,u,p.rounding,n)};O.tangent=O.tan=function(){var n,e,t=this,r=t.constructor;return t.isFinite()?t.isZero()?new r(t):(n=r.precision,e=r.rounding,r.precision=n+10,r.rounding=1,t=t.sin(),t.s=1,t=de(t,new r(1).minus(t.times(t)).sqrt(),n+10,0),r.precision=n,r.rounding=e,L(zt==2||zt==4?t.neg():t,n,e,!0)):new r(NaN)};O.times=O.mul=function(n){var e,t,r,i,s,a,o,u,l,p=this,f=p.constructor,m=p.d,y=(n=new f(n)).d;if(n.s*=p.s,!m||!m[0]||!y||!y[0])return new f(!n.s||m&&!m[0]&&!y||y&&!y[0]&&!m?NaN:!m||!y?n.s/0:n.s*0);for(t=ht(p.e/Z)+ht(n.e/Z),u=m.length,l=y.length,u<l&&(s=m,m=y,y=s,a=u,u=l,l=a),s=[],a=u+l,r=a;r--;)s.push(0);for(r=l;--r>=0;){for(e=0,i=u+r;i>r;)o=s[i]+y[r]*m[i-r-1]+e,s[i--]=o%Ot|0,e=o/Ot|0;s[i]=(s[i]+e)%Ot|0}for(;!s[--a];)s.pop();return e?++t:s.shift(),n.d=s,n.e=Mn(s,t),H?L(n,f.precision,f.rounding):n};O.toBinary=function(n,e){return Ci(this,2,n,e)};O.toDecimalPlaces=O.toDP=function(n,e){var t=this,r=t.constructor;return t=new r(t),n===void 0?t:(mt(n,0,rr),e===void 0?e=r.rounding:mt(e,0,8),L(t,n+t.e+1,e))};O.toExponential=function(n,e){var t,r=this,i=r.constructor;return n===void 0?t=Bt(r,!0):(mt(n,0,rr),e===void 0?e=i.rounding:mt(e,0,8),r=L(new i(r),n+1,e),t=Bt(r,!0,n+1)),r.isNeg()&&!r.isZero()?"-"+t:t};O.toFixed=function(n,e){var t,r,i=this,s=i.constructor;return n===void 0?t=Bt(i):(mt(n,0,rr),e===void 0?e=s.rounding:mt(e,0,8),r=L(new s(i),n+i.e+1,e),t=Bt(r,!1,n+r.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};O.toFraction=function(n){var e,t,r,i,s,a,o,u,l,p,f,m,y=this,k=y.d,C=y.constructor;if(!k)return new C(y);if(l=t=new C(1),r=u=new C(0),e=new C(r),s=e.e=na(k)-y.e-1,a=s%Z,e.d[0]=at(10,a<0?Z+a:a),n==null)n=s>0?e:l;else{if(o=new C(n),!o.isInt()||o.lt(l))throw Error(tr+o);n=o.gt(e)?s>0?e:l:o}for(H=!1,o=new C(ct(k)),p=C.precision,C.precision=s=k.length*Z*2;f=de(o,e,0,1,1),i=t.plus(f.times(r)),i.cmp(n)!=1;)t=r,r=i,i=l,l=u.plus(f.times(i)),u=i,i=e,e=o.minus(f.times(i)),o=i;return i=de(n.minus(t),r,0,1,1),u=u.plus(i.times(l)),t=t.plus(i.times(r)),u.s=l.s=y.s,m=de(l,r,s,1).minus(y).abs().cmp(de(u,t,s,1).minus(y).abs())<1?[l,r]:[u,t],C.precision=p,H=!0,m};O.toHexadecimal=O.toHex=function(n,e){return Ci(this,16,n,e)};O.toNearest=function(n,e){var t=this,r=t.constructor;if(t=new r(t),n==null){if(!t.d)return t;n=new r(1),e=r.rounding}else{if(n=new r(n),e===void 0?e=r.rounding:mt(e,0,8),!t.d)return n.s?t:n;if(!n.d)return n.s&&(n.s=t.s),n}return n.d[0]?(H=!1,t=de(t,n,0,e,1).times(n),H=!0,L(t)):(n.s=t.s,t=n),t};O.toNumber=function(){return+this};O.toOctal=function(n,e){return Ci(this,8,n,e)};O.toPower=O.pow=function(n){var e,t,r,i,s,a,o=this,u=o.constructor,l=+(n=new u(n));if(!o.d||!n.d||!o.d[0]||!n.d[0])return new u(at(+o,l));if(o=new u(o),o.eq(1))return o;if(r=u.precision,s=u.rounding,n.eq(1))return L(o,r,s);if(e=ht(n.e/Z),e>=n.d.length-1&&(t=l<0?-l:l)<=Ic)return i=ia(u,o,t,r),n.s<0?new u(1).div(i):L(i,r,s);if(a=o.s,a<0){if(e<n.d.length-1)return new u(NaN);if(!(n.d[e]&1)&&(a=1),o.e==0&&o.d[0]==1&&o.d.length==1)return o.s=a,o}return t=at(+o,l),e=t==0||!isFinite(t)?ht(l*(Math.log("0."+ct(o.d))/Math.LN10+o.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?a/0:0):(H=!1,u.rounding=o.s=1,t=Math.min(12,(e+"").length),i=vi(n.times(Yt(o,r+t)),r),i.d&&(i=L(i,r+5,1),Yr(i.d,r,s)&&(e=r+10,i=L(vi(n.times(Yt(o,e+t)),e),e+5,1),+ct(i.d).slice(r+1,r+15)+1==1e14&&(i=L(i,r+1,0)))),i.s=a,H=!0,u.rounding=s,L(i,r,s))};O.toPrecision=function(n,e){var t,r=this,i=r.constructor;return n===void 0?t=Bt(r,r.e<=i.toExpNeg||r.e>=i.toExpPos):(mt(n,1,rr),e===void 0?e=i.rounding:mt(e,0,8),r=L(new i(r),n,e),t=Bt(r,n<=r.e||r.e<=i.toExpNeg,n)),r.isNeg()&&!r.isZero()?"-"+t:t};O.toSignificantDigits=O.toSD=function(n,e){var t=this,r=t.constructor;return n===void 0?(n=r.precision,e=r.rounding):(mt(n,1,rr),e===void 0?e=r.rounding:mt(e,0,8)),L(new r(t),n,e)};O.toString=function(){var n=this,e=n.constructor,t=Bt(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()&&!n.isZero()?"-"+t:t};O.truncated=O.trunc=function(){return L(new this.constructor(this),this.e+1,1)};O.valueOf=O.toJSON=function(){var n=this,e=n.constructor,t=Bt(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()?"-"+t:t};function ct(n){var e,t,r,i=n.length-1,s="",a=n[0];if(i>0){for(s+=a,e=1;e<i;e++)r=n[e]+"",t=Z-r.length,t&&(s+=Jt(t)),s+=r;a=n[e],r=a+"",t=Z-r.length,t&&(s+=Jt(t))}else if(a===0)return"0";for(;a%10===0;)a/=10;return s+a}function mt(n,e,t){if(n!==~~n||n<e||n>t)throw Error(tr+n)}function Yr(n,e,t,r){var i,s,a,o;for(s=n[0];s>=10;s/=10)--e;return--e<0?(e+=Z,i=0):(i=Math.ceil((e+1)/Z),e%=Z),s=at(10,Z-e),o=n[i]%s|0,r==null?e<3?(e==0?o=o/100|0:e==1&&(o=o/10|0),a=t<4&&o==99999||t>3&&o==49999||o==5e4||o==0):a=(t<4&&o+1==s||t>3&&o+1==s/2)&&(n[i+1]/s/100|0)==at(10,e-2)-1||(o==s/2||o==0)&&(n[i+1]/s/100|0)==0:e<4?(e==0?o=o/1e3|0:e==1?o=o/100|0:e==2&&(o=o/10|0),a=(r||t<4)&&o==9999||!r&&t>3&&o==4999):a=((r||t<4)&&o+1==s||!r&&t>3&&o+1==s/2)&&(n[i+1]/s/1e3|0)==at(10,e-3)-1,a}function yn(n,e,t){for(var r,i=[0],s,a=0,o=n.length;a<o;){for(s=i.length;s--;)i[s]*=e;for(i[0]+=yi.indexOf(n.charAt(a++)),r=0;r<i.length;r++)i[r]>t-1&&(i[r+1]===void 0&&(i[r+1]=0),i[r+1]+=i[r]/t|0,i[r]%=t)}return i.reverse()}function Rc(n,e){var t,r,i;if(e.isZero())return e;r=e.d.length,r<32?(t=Math.ceil(r/3),i=(1/An(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),n.precision+=t,e=Fr(n,1,e.times(i),new n(1));for(var s=t;s--;){var a=e.times(e);e=a.times(a).minus(a).times(8).plus(1)}return n.precision-=t,e}var de=function(){function n(r,i,s){var a,o=0,u=r.length;for(r=r.slice();u--;)a=r[u]*i+o,r[u]=a%s|0,o=a/s|0;return o&&r.unshift(o),r}function e(r,i,s,a){var o,u;if(s!=a)u=s>a?1:-1;else for(o=u=0;o<s;o++)if(r[o]!=i[o]){u=r[o]>i[o]?1:-1;break}return u}function t(r,i,s,a){for(var o=0;s--;)r[s]-=o,o=r[s]<i[s]?1:0,r[s]=o*a+r[s]-i[s];for(;!r[0]&&r.length>1;)r.shift()}return function(r,i,s,a,o,u){var l,p,f,m,y,k,C,A,E,q,x,U,ee,F,oe,ae,ce,we,ve,ft,ue=r.constructor,St=r.s==i.s?1:-1,c=r.d,h=i.d;if(!c||!c[0]||!h||!h[0])return new ue(!r.s||!i.s||(c?h&&c[0]==h[0]:!h)?NaN:c&&c[0]==0||!h?St*0:St/0);for(u?(y=1,p=r.e-i.e):(u=Ot,y=Z,p=ht(r.e/y)-ht(i.e/y)),ve=h.length,ce=c.length,E=new ue(St),q=E.d=[],f=0;h[f]==(c[f]||0);f++);if(h[f]>(c[f]||0)&&p--,s==null?(F=s=ue.precision,a=ue.rounding):o?F=s+(r.e-i.e)+1:F=s,F<0)q.push(1),k=!0;else{if(F=F/y+2|0,f=0,ve==1){for(m=0,h=h[0],F++;(f<ce||m)&&F--;f++)oe=m*u+(c[f]||0),q[f]=oe/h|0,m=oe%h|0;k=m||f<ce}else{for(m=u/(h[0]+1)|0,m>1&&(h=n(h,m,u),c=n(c,m,u),ve=h.length,ce=c.length),ae=ve,x=c.slice(0,ve),U=x.length;U<ve;)x[U++]=0;ft=h.slice(),ft.unshift(0),we=h[0],h[1]>=u/2&&++we;do m=0,l=e(h,x,ve,U),l<0?(ee=x[0],ve!=U&&(ee=ee*u+(x[1]||0)),m=ee/we|0,m>1?(m>=u&&(m=u-1),C=n(h,m,u),A=C.length,U=x.length,l=e(C,x,A,U),l==1&&(m--,t(C,ve<A?ft:h,A,u))):(m==0&&(l=m=1),C=h.slice()),A=C.length,A<U&&C.unshift(0),t(x,C,U,u),l==-1&&(U=x.length,l=e(h,x,ve,U),l<1&&(m++,t(x,ve<U?ft:h,U,u))),U=x.length):l===0&&(m++,x=[0]),q[f++]=m,l&&x[0]?x[U++]=c[ae]||0:(x=[c[ae]],U=1);while((ae++<ce||x[0]!==void 0)&&F--);k=x[0]!==void 0}q[0]||q.shift()}if(y==1)E.e=p,Js=k;else{for(f=1,m=q[0];m>=10;m/=10)f++;E.e=f+p*y-1,L(E,o?s+E.e+1:s,a,k)}return E}}();function L(n,e,t,r){var i,s,a,o,u,l,p,f,m,y=n.constructor;e:if(e!=null){if(f=n.d,!f)return n;for(i=1,o=f[0];o>=10;o/=10)i++;if(s=e-i,s<0)s+=Z,a=e,p=f[m=0],u=p/at(10,i-a-1)%10|0;else if(m=Math.ceil((s+1)/Z),o=f.length,m>=o)if(r){for(;o++<=m;)f.push(0);p=u=0,i=1,s%=Z,a=s-Z+1}else break e;else{for(p=o=f[m],i=1;o>=10;o/=10)i++;s%=Z,a=s-Z+i,u=a<0?0:p/at(10,i-a-1)%10|0}if(r=r||e<0||f[m+1]!==void 0||(a<0?p:p%at(10,i-a-1)),l=t<4?(u||r)&&(t==0||t==(n.s<0?3:2)):u>5||u==5&&(t==4||r||t==6&&(s>0?a>0?p/at(10,i-a):0:f[m-1])%10&1||t==(n.s<0?8:7)),e<1||!f[0])return f.length=0,l?(e-=n.e+1,f[0]=at(10,(Z-e%Z)%Z),n.e=-e||0):f[0]=n.e=0,n;if(s==0?(f.length=m,o=1,m--):(f.length=m+1,o=at(10,Z-s),f[m]=a>0?(p/at(10,i-a)%at(10,a)|0)*o:0),l)for(;;)if(m==0){for(s=1,a=f[0];a>=10;a/=10)s++;for(a=f[0]+=o,o=1;a>=10;a/=10)o++;s!=o&&(n.e++,f[0]==Ot&&(f[0]=1));break}else{if(f[m]+=o,f[m]!=Ot)break;f[m--]=0,o=1}for(s=f.length;f[--s]===0;)f.pop()}return H&&(n.e>y.maxE?(n.d=null,n.e=NaN):n.e<y.minE&&(n.e=0,n.d=[0])),n}function Bt(n,e,t){if(!n.isFinite())return aa(n);var r,i=n.e,s=ct(n.d),a=s.length;return e?(t&&(r=t-a)>0?s=s.charAt(0)+"."+s.slice(1)+Jt(r):a>1&&(s=s.charAt(0)+"."+s.slice(1)),s=s+(n.e<0?"e":"e+")+n.e):i<0?(s="0."+Jt(-i-1)+s,t&&(r=t-a)>0&&(s+=Jt(r))):i>=a?(s+=Jt(i+1-a),t&&(r=t-i-1)>0&&(s=s+"."+Jt(r))):((r=i+1)<a&&(s=s.slice(0,r)+"."+s.slice(r)),t&&(r=t-a)>0&&(i+1===a&&(s+="."),s+=Jt(r))),s}function Mn(n,e){var t=n[0];for(e*=Z;t>=10;t/=10)e++;return e}function Cn(n,e,t){if(e>Pc)throw H=!0,t&&(n.precision=t),Error(Ys);return L(new n(vn),e,1,!0)}function qt(n,e,t){if(e>wi)throw Error(Ys);return L(new n(kn),e,t,!0)}function na(n){var e=n.length-1,t=e*Z+1;if(e=n[e],e){for(;e%10==0;e/=10)t--;for(e=n[0];e>=10;e/=10)t++}return t}function Jt(n){for(var e="";n--;)e+="0";return e}function ia(n,e,t,r){var i,s=new n(1),a=Math.ceil(r/Z+4);for(H=!1;;){if(t%2&&(s=s.times(e),Fs(s.d,a)&&(i=!0)),t=ht(t/2),t===0){t=s.d.length-1,i&&s.d[t]===0&&++s.d[t];break}e=e.times(e),Fs(e.d,a)}return H=!0,s}function Ns(n){return n.d[n.d.length-1]&1}function sa(n,e,t){for(var r,i,s=new n(e[0]),a=0;++a<e.length;){if(i=new n(e[a]),!i.s){s=i;break}r=s.cmp(i),(r===t||r===0&&s.s===t)&&(s=i)}return s}function vi(n,e){var t,r,i,s,a,o,u,l=0,p=0,f=0,m=n.constructor,y=m.rounding,k=m.precision;if(!n.d||!n.d[0]||n.e>17)return new m(n.d?n.d[0]?n.s<0?0:1/0:1:n.s?n.s<0?0:n:NaN);for(e==null?(H=!1,u=k):u=e,o=new m(.03125);n.e>-2;)n=n.times(o),f+=5;for(r=Math.log(at(2,f))/Math.LN10*2+5|0,u+=r,t=s=a=new m(1),m.precision=u;;){if(s=L(s.times(n),u,1),t=t.times(++p),o=a.plus(de(s,t,u,1)),ct(o.d).slice(0,u)===ct(a.d).slice(0,u)){for(i=f;i--;)a=L(a.times(a),u,1);if(e==null)if(l<3&&Yr(a.d,u-r,y,l))m.precision=u+=10,t=s=o=new m(1),p=0,l++;else return L(a,m.precision=k,y,H=!0);else return m.precision=k,a}a=o}}function Yt(n,e){var t,r,i,s,a,o,u,l,p,f,m,y=1,k=10,C=n,A=C.d,E=C.constructor,q=E.rounding,x=E.precision;if(C.s<0||!A||!A[0]||!C.e&&A[0]==1&&A.length==1)return new E(A&&!A[0]?-1/0:C.s!=1?NaN:A?0:C);if(e==null?(H=!1,p=x):p=e,E.precision=p+=k,t=ct(A),r=t.charAt(0),Math.abs(s=C.e)<15e14){for(;r<7&&r!=1||r==1&&t.charAt(1)>3;)C=C.times(n),t=ct(C.d),r=t.charAt(0),y++;s=C.e,r>1?(C=new E("0."+t),s++):C=new E(r+"."+t.slice(1))}else return l=Cn(E,p+2,x).times(s+""),C=Yt(new E(r+"."+t.slice(1)),p-k).plus(l),E.precision=x,e==null?L(C,x,q,H=!0):C;for(f=C,u=a=C=de(C.minus(1),C.plus(1),p,1),m=L(C.times(C),p,1),i=3;;){if(a=L(a.times(m),p,1),l=u.plus(de(a,new E(i),p,1)),ct(l.d).slice(0,p)===ct(u.d).slice(0,p))if(u=u.times(2),s!==0&&(u=u.plus(Cn(E,p+2,x).times(s+""))),u=de(u,new E(y),p,1),e==null)if(Yr(u.d,p-k,q,o))E.precision=p+=k,l=a=C=de(f.minus(1),f.plus(1),p,1),m=L(C.times(C),p,1),i=o=1;else return L(u,E.precision=x,q,H=!0);else return E.precision=x,u;u=l,i+=2}}function aa(n){return String(n.s*n.s/0)}function bn(n,e){var t,r,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(r=e.search(/e/i))>0?(t<0&&(t=r),t+=+e.slice(r+1),e=e.substring(0,r)):t<0&&(t=e.length),r=0;e.charCodeAt(r)===48;r++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(r,i),e){if(i-=r,n.e=t=t-r-1,n.d=[],r=(t+1)%Z,t<0&&(r+=Z),r<i){for(r&&n.d.push(+e.slice(0,r)),i-=Z;r<i;)n.d.push(+e.slice(r,r+=Z));e=e.slice(r),r=Z-e.length}else r-=i;for(;r--;)e+="0";n.d.push(+e),H&&(n.e>n.constructor.maxE?(n.d=null,n.e=NaN):n.e<n.constructor.minE&&(n.e=0,n.d=[0]))}else n.e=0,n.d=[0];return n}function qc(n,e){var t,r,i,s,a,o,u,l,p;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ra.test(e))return bn(n,e)}else if(e==="Infinity"||e==="NaN")return+e||(n.s=NaN),n.e=NaN,n.d=null,n;if(jc.test(e))t=16,e=e.toLowerCase();else if(Ec.test(e))t=2;else if(xc.test(e))t=8;else throw Error(tr+e);for(s=e.search(/p/i),s>0?(u=+e.slice(s+1),e=e.substring(2,s)):e=e.slice(2),s=e.indexOf("."),a=s>=0,r=n.constructor,a&&(e=e.replace(".",""),o=e.length,s=o-s,i=ia(r,new r(t),s,s*2)),l=yn(e,t,Ot),p=l.length-1,s=p;l[s]===0;--s)l.pop();return s<0?new r(n.s*0):(n.e=Mn(l,p),n.d=l,H=!1,a&&(n=de(n,i,o*4)),u&&(n=n.times(Math.abs(u)<54?at(2,u):rn.pow(2,u))),H=!0,n)}function Bc(n,e){var t,r=e.d.length;if(r<3)return e.isZero()?e:Fr(n,2,e,e);t=1.4*Math.sqrt(r),t=t>16?16:t|0,e=e.times(1/An(5,t)),e=Fr(n,2,e,e);for(var i,s=new n(5),a=new n(16),o=new n(20);t--;)i=e.times(e),e=e.times(s.plus(i.times(a.times(i).minus(o))));return e}function Fr(n,e,t,r,i){var s,a,o,u,l=1,p=n.precision,f=Math.ceil(p/Z);for(H=!1,u=t.times(t),o=new n(r);;){if(a=de(o.times(u),new n(e++*e++),p,1),o=i?r.plus(a):r.minus(a),r=de(a.times(u),new n(e++*e++),p,1),a=o.plus(r),a.d[f]!==void 0){for(s=f;a.d[s]===o.d[s]&&s--;);if(s==-1)break}s=o,o=r,r=a,a=s,l++}return H=!0,a.d.length=f+1,a}function An(n,e){for(var t=n;--e;)t*=n;return t}function oa(n,e){var t,r=e.s<0,i=qt(n,n.precision,1),s=i.times(.5);if(e=e.abs(),e.lte(s))return zt=r?4:1,e;if(t=e.divToInt(i),t.isZero())zt=r?3:2;else{if(e=e.minus(t.times(i)),e.lte(s))return zt=Ns(t)?r?2:3:r?4:1,e;zt=Ns(t)?r?1:4:r?3:2}return e.minus(i).abs()}function Ci(n,e,t,r){var i,s,a,o,u,l,p,f,m,y=n.constructor,k=t!==void 0;if(k?(mt(t,1,rr),r===void 0?r=y.rounding:mt(r,0,8)):(t=y.precision,r=y.rounding),!n.isFinite())p=aa(n);else{for(p=Bt(n),a=p.indexOf("."),k?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,a>=0&&(p=p.replace(".",""),m=new y(1),m.e=p.length-a,m.d=yn(Bt(m),10,i),m.e=m.d.length),f=yn(p,10,i),s=u=f.length;f[--u]==0;)f.pop();if(!f[0])p=k?"0p+0":"0";else{if(a<0?s--:(n=new y(n),n.d=f,n.e=s,n=de(n,m,t,r,0,i),f=n.d,s=n.e,l=Js),a=f[t],o=i/2,l=l||f[t+1]!==void 0,l=r<4?(a!==void 0||l)&&(r===0||r===(n.s<0?3:2)):a>o||a===o&&(r===4||l||r===6&&f[t-1]&1||r===(n.s<0?8:7)),f.length=t,l)for(;++f[--t]>i-1;)f[t]=0,t||(++s,f.unshift(1));for(u=f.length;!f[u-1];--u);for(a=0,p="";a<u;a++)p+=yi.charAt(f[a]);if(k){if(u>1)if(e==16||e==8){for(a=e==16?4:3,--u;u%a;u++)p+="0";for(f=yn(p,i,e),u=f.length;!f[u-1];--u);for(a=1,p="1.";a<u;a++)p+=yi.charAt(f[a])}else p=p.charAt(0)+"."+p.slice(1);p=p+(s<0?"p":"p+")+s}else if(s<0){for(;++s;)p="0"+p;p="0."+p}else if(++s>u)for(s-=u;s--;)p+="0";else s<u&&(p=p.slice(0,s)+"."+p.slice(s))}p=(e==16?"0x":e==2?"0b":e==8?"0o":"")+p}return n.s<0?"-"+p:p}function Fs(n,e){if(n.length>e)return n.length=e,!0}function Dc(n){return new this(n).abs()}function $c(n){return new this(n).acos()}function Nc(n){return new this(n).acosh()}function Fc(n,e){return new this(n).plus(e)}function Uc(n){return new this(n).asin()}function Lc(n){return new this(n).asinh()}function Vc(n){return new this(n).atan()}function zc(n){return new this(n).atanh()}function Gc(n,e){n=new this(n),e=new this(e);var t,r=this.precision,i=this.rounding,s=r+4;return!n.s||!e.s?t=new this(NaN):!n.d&&!e.d?(t=qt(this,s,1).times(e.s>0?.25:.75),t.s=n.s):!e.d||n.isZero()?(t=e.s<0?qt(this,r,i):new this(0),t.s=n.s):!n.d||e.isZero()?(t=qt(this,s,1).times(.5),t.s=n.s):e.s<0?(this.precision=s,this.rounding=1,t=this.atan(de(n,e,s,1)),e=qt(this,s,1),this.precision=r,this.rounding=i,t=n.s<0?t.minus(e):t.plus(e)):t=this.atan(de(n,e,s,1)),t}function Zc(n){return new this(n).cbrt()}function Qc(n){return L(n=new this(n),n.e+1,2)}function Wc(n,e,t){return new this(n).clamp(e,t)}function Hc(n){if(!n||typeof n!="object")throw Error(Sn+"Object expected");var e,t,r,i=n.defaults===!0,s=["precision",1,rr,"rounding",0,8,"toExpNeg",-Nr,0,"toExpPos",0,Nr,"maxE",0,Nr,"minE",-Nr,0,"modulo",0,9];for(e=0;e<s.length;e+=3)if(t=s[e],i&&(this[t]=bi[t]),(r=n[t])!==void 0)if(ht(r)===r&&r>=s[e+1]&&r<=s[e+2])this[t]=r;else throw Error(tr+t+": "+r);if(t="crypto",i&&(this[t]=bi[t]),(r=n[t])!==void 0)if(r===!0||r===!1||r===0||r===1)if(r)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(ea);else this[t]=!1;else throw Error(tr+t+": "+r);return this}function Kc(n){return new this(n).cos()}function Xc(n){return new this(n).cosh()}function ca(n){var e,t,r;function i(s){var a,o,u,l=this;if(!(l instanceof i))return new i(s);if(l.constructor=i,Us(s)){l.s=s.s,H?!s.d||s.e>i.maxE?(l.e=NaN,l.d=null):s.e<i.minE?(l.e=0,l.d=[0]):(l.e=s.e,l.d=s.d.slice()):(l.e=s.e,l.d=s.d?s.d.slice():s.d);return}if(u=typeof s,u==="number"){if(s===0){l.s=1/s<0?-1:1,l.e=0,l.d=[0];return}if(s<0?(s=-s,l.s=-1):l.s=1,s===~~s&&s<1e7){for(a=0,o=s;o>=10;o/=10)a++;H?a>i.maxE?(l.e=NaN,l.d=null):a<i.minE?(l.e=0,l.d=[0]):(l.e=a,l.d=[s]):(l.e=a,l.d=[s]);return}if(s*0!==0){s||(l.s=NaN),l.e=NaN,l.d=null;return}return bn(l,s.toString())}if(u==="string")return(o=s.charCodeAt(0))===45?(s=s.slice(1),l.s=-1):(o===43&&(s=s.slice(1)),l.s=1),ra.test(s)?bn(l,s):qc(l,s);if(u==="bigint")return s<0?(s=-s,l.s=-1):l.s=1,bn(l,s.toString());throw Error(tr+s)}if(i.prototype=O,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=Hc,i.clone=ca,i.isDecimal=Us,i.abs=Dc,i.acos=$c,i.acosh=Nc,i.add=Fc,i.asin=Uc,i.asinh=Lc,i.atan=Vc,i.atanh=zc,i.atan2=Gc,i.cbrt=Zc,i.ceil=Qc,i.clamp=Wc,i.cos=Kc,i.cosh=Xc,i.div=Jc,i.exp=Yc,i.floor=eu,i.hypot=tu,i.ln=ru,i.log=nu,i.log10=su,i.log2=iu,i.max=au,i.min=ou,i.mod=cu,i.mul=uu,i.pow=lu,i.random=du,i.round=hu,i.sign=pu,i.sin=mu,i.sinh=fu,i.sqrt=gu,i.sub=_u,i.sum=yu,i.tan=bu,i.tanh=wu,i.trunc=vu,n===void 0&&(n={}),n&&n.defaults!==!0)for(r=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<r.length;)n.hasOwnProperty(t=r[e++])||(n[t]=this[t]);return i.config(n),i}function Jc(n,e){return new this(n).div(e)}function Yc(n){return new this(n).exp()}function eu(n){return L(n=new this(n),n.e+1,3)}function tu(){var n,e,t=new this(0);for(H=!1,n=0;n<arguments.length;)if(e=new this(arguments[n++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return H=!0,new this(1/0);t=e}return H=!0,t.sqrt()}function Us(n){return n instanceof rn||n&&n.toStringTag===ta||!1}function ru(n){return new this(n).ln()}function nu(n,e){return new this(n).log(e)}function iu(n){return new this(n).log(2)}function su(n){return new this(n).log(10)}function au(){return sa(this,arguments,-1)}function ou(){return sa(this,arguments,1)}function cu(n,e){return new this(n).mod(e)}function uu(n,e){return new this(n).mul(e)}function lu(n,e){return new this(n).pow(e)}function du(n){var e,t,r,i,s=0,a=new this(1),o=[];if(n===void 0?n=this.precision:mt(n,1,rr),r=Math.ceil(n/Z),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(r));s<r;)i=e[s],i>=429e7?e[s]=crypto.getRandomValues(new Uint32Array(1))[0]:o[s++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(r*=4);s<r;)i=e[s]+(e[s+1]<<8)+(e[s+2]<<16)+((e[s+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,s):(o.push(i%1e7),s+=4);s=r/4}else throw Error(ea);else for(;s<r;)o[s++]=Math.random()*1e7|0;for(r=o[--s],n%=Z,r&&n&&(i=at(10,Z-n),o[s]=(r/i|0)*i);o[s]===0;s--)o.pop();if(s<0)t=0,o=[0];else{for(t=-1;o[0]===0;t-=Z)o.shift();for(r=1,i=o[0];i>=10;i/=10)r++;r<Z&&(t-=Z-r)}return a.e=t,a.d=o,a}function hu(n){return L(n=new this(n),n.e+1,this.rounding)}function pu(n){return n=new this(n),n.d?n.d[0]?n.s:0*n.s:n.s||NaN}function mu(n){return new this(n).sin()}function fu(n){return new this(n).sinh()}function gu(n){return new this(n).sqrt()}function _u(n,e){return new this(n).sub(e)}function yu(){var n=0,e=arguments,t=new this(e[n]);for(H=!1;t.s&&++n<e.length;)t=t.plus(e[n]);return H=!0,L(t,this.precision,this.rounding)}function bu(n){return new this(n).tan()}function wu(n){return new this(n).tanh()}function vu(n){return L(n=new this(n),n.e+1,1)}O[Symbol.for("nodejs.util.inspect.custom")]=O.toString;O[Symbol.toStringTag]="Decimal";var rn=O.constructor=ca(bi);vn=new rn(vn);kn=new rn(kn);var Tn=rn;function wn(n){return Tn.isDecimal(n)?n:new Tn(n===void 0?0:n)}var ua="0x2::sui::SUI",ku="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI";var Cu=class rt{static totalBalance(e,t){let r=BigInt(0);return e.forEach(i=>{t===i.coin_type&&(r+=BigInt(i.balance))}),r}static getCoinAssets(e,t){let r=[];return t.forEach(i=>{Vs(i.coin_type)===Vs(e)&&r.push(i)}),r}static isSuiCoin(e){return er(e).full_address===ua}static selectCoinObjectIdGreaterThanOrEqual(e,t,r=[]){let i=rt.selectCoinAssetGreaterThanOrEqual(e,t,r),s=i.selected_coins.map(u=>u.coin_object_id),a=i.remain_coins,o=i.selected_coins.map(u=>u.balance.toString());return{object_array:s,remain_coins:a,amount_array:o}}static selectCoinAssetGreaterThanOrEqual(e,t,r=[]){let i=rt.sortByBalance(e.filter(l=>!r.includes(l.coin_object_id))),s=rt.calculateTotalBalance(i);if(s<t)return{selected_coins:[],remain_coins:i};if(s===t)return{selected_coins:i,remain_coins:[]};let a=BigInt(0),o=[],u=[...i];for(;a<s;){let l=t-a,p=u.findIndex(m=>m.balance>=l);if(p!==-1){o.push(u[p]),u.splice(p,1);break}let f=u.pop();f.balance>0&&(o.push(f),a+=f.balance)}return{selected_coins:rt.sortByBalance(o),remain_coins:rt.sortByBalance(u)}}static sortByBalance(e){return e.sort((t,r)=>t.balance<r.balance?-1:t.balance>r.balance?1:0)}static sortByBalanceDes(e){return e.sort((t,r)=>t.balance>r.balance?-1:t.balance<r.balance?0:1)}static calculateTotalBalance(e){return e.reduce((t,r)=>t+r.balance,BigInt(0))}static buildCoinForAmount(e,t,r,i,s=!0,a=!0){let o=rt.getCoinAssets(i,t);if(r===BigInt(0))return this.buildZeroValueCoin(t,e,i,s);let u=rt.calculateTotalBalance(o);if(u<r)throw new Error(`The amount(${u}) is Insufficient balance for ${i} , expect ${r} `);return this.buildCoin(e,t,o,r,i,s,a)}static buildCoinWithBalance(e,t,r){return e===BigInt(0)&&rt.isSuiCoin(t)?r.add($s({balance:e,useGasCoin:!1})):r.add($s({balance:e,type:t}))}static buildVectorCoin(e,t,r,i,s,a=!0){if(rt.isSuiCoin(s)){let m=e.splitCoins(e.gas,[e.pure.u64(i)]);return{selected_coins:[],target_coin:m,remain_coins:t,target_coin_amount:i.toString(),is_mint_zero_coin:!1,original_spited_coin:e.gas}}let{original_spited_coin:o,target_coin:u,target_coin_amount:l,remain_coins:p,selected_coins:f}=this.buildSpitTargeCoin(e,i,r,a);return a?{target_coin:e.makeMoveVec({elements:[u]}),selected_coins:f,remain_coins:p,target_coin_amount:l,is_mint_zero_coin:!1,original_spited_coin:o}:{selected_coins:f,target_coin:e.makeMoveVec({elements:f.map(m=>e.object(m))}),remain_coins:p,target_coin_amount:l,is_mint_zero_coin:!1}}static buildOneCoin(e,t,r,i,s=!0){if(rt.isSuiCoin(i)){if(r===0n&&t.length>1){let u=rt.selectCoinObjectIdGreaterThanOrEqual(t,r);return{selected_coins:u.object_array,target_coin:e.object(u.object_array[0]),remain_coins:u.remain_coins,target_coin_amount:u.amount_array[0],is_mint_zero_coin:!1}}let a=rt.selectCoinObjectIdGreaterThanOrEqual(t,r),o=e.splitCoins(e.gas,[e.pure.u64(r)]);return{selected_coins:[],target_coin:o,remain_coins:a.remain_coins,target_coin_amount:r.toString(),is_mint_zero_coin:!1,original_spited_coin:e.gas}}return this.buildSpitTargeCoin(e,r,t,s)}static buildSpitTargeCoin(e,t,r,i){let s=rt.selectCoinObjectIdGreaterThanOrEqual(r,t),a=s.amount_array.reduce((k,C)=>Number(k)+Number(C),0).toString(),o=s.object_array,[u,...l]=o,p=e.object(u),f=p,m=s.amount_array.reduce((k,C)=>Number(k)+Number(C),0).toString(),y;return l.length>0&&e.mergeCoins(p,l.map(k=>e.object(k))),i&&Number(a)>Number(t)&&(f=e.splitCoins(p,[e.pure.u64(t)]),y=p),{original_spited_coin:y,target_coin:f,target_coin_amount:m,remain_coins:s.remain_coins,selected_coins:s.object_array,is_mint_zero_coin:!1}}static buildCoin(e,t,r,i,s,a=!0,o=!0){return a?this.buildVectorCoin(e,t,r,i,s,o):this.buildOneCoin(e,r,i,s,o)}static buildZeroValueCoin(e,t,r,i=!0){let s=this.callMintZeroValueCoin(t,r),a;return i?a=t.makeMoveVec({elements:[s]}):a=s,{target_coin:a,remain_coins:e,selected_coins:[],is_mint_zero_coin:!0,target_coin_amount:"0"}}static buildCoinForAmountInterval(e,t,r,i,s=!0,a=!0){let o=rt.getCoinAssets(i,t);if(r.amount_first===BigInt(0))return o.length>0?this.buildCoin(e,[...t],[...o],r.amount_first,i,s,a):this.buildZeroValueCoin(t,e,i,s);let u=rt.calculateTotalBalance(o);if(u>=r.amount_first)return this.buildCoin(e,[...t],[...o],r.amount_first,i,s,a);if(u<r.amount_second)throw new Error(`The amount(${u}) is Insufficient balance for ${i} , expect ${r.amount_second} `);return this.buildCoin(e,[...t],[...o],r.amount_second,i,s,a)}static{this.callMintZeroValueCoin=(e,t)=>e.moveCall({target:"0x2::coin::zero",typeArguments:[t]})}static fromBalance(e,t,r){return r.moveCall({target:"0x2::coin::from_balance",typeArguments:[t],arguments:[e]})}static intoBalance(e,t,r){return r.moveCall({target:"0x2::coin::into_balance",typeArguments:[t],arguments:[typeof e=="string"?r.object(e):e]})}static mintBalanceZero(e,t){return t.moveCall({target:"0x2::balance::zero",typeArguments:[e],arguments:[]})}static destroyBalanceZero(e,t,r){return r.moveCall({target:"0x2::balance::destroy_zero",typeArguments:[t],arguments:[e]})}static getCoinAmountObjId(e,t){let r=e.amount_coin_array.find(i=>!i.used&&wn(i.amount).eq(t)?(i.used=!0,!0):!1);return r?r.coin_object_id:Bs("CoinNotFound",`Coin not found for ${t} ${e.coin_type}`)}static buildMultiCoinInput(e,t,r,i){let s=rt.getCoinAssets(r,t);if(rt.isSuiCoin(r)){let f=e.splitCoins(e.gas,i.map(m=>e.pure.u64(m)));return{amount_coin_array:i.map((m,y)=>({coin_object_id:f[y],amount:m.toString(),used:!1})),coin_type:r,remain_coins:s}}let a=i.reduce((f,m)=>f+m,BigInt(0)),o=rt.selectCoinObjectIdGreaterThanOrEqual(s,a);if(o.object_array.length===0)return Bs("InsufficientBalance",`No enough coins for ${r} expect ${a} actual ${rt.calculateTotalBalance(s)}`);let[u,...l]=o.object_array;l.length>0&&e.mergeCoins(u,[...l]);let p=e.splitCoins(u,i.map(f=>e.pure.u64(f)));return{amount_coin_array:i.map((f,m)=>({coin_object_id:p[m],amount:f.toString(),used:!1})),remain_coins:o.remain_coins,coin_type:r}}};function Tu(n){return n.startsWith("0x")?`${n.slice(2)}`:n}function Ls(n,...e){let t=Array.isArray(e[e.length-1])?e.pop():[],r=[n,...e].filter(Boolean).join("::");return t&&t.length&&(r+=`<${t.join(", ")}>`),r}function er(n){try{let e=n.replace(/\s/g,""),t=e.match(/(<.+>)$/)?.[0]?.match(/(\w+::\w+::\w+)(?:<.*?>(?!>))?/g);if(t){e=e.slice(0,e.indexOf("<"));let s={...er(e),type_arguments:t.map(a=>er(a).source_address)};return s.type_arguments=s.type_arguments.map(a=>Cu.isSuiCoin(a)?a:er(a).source_address),s.source_address=Ls(s.full_address,s.type_arguments),s}let r=e.split("::"),i={full_address:e,address:e===ua||e===ku?"0x2":Xs(r[0]),module:r[1],name:r[2],type_arguments:[],source_address:""};return i.full_address=`${i.address}::${i.module}::${i.name}`,i.source_address=Ls(i.full_address,i.type_arguments),i}catch{return{full_address:n,address:"",module:"",name:"",type_arguments:[],source_address:n}}}function Vs(n){return er(n).source_address}var ki=(n,e=!0)=>{let t=n.split("::"),r=t.shift(),i=Xs(r);return e&&(i=Tu(i)),`${i}::${t.join("::")}`};function Su(n){return`0x${Buffer.from(n).toString("hex")}`}function Au(n,e,t,r){let i;switch(r){case"address":i=Xt.Address.serialize(e).toBytes();break;case"u8":i=Xt.u8().serialize(e).toBytes();break;case"u16":i=Xt.u16().serialize(e).toBytes();break;case"u32":i=Xt.u32().serialize(e).toBytes();break;case"u64":i=Xt.u64().serialize(e).toBytes();break;case"u128":i=Xt.u128().serialize(e).toBytes();break;case"u256":i=Xt.u256().serialize(e).toBytes();break;case"string":i=Xt.string().serialize(e).toBytes();break;default:throw new Error(`Unsupported value type: ${r}`)}return Mu(n,t,i)}var Ou=nn(`
21
21
  query coinMetadataId($coinType: String!) {
22
22
  objects(filter: { type: $coinType }, first: 1) {
23
23
  nodes {
@@ -144,7 +144,7 @@ Clients should implement reconnection logic to maintain continuous price updates
144
144
  }
145
145
  }
146
146
  }
147
- `),Vs=nn(`
147
+ `),zs=nn(`
148
148
  query QueryTransactions(
149
149
  $filter: TransactionFilter
150
150
  $first: Int
@@ -192,7 +192,7 @@ Clients should implement reconnection logic to maintain continuous price updates
192
192
  }
193
193
  }
194
194
  }
195
- `);var Iu=["https://rpc-mainnet.suiscan.xyz:443","https://cetus-mainnet-endpoint.blockvision.org","https://cetus-suimain-e31f.mainnet.sui.rpcpool.com"];var Pd=Ct.struct("Table<ID, bool>",{id:Ct.Address,size:Ct.u64()}),Pu=Ct.struct("TypeName",{name:Ct.string()}),Rd=Ct.struct("OptionU64",{is_none:Ct.bool(),v:Ct.u64()}),Ru=Ct.struct("UID",{id:Ct.Address}),qd=Ct.struct("TableSuiRaw",{id:Ru,size:Ct.u64()});function Bu(n){if(!n)return"0";let e=new Date(n).getTime();return Number.isFinite(e)?e.toString():"0"}function ua(n){if(n.reason!==void 0)return n.reason;let e=new Error("The operation was aborted");return e.name="AbortError",e}function ge(n){let e=n?.signal;if(e?.aborted)throw ua(e)}function Jr(n,e){let t=e?.signal;return t?(ge(e),new Promise((r,i)=>{let s=()=>i(ua(t));t.addEventListener("abort",s,{once:!0}),n.then(a=>{t.removeEventListener("abort",s),r(a)},a=>{t.removeEventListener("abort",s),i(a)})})):n}var Du=class{constructor(n,e,t,r){this._cache={},this._env="mainnet",this._client=n,this._env=t||"mainnet",this._graphQLClient=e,this._archivalClient=r}callRpc(n,e){return ge(n),Jr(e(),n)}requestOptionsFromInput(n){return n.signal?{signal:n.signal}:void 0}async getObject(n){return this.callRpc(this.requestOptionsFromInput(n),()=>this._client.getObject(n))}async listOwnedObjects(n){return this.callRpc(this.requestOptionsFromInput(n),()=>this._client.listOwnedObjects(n))}async getBalance(n){return this.callRpc(this.requestOptionsFromInput(n),()=>this._client.getBalance(n))}async getCoinMetadata(n){return this.callRpc(this.requestOptionsFromInput(n),()=>this._client.getCoinMetadata(n))}async getDynamicField(n){return this.callRpc(this.requestOptionsFromInput(n),()=>this._client.getDynamicField(n))}listDynamicFields(n){return this.callRpc(this.requestOptionsFromInput(n),()=>this._client.listDynamicFields(n))}async simulateTransaction(n){return this.callRpc(this.requestOptionsFromInput(n),()=>this._client.simulateTransaction(n))}queryGraphQL(n,e){if(!this._graphQLClient)throw new Error("graphQLClient is not set");let t={...n,signal:e?.signal};return this.callRpc(e,()=>this._graphQLClient.query(t))}async fetchCoinMetadata(n,e){ge(e);let t=`coin_metadata_${n}`,r=this.getCache(t);if(r)return r;let i=await this.callRpc(e,()=>this._client.getCoinMetadata({coinType:n,signal:e?.signal}));return ge(e),this.updateCache(t,i.coinMetadata),i.coinMetadata}async fetchCoinMetadataId(n,e){if(ge(e),!this._graphQLClient)throw new Error("graphQLClient is not set");let t=`coin_metadata_id_${n}`,r=this.getCache(t);if(r)return r;let i=(await this.queryGraphQL({query:Ou,variables:{coinType:`0x2::coin::CoinMetadata<${n}>`}},e)).data?.objects?.nodes?.[0]?.address??null;return i&&this.updateCache(t,i),i}async getTransactionByGraphQL(n,e){if(ge(e),!this._graphQLClient)throw new Error("graphQLClient is not set");try{let t=(await this.queryGraphQL({query:Eu,variables:{digest:n}},e)).data?.transaction;if(!t)throw new Error(`Transaction ${n} not found`);return this.transformGraphQLTxResult(t,n)}catch(t){if(ge(e),console.log("getTransactionByGraphQL error, trying archival client",t),this._archivalClient)return this.callRpc(e,()=>this._archivalClient.getTransaction({digest:n,include:{effects:!0,events:!0,balanceChanges:!0,transaction:!0,objectTypes:!0},signal:e?.signal}));throw t}}transformGraphQLTxResult(n,e){let t=(n.effects?.events?.nodes??[]).map(i=>{let s=i.contents?.type?.repr??"",a=s?er(s):null;return{packageId:a?.address??"",module:a?.module??"",sender:i.sender?.address??"",eventType:s,json:i.contents?.json??null,bcs:void 0,timestamp:i.timestamp??""}}),r=(n.effects?.balanceChanges?.nodes??[]).map(i=>({coinType:i.coinType?.repr??"",amount:i.amount??"0",owner:i.owner?.id??""}));return{$kind:"Transaction",Transaction:{digest:n.digest??e,signatures:[],epoch:n.effects?.epoch?.epochId!=null?String(n.effects.epoch.epochId):null,status:n.effects?.status??{success:!0,error:null},balanceChanges:r,effects:void 0,events:t,objectTypes:void 0,transaction:void 0,bcs:void 0}}}async queryEventsByGraphQL(n,e="all",t){if(ge(t),typeof n=="object"&&"Transaction"in n)return this.queryEventsByTransactionGraphQL(n.Transaction,t);let r=typeof n=="string"?n:n.MoveEventType;return this.queryEventsByTypeGraphQL(r,e,t)}async queryEventsByTypeGraphQL(n,e="all",t){if(!this._graphQLClient)throw new Error("graphQLClient is not set");let r=e==="all",i=r?50:e.limit??50,s=[],a=r?null:e.cursor??null,o=!0;do{ge(t);let u=(await this.queryGraphQL({query:xu,variables:{type:n,first:i,...a?{after:a}:{}}},t)).data?.events,l=u?.nodes??[],p=u?.pageInfo,f=l.map(m=>this.normalizeGraphQLEvent(m));s=[...s,...f],o=p?.hasNextPage??!1,a=p?.endCursor??null}while(r&&o);return{data:s,next_cursor:a,has_next_page:o}}async queryEventsByTransactionGraphQL(n,e){return{data:((await this.getTransactionByGraphQL(n,e))?.data?.transaction?.effects?.events?.nodes??[]).map(t=>({type:t.contents?.type?.repr??"",parsedJson:t.contents?.json??{},sender:t.sender?.address??"",packageId:"",module:"",txDigest:n,timestampMs:t.timestamp?new Date(t.timestamp).getTime().toString():"0",bcs:void 0})),next_cursor:null,has_next_page:!1}}normalizeGraphQLEvent(n){return{type:n.contents?.type?.repr??n.type??"",parsedJson:n.contents?.json??n.parsedJson??{},sender:typeof n.sender=="string"?n.sender:n.sender?.address??"",packageId:n.transactionModule?.package?.address??"",module:n.transactionModule?.name??"",txDigest:n.transaction?.digest??"",timestampMs:Bu(n.timestamp),timestamp:n.timestamp}}async queryTransactionBlocksByPage(n,e="all",t="descending",r){if(!this._graphQLClient)throw new Error("graphQLClient is not set");if(!(n.sentAddress!=null||n.affectedAddress!=null||n.affectedObject!=null||n.function!=null))throw new Error("At least one of sentAddress, affectedAddress, affectedObject, function is required");let i=e==="all",s=i?50:e.limit??50,a=[],o=i?null:e.cursor??null,u=!0,l=t!=="ascending",p={};n.sentAddress&&(p.sentAddress=$r(n.sentAddress)),n.affectedAddress&&(p.affectedAddress=$r(n.affectedAddress)),n.affectedObject&&(p.affectedObject=$r(n.affectedObject)),n.function&&(p.function=n.function);do{ge(r);let f=(l?await this.queryGraphQL({query:Vs,variables:{filter:p,last:s,...o?{before:o}:{}}},r):await this.queryGraphQL({query:Vs,variables:{filter:p,first:s,...o?{after:o}:{}}},r)).data?.transactions,m=f?.nodes??[],y=f?.pageInfo,k=l?[...m].reverse():m;a=[...a,...k],u=l?y?.hasPreviousPage??!1:y?.hasNextPage??!1,o=l?y?.startCursor??null:y?.endCursor??null}while(i&&u);return{data:a,next_cursor:o,has_next_page:u}}async getOwnedObjectsByPage(n,e,t="all",r){let i=async s=>{let a=[],o=!0,u=t==="all",l=u?null:t.cursor;do{ge(r);let p=await this.callRpc(r,()=>s.listOwnedObjects({owner:n,type:e,cursor:l??void 0,limit:u?1e3:t.limit??void 0,include:{content:!0,previousTransaction:!0,json:!0},signal:r?.signal}));a=[...a,...p.objects],o=p.hasNextPage,l=p.cursor??null}while(u&&o);return{data:a,next_cursor:l,has_next_page:o}};try{return await i(this._client)}catch(s){ge(r);let a=s,o=this._env==="testnet"?"testnet":"mainnet";for(let u of Iu)try{ge(r);let l=Ti(new qu({baseUrl:u,network:o}),this._graphQLClient,this._env);return await i(l._client)}catch(l){ge(r),a=l;continue}throw a}}async getAllDynamicFields(n,e="all",t){if(!this._graphQLClient)throw new Error("graphQLClient is not set");let r=e==="all",i=r?50:e.limit??50,s=[],a=r?null:e.cursor??null,o=!0;do{ge(t);let u=(await this.queryGraphQL({query:ju,variables:{id:$r(n),first:i,...a?{after:a}:{}}},t)).data?.address?.dynamicFields,l=u?.nodes??[],p=u?.pageInfo;s=[...s,...l],o=p?.hasNextPage??!1,a=p?.endCursor??null}while(r&&o);return{data:s,next_cursor:a,has_next_page:o}}async getDynamicFieldsByPage(n,e="all",t){let r=[],i=!0,s=e==="all",a=s?null:e.cursor;do{ge(t);let o=await this.callRpc(t,()=>this._client.listDynamicFields({parentId:n,cursor:a??void 0,limit:s?1e3:e.limit??void 0,signal:t?.signal}));r=[...r,...o.dynamicFields],i=o.hasNextPage,a=o.cursor??null}while(s&&i);return{data:r,next_cursor:a,has_next_page:i}}async getDynamicFieldObjects(n,e,t,r,i,s){let a=e.map(o=>Au(n,o,t,r));return a.length===0?[]:this.batchGetObjects(a,i,1e3,s)}async batchGetObjects(n,e,t=1e3,r){let i=[];try{for(let s=0;s<Math.ceil(n.length/t);s++){ge(r);let a=n.slice(s*t,t*(s+1)),o=await this.callRpc(r,()=>this._client.getObjects({objectIds:a,include:e,signal:r?.signal}));i=[...i,...o.objects]}}catch(s){ge(r),console.log(s)}return i}async calculationTxGas(n,e){let t=n.getData?.()?.sender??n.blockData?.sender;if(t==null)throw Error("sdk sender is empty");n.setSender(t);let r=await this.callRpc(e,()=>this._client.simulateTransaction({transaction:n,include:{effects:!0},signal:e?.signal})),i=r.Transaction??r.FailedTransaction;if(!i?.effects?.gasUsed)throw new Error("Simulation did not return effects");let{gasUsed:s}=i.effects;return Number(s.computationCost)+Number(s.storageCost)-Number(s.storageRebate)}async sendTransaction(n,e,t){try{return await this.callRpc(t,()=>this._client.signAndExecuteTransaction({transaction:e,signer:n,include:{effects:!0,events:!0},signal:t?.signal}))}catch(r){ge(t),console.log("error: ",r)}}async sendSimulationTransaction(n,e,t=!0,r){try{return n.setSender(e),await this.callRpc(r,()=>this._client.simulateTransaction({transaction:n,include:{events:!0,balanceChanges:!0,effects:!0,objectChanges:!0,commandResults:!0},checksEnabled:t,signal:r?.signal}))}catch(i){throw ge(r),console.log("simulateTransaction error",i),i}}async executeTx(n,e,t,r){try{if(t){let i=typeof n=="string"?$r(n):$r(n.getPublicKey().toSuiAddress());return await this.sendSimulationTransaction(e,i,!0,r)}else{if(typeof n=="string")throw new Error("Cannot send transaction with string address - keypair required for signing");return await this.sendTransaction(n,e,r)}}catch(i){return ge(r),i}}async getOwnerCoinAssets(n,e,t){let r=[],i=null;if(e)for(;;){ge(t);let s=await this.callRpc(t,()=>this._client.listCoins({owner:n,coinType:e,cursor:i??void 0,signal:t?.signal}));for(let a of s.objects)BigInt(a.balance)>0&&r.push({coin_type:er(a.type).type_arguments[0],coin_object_id:a.objectId,balance:BigInt(a.balance)});if(i=s.cursor??null,!s.hasNextPage)break}else{let s=null;do{ge(t);let a=await this.callRpc(t,()=>this._client.listOwnedObjects({owner:n,cursor:s??void 0,include:{json:!0},signal:t?.signal}));if(a.objects.forEach(o=>{let u=er(o.type);o.type.includes('"0x0000000000000000000000000000000000000000000000000000000000000002::coin::Coin')&&BigInt(o.balance)>0&&r.push({coin_type:ki(u.type_arguments[0],!1),coin_object_id:o.json.id,balance:BigInt(o.json.balance)})}),s=a.cursor??null,!a.hasNextPage)break}while(!0)}return r}async getOwnerCoinBalances(n,e,t){if(e)return[(await this.callRpc(t,()=>this._client.getBalance({owner:n,coinType:e,signal:t?.signal}))).balance];let r=[],i=null;do{ge(t);let s=await this.callRpc(t,()=>this._client.listBalances({owner:n,cursor:i??void 0,signal:t?.signal}));if(r.push(...s.balances),i=s.cursor??null,!s.hasNextPage)break}while(!0);return r}updateCache(n,e,t=864e5){let r=this._cache[n];r?(r.overdue_time=Bs(t),r.value=e):r=new Oc(e,Bs(t)),this._cache[n]=r}getCache(n,e=!1){let t=this._cache[n],r=t?.isValid();if(!e&&r)return t.value;r||delete this._cache[n]}};function Ti(n,e,t,r){let i=new Du(n,e,t,r);return new Proxy(i,{get(s,a,o){if(a in s)return Reflect.get(s,a,o);if(a in s._client){let u=Reflect.get(s._client,a);return typeof u=="function"?u.bind(s._client):u}throw new Error(`Property or method "${String(a)}" does not exist on FullClient or its client.`)}})}var $u=en(tn(),1);var Fd=new $u.default(1e6),Nu=(n=>(n[n.BelowRange=0]="BelowRange",n[n.InRange=1]="InRange",n[n.AboveRange=2]="AboveRange",n))(Nu||{}),gi=10n,zs={pyth_state_id:"0x03719fae774ddab3cfcaa53bbc046f0cbe21410019b6280811bf3f9f4b05839d",wormhole_state_id:"0xdbca52b9fb4f712e25f61f974586d93ac541bcf8389564f0323bb07215168b5c"},Uu={"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC":{coin_type:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",price_feed_id:"0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",coin_decimals:6},"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI":{coin_type:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",price_feed_id:"0x23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",coin_decimals:9},"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS":{coin_type:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS",price_feed_id:"0xe5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",coin_decimals:9},"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP":{coin_type:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",price_feed_id:"0x29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",coin_decimals:6},"0xa99b8952d4f7d947ea77fe0ecdcc9e5fc0bcab2841d6e2a5aa00c3044e5544b5::navx::NAVX":{coin_type:"0xa99b8952d4f7d947ea77fe0ecdcc9e5fc0bcab2841d6e2a5aa00c3044e5544b5::navx::NAVX",price_feed_id:"0x88250f854c019ef4f88a5c073d52a18bb1c6ac437033f5932cd017d24917ab46",coin_decimals:9},"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN":{coin_type:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN",price_feed_id:"0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",coin_decimals:9},"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI":{coin_type:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI",price_feed_id:"0x6120ffcf96395c70aa77e72dcb900bf9d40dccab228efca59a17b90ce423d5e8",coin_decimals:9},"0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29::eth::ETH":{coin_type:"0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29::eth::ETH",price_feed_id:"0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",coin_decimals:8},"0x356a26eb9e012a68958082340d4c4116e7f55615cf27affcff209cf0ae544f59::wal::WAL":{coin_type:"0x356a26eb9e012a68958082340d4c4116e7f55615cf27affcff209cf0ae544f59::wal::WAL",price_feed_id:"0xeba0732395fae9dec4bae12e52760b35fc1c5671e2da8b449c9af4efe5d54341",coin_decimals:9},"0x3e8e9423d80e1774a7ca128fccd8bf5f1f7753be658c5e645929037f7c819040::lbtc::LBTC":{coin_type:"0x3e8e9423d80e1774a7ca128fccd8bf5f1f7753be658c5e645929037f7c819040::lbtc::LBTC",price_feed_id:"0x8f257aab6e7698bb92b15511915e593d6f8eae914452f781874754b03d0c612b",coin_decimals:8},"0x3a304c7feba2d819ea57c3542d68439ca2c386ba02159c740f7b406e592c62ea::haedal::HAEDAL":{coin_type:"0x3a304c7feba2d819ea57c3542d68439ca2c386ba02159c740f7b406e592c62ea::haedal::HAEDAL",price_feed_id:"0xe67d98cc1fbd94f569d5ba6c3c3c759eb3ffc5d2b28e64538a53ae13efad8fd1",coin_decimals:9}};function Fu(n,e){if(!gi)throw new Error("oraclePriceMultiplierDecimal is required");if(n===0n)throw new Error("Invalid oracle price");if(e<0n){let t=10n**(gi- -e);return n*t}return n/10n**(e+gi)}var Gs=16*1024,Zs=3e3,Lu=30,Qs="https://hermes.pyth.network",la=class kr{constructor(e,t=zs,r=zs){if(this.hermesClientCache=new Map,this.fullClient=e,Array.isArray(t)){if(t.length===0)throw new Error("pythEndpoints is empty, at least one Pyth endpoint is required");this.endpoints=t,this.pythConfigs=r;return}this.pythConfigs=t;let i=[...t.hermes_service_urls??[]];i.includes(Qs)||i.push(Qs),this.endpoints=i.map(s=>({url:s,mode:"hermes"}))}static getEndpointMode(e){return e.mode??"hermes"}getHermesClient(e){let t=`${e.url}::${e.accessToken??""}`,r=this.hermesClientCache.get(t);if(r)return r;let i=kr.createHermesClient(e);return this.hermesClientCache.set(t,i),i}static createHermesClient(e){let t={timeout:Zs};return e.accessToken&&(t.accessToken=e.accessToken),new _n(e.url,t)}async requestPriceUpdate(e,t,r,i){let s=null;for(let a of this.endpoints)try{if(kr.getEndpointMode(a)==="rest")return await Jr(this.fetchPostPriceUpdate(a,t),i);let o=this.getHermesClient(a);return r==="parsed"?await Jr(o.getLatestPriceUpdates(t,{parsed:!0}),i):await Jr(o.getLatestPriceUpdates(t,{encoding:"hex"}),i)}catch(o){ge(i),console.log(`\u{1F680} ~ PythPriceModule ~ ${e} ~ error:`,o),s=o}throw new Error(`All Pyth endpoints are unavailable for ${r}. ${e} Detailed error: ${s?.message}`)}static normalizeFeedId(e){return e?e.startsWith("0x")?e:`0x${e}`:"0x"}static toPostPriceUpdate(e){return Array.isArray(e.prices)?{parsed:e.prices.map(t=>({id:kr.normalizeFeedId(t.id),price:t.price})),binary:{encoding:"hex",data:(e.price_update_data??[]).map(t=>Buffer.from(t,"base64").toString("hex"))}}:Array.isArray(e.parsed)?{parsed:e.parsed.map(t=>({id:kr.normalizeFeedId(t.id),price:t.price})),binary:{encoding:e.binary?.encoding??"hex",data:e.binary?.data??[]}}:{parsed:[],binary:{encoding:"hex",data:[]}}}static resolveRestBody(e,t){return e.buildRestBody?e.buildRestBody(t):{price_seeds:t,max_age_seconds:Lu}}async fetchPostPriceUpdate(e,t){let r={"Content-Type":"application/json"};e.accessToken&&(r.Authorization=`Bearer ${e.accessToken}`);let i=await fetch(e.url,{method:"POST",headers:r,body:JSON.stringify(kr.resolveRestBody(e,t)),signal:AbortSignal.timeout(Zs)});if(!i.ok){let a=await i.text();throw new Error(`HTTP error! status: ${i.status}${a?`, body: ${a}`:""}`)}let s=await i.json();return kr.toPostPriceUpdate(s)}async getFeedInfoList(e,t){let r=e.map(i=>this.getFeedInfo(i,!1,t));return await Jr(Promise.all(r),t)}priceCheck(e,t=60){let r=Math.floor(Date.now()/1e3);if(!(Math.abs(r-e.last_update_time)>t))return e}applyPriceFeedUpdates(e,t,r){e?.parsed?.forEach((i,s)=>{if(!i)return;let{price:a,expo:o,publish_time:u}=i.price,l=wn(a).mul(wn(10).pow(wn(o))).toString(),{mapKey:p,coinType:f,coinDecimals:m,cacheKey:y}=t[s],k={coin_type:f,price:l,coin_decimals:m,oracle_price:Fu(BigInt(a),BigInt(o)),last_update_time:u};r[p]=k,this.fullClient.updateCache(y,k)})}async getPackageId(e,t){let r=(await this.fullClient.getObject({objectId:e,include:{json:!0},signal:t?.signal}))?.object?.json;if(r?.upgrade_cap?.package)return r.upgrade_cap.package;throw new Error("upgrade_cap not found")}async getWormholePackageId(e){let{wormhole_state_id:t}=this.pythConfigs,r=`getWormholePackageId_${t}`,i=this.fullClient.getCache(r);if(i)return i;let s=await this.getPackageId(this.pythConfigs.wormhole_state_id,e);return this.fullClient.updateCache(r,s),s}async getPythPackageId(){if(this.pythConfigs.pyth_package_id)return this.pythConfigs.pyth_package_id;let e=`getPythPackageId_${this.pythConfigs.pyth_state_id}`,t=this.fullClient.getCache(e);if(t)return t;let r=await this.getPackageId(this.pythConfigs.pyth_state_id);return this.fullClient.updateCache(e,r),r}async getLatestPrice(e,t=!1,r){let i={},s=[];if(t?e.forEach(u=>{let l=this.fullClient.getCache(`getLatestPrice_${u}`);l&&this.priceCheck(l,60)?i[u]=l:s.push(u)}):s=[...e],s.length===0)return i;let a=await this.getFeedInfoList(s,r),o=await this.getLatestPriceFeeds(a.map(u=>u.price_feed_id),r);return this.applyPriceFeedUpdates(o,s.map((u,l)=>({mapKey:u,coinType:a[l].coin_type,coinDecimals:a[l].coin_decimals,cacheKey:`getLatestPrice_${a[l].coin_type}`})),i),i}async getLatestPriceByFeedIds(e,t=!1,r){let i={},s=[];if(t?e.forEach(o=>{let u=this.fullClient.getCache(`getLatestPriceByFeedId_${o}`);u&&this.priceCheck(u,60)?i[o]=u:s.push(o)}):s=[...e],s.length===0)return i;let a=await this.getLatestPriceFeeds(s,r);return this.applyPriceFeedUpdates(a,s.map(o=>({mapKey:o,coinType:o,coinDecimals:0,cacheKey:`getLatestPriceByFeedId_${o}`})),i),i}async getPriceFeedsUpdateData(e,t){let r=await this.requestPriceUpdate("getPriceFeedsUpdateData",e,"binary",t);if(!r.binary?.data?.length)throw new Error("getPriceFeedsUpdateData: missing binary price update data in response");return r.binary.data.map(i=>Buffer.from(i,"hex"))}async getLatestPriceFeeds(e,t){return this.requestPriceUpdate("getLatestPriceFeeds",e,"parsed",t)}extractVaaBytesFromAccumulatorMessage(e){let t=7+e.readUint8(6)+1,r=e.readUint16BE(t),i=t+2;return e.subarray(i,i+r)}async verifyVaas(e,t,r){let i=await this.getWormholePackageId(r),s=[];for(let a of e){let[o]=t.moveCall({target:`${i}::vaa::parse_and_verify`,arguments:[t.object(this.pythConfigs.wormhole_state_id),t.pure(yt.vector(yt.u8()).serialize(Array.from(a),{maxSize:Gs}).toBytes()),t.object(_i)]});s.push(o)}return s}async getPriceTableInfo(e){if(this.priceTableInfo===void 0){let t=null,r=!0;for(;r;){let i=await this.fullClient.listDynamicFields({parentId:this.pythConfigs.pyth_state_id,cursor:t,signal:e?.signal});for(let s of i.dynamicFields)if(s.name.type==="vector<u8>"){let a=s.$kind==="DynamicObject"&&s.childId?s.childId:s.fieldId,o=await this.fullClient.getObject({objectId:a,include:{json:!0},signal:e?.signal}),u=o.object.type;if(u.includes("table::Table")){let l=u.replace(/.*table::Table</,"").replace(/>$/,"").split(",")[0].trim();return this.priceTableInfo={id:o.object.objectId,fieldType:l},this.priceTableInfo}}r=i.hasNextPage,t=i.cursor}}if(this.priceTableInfo===void 0)throw new Error(" getPriceTableInfo Price table not found");return this.priceTableInfo}async getPriceFeedObjectId(e,t){let r=e.replace("0x",""),i=`getPriceFeedObjectId_${r}`,s=this.fullClient.getCache(i);if(s)return s;let{id:a,fieldType:o}=await this.getPriceTableInfo(t),u=yt.struct("PriceIdentifier",{bytes:yt.vector(yt.u8())}).serialize({bytes:Array.from(Buffer.from(r,"hex"))}).toBytes(),l=(await this.fullClient.getDynamicField({parentId:a,name:{type:o,bcs:u},signal:t?.signal})).dynamicField.value.bcs,p=l instanceof Uint8Array?l:new Uint8Array(Object.values(l)),f="0x"+Array.from(p).map(m=>m.toString(16).padStart(2,"0")).join("");return this.fullClient.updateCache(i,f),f}async verifyVaasAndGetHotPotato(e,t,r,i){if(t.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let s=this.extractVaaBytesFromAccumulatorMessage(t[0]),a=await this.verifyVaas([s],e,i),[o]=e.moveCall({target:`${r}::pyth::create_authenticated_price_infos_using_accumulator`,arguments:[e.object(this.pythConfigs.pyth_state_id),e.pure(yt.vector(yt.u8()).serialize(Array.from(t[0]),{maxSize:Gs}).toBytes()),a[0],e.object(_i)]});return o}async buildUpdatePythPricePayload(e,t,r,i){let s=await this.getPythPackageId(),a=this.pythConfigs.pyth_published_at??s,o=(await this.getFeedInfoList(e,i)).map(f=>f.price_feed_id);if(e.length!==o.length)throw Error("find feed id fail");let u=await this.getPriceFeedsUpdateData(o,i);if(!u)throw new Error("get price update data fail");if(u.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let l=await this.verifyVaasAndGetHotPotato(t,u,a,i),p=0;for(let f of o){let m=await this.getPriceFeedObjectId(f,i);if(!m)throw new Error(`Price feed ${f} not found, please create it first`);l=r({tx:t,coinType:e[p],priceUpdatesHotPotato:l,priceInfoObjectId:m}),p+=1}return t.moveCall({target:`${a}::hot_potato_vector::destroy`,arguments:[l],typeArguments:[`${s}::price_info::PriceInfo`]}),t}async getBaseUpdateFee(e){if(this.baseUpdateFee===void 0){let t=(await this.fullClient.getObject({objectId:this.pythConfigs.pyth_state_id,include:{json:!0},signal:e?.signal}))?.object?.json;if(!t)throw new Error("Unable to fetch pyth state object");this.baseUpdateFee=Number(t.base_update_fee)}return this.baseUpdateFee}async updatePriceFeeds(e,t,r,i){let s=this.pythConfigs.pyth_package_id??await this.getPythPackageId(),a=await this.verifyVaasAndGetHotPotato(e,t,s,i),o=await this.getBaseUpdateFee(i),u=e.splitCoins(e.gas,r.map(()=>e.pure.u64(o))),l=[],p=0;for(let f of r){let m=await this.getPriceFeedObjectId(f,i);if(!m)throw new Error(`Price feed ${f} not found, please create it first`);l.push(m),[a]=e.moveCall({target:`${s}::pyth::update_single_price_feed`,arguments:[e.object(this.pythConfigs.pyth_state_id),a,e.object(m),u[p],e.object(_i)]}),p++}return e.moveCall({target:`${s}::hot_potato_vector::destroy`,arguments:[a],typeArguments:[`${s}::price_info::PriceInfo`]}),l}async buildUpdatePythPricePayloadV2(e,t,r,i){if(e.length===0)return t;let s=(await this.getFeedInfoList(e,i)).map(l=>l.price_feed_id);if(e.length!==s.length)throw Error("find feed id fail");let a=await this.getPriceFeedsUpdateData(s,i);if(!a)throw new Error("get price update data fail");if(a.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let o=await this.updatePriceFeeds(t,a,s,i),u=0;for(let l of o)r({tx:t,coinType:e[u],priceUpdatesHotPotato:{},priceInfoObjectId:l}),u+=1;return t}getFeedInfoByJson(e){let t=ki(e,!1);return Uu[t]}async getFeedInfo(e,t,r){let i=`getFeedInfo_${e}`,s=this.fullClient.getCache(i,t);if(s)return s;let a=this.getFeedInfoByJson(e);if(a)return a;if(!this.pythConfigs.feed_info_handle)throw new Error("feed_info_handle is not set");let o=await this.fullClient.getDynamicField({parentId:this.pythConfigs.feed_info_handle,name:{type:"0x1::type_name::TypeName",bcs:Pu.serialize({name:ki(e,!0)}).toBytes()},signal:r?.signal}),u=yt.struct("OracleInfo",{price_feed_id:yt.vector(yt.U8),price_info_object_id:yt.Address,last_update_time:yt.u64(),coin_decimals:yt.u8()}).parse(o.dynamicField.value.bcs),l={coin_type:e,price_feed_id:Su(u.price_feed_id),coin_decimals:u.coin_decimals};return console.log("\u{1F680} ~ PythPriceModule ~ getFeedInfo ~ info:",l),this.fullClient.updateCache(i,l),l}},Fr=en(tn(),1),Vd=new Fr.default(0),da=new Fr.default(1),Si=new Fr.default(2),zd=Si.pow(new Fr.default(128)),Gd=Si.pow(new Fr.default(64)).sub(da),Zd=Si.pow(new Fr.default(128)).sub(da);Tn.config({precision:64,rounding:Tn.ROUND_DOWN,toExpNeg:-64,toExpPos:64});var Qd=en(tn(),1),Wd=en(tn(),1);var Hd=en(tn(),1);import{SuiGraphQLClient as _l}from"@mysten/sui/graphql";import{SuiGrpcClient as yl}from"@mysten/sui/grpc";import{DeepBookClient as al}from"@mysten/deepbook-v3";import{bcs as L}from"@mysten/sui/bcs";import{Transaction as se,coinWithBalance as Ra}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as ot,normalizeStructTag as Ot,normalizeSuiAddress as qa,normalizeSuiObjectId as ol}from"@mysten/sui/utils";import{Base64 as cl}from"js-base64";import{coinWithBalance as _a}from"@mysten/sui/transactions";var Vu={REQUEST_PARAMS:"requestParams",METHOD_NAME:"methodName"},Mi=class extends Error{constructor(t,r,i){super(t);this.code=r;this.details=i;this.name=this.constructor.name}toJSON(){return{name:this.name,message:this.message,code:this.code,details:this.details}}toString(){return JSON.stringify(this.toJSON())}static isErrorCode(t,r){return t instanceof Mi&&t.code===r}},sn=Mi;on(sn,"DETAILS_KEYS",Vu);var Ai=class extends sn{constructor(e,t,r){super(e,t||"UnknownError",r)}static isCommonErrorCode(e,t){return this.isErrorCode(e,t)}};var Oi=(n,e,t)=>{throw new Ai(e,n,t)};import{SUI_TYPE_ARG as Wu,normalizeStructTag as Hu,normalizeSuiObjectId as ji}from"@mysten/sui/utils";var zu=/^[-+]?[0-9A-Fa-f]+\.?[0-9A-Fa-f]*?$/;function ha(n){return n.startsWith("0x")?n:`0x${n}`}function Ei(n){return n.startsWith("0x")?`${n.slice(2)}`:n}function Gu(n,e=4,t=4){let r=Math.max(e,1),i=Math.max(t,1);return`${n.slice(0,r+2)} ... ${n.slice(-i)}`}function sh(n,e=4,t=4){return Gu(ha(n),e,t)}function ah(n,e={leadingZero:!0}){if(typeof n!="string")return!1;let t=n;if(e.leadingZero){if(!n.startsWith("0x"))return!1;t=t.substring(2)}return zu.test(t)}function Zu(n){if(!Buffer.isBuffer(n))if(Array.isArray(n))n=Buffer.from(n);else if(typeof n=="string")exports.isHexString(n)?n=Buffer.from(exports.padToEven(exports.stripHexPrefix(n)),"hex"):n=Buffer.from(n);else if(typeof n=="number")n=exports.intToBuffer(n);else if(n==null)n=Buffer.allocUnsafe(0);else if(n.toArray)n=Buffer.from(n.toArray());else throw new Error("invalid type");return n}function oh(n){return ha(Zu(n).toString("hex"))}function ch(n){let e=new ArrayBuffer(4),t=new DataView(e);for(let i=0;i<n.length;i++)t.setUint8(i,n.charCodeAt(i));return t.getUint32(0,!0)}function Qu(n){let e,t,r,i,s;e="";let a=n.length;for(t=0;t<a;)switch(r=n.charCodeAt(t++),r>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:e+=n.charAt(t-1);break;case 12:case 13:i=n.charCodeAt(t++),e+=String.fromCharCode((r&31)<<6|i&63);break;case 14:i=n.charCodeAt(t++),s=n.charCodeAt(t++),e+=String.fromCharCode((r&15)<<12|(i&63)<<6|(s&63)<<0);break}return e}function uh(n){let e="",t=Ei(n),r=t.length/2;for(let i=0;i<r;i++)e+=String.fromCharCode(Number.parseInt(t.substr(i*2,2),16));return Qu(e)}var Ku=0,fa=1,Xu=2;function pa(n,e){return n===e?Ku:n<e?fa:Xu}function Ju(n,e){let t=0,r=n.length<=e.length?n.length:e.length,i=pa(n.length,e.length);for(;t<r;){let s=pa(n.charCodeAt(t),e.charCodeAt(t));if(t+=1,s!==0)return s}return i}function mh(n,e){return Ju(n,e)===fa}function ma(n,...e){let t=Array.isArray(e[e.length-1])?e.pop():[],i=[n,...e].filter(Boolean).join("::");return t&&t.length&&(i+=`<${t.join(", ")}>`),i}function fh(n){return n.split("::")[0]}function nr(n){try{let e=n.replace(/\s/g,""),r=e.match(/(<.+>)$/)?.[0]?.match(/(\w+::\w+::\w+)(?:<.*?>(?!>))?/g);if(r){e=e.slice(0,e.indexOf("<"));let u={...nr(e),type_arguments:r.map(l=>nr(l).source_address)};return u.type_arguments=u.type_arguments.map(l=>rt.isSuiCoin(l)?l:nr(l).source_address),u.source_address=ma(u.full_address,u.type_arguments),u}let i=e.split("::"),a={full_address:e,address:e===Pi||e===ga?"0x2":ji(i[0]),module:i[1],name:i[2],type_arguments:[],source_address:""};return a.full_address=`${a.address}::${a.module}::${a.name}`,a.source_address=ma(a.full_address,a.type_arguments),a}catch{return{full_address:n,address:"",module:"",name:"",type_arguments:[],source_address:n}}}function xi(n){return nr(n).source_address}function Yu(n){return n.toLowerCase().startsWith("0x")?ji(n):n}var gh=(n,e=!0)=>{let t=n.split("::"),r=t.shift(),i=ji(r);return e&&(i=Ei(i)),`${i}::${t.join("::")}`};function Ii(n){for(let e in n){let t=typeof n[e];if(t==="object")Ii(n[e]);else if(t==="string"){let r=n[e];n[e]=Yu(r)}}}var _h=Hu(Wu);import On from"decimal.js";function S(n){return On.isDecimal(n)?n:new On(n===void 0?0:n)}function Ri(n){return S(10).pow(S(n).abs())}var Cr=(n,e)=>{try{return S(n).toDP(e,On.ROUND_DOWN).toString()}catch{return n}},qi=(n,e)=>On.max(S(n),S(e));var Mh=1e3,Ah=500,Oh=100,Eh=100,jh=1e3,Pi="0x2::sui::SUI",ga="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",xh="SUI",Ih=450,Ph="0x0000000000000000000000000000000000000005",be=class{static totalBalance(e,t){let r=BigInt(0);return e.forEach(i=>{t===i.coin_type&&(r+=BigInt(i.balance))}),r}static getCoinAssets(e,t){let r=[];return t.forEach(i=>{xi(i.coin_type)===xi(e)&&r.push(i)}),r}static isSuiCoin(e){return nr(e).full_address===Pi}static selectCoinObjectIdGreaterThanOrEqual(e,t,r=[]){let i=be.selectCoinAssetGreaterThanOrEqual(e,t,r),s=i.selected_coins.map(u=>u.coin_object_id),a=i.remain_coins,o=i.selected_coins.map(u=>u.balance.toString());return{object_array:s,remain_coins:a,amount_array:o}}static selectCoinAssetGreaterThanOrEqual(e,t,r=[]){let i=be.sortByBalance(e.filter(l=>!r.includes(l.coin_object_id))),s=be.calculateTotalBalance(i);if(s<t)return{selected_coins:[],remain_coins:i};if(s===t)return{selected_coins:i,remain_coins:[]};let a=BigInt(0),o=[],u=[...i];for(;a<s;){let l=t-a,p=u.findIndex(m=>m.balance>=l);if(p!==-1){o.push(u[p]),u.splice(p,1);break}let f=u.pop();f.balance>0&&(o.push(f),a+=f.balance)}return{selected_coins:be.sortByBalance(o),remain_coins:be.sortByBalance(u)}}static sortByBalance(e){return e.sort((t,r)=>t.balance<r.balance?-1:t.balance>r.balance?1:0)}static sortByBalanceDes(e){return e.sort((t,r)=>t.balance>r.balance?-1:t.balance<r.balance?0:1)}static calculateTotalBalance(e){return e.reduce((t,r)=>t+r.balance,BigInt(0))}static buildCoinForAmount(e,t,r,i,s=!0,a=!0){let o=be.getCoinAssets(i,t);if(r===BigInt(0))return this.buildZeroValueCoin(t,e,i,s);let u=be.calculateTotalBalance(o);if(u<r)throw new Error(`The amount(${u}) is Insufficient balance for ${i} , expect ${r} `);return this.buildCoin(e,t,o,r,i,s,a)}static buildCoinWithBalance(e,t,r){return e===BigInt(0)&&be.isSuiCoin(t)?r.add(_a({balance:e,useGasCoin:!1})):r.add(_a({balance:e,type:t}))}static buildVectorCoin(e,t,r,i,s,a=!0){if(be.isSuiCoin(s)){let m=e.splitCoins(e.gas,[e.pure.u64(i)]);return{selected_coins:[],target_coin:m,remain_coins:t,target_coin_amount:i.toString(),is_mint_zero_coin:!1,original_spited_coin:e.gas}}let{original_spited_coin:o,target_coin:u,target_coin_amount:l,remain_coins:p,selected_coins:f}=this.buildSpitTargeCoin(e,i,r,a);return a?{target_coin:e.makeMoveVec({elements:[u]}),selected_coins:f,remain_coins:p,target_coin_amount:l,is_mint_zero_coin:!1,original_spited_coin:o}:{selected_coins:f,target_coin:e.makeMoveVec({elements:f.map(m=>e.object(m))}),remain_coins:p,target_coin_amount:l,is_mint_zero_coin:!1}}static buildOneCoin(e,t,r,i,s=!0){if(be.isSuiCoin(i)){if(r===0n&&t.length>1){let u=be.selectCoinObjectIdGreaterThanOrEqual(t,r);return{selected_coins:u.object_array,target_coin:e.object(u.object_array[0]),remain_coins:u.remain_coins,target_coin_amount:u.amount_array[0],is_mint_zero_coin:!1}}let a=be.selectCoinObjectIdGreaterThanOrEqual(t,r),o=e.splitCoins(e.gas,[e.pure.u64(r)]);return{selected_coins:[],target_coin:o,remain_coins:a.remain_coins,target_coin_amount:r.toString(),is_mint_zero_coin:!1,original_spited_coin:e.gas}}return this.buildSpitTargeCoin(e,r,t,s)}static buildSpitTargeCoin(e,t,r,i){let s=be.selectCoinObjectIdGreaterThanOrEqual(r,t),a=s.amount_array.reduce((k,T)=>Number(k)+Number(T),0).toString(),o=s.object_array,[u,...l]=o,p=e.object(u),f=p,m=s.amount_array.reduce((k,T)=>Number(k)+Number(T),0).toString(),y;return l.length>0&&e.mergeCoins(p,l.map(k=>e.object(k))),i&&Number(a)>Number(t)&&(f=e.splitCoins(p,[e.pure.u64(t)]),y=p),{original_spited_coin:y,target_coin:f,target_coin_amount:m,remain_coins:s.remain_coins,selected_coins:s.object_array,is_mint_zero_coin:!1}}static buildCoin(e,t,r,i,s,a=!0,o=!0){return a?this.buildVectorCoin(e,t,r,i,s,o):this.buildOneCoin(e,r,i,s,o)}static buildZeroValueCoin(e,t,r,i=!0){let s=this.callMintZeroValueCoin(t,r),a;return i?a=t.makeMoveVec({elements:[s]}):a=s,{target_coin:a,remain_coins:e,selected_coins:[],is_mint_zero_coin:!0,target_coin_amount:"0"}}static buildCoinForAmountInterval(e,t,r,i,s=!0,a=!0){let o=be.getCoinAssets(i,t);if(r.amount_first===BigInt(0))return o.length>0?this.buildCoin(e,[...t],[...o],r.amount_first,i,s,a):this.buildZeroValueCoin(t,e,i,s);let u=be.calculateTotalBalance(o);if(u>=r.amount_first)return this.buildCoin(e,[...t],[...o],r.amount_first,i,s,a);if(u<r.amount_second)throw new Error(`The amount(${u}) is Insufficient balance for ${i} , expect ${r.amount_second} `);return this.buildCoin(e,[...t],[...o],r.amount_second,i,s,a)}static fromBalance(e,t,r){return r.moveCall({target:"0x2::coin::from_balance",typeArguments:[t],arguments:[e]})}static intoBalance(e,t,r){return r.moveCall({target:"0x2::coin::into_balance",typeArguments:[t],arguments:[typeof e=="string"?r.object(e):e]})}static mintBalanceZero(e,t){return t.moveCall({target:"0x2::balance::zero",typeArguments:[e],arguments:[]})}static destroyBalanceZero(e,t,r){return r.moveCall({target:"0x2::balance::destroy_zero",typeArguments:[t],arguments:[e]})}static getCoinAmountObjId(e,t){let r=e.amount_coin_array.find(i=>!i.used&&S(i.amount).eq(t)?(i.used=!0,!0):!1);return r?r.coin_object_id:Oi("CoinNotFound",`Coin not found for ${t} ${e.coin_type}`)}static buildMultiCoinInput(e,t,r,i){let s=be.getCoinAssets(r,t);if(be.isSuiCoin(r)){let m=e.splitCoins(e.gas,i.map(k=>e.pure.u64(k)));return{amount_coin_array:i.map((k,T)=>({coin_object_id:m[T],amount:k.toString(),used:!1})),coin_type:r,remain_coins:s}}let a=i.reduce((m,y)=>m+y,BigInt(0)),o=be.selectCoinObjectIdGreaterThanOrEqual(s,a);if(o.object_array.length===0)return Oi("InsufficientBalance",`No enough coins for ${r} expect ${a} actual ${be.calculateTotalBalance(s)}`);let[u,...l]=o.object_array;l.length>0&&e.mergeCoins(u,[...l]);let p=e.splitCoins(u,i.map(m=>e.pure.u64(m)));return{amount_coin_array:i.map((m,y)=>({coin_object_id:p[y],amount:m.toString(),used:!1})),remain_coins:o.remain_coins,coin_type:r}}},rt=be;on(rt,"callMintZeroValueCoin",(e,t)=>e.moveCall({target:"0x2::coin::zero",typeArguments:[t]}));var ya=6e4,ba=3e5,Lr=864e5;function Bi(n){return Date.parse(new Date().toString())+n}var En=class{overdueTime;value;constructor(e,t=0){this.overdueTime=t,this.value=e}isValid(){return this.value===null?!1:this.overdueTime===0?!0:!(Date.parse(new Date().toString())>this.overdueTime)}};import{Ed25519Keypair as wa}from"@mysten/sui/keypairs/ed25519";import{Secp256k1Keypair as va}from"@mysten/sui/keypairs/secp256k1";import{fromBase64 as ka,fromHex as Ca}from"@mysten/sui/utils";function ir(n,e){let t=Ri(S(e));return Number(S(n).mul(t))}function Fh(n,e=32){return BigInt.asUintN(e,BigInt(n)).toString()}function Lh(n,e=32){return Number(BigInt.asIntN(e,BigInt(n)))}function Tr(n,e){let t=Ri(S(e));return Number(S(n).div(t))}function Vh(n,e="hex"){if(n instanceof Uint8Array){let r=Buffer.from(n);return wa.fromSecretKey(new Uint8Array(r))}let t=e==="hex"?Ca(n):ka(n);return wa.fromSecretKey(t)}function zh(n,e="hex"){if(n instanceof Uint8Array){let r=Buffer.from(n);return va.fromSecretKey(new Uint8Array(r))}let t=e==="hex"?Ca(n):ka(n);return va.fromSecretKey(t)}var Ta=async n=>new Promise(e=>{setTimeout(()=>{e(1)},n)});async function Sa(n,e=!0){n.getData().commands.forEach((t,r)=>{e&&console.log(`transaction ${r}: `,t)})}var Ma={coinType:"0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP",decimals:6},Aa={coinType:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",decimals:6};function Oa(...n){console.log("DeepbookV3_Utils_Sdk###",...n)}function Ea(n){return n.data}function el(n){if(n.error&&"object_id"in n.error&&"version"in n.error&&"digest"in n.error){let{error:e}=n;return{objectId:e.object_id,version:e.version,digest:e.digest}}}function tl(n){if(n.error&&"object_id"in n.error&&!("version"in n.error)&&!("digest"in n.error))return n.error.object_id}function rl(n){if("reference"in n)return n.reference;let e=Ea(n);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:el(n)}function ja(n){return"objectId"in n?n.objectId:rl(n)?.objectId??tl(n)}function Wh(n){return n.data!==void 0}function nl(n){return n.content!==void 0}function il(n){let e="data"in n?Ea(n):n;if(!(!e||!nl(e)||e.content.dataType!=="moveObject"))return e.content}function xa(n){let e=il(n)?.fields;if(e)return"fields"in e?e.fields:e}import{bcs as ue}from"@mysten/sui/bcs";var Ia=ue.struct("GetCetusBalanceManagerList",{owner:ue.Address,cetus_balance_managers:ue.vector(ue.Address),deepbook_balance_managers:ue.vector(ue.Address)}),Pa=ue.struct("Account",{epoch:ue.u64(),open_orders:ue.vector(ue.u128()),taker_volume:ue.u128(),maker_volume:ue.u128(),active_stake:ue.u64(),inactive_stake:ue.u64(),created_proposal:ue.bool(),voted_proposal:ue.option(ue.Address),unclaimed_rebates:ue.struct("Balances",{base:ue.u64(),quote:ue.u64(),deep:ue.u64()}),settled_balances:ue.struct("Balances",{base:ue.u64(),quote:ue.u64(),deep:ue.u64()}),owed_balances:ue.struct("Balances",{base:ue.u64(),quote:ue.u64(),deep:ue.u64()})});import{Base64 as sl}from"js-base64";function ie(n){let e=n?.bcs??n?.[0];if(e instanceof Uint8Array)return e;if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(Array.isArray(e))return Uint8Array.from(e);if(typeof e=="string"&&e.length>0)return Uint8Array.from(sl.toUint8Array(e));throw new Error("Missing simulation return bytes")}function ut(n){let e=n?.FailedTransaction?.status?.error??n?.Transaction?.status?.error;return typeof e=="string"?e:e?.message??JSON.stringify(e??"Unknown error")}function J(n,e){if(n?.$kind==="FailedTransaction"||!n?.commandResults?.length)throw new Error(`${e}: ${ut(n)}`)}var Di=1e6,Et=1e9,ul={coinType:"0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP",decimals:6},ll={coinType:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",decimals:6},jn=class{_sdk;_deep;_cache={};constructor(e){this._sdk=e,this._deep=e.sdkOptions.network==="mainnet"?ll:ul}get sdk(){return this._sdk}get deepCoin(){return this._deep}createAndShareBalanceManager(){let e=new se,t=e.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new`});return e.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::cetus_balance_manager::check_and_add_deepbook_balance_manager_indexer`,arguments:[e.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),t],typeArguments:[]}),e.moveCall({target:"0x2::transfer::public_share_object",arguments:[t],typeArguments:[`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::BalanceManager`]}),e}createAndDepsit({account:e,coin:t,amountToDeposit:r}){let i=new se;i.setSenderIfNotSet(e);let s=i.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new`}),a=Ra({type:t.coinType,balance:BigInt(r)});return i.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::deposit`,arguments:[s,a],typeArguments:[t.coinType]}),i.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::cetus_balance_manager::check_and_add_deepbook_balance_manager_indexer`,arguments:[i.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),s],typeArguments:[]}),i.moveCall({target:"0x2::transfer::public_share_object",arguments:[s],typeArguments:[`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::BalanceManager`]}),i}depositIntoManager({account:e,balanceManager:t,coin:r,amountToDeposit:i,tx:s}){let a=s||new se;if(t){a.setSenderIfNotSet(e);let o=Ra({type:r.coinType,balance:BigInt(i)});return a.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::deposit`,arguments:[a.object(t),o],typeArguments:[r.coinType]}),a}return null}async withdrawFromManager({account:e,balanceManager:t,coin:r,amountToWithdraw:i,returnAssets:s,txb:a}){let o=a||new se,u=o.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::withdraw`,arguments:[o.object(t),o.pure.u64(i)],typeArguments:[r.coinType]});if(s)return u;if(rt.isSuiCoin(r.coinType))o.transferObjects([u],e);else{let l=await this._sdk.fullClient.getOwnerCoinAssets(e,r.coinType),p=rt.buildCoinForAmount(o,l,BigInt(0),r.coinType,!1);p.target_coin?(o.mergeCoins(p.target_coin,[u]),p.is_mint_zero_coin&&o.transferObjects([p.target_coin],e)):o.transferObjects([u],e)}return o}withdrawManagersFreeBalance({account:e,balanceManagers:t,tx:r=new se}){for(let i in t)t[i].forEach(a=>{let o=r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::withdraw`,arguments:[r.object(i),r.pure.u64(a.amount)],typeArguments:[a.coinType]});r.transferObjects([o],e)});return r}async getBalanceManager(e,t=!0){let r=`getBalanceManager_${e}`,i=this.getCache(r,t);if(!t&&i!==void 0)return i;try{let s=new se;s.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::get_balance_managers_by_owner`,arguments:[s.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),s.pure.address(e)],typeArguments:[]});let a=await this.sdk.fullClient.sendSimulationTransaction(s,e);J(a,"Failed to get balance managers");let u=a.Transaction?.events?.find(A=>A.eventType===`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::GetCetusBalanceManagerList`);if(u?.bcs==null)throw new Error("GetCetusBalanceManagerList event not found or missing BCS payload (check simulation / RPC transport)");let p=Ia.parse(new Uint8Array(u.bcs))?.deepbook_balance_managers||[],f=await this._sdk.fullClient.batchGetObjects(p,{json:!0}),m={};for(let A=0;A<f.length;A++){let E=f[A],q=E?.data?.objectId??E?.objectId,x=E?.json??E?.data?.content?.fields,U=x?.allow_listed?.fields?.contents??x?.allow_listed?.contents??x?.balance_manager?.allow_listed?.contents;q&&Array.isArray(U)&&U.length>0&&(m[q]=U)}let y=await this.batchGetObjectsByIdMap(m),k=qa(e),T=[];return p.forEach(A=>{let E=y[A]??[],q=E.filter(U=>{let ee=this.getSuiObjectOwnerAddress(U);return ee!==void 0&&qa(ee)===k});E.length===0||q.length===E.length?T.push({balanceManager:A,cetusBalanceManager:"",capOk:!0}):T.push({balanceManager:A,cetusBalanceManager:"",capOk:!1})}),this.updateCache(r,T,864e5),T||[]}catch(s){throw s instanceof Error?s:new Error(String(s))}}async batchGetObjectsByIdMap(e){let t=Object.entries(e).filter(([,a])=>Array.isArray(a)&&a.length>0);if(t.length===0)return{};let r=[...new Set(t.flatMap(([,a])=>a))],i=await this._sdk.fullClient.batchGetObjects(r,{json:!0}),s=new Map;return i.forEach(a=>{let o=a?.data?.objectId??a?.objectId;o&&s.set(o,a)}),Object.fromEntries(t.map(([a,o])=>[a,o.map(u=>s.get(u)).filter(Boolean)]))}getSuiObjectOwnerAddress(e){let r=e?.owner;if(r&&typeof r=="object"){if(r.$kind==="AddressOwner"&&typeof r.AddressOwner=="string")return r.AddressOwner;if(r.$kind==="ObjectOwner"&&typeof r.ObjectOwner=="string")return r.ObjectOwner;if(typeof r.AddressOwner=="string")return r.AddressOwner;if(typeof r.ObjectOwner=="string")return r.ObjectOwner}let i=e.data?.owner;if(!(!i||typeof i!="object")){if(typeof i.AddressOwner=="string")return i.AddressOwner;if(typeof i.ObjectOwner=="string")return i.ObjectOwner}}withdrawSettledAmounts({poolInfo:e,balanceManager:t},r=new se){let i=r.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::generate_proof_as_owner`,arguments:[r.object(t)]});return r.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::withdraw_settled_amounts`,arguments:[r.object(e.address),r.object(t),i],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]}),r}async getManagerBalance({account:e,balanceManager:t,coins:r}){try{let i=new se;r.forEach(o=>{i.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::balance`,arguments:[i.object(t)],typeArguments:[o.coinType]})});let s=await this.sdk.fullClient.sendSimulationTransaction(i,e);J(s,"Failed to get balance manager balances");let a={};return s?.commandResults?.forEach((o,u)=>{let l=r[u],p=o.returnValues[0]?.bcs,f=L.U64.parse(new Uint8Array(p)),m=S(f),y=m.eq(0)?"0":m.div(Math.pow(10,l.decimals)).toString();a[l.coinType]={adjusted_balance:y,balance:m.toString()}}),a}catch(i){throw i instanceof Error?i:new Error(String(i))}}async getAccountAllManagerBalance({account:e,coins:t}){try{let r=new se,i=await this.getBalanceManager(e,!0);if(!Array.isArray(i)||i.length===0)return{};i.forEach(o=>{t.forEach(u=>{r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::balance`,arguments:[r.object(o.balanceManager)],typeArguments:[u.coinType]})})});let s=await this.sdk.fullClient.sendSimulationTransaction(r,e);J(s,"Failed to get all balance manager balances");let a={};return i.forEach((o,u)=>{let l={},p=u*t.length;t.forEach((f,m)=>{let y=p+m,k=s.commandResults?.[y];if(k){let T=k.returnValues[0].bcs,A=L.U64.parse(new Uint8Array(T)),E=S(A),q=E.eq(0)?"0":E.div(Math.pow(10,f.decimals)).toString();l[f.coinType]={adjusted_balance:q,balance:E.toString()}}}),a[o.balanceManager]=l}),a}catch(r){throw r instanceof Error?r:new Error(String(r))}}async getMarketPrice(e){try{let t=new se;t.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::mid_price`,arguments:[t.object(e.address),t.object(ot)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let r=await this._sdk.fullClient.sendSimulationTransaction(t,this._sdk.sdkOptions.simulationAccount.address,!1);J(r,"Failed to get market price");let i=ie(r.commandResults[0]?.returnValues?.[0]),s=Number(L.U64.parse(i)),a=Math.pow(10,e.baseCoin.decimals).toString(),o=Math.pow(10,e.quoteCoin.decimals).toString();return S(s).mul(a).div(o).div(Et).toString()}catch(t){return Oa("getMarketPrice ~ error:",t),"0"}}async getPools(e=!1){let t="Deepbook_getPools",r=this.getCache(t,e);if(r!==void 0)return r;let i=await this._sdk.fullClient.queryEventsByGraphQL({MoveEventType:`${this._sdk.sdkOptions.deepbook.package_id}::pool::PoolCreated`},"all"),s=/<([^>]+)>/,a=[];return i?.data?.forEach(o=>{let u=o?.parsedJson,l=o.type.match(s);if(l){let f=l[1].split(", ");a.push({...u,baseCoinType:f[0],quoteCoinType:f[1]})}}),this.updateCache(t,a,864e5),a}async getQuoteQuantityOut(e,t,r){let i=new se;i.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_quote_quantity_out`,arguments:[i.object(e.address),i.pure.u64(t),i.object(ot)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let s=await this._sdk.fullClient.sendSimulationTransaction(i,r,!1);J(s,"Failed to get quote quantity out");let a=String(L.U64.parse(ie(s.commandResults[0].returnValues[0]))),o=String(L.U64.parse(ie(s.commandResults[0].returnValues[1]))),u=String(L.U64.parse(ie(s.commandResults[0].returnValues[2])));return{baseQuantityDisplay:S(t).div(Math.pow(10,e.baseCoin.decimals)).toString(),baseOutDisplay:S(a).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:S(o).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:S(u).div(Di).toString(),baseQuantity:t,baseOut:a,quoteOut:o,deepRequired:u}}async getBaseQuantityOut(e,t,r){let i=new se;i.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_base_quantity_out`,arguments:[i.object(e.address),i.pure.u64(t),i.object(ot)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let s=await this._sdk.fullClient.sendSimulationTransaction(i,r,!1);J(s,"Failed to get base quantity out");let a=String(L.U64.parse(ie(s.commandResults[0].returnValues[0]))),o=String(L.U64.parse(ie(s.commandResults[0].returnValues[1]))),u=String(L.U64.parse(ie(s.commandResults[0].returnValues[2])));return{quoteQuantityDisplay:S(t).div(Math.pow(10,e.quoteCoin.decimals)).toString(),baseOutDisplay:S(a).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:S(o).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:S(u).div(Di).toString(),quoteQuantity:t,baseOut:a,quoteOut:o,deepRequired:u}}async getQuantityOut(e,t,r,i){let s=new se;s.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_quantity_out`,arguments:[s.object(e.address),s.pure.u64(t),s.pure.u64(r),s.object(ot)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let a=await this._sdk.fullClient.sendSimulationTransaction(s,i,!1);J(a,"Failed to get quantity out");let o=Number(L.U64.parse(ie(a.commandResults[0].returnValues[0]))),u=Number(L.U64.parse(ie(a.commandResults[0].returnValues[1]))),l=Number(L.U64.parse(ie(a.commandResults[0].returnValues[2])));return{baseQuantityDisplay:S(t).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteQuantityDisplay:S(r).div(Math.pow(10,e.quoteCoin.decimals)).toString(),baseOutDisplay:S(o).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:S(u).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:S(l).div(Di).toString(),baseQuantity:t,quoteQuantity:r,baseOut:o,quoteOut:u,deepRequired:l}}async getReferencePool(e){let t=await this.getPools(),r=e.baseCoin.coinType,i=e.quoteCoin.coinType,s=this._deep.coinType;for(let a=0;a<t.length;a++){let o=t[a];if(o.address===e.address)continue;let u=[o.baseCoinType,o.quoteCoinType];if(o.baseCoinType===s&&(u.includes(r)||u.includes(i)))return o}return null}async updateDeepPrice(e,t){let r=await this.getReferencePool(e);return r?(t.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::add_deep_price_point`,arguments:[t.object(e.address),t.object(r.pool_id),t.object(ot)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType,r.baseCoinType,r.quoteCoinType]}),t):null}async estimatedMaxFee(e,t,r,i,s,a,o){let u=this.deepCoin;try{let{taker_fee:l,maker_fee:p}=e,f=S(l).div(Et).toString(),m=S(p).div(Et).toString(),y=await this.getMarketPrice(e);console.log("\u{1F680} ~ DeepbookUtilsModule ~ estimatedMaxFee ~ marketPrice:",y);let k=a?r:y!=="0"?y:o;if(k==="0")throw new Error("Cannot get market price");let T=Math.pow(10,e.baseCoin.decimals).toString(),A=Math.pow(10,e.quoteCoin.decimals).toString(),E=S(k).div(T).mul(A).mul(Et).toString();if(i){let U=await this.getMarketPrice(e),N=S(a?r:U!=="0"?U:o).div(T).mul(A).mul(Et).toString(),ce=await this.getOrderDeepPrice(e);if(!ce)throw new Error("Cannot get deep price");let ae=qi(N,r),oe=S(t).mul(S(f)).mul(S(ce.deep_per_asset)).div(S(Et)),we=S(t).mul(S(m)).mul(S(ce.deep_per_asset)).div(S(Et));ce.asset_is_base||(oe=oe.mul(ae).div(S(Et)),we=we.mul(ae).div(S(Et)));let nt=oe.ceil().toString(),ft=we.ceil().toString();return{takerFee:nt,makerFee:ft,takerFeeDisplay:Tr(nt,u.decimals).toString(),makerFeeDisplay:Tr(ft,u.decimals).toString(),feeType:u.coinType}}if(s){let U=qi(E,a?r:y),ee=S(t).mul(U).mul(S(f).mul(1.25)).div(S(Et)).ceil().toFixed(0),N=S(t).mul(U).mul(S(m).mul(1.25)).div(S(Et)).ceil().toFixed(0);return{takerFee:ee,makerFee:N,takerFeeDisplay:Tr(ee,e.quoteCoin.decimals).toString(),makerFeeDisplay:Tr(N,e.quoteCoin.decimals).toString(),feeType:e.quoteCoin.coinType}}let q=S(t).mul(S(f).mul(1.25)).ceil().toFixed(0),x=S(t).mul(S(m).mul(1.25)).ceil().toFixed(0);return{takerFee:q,makerFee:x,takerFeeDisplay:Tr(q,e.baseCoin.decimals).toString(),makerFeeDisplay:Tr(x,e.baseCoin.decimals).toString(),feeType:e.baseCoin.coinType}}catch(l){throw l instanceof Error?l:new Error(String(l))}}async getOrderDeepPrice(e,t=!0){let r=`getOrderDeepPrice_${e.address}}`,i=this.getCache(r);if(i!==void 0)return i;try{let s=new se,a=!1;t&&e?.baseCoin?.coinType!==this._deep.coinType&&e?.quoteCoin?.coinType!==this._deep.coinType&&await this.updateDeepPrice(e,s)&&(a=!0),s.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_order_deep_price`,arguments:[s.object(e.address)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let o=await this._sdk.fullClient.sendSimulationTransaction(s,this._sdk.sdkOptions.simulationAccount.address,!1);J(o,"Failed to get order deep price");let u=a?o.commandResults[1]?.returnValues?.[0]:o.commandResults[0]?.returnValues?.[0],l=this.parseOrderDeepPrice(ie(u));return this.updateCache(r,l,6e4),l}catch{return await Ta(2e3),this.getOrderDeepPrice(e,!1)}}parseOrderDeepPrice(e){let t=new DataView(e.buffer),r=t.getUint8(0)!==0,i=Number(t.getBigUint64(1,!0));return{asset_is_base:r,deep_per_asset:i}}getCoinAssets(e,t,r){return rt.buildCoinWithBalance(BigInt(S(t).abs().ceil().toString()),e,r)}async getTransactionRelatedBalance(e,t,r,i,s,a,o){let u=this.deepCoin;if(!o)return{baseManagerBlance:"0",quoteManagerBlance:"0",feeManaerBalance:"0"};try{let l=[{coinType:e.baseCoin.coinType,decimals:e.baseCoin.decimals},{coinType:e.quoteCoin.coinType,decimals:e.quoteCoin.decimals}];i&&l.push(u);let p=await this.getManagerBalance({account:s,balanceManager:o,coins:l}),f=p?.[t]?.balance||"0",m=p?.[r]?.balance||"0",y=a&&p?.[u.coinType]?.balance||"0";return{baseManagerBlance:f,quoteManagerBlance:m,feeManaerBalance:y}}catch(l){throw l instanceof Error?l:new Error(String(l))}}getFeeAsset(e,t,r,i,s,a,o,u,l){let p=S(e).gt(0)&&u,f="0";if(!p)return{feeAsset:this.getEmptyCoin(l,t),haveDepositFee:"0"};if(a||o){let m=S(s).sub(a?i:r);f=m.lte(0)?e:m.sub(e).lt(0)?m.sub(e).toString():"0"}else f=S(s).sub(e).lt("0")?S(s).sub(e).abs().toString():"0";return{feeAsset:S(f).gt("0")?this.getCoinAssets(t,f,l):this.getEmptyCoin(l,t),haveDepositFee:f}}async getTransactionRelatedAssets(e,t,r,i,s,a,o,u,l){try{let p=this.deepCoin,f=Ot(e.baseCoin.coinType),m=Ot(e.quoteCoin.coinType),y=f===p.coinType,k=m===p.coinType,T=!y&&!k,{baseManagerBlance:A,quoteManagerBlance:E,feeManaerBalance:q}=await this.getTransactionRelatedBalance(e,f,m,T,a,o,u);console.log("\u{1F680}\u{1F680}\u{1F680} ~ deepbookUtilsModule.ts:897 ~ DeepbookUtilsModule ~ getTransactionRelatedAssets ~ quoteManagerBlance:",{baseManagerBlance:A,quoteManagerBlance:E});let x,U,ee=!1;if(s){o||(r=S(r).add(S(i)).toString());let ce=S(E).sub(r).toString();S(ce).lt(0)?(ee=!0,U=this.getCoinAssets(m,ce,l)):U=this.getEmptyCoin(l,m),x=this.getEmptyCoin(l,f)}else{o||(t=S(t).add(S(i)).toString());let ce=S(A).sub(t).toString();S(ce).lt(0)?(ee=!0,x=this.getCoinAssets(f,ce,l)):x=this.getEmptyCoin(l,f),U=this.getEmptyCoin(l,m)}let N=this.getFeeAsset(i,p.coinType,t,r,q,k,y,o,l);return{baseAsset:x,quoteAsset:U,feeAsset:N,haveDeposit:ee}}catch(p){throw p instanceof Error?p:new Error(String(p))}}async getMarketTransactionRelatedAssets(e,t,r,i,s,a,o,u,l,p){try{let f=this.deepCoin,m=Ot(e.baseCoin.coinType),y=Ot(e.quoteCoin.coinType),k=m===f.coinType,T=y===f.coinType,A=!k&&!T,E=await this.getTransactionRelatedBalance(e,m,y,A,a,o,u),{feeManaerBalance:q}=E,x=S(E.baseManagerBlance).add(S(p?.base||"0")).toString(),U=S(E.quoteManagerBlance).add(S(p?.quote||"0")).toString(),ee;o&&S(q).lt(i)?ee=this.getCoinAssets(f.coinType,S(i).sub(q).toString(),l):ee=this.getEmptyCoin(l,f.coinType);let N,ce;if(s){o||(r=S(r).add(S(i)).toString());let ae=S(U).sub(r).toString();if(S(ae).lt(0)){let oe;S(U).gt(0)&&(oe=await this.withdrawFromManager({account:a,balanceManager:u,coin:e.quoteCoin,amountToWithdraw:U,returnAssets:!0,txb:l}));let we=this.getCoinAssets(y,ae,l);oe&&l.mergeCoins(we,[oe]),ce=we}else ce=await this.withdrawFromManager({account:a,balanceManager:u,coin:e.quoteCoin,amountToWithdraw:r,returnAssets:!0,txb:l});N=this.getEmptyCoin(l,m)}else{o||(t=S(t).add(S(i)).toString());let ae=S(x).sub(t).toString();if(S(ae).lt(0)){let oe;S(x).gt(0)&&(oe=await this.withdrawFromManager({account:a,balanceManager:u,coin:e.baseCoin,amountToWithdraw:x,returnAssets:!0,txb:l}));let we=this.getCoinAssets(m,ae,l);oe&&l.mergeCoins(we,[oe]),N=we}else N=await this.withdrawFromManager({account:a,balanceManager:u,coin:e.baseCoin,amountToWithdraw:t,returnAssets:!0,txb:l});ce=this.getEmptyCoin(l,y)}return{baseAsset:N,quoteAsset:ce,feeAsset:ee}}catch(f){throw f instanceof Error?f:new Error(String(f))}}async createDepositThenPlaceLimitOrder({poolInfo:e,priceInput:t,quantity:r,orderType:i,isBid:s,maxFee:a,account:o,payWithDeep:u,expirationTimestamp:l=Date.now()+31536e8}){try{let p=this.deepCoin,f=e.address,m=e.baseCoin.decimals,y=e.quoteCoin.decimals,k=e.baseCoin.coinType,T=e.quoteCoin.coinType,A=S(t).mul(10**(y-m+9)).toString(),E=Ot(k),q=Ot(T),x=new se,U,ee;if(s){let oe=S(t).mul(S(r).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();u||(oe=S(oe).add(S(a)).toString()),ee=rt.buildCoinWithBalance(BigInt(oe),q,x)}else{let oe=r;u||(oe=S(r).abs().add(S(a)).toString()),U=rt.buildCoinWithBalance(BigInt(oe),E,x)}let N=u?S(a).gt(0)?rt.buildCoinWithBalance(BigInt(S(a).abs().ceil().toString()),p.coinType,x):this.getEmptyCoin(x,p.coinType):this.getEmptyCoin(x,p.coinType),ce=x.moveCall({typeArguments:[s?k:T],target:"0x2::coin::zero",arguments:[]}),ae=[x.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),x.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),x.object(f),s?ce:U,s?ee:ce,N,x.pure.u8(i),x.pure.u8(0),x.pure.u64(A),x.pure.u64(r),x.pure.bool(s),x.pure.bool(!1),x.pure.u64(l),x.object(ot)];return x.moveCall({typeArguments:[E,q],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_limit_order`,arguments:ae}),x}catch(p){throw p instanceof Error?p:new Error(String(p))}}getEmptyCoin(e,t){return rt.buildCoinWithBalance(BigInt(0),t,e)}async createDepositThenPlaceMarketOrder({poolInfo:e,quantity:t,isBid:r,maxFee:i,account:s,payWithDeep:a,slippage:o=.01}){try{let u=e.address,l=e.baseCoin.coinType,p=e.quoteCoin.coinType,f=Ot(l),m=Ot(p),y=new se,k,T,A=t,E,q=await this.getOrderBook(e,"all",6);if(r){let ee=q?.ask?.[0]?.price||"0",N=S(ee).mul(S(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();E=S(N).plus(S(N).mul(o)).ceil().toString()}else{let ee=await q?.bid?.[0]?.price||"0",N=S(ee).mul(S(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();E=S(N).minus(S(N).mul(o)).floor().toString()}r?(a||(E=S(E).add(S(i)).toString()),T=this.getCoinAssets(m,E,y),k=this.getEmptyCoin(y,f)):(a||(A=S(A).add(S(i)).toString()),T=this.getEmptyCoin(y,m),k=this.getCoinAssets(f,A,y));let x=a?S(i).gt(0)?rt.buildCoinWithBalance(BigInt(S(i).abs().ceil().toString()),this.deepCoin.coinType,y):this.getEmptyCoin(y,this.deepCoin.coinType):this.getEmptyCoin(y,this.deepCoin.coinType),U=[y.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),y.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),y.object(u),k,T,x,y.pure.u8(0),y.pure.u64(t),y.pure.bool(r),y.pure.bool(a),y.pure.u64(E),y.object(ot)];return y.moveCall({typeArguments:[f,m],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_market_order_v2`,arguments:U}),y}catch(u){throw u instanceof Error?u:new Error(String(u))}}async placeLimitOrder({balanceManager:e,poolInfo:t,priceInput:r,quantity:i,isBid:s,orderType:a,maxFee:o,account:u,payWithDeep:l,expirationTimestamp:p=Date.now()+31536e8}){try{let f=this.deepCoin,m=S(r).mul(10**(t.quoteCoin.decimals-t.baseCoin.decimals+9)).toString(),y=t.baseCoin.coinType,k=t.quoteCoin.coinType,T=new se,A=s?S(r).mul(S(i).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString():"0",E=s?"0":i,{baseAsset:q,quoteAsset:x,feeAsset:U,haveDeposit:ee}=await this.getTransactionRelatedAssets(t,E,A,o,s,u,l,e,T);if(ee){let ae=[T.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),T.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),T.object(t.address),T.object(e),q,x,U.feeAsset,T.pure.u8(a),T.pure.u8(0),T.pure.u64(m),T.pure.u64(i),T.pure.bool(s),T.pure.bool(l),T.pure.u64(p),T.object(ot)];return T.moveCall({typeArguments:[y,k],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_limit_order_by_owner`,arguments:ae}),T}let N=new se;S(U.haveDepositFee).gt(0)&&this.depositIntoManager({account:u,balanceManager:e,coin:f,amountToDeposit:U.haveDepositFee,tx:N});let ce=[N.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),N.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),N.object(t.address),N.object(e),N.pure.u8(a),N.pure.u8(0),N.pure.u64(m),N.pure.u64(i),N.pure.bool(s),N.pure.bool(l),N.pure.u64(p),N.object(ot)];return N.moveCall({typeArguments:[y,k],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::place_limit_order`,arguments:ce}),N}catch(f){throw f instanceof Error?f:new Error(String(f))}}modifyOrder({balanceManager:e,poolInfo:t,orderId:r,newOrderQuantity:i}){let s=new se;return s.moveCall({typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::modify_order`,arguments:[s.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),s.object(e),s.object(t.address),s.pure.u128(r),s.pure.u64(i),s.object(ot)]}),s}async getBestAskprice(e){try{let{baseCoin:t,quoteCoin:r}=e,i=new se,s=await this.getMarketPrice(e),a=S(s).gt(0)?s:Math.pow(10,-1),o=Math.pow(10,6),u=S(a).mul(Math.pow(10,9+r.decimals-t.decimals)).toString(),l=S(o).mul(Math.pow(10,9+r.decimals-t.decimals)).toString();i.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_level2_range`,arguments:[i.object(e.address),i.pure.u64(u),i.pure.u64(l),i.pure.bool(!1),i.object(ot)],typeArguments:[t.coinType,r.coinType]});let p=this._sdk.sdkOptions.simulationAccount.address,f=await this._sdk.fullClient.sendSimulationTransaction(i,p,!1);J(f,"Failed to get level2 range");let m=[],y=L.vector(L.u64()).parse(ie(f.commandResults[0].returnValues[0])),k=L.vector(L.u64()).parse(ie(f.commandResults[0].returnValues[1]));return y.forEach((T,A)=>{let E=S(T).div(Math.pow(10,9+r.decimals-t.decimals)).toString(),q=S(k[A]).div(Math.pow(10,t.decimals)).toString();m.push({price:E,quantity:q})}),m?.[0]?.price||0}catch{return 0}}async getBestBidprice(e){try{let{baseCoin:t,quoteCoin:r}=e,i=new se,s=await this.getMarketPrice(e),a=S(s).gt(0)?S(s).div(3).toNumber():Math.pow(10,-6),o=S(s).gt(0)?s:Math.pow(10,6),u=S(a).mul(Math.pow(10,9+r.decimals-t.decimals)).toString(),l=S(o).mul(Math.pow(10,9+r.decimals-t.decimals)).toString();i.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_level2_range`,arguments:[i.object(e.address),i.pure.u64(Cr(u,0)),i.pure.u64(Cr(l,0)),i.pure.bool(!0),i.object(ot)],typeArguments:[t.coinType,r.coinType]});let p=this._sdk.sdkOptions.simulationAccount.address,f=await this._sdk.fullClient.sendSimulationTransaction(i,p,!1);J(f,"Failed to get level2 range");let m=[],y=L.vector(L.u64()).parse(ie(f.commandResults[0].returnValues[0])),k=L.vector(L.u64()).parse(ie(f.commandResults[0].returnValues[1]));return y.forEach((T,A)=>{let E=S(T).div(Math.pow(10,9+r.decimals-t.decimals)).toString(),q=S(k[A]).div(Math.pow(10,t.decimals)).toString();m.push({price:E,quantity:q})}),m?.[0]?.price||0}catch{return 0}}async getBestAskOrBidPrice(e,t){try{let{baseCoin:r,quoteCoin:i}=e,s=new se,a=await this.getMarketPrice(e),o,u;t?(o=S(a).gt(0)?S(a).div(3).toNumber():Math.pow(10,-6),u=S(a).gt(0)?a:Math.pow(10,6)):(o=S(a).gt(0)?a:Math.pow(10,-1),u=S(a).gt(0)?S(a).mul(3).toNumber():Math.pow(10,6));let l=S(o).mul(Math.pow(10,9+i.decimals-r.decimals)).toString(),p=S(u).mul(Math.pow(10,9+i.decimals-r.decimals)).toString();s.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_level2_range`,arguments:[s.object(e.address),s.pure.u64(Cr(l,0)),s.pure.u64(Cr(p,0)),s.pure.bool(t),s.object(ot)],typeArguments:[r.coinType,i.coinType]});let f=this._sdk.sdkOptions.simulationAccount.address,m=await this._sdk.fullClient.sendSimulationTransaction(s,f,!1);J(m,"Failed to get level2 range");let y=[],k=L.vector(L.u64()).parse(ie(m.commandResults[0].returnValues[0])),T=L.vector(L.u64()).parse(ie(m.commandResults[0].returnValues[1]));return k.forEach((A,E)=>{let q=S(A).div(Math.pow(10,9+i.decimals-r.decimals)).toString(),x=S(T[E]).div(Math.pow(10,r.decimals)).toString();y.push({price:q,quantity:x})}),y?.[0]?.price||0}catch{return 0}}async placeMarketOrder({balanceManager:e,poolInfo:t,baseQuantity:r,quoteQuantity:i,isBid:s,maxFee:a,account:o,payWithDeep:u,slippage:l=.01,settled_balances:p={base:"0",quote:"0"}}){try{let f=Ot(t.baseCoin.coinType),m=Ot(t.quoteCoin.coinType),y=new se;p&&(S(p.base).gt(0)||S(p.quote).gt(0))&&this.withdrawSettledAmounts({poolInfo:t,balanceManager:e},y);let{baseAsset:k,quoteAsset:T,feeAsset:A}=await this.getMarketTransactionRelatedAssets(t,r,i,a,s,o,u,e,y,p),E=await this.getOrderBook(t,"all",6);if(s){let U=E?.ask?.[0]?.price||"0",ee=S(U).mul(S(r).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();i=S(ee).plus(S(ee).mul(l)).ceil().toString()}else{let U=await E?.bid?.[0]?.price||"0",ee=S(U).mul(S(r).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();i=S(ee).minus(S(ee).mul(l)).floor().toString()}let q=i,x=[y.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),y.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),y.object(t.address),y.object(e),k,T,A,y.pure.u8(0),y.pure.u64(r),y.pure.bool(s),y.pure.bool(u),y.pure.u64(q),y.object(ot)];return y.setSenderIfNotSet(o),y.moveCall({typeArguments:[f,m],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_market_order_by_owner_v2`,arguments:x}),y}catch(f){throw f instanceof Error?f:new Error(String(f))}}async getOrderInfoList(e,t){try{let r=new se;e.forEach(l=>{let p=l?.pool,f=l?.orderId;r.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_order`,arguments:[r.object(p.pool_id),r.pure.u128(BigInt(f))],typeArguments:[p.baseCoinType,p.quoteCoinType]})});let i=await this._sdk.fullClient.sendSimulationTransaction(r,t,!1);J(i,"Failed to get order info list");let s=L.struct("ID",{bytes:L.Address}),a=L.struct("OrderDeepPrice",{asset_is_base:L.bool(),deep_per_asset:L.u64()}),o=L.struct("Order",{balance_manager_id:s,order_id:L.u128(),client_order_id:L.u64(),quantity:L.u64(),filled_quantity:L.u64(),fee_is_deep:L.bool(),order_deep_price:a,epoch:L.u64(),status:L.u8(),expire_timestamp:L.u64()}),u=[];return i.commandResults.forEach(l=>{let p=o.parse(ie(l.returnValues?.[0]));u.push(p)}),u}catch{return[]}}decodeOrderId(e){let t=e>>BigInt(127)===BigInt(0),r=e>>BigInt(64)&(BigInt(1)<<BigInt(63))-BigInt(1),i=e&(BigInt(1)<<BigInt(64))-BigInt(1);return{isBid:t,price:r,orderId:i}}async getOpenOrder(e,t,r,i,s=!1,a=new se){let o;if(i)o=i;else{a.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::account_open_orders`,arguments:[a.object(e.address),s?r:a.object(r)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let f=await this._sdk.fullClient.sendSimulationTransaction(a,t,!1);J(f,"Failed to get open orders");let m=f.commandResults[s?1:0],y=ie(m?.returnValues?.[0]);o=L.struct("VecSet",{constants:L.vector(L.U128)}).parse(y).constants}if(o.length===0)return[];let u=o.map(f=>({pool:{pool_id:e.address,baseCoinType:e.baseCoin.coinType,quoteCoinType:e.quoteCoin.coinType},orderId:f})),l=await this.getOrderInfoList(u,t)||[],p=[];return l.forEach(f=>{let m=this.decodeOrderId(BigInt(f.order_id));p.push({...f,price:m.price,isBid:m.isBid,pool:e})}),p}async getAllMarketsOpenOrders(e,t){try{let r=await this.getPools(),i=new se;r.forEach(p=>{i.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::account_open_orders`,arguments:[i.object(p.pool_id),i.object(t)],typeArguments:[p.baseCoinType,p.quoteCoinType]})});let s=await this._sdk.fullClient.sendSimulationTransaction(i,e,!1);J(s,"Failed to get all markets open orders");let a=L.struct("VecSet",{constants:L.vector(L.U128)}),o=[];s.commandResults.forEach((p,f)=>{let m=a.parse(ie(p.returnValues?.[0])).constants;m.length>0&&m.forEach(y=>{o.push({pool:r[f],orderId:y})})});let u=await this.getOrderInfoList(o,e)||[],l=[];return o.forEach((p,f)=>{let m=this.decodeOrderId(BigInt(p.orderId)),y=u.find(k=>k.order_id===p.orderId)||{};l.push({...p,...y,price:m.price,isBid:m.isBid})}),l}catch(r){return console.log("\u{1F680} ~ DeepbookUtilsModule ~ getAllMarketsOpenOrders ~ error:",r),[]}}cancelOrders(e,t,r=new se){return e.forEach(i=>{r.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::cancel_order`,arguments:[r.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),r.object(t),r.object(i.poolInfo.address),r.pure.u128(i.orderId),r.object(ot)],typeArguments:[i.poolInfo.baseCoin.coinType,i.poolInfo.quoteCoin.coinType]})}),r}async getDeepbookOrderBook(e,t,r,i,s,a){let o=this._sdk.fullClient,l=await new al({client:o,address:s,network:"testnet",balanceManagers:{test1:{address:a,tradeCap:""}}}).getLevel2Range(e,t,r,i)}processOrderBookData(e,t,r,i){let s=L.vector(L.u64()).parse(ie(e.returnValues?.[0])),a=L.vector(L.u64()).parse(ie(e.returnValues?.[1])),o={};return s.forEach((l,p)=>{let f=S(l).div(Math.pow(10,9+r.decimals-t.decimals)).toString(),m=S(a[p]).div(Math.pow(10,t.decimals)).toString();o[f]?o[f]={price:f,quantity:S(o[f].quantity).add(m).toString()}:o[f]={price:f,quantity:m}}),Object.values(o)}getLevel2RangeTx(e,t,r,i,s=new se){let{baseCoin:a,quoteCoin:o}=e,u=Cr(S(r).mul(Math.pow(10,9+o.decimals-a.decimals)).toString(),0),l=Cr(S(i).mul(Math.pow(10,9+o.decimals-a.decimals)).toString(),0);return s.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_level2_range`,arguments:[s.object(e.address),s.pure.u64(u),s.pure.u64(l),s.pure.bool(t),s.object(ot)],typeArguments:[a.coinType,o.coinType]}),s}async fetchOrderBook(e,t,r,i,s,a){let o=new se,{baseCoin:u,quoteCoin:l}=e;try{if(t==="bid"||t==="all"){let k=i,T=r==="0"?s:r;o=this.getLevel2RangeTx(e,!0,k,T,o)}if(t==="ask"||t==="all"){let k=r==="0"?i:r,T=s;o=this.getLevel2RangeTx(e,!1,k,T,o)}let p=this._sdk.sdkOptions.simulationAccount.address,f=await this._sdk.fullClient.sendSimulationTransaction(o,p,!1);J(f,"Failed to fetch order book");let m=[];(t==="bid"||t==="all")&&(m=f.commandResults?.[0]?this.processOrderBookData(f.commandResults[0],u,l,a):[]);let y=[];if(t==="ask"||t==="all"){let k=t==="ask"?0:1;y=f.commandResults?.[k]?this.processOrderBookData(f.commandResults[k],u,l,a):[]}return{bid:m.sort((k,T)=>T.price-k.price),ask:y.sort((k,T)=>k.price-T.price)}}catch{let f=this._sdk.sdkOptions.simulationAccount.address,m=[],y=[];try{let k=this.getLevel2RangeTx(e,!0,i,r),T=await this._sdk.fullClient.sendSimulationTransaction(k,f,!1);J(T,"Failed to fetch bid order book"),m=T.commandResults?.[0]?this.processOrderBookData(T.commandResults[0],u,l,a):[]}catch{m=[]}try{let k=this.getLevel2RangeTx(e,!1,i,r),T=await this._sdk.fullClient.sendSimulationTransaction(k,f,!1);J(T,"Failed to fetch ask order book"),y=T.commandResults?.[0]?this.processOrderBookData(T.commandResults[0],u,l,a):[]}catch{y=[]}return{bid:m,ask:y}}}async getOrderBook(e,t,r){let i={bid:[],ask:[]};try{let s=await this.getMarketPrice(e),a=t,o=Math.pow(10,-r),u=Math.pow(10,r),l=await this.fetchOrderBook(e,a,s,o,u,r);return{bid:l?.bid,ask:l?.ask}}catch{return i}}async getOrderBookOrigin(e,t){try{let r=new se,i=await this.getMarketPrice(e),{baseCoin:s,quoteCoin:a}=e;if(t==="bid"||t==="all"){let f=Math.pow(10,-6),m=i,y=S(f).mul(Math.pow(10,9+a.decimals-s.decimals)).toString(),k=S(m).mul(Math.pow(10,9+a.decimals-s.decimals)).toString();r.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_level2_range`,arguments:[r.object(e.address),r.pure.u64(y),r.pure.u64(k),r.pure.bool(!0),r.object(ot)],typeArguments:[s.coinType,a.coinType]})}if(t==="ask"||t==="all"){let f=i,m=Math.pow(10,6),y=S(f).mul(Math.pow(10,9+a.decimals-s.decimals)).toString(),k=S(m).mul(Math.pow(10,9+a.decimals-s.decimals)).toString();r.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_level2_range`,arguments:[r.object(e.address),r.pure.u64(y),r.pure.u64(k),r.pure.bool(!1),r.object(ot)],typeArguments:[s.coinType,a.coinType]})}let o=this._sdk.sdkOptions.simulationAccount.address,u=await this._sdk.fullClient.sendSimulationTransaction(r,o,!1);J(u,"Failed to get order book origin");let l=[];if(t==="bid"||t==="all"){let f=L.vector(L.u64()).parse(ie(u.commandResults[0]?.returnValues?.[0])),m=L.vector(L.u64()).parse(ie(u.commandResults[0]?.returnValues?.[1]));f.forEach((y,k)=>{let T=S(y).div(Math.pow(10,9+a.decimals-s.decimals)).toString(),A=S(m[k]).div(Math.pow(10,s.decimals)).toString();l.push({price:T,quantity:A})})}let p=[];if(t==="ask"||t==="all"){let f=t==="ask"?0:1,m=L.vector(L.u64()).parse(ie(u.commandResults[f]?.returnValues?.[0])),y=L.vector(L.u64()).parse(ie(u.commandResults[f]?.returnValues?.[1]));m.forEach((k,T)=>{let A=S(k).div(Math.pow(10,9+a.decimals-s.decimals)).toString(),E=S(y[T]).div(Math.pow(10,s.decimals)).toString();p.push({price:A,quantity:E})})}return{bid:l,ask:p}}catch{return{bids:[],asks:[]}}}async getWalletBalance(e){let t=await this._sdk.fullClient?.getOwnerCoinBalances(e);return console.log("\u{1F680} ~ DeepbookUtilsModule ~ getWalletBalance ~ result:",t),Object.fromEntries(t.map((i,s)=>[Ot(i.coinType),{coinType:i.coinType,totalBalance:i.balance,coinBalance:i.coinBalance,addressBalance:i.addressBalance}]))}async getAccount(e,t,r=new se){for(let a=0;a<t.length;a++){let o=t[a];r.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::order_trader::get_account_id`,arguments:[r.object(o.address),typeof e=="string"?r.object(e):e],typeArguments:[o.baseCoin.coinType,o.quoteCoin.coinType]})}let i=await this._sdk.fullClient.sendSimulationTransaction(r,this._sdk.senderAddress);if(J(i,"Failed to get account state"),i?.Transaction?.events?.length===0)return null;let s=[];return i?.Transaction?.events?.forEach((a,o)=>{let u=a?.bcs,l=Pa.parse(u),p=l.open_orders,f=l.owed_balances,m=l.settled_balances,y=l.unclaimed_rebates,k=l.taker_volume;s.push({balance_manager_id:e,open_orders:p,owed_balances:f,settled_balances:m,unclaimed_rebates:y,taker_volume:k,poolInfo:t[o]})}),s}async getSuiTransactionResponse(e,t=!1){let r=`${e}_getSuiTransactionResponse`,i=this.getCache(r,t);if(i!==void 0)return i;let s;try{s=await this._sdk.fullClient.getTransaction({digest:e,include:{events:!0,effects:!0,balanceChanges:!0,showInput:!0,showObjectChanges:!0}})}catch{s=await this._sdk.fullClient.getTransaction({digest:e,include:{events:!0,effects:!0}})}return this.updateCache(r,s,864e5),s}transformExtensions(e,t,r=!0){let i=[];for(let s of t){let{key:a}=s.fields,{value:o}=s.fields;if(a==="labels")try{o=JSON.parse(decodeURIComponent(cl.decode(o)))}catch{}r&&(e[a]=o),i.push({key:a,value:o})}delete e.extension_fields,r||(e.extensions=i)}async getCoinConfigs(e=!1,t=!0){let r=this.sdk.sdkOptions.coinlist.handle,i=`${r}_getCoinConfigs`,s=this.getCache(i,e);if(s)return s;let o=(await this._sdk.fullClient.getDynamicFieldsByPage(r)).data.map(p=>p.objectId),u=await this._sdk.fullClient.batchGetObjects(o,{json:!0}),l=[];return u.forEach(p=>{let f=this.buildCoinConfig(p,t);this.updateCache(`${r}_${f.address}_getCoinConfig`,f,864e5),l.push({...f})}),this.updateCache(i,l,864e5),l}buildCoinConfig(e,t=!0){let r=xa(e);r=r.value.fields;let i={...r};return i.id=ja(e),i.address=nr(r.coin_type.fields.name).full_address,r.pyth_id&&(i.pyth_id=ol(r.pyth_id)),this.transformExtensions(i,r.extension_fields.fields.contents,t),delete i.coin_type,i}updateCache(e,t,r=3e5){let i=this._cache[e];i?(i.overdueTime=Bi(r),i.value=t):i=new En(t,Bi(r)),this._cache[e]=i}getCache(e,t=!1){let r=this._cache[e],i=r?.isValid();if(!t&&i)return r.value;i||delete this._cache[e]}async createPermissionlessPool({tickSize:e,lotSize:t,minSize:r,baseCoinType:i,quoteCoinType:s}){let a=new se,o=rt.buildCoinWithBalance(BigInt(500*10**6),"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",a);a.moveCall({target:`${this.sdk.sdkOptions.deepbook.published_at}::pool::create_permissionless_pool`,typeArguments:[i,s],arguments:[a.object(this.sdk.sdkOptions.deepbook.registry_id),a.pure.u64(e),a.pure.u64(t),a.pure.u64(r),o]});try{let u=await this._sdk.fullClient.sendSimulationTransaction(a,this.sdk.senderAddress);if(u.$kind==="FailedTransaction"){let l=ut(u);throw l.includes('Some("register_pool") }, 1)')?new Error("Pool already exists"):new Error(`Failed to create pool: ${l}`)}return a}catch(u){throw u instanceof Error?u:new Error(String(u))}}newWithCustomOwnerCaps({owner:e,appType:t}){let r=new se,i=t||`${this._sdk.sdkOptions.deepbook.margin_package_id}::margin_manager::MarginApp`,[s,a,o,u]=r.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new_with_custom_owner_caps`,arguments:[r.object(this._sdk.sdkOptions.deepbook.registry_id),r.pure.address(e)],typeArguments:[i]});return r.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::cetus_balance_manager::check_and_add_deepbook_balance_manager_indexer`,arguments:[r.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),s],typeArguments:[]}),r.moveCall({target:"0x2::transfer::public_share_object",arguments:[s],typeArguments:[`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::BalanceManager`]}),r.transferObjects([a,o,u],e),r}};import{bcs as P}from"@mysten/sui/bcs";import{Transaction as W}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as me,normalizeSuiAddress as In}from"@mysten/sui/utils";var xn="0x0000000000000000000000000000000000000000000000000000000000000006",_p="pool_script",yp="pool_script_v2",bp="router",wp="router_with_partner",vp="fetcher_script",kp="expect_swap",Cp="utils",Tp="0x1::coin::CoinInfo",Sp="0x1::coin::CoinStore",Mp="custodian_v2",Ap="clob_v2",Op="endpoints_v2",Ep=n=>{if(typeof n=="string"&&n.startsWith("0x"))return"object";if(typeof n=="number"||typeof n=="bigint")return"u64";if(typeof n=="boolean")return"bool";throw new Error(`Unknown type for value: ${n}`)},jp=["https://rpc-mainnet.suiscan.xyz:443","https://cetus-mainnet-endpoint.blockvision.org","https://cetus-suimain-e31f.mainnet.sui.rpcpool.com"];import Ba from"decimal.js";Ba.config({precision:64,rounding:Ba.ROUND_DOWN,toExpNeg:-64,toExpPos:64});var qp=({totalAssetsValue:n,totalDebtValue:e})=>S(e).eq(0)||S(n).eq(0)?"0":S(n).div(S(e)).toString(),Da=n=>{let{base_margin_pool_id:e,quote_margin_pool_id:t,enabled:r,pool_liquidation_reward:i,user_liquidation_reward:s}=n.value.fields,{liquidation_risk_ratio:a,min_borrow_risk_ratio:o,min_withdraw_risk_ratio:u,target_liquidation_risk_ratio:l}=n.value.fields.risk_ratios.fields;return{id:n.id.id,name:n.name,base_margin_pool_id:e,quote_margin_pool_id:t,enabled:r,pool_liquidation_reward:i,user_liquidation_reward:s,liquidation_risk_ratio:a,min_borrow_risk_ratio:o,min_withdraw_risk_ratio:u,target_liquidation_risk_ratio:l}},$a=(n,e)=>{let{deposit_coin_type:t}=e,r=n.id,{max_utilization_rate:i,min_borrow:s,protocol_spread:a,supply_cap:o}=n.config.margin_pool_config,{maintainer_fees:u,protocol_fees:l}=n.protocol_fees,{total_supply:p,total_borrow:f}=n.state,m=S(o).sub(p).toString();return{deposit_coin_type:t,id:r,supply_cap:o,total_supply:p,total_borrow:f,available_supply:m,max_utilization_rate:i,min_borrow:s,protocol_spread:a,maintainer_fees:u,protocol_fees:l}};var Dt=1000000000n,dl=365n*24n*60n*60n*1000n;function hl(n,e){return e===0n?0n:n*Dt/e}function pl(n,e){let{base_rate:t,base_slope:r,optimal_utilization:i,excess_slope:s}=e;if(n<i)return t+n*r/Dt;{let a=n-i,o=i*r/Dt,u=a*s/Dt;return t+o+u}}function Na(n,e){let t=n*e,r=t/Dt;return t%Dt>0n?r+1n:r}function ml(n,e,t,r){let i=e.borrow_shares===0n?Dt:e.total_borrow*Dt/e.borrow_shares,s=Na(n,i),a=hl(e.total_borrow,e.total_supply),o=pl(a,t),u=r-e.last_update_timestamp,l=e.total_borrow*o/Dt*u/dl,p=e.borrow_shares===0n?0n:Na(l,n*Dt/e.borrow_shares),f=s+p;return{confirmedDebt:s,estimatedInterest:p,totalDebt:f,annualInterestRate:o}}function Dp(n,e,t,r,i=60000n){let s=r+i,{totalDebt:a}=ml(n,e,t,s);return a}var $i=10n;function fl(n,e){if(!$i)throw new Error("oraclePriceMultiplierDecimal is required");if(n===0n)throw new Error("Invalid oracle price");if(e<0n){let t=10n**($i- -e);return n*t}return n/10n**(e+$i)}var Vr=class{_sdk;hasChangeConnection=!1;_commonPythPrice;_cache={};constructor(e){this._sdk=e;let{pyth_state_id:t,wormhole_state_id:r}=e.sdkOptions.margin_utils;this._commonPythPrice=new la(e.fullClient,this._sdk.sdkOptions.pythEndpoints,{pyth_state_id:t,wormhole_state_id:r})}get sdk(){return this._sdk}async updatePythPriceIDs(e,t){let r=null,i=null;try{r=await this._commonPythPrice.getPriceFeedsUpdateData(e)}catch(o){i=o,console.log("Error: ",o)}if(r==null)throw new Error(`All Pyth price nodes are unavailable. Cannot fetch price data. Please switch to or add new available Pyth nodes. Detailed error: ${i?.message}`);let s=[];try{s=await this._commonPythPrice.updatePriceFeeds(t,r,e)}catch(o){throw new Error(`All Pyth price nodes are unavailable. Cannot fetch price data. Please switch to or add new available Pyth nodes in the pythUrls parameter when initializing AggregatorClient, for example: new AggregatorClient({ pythUrls: ["https://your-pyth-node-url"] }). Detailed error: ${o}`)}let a=new Map;for(let o=0;o<e.length;o++)a.set(e[o],s[o]);return a}priceCheck(e,t=60){let r=Math.floor(Date.now()/1e3);if(!(Math.abs(r-e.last_update_time)>t))return e}async getLatestPrice(e,t=!1){let r={},i=[];if(t?e.forEach(o=>{let u=this._sdk.fullClient.getCache(`getLatestPrice_${o.coinType}`);u&&this.priceCheck(u,60)?r[o.coinType]=u:i.push(o.coinType)}):i=e.map(o=>o.coinType),i.length===0)return r;let s=e.map(o=>o.feed);return(await this._commonPythPrice.getLatestPriceFeeds(s))?.parsed?.forEach((o,u)=>{let l=o.price;if(l){let{price:p,expo:f}=l,m=S(p).mul(S(10).pow(S(f))).toString(),k={coin_type:e[u].coinType,price:m,oracle_price:0n,last_update_time:l.publish_time};k.oracle_price=fl(BigInt(p),BigInt(f)),r[i[u]]=k,this._sdk.fullClient.updateCache(`getLatestPrice_${k.coin_type}`,k)}}),r}};var Pn=class{_sdk;pythPrice;_deep;_cache={};constructor(e){if(!e)throw new Error("SDK instance is required");this._sdk=e,this.pythPrice=new Vr(e),this._deep=e.sdkOptions.network==="mainnet"?Aa:Ma}get sdk(){return this._sdk}get deepCoin(){return this._deep}createAndShareMarginManager(e,t=new W){if(!e)throw new Error("Pool info is required");if(!e.id)throw new Error("Pool ID is required");if(!e.baseCoin?.coinType||!e.quoteCoin?.coinType)throw new Error("Base and quote coin types are required");let{baseCoin:r,quoteCoin:i}=e;try{let{margin_manager:s,initializer:a}=this.createMarginManager(e,t);return this.shareMarginManager({marginManager:s,initializer:a,baseCoin:r,quoteCoin:i},t),{tx:t,margin_manager:s,initializer:a}}catch(s){throw new Error(`Failed to create and share margin manager: ${s instanceof Error?s.message:String(s)}`)}}createMarginManager(e,t=new W){if(!e)throw new Error("Pool info is required");if(!e.id)throw new Error("Pool ID is required");let{id:r,baseCoin:i,quoteCoin:s}=e;try{let[a,o]=t.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::create_margin_manager`,arguments:[t.object(this.sdk.sdkOptions.margin_utils.versioned_id),t.object(r),t.object(this._sdk.sdkOptions.margin_utils.registry_id),t.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),t.object(me)],typeArguments:[i.coinType,s.coinType]});return{tx:t,margin_manager:a,initializer:o}}catch(a){throw new Error(`Failed to create margin manager: ${a instanceof Error?a.message:String(a)}`)}}shareMarginManager({marginManager:e,initializer:t,baseCoin:r,quoteCoin:i},s=new W){try{return s.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::share_margin_manager`,arguments:[e,t],typeArguments:[r.coinType,i.coinType]}),s}catch(a){throw new Error(`Failed to share margin manager: ${a instanceof Error?a.message:String(a)}`)}}async getMarginManagerByAccount(e){if(!e||typeof e!="string")throw new Error("Valid account address is required");try{let i=((await this.sdk.fullClient.queryEventsByGraphQL({MoveEventType:`${this._sdk.sdkOptions.margin_utils.package_id}::margin_utils::CreateMarginManagerEvent`},"all"))?.data??[]).filter(f=>f.parsedJson?.owner===e);if(!i.length)return[];let s=i.map(f=>f.parsedJson?.margin_manager_id),o=(await this.sdk.fullClient.batchGetObjects(s,{json:!0})).map((f,m)=>{let y=f.json,T=(y?.balance_manager?.allow_listed?.contents).map(E=>E),A=T.includes(y?.deposit_cap?.id)&&T.includes(y?.withdraw_cap?.id)&&T.includes(y?.trade_cap?.id);return{balanceManagerId:y?.balance_manager?.id,marginManagerId:s[m],capOk:A}}),u=await Promise.all(o.map(({balanceManagerId:f})=>this.sdk.fullClient.listDynamicFields({parentId:f}))),l=new Map;return u.forEach((f,m)=>{let y=f?.dynamicFields??[];if(y.length>0){let k=P.struct("ReferralKey",{pos0:P.Address}).parse(y[0].name.bcs);l.set(o[m].marginManagerId,k.pos0)}}),{finalResult:i.map(f=>{let m=f.parsedJson?.margin_manager_id;return{...f.parsedJson,referralKey:l.get(m)}}),referralMap:l}}catch(t){throw new Error(`Failed to get margin managers by account: ${t instanceof Error?t.message:String(t)}`)}}async getBaseBalance({account:e,marginManager:t,baseCoinType:r,quoteCoinType:i}){if(!e||!t||!r||!i)throw new Error("All parameters (account, marginManager, baseCoinType, quoteCoinType) are required");let s=new W;try{s.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::base_balance`,arguments:[s.object(t)],typeArguments:[r,i]});let a=await this.sdk.fullClient.sendSimulationTransaction(s,e);if(J(a,"Failed to get available withdraw amount"),!a.commandResults||!a.commandResults[0]||!a.commandResults[0].returnValues||!a.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(a)}`);return P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[0].bcs)).toString()}catch(a){throw new Error(`Failed to get base balance: ${a instanceof Error?a.message:String(a)}`)}}async getQuoteBalance({account:e,marginManager:t,baseCoinType:r,quoteCoinType:i}){if(!e||!t||!r||!i)throw new Error("All parameters (account, marginManager, baseCoinType, quoteCoinType) are required");let s=new W;try{s.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::quote_balance`,arguments:[s.object(t)],typeArguments:[r,i]});let a=await this.sdk.fullClient.sendSimulationTransaction(s,e);if(J(a,"Failed to get available borrow amount"),!a.commandResults||!a.commandResults[0]||!a.commandResults[0].returnValues||!a.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(a)}`);return P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[0].bcs)).toString()}catch(a){throw new Error(`Failed to get quote balance: ${a instanceof Error?a.message:String(a)}`)}}async getDeepBalance({account:e,marginManager:t,baseCoinType:r,quoteCoinType:i}){if(!e||!t||!r||!i)throw new Error("All parameters (account, marginManager, baseCoinType, quoteCoinType) are required");let s=new W;try{s.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::deep_balance`,arguments:[s.object(t)],typeArguments:[r,i]});let a=await this.sdk.fullClient.sendSimulationTransaction(s,e);if(J(a,"Failed to get repay amount"),!a.commandResults||!a.commandResults[0]||!a.commandResults[0].returnValues||!a.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(a)}`);return P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[0].bcs)).toString()}catch(a){throw new Error(`Failed to get base balance: ${a instanceof Error?a.message:String(a)}`)}}async getPoolMarginManagerBalance({account:e,marginManager:t,baseCoinType:r,quoteCoinType:i}){if(!e||!t||!r||!i)throw new Error("All parameters (account, marginManagers, baseCoinType, quoteCoinType) are required");let s=new W,a=r===this.deepCoin.coinType,o=i===this.deepCoin.coinType,u=a||o;try{s.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::base_balance`,arguments:[s.object(t)],typeArguments:[r,i]}),s.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::quote_balance`,arguments:[s.object(t)],typeArguments:[r,i]}),u||s.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::deep_balance`,arguments:[s.object(t)],typeArguments:[r,i]});let l=await this.sdk.fullClient.sendSimulationTransaction(s,e);if(J(l,"Failed to get margin balance"),!l.commandResults||!l.commandResults[0]||!l.commandResults[0].returnValues||!l.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(l)}`);let p=P.U64.parse(new Uint8Array(l.commandResults[0].returnValues[0].bcs)),f=P.U64.parse(new Uint8Array(l.commandResults[1].returnValues[0].bcs)),m=u?a?p:f:P.U64.parse(new Uint8Array(l.commandResults[2].returnValues[0].bcs));return{[r]:p.toString(),[i]:f.toString(),[this.deepCoin.coinType]:m.toString()}}catch(l){throw new Error(`Failed to getPoolMarginManagerBalance: ${l instanceof Error?l.message:String(l)}`)}}async getBorrowedShares({account:e,marginManager:t,baseCoinType:r,quoteCoinType:i}){if(!e||!t||!r||!i)throw new Error("All parameters (account, marginManager, baseCoinType, quoteCoinType) are required");let s=new W;try{s.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::borrowed_shares`,arguments:[s.object(t)],typeArguments:[r,i]});let a=await this.sdk.fullClient.sendSimulationTransaction(s,e);if(J(a,"Failed to get borrowed shares"),!a.commandResults||!a.commandResults[0]||!a.commandResults[0].returnValues||a.commandResults[0].returnValues.length<2)throw new Error(`Transaction failed: ${ut(a)}`);let o=P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[0].bcs)),u=P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[1].bcs));return{baseBorrowedShare:o,quoteBorrowedShare:u}}catch(a){throw new Error(`Failed to get borrowed shares: ${a instanceof Error?a.message:String(a)}`)}}managerState=({account:e,marginManager:t,baseCoin:r,quoteCoin:i,pool:s,baseMarginPool:a,quoteMarginPool:o,decimals:u=6,basePriceFeedObjectId:l,quotePriceFeedObjectId:p})=>f=>{f.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager_upgraded::manager_state`,arguments:[f.object(t),f.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),f.object(l),f.object(p),f.object(s),f.object(a),f.object(o),f.object.clock()],typeArguments:[r.coinType,i.coinType]})};async getManagerState(e,t=new W){let{account:r,marginManager:i,baseCoin:s,quoteCoin:a,pool:o,baseMarginPool:u,quoteMarginPool:l,decimals:p=6}=e;if(!r||!i||!o||!u||!l)throw new Error("All required parameters must be provided");if(!s?.feed||!a?.feed)throw new Error("Base and quote coin feeds are required");if(!s.scalar||!a.scalar)throw new Error("Base and quote coin scalars are required");try{let f=await this.pythPrice.updatePythPriceIDs([s.feed,a.feed],t),m=f.get(s.feed),y=f.get(a.feed);if(!m||!y)throw new Error("Failed to get price feed object IDs");t.add(this.managerState({...e,basePriceFeedObjectId:m,quotePriceFeedObjectId:y}));let k=await this.sdk.fullClient.sendSimulationTransaction(t,r);if(J(k,"Failed to get margin manager state"),!k.commandResults||!k.commandResults[0]||!k.commandResults[0].returnValues||k.commandResults[0].returnValues.length<14)throw new Error(`Failed to get margin manager state: ${ut(k)}`);let T=In(P.Address.parse(new Uint8Array(k.commandResults[0].returnValues[0].bcs))),A=In(P.Address.parse(new Uint8Array(k.commandResults[0].returnValues[1].bcs))),E=Number(P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[2].bcs)))/1e9,q=this.#e(BigInt(P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[3].bcs))),s.scalar,p),x=this.#e(BigInt(P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[4].bcs))),a.scalar,p),U=this.#e(BigInt(P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[5].bcs))),s.scalar,p),ee=this.#e(BigInt(P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[6].bcs))),a.scalar,p),N=P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[7].bcs)),ce=Number(P.u8().parse(new Uint8Array(k.commandResults[0].returnValues[8].bcs))),ae=P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[9].bcs)),oe=Number(P.u8().parse(new Uint8Array(k.commandResults[0].returnValues[10].bcs))),we=BigInt(P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[11].bcs))),nt=BigInt(P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[12].bcs))),ft=BigInt(P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[13].bcs)));return{managerId:T,deepbookPoolId:A,riskRatio:E,baseAsset:q,quoteAsset:x,baseDebt:U,quoteDebt:ee,basePythPrice:N.toString(),basePythDecimals:ce,quotePythPrice:ae.toString(),quotePythDecimals:oe,currentPrice:we,lowestTriggerAbovePrice:nt,highestTriggerBelowPrice:ft}}catch(f){throw new Error(`Failed to get manager state: ${f instanceof Error?f.message:String(f)}`)}}async detectPriceBoundary({account:e,marginManager:t,baseCoin:r,quoteCoin:i,pool:s,baseMarginPool:a,quoteMarginPool:o,price:u,is_bid:l,decimals:p=6}){if(!e||!t||!s||!a||!o)throw new Error("All required parameters must be provided");if(!r?.feed||!i?.feed)throw new Error("Base and quote coin feeds are required");if(!r.scalar||!i.scalar)throw new Error("Base and quote coin scalars are required");let f=typeof u=="bigint"?u:BigInt(u),m=await this.getManagerState({account:e,marginManager:t,baseCoin:r,quoteCoin:i,pool:s,baseMarginPool:a,quoteMarginPool:o,decimals:p},new W),y=m.highestTriggerBelowPrice,k=m.lowestTriggerAbovePrice,T=l?f<=k:f>=y;return{is_bid:l,price:f,lower_bound:y,upper_bound:k,is_within:T,is_boundary:l?f===k:f===y}}async calculateAssets({account:e,marginManager:t,pool:r,baseCoin:i,quoteCoin:s,tx:a=new W}){if(!e||!t||!r)throw new Error("Account, marginManager, and pool are required");if(!i?.coinType||!s?.coinType)throw new Error("Base and quote coin types are required");try{a.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_package_id}::margin_manager::calculate_assets`,arguments:[a.object(t),a.object(r)],typeArguments:[i.coinType,s.coinType]});let o=await this.sdk.fullClient.sendSimulationTransaction(a,e);if(J(o,"Failed to get borrowed amounts"),!o.commandResults||!o.commandResults[0]||!o.commandResults[0].returnValues||o.commandResults[0].returnValues.length<2)throw new Error(`Transaction failed: ${ut(o)}`);let u=o.commandResults[0].returnValues[0].bcs,l=o.commandResults[0].returnValues[1].bcs;if(!i.scalar||!s.scalar)throw new Error("Base and quote coin scalars are required");let p=P.U64.parse(new Uint8Array(u)),f=P.U64.parse(new Uint8Array(l));return{baseAsset:p.toString(),quoteAsset:f.toString(),tx:a}}catch(o){throw new Error(`Failed to calculate assets: ${o instanceof Error?o.message:String(o)}`)}}async getBorrowedAmount({account:e,marginManager:t,baseCoinType:r,quoteCoinType:i,baseMarginPool:s,quoteMarginPool:a}){if(!e||!t||!r||!i||!s||!a)throw new Error("All parameters are required");try{let{baseBorrowedShare:o,quoteBorrowedShare:u}=await this.getBorrowedShares({account:e,marginManager:t,baseCoinType:r,quoteCoinType:i}),l=!!S(o).gt(S(u)),p=l?s:a,f=l?o:u,m=new W;m.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_package_id}::margin_pool::borrow_shares_to_amount`,arguments:[m.object(p),m.pure.u64(BigInt(f)),m.object.clock()],typeArguments:[l?r:i]});let y=await this.sdk.fullClient.simulateTransaction({transaction:m,checksEnabled:!1,include:{commandResults:!0}});J(y,"Failed to get borrowed amount");let k=P.U64.parse(y?.commandResults?.[0]?.returnValues?.[0]?.bcs);return l?{baseBorrowedAmount:k.toString(),quoteBorrowedAmount:"0"}:{baseBorrowedAmount:"0",quoteBorrowedAmount:k.toString()}}catch(o){throw new Error(`Failed to get borrowed amount: ${o instanceof Error?o.message:String(o)}`)}}async deposit({marginManager:e,baseCoin:t,quoteCoin:r,amount:i,depositCoinType:s},a=new W){if(!e)throw new Error("Margin manager is required");if(!t?.coinType||!r?.coinType)throw new Error("Base and quote coin types are required");if(!i||BigInt(i)<=0n)throw new Error("Valid deposit amount is required");if(!t.feed||!r.feed)throw new Error("Base and quote coin feeds are required");try{let o=rt.buildCoinWithBalance(BigInt(i),s,a),u=await this.pythPrice.updatePythPriceIDs([t.feed,r.feed],a),l=u.get(t.feed),p=u.get(r.feed);if(!l||!p)throw new Error("Failed to get price feed object IDs");return a.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::deposit_pyth_upgraded`,arguments:[a.object(this._sdk.sdkOptions.margin_utils.global_config_id),a.object(this._sdk.sdkOptions.margin_utils.versioned_id),typeof e=="string"?a.object(e):e,a.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),a.object(l),a.object(p),o,a.object(me)],typeArguments:[t.coinType,r.coinType,s]}),a}catch(o){throw new Error(`Failed to deposit: ${o instanceof Error?o.message:String(o)}`)}}async withdraw({account:e,marginManager:t,baseMarginPool:r,quoteMarginPool:i,baseCoin:s,quoteCoin:a,pool:o,amount:u,withdrawCoinType:l},p=new W){if(!e||!t||!r||!i||!o)throw new Error("All required parameters must be provided");if(!s?.coinType||!a?.coinType)throw new Error("Base and quote coin types are required");if(!u||BigInt(u)<=0n)throw new Error("Valid withdraw amount is required");if(!s.feed||!a.feed)throw new Error("Base and quote coin feeds are required");try{let f=await this.pythPrice.updatePythPriceIDs([s.feed,a.feed],p),m=f.get(s.feed),y=f.get(a.feed);if(!m||!y)throw new Error("Failed to get price feed object IDs");let k=p.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::withdraw_pyth_upgraded`,arguments:[p.object(this._sdk.sdkOptions.margin_utils.global_config_id),p.object(this._sdk.sdkOptions.margin_utils.versioned_id),p.object(t),p.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),p.object(r),p.object(i),p.object(m),p.object(y),p.object(o),p.pure.u64(BigInt(u)),p.object(me)],typeArguments:[s.coinType,a.coinType,l]});if(rt.isSuiCoin(l))p.transferObjects([k],e);else{let T=await this._sdk.fullClient.getOwnerCoinAssets(e,l),A=rt.buildCoinForAmount(p,T,BigInt(0),l,!1);A.target_coin?(p.mergeCoins(A.target_coin,[k]),A.is_mint_zero_coin&&p.transferObjects([A.target_coin],e)):p.transferObjects([k],e)}return p}catch(f){throw new Error(`Failed to withdraw: ${f instanceof Error?f.message:String(f)}`)}}async borrowBase({marginManager:e,baseMarginPool:t,baseCoin:r,quoteCoin:i,pool:s,amount:a},o=new W){if(!e||!t||!s)throw new Error("Margin manager, base margin pool, and pool are required");if(!r?.coinType||!i?.coinType)throw new Error("Base and quote coin types are required");if(!a||BigInt(a)<=0n)throw new Error("Valid borrow amount is required");if(!r.feed||!i.feed)throw new Error("Base and quote coin feeds are required");try{let u=await this.pythPrice.updatePythPriceIDs([r.feed,i.feed],o),l=u.get(r.feed),p=u.get(i.feed);if(!l||!p)throw new Error("Failed to get price feed object IDs");return o.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::borrow_base_pyth_upgraded`,arguments:[o.object(this.sdk.sdkOptions.margin_utils.global_config_id),o.object(this.sdk.sdkOptions.margin_utils.versioned_id),o.object(e),o.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),o.object(t),o.object(l),o.object(p),o.object(s),o.pure.u64(BigInt(a)),o.object(me)],typeArguments:[r.coinType,i.coinType]}),o}catch(u){throw new Error(`Failed to borrow base: ${u instanceof Error?u.message:String(u)}`)}}async borrowQuote({marginManager:e,quoteMarginPool:t,baseCoin:r,quoteCoin:i,pool:s,amount:a},o=new W){if(!e||!t||!s)throw new Error("Margin manager, quote margin pool, and pool are required");if(!r?.coinType||!i?.coinType)throw new Error("Base and quote coin types are required");if(!a||BigInt(a)<=0n)throw new Error("Valid borrow amount is required");if(!r.feed||!i.feed)throw new Error("Base and quote coin feeds are required");try{let u=await this.pythPrice.updatePythPriceIDs([r.feed,i.feed],o),l=u.get(r.feed),p=u.get(i.feed);if(!l||!p)throw new Error("Failed to get price feed object IDs");return o.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::borrow_quote_pyth_upgraded`,arguments:[o.object(this.sdk.sdkOptions.margin_utils.global_config_id),o.object(this.sdk.sdkOptions.margin_utils.versioned_id),typeof e=="string"?o.object(e):e,o.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),o.object(t),o.object(l),o.object(p),o.object(s),o.pure.u64(BigInt(a)),o.object(me)],typeArguments:[r.coinType,i.coinType]}),o}catch(u){throw new Error(`Failed to borrow quote: ${u instanceof Error?u.message:String(u)}`)}}async repayBase({marginManager:e,baseMarginPool:t,baseCoin:r,quoteCoin:i,amount:s},a=new W){if(!e||!t||!r||!i)throw new Error("All required parameters (marginManager, baseMarginPool, baseCoin, quoteCoin) are required");if(s&&BigInt(s)<=0n)throw new Error("Repay amount must be greater than zero if provided");let o={marginManager:e,baseCoin:r,quoteCoin:i,amount:s,depositCoinType:r.coinType};await this.deposit(o,a);try{return a.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::repay_base`,arguments:[a.object(this._sdk.sdkOptions.margin_utils.global_config_id),a.object(this._sdk.sdkOptions.margin_utils.versioned_id),a.object(e),a.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),a.object(t),a.object.option({type:"u64",value:s?a.pure.u64(s):null}),a.object(me)],typeArguments:[r.coinType,i.coinType]}),a}catch(u){throw new Error(`Failed to repay base: ${u instanceof Error?u.message:String(u)}`)}}async repayQuote({marginManager:e,quoteMarginPool:t,baseCoin:r,quoteCoin:i,amount:s},a=new W){if(!e||!t||!r||!i)throw new Error("All required parameters (marginManager, quoteMarginPool, baseCoin, quoteCoin) are required");if(s&&BigInt(s)<=0n)throw new Error("Repay amount must be greater than zero if provided");let o={marginManager:e,baseCoin:r,quoteCoin:i,amount:s,depositCoinType:i.coinType};await this.deposit(o,a);try{return a.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::repay_quote`,arguments:[a.object(this._sdk.sdkOptions.margin_utils.global_config_id),a.object(this._sdk.sdkOptions.margin_utils.versioned_id),a.object(e),a.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),a.object(t),a.object.option({type:"u64",value:s?a.pure.u64(s):null}),a.object(me)],typeArguments:[r.coinType,i.coinType]}),a}catch(u){throw new Error(`Failed to repay quote: ${u instanceof Error?u.message:String(u)}`)}}async repay({marginManager:e,baseMarginPool:t,quoteMarginPool:r,baseCoin:i,quoteCoin:s,isBase:a,amount:o},u=new W){try{let l=this.sdk.senderAddress,p,f=o;o||(p=await this.getBorrowedAmount({account:l,marginManager:e,baseCoinType:i?.coinType,quoteCoinType:s?.coinType,baseMarginPool:t,quoteMarginPool:r}),f=a?p.baseBorrowedAmount:p.quoteBorrowedAmount);let m,y={marginManager:e,baseCoin:i,quoteCoin:s,depositCoinType:a?i.coinType:s.coinType};if(a){let k=await this.getBaseBalance({account:l,marginManager:e,baseCoinType:i?.coinType,quoteCoinType:s?.coinType});m=S(f).sub(k).toString()}else{let k=await this.getQuoteBalance({account:l,marginManager:e,baseCoinType:i?.coinType,quoteCoinType:s?.coinType});m=S(f).sub(k).toString()}S(m).gt(0)&&await this.deposit({...y,amount:m},u),u.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::${a?"repay_base":"repay_quote"}`,arguments:[u.object(this._sdk.sdkOptions.margin_utils.global_config_id),u.object(this._sdk.sdkOptions.margin_utils.versioned_id),u.object(e),u.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),u.object(a?t:r),u.object.option({type:"u64",value:o?u.pure.u64(o):null}),u.object(me)],typeArguments:[i.coinType,s.coinType]})}catch(l){console.log("\u{1F680} ~ MarginUtilsModule ~ repay ~ error:",l)}return u}removeReferralKey=(e,t,r,i,s=new W)=>{let a=s.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::id`,typeArguments:[r,i],arguments:[s.object(t)]});return s.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::unset_margin_manager_referral`,typeArguments:[r,i],arguments:[typeof e=="string"?s.object(e):e,a]})};async#t(e,t,r){if(!e.feed||!t.feed)throw new Error("Base and quote coin feeds are required");let i=await this.pythPrice.updatePythPriceIDs([e.feed,t.feed],r),s=i.get(e.feed),a=i.get(t.feed);if(!s||!a)throw new Error("Failed to get price feed object IDs");return{baseOracle:s,quoteOracle:a}}async placeMarginMarketOrder({marginManager:e,poolInfo:t,baseMarginPool:r,quoteMarginPool:i,selfMatchingOption:s,quantity:a,amountLimit:o,isBid:u,payWithDeep:l,exactBase:p,referralKey:f},m=new W){if(!e||!t)throw new Error("Margin manager and pool info are required");if(!t.id||!t.baseCoin?.coinType||!t.quoteCoin?.coinType)throw new Error("Pool info must contain valid id, baseCoin, and quoteCoin");if(!r||!i)throw new Error("Base and quote margin pool ids are required");if(!a||BigInt(ir(a,t.baseCoin.decimals||0))<=0n)throw new Error("Valid order quantity is required");if(!o||BigInt(ir(o,t.baseCoin.decimals||0))<=0n)throw new Error("Valid order amount limit is required");let{id:y,baseCoin:k,quoteCoin:T}=t;if(k.decimals===void 0||T.decimals===void 0)throw new Error("Base and quote coin decimals are required");f&&this.removeReferralKey(e,y,k.coinType,T.coinType,m);try{let{baseOracle:A,quoteOracle:E}=await this.#t(k,T,m);return m.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::place_margin_market_order_v2_pyth_upgraded`,arguments:[m.object(this.sdk.sdkOptions.margin_utils.global_config_id),m.object(this.sdk.sdkOptions.margin_utils.versioned_id),typeof e=="string"?m.object(e):e,m.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),m.object(y),m.object(r),m.object(i),m.object(A),m.object(E),m.pure.u8(s),m.pure.u64(a),m.pure.bool(u),m.pure.bool(l),m.pure.bool(p===void 0?!u:p),m.pure.u64(o),m.object(me)],typeArguments:[k.coinType,T.coinType]}),m}catch(A){throw new Error(`Failed to place market order: ${A instanceof Error?A.message:String(A)}`)}}async placeMarginLimitOrder({marginManager:e,poolInfo:t,baseMarginPool:r,quoteMarginPool:i,orderType:s,selfMatchingOption:a,priceInput:o,quantity:u,isBid:l,payWithDeep:p,expirationTimestamp:f=Date.now()+31536e8,referralKey:m},y=new W){if(!e||!t)throw new Error("Margin manager and pool info are required");if(!t.id||!t.baseCoin?.coinType||!t.quoteCoin?.coinType)throw new Error("Pool info must contain valid id, baseCoin, and quoteCoin");if(!r||!i)throw new Error("Base and quote margin pool ids are required");if(!o||!u)throw new Error("Price and quantity are required");let{id:k,baseCoin:T,quoteCoin:A}=t;if(T.decimals===void 0||A.decimals===void 0)throw new Error("Base and quote coin decimals are required");try{let E=BigInt(S(o).mul(10**(A.decimals-T.decimals+9)).toString()),q=BigInt(ir(u,T.decimals));if(E<=0n||q<=0n)throw new Error("Price and quantity must be greater than zero");m&&this.removeReferralKey(e,k,T.coinType,A.coinType,y);let{baseOracle:x,quoteOracle:U}=await this.#t(T,A,y);return y.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::place_margin_limit_order_v2_pyth_upgraded`,arguments:[y.object(this.sdk.sdkOptions.margin_utils.global_config_id),y.object(this.sdk.sdkOptions.margin_utils.versioned_id),y.object(e),y.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),y.object(k),y.object(r),y.object(i),y.object(x),y.object(U),y.pure.u8(s),y.pure.u8(a),y.pure.u64(E),y.pure.u64(q),y.pure.bool(l),y.pure.bool(p),y.pure.u64(f),y.object(me)],typeArguments:[T.coinType,A.coinType]}),y}catch(E){throw new Error(`Failed to place limit order: ${E instanceof Error?E.message:String(E)}`)}}modifyMarginOrder({marginManager:e,poolInfo:t,orderId:r,newQuantity:i},s=new W){if(!e||!t||!r||!i)throw new Error("All parameters (marginManager, poolInfo, orderId, newQuantity) are required");if(!t.id||!t.baseCoin?.coinType||!t.quoteCoin?.coinType)throw new Error("Pool info must contain valid id, baseCoin, and quoteCoin");if(t.baseCoin.decimals===void 0)throw new Error("Base coin decimals are required");try{let a=BigInt(ir(i,t.baseCoin.decimals));if(a<=0n)throw new Error("New quantity must be greater than zero");return s.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::modify_margin_order`,arguments:[s.object(this.sdk.sdkOptions.margin_utils.global_config_id),s.object(this.sdk.sdkOptions.margin_utils.versioned_id),s.object(e),s.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),s.object(t.id),s.pure.u128(r),s.pure.u64(a),s.object(me)],typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType]}),s}catch(a){throw new Error(`Failed to modify order: ${a instanceof Error?a.message:String(a)}`)}}cancelMarginOrder({marginManager:e,poolInfo:t,orderId:r},i=new W){if(!e||!t||!r)throw new Error("All parameters (marginManager, poolInfo, orderId) are required");if(!t.id||!t.baseCoin?.coinType||!t.quoteCoin?.coinType)throw new Error("Pool info must contain valid id, baseCoin, and quoteCoin");try{return i.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::cancel_margin_order`,arguments:[i.object(this.sdk.sdkOptions.margin_utils.global_config_id),i.object(this.sdk.sdkOptions.margin_utils.versioned_id),i.object(e),i.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),i.object(t.id),i.pure.u128(r),i.object(me)],typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType]}),i}catch(s){throw new Error(`Failed to cancel order: ${s instanceof Error?s.message:String(s)}`)}}cancelAllMarginOrders({marginManager:e,poolInfo:t},r=new W){if(!e||!t)throw new Error("Margin manager and pool info are required");if(!t.id||!t.baseCoin?.coinType||!t.quoteCoin?.coinType)throw new Error("Pool info must contain valid id, baseCoin, and quoteCoin");try{return r.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::cancel_all_margin_orders`,arguments:[r.object(this.sdk.sdkOptions.margin_utils.global_config_id),r.object(this.sdk.sdkOptions.margin_utils.versioned_id),r.object(e),r.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),r.object(t.id),r.object(me)],typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType]}),r}catch(i){throw new Error(`Failed to cancel all orders: ${i instanceof Error?i.message:String(i)}`)}}async placeReduceOnlyLimitOrder({marginManager:e,poolInfo:t,baseMarginPool:r,quoteMarginPool:i,orderType:s,selfMatchingOption:a,priceInput:o,quantity:u,isBid:l,payWithDeep:p,expirationTimestamp:f=Date.now()+31536e8},m=new W){if(!e||!t)throw new Error("Margin manager and pool info are required");if(!t.id||!t.baseCoin?.coinType||!t.quoteCoin?.coinType)throw new Error("Pool info must contain valid id, baseCoin, and quoteCoin");if(!r||!i)throw new Error("Base and quote margin pool ids are required");if(!o||!u)throw new Error("Price and quantity are required");let{baseCoin:y,quoteCoin:k}=t;if(y.decimals===void 0||k.decimals===void 0)throw new Error("Base and quote coin decimals are required");try{let T=BigInt(S(o).mul(10**(k.decimals-y.decimals+9)).toString()),A=BigInt(ir(u,y.decimals));if(T<=0n||A<=0n)throw new Error("Price and quantity must be greater than zero");let{baseOracle:E,quoteOracle:q}=await this.#t(y,k,m);return m.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::place_reduce_only_limit_order_v2_pyth_upgraded`,arguments:[m.object(this.sdk.sdkOptions.margin_utils.global_config_id),m.object(this.sdk.sdkOptions.margin_utils.versioned_id),m.object(e),m.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),m.object(t.id),m.object(r),m.object(i),m.object(E),m.object(q),m.pure.u8(s),m.pure.u8(a),m.pure.u64(T),m.pure.u64(A),m.pure.bool(l),m.pure.bool(p),m.pure.u64(f),m.object(me)],typeArguments:[y.coinType,k.coinType]}),m}catch(T){throw new Error(`Failed to place reduce only limit order: ${T instanceof Error?T.message:String(T)}`)}}async placeReduceOnlyMarketOrder({marginManager:e,poolInfo:t,baseMarginPool:r,quoteMarginPool:i,selfMatchingOption:s,quantity:a,amountLimit:o,isBid:u,payWithDeep:l},p=new W){if(!e||!t)throw new Error("Margin manager and pool info are required");if(!t.id||!t.baseCoin?.coinType||!t.quoteCoin?.coinType)throw new Error("Pool info must contain valid id, baseCoin, and quoteCoin");if(!r||!i)throw new Error("Base and quote margin pool ids are required");if(!a||BigInt(ir(a,t.baseCoin.decimals||0))<=0n)throw new Error("Valid order quantity is required");if(!o||BigInt(ir(o,t.baseCoin.decimals||0))<=0n)throw new Error("Valid order amount limit is required");let{baseCoin:f,quoteCoin:m}=t;if(f.decimals===void 0||m.decimals===void 0)throw new Error("Base and quote coin decimals are required");try{let{baseOracle:y,quoteOracle:k}=await this.#t(f,m,p);return p.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::place_reduce_only_market_order_v2_pyth_upgraded`,arguments:[p.object(this.sdk.sdkOptions.margin_utils.global_config_id),p.object(this.sdk.sdkOptions.margin_utils.versioned_id),p.object(e),p.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),p.object(t.id),p.object(r),p.object(i),p.object(y),p.object(k),p.pure.u8(s),p.pure.u64(a),p.pure.bool(u),p.pure.bool(l),p.pure.u64(o),p.object(me)],typeArguments:[f.coinType,m.coinType]}),p}catch(y){throw new Error(`Failed to place reduce only market order: ${y instanceof Error?y.message:String(y)}`)}}async getOpenOrder(e,t,r,i,s=!1,a=new W){let o;if(i)o=i;else{a.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::account_open_orders`,arguments:[a.object(e.address),s?r:a.object(r)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]}),t&&a.setSenderIfNotSet(t);let f=await this._sdk.fullClient.simulateTransaction({transaction:a,include:{commandResults:!0},checksEnabled:!1});J(f,"Failed to get margin open orders");let m=f.commandResults[s?1:0];o=P.struct("VecSet",{constants:P.vector(P.U128)}).parse(ie(m?.returnValues?.[0])).constants}if(o.length===0)return[];let u=o.map(f=>({pool:{pool_id:e.address,baseCoinType:e.baseCoin.coinType,quoteCoinType:e.quoteCoin.coinType},orderId:f})),l=await this.sdk.DeepbookUtils.getOrderInfoList(u,t)||[],p=[];return l.forEach(f=>{let m=this.sdk.DeepbookUtils.decodeOrderId(BigInt(f.order_id));p.push({...f,price:m.price,isBid:m.isBid,pool:e})}),p}async getAccountOpenOrders({poolInfo:e,marginManager:t}){try{let r=new W,i=r.moveCall({target:`${this.sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::balance_manager`,arguments:[r.object(t)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});return await this.getOpenOrder(e,this.sdk.senderAddress,i,void 0,!0,r)}catch(r){throw new Error(`Failed to get account open orders: ${r instanceof Error?r.message:String(r)}`)}}async getAccountAllMarketsOpenOrders(e,t){try{if(!e||!t||t.length===0)throw new Error("Account or pools are required");let r=[];for(let i=0;i<t.length;i++){let s=new W,a=t[i];if(a.margin_manager_id){let o=await s.moveCall({target:`${this.sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::balance_manager`,arguments:[s.object(a.margin_manager_id)],typeArguments:[a.baseCoin.coinType,a.quoteCoin.coinType]}),u=await this.getOpenOrder(a,this.sdk.senderAddress,o,void 0,!0,s);r.push(...u)}}return r}catch(r){throw new Error(`Failed to get account all markets open orders: ${r instanceof Error?r.message:String(r)}`)}}mintSupplierCap(e=new W,t){let r=e.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::mint_supplier_cap`,arguments:[e.object(this._sdk.sdkOptions.margin_utils.versioned_id),e.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),e.object(me)]});return t&&e.transferObjects([r],this.sdk.senderAddress),{tx:e,supplierCap:r}}async querySupplierCap(){try{return((await this.sdk.fullClient.queryEventsByGraphQL({MoveEventType:`${this._sdk.sdkOptions.margin_utils.package_id}::margin_utils::SupplierCapCreatedEvent`},"all"))?.data||[]).filter(i=>i.parsedJson?.owner===this.sdk.senderAddress)[0].parsedJson.supplier_cap_id}catch(e){throw new Error(`Failed to get account supplyCap: ${e instanceof Error?e.message:String(e)}`)}}mintSupplierCapAndSupply({marginPool:e,supplyCoinType:t,amount:r}){let i=new W,{supplierCap:s}=this.mintSupplierCap(i,!1);return this.supply({marginPool:e,supplierCap:s,supplyCoinType:t,amount:r,tx:i}),i.transferObjects([s],this.sdk.senderAddress),i}supply({marginPool:e,supplierCap:t,supplyCoinType:r,amount:i,tx:s}){let a=s??new W;if(!t)throw new Error("Either supplierCap must be provided");let o=rt.buildCoinWithBalance(BigInt(i),r,a);return a.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::supply`,typeArguments:[r],arguments:[a.object(this._sdk.sdkOptions.margin_utils.global_config_id),a.object(this._sdk.sdkOptions.margin_utils.versioned_id),a.object(e),a.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),a.object(t),o,a.pure.option("address","0x0"),a.object(me)]}),a}supplierWithdraw({marginPool:e,withdrawCoinType:t,amount:r,supplierCapId:i,hasSwap:s,withdrawAll:a,tx:o=new W}){let u=o.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::supplier_withdraw`,typeArguments:[t],arguments:[o.object(this._sdk.sdkOptions.margin_utils.global_config_id),o.object(this._sdk.sdkOptions.margin_utils.versioned_id),o.object(e),o.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),o.object(i),o.object.option({type:"u64",value:a?null:o.pure.u64(r)}),o.object(me)]});return s?u:(o.transferObjects([u],this.sdk.senderAddress),o)}withdrawReferralFees({marginPool:e}){let t=new W,r=t.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::withdraw_referral_fees`,arguments:[t.object(this._sdk.sdkOptions.margin_utils.versioned_id),t.object(e),t.object(this._sdk.sdkOptions.margin_utils.registry_id),t.object.option({type:"0x1",value:null}),t.object(me)],typeArguments:[this.deepCoin.coinType]});return t.transferObjects([r],this.sdk.senderAddress),t}async getUserSupplyAmount({marginPool:e,supplyCoin:t,supplierCapId:r}){let i=new W;i.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::get_user_supply_amount`,typeArguments:[t.coinType],arguments:[i.object(e),i.object(r),i.object(me)]});let s=await this.sdk.fullClient.sendSimulationTransaction(i,this.sdk.senderAddress);if(J(s,"Failed to get supply amount"),!s.commandResults||!s.commandResults[0]||!s.commandResults[0].returnValues||!s.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(s)}`);return this.#e(BigInt(P.U64.parse(new Uint8Array(s.commandResults[0].returnValues[0].bcs))),t.scalar,t.decimals)}async getDeepBookMarginRegistry(){let t=(await this.sdk.fullClient.getObject({objectId:this._sdk.sdkOptions.margin_utils.margin_registry_id,include:{json:!0}})).data.content.fields.inner.fields.id.id,r=await this.sdk.fullClient.getDynamicField({parentId:t,name:{type:"u64",bcs:P.u64().serialize(1).toBytes()}}),i=r.data.content.fields.value.fields.pool_registry.fields.id.id,s=r.data.content.fields.value.fields.margin_pools.fields.id.id;return{pool_registry_table_id:i,margin_pool_table_id:s}}async getDeepBookPool(){let{data:e}=await this.sdk.fullClient.listDynamicFields({parentId:this.sdk.sdkOptions.margin_utils.pool_registry_table_id}),t=e.map(s=>s.objectId),r=await this.sdk.fullClient.batchGetObjects(t,{json:!0}),i=[];for(let s=0;s<r.length;s++){let a=r[s].json;i.push(Da(a))}return i}async getDeepBookMarginPool(){let{data:e}=await this.sdk.fullClient.getDynamicFieldsByPage(this.sdk.sdkOptions.margin_utils.margin_pool_table_id),t=e.map(u=>u.fieldId),r=await this.sdk.fullClient.batchGetObjects(t,{json:!0}),i=[],s=[];for(let u=0;u<r.length;u++){let l=r[u].json;s.push(l.value),i.push({deposit_coin_type:l.name.name,id:l.id})}let a=await this.sdk.fullClient.batchGetObjects(s,{json:!0}),o=[];for(let u=0;u<a.length;u++){let l=a[u].json;o.push($a(l,i[u]))}return o}async getBaseQuantityIn(e,t,r,i=.01){let s=new W;s.moveCall({target:`${this.sdk.sdkOptions.deepbook.published_at}::pool::get_base_quantity_in`,typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType],arguments:[s.object(e.address),s.pure.u64(t),s.pure.bool(r),s.object(me)]});let a=await this.sdk.fullClient.sendSimulationTransaction(s,this.sdk.senderAddress);if(J(a,"Failed to get quantity in"),!a.commandResults||!a.commandResults[0]||!a.commandResults[0].returnValues||!a.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(a)}`);let o=P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[0].bcs)),u=P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[1].bcs)),l=P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[2].bcs));return{quantityOut:u.toString(),quantityInLeft:S(o.toString()).mul(S(1+i)).ceil().toString(),deep_fee_amount:l.toString()}}async getQuoteQuantityIn(e,t,r,i=.01){let s=new W;s.moveCall({target:`${this.sdk.sdkOptions.deepbook.published_at}::pool::get_quote_quantity_in`,typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType],arguments:[s.object(e.address),s.pure.u64(t),s.pure.bool(r),s.object(me)]});let a=await this.sdk.fullClient.sendSimulationTransaction(s,this.sdk.senderAddress);if(J(a,"Failed to get quantity out"),!a.commandResults||!a.commandResults[0]||!a.commandResults[0].returnValues||!a.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(a)}`);let o=P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[0].bcs)),u=P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[1].bcs)),l=P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[2].bcs));return{quantityOut:o.toString(),quantityInLeft:S(u.toString()).mul(S(1+i)).ceil().toString(),deep_fee_amount:l.toString()}}async getBaseQuantityOutInput(e,t,r){let i=new W;i.moveCall({target:`${this.sdk.sdkOptions.deepbook.published_at}${r?"::pool::get_base_quantity_out":"::pool::get_base_quantity_out_input_fee"}`,typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType],arguments:[i.object(e.address),i.pure.u64(t),i.object(me)]});let s=await this.sdk.fullClient.sendSimulationTransaction(i,this.sdk.senderAddress);if(J(s,"Failed to get base amount"),!s.commandResults||!s.commandResults[0]||!s.commandResults[0].returnValues||!s.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(s)}`);let a=P.U64.parse(new Uint8Array(s.commandResults[0].returnValues[0].bcs)),o=P.U64.parse(new Uint8Array(s.commandResults[0].returnValues[1].bcs)),u=P.U64.parse(new Uint8Array(s.commandResults[0].returnValues[2].bcs));return{base_amount:a.toString(),quote_amount:o.toString(),deep_fee_amount:u.toString()}}async getQuoteQuantityOutInput(e,t,r){let i=new W;i.moveCall({target:`${this.sdk.sdkOptions.deepbook.published_at}::pool::${r?"get_quote_quantity_out":"get_quote_quantity_out_input_fee"}`,typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType],arguments:[i.object(e.address),i.pure.u64(t),i.object(me)]});let s=await this.sdk.fullClient.sendSimulationTransaction(i,this.sdk.senderAddress);if(J(s,"Failed to get quote amount"),!s.commandResults||!s.commandResults[0]||!s.commandResults[0].returnValues||!s.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(s)}`);let a=P.U64.parse(new Uint8Array(s.commandResults[0].returnValues[0].bcs)),o=P.U64.parse(new Uint8Array(s.commandResults[0].returnValues[1].bcs)),u=P.U64.parse(new Uint8Array(s.commandResults[0].returnValues[2].bcs));return{base_amount:a.toString(),quote_amount:o.toString(),deep_fee_amount:u.toString()}}async getAccount(e,t,r=new W){let i=r.moveCall({target:`${this.sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::balance_manager`,arguments:[r.object(e)],typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType]}),s=[t];for(let p=0;p<s.length;p++){let f=s[p];r.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::order_trader::get_account_id`,arguments:[r.object(f.address),typeof i=="string"?r.object(i):i],typeArguments:[f.baseCoin.coinType,f.quoteCoin.coinType]})}let a=await this._sdk.fullClient.simulateTransaction({transaction:r,checksEnabled:!1,include:{events:!0}});if(a.$kind==="FailedTransaction")throw new Error(`Failed to get settled balances: ${ut(a)}`);let o=a.Transaction;if(!o?.events?.length)return null;let u,l=[];return o.events.forEach((p,f)=>{u=p?.json;let m=u.account.open_orders.contents,y=u.account.owed_balances,k=u.account.settled_balances,T=u.account.unclaimed_rebates,A=u.account.taker_volume;l.push({balance_manager_id:i,open_orders:m,owed_balances:y,settled_balances:k,unclaimed_rebates:T,taker_volume:A,poolInfo:s[f]})}),l}async withdrawSettledAmounts({poolInfo:e,marginManager:t},r=new W){return r.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::pool_proxy::withdraw_settled_amounts`,arguments:[r.object(this.sdk.sdkOptions.margin_utils.margin_registry_id),r.object(t),r.object(e.address)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]}),r}#e(e,t,r){if(t<=0||r<0)throw new Error("Scalar must be positive and decimals must be non-negative");let i=BigInt(t),s=e/i,a=e%i;if(a===0n)return s.toString();let o=t.toString().length-1,p=a.toString().padStart(o,"0").slice(0,r).replace(/0+$/,"");return p?`${s}.${p}`:s.toString()}async getMarginPoolStateForInterest(e){if(!e)throw new Error("marginPoolId is required");let t=await this.sdk.fullClient.getObject({objectId:e,include:{json:!0}});if(!t?.object?.json)throw new Error(`Failed to fetch margin pool: ${e}`);let r=t.object.json,i=r.state,s=r.config,a=s.interest_config,o=s.margin_pool_config;return{poolState:{total_supply:BigInt(i.total_supply),total_borrow:BigInt(i.total_borrow),supply_shares:BigInt(i.supply_shares),borrow_shares:BigInt(i.borrow_shares),last_update_timestamp:BigInt(i.last_update_timestamp)},interestConfig:{base_rate:BigInt(a.base_rate),base_slope:BigInt(a.base_slope),optimal_utilization:BigInt(a.optimal_utilization),excess_slope:BigInt(a.excess_slope)},marginPoolConfig:{protocol_spread:BigInt(o.protocol_spread),max_utilization_rate:BigInt(o.max_utilization_rate),min_borrow:BigInt(o.min_borrow),supply_cap:BigInt(o.supply_cap)}}}async getMarginPoolStateForInterestList(e){if(!e||e.length===0)throw new Error("marginPoolIds is required");let t=await this.sdk.fullClient.batchGetObjects(e,{json:!0}),r=[];return e.forEach((s,a)=>{let o=t[a];if(o){let u=o.json.state,l=o.json.config,p=l.interest_config,f=l.margin_pool_config;r.push({poolState:{total_supply:BigInt(u.total_supply),total_borrow:BigInt(u.total_borrow),supply_shares:BigInt(u.supply_shares),borrow_shares:BigInt(u.borrow_shares),last_update_timestamp:BigInt(u.last_update_timestamp)},interestConfig:{base_rate:BigInt(p.base_rate),base_slope:BigInt(p.base_slope),optimal_utilization:BigInt(p.optimal_utilization),excess_slope:BigInt(p.excess_slope)},marginPoolConfig:{protocol_spread:BigInt(f.protocol_spread),max_utilization_rate:BigInt(f.max_utilization_rate),min_borrow:BigInt(f.min_borrow),supply_cap:BigInt(f.supply_cap)}})}}),{poolStateObj:Object.fromEntries(e.map((s,a)=>[s,r[a]])),poolStateList:r}}async getChainTimestamp(){let{response:e}=await this.sdk.fullClient.ledgerService.getServiceInfo({}),t=e.timestamp;if(!t)throw new Error("No timestamp in service info");return BigInt(t.seconds)*1000n+BigInt(t.nanos)/1000000n}async batchGetBorrowedShares({account:e,marginManagerList:t}){let r=new W;t.forEach(s=>{r.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::borrowed_shares`,arguments:[r.object(s.marginManagerId)],typeArguments:[s.baseCoinType,s.quoteCoinType]})});let i=await this.sdk.fullClient.sendSimulationTransaction(r,e);return J(i,"Failed to batch get borrowed shares"),i.commandResults.map((s,a)=>{let o=P.U64.parse(new Uint8Array(s.returnValues[0].bcs)),u=P.U64.parse(new Uint8Array(s.returnValues[1].bcs));return{marginManagerId:t[a].marginManagerId,baseBorrowedShare:o,quoteBorrowedShare:u}})}async betchGetOpenOrders({account:e,marginManagerList:t},r=new W,i=!1){t.forEach(y=>{let k=r.moveCall({target:`${this.sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::balance_manager`,arguments:[r.object(y.marginManagerId)],typeArguments:[y.baseCoinType,y.quoteCoinType]});r.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::account_open_orders`,arguments:[r.object(y.poolId),r.object(k)],typeArguments:[y.baseCoinType,y.quoteCoinType]}),r.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::get_account_id_with_margin_manager`,arguments:[r.object(y.marginManagerId),r.object(y.poolId)],typeArguments:[y.baseCoinType,y.quoteCoinType]}),r.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::locked_balance_with_margin_manager`,arguments:[r.object(y.marginManagerId),r.object(y.poolId)],typeArguments:[y.baseCoinType,y.quoteCoinType]})}),e&&r.setSenderIfNotSet(e);let s=await this.sdk.fullClient.simulateTransaction({transaction:r,checksEnabled:!1,include:{events:!0,commandResults:!0}});J(s,"Failed to batch get margin open orders");let a=s.Transaction?.events.map((y,k)=>({marginManagerId:t[k].marginManagerId,...y?.json?.account?.settled_balances||{}})),o=s.commandResults.filter((y,k)=>(k-1)%4===0),u=P.struct("VecSet",{constants:P.vector(P.U128)}),l=[];o.forEach((y,k)=>{let T=u.parse(ie(y.returnValues?.[0])).constants;T.length>0&&T.forEach(A=>{l.push({pool:{pool_id:t[k].poolId,baseCoinType:t[k].baseCoinType,quoteCoinType:t[k].quoteCoinType},marginManagerId:t[k].marginManagerId,orderId:A})})});let p=s.commandResults.filter((y,k)=>(k-3)%4===0),f=[];p.forEach((y,k)=>{f.push({marginManagerId:t[k].marginManagerId,base:P.U64.parse(ie(y.returnValues?.[0])),quote:P.U64.parse(ie(y.returnValues?.[1])),deep:P.U64.parse(ie(y.returnValues?.[2]))})});let m=[];return l.forEach((y,k)=>{let T=this.sdk.DeepbookUtils.decodeOrderId(BigInt(y.orderId));m.push({...y,price:T.price.toString(),isBid:T.isBid})}),{openOrders:m,settledBalances:a,lockedBalances:f}}async getAllPosRelevantData({account:e,marginManagerList:t}){try{let{openOrders:r,settledBalances:i,lockedBalances:s}=await this.betchGetOpenOrders({account:e,marginManagerList:t}),a=await this.batchGetBorrowedShares({account:e,marginManagerList:t}),o=new W,u=0,l=[];t.forEach(m=>{o.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::base_balance`,arguments:[o.object(m.marginManagerId)],typeArguments:[m.baseCoinType,m.quoteCoinType]}),l[u]={type:"base_balance",marginManagerId:m.marginManagerId},u++,o.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::quote_balance`,arguments:[o.object(m.marginManagerId)],typeArguments:[m.baseCoinType,m.quoteCoinType]}),l[u]={type:"quote_balance",marginManagerId:m.marginManagerId},u++,o.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::deep_balance`,arguments:[o.object(m.marginManagerId)],typeArguments:[m.baseCoinType,m.quoteCoinType]}),l[u]={type:"deep_balance",marginManagerId:m.marginManagerId},u++;let y=a?.find(k=>k.marginManagerId===m.marginManagerId);if(y&&(Number(y.baseBorrowedShare)>0||Number(y.quoteBorrowedShare)>0)){let k=y.baseBorrowedShare,T=y.quoteBorrowedShare,A=!!S(k).gt(S(T)),E=A?m.baseMarginPool:m.quoteMarginPool,q=A?k:T;o.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_pool::borrow_shares_to_amount`,arguments:[o.object(E),o.pure.u64(BigInt(q)),o.object.clock()],typeArguments:[A?m?.baseCoinType:m?.quoteCoinType]}),l[u]={type:A?"borrow_base_amount":"borrow_quote_amount",marginManagerId:m.marginManagerId},u++}}),Sa(o);let p=await this.sdk.fullClient.simulateTransaction({transaction:o,checksEnabled:!1,include:{commandResults:!0,events:!0}});J(p,"Failed to get margin manager assets");let f=Object.fromEntries(t.map(m=>[m.marginManagerId,{...m,quote_balance:"0",base_balance:"0",deep_balance:"0",borrow_base_amount:"0",borrow_quote_amount:"0",open_orders:[],settled_balances:{base:"0",quote:"0",deep:"0"}}]));return p?.commandResults?.forEach((m,y)=>{let k=l[y],T=P.U64.parse(new Uint8Array(m.returnValues[0].bcs));f[k.marginManagerId]={...f[k.marginManagerId],[k.type]:T}}),r?.forEach(m=>{f[m.marginManagerId].open_orders.push(m)}),i?.forEach(m=>{f[m.marginManagerId].settled_balances=m}),s?.forEach(m=>{f[m.marginManagerId].locked_balances=m}),Object.values(f)?.forEach(m=>{m.locked_balances&&m.settled_balances&&(m.locked_balances={...m.locked_balances,base:S(m.locked_balances.base||"0").minus(S(m.settled_balances.base||"0")).toString(),quote:S(m.locked_balances.quote||"0").minus(S(m.settled_balances.quote||"0")).toString(),deep:S(m.locked_balances.deep||"0").minus(S(m.settled_balances.deep||"0")).toString()})}),f}catch(r){throw new Error(`Failed to get all pos relevant data: ${r instanceof Error?r.message:String(r)}`)}}async addConditionalOrder(e,t){let{margin_utils:r}=this.sdk.sdkOptions,{global_config_id:i,versioned_id:s,margin_registry_id:a}=r,{margin_manager_id:o,pool_id:u,base_coin:l,quote_coin:p,conditional_order_id:f,pending_order:m,is_trigger_below_price:y,trigger_price:k}=e,T=await this.pythPrice.updatePythPriceIDs([l.feed,p.feed],t),A=T.get(l.feed),E=T.get(p.feed);if(!A||!E)throw new Error("Failed to get price feed object IDs");let q=t.moveCall({target:`${r.published_at}::margin_utils::new_condition`,arguments:[t.pure.bool(y),t.pure.u64(k)]}),x=this.newPendingOrder(m,t);t.moveCall({target:`${r.published_at}::margin_utils::add_conditional_order_pyth_upgraded`,arguments:[t.object(i),t.object(s),t.object(o),t.object(u),t.object(A),t.object(E),t.object(a),typeof f=="string"?t.pure.u64(BigInt(f)):f,q,x,t.object(xn)],typeArguments:[l.coinType,p.coinType]})}newPendingOrder(e,t){let{margin_utils:r}=this.sdk.sdkOptions;if("price"in e){let{client_order_id:i,order_type:s,self_matching_option:a,price:o,quantity:u,is_bid:l,pay_with_deep:p,expire_timestamp:f}=e;return t.moveCall({target:`${r.published_at}::margin_utils::new_pending_limit_order`,arguments:[t.pure.u64(i),t.pure.u8(s),t.pure.u8(a),t.pure.u64(o),t.pure.u64(u),t.pure.bool(l),t.pure.bool(p),t.pure.u64(f)]})}else{let{client_order_id:i,self_matching_option:s,quantity:a,is_bid:o,pay_with_deep:u}=e;return t.moveCall({target:`${r.published_at}::margin_utils::new_pending_market_order`,arguments:[t.pure.u64(i),t.pure.u8(s),t.pure.u64(a),t.pure.bool(o),t.pure.bool(u)]})}}cancelAllConditionalOrders(e,t){let{margin_utils:r}=this.sdk.sdkOptions,{global_config_id:i,versioned_id:s}=r,{margin_manager_id:a,base_coin_type:o,quote_coin_type:u}=e;t.moveCall({target:`${r.published_at}::margin_utils::cancel_all_conditional_orders`,arguments:[t.object(i),t.object(s),t.object(a),t.object(xn)],typeArguments:[o,u]})}cancelConditionalOrders(e,t){let{margin_utils:r}=this.sdk.sdkOptions,{global_config_id:i,versioned_id:s}=r,{margin_manager_id:a,base_coin_type:o,quote_coin_type:u,conditional_order_id:l}=e;t.moveCall({target:`${r.published_at}::margin_utils::cancel_conditional_order`,arguments:[t.object(i),t.object(s),t.object(a),t.pure.u64(l),t.object(xn)],typeArguments:[o,u]})}async getConditionalOrders(e,t){let{deepbook:r}=this.sdk.sdkOptions;e.forEach(l=>{let{margin_manager_id:p,base_coin_type:f,quote_coin_type:m,conditional_order_ids:y}=l;y.forEach(k=>{t.moveCall({target:`${r.margin_published_at}::margin_manager::conditional_order`,arguments:[t.object(p),t.pure.u64(k)],typeArguments:[f,m]})})});let i=await this.sdk.fullClient.sendSimulationTransaction(t,In("0x0"));if(J(i,"Failed to get conditional orders"),!i?.commandResults)return[];let s=P.struct("Condition",{trigger_below_price:P.bool(),trigger_price:P.u64()}),a=P.struct("PendingOrder",{is_limit_order:P.bool(),client_order_id:P.u64(),order_type:P.option(P.u8()),self_matching_option:P.u8(),price:P.option(P.u64()),quantity:P.u64(),is_bid:P.bool(),pay_with_deep:P.bool(),expire_timestamp:P.option(P.u64())}),o=P.struct("ConditionalOrder",{conditional_order_id:P.u64(),condition:s,pending_order:a}),u=l=>{if(l.length===0||l.length===1&&l[0]===0)return null;try{return o.parse(l)}catch{if(l[0]===1&&l.length>1)try{return o.parse(l.subarray(1))}catch{return null}return null}};return i.commandResults.map(l=>{if(!l?.returnValues?.[0]?.bcs)return null;try{let p=l.returnValues[0].bcs,f=u(p);if(!f)return null;let m=this.normalizeConditionalOrder(f);return e.forEach(y=>{y.conditional_order_ids.find(T=>T===m.conditional_order_id)&&(m.margin_manager_id=y.margin_manager_id,m.base_coin_type=y.base_coin_type,m.quote_coin_type=y.quote_coin_type)}),m}catch{return null}})}async getConditionalOrderIds(e,t){t=t||new W;let{deepbook:r}=this.sdk.sdkOptions,i={};e.forEach(a=>{let{margin_manager_id:o,base_coin_type:u,quote_coin_type:l}=a;t.moveCall({target:`${r.margin_published_at}::margin_manager::conditional_order_ids`,arguments:[t.object(o)],typeArguments:[u,l]})});let s=await this.sdk.fullClient.sendSimulationTransaction(t,In("0x0"));return J(s,"Failed to get conditional order IDs"),s.commandResults.forEach((a,o)=>{if(a?.returnValues?.[0]?.bcs){let u=new Uint8Array(a.returnValues[0].bcs),l=P.vector(P.u64()).parse(u),p={margin_manager_id:e[o].margin_manager_id,base_coin_type:e[o].base_coin_type,quote_coin_type:e[o].quote_coin_type,conditional_order_ids:l.map(f=>f.toString())};i[e[o].margin_manager_id]=p}}),i}normalizeConditionalOrder(e){let t=r=>typeof r=="bigint"?String(r):r;return{margin_manager_id:"",base_coin_type:"",quote_coin_type:"",conditional_order_id:t(e.conditional_order_id),condition:{trigger_below_price:e.condition.trigger_below_price,trigger_price:t(e.condition.trigger_price)},pending_order:{is_limit_order:e.pending_order.is_limit_order,client_order_id:t(e.pending_order.client_order_id),order_type:e.pending_order.order_type,self_matching_option:e.pending_order.self_matching_option,price:e.pending_order.price,quantity:t(e.pending_order.quantity),is_bid:e.pending_order.is_bid,pay_with_deep:e.pending_order.pay_with_deep,expire_timestamp:e.pending_order.expire_timestamp}}}async getPoolsPriceBounds(e){if(!e?.length)throw new Error("poolInfos is required");for(let m of e){if(!m.poolId||!m.baseCoin?.coinType||!m.quoteCoin?.coinType)throw new Error("poolId, baseCoin.coinType and quoteCoin.coinType are required");if(!m.baseCoin?.feed||!m.quoteCoin?.feed)throw new Error("baseCoin.feed and quoteCoin.feed are required to refresh pool price")}let t=new W,r=[...new Set(e.flatMap(m=>[m.baseCoin.feed,m.quoteCoin.feed]))],i=await this.pythPrice.updatePythPriceIDs(r,t),s=this.sdk.sdkOptions.margin_utils.margin_registry_id,a=this.sdk.sdkOptions.deepbook.margin_published_at;for(let m of e){let y=i.get(m.baseCoin.feed),k=i.get(m.quoteCoin.feed);if(!y||!k)throw new Error(`Failed to get price feed object IDs for pool ${m.poolId}`);t.moveCall({target:`${a}::pool_proxy_upgraded::update_current_price`,arguments:[t.object(s),t.object(m.poolId),t.object(y),t.object(k),t.object(me)],typeArguments:[m.baseCoin.coinType,m.quoteCoin.coinType]}),t.moveCall({target:`${a}::margin_registry::get_price_bounds`,arguments:[t.object(s),t.pure.id(m.poolId),t.object(me)]})}let o=await this.sdk.fullClient.simulateTransaction({transaction:t,checksEnabled:!1,include:{commandResults:!0}});J(o,"Failed to get pools price bounds");let u=o.commandResults.filter(m=>m?.returnValues?.length===2);if(u.length<e.length)throw new Error(`Failed to get pools price bounds: expected ${e.length} results, got ${u.length}`);let l=[],p=u.slice(-e.length);for(let m=0;m<e.length;m++){let y=p[m],k=y?.returnValues?.[0]?.bcs??y?.returnValues?.[0]?.[0],T=y?.returnValues?.[1]?.bcs??y?.returnValues?.[1]?.[0];if(!k||!T)throw new Error(`Failed to parse price bounds for pool ${e[m].poolId}`);let A=9-e[m].baseDecimals+e[m].quoteDecimals,E=P.U64.parse(new Uint8Array(k)),q=P.U64.parse(new Uint8Array(T));l.push({pool_id:e[m].poolId,lower_bound:S(E).div(10**A).toString(),upper_bound:S(q).div(10**A).toString()})}let f=new Map;return l.forEach(m=>{f.set(m.pool_id,m)}),{priceBounds:l,priceBoundsMap:f}}};var bl="https://graphql.mainnet.sui.io/graphql",wl="https://graphql.testnet.sui.io/graphql",Rn=class{_rpcModule;_deepbookUtils;_marginUtils;_pythPrice;_sdkOptions;_senderAddress="";constructor(e){this._sdkOptions=e;let t=e.network==="testnet"?"testnet":"mainnet";this._rpcModule=Ti(new yl({baseUrl:e.fullRpcUrl,network:t}),new _l({network:e.network,url:t==="testnet"?wl:bl}),t),this._deepbookUtils=new jn(this),this._marginUtils=new Pn(this),this._pythPrice=new Vr(this),Ii(this._sdkOptions)}get senderAddress(){return this._senderAddress}set senderAddress(e){this._senderAddress=e}get DeepbookUtils(){return this._deepbookUtils}get MarginUtils(){return this._marginUtils}get PythPrice(){return this._pythPrice}get fullClient(){return this._rpcModule}get sdkOptions(){return this._sdkOptions}};var vl=(i=>(i[i.NO_RESTRICTION=0]="NO_RESTRICTION",i[i.IMMEDIATE_OR_CANCEL=1]="IMMEDIATE_OR_CANCEL",i[i.FILL_OR_KILL=2]="FILL_OR_KILL",i[i.POST_ONLY=3]="POST_ONLY",i))(vl||{}),kl=(r=>(r[r.SELF_MATCHING_ALLOWED=0]="SELF_MATCHING_ALLOWED",r[r.CANCEL_TAKER=1]="CANCEL_TAKER",r[r.CANCEL_MAKER=2]="CANCEL_MAKER",r))(kl||{});var Im=Rn;export{xn as CLOCK_ADDRESS,En as CachedContent,Rn as CetusClmmSDK,kp as ClmmExpectSwapModule,vp as ClmmFetcherModule,_p as ClmmIntegratePoolModule,yp as ClmmIntegratePoolV2Module,bp as ClmmIntegrateRouterModule,wp as ClmmIntegrateRouterWithPartnerModule,Cp as ClmmIntegrateUtilsModule,rt as CoinAssist,Tp as CoinInfoAddress,Sp as CoinStoreAddress,Di as DEEP_SCALAR,Ah as DEFAULT_GAS_BUDGET_FOR_MERGE,Mh as DEFAULT_GAS_BUDGET_FOR_SPLIT,jh as DEFAULT_GAS_BUDGET_FOR_STAKE,Oh as DEFAULT_GAS_BUDGET_FOR_TRANSFER,Eh as DEFAULT_GAS_BUDGET_FOR_TRANSFER_SUI,Ih as DEFAULT_NFT_TRANSFER_GAS_FEE,Ap as DeepbookClobV2Moudle,Mp as DeepbookCustodianV2Moudle,Op as DeepbookEndpointsV2Moudle,jn as DeepbookUtilsModule,jp as ERROR_HANDLING_RPC_LIST,Et as FLOAT_SCALAR,Dt as FLOAT_SCALING,xh as GAS_SYMBOL,Pi as GAS_TYPE_ARG,ga as GAS_TYPE_ARG_LONG,Pn as MarginUtilsModule,_h as NORMALIZED_SUI_COIN_TYPE,vl as OrderType,Ph as SUI_SYSTEM_STATE_OBJECT_ID,kl as SelfMatchingOption,dl as YEAR_MS,ha as addHexPrefix,Lh as asIntN,Fh as asUintN,J as assertSimulationSucceeded,oh as bufferToHex,ya as cacheTime1min,Lr as cacheTime24h,ba as cacheTime5min,Dp as calc100PercentRepay,ml as calcDebtDetail,pl as calcInterestRate,hl as calcUtilizationRate,qp as calculateRiskRatio,ah as checkAddress,ma as composeType,S as d,Ri as decimalsMultiplier,Im as default,fh as extractAddressFromType,nr as extractStructTagFromType,gh as fixCoinType,Cr as fixDown,Yu as fixSuiObjectId,Tr as fromDecimalsAmount,Ep as getDefaultSuiInputType,Bi as getFutureTime,il as getMoveObject,el as getObjectDeletedResponse,xa as getObjectFields,ja as getObjectId,tl as getObjectNotExistsResponse,rl as getObjectReference,Ea as getSuiObjectData,ch as hexToNumber,uh as hexToString,mh as isSortedSymbols,Wh as isSuiObjectResponse,qi as maxDecimal,Na as mulRoundUp,xi as normalizeCoinType,Ii as patchFixSuiObjectId,Sa as printTransaction,Ei as removeHexPrefix,Vh as secretKeyToEd25519Keypair,zh as secretKeyToSecp256k1Keypair,sh as shortAddress,Gu as shortString,ut as simulationErrorMessage,ie as simulationReturnBytes,Ta as sleepTime,Zu as toBuffer,ir as toDecimalsAmount,Qu as utf8to16,$a as wrapDeepBookMarginPoolInfo,Da as wrapDeepBookPoolInfo};
195
+ `);var Iu=["https://rpc-mainnet.suiscan.xyz:443","https://cetus-mainnet-endpoint.blockvision.org","https://cetus-suimain-e31f.mainnet.sui.rpcpool.com"];var Pd=Ct.struct("Table<ID, bool>",{id:Ct.Address,size:Ct.u64()}),Pu=Ct.struct("TypeName",{name:Ct.string()}),Rd=Ct.struct("OptionU64",{is_none:Ct.bool(),v:Ct.u64()}),Ru=Ct.struct("UID",{id:Ct.Address}),qd=Ct.struct("TableSuiRaw",{id:Ru,size:Ct.u64()});function Bu(n){if(!n)return"0";let e=new Date(n).getTime();return Number.isFinite(e)?e.toString():"0"}function la(n){if(n.reason!==void 0)return n.reason;let e=new Error("The operation was aborted");return e.name="AbortError",e}function ge(n){let e=n?.signal;if(e?.aborted)throw la(e)}function Jr(n,e){let t=e?.signal;return t?(ge(e),new Promise((r,i)=>{let s=()=>i(la(t));t.addEventListener("abort",s,{once:!0}),n.then(a=>{t.removeEventListener("abort",s),r(a)},a=>{t.removeEventListener("abort",s),i(a)})})):n}var Du=class{constructor(n,e,t,r){this._cache={},this._env="mainnet",this._client=n,this._env=t||"mainnet",this._graphQLClient=e,this._archivalClient=r}callRpc(n,e){return ge(n),Jr(e(),n)}requestOptionsFromInput(n){return n.signal?{signal:n.signal}:void 0}async getObject(n){return this.callRpc(this.requestOptionsFromInput(n),()=>this._client.getObject(n))}async listOwnedObjects(n){return this.callRpc(this.requestOptionsFromInput(n),()=>this._client.listOwnedObjects(n))}async getBalance(n){return this.callRpc(this.requestOptionsFromInput(n),()=>this._client.getBalance(n))}async getCoinMetadata(n){return this.callRpc(this.requestOptionsFromInput(n),()=>this._client.getCoinMetadata(n))}async getDynamicField(n){return this.callRpc(this.requestOptionsFromInput(n),()=>this._client.getDynamicField(n))}listDynamicFields(n){return this.callRpc(this.requestOptionsFromInput(n),()=>this._client.listDynamicFields(n))}async simulateTransaction(n){return this.callRpc(this.requestOptionsFromInput(n),()=>this._client.simulateTransaction(n))}queryGraphQL(n,e){if(!this._graphQLClient)throw new Error("graphQLClient is not set");let t={...n,signal:e?.signal};return this.callRpc(e,()=>this._graphQLClient.query(t))}async fetchCoinMetadata(n,e){ge(e);let t=`coin_metadata_${n}`,r=this.getCache(t);if(r)return r;let i=await this.callRpc(e,()=>this._client.getCoinMetadata({coinType:n,signal:e?.signal}));return ge(e),this.updateCache(t,i.coinMetadata),i.coinMetadata}async fetchCoinMetadataId(n,e){if(ge(e),!this._graphQLClient)throw new Error("graphQLClient is not set");let t=`coin_metadata_id_${n}`,r=this.getCache(t);if(r)return r;let i=(await this.queryGraphQL({query:Ou,variables:{coinType:`0x2::coin::CoinMetadata<${n}>`}},e)).data?.objects?.nodes?.[0]?.address??null;return i&&this.updateCache(t,i),i}async getTransactionByGraphQL(n,e){if(ge(e),!this._graphQLClient)throw new Error("graphQLClient is not set");try{let t=(await this.queryGraphQL({query:Eu,variables:{digest:n}},e)).data?.transaction;if(!t)throw new Error(`Transaction ${n} not found`);return this.transformGraphQLTxResult(t,n)}catch(t){if(ge(e),console.log("getTransactionByGraphQL error, trying archival client",t),this._archivalClient)return this.callRpc(e,()=>this._archivalClient.getTransaction({digest:n,include:{effects:!0,events:!0,balanceChanges:!0,transaction:!0,objectTypes:!0},signal:e?.signal}));throw t}}transformGraphQLTxResult(n,e){let t=(n.effects?.events?.nodes??[]).map(i=>{let s=i.contents?.type?.repr??"",a=s?er(s):null;return{packageId:a?.address??"",module:a?.module??"",sender:i.sender?.address??"",eventType:s,json:i.contents?.json??null,bcs:void 0,timestamp:i.timestamp??""}}),r=(n.effects?.balanceChanges?.nodes??[]).map(i=>({coinType:i.coinType?.repr??"",amount:i.amount??"0",owner:i.owner?.id??""}));return{$kind:"Transaction",Transaction:{digest:n.digest??e,signatures:[],epoch:n.effects?.epoch?.epochId!=null?String(n.effects.epoch.epochId):null,status:n.effects?.status??{success:!0,error:null},balanceChanges:r,effects:void 0,events:t,objectTypes:void 0,transaction:void 0,bcs:void 0}}}async queryEventsByGraphQL(n,e="all",t){if(ge(t),typeof n=="object"&&"Transaction"in n)return this.queryEventsByTransactionGraphQL(n.Transaction,t);let r=typeof n=="string"?n:n.MoveEventType;return this.queryEventsByTypeGraphQL(r,e,t)}async queryEventsByTypeGraphQL(n,e="all",t){if(!this._graphQLClient)throw new Error("graphQLClient is not set");let r=e==="all",i=r?50:e.limit??50,s=[],a=r?null:e.cursor??null,o=!0;do{ge(t);let u=(await this.queryGraphQL({query:xu,variables:{type:n,first:i,...a?{after:a}:{}}},t)).data?.events,l=u?.nodes??[],p=u?.pageInfo,f=l.map(m=>this.normalizeGraphQLEvent(m));s=[...s,...f],o=p?.hasNextPage??!1,a=p?.endCursor??null}while(r&&o);return{data:s,next_cursor:a,has_next_page:o}}async queryEventsByTransactionGraphQL(n,e){return{data:((await this.getTransactionByGraphQL(n,e))?.data?.transaction?.effects?.events?.nodes??[]).map(t=>({type:t.contents?.type?.repr??"",parsedJson:t.contents?.json??{},sender:t.sender?.address??"",packageId:"",module:"",txDigest:n,timestampMs:t.timestamp?new Date(t.timestamp).getTime().toString():"0",bcs:void 0})),next_cursor:null,has_next_page:!1}}normalizeGraphQLEvent(n){return{type:n.contents?.type?.repr??n.type??"",parsedJson:n.contents?.json??n.parsedJson??{},sender:typeof n.sender=="string"?n.sender:n.sender?.address??"",packageId:n.transactionModule?.package?.address??"",module:n.transactionModule?.name??"",txDigest:n.transaction?.digest??"",timestampMs:Bu(n.timestamp),timestamp:n.timestamp}}async queryTransactionBlocksByPage(n,e="all",t="descending",r){if(!this._graphQLClient)throw new Error("graphQLClient is not set");if(!(n.sentAddress!=null||n.affectedAddress!=null||n.affectedObject!=null||n.function!=null))throw new Error("At least one of sentAddress, affectedAddress, affectedObject, function is required");let i=e==="all",s=i?50:e.limit??50,a=[],o=i?null:e.cursor??null,u=!0,l=t!=="ascending",p={};n.sentAddress&&(p.sentAddress=$r(n.sentAddress)),n.affectedAddress&&(p.affectedAddress=$r(n.affectedAddress)),n.affectedObject&&(p.affectedObject=$r(n.affectedObject)),n.function&&(p.function=n.function);do{ge(r);let f=(l?await this.queryGraphQL({query:zs,variables:{filter:p,last:s,...o?{before:o}:{}}},r):await this.queryGraphQL({query:zs,variables:{filter:p,first:s,...o?{after:o}:{}}},r)).data?.transactions,m=f?.nodes??[],y=f?.pageInfo,k=l?[...m].reverse():m;a=[...a,...k],u=l?y?.hasPreviousPage??!1:y?.hasNextPage??!1,o=l?y?.startCursor??null:y?.endCursor??null}while(i&&u);return{data:a,next_cursor:o,has_next_page:u}}async getOwnedObjectsByPage(n,e,t="all",r){let i=async s=>{let a=[],o=!0,u=t==="all",l=u?null:t.cursor;do{ge(r);let p=await this.callRpc(r,()=>s.listOwnedObjects({owner:n,type:e,cursor:l??void 0,limit:u?1e3:t.limit??void 0,include:{content:!0,previousTransaction:!0,json:!0},signal:r?.signal}));a=[...a,...p.objects],o=p.hasNextPage,l=p.cursor??null}while(u&&o);return{data:a,next_cursor:l,has_next_page:o}};try{return await i(this._client)}catch(s){ge(r);let a=s,o=this._env==="testnet"?"testnet":"mainnet";for(let u of Iu)try{ge(r);let l=Ti(new qu({baseUrl:u,network:o}),this._graphQLClient,this._env);return await i(l._client)}catch(l){ge(r),a=l;continue}throw a}}async getAllDynamicFields(n,e="all",t){if(!this._graphQLClient)throw new Error("graphQLClient is not set");let r=e==="all",i=r?50:e.limit??50,s=[],a=r?null:e.cursor??null,o=!0;do{ge(t);let u=(await this.queryGraphQL({query:ju,variables:{id:$r(n),first:i,...a?{after:a}:{}}},t)).data?.address?.dynamicFields,l=u?.nodes??[],p=u?.pageInfo;s=[...s,...l],o=p?.hasNextPage??!1,a=p?.endCursor??null}while(r&&o);return{data:s,next_cursor:a,has_next_page:o}}async getDynamicFieldsByPage(n,e="all",t){let r=[],i=!0,s=e==="all",a=s?null:e.cursor;do{ge(t);let o=await this.callRpc(t,()=>this._client.listDynamicFields({parentId:n,cursor:a??void 0,limit:s?1e3:e.limit??void 0,signal:t?.signal}));r=[...r,...o.dynamicFields],i=o.hasNextPage,a=o.cursor??null}while(s&&i);return{data:r,next_cursor:a,has_next_page:i}}async getDynamicFieldObjects(n,e,t,r,i,s){let a=e.map(o=>Au(n,o,t,r));return a.length===0?[]:this.batchGetObjects(a,i,1e3,s)}async batchGetObjects(n,e,t=1e3,r){let i=[];try{for(let s=0;s<Math.ceil(n.length/t);s++){ge(r);let a=n.slice(s*t,t*(s+1)),o=await this.callRpc(r,()=>this._client.getObjects({objectIds:a,include:e,signal:r?.signal}));i=[...i,...o.objects]}}catch(s){ge(r),console.log(s)}return i}async calculationTxGas(n,e){let t=n.getData?.()?.sender??n.blockData?.sender;if(t==null)throw Error("sdk sender is empty");n.setSender(t);let r=await this.callRpc(e,()=>this._client.simulateTransaction({transaction:n,include:{effects:!0},signal:e?.signal})),i=r.Transaction??r.FailedTransaction;if(!i?.effects?.gasUsed)throw new Error("Simulation did not return effects");let{gasUsed:s}=i.effects;return Number(s.computationCost)+Number(s.storageCost)-Number(s.storageRebate)}async sendTransaction(n,e,t){try{return await this.callRpc(t,()=>this._client.signAndExecuteTransaction({transaction:e,signer:n,include:{effects:!0,events:!0},signal:t?.signal}))}catch(r){ge(t),console.log("error: ",r)}}async sendSimulationTransaction(n,e,t=!0,r){try{return n.setSender(e),await this.callRpc(r,()=>this._client.simulateTransaction({transaction:n,include:{events:!0,balanceChanges:!0,effects:!0,objectChanges:!0,commandResults:!0},checksEnabled:t,signal:r?.signal}))}catch(i){throw ge(r),console.log("simulateTransaction error",i),i}}async executeTx(n,e,t,r){try{if(t){let i=typeof n=="string"?$r(n):$r(n.getPublicKey().toSuiAddress());return await this.sendSimulationTransaction(e,i,!0,r)}else{if(typeof n=="string")throw new Error("Cannot send transaction with string address - keypair required for signing");return await this.sendTransaction(n,e,r)}}catch(i){return ge(r),i}}async getOwnerCoinAssets(n,e,t){let r=[],i=null;if(e)for(;;){ge(t);let s=await this.callRpc(t,()=>this._client.listCoins({owner:n,coinType:e,cursor:i??void 0,signal:t?.signal}));for(let a of s.objects)BigInt(a.balance)>0&&r.push({coin_type:er(a.type).type_arguments[0],coin_object_id:a.objectId,balance:BigInt(a.balance)});if(i=s.cursor??null,!s.hasNextPage)break}else{let s=null;do{ge(t);let a=await this.callRpc(t,()=>this._client.listOwnedObjects({owner:n,cursor:s??void 0,include:{json:!0},signal:t?.signal}));if(a.objects.forEach(o=>{let u=er(o.type);o.type.includes('"0x0000000000000000000000000000000000000000000000000000000000000002::coin::Coin')&&BigInt(o.balance)>0&&r.push({coin_type:ki(u.type_arguments[0],!1),coin_object_id:o.json.id,balance:BigInt(o.json.balance)})}),s=a.cursor??null,!a.hasNextPage)break}while(!0)}return r}async getOwnerCoinBalances(n,e,t){if(e)return[(await this.callRpc(t,()=>this._client.getBalance({owner:n,coinType:e,signal:t?.signal}))).balance];let r=[],i=null;do{ge(t);let s=await this.callRpc(t,()=>this._client.listBalances({owner:n,cursor:i??void 0,signal:t?.signal}));if(r.push(...s.balances),i=s.cursor??null,!s.hasNextPage)break}while(!0);return r}updateCache(n,e,t=864e5){let r=this._cache[n];r?(r.overdue_time=Ds(t),r.value=e):r=new Oc(e,Ds(t)),this._cache[n]=r}getCache(n,e=!1){let t=this._cache[n],r=t?.isValid();if(!e&&r)return t.value;r||delete this._cache[n]}};function Ti(n,e,t,r){let i=new Du(n,e,t,r);return new Proxy(i,{get(s,a,o){if(a in s)return Reflect.get(s,a,o);if(a in s._client){let u=Reflect.get(s._client,a);return typeof u=="function"?u.bind(s._client):u}throw new Error(`Property or method "${String(a)}" does not exist on FullClient or its client.`)}})}var $u=en(tn(),1);var Ud=new $u.default(1e6),Nu=(n=>(n[n.BelowRange=0]="BelowRange",n[n.InRange=1]="InRange",n[n.AboveRange=2]="AboveRange",n))(Nu||{}),gi=10n,Gs={pyth_state_id:"0x03719fae774ddab3cfcaa53bbc046f0cbe21410019b6280811bf3f9f4b05839d",wormhole_state_id:"0xdbca52b9fb4f712e25f61f974586d93ac541bcf8389564f0323bb07215168b5c"},Fu={"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC":{coin_type:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",price_feed_id:"0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",coin_decimals:6},"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI":{coin_type:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",price_feed_id:"0x23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",coin_decimals:9},"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS":{coin_type:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS",price_feed_id:"0xe5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",coin_decimals:9},"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP":{coin_type:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",price_feed_id:"0x29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",coin_decimals:6},"0xa99b8952d4f7d947ea77fe0ecdcc9e5fc0bcab2841d6e2a5aa00c3044e5544b5::navx::NAVX":{coin_type:"0xa99b8952d4f7d947ea77fe0ecdcc9e5fc0bcab2841d6e2a5aa00c3044e5544b5::navx::NAVX",price_feed_id:"0x88250f854c019ef4f88a5c073d52a18bb1c6ac437033f5932cd017d24917ab46",coin_decimals:9},"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN":{coin_type:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN",price_feed_id:"0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",coin_decimals:9},"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI":{coin_type:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI",price_feed_id:"0x6120ffcf96395c70aa77e72dcb900bf9d40dccab228efca59a17b90ce423d5e8",coin_decimals:9},"0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29::eth::ETH":{coin_type:"0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29::eth::ETH",price_feed_id:"0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",coin_decimals:8},"0x356a26eb9e012a68958082340d4c4116e7f55615cf27affcff209cf0ae544f59::wal::WAL":{coin_type:"0x356a26eb9e012a68958082340d4c4116e7f55615cf27affcff209cf0ae544f59::wal::WAL",price_feed_id:"0xeba0732395fae9dec4bae12e52760b35fc1c5671e2da8b449c9af4efe5d54341",coin_decimals:9},"0x3e8e9423d80e1774a7ca128fccd8bf5f1f7753be658c5e645929037f7c819040::lbtc::LBTC":{coin_type:"0x3e8e9423d80e1774a7ca128fccd8bf5f1f7753be658c5e645929037f7c819040::lbtc::LBTC",price_feed_id:"0x8f257aab6e7698bb92b15511915e593d6f8eae914452f781874754b03d0c612b",coin_decimals:8},"0x3a304c7feba2d819ea57c3542d68439ca2c386ba02159c740f7b406e592c62ea::haedal::HAEDAL":{coin_type:"0x3a304c7feba2d819ea57c3542d68439ca2c386ba02159c740f7b406e592c62ea::haedal::HAEDAL",price_feed_id:"0xe67d98cc1fbd94f569d5ba6c3c3c759eb3ffc5d2b28e64538a53ae13efad8fd1",coin_decimals:9}};function Uu(n,e){if(!gi)throw new Error("oraclePriceMultiplierDecimal is required");if(n===0n)throw new Error("Invalid oracle price");if(e<0n){let t=10n**(gi- -e);return n*t}return n/10n**(e+gi)}var Zs=16*1024,Qs=3e3,Lu=30,Ws="https://hermes.pyth.network",da=class kr{constructor(e,t=Gs,r=Gs){if(this.hermesClientCache=new Map,this.fullClient=e,Array.isArray(t)){if(t.length===0)throw new Error("pythEndpoints is empty, at least one Pyth endpoint is required");this.endpoints=t,this.pythConfigs=r;return}this.pythConfigs=t;let i=[...t.hermes_service_urls??[]];i.includes(Ws)||i.push(Ws),this.endpoints=i.map(s=>({url:s,mode:"hermes"}))}static getEndpointMode(e){return e.mode??"hermes"}getHermesClient(e){let t=`${e.url}::${e.accessToken??""}`,r=this.hermesClientCache.get(t);if(r)return r;let i=kr.createHermesClient(e);return this.hermesClientCache.set(t,i),i}static createHermesClient(e){let t={timeout:Qs};return e.accessToken&&(t.accessToken=e.accessToken),new _n(e.url,t)}async requestPriceUpdate(e,t,r,i){let s=null;for(let a of this.endpoints)try{if(kr.getEndpointMode(a)==="rest")return await Jr(this.fetchPostPriceUpdate(a,t),i);let o=this.getHermesClient(a);return r==="parsed"?await Jr(o.getLatestPriceUpdates(t,{parsed:!0}),i):await Jr(o.getLatestPriceUpdates(t,{encoding:"hex"}),i)}catch(o){ge(i),console.log(`\u{1F680} ~ PythPriceModule ~ ${e} ~ error:`,o),s=o}throw new Error(`All Pyth endpoints are unavailable for ${r}. ${e} Detailed error: ${s?.message}`)}static normalizeFeedId(e){return e?e.startsWith("0x")?e:`0x${e}`:"0x"}static toPostPriceUpdate(e){return Array.isArray(e.prices)?{parsed:e.prices.map(t=>({id:kr.normalizeFeedId(t.id),price:t.price})),binary:{encoding:"hex",data:(e.price_update_data??[]).map(t=>Buffer.from(t,"base64").toString("hex"))}}:Array.isArray(e.parsed)?{parsed:e.parsed.map(t=>({id:kr.normalizeFeedId(t.id),price:t.price})),binary:{encoding:e.binary?.encoding??"hex",data:e.binary?.data??[]}}:{parsed:[],binary:{encoding:"hex",data:[]}}}static resolveRestBody(e,t){return e.buildRestBody?e.buildRestBody(t):{price_seeds:t,max_age_seconds:Lu}}async fetchPostPriceUpdate(e,t){let r={"Content-Type":"application/json"};e.accessToken&&(r.Authorization=`Bearer ${e.accessToken}`);let i=await fetch(e.url,{method:"POST",headers:r,body:JSON.stringify(kr.resolveRestBody(e,t)),signal:AbortSignal.timeout(Qs)});if(!i.ok){let a=await i.text();throw new Error(`HTTP error! status: ${i.status}${a?`, body: ${a}`:""}`)}let s=await i.json();return kr.toPostPriceUpdate(s)}async getFeedInfoList(e,t){let r=e.map(i=>this.getFeedInfo(i,!1,t));return await Jr(Promise.all(r),t)}priceCheck(e,t=60){let r=Math.floor(Date.now()/1e3);if(!(Math.abs(r-e.last_update_time)>t))return e}applyPriceFeedUpdates(e,t,r){e?.parsed?.forEach((i,s)=>{if(!i)return;let{price:a,expo:o,publish_time:u}=i.price,l=wn(a).mul(wn(10).pow(wn(o))).toString(),{mapKey:p,coinType:f,coinDecimals:m,cacheKey:y}=t[s],k={coin_type:f,price:l,coin_decimals:m,oracle_price:Uu(BigInt(a),BigInt(o)),last_update_time:u};r[p]=k,this.fullClient.updateCache(y,k)})}async getPackageId(e,t){let r=(await this.fullClient.getObject({objectId:e,include:{json:!0},signal:t?.signal}))?.object?.json;if(r?.upgrade_cap?.package)return r.upgrade_cap.package;throw new Error("upgrade_cap not found")}async getWormholePackageId(e){let{wormhole_state_id:t}=this.pythConfigs,r=`getWormholePackageId_${t}`,i=this.fullClient.getCache(r);if(i)return i;let s=await this.getPackageId(this.pythConfigs.wormhole_state_id,e);return this.fullClient.updateCache(r,s),s}async getPythPackageId(){if(this.pythConfigs.pyth_package_id)return this.pythConfigs.pyth_package_id;let e=`getPythPackageId_${this.pythConfigs.pyth_state_id}`,t=this.fullClient.getCache(e);if(t)return t;let r=await this.getPackageId(this.pythConfigs.pyth_state_id);return this.fullClient.updateCache(e,r),r}async getLatestPrice(e,t=!1,r){let i={},s=[];if(t?e.forEach(u=>{let l=this.fullClient.getCache(`getLatestPrice_${u}`);l&&this.priceCheck(l,60)?i[u]=l:s.push(u)}):s=[...e],s.length===0)return i;let a=await this.getFeedInfoList(s,r),o=await this.getLatestPriceFeeds(a.map(u=>u.price_feed_id),r);return this.applyPriceFeedUpdates(o,s.map((u,l)=>({mapKey:u,coinType:a[l].coin_type,coinDecimals:a[l].coin_decimals,cacheKey:`getLatestPrice_${a[l].coin_type}`})),i),i}async getLatestPriceByFeedIds(e,t=!1,r){let i={},s=[];if(t?e.forEach(o=>{let u=this.fullClient.getCache(`getLatestPriceByFeedId_${o}`);u&&this.priceCheck(u,60)?i[o]=u:s.push(o)}):s=[...e],s.length===0)return i;let a=await this.getLatestPriceFeeds(s,r);return this.applyPriceFeedUpdates(a,s.map(o=>({mapKey:o,coinType:o,coinDecimals:0,cacheKey:`getLatestPriceByFeedId_${o}`})),i),i}async getPriceFeedsUpdateData(e,t){let r=await this.requestPriceUpdate("getPriceFeedsUpdateData",e,"binary",t);if(!r.binary?.data?.length)throw new Error("getPriceFeedsUpdateData: missing binary price update data in response");return r.binary.data.map(i=>Buffer.from(i,"hex"))}async getLatestPriceFeeds(e,t){return this.requestPriceUpdate("getLatestPriceFeeds",e,"parsed",t)}extractVaaBytesFromAccumulatorMessage(e){let t=7+e.readUint8(6)+1,r=e.readUint16BE(t),i=t+2;return e.subarray(i,i+r)}async verifyVaas(e,t,r){let i=await this.getWormholePackageId(r),s=[];for(let a of e){let[o]=t.moveCall({target:`${i}::vaa::parse_and_verify`,arguments:[t.object(this.pythConfigs.wormhole_state_id),t.pure(yt.vector(yt.u8()).serialize(Array.from(a),{maxSize:Zs}).toBytes()),t.object(_i)]});s.push(o)}return s}async getPriceTableInfo(e){if(this.priceTableInfo===void 0){let t=null,r=!0;for(;r;){let i=await this.fullClient.listDynamicFields({parentId:this.pythConfigs.pyth_state_id,cursor:t,signal:e?.signal});for(let s of i.dynamicFields)if(s.name.type==="vector<u8>"){let a=s.$kind==="DynamicObject"&&s.childId?s.childId:s.fieldId,o=await this.fullClient.getObject({objectId:a,include:{json:!0},signal:e?.signal}),u=o.object.type;if(u.includes("table::Table")){let l=u.replace(/.*table::Table</,"").replace(/>$/,"").split(",")[0].trim();return this.priceTableInfo={id:o.object.objectId,fieldType:l},this.priceTableInfo}}r=i.hasNextPage,t=i.cursor}}if(this.priceTableInfo===void 0)throw new Error(" getPriceTableInfo Price table not found");return this.priceTableInfo}async getPriceFeedObjectId(e,t){let r=e.replace("0x",""),i=`getPriceFeedObjectId_${r}`,s=this.fullClient.getCache(i);if(s)return s;let{id:a,fieldType:o}=await this.getPriceTableInfo(t),u=yt.struct("PriceIdentifier",{bytes:yt.vector(yt.u8())}).serialize({bytes:Array.from(Buffer.from(r,"hex"))}).toBytes(),l=(await this.fullClient.getDynamicField({parentId:a,name:{type:o,bcs:u},signal:t?.signal})).dynamicField.value.bcs,p=l instanceof Uint8Array?l:new Uint8Array(Object.values(l)),f="0x"+Array.from(p).map(m=>m.toString(16).padStart(2,"0")).join("");return this.fullClient.updateCache(i,f),f}async verifyVaasAndGetHotPotato(e,t,r,i){if(t.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let s=this.extractVaaBytesFromAccumulatorMessage(t[0]),a=await this.verifyVaas([s],e,i),[o]=e.moveCall({target:`${r}::pyth::create_authenticated_price_infos_using_accumulator`,arguments:[e.object(this.pythConfigs.pyth_state_id),e.pure(yt.vector(yt.u8()).serialize(Array.from(t[0]),{maxSize:Zs}).toBytes()),a[0],e.object(_i)]});return o}async buildUpdatePythPricePayload(e,t,r,i){let s=await this.getPythPackageId(),a=this.pythConfigs.pyth_published_at??s,o=(await this.getFeedInfoList(e,i)).map(f=>f.price_feed_id);if(e.length!==o.length)throw Error("find feed id fail");let u=await this.getPriceFeedsUpdateData(o,i);if(!u)throw new Error("get price update data fail");if(u.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let l=await this.verifyVaasAndGetHotPotato(t,u,a,i),p=0;for(let f of o){let m=await this.getPriceFeedObjectId(f,i);if(!m)throw new Error(`Price feed ${f} not found, please create it first`);l=r({tx:t,coinType:e[p],priceUpdatesHotPotato:l,priceInfoObjectId:m}),p+=1}return t.moveCall({target:`${a}::hot_potato_vector::destroy`,arguments:[l],typeArguments:[`${s}::price_info::PriceInfo`]}),t}async getBaseUpdateFee(e){if(this.baseUpdateFee===void 0){let t=(await this.fullClient.getObject({objectId:this.pythConfigs.pyth_state_id,include:{json:!0},signal:e?.signal}))?.object?.json;if(!t)throw new Error("Unable to fetch pyth state object");this.baseUpdateFee=Number(t.base_update_fee)}return this.baseUpdateFee}async updatePriceFeeds(e,t,r,i){let s=this.pythConfigs.pyth_package_id??await this.getPythPackageId(),a=await this.verifyVaasAndGetHotPotato(e,t,s,i),o=await this.getBaseUpdateFee(i),u=e.splitCoins(e.gas,r.map(()=>e.pure.u64(o))),l=[],p=0;for(let f of r){let m=await this.getPriceFeedObjectId(f,i);if(!m)throw new Error(`Price feed ${f} not found, please create it first`);l.push(m),[a]=e.moveCall({target:`${s}::pyth::update_single_price_feed`,arguments:[e.object(this.pythConfigs.pyth_state_id),a,e.object(m),u[p],e.object(_i)]}),p++}return e.moveCall({target:`${s}::hot_potato_vector::destroy`,arguments:[a],typeArguments:[`${s}::price_info::PriceInfo`]}),l}async buildUpdatePythPricePayloadV2(e,t,r,i){if(e.length===0)return t;let s=(await this.getFeedInfoList(e,i)).map(l=>l.price_feed_id);if(e.length!==s.length)throw Error("find feed id fail");let a=await this.getPriceFeedsUpdateData(s,i);if(!a)throw new Error("get price update data fail");if(a.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");let o=await this.updatePriceFeeds(t,a,s,i),u=0;for(let l of o)r({tx:t,coinType:e[u],priceUpdatesHotPotato:{},priceInfoObjectId:l}),u+=1;return t}getFeedInfoByJson(e){let t=ki(e,!1);return Fu[t]}async getFeedInfo(e,t,r){let i=`getFeedInfo_${e}`,s=this.fullClient.getCache(i,t);if(s)return s;let a=this.getFeedInfoByJson(e);if(a)return a;if(!this.pythConfigs.feed_info_handle)throw new Error("feed_info_handle is not set");let o=await this.fullClient.getDynamicField({parentId:this.pythConfigs.feed_info_handle,name:{type:"0x1::type_name::TypeName",bcs:Pu.serialize({name:ki(e,!0)}).toBytes()},signal:r?.signal}),u=yt.struct("OracleInfo",{price_feed_id:yt.vector(yt.U8),price_info_object_id:yt.Address,last_update_time:yt.u64(),coin_decimals:yt.u8()}).parse(o.dynamicField.value.bcs),l={coin_type:e,price_feed_id:Su(u.price_feed_id),coin_decimals:u.coin_decimals};return console.log("\u{1F680} ~ PythPriceModule ~ getFeedInfo ~ info:",l),this.fullClient.updateCache(i,l),l}},Ur=en(tn(),1),Vd=new Ur.default(0),ha=new Ur.default(1),Si=new Ur.default(2),zd=Si.pow(new Ur.default(128)),Gd=Si.pow(new Ur.default(64)).sub(ha),Zd=Si.pow(new Ur.default(128)).sub(ha);Tn.config({precision:64,rounding:Tn.ROUND_DOWN,toExpNeg:-64,toExpPos:64});var Qd=en(tn(),1),Wd=en(tn(),1);var Hd=en(tn(),1);import{SuiGraphQLClient as _l}from"@mysten/sui/graphql";import{SuiGrpcClient as yl}from"@mysten/sui/grpc";import{DeepBookClient as al}from"@mysten/deepbook-v3";import{bcs as N}from"@mysten/sui/bcs";import{Transaction as se,coinWithBalance as Ra}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as ot,normalizeStructTag as Et,normalizeSuiAddress as qa,normalizeSuiObjectId as ol}from"@mysten/sui/utils";import{Base64 as cl}from"js-base64";import{coinWithBalance as ya}from"@mysten/sui/transactions";var Vu={REQUEST_PARAMS:"requestParams",METHOD_NAME:"methodName"},Mi=class extends Error{constructor(t,r,i){super(t);this.code=r;this.details=i;this.name=this.constructor.name}toJSON(){return{name:this.name,message:this.message,code:this.code,details:this.details}}toString(){return JSON.stringify(this.toJSON())}static isErrorCode(t,r){return t instanceof Mi&&t.code===r}},sn=Mi;on(sn,"DETAILS_KEYS",Vu);var Ai=class extends sn{constructor(e,t,r){super(e,t||"UnknownError",r)}static isCommonErrorCode(e,t){return this.isErrorCode(e,t)}};var Oi=(n,e,t)=>{throw new Ai(e,n,t)};import{SUI_TYPE_ARG as Wu,normalizeStructTag as Hu,normalizeSuiObjectId as ji}from"@mysten/sui/utils";var zu=/^[-+]?[0-9A-Fa-f]+\.?[0-9A-Fa-f]*?$/;function pa(n){return n.startsWith("0x")?n:`0x${n}`}function Ei(n){return n.startsWith("0x")?`${n.slice(2)}`:n}function Gu(n,e=4,t=4){let r=Math.max(e,1),i=Math.max(t,1);return`${n.slice(0,r+2)} ... ${n.slice(-i)}`}function sh(n,e=4,t=4){return Gu(pa(n),e,t)}function ah(n,e={leadingZero:!0}){if(typeof n!="string")return!1;let t=n;if(e.leadingZero){if(!n.startsWith("0x"))return!1;t=t.substring(2)}return zu.test(t)}function Zu(n){if(!Buffer.isBuffer(n))if(Array.isArray(n))n=Buffer.from(n);else if(typeof n=="string")exports.isHexString(n)?n=Buffer.from(exports.padToEven(exports.stripHexPrefix(n)),"hex"):n=Buffer.from(n);else if(typeof n=="number")n=exports.intToBuffer(n);else if(n==null)n=Buffer.allocUnsafe(0);else if(n.toArray)n=Buffer.from(n.toArray());else throw new Error("invalid type");return n}function oh(n){return pa(Zu(n).toString("hex"))}function ch(n){let e=new ArrayBuffer(4),t=new DataView(e);for(let i=0;i<n.length;i++)t.setUint8(i,n.charCodeAt(i));return t.getUint32(0,!0)}function Qu(n){let e,t,r,i,s;e="";let a=n.length;for(t=0;t<a;)switch(r=n.charCodeAt(t++),r>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:e+=n.charAt(t-1);break;case 12:case 13:i=n.charCodeAt(t++),e+=String.fromCharCode((r&31)<<6|i&63);break;case 14:i=n.charCodeAt(t++),s=n.charCodeAt(t++),e+=String.fromCharCode((r&15)<<12|(i&63)<<6|(s&63)<<0);break}return e}function uh(n){let e="",t=Ei(n),r=t.length/2;for(let i=0;i<r;i++)e+=String.fromCharCode(Number.parseInt(t.substr(i*2,2),16));return Qu(e)}var Ku=0,ga=1,Xu=2;function ma(n,e){return n===e?Ku:n<e?ga:Xu}function Ju(n,e){let t=0,r=n.length<=e.length?n.length:e.length,i=ma(n.length,e.length);for(;t<r;){let s=ma(n.charCodeAt(t),e.charCodeAt(t));if(t+=1,s!==0)return s}return i}function mh(n,e){return Ju(n,e)===ga}function fa(n,...e){let t=Array.isArray(e[e.length-1])?e.pop():[],i=[n,...e].filter(Boolean).join("::");return t&&t.length&&(i+=`<${t.join(", ")}>`),i}function fh(n){return n.split("::")[0]}function nr(n){try{let e=n.replace(/\s/g,""),r=e.match(/(<.+>)$/)?.[0]?.match(/(\w+::\w+::\w+)(?:<.*?>(?!>))?/g);if(r){e=e.slice(0,e.indexOf("<"));let u={...nr(e),type_arguments:r.map(l=>nr(l).source_address)};return u.type_arguments=u.type_arguments.map(l=>nt.isSuiCoin(l)?l:nr(l).source_address),u.source_address=fa(u.full_address,u.type_arguments),u}let i=e.split("::"),a={full_address:e,address:e===Pi||e===_a?"0x2":ji(i[0]),module:i[1],name:i[2],type_arguments:[],source_address:""};return a.full_address=`${a.address}::${a.module}::${a.name}`,a.source_address=fa(a.full_address,a.type_arguments),a}catch{return{full_address:n,address:"",module:"",name:"",type_arguments:[],source_address:n}}}function xi(n){return nr(n).source_address}function Yu(n){return n.toLowerCase().startsWith("0x")?ji(n):n}var gh=(n,e=!0)=>{let t=n.split("::"),r=t.shift(),i=ji(r);return e&&(i=Ei(i)),`${i}::${t.join("::")}`};function Ii(n){for(let e in n){let t=typeof n[e];if(t==="object")Ii(n[e]);else if(t==="string"){let r=n[e];n[e]=Yu(r)}}}var _h=Hu(Wu);import On from"decimal.js";function S(n){return On.isDecimal(n)?n:new On(n===void 0?0:n)}function Ri(n){return S(10).pow(S(n).abs())}var Cr=(n,e)=>{try{return S(n).toDP(e,On.ROUND_DOWN).toString()}catch{return n}},qi=(n,e)=>On.max(S(n),S(e));var Mh=1e3,Ah=500,Oh=100,Eh=100,jh=1e3,Pi="0x2::sui::SUI",_a="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",xh="SUI",Ih=450,Ph="0x0000000000000000000000000000000000000005",be=class{static totalBalance(e,t){let r=BigInt(0);return e.forEach(i=>{t===i.coin_type&&(r+=BigInt(i.balance))}),r}static getCoinAssets(e,t){let r=[];return t.forEach(i=>{xi(i.coin_type)===xi(e)&&r.push(i)}),r}static isSuiCoin(e){return nr(e).full_address===Pi}static selectCoinObjectIdGreaterThanOrEqual(e,t,r=[]){let i=be.selectCoinAssetGreaterThanOrEqual(e,t,r),s=i.selected_coins.map(u=>u.coin_object_id),a=i.remain_coins,o=i.selected_coins.map(u=>u.balance.toString());return{object_array:s,remain_coins:a,amount_array:o}}static selectCoinAssetGreaterThanOrEqual(e,t,r=[]){let i=be.sortByBalance(e.filter(l=>!r.includes(l.coin_object_id))),s=be.calculateTotalBalance(i);if(s<t)return{selected_coins:[],remain_coins:i};if(s===t)return{selected_coins:i,remain_coins:[]};let a=BigInt(0),o=[],u=[...i];for(;a<s;){let l=t-a,p=u.findIndex(m=>m.balance>=l);if(p!==-1){o.push(u[p]),u.splice(p,1);break}let f=u.pop();f.balance>0&&(o.push(f),a+=f.balance)}return{selected_coins:be.sortByBalance(o),remain_coins:be.sortByBalance(u)}}static sortByBalance(e){return e.sort((t,r)=>t.balance<r.balance?-1:t.balance>r.balance?1:0)}static sortByBalanceDes(e){return e.sort((t,r)=>t.balance>r.balance?-1:t.balance<r.balance?0:1)}static calculateTotalBalance(e){return e.reduce((t,r)=>t+r.balance,BigInt(0))}static buildCoinForAmount(e,t,r,i,s=!0,a=!0){let o=be.getCoinAssets(i,t);if(r===BigInt(0))return this.buildZeroValueCoin(t,e,i,s);let u=be.calculateTotalBalance(o);if(u<r)throw new Error(`The amount(${u}) is Insufficient balance for ${i} , expect ${r} `);return this.buildCoin(e,t,o,r,i,s,a)}static buildCoinWithBalance(e,t,r){return e===BigInt(0)&&be.isSuiCoin(t)?r.add(ya({balance:e,useGasCoin:!1})):r.add(ya({balance:e,type:t}))}static buildVectorCoin(e,t,r,i,s,a=!0){if(be.isSuiCoin(s)){let m=e.splitCoins(e.gas,[e.pure.u64(i)]);return{selected_coins:[],target_coin:m,remain_coins:t,target_coin_amount:i.toString(),is_mint_zero_coin:!1,original_spited_coin:e.gas}}let{original_spited_coin:o,target_coin:u,target_coin_amount:l,remain_coins:p,selected_coins:f}=this.buildSpitTargeCoin(e,i,r,a);return a?{target_coin:e.makeMoveVec({elements:[u]}),selected_coins:f,remain_coins:p,target_coin_amount:l,is_mint_zero_coin:!1,original_spited_coin:o}:{selected_coins:f,target_coin:e.makeMoveVec({elements:f.map(m=>e.object(m))}),remain_coins:p,target_coin_amount:l,is_mint_zero_coin:!1}}static buildOneCoin(e,t,r,i,s=!0){if(be.isSuiCoin(i)){if(r===0n&&t.length>1){let u=be.selectCoinObjectIdGreaterThanOrEqual(t,r);return{selected_coins:u.object_array,target_coin:e.object(u.object_array[0]),remain_coins:u.remain_coins,target_coin_amount:u.amount_array[0],is_mint_zero_coin:!1}}let a=be.selectCoinObjectIdGreaterThanOrEqual(t,r),o=e.splitCoins(e.gas,[e.pure.u64(r)]);return{selected_coins:[],target_coin:o,remain_coins:a.remain_coins,target_coin_amount:r.toString(),is_mint_zero_coin:!1,original_spited_coin:e.gas}}return this.buildSpitTargeCoin(e,r,t,s)}static buildSpitTargeCoin(e,t,r,i){let s=be.selectCoinObjectIdGreaterThanOrEqual(r,t),a=s.amount_array.reduce((k,C)=>Number(k)+Number(C),0).toString(),o=s.object_array,[u,...l]=o,p=e.object(u),f=p,m=s.amount_array.reduce((k,C)=>Number(k)+Number(C),0).toString(),y;return l.length>0&&e.mergeCoins(p,l.map(k=>e.object(k))),i&&Number(a)>Number(t)&&(f=e.splitCoins(p,[e.pure.u64(t)]),y=p),{original_spited_coin:y,target_coin:f,target_coin_amount:m,remain_coins:s.remain_coins,selected_coins:s.object_array,is_mint_zero_coin:!1}}static buildCoin(e,t,r,i,s,a=!0,o=!0){return a?this.buildVectorCoin(e,t,r,i,s,o):this.buildOneCoin(e,r,i,s,o)}static buildZeroValueCoin(e,t,r,i=!0){let s=this.callMintZeroValueCoin(t,r),a;return i?a=t.makeMoveVec({elements:[s]}):a=s,{target_coin:a,remain_coins:e,selected_coins:[],is_mint_zero_coin:!0,target_coin_amount:"0"}}static buildCoinForAmountInterval(e,t,r,i,s=!0,a=!0){let o=be.getCoinAssets(i,t);if(r.amount_first===BigInt(0))return o.length>0?this.buildCoin(e,[...t],[...o],r.amount_first,i,s,a):this.buildZeroValueCoin(t,e,i,s);let u=be.calculateTotalBalance(o);if(u>=r.amount_first)return this.buildCoin(e,[...t],[...o],r.amount_first,i,s,a);if(u<r.amount_second)throw new Error(`The amount(${u}) is Insufficient balance for ${i} , expect ${r.amount_second} `);return this.buildCoin(e,[...t],[...o],r.amount_second,i,s,a)}static fromBalance(e,t,r){return r.moveCall({target:"0x2::coin::from_balance",typeArguments:[t],arguments:[e]})}static intoBalance(e,t,r){return r.moveCall({target:"0x2::coin::into_balance",typeArguments:[t],arguments:[typeof e=="string"?r.object(e):e]})}static mintBalanceZero(e,t){return t.moveCall({target:"0x2::balance::zero",typeArguments:[e],arguments:[]})}static destroyBalanceZero(e,t,r){return r.moveCall({target:"0x2::balance::destroy_zero",typeArguments:[t],arguments:[e]})}static getCoinAmountObjId(e,t){let r=e.amount_coin_array.find(i=>!i.used&&S(i.amount).eq(t)?(i.used=!0,!0):!1);return r?r.coin_object_id:Oi("CoinNotFound",`Coin not found for ${t} ${e.coin_type}`)}static buildMultiCoinInput(e,t,r,i){let s=be.getCoinAssets(r,t);if(be.isSuiCoin(r)){let m=e.splitCoins(e.gas,i.map(k=>e.pure.u64(k)));return{amount_coin_array:i.map((k,C)=>({coin_object_id:m[C],amount:k.toString(),used:!1})),coin_type:r,remain_coins:s}}let a=i.reduce((m,y)=>m+y,BigInt(0)),o=be.selectCoinObjectIdGreaterThanOrEqual(s,a);if(o.object_array.length===0)return Oi("InsufficientBalance",`No enough coins for ${r} expect ${a} actual ${be.calculateTotalBalance(s)}`);let[u,...l]=o.object_array;l.length>0&&e.mergeCoins(u,[...l]);let p=e.splitCoins(u,i.map(m=>e.pure.u64(m)));return{amount_coin_array:i.map((m,y)=>({coin_object_id:p[y],amount:m.toString(),used:!1})),remain_coins:o.remain_coins,coin_type:r}}},nt=be;on(nt,"callMintZeroValueCoin",(e,t)=>e.moveCall({target:"0x2::coin::zero",typeArguments:[t]}));var ba=6e4,wa=3e5,Lr=864e5;function Bi(n){return Date.parse(new Date().toString())+n}var En=class{overdueTime;value;constructor(e,t=0){this.overdueTime=t,this.value=e}isValid(){return this.value===null?!1:this.overdueTime===0?!0:!(Date.parse(new Date().toString())>this.overdueTime)}};import{Ed25519Keypair as va}from"@mysten/sui/keypairs/ed25519";import{Secp256k1Keypair as ka}from"@mysten/sui/keypairs/secp256k1";import{fromBase64 as Ca,fromHex as Ta}from"@mysten/sui/utils";function ir(n,e){let t=Ri(S(e));return Number(S(n).mul(t))}function Uh(n,e=32){return BigInt.asUintN(e,BigInt(n)).toString()}function Lh(n,e=32){return Number(BigInt.asIntN(e,BigInt(n)))}function Tr(n,e){let t=Ri(S(e));return Number(S(n).div(t))}function Vh(n,e="hex"){if(n instanceof Uint8Array){let r=Buffer.from(n);return va.fromSecretKey(new Uint8Array(r))}let t=e==="hex"?Ta(n):Ca(n);return va.fromSecretKey(t)}function zh(n,e="hex"){if(n instanceof Uint8Array){let r=Buffer.from(n);return ka.fromSecretKey(new Uint8Array(r))}let t=e==="hex"?Ta(n):Ca(n);return ka.fromSecretKey(t)}var Sa=async n=>new Promise(e=>{setTimeout(()=>{e(1)},n)});async function Ma(n,e=!0){n.getData().commands.forEach((t,r)=>{e&&console.log(`transaction ${r}: `,t)})}var Aa={coinType:"0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP",decimals:6},Oa={coinType:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",decimals:6};function Di(...n){console.log("DeepbookV3_Utils_Sdk###",...n)}function Ea(n){return n.data}function el(n){if(n.error&&"object_id"in n.error&&"version"in n.error&&"digest"in n.error){let{error:e}=n;return{objectId:e.object_id,version:e.version,digest:e.digest}}}function tl(n){if(n.error&&"object_id"in n.error&&!("version"in n.error)&&!("digest"in n.error))return n.error.object_id}function rl(n){if("reference"in n)return n.reference;let e=Ea(n);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:el(n)}function ja(n){return"objectId"in n?n.objectId:rl(n)?.objectId??tl(n)}function Wh(n){return n.data!==void 0}function nl(n){return n.content!==void 0}function il(n){let e="data"in n?Ea(n):n;if(!(!e||!nl(e)||e.content.dataType!=="moveObject"))return e.content}function xa(n){let e=il(n)?.fields;if(e)return"fields"in e?e.fields:e}import{bcs as le}from"@mysten/sui/bcs";var Ia=le.struct("GetCetusBalanceManagerList",{owner:le.Address,cetus_balance_managers:le.vector(le.Address),deepbook_balance_managers:le.vector(le.Address)}),Pa=le.struct("Account",{epoch:le.u64(),open_orders:le.vector(le.u128()),taker_volume:le.u128(),maker_volume:le.u128(),active_stake:le.u64(),inactive_stake:le.u64(),created_proposal:le.bool(),voted_proposal:le.option(le.Address),unclaimed_rebates:le.struct("Balances",{base:le.u64(),quote:le.u64(),deep:le.u64()}),settled_balances:le.struct("Balances",{base:le.u64(),quote:le.u64(),deep:le.u64()}),owed_balances:le.struct("Balances",{base:le.u64(),quote:le.u64(),deep:le.u64()})});import{Base64 as sl}from"js-base64";function ie(n){let e=n?.bcs??n?.[0];if(e instanceof Uint8Array)return new Uint8Array(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(Array.isArray(e))return Uint8Array.from(e);if(typeof e=="string"&&e.length>0)return Uint8Array.from(sl.toUint8Array(e));throw new Error("Missing simulation return bytes")}function ut(n){let e=n?.FailedTransaction?.status?.error??n?.Transaction?.status?.error;return typeof e=="string"?e:e?.message??JSON.stringify(e??"Unknown error")}function J(n,e){if(n?.$kind==="FailedTransaction"||!n?.commandResults?.length)throw new Error(`${e}: ${ut(n)}`)}var $i=1e6,Tt=1e9,ul={coinType:"0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP",decimals:6},ll={coinType:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",decimals:6},jn=class{_sdk;_deep;_cache={};constructor(e){this._sdk=e,this._deep=e.sdkOptions.network==="mainnet"?ll:ul}get sdk(){return this._sdk}get deepCoin(){return this._deep}createAndShareBalanceManager(){let e=new se,t=e.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new`});return e.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::cetus_balance_manager::check_and_add_deepbook_balance_manager_indexer`,arguments:[e.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),t],typeArguments:[]}),e.moveCall({target:"0x2::transfer::public_share_object",arguments:[t],typeArguments:[`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::BalanceManager`]}),e}createAndDepsit({account:e,coin:t,amountToDeposit:r}){let i=new se;i.setSenderIfNotSet(e);let s=i.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new`}),a=Ra({type:t.coinType,balance:BigInt(r)});return i.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::deposit`,arguments:[s,a],typeArguments:[t.coinType]}),i.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::cetus_balance_manager::check_and_add_deepbook_balance_manager_indexer`,arguments:[i.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),s],typeArguments:[]}),i.moveCall({target:"0x2::transfer::public_share_object",arguments:[s],typeArguments:[`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::BalanceManager`]}),i}depositIntoManager({account:e,balanceManager:t,coin:r,amountToDeposit:i,tx:s}){let a=s||new se;if(t){a.setSenderIfNotSet(e);let o=Ra({type:r.coinType,balance:BigInt(i)});return a.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::deposit`,arguments:[a.object(t),o],typeArguments:[r.coinType]}),a}return null}async withdrawFromManager({account:e,balanceManager:t,coin:r,amountToWithdraw:i,returnAssets:s,txb:a}){let o=a||new se,u=o.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::withdraw`,arguments:[o.object(t),o.pure.u64(i)],typeArguments:[r.coinType]});if(s)return u;if(nt.isSuiCoin(r.coinType))o.transferObjects([u],e);else{let l=await this._sdk.fullClient.getOwnerCoinAssets(e,r.coinType),p=nt.buildCoinForAmount(o,l,BigInt(0),r.coinType,!1);p.target_coin?(o.mergeCoins(p.target_coin,[u]),p.is_mint_zero_coin&&o.transferObjects([p.target_coin],e)):o.transferObjects([u],e)}return o}withdrawManagersFreeBalance({account:e,balanceManagers:t,tx:r=new se}){for(let i in t)t[i].forEach(a=>{let o=r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::withdraw`,arguments:[r.object(i),r.pure.u64(a.amount)],typeArguments:[a.coinType]});r.transferObjects([o],e)});return r}async getBalanceManager(e,t=!0){let r=`getBalanceManager_${e}`,i=this.getCache(r,t);if(!t&&i!==void 0)return i;try{let s=new se;s.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::get_balance_managers_by_owner`,arguments:[s.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),s.pure.address(e)],typeArguments:[]});let a=await this.sdk.fullClient.sendSimulationTransaction(s,e);J(a,"Failed to get balance managers");let u=a.Transaction?.events?.find(A=>A.eventType===`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::GetCetusBalanceManagerList`);if(u?.bcs==null)throw new Error("GetCetusBalanceManagerList event not found or missing BCS payload (check simulation / RPC transport)");let p=Ia.parse(new Uint8Array(u.bcs))?.deepbook_balance_managers||[],f=await this._sdk.fullClient.batchGetObjects(p,{json:!0}),m={};for(let A=0;A<f.length;A++){let E=f[A],q=E?.data?.objectId??E?.objectId,x=E?.json??E?.data?.content?.fields,U=x?.allow_listed?.fields?.contents??x?.allow_listed?.contents??x?.balance_manager?.allow_listed?.contents;q&&Array.isArray(U)&&U.length>0&&(m[q]=U)}let y=await this.batchGetObjectsByIdMap(m),k=qa(e),C=[];return p.forEach(A=>{let E=y[A]??[],q=E.filter(U=>{let ee=this.getSuiObjectOwnerAddress(U);return ee!==void 0&&qa(ee)===k});E.length===0||q.length===E.length?C.push({balanceManager:A,cetusBalanceManager:"",capOk:!0}):C.push({balanceManager:A,cetusBalanceManager:"",capOk:!1})}),this.updateCache(r,C,864e5),C||[]}catch(s){throw s instanceof Error?s:new Error(String(s))}}async batchGetObjectsByIdMap(e){let t=Object.entries(e).filter(([,a])=>Array.isArray(a)&&a.length>0);if(t.length===0)return{};let r=[...new Set(t.flatMap(([,a])=>a))],i=await this._sdk.fullClient.batchGetObjects(r,{json:!0}),s=new Map;return i.forEach(a=>{let o=a?.data?.objectId??a?.objectId;o&&s.set(o,a)}),Object.fromEntries(t.map(([a,o])=>[a,o.map(u=>s.get(u)).filter(Boolean)]))}getSuiObjectOwnerAddress(e){let r=e?.owner;if(r&&typeof r=="object"){if(r.$kind==="AddressOwner"&&typeof r.AddressOwner=="string")return r.AddressOwner;if(r.$kind==="ObjectOwner"&&typeof r.ObjectOwner=="string")return r.ObjectOwner;if(typeof r.AddressOwner=="string")return r.AddressOwner;if(typeof r.ObjectOwner=="string")return r.ObjectOwner}let i=e.data?.owner;if(!(!i||typeof i!="object")){if(typeof i.AddressOwner=="string")return i.AddressOwner;if(typeof i.ObjectOwner=="string")return i.ObjectOwner}}withdrawSettledAmounts({poolInfo:e,balanceManager:t},r=new se){let i=r.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::generate_proof_as_owner`,arguments:[r.object(t)]});return r.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::withdraw_settled_amounts`,arguments:[r.object(e.address),r.object(t),i],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]}),r}async getManagerBalance({account:e,balanceManager:t,coins:r}){try{let i=new se;r.forEach(o=>{i.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::balance`,arguments:[i.object(t)],typeArguments:[o.coinType]})});let s=await this.sdk.fullClient.sendSimulationTransaction(i,e);J(s,"Failed to get balance manager balances");let a={};return s?.commandResults?.forEach((o,u)=>{let l=r[u],p=o.returnValues[0]?.bcs,f=N.U64.parse(new Uint8Array(p)),m=S(f),y=m.eq(0)?"0":m.div(Math.pow(10,l.decimals)).toString();a[l.coinType]={adjusted_balance:y,balance:m.toString()}}),a}catch(i){throw i instanceof Error?i:new Error(String(i))}}async getAccountAllManagerBalance({account:e,coins:t}){try{let r=new se,i=await this.getBalanceManager(e,!0);if(!Array.isArray(i)||i.length===0)return{};i.forEach(o=>{t.forEach(u=>{r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::balance`,arguments:[r.object(o.balanceManager)],typeArguments:[u.coinType]})})});let s=await this.sdk.fullClient.sendSimulationTransaction(r,e);J(s,"Failed to get all balance manager balances");let a={};return i.forEach((o,u)=>{let l={},p=u*t.length;t.forEach((f,m)=>{let y=p+m,k=s.commandResults?.[y];if(k){let C=k.returnValues[0].bcs,A=N.U64.parse(new Uint8Array(C)),E=S(A),q=E.eq(0)?"0":E.div(Math.pow(10,f.decimals)).toString();l[f.coinType]={adjusted_balance:q,balance:E.toString()}}}),a[o.balanceManager]=l}),a}catch(r){throw r instanceof Error?r:new Error(String(r))}}async getMarketPrice(e){try{let t=new se;t.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::mid_price`,arguments:[t.object(e.address),t.object(ot)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let r=await this._sdk.fullClient.sendSimulationTransaction(t,this._sdk.sdkOptions.simulationAccount.address,!1);J(r,"Failed to get market price");let i=ie(r.commandResults[0]?.returnValues?.[0]),s=Number(N.U64.parse(i)),a=Math.pow(10,e.baseCoin.decimals).toString(),o=Math.pow(10,e.quoteCoin.decimals).toString();return S(s).mul(a).div(o).div(Tt).toString()}catch(t){return Di("getMarketPrice ~ error:",t),"0"}}async getPools(e=!1){let t="Deepbook_getPools",r=this.getCache(t,e);if(r!==void 0)return r;let i=await this._sdk.fullClient.queryEventsByGraphQL({MoveEventType:`${this._sdk.sdkOptions.deepbook.package_id}::pool::PoolCreated`},"all"),s=/<([^>]+)>/,a=[];return i?.data?.forEach(o=>{let u=o?.parsedJson,l=o.type.match(s);if(l){let f=l[1].split(", ");a.push({...u,baseCoinType:f[0],quoteCoinType:f[1]})}}),this.updateCache(t,a,864e5),a}async getQuoteQuantityOut(e,t,r){let i=new se;i.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_quote_quantity_out`,arguments:[i.object(e.address),i.pure.u64(t),i.object(ot)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let s=await this._sdk.fullClient.sendSimulationTransaction(i,r,!1);J(s,"Failed to get quote quantity out");let a=String(N.U64.parse(ie(s.commandResults[0].returnValues[0]))),o=String(N.U64.parse(ie(s.commandResults[0].returnValues[1]))),u=String(N.U64.parse(ie(s.commandResults[0].returnValues[2])));return{baseQuantityDisplay:S(t).div(Math.pow(10,e.baseCoin.decimals)).toString(),baseOutDisplay:S(a).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:S(o).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:S(u).div($i).toString(),baseQuantity:t,baseOut:a,quoteOut:o,deepRequired:u}}async getBaseQuantityOut(e,t,r){let i=new se;i.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_base_quantity_out`,arguments:[i.object(e.address),i.pure.u64(t),i.object(ot)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let s=await this._sdk.fullClient.sendSimulationTransaction(i,r,!1);J(s,"Failed to get base quantity out");let a=String(N.U64.parse(ie(s.commandResults[0].returnValues[0]))),o=String(N.U64.parse(ie(s.commandResults[0].returnValues[1]))),u=String(N.U64.parse(ie(s.commandResults[0].returnValues[2])));return{quoteQuantityDisplay:S(t).div(Math.pow(10,e.quoteCoin.decimals)).toString(),baseOutDisplay:S(a).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:S(o).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:S(u).div($i).toString(),quoteQuantity:t,baseOut:a,quoteOut:o,deepRequired:u}}async getQuantityOut(e,t,r,i){let s=new se;s.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_quantity_out`,arguments:[s.object(e.address),s.pure.u64(t),s.pure.u64(r),s.object(ot)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let a=await this._sdk.fullClient.sendSimulationTransaction(s,i,!1);J(a,"Failed to get quantity out");let o=Number(N.U64.parse(ie(a.commandResults[0].returnValues[0]))),u=Number(N.U64.parse(ie(a.commandResults[0].returnValues[1]))),l=Number(N.U64.parse(ie(a.commandResults[0].returnValues[2])));return{baseQuantityDisplay:S(t).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteQuantityDisplay:S(r).div(Math.pow(10,e.quoteCoin.decimals)).toString(),baseOutDisplay:S(o).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:S(u).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:S(l).div($i).toString(),baseQuantity:t,quoteQuantity:r,baseOut:o,quoteOut:u,deepRequired:l}}async getReferencePool(e){let t=await this.getPools(),r=e.baseCoin.coinType,i=e.quoteCoin.coinType,s=this._deep.coinType;for(let a=0;a<t.length;a++){let o=t[a];if(o.address===e.address)continue;let u=[o.baseCoinType,o.quoteCoinType];if(o.baseCoinType===s&&(u.includes(r)||u.includes(i)))return o}return null}async updateDeepPrice(e,t){let r=await this.getReferencePool(e);return r?(t.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::add_deep_price_point`,arguments:[t.object(e.address),t.object(r.pool_id),t.object(ot)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType,r.baseCoinType,r.quoteCoinType]}),t):null}async estimatedMaxFee(e,t,r,i,s,a,o){let u=this.deepCoin;try{let{taker_fee:l,maker_fee:p}=e,f=S(l).div(Tt).toString(),m=S(p).div(Tt).toString(),y=await this.getMarketPrice(e);console.log("\u{1F680} ~ DeepbookUtilsModule ~ estimatedMaxFee ~ marketPrice:",y);let k=a?r:y!=="0"?y:o;if(k==="0")throw new Error("Cannot get market price");let C=Math.pow(10,e.baseCoin.decimals).toString(),A=Math.pow(10,e.quoteCoin.decimals).toString(),E=S(k).div(C).mul(A).mul(Tt).toString();if(i){let U=await this.getMarketPrice(e),F=S(a?r:U!=="0"?U:o).div(C).mul(A).mul(Tt).toString(),oe=await this.getOrderDeepPrice(e);if(!oe)throw new Error("Cannot get deep price");let ae=S(r).div(C).mul(A).mul(Tt),ce=qi(F,ae),we=S(t).mul(S(f)).mul(S(oe.deep_per_asset)).div(S(Tt)),ve=S(t).mul(S(m)).mul(S(oe.deep_per_asset)).div(S(Tt));oe.asset_is_base||(we=we.mul(ce).div(S(Tt)),ve=ve.mul(ce).div(S(Tt)));let ft=we.ceil().toString(),ue=ve.ceil().toString();return{takerFee:ft,makerFee:ue,takerFeeDisplay:Tr(ft,u.decimals).toString(),makerFeeDisplay:Tr(ue,u.decimals).toString(),feeType:u.coinType}}if(s){let U=qi(E,a?r:y),ee=S(t).mul(U).mul(S(f).mul(1.25)).div(S(Tt)).ceil().toFixed(0),F=S(t).mul(U).mul(S(m).mul(1.25)).div(S(Tt)).ceil().toFixed(0);return{takerFee:ee,makerFee:F,takerFeeDisplay:Tr(ee,e.quoteCoin.decimals).toString(),makerFeeDisplay:Tr(F,e.quoteCoin.decimals).toString(),feeType:e.quoteCoin.coinType}}let q=S(t).mul(S(f).mul(1.25)).ceil().toFixed(0),x=S(t).mul(S(m).mul(1.25)).ceil().toFixed(0);return{takerFee:q,makerFee:x,takerFeeDisplay:Tr(q,e.baseCoin.decimals).toString(),makerFeeDisplay:Tr(x,e.baseCoin.decimals).toString(),feeType:e.baseCoin.coinType}}catch(l){throw l instanceof Error?l:new Error(String(l))}}async getOrderDeepPrice(e,t=!0){let r=`getOrderDeepPrice_${e.address}}`,i=this.getCache(r);if(i!==void 0)return i;try{let s=new se,a=!1;t&&e?.baseCoin?.coinType!==this._deep.coinType&&e?.quoteCoin?.coinType!==this._deep.coinType&&await this.updateDeepPrice(e,s)&&(a=!0),s.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_order_deep_price`,arguments:[s.object(e.address)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let o=await this._sdk.fullClient.sendSimulationTransaction(s,this._sdk.sdkOptions.simulationAccount.address,!1);J(o,"Failed to get order deep price");let u=[...o.commandResults].reverse().find(p=>p?.returnValues?.[0]),l=this.parseOrderDeepPrice(ie(u?.returnValues?.[0]));return this.updateCache(r,l,6e4),l}catch(s){return t?(await Sa(2e3),this.getOrderDeepPrice(e,!1)):(Di("getOrderDeepPrice ~ error:",s),null)}}parseOrderDeepPrice(e){let t=N.struct("OrderDeepPrice",{asset_is_base:N.bool(),deep_per_asset:N.u64()}).parse(e);return{asset_is_base:t.asset_is_base,deep_per_asset:Number(t.deep_per_asset)}}getCoinAssets(e,t,r){return nt.buildCoinWithBalance(BigInt(S(t).abs().ceil().toString()),e,r)}async getTransactionRelatedBalance(e,t,r,i,s,a,o){let u=this.deepCoin;if(!o)return{baseManagerBlance:"0",quoteManagerBlance:"0",feeManaerBalance:"0"};try{let l=[{coinType:e.baseCoin.coinType,decimals:e.baseCoin.decimals},{coinType:e.quoteCoin.coinType,decimals:e.quoteCoin.decimals}];i&&l.push(u);let p=await this.getManagerBalance({account:s,balanceManager:o,coins:l}),f=p?.[t]?.balance||"0",m=p?.[r]?.balance||"0",y=a&&p?.[u.coinType]?.balance||"0";return{baseManagerBlance:f,quoteManagerBlance:m,feeManaerBalance:y}}catch(l){throw l instanceof Error?l:new Error(String(l))}}getFeeAsset(e,t,r,i,s,a,o,u,l){let p=S(e).gt(0)&&u,f="0";if(!p)return{feeAsset:this.getEmptyCoin(l,t),haveDepositFee:"0"};if(a||o){let m=S(s).sub(a?i:r);f=m.lte(0)?e:m.sub(e).lt(0)?m.sub(e).toString():"0"}else f=S(s).sub(e).lt("0")?S(s).sub(e).abs().toString():"0";return{feeAsset:S(f).gt("0")?this.getCoinAssets(t,f,l):this.getEmptyCoin(l,t),haveDepositFee:f}}async getTransactionRelatedAssets(e,t,r,i,s,a,o,u,l){try{let p=this.deepCoin,f=Et(e.baseCoin.coinType),m=Et(e.quoteCoin.coinType),y=f===p.coinType,k=m===p.coinType,C=!y&&!k,{baseManagerBlance:A,quoteManagerBlance:E,feeManaerBalance:q}=await this.getTransactionRelatedBalance(e,f,m,C,a,o,u);console.log("\u{1F680}\u{1F680}\u{1F680} ~ deepbookUtilsModule.ts:897 ~ DeepbookUtilsModule ~ getTransactionRelatedAssets ~ quoteManagerBlance:",{baseManagerBlance:A,quoteManagerBlance:E});let x,U,ee=!1;if(s){o||(r=S(r).add(S(i)).toString());let oe=S(E).sub(r).toString();S(oe).lt(0)?(ee=!0,U=this.getCoinAssets(m,oe,l)):U=this.getEmptyCoin(l,m),x=this.getEmptyCoin(l,f)}else{o||(t=S(t).add(S(i)).toString());let oe=S(A).sub(t).toString();S(oe).lt(0)?(ee=!0,x=this.getCoinAssets(f,oe,l)):x=this.getEmptyCoin(l,f),U=this.getEmptyCoin(l,m)}let F=this.getFeeAsset(i,p.coinType,t,r,q,k,y,o,l);return{baseAsset:x,quoteAsset:U,feeAsset:F,haveDeposit:ee}}catch(p){throw p instanceof Error?p:new Error(String(p))}}async getMarketTransactionRelatedAssets(e,t,r,i,s,a,o,u,l,p){try{let f=this.deepCoin,m=Et(e.baseCoin.coinType),y=Et(e.quoteCoin.coinType),k=m===f.coinType,C=y===f.coinType,A=!k&&!C,E=await this.getTransactionRelatedBalance(e,m,y,A,a,o,u),{feeManaerBalance:q}=E,x=S(E.baseManagerBlance).add(S(p?.base||"0")).toString(),U=S(E.quoteManagerBlance).add(S(p?.quote||"0")).toString(),ee;o&&S(q).lt(i)?ee=this.getCoinAssets(f.coinType,S(i).sub(q).toString(),l):ee=this.getEmptyCoin(l,f.coinType);let F,oe;if(s){o||(r=S(r).add(S(i)).toString());let ae=S(U).sub(r).toString();if(S(ae).lt(0)){let ce;S(U).gt(0)&&(ce=await this.withdrawFromManager({account:a,balanceManager:u,coin:e.quoteCoin,amountToWithdraw:U,returnAssets:!0,txb:l}));let we=this.getCoinAssets(y,ae,l);ce&&l.mergeCoins(we,[ce]),oe=we}else oe=await this.withdrawFromManager({account:a,balanceManager:u,coin:e.quoteCoin,amountToWithdraw:r,returnAssets:!0,txb:l});F=this.getEmptyCoin(l,m)}else{o||(t=S(t).add(S(i)).toString());let ae=S(x).sub(t).toString();if(S(ae).lt(0)){let ce;S(x).gt(0)&&(ce=await this.withdrawFromManager({account:a,balanceManager:u,coin:e.baseCoin,amountToWithdraw:x,returnAssets:!0,txb:l}));let we=this.getCoinAssets(m,ae,l);ce&&l.mergeCoins(we,[ce]),F=we}else F=await this.withdrawFromManager({account:a,balanceManager:u,coin:e.baseCoin,amountToWithdraw:t,returnAssets:!0,txb:l});oe=this.getEmptyCoin(l,y)}return{baseAsset:F,quoteAsset:oe,feeAsset:ee}}catch(f){throw f instanceof Error?f:new Error(String(f))}}async createDepositThenPlaceLimitOrder({poolInfo:e,priceInput:t,quantity:r,orderType:i,isBid:s,maxFee:a,account:o,payWithDeep:u,expirationTimestamp:l=Date.now()+31536e8}){try{let p=this.deepCoin,f=e.address,m=e.baseCoin.decimals,y=e.quoteCoin.decimals,k=e.baseCoin.coinType,C=e.quoteCoin.coinType,A=S(t).mul(10**(y-m+9)).toString(),E=Et(k),q=Et(C),x=new se,U,ee;if(s){let ce=S(t).mul(S(r).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();u||(ce=S(ce).add(S(a)).toString()),ee=nt.buildCoinWithBalance(BigInt(ce),q,x)}else{let ce=r;u||(ce=S(r).abs().add(S(a)).toString()),U=nt.buildCoinWithBalance(BigInt(ce),E,x)}let F=u?S(a).gt(0)?nt.buildCoinWithBalance(BigInt(S(a).abs().ceil().toString()),p.coinType,x):this.getEmptyCoin(x,p.coinType):this.getEmptyCoin(x,p.coinType),oe=x.moveCall({typeArguments:[s?k:C],target:"0x2::coin::zero",arguments:[]}),ae=[x.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),x.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),x.object(f),s?oe:U,s?ee:oe,F,x.pure.u8(i),x.pure.u8(0),x.pure.u64(A),x.pure.u64(r),x.pure.bool(s),x.pure.bool(!1),x.pure.u64(l),x.object(ot)];return x.moveCall({typeArguments:[E,q],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_limit_order`,arguments:ae}),x}catch(p){throw p instanceof Error?p:new Error(String(p))}}getEmptyCoin(e,t){return nt.buildCoinWithBalance(BigInt(0),t,e)}async createDepositThenPlaceMarketOrder({poolInfo:e,quantity:t,isBid:r,maxFee:i,account:s,payWithDeep:a,slippage:o=.01}){try{let u=e.address,l=e.baseCoin.coinType,p=e.quoteCoin.coinType,f=Et(l),m=Et(p),y=new se,k,C,A=t,E,q=await this.getOrderBook(e,"all",6);if(r){let ee=q?.ask?.[0]?.price||"0",F=S(ee).mul(S(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();E=S(F).plus(S(F).mul(o)).ceil().toString()}else{let ee=await q?.bid?.[0]?.price||"0",F=S(ee).mul(S(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();E=S(F).minus(S(F).mul(o)).floor().toString()}r?(a||(E=S(E).add(S(i)).toString()),C=this.getCoinAssets(m,E,y),k=this.getEmptyCoin(y,f)):(a||(A=S(A).add(S(i)).toString()),C=this.getEmptyCoin(y,m),k=this.getCoinAssets(f,A,y));let x=a?S(i).gt(0)?nt.buildCoinWithBalance(BigInt(S(i).abs().ceil().toString()),this.deepCoin.coinType,y):this.getEmptyCoin(y,this.deepCoin.coinType):this.getEmptyCoin(y,this.deepCoin.coinType),U=[y.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),y.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),y.object(u),k,C,x,y.pure.u8(0),y.pure.u64(t),y.pure.bool(r),y.pure.bool(a),y.pure.u64(E),y.object(ot)];return y.moveCall({typeArguments:[f,m],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_market_order_v2`,arguments:U}),y}catch(u){throw u instanceof Error?u:new Error(String(u))}}async placeLimitOrder({balanceManager:e,poolInfo:t,priceInput:r,quantity:i,isBid:s,orderType:a,maxFee:o,account:u,payWithDeep:l,expirationTimestamp:p=Date.now()+31536e8}){try{let f=this.deepCoin,m=S(r).mul(10**(t.quoteCoin.decimals-t.baseCoin.decimals+9)).toString(),y=t.baseCoin.coinType,k=t.quoteCoin.coinType,C=new se,A=s?S(r).mul(S(i).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString():"0",E=s?"0":i,{baseAsset:q,quoteAsset:x,feeAsset:U,haveDeposit:ee}=await this.getTransactionRelatedAssets(t,E,A,o,s,u,l,e,C);if(ee){let ae=[C.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),C.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),C.object(t.address),C.object(e),q,x,U.feeAsset,C.pure.u8(a),C.pure.u8(0),C.pure.u64(m),C.pure.u64(i),C.pure.bool(s),C.pure.bool(l),C.pure.u64(p),C.object(ot)];return C.moveCall({typeArguments:[y,k],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_limit_order_by_owner`,arguments:ae}),C}let F=new se;S(U.haveDepositFee).gt(0)&&this.depositIntoManager({account:u,balanceManager:e,coin:f,amountToDeposit:U.haveDepositFee,tx:F});let oe=[F.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),F.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),F.object(t.address),F.object(e),F.pure.u8(a),F.pure.u8(0),F.pure.u64(m),F.pure.u64(i),F.pure.bool(s),F.pure.bool(l),F.pure.u64(p),F.object(ot)];return F.moveCall({typeArguments:[y,k],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::place_limit_order`,arguments:oe}),F}catch(f){throw f instanceof Error?f:new Error(String(f))}}modifyOrder({balanceManager:e,poolInfo:t,orderId:r,newOrderQuantity:i}){let s=new se;return s.moveCall({typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::modify_order`,arguments:[s.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),s.object(e),s.object(t.address),s.pure.u128(r),s.pure.u64(i),s.object(ot)]}),s}async getBestAskprice(e){try{let{baseCoin:t,quoteCoin:r}=e,i=new se,s=await this.getMarketPrice(e),a=S(s).gt(0)?s:Math.pow(10,-1),o=Math.pow(10,6),u=S(a).mul(Math.pow(10,9+r.decimals-t.decimals)).toString(),l=S(o).mul(Math.pow(10,9+r.decimals-t.decimals)).toString();i.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_level2_range`,arguments:[i.object(e.address),i.pure.u64(u),i.pure.u64(l),i.pure.bool(!1),i.object(ot)],typeArguments:[t.coinType,r.coinType]});let p=this._sdk.sdkOptions.simulationAccount.address,f=await this._sdk.fullClient.sendSimulationTransaction(i,p,!1);J(f,"Failed to get level2 range");let m=[],y=N.vector(N.u64()).parse(ie(f.commandResults[0].returnValues[0])),k=N.vector(N.u64()).parse(ie(f.commandResults[0].returnValues[1]));return y.forEach((C,A)=>{let E=S(C).div(Math.pow(10,9+r.decimals-t.decimals)).toString(),q=S(k[A]).div(Math.pow(10,t.decimals)).toString();m.push({price:E,quantity:q})}),m?.[0]?.price||0}catch{return 0}}async getBestBidprice(e){try{let{baseCoin:t,quoteCoin:r}=e,i=new se,s=await this.getMarketPrice(e),a=S(s).gt(0)?S(s).div(3).toNumber():Math.pow(10,-6),o=S(s).gt(0)?s:Math.pow(10,6),u=S(a).mul(Math.pow(10,9+r.decimals-t.decimals)).toString(),l=S(o).mul(Math.pow(10,9+r.decimals-t.decimals)).toString();i.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_level2_range`,arguments:[i.object(e.address),i.pure.u64(Cr(u,0)),i.pure.u64(Cr(l,0)),i.pure.bool(!0),i.object(ot)],typeArguments:[t.coinType,r.coinType]});let p=this._sdk.sdkOptions.simulationAccount.address,f=await this._sdk.fullClient.sendSimulationTransaction(i,p,!1);J(f,"Failed to get level2 range");let m=[],y=N.vector(N.u64()).parse(ie(f.commandResults[0].returnValues[0])),k=N.vector(N.u64()).parse(ie(f.commandResults[0].returnValues[1]));return y.forEach((C,A)=>{let E=S(C).div(Math.pow(10,9+r.decimals-t.decimals)).toString(),q=S(k[A]).div(Math.pow(10,t.decimals)).toString();m.push({price:E,quantity:q})}),m?.[0]?.price||0}catch{return 0}}async getBestAskOrBidPrice(e,t){try{let{baseCoin:r,quoteCoin:i}=e,s=new se,a=await this.getMarketPrice(e),o,u;t?(o=S(a).gt(0)?S(a).div(3).toNumber():Math.pow(10,-6),u=S(a).gt(0)?a:Math.pow(10,6)):(o=S(a).gt(0)?a:Math.pow(10,-1),u=S(a).gt(0)?S(a).mul(3).toNumber():Math.pow(10,6));let l=S(o).mul(Math.pow(10,9+i.decimals-r.decimals)).toString(),p=S(u).mul(Math.pow(10,9+i.decimals-r.decimals)).toString();s.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_level2_range`,arguments:[s.object(e.address),s.pure.u64(Cr(l,0)),s.pure.u64(Cr(p,0)),s.pure.bool(t),s.object(ot)],typeArguments:[r.coinType,i.coinType]});let f=this._sdk.sdkOptions.simulationAccount.address,m=await this._sdk.fullClient.sendSimulationTransaction(s,f,!1);J(m,"Failed to get level2 range");let y=[],k=N.vector(N.u64()).parse(ie(m.commandResults[0].returnValues[0])),C=N.vector(N.u64()).parse(ie(m.commandResults[0].returnValues[1]));return k.forEach((A,E)=>{let q=S(A).div(Math.pow(10,9+i.decimals-r.decimals)).toString(),x=S(C[E]).div(Math.pow(10,r.decimals)).toString();y.push({price:q,quantity:x})}),y?.[0]?.price||0}catch{return 0}}async placeMarketOrder({balanceManager:e,poolInfo:t,baseQuantity:r,quoteQuantity:i,isBid:s,maxFee:a,account:o,payWithDeep:u,slippage:l=.01,settled_balances:p={base:"0",quote:"0"}}){try{let f=Et(t.baseCoin.coinType),m=Et(t.quoteCoin.coinType),y=new se;p&&(S(p.base).gt(0)||S(p.quote).gt(0))&&this.withdrawSettledAmounts({poolInfo:t,balanceManager:e},y);let{baseAsset:k,quoteAsset:C,feeAsset:A}=await this.getMarketTransactionRelatedAssets(t,r,i,a,s,o,u,e,y,p),E=await this.getOrderBook(t,"all",6);if(s){let U=E?.ask?.[0]?.price||"0",ee=S(U).mul(S(r).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();i=S(ee).plus(S(ee).mul(l)).ceil().toString()}else{let U=await E?.bid?.[0]?.price||"0",ee=S(U).mul(S(r).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();i=S(ee).minus(S(ee).mul(l)).floor().toString()}let q=i,x=[y.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),y.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),y.object(t.address),y.object(e),k,C,A,y.pure.u8(0),y.pure.u64(r),y.pure.bool(s),y.pure.bool(u),y.pure.u64(q),y.object(ot)];return y.setSenderIfNotSet(o),y.moveCall({typeArguments:[f,m],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_market_order_by_owner_v2`,arguments:x}),y}catch(f){throw f instanceof Error?f:new Error(String(f))}}async getOrderInfoList(e,t){try{let r=new se;e.forEach(l=>{let p=l?.pool,f=l?.orderId;r.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_order`,arguments:[r.object(p.pool_id),r.pure.u128(BigInt(f))],typeArguments:[p.baseCoinType,p.quoteCoinType]})});let i=await this._sdk.fullClient.sendSimulationTransaction(r,t,!1);J(i,"Failed to get order info list");let s=N.struct("ID",{bytes:N.Address}),a=N.struct("OrderDeepPrice",{asset_is_base:N.bool(),deep_per_asset:N.u64()}),o=N.struct("Order",{balance_manager_id:s,order_id:N.u128(),client_order_id:N.u64(),quantity:N.u64(),filled_quantity:N.u64(),fee_is_deep:N.bool(),order_deep_price:a,epoch:N.u64(),status:N.u8(),expire_timestamp:N.u64()}),u=[];return i.commandResults.forEach(l=>{let p=o.parse(ie(l.returnValues?.[0]));u.push(p)}),u}catch{return[]}}decodeOrderId(e){let t=e>>BigInt(127)===BigInt(0),r=e>>BigInt(64)&(BigInt(1)<<BigInt(63))-BigInt(1),i=e&(BigInt(1)<<BigInt(64))-BigInt(1);return{isBid:t,price:r,orderId:i}}async getOpenOrder(e,t,r,i,s=!1,a=new se){let o;if(i)o=i;else{a.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::account_open_orders`,arguments:[a.object(e.address),s?r:a.object(r)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let f=await this._sdk.fullClient.sendSimulationTransaction(a,t,!1);J(f,"Failed to get open orders");let m=f.commandResults[s?1:0],y=ie(m?.returnValues?.[0]);o=N.struct("VecSet",{constants:N.vector(N.U128)}).parse(y).constants}if(o.length===0)return[];let u=o.map(f=>({pool:{pool_id:e.address,baseCoinType:e.baseCoin.coinType,quoteCoinType:e.quoteCoin.coinType},orderId:f})),l=await this.getOrderInfoList(u,t)||[],p=[];return l.forEach(f=>{let m=this.decodeOrderId(BigInt(f.order_id));p.push({...f,price:m.price,isBid:m.isBid,pool:e})}),p}async getAllMarketsOpenOrders(e,t){try{let r=await this.getPools(),i=new se;r.forEach(p=>{i.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::account_open_orders`,arguments:[i.object(p.pool_id),i.object(t)],typeArguments:[p.baseCoinType,p.quoteCoinType]})});let s=await this._sdk.fullClient.sendSimulationTransaction(i,e,!1);J(s,"Failed to get all markets open orders");let a=N.struct("VecSet",{constants:N.vector(N.U128)}),o=[];s.commandResults.forEach((p,f)=>{let m=a.parse(ie(p.returnValues?.[0])).constants;m.length>0&&m.forEach(y=>{o.push({pool:r[f],orderId:y})})});let u=await this.getOrderInfoList(o,e)||[],l=[];return o.forEach((p,f)=>{let m=this.decodeOrderId(BigInt(p.orderId)),y=u.find(k=>k.order_id===p.orderId)||{};l.push({...p,...y,price:m.price,isBid:m.isBid})}),l}catch(r){return console.log("\u{1F680} ~ DeepbookUtilsModule ~ getAllMarketsOpenOrders ~ error:",r),[]}}cancelOrders(e,t,r=new se){return e.forEach(i=>{r.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::cancel_order`,arguments:[r.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),r.object(t),r.object(i.poolInfo.address),r.pure.u128(i.orderId),r.object(ot)],typeArguments:[i.poolInfo.baseCoin.coinType,i.poolInfo.quoteCoin.coinType]})}),r}async getDeepbookOrderBook(e,t,r,i,s,a){let o=this._sdk.fullClient,l=await new al({client:o,address:s,network:"testnet",balanceManagers:{test1:{address:a,tradeCap:""}}}).getLevel2Range(e,t,r,i)}processOrderBookData(e,t,r,i){let s=N.vector(N.u64()).parse(ie(e.returnValues?.[0])),a=N.vector(N.u64()).parse(ie(e.returnValues?.[1])),o={};return s.forEach((l,p)=>{let f=S(l).div(Math.pow(10,9+r.decimals-t.decimals)).toString(),m=S(a[p]).div(Math.pow(10,t.decimals)).toString();o[f]?o[f]={price:f,quantity:S(o[f].quantity).add(m).toString()}:o[f]={price:f,quantity:m}}),Object.values(o)}getLevel2RangeTx(e,t,r,i,s=new se){let{baseCoin:a,quoteCoin:o}=e,u=Cr(S(r).mul(Math.pow(10,9+o.decimals-a.decimals)).toString(),0),l=Cr(S(i).mul(Math.pow(10,9+o.decimals-a.decimals)).toString(),0);return s.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_level2_range`,arguments:[s.object(e.address),s.pure.u64(u),s.pure.u64(l),s.pure.bool(t),s.object(ot)],typeArguments:[a.coinType,o.coinType]}),s}async fetchOrderBook(e,t,r,i,s,a){let o=new se,{baseCoin:u,quoteCoin:l}=e;try{if(t==="bid"||t==="all"){let k=i,C=r==="0"?s:r;o=this.getLevel2RangeTx(e,!0,k,C,o)}if(t==="ask"||t==="all"){let k=r==="0"?i:r,C=s;o=this.getLevel2RangeTx(e,!1,k,C,o)}let p=this._sdk.sdkOptions.simulationAccount.address,f=await this._sdk.fullClient.sendSimulationTransaction(o,p,!1);J(f,"Failed to fetch order book");let m=[];(t==="bid"||t==="all")&&(m=f.commandResults?.[0]?this.processOrderBookData(f.commandResults[0],u,l,a):[]);let y=[];if(t==="ask"||t==="all"){let k=t==="ask"?0:1;y=f.commandResults?.[k]?this.processOrderBookData(f.commandResults[k],u,l,a):[]}return{bid:m.sort((k,C)=>C.price-k.price),ask:y.sort((k,C)=>k.price-C.price)}}catch{let f=this._sdk.sdkOptions.simulationAccount.address,m=[],y=[];try{let k=this.getLevel2RangeTx(e,!0,i,r),C=await this._sdk.fullClient.sendSimulationTransaction(k,f,!1);J(C,"Failed to fetch bid order book"),m=C.commandResults?.[0]?this.processOrderBookData(C.commandResults[0],u,l,a):[]}catch{m=[]}try{let k=this.getLevel2RangeTx(e,!1,i,r),C=await this._sdk.fullClient.sendSimulationTransaction(k,f,!1);J(C,"Failed to fetch ask order book"),y=C.commandResults?.[0]?this.processOrderBookData(C.commandResults[0],u,l,a):[]}catch{y=[]}return{bid:m,ask:y}}}async getOrderBook(e,t,r){let i={bid:[],ask:[]};try{let s=await this.getMarketPrice(e),a=t,o=Math.pow(10,-r),u=Math.pow(10,r),l=await this.fetchOrderBook(e,a,s,o,u,r);return{bid:l?.bid,ask:l?.ask}}catch{return i}}async getOrderBookOrigin(e,t){try{let r=new se,i=await this.getMarketPrice(e),{baseCoin:s,quoteCoin:a}=e;if(t==="bid"||t==="all"){let f=Math.pow(10,-6),m=i,y=S(f).mul(Math.pow(10,9+a.decimals-s.decimals)).toString(),k=S(m).mul(Math.pow(10,9+a.decimals-s.decimals)).toString();r.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_level2_range`,arguments:[r.object(e.address),r.pure.u64(y),r.pure.u64(k),r.pure.bool(!0),r.object(ot)],typeArguments:[s.coinType,a.coinType]})}if(t==="ask"||t==="all"){let f=i,m=Math.pow(10,6),y=S(f).mul(Math.pow(10,9+a.decimals-s.decimals)).toString(),k=S(m).mul(Math.pow(10,9+a.decimals-s.decimals)).toString();r.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::get_level2_range`,arguments:[r.object(e.address),r.pure.u64(y),r.pure.u64(k),r.pure.bool(!1),r.object(ot)],typeArguments:[s.coinType,a.coinType]})}let o=this._sdk.sdkOptions.simulationAccount.address,u=await this._sdk.fullClient.sendSimulationTransaction(r,o,!1);J(u,"Failed to get order book origin");let l=[];if(t==="bid"||t==="all"){let f=N.vector(N.u64()).parse(ie(u.commandResults[0]?.returnValues?.[0])),m=N.vector(N.u64()).parse(ie(u.commandResults[0]?.returnValues?.[1]));f.forEach((y,k)=>{let C=S(y).div(Math.pow(10,9+a.decimals-s.decimals)).toString(),A=S(m[k]).div(Math.pow(10,s.decimals)).toString();l.push({price:C,quantity:A})})}let p=[];if(t==="ask"||t==="all"){let f=t==="ask"?0:1,m=N.vector(N.u64()).parse(ie(u.commandResults[f]?.returnValues?.[0])),y=N.vector(N.u64()).parse(ie(u.commandResults[f]?.returnValues?.[1]));m.forEach((k,C)=>{let A=S(k).div(Math.pow(10,9+a.decimals-s.decimals)).toString(),E=S(y[C]).div(Math.pow(10,s.decimals)).toString();p.push({price:A,quantity:E})})}return{bid:l,ask:p}}catch{return{bids:[],asks:[]}}}async getWalletBalance(e){let t=await this._sdk.fullClient?.getOwnerCoinBalances(e);return console.log("\u{1F680} ~ DeepbookUtilsModule ~ getWalletBalance ~ result:",t),Object.fromEntries(t.map((i,s)=>[Et(i.coinType),{coinType:i.coinType,totalBalance:i.balance,coinBalance:i.coinBalance,addressBalance:i.addressBalance}]))}async getAccount(e,t,r=new se){for(let a=0;a<t.length;a++){let o=t[a];r.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::order_trader::get_account_id`,arguments:[r.object(o.address),typeof e=="string"?r.object(e):e],typeArguments:[o.baseCoin.coinType,o.quoteCoin.coinType]})}let i=await this._sdk.fullClient.sendSimulationTransaction(r,this._sdk.senderAddress);if(J(i,"Failed to get account state"),i?.Transaction?.events?.length===0)return null;let s=[];return i?.Transaction?.events?.forEach((a,o)=>{let u=a?.bcs,l=Pa.parse(u),p=l.open_orders,f=l.owed_balances,m=l.settled_balances,y=l.unclaimed_rebates,k=l.taker_volume;s.push({balance_manager_id:e,open_orders:p,owed_balances:f,settled_balances:m,unclaimed_rebates:y,taker_volume:k,poolInfo:t[o]})}),s}async getSuiTransactionResponse(e,t=!1){let r=`${e}_getSuiTransactionResponse`,i=this.getCache(r,t);if(i!==void 0)return i;let s;try{s=await this._sdk.fullClient.getTransaction({digest:e,include:{events:!0,effects:!0,balanceChanges:!0,showInput:!0,showObjectChanges:!0}})}catch{s=await this._sdk.fullClient.getTransaction({digest:e,include:{events:!0,effects:!0}})}return this.updateCache(r,s,864e5),s}transformExtensions(e,t,r=!0){let i=[];for(let s of t){let{key:a}=s.fields,{value:o}=s.fields;if(a==="labels")try{o=JSON.parse(decodeURIComponent(cl.decode(o)))}catch{}r&&(e[a]=o),i.push({key:a,value:o})}delete e.extension_fields,r||(e.extensions=i)}async getCoinConfigs(e=!1,t=!0){let r=this.sdk.sdkOptions.coinlist.handle,i=`${r}_getCoinConfigs`,s=this.getCache(i,e);if(s)return s;let o=(await this._sdk.fullClient.getDynamicFieldsByPage(r)).data.map(p=>p.objectId),u=await this._sdk.fullClient.batchGetObjects(o,{json:!0}),l=[];return u.forEach(p=>{let f=this.buildCoinConfig(p,t);this.updateCache(`${r}_${f.address}_getCoinConfig`,f,864e5),l.push({...f})}),this.updateCache(i,l,864e5),l}buildCoinConfig(e,t=!0){let r=xa(e);r=r.value.fields;let i={...r};return i.id=ja(e),i.address=nr(r.coin_type.fields.name).full_address,r.pyth_id&&(i.pyth_id=ol(r.pyth_id)),this.transformExtensions(i,r.extension_fields.fields.contents,t),delete i.coin_type,i}updateCache(e,t,r=3e5){let i=this._cache[e];i?(i.overdueTime=Bi(r),i.value=t):i=new En(t,Bi(r)),this._cache[e]=i}getCache(e,t=!1){let r=this._cache[e],i=r?.isValid();if(!t&&i)return r.value;i||delete this._cache[e]}async createPermissionlessPool({tickSize:e,lotSize:t,minSize:r,baseCoinType:i,quoteCoinType:s}){let a=new se,o=nt.buildCoinWithBalance(BigInt(500*10**6),"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",a);a.moveCall({target:`${this.sdk.sdkOptions.deepbook.published_at}::pool::create_permissionless_pool`,typeArguments:[i,s],arguments:[a.object(this.sdk.sdkOptions.deepbook.registry_id),a.pure.u64(e),a.pure.u64(t),a.pure.u64(r),o]});try{let u=await this._sdk.fullClient.sendSimulationTransaction(a,this.sdk.senderAddress);if(u.$kind==="FailedTransaction"){let l=ut(u);throw l.includes('Some("register_pool") }, 1)')?new Error("Pool already exists"):new Error(`Failed to create pool: ${l}`)}return a}catch(u){throw u instanceof Error?u:new Error(String(u))}}newWithCustomOwnerCaps({owner:e,appType:t}){let r=new se,i=t||`${this._sdk.sdkOptions.deepbook.margin_package_id}::margin_manager::MarginApp`,[s,a,o,u]=r.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new_with_custom_owner_caps`,arguments:[r.object(this._sdk.sdkOptions.deepbook.registry_id),r.pure.address(e)],typeArguments:[i]});return r.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::cetus_balance_manager::check_and_add_deepbook_balance_manager_indexer`,arguments:[r.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),s],typeArguments:[]}),r.moveCall({target:"0x2::transfer::public_share_object",arguments:[s],typeArguments:[`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::BalanceManager`]}),r.transferObjects([a,o,u],e),r}};import{bcs as P}from"@mysten/sui/bcs";import{Transaction as W}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as me,normalizeSuiAddress as In}from"@mysten/sui/utils";var xn="0x0000000000000000000000000000000000000000000000000000000000000006",_p="pool_script",yp="pool_script_v2",bp="router",wp="router_with_partner",vp="fetcher_script",kp="expect_swap",Cp="utils",Tp="0x1::coin::CoinInfo",Sp="0x1::coin::CoinStore",Mp="custodian_v2",Ap="clob_v2",Op="endpoints_v2",Ep=n=>{if(typeof n=="string"&&n.startsWith("0x"))return"object";if(typeof n=="number"||typeof n=="bigint")return"u64";if(typeof n=="boolean")return"bool";throw new Error(`Unknown type for value: ${n}`)},jp=["https://rpc-mainnet.suiscan.xyz:443","https://cetus-mainnet-endpoint.blockvision.org","https://cetus-suimain-e31f.mainnet.sui.rpcpool.com"];import Ba from"decimal.js";Ba.config({precision:64,rounding:Ba.ROUND_DOWN,toExpNeg:-64,toExpPos:64});var qp=({totalAssetsValue:n,totalDebtValue:e})=>S(e).eq(0)||S(n).eq(0)?"0":S(n).div(S(e)).toString(),Da=n=>{let{base_margin_pool_id:e,quote_margin_pool_id:t,enabled:r,pool_liquidation_reward:i,user_liquidation_reward:s}=n.value.fields,{liquidation_risk_ratio:a,min_borrow_risk_ratio:o,min_withdraw_risk_ratio:u,target_liquidation_risk_ratio:l}=n.value.fields.risk_ratios.fields;return{id:n.id.id,name:n.name,base_margin_pool_id:e,quote_margin_pool_id:t,enabled:r,pool_liquidation_reward:i,user_liquidation_reward:s,liquidation_risk_ratio:a,min_borrow_risk_ratio:o,min_withdraw_risk_ratio:u,target_liquidation_risk_ratio:l}},$a=(n,e)=>{let{deposit_coin_type:t}=e,r=n.id,{max_utilization_rate:i,min_borrow:s,protocol_spread:a,supply_cap:o}=n.config.margin_pool_config,{maintainer_fees:u,protocol_fees:l}=n.protocol_fees,{total_supply:p,total_borrow:f}=n.state,m=S(o).sub(p).toString();return{deposit_coin_type:t,id:r,supply_cap:o,total_supply:p,total_borrow:f,available_supply:m,max_utilization_rate:i,min_borrow:s,protocol_spread:a,maintainer_fees:u,protocol_fees:l}};var Dt=1000000000n,dl=365n*24n*60n*60n*1000n;function hl(n,e){return e===0n?0n:n*Dt/e}function pl(n,e){let{base_rate:t,base_slope:r,optimal_utilization:i,excess_slope:s}=e;if(n<i)return t+n*r/Dt;{let a=n-i,o=i*r/Dt,u=a*s/Dt;return t+o+u}}function Na(n,e){let t=n*e,r=t/Dt;return t%Dt>0n?r+1n:r}function ml(n,e,t,r){let i=e.borrow_shares===0n?Dt:e.total_borrow*Dt/e.borrow_shares,s=Na(n,i),a=hl(e.total_borrow,e.total_supply),o=pl(a,t),u=r-e.last_update_timestamp,l=e.total_borrow*o/Dt*u/dl,p=e.borrow_shares===0n?0n:Na(l,n*Dt/e.borrow_shares),f=s+p;return{confirmedDebt:s,estimatedInterest:p,totalDebt:f,annualInterestRate:o}}function Dp(n,e,t,r,i=60000n){let s=r+i,{totalDebt:a}=ml(n,e,t,s);return a}var Ni=10n;function fl(n,e){if(!Ni)throw new Error("oraclePriceMultiplierDecimal is required");if(n===0n)throw new Error("Invalid oracle price");if(e<0n){let t=10n**(Ni- -e);return n*t}return n/10n**(e+Ni)}var Vr=class{_sdk;hasChangeConnection=!1;_commonPythPrice;_cache={};constructor(e){this._sdk=e;let{pyth_state_id:t,wormhole_state_id:r}=e.sdkOptions.margin_utils;this._commonPythPrice=new da(e.fullClient,this._sdk.sdkOptions.pythEndpoints,{pyth_state_id:t,wormhole_state_id:r})}get sdk(){return this._sdk}async updatePythPriceIDs(e,t){let r=null,i=null;try{r=await this._commonPythPrice.getPriceFeedsUpdateData(e)}catch(o){i=o,console.log("Error: ",o)}if(r==null)throw new Error(`All Pyth price nodes are unavailable. Cannot fetch price data. Please switch to or add new available Pyth nodes. Detailed error: ${i?.message}`);let s=[];try{s=await this._commonPythPrice.updatePriceFeeds(t,r,e)}catch(o){throw new Error(`All Pyth price nodes are unavailable. Cannot fetch price data. Please switch to or add new available Pyth nodes in the pythUrls parameter when initializing AggregatorClient, for example: new AggregatorClient({ pythUrls: ["https://your-pyth-node-url"] }). Detailed error: ${o}`)}let a=new Map;for(let o=0;o<e.length;o++)a.set(e[o],s[o]);return a}priceCheck(e,t=60){let r=Math.floor(Date.now()/1e3);if(!(Math.abs(r-e.last_update_time)>t))return e}async getLatestPrice(e,t=!1){let r={},i=[];if(t?e.forEach(o=>{let u=this._sdk.fullClient.getCache(`getLatestPrice_${o.coinType}`);u&&this.priceCheck(u,60)?r[o.coinType]=u:i.push(o.coinType)}):i=e.map(o=>o.coinType),i.length===0)return r;let s=e.map(o=>o.feed);return(await this._commonPythPrice.getLatestPriceFeeds(s))?.parsed?.forEach((o,u)=>{let l=o.price;if(l){let{price:p,expo:f}=l,m=S(p).mul(S(10).pow(S(f))).toString(),k={coin_type:e[u].coinType,price:m,oracle_price:0n,last_update_time:l.publish_time};k.oracle_price=fl(BigInt(p),BigInt(f)),r[i[u]]=k,this._sdk.fullClient.updateCache(`getLatestPrice_${k.coin_type}`,k)}}),r}};var Pn=class{_sdk;pythPrice;_deep;_cache={};constructor(e){if(!e)throw new Error("SDK instance is required");this._sdk=e,this.pythPrice=new Vr(e),this._deep=e.sdkOptions.network==="mainnet"?Oa:Aa}get sdk(){return this._sdk}get deepCoin(){return this._deep}createAndShareMarginManager(e,t=new W){if(!e)throw new Error("Pool info is required");if(!e.id)throw new Error("Pool ID is required");if(!e.baseCoin?.coinType||!e.quoteCoin?.coinType)throw new Error("Base and quote coin types are required");let{baseCoin:r,quoteCoin:i}=e;try{let{margin_manager:s,initializer:a}=this.createMarginManager(e,t);return this.shareMarginManager({marginManager:s,initializer:a,baseCoin:r,quoteCoin:i},t),{tx:t,margin_manager:s,initializer:a}}catch(s){throw new Error(`Failed to create and share margin manager: ${s instanceof Error?s.message:String(s)}`)}}createMarginManager(e,t=new W){if(!e)throw new Error("Pool info is required");if(!e.id)throw new Error("Pool ID is required");let{id:r,baseCoin:i,quoteCoin:s}=e;try{let[a,o]=t.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::create_margin_manager`,arguments:[t.object(this.sdk.sdkOptions.margin_utils.versioned_id),t.object(r),t.object(this._sdk.sdkOptions.margin_utils.registry_id),t.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),t.object(me)],typeArguments:[i.coinType,s.coinType]});return{tx:t,margin_manager:a,initializer:o}}catch(a){throw new Error(`Failed to create margin manager: ${a instanceof Error?a.message:String(a)}`)}}shareMarginManager({marginManager:e,initializer:t,baseCoin:r,quoteCoin:i},s=new W){try{return s.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::share_margin_manager`,arguments:[e,t],typeArguments:[r.coinType,i.coinType]}),s}catch(a){throw new Error(`Failed to share margin manager: ${a instanceof Error?a.message:String(a)}`)}}async getMarginManagerByAccount(e){if(!e||typeof e!="string")throw new Error("Valid account address is required");try{let i=((await this.sdk.fullClient.queryEventsByGraphQL({MoveEventType:`${this._sdk.sdkOptions.margin_utils.package_id}::margin_utils::CreateMarginManagerEvent`},"all"))?.data??[]).filter(f=>f.parsedJson?.owner===e);if(!i.length)return[];let s=i.map(f=>f.parsedJson?.margin_manager_id),o=(await this.sdk.fullClient.batchGetObjects(s,{json:!0})).map((f,m)=>{let y=f.json,C=(y?.balance_manager?.allow_listed?.contents).map(E=>E),A=C.includes(y?.deposit_cap?.id)&&C.includes(y?.withdraw_cap?.id)&&C.includes(y?.trade_cap?.id);return{balanceManagerId:y?.balance_manager?.id,marginManagerId:s[m],capOk:A}}),u=await Promise.all(o.map(({balanceManagerId:f})=>this.sdk.fullClient.listDynamicFields({parentId:f}))),l=new Map;return u.forEach((f,m)=>{let y=f?.dynamicFields??[];if(y.length>0){let k=P.struct("ReferralKey",{pos0:P.Address}).parse(y[0].name.bcs);l.set(o[m].marginManagerId,k.pos0)}}),{finalResult:i.map(f=>{let m=f.parsedJson?.margin_manager_id;return{...f.parsedJson,referralKey:l.get(m)}}),referralMap:l}}catch(t){throw new Error(`Failed to get margin managers by account: ${t instanceof Error?t.message:String(t)}`)}}async getBaseBalance({account:e,marginManager:t,baseCoinType:r,quoteCoinType:i}){if(!e||!t||!r||!i)throw new Error("All parameters (account, marginManager, baseCoinType, quoteCoinType) are required");let s=new W;try{s.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::base_balance`,arguments:[s.object(t)],typeArguments:[r,i]});let a=await this.sdk.fullClient.sendSimulationTransaction(s,e);if(J(a,"Failed to get available withdraw amount"),!a.commandResults||!a.commandResults[0]||!a.commandResults[0].returnValues||!a.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(a)}`);return P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[0].bcs)).toString()}catch(a){throw new Error(`Failed to get base balance: ${a instanceof Error?a.message:String(a)}`)}}async getQuoteBalance({account:e,marginManager:t,baseCoinType:r,quoteCoinType:i}){if(!e||!t||!r||!i)throw new Error("All parameters (account, marginManager, baseCoinType, quoteCoinType) are required");let s=new W;try{s.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::quote_balance`,arguments:[s.object(t)],typeArguments:[r,i]});let a=await this.sdk.fullClient.sendSimulationTransaction(s,e);if(J(a,"Failed to get available borrow amount"),!a.commandResults||!a.commandResults[0]||!a.commandResults[0].returnValues||!a.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(a)}`);return P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[0].bcs)).toString()}catch(a){throw new Error(`Failed to get quote balance: ${a instanceof Error?a.message:String(a)}`)}}async getDeepBalance({account:e,marginManager:t,baseCoinType:r,quoteCoinType:i}){if(!e||!t||!r||!i)throw new Error("All parameters (account, marginManager, baseCoinType, quoteCoinType) are required");let s=new W;try{s.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::deep_balance`,arguments:[s.object(t)],typeArguments:[r,i]});let a=await this.sdk.fullClient.sendSimulationTransaction(s,e);if(J(a,"Failed to get repay amount"),!a.commandResults||!a.commandResults[0]||!a.commandResults[0].returnValues||!a.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(a)}`);return P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[0].bcs)).toString()}catch(a){throw new Error(`Failed to get base balance: ${a instanceof Error?a.message:String(a)}`)}}async getPoolMarginManagerBalance({account:e,marginManager:t,baseCoinType:r,quoteCoinType:i}){if(!e||!t||!r||!i)throw new Error("All parameters (account, marginManagers, baseCoinType, quoteCoinType) are required");let s=new W,a=r===this.deepCoin.coinType,o=i===this.deepCoin.coinType,u=a||o;try{s.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::base_balance`,arguments:[s.object(t)],typeArguments:[r,i]}),s.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::quote_balance`,arguments:[s.object(t)],typeArguments:[r,i]}),u||s.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::deep_balance`,arguments:[s.object(t)],typeArguments:[r,i]});let l=await this.sdk.fullClient.sendSimulationTransaction(s,e);if(J(l,"Failed to get margin balance"),!l.commandResults||!l.commandResults[0]||!l.commandResults[0].returnValues||!l.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(l)}`);let p=P.U64.parse(new Uint8Array(l.commandResults[0].returnValues[0].bcs)),f=P.U64.parse(new Uint8Array(l.commandResults[1].returnValues[0].bcs)),m=u?a?p:f:P.U64.parse(new Uint8Array(l.commandResults[2].returnValues[0].bcs));return{[r]:p.toString(),[i]:f.toString(),[this.deepCoin.coinType]:m.toString()}}catch(l){throw new Error(`Failed to getPoolMarginManagerBalance: ${l instanceof Error?l.message:String(l)}`)}}async getBorrowedShares({account:e,marginManager:t,baseCoinType:r,quoteCoinType:i}){if(!e||!t||!r||!i)throw new Error("All parameters (account, marginManager, baseCoinType, quoteCoinType) are required");let s=new W;try{s.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::borrowed_shares`,arguments:[s.object(t)],typeArguments:[r,i]});let a=await this.sdk.fullClient.sendSimulationTransaction(s,e);if(J(a,"Failed to get borrowed shares"),!a.commandResults||!a.commandResults[0]||!a.commandResults[0].returnValues||a.commandResults[0].returnValues.length<2)throw new Error(`Transaction failed: ${ut(a)}`);let o=P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[0].bcs)),u=P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[1].bcs));return{baseBorrowedShare:o,quoteBorrowedShare:u}}catch(a){throw new Error(`Failed to get borrowed shares: ${a instanceof Error?a.message:String(a)}`)}}managerState=({account:e,marginManager:t,baseCoin:r,quoteCoin:i,pool:s,baseMarginPool:a,quoteMarginPool:o,decimals:u=6,basePriceFeedObjectId:l,quotePriceFeedObjectId:p})=>f=>{f.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager_upgraded::manager_state`,arguments:[f.object(t),f.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),f.object(l),f.object(p),f.object(s),f.object(a),f.object(o),f.object.clock()],typeArguments:[r.coinType,i.coinType]})};async getManagerState(e,t=new W){let{account:r,marginManager:i,baseCoin:s,quoteCoin:a,pool:o,baseMarginPool:u,quoteMarginPool:l,decimals:p=6}=e;if(!r||!i||!o||!u||!l)throw new Error("All required parameters must be provided");if(!s?.feed||!a?.feed)throw new Error("Base and quote coin feeds are required");if(!s.scalar||!a.scalar)throw new Error("Base and quote coin scalars are required");try{let f=await this.pythPrice.updatePythPriceIDs([s.feed,a.feed],t),m=f.get(s.feed),y=f.get(a.feed);if(!m||!y)throw new Error("Failed to get price feed object IDs");t.add(this.managerState({...e,basePriceFeedObjectId:m,quotePriceFeedObjectId:y}));let k=await this.sdk.fullClient.sendSimulationTransaction(t,r);if(J(k,"Failed to get margin manager state"),!k.commandResults||!k.commandResults[0]||!k.commandResults[0].returnValues||k.commandResults[0].returnValues.length<14)throw new Error(`Failed to get margin manager state: ${ut(k)}`);let C=In(P.Address.parse(new Uint8Array(k.commandResults[0].returnValues[0].bcs))),A=In(P.Address.parse(new Uint8Array(k.commandResults[0].returnValues[1].bcs))),E=Number(P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[2].bcs)))/1e9,q=this.#e(BigInt(P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[3].bcs))),s.scalar,p),x=this.#e(BigInt(P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[4].bcs))),a.scalar,p),U=this.#e(BigInt(P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[5].bcs))),s.scalar,p),ee=this.#e(BigInt(P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[6].bcs))),a.scalar,p),F=P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[7].bcs)),oe=Number(P.u8().parse(new Uint8Array(k.commandResults[0].returnValues[8].bcs))),ae=P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[9].bcs)),ce=Number(P.u8().parse(new Uint8Array(k.commandResults[0].returnValues[10].bcs))),we=BigInt(P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[11].bcs))),ve=BigInt(P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[12].bcs))),ft=BigInt(P.U64.parse(new Uint8Array(k.commandResults[0].returnValues[13].bcs)));return{managerId:C,deepbookPoolId:A,riskRatio:E,baseAsset:q,quoteAsset:x,baseDebt:U,quoteDebt:ee,basePythPrice:F.toString(),basePythDecimals:oe,quotePythPrice:ae.toString(),quotePythDecimals:ce,currentPrice:we,lowestTriggerAbovePrice:ve,highestTriggerBelowPrice:ft}}catch(f){throw new Error(`Failed to get manager state: ${f instanceof Error?f.message:String(f)}`)}}async detectPriceBoundary({account:e,marginManager:t,baseCoin:r,quoteCoin:i,pool:s,baseMarginPool:a,quoteMarginPool:o,price:u,is_bid:l,decimals:p=6}){if(!e||!t||!s||!a||!o)throw new Error("All required parameters must be provided");if(!r?.feed||!i?.feed)throw new Error("Base and quote coin feeds are required");if(!r.scalar||!i.scalar)throw new Error("Base and quote coin scalars are required");let f=typeof u=="bigint"?u:BigInt(u),m=await this.getManagerState({account:e,marginManager:t,baseCoin:r,quoteCoin:i,pool:s,baseMarginPool:a,quoteMarginPool:o,decimals:p},new W),y=m.highestTriggerBelowPrice,k=m.lowestTriggerAbovePrice,C=l?f<=k:f>=y;return{is_bid:l,price:f,lower_bound:y,upper_bound:k,is_within:C,is_boundary:l?f===k:f===y}}async calculateAssets({account:e,marginManager:t,pool:r,baseCoin:i,quoteCoin:s,tx:a=new W}){if(!e||!t||!r)throw new Error("Account, marginManager, and pool are required");if(!i?.coinType||!s?.coinType)throw new Error("Base and quote coin types are required");try{a.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_package_id}::margin_manager::calculate_assets`,arguments:[a.object(t),a.object(r)],typeArguments:[i.coinType,s.coinType]});let o=await this.sdk.fullClient.sendSimulationTransaction(a,e);if(J(o,"Failed to get borrowed amounts"),!o.commandResults||!o.commandResults[0]||!o.commandResults[0].returnValues||o.commandResults[0].returnValues.length<2)throw new Error(`Transaction failed: ${ut(o)}`);let u=o.commandResults[0].returnValues[0].bcs,l=o.commandResults[0].returnValues[1].bcs;if(!i.scalar||!s.scalar)throw new Error("Base and quote coin scalars are required");let p=P.U64.parse(new Uint8Array(u)),f=P.U64.parse(new Uint8Array(l));return{baseAsset:p.toString(),quoteAsset:f.toString(),tx:a}}catch(o){throw new Error(`Failed to calculate assets: ${o instanceof Error?o.message:String(o)}`)}}async getBorrowedAmount({account:e,marginManager:t,baseCoinType:r,quoteCoinType:i,baseMarginPool:s,quoteMarginPool:a}){if(!e||!t||!r||!i||!s||!a)throw new Error("All parameters are required");try{let{baseBorrowedShare:o,quoteBorrowedShare:u}=await this.getBorrowedShares({account:e,marginManager:t,baseCoinType:r,quoteCoinType:i}),l=!!S(o).gt(S(u)),p=l?s:a,f=l?o:u,m=new W;m.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_package_id}::margin_pool::borrow_shares_to_amount`,arguments:[m.object(p),m.pure.u64(BigInt(f)),m.object.clock()],typeArguments:[l?r:i]});let y=await this.sdk.fullClient.simulateTransaction({transaction:m,checksEnabled:!1,include:{commandResults:!0}});J(y,"Failed to get borrowed amount");let k=P.U64.parse(y?.commandResults?.[0]?.returnValues?.[0]?.bcs);return l?{baseBorrowedAmount:k.toString(),quoteBorrowedAmount:"0"}:{baseBorrowedAmount:"0",quoteBorrowedAmount:k.toString()}}catch(o){throw new Error(`Failed to get borrowed amount: ${o instanceof Error?o.message:String(o)}`)}}async deposit({marginManager:e,baseCoin:t,quoteCoin:r,amount:i,depositCoinType:s},a=new W){if(!e)throw new Error("Margin manager is required");if(!t?.coinType||!r?.coinType)throw new Error("Base and quote coin types are required");if(!i||BigInt(i)<=0n)throw new Error("Valid deposit amount is required");if(!t.feed||!r.feed)throw new Error("Base and quote coin feeds are required");try{let o=nt.buildCoinWithBalance(BigInt(i),s,a),u=await this.pythPrice.updatePythPriceIDs([t.feed,r.feed],a),l=u.get(t.feed),p=u.get(r.feed);if(!l||!p)throw new Error("Failed to get price feed object IDs");return a.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::deposit_pyth_upgraded`,arguments:[a.object(this._sdk.sdkOptions.margin_utils.global_config_id),a.object(this._sdk.sdkOptions.margin_utils.versioned_id),typeof e=="string"?a.object(e):e,a.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),a.object(l),a.object(p),o,a.object(me)],typeArguments:[t.coinType,r.coinType,s]}),a}catch(o){throw new Error(`Failed to deposit: ${o instanceof Error?o.message:String(o)}`)}}async withdraw({account:e,marginManager:t,baseMarginPool:r,quoteMarginPool:i,baseCoin:s,quoteCoin:a,pool:o,amount:u,withdrawCoinType:l},p=new W){if(!e||!t||!r||!i||!o)throw new Error("All required parameters must be provided");if(!s?.coinType||!a?.coinType)throw new Error("Base and quote coin types are required");if(!u||BigInt(u)<=0n)throw new Error("Valid withdraw amount is required");if(!s.feed||!a.feed)throw new Error("Base and quote coin feeds are required");try{let f=await this.pythPrice.updatePythPriceIDs([s.feed,a.feed],p),m=f.get(s.feed),y=f.get(a.feed);if(!m||!y)throw new Error("Failed to get price feed object IDs");let k=p.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::withdraw_pyth_upgraded`,arguments:[p.object(this._sdk.sdkOptions.margin_utils.global_config_id),p.object(this._sdk.sdkOptions.margin_utils.versioned_id),p.object(t),p.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),p.object(r),p.object(i),p.object(m),p.object(y),p.object(o),p.pure.u64(BigInt(u)),p.object(me)],typeArguments:[s.coinType,a.coinType,l]});if(nt.isSuiCoin(l))p.transferObjects([k],e);else{let C=await this._sdk.fullClient.getOwnerCoinAssets(e,l),A=nt.buildCoinForAmount(p,C,BigInt(0),l,!1);A.target_coin?(p.mergeCoins(A.target_coin,[k]),A.is_mint_zero_coin&&p.transferObjects([A.target_coin],e)):p.transferObjects([k],e)}return p}catch(f){throw new Error(`Failed to withdraw: ${f instanceof Error?f.message:String(f)}`)}}async borrowBase({marginManager:e,baseMarginPool:t,baseCoin:r,quoteCoin:i,pool:s,amount:a},o=new W){if(!e||!t||!s)throw new Error("Margin manager, base margin pool, and pool are required");if(!r?.coinType||!i?.coinType)throw new Error("Base and quote coin types are required");if(!a||BigInt(a)<=0n)throw new Error("Valid borrow amount is required");if(!r.feed||!i.feed)throw new Error("Base and quote coin feeds are required");try{let u=await this.pythPrice.updatePythPriceIDs([r.feed,i.feed],o),l=u.get(r.feed),p=u.get(i.feed);if(!l||!p)throw new Error("Failed to get price feed object IDs");return o.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::borrow_base_pyth_upgraded`,arguments:[o.object(this.sdk.sdkOptions.margin_utils.global_config_id),o.object(this.sdk.sdkOptions.margin_utils.versioned_id),o.object(e),o.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),o.object(t),o.object(l),o.object(p),o.object(s),o.pure.u64(BigInt(a)),o.object(me)],typeArguments:[r.coinType,i.coinType]}),o}catch(u){throw new Error(`Failed to borrow base: ${u instanceof Error?u.message:String(u)}`)}}async borrowQuote({marginManager:e,quoteMarginPool:t,baseCoin:r,quoteCoin:i,pool:s,amount:a},o=new W){if(!e||!t||!s)throw new Error("Margin manager, quote margin pool, and pool are required");if(!r?.coinType||!i?.coinType)throw new Error("Base and quote coin types are required");if(!a||BigInt(a)<=0n)throw new Error("Valid borrow amount is required");if(!r.feed||!i.feed)throw new Error("Base and quote coin feeds are required");try{let u=await this.pythPrice.updatePythPriceIDs([r.feed,i.feed],o),l=u.get(r.feed),p=u.get(i.feed);if(!l||!p)throw new Error("Failed to get price feed object IDs");return o.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::borrow_quote_pyth_upgraded`,arguments:[o.object(this.sdk.sdkOptions.margin_utils.global_config_id),o.object(this.sdk.sdkOptions.margin_utils.versioned_id),typeof e=="string"?o.object(e):e,o.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),o.object(t),o.object(l),o.object(p),o.object(s),o.pure.u64(BigInt(a)),o.object(me)],typeArguments:[r.coinType,i.coinType]}),o}catch(u){throw new Error(`Failed to borrow quote: ${u instanceof Error?u.message:String(u)}`)}}async repayBase({marginManager:e,baseMarginPool:t,baseCoin:r,quoteCoin:i,amount:s},a=new W){if(!e||!t||!r||!i)throw new Error("All required parameters (marginManager, baseMarginPool, baseCoin, quoteCoin) are required");if(s&&BigInt(s)<=0n)throw new Error("Repay amount must be greater than zero if provided");let o={marginManager:e,baseCoin:r,quoteCoin:i,amount:s,depositCoinType:r.coinType};await this.deposit(o,a);try{return a.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::repay_base`,arguments:[a.object(this._sdk.sdkOptions.margin_utils.global_config_id),a.object(this._sdk.sdkOptions.margin_utils.versioned_id),a.object(e),a.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),a.object(t),a.object.option({type:"u64",value:s?a.pure.u64(s):null}),a.object(me)],typeArguments:[r.coinType,i.coinType]}),a}catch(u){throw new Error(`Failed to repay base: ${u instanceof Error?u.message:String(u)}`)}}async repayQuote({marginManager:e,quoteMarginPool:t,baseCoin:r,quoteCoin:i,amount:s},a=new W){if(!e||!t||!r||!i)throw new Error("All required parameters (marginManager, quoteMarginPool, baseCoin, quoteCoin) are required");if(s&&BigInt(s)<=0n)throw new Error("Repay amount must be greater than zero if provided");let o={marginManager:e,baseCoin:r,quoteCoin:i,amount:s,depositCoinType:i.coinType};await this.deposit(o,a);try{return a.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::repay_quote`,arguments:[a.object(this._sdk.sdkOptions.margin_utils.global_config_id),a.object(this._sdk.sdkOptions.margin_utils.versioned_id),a.object(e),a.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),a.object(t),a.object.option({type:"u64",value:s?a.pure.u64(s):null}),a.object(me)],typeArguments:[r.coinType,i.coinType]}),a}catch(u){throw new Error(`Failed to repay quote: ${u instanceof Error?u.message:String(u)}`)}}async repay({marginManager:e,baseMarginPool:t,quoteMarginPool:r,baseCoin:i,quoteCoin:s,isBase:a,amount:o},u=new W){try{let l=this.sdk.senderAddress,p,f=o;o||(p=await this.getBorrowedAmount({account:l,marginManager:e,baseCoinType:i?.coinType,quoteCoinType:s?.coinType,baseMarginPool:t,quoteMarginPool:r}),f=a?p.baseBorrowedAmount:p.quoteBorrowedAmount);let m,y={marginManager:e,baseCoin:i,quoteCoin:s,depositCoinType:a?i.coinType:s.coinType};if(a){let k=await this.getBaseBalance({account:l,marginManager:e,baseCoinType:i?.coinType,quoteCoinType:s?.coinType});m=S(f).sub(k).toString()}else{let k=await this.getQuoteBalance({account:l,marginManager:e,baseCoinType:i?.coinType,quoteCoinType:s?.coinType});m=S(f).sub(k).toString()}S(m).gt(0)&&await this.deposit({...y,amount:m},u),u.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::${a?"repay_base":"repay_quote"}`,arguments:[u.object(this._sdk.sdkOptions.margin_utils.global_config_id),u.object(this._sdk.sdkOptions.margin_utils.versioned_id),u.object(e),u.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),u.object(a?t:r),u.object.option({type:"u64",value:o?u.pure.u64(o):null}),u.object(me)],typeArguments:[i.coinType,s.coinType]})}catch(l){console.log("\u{1F680} ~ MarginUtilsModule ~ repay ~ error:",l)}return u}removeReferralKey=(e,t,r,i,s=new W)=>{let a=s.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::id`,typeArguments:[r,i],arguments:[s.object(t)]});return s.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::unset_margin_manager_referral`,typeArguments:[r,i],arguments:[typeof e=="string"?s.object(e):e,a]})};async#t(e,t,r){if(!e.feed||!t.feed)throw new Error("Base and quote coin feeds are required");let i=await this.pythPrice.updatePythPriceIDs([e.feed,t.feed],r),s=i.get(e.feed),a=i.get(t.feed);if(!s||!a)throw new Error("Failed to get price feed object IDs");return{baseOracle:s,quoteOracle:a}}async placeMarginMarketOrder({marginManager:e,poolInfo:t,baseMarginPool:r,quoteMarginPool:i,selfMatchingOption:s,quantity:a,amountLimit:o,isBid:u,payWithDeep:l,exactBase:p,referralKey:f},m=new W){if(!e||!t)throw new Error("Margin manager and pool info are required");if(!t.id||!t.baseCoin?.coinType||!t.quoteCoin?.coinType)throw new Error("Pool info must contain valid id, baseCoin, and quoteCoin");if(!r||!i)throw new Error("Base and quote margin pool ids are required");if(!a||BigInt(ir(a,t.baseCoin.decimals||0))<=0n)throw new Error("Valid order quantity is required");if(!o||BigInt(ir(o,t.baseCoin.decimals||0))<=0n)throw new Error("Valid order amount limit is required");let{id:y,baseCoin:k,quoteCoin:C}=t;if(k.decimals===void 0||C.decimals===void 0)throw new Error("Base and quote coin decimals are required");f&&this.removeReferralKey(e,y,k.coinType,C.coinType,m);try{let{baseOracle:A,quoteOracle:E}=await this.#t(k,C,m);return m.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::place_margin_market_order_v2_pyth_upgraded`,arguments:[m.object(this.sdk.sdkOptions.margin_utils.global_config_id),m.object(this.sdk.sdkOptions.margin_utils.versioned_id),typeof e=="string"?m.object(e):e,m.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),m.object(y),m.object(r),m.object(i),m.object(A),m.object(E),m.pure.u8(s),m.pure.u64(a),m.pure.bool(u),m.pure.bool(l),m.pure.bool(p===void 0?!u:p),m.pure.u64(o),m.object(me)],typeArguments:[k.coinType,C.coinType]}),m}catch(A){throw new Error(`Failed to place market order: ${A instanceof Error?A.message:String(A)}`)}}async placeMarginLimitOrder({marginManager:e,poolInfo:t,baseMarginPool:r,quoteMarginPool:i,orderType:s,selfMatchingOption:a,priceInput:o,quantity:u,isBid:l,payWithDeep:p,expirationTimestamp:f=Date.now()+31536e8,referralKey:m},y=new W){if(!e||!t)throw new Error("Margin manager and pool info are required");if(!t.id||!t.baseCoin?.coinType||!t.quoteCoin?.coinType)throw new Error("Pool info must contain valid id, baseCoin, and quoteCoin");if(!r||!i)throw new Error("Base and quote margin pool ids are required");if(!o||!u)throw new Error("Price and quantity are required");let{id:k,baseCoin:C,quoteCoin:A}=t;if(C.decimals===void 0||A.decimals===void 0)throw new Error("Base and quote coin decimals are required");try{let E=BigInt(S(o).mul(10**(A.decimals-C.decimals+9)).toString()),q=BigInt(ir(u,C.decimals));if(E<=0n||q<=0n)throw new Error("Price and quantity must be greater than zero");m&&this.removeReferralKey(e,k,C.coinType,A.coinType,y);let{baseOracle:x,quoteOracle:U}=await this.#t(C,A,y);return y.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::place_margin_limit_order_v2_pyth_upgraded`,arguments:[y.object(this.sdk.sdkOptions.margin_utils.global_config_id),y.object(this.sdk.sdkOptions.margin_utils.versioned_id),y.object(e),y.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),y.object(k),y.object(r),y.object(i),y.object(x),y.object(U),y.pure.u8(s),y.pure.u8(a),y.pure.u64(E),y.pure.u64(q),y.pure.bool(l),y.pure.bool(p),y.pure.u64(f),y.object(me)],typeArguments:[C.coinType,A.coinType]}),y}catch(E){throw new Error(`Failed to place limit order: ${E instanceof Error?E.message:String(E)}`)}}modifyMarginOrder({marginManager:e,poolInfo:t,orderId:r,newQuantity:i},s=new W){if(!e||!t||!r||!i)throw new Error("All parameters (marginManager, poolInfo, orderId, newQuantity) are required");if(!t.id||!t.baseCoin?.coinType||!t.quoteCoin?.coinType)throw new Error("Pool info must contain valid id, baseCoin, and quoteCoin");if(t.baseCoin.decimals===void 0)throw new Error("Base coin decimals are required");try{let a=BigInt(ir(i,t.baseCoin.decimals));if(a<=0n)throw new Error("New quantity must be greater than zero");return s.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::modify_margin_order`,arguments:[s.object(this.sdk.sdkOptions.margin_utils.global_config_id),s.object(this.sdk.sdkOptions.margin_utils.versioned_id),s.object(e),s.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),s.object(t.id),s.pure.u128(r),s.pure.u64(a),s.object(me)],typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType]}),s}catch(a){throw new Error(`Failed to modify order: ${a instanceof Error?a.message:String(a)}`)}}cancelMarginOrder({marginManager:e,poolInfo:t,orderId:r},i=new W){if(!e||!t||!r)throw new Error("All parameters (marginManager, poolInfo, orderId) are required");if(!t.id||!t.baseCoin?.coinType||!t.quoteCoin?.coinType)throw new Error("Pool info must contain valid id, baseCoin, and quoteCoin");try{return i.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::cancel_margin_order`,arguments:[i.object(this.sdk.sdkOptions.margin_utils.global_config_id),i.object(this.sdk.sdkOptions.margin_utils.versioned_id),i.object(e),i.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),i.object(t.id),i.pure.u128(r),i.object(me)],typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType]}),i}catch(s){throw new Error(`Failed to cancel order: ${s instanceof Error?s.message:String(s)}`)}}cancelAllMarginOrders({marginManager:e,poolInfo:t},r=new W){if(!e||!t)throw new Error("Margin manager and pool info are required");if(!t.id||!t.baseCoin?.coinType||!t.quoteCoin?.coinType)throw new Error("Pool info must contain valid id, baseCoin, and quoteCoin");try{return r.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::cancel_all_margin_orders`,arguments:[r.object(this.sdk.sdkOptions.margin_utils.global_config_id),r.object(this.sdk.sdkOptions.margin_utils.versioned_id),r.object(e),r.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),r.object(t.id),r.object(me)],typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType]}),r}catch(i){throw new Error(`Failed to cancel all orders: ${i instanceof Error?i.message:String(i)}`)}}async placeReduceOnlyLimitOrder({marginManager:e,poolInfo:t,baseMarginPool:r,quoteMarginPool:i,orderType:s,selfMatchingOption:a,priceInput:o,quantity:u,isBid:l,payWithDeep:p,expirationTimestamp:f=Date.now()+31536e8},m=new W){if(!e||!t)throw new Error("Margin manager and pool info are required");if(!t.id||!t.baseCoin?.coinType||!t.quoteCoin?.coinType)throw new Error("Pool info must contain valid id, baseCoin, and quoteCoin");if(!r||!i)throw new Error("Base and quote margin pool ids are required");if(!o||!u)throw new Error("Price and quantity are required");let{baseCoin:y,quoteCoin:k}=t;if(y.decimals===void 0||k.decimals===void 0)throw new Error("Base and quote coin decimals are required");try{let C=BigInt(S(o).mul(10**(k.decimals-y.decimals+9)).toString()),A=BigInt(ir(u,y.decimals));if(C<=0n||A<=0n)throw new Error("Price and quantity must be greater than zero");let{baseOracle:E,quoteOracle:q}=await this.#t(y,k,m);return m.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::place_reduce_only_limit_order_v2_pyth_upgraded`,arguments:[m.object(this.sdk.sdkOptions.margin_utils.global_config_id),m.object(this.sdk.sdkOptions.margin_utils.versioned_id),m.object(e),m.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),m.object(t.id),m.object(r),m.object(i),m.object(E),m.object(q),m.pure.u8(s),m.pure.u8(a),m.pure.u64(C),m.pure.u64(A),m.pure.bool(l),m.pure.bool(p),m.pure.u64(f),m.object(me)],typeArguments:[y.coinType,k.coinType]}),m}catch(C){throw new Error(`Failed to place reduce only limit order: ${C instanceof Error?C.message:String(C)}`)}}async placeReduceOnlyMarketOrder({marginManager:e,poolInfo:t,baseMarginPool:r,quoteMarginPool:i,selfMatchingOption:s,quantity:a,amountLimit:o,isBid:u,payWithDeep:l},p=new W){if(!e||!t)throw new Error("Margin manager and pool info are required");if(!t.id||!t.baseCoin?.coinType||!t.quoteCoin?.coinType)throw new Error("Pool info must contain valid id, baseCoin, and quoteCoin");if(!r||!i)throw new Error("Base and quote margin pool ids are required");if(!a||BigInt(ir(a,t.baseCoin.decimals||0))<=0n)throw new Error("Valid order quantity is required");if(!o||BigInt(ir(o,t.baseCoin.decimals||0))<=0n)throw new Error("Valid order amount limit is required");let{baseCoin:f,quoteCoin:m}=t;if(f.decimals===void 0||m.decimals===void 0)throw new Error("Base and quote coin decimals are required");try{let{baseOracle:y,quoteOracle:k}=await this.#t(f,m,p);return p.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::place_reduce_only_market_order_v2_pyth_upgraded`,arguments:[p.object(this.sdk.sdkOptions.margin_utils.global_config_id),p.object(this.sdk.sdkOptions.margin_utils.versioned_id),p.object(e),p.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),p.object(t.id),p.object(r),p.object(i),p.object(y),p.object(k),p.pure.u8(s),p.pure.u64(a),p.pure.bool(u),p.pure.bool(l),p.pure.u64(o),p.object(me)],typeArguments:[f.coinType,m.coinType]}),p}catch(y){throw new Error(`Failed to place reduce only market order: ${y instanceof Error?y.message:String(y)}`)}}async getOpenOrder(e,t,r,i,s=!1,a=new W){let o;if(i)o=i;else{a.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::account_open_orders`,arguments:[a.object(e.address),s?r:a.object(r)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]}),t&&a.setSenderIfNotSet(t);let f=await this._sdk.fullClient.simulateTransaction({transaction:a,include:{commandResults:!0},checksEnabled:!1});J(f,"Failed to get margin open orders");let m=f.commandResults[s?1:0];o=P.struct("VecSet",{constants:P.vector(P.U128)}).parse(ie(m?.returnValues?.[0])).constants}if(o.length===0)return[];let u=o.map(f=>({pool:{pool_id:e.address,baseCoinType:e.baseCoin.coinType,quoteCoinType:e.quoteCoin.coinType},orderId:f})),l=await this.sdk.DeepbookUtils.getOrderInfoList(u,t)||[],p=[];return l.forEach(f=>{let m=this.sdk.DeepbookUtils.decodeOrderId(BigInt(f.order_id));p.push({...f,price:m.price,isBid:m.isBid,pool:e})}),p}async getAccountOpenOrders({poolInfo:e,marginManager:t}){try{let r=new W,i=r.moveCall({target:`${this.sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::balance_manager`,arguments:[r.object(t)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});return await this.getOpenOrder(e,this.sdk.senderAddress,i,void 0,!0,r)}catch(r){throw new Error(`Failed to get account open orders: ${r instanceof Error?r.message:String(r)}`)}}async getAccountAllMarketsOpenOrders(e,t){try{if(!e||!t||t.length===0)throw new Error("Account or pools are required");let r=[];for(let i=0;i<t.length;i++){let s=new W,a=t[i];if(a.margin_manager_id){let o=await s.moveCall({target:`${this.sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::balance_manager`,arguments:[s.object(a.margin_manager_id)],typeArguments:[a.baseCoin.coinType,a.quoteCoin.coinType]}),u=await this.getOpenOrder(a,this.sdk.senderAddress,o,void 0,!0,s);r.push(...u)}}return r}catch(r){throw new Error(`Failed to get account all markets open orders: ${r instanceof Error?r.message:String(r)}`)}}mintSupplierCap(e=new W,t){let r=e.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::mint_supplier_cap`,arguments:[e.object(this._sdk.sdkOptions.margin_utils.versioned_id),e.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),e.object(me)]});return t&&e.transferObjects([r],this.sdk.senderAddress),{tx:e,supplierCap:r}}async querySupplierCap(){try{return((await this.sdk.fullClient.queryEventsByGraphQL({MoveEventType:`${this._sdk.sdkOptions.margin_utils.package_id}::margin_utils::SupplierCapCreatedEvent`},"all"))?.data||[]).filter(i=>i.parsedJson?.owner===this.sdk.senderAddress)[0].parsedJson.supplier_cap_id}catch(e){throw new Error(`Failed to get account supplyCap: ${e instanceof Error?e.message:String(e)}`)}}mintSupplierCapAndSupply({marginPool:e,supplyCoinType:t,amount:r}){let i=new W,{supplierCap:s}=this.mintSupplierCap(i,!1);return this.supply({marginPool:e,supplierCap:s,supplyCoinType:t,amount:r,tx:i}),i.transferObjects([s],this.sdk.senderAddress),i}supply({marginPool:e,supplierCap:t,supplyCoinType:r,amount:i,tx:s}){let a=s??new W;if(!t)throw new Error("Either supplierCap must be provided");let o=nt.buildCoinWithBalance(BigInt(i),r,a);return a.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::supply`,typeArguments:[r],arguments:[a.object(this._sdk.sdkOptions.margin_utils.global_config_id),a.object(this._sdk.sdkOptions.margin_utils.versioned_id),a.object(e),a.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),a.object(t),o,a.pure.option("address","0x0"),a.object(me)]}),a}supplierWithdraw({marginPool:e,withdrawCoinType:t,amount:r,supplierCapId:i,hasSwap:s,withdrawAll:a,tx:o=new W}){let u=o.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::supplier_withdraw`,typeArguments:[t],arguments:[o.object(this._sdk.sdkOptions.margin_utils.global_config_id),o.object(this._sdk.sdkOptions.margin_utils.versioned_id),o.object(e),o.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),o.object(i),o.object.option({type:"u64",value:a?null:o.pure.u64(r)}),o.object(me)]});return s?u:(o.transferObjects([u],this.sdk.senderAddress),o)}withdrawReferralFees({marginPool:e}){let t=new W,r=t.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::withdraw_referral_fees`,arguments:[t.object(this._sdk.sdkOptions.margin_utils.versioned_id),t.object(e),t.object(this._sdk.sdkOptions.margin_utils.registry_id),t.object.option({type:"0x1",value:null}),t.object(me)],typeArguments:[this.deepCoin.coinType]});return t.transferObjects([r],this.sdk.senderAddress),t}async getUserSupplyAmount({marginPool:e,supplyCoin:t,supplierCapId:r}){let i=new W;i.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::get_user_supply_amount`,typeArguments:[t.coinType],arguments:[i.object(e),i.object(r),i.object(me)]});let s=await this.sdk.fullClient.sendSimulationTransaction(i,this.sdk.senderAddress);if(J(s,"Failed to get supply amount"),!s.commandResults||!s.commandResults[0]||!s.commandResults[0].returnValues||!s.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(s)}`);return this.#e(BigInt(P.U64.parse(new Uint8Array(s.commandResults[0].returnValues[0].bcs))),t.scalar,t.decimals)}async getDeepBookMarginRegistry(){let t=(await this.sdk.fullClient.getObject({objectId:this._sdk.sdkOptions.margin_utils.margin_registry_id,include:{json:!0}})).data.content.fields.inner.fields.id.id,r=await this.sdk.fullClient.getDynamicField({parentId:t,name:{type:"u64",bcs:P.u64().serialize(1).toBytes()}}),i=r.data.content.fields.value.fields.pool_registry.fields.id.id,s=r.data.content.fields.value.fields.margin_pools.fields.id.id;return{pool_registry_table_id:i,margin_pool_table_id:s}}async getDeepBookPool(){let{data:e}=await this.sdk.fullClient.listDynamicFields({parentId:this.sdk.sdkOptions.margin_utils.pool_registry_table_id}),t=e.map(s=>s.objectId),r=await this.sdk.fullClient.batchGetObjects(t,{json:!0}),i=[];for(let s=0;s<r.length;s++){let a=r[s].json;i.push(Da(a))}return i}async getDeepBookMarginPool(){let{data:e}=await this.sdk.fullClient.getDynamicFieldsByPage(this.sdk.sdkOptions.margin_utils.margin_pool_table_id),t=e.map(u=>u.fieldId),r=await this.sdk.fullClient.batchGetObjects(t,{json:!0}),i=[],s=[];for(let u=0;u<r.length;u++){let l=r[u].json;s.push(l.value),i.push({deposit_coin_type:l.name.name,id:l.id})}let a=await this.sdk.fullClient.batchGetObjects(s,{json:!0}),o=[];for(let u=0;u<a.length;u++){let l=a[u].json;o.push($a(l,i[u]))}return o}async getBaseQuantityIn(e,t,r,i=.01){let s=new W;s.moveCall({target:`${this.sdk.sdkOptions.deepbook.published_at}::pool::get_base_quantity_in`,typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType],arguments:[s.object(e.address),s.pure.u64(t),s.pure.bool(r),s.object(me)]});let a=await this.sdk.fullClient.sendSimulationTransaction(s,this.sdk.senderAddress);if(J(a,"Failed to get quantity in"),!a.commandResults||!a.commandResults[0]||!a.commandResults[0].returnValues||!a.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(a)}`);let o=P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[0].bcs)),u=P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[1].bcs)),l=P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[2].bcs));return{quantityOut:u.toString(),quantityInLeft:S(o.toString()).mul(S(1+i)).ceil().toString(),deep_fee_amount:l.toString()}}async getQuoteQuantityIn(e,t,r,i=.01){let s=new W;s.moveCall({target:`${this.sdk.sdkOptions.deepbook.published_at}::pool::get_quote_quantity_in`,typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType],arguments:[s.object(e.address),s.pure.u64(t),s.pure.bool(r),s.object(me)]});let a=await this.sdk.fullClient.sendSimulationTransaction(s,this.sdk.senderAddress);if(J(a,"Failed to get quantity out"),!a.commandResults||!a.commandResults[0]||!a.commandResults[0].returnValues||!a.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(a)}`);let o=P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[0].bcs)),u=P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[1].bcs)),l=P.U64.parse(new Uint8Array(a.commandResults[0].returnValues[2].bcs));return{quantityOut:o.toString(),quantityInLeft:S(u.toString()).mul(S(1+i)).ceil().toString(),deep_fee_amount:l.toString()}}async getBaseQuantityOutInput(e,t,r){let i=new W;i.moveCall({target:`${this.sdk.sdkOptions.deepbook.published_at}${r?"::pool::get_base_quantity_out":"::pool::get_base_quantity_out_input_fee"}`,typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType],arguments:[i.object(e.address),i.pure.u64(t),i.object(me)]});let s=await this.sdk.fullClient.sendSimulationTransaction(i,this.sdk.senderAddress);if(J(s,"Failed to get base amount"),!s.commandResults||!s.commandResults[0]||!s.commandResults[0].returnValues||!s.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(s)}`);let a=P.U64.parse(new Uint8Array(s.commandResults[0].returnValues[0].bcs)),o=P.U64.parse(new Uint8Array(s.commandResults[0].returnValues[1].bcs)),u=P.U64.parse(new Uint8Array(s.commandResults[0].returnValues[2].bcs));return{base_amount:a.toString(),quote_amount:o.toString(),deep_fee_amount:u.toString()}}async getQuoteQuantityOutInput(e,t,r){let i=new W;i.moveCall({target:`${this.sdk.sdkOptions.deepbook.published_at}::pool::${r?"get_quote_quantity_out":"get_quote_quantity_out_input_fee"}`,typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType],arguments:[i.object(e.address),i.pure.u64(t),i.object(me)]});let s=await this.sdk.fullClient.sendSimulationTransaction(i,this.sdk.senderAddress);if(J(s,"Failed to get quote amount"),!s.commandResults||!s.commandResults[0]||!s.commandResults[0].returnValues||!s.commandResults[0].returnValues[0])throw new Error(`Transaction failed: ${ut(s)}`);let a=P.U64.parse(new Uint8Array(s.commandResults[0].returnValues[0].bcs)),o=P.U64.parse(new Uint8Array(s.commandResults[0].returnValues[1].bcs)),u=P.U64.parse(new Uint8Array(s.commandResults[0].returnValues[2].bcs));return{base_amount:a.toString(),quote_amount:o.toString(),deep_fee_amount:u.toString()}}async getAccount(e,t,r=new W){let i=r.moveCall({target:`${this.sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::balance_manager`,arguments:[r.object(e)],typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType]}),s=[t];for(let p=0;p<s.length;p++){let f=s[p];r.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::order_trader::get_account_id`,arguments:[r.object(f.address),typeof i=="string"?r.object(i):i],typeArguments:[f.baseCoin.coinType,f.quoteCoin.coinType]})}let a=await this._sdk.fullClient.simulateTransaction({transaction:r,checksEnabled:!1,include:{events:!0}});if(a.$kind==="FailedTransaction")throw new Error(`Failed to get settled balances: ${ut(a)}`);let o=a.Transaction;if(!o?.events?.length)return null;let u,l=[];return o.events.forEach((p,f)=>{u=p?.json;let m=u.account.open_orders.contents,y=u.account.owed_balances,k=u.account.settled_balances,C=u.account.unclaimed_rebates,A=u.account.taker_volume;l.push({balance_manager_id:i,open_orders:m,owed_balances:y,settled_balances:k,unclaimed_rebates:C,taker_volume:A,poolInfo:s[f]})}),l}async withdrawSettledAmounts({poolInfo:e,marginManager:t},r=new W){return r.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::pool_proxy::withdraw_settled_amounts`,arguments:[r.object(this.sdk.sdkOptions.margin_utils.margin_registry_id),r.object(t),r.object(e.address)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]}),r}#e(e,t,r){if(t<=0||r<0)throw new Error("Scalar must be positive and decimals must be non-negative");let i=BigInt(t),s=e/i,a=e%i;if(a===0n)return s.toString();let o=t.toString().length-1,p=a.toString().padStart(o,"0").slice(0,r).replace(/0+$/,"");return p?`${s}.${p}`:s.toString()}async getMarginPoolStateForInterest(e){if(!e)throw new Error("marginPoolId is required");let t=await this.sdk.fullClient.getObject({objectId:e,include:{json:!0}});if(!t?.object?.json)throw new Error(`Failed to fetch margin pool: ${e}`);let r=t.object.json,i=r.state,s=r.config,a=s.interest_config,o=s.margin_pool_config;return{poolState:{total_supply:BigInt(i.total_supply),total_borrow:BigInt(i.total_borrow),supply_shares:BigInt(i.supply_shares),borrow_shares:BigInt(i.borrow_shares),last_update_timestamp:BigInt(i.last_update_timestamp)},interestConfig:{base_rate:BigInt(a.base_rate),base_slope:BigInt(a.base_slope),optimal_utilization:BigInt(a.optimal_utilization),excess_slope:BigInt(a.excess_slope)},marginPoolConfig:{protocol_spread:BigInt(o.protocol_spread),max_utilization_rate:BigInt(o.max_utilization_rate),min_borrow:BigInt(o.min_borrow),supply_cap:BigInt(o.supply_cap)}}}async getMarginPoolStateForInterestList(e){if(!e||e.length===0)throw new Error("marginPoolIds is required");let t=await this.sdk.fullClient.batchGetObjects(e,{json:!0}),r=[];return e.forEach((s,a)=>{let o=t[a];if(o){let u=o.json.state,l=o.json.config,p=l.interest_config,f=l.margin_pool_config;r.push({poolState:{total_supply:BigInt(u.total_supply),total_borrow:BigInt(u.total_borrow),supply_shares:BigInt(u.supply_shares),borrow_shares:BigInt(u.borrow_shares),last_update_timestamp:BigInt(u.last_update_timestamp)},interestConfig:{base_rate:BigInt(p.base_rate),base_slope:BigInt(p.base_slope),optimal_utilization:BigInt(p.optimal_utilization),excess_slope:BigInt(p.excess_slope)},marginPoolConfig:{protocol_spread:BigInt(f.protocol_spread),max_utilization_rate:BigInt(f.max_utilization_rate),min_borrow:BigInt(f.min_borrow),supply_cap:BigInt(f.supply_cap)}})}}),{poolStateObj:Object.fromEntries(e.map((s,a)=>[s,r[a]])),poolStateList:r}}async getChainTimestamp(){let{response:e}=await this.sdk.fullClient.ledgerService.getServiceInfo({}),t=e.timestamp;if(!t)throw new Error("No timestamp in service info");return BigInt(t.seconds)*1000n+BigInt(t.nanos)/1000000n}async batchGetBorrowedShares({account:e,marginManagerList:t}){let r=new W;t.forEach(s=>{r.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::borrowed_shares`,arguments:[r.object(s.marginManagerId)],typeArguments:[s.baseCoinType,s.quoteCoinType]})});let i=await this.sdk.fullClient.sendSimulationTransaction(r,e);return J(i,"Failed to batch get borrowed shares"),i.commandResults.map((s,a)=>{let o=P.U64.parse(new Uint8Array(s.returnValues[0].bcs)),u=P.U64.parse(new Uint8Array(s.returnValues[1].bcs));return{marginManagerId:t[a].marginManagerId,baseBorrowedShare:o,quoteBorrowedShare:u}})}async betchGetOpenOrders({account:e,marginManagerList:t},r=new W,i=!1){t.forEach(y=>{let k=r.moveCall({target:`${this.sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::balance_manager`,arguments:[r.object(y.marginManagerId)],typeArguments:[y.baseCoinType,y.quoteCoinType]});r.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::pool::account_open_orders`,arguments:[r.object(y.poolId),r.object(k)],typeArguments:[y.baseCoinType,y.quoteCoinType]}),r.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::get_account_id_with_margin_manager`,arguments:[r.object(y.marginManagerId),r.object(y.poolId)],typeArguments:[y.baseCoinType,y.quoteCoinType]}),r.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::locked_balance_with_margin_manager`,arguments:[r.object(y.marginManagerId),r.object(y.poolId)],typeArguments:[y.baseCoinType,y.quoteCoinType]})}),e&&r.setSenderIfNotSet(e);let s=await this.sdk.fullClient.simulateTransaction({transaction:r,checksEnabled:!1,include:{events:!0,commandResults:!0}});J(s,"Failed to batch get margin open orders");let a=s.Transaction?.events.map((y,k)=>({marginManagerId:t[k].marginManagerId,...y?.json?.account?.settled_balances||{}})),o=s.commandResults.filter((y,k)=>(k-1)%4===0),u=P.struct("VecSet",{constants:P.vector(P.U128)}),l=[];o.forEach((y,k)=>{let C=u.parse(ie(y.returnValues?.[0])).constants;C.length>0&&C.forEach(A=>{l.push({pool:{pool_id:t[k].poolId,baseCoinType:t[k].baseCoinType,quoteCoinType:t[k].quoteCoinType},marginManagerId:t[k].marginManagerId,orderId:A})})});let p=s.commandResults.filter((y,k)=>(k-3)%4===0),f=[];p.forEach((y,k)=>{f.push({marginManagerId:t[k].marginManagerId,base:P.U64.parse(ie(y.returnValues?.[0])),quote:P.U64.parse(ie(y.returnValues?.[1])),deep:P.U64.parse(ie(y.returnValues?.[2]))})});let m=[];return l.forEach((y,k)=>{let C=this.sdk.DeepbookUtils.decodeOrderId(BigInt(y.orderId));m.push({...y,price:C.price.toString(),isBid:C.isBid})}),{openOrders:m,settledBalances:a,lockedBalances:f}}async getAllPosRelevantData({account:e,marginManagerList:t}){try{let{openOrders:r,settledBalances:i,lockedBalances:s}=await this.betchGetOpenOrders({account:e,marginManagerList:t}),a=await this.batchGetBorrowedShares({account:e,marginManagerList:t}),o=new W,u=0,l=[];t.forEach(m=>{o.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::base_balance`,arguments:[o.object(m.marginManagerId)],typeArguments:[m.baseCoinType,m.quoteCoinType]}),l[u]={type:"base_balance",marginManagerId:m.marginManagerId},u++,o.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::quote_balance`,arguments:[o.object(m.marginManagerId)],typeArguments:[m.baseCoinType,m.quoteCoinType]}),l[u]={type:"quote_balance",marginManagerId:m.marginManagerId},u++,o.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_manager::deep_balance`,arguments:[o.object(m.marginManagerId)],typeArguments:[m.baseCoinType,m.quoteCoinType]}),l[u]={type:"deep_balance",marginManagerId:m.marginManagerId},u++;let y=a?.find(k=>k.marginManagerId===m.marginManagerId);if(y&&(Number(y.baseBorrowedShare)>0||Number(y.quoteBorrowedShare)>0)){let k=y.baseBorrowedShare,C=y.quoteBorrowedShare,A=!!S(k).gt(S(C)),E=A?m.baseMarginPool:m.quoteMarginPool,q=A?k:C;o.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_published_at}::margin_pool::borrow_shares_to_amount`,arguments:[o.object(E),o.pure.u64(BigInt(q)),o.object.clock()],typeArguments:[A?m?.baseCoinType:m?.quoteCoinType]}),l[u]={type:A?"borrow_base_amount":"borrow_quote_amount",marginManagerId:m.marginManagerId},u++}}),Ma(o);let p=await this.sdk.fullClient.simulateTransaction({transaction:o,checksEnabled:!1,include:{commandResults:!0,events:!0}});J(p,"Failed to get margin manager assets");let f=Object.fromEntries(t.map(m=>[m.marginManagerId,{...m,quote_balance:"0",base_balance:"0",deep_balance:"0",borrow_base_amount:"0",borrow_quote_amount:"0",open_orders:[],settled_balances:{base:"0",quote:"0",deep:"0"}}]));return p?.commandResults?.forEach((m,y)=>{let k=l[y],C=P.U64.parse(new Uint8Array(m.returnValues[0].bcs));f[k.marginManagerId]={...f[k.marginManagerId],[k.type]:C}}),r?.forEach(m=>{f[m.marginManagerId].open_orders.push(m)}),i?.forEach(m=>{f[m.marginManagerId].settled_balances=m}),s?.forEach(m=>{f[m.marginManagerId].locked_balances=m}),Object.values(f)?.forEach(m=>{m.locked_balances&&m.settled_balances&&(m.locked_balances={...m.locked_balances,base:S(m.locked_balances.base||"0").minus(S(m.settled_balances.base||"0")).toString(),quote:S(m.locked_balances.quote||"0").minus(S(m.settled_balances.quote||"0")).toString(),deep:S(m.locked_balances.deep||"0").minus(S(m.settled_balances.deep||"0")).toString()})}),f}catch(r){throw new Error(`Failed to get all pos relevant data: ${r instanceof Error?r.message:String(r)}`)}}async addConditionalOrder(e,t){let{margin_utils:r}=this.sdk.sdkOptions,{global_config_id:i,versioned_id:s,margin_registry_id:a}=r,{margin_manager_id:o,pool_id:u,base_coin:l,quote_coin:p,conditional_order_id:f,pending_order:m,is_trigger_below_price:y,trigger_price:k}=e,C=await this.pythPrice.updatePythPriceIDs([l.feed,p.feed],t),A=C.get(l.feed),E=C.get(p.feed);if(!A||!E)throw new Error("Failed to get price feed object IDs");let q=t.moveCall({target:`${r.published_at}::margin_utils::new_condition`,arguments:[t.pure.bool(y),t.pure.u64(k)]}),x=this.newPendingOrder(m,t);t.moveCall({target:`${r.published_at}::margin_utils::add_conditional_order_pyth_upgraded`,arguments:[t.object(i),t.object(s),t.object(o),t.object(u),t.object(A),t.object(E),t.object(a),typeof f=="string"?t.pure.u64(BigInt(f)):f,q,x,t.object(xn)],typeArguments:[l.coinType,p.coinType]})}newPendingOrder(e,t){let{margin_utils:r}=this.sdk.sdkOptions;if("price"in e){let{client_order_id:i,order_type:s,self_matching_option:a,price:o,quantity:u,is_bid:l,pay_with_deep:p,expire_timestamp:f}=e;return t.moveCall({target:`${r.published_at}::margin_utils::new_pending_limit_order`,arguments:[t.pure.u64(i),t.pure.u8(s),t.pure.u8(a),t.pure.u64(o),t.pure.u64(u),t.pure.bool(l),t.pure.bool(p),t.pure.u64(f)]})}else{let{client_order_id:i,self_matching_option:s,quantity:a,is_bid:o,pay_with_deep:u}=e;return t.moveCall({target:`${r.published_at}::margin_utils::new_pending_market_order`,arguments:[t.pure.u64(i),t.pure.u8(s),t.pure.u64(a),t.pure.bool(o),t.pure.bool(u)]})}}cancelAllConditionalOrders(e,t){let{margin_utils:r}=this.sdk.sdkOptions,{global_config_id:i,versioned_id:s}=r,{margin_manager_id:a,base_coin_type:o,quote_coin_type:u}=e;t.moveCall({target:`${r.published_at}::margin_utils::cancel_all_conditional_orders`,arguments:[t.object(i),t.object(s),t.object(a),t.object(xn)],typeArguments:[o,u]})}cancelConditionalOrders(e,t){let{margin_utils:r}=this.sdk.sdkOptions,{global_config_id:i,versioned_id:s}=r,{margin_manager_id:a,base_coin_type:o,quote_coin_type:u,conditional_order_id:l}=e;t.moveCall({target:`${r.published_at}::margin_utils::cancel_conditional_order`,arguments:[t.object(i),t.object(s),t.object(a),t.pure.u64(l),t.object(xn)],typeArguments:[o,u]})}async getConditionalOrders(e,t){let{deepbook:r}=this.sdk.sdkOptions;e.forEach(l=>{let{margin_manager_id:p,base_coin_type:f,quote_coin_type:m,conditional_order_ids:y}=l;y.forEach(k=>{t.moveCall({target:`${r.margin_published_at}::margin_manager::conditional_order`,arguments:[t.object(p),t.pure.u64(k)],typeArguments:[f,m]})})});let i=await this.sdk.fullClient.sendSimulationTransaction(t,In("0x0"));if(J(i,"Failed to get conditional orders"),!i?.commandResults)return[];let s=P.struct("Condition",{trigger_below_price:P.bool(),trigger_price:P.u64()}),a=P.struct("PendingOrder",{is_limit_order:P.bool(),client_order_id:P.u64(),order_type:P.option(P.u8()),self_matching_option:P.u8(),price:P.option(P.u64()),quantity:P.u64(),is_bid:P.bool(),pay_with_deep:P.bool(),expire_timestamp:P.option(P.u64())}),o=P.struct("ConditionalOrder",{conditional_order_id:P.u64(),condition:s,pending_order:a}),u=l=>{if(l.length===0||l.length===1&&l[0]===0)return null;try{return o.parse(l)}catch{if(l[0]===1&&l.length>1)try{return o.parse(l.subarray(1))}catch{return null}return null}};return i.commandResults.map(l=>{if(!l?.returnValues?.[0]?.bcs)return null;try{let p=l.returnValues[0].bcs,f=u(p);if(!f)return null;let m=this.normalizeConditionalOrder(f);return e.forEach(y=>{y.conditional_order_ids.find(C=>C===m.conditional_order_id)&&(m.margin_manager_id=y.margin_manager_id,m.base_coin_type=y.base_coin_type,m.quote_coin_type=y.quote_coin_type)}),m}catch{return null}})}async getConditionalOrderIds(e,t){t=t||new W;let{deepbook:r}=this.sdk.sdkOptions,i={};e.forEach(a=>{let{margin_manager_id:o,base_coin_type:u,quote_coin_type:l}=a;t.moveCall({target:`${r.margin_published_at}::margin_manager::conditional_order_ids`,arguments:[t.object(o)],typeArguments:[u,l]})});let s=await this.sdk.fullClient.sendSimulationTransaction(t,In("0x0"));return J(s,"Failed to get conditional order IDs"),s.commandResults.forEach((a,o)=>{if(a?.returnValues?.[0]?.bcs){let u=new Uint8Array(a.returnValues[0].bcs),l=P.vector(P.u64()).parse(u),p={margin_manager_id:e[o].margin_manager_id,base_coin_type:e[o].base_coin_type,quote_coin_type:e[o].quote_coin_type,conditional_order_ids:l.map(f=>f.toString())};i[e[o].margin_manager_id]=p}}),i}normalizeConditionalOrder(e){let t=r=>typeof r=="bigint"?String(r):r;return{margin_manager_id:"",base_coin_type:"",quote_coin_type:"",conditional_order_id:t(e.conditional_order_id),condition:{trigger_below_price:e.condition.trigger_below_price,trigger_price:t(e.condition.trigger_price)},pending_order:{is_limit_order:e.pending_order.is_limit_order,client_order_id:t(e.pending_order.client_order_id),order_type:e.pending_order.order_type,self_matching_option:e.pending_order.self_matching_option,price:e.pending_order.price,quantity:t(e.pending_order.quantity),is_bid:e.pending_order.is_bid,pay_with_deep:e.pending_order.pay_with_deep,expire_timestamp:e.pending_order.expire_timestamp}}}async getPoolsPriceBounds(e){if(!e?.length)throw new Error("poolInfos is required");for(let m of e){if(!m.poolId||!m.baseCoin?.coinType||!m.quoteCoin?.coinType)throw new Error("poolId, baseCoin.coinType and quoteCoin.coinType are required");if(!m.baseCoin?.feed||!m.quoteCoin?.feed)throw new Error("baseCoin.feed and quoteCoin.feed are required to refresh pool price")}let t=new W,r=[...new Set(e.flatMap(m=>[m.baseCoin.feed,m.quoteCoin.feed]))],i=await this.pythPrice.updatePythPriceIDs(r,t),s=this.sdk.sdkOptions.margin_utils.margin_registry_id,a=this.sdk.sdkOptions.deepbook.margin_published_at;for(let m of e){let y=i.get(m.baseCoin.feed),k=i.get(m.quoteCoin.feed);if(!y||!k)throw new Error(`Failed to get price feed object IDs for pool ${m.poolId}`);t.moveCall({target:`${a}::pool_proxy_upgraded::update_current_price`,arguments:[t.object(s),t.object(m.poolId),t.object(y),t.object(k),t.object(me)],typeArguments:[m.baseCoin.coinType,m.quoteCoin.coinType]}),t.moveCall({target:`${a}::margin_registry::get_price_bounds`,arguments:[t.object(s),t.pure.id(m.poolId),t.object(me)]})}let o=await this.sdk.fullClient.simulateTransaction({transaction:t,checksEnabled:!1,include:{commandResults:!0}});J(o,"Failed to get pools price bounds");let u=o.commandResults.filter(m=>m?.returnValues?.length===2);if(u.length<e.length)throw new Error(`Failed to get pools price bounds: expected ${e.length} results, got ${u.length}`);let l=[],p=u.slice(-e.length);for(let m=0;m<e.length;m++){let y=p[m],k=y?.returnValues?.[0]?.bcs??y?.returnValues?.[0]?.[0],C=y?.returnValues?.[1]?.bcs??y?.returnValues?.[1]?.[0];if(!k||!C)throw new Error(`Failed to parse price bounds for pool ${e[m].poolId}`);let A=9-e[m].baseDecimals+e[m].quoteDecimals,E=P.U64.parse(new Uint8Array(k)),q=P.U64.parse(new Uint8Array(C));l.push({pool_id:e[m].poolId,lower_bound:S(E).div(10**A).toString(),upper_bound:S(q).div(10**A).toString()})}let f=new Map;return l.forEach(m=>{f.set(m.pool_id,m)}),{priceBounds:l,priceBoundsMap:f}}};var bl="https://graphql.mainnet.sui.io/graphql",wl="https://graphql.testnet.sui.io/graphql",Rn=class{_rpcModule;_deepbookUtils;_marginUtils;_pythPrice;_sdkOptions;_senderAddress="";constructor(e){this._sdkOptions=e;let t=e.network==="testnet"?"testnet":"mainnet";this._rpcModule=Ti(new yl({baseUrl:e.fullRpcUrl,network:t}),new _l({network:e.network,url:t==="testnet"?wl:bl}),t),this._deepbookUtils=new jn(this),this._marginUtils=new Pn(this),this._pythPrice=new Vr(this),Ii(this._sdkOptions)}get senderAddress(){return this._senderAddress}set senderAddress(e){this._senderAddress=e}get DeepbookUtils(){return this._deepbookUtils}get MarginUtils(){return this._marginUtils}get PythPrice(){return this._pythPrice}get fullClient(){return this._rpcModule}get sdkOptions(){return this._sdkOptions}};var vl=(i=>(i[i.NO_RESTRICTION=0]="NO_RESTRICTION",i[i.IMMEDIATE_OR_CANCEL=1]="IMMEDIATE_OR_CANCEL",i[i.FILL_OR_KILL=2]="FILL_OR_KILL",i[i.POST_ONLY=3]="POST_ONLY",i))(vl||{}),kl=(r=>(r[r.SELF_MATCHING_ALLOWED=0]="SELF_MATCHING_ALLOWED",r[r.CANCEL_TAKER=1]="CANCEL_TAKER",r[r.CANCEL_MAKER=2]="CANCEL_MAKER",r))(kl||{});var Im=Rn;export{xn as CLOCK_ADDRESS,En as CachedContent,Rn as CetusClmmSDK,kp as ClmmExpectSwapModule,vp as ClmmFetcherModule,_p as ClmmIntegratePoolModule,yp as ClmmIntegratePoolV2Module,bp as ClmmIntegrateRouterModule,wp as ClmmIntegrateRouterWithPartnerModule,Cp as ClmmIntegrateUtilsModule,nt as CoinAssist,Tp as CoinInfoAddress,Sp as CoinStoreAddress,$i as DEEP_SCALAR,Ah as DEFAULT_GAS_BUDGET_FOR_MERGE,Mh as DEFAULT_GAS_BUDGET_FOR_SPLIT,jh as DEFAULT_GAS_BUDGET_FOR_STAKE,Oh as DEFAULT_GAS_BUDGET_FOR_TRANSFER,Eh as DEFAULT_GAS_BUDGET_FOR_TRANSFER_SUI,Ih as DEFAULT_NFT_TRANSFER_GAS_FEE,Ap as DeepbookClobV2Moudle,Mp as DeepbookCustodianV2Moudle,Op as DeepbookEndpointsV2Moudle,jn as DeepbookUtilsModule,jp as ERROR_HANDLING_RPC_LIST,Tt as FLOAT_SCALAR,Dt as FLOAT_SCALING,xh as GAS_SYMBOL,Pi as GAS_TYPE_ARG,_a as GAS_TYPE_ARG_LONG,Pn as MarginUtilsModule,_h as NORMALIZED_SUI_COIN_TYPE,vl as OrderType,Ph as SUI_SYSTEM_STATE_OBJECT_ID,kl as SelfMatchingOption,dl as YEAR_MS,pa as addHexPrefix,Lh as asIntN,Uh as asUintN,J as assertSimulationSucceeded,oh as bufferToHex,ba as cacheTime1min,Lr as cacheTime24h,wa as cacheTime5min,Dp as calc100PercentRepay,ml as calcDebtDetail,pl as calcInterestRate,hl as calcUtilizationRate,qp as calculateRiskRatio,ah as checkAddress,fa as composeType,S as d,Ri as decimalsMultiplier,Im as default,fh as extractAddressFromType,nr as extractStructTagFromType,gh as fixCoinType,Cr as fixDown,Yu as fixSuiObjectId,Tr as fromDecimalsAmount,Ep as getDefaultSuiInputType,Bi as getFutureTime,il as getMoveObject,el as getObjectDeletedResponse,xa as getObjectFields,ja as getObjectId,tl as getObjectNotExistsResponse,rl as getObjectReference,Ea as getSuiObjectData,ch as hexToNumber,uh as hexToString,mh as isSortedSymbols,Wh as isSuiObjectResponse,qi as maxDecimal,Na as mulRoundUp,xi as normalizeCoinType,Ii as patchFixSuiObjectId,Ma as printTransaction,Ei as removeHexPrefix,Vh as secretKeyToEd25519Keypair,zh as secretKeyToSecp256k1Keypair,sh as shortAddress,Gu as shortString,ut as simulationErrorMessage,ie as simulationReturnBytes,Sa as sleepTime,Zu as toBuffer,ir as toDecimalsAmount,Qu as utf8to16,$a as wrapDeepBookMarginPoolInfo,Da as wrapDeepBookPoolInfo};
196
196
  /*! Bundled license information:
197
197
 
198
198
  @cetusprotocol/common-sdk/dist/index.js: