phala 1.1.12 → 1.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,135 +1,91 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'module';const require = createRequire(import.meta.url);
3
- var PS=Object.create;var Mf=Object.defineProperty;var TS=Object.getOwnPropertyDescriptor;var $S=Object.getOwnPropertyNames;var RS=Object.getPrototypeOf,MS=Object.prototype.hasOwnProperty;var zn=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var A=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ff=(e,t)=>{for(var r in t)Mf(e,r,{get:t[r],enumerable:!0})},FS=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $S(t))!MS.call(e,o)&&o!==r&&Mf(e,o,{get:()=>t[o],enumerable:!(n=TS(t,o))||n.enumerable});return e};var Ci=(e,t,r)=>(r=e!=null?PS(RS(e)):{},FS(t||!e||!e.__esModule?Mf(r,"default",{value:e,enumerable:!0}):r,e));var uh=Xt((rM,mh)=>{var hs=1e3,ys=hs*60,bs=ys*60,Po=bs*24,NS=Po*7,LS=Po*365.25;mh.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0)return BS(e);if(r==="number"&&isFinite(e))return t.long?US(e):DS(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function BS(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*LS;case"weeks":case"week":case"w":return r*NS;case"days":case"day":case"d":return r*Po;case"hours":case"hour":case"hrs":case"hr":case"h":return r*bs;case"minutes":case"minute":case"mins":case"min":case"m":return r*ys;case"seconds":case"second":case"secs":case"sec":case"s":return r*hs;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function DS(e){var t=Math.abs(e);return t>=Po?Math.round(e/Po)+"d":t>=bs?Math.round(e/bs)+"h":t>=ys?Math.round(e/ys)+"m":t>=hs?Math.round(e/hs)+"s":e+"ms"}function US(e){var t=Math.abs(e);return t>=Po?om(e,t,Po,"day"):t>=bs?om(e,t,bs,"hour"):t>=ys?om(e,t,ys,"minute"):t>=hs?om(e,t,hs,"second"):e+" ms"}function om(e,t,r,n){var o=t>=r*1.5;return Math.round(e/r)+" "+n+(o?"s":"")}});var Nf=Xt((nM,ph)=>{function zS(e){r.debug=r,r.default=r,r.coerce=c,r.disable=a,r.enable=o,r.enabled=i,r.humanize=uh(),r.destroy=m,Object.keys(e).forEach(u=>{r[u]=e[u]}),r.names=[],r.skips=[],r.formatters={};function t(u){let p=0;for(let f=0;f<u.length;f++)p=(p<<5)-p+u.charCodeAt(f),p|=0;return r.colors[Math.abs(p)%r.colors.length]}r.selectColor=t;function r(u){let p,f=null,d,g;function h(...y){if(!h.enabled)return;let b=h,x=Number(new Date),v=x-(p||x);b.diff=v,b.prev=p,b.curr=x,p=x,y[0]=r.coerce(y[0]),typeof y[0]!="string"&&y.unshift("%O");let C=0;y[0]=y[0].replace(/%([a-zA-Z%])/g,(_,I)=>{if(_==="%%")return"%";C++;let M=r.formatters[I];if(typeof M=="function"){let F=y[C];_=M.call(b,F),y.splice(C,1),C--}return _}),r.formatArgs.call(b,y),(b.log||r.log).apply(b,y)}return h.namespace=u,h.useColors=r.useColors(),h.color=r.selectColor(u),h.extend=n,h.destroy=r.destroy,Object.defineProperty(h,"enabled",{enumerable:!0,configurable:!1,get:()=>f!==null?f:(d!==r.namespaces&&(d=r.namespaces,g=r.enabled(u)),g),set:y=>{f=y}}),typeof r.init=="function"&&r.init(h),h}function n(u,p){let f=r(this.namespace+(typeof p>"u"?":":p)+u);return f.log=this.log,f}function o(u){r.save(u),r.namespaces=u,r.names=[],r.skips=[];let p=(typeof u=="string"?u:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let f of p)f[0]==="-"?r.skips.push(f.slice(1)):r.names.push(f)}function s(u,p){let f=0,d=0,g=-1,h=0;for(;f<u.length;)if(d<p.length&&(p[d]===u[f]||p[d]==="*"))p[d]==="*"?(g=d,h=f,d++):(f++,d++);else if(g!==-1)d=g+1,h++,f=h;else return!1;for(;d<p.length&&p[d]==="*";)d++;return d===p.length}function a(){let u=[...r.names,...r.skips.map(p=>"-"+p)].join(",");return r.enable(""),u}function i(u){for(let p of r.skips)if(s(u,p))return!1;for(let p of r.names)if(s(u,p))return!0;return!1}function c(u){return u instanceof Error?u.stack||u.message:u}function m(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}ph.exports=zS});var lh=Xt((_t,sm)=>{_t.formatArgs=jS;_t.save=HS;_t.load=VS;_t.useColors=OS;_t.storage=GS();_t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();_t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function OS(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function jS(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+sm.exports.humanize(this.diff),!this.useColors)return;let t="color: "+this.color;e.splice(1,0,t,"color: inherit");let r=0,n=0;e[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(r++,o==="%c"&&(n=r))}),e.splice(n,0,t)}_t.log=console.debug||console.log||(()=>{});function HS(e){try{e?_t.storage.setItem("debug",e):_t.storage.removeItem("debug")}catch{}}function VS(){let e;try{e=_t.storage.getItem("debug")||_t.storage.getItem("DEBUG")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}function GS(){try{return localStorage}catch{}}sm.exports=Nf()(_t);var{formatters:qS}=sm.exports;qS.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}});var dh=Xt((Ze,im)=>{var KS=zn("tty"),am=zn("util");Ze.init=ek;Ze.log=YS;Ze.formatArgs=JS;Ze.save=XS;Ze.load=QS;Ze.useColors=WS;Ze.destroy=am.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");Ze.colors=[6,2,3,4,5,1];try{let e=zn("supports-color");e&&(e.stderr||e).level>=2&&(Ze.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}Ze.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,t)=>{let r=t.substring(6).toLowerCase().replace(/_([a-z])/g,(o,s)=>s.toUpperCase()),n=process.env[t];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),e[r]=n,e},{});function WS(){return"colors"in Ze.inspectOpts?!!Ze.inspectOpts.colors:KS.isatty(process.stderr.fd)}function JS(e){let{namespace:t,useColors:r}=this;if(r){let n=this.color,o="\x1B[3"+(n<8?n:"8;5;"+n),s=` ${o};1m${t} \x1B[0m`;e[0]=s+e[0].split(`
3
+ var ig=Object.create;var gi=Object.defineProperty;var cg=Object.getOwnPropertyDescriptor;var lg=Object.getOwnPropertyNames;var mg=Object.getPrototypeOf,pg=Object.prototype.hasOwnProperty;var Tt=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Ze=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ug=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of lg(t))!pg.call(e,o)&&o!==r&&gi(e,o,{get:()=>t[o],enumerable:!(n=cg(t,o))||n.enumerable});return e};var qr=(e,t,r)=>(r=e!=null?ig(mg(e)):{},ug(t||!e||!e.__esModule?gi(r,"default",{value:e,enumerable:!0}):r,e));var yi=Ze((DE,hi)=>{var ur=1e3,dr=ur*60,fr=dr*60,Bt=fr*24,dg=Bt*7,fg=Bt*365.25;hi.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0)return gg(e);if(r==="number"&&isFinite(e))return t.long?yg(e):hg(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function gg(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*fg;case"weeks":case"week":case"w":return r*dg;case"days":case"day":case"d":return r*Bt;case"hours":case"hour":case"hrs":case"hr":case"h":return r*fr;case"minutes":case"minute":case"mins":case"min":case"m":return r*dr;case"seconds":case"second":case"secs":case"sec":case"s":return r*ur;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function hg(e){var t=Math.abs(e);return t>=Bt?Math.round(e/Bt)+"d":t>=fr?Math.round(e/fr)+"h":t>=dr?Math.round(e/dr)+"m":t>=ur?Math.round(e/ur)+"s":e+"ms"}function yg(e){var t=Math.abs(e);return t>=Bt?Nn(e,t,Bt,"day"):t>=fr?Nn(e,t,fr,"hour"):t>=dr?Nn(e,t,dr,"minute"):t>=ur?Nn(e,t,ur,"second"):e+" ms"}function Nn(e,t,r,n){var o=t>=r*1.5;return Math.round(e/r)+" "+n+(o?"s":"")}});var ua=Ze((RE,vi)=>{function vg(e){r.debug=r,r.default=r,r.coerce=l,r.disable=s,r.enable=o,r.enabled=c,r.humanize=yi(),r.destroy=m,Object.keys(e).forEach(p=>{r[p]=e[p]}),r.names=[],r.skips=[],r.formatters={};function t(p){let u=0;for(let d=0;d<p.length;d++)u=(u<<5)-u+p.charCodeAt(d),u|=0;return r.colors[Math.abs(u)%r.colors.length]}r.selectColor=t;function r(p){let u,d=null,f,g;function h(...v){if(!h.enabled)return;let w=h,C=Number(new Date),_=C-(u||C);w.diff=_,w.prev=u,w.curr=C,u=C,v[0]=r.coerce(v[0]),typeof v[0]!="string"&&v.unshift("%O");let S=0;v[0]=v[0].replace(/%([a-zA-Z%])/g,(x,P)=>{if(x==="%%")return"%";S++;let O=r.formatters[P];if(typeof O=="function"){let V=v[S];x=O.call(w,V),v.splice(S,1),S--}return x}),r.formatArgs.call(w,v),(w.log||r.log).apply(w,v)}return h.namespace=p,h.useColors=r.useColors(),h.color=r.selectColor(p),h.extend=n,h.destroy=r.destroy,Object.defineProperty(h,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(f!==r.namespaces&&(f=r.namespaces,g=r.enabled(p)),g),set:v=>{d=v}}),typeof r.init=="function"&&r.init(h),h}function n(p,u){let d=r(this.namespace+(typeof u>"u"?":":u)+p);return d.log=this.log,d}function o(p){r.save(p),r.namespaces=p,r.names=[],r.skips=[];let u=(typeof p=="string"?p:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let d of u)d[0]==="-"?r.skips.push(d.slice(1)):r.names.push(d)}function a(p,u){let d=0,f=0,g=-1,h=0;for(;d<p.length;)if(f<u.length&&(u[f]===p[d]||u[f]==="*"))u[f]==="*"?(g=f,h=d,f++):(d++,f++);else if(g!==-1)f=g+1,h++,d=h;else return!1;for(;f<u.length&&u[f]==="*";)f++;return f===u.length}function s(){let p=[...r.names,...r.skips.map(u=>"-"+u)].join(",");return r.enable(""),p}function c(p){for(let u of r.skips)if(a(p,u))return!1;for(let u of r.names)if(a(p,u))return!0;return!1}function l(p){return p instanceof Error?p.stack||p.message:p}function m(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}vi.exports=vg});var bi=Ze((je,Un)=>{je.formatArgs=Cg;je.save=wg;je.load=_g;je.useColors=bg;je.storage=Sg();je.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();je.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function bg(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function Cg(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+Un.exports.humanize(this.diff),!this.useColors)return;let t="color: "+this.color;e.splice(1,0,t,"color: inherit");let r=0,n=0;e[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(r++,o==="%c"&&(n=r))}),e.splice(n,0,t)}je.log=console.debug||console.log||(()=>{});function wg(e){try{e?je.storage.setItem("debug",e):je.storage.removeItem("debug")}catch{}}function _g(){let e;try{e=je.storage.getItem("debug")||je.storage.getItem("DEBUG")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}function Sg(){try{return localStorage}catch{}}Un.exports=ua()(je);var{formatters:kg}=Un.exports;kg.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}});var wi=Ze((be,Fn)=>{var Eg=Tt("tty"),On=Tt("util");be.init=Rg;be.log=Pg;be.formatArgs=Ag;be.save=$g;be.load=Dg;be.useColors=Ig;be.destroy=On.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");be.colors=[6,2,3,4,5,1];try{let e=Tt("supports-color");e&&(e.stderr||e).level>=2&&(be.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}be.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,t)=>{let r=t.substring(6).toLowerCase().replace(/_([a-z])/g,(o,a)=>a.toUpperCase()),n=process.env[t];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),e[r]=n,e},{});function Ig(){return"colors"in be.inspectOpts?!!be.inspectOpts.colors:Eg.isatty(process.stderr.fd)}function Ag(e){let{namespace:t,useColors:r}=this;if(r){let n=this.color,o="\x1B[3"+(n<8?n:"8;5;"+n),a=` ${o};1m${t} \x1B[0m`;e[0]=a+e[0].split(`
4
4
  `).join(`
5
- `+s),e.push(o+"m+"+im.exports.humanize(this.diff)+"\x1B[0m")}else e[0]=ZS()+t+" "+e[0]}function ZS(){return Ze.inspectOpts.hideDate?"":new Date().toISOString()+" "}function YS(...e){return process.stderr.write(am.formatWithOptions(Ze.inspectOpts,...e)+`
6
- `)}function XS(e){e?process.env.DEBUG=e:delete process.env.DEBUG}function QS(){return process.env.DEBUG}function ek(e){e.inspectOpts={};let t=Object.keys(Ze.inspectOpts);for(let r=0;r<t.length;r++)e.inspectOpts[t[r]]=Ze.inspectOpts[t[r]]}im.exports=Nf()(Ze);var{formatters:fh}=im.exports;fh.o=function(e){return this.inspectOpts.colors=this.useColors,am.inspect(e,this.inspectOpts).split(`
7
- `).map(t=>t.trim()).join(" ")};fh.O=function(e){return this.inspectOpts.colors=this.useColors,am.inspect(e,this.inspectOpts)}});var gh=Xt((oM,Lf)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?Lf.exports=lh():Lf.exports=dh()});var Bf,yh=A(()=>{Bf="2.38.6"});function bh(e,t){return t?.(e)?e:e&&typeof e=="object"&&"cause"in e&&e.cause!==void 0?bh(e.cause,t):t?null:e}var Df,w,K=A(()=>{yh();Df={getDocsUrl:({docsBaseUrl:e,docsPath:t="",docsSlug:r})=>t?`${e??"https://viem.sh"}${t}${r?`#${r}`:""}`:void 0,version:`viem@${Bf}`},w=class e extends Error{constructor(t,r={}){let n=r.cause instanceof e?r.cause.details:r.cause?.message?r.cause.message:r.details,o=r.cause instanceof e&&r.cause.docsPath||r.docsPath,s=Df.getDocsUrl?.({...r,docsPath:o}),a=[t||"An error occurred.","",...r.metaMessages?[...r.metaMessages,""]:[],...s?[`Docs: ${s}`]:[],...n?[`Details: ${n}`]:[],...Df.version?[`Version: ${Df.version}`]:[]].join(`
8
- `);super(a,r.cause?{cause:r.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseError"}),this.details=n,this.docsPath=o,this.metaMessages=r.metaMessages,this.name=r.name??this.name,this.shortMessage=t,this.version=Bf}walk(t){return bh(this,t)}}});var xs,cm,mm,um,Si=A(()=>{K();xs=class extends w{constructor({max:t,min:r,signed:n,size:o,value:s}){super(`Number "${s}" is not in safe ${o?`${o*8}-bit ${n?"signed":"unsigned"} `:""}integer range ${t?`(${r} to ${t})`:`(above ${r})`}`,{name:"IntegerOutOfRangeError"})}},cm=class extends w{constructor(t){super(`Bytes value "${t}" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`,{name:"InvalidBytesBooleanError"})}},mm=class extends w{constructor(t){super(`Hex value "${t}" is not a valid boolean. The hex value must be "0x0" (false) or "0x1" (true).`,{name:"InvalidHexBooleanError"})}},um=class extends w{constructor({givenSize:t,maxSize:r}){super(`Size cannot exceed ${r} bytes. Given size: ${t} bytes.`,{name:"SizeOverflowError"})}}});function ve(e,{strict:t=!0}={}){return!e||typeof e!="string"?!1:t?/^0x[0-9a-fA-F]*$/.test(e):e.startsWith("0x")}var zt=A(()=>{});function re(e){return ve(e,{strict:!1})?Math.ceil((e.length-2)/2):e.length}var Qt=A(()=>{zt()});function Ye(e,{dir:t="left"}={}){let r=typeof e=="string"?e.replace("0x",""):e,n=0;for(let o=0;o<r.length-1&&r[t==="left"?o:r.length-o-1].toString()==="0";o++)n++;return r=t==="left"?r.slice(n):r.slice(0,r.length-n),typeof e=="string"?(r.length===1&&t==="right"&&(r=`${r}0`),`0x${r.length%2===1?`0${r}`:r}`):r}var $o=A(()=>{});var ki,Ei,_i,pm=A(()=>{K();ki=class extends w{constructor({offset:t,position:r,size:n}){super(`Slice ${r==="start"?"starting":"ending"} at offset "${t}" is out-of-bounds (size: ${n}).`,{name:"SliceOffsetOutOfBoundsError"})}},Ei=class extends w{constructor({size:t,targetSize:r,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (${t}) exceeds padding size (${r}).`,{name:"SizeExceedsPaddingSizeError"})}},_i=class extends w{constructor({size:t,targetSize:r,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} is expected to be ${r} ${n} long, but is ${t} ${n} long.`,{name:"InvalidBytesLengthError"})}}});function On(e,{dir:t,size:r=32}={}){return typeof e=="string"?un(e,{dir:t,size:r}):tk(e,{dir:t,size:r})}function un(e,{dir:t,size:r=32}={}){if(r===null)return e;let n=e.replace("0x","");if(n.length>r*2)throw new Ei({size:Math.ceil(n.length/2),targetSize:r,type:"hex"});return`0x${n[t==="right"?"padEnd":"padStart"](r*2,"0")}`}function tk(e,{dir:t,size:r=32}={}){if(r===null)return e;if(e.length>r)throw new Ei({size:e.length,targetSize:r,type:"bytes"});let n=new Uint8Array(r);for(let o=0;o<r;o++){let s=t==="right";n[s?o:r-o-1]=e[s?o:e.length-o-1]}return n}var lm=A(()=>{pm()});function ye(e,t={}){return typeof e=="number"||typeof e=="bigint"?E(e,t):typeof e=="string"?xr(e,t):typeof e=="boolean"?fm(e,t):ne(e,t)}function fm(e,t={}){let r=`0x${Number(e)}`;return typeof t.size=="number"?(It(r,{size:t.size}),On(r,{size:t.size})):r}function ne(e,t={}){let r="";for(let o=0;o<e.length;o++)r+=rk[e[o]];let n=`0x${r}`;return typeof t.size=="number"?(It(n,{size:t.size}),On(n,{dir:"right",size:t.size})):n}function E(e,t={}){let{signed:r,size:n}=t,o=BigInt(e),s;n?r?s=(1n<<BigInt(n)*8n-1n)-1n:s=2n**(BigInt(n)*8n)-1n:typeof e=="number"&&(s=BigInt(Number.MAX_SAFE_INTEGER));let a=typeof s=="bigint"&&r?-s-1n:0;if(s&&o>s||o<a){let c=typeof e=="bigint"?"n":"";throw new xs({max:s?`${s}${c}`:void 0,min:`${a}${c}`,signed:r,size:n,value:`${e}${c}`})}let i=`0x${(r&&o<0?(1n<<BigInt(n*8))+BigInt(o):o).toString(16)}`;return n?On(i,{size:n}):i}function xr(e,t={}){let r=nk.encode(e);return ne(r,t)}var rk,nk,D=A(()=>{Si();lm();qe();rk=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));nk=new TextEncoder});function er(e,t={}){return typeof e=="number"||typeof e=="bigint"?ak(e,t):typeof e=="boolean"?sk(e,t):ve(e)?Ke(e,t):vr(e,t)}function sk(e,t={}){let r=new Uint8Array(1);return r[0]=Number(e),typeof t.size=="number"?(It(r,{size:t.size}),On(r,{size:t.size})):r}function xh(e){if(e>=pn.zero&&e<=pn.nine)return e-pn.zero;if(e>=pn.A&&e<=pn.F)return e-(pn.A-10);if(e>=pn.a&&e<=pn.f)return e-(pn.a-10)}function Ke(e,t={}){let r=e;t.size&&(It(r,{size:t.size}),r=On(r,{dir:"right",size:t.size}));let n=r.slice(2);n.length%2&&(n=`0${n}`);let o=n.length/2,s=new Uint8Array(o);for(let a=0,i=0;a<o;a++){let c=xh(n.charCodeAt(i++)),m=xh(n.charCodeAt(i++));if(c===void 0||m===void 0)throw new w(`Invalid byte sequence ("${n[i-2]}${n[i-1]}" in "${n}").`);s[a]=c*16+m}return s}function ak(e,t){let r=E(e,t);return Ke(r)}function vr(e,t={}){let r=ok.encode(e);return typeof t.size=="number"?(It(r,{size:t.size}),On(r,{dir:"right",size:t.size})):r}var ok,pn,Xe=A(()=>{K();zt();lm();qe();D();ok=new TextEncoder;pn={zero:48,nine:57,A:65,F:70,a:97,f:102}});function It(e,{size:t}){if(re(e)>t)throw new um({givenSize:re(e),maxSize:t})}function be(e,t={}){let{signed:r}=t;t.size&&It(e,{size:t.size});let n=BigInt(e);if(!r)return n;let o=(e.length-2)/2,s=(1n<<BigInt(o)*8n-1n)-1n;return n<=s?n:n-BigInt(`0x${"f".padStart(o*2,"f")}`)-1n}function Uf(e,t={}){let r=e;if(t.size&&(It(r,{size:t.size}),r=Ye(r)),Ye(r)==="0x00")return!1;if(Ye(r)==="0x01")return!0;throw new mm(r)}function Te(e,t={}){return Number(be(e,t))}var qe=A(()=>{Si();Qt();$o()});function vs(e,t){return({exclude:r,format:n})=>({exclude:r,format:(o,s)=>{let a=t(o,s);if(r)for(let i of r)delete a[i];return{...a,...n(o,s)}},type:e})}var dm=A(()=>{});function At(e,t){let r={};return typeof e.authorizationList<"u"&&(r.authorizationList=mk(e.authorizationList)),typeof e.accessList<"u"&&(r.accessList=e.accessList),typeof e.blobVersionedHashes<"u"&&(r.blobVersionedHashes=e.blobVersionedHashes),typeof e.blobs<"u"&&(typeof e.blobs[0]!="string"?r.blobs=e.blobs.map(n=>ne(n)):r.blobs=e.blobs),typeof e.data<"u"&&(r.data=e.data),e.account&&(r.from=e.account.address),typeof e.from<"u"&&(r.from=e.from),typeof e.gas<"u"&&(r.gas=E(e.gas)),typeof e.gasPrice<"u"&&(r.gasPrice=E(e.gasPrice)),typeof e.maxFeePerBlobGas<"u"&&(r.maxFeePerBlobGas=E(e.maxFeePerBlobGas)),typeof e.maxFeePerGas<"u"&&(r.maxFeePerGas=E(e.maxFeePerGas)),typeof e.maxPriorityFeePerGas<"u"&&(r.maxPriorityFeePerGas=E(e.maxPriorityFeePerGas)),typeof e.nonce<"u"&&(r.nonce=E(e.nonce)),typeof e.to<"u"&&(r.to=e.to),typeof e.type<"u"&&(r.type=ck[e.type]),typeof e.value<"u"&&(r.value=E(e.value)),r}function mk(e){return e.map(t=>({address:t.address,r:t.r?E(BigInt(t.r)):t.r,s:t.s?E(BigInt(t.s)):t.s,chainId:E(t.chainId),nonce:E(t.nonce),...typeof t.yParity<"u"?{yParity:E(t.yParity)}:{},...typeof t.v<"u"&&typeof t.yParity>"u"?{v:E(t.v)}:{}}))}var ck,jn=A(()=>{D();ck={legacy:"0x0",eip2930:"0x1",eip1559:"0x2",eip4844:"0x3",eip7702:"0x4"}});var JM,ZM,YM,XM,QM,eF,tF,rF,nF,oF,sF,aF,iF,cF,mF,uF,pF,lF,fF,dF,gF,hF,yF,bF,xF,vF,wF,CF,SF,kF,EF,_F,IF,AF,PF,TF,$F,RF,MF,FF,NF,LF,BF,DF,UF,zF,OF,jF,HF,VF,GF,qF,KF,WF,JF,ZF,YF,XF,QF,eN,tN,rN,nN,oN,sN,aN,iN,cN,mN,uN,pN,lN,fN,dN,gN,hN,yN,bN,xN,vN,wN,CN,SN,kN,EN,_N,IN,AN,PN,TN,$N,RN,MN,FN,NN,ws,jf=A(()=>{JM=2n**(8n-1n)-1n,ZM=2n**(16n-1n)-1n,YM=2n**(24n-1n)-1n,XM=2n**(32n-1n)-1n,QM=2n**(40n-1n)-1n,eF=2n**(48n-1n)-1n,tF=2n**(56n-1n)-1n,rF=2n**(64n-1n)-1n,nF=2n**(72n-1n)-1n,oF=2n**(80n-1n)-1n,sF=2n**(88n-1n)-1n,aF=2n**(96n-1n)-1n,iF=2n**(104n-1n)-1n,cF=2n**(112n-1n)-1n,mF=2n**(120n-1n)-1n,uF=2n**(128n-1n)-1n,pF=2n**(136n-1n)-1n,lF=2n**(144n-1n)-1n,fF=2n**(152n-1n)-1n,dF=2n**(160n-1n)-1n,gF=2n**(168n-1n)-1n,hF=2n**(176n-1n)-1n,yF=2n**(184n-1n)-1n,bF=2n**(192n-1n)-1n,xF=2n**(200n-1n)-1n,vF=2n**(208n-1n)-1n,wF=2n**(216n-1n)-1n,CF=2n**(224n-1n)-1n,SF=2n**(232n-1n)-1n,kF=2n**(240n-1n)-1n,EF=2n**(248n-1n)-1n,_F=2n**(256n-1n)-1n,IF=-(2n**(8n-1n)),AF=-(2n**(16n-1n)),PF=-(2n**(24n-1n)),TF=-(2n**(32n-1n)),$F=-(2n**(40n-1n)),RF=-(2n**(48n-1n)),MF=-(2n**(56n-1n)),FF=-(2n**(64n-1n)),NF=-(2n**(72n-1n)),LF=-(2n**(80n-1n)),BF=-(2n**(88n-1n)),DF=-(2n**(96n-1n)),UF=-(2n**(104n-1n)),zF=-(2n**(112n-1n)),OF=-(2n**(120n-1n)),jF=-(2n**(128n-1n)),HF=-(2n**(136n-1n)),VF=-(2n**(144n-1n)),GF=-(2n**(152n-1n)),qF=-(2n**(160n-1n)),KF=-(2n**(168n-1n)),WF=-(2n**(176n-1n)),JF=-(2n**(184n-1n)),ZF=-(2n**(192n-1n)),YF=-(2n**(200n-1n)),XF=-(2n**(208n-1n)),QF=-(2n**(216n-1n)),eN=-(2n**(224n-1n)),tN=-(2n**(232n-1n)),rN=-(2n**(240n-1n)),nN=-(2n**(248n-1n)),oN=-(2n**(256n-1n)),sN=2n**8n-1n,aN=2n**16n-1n,iN=2n**24n-1n,cN=2n**32n-1n,mN=2n**40n-1n,uN=2n**48n-1n,pN=2n**56n-1n,lN=2n**64n-1n,fN=2n**72n-1n,dN=2n**80n-1n,gN=2n**88n-1n,hN=2n**96n-1n,yN=2n**104n-1n,bN=2n**112n-1n,xN=2n**120n-1n,vN=2n**128n-1n,wN=2n**136n-1n,CN=2n**144n-1n,SN=2n**152n-1n,kN=2n**160n-1n,EN=2n**168n-1n,_N=2n**176n-1n,IN=2n**184n-1n,AN=2n**192n-1n,PN=2n**200n-1n,TN=2n**208n-1n,$N=2n**216n-1n,RN=2n**224n-1n,MN=2n**232n-1n,FN=2n**240n-1n,NN=2n**248n-1n,ws=2n**256n-1n});function He(e){return typeof e[0]=="string"?Qe(e):uk(e)}function uk(e){let t=0;for(let o of e)t+=o.length;let r=new Uint8Array(t),n=0;for(let o of e)r.set(o,n),n+=o.length;return r}function Qe(e){return`0x${e.reduce((t,r)=>t+r.replace("0x",""),"")}`}var bt=A(()=>{});var Pi,Cs,gm,Hf=A(()=>{K();Pi=class extends w{constructor({offset:t}){super(`Offset \`${t}\` cannot be negative.`,{name:"NegativeOffsetError"})}},Cs=class extends w{constructor({length:t,position:r}){super(`Position \`${r}\` is out of bounds (\`0 < position < ${t}\`).`,{name:"PositionOutOfBoundsError"})}},gm=class extends w{constructor({count:t,limit:r}){super(`Recursive read limit of \`${r}\` exceeded (recursive read count: \`${t}\`).`,{name:"RecursiveReadLimitExceededError"})}}});function Ss(e,{recursiveReadLimit:t=8192}={}){let r=Object.create(pk);return r.bytes=e,r.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength),r.positionReadCount=new Map,r.recursiveReadLimit=t,r}var pk,hm=A(()=>{Hf();pk={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:Number.POSITIVE_INFINITY,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new gm({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(e){if(e<0||e>this.bytes.length-1)throw new Cs({length:this.bytes.length,position:e})},decrementPosition(e){if(e<0)throw new Pi({offset:e});let t=this.position-e;this.assertPosition(t),this.position=t},getReadCount(e){return this.positionReadCount.get(e||this.position)||0},incrementPosition(e){if(e<0)throw new Pi({offset:e});let t=this.position+e;this.assertPosition(t),this.position=t},inspectByte(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectBytes(e,t){let r=t??this.position;return this.assertPosition(r+e-1),this.bytes.subarray(r,r+e)},inspectUint8(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectUint16(e){let t=e??this.position;return this.assertPosition(t+1),this.dataView.getUint16(t)},inspectUint24(e){let t=e??this.position;return this.assertPosition(t+2),(this.dataView.getUint16(t)<<8)+this.dataView.getUint8(t+2)},inspectUint32(e){let t=e??this.position;return this.assertPosition(t+3),this.dataView.getUint32(t)},pushByte(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushBytes(e){this.assertPosition(this.position+e.length-1),this.bytes.set(e,this.position),this.position+=e.length},pushUint8(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushUint16(e){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,e),this.position+=2},pushUint24(e){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,e>>8),this.dataView.setUint8(this.position+2,e&255),this.position+=3},pushUint32(e){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,e),this.position+=4},readByte(){this.assertReadLimit(),this._touch();let e=this.inspectByte();return this.position++,e},readBytes(e,t){this.assertReadLimit(),this._touch();let r=this.inspectBytes(e);return this.position+=t??e,r},readUint8(){this.assertReadLimit(),this._touch();let e=this.inspectUint8();return this.position+=1,e},readUint16(){this.assertReadLimit(),this._touch();let e=this.inspectUint16();return this.position+=2,e},readUint24(){this.assertReadLimit(),this._touch();let e=this.inspectUint24();return this.position+=3,e},readUint32(){this.assertReadLimit(),this._touch();let e=this.inspectUint32();return this.position+=4,e},get remaining(){return this.bytes.length-this.position},setPosition(e){let t=this.position;return this.assertPosition(e),this.position=e,()=>this.position=t},_touch(){if(this.recursiveReadLimit===Number.POSITIVE_INFINITY)return;let e=this.getReadCount();this.positionReadCount.set(this.position,e+1),e>0&&this.recursiveReadCount++}}});var ym,Eh,bm=A(()=>{ym={gwei:9,wei:18},Eh={ether:-9,wei:9}});function xm(e,t){let r=e.toString(),n=r.startsWith("-");n&&(r=r.slice(1)),r=r.padStart(t,"0");let[o,s]=[r.slice(0,r.length-t),r.slice(r.length-t)];return s=s.replace(/(0+)$/,""),`${n?"-":""}${o||"0"}${s?`.${s}`:""}`}var Vf=A(()=>{});function ks(e,t="wei"){return xm(e,ym[t])}var vm=A(()=>{bm();Vf()});function We(e,t="wei"){return xm(e,Eh[t])}var Es=A(()=>{bm();Vf()});function Mo(e){let t=Object.entries(e).map(([n,o])=>o===void 0||o===!1?null:[n,o]).filter(Boolean),r=t.reduce((n,[o])=>Math.max(n,o.length),0);return t.map(([n,o])=>` ${`${n}:`.padEnd(r+1)} ${o}`).join(`
9
- `)}var wm,Cm,Sm,km,Em,_s,Is,As,_m,Ot=A(()=>{vm();Es();K();wm=class extends w{constructor(){super(["Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.","Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others."].join(`
10
- `),{name:"FeeConflictError"})}},Cm=class extends w{constructor({v:t}){super(`Invalid \`v\` value "${t}". Expected 27 or 28.`,{name:"InvalidLegacyVError"})}},Sm=class extends w{constructor({transaction:t}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",Mo(t),"}","","To infer the type, either provide:","- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- an EIP-7702 Transaction with `authorizationList`, or","- a Legacy Transaction with `gasPrice`"],name:"InvalidSerializableTransactionError"})}},km=class extends w{constructor({storageKey:t}){super(`Size for storage key "${t}" is invalid. Expected 32 bytes. Got ${Math.floor((t.length-2)/2)} bytes.`,{name:"InvalidStorageKeySizeError"})}},Em=class extends w{constructor(t,{account:r,docsPath:n,chain:o,data:s,gas:a,gasPrice:i,maxFeePerGas:c,maxPriorityFeePerGas:m,nonce:u,to:p,value:f}){let d=Mo({chain:o&&`${o?.name} (id: ${o?.id})`,from:r?.address,to:p,value:typeof f<"u"&&`${ks(f)} ${o?.nativeCurrency?.symbol||"ETH"}`,data:s,gas:a,gasPrice:typeof i<"u"&&`${We(i)} gwei`,maxFeePerGas:typeof c<"u"&&`${We(c)} gwei`,maxPriorityFeePerGas:typeof m<"u"&&`${We(m)} gwei`,nonce:u});super(t.shortMessage,{cause:t,docsPath:n,metaMessages:[...t.metaMessages?[...t.metaMessages," "]:[],"Request Arguments:",d].filter(Boolean),name:"TransactionExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=t}},_s=class extends w{constructor({blockHash:t,blockNumber:r,blockTag:n,hash:o,index:s}){let a="Transaction";n&&s!==void 0&&(a=`Transaction at block time "${n}" at index "${s}"`),t&&s!==void 0&&(a=`Transaction at block hash "${t}" at index "${s}"`),r&&s!==void 0&&(a=`Transaction at block number "${r}" at index "${s}"`),o&&(a=`Transaction with hash "${o}"`),super(`${a} could not be found.`,{name:"TransactionNotFoundError"})}},Is=class extends w{constructor({hash:t}){super(`Transaction receipt with hash "${t}" could not be found. The Transaction may not be processed on a block yet.`,{name:"TransactionReceiptNotFoundError"})}},As=class extends w{constructor({receipt:t}){super(`Transaction with hash "${t.transactionHash}" reverted.`,{metaMessages:['The receipt marked the transaction as "reverted". This could mean that the function on the contract you are trying to call threw an error.'," ","You can attempt to extract the revert reason by:","- calling the `simulateContract` or `simulateCalls` Action with the `abi` and `functionName` of the contract","- using the `call` Action with raw `data`"],name:"TransactionReceiptRevertedError"}),Object.defineProperty(this,"receipt",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.receipt=t}},_m=class extends w{constructor({hash:t}){super(`Timed out while waiting for transaction with hash "${t}" to be confirmed.`,{name:"WaitForTransactionReceiptTimeoutError"})}}});function dk(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function Gf(e){if(!Number.isSafeInteger(e)||e<0)throw new Error("positive integer expected, got "+e)}function Fo(e,...t){if(!dk(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error("Uint8Array expected of length "+t+", got length="+e.length)}function Ms(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Im(e,t){Fo(e);let r=t.outputLen;if(e.length<r)throw new Error("digestInto() expects output buffer of length at least "+r)}function Ih(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function Hn(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function Am(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function Cr(e,t){return e<<32-t|e>>>t}function hk(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function yk(e){for(let t=0;t<e.length;t++)e[t]=hk(e[t]);return e}function bk(e){if(typeof e!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(e))}function Ti(e){return typeof e=="string"&&(e=bk(e)),Fo(e),e}function Pm(e){let t=n=>e().update(Ti(n)).digest(),r=e();return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=()=>e(),t}var gk,qf,Rs,Tm=A(()=>{gk=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;qf=gk?e=>e:yk;Rs=class{}});function vk(e,t=!1){return t?{h:Number(e&Rm),l:Number(e>>Th&Rm)}:{h:Number(e>>Th&Rm)|0,l:Number(e&Rm)|0}}function $h(e,t=!1){let r=e.length,n=new Uint32Array(r),o=new Uint32Array(r);for(let s=0;s<r;s++){let{h:a,l:i}=vk(e[s],t);[n[s],o[s]]=[a,i]}return[n,o]}var Rm,Th,Rh,Mh,Fh,Nh,Lh=A(()=>{Rm=BigInt(4294967295),Th=BigInt(32);Rh=(e,t,r)=>e<<r|t>>>32-r,Mh=(e,t,r)=>t<<r|e>>>32-r,Fh=(e,t,r)=>t<<r-32|e>>>64-r,Nh=(e,t,r)=>e<<r-32|t>>>64-r});var ge,Sr=A(()=>{K();ge=class extends w{constructor({address:t}){super(`Address "${t}" is invalid.`,{metaMessages:["- Address must be a hex value of 20 bytes (40 hex characters).","- Address must match its checksum counterpart."],name:"InvalidAddressError"})}}});var No,Um,zm,$i,Lo,Ri=A(()=>{K();No=class extends w{constructor({blockNumber:t,chain:r,contract:n}){super(`Chain "${r.name}" does not support contract "${n.name}".`,{metaMessages:["This could be due to any of the following:",...t&&n.blockCreated&&n.blockCreated>t?[`- The contract "${n.name}" was not deployed until block ${n.blockCreated} (current block ${t}).`]:[`- The chain does not have the contract "${n.name}" configured.`]],name:"ChainDoesNotSupportContract"})}},Um=class extends w{constructor({chain:t,currentChainId:r}){super(`The current chain of the wallet (id: ${r}) does not match the target chain for the transaction (id: ${t.id} \u2013 ${t.name}).`,{metaMessages:[`Current Chain ID: ${r}`,`Expected Chain ID: ${t.id} \u2013 ${t.name}`],name:"ChainMismatchError"})}},zm=class extends w{constructor(){super(["No chain was provided to the request.","Please provide a chain with the `chain` argument on the Action, or by supplying a `chain` to WalletClient."].join(`
11
- `),{name:"ChainNotFoundError"})}},$i=class extends w{constructor(){super("No chain was provided to the Client.",{name:"ClientChainNotConfiguredError"})}},Lo=class extends w{constructor({chainId:t}){super(typeof t=="number"?`Chain ID "${t}" is invalid.`:"Chain ID is invalid.",{name:"InvalidChainIdError"})}}});var fn,tr,Ns,Ls,Bs,Ds,Us,zs,Os,js,Lr,rr,Gn=A(()=>{Es();K();fn=class extends w{constructor({cause:t,message:r}={}){let n=r?.replace("execution reverted: ","")?.replace("execution reverted","");super(`Execution reverted ${n?`with reason: ${n}`:"for an unknown reason"}.`,{cause:t,name:"ExecutionRevertedError"})}};Object.defineProperty(fn,"code",{enumerable:!0,configurable:!0,writable:!0,value:3});Object.defineProperty(fn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/execution reverted/});tr=class extends w{constructor({cause:t,maxFeePerGas:r}={}){super(`The fee cap (\`maxFeePerGas\`${r?` = ${We(r)} gwei`:""}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:t,name:"FeeCapTooHighError"})}};Object.defineProperty(tr,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas higher than 2\^256-1|fee cap higher than 2\^256-1/});Ns=class extends w{constructor({cause:t,maxFeePerGas:r}={}){super(`The fee cap (\`maxFeePerGas\`${r?` = ${We(r)}`:""} gwei) cannot be lower than the block base fee.`,{cause:t,name:"FeeCapTooLowError"})}};Object.defineProperty(Ns,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/});Ls=class extends w{constructor({cause:t,nonce:r}={}){super(`Nonce provided for the transaction ${r?`(${r}) `:""}is higher than the next one expected.`,{cause:t,name:"NonceTooHighError"})}};Object.defineProperty(Ls,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too high/});Bs=class extends w{constructor({cause:t,nonce:r}={}){super([`Nonce provided for the transaction ${r?`(${r}) `:""}is lower than the current nonce of the account.`,"Try increasing the nonce or find the latest nonce with `getTransactionCount`."].join(`
12
- `),{cause:t,name:"NonceTooLowError"})}};Object.defineProperty(Bs,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too low|transaction already imported|already known/});Ds=class extends w{constructor({cause:t,nonce:r}={}){super(`Nonce provided for the transaction ${r?`(${r}) `:""}exceeds the maximum allowed nonce.`,{cause:t,name:"NonceMaxValueError"})}};Object.defineProperty(Ds,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce has max value/});Us=class extends w{constructor({cause:t}={}){super(["The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account."].join(`
13
- `),{cause:t,metaMessages:["This error could arise when the account does not have enough funds to:"," - pay for the total gas fee,"," - pay for the value to send."," ","The cost of the transaction is calculated as `gas * gas fee + value`, where:"," - `gas` is the amount of gas needed for transaction to execute,"," - `gas fee` is the gas fee,"," - `value` is the amount of ether to send to the recipient."],name:"InsufficientFundsError"})}};Object.defineProperty(Us,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/insufficient funds|exceeds transaction sender account balance/});zs=class extends w{constructor({cause:t,gas:r}={}){super(`The amount of gas ${r?`(${r}) `:""}provided for the transaction exceeds the limit allowed for the block.`,{cause:t,name:"IntrinsicGasTooHighError"})}};Object.defineProperty(zs,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too high|gas limit reached/});Os=class extends w{constructor({cause:t,gas:r}={}){super(`The amount of gas ${r?`(${r}) `:""}provided for the transaction is too low.`,{cause:t,name:"IntrinsicGasTooLowError"})}};Object.defineProperty(Os,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too low/});js=class extends w{constructor({cause:t}){super("The transaction type is not supported for this chain.",{cause:t,name:"TransactionTypeNotSupportedError"})}};Object.defineProperty(js,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/transaction type not valid/});Lr=class extends w{constructor({cause:t,maxPriorityFeePerGas:r,maxFeePerGas:n}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${r?` = ${We(r)} gwei`:""}) cannot be higher than the fee cap (\`maxFeePerGas\`${n?` = ${We(n)} gwei`:""}).`].join(`
14
- `),{cause:t,name:"TipAboveFeeCapError"})}};Object.defineProperty(Lr,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max priority fee per gas higher than max fee per gas|tip higher than fee cap/});rr=class extends w{constructor({cause:t}){super(`An error occurred while executing: ${t?.shortMessage}`,{cause:t,name:"UnknownNodeError"})}}});var nr,Hs=A(()=>{nr=class extends Map{constructor(t){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=t}get(t){let r=super.get(t);return super.has(t)&&r!==void 0&&(this.delete(t),super.set(t,r)),r}set(t,r){if(super.set(t,r),this.maxSize&&this.size>this.maxSize){let n=this.keys().next().value;n&&this.delete(n)}return this}}});function $k(e,t=24){let r=new Uint32Array(10);for(let n=24-t;n<24;n++){for(let a=0;a<10;a++)r[a]=e[a]^e[a+10]^e[a+20]^e[a+30]^e[a+40];for(let a=0;a<10;a+=2){let i=(a+8)%10,c=(a+2)%10,m=r[c],u=r[c+1],p=jh(m,u,1)^r[i],f=Hh(m,u,1)^r[i+1];for(let d=0;d<50;d+=10)e[a+d]^=p,e[a+d+1]^=f}let o=e[2],s=e[3];for(let a=0;a<24;a++){let i=Gh[a],c=jh(o,s,i),m=Hh(o,s,i),u=Vh[a];o=e[u],s=e[u+1],e[u]=c,e[u+1]=m}for(let a=0;a<50;a+=10){for(let i=0;i<10;i++)r[i]=e[a+i];for(let i=0;i<10;i++)e[a+i]^=~r[(i+2)%10]&r[(i+4)%10]}e[0]^=Pk[n],e[1]^=Tk[n]}Hn(r)}var kk,Mi,Ek,_k,Ik,Ak,Vh,Gh,qh,Kh,Pk,Tk,jh,Hh,Kf,Rk,Om,Wf=A(()=>{Lh();Tm();kk=BigInt(0),Mi=BigInt(1),Ek=BigInt(2),_k=BigInt(7),Ik=BigInt(256),Ak=BigInt(113),Vh=[],Gh=[],qh=[];for(let e=0,t=Mi,r=1,n=0;e<24;e++){[r,n]=[n,(2*r+3*n)%5],Vh.push(2*(5*n+r)),Gh.push((e+1)*(e+2)/2%64);let o=kk;for(let s=0;s<7;s++)t=(t<<Mi^(t>>_k)*Ak)%Ik,t&Ek&&(o^=Mi<<(Mi<<BigInt(s))-Mi);qh.push(o)}Kh=$h(qh,!0),Pk=Kh[0],Tk=Kh[1],jh=(e,t,r)=>r>32?Fh(e,t,r):Rh(e,t,r),Hh=(e,t,r)=>r>32?Nh(e,t,r):Mh(e,t,r);Kf=class e extends Rs{constructor(t,r,n,o=!1,s=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=t,this.suffix=r,this.outputLen=n,this.enableXOF=o,this.rounds=s,Gf(n),!(0<t&&t<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=Ih(this.state)}clone(){return this._cloneInto()}keccak(){qf(this.state32),$k(this.state32,this.rounds),qf(this.state32),this.posOut=0,this.pos=0}update(t){Ms(this),t=Ti(t),Fo(t);let{blockLen:r,state:n}=this,o=t.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);for(let i=0;i<a;i++)n[this.pos++]^=t[s++];this.pos===r&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:t,suffix:r,pos:n,blockLen:o}=this;t[n]^=r,(r&128)!==0&&n===o-1&&this.keccak(),t[o-1]^=128,this.keccak()}writeInto(t){Ms(this,!1),Fo(t),this.finish();let r=this.state,{blockLen:n}=this;for(let o=0,s=t.length;o<s;){this.posOut>=n&&this.keccak();let a=Math.min(n-this.posOut,s-o);t.set(r.subarray(this.posOut,this.posOut+a),o),this.posOut+=a,o+=a}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return Gf(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(Im(t,this),this.finished)throw new Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,Hn(this.state)}_cloneInto(t){let{blockLen:r,suffix:n,outputLen:o,rounds:s,enableXOF:a}=this;return t||(t=new e(r,n,o,a,s)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=s,t.suffix=n,t.outputLen=o,t.enableXOF=a,t.destroyed=this.destroyed,t}},Rk=(e,t,r)=>Pm(()=>new Kf(t,e,r)),Om=Rk(1,136,256/8)});function he(e,t){let r=t||"hex",n=Om(ve(e,{strict:!1})?er(e):e);return r==="bytes"?n:ye(n)}var or=A(()=>{Wf();zt();Xe();D()});function dn(e,t){if(Jf.has(`${e}.${t}`))return Jf.get(`${e}.${t}`);let r=t?`${t}${e.toLowerCase()}`:e.substring(2).toLowerCase(),n=he(vr(r),"bytes"),o=(t?r.substring(`${t}0x`.length):r).split("");for(let a=0;a<40;a+=2)n[a>>1]>>4>=8&&o[a]&&(o[a]=o[a].toUpperCase()),(n[a>>1]&15)>=8&&o[a+1]&&(o[a+1]=o[a+1].toUpperCase());let s=`0x${o.join("")}`;return Jf.set(`${e}.${t}`,s),s}function Vs(e,t){if(!ie(e,{strict:!1}))throw new ge({address:e});return dn(e,t)}var Jf,qn=A(()=>{Sr();Xe();or();Hs();jt();Jf=new nr(8192)});function ie(e,t){let{strict:r=!0}=t??{},n=`${e}.${r}`;if(Zf.has(n))return Zf.get(n);let o=Mk.test(e)?e.toLowerCase()===e?!0:r?dn(e)===e:!0:!1;return Zf.set(n,o),o}var Mk,Zf,jt=A(()=>{Hs();qn();Mk=/^0x[a-fA-F0-9]{40}$/,Zf=new nr(8192)});function sr(e,t,r,{strict:n}={}){return ve(e,{strict:!1})?jm(e,t,r,{strict:n}):Yf(e,t,r,{strict:n})}function Wh(e,t){if(typeof t=="number"&&t>0&&t>re(e)-1)throw new ki({offset:t,position:"start",size:re(e)})}function Jh(e,t,r){if(typeof t=="number"&&typeof r=="number"&&re(e)!==r-t)throw new ki({offset:r,position:"end",size:re(e)})}function Yf(e,t,r,{strict:n}={}){Wh(e,t);let o=e.slice(t,r);return n&&Jh(o,t,r),o}function jm(e,t,r,{strict:n}={}){Wh(e,t);let o=`0x${e.replace("0x","").slice((t??0)*2,(r??e.length)*2)}`;return n&&Jh(o,t,r),o}var Kn=A(()=>{pm();zt();Qt()});function ar({blockNumber:e,chain:t,contract:r}){let n=t?.contracts?.[r];if(!n)throw new No({chain:t,contract:{name:r}});if(e&&n.blockCreated&&n.blockCreated>e)throw new No({blockNumber:e,chain:t,contract:{name:r,blockCreated:n.blockCreated}});return n.address}var Bo=A(()=>{Ri()});function W(e){return typeof e=="string"?{address:e,type:"json-rpc"}:e}var Fe=A(()=>{});var ny,Km,oy,Wm=A(()=>{ny={1:"An `assert` condition failed.",17:"Arithmetic operation resulted in underflow or overflow.",18:"Division or modulo by zero (e.g. `5 / 0` or `23 % 0`).",33:"Attempted to convert to an invalid type.",34:"Attempted to access a storage byte array that is incorrectly encoded.",49:"Performed `.pop()` on an empty array",50:"Array index is out of bounds.",65:"Allocated too much memory or created an array which is too large.",81:"Attempted to call a zero-initialized variable of internal function type."},Km={inputs:[{name:"message",type:"string"}],name:"Error",type:"error"},oy={inputs:[{name:"reason",type:"uint256"}],name:"Panic",type:"error"}});function Je(e,{includeName:t=!1}={}){if(e.type!=="function"&&e.type!=="event"&&e.type!=="error")throw new Jm(e.type);return`${e.name}(${Bi(e.inputs,{includeName:t})})`}function Bi(e,{includeName:t=!1}={}){return e?e.map(r=>Vk(r,{includeName:t})).join(t?", ":","):""}function Vk(e,{includeName:t}){return e.type.startsWith("tuple")?`(${Bi(e.components,{includeName:t})})${e.type.slice(5)}`:e.type+(t&&e.name?` ${e.name}`:"")}var gn=A(()=>{Ne()});var Zm,Di,qs,cr,Ym,Xm,Qm,eu,Ui,Ks,tu,Ws,zi,kr,Js,ru,nu,ou,Er,Br,su,au,Zs,Jm,Ne=A(()=>{gn();Qt();K();Zm=class extends w{constructor({docsPath:t}){super(["A constructor was not found on the ABI.","Make sure you are using the correct ABI and that the constructor exists on it."].join(`
15
- `),{docsPath:t,name:"AbiConstructorNotFoundError"})}},Di=class extends w{constructor({docsPath:t}){super(["Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.","Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists."].join(`
16
- `),{docsPath:t,name:"AbiConstructorParamsNotFoundError"})}},qs=class extends w{constructor({data:t,params:r,size:n}){super([`Data size of ${n} bytes is too small for given parameters.`].join(`
17
- `),{metaMessages:[`Params: (${Bi(r,{includeName:!0})})`,`Data: ${t} (${n} bytes)`],name:"AbiDecodingDataSizeTooSmallError"}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"params",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"size",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=t,this.params=r,this.size=n}},cr=class extends w{constructor(){super('Cannot decode zero data ("0x") with ABI parameters.',{name:"AbiDecodingZeroDataError"})}},Ym=class extends w{constructor({expectedLength:t,givenLength:r,type:n}){super([`ABI encoding array length mismatch for type ${n}.`,`Expected length: ${t}`,`Given length: ${r}`].join(`
18
- `),{name:"AbiEncodingArrayLengthMismatchError"})}},Xm=class extends w{constructor({expectedSize:t,value:r}){super(`Size of bytes "${r}" (bytes${re(r)}) does not match expected size (bytes${t}).`,{name:"AbiEncodingBytesSizeMismatchError"})}},Qm=class extends w{constructor({expectedLength:t,givenLength:r}){super(["ABI encoding params/values length mismatch.",`Expected length (params): ${t}`,`Given length (values): ${r}`].join(`
19
- `),{name:"AbiEncodingLengthMismatchError"})}},eu=class extends w{constructor(t,{docsPath:r}){super([`Arguments (\`args\`) were provided to "${t}", but "${t}" on the ABI does not contain any parameters (\`inputs\`).`,"Cannot encode error result without knowing what the parameter types are.","Make sure you are using the correct ABI and that the inputs exist on it."].join(`
20
- `),{docsPath:r,name:"AbiErrorInputsNotFoundError"})}},Ui=class extends w{constructor(t,{docsPath:r}={}){super([`Error ${t?`"${t}" `:""}not found on ABI.`,"Make sure you are using the correct ABI and that the error exists on it."].join(`
21
- `),{docsPath:r,name:"AbiErrorNotFoundError"})}},Ks=class extends w{constructor(t,{docsPath:r}){super([`Encoded error signature "${t}" not found on ABI.`,"Make sure you are using the correct ABI and that the error exists on it.",`You can look up the decoded signature here: https://openchain.xyz/signatures?query=${t}.`].join(`
22
- `),{docsPath:r,name:"AbiErrorSignatureNotFoundError"}),Object.defineProperty(this,"signature",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.signature=t}},tu=class extends w{constructor({docsPath:t}){super("Cannot extract event signature from empty topics.",{docsPath:t,name:"AbiEventSignatureEmptyTopicsError"})}},Ws=class extends w{constructor(t,{docsPath:r}){super([`Encoded event signature "${t}" not found on ABI.`,"Make sure you are using the correct ABI and that the event exists on it.",`You can look up the signature here: https://openchain.xyz/signatures?query=${t}.`].join(`
23
- `),{docsPath:r,name:"AbiEventSignatureNotFoundError"})}},zi=class extends w{constructor(t,{docsPath:r}={}){super([`Event ${t?`"${t}" `:""}not found on ABI.`,"Make sure you are using the correct ABI and that the event exists on it."].join(`
24
- `),{docsPath:r,name:"AbiEventNotFoundError"})}},kr=class extends w{constructor(t,{docsPath:r}={}){super([`Function ${t?`"${t}" `:""}not found on ABI.`,"Make sure you are using the correct ABI and that the function exists on it."].join(`
25
- `),{docsPath:r,name:"AbiFunctionNotFoundError"})}},Js=class extends w{constructor(t,{docsPath:r}){super([`Function "${t}" does not contain any \`outputs\` on ABI.`,"Cannot decode function result without knowing what the parameter types are.","Make sure you are using the correct ABI and that the function exists on it."].join(`
26
- `),{docsPath:r,name:"AbiFunctionOutputsNotFoundError"})}},ru=class extends w{constructor(t,{docsPath:r}){super([`Encoded function signature "${t}" not found on ABI.`,"Make sure you are using the correct ABI and that the function exists on it.",`You can look up the signature here: https://openchain.xyz/signatures?query=${t}.`].join(`
27
- `),{docsPath:r,name:"AbiFunctionSignatureNotFoundError"})}},nu=class extends w{constructor(t,r){super("Found ambiguous types in overloaded ABI items.",{metaMessages:[`\`${t.type}\` in \`${Je(t.abiItem)}\`, and`,`\`${r.type}\` in \`${Je(r.abiItem)}\``,"","These types encode differently and cannot be distinguished at runtime.","Remove one of the ambiguous items in the ABI."],name:"AbiItemAmbiguityError"})}},ou=class extends w{constructor({expectedSize:t,givenSize:r}){super(`Expected bytes${t}, got bytes${r}.`,{name:"BytesSizeMismatchError"})}},Er=class extends w{constructor({abiItem:t,data:r,params:n,size:o}){super([`Data size of ${o} bytes is too small for non-indexed event parameters.`].join(`
28
- `),{metaMessages:[`Params: (${Bi(n,{includeName:!0})})`,`Data: ${r} (${o} bytes)`],name:"DecodeLogDataMismatch"}),Object.defineProperty(this,"abiItem",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"params",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"size",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.abiItem=t,this.data=r,this.params=n,this.size=o}},Br=class extends w{constructor({abiItem:t,param:r}){super([`Expected a topic for indexed event parameter${r.name?` "${r.name}"`:""} on event "${Je(t,{includeName:!0})}".`].join(`
29
- `),{name:"DecodeLogTopicsMismatch"}),Object.defineProperty(this,"abiItem",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.abiItem=t}},su=class extends w{constructor(t,{docsPath:r}){super([`Type "${t}" is not a valid encoding type.`,"Please provide a valid ABI type."].join(`
30
- `),{docsPath:r,name:"InvalidAbiEncodingType"})}},au=class extends w{constructor(t,{docsPath:r}){super([`Type "${t}" is not a valid decoding type.`,"Please provide a valid ABI type."].join(`
31
- `),{docsPath:r,name:"InvalidAbiDecodingType"})}},Zs=class extends w{constructor(t){super([`Value "${t}" is not a valid array.`].join(`
32
- `),{name:"InvalidArrayError"})}},Jm=class extends w{constructor(t){super([`"${t}" is not a valid definition type.`,'Valid types: "function", "event", "error"'].join(`
33
- `),{name:"InvalidDefinitionTypeError"})}}});function sy(e){return Gk(e)}var Gk,ay=A(()=>{Xe();or();Gk=e=>he(er(e))});var iy,cy=A(()=>{iy="1.1.0"});var ze,Ys=A(()=>{cy();ze=class e extends Error{constructor(t,r={}){let n=r.cause instanceof e?r.cause.details:r.cause?.message?r.cause.message:r.details,o=r.cause instanceof e&&r.cause.docsPath||r.docsPath,s=[t||"An error occurred.","",...r.metaMessages?[...r.metaMessages,""]:[],...o?[`Docs: https://abitype.dev${o}`]:[],...n?[`Details: ${n}`]:[],`Version: abitype@${iy}`].join(`
34
- `);super(s),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiTypeError"}),r.cause&&(this.cause=r.cause),this.details=n,this.docsPath=o,this.metaMessages=r.metaMessages,this.shortMessage=t}}});function Ht(e,t){return e.exec(t)?.groups}var Qf,ed,iu,Oi=A(()=>{Qf=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,ed=/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/,iu=/^\(.+?\).*?$/});function cu(e){let t=e.type;if(my.test(e.type)&&"components"in e){t="(";let r=e.components.length;for(let o=0;o<r;o++){let s=e.components[o];t+=cu(s),o<r-1&&(t+=", ")}let n=Ht(my,e.type);return t+=`)${n?.array??""}`,cu({...e,type:t})}return"indexed"in e&&e.indexed&&(t=`${t} indexed`),e.name?`${t} ${e.name}`:t}var my,uy=A(()=>{Oi();my=/^tuple(?<array>(\[(\d*)\])*)$/});function hn(e){let t="",r=e.length;for(let n=0;n<r;n++){let o=e[n];t+=cu(o),n!==r-1&&(t+=", ")}return t}var td=A(()=>{uy()});function Do(e){return e.type==="function"?`function ${e.name}(${hn(e.inputs)})${e.stateMutability&&e.stateMutability!=="nonpayable"?` ${e.stateMutability}`:""}${e.outputs?.length?` returns (${hn(e.outputs)})`:""}`:e.type==="event"?`event ${e.name}(${hn(e.inputs)})`:e.type==="error"?`error ${e.name}(${hn(e.inputs)})`:e.type==="constructor"?`constructor(${hn(e.inputs)})${e.stateMutability==="payable"?" payable":""}`:e.type==="fallback"?`fallback() external${e.stateMutability==="payable"?" payable":""}`:"receive() external payable"}var py=A(()=>{td()});function fy(e){return ly.test(e)}function dy(e){return Ht(ly,e)}function hy(e){return gy.test(e)}function yy(e){return Ht(gy,e)}function xy(e){return by.test(e)}function vy(e){return Ht(by,e)}function Wn(e){return wy.test(e)}function Cy(e){return Ht(wy,e)}function ky(e){return Sy.test(e)}function Ey(e){return Ht(Sy,e)}function Iy(e){return _y.test(e)}function Ay(e){return Ht(_y,e)}function Py(e){return qk.test(e)}var ly,gy,by,wy,Sy,_y,qk,rd,Ty,mu,Xs=A(()=>{Oi();ly=/^error (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\((?<parameters>.*?)\)$/;gy=/^event (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\((?<parameters>.*?)\)$/;by=/^function (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\((?<parameters>.*?)\)(?: (?<scope>external|public{1}))?(?: (?<stateMutability>pure|view|nonpayable|payable{1}))?(?: returns\s?\((?<returns>.*?)\))?$/;wy=/^struct (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*) \{(?<properties>.*?)\}$/;Sy=/^constructor\((?<parameters>.*?)\)(?:\s(?<stateMutability>payable{1}))?$/;_y=/^fallback\(\) external(?:\s(?<stateMutability>payable{1}))?$/;qk=/^receive\(\) external payable$/;rd=new Set(["memory","indexed","storage","calldata"]),Ty=new Set(["indexed"]),mu=new Set(["calldata","memory","storage"])});var uu,pu,lu,fu=A(()=>{Ys();uu=class extends ze{constructor({signature:t}){super("Failed to parse ABI item.",{details:`parseAbiItem(${JSON.stringify(t,null,2)})`,docsPath:"/api/human#parseabiitem-1"}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidAbiItemError"})}},pu=class extends ze{constructor({type:t}){super("Unknown type.",{metaMessages:[`Type "${t}" is not a valid ABI type. Perhaps you forgot to include a struct signature?`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UnknownTypeError"})}},lu=class extends ze{constructor({type:t}){super("Unknown type.",{metaMessages:[`Type "${t}" is not a valid ABI type.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UnknownSolidityTypeError"})}}});var du,gu,hu,yu,bu,xu,vu=A(()=>{Ys();du=class extends ze{constructor({params:t}){super("Failed to parse ABI parameters.",{details:`parseAbiParameters(${JSON.stringify(t,null,2)})`,docsPath:"/api/human#parseabiparameters-1"}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidAbiParametersError"})}},gu=class extends ze{constructor({param:t}){super("Invalid ABI parameter.",{details:t}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidParameterError"})}},hu=class extends ze{constructor({param:t,name:r}){super("Invalid ABI parameter.",{details:t,metaMessages:[`"${r}" is a protected Solidity keyword. More info: https://docs.soliditylang.org/en/latest/cheatsheet.html`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SolidityProtectedKeywordError"})}},yu=class extends ze{constructor({param:t,type:r,modifier:n}){super("Invalid ABI parameter.",{details:t,metaMessages:[`Modifier "${n}" not allowed${r?` in "${r}" type`:""}.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidModifierError"})}},bu=class extends ze{constructor({param:t,type:r,modifier:n}){super("Invalid ABI parameter.",{details:t,metaMessages:[`Modifier "${n}" not allowed${r?` in "${r}" type`:""}.`,`Data location can only be specified for array, struct, or mapping types, but "${n}" was given.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidFunctionModifierError"})}},xu=class extends ze{constructor({abiParameter:t}){super("Invalid ABI parameter.",{details:JSON.stringify(t,null,2),metaMessages:["ABI parameter type is invalid."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidAbiTypeParameterError"})}}});var Dr,wu,Cu,nd=A(()=>{Ys();Dr=class extends ze{constructor({signature:t,type:r}){super(`Invalid ${r} signature.`,{details:t}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidSignatureError"})}},wu=class extends ze{constructor({signature:t}){super("Unknown signature.",{details:t}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UnknownSignatureError"})}},Cu=class extends ze{constructor({signature:t}){super("Invalid struct signature.",{details:t,metaMessages:["No properties exist."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidStructSignatureError"})}}});var Su,$y=A(()=>{Ys();Su=class extends ze{constructor({type:t}){super("Circular reference detected.",{metaMessages:[`Struct "${t}" is a circular reference.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"CircularReferenceError"})}}});var ku,Ry=A(()=>{Ys();ku=class extends ze{constructor({current:t,depth:r}){super("Unbalanced parentheses.",{metaMessages:[`"${t.trim()}" has too many ${r>0?"opening":"closing"} parentheses.`],details:`Depth "${r}"`}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidParenthesisError"})}}});function My(e,t,r){let n="";if(r)for(let o of Object.entries(r)){if(!o)continue;let s="";for(let a of o[1])s+=`[${a.type}${a.name?`:${a.name}`:""}]`;n+=`(${o[0]}{${s}})`}return t?`${t}:${e}${n}`:e}var Eu,Fy=A(()=>{Eu=new Map([["address",{type:"address"}],["bool",{type:"bool"}],["bytes",{type:"bytes"}],["bytes32",{type:"bytes32"}],["int",{type:"int256"}],["int256",{type:"int256"}],["string",{type:"string"}],["uint",{type:"uint256"}],["uint8",{type:"uint8"}],["uint16",{type:"uint16"}],["uint24",{type:"uint24"}],["uint32",{type:"uint32"}],["uint64",{type:"uint64"}],["uint96",{type:"uint96"}],["uint112",{type:"uint112"}],["uint160",{type:"uint160"}],["uint192",{type:"uint192"}],["uint256",{type:"uint256"}],["address owner",{type:"address",name:"owner"}],["address to",{type:"address",name:"to"}],["bool approved",{type:"bool",name:"approved"}],["bytes _data",{type:"bytes",name:"_data"}],["bytes data",{type:"bytes",name:"data"}],["bytes signature",{type:"bytes",name:"signature"}],["bytes32 hash",{type:"bytes32",name:"hash"}],["bytes32 r",{type:"bytes32",name:"r"}],["bytes32 root",{type:"bytes32",name:"root"}],["bytes32 s",{type:"bytes32",name:"s"}],["string name",{type:"string",name:"name"}],["string symbol",{type:"string",name:"symbol"}],["string tokenURI",{type:"string",name:"tokenURI"}],["uint tokenId",{type:"uint256",name:"tokenId"}],["uint8 v",{type:"uint8",name:"v"}],["uint256 balance",{type:"uint256",name:"balance"}],["uint256 tokenId",{type:"uint256",name:"tokenId"}],["uint256 value",{type:"uint256",name:"value"}],["event:address indexed from",{type:"address",name:"from",indexed:!0}],["event:address indexed to",{type:"address",name:"to",indexed:!0}],["event:uint indexed tokenId",{type:"uint256",name:"tokenId",indexed:!0}],["event:uint256 indexed tokenId",{type:"uint256",name:"tokenId",indexed:!0}]])});function ji(e,t={}){if(xy(e))return Kk(e,t);if(hy(e))return Wk(e,t);if(fy(e))return Jk(e,t);if(ky(e))return Zk(e,t);if(Iy(e))return Yk(e);if(Py(e))return{type:"receive",stateMutability:"payable"};throw new wu({signature:e})}function Kk(e,t={}){let r=vy(e);if(!r)throw new Dr({signature:e,type:"function"});let n=Pt(r.parameters),o=[],s=n.length;for(let i=0;i<s;i++)o.push(_r(n[i],{modifiers:mu,structs:t,type:"function"}));let a=[];if(r.returns){let i=Pt(r.returns),c=i.length;for(let m=0;m<c;m++)a.push(_r(i[m],{modifiers:mu,structs:t,type:"function"}))}return{name:r.name,type:"function",stateMutability:r.stateMutability??"nonpayable",inputs:o,outputs:a}}function Wk(e,t={}){let r=yy(e);if(!r)throw new Dr({signature:e,type:"event"});let n=Pt(r.parameters),o=[],s=n.length;for(let a=0;a<s;a++)o.push(_r(n[a],{modifiers:Ty,structs:t,type:"event"}));return{name:r.name,type:"event",inputs:o}}function Jk(e,t={}){let r=dy(e);if(!r)throw new Dr({signature:e,type:"error"});let n=Pt(r.parameters),o=[],s=n.length;for(let a=0;a<s;a++)o.push(_r(n[a],{structs:t,type:"error"}));return{name:r.name,type:"error",inputs:o}}function Zk(e,t={}){let r=Ey(e);if(!r)throw new Dr({signature:e,type:"constructor"});let n=Pt(r.parameters),o=[],s=n.length;for(let a=0;a<s;a++)o.push(_r(n[a],{structs:t,type:"constructor"}));return{type:"constructor",stateMutability:r.stateMutability??"nonpayable",inputs:o}}function Yk(e){let t=Ay(e);if(!t)throw new Dr({signature:e,type:"fallback"});return{type:"fallback",stateMutability:t.stateMutability??"nonpayable"}}function _r(e,t){let r=My(e,t?.type,t?.structs);if(Eu.has(r))return Eu.get(r);let n=iu.test(e),o=Ht(n?Qk:Xk,e);if(!o)throw new gu({param:e});if(o.name&&rE(o.name))throw new hu({param:e,name:o.name});let s=o.name?{name:o.name}:{},a=o.modifier==="indexed"?{indexed:!0}:{},i=t?.structs??{},c,m={};if(n){c="tuple";let p=Pt(o.type),f=[],d=p.length;for(let g=0;g<d;g++)f.push(_r(p[g],{structs:i}));m={components:f}}else if(o.type in i)c="tuple",m={components:i[o.type]};else if(eE.test(o.type))c=`${o.type}256`;else if(o.type==="address payable")c="address";else if(c=o.type,t?.type!=="struct"&&!od(c))throw new lu({type:c});if(o.modifier){if(!t?.modifiers?.has?.(o.modifier))throw new yu({param:e,type:t?.type,modifier:o.modifier});if(mu.has(o.modifier)&&!nE(c,!!o.array))throw new bu({param:e,type:t?.type,modifier:o.modifier})}let u={type:`${c}${o.array??""}`,...s,...a,...m};return Eu.set(r,u),u}function Pt(e,t=[],r="",n=0){let o=e.trim().length;for(let s=0;s<o;s++){let a=e[s],i=e.slice(s+1);switch(a){case",":return n===0?Pt(i,[...t,r.trim()]):Pt(i,t,`${r}${a}`,n);case"(":return Pt(i,t,`${r}${a}`,n+1);case")":return Pt(i,t,`${r}${a}`,n-1);default:return Pt(i,t,`${r}${a}`,n)}}if(r==="")return t;if(n!==0)throw new ku({current:r,depth:n});return t.push(r.trim()),t}function od(e){return e==="address"||e==="bool"||e==="function"||e==="string"||Qf.test(e)||ed.test(e)}function rE(e){return e==="address"||e==="bool"||e==="function"||e==="string"||e==="tuple"||Qf.test(e)||ed.test(e)||tE.test(e)}function nE(e,t){return t||e==="bytes"||e==="string"||e==="tuple"}var Xk,Qk,eE,tE,Qs=A(()=>{Oi();fu();vu();nd();Ry();Fy();Xs();Xk=/^(?<type>[a-zA-Z$_][a-zA-Z0-9$_]*(?:\spayable)?)(?<array>(?:\[\d*?\])+?)?(?:\s(?<modifier>calldata|indexed|memory|storage{1}))?(?:\s(?<name>[a-zA-Z$_][a-zA-Z0-9$_]*))?$/,Qk=/^\((?<type>.+?)\)(?<array>(?:\[\d*?\])+?)?(?:\s(?<modifier>calldata|indexed|memory|storage{1}))?(?:\s(?<name>[a-zA-Z$_][a-zA-Z0-9$_]*))?$/,eE=/^u?int$/;tE=/^(?:after|alias|anonymous|apply|auto|byte|calldata|case|catch|constant|copyof|default|defined|error|event|external|false|final|function|immutable|implements|in|indexed|inline|internal|let|mapping|match|memory|mutable|null|of|override|partial|private|promise|public|pure|reference|relocatable|return|returns|sizeof|static|storage|struct|super|supports|switch|this|true|try|typedef|typeof|var|view|virtual)$/});function ea(e){let t={},r=e.length;for(let a=0;a<r;a++){let i=e[a];if(!Wn(i))continue;let c=Cy(i);if(!c)throw new Dr({signature:i,type:"struct"});let m=c.properties.split(";"),u=[],p=m.length;for(let f=0;f<p;f++){let g=m[f].trim();if(!g)continue;let h=_r(g,{type:"struct"});u.push(h)}if(!u.length)throw new Cu({signature:i});t[c.name]=u}let n={},o=Object.entries(t),s=o.length;for(let a=0;a<s;a++){let[i,c]=o[a];n[i]=Ny(c,t)}return n}function Ny(e,t,r=new Set){let n=[],o=e.length;for(let s=0;s<o;s++){let a=e[s];if(iu.test(a.type))n.push(a);else{let c=Ht(oE,a.type);if(!c?.type)throw new xu({abiParameter:a});let{array:m,type:u}=c;if(u in t){if(r.has(u))throw new Su({type:u});n.push({...a,type:`tuple${m??""}`,components:Ny(t[u]??[],t,new Set([...r,u]))})}else if(od(u))n.push(a);else throw new pu({type:u})}}return n}var oE,_u=A(()=>{Oi();fu();vu();nd();$y();Xs();Qs();oE=/^(?<type>[a-zA-Z$_][a-zA-Z0-9$_]*)(?<array>(?:\[\d*?\])+?)?$/});function Iu(e){let t=ea(e),r=[],n=e.length;for(let o=0;o<n;o++){let s=e[o];Wn(s)||r.push(ji(s,t))}return r}var Ly=A(()=>{Xs();_u();Qs()});function Au(e){let t;if(typeof e=="string")t=ji(e);else{let r=ea(e),n=e.length;for(let o=0;o<n;o++){let s=e[o];if(!Wn(s)){t=ji(s,r);break}}}if(!t)throw new uu({signature:e});return t}var By=A(()=>{fu();Xs();_u();Qs()});function Pu(e){let t=[];if(typeof e=="string"){let r=Pt(e),n=r.length;for(let o=0;o<n;o++)t.push(_r(r[o],{modifiers:rd}))}else{let r=ea(e),n=e.length;for(let o=0;o<n;o++){let s=e[o];if(Wn(s))continue;let a=Pt(s),i=a.length;for(let c=0;c<i;c++)t.push(_r(a[c],{modifiers:rd,structs:r}))}}if(t.length===0)throw new du({params:e});return t}var Dy=A(()=>{vu();Xs();_u();Qs();Qs()});var Hi=A(()=>{py();td();Ly();By();Dy()});function zy(e){let t=!0,r="",n=0,o="",s=!1;for(let a=0;a<e.length;a++){let i=e[a];if(["(",")",","].includes(i)&&(t=!0),i==="("&&n++,i===")"&&n--,!!t){if(n===0){if(i===" "&&["event","function",""].includes(o))o="";else if(o+=i,i===")"){s=!0;break}continue}if(i===" "){e[a-1]!==","&&r!==","&&r!==",("&&(r="",t=!1);continue}o+=i,r+=i}}if(!s)throw new w("Unable to normalize signature.");return o}var Oy=A(()=>{K()});var jy,Hy=A(()=>{Hi();Oy();jy=e=>{let t=typeof e=="string"?e:Do(e);return zy(t)}});function Tu(e){return sy(jy(e))}var sd=A(()=>{ay();Hy()});var Ur,ta=A(()=>{Kn();sd();Ur=e=>sr(Tu(e),0,4)});function Vy(e,t={}){typeof t.size<"u"&&It(e,{size:t.size});let r=ne(e,t);return be(r,t)}function Gy(e,t={}){let r=e;if(typeof t.size<"u"&&(It(r,{size:t.size}),r=Ye(r)),r.length>1||r[0]>1)throw new cm(r);return!!r[0]}function zr(e,t={}){typeof t.size<"u"&&It(e,{size:t.size});let r=ne(e,t);return Te(r,t)}function qy(e,t={}){let r=e;return typeof t.size<"u"&&(It(r,{size:t.size}),r=Ye(r,{dir:"right"})),new TextDecoder().decode(r)}var Ky=A(()=>{Si();$o();qe();D()});var Wy,$u,ad=A(()=>{Wy=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,$u=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/});function xt(e,t){if(e.length!==t.length)throw new Qm({expectedLength:e.length,givenLength:t.length});let r=sE({params:e,values:t}),n=cd(r);return n.length===0?"0x":n}function sE({params:e,values:t}){let r=[];for(let n=0;n<e.length;n++)r.push(id({param:e[n],value:t[n]}));return r}function id({param:e,value:t}){let r=Ru(e.type);if(r){let[n,o]=r;return iE(t,{length:n,param:{...e,type:o}})}if(e.type==="tuple")return lE(t,{param:e});if(e.type==="address")return aE(t);if(e.type==="bool")return mE(t);if(e.type.startsWith("uint")||e.type.startsWith("int")){let n=e.type.startsWith("int"),[,,o="256"]=$u.exec(e.type)??[];return uE(t,{signed:n,size:Number(o)})}if(e.type.startsWith("bytes"))return cE(t,{param:e});if(e.type==="string")return pE(t);throw new su(e.type,{docsPath:"/docs/contract/encodeAbiParameters"})}function cd(e){let t=0;for(let s=0;s<e.length;s++){let{dynamic:a,encoded:i}=e[s];a?t+=32:t+=re(i)}let r=[],n=[],o=0;for(let s=0;s<e.length;s++){let{dynamic:a,encoded:i}=e[s];a?(r.push(E(t+o,{size:32})),n.push(i),o+=re(i)):r.push(i)}return He([...r,...n])}function aE(e){if(!ie(e))throw new ge({address:e});return{dynamic:!1,encoded:un(e.toLowerCase())}}function iE(e,{length:t,param:r}){let n=t===null;if(!Array.isArray(e))throw new Zs(e);if(!n&&e.length!==t)throw new Ym({expectedLength:t,givenLength:e.length,type:`${r.type}[${t}]`});let o=!1,s=[];for(let a=0;a<e.length;a++){let i=id({param:r,value:e[a]});i.dynamic&&(o=!0),s.push(i)}if(n||o){let a=cd(s);if(n){let i=E(s.length,{size:32});return{dynamic:!0,encoded:s.length>0?He([i,a]):i}}if(o)return{dynamic:!0,encoded:a}}return{dynamic:!1,encoded:He(s.map(({encoded:a})=>a))}}function cE(e,{param:t}){let[,r]=t.type.split("bytes"),n=re(e);if(!r){let o=e;return n%32!==0&&(o=un(o,{dir:"right",size:Math.ceil((e.length-2)/2/32)*32})),{dynamic:!0,encoded:He([un(E(n,{size:32})),o])}}if(n!==Number.parseInt(r,10))throw new Xm({expectedSize:Number.parseInt(r,10),value:e});return{dynamic:!1,encoded:un(e,{dir:"right"})}}function mE(e){if(typeof e!="boolean")throw new w(`Invalid boolean value: "${e}" (type: ${typeof e}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:un(fm(e))}}function uE(e,{signed:t,size:r=256}){if(typeof r=="number"){let n=2n**(BigInt(r)-(t?1n:0n))-1n,o=t?-n-1n:0n;if(e>n||e<o)throw new xs({max:n.toString(),min:o.toString(),signed:t,size:r/8,value:e.toString()})}return{dynamic:!1,encoded:E(e,{size:32,signed:t})}}function pE(e){let t=xr(e),r=Math.ceil(re(t)/32),n=[];for(let o=0;o<r;o++)n.push(un(sr(t,o*32,(o+1)*32),{dir:"right"}));return{dynamic:!0,encoded:He([un(E(re(t),{size:32})),...n])}}function lE(e,{param:t}){let r=!1,n=[];for(let o=0;o<t.components.length;o++){let s=t.components[o],a=Array.isArray(e)?o:s.name,i=id({param:s,value:e[a]});n.push(i),i.dynamic&&(r=!0)}return{dynamic:r,encoded:r?cd(n):He(n.map(({encoded:o})=>o))}}function Ru(e){let t=e.match(/^(.*)\[(\d+)?\]$/);return t?[t[2]?Number(t[2]):null,t[1]]:void 0}var yn=A(()=>{Ne();Sr();K();Si();jt();bt();lm();Qt();Kn();D();ad()});function bn(e,t){let r=typeof t=="string"?Ke(t):t,n=Ss(r);if(re(r)===0&&e.length>0)throw new cr;if(re(t)&&re(t)<32)throw new qs({data:typeof t=="string"?t:ne(t),params:e,size:re(t)});let o=0,s=[];for(let a=0;a<e.length;++a){let i=e[a];n.setPosition(o);let[c,m]=ra(n,i,{staticPosition:0});o+=m,s.push(c)}return s}function ra(e,t,{staticPosition:r}){let n=Ru(t.type);if(n){let[o,s]=n;return dE(e,{...t,type:s},{length:o,staticPosition:r})}if(t.type==="tuple")return bE(e,t,{staticPosition:r});if(t.type==="address")return fE(e);if(t.type==="bool")return gE(e);if(t.type.startsWith("bytes"))return hE(e,t,{staticPosition:r});if(t.type.startsWith("uint")||t.type.startsWith("int"))return yE(e,t);if(t.type==="string")return xE(e,{staticPosition:r});throw new au(t.type,{docsPath:"/docs/contract/decodeAbiParameters"})}function fE(e){let t=e.readBytes(32);return[dn(ne(Yf(t,-20))),32]}function dE(e,t,{length:r,staticPosition:n}){if(!r){let a=zr(e.readBytes(md)),i=n+a,c=i+Jy;e.setPosition(i);let m=zr(e.readBytes(Jy)),u=Vi(t),p=0,f=[];for(let d=0;d<m;++d){e.setPosition(c+(u?d*32:p));let[g,h]=ra(e,t,{staticPosition:c});p+=h,f.push(g)}return e.setPosition(n+32),[f,32]}if(Vi(t)){let a=zr(e.readBytes(md)),i=n+a,c=[];for(let m=0;m<r;++m){e.setPosition(i+m*32);let[u]=ra(e,t,{staticPosition:i});c.push(u)}return e.setPosition(n+32),[c,32]}let o=0,s=[];for(let a=0;a<r;++a){let[i,c]=ra(e,t,{staticPosition:n+o});o+=c,s.push(i)}return[s,o]}function gE(e){return[Gy(e.readBytes(32),{size:32}),32]}function hE(e,t,{staticPosition:r}){let[n,o]=t.type.split("bytes");if(!o){let a=zr(e.readBytes(32));e.setPosition(r+a);let i=zr(e.readBytes(32));if(i===0)return e.setPosition(r+32),["0x",32];let c=e.readBytes(i);return e.setPosition(r+32),[ne(c),32]}return[ne(e.readBytes(Number.parseInt(o,10),32)),32]}function yE(e,t){let r=t.type.startsWith("int"),n=Number.parseInt(t.type.split("int")[1]||"256",10),o=e.readBytes(32);return[n>48?Vy(o,{signed:r}):zr(o,{signed:r}),32]}function bE(e,t,{staticPosition:r}){let n=t.components.length===0||t.components.some(({name:a})=>!a),o=n?[]:{},s=0;if(Vi(t)){let a=zr(e.readBytes(md)),i=r+a;for(let c=0;c<t.components.length;++c){let m=t.components[c];e.setPosition(i+s);let[u,p]=ra(e,m,{staticPosition:i});s+=p,o[n?c:m?.name]=u}return e.setPosition(r+32),[o,32]}for(let a=0;a<t.components.length;++a){let i=t.components[a],[c,m]=ra(e,i,{staticPosition:r});o[n?a:i?.name]=c,s+=m}return[o,s]}function xE(e,{staticPosition:t}){let r=zr(e.readBytes(32)),n=t+r;e.setPosition(n);let o=zr(e.readBytes(32));if(o===0)return e.setPosition(t+32),["",32];let s=e.readBytes(o,32),a=qy(Ye(s));return e.setPosition(t+32),[a,32]}function Vi(e){let{type:t}=e;if(t==="string"||t==="bytes"||t.endsWith("[]"))return!0;if(t==="tuple")return e.components?.some(Vi);let r=Ru(e.type);return!!(r&&Vi({...e,type:r[1]}))}var Jy,md,Gi=A(()=>{Ne();qn();hm();Qt();Kn();$o();Ky();Xe();D();yn();Jy=32,md=32});function Mu(e){let{abi:t,data:r}=e,n=sr(r,0,4);if(n==="0x")throw new cr;let s=[...t||[],Km,oy].find(a=>a.type==="error"&&n===Ur(Je(a)));if(!s)throw new Ks(n,{docsPath:"/docs/contract/decodeErrorResult"});return{abiItem:s,args:"inputs"in s&&s.inputs&&s.inputs.length>0?bn(s.inputs,sr(r,4)):void 0,errorName:s.name}}var ud=A(()=>{Wm();Ne();Kn();ta();Gi();gn()});var Q,ct=A(()=>{Q=(e,t,r)=>JSON.stringify(e,(n,o)=>{let s=typeof o=="bigint"?o.toString():o;return typeof t=="function"?t(n,s):s},r)});function pd({abiItem:e,args:t,includeFunctionName:r=!0,includeName:n=!1}){if("name"in e&&"inputs"in e&&e.inputs)return`${r?e.name:""}(${e.inputs.map((o,s)=>`${n&&o.name?`${o.name}: `:""}${typeof t[s]=="object"?Q(t[s]):t[s]}`).join(", ")})`}var Zy=A(()=>{ct()});var Jn,qi=A(()=>{sd();Jn=Tu});function Tt(e){let{abi:t,args:r=[],name:n}=e,o=ve(n,{strict:!1}),s=t.filter(i=>o?i.type==="function"?Ur(i)===n:i.type==="event"?Jn(i)===n:!1:"name"in i&&i.name===n);if(s.length===0)return;if(s.length===1)return s[0];let a;for(let i of s){if(!("inputs"in i))continue;if(!r||r.length===0){if(!i.inputs||i.inputs.length===0)return i;continue}if(!i.inputs||i.inputs.length===0||i.inputs.length!==r.length)continue;if(r.every((m,u)=>{let p="inputs"in i&&i.inputs[u];return p?ld(m,p):!1})){if(a&&"inputs"in a&&a.inputs){let m=Yy(i.inputs,a.inputs,r);if(m)throw new nu({abiItem:i,type:m[0]},{abiItem:a,type:m[1]})}a=i}}return a||s[0]}function ld(e,t){let r=typeof e,n=t.type;switch(n){case"address":return ie(e,{strict:!1});case"bool":return r==="boolean";case"function":return r==="string";case"string":return r==="string";default:return n==="tuple"&&"components"in t?Object.values(t.components).every((o,s)=>ld(Object.values(e)[s],o)):/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(n)?r==="number"||r==="bigint":/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(n)?r==="string"||e instanceof Uint8Array:/[a-z]+[1-9]{0,3}(\[[0-9]{0,}\])+$/.test(n)?Array.isArray(e)&&e.every(o=>ld(o,{...t,type:n.replace(/(\[[0-9]{0,}\])$/,"")})):!1}}function Yy(e,t,r){for(let n in e){let o=e[n],s=t[n];if(o.type==="tuple"&&s.type==="tuple"&&"components"in o&&"components"in s)return Yy(o.components,s.components,r[n]);let a=[o.type,s.type];if(a.includes("address")&&a.includes("bytes20")?!0:a.includes("address")&&a.includes("string")?ie(r[n],{strict:!1}):a.includes("address")&&a.includes("bytes")?ie(r[n],{strict:!1}):!1)return a}}var Zn=A(()=>{Ne();zt();jt();qi();ta()});function Xy(e){return e.reduce((t,{slot:r,value:n})=>`${t} ${r}: ${n}
35
- `,"")}function Qy(e){return e.reduce((t,{address:r,...n})=>{let o=`${t} ${r}:
36
- `;return n.nonce&&(o+=` nonce: ${n.nonce}
37
- `),n.balance&&(o+=` balance: ${n.balance}
38
- `),n.code&&(o+=` code: ${n.code}
39
- `),n.state&&(o+=` state:
40
- `,o+=Xy(n.state)),n.stateDiff&&(o+=` stateDiff:
41
- `,o+=Xy(n.stateDiff)),o},` State Override:
42
- `).slice(0,-1)}var Fu,Nu,fd=A(()=>{K();Fu=class extends w{constructor({address:t}){super(`State for account "${t}" is set multiple times.`,{name:"AccountStateConflictError"})}},Nu=class extends w{constructor(){super("state and stateDiff are set on the same account.",{name:"StateAssignmentConflictError"})}}});var eb,Uo,Lu=A(()=>{eb=e=>e,Uo=e=>e});var na,oa,zo,Bu,Du,Or,Yn=A(()=>{Fe();Wm();ud();gn();Zy();Zn();vm();Es();Ne();K();fd();Ot();Lu();na=class extends w{constructor(t,{account:r,docsPath:n,chain:o,data:s,gas:a,gasPrice:i,maxFeePerGas:c,maxPriorityFeePerGas:m,nonce:u,to:p,value:f,stateOverride:d}){let g=r?W(r):void 0,h=Mo({from:g?.address,to:p,value:typeof f<"u"&&`${ks(f)} ${o?.nativeCurrency?.symbol||"ETH"}`,data:s,gas:a,gasPrice:typeof i<"u"&&`${We(i)} gwei`,maxFeePerGas:typeof c<"u"&&`${We(c)} gwei`,maxPriorityFeePerGas:typeof m<"u"&&`${We(m)} gwei`,nonce:u});d&&(h+=`
43
- ${Qy(d)}`),super(t.shortMessage,{cause:t,docsPath:n,metaMessages:[...t.metaMessages?[...t.metaMessages," "]:[],"Raw Call Arguments:",h].filter(Boolean),name:"CallExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=t}},oa=class extends w{constructor(t,{abi:r,args:n,contractAddress:o,docsPath:s,functionName:a,sender:i}){let c=Tt({abi:r,args:n,name:a}),m=c?pd({abiItem:c,args:n,includeFunctionName:!1,includeName:!1}):void 0,u=c?Je(c,{includeName:!0}):void 0,p=Mo({address:o&&eb(o),function:u,args:m&&m!=="()"&&`${[...Array(a?.length??0).keys()].map(()=>" ").join("")}${m}`,sender:i});super(t.shortMessage||`An unknown error occurred while executing the contract function "${a}".`,{cause:t,docsPath:s,metaMessages:[...t.metaMessages?[...t.metaMessages," "]:[],p&&"Contract Call:",p].filter(Boolean),name:"ContractFunctionExecutionError"}),Object.defineProperty(this,"abi",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"args",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"contractAddress",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"formattedArgs",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"functionName",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"sender",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.abi=r,this.args=n,this.cause=t,this.contractAddress=o,this.functionName=a,this.sender=i}},zo=class extends w{constructor({abi:t,data:r,functionName:n,message:o}){let s,a,i,c;if(r&&r!=="0x")try{a=Mu({abi:t,data:r});let{abiItem:u,errorName:p,args:f}=a;if(p==="Error")c=f[0];else if(p==="Panic"){let[d]=f;c=ny[d]}else{let d=u?Je(u,{includeName:!0}):void 0,g=u&&f?pd({abiItem:u,args:f,includeFunctionName:!1,includeName:!1}):void 0;i=[d?`Error: ${d}`:"",g&&g!=="()"?` ${[...Array(p?.length??0).keys()].map(()=>" ").join("")}${g}`:""]}}catch(u){s=u}else o&&(c=o);let m;s instanceof Ks&&(m=s.signature,i=[`Unable to decode signature "${m}" as it was not found on the provided ABI.`,"Make sure you are using the correct ABI and that the error exists on it.",`You can look up the decoded signature here: https://openchain.xyz/signatures?query=${m}.`]),super(c&&c!=="execution reverted"||m?[`The contract function "${n}" reverted with the following ${m?"signature":"reason"}:`,c||m].join(`
44
- `):`The contract function "${n}" reverted.`,{cause:s,metaMessages:i,name:"ContractFunctionRevertedError"}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"raw",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"reason",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"signature",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=a,this.raw=r,this.reason=c,this.signature=m}},Bu=class extends w{constructor({functionName:t}){super(`The contract function "${t}" returned no data ("0x").`,{metaMessages:["This could be due to any of the following:",` - The contract does not have the function "${t}",`," - The parameters passed to the contract function may be invalid, or"," - The address is not a contract."],name:"ContractFunctionZeroDataError"})}},Du=class extends w{constructor({factory:t}){super(`Deployment for counterfactual contract call failed${t?` for factory "${t}".`:""}`,{metaMessages:["Please ensure:","- The `factory` is a valid contract deployment factory (ie. Create2 Factory, ERC-4337 Factory, etc).","- The `factoryData` is a valid encoded function call for contract deployment function on the factory."],name:"CounterfactualDeploymentFailedError"})}},Or=class extends w{constructor({data:t,message:r}){super(r||"",{name:"RawContractError"}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:3}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=t}}});var mr,Xn,Ki,Oo=A(()=>{ct();K();Lu();mr=class extends w{constructor({body:t,cause:r,details:n,headers:o,status:s,url:a}){super("HTTP request failed.",{cause:r,details:n,metaMessages:[s&&`Status: ${s}`,`URL: ${Uo(a)}`,t&&`Request body: ${Q(t)}`].filter(Boolean),name:"HttpRequestError"}),Object.defineProperty(this,"body",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"headers",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"status",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"url",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.body=t,this.headers=o,this.status=s,this.url=a}},Xn=class extends w{constructor({body:t,error:r,url:n}){super("RPC Request failed.",{cause:r,details:r.message,metaMessages:[`URL: ${Uo(n)}`,`Request body: ${Q(t)}`],name:"RpcRequestError"}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.code=r.code,this.data=r.data}},Ki=class extends w{constructor({body:t,url:r}){super("The request took too long to respond.",{details:"The request timed out.",metaMessages:[`URL: ${Uo(r)}`,`Request body: ${Q(t)}`],name:"TimeoutError"})}}});var vE,mt,vt,sa,aa,ia,ca,xn,jr,ma,ua,pa,Qn,jo,la,Ho,fa,da,ga,ha,ya,eo,ba,xa,va,wa,Ca,to,Uu,Sa=A(()=>{K();Oo();vE=-1,mt=class extends w{constructor(t,{code:r,docsPath:n,metaMessages:o,name:s,shortMessage:a}){super(a,{cause:t,docsPath:n,metaMessages:o||t?.metaMessages,name:s||"RpcError"}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=s||t.name,this.code=t instanceof Xn?t.code:r??vE}},vt=class extends mt{constructor(t,r){super(t,r),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=r.data}},sa=class e extends mt{constructor(t){super(t,{code:e.code,name:"ParseRpcError",shortMessage:"Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text."})}};Object.defineProperty(sa,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32700});aa=class e extends mt{constructor(t){super(t,{code:e.code,name:"InvalidRequestRpcError",shortMessage:"JSON is not a valid request object."})}};Object.defineProperty(aa,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32600});ia=class e extends mt{constructor(t,{method:r}={}){super(t,{code:e.code,name:"MethodNotFoundRpcError",shortMessage:`The method${r?` "${r}"`:""} does not exist / is not available.`})}};Object.defineProperty(ia,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32601});ca=class e extends mt{constructor(t){super(t,{code:e.code,name:"InvalidParamsRpcError",shortMessage:["Invalid parameters were provided to the RPC method.","Double check you have provided the correct parameters."].join(`
45
- `)})}};Object.defineProperty(ca,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32602});xn=class e extends mt{constructor(t){super(t,{code:e.code,name:"InternalRpcError",shortMessage:"An internal error was received."})}};Object.defineProperty(xn,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32603});jr=class e extends mt{constructor(t){super(t,{code:e.code,name:"InvalidInputRpcError",shortMessage:["Missing or invalid parameters.","Double check you have provided the correct parameters."].join(`
46
- `)})}};Object.defineProperty(jr,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32e3});ma=class e extends mt{constructor(t){super(t,{code:e.code,name:"ResourceNotFoundRpcError",shortMessage:"Requested resource not found."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ResourceNotFoundRpcError"})}};Object.defineProperty(ma,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32001});ua=class e extends mt{constructor(t){super(t,{code:e.code,name:"ResourceUnavailableRpcError",shortMessage:"Requested resource not available."})}};Object.defineProperty(ua,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32002});pa=class e extends mt{constructor(t){super(t,{code:e.code,name:"TransactionRejectedRpcError",shortMessage:"Transaction creation failed."})}};Object.defineProperty(pa,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32003});Qn=class e extends mt{constructor(t,{method:r}={}){super(t,{code:e.code,name:"MethodNotSupportedRpcError",shortMessage:`Method${r?` "${r}"`:""} is not supported.`})}};Object.defineProperty(Qn,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32004});jo=class e extends mt{constructor(t){super(t,{code:e.code,name:"LimitExceededRpcError",shortMessage:"Request exceeds defined limit."})}};Object.defineProperty(jo,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32005});la=class e extends mt{constructor(t){super(t,{code:e.code,name:"JsonRpcVersionUnsupportedError",shortMessage:"Version of JSON-RPC protocol is not supported."})}};Object.defineProperty(la,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32006});Ho=class e extends vt{constructor(t){super(t,{code:e.code,name:"UserRejectedRequestError",shortMessage:"User rejected the request."})}};Object.defineProperty(Ho,"code",{enumerable:!0,configurable:!0,writable:!0,value:4001});fa=class e extends vt{constructor(t){super(t,{code:e.code,name:"UnauthorizedProviderError",shortMessage:"The requested method and/or account has not been authorized by the user."})}};Object.defineProperty(fa,"code",{enumerable:!0,configurable:!0,writable:!0,value:4100});da=class e extends vt{constructor(t,{method:r}={}){super(t,{code:e.code,name:"UnsupportedProviderMethodError",shortMessage:`The Provider does not support the requested method${r?` " ${r}"`:""}.`})}};Object.defineProperty(da,"code",{enumerable:!0,configurable:!0,writable:!0,value:4200});ga=class e extends vt{constructor(t){super(t,{code:e.code,name:"ProviderDisconnectedError",shortMessage:"The Provider is disconnected from all chains."})}};Object.defineProperty(ga,"code",{enumerable:!0,configurable:!0,writable:!0,value:4900});ha=class e extends vt{constructor(t){super(t,{code:e.code,name:"ChainDisconnectedError",shortMessage:"The Provider is not connected to the requested chain."})}};Object.defineProperty(ha,"code",{enumerable:!0,configurable:!0,writable:!0,value:4901});ya=class e extends vt{constructor(t){super(t,{code:e.code,name:"SwitchChainError",shortMessage:"An error occurred when attempting to switch chain."})}};Object.defineProperty(ya,"code",{enumerable:!0,configurable:!0,writable:!0,value:4902});eo=class e extends vt{constructor(t){super(t,{code:e.code,name:"UnsupportedNonOptionalCapabilityError",shortMessage:"This Wallet does not support a capability that was not marked as optional."})}};Object.defineProperty(eo,"code",{enumerable:!0,configurable:!0,writable:!0,value:5700});ba=class e extends vt{constructor(t){super(t,{code:e.code,name:"UnsupportedChainIdError",shortMessage:"This Wallet does not support the requested chain ID."})}};Object.defineProperty(ba,"code",{enumerable:!0,configurable:!0,writable:!0,value:5710});xa=class e extends vt{constructor(t){super(t,{code:e.code,name:"DuplicateIdError",shortMessage:"There is already a bundle submitted with this ID."})}};Object.defineProperty(xa,"code",{enumerable:!0,configurable:!0,writable:!0,value:5720});va=class e extends vt{constructor(t){super(t,{code:e.code,name:"UnknownBundleIdError",shortMessage:"This bundle id is unknown / has not been submitted"})}};Object.defineProperty(va,"code",{enumerable:!0,configurable:!0,writable:!0,value:5730});wa=class e extends vt{constructor(t){super(t,{code:e.code,name:"BundleTooLargeError",shortMessage:"The call bundle is too large for the Wallet to process."})}};Object.defineProperty(wa,"code",{enumerable:!0,configurable:!0,writable:!0,value:5740});Ca=class e extends vt{constructor(t){super(t,{code:e.code,name:"AtomicReadyWalletRejectedUpgradeError",shortMessage:"The Wallet can support atomicity after an upgrade, but the user rejected the upgrade."})}};Object.defineProperty(Ca,"code",{enumerable:!0,configurable:!0,writable:!0,value:5750});to=class e extends vt{constructor(t){super(t,{code:e.code,name:"AtomicityNotSupportedError",shortMessage:"The wallet does not support atomic execution but the request requires it."})}};Object.defineProperty(to,"code",{enumerable:!0,configurable:!0,writable:!0,value:5760});Uu=class extends mt{constructor(t){super(t,{name:"UnknownRpcError",shortMessage:"An unknown RPC error occurred."})}}});function ro(e,t){let r=(e.details||"").toLowerCase(),n=e instanceof w?e.walk(o=>o?.code===fn.code):e;return n instanceof w?new fn({cause:e,message:n.details}):fn.nodeMessage.test(r)?new fn({cause:e,message:e.details}):tr.nodeMessage.test(r)?new tr({cause:e,maxFeePerGas:t?.maxFeePerGas}):Ns.nodeMessage.test(r)?new Ns({cause:e,maxFeePerGas:t?.maxFeePerGas}):Ls.nodeMessage.test(r)?new Ls({cause:e,nonce:t?.nonce}):Bs.nodeMessage.test(r)?new Bs({cause:e,nonce:t?.nonce}):Ds.nodeMessage.test(r)?new Ds({cause:e,nonce:t?.nonce}):Us.nodeMessage.test(r)?new Us({cause:e}):zs.nodeMessage.test(r)?new zs({cause:e,gas:t?.gas}):Os.nodeMessage.test(r)?new Os({cause:e,gas:t?.gas}):js.nodeMessage.test(r)?new js({cause:e}):Lr.nodeMessage.test(r)?new Lr({cause:e,maxFeePerGas:t?.maxFeePerGas,maxPriorityFeePerGas:t?.maxPriorityFeePerGas}):new rr({cause:e})}var Wi=A(()=>{K();Gn()});function zu(e,{docsPath:t,...r}){let n=(()=>{let o=ro(e,r);return o instanceof rr?e:o})();return new na(n,{docsPath:t,...r})}var dd=A(()=>{Yn();Gn();Wi()});function Hr(e,{format:t}){if(!t)return{};let r={};function n(s){let a=Object.keys(s);for(let i of a)i in e&&(r[i]=e[i]),s[i]&&typeof s[i]=="object"&&!Array.isArray(s[i])&&n(s[i])}let o=t(e||{});return n(o),r}var ka=A(()=>{});function ut(e){let{account:t,gasPrice:r,maxFeePerGas:n,maxPriorityFeePerGas:o,to:s}=e,a=t?W(t):void 0;if(a&&!ie(a.address))throw new ge({address:a.address});if(s&&!ie(s))throw new ge({address:s});if(typeof r<"u"&&(typeof n<"u"||typeof o<"u"))throw new wm;if(n&&n>ws)throw new tr({maxFeePerGas:n});if(o&&n&&o>n)throw new Lr({maxFeePerGas:n,maxPriorityFeePerGas:o})}var vn=A(()=>{Fe();jf();Sr();Gn();Ot();jt()});function ob(e){let{abi:t,args:r,functionName:n}=e,o=t[0];if(n){let s=Tt({abi:t,args:r,name:n});if(!s)throw new kr(n,{docsPath:nb});o=s}if(o.type!=="function")throw new kr(void 0,{docsPath:nb});return{abi:[o],functionName:Ur(Je(o))}}var nb,sb=A(()=>{Ne();ta();gn();Zn();nb="/docs/contract/encodeFunctionData"});function ke(e){let{args:t}=e,{abi:r,functionName:n}=e.abi.length===1&&e.functionName?.startsWith("0x")?e:ob(e),o=r[0],s=n,a="inputs"in o&&o.inputs?xt(o.inputs,t??[]):void 0;return Qe([s,a??"0x"])}var Vt=A(()=>{bt();yn();sb()});function mb(e){if(!(!e||e.length===0))return e.reduce((t,{slot:r,value:n})=>{if(r.length!==66)throw new _i({size:r.length,targetSize:66,type:"hex"});if(n.length!==66)throw new _i({size:n.length,targetSize:66,type:"hex"});return t[r]=n,t},{})}function CE(e){let{balance:t,nonce:r,state:n,stateDiff:o,code:s}=e,a={};if(s!==void 0&&(a.code=s),t!==void 0&&(a.balance=E(t)),r!==void 0&&(a.nonce=E(r)),n!==void 0&&(a.state=mb(n)),o!==void 0){if(a.state)throw new Nu;a.stateDiff=mb(o)}return a}function Ea(e){if(!e)return;let t={};for(let{address:r,...n}of e){if(!ie(r,{strict:!1}))throw new ge({address:r});if(t[r])throw new Fu({address:r});t[r]=CE(n)}return t}var Wu=A(()=>{Sr();pm();fd();jt();D()});function ur(e,t){if(!ie(e,{strict:!1}))throw new ge({address:e});if(!ie(t,{strict:!1}))throw new ge({address:t});return e.toLowerCase()===t.toLowerCase()}var Vo=A(()=>{Sr();jt()});function Rt(e){let{abi:t,args:r,functionName:n,data:o}=e,s=t[0];if(n){let i=Tt({abi:t,args:r,name:n});if(!i)throw new kr(n,{docsPath:hd});s=i}if(s.type!=="function")throw new kr(void 0,{docsPath:hd});if(!s.outputs)throw new Js(s.name,{docsPath:hd});let a=bn(s.outputs,o);if(a&&a.length>1)return a;if(a&&a.length===1)return a[0]}var hd,ao=A(()=>{Ne();Gi();Zn();hd="/docs/contract/decodeFunctionResult"});var gb,hb=A(()=>{gb="0.1.1"});function yb(){return gb}var bb=A(()=>{hb()});function xb(e,t){return t?.(e)?e:e&&typeof e=="object"&&"cause"in e&&e.cause?xb(e.cause,t):t?null:e}var B,Mt=A(()=>{bb();B=class e extends Error{constructor(t,r={}){let n=(()=>{if(r.cause instanceof e){if(r.cause.details)return r.cause.details;if(r.cause.shortMessage)return r.cause.shortMessage}return r.cause&&"details"in r.cause&&typeof r.cause.details=="string"?r.cause.details:r.cause?.message?r.cause.message:r.details})(),o=r.cause instanceof e&&r.cause.docsPath||r.docsPath,a=`https://oxlib.sh${o??""}`,i=[t||"An error occurred.",...r.metaMessages?["",...r.metaMessages]:[],...n||o?["",n?`Details: ${n}`:void 0,o?`See: ${a}`:void 0]:[]].filter(c=>typeof c=="string").join(`
47
- `);super(i,r.cause?{cause:r.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docs",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseError"}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:`ox@${yb()}`}),this.cause=r.cause,this.details=n,this.docs=a,this.docsPath=o,this.shortMessage=t}walk(t){return xb(this,t)}}});function Ra(e,t){if(pr(e)>t)throw new Qu({givenSize:pr(e),maxSize:t})}function vb(e,t){if(typeof t=="number"&&t>0&&t>pr(e)-1)throw new Zi({offset:t,position:"start",size:pr(e)})}function wb(e,t,r){if(typeof t=="number"&&typeof r=="number"&&pr(e)!==r-t)throw new Zi({offset:r,position:"end",size:pr(e)})}function yd(e){if(e>=wn.zero&&e<=wn.nine)return e-wn.zero;if(e>=wn.A&&e<=wn.F)return e-(wn.A-10);if(e>=wn.a&&e<=wn.f)return e-(wn.a-10)}function Cb(e,t={}){let{dir:r,size:n=32}=t;if(n===0)return e;if(e.length>n)throw new ep({size:e.length,targetSize:n,type:"Bytes"});let o=new Uint8Array(n);for(let s=0;s<n;s++){let a=r==="right";o[a?s:n-s-1]=e[a?s:e.length-s-1]}return o}function bd(e,t={}){let{dir:r="left"}=t,n=e,o=0;for(let s=0;s<n.length-1&&n[r==="left"?s:n.length-s-1].toString()==="0";s++)o++;return n=r==="left"?n.slice(o):n.slice(0,n.length-o),n}var wn,Sb=A(()=>{io();wn={zero:48,nine:57,A:65,F:70,a:97,f:102}});function Ma(e,t){if(Ae(e)>t)throw new tp({givenSize:Ae(e),maxSize:t})}function kb(e,t){if(typeof t=="number"&&t>0&&t>Ae(e)-1)throw new Yi({offset:t,position:"start",size:Ae(e)})}function Eb(e,t,r){if(typeof t=="number"&&typeof r=="number"&&Ae(e)!==r-t)throw new Yi({offset:r,position:"end",size:Ae(e)})}function xd(e,t={}){let{dir:r,size:n=32}=t;if(n===0)return e;let o=e.replace("0x","");if(o.length>n*2)throw new rp({size:Math.ceil(o.length/2),targetSize:n,type:"Hex"});return`0x${o[r==="right"?"padEnd":"padStart"](n*2,"0")}`}function _b(e,t={}){let{dir:r="left"}=t,n=e.replace("0x",""),o=0;for(let s=0;s<n.length-1&&n[r==="left"?s:n.length-s-1].toString()==="0";s++)o++;return n=r==="left"?n.slice(o):n.slice(0,n.length-o),n==="0"?"0x":r==="right"&&n.length%2===1?`0x${n}0`:`0x${n}`}var vd=A(()=>{tt()});function co(e,t,r){return JSON.stringify(e,(n,o)=>typeof t=="function"?t(n,o):typeof o=="bigint"?o.toString()+_E:o,r)}var _E,Xi=A(()=>{_E="#__bigint"});import{equalBytes as VH}from"@noble/curves/abstract/utils";function PE(e){if(!(e instanceof Uint8Array)){if(!e)throw new Fa(e);if(typeof e!="object")throw new Fa(e);if(!("BYTES_PER_ELEMENT"in e))throw new Fa(e);if(e.BYTES_PER_ELEMENT!==1||e.constructor.name!=="Uint8Array")throw new Fa(e)}}function Ab(e){return e instanceof Uint8Array?e:typeof e=="string"?Na(e):TE(e)}function TE(e){return e instanceof Uint8Array?e:new Uint8Array(e)}function Na(e,t={}){let{size:r}=t,n=e;r&&(Ma(e,r),n=Kr(e,r));let o=n.slice(2);o.length%2&&(o=`0${o}`);let s=o.length/2,a=new Uint8Array(s);for(let i=0,c=0;i<s;i++){let m=yd(o.charCodeAt(c++)),u=yd(o.charCodeAt(c++));if(m===void 0||u===void 0)throw new B(`Invalid byte sequence ("${o[c-2]}${o[c-1]}" in "${o}").`);a[i]=m*16+u}return a}function Pb(e,t={}){let{size:r}=t,n=AE.encode(e);return typeof r=="number"?(Ra(n,r),$E(n,r)):n}function $E(e,t){return Cb(e,{dir:"right",size:t})}function pr(e){return e.length}function Tb(e,t,r,n={}){let{strict:o}=n;vb(e,t);let s=e.slice(t,r);return o&&wb(s,t,r),s}function $b(e,t={}){let{size:r}=t;typeof r<"u"&&Ra(e,r);let n=Oe(e,t);return Sd(n,t)}function Rb(e,t={}){let{size:r}=t,n=e;if(typeof r<"u"&&(Ra(n,r),n=Cd(n)),n.length>1||n[0]>1)throw new wd(n);return!!n[0]}function qr(e,t={}){let{size:r}=t;typeof r<"u"&&Ra(e,r);let n=Oe(e,t);return op(n,t)}function Mb(e,t={}){let{size:r}=t,n=e;return typeof r<"u"&&(Ra(n,r),n=RE(n)),IE.decode(n)}function Cd(e){return bd(e,{dir:"left"})}function RE(e){return bd(e,{dir:"right"})}function Fb(e){try{return PE(e),!0}catch{return!1}}var IE,AE,wd,Fa,Qu,Zi,ep,io=A(()=>{Mt();tt();Sb();vd();Xi();IE=new TextDecoder,AE=new TextEncoder;wd=class extends B{constructor(t){super(`Bytes value \`${t}\` is not a valid boolean.`,{metaMessages:["The bytes array must contain a single byte of either a `0` or `1` value."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Bytes.InvalidBytesBooleanError"})}},Fa=class extends B{constructor(t){super(`Value \`${typeof t=="object"?co(t):t}\` of type \`${typeof t}\` is an invalid Bytes value.`,{metaMessages:["Bytes values must be of type `Bytes`."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Bytes.InvalidBytesTypeError"})}},Qu=class extends B{constructor({givenSize:t,maxSize:r}){super(`Size cannot exceed \`${r}\` bytes. Given size: \`${t}\` bytes.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Bytes.SizeOverflowError"})}},Zi=class extends B{constructor({offset:t,position:r,size:n}){super(`Slice ${r==="start"?"starting":"ending"} at offset \`${t}\` is out-of-bounds (size: \`${n}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Bytes.SliceOffsetOutOfBoundsError"})}},ep=class extends B{constructor({size:t,targetSize:r,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (\`${t}\`) exceeds padding size (\`${r}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Bytes.SizeExceedsPaddingSizeError"})}}});import{equalBytes as qH}from"@noble/curves/abstract/utils";function NE(e,t={}){let{strict:r=!1}=t;if(!e)throw new sp(e);if(typeof e!="string")throw new sp(e);if(r&&!/^0x[0-9a-fA-F]*$/.test(e))throw new ap(e);if(!e.startsWith("0x"))throw new ap(e)}function $e(...e){return`0x${e.reduce((t,r)=>t+r.replace("0x",""),"")}`}function La(e){return e instanceof Uint8Array?Oe(e):Array.isArray(e)?Oe(new Uint8Array(e)):e}function ip(e,t={}){let r=`0x${Number(e)}`;return typeof t.size=="number"?(Ma(r,t.size),Cn(r,t.size)):r}function Oe(e,t={}){let r="";for(let o=0;o<e.length;o++)r+=FE[e[o]];let n=`0x${r}`;return typeof t.size=="number"?(Ma(n,t.size),Kr(n,t.size)):n}function me(e,t={}){let{signed:r,size:n}=t,o=BigInt(e),s;n?r?s=(1n<<BigInt(n)*8n-1n)-1n:s=2n**(BigInt(n)*8n)-1n:typeof e=="number"&&(s=BigInt(Number.MAX_SAFE_INTEGER));let a=typeof s=="bigint"&&r?-s-1n:0;if(s&&o>s||o<a){let m=typeof e=="bigint"?"n":"";throw new Qi({max:s?`${s}${m}`:void 0,min:`${a}${m}`,signed:r,size:n,value:`${e}${m}`})}let c=`0x${(r&&o<0?(1n<<BigInt(n*8))+BigInt(o):o).toString(16)}`;return n?Cn(c,n):c}function Ba(e,t={}){return Oe(ME.encode(e),t)}function Cn(e,t){return xd(e,{dir:"left",size:t})}function Kr(e,t){return xd(e,{dir:"right",size:t})}function Pe(e,t,r,n={}){let{strict:o}=n;kb(e,t);let s=`0x${e.replace("0x","").slice((t??0)*2,(r??e.length)*2)}`;return o&&Eb(s,t,r),s}function Ae(e){return Math.ceil((e.length-2)/2)}function kd(e){return _b(e,{dir:"left"})}function Sd(e,t={}){let{signed:r}=t;t.size&&Ma(e,t.size);let n=BigInt(e);if(!r)return n;let o=(e.length-2)/2,s=(1n<<BigInt(o)*8n)-1n,a=s>>1n;return n<=a?n:n-s-1n}function op(e,t={}){let{signed:r,size:n}=t;return Number(!r&&!n?e:Sd(e,t))}function ec(e,t={}){let{strict:r=!1}=t;try{return NE(e,{strict:r}),!0}catch{return!1}}var ME,FE,Qi,sp,ap,tp,Yi,rp,tt=A(()=>{Mt();vd();Xi();ME=new TextEncoder,FE=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));Qi=class extends B{constructor({max:t,min:r,signed:n,size:o,value:s}){super(`Number \`${s}\` is not in safe${o?` ${o*8}-bit`:""}${n?" signed":" unsigned"} integer range ${t?`(\`${r}\` to \`${t}\`)`:`(above \`${r}\`)`}`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.IntegerOutOfRangeError"})}},sp=class extends B{constructor(t){super(`Value \`${typeof t=="object"?co(t):t}\` of type \`${typeof t}\` is an invalid hex type.`,{metaMessages:['Hex types must be represented as `"0x${string}"`.']}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.InvalidHexTypeError"})}},ap=class extends B{constructor(t){super(`Value \`${t}\` is an invalid hex value.`,{metaMessages:['Hex values must start with `"0x"` and contain only hexadecimal characters (0-9, a-f, A-F).']}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.InvalidHexValueError"})}},tp=class extends B{constructor({givenSize:t,maxSize:r}){super(`Size cannot exceed \`${r}\` bytes. Given size: \`${t}\` bytes.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.SizeOverflowError"})}},Yi=class extends B{constructor({offset:t,position:r,size:n}){super(`Slice ${r==="start"?"starting":"ending"} at offset \`${t}\` is out-of-bounds (size: \`${n}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.SliceOffsetOutOfBoundsError"})}},rp=class extends B{constructor({size:t,targetSize:r,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (\`${t}\`) exceeds padding size (\`${r}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Hex.SizeExceedsPaddingSizeError"})}}});function Nb(e){return{address:e.address,amount:me(e.amount),index:me(e.index),validatorIndex:me(e.validatorIndex)}}var Lb=A(()=>{tt()});function cp(e){return{...typeof e.baseFeePerGas=="bigint"&&{baseFeePerGas:me(e.baseFeePerGas)},...typeof e.blobBaseFee=="bigint"&&{blobBaseFee:me(e.blobBaseFee)},...typeof e.feeRecipient=="string"&&{feeRecipient:e.feeRecipient},...typeof e.gasLimit=="bigint"&&{gasLimit:me(e.gasLimit)},...typeof e.number=="bigint"&&{number:me(e.number)},...typeof e.prevRandao=="bigint"&&{prevRandao:me(e.prevRandao)},...typeof e.time=="bigint"&&{time:me(e.time)},...e.withdrawals&&{withdrawals:e.withdrawals.map(Nb)}}}var Ed=A(()=>{tt();Lb()});var qo,mp,Db,up,Ub,_d,Id,Ad,Pd,mo=A(()=>{qo=[{inputs:[{components:[{name:"target",type:"address"},{name:"allowFailure",type:"bool"},{name:"callData",type:"bytes"}],name:"calls",type:"tuple[]"}],name:"aggregate3",outputs:[{components:[{name:"success",type:"bool"},{name:"returnData",type:"bytes"}],name:"returnData",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockTimestamp",outputs:[{internalType:"uint256",name:"timestamp",type:"uint256"}],stateMutability:"view",type:"function"}],mp=[{name:"query",type:"function",stateMutability:"view",inputs:[{type:"tuple[]",name:"queries",components:[{type:"address",name:"sender"},{type:"string[]",name:"urls"},{type:"bytes",name:"data"}]}],outputs:[{type:"bool[]",name:"failures"},{type:"bytes[]",name:"responses"}]},{name:"HttpError",type:"error",inputs:[{type:"uint16",name:"status"},{type:"string",name:"message"}]}],Db=[{inputs:[{name:"dns",type:"bytes"}],name:"DNSDecodingFailed",type:"error"},{inputs:[{name:"ens",type:"string"}],name:"DNSEncodingFailed",type:"error"},{inputs:[],name:"EmptyAddress",type:"error"},{inputs:[{name:"status",type:"uint16"},{name:"message",type:"string"}],name:"HttpError",type:"error"},{inputs:[],name:"InvalidBatchGatewayResponse",type:"error"},{inputs:[{name:"errorData",type:"bytes"}],name:"ResolverError",type:"error"},{inputs:[{name:"name",type:"bytes"},{name:"resolver",type:"address"}],name:"ResolverNotContract",type:"error"},{inputs:[{name:"name",type:"bytes"}],name:"ResolverNotFound",type:"error"},{inputs:[{name:"primary",type:"string"},{name:"primaryAddress",type:"bytes"}],name:"ReverseAddressMismatch",type:"error"},{inputs:[{internalType:"bytes4",name:"selector",type:"bytes4"}],name:"UnsupportedResolverProfile",type:"error"}],up=[...Db,{name:"resolveWithGateways",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes"},{name:"data",type:"bytes"},{name:"gateways",type:"string[]"}],outputs:[{name:"",type:"bytes"},{name:"address",type:"address"}]}],Ub=[...Db,{name:"reverseWithGateways",type:"function",stateMutability:"view",inputs:[{type:"bytes",name:"reverseName"},{type:"uint256",name:"coinType"},{type:"string[]",name:"gateways"}],outputs:[{type:"string",name:"resolvedName"},{type:"address",name:"resolver"},{type:"address",name:"reverseResolver"}]}],_d=[{name:"text",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes32"},{name:"key",type:"string"}],outputs:[{name:"",type:"string"}]}],Id=[{name:"addr",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes32"}],outputs:[{name:"",type:"address"}]},{name:"addr",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes32"},{name:"coinType",type:"uint256"}],outputs:[{name:"",type:"bytes"}]}],Ad=[{name:"isValidSignature",type:"function",stateMutability:"view",inputs:[{name:"hash",type:"bytes32"},{name:"signature",type:"bytes"}],outputs:[{name:"",type:"bytes4"}]}],Pd=[{inputs:[{name:"_signer",type:"address"},{name:"_hash",type:"bytes32"},{name:"_signature",type:"bytes"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[{name:"_signer",type:"address"},{name:"_hash",type:"bytes32"},{name:"_signature",type:"bytes"}],outputs:[{type:"bool"}],stateMutability:"nonpayable",type:"function",name:"isValidSig"}]});var zb,Ob=A(()=>{zb="0x82ad56cb"});var pp,jb,Hb,Da,tc=A(()=>{pp="0x608060405234801561001057600080fd5b5060405161018e38038061018e83398101604081905261002f91610124565b6000808351602085016000f59050803b61004857600080fd5b6000808351602085016000855af16040513d6000823e81610067573d81fd5b3d81f35b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009257600080fd5b81516001600160401b038111156100ab576100ab61006b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d9576100d961006b565b6040528181528382016020018510156100f157600080fd5b60005b82811015610110576020818601810151838301820152016100f4565b506000918101602001919091529392505050565b6000806040838503121561013757600080fd5b82516001600160401b0381111561014d57600080fd5b61015985828601610081565b602085015190935090506001600160401b0381111561017757600080fd5b61018385828601610081565b915050925092905056fe",jb="0x608060405234801561001057600080fd5b506040516102c03803806102c083398101604081905261002f916101e6565b836001600160a01b03163b6000036100e457600080836001600160a01b03168360405161005c9190610270565b6000604051808303816000865af19150503d8060008114610099576040519150601f19603f3d011682016040523d82523d6000602084013e61009e565b606091505b50915091508115806100b857506001600160a01b0386163b155b156100e1578060405163101bb98d60e01b81526004016100d8919061028c565b60405180910390fd5b50505b6000808451602086016000885af16040513d6000823e81610103573d81fd5b3d81f35b80516001600160a01b038116811461011e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561015457818101518382015260200161013c565b50506000910152565b600082601f83011261016e57600080fd5b81516001600160401b0381111561018757610187610123565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101b5576101b5610123565b6040528181528382016020018510156101cd57600080fd5b6101de826020830160208701610139565b949350505050565b600080600080608085870312156101fc57600080fd5b61020585610107565b60208601519094506001600160401b0381111561022157600080fd5b61022d8782880161015d565b93505061023c60408601610107565b60608601519092506001600160401b0381111561025857600080fd5b6102648782880161015d565b91505092959194509250565b60008251610282818460208701610139565b9190910192915050565b60208152600082518060208401526102ab816040850160208701610139565b601f01601f1916919091016040019291505056fe",Hb="0x608060405234801561001057600080fd5b5060405161069438038061069483398101604081905261002f9161051e565b600061003c848484610048565b9050806000526001601ff35b60007f64926492649264926492649264926492649264926492649264926492649264926100748361040c565b036101e7576000606080848060200190518101906100929190610577565b60405192955090935091506000906001600160a01b038516906100b69085906105dd565b6000604051808303816000865af19150503d80600081146100f3576040519150601f19603f3d011682016040523d82523d6000602084013e6100f8565b606091505b50509050876001600160a01b03163b60000361016057806101605760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90610190908b9087906004016105f9565b602060405180830381865afa1580156101ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d19190610633565b6001600160e01b03191614945050505050610405565b6001600160a01b0384163b1561027a57604051630b135d3f60e11b808252906001600160a01b03861690631626ba7e9061022790879087906004016105f9565b602060405180830381865afa158015610244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102689190610633565b6001600160e01b031916149050610405565b81516041146102df5760405162461bcd60e51b815260206004820152603a602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e6774680000000000006064820152608401610157565b6102e7610425565b5060208201516040808401518451859392600091859190811061030c5761030c61065d565b016020015160f81c9050601b811480159061032b57508060ff16601c14155b1561038c5760405162461bcd60e51b815260206004820152603b602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c756500000000006064820152608401610157565b60408051600081526020810180835289905260ff83169181019190915260608101849052608081018390526001600160a01b0389169060019060a0016020604051602081039080840390855afa1580156103ea573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149450505050505b9392505050565b600060208251101561041d57600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b038116811461045857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561048c578181015183820152602001610474565b50506000910152565b600082601f8301126104a657600080fd5b81516001600160401b038111156104bf576104bf61045b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045b565b60405281815283820160200185101561050557600080fd5b610516826020830160208701610471565b949350505050565b60008060006060848603121561053357600080fd5b835161053e81610443565b6020850151604086015191945092506001600160401b0381111561056157600080fd5b61056d86828701610495565b9150509250925092565b60008060006060848603121561058c57600080fd5b835161059781610443565b60208501519093506001600160401b038111156105b357600080fd5b6105bf86828701610495565b604086015190935090506001600160401b0381111561056157600080fd5b600082516105ef818460208701610471565b9190910192915050565b828152604060208201526000825180604084015261061e816060850160208701610471565b601f01601f1916919091016060019392505050565b60006020828403121561064557600080fd5b81516001600160e01b03198116811461040557600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572",Da="0x608060405234801561001057600080fd5b506115b9806100206000396000f3fe6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e14610325578063bce38bd714610350578063c3077fa914610380578063ee82ac5e146103b2576100f3565b80634d2301cc1461026257806372425d9d1461029f57806382ad56cb146102ca57806386d516e8146102fa576100f3565b80633408e470116100c65780633408e470146101af578063399542e9146101da5780633e64a6961461020c57806342cbb15c14610237576100f3565b80630f28c97d146100f8578063174dea7114610123578063252dba421461015357806327e86d6e14610184575b600080fd5b34801561010457600080fd5b5061010d6103ef565b60405161011a9190610c0a565b60405180910390f35b61013d60048036038101906101389190610c94565b6103f7565b60405161014a9190610e94565b60405180910390f35b61016d60048036038101906101689190610f0c565b610615565b60405161017b92919061101b565b60405180910390f35b34801561019057600080fd5b506101996107ab565b6040516101a69190611064565b60405180910390f35b3480156101bb57600080fd5b506101c46107b7565b6040516101d19190610c0a565b60405180910390f35b6101f460048036038101906101ef91906110ab565b6107bf565b6040516102039392919061110b565b60405180910390f35b34801561021857600080fd5b506102216107e1565b60405161022e9190610c0a565b60405180910390f35b34801561024357600080fd5b5061024c6107e9565b6040516102599190610c0a565b60405180910390f35b34801561026e57600080fd5b50610289600480360381019061028491906111a7565b6107f1565b6040516102969190610c0a565b60405180910390f35b3480156102ab57600080fd5b506102b4610812565b6040516102c19190610c0a565b60405180910390f35b6102e460048036038101906102df919061122a565b61081a565b6040516102f19190610e94565b60405180910390f35b34801561030657600080fd5b5061030f6109e4565b60405161031c9190610c0a565b60405180910390f35b34801561033157600080fd5b5061033a6109ec565b6040516103479190611286565b60405180910390f35b61036a600480360381019061036591906110ab565b6109f4565b6040516103779190610e94565b60405180910390f35b61039a60048036038101906103959190610f0c565b610ba6565b6040516103a99392919061110b565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d491906112cd565b610bca565b6040516103e69190611064565b60405180910390f35b600042905090565b60606000808484905090508067ffffffffffffffff81111561041c5761041b6112fa565b5b60405190808252806020026020018201604052801561045557816020015b610442610bd5565b81526020019060019003908161043a5790505b5092503660005b828110156105c957600085828151811061047957610478611329565b5b6020026020010151905087878381811061049657610495611329565b5b90506020028101906104a89190611367565b925060008360400135905080860195508360000160208101906104cb91906111a7565b73ffffffffffffffffffffffffffffffffffffffff16818580606001906104f2919061138f565b604051610500929190611431565b60006040518083038185875af1925050503d806000811461053d576040519150601f19603f3d011682016040523d82523d6000602084013e610542565b606091505b5083600001846020018290528215151515815250505081516020850135176105bc577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b826001019250505061045c565b5082341461060c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610603906114a7565b60405180910390fd5b50505092915050565b6000606043915060008484905090508067ffffffffffffffff81111561063e5761063d6112fa565b5b60405190808252806020026020018201604052801561067157816020015b606081526020019060019003908161065c5790505b5091503660005b828110156107a157600087878381811061069557610694611329565b5b90506020028101906106a791906114c7565b92508260000160208101906106bc91906111a7565b73ffffffffffffffffffffffffffffffffffffffff168380602001906106e2919061138f565b6040516106f0929190611431565b6000604051808303816000865af19150503d806000811461072d576040519150601f19603f3d011682016040523d82523d6000602084013e610732565b606091505b5086848151811061074657610745611329565b5b60200260200101819052819250505080610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078c9061153b565b60405180910390fd5b81600101915050610678565b5050509250929050565b60006001430340905090565b600046905090565b6000806060439250434091506107d68686866109f4565b905093509350939050565b600048905090565b600043905090565b60008173ffffffffffffffffffffffffffffffffffffffff16319050919050565b600044905090565b606060008383905090508067ffffffffffffffff81111561083e5761083d6112fa565b5b60405190808252806020026020018201604052801561087757816020015b610864610bd5565b81526020019060019003908161085c5790505b5091503660005b828110156109db57600084828151811061089b5761089a611329565b5b602002602001015190508686838181106108b8576108b7611329565b5b90506020028101906108ca919061155b565b92508260000160208101906108df91906111a7565b73ffffffffffffffffffffffffffffffffffffffff16838060400190610905919061138f565b604051610913929190611431565b6000604051808303816000865af19150503d8060008114610950576040519150601f19603f3d011682016040523d82523d6000602084013e610955565b606091505b5082600001836020018290528215151515815250505080516020840135176109cf577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b8160010191505061087e565b50505092915050565b600045905090565b600041905090565b606060008383905090508067ffffffffffffffff811115610a1857610a176112fa565b5b604051908082528060200260200182016040528015610a5157816020015b610a3e610bd5565b815260200190600190039081610a365790505b5091503660005b82811015610b9c576000848281518110610a7557610a74611329565b5b60200260200101519050868683818110610a9257610a91611329565b5b9050602002810190610aa491906114c7565b9250826000016020810190610ab991906111a7565b73ffffffffffffffffffffffffffffffffffffffff16838060200190610adf919061138f565b604051610aed929190611431565b6000604051808303816000865af19150503d8060008114610b2a576040519150601f19603f3d011682016040523d82523d6000602084013e610b2f565b606091505b508260000183602001829052821515151581525050508715610b90578060000151610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b869061153b565b60405180910390fd5b5b81600101915050610a58565b5050509392505050565b6000806060610bb7600186866107bf565b8093508194508295505050509250925092565b600081409050919050565b6040518060400160405280600015158152602001606081525090565b6000819050919050565b610c0481610bf1565b82525050565b6000602082019050610c1f6000830184610bfb565b92915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610c5457610c53610c2f565b5b8235905067ffffffffffffffff811115610c7157610c70610c34565b5b602083019150836020820283011115610c8d57610c8c610c39565b5b9250929050565b60008060208385031215610cab57610caa610c25565b5b600083013567ffffffffffffffff811115610cc957610cc8610c2a565b5b610cd585828601610c3e565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60008115159050919050565b610d2281610d0d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d62578082015181840152602081019050610d47565b83811115610d71576000848401525b50505050565b6000601f19601f8301169050919050565b6000610d9382610d28565b610d9d8185610d33565b9350610dad818560208601610d44565b610db681610d77565b840191505092915050565b6000604083016000830151610dd96000860182610d19565b5060208301518482036020860152610df18282610d88565b9150508091505092915050565b6000610e0a8383610dc1565b905092915050565b6000602082019050919050565b6000610e2a82610ce1565b610e348185610cec565b935083602082028501610e4685610cfd565b8060005b85811015610e825784840389528151610e638582610dfe565b9450610e6e83610e12565b925060208a01995050600181019050610e4a565b50829750879550505050505092915050565b60006020820190508181036000830152610eae8184610e1f565b905092915050565b60008083601f840112610ecc57610ecb610c2f565b5b8235905067ffffffffffffffff811115610ee957610ee8610c34565b5b602083019150836020820283011115610f0557610f04610c39565b5b9250929050565b60008060208385031215610f2357610f22610c25565b5b600083013567ffffffffffffffff811115610f4157610f40610c2a565b5b610f4d85828601610eb6565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000610f918383610d88565b905092915050565b6000602082019050919050565b6000610fb182610f59565b610fbb8185610f64565b935083602082028501610fcd85610f75565b8060005b858110156110095784840389528151610fea8582610f85565b9450610ff583610f99565b925060208a01995050600181019050610fd1565b50829750879550505050505092915050565b60006040820190506110306000830185610bfb565b81810360208301526110428184610fa6565b90509392505050565b6000819050919050565b61105e8161104b565b82525050565b60006020820190506110796000830184611055565b92915050565b61108881610d0d565b811461109357600080fd5b50565b6000813590506110a58161107f565b92915050565b6000806000604084860312156110c4576110c3610c25565b5b60006110d286828701611096565b935050602084013567ffffffffffffffff8111156110f3576110f2610c2a565b5b6110ff86828701610eb6565b92509250509250925092565b60006060820190506111206000830186610bfb565b61112d6020830185611055565b818103604083015261113f8184610e1f565b9050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061117482611149565b9050919050565b61118481611169565b811461118f57600080fd5b50565b6000813590506111a18161117b565b92915050565b6000602082840312156111bd576111bc610c25565b5b60006111cb84828501611192565b91505092915050565b60008083601f8401126111ea576111e9610c2f565b5b8235905067ffffffffffffffff81111561120757611206610c34565b5b60208301915083602082028301111561122357611222610c39565b5b9250929050565b6000806020838503121561124157611240610c25565b5b600083013567ffffffffffffffff81111561125f5761125e610c2a565b5b61126b858286016111d4565b92509250509250929050565b61128081611169565b82525050565b600060208201905061129b6000830184611277565b92915050565b6112aa81610bf1565b81146112b557600080fd5b50565b6000813590506112c7816112a1565b92915050565b6000602082840312156112e3576112e2610c25565b5b60006112f1848285016112b8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b60008235600160800383360303811261138357611382611358565b5b80830191505092915050565b600080833560016020038436030381126113ac576113ab611358565b5b80840192508235915067ffffffffffffffff8211156113ce576113cd61135d565b5b6020830192506001820236038313156113ea576113e9611362565b5b509250929050565b600081905092915050565b82818337600083830152505050565b600061141883856113f2565b93506114258385846113fd565b82840190509392505050565b600061143e82848661140c565b91508190509392505050565b600082825260208201905092915050565b7f4d756c746963616c6c333a2076616c7565206d69736d61746368000000000000600082015250565b6000611491601a8361144a565b915061149c8261145b565b602082019050919050565b600060208201905081810360008301526114c081611484565b9050919050565b6000823560016040038336030381126114e3576114e2611358565b5b80830191505092915050565b7f4d756c746963616c6c333a2063616c6c206661696c6564000000000000000000600082015250565b600061152560178361144a565b9150611530826114ef565b602082019050919050565b6000602082019050818103600083015261155481611518565b9050919050565b60008235600160600383360303811261157757611576611358565b5b8083019150509291505056fea264697066735822122020c1bc9aacf8e4a6507193432a895a8e77094f45a1395583f07b24e860ef06cd64736f6c634300080c0033"});function Ko(e){let{abi:t,args:r,bytecode:n}=e;if(!r||r.length===0)return n;let o=t.find(a=>"type"in a&&a.type==="constructor");if(!o)throw new Zm({docsPath:Td});if(!("inputs"in o))throw new Di({docsPath:Td});if(!o.inputs||o.inputs.length===0)throw new Di({docsPath:Td});let s=xt(o.inputs,r);return Qe([n,s])}var Td,lp=A(()=>{Ne();bt();yn();Td="/docs/contract/encodeDeployData"});function Ua(){let e=()=>{},t=()=>{};return{promise:new Promise((n,o)=>{e=n,t=o}),resolve:e,reject:t}}var fp=A(()=>{});function dp({fn:e,id:t,shouldSplitBatch:r,wait:n=0,sort:o}){let s=async()=>{let u=c();a();let p=u.map(({args:f})=>f);p.length!==0&&e(p).then(f=>{o&&Array.isArray(f)&&f.sort(o);for(let d=0;d<u.length;d++){let{resolve:g}=u[d];g?.([f[d],f])}}).catch(f=>{for(let d=0;d<u.length;d++){let{reject:g}=u[d];g?.(f)}})},a=()=>$d.delete(t),i=()=>c().map(({args:u})=>u),c=()=>$d.get(t)||[],m=u=>$d.set(t,[...c(),u]);return{flush:a,async schedule(u){let{promise:p,resolve:f,reject:d}=Ua();return r?.([...i(),u])&&s(),c().length>0?(m({args:u,resolve:f,reject:d}),p):(m({args:u,resolve:f,reject:d}),setTimeout(s,n),p)}}}var $d,Rd=A(()=>{fp();$d=new Map});var gp,hp,yp,Vb=A(()=>{ct();K();Lu();gp=class extends w{constructor({callbackSelector:t,cause:r,data:n,extraData:o,sender:s,urls:a}){super(r.shortMessage||"An error occurred while fetching for an offchain result.",{cause:r,metaMessages:[...r.metaMessages||[],r.metaMessages?.length?"":[],"Offchain Gateway Call:",a&&[" Gateway URL(s):",...a.map(i=>` ${Uo(i)}`)],` Sender: ${s}`,` Data: ${n}`,` Callback selector: ${t}`,` Extra data: ${o}`].flat(),name:"OffchainLookupError"})}},hp=class extends w{constructor({result:t,url:r}){super("Offchain gateway response is malformed. Response data must be a hex value.",{metaMessages:[`Gateway URL: ${Uo(r)}`,`Response: ${Q(t)}`],name:"OffchainLookupResponseMalformedError"})}},yp=class extends w{constructor({sender:t,to:r}){super("Reverted sender address does not match target contract address (`to`).",{metaMessages:[`Contract address: ${r}`,`OffchainLookup sender address: ${t}`],name:"OffchainLookupSenderMismatchError"})}}});function Gb(e){let{abi:t,data:r}=e,n=sr(r,0,4),o=t.find(s=>s.type==="function"&&n===Ur(Je(s)));if(!o)throw new ru(n,{docsPath:"/docs/contract/decodeFunctionData"});return{functionName:o.name,args:"inputs"in o&&o.inputs&&o.inputs.length>0?bn(o.inputs,sr(r,4)):void 0}}var qb=A(()=>{Ne();Kn();ta();Gi();gn()});function Fd(e){let{abi:t,errorName:r,args:n}=e,o=t[0];if(r){let c=Tt({abi:t,args:n,name:r});if(!c)throw new Ui(r,{docsPath:Md});o=c}if(o.type!=="error")throw new Ui(void 0,{docsPath:Md});let s=Je(o),a=Ur(s),i="0x";if(n&&n.length>0){if(!o.inputs)throw new eu(o.name,{docsPath:Md});i=xt(o.inputs,n)}return Qe([a,i])}var Md,Kb=A(()=>{Ne();bt();ta();yn();gn();Zn();Md="/docs/contract/encodeErrorResult"});function Wb(e){let{abi:t,functionName:r,result:n}=e,o=t[0];if(r){let a=Tt({abi:t,name:r});if(!a)throw new kr(r,{docsPath:Nd});o=a}if(o.type!=="function")throw new kr(void 0,{docsPath:Nd});if(!o.outputs)throw new Js(o.name,{docsPath:Nd});let s=(()=>{if(o.outputs.length===0)return[];if(o.outputs.length===1)return[n];if(Array.isArray(n))return n;throw new Zs(n)})();return xt(o.outputs,s)}var Nd,Jb=A(()=>{Ne();yn();Zn();Nd="/docs/contract/encodeFunctionResult"});async function Ld(e){let{data:t,ccipRequest:r}=e,{args:[n]}=Gb({abi:mp,data:t}),o=[],s=[];return await Promise.all(n.map(async(a,i)=>{try{s[i]=a.urls.includes(Sn)?await Ld({data:a.data,ccipRequest:r}):await r(a),o[i]=!1}catch(c){o[i]=!0,s[i]=BE(c)}})),Wb({abi:mp,functionName:"query",result:[o,s]})}function BE(e){return e.name==="HttpRequestError"&&e.status?Fd({abi:mp,errorName:"HttpError",args:[e.status,e.shortMessage]}):Fd({abi:[Km],errorName:"Error",args:["shortMessage"in e?e.shortMessage:e.message]})}var Sn,rc=A(()=>{mo();Wm();qb();Kb();Jb();Sn="x-batch-gateway:true"});var Xb={};Ff(Xb,{ccipRequest:()=>Yb,offchainLookup:()=>UE,offchainLookupAbiItem:()=>Zb,offchainLookupSignature:()=>DE});async function UE(e,{blockNumber:t,blockTag:r,data:n,to:o}){let{args:s}=Mu({data:n,abi:[Zb]}),[a,i,c,m,u]=s,{ccipRead:p}=e,f=p&&typeof p?.request=="function"?p.request:Yb;try{if(!ur(o,a))throw new yp({sender:a,to:o});let d=i.includes(Sn)?await Ld({data:c,ccipRequest:f}):await f({data:c,sender:a,urls:i}),{data:g}=await Wr(e,{blockNumber:t,blockTag:r,data:He([m,xt([{type:"bytes"},{type:"bytes"}],[d,u])]),to:o});return g}catch(d){throw new gp({callbackSelector:m,cause:d,data:n,extraData:u,sender:a,urls:i})}}async function Yb({data:e,sender:t,urls:r}){let n=new Error("An unknown error occurred.");for(let o=0;o<r.length;o++){let s=r[o],a=s.includes("{data}")?"GET":"POST",i=a==="POST"?{data:e,sender:t}:void 0,c=a==="POST"?{"Content-Type":"application/json"}:{};try{let m=await fetch(s.replace("{sender}",t.toLowerCase()).replace("{data}",e),{body:JSON.stringify(i),headers:c,method:a}),u;if(m.headers.get("Content-Type")?.startsWith("application/json")?u=(await m.json()).data:u=await m.text(),!m.ok){n=new mr({body:i,details:u?.error?Q(u.error):m.statusText,headers:m.headers,status:m.status,url:s});continue}if(!ve(u)){n=new hp({result:u,url:s});continue}return u}catch(m){n=new mr({body:i,details:m.message,url:s})}}throw n}var DE,Zb,Qb=A(()=>{za();Vb();Oo();ud();yn();Vo();bt();zt();rc();ct();DE="0x556f1830",Zb={name:"OffchainLookup",type:"error",inputs:[{name:"sender",type:"address"},{name:"urls",type:"string[]"},{name:"callData",type:"bytes"},{name:"callbackFunction",type:"bytes4"},{name:"extraData",type:"bytes"}]}});async function Wr(e,t){let{account:r=e.account,authorizationList:n,batch:o=!!e.batch?.multicall,blockNumber:s,blockTag:a=e.experimental_blockTag??"latest",accessList:i,blobs:c,blockOverrides:m,code:u,data:p,factory:f,factoryData:d,gas:g,gasPrice:h,maxFeePerBlobGas:y,maxFeePerGas:b,maxPriorityFeePerGas:x,nonce:v,to:C,value:k,stateOverride:_,...I}=t,M=r?W(r):void 0;if(u&&(f||d))throw new w("Cannot provide both `code` & `factory`/`factoryData` as parameters.");if(u&&C)throw new w("Cannot provide both `code` & `to` as parameters.");let F=u&&p,L=f&&d&&C&&p,j=F||L,H=F?ex({code:u,data:p}):L?jE({data:p,factory:f,factoryData:d,to:C}):p;try{ut(t);let de=(typeof s=="bigint"?E(s):void 0)||a,Ie=m?cp(m):void 0,Me=Ea(_),te=e.chain?.formatters?.transactionRequest?.format,Ue=(te||At)({...Hr(I,{format:te}),accessList:i,account:M,authorizationList:n,blobs:c,data:H,gas:g,gasPrice:h,maxFeePerBlobGas:y,maxFeePerGas:b,maxPriorityFeePerGas:x,nonce:v,to:j?void 0:C,value:k},"call");if(o&&zE({request:Ue})&&!Me&&!Ie)try{return await OE(e,{...Ue,blockNumber:s,blockTag:a})}catch(we){if(!(we instanceof $i)&&!(we instanceof No))throw we}let Nr=(()=>{let we=[Ue,de];return Me&&Ie?[...we,Me,Ie]:Me?[...we,Me]:Ie?[...we,{},Ie]:we})(),Dn=await e.request({method:"eth_call",params:Nr});return Dn==="0x"?{data:void 0}:{data:Dn}}catch(V){let de=HE(V),{offchainLookup:Ie,offchainLookupSignature:Me}=await Promise.resolve().then(()=>(Qb(),Xb));if(e.ccipRead!==!1&&de?.slice(0,10)===Me&&C)return{data:await Ie(e,{data:de,to:C})};throw j&&de?.slice(0,10)==="0x101bb98d"?new Du({factory:f}):zu(V,{...t,account:M,chain:e.chain})}}function zE({request:e}){let{data:t,to:r,...n}=e;return!(!t||t.startsWith(zb)||!r||Object.values(n).filter(o=>typeof o<"u").length>0)}async function OE(e,t){let{batchSize:r=1024,deployless:n=!1,wait:o=0}=typeof e.batch?.multicall=="object"?e.batch.multicall:{},{blockNumber:s,blockTag:a=e.experimental_blockTag??"latest",data:i,to:c}=t,m=(()=>{if(n)return null;if(t.multicallAddress)return t.multicallAddress;if(e.chain)return ar({blockNumber:s,chain:e.chain,contract:"multicall3"});throw new $i})(),p=(typeof s=="bigint"?E(s):void 0)||a,{schedule:f}=dp({id:`${e.uid}.${p}`,wait:o,shouldSplitBatch(h){return h.reduce((b,{data:x})=>b+(x.length-2),0)>r*2},fn:async h=>{let y=h.map(v=>({allowFailure:!0,callData:v.data,target:v.to})),b=ke({abi:qo,args:[y],functionName:"aggregate3"}),x=await e.request({method:"eth_call",params:[{...m===null?{data:ex({code:Da,data:b})}:{to:m,data:b}},p]});return Rt({abi:qo,args:[y],functionName:"aggregate3",data:x||"0x"})}}),[{returnData:d,success:g}]=await f({data:i,to:c});if(!g)throw new Or({data:d});return d==="0x"?{data:void 0}:{data:d}}function ex(e){let{code:t,data:r}=e;return Ko({abi:Iu(["constructor(bytes, bytes)"]),bytecode:pp,args:[t,r]})}function jE(e){let{data:t,factory:r,factoryData:n,to:o}=e;return Ko({abi:Iu(["constructor(address, bytes, address, bytes)"]),bytecode:jb,args:[o,t,r,n]})}function HE(e){if(!(e instanceof w))return;let t=e.walk();return typeof t?.data=="object"?t.data?.data:t.data}var za=A(()=>{Hi();Ed();Fe();mo();Ob();tc();K();Ri();Yn();ao();lp();Vt();Bo();D();dd();ka();jn();Rd();Wu();vn()});var I0=Xt(bc=>{"use strict";var lI=bc&&bc.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(bc,"__esModule",{value:!0});bc.encryptEnvVars=gI;var E0=zn("@noble/curves/ed25519"),_0=lI(zn("crypto"));function fI(e){var t,r;return e=e.startsWith("0x")?e.slice(2):e,new Uint8Array((r=(t=e.match(/.{1,2}/g))===null||t===void 0?void 0:t.map(n=>parseInt(n,16)))!==null&&r!==void 0?r:[])}function dI(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}async function gI(e,t){let r=JSON.stringify({env:e}),n=E0.x25519.utils.randomPrivateKey(),o=E0.x25519.getPublicKey(n),s=fI(t),a=E0.x25519.getSharedSecret(n,s),i=await _0.default.subtle.importKey("raw",a,{name:"AES-GCM",length:256},!0,["encrypt"]),c=_0.default.getRandomValues(new Uint8Array(12)),m=await _0.default.subtle.encrypt({name:"AES-GCM",iv:c},i,new TextEncoder().encode(r)),u=new Uint8Array(o.length+c.length+m.byteLength);return u.set(o),u.set(c,o.length),u.set(new Uint8Array(m),o.length+c.length),dI(u)}});var Z1=Xt(xc=>{"use strict";var hI=xc&&xc.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(xc,"__esModule",{value:!0});xc.getComposeHash=vI;var yI=hI(zn("crypto"));function A0(e){return e==null?e:Array.isArray(e)?e.map(A0):e&&typeof e=="object"&&e.constructor===Object?Object.keys(e).sort().reduce((t,r)=>{let n=e[r];return t[r]=A0(n),t},{}):e}function bI(e){let t={...e};return t.runner==="bash"&&"docker_compose_file"in t?delete t.docker_compose_file:t.runner==="docker-compose"&&"bash_script"in t&&delete t.bash_script,"pre_launch_script"in t&&!t.pre_launch_script&&delete t.pre_launch_script,t}function xI(e){let t=A0(e);return JSON.stringify(t,(r,n)=>typeof n=="number"&&(isNaN(n)||!isFinite(n))?null:n)}function vI(e,t=!1){t&&(e=bI(e));let r=xI(e);return yI.default.createHash("sha256").update(r,"utf8").digest("hex")}});var bv=Xt(q=>{"use strict";Object.defineProperty(q,"__esModule",{value:!0});q.toBig=q.shrSL=q.shrSH=q.rotrSL=q.rotrSH=q.rotrBL=q.rotrBH=q.rotr32L=q.rotr32H=q.rotlSL=q.rotlSH=q.rotlBL=q.rotlBH=q.add5L=q.add5H=q.add4L=q.add4H=q.add3L=q.add3H=void 0;q.add=pv;q.fromBig=T0;q.split=Y1;var gl=BigInt(2**32-1),P0=BigInt(32);function T0(e,t=!1){return t?{h:Number(e&gl),l:Number(e>>P0&gl)}:{h:Number(e>>P0&gl)|0,l:Number(e&gl)|0}}function Y1(e,t=!1){let r=e.length,n=new Uint32Array(r),o=new Uint32Array(r);for(let s=0;s<r;s++){let{h:a,l:i}=T0(e[s],t);[n[s],o[s]]=[a,i]}return[n,o]}var X1=(e,t)=>BigInt(e>>>0)<<P0|BigInt(t>>>0);q.toBig=X1;var Q1=(e,t,r)=>e>>>r;q.shrSH=Q1;var ev=(e,t,r)=>e<<32-r|t>>>r;q.shrSL=ev;var tv=(e,t,r)=>e>>>r|t<<32-r;q.rotrSH=tv;var rv=(e,t,r)=>e<<32-r|t>>>r;q.rotrSL=rv;var nv=(e,t,r)=>e<<64-r|t>>>r-32;q.rotrBH=nv;var ov=(e,t,r)=>e>>>r-32|t<<64-r;q.rotrBL=ov;var sv=(e,t)=>t;q.rotr32H=sv;var av=(e,t)=>e;q.rotr32L=av;var iv=(e,t,r)=>e<<r|t>>>32-r;q.rotlSH=iv;var cv=(e,t,r)=>t<<r|e>>>32-r;q.rotlSL=cv;var mv=(e,t,r)=>t<<r-32|e>>>64-r;q.rotlBH=mv;var uv=(e,t,r)=>e<<r-32|t>>>64-r;q.rotlBL=uv;function pv(e,t,r,n){let o=(t>>>0)+(n>>>0);return{h:e+r+(o/2**32|0)|0,l:o|0}}var lv=(e,t,r)=>(e>>>0)+(t>>>0)+(r>>>0);q.add3L=lv;var fv=(e,t,r,n)=>t+r+n+(e/2**32|0)|0;q.add3H=fv;var dv=(e,t,r,n)=>(e>>>0)+(t>>>0)+(r>>>0)+(n>>>0);q.add4L=dv;var gv=(e,t,r,n,o)=>t+r+n+o+(e/2**32|0)|0;q.add4H=gv;var hv=(e,t,r,n,o)=>(e>>>0)+(t>>>0)+(r>>>0)+(n>>>0)+(o>>>0);q.add5L=hv;var yv=(e,t,r,n,o,s)=>t+r+n+o+s+(e/2**32|0)|0;q.add5H=yv;var wI={fromBig:T0,split:Y1,toBig:X1,shrSH:Q1,shrSL:ev,rotrSH:tv,rotrSL:rv,rotrBH:nv,rotrBL:ov,rotr32H:sv,rotr32L:av,rotlSH:iv,rotlSL:cv,rotlBH:mv,rotlBL:uv,add:pv,add3L:lv,add3H:fv,add4L:dv,add4H:gv,add5H:yv,add5L:hv};q.default=wI});var xv=Xt(hl=>{"use strict";Object.defineProperty(hl,"__esModule",{value:!0});hl.crypto=void 0;var bo=zn("crypto");hl.crypto=bo&&typeof bo=="object"&&"webcrypto"in bo?bo.webcrypto:bo&&typeof bo=="object"&&"randomBytes"in bo?bo:void 0});var Iv=Xt(O=>{"use strict";Object.defineProperty(O,"__esModule",{value:!0});O.wrapXOFConstructorWithOpts=O.wrapConstructorWithOpts=O.wrapConstructor=O.Hash=O.nextTick=O.swap32IfBE=O.byteSwapIfBE=O.swap8IfBE=O.isLE=void 0;O.isBytes=wv;O.anumber=$0;O.abytes=ei;O.ahash=CI;O.aexists=SI;O.aoutput=kI;O.u8=EI;O.u32=_I;O.clean=II;O.createView=AI;O.rotr=PI;O.rotl=TI;O.byteSwap=M0;O.byteSwap32=Cv;O.bytesToHex=RI;O.hexToBytes=MI;O.asyncLoop=NI;O.utf8ToBytes=F0;O.bytesToUtf8=LI;O.toBytes=yl;O.kdfInputToBytes=BI;O.concatBytes=DI;O.checkOpts=UI;O.createHasher=kv;O.createOptHasher=Ev;O.createXOFer=_v;O.randomBytes=zI;var Qa=xv();function wv(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function $0(e){if(!Number.isSafeInteger(e)||e<0)throw new Error("positive integer expected, got "+e)}function ei(e,...t){if(!wv(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error("Uint8Array expected of length "+t+", got length="+e.length)}function CI(e){if(typeof e!="function"||typeof e.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");$0(e.outputLen),$0(e.blockLen)}function SI(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function kI(e,t){ei(e);let r=t.outputLen;if(e.length<r)throw new Error("digestInto() expects output buffer of length at least "+r)}function EI(e){return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function _I(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function II(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function AI(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function PI(e,t){return e<<32-t|e>>>t}function TI(e,t){return e<<t|e>>>32-t>>>0}O.isLE=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function M0(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}O.swap8IfBE=O.isLE?e=>e:e=>M0(e);O.byteSwapIfBE=O.swap8IfBE;function Cv(e){for(let t=0;t<e.length;t++)e[t]=M0(e[t]);return e}O.swap32IfBE=O.isLE?e=>e:Cv;var Sv=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",$I=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function RI(e){if(ei(e),Sv)return e.toHex();let t="";for(let r=0;r<e.length;r++)t+=$I[e[r]];return t}var _n={_0:48,_9:57,A:65,F:70,a:97,f:102};function vv(e){if(e>=_n._0&&e<=_n._9)return e-_n._0;if(e>=_n.A&&e<=_n.F)return e-(_n.A-10);if(e>=_n.a&&e<=_n.f)return e-(_n.a-10)}function MI(e){if(typeof e!="string")throw new Error("hex string expected, got "+typeof e);if(Sv)return Uint8Array.fromHex(e);let t=e.length,r=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(r);for(let o=0,s=0;o<r;o++,s+=2){let a=vv(e.charCodeAt(s)),i=vv(e.charCodeAt(s+1));if(a===void 0||i===void 0){let c=e[s]+e[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=a*16+i}return n}var FI=async()=>{};O.nextTick=FI;async function NI(e,t,r){let n=Date.now();for(let o=0;o<e;o++){r(o);let s=Date.now()-n;s>=0&&s<t||(await(0,O.nextTick)(),n+=s)}}function F0(e){if(typeof e!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(e))}function LI(e){return new TextDecoder().decode(e)}function yl(e){return typeof e=="string"&&(e=F0(e)),ei(e),e}function BI(e){return typeof e=="string"&&(e=F0(e)),ei(e),e}function DI(...e){let t=0;for(let n=0;n<e.length;n++){let o=e[n];ei(o),t+=o.length}let r=new Uint8Array(t);for(let n=0,o=0;n<e.length;n++){let s=e[n];r.set(s,o),o+=s.length}return r}function UI(e,t){if(t!==void 0&&{}.toString.call(t)!=="[object Object]")throw new Error("options should be object or undefined");return Object.assign(e,t)}var R0=class{};O.Hash=R0;function kv(e){let t=n=>e().update(yl(n)).digest(),r=e();return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=()=>e(),t}function Ev(e){let t=(n,o)=>e(o).update(yl(n)).digest(),r=e({});return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=n=>e(n),t}function _v(e){let t=(n,o)=>e(o).update(yl(n)).digest(),r=e({});return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=n=>e(n),t}O.wrapConstructor=kv;O.wrapConstructorWithOpts=Ev;O.wrapXOFConstructorWithOpts=_v;function zI(e=32){if(Qa.crypto&&typeof Qa.crypto.getRandomValues=="function")return Qa.crypto.getRandomValues(new Uint8Array(e));if(Qa.crypto&&typeof Qa.crypto.randomBytes=="function")return Uint8Array.from(Qa.crypto.randomBytes(e));throw new Error("crypto.getRandomValues must be defined")}});var Lv=Xt(Ee=>{"use strict";Object.defineProperty(Ee,"__esModule",{value:!0});Ee.shake256=Ee.shake128=Ee.keccak_512=Ee.keccak_384=Ee.keccak_256=Ee.keccak_224=Ee.sha3_512=Ee.sha3_384=Ee.sha3_256=Ee.sha3_224=Ee.Keccak=void 0;Ee.keccakP=Fv;var wc=bv(),ft=Iv(),OI=BigInt(0),vc=BigInt(1),jI=BigInt(2),HI=BigInt(7),VI=BigInt(256),GI=BigInt(113),Tv=[],$v=[],Rv=[];for(let e=0,t=vc,r=1,n=0;e<24;e++){[r,n]=[n,(2*r+3*n)%5],Tv.push(2*(5*n+r)),$v.push((e+1)*(e+2)/2%64);let o=OI;for(let s=0;s<7;s++)t=(t<<vc^(t>>HI)*GI)%VI,t&jI&&(o^=vc<<(vc<<BigInt(s))-vc);Rv.push(o)}var Mv=(0,wc.split)(Rv,!0),qI=Mv[0],KI=Mv[1],Av=(e,t,r)=>r>32?(0,wc.rotlBH)(e,t,r):(0,wc.rotlSH)(e,t,r),Pv=(e,t,r)=>r>32?(0,wc.rotlBL)(e,t,r):(0,wc.rotlSL)(e,t,r);function Fv(e,t=24){let r=new Uint32Array(10);for(let n=24-t;n<24;n++){for(let a=0;a<10;a++)r[a]=e[a]^e[a+10]^e[a+20]^e[a+30]^e[a+40];for(let a=0;a<10;a+=2){let i=(a+8)%10,c=(a+2)%10,m=r[c],u=r[c+1],p=Av(m,u,1)^r[i],f=Pv(m,u,1)^r[i+1];for(let d=0;d<50;d+=10)e[a+d]^=p,e[a+d+1]^=f}let o=e[2],s=e[3];for(let a=0;a<24;a++){let i=$v[a],c=Av(o,s,i),m=Pv(o,s,i),u=Tv[a];o=e[u],s=e[u+1],e[u]=c,e[u+1]=m}for(let a=0;a<50;a+=10){for(let i=0;i<10;i++)r[i]=e[a+i];for(let i=0;i<10;i++)e[a+i]^=~r[(i+2)%10]&r[(i+4)%10]}e[0]^=qI[n],e[1]^=KI[n]}(0,ft.clean)(r)}var Cc=class e extends ft.Hash{constructor(t,r,n,o=!1,s=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=t,this.suffix=r,this.outputLen=n,this.enableXOF=o,this.rounds=s,(0,ft.anumber)(n),!(0<t&&t<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=(0,ft.u32)(this.state)}clone(){return this._cloneInto()}keccak(){(0,ft.swap32IfBE)(this.state32),Fv(this.state32,this.rounds),(0,ft.swap32IfBE)(this.state32),this.posOut=0,this.pos=0}update(t){(0,ft.aexists)(this),t=(0,ft.toBytes)(t),(0,ft.abytes)(t);let{blockLen:r,state:n}=this,o=t.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);for(let i=0;i<a;i++)n[this.pos++]^=t[s++];this.pos===r&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:t,suffix:r,pos:n,blockLen:o}=this;t[n]^=r,(r&128)!==0&&n===o-1&&this.keccak(),t[o-1]^=128,this.keccak()}writeInto(t){(0,ft.aexists)(this,!1),(0,ft.abytes)(t),this.finish();let r=this.state,{blockLen:n}=this;for(let o=0,s=t.length;o<s;){this.posOut>=n&&this.keccak();let a=Math.min(n-this.posOut,s-o);t.set(r.subarray(this.posOut,this.posOut+a),o),this.posOut+=a,o+=a}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return(0,ft.anumber)(t),this.xofInto(new Uint8Array(t))}digestInto(t){if((0,ft.aoutput)(t,this),this.finished)throw new Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,(0,ft.clean)(this.state)}_cloneInto(t){let{blockLen:r,suffix:n,outputLen:o,rounds:s,enableXOF:a}=this;return t||(t=new e(r,n,o,a,s)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=s,t.suffix=n,t.outputLen=o,t.enableXOF=a,t.destroyed=this.destroyed,t}};Ee.Keccak=Cc;var xo=(e,t,r)=>(0,ft.createHasher)(()=>new Cc(t,e,r));Ee.sha3_224=xo(6,144,224/8);Ee.sha3_256=xo(6,136,256/8);Ee.sha3_384=xo(6,104,384/8);Ee.sha3_512=xo(6,72,512/8);Ee.keccak_224=xo(1,144,224/8);Ee.keccak_256=xo(1,136,256/8);Ee.keccak_384=xo(1,104,384/8);Ee.keccak_512=xo(1,72,512/8);var Nv=(e,t,r)=>(0,ft.createXOFer)((n={})=>new Cc(t,e,n.dkLen===void 0?r:n.dkLen,!0));Ee.shake128=Nv(31,168,128/8);Ee.shake256=Nv(31,136,256/8)});var Bv=Xt(N0=>{"use strict";Object.defineProperty(N0,"__esModule",{value:!0});N0.verifyEnvEncryptPublicKey=ZI;var WI=Lv(),JI=zn("@noble/curves/secp256k1");function ZI(e,t,r){if(t.length!==65)return null;let n=Buffer.from("dstack-env-encrypt-pubkey","utf8"),o=r;r.startsWith("0x")&&(o=r.slice(2));let s=Buffer.from(o,"hex"),a=Buffer.from(":","utf8"),i=Buffer.concat([n,a,s,Buffer.from(e)]),c=(0,WI.keccak_256)(i);try{let m=t.slice(0,32),u=t.slice(32,64),p=t[64],f=new Uint8Array(64);f.set(m,0),f.set(u,32);let d=JI.secp256k1.Signature.fromCompact(f).addRecoveryBit(p).recoverPublicKey(c);return"0x"+Buffer.from(d.toRawBytes(!0)).toString("hex")}catch(m){return console.error("signature verification failed:",m),null}}});import{readFileSync as VR}from"fs";import{dirname as GR,join as qR}from"path";import{fileURLToPath as KR}from"url";import{ZodError as V3}from"zod";import fi from"chalk";var Gv=Ci(gh(),1);import{ofetch as YI}from"ofetch";function hh(e){return{all:e=e||new Map,on:function(t,r){var n=e.get(t);n?n.push(r):e.set(t,[r])},off:function(t,r){var n=e.get(t);n&&(r?n.splice(n.indexOf(r)>>>0,1):e.set(t,[]))},emit:function(t,r){var n=e.get(t);n&&n.slice().map(function(o){o(r)}),(n=e.get("*"))&&n.slice().map(function(o){o(t,r)})}}}import{z as rt}from"zod";import{z as _e}from"zod";import{z as vo}from"zod";import{z as Y}from"zod";import{z as wo}from"zod";function To(e){return{formatters:void 0,fees:void 0,serializers:void 0,...e}}dm();qe();dm();var zf={"0x0":"legacy","0x1":"eip2930","0x2":"eip1559","0x3":"eip4844","0x4":"eip7702"};function Ro(e,t){let r={...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,chainId:e.chainId?Te(e.chainId):void 0,gas:e.gas?BigInt(e.gas):void 0,gasPrice:e.gasPrice?BigInt(e.gasPrice):void 0,maxFeePerBlobGas:e.maxFeePerBlobGas?BigInt(e.maxFeePerBlobGas):void 0,maxFeePerGas:e.maxFeePerGas?BigInt(e.maxFeePerGas):void 0,maxPriorityFeePerGas:e.maxPriorityFeePerGas?BigInt(e.maxPriorityFeePerGas):void 0,nonce:e.nonce?Te(e.nonce):void 0,to:e.to?e.to:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,type:e.type?zf[e.type]:void 0,typeHex:e.type?e.type:void 0,value:e.value?BigInt(e.value):void 0,v:e.v?BigInt(e.v):void 0};return e.authorizationList&&(r.authorizationList=ik(e.authorizationList)),r.yParity=(()=>{if(e.yParity)return Number(e.yParity);if(typeof r.v=="bigint"){if(r.v===0n||r.v===27n)return 0;if(r.v===1n||r.v===28n)return 1;if(r.v>=35n)return r.v%2n===0n?1:0}})(),r.type==="legacy"&&(delete r.accessList,delete r.maxFeePerBlobGas,delete r.maxFeePerGas,delete r.maxPriorityFeePerGas,delete r.yParity),r.type==="eip2930"&&(delete r.maxFeePerBlobGas,delete r.maxFeePerGas,delete r.maxPriorityFeePerGas),r.type==="eip1559"&&delete r.maxFeePerBlobGas,r}var vh=vs("transaction",Ro);function ik(e){return e.map(t=>({address:t.address,chainId:Number(t.chainId),nonce:Number(t.nonce),r:t.r,s:t.s,yParity:Number(t.yParity)}))}function Ii(e,t){let r=(e.transactions??[]).map(n=>typeof n=="string"?n:Ro(n));return{...e,baseFeePerGas:e.baseFeePerGas?BigInt(e.baseFeePerGas):null,blobGasUsed:e.blobGasUsed?BigInt(e.blobGasUsed):void 0,difficulty:e.difficulty?BigInt(e.difficulty):void 0,excessBlobGas:e.excessBlobGas?BigInt(e.excessBlobGas):void 0,gasLimit:e.gasLimit?BigInt(e.gasLimit):void 0,gasUsed:e.gasUsed?BigInt(e.gasUsed):void 0,hash:e.hash?e.hash:null,logsBloom:e.logsBloom?e.logsBloom:null,nonce:e.nonce?e.nonce:null,number:e.number?BigInt(e.number):null,size:e.size?BigInt(e.size):void 0,timestamp:e.timestamp?BigInt(e.timestamp):void 0,transactions:r,totalDifficulty:e.totalDifficulty?BigInt(e.totalDifficulty):null}}var wh=vs("block",Ii);function it(e,{args:t,eventName:r}={}){return{...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,logIndex:e.logIndex?Number(e.logIndex):null,transactionHash:e.transactionHash?e.transactionHash:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,...r?{args:t,eventName:r}:{}}}qe();dm();var Of={"0x0":"reverted","0x1":"success"};function Ai(e,t){let r={...e,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,contractAddress:e.contractAddress?e.contractAddress:null,cumulativeGasUsed:e.cumulativeGasUsed?BigInt(e.cumulativeGasUsed):null,effectiveGasPrice:e.effectiveGasPrice?BigInt(e.effectiveGasPrice):null,gasUsed:e.gasUsed?BigInt(e.gasUsed):null,logs:e.logs?e.logs.map(n=>it(n)):null,to:e.to?e.to:null,transactionIndex:e.transactionIndex?Te(e.transactionIndex):null,status:e.status?Of[e.status]:null,type:e.type?zf[e.type]||e.type:null};return e.blobGasPrice&&(r.blobGasPrice=BigInt(e.blobGasPrice)),e.blobGasUsed&&(r.blobGasUsed=BigInt(e.blobGasUsed)),r}var Ch=vs("transactionReceipt",Ai);K();hm();Xe();D();function wr(e,t="hex"){let r=Sh(e),n=Ss(new Uint8Array(r.length));return r.encode(n),t==="hex"?ne(n.bytes):n.bytes}function Sh(e){return Array.isArray(e)?lk(e.map(t=>Sh(t))):fk(e)}function lk(e){let t=e.reduce((o,s)=>o+s.length,0),r=kh(t);return{length:t<=55?1+t:1+r+t,encode(o){t<=55?o.pushByte(192+t):(o.pushByte(247+r),r===1?o.pushUint8(t):r===2?o.pushUint16(t):r===3?o.pushUint24(t):o.pushUint32(t));for(let{encode:s}of e)s(o)}}}function fk(e){let t=typeof e=="string"?Ke(e):e,r=kh(t.length);return{length:t.length===1&&t[0]<128?1:t.length<=55?1+t.length:1+r+t.length,encode(o){t.length===1&&t[0]<128?o.pushBytes(t):t.length<=55?(o.pushByte(128+t.length),o.pushBytes(t)):(o.pushByte(183+r),r===1?o.pushUint8(t.length):r===2?o.pushUint16(t.length):r===3?o.pushUint24(t.length):o.pushUint32(t.length),o.pushBytes(t))}}}function kh(e){if(e<2**8)return 1;if(e<2**16)return 2;if(e<2**24)return 3;if(e<2**32)return 4;throw new w("Length is too large.")}Ot();D();function _h(e){if(!e||e.length===0)return[];let t=[];for(let r of e){let{chainId:n,nonce:o,...s}=r,a=r.address;t.push([n?ye(n):"0x",a,o?ye(o):"0x",...Ps({},s)])}return t}Xe();D();function Ts(e){let{kzg:t}=e,r=e.to??(typeof e.blobs[0]=="string"?"hex":"bytes"),n=typeof e.blobs[0]=="string"?e.blobs.map(s=>Ke(s)):e.blobs,o=[];for(let s of n)o.push(Uint8Array.from(t.blobToKzgCommitment(s)));return r==="bytes"?o:o.map(s=>ne(s))}Xe();D();function $s(e){let{kzg:t}=e,r=e.to??(typeof e.blobs[0]=="string"?"hex":"bytes"),n=typeof e.blobs[0]=="string"?e.blobs.map(a=>Ke(a)):e.blobs,o=typeof e.commitments[0]=="string"?e.commitments.map(a=>Ke(a)):e.commitments,s=[];for(let a=0;a<n.length;a++){let i=n[a],c=o[a];s.push(Uint8Array.from(t.computeBlobKzgProof(i,c)))}return r==="bytes"?s:s.map(a=>ne(a))}D();Tm();function xk(e,t,r,n){if(typeof e.setBigUint64=="function")return e.setBigUint64(t,r,n);let o=BigInt(32),s=BigInt(4294967295),a=Number(r>>o&s),i=Number(r&s),c=n?4:0,m=n?0:4;e.setUint32(t+c,a,n),e.setUint32(t+m,i,n)}function Ah(e,t,r){return e&t^~e&r}function Ph(e,t,r){return e&t^e&r^t&r}var $m=class extends Rs{constructor(t,r,n,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=t,this.outputLen=r,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(t),this.view=Am(this.buffer)}update(t){Ms(this),t=Ti(t),Fo(t);let{view:r,buffer:n,blockLen:o}=this,s=t.length;for(let a=0;a<s;){let i=Math.min(o-this.pos,s-a);if(i===o){let c=Am(t);for(;o<=s-a;a+=o)this.process(c,a);continue}n.set(t.subarray(a,a+i),this.pos),this.pos+=i,a+=i,this.pos===o&&(this.process(r,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){Ms(this),Im(t,this),this.finished=!0;let{buffer:r,view:n,blockLen:o,isLE:s}=this,{pos:a}=this;r[a++]=128,Hn(this.buffer.subarray(a)),this.padOffset>o-a&&(this.process(n,0),a=0);for(let p=a;p<o;p++)r[p]=0;xk(n,o-8,BigInt(this.length*8),s),this.process(n,0);let i=Am(t),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let m=c/4,u=this.get();if(m>u.length)throw new Error("_sha2: outputLen bigger than state");for(let p=0;p<m;p++)i.setUint32(4*p,u[p],s)}digest(){let{buffer:t,outputLen:r}=this;this.digestInto(t);let n=t.slice(0,r);return this.destroy(),n}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());let{blockLen:r,buffer:n,length:o,finished:s,destroyed:a,pos:i}=this;return t.destroyed=a,t.finished=s,t.length=o,t.pos=i,o%r&&t.buffer.set(n),t}clone(){return this._cloneInto()}},ln=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);Tm();var wk=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Vn=new Uint32Array(64),Mm=class extends $m{constructor(t=32){super(64,t,8,!1),this.A=ln[0]|0,this.B=ln[1]|0,this.C=ln[2]|0,this.D=ln[3]|0,this.E=ln[4]|0,this.F=ln[5]|0,this.G=ln[6]|0,this.H=ln[7]|0}get(){let{A:t,B:r,C:n,D:o,E:s,F:a,G:i,H:c}=this;return[t,r,n,o,s,a,i,c]}set(t,r,n,o,s,a,i,c){this.A=t|0,this.B=r|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=a|0,this.G=i|0,this.H=c|0}process(t,r){for(let p=0;p<16;p++,r+=4)Vn[p]=t.getUint32(r,!1);for(let p=16;p<64;p++){let f=Vn[p-15],d=Vn[p-2],g=Cr(f,7)^Cr(f,18)^f>>>3,h=Cr(d,17)^Cr(d,19)^d>>>10;Vn[p]=h+Vn[p-7]+g+Vn[p-16]|0}let{A:n,B:o,C:s,D:a,E:i,F:c,G:m,H:u}=this;for(let p=0;p<64;p++){let f=Cr(i,6)^Cr(i,11)^Cr(i,25),d=u+f+Ah(i,c,m)+wk[p]+Vn[p]|0,h=(Cr(n,2)^Cr(n,13)^Cr(n,22))+Ph(n,o,s)|0;u=m,m=c,c=i,i=a+d|0,a=s,s=o,o=n,n=d+h|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,a=a+this.D|0,i=i+this.E|0,c=c+this.F|0,m=m+this.G|0,u=u+this.H|0,this.set(n,o,s,a,i,c,m,u)}roundClean(){Hn(Vn)}destroy(){this.set(0,0,0,0,0,0,0,0),Hn(this.buffer)}};var Bh=Pm(()=>new Mm);var Dh=Bh;zt();Xe();D();function Uh(e,t){let r=t||"hex",n=Dh(ve(e,{strict:!1})?er(e):e);return r==="bytes"?n:ye(n)}function zh(e){let{commitment:t,version:r=1}=e,n=e.to??(typeof t=="string"?"hex":"bytes"),o=Uh(t,"bytes");return o.set([r],0),n==="bytes"?o:ne(o)}function Fm(e){let{commitments:t,version:r}=e,n=e.to??(typeof t[0]=="string"?"hex":"bytes"),o=[];for(let s of t)o.push(zh({commitment:s,to:n,version:r}));return o}K();var Nm=class extends w{constructor({maxSize:t,size:r}){super("Blob size is too large.",{metaMessages:[`Max: ${t} bytes`,`Given: ${r} bytes`],name:"BlobSizeTooLargeError"})}},Fs=class extends w{constructor(){super("Blob data must not be empty.",{name:"EmptyBlobError"})}},Lm=class extends w{constructor({hash:t,size:r}){super(`Versioned hash "${t}" size is invalid.`,{metaMessages:["Expected: 32",`Received: ${r}`],name:"InvalidVersionedHashSizeError"})}},Bm=class extends w{constructor({hash:t,version:r}){super(`Versioned hash "${t}" version is invalid.`,{metaMessages:[`Expected: ${1}`,`Received: ${r}`],name:"InvalidVersionedHashVersionError"})}};hm();Qt();Xe();D();function Oh(e){let t=e.to??(typeof e.data=="string"?"hex":"bytes"),r=typeof e.data=="string"?Ke(e.data):e.data,n=re(r);if(!n)throw new Fs;if(n>761855)throw new Nm({maxSize:761855,size:n});let o=[],s=!0,a=0;for(;s;){let i=Ss(new Uint8Array(131072)),c=0;for(;c<4096;){let m=r.slice(a,a+31);if(i.pushByte(0),i.pushBytes(m),m.length<31){i.pushByte(128),s=!1;break}c++,a+=31}o.push(i)}return t==="bytes"?o.map(i=>i.bytes):o.map(i=>ne(i.bytes))}function Dm(e){let{data:t,kzg:r,to:n}=e,o=e.blobs??Oh({data:t,to:n}),s=e.commitments??Ts({blobs:o,kzg:r,to:n}),a=e.proofs??$s({blobs:o,commitments:s,kzg:r,to:n}),i=[];for(let c=0;c<o.length;c++)i.push({blob:o[c],commitment:s[c],proof:a[c]});return i}bt();$o();D();jf();Sr();K();Ri();Gn();jt();Qt();Kn();qe();function Zh(e){let{authorizationList:t}=e;if(t)for(let r of t){let{chainId:n}=r,o=r.address;if(!ie(o))throw new ge({address:o});if(n<0)throw new Lo({chainId:n})}Hm(e)}function Yh(e){let{blobVersionedHashes:t}=e;if(t){if(t.length===0)throw new Fs;for(let r of t){let n=re(r),o=Te(sr(r,0,1));if(n!==32)throw new Lm({hash:r,size:n});if(o!==1)throw new Bm({hash:r,version:o})}}Hm(e)}function Hm(e){let{chainId:t,maxPriorityFeePerGas:r,maxFeePerGas:n,to:o}=e;if(t<=0)throw new Lo({chainId:t});if(o&&!ie(o))throw new ge({address:o});if(n&&n>ws)throw new tr({maxFeePerGas:n});if(r&&n&&r>n)throw new Lr({maxFeePerGas:n,maxPriorityFeePerGas:r})}function Xh(e){let{chainId:t,maxPriorityFeePerGas:r,gasPrice:n,maxFeePerGas:o,to:s}=e;if(t<=0)throw new Lo({chainId:t});if(s&&!ie(s))throw new ge({address:s});if(r||o)throw new w("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.");if(n&&n>ws)throw new tr({maxFeePerGas:n})}function Qh(e){let{chainId:t,maxPriorityFeePerGas:r,gasPrice:n,maxFeePerGas:o,to:s}=e;if(s&&!ie(s))throw new ge({address:s});if(typeof t<"u"&&t<=0)throw new Lo({chainId:t});if(r||o)throw new w("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.");if(n&&n>ws)throw new tr({maxFeePerGas:n})}Ot();function Vm(e){if(e.type)return e.type;if(typeof e.authorizationList<"u")return"eip7702";if(typeof e.blobs<"u"||typeof e.blobVersionedHashes<"u"||typeof e.maxFeePerBlobGas<"u"||typeof e.sidecars<"u")return"eip4844";if(typeof e.maxFeePerGas<"u"||typeof e.maxPriorityFeePerGas<"u")return"eip1559";if(typeof e.gasPrice<"u")return typeof e.accessList<"u"?"eip2930":"legacy";throw new Sm({transaction:e})}Sr();Ot();jt();function Fi(e){if(!e||e.length===0)return[];let t=[];for(let r=0;r<e.length;r++){let{address:n,storageKeys:o}=e[r];for(let s=0;s<o.length;s++)if(o[s].length-2!==64)throw new km({storageKey:o[s]});if(!ie(n,{strict:!1}))throw new ge({address:n});t.push([n,o])}return t}function Gm(e,t){let r=Vm(e);return r==="eip1559"?Lk(e,t):r==="eip2930"?Bk(e,t):r==="eip4844"?Nk(e,t):r==="eip7702"?Fk(e,t):Dk(e,t)}function Fk(e,t){let{authorizationList:r,chainId:n,gas:o,nonce:s,to:a,value:i,maxFeePerGas:c,maxPriorityFeePerGas:m,accessList:u,data:p}=e;Zh(e);let f=Fi(u),d=_h(r);return Qe(["0x04",wr([E(n),s?E(s):"0x",m?E(m):"0x",c?E(c):"0x",o?E(o):"0x",a??"0x",i?E(i):"0x",p??"0x",f,d,...Ps(e,t)])])}function Nk(e,t){let{chainId:r,gas:n,nonce:o,to:s,value:a,maxFeePerBlobGas:i,maxFeePerGas:c,maxPriorityFeePerGas:m,accessList:u,data:p}=e;Yh(e);let f=e.blobVersionedHashes,d=e.sidecars;if(e.blobs&&(typeof f>"u"||typeof d>"u")){let v=typeof e.blobs[0]=="string"?e.blobs:e.blobs.map(_=>ne(_)),C=e.kzg,k=Ts({blobs:v,kzg:C});if(typeof f>"u"&&(f=Fm({commitments:k})),typeof d>"u"){let _=$s({blobs:v,commitments:k,kzg:C});d=Dm({blobs:v,commitments:k,proofs:_})}}let g=Fi(u),h=[E(r),o?E(o):"0x",m?E(m):"0x",c?E(c):"0x",n?E(n):"0x",s??"0x",a?E(a):"0x",p??"0x",g,i?E(i):"0x",f??[],...Ps(e,t)],y=[],b=[],x=[];if(d)for(let v=0;v<d.length;v++){let{blob:C,commitment:k,proof:_}=d[v];y.push(C),b.push(k),x.push(_)}return Qe(["0x03",d?wr([h,y,b,x]):wr(h)])}function Lk(e,t){let{chainId:r,gas:n,nonce:o,to:s,value:a,maxFeePerGas:i,maxPriorityFeePerGas:c,accessList:m,data:u}=e;Hm(e);let p=Fi(m),f=[E(r),o?E(o):"0x",c?E(c):"0x",i?E(i):"0x",n?E(n):"0x",s??"0x",a?E(a):"0x",u??"0x",p,...Ps(e,t)];return Qe(["0x02",wr(f)])}function Bk(e,t){let{chainId:r,gas:n,data:o,nonce:s,to:a,value:i,accessList:c,gasPrice:m}=e;Xh(e);let u=Fi(c),p=[E(r),s?E(s):"0x",m?E(m):"0x",n?E(n):"0x",a??"0x",i?E(i):"0x",o??"0x",u,...Ps(e,t)];return Qe(["0x01",wr(p)])}function Dk(e,t){let{chainId:r=0,gas:n,data:o,nonce:s,to:a,value:i,gasPrice:c}=e;Qh(e);let m=[s?E(s):"0x",c?E(c):"0x",n?E(n):"0x",a??"0x",i?E(i):"0x",o??"0x"];if(t){let u=(()=>{if(t.v>=35n)return(t.v-35n)/2n>0?t.v:27n+(t.v===35n?0n:1n);if(r>0)return BigInt(r*2)+BigInt(35n+t.v-27n);let d=27n+(t.v===27n?0n:1n);if(t.v!==d)throw new Cm({v:t.v});return d})(),p=Ye(t.r),f=Ye(t.s);m=[...m,E(u),p==="0x00"?"0x":p,f==="0x00"?"0x":f]}else r>0&&(m=[...m,E(r),"0x","0x"]);return wr(m)}function Ps(e,t){let r=t??e,{v:n,yParity:o}=r;if(typeof r.r>"u")return[];if(typeof r.s>"u")return[];if(typeof n>"u"&&typeof o>"u")return[];let s=Ye(r.r),a=Ye(r.s);return[typeof o=="number"?o?E(1):"0x":n===0n?"0x":n===1n?E(1):n===27n?"0x":E(1),s==="0x00"?"0x":s,a==="0x00"?"0x":a]}var ey={gasPriceOracle:{address:"0x420000000000000000000000000000000000000F"},l1Block:{address:"0x4200000000000000000000000000000000000015"},l2CrossDomainMessenger:{address:"0x4200000000000000000000000000000000000007"},l2Erc721Bridge:{address:"0x4200000000000000000000000000000000000014"},l2StandardBridge:{address:"0x4200000000000000000000000000000000000010"},l2ToL1MessagePasser:{address:"0x4200000000000000000000000000000000000016"}};qe();var ty={block:wh({format(e){return{transactions:e.transactions?.map(r=>{if(typeof r=="string")return r;let n=Ro(r);return n.typeHex==="0x7e"&&(n.isSystemTx=r.isSystemTx,n.mint=r.mint?be(r.mint):void 0,n.sourceHash=r.sourceHash,n.type="deposit"),n}),stateRoot:e.stateRoot}}}),transaction:vh({format(e){let t={};return e.type==="0x7e"&&(t.isSystemTx=e.isSystemTx,t.mint=e.mint?be(e.mint):void 0,t.sourceHash=e.sourceHash,t.type="deposit"),t}}),transactionReceipt:Ch({format(e){return{l1GasPrice:e.l1GasPrice?be(e.l1GasPrice):null,l1GasUsed:e.l1GasUsed?be(e.l1GasUsed):null,l1Fee:e.l1Fee?be(e.l1Fee):null,l1FeeScalar:e.l1FeeScalar?Number(e.l1FeeScalar):null}}})};Sr();jt();bt();D();function Uk(e,t){return Ok(e)?zk(e):Gm(e,t)}var ry={transaction:Uk};function zk(e){jk(e);let{sourceHash:t,data:r,from:n,gas:o,isSystemTx:s,mint:a,to:i,value:c}=e,m=[t,n,i??"0x",a?ye(a):"0x",c?ye(c):"0x",o?ye(o):"0x",s?"0x1":"0x",r??"0x"];return Qe(["0x7e",wr(m)])}function Ok(e){return e.type==="deposit"||typeof e.sourceHash<"u"}function jk(e){let{from:t,to:r}=e;if(t&&!ie(t))throw new ge({address:t});if(r&&!ie(r))throw new ge({address:r})}var Xf={blockTime:2e3,contracts:ey,formatters:ty,serializers:ry};var qm=To({id:31337,name:"Anvil",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["http://127.0.0.1:8545"],webSocket:["ws://127.0.0.1:8545"]}}});var Ni=1,Li=To({...Xf,id:8453,name:"Base",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.base.org"]}},blockExplorers:{default:{name:"Basescan",url:"https://basescan.org",apiUrl:"https://api.basescan.org/api"}},contracts:{...Xf.contracts,disputeGameFactory:{[Ni]:{address:"0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e"}},l2OutputOracle:{[Ni]:{address:"0x56315b90c40730925ec5485cf004d835058518A0"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:5022},portal:{[Ni]:{address:"0x49048044D57e1C92A77f79988d21Fa8fAF74E97e",blockCreated:17482143}},l1StandardBridge:{[Ni]:{address:"0x3154Cf16ccdb4C6d922629664174b904d80F2C35",blockCreated:17482143}}},sourceId:Ni}),Hk=To({...Li,experimental_preconfirmationTime:200,rpcUrls:{default:{http:["https://mainnet-preconf.base.org"]}}});Ri();function Gs({chain:e,currentChainId:t}){if(!e)throw new zm;if(t!==e.id)throw new Um({chain:e,currentChainId:t})}K();var et=class extends w{constructor({docsPath:t}={}){super(["Could not find an Account to execute with this Action.","Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the Client."].join(`
48
- `),{docsPath:t,docsSlug:"account",name:"AccountNotFoundError"})}},ir=class extends w{constructor({docsPath:t,metaMessages:r,type:n}){super(`Account type "${n}" is not supported.`,{docsPath:t,metaMessages:r,name:"AccountTypeNotSupportedError"})}};var Ou=To({id:1,name:"Ethereum",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},blockTime:12e3,rpcUrls:{default:{http:["https://eth.merkle.io"]}},blockExplorers:{default:{name:"Etherscan",url:"https://etherscan.io",apiUrl:"https://api.etherscan.io/api"}},contracts:{ensUniversalResolver:{address:"0xeeeeeeee14d718c2b47d9923deab1335e144eeee",blockCreated:23085558},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14353601}}});import{z as De}from"zod";import{z as St}from"zod";import{z as $}from"zod";import{z as R}from"zod";import{z as ri}from"zod";import{z as ni}from"zod";import{z as Z}from"zod";import{z as dt}from"zod";import{z as ee}from"zod";import cA from"crypto";import{z as en}from"zod";import{z as Pr}from"zod";import{z as st}from"zod";import{z as Nt}from"zod";import{z as Lt}from"zod";import{z as DA}from"zod";import{z as Uv}from"zod";import{z as tn}from"zod";import{z as ci}from"zod";import{z as ns}from"zod";import{z as Ce}from"zod";import{z as mP}from"zod";import{z as lP}from"zod";import{z as le}from"zod";import{z as Xr}from"zod";import{z as _P}from"zod";import{z as Be}from"zod";import{z as G}from"zod";import{z as ai}from"zod";import{z as D0}from"zod";import{z as gt}from"zod";import{z as lw}from"zod";import{z as Yr}from"zod";import{z as Ft}from"zod";import{z as Co}from"zod";import{z as U0}from"zod";import{z as O0}from"zod";import{z as rs}from"zod";import{z}from"zod";import{z as ce}from"zod";import{z as oe}from"zod";import{z as Ge}from"zod";function T(e,t,r){let n=e[t.name];if(typeof n=="function")return n;let o=e[r];return typeof o=="function"?o:s=>t(e,s)}Ne();K();var ju=class extends w{constructor(t){super(`Filter type "${t}" is not supported.`,{name:"FilterTypeNotSupportedError"})}};Xe();or();qi();yn();gn();Zn();var tb="/docs/contract/encodeEventTopics";function Vr(e){let{abi:t,eventName:r,args:n}=e,o=t[0];if(r){let c=Tt({abi:t,name:r});if(!c)throw new zi(r,{docsPath:tb});o=c}if(o.type!=="event")throw new zi(void 0,{docsPath:tb});let s=Je(o),a=Jn(s),i=[];if(n&&"inputs"in o){let c=o.inputs?.filter(u=>"indexed"in u&&u.indexed),m=Array.isArray(n)?n:Object.values(n).length>0?c?.map(u=>n[u.name])??[]:[];m.length>0&&(i=c?.map((u,p)=>Array.isArray(m[p])?m[p].map((f,d)=>rb({param:u,value:m[p][d]})):typeof m[p]<"u"&&m[p]!==null?rb({param:u,value:m[p]}):null)??[])}return[a,...i]}function rb({param:e,value:t}){if(e.type==="string"||e.type==="bytes")return he(er(t));if(e.type==="tuple"||e.type.match(/^(.*)\[(\d+)?\]$/))throw new ju(e.type);return xt([e],[t])}D();function no(e,{method:t}){let r={};return e.transport.type==="fallback"&&e.transport.onResponse?.(({method:n,response:o,status:s,transport:a})=>{s==="success"&&t===n&&(r[o]=a.request)}),(n=>r[n]||e.request)}async function Hu(e,t){let{address:r,abi:n,args:o,eventName:s,fromBlock:a,strict:i,toBlock:c}=t,m=no(e,{method:"eth_newFilter"}),u=s?Vr({abi:n,args:o,eventName:s}):void 0,p=await e.request({method:"eth_newFilter",params:[{address:r,fromBlock:typeof a=="bigint"?E(a):a,toBlock:typeof c=="bigint"?E(c):c,topics:u}]});return{abi:n,args:o,eventName:s,id:p,request:m(p),strict:!!i,type:"event"}}Fe();Vt();Ne();K();Yn();Oo();Sa();var wE=3;function Gt(e,{abi:t,address:r,args:n,docsPath:o,functionName:s,sender:a}){let i=e instanceof Or?e:e instanceof w?e.walk(g=>"data"in g)||e.walk():{},{code:c,data:m,details:u,message:p,shortMessage:f}=i,d=e instanceof cr?new Bu({functionName:s}):[wE,xn.code].includes(c)&&(m||u||p||f)?new zo({abi:t,data:typeof m=="object"?m.data:m,functionName:s,message:i instanceof Xn?u:f??p}):e;return new oa(d,{abi:t,args:n,contractAddress:r,docsPath:o,functionName:s,sender:a})}Fe();K();qn();or();function Vu(e){let t=he(`0x${e.substring(4)}`).substring(26);return dn(`0x${t}`)}zt();Qt();qe();D();async function ib({hash:e,signature:t}){let r=ve(e)?e:ye(e),{secp256k1:n}=await import("@noble/curves/secp256k1");return`0x${(()=>{if(typeof t=="object"&&"r"in t&&"s"in t){let{r:m,s:u,v:p,yParity:f}=t,d=Number(f??p),g=ab(d);return new n.Signature(be(m),be(u)).addRecoveryBit(g)}let a=ve(t)?t:ye(t);if(re(a)!==65)throw new Error("invalid signature length");let i=Te(`0x${a.slice(130)}`),c=ab(i);return n.Signature.fromCompact(a.substring(2,130)).addRecoveryBit(c)})().recoverPublicKey(r.substring(2)).toHex(!1)}`}function ab(e){if(e===0||e===1)return e;if(e===27)return 0;if(e===28)return 1;throw new Error("Invalid yParityOrV value")}async function Gu({hash:e,signature:t}){return Vu(await ib({hash:e,signature:t}))}bt();Xe();D();or();function qu(e){let{chainId:t,nonce:r,to:n}=e,o=e.contractAddress??e.address,s=he(Qe(["0x05",wr([t?E(t):"0x",o,r?E(r):"0x"])]));return n==="bytes"?Ke(s):s}async function oo(e){let{authorization:t,signature:r}=e;return Gu({hash:qu(t),signature:r??t})}D();vm();Es();K();Ot();var Ku=class extends w{constructor(t,{account:r,docsPath:n,chain:o,data:s,gas:a,gasPrice:i,maxFeePerGas:c,maxPriorityFeePerGas:m,nonce:u,to:p,value:f}){let d=Mo({from:r?.address,to:p,value:typeof f<"u"&&`${ks(f)} ${o?.nativeCurrency?.symbol||"ETH"}`,data:s,gas:a,gasPrice:typeof i<"u"&&`${We(i)} gwei`,maxFeePerGas:typeof c<"u"&&`${We(c)} gwei`,maxPriorityFeePerGas:typeof m<"u"&&`${We(m)} gwei`,nonce:u});super(t.shortMessage,{cause:t,docsPath:n,metaMessages:[...t.metaMessages?[...t.metaMessages," "]:[],"Estimate Gas Arguments:",d].filter(Boolean),name:"EstimateGasExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=t}};Gn();Wi();function cb(e,{docsPath:t,...r}){let n=(()=>{let o=ro(e,r);return o instanceof rr?e:o})();return new Ku(n,{docsPath:t,...r})}ka();jn();Wu();vn();Fe();Es();K();var Ju=class extends w{constructor(){super("`baseFeeMultiplier` must be greater than 1.",{name:"BaseFeeScalarError"})}},so=class extends w{constructor(){super("Chain does not support EIP-1559 fees.",{name:"Eip1559FeesNotSupportedError"})}},Zu=class extends w{constructor({maxPriorityFeePerGas:t}){super(`\`maxFeePerGas\` cannot be less than the \`maxPriorityFeePerGas\` (${We(t)} gwei).`,{name:"MaxFeePerGasTooLowError"})}};qe();K();var _a=class extends w{constructor({blockHash:t,blockNumber:r}){let n="Block";t&&(n=`Block at hash "${t}"`),r&&(n=`Block at number "${r}"`),super(`${n} could not be found.`,{name:"BlockNotFoundError"})}};D();async function pt(e,{blockHash:t,blockNumber:r,blockTag:n=e.experimental_blockTag??"latest",includeTransactions:o}={}){let s=o??!1,a=r!==void 0?E(r):void 0,i=null;if(t?i=await e.request({method:"eth_getBlockByHash",params:[t,s]},{dedupe:!0}):i=await e.request({method:"eth_getBlockByNumber",params:[a||n,s]},{dedupe:!!a}),!i)throw new _a({blockHash:t,blockNumber:r});return(e.chain?.formatters?.block?.format||Ii)(i,"getBlock")}async function Ia(e){let t=await e.request({method:"eth_gasPrice"});return BigInt(t)}async function ub(e,t){return gd(e,t)}async function gd(e,t){let{block:r,chain:n=e.chain,request:o}=t||{};try{let s=n?.fees?.maxPriorityFeePerGas??n?.fees?.defaultPriorityFee;if(typeof s=="function"){let i=r||await T(e,pt,"getBlock")({}),c=await s({block:i,client:e,request:o});if(c===null)throw new Error;return c}if(typeof s<"u")return s;let a=await e.request({method:"eth_maxPriorityFeePerGas"});return be(a)}catch{let[s,a]=await Promise.all([r?Promise.resolve(r):T(e,pt,"getBlock")({}),T(e,Ia,"getGasPrice")({})]);if(typeof s.baseFeePerGas!="bigint")throw new so;let i=a-s.baseFeePerGas;return i<0n?0n:i}}async function pb(e,t){return Yu(e,t)}async function Yu(e,t){let{block:r,chain:n=e.chain,request:o,type:s="eip1559"}=t||{},a=await(async()=>typeof n?.fees?.baseFeeMultiplier=="function"?n.fees.baseFeeMultiplier({block:r,client:e,request:o}):n?.fees?.baseFeeMultiplier??1.2)();if(a<1)throw new Ju;let c=10**(a.toString().split(".")[1]?.length??0),m=f=>f*BigInt(Math.ceil(a*c))/BigInt(c),u=r||await T(e,pt,"getBlock")({});if(typeof n?.fees?.estimateFeesPerGas=="function"){let f=await n.fees.estimateFeesPerGas({block:r,client:e,multiply:m,request:o,type:s});if(f!==null)return f}if(s==="eip1559"){if(typeof u.baseFeePerGas!="bigint")throw new so;let f=typeof o?.maxPriorityFeePerGas=="bigint"?o.maxPriorityFeePerGas:await gd(e,{block:u,chain:n,request:o}),d=m(u.baseFeePerGas);return{maxFeePerGas:o?.maxFeePerGas??d+f,maxPriorityFeePerGas:f}}return{gasPrice:o?.gasPrice??m(await T(e,Ia,"getGasPrice")({}))}}qe();D();async function Aa(e,{address:t,blockTag:r="latest",blockNumber:n}){let o=await e.request({method:"eth_getTransactionCount",params:[t,typeof n=="bigint"?E(n):r]},{dedupe:!!n});return Te(o)}vn();qe();async function $t(e){let t=await e.request({method:"eth_chainId"},{dedupe:!0});return Te(t)}var Ji=["blobVersionedHashes","chainId","fees","gas","nonce","type"],lb=new Map;async function Gr(e,t){let{account:r=e.account,blobs:n,chain:o,gas:s,kzg:a,nonce:i,nonceManager:c,parameters:m=Ji,type:u}=t,p=r&&W(r),f={...t,...p?{from:p?.address}:{}},d;async function g(){return d||(d=await T(e,pt,"getBlock")({blockTag:"latest"}),d)}let h;async function y(){return h||(o?o.id:typeof t.chainId<"u"?t.chainId:(h=await T(e,$t,"getChainId")({}),h))}if(m.includes("nonce")&&typeof i>"u"&&p)if(c){let b=await y();f.nonce=await c.consume({address:p.address,chainId:b,client:e})}else f.nonce=await T(e,Aa,"getTransactionCount")({address:p.address,blockTag:"pending"});if((m.includes("blobVersionedHashes")||m.includes("sidecars"))&&n&&a){let b=Ts({blobs:n,kzg:a});if(m.includes("blobVersionedHashes")){let x=Fm({commitments:b,to:"hex"});f.blobVersionedHashes=x}if(m.includes("sidecars")){let x=$s({blobs:n,commitments:b,kzg:a}),v=Dm({blobs:n,commitments:b,proofs:x,to:"hex"});f.sidecars=v}}if(m.includes("chainId")&&(f.chainId=await y()),(m.includes("fees")||m.includes("type"))&&typeof u>"u")try{f.type=Vm(f)}catch{let b=lb.get(e.uid);typeof b>"u"&&(b=typeof(await g())?.baseFeePerGas=="bigint",lb.set(e.uid,b)),f.type=b?"eip1559":"legacy"}if(m.includes("fees"))if(f.type!=="legacy"&&f.type!=="eip2930"){if(typeof f.maxFeePerGas>"u"||typeof f.maxPriorityFeePerGas>"u"){let b=await g(),{maxFeePerGas:x,maxPriorityFeePerGas:v}=await Yu(e,{block:b,chain:o,request:f});if(typeof t.maxPriorityFeePerGas>"u"&&t.maxFeePerGas&&t.maxFeePerGas<v)throw new Zu({maxPriorityFeePerGas:v});f.maxPriorityFeePerGas=v,f.maxFeePerGas=x}}else{if(typeof t.maxFeePerGas<"u"||typeof t.maxPriorityFeePerGas<"u")throw new so;if(typeof t.gasPrice>"u"){let b=await g(),{gasPrice:x}=await Yu(e,{block:b,chain:o,request:f,type:"legacy"});f.gasPrice=x}}return m.includes("gas")&&typeof s>"u"&&(f.gas=await T(e,Pa,"estimateGas")({...f,account:p,prepare:p?.type==="local"?[]:["blobVersionedHashes"]})),ut(f),delete f.parameters,f}async function Pa(e,t){let{account:r=e.account,prepare:n=!0}=t,o=r?W(r):void 0,s=(()=>{if(Array.isArray(n))return n;if(o?.type!=="local")return["blobVersionedHashes"]})();try{let{accessList:a,authorizationList:i,blobs:c,blobVersionedHashes:m,blockNumber:u,blockTag:p,data:f,gas:d,gasPrice:g,maxFeePerBlobGas:h,maxFeePerGas:y,maxPriorityFeePerGas:b,nonce:x,value:v,stateOverride:C,...k}=n?await Gr(e,{...t,parameters:s}):t,I=(typeof u=="bigint"?E(u):void 0)||p,M=Ea(C),F=await(async()=>{if(k.to)return k.to;if(i&&i.length>0)return await oo({authorization:i[0]}).catch(()=>{throw new w("`to` is required. Could not infer from `authorizationList`")})})();ut(t);let L=e.chain?.formatters?.transactionRequest?.format,H=(L||At)({...Hr(k,{format:L}),account:o,accessList:a,authorizationList:i,blobs:c,blobVersionedHashes:m,data:f,gas:d,gasPrice:g,maxFeePerBlobGas:h,maxFeePerGas:y,maxPriorityFeePerGas:b,nonce:x,to:F,value:v},"estimateGas");return BigInt(await e.request({method:"eth_estimateGas",params:M?[H,I??e.experimental_blockTag??"latest",M]:I?[H,I]:[H]}))}catch(a){throw cb(a,{...t,account:o,chain:e.chain})}}async function fb(e,t){let{abi:r,address:n,args:o,functionName:s,dataSuffix:a,...i}=t,c=ke({abi:r,args:o,functionName:s});try{return await T(e,Pa,"estimateGas")({data:`${c}${a?a.replace("0x",""):""}`,to:n,...i})}catch(m){let u=i.account?W(i.account):void 0;throw Gt(m,{abi:r,address:n,args:o,docsPath:"/docs/contract/estimateContractGas",functionName:s,sender:u?.address})}}Zn();Ne();Vo();Xe();or();qi();Ne();Hf();Qt();qi();Gi();gn();var db="/docs/contract/decodeEventLog";function Ta(e){let{abi:t,data:r,strict:n,topics:o}=e,s=n??!0,[a,...i]=o;if(!a)throw new tu({docsPath:db});let c=t.find(h=>h.type==="event"&&a===Jn(Je(h)));if(!(c&&"name"in c)||c.type!=="event")throw new Ws(a,{docsPath:db});let{name:m,inputs:u}=c,p=u?.some(h=>!("name"in h&&h.name)),f=p?[]:{},d=u.map((h,y)=>[h,y]).filter(([h])=>"indexed"in h&&h.indexed);for(let h=0;h<d.length;h++){let[y,b]=d[h],x=i[h];if(!x)throw new Br({abiItem:c,param:y});f[p?b:y.name||b]=SE({param:y,value:x})}let g=u.filter(h=>!("indexed"in h&&h.indexed));if(g.length>0){if(r&&r!=="0x")try{let h=bn(g,r);if(h)if(p)for(let y=0;y<u.length;y++)f[y]=f[y]??h.shift();else for(let y=0;y<g.length;y++)f[g[y].name]=h[y]}catch(h){if(s)throw h instanceof qs||h instanceof Cs?new Er({abiItem:c,data:r,params:g,size:re(r)}):h}else if(s)throw new Er({abiItem:c,data:"0x",params:g,size:0})}return{eventName:m,args:Object.values(f).length>0?f:void 0}}function SE({param:e,value:t}){return e.type==="string"||e.type==="bytes"||e.type==="tuple"||e.type.match(/^(.*)\[(\d+)?\]$/)?t:(bn([e],t)||[])[0]}function Ir(e){let{abi:t,args:r,logs:n,strict:o=!0}=e,s=(()=>{if(e.eventName)return Array.isArray(e.eventName)?e.eventName:[e.eventName]})();return n.map(a=>{try{let i=t.find(m=>m.type==="event"&&a.topics[0]===Jn(m));if(!i)return null;let c=Ta({...a,abi:[i],strict:o});return s&&!s.includes(c.eventName)||!kE({args:c.args,inputs:i.inputs,matchArgs:r})?null:{...c,...a}}catch(i){let c,m;if(i instanceof Ws)return null;if(i instanceof Er||i instanceof Br){if(o)return null;c=i.abiItem.name,m=i.abiItem.inputs?.some(u=>!("name"in u&&u.name))}return{...a,args:m?[]:{},eventName:c}}}).filter(Boolean)}function kE(e){let{args:t,inputs:r,matchArgs:n}=e;if(!n)return!0;if(!t)return!1;function o(s,a,i){try{return s.type==="address"?ur(a,i):s.type==="string"||s.type==="bytes"?he(er(a))===i:a===i}catch{return!1}}return Array.isArray(t)&&Array.isArray(n)?n.every((s,a)=>{if(s==null)return!0;let i=r[a];return i?(Array.isArray(s)?s:[s]).some(m=>o(i,m,t[a])):!1}):typeof t=="object"&&!Array.isArray(t)&&typeof n=="object"&&!Array.isArray(n)?Object.entries(n).every(([s,a])=>{if(a==null)return!0;let i=r.find(m=>m.name===s);return i?(Array.isArray(a)?a:[a]).some(m=>o(i,m,t[s])):!1}):!1}D();async function $a(e,{address:t,blockHash:r,fromBlock:n,toBlock:o,event:s,events:a,args:i,strict:c}={}){let m=c??!1,u=a??(s?[s]:void 0),p=[];u&&(p=[u.flatMap(h=>Vr({abi:[h],eventName:h.name,args:a?void 0:i}))],s&&(p=p[0]));let f;r?f=await e.request({method:"eth_getLogs",params:[{address:t,topics:p,blockHash:r}]}):f=await e.request({method:"eth_getLogs",params:[{address:t,topics:p,fromBlock:typeof n=="bigint"?E(n):n,toBlock:typeof o=="bigint"?E(o):o}]});let d=f.map(g=>it(g));return u?Ir({abi:u,args:i,logs:d,strict:m}):d}async function Xu(e,t){let{abi:r,address:n,args:o,blockHash:s,eventName:a,fromBlock:i,toBlock:c,strict:m}=t,u=a?Tt({abi:r,name:a}):void 0,p=u?void 0:r.filter(f=>f.type==="event");return T(e,$a,"getLogs")({address:n,args:o,blockHash:s,event:u,events:p,fromBlock:i,toBlock:c,strict:m})}ao();Vt();za();async function Ve(e,t){let{abi:r,address:n,args:o,functionName:s,...a}=t,i=ke({abi:r,args:o,functionName:s});try{let{data:c}=await T(e,Wr,"call")({...a,data:i,to:n});return Rt({abi:r,args:o,functionName:s,data:c||"0x"})}catch(c){throw Gt(c,{abi:r,address:n,args:o,docsPath:"/docs/contract/readContract",functionName:s})}}Fe();ao();Vt();za();async function tx(e,t){let{abi:r,address:n,args:o,dataSuffix:s,functionName:a,...i}=t,c=i.account?W(i.account):e.account,m=ke({abi:r,args:o,functionName:a});try{let{data:u}=await T(e,Wr,"call")({batch:!1,data:`${m}${s?s.replace("0x",""):""}`,to:n,...i,account:c}),p=Rt({abi:r,args:o,functionName:a,data:u||"0x"}),f=r.filter(d=>"name"in d&&d.name===t.functionName);return{result:p,request:{abi:f,address:n,args:o,dataSuffix:s,functionName:a,...i,account:c}}}catch(u){throw Gt(u,{abi:r,address:n,args:o,docsPath:"/docs/contract/simulateContract",functionName:a,sender:c?.address})}}Ne();Sa();var Bd=new Map,rx=new Map,VE=0;function lt(e,t,r){let n=++VE,o=()=>Bd.get(e)||[],s=()=>{let u=o();Bd.set(e,u.filter(p=>p.id!==n))},a=()=>{let u=o();if(!u.some(f=>f.id===n))return;let p=rx.get(e);if(u.length===1&&p){let f=p();f instanceof Promise&&f.catch(()=>{})}s()},i=o();if(Bd.set(e,[...i,{id:n,fns:t}]),i&&i.length>0)return a;let c={};for(let u in t)c[u]=((...p)=>{let f=o();if(f.length!==0)for(let d of f)d.fns[u]?.(...p)});let m=r(c);return typeof m=="function"&&rx.set(e,m),a}async function nc(e){return new Promise(t=>setTimeout(t,e))}function lr(e,{emitOnBegin:t,initialWaitTime:r,interval:n}){let o=!0,s=()=>o=!1;return(async()=>{let i;t&&(i=await e({unpoll:s}));let c=await r?.(i)??n;await nc(c);let m=async()=>{o&&(await e({unpoll:s}),await nc(n),m())};m()})(),s}ct();var GE=new Map,qE=new Map;function nx(e){let t=(o,s)=>({clear:()=>s.delete(o),get:()=>s.get(o),set:a=>s.set(o,a)}),r=t(e,GE),n=t(e,qE);return{clear:()=>{r.clear(),n.clear()},promise:r,response:n}}async function ox(e,{cacheKey:t,cacheTime:r=Number.POSITIVE_INFINITY}){let n=nx(t),o=n.response.get();if(o&&r>0&&Date.now()-o.created.getTime()<r)return o.data;let s=n.promise.get();s||(s=e(),n.promise.set(s));try{let a=await s;return n.response.set({created:new Date,data:a}),a}finally{n.promise.clear()}}var KE=e=>`blockNumber.${e}`;async function Jr(e,{cacheTime:t=e.cacheTime}={}){let r=await ox(()=>e.request({method:"eth_blockNumber"}),{cacheKey:KE(e.uid),cacheTime:t});return BigInt(r)}async function uo(e,{filter:t}){let r="strict"in t&&t.strict,n=await t.request({method:"eth_getFilterChanges",params:[t.id]});if(typeof n[0]=="string")return n;let o=n.map(s=>it(s));return!("abi"in t)||!t.abi?o:Ir({abi:t.abi,logs:o,strict:r})}async function po(e,{filter:t}){return t.request({method:"eth_uninstallFilter",params:[t.id]})}function sx(e,t){let{abi:r,address:n,args:o,batch:s=!0,eventName:a,fromBlock:i,onError:c,onLogs:m,poll:u,pollingInterval:p=e.pollingInterval,strict:f}=t;return(typeof u<"u"?u:typeof i=="bigint"?!0:!(e.transport.type==="webSocket"||e.transport.type==="ipc"||e.transport.type==="fallback"&&(e.transport.transports[0].config.type==="webSocket"||e.transport.transports[0].config.type==="ipc")))?(()=>{let y=f??!1,b=Q(["watchContractEvent",n,o,s,e.uid,a,p,y,i]);return lt(b,{onLogs:m,onError:c},x=>{let v;i!==void 0&&(v=i-1n);let C,k=!1,_=lr(async()=>{if(!k){try{C=await T(e,Hu,"createContractEventFilter")({abi:r,address:n,args:o,eventName:a,strict:y,fromBlock:i})}catch{}k=!0;return}try{let I;if(C)I=await T(e,uo,"getFilterChanges")({filter:C});else{let M=await T(e,Jr,"getBlockNumber")({});v&&v<M?I=await T(e,Xu,"getContractEvents")({abi:r,address:n,args:o,eventName:a,fromBlock:v+1n,toBlock:M,strict:y}):I=[],v=M}if(I.length===0)return;if(s)x.onLogs(I);else for(let M of I)x.onLogs([M])}catch(I){C&&I instanceof jr&&(k=!1),x.onError?.(I)}},{emitOnBegin:!0,interval:p});return async()=>{C&&await T(e,po,"uninstallFilter")({filter:C}),_()}})})():(()=>{let y=f??!1,b=Q(["watchContractEvent",n,o,s,e.uid,a,p,y]),x=!0,v=()=>x=!1;return lt(b,{onLogs:m,onError:c},C=>((async()=>{try{let k=(()=>{if(e.transport.type==="fallback"){let M=e.transport.transports.find(F=>F.config.type==="webSocket"||F.config.type==="ipc");return M?M.value:e.transport}return e.transport})(),_=a?Vr({abi:r,eventName:a,args:o}):[],{unsubscribe:I}=await k.subscribe({params:["logs",{address:n,topics:_}],onData(M){if(!x)return;let F=M.result;try{let{eventName:L,args:j}=Ta({abi:r,data:F.data,topics:F.topics,strict:f}),H=it(F,{args:j,eventName:L});C.onLogs([H])}catch(L){let j,H;if(L instanceof Er||L instanceof Br){if(f)return;j=L.abiItem.name,H=L.abiItem.inputs?.some(de=>!("name"in de&&de.name))}let V=it(F,{args:H?[]:{},eventName:j});C.onLogs([V])}},onError(M){C.onError?.(M)}});v=I,x||v()}catch(k){c?.(k)}})(),()=>v()))})()}Fe();Vt();Fe();K();Gn();Ot();Wi();function Oa(e,{docsPath:t,...r}){let n=(()=>{let o=ro(e,r);return o instanceof rr?e:o})();return new Em(n,{docsPath:t,...r})}ka();jn();Hs();vn();async function ja(e,{serializedTransaction:t}){return e.request({method:"eth_sendRawTransaction",params:[t]},{retryCount:0})}var Dd=new nr(128);async function lo(e,t){let{account:r=e.account,chain:n=e.chain,accessList:o,authorizationList:s,blobs:a,data:i,gas:c,gasPrice:m,maxFeePerBlobGas:u,maxFeePerGas:p,maxPriorityFeePerGas:f,nonce:d,type:g,value:h,...y}=t;if(typeof r>"u")throw new et({docsPath:"/docs/actions/wallet/sendTransaction"});let b=r?W(r):null;try{ut(t);let x=await(async()=>{if(t.to)return t.to;if(t.to!==null&&s&&s.length>0)return await oo({authorization:s[0]}).catch(()=>{throw new w("`to` is required. Could not infer from `authorizationList`.")})})();if(b?.type==="json-rpc"||b===null){let v;n!==null&&(v=await T(e,$t,"getChainId")({}),Gs({currentChainId:v,chain:n}));let C=e.chain?.formatters?.transactionRequest?.format,_=(C||At)({...Hr(y,{format:C}),accessList:o,account:b,authorizationList:s,blobs:a,chainId:v,data:i,gas:c,gasPrice:m,maxFeePerBlobGas:u,maxFeePerGas:p,maxPriorityFeePerGas:f,nonce:d,to:x,type:g,value:h},"sendTransaction"),I=Dd.get(e.uid),M=I?"wallet_sendTransaction":"eth_sendTransaction";try{return await e.request({method:M,params:[_]},{retryCount:0})}catch(F){if(I===!1)throw F;let L=F;if(L.name==="InvalidInputRpcError"||L.name==="InvalidParamsRpcError"||L.name==="MethodNotFoundRpcError"||L.name==="MethodNotSupportedRpcError")return await e.request({method:"wallet_sendTransaction",params:[_]},{retryCount:0}).then(j=>(Dd.set(e.uid,!0),j)).catch(j=>{let H=j;throw H.name==="MethodNotFoundRpcError"||H.name==="MethodNotSupportedRpcError"?(Dd.set(e.uid,!1),L):H});throw L}}if(b?.type==="local"){let v=await T(e,Gr,"prepareTransactionRequest")({account:b,accessList:o,authorizationList:s,blobs:a,chain:n,data:i,gas:c,gasPrice:m,maxFeePerBlobGas:u,maxFeePerGas:p,maxPriorityFeePerGas:f,nonce:d,nonceManager:b.nonceManager,parameters:[...Ji,"sidecars"],type:g,value:h,...y,to:x}),C=n?.serializers?.transaction,k=await b.signTransaction(v,{serializer:C});return await T(e,ja,"sendRawTransaction")({serializedTransaction:k})}throw b?.type==="smart"?new ir({metaMessages:["Consider using the `sendUserOperation` Action instead."],docsPath:"/docs/actions/bundler/sendUserOperation",type:"smart"}):new ir({docsPath:"/docs/actions/wallet/sendTransaction",type:b?.type})}catch(x){throw x instanceof ir?x:Oa(x,{...t,account:b,chain:t.chain||void 0})}}async function Wo(e,t){return Wo.internal(e,lo,"sendTransaction",t)}(function(e){async function t(r,n,o,s){let{abi:a,account:i=r.account,address:c,args:m,dataSuffix:u,functionName:p,...f}=s;if(typeof i>"u")throw new et({docsPath:"/docs/contract/writeContract"});let d=i?W(i):null,g=ke({abi:a,args:m,functionName:p});try{return await T(r,n,o)({data:`${g}${u?u.replace("0x",""):""}`,to:c,account:d,...f})}catch(h){throw Gt(h,{abi:a,address:c,args:m,docsPath:"/docs/contract/writeContract",functionName:p,sender:d?.address})}}e.internal=t})(Wo||(Wo={}));K();K();var bp=class extends w{constructor(t){super(`Call bundle failed with status: ${t.statusCode}`,{name:"BundleFailedError"}),Object.defineProperty(this,"result",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.result=t}};fp();function Jo(e,{delay:t=100,retryCount:r=2,shouldRetry:n=()=>!0}={}){return new Promise((o,s)=>{let a=async({count:i=0}={})=>{let c=async({error:m})=>{let u=typeof t=="function"?t({count:i,error:m}):t;u&&await nc(u),a({count:i+1})};try{let m=await e();o(m)}catch(m){if(i<r&&await n({count:i,error:m}))return c({error:m});s(m)}};a()})}ct();Kn();$o();qe();Fe();K();Sa();Vt();bt();qe();D();var Ud="0x5792579257925792579257925792579257925792579257925792579257925792",zd=E(0,{size:32});async function xp(e,t){let{account:r=e.account,capabilities:n,chain:o=e.chain,experimental_fallback:s,experimental_fallbackDelay:a=32,forceAtomic:i=!1,id:c,version:m="2.0.0"}=t,u=r?W(r):null,p=t.calls.map(f=>{let d=f,g=d.abi?ke({abi:d.abi,functionName:d.functionName,args:d.args}):d.data;return{data:d.dataSuffix&&g?He([g,d.dataSuffix]):g,to:d.to,value:d.value?E(d.value):void 0}});try{let f=await e.request({method:"wallet_sendCalls",params:[{atomicRequired:i,calls:p,capabilities:n,chainId:E(o.id),from:u?.address,id:c,version:m}]},{retryCount:0});return typeof f=="string"?{id:f}:f}catch(f){let d=f;if(s&&(d.name==="MethodNotFoundRpcError"||d.name==="MethodNotSupportedRpcError"||d.name==="UnknownRpcError"||d.details.toLowerCase().includes("does not exist / is not available")||d.details.toLowerCase().includes("missing or invalid. request()")||d.details.toLowerCase().includes("did not match any variant of untagged enum")||d.details.toLowerCase().includes("account upgraded to unsupported contract")||d.details.toLowerCase().includes("eip-7702 not supported")||d.details.toLowerCase().includes("unsupported wc_ method")||d.details.toLowerCase().includes("feature toggled misconfigured")||d.details.toLowerCase().includes("jsonrpcengine: response has no error or result for request"))){if(n&&Object.values(n).some(x=>!x.optional)){let x="non-optional `capabilities` are not supported on fallback to `eth_sendTransaction`.";throw new eo(new w(x,{details:x}))}if(i&&p.length>1){let b="`forceAtomic` is not supported on fallback to `eth_sendTransaction`.";throw new to(new w(b,{details:b}))}let g=[];for(let b of p){let x=lo(e,{account:u,chain:o,data:b.data,to:b.to,value:b.value?be(b.value):void 0});g.push(x),a>0&&await new Promise(v=>setTimeout(v,a))}let h=await Promise.allSettled(g);if(h.every(b=>b.status==="rejected"))throw h[0].reason;let y=h.map(b=>b.status==="fulfilled"?b.value:zd);return{id:He([...y,E(o.id,{size:32}),Ud])}}throw Oa(f,{...t,account:u,chain:t.chain})}}async function vp(e,t){async function r(u){if(u.endsWith(Ud.slice(2))){let f=Ye(jm(u,-64,-32)),d=jm(u,0,-64).slice(2).match(/.{1,64}/g),g=await Promise.all(d.map(y=>zd.slice(2)!==y?e.request({method:"eth_getTransactionReceipt",params:[`0x${y}`]},{dedupe:!0}):void 0)),h=g.some(y=>y===null)?100:g.every(y=>y?.status==="0x1")?200:g.every(y=>y?.status==="0x0")?500:600;return{atomic:!1,chainId:Te(f),receipts:g.filter(Boolean),status:h,version:"2.0.0"}}return e.request({method:"wallet_getCallsStatus",params:[u]})}let{atomic:n=!1,chainId:o,receipts:s,version:a="2.0.0",...i}=await r(t.id),[c,m]=(()=>{let u=i.status;return u>=100&&u<200?["pending",u]:u>=200&&u<300?["success",u]:u>=300&&u<700?["failure",u]:u==="CONFIRMED"?["success",200]:u==="PENDING"?["pending",100]:[void 0,u]})();return{...i,atomic:n,chainId:o?Te(o):void 0,receipts:s?.map(u=>({...u,blockNumber:be(u.blockNumber),gasUsed:be(u.gasUsed),status:Of[u.status]}))??[],statusCode:m,status:c,version:a}}async function wp(e,t){let{id:r,pollingInterval:n=e.pollingInterval,status:o=({statusCode:h})=>h===200||h>=300,retryCount:s=4,retryDelay:a=({count:h})=>~~(1<<h)*200,timeout:i=6e4,throwOnFailure:c=!1}=t,m=Q(["waitForCallsStatus",e.uid,r]),{promise:u,resolve:p,reject:f}=Ua(),d,g=lt(m,{resolve:p,reject:f},h=>{let y=lr(async()=>{let b=x=>{clearTimeout(d),y(),x(),g()};try{let x=await Jo(async()=>{let v=await T(e,vp,"getCallsStatus")({id:r});if(c&&v.status==="failure")throw new bp(v);return v},{retryCount:s,delay:a});if(!o(x))return;b(()=>h.resolve(x))}catch(x){b(()=>h.reject(x))}},{interval:n,emitOnBegin:!0});return y});return d=i?setTimeout(()=>{g(),clearTimeout(d),f(new Od({id:r}))},i):void 0,await u}var Od=class extends w{constructor({id:t}){super(`Timed out while waiting for call bundle with id "${t}" to be confirmed.`,{name:"WaitForCallsStatusTimeoutError"})}};Fe();var Cp=256,Sp;function kp(e=11){if(!Sp||Cp+e>256*2){Sp="",Cp=0;for(let t=0;t<256;t++)Sp+=(256+Math.random()*256|0).toString(16).substring(1)}return Sp.substring(Cp,Cp+++e)}function Ep(e){let{batch:t,chain:r,ccipRead:n,key:o="base",name:s="Base Client",type:a="base"}=e,i=e.experimental_blockTag??(typeof r?.experimental_preconfirmationTime=="number"?"pending":void 0),c=r?.blockTime??12e3,m=Math.min(Math.max(Math.floor(c/2),500),4e3),u=e.pollingInterval??m,p=e.cacheTime??u,f=e.account?W(e.account):void 0,{config:d,request:g,value:h}=e.transport({chain:r,pollingInterval:u}),y={...d,...h},b={account:f,batch:t,cacheTime:p,ccipRead:n,chain:r,key:o,name:s,pollingInterval:u,request:g,transport:y,type:a,uid:kp(),...i?{experimental_blockTag:i}:{}};function x(v){return C=>{let k=C(v);for(let I in b)delete k[I];let _={...v,...k};return Object.assign(_,{extend:x(_)})}}return Object.assign(b,{extend:x(b)})}mo();ao();Vt();Bo();$o();D();K();Yn();function Ha(e){if(!(e instanceof w))return!1;let t=e.walk(r=>r instanceof zo);return t instanceof zo?t.data?.errorName==="HttpError"||t.data?.errorName==="ResolverError"||t.data?.errorName==="ResolverNotContract"||t.data?.errorName==="ResolverNotFound"||t.data?.errorName==="ReverseAddressMismatch"||t.data?.errorName==="UnsupportedResolverProfile":!1}rc();bt();Xe();D();or();zt();function _p(e){if(e.length!==66||e.indexOf("[")!==0||e.indexOf("]")!==65)return null;let t=`0x${e.slice(1,65)}`;return ve(t)?t:null}function oc(e){let t=new Uint8Array(32).fill(0);if(!e)return ne(t);let r=e.split(".");for(let n=r.length-1;n>=0;n-=1){let o=_p(r[n]),s=o?er(o):he(vr(r[n]),"bytes");t=he(He([t,s]),"bytes")}return ne(t)}Xe();function ax(e){return`[${e.slice(2)}]`}Xe();D();or();function ix(e){let t=new Uint8Array(32).fill(0);return e?_p(e)||he(vr(e)):ne(t)}function Va(e){let t=e.replace(/^\.|\.$/gm,"");if(t.length===0)return new Uint8Array(1);let r=new Uint8Array(vr(t).byteLength+2),n=0,o=t.split(".");for(let s=0;s<o.length;s++){let a=vr(o[s]);a.byteLength>255&&(a=vr(ax(ix(o[s])))),r[n]=a.length,r.set(a,n+1),n+=a.length+1}return r.byteLength!==n+1?r.slice(0,n+1):r}async function cx(e,t){let{blockNumber:r,blockTag:n,coinType:o,name:s,gatewayUrls:a,strict:i}=t,{chain:c}=e,m=(()=>{if(t.universalResolverAddress)return t.universalResolverAddress;if(!c)throw new Error("client chain not configured. universalResolverAddress is required.");return ar({blockNumber:r,chain:c,contract:"ensUniversalResolver"})})(),u=c?.ensTlds;if(u&&!u.some(f=>s.endsWith(f)))return null;let p=o!=null?[oc(s),BigInt(o)]:[oc(s)];try{let f=ke({abi:Id,functionName:"addr",args:p}),d={address:m,abi:up,functionName:"resolveWithGateways",args:[ye(Va(s)),f,a??[Sn]],blockNumber:r,blockTag:n},h=await T(e,Ve,"readContract")(d);if(h[0]==="0x")return null;let y=Rt({abi:Id,args:p,functionName:"addr",data:h[0]});return y==="0x"||Ye(y)==="0x00"?null:y}catch(f){if(i)throw f;if(Ha(f))return null;throw f}}K();var Ip=class extends w{constructor({data:t}){super("Unable to extract image from metadata. The metadata may be malformed or invalid.",{metaMessages:["- Metadata must be a JSON object with at least an `image`, `image_url` or `image_data` property.","",`Provided data: ${JSON.stringify(t)}`],name:"EnsAvatarInvalidMetadataError"})}},fo=class extends w{constructor({reason:t}){super(`ENS NFT avatar URI is invalid. ${t}`,{name:"EnsAvatarInvalidNftUriError"})}},Ga=class extends w{constructor({uri:t}){super(`Unable to resolve ENS avatar URI "${t}". The URI may be malformed, invalid, or does not respond with a valid image.`,{name:"EnsAvatarUriResolutionError"})}},Ap=class extends w{constructor({namespace:t}){super(`ENS NFT avatar namespace "${t}" is not supported. Must be "erc721" or "erc1155".`,{name:"EnsAvatarUnsupportedNamespaceError"})}};var WE=/(?<protocol>https?:\/\/[^/]*|ipfs:\/|ipns:\/|ar:\/)?(?<root>\/)?(?<subpath>ipfs\/|ipns\/)?(?<target>[\w\-.]+)(?<subtarget>\/.*)?/,JE=/^(Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,})(\/(?<target>[\w\-.]+))?(?<subtarget>\/.*)?$/,ZE=/^data:([a-zA-Z\-/+]*);base64,([^"].*)/,YE=/^data:([a-zA-Z\-/+]*)?(;[a-zA-Z0-9].*?)?(,)/;async function XE(e){try{let t=await fetch(e,{method:"HEAD"});return t.status===200?t.headers.get("content-type")?.startsWith("image/"):!1}catch(t){return typeof t=="object"&&typeof t.response<"u"||!Object.hasOwn(globalThis,"Image")?!1:new Promise(r=>{let n=new Image;n.onload=()=>{r(!0)},n.onerror=()=>{r(!1)},n.src=e})}}function mx(e,t){return e?e.endsWith("/")?e.slice(0,-1):e:t}function jd({uri:e,gatewayUrls:t}){let r=ZE.test(e);if(r)return{uri:e,isOnChain:!0,isEncoded:r};let n=mx(t?.ipfs,"https://ipfs.io"),o=mx(t?.arweave,"https://arweave.net"),s=e.match(WE),{protocol:a,subpath:i,target:c,subtarget:m=""}=s?.groups||{},u=a==="ipns:/"||i==="ipns/",p=a==="ipfs:/"||i==="ipfs/"||JE.test(e);if(e.startsWith("http")&&!u&&!p){let d=e;return t?.arweave&&(d=e.replace(/https:\/\/arweave.net/g,t?.arweave)),{uri:d,isOnChain:!1,isEncoded:!1}}if((u||p)&&c)return{uri:`${n}/${u?"ipns":"ipfs"}/${c}${m}`,isOnChain:!1,isEncoded:!1};if(a==="ar:/"&&c)return{uri:`${o}/${c}${m||""}`,isOnChain:!1,isEncoded:!1};let f=e.replace(YE,"");if(f.startsWith("<svg")&&(f=`data:image/svg+xml;base64,${btoa(f)}`),f.startsWith("data:")||f.startsWith("{"))return{uri:f,isOnChain:!0,isEncoded:!1};throw new Ga({uri:e})}function Hd(e){if(typeof e!="object"||!("image"in e)&&!("image_url"in e)&&!("image_data"in e))throw new Ip({data:e});return e.image||e.image_url||e.image_data}async function ux({gatewayUrls:e,uri:t}){try{let r=await fetch(t).then(o=>o.json());return await Pp({gatewayUrls:e,uri:Hd(r)})}catch{throw new Ga({uri:t})}}async function Pp({gatewayUrls:e,uri:t}){let{uri:r,isOnChain:n}=jd({uri:t,gatewayUrls:e});if(n||await XE(r))return r;throw new Ga({uri:t})}function px(e){let t=e;t.startsWith("did:nft:")&&(t=t.replace("did:nft:","").replace(/_/g,"/"));let[r,n,o]=t.split("/"),[s,a]=r.split(":"),[i,c]=n.split(":");if(!s||s.toLowerCase()!=="eip155")throw new fo({reason:"Only EIP-155 supported"});if(!a)throw new fo({reason:"Chain ID not found"});if(!c)throw new fo({reason:"Contract address not found"});if(!o)throw new fo({reason:"Token ID not found"});if(!i)throw new fo({reason:"ERC namespace not found"});return{chainID:Number.parseInt(a,10),namespace:i.toLowerCase(),contractAddress:c,tokenID:o}}async function lx(e,{nft:t}){if(t.namespace==="erc721")return Ve(e,{address:t.contractAddress,abi:[{name:"tokenURI",type:"function",stateMutability:"view",inputs:[{name:"tokenId",type:"uint256"}],outputs:[{name:"",type:"string"}]}],functionName:"tokenURI",args:[BigInt(t.tokenID)]});if(t.namespace==="erc1155")return Ve(e,{address:t.contractAddress,abi:[{name:"uri",type:"function",stateMutability:"view",inputs:[{name:"_id",type:"uint256"}],outputs:[{name:"",type:"string"}]}],functionName:"uri",args:[BigInt(t.tokenID)]});throw new Ap({namespace:t.namespace})}async function fx(e,{gatewayUrls:t,record:r}){return/eip155:/i.test(r)?QE(e,{gatewayUrls:t,record:r}):Pp({uri:r,gatewayUrls:t})}async function QE(e,{gatewayUrls:t,record:r}){let n=px(r),o=await lx(e,{nft:n}),{uri:s,isOnChain:a,isEncoded:i}=jd({uri:o,gatewayUrls:t});if(a&&(s.includes("data:application/json;base64,")||s.startsWith("{"))){let m=i?atob(s.replace("data:application/json;base64,","")):s,u=JSON.parse(m);return Pp({uri:Hd(u),gatewayUrls:t})}let c=n.tokenID;return n.namespace==="erc1155"&&(c=c.replace("0x","").padStart(64,"0")),ux({gatewayUrls:t,uri:s.replace(/(?:0x)?{id}/,c)})}mo();ao();Vt();Bo();D();rc();async function Tp(e,t){let{blockNumber:r,blockTag:n,key:o,name:s,gatewayUrls:a,strict:i}=t,{chain:c}=e,m=(()=>{if(t.universalResolverAddress)return t.universalResolverAddress;if(!c)throw new Error("client chain not configured. universalResolverAddress is required.");return ar({blockNumber:r,chain:c,contract:"ensUniversalResolver"})})(),u=c?.ensTlds;if(u&&!u.some(p=>s.endsWith(p)))return null;try{let p={address:m,abi:up,args:[ye(Va(s)),ke({abi:_d,functionName:"text",args:[oc(s),o]}),a??[Sn]],functionName:"resolveWithGateways",blockNumber:r,blockTag:n},d=await T(e,Ve,"readContract")(p);if(d[0]==="0x")return null;let g=Rt({abi:_d,functionName:"text",data:d[0]});return g===""?null:g}catch(p){if(i)throw p;if(Ha(p))return null;throw p}}async function dx(e,{blockNumber:t,blockTag:r,assetGatewayUrls:n,name:o,gatewayUrls:s,strict:a,universalResolverAddress:i}){let c=await T(e,Tp,"getEnsText")({blockNumber:t,blockTag:r,key:"avatar",name:o,universalResolverAddress:i,gatewayUrls:s,strict:a});if(!c)return null;try{return await fx(e,{record:c,gatewayUrls:n})}catch{return null}}mo();Bo();rc();async function gx(e,t){let{address:r,blockNumber:n,blockTag:o,coinType:s=60n,gatewayUrls:a,strict:i}=t,{chain:c}=e,m=(()=>{if(t.universalResolverAddress)return t.universalResolverAddress;if(!c)throw new Error("client chain not configured. universalResolverAddress is required.");return ar({blockNumber:n,chain:c,contract:"ensUniversalResolver"})})();try{let u={address:m,abi:Ub,args:[r,s,a??[Sn]],functionName:"reverseWithGateways",blockNumber:n,blockTag:o},p=T(e,Ve,"readContract"),[f]=await p(u);return f||null}catch(u){if(i)throw u;if(Ha(u))return null;throw u}}Bo();D();async function hx(e,t){let{blockNumber:r,blockTag:n,name:o}=t,{chain:s}=e,a=(()=>{if(t.universalResolverAddress)return t.universalResolverAddress;if(!s)throw new Error("client chain not configured. universalResolverAddress is required.");return ar({blockNumber:r,chain:s,contract:"ensUniversalResolver"})})(),i=s?.ensTlds;if(i&&!i.some(m=>o.endsWith(m)))throw new Error(`${o} is not a valid ENS TLD (${i?.join(", ")}) for chain "${s.name}" (id: ${s.id}).`);let[c]=await T(e,Ve,"readContract")({address:a,abi:[{inputs:[{type:"bytes"}],name:"findResolver",outputs:[{type:"address"},{type:"bytes32"},{type:"uint256"}],stateMutability:"view",type:"function"}],functionName:"findResolver",args:[ye(Va(o))],blockNumber:r,blockTag:n});return c}za();Fe();D();dd();ka();jn();vn();async function $p(e,t){let{account:r=e.account,blockNumber:n,blockTag:o="latest",blobs:s,data:a,gas:i,gasPrice:c,maxFeePerBlobGas:m,maxFeePerGas:u,maxPriorityFeePerGas:p,to:f,value:d,...g}=t,h=r?W(r):void 0;try{ut(t);let b=(typeof n=="bigint"?E(n):void 0)||o,x=e.chain?.formatters?.transactionRequest?.format,C=(x||At)({...Hr(g,{format:x}),account:h,blobs:s,data:a,gas:i,gasPrice:c,maxFeePerBlobGas:m,maxFeePerGas:u,maxPriorityFeePerGas:p,to:f,value:d},"createAccessList"),k=await e.request({method:"eth_createAccessList",params:[C,b]});return{accessList:k.accessList,gasUsed:BigInt(k.gasUsed)}}catch(y){throw zu(y,{...t,account:h,chain:e.chain})}}async function yx(e){let t=no(e,{method:"eth_newBlockFilter"}),r=await e.request({method:"eth_newBlockFilter"});return{id:r,request:t(r),type:"block"}}D();async function Rp(e,{address:t,args:r,event:n,events:o,fromBlock:s,strict:a,toBlock:i}={}){let c=o??(n?[n]:void 0),m=no(e,{method:"eth_newFilter"}),u=[];c&&(u=[c.flatMap(d=>Vr({abi:[d],eventName:d.name,args:r}))],n&&(u=u[0]));let p=await e.request({method:"eth_newFilter",params:[{address:t,fromBlock:typeof s=="bigint"?E(s):s,toBlock:typeof i=="bigint"?E(i):i,...u.length?{topics:u}:{}}]});return{abi:c,args:r,eventName:n?n.name:void 0,fromBlock:s,id:p,request:m(p),strict:!!a,toBlock:i,type:"event"}}async function Mp(e){let t=no(e,{method:"eth_newPendingTransactionFilter"}),r=await e.request({method:"eth_newPendingTransactionFilter"});return{id:r,request:t(r),type:"transaction"}}D();async function bx(e,{address:t,blockNumber:r,blockTag:n=e.experimental_blockTag??"latest"}){let o=typeof r=="bigint"?E(r):void 0,s=await e.request({method:"eth_getBalance",params:[t,o||n]});return BigInt(s)}async function xx(e){let t=await e.request({method:"eth_blobBaseFee"});return BigInt(t)}qe();D();async function vx(e,{blockHash:t,blockNumber:r,blockTag:n="latest"}={}){let o=r!==void 0?E(r):void 0,s;return t?s=await e.request({method:"eth_getBlockTransactionCountByHash",params:[t]},{dedupe:!0}):s=await e.request({method:"eth_getBlockTransactionCountByNumber",params:[o||n]},{dedupe:!!o}),Te(s)}D();async function sc(e,{address:t,blockNumber:r,blockTag:n="latest"}){let o=r!==void 0?E(r):void 0,s=await e.request({method:"eth_getCode",params:[t,o||n]},{dedupe:!!o});if(s!=="0x")return s}K();var Fp=class extends w{constructor({address:t}){super(`No EIP-712 domain found on contract "${t}".`,{metaMessages:["Ensure that:",`- The contract is deployed at the address "${t}".`,"- `eip712Domain()` function exists on the contract.","- `eip712Domain()` function matches signature to ERC-5267 specification."],name:"Eip712DomainNotFoundError"})}};async function wx(e,t){let{address:r,factory:n,factoryData:o}=t;try{let[s,a,i,c,m,u,p]=await T(e,Ve,"readContract")({abi:e_,address:r,functionName:"eip712Domain",factory:n,factoryData:o});return{domain:{name:a,version:i,chainId:Number(c),verifyingContract:m,salt:u},extensions:p,fields:s}}catch(s){let a=s;throw a.name==="ContractFunctionExecutionError"&&a.cause.name==="ContractFunctionZeroDataError"?new Fp({address:r}):a}}var e_=[{inputs:[],name:"eip712Domain",outputs:[{name:"fields",type:"bytes1"},{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"},{name:"salt",type:"bytes32"},{name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"}];D();function Cx(e){return{baseFeePerGas:e.baseFeePerGas.map(t=>BigInt(t)),gasUsedRatio:e.gasUsedRatio,oldestBlock:BigInt(e.oldestBlock),reward:e.reward?.map(t=>t.map(r=>BigInt(r)))}}async function Sx(e,{blockCount:t,blockNumber:r,blockTag:n="latest",rewardPercentiles:o}){let s=typeof r=="bigint"?E(r):void 0,a=await e.request({method:"eth_feeHistory",params:[E(t),s||n,o]},{dedupe:!!s});return Cx(a)}async function kx(e,{filter:t}){let r=t.strict??!1,o=(await t.request({method:"eth_getFilterLogs",params:[t.id]})).map(s=>it(s));return t.abi?Ir({abi:t.abi,logs:o,strict:r}):o}D();qn();Vo();async function Ex({address:e,authorization:t,signature:r}){return ur(Vs(e),await oo({authorization:t,signature:r}))}K();Oo();Sa();D();Hs();var Np=new nr(8192);function _x(e,{enabled:t=!0,id:r}){if(!t||!r)return e();if(Np.get(r))return Np.get(r);let n=e().finally(()=>Np.delete(r));return Np.set(r,n),n}ct();function Ix(e,t={}){return async(r,n={})=>{let{dedupe:o=!1,methods:s,retryDelay:a=150,retryCount:i=3,uid:c}={...t,...n},{method:m}=r;if(s?.exclude?.includes(m))throw new Qn(new Error("method not supported"),{method:m});if(s?.include&&!s.include.includes(m))throw new Qn(new Error("method not supported"),{method:m});let u=o?xr(`${c}.${Q(r)}`):void 0;return _x(()=>Jo(async()=>{try{return await e(r)}catch(p){let f=p;switch(f.code){case sa.code:throw new sa(f);case aa.code:throw new aa(f);case ia.code:throw new ia(f,{method:r.method});case ca.code:throw new ca(f);case xn.code:throw new xn(f);case jr.code:throw new jr(f);case ma.code:throw new ma(f);case ua.code:throw new ua(f);case pa.code:throw new pa(f);case Qn.code:throw new Qn(f,{method:r.method});case jo.code:throw new jo(f);case la.code:throw new la(f);case Ho.code:throw new Ho(f);case fa.code:throw new fa(f);case da.code:throw new da(f);case ga.code:throw new ga(f);case ha.code:throw new ha(f);case ya.code:throw new ya(f);case eo.code:throw new eo(f);case ba.code:throw new ba(f);case xa.code:throw new xa(f);case va.code:throw new va(f);case wa.code:throw new wa(f);case Ca.code:throw new Ca(f);case to.code:throw new to(f);case 5e3:throw new Ho(f);default:throw p instanceof w?p:new Uu(f)}}},{delay:({count:p,error:f})=>{if(f&&f instanceof mr){let d=f?.headers?.get("Retry-After");if(d?.match(/\d/))return Number.parseInt(d,10)*1e3}return~~(1<<p)*a},retryCount:i,shouldRetry:({error:p})=>t_(p)}),{enabled:o,id:u})}}function t_(e){return"code"in e&&typeof e.code=="number"?e.code===-1||e.code===jo.code||e.code===xn.code:e instanceof mr&&e.status?e.status===403||e.status===408||e.status===413||e.status===429||e.status===500||e.status===502||e.status===503||e.status===504:!0}qe();D();Oo();function Ax(e,{errorInstance:t=new Error("timed out"),timeout:r,signal:n}){return new Promise((o,s)=>{(async()=>{let a;try{let i=new AbortController;r>0&&(a=setTimeout(()=>{n?i.abort():s(t)},r)),o(await e({signal:i?.signal||null}))}catch(i){i?.name==="AbortError"&&s(t),s(i)}finally{clearTimeout(a)}})()})}ct();function r_(){return{current:0,take(){return this.current++},reset(){this.current=0}}}var Vd=r_();function Px(e,t={}){return{async request(r){let{body:n,fetchFn:o=t.fetchFn??fetch,onRequest:s=t.onRequest,onResponse:a=t.onResponse,timeout:i=t.timeout??1e4}=r,c={...t.fetchOptions??{},...r.fetchOptions??{}},{headers:m,method:u,signal:p}=c;try{let f=await Ax(async({signal:g})=>{let h={...c,body:Array.isArray(n)?Q(n.map(v=>({jsonrpc:"2.0",id:v.id??Vd.take(),...v}))):Q({jsonrpc:"2.0",id:n.id??Vd.take(),...n}),headers:{"Content-Type":"application/json",...m},method:u||"POST",signal:p||(i>0?g:null)},y=new Request(e,h),b=await s?.(y,h)??{...h,url:e};return await o(b.url??e,b)},{errorInstance:new Ki({body:n,url:e}),timeout:i,signal:!0});a&&await a(f);let d;if(f.headers.get("Content-Type")?.startsWith("application/json"))d=await f.json();else{d=await f.text();try{d=JSON.parse(d||"{}")}catch(g){if(f.ok)throw g;d={error:d}}}if(!f.ok)throw new mr({body:n,details:Q(d.error)||f.statusText,headers:f.headers,status:f.status,url:e});return d}catch(f){throw f instanceof mr||f instanceof Ki?f:new mr({body:n,cause:f,url:e})}}}}or();var Tx=`Ethereum Signed Message:
49
- `;bt();Qt();D();function $x(e){let t=typeof e=="string"?xr(e):typeof e.raw=="string"?e.raw:ne(e.raw),r=xr(`${Tx}${re(t)}`);return He([r,t])}function qa(e,t){return he($x(e),t)}yn();bt();D();or();Ne();Sr();ct();K();var Lp=class extends w{constructor({domain:t}){super(`Invalid domain "${Q(t)}".`,{metaMessages:["Must be a valid EIP-712 domain."]})}},Bp=class extends w{constructor({primaryType:t,types:r}){super(`Invalid primary type \`${t}\` must be one of \`${JSON.stringify(Object.keys(r))}\`.`,{docsPath:"/api/glossary/Errors#typeddatainvalidprimarytypeerror",metaMessages:["Check that the primary type is a key in `types`."]})}},Dp=class extends w{constructor({type:t}){super(`Struct type "${t}" is invalid.`,{metaMessages:["Struct type must not be a Solidity type."],name:"InvalidStructTypeError"})}};jt();Qt();D();ad();ct();function Rx(e){let{domain:t,message:r,primaryType:n,types:o}=e,s=(c,m)=>{let u={...m};for(let p of c){let{name:f,type:d}=p;d==="address"&&(u[f]=u[f].toLowerCase())}return u},a=o.EIP712Domain?t?s(o.EIP712Domain,t):{}:{},i=(()=>{if(n!=="EIP712Domain")return s(o[n],r)})();return Q({domain:a,message:i,primaryType:n,types:o})}function Up(e){let{domain:t,message:r,primaryType:n,types:o}=e,s=(a,i)=>{for(let c of a){let{name:m,type:u}=c,p=i[m],f=u.match($u);if(f&&(typeof p=="number"||typeof p=="bigint")){let[h,y,b]=f;E(p,{signed:y==="int",size:Number.parseInt(b,10)/8})}if(u==="address"&&typeof p=="string"&&!ie(p))throw new ge({address:p});let d=u.match(Wy);if(d){let[h,y]=d;if(y&&re(p)!==Number.parseInt(y,10))throw new ou({expectedSize:Number.parseInt(y,10),givenSize:re(p)})}let g=o[u];g&&(n_(u),s(g,p))}};if(o.EIP712Domain&&t){if(typeof t!="object")throw new Lp({domain:t});s(o.EIP712Domain,t)}if(n!=="EIP712Domain")if(o[n])s(o[n],r);else throw new Bp({primaryType:n,types:o})}function zp({domain:e}){return[typeof e?.name=="string"&&{name:"name",type:"string"},e?.version&&{name:"version",type:"string"},(typeof e?.chainId=="number"||typeof e?.chainId=="bigint")&&{name:"chainId",type:"uint256"},e?.verifyingContract&&{name:"verifyingContract",type:"address"},e?.salt&&{name:"salt",type:"bytes32"}].filter(Boolean)}function n_(e){if(e==="address"||e==="bool"||e==="string"||e.startsWith("bytes")||e.startsWith("uint")||e.startsWith("int"))throw new Dp({type:e})}function Op(e){let{domain:t={},message:r,primaryType:n}=e,o={EIP712Domain:zp({domain:t}),...e.types};Up({domain:t,message:r,primaryType:n,types:o});let s=["0x1901"];return t&&s.push(o_({domain:t,types:o})),n!=="EIP712Domain"&&s.push(Mx({data:r,primaryType:n,types:o})),he(He(s))}function o_({domain:e,types:t}){return Mx({data:e,primaryType:"EIP712Domain",types:t})}function Mx({data:e,primaryType:t,types:r}){let n=Fx({data:e,primaryType:t,types:r});return he(n)}function Fx({data:e,primaryType:t,types:r}){let n=[{type:"bytes32"}],o=[s_({primaryType:t,types:r})];for(let s of r[t]){let[a,i]=Lx({types:r,name:s.name,type:s.type,value:e[s.name]});n.push(a),o.push(i)}return xt(n,o)}function s_({primaryType:e,types:t}){let r=ye(a_({primaryType:e,types:t}));return he(r)}function a_({primaryType:e,types:t}){let r="",n=Nx({primaryType:e,types:t});n.delete(e);let o=[e,...Array.from(n).sort()];for(let s of o)r+=`${s}(${t[s].map(({name:a,type:i})=>`${i} ${a}`).join(",")})`;return r}function Nx({primaryType:e,types:t},r=new Set){let o=e.match(/^\w*/u)?.[0];if(r.has(o)||t[o]===void 0)return r;r.add(o);for(let s of t[o])Nx({primaryType:s.type,types:t},r);return r}function Lx({types:e,name:t,type:r,value:n}){if(e[r]!==void 0)return[{type:"bytes32"},he(Fx({data:n,primaryType:r,types:e}))];if(r==="bytes")return n=`0x${(n.length%2?"0":"")+n.slice(2)}`,[{type:"bytes32"},he(n)];if(r==="string")return[{type:"bytes32"},he(ye(n))];if(r.lastIndexOf("]")===r.length-1){let o=r.slice(0,r.lastIndexOf("[")),s=n.map(a=>Lx({name:t,type:o,types:e,value:a}));return[{type:"bytes32"},he(xt(s.map(([a])=>a),s.map(([,a])=>a)))]}return[{type:r},n]}var lc={};Ff(lc,{InvalidWrappedSignatureError:()=>rl,assert:()=>nl,from:()=>j_,magicBytes:()=>h0,suffixParameters:()=>y0,unwrap:()=>n1,validate:()=>V_,wrap:()=>H_});Hi();io();var jp=class extends Map{constructor(t){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=t}get(t){let r=super.get(t);return super.has(t)&&r!==void 0&&(this.delete(t),super.set(t,r)),r}set(t,r){if(super.set(t,r),this.maxSize&&this.size>this.maxSize){let n=this.keys().next().value;n&&this.delete(n)}return this}};var i_={checksum:new jp(8192)},Hp=i_.checksum;Mt();Wf();io();tt();function Zo(e,t={}){let{as:r=typeof e=="string"?"Hex":"Bytes"}=t,n=Om(Ab(e));return r==="Bytes"?n:Oe(n)}io();Mt();tt();Xi();function Bx(e,t={}){let{compressed:r}=t,{prefix:n,x:o,y:s}=e;if(r===!1||typeof o=="bigint"&&typeof s=="bigint"){if(n!==4)throw new Vp({prefix:n,cause:new Wd});return}if(r===!0||typeof o=="bigint"&&typeof s>"u"){if(n!==3&&n!==2)throw new Vp({prefix:n,cause:new Kd});return}throw new qd({publicKey:e})}function Dx(e){let t=(()=>{if(ec(e))return Ux(e);if(Fb(e))return m_(e);let{prefix:r,x:n,y:o}=e;return typeof n=="bigint"&&typeof o=="bigint"?{prefix:r??4,x:n,y:o}:{prefix:r,x:n}})();return Bx(t),t}function m_(e){return Ux(Oe(e))}function Ux(e){if(e.length!==132&&e.length!==130&&e.length!==68)throw new Jd({publicKey:e});if(e.length===130){let n=BigInt(Pe(e,0,32)),o=BigInt(Pe(e,32,64));return{prefix:4,x:n,y:o}}if(e.length===132){let n=Number(Pe(e,0,1)),o=BigInt(Pe(e,1,33)),s=BigInt(Pe(e,33,65));return{prefix:n,x:o,y:s}}let t=Number(Pe(e,0,1)),r=BigInt(Pe(e,1,33));return{prefix:t,x:r}}function Zd(e,t={}){Bx(e);let{prefix:r,x:n,y:o}=e,{includePrefix:s=!0}=t;return $e(s?me(r,{size:1}):"0x",me(n,{size:32}),typeof o=="bigint"?me(o,{size:32}):"0x")}var qd=class extends B{constructor({publicKey:t}){super(`Value \`${co(t)}\` is not a valid public key.`,{metaMessages:["Public key must contain:","- an `x` and `prefix` value (compressed)","- an `x`, `y`, and `prefix` value (uncompressed)"]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PublicKey.InvalidError"})}},Vp=class extends B{constructor({prefix:t,cause:r}){super(`Prefix "${t}" is invalid.`,{cause:r}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PublicKey.InvalidPrefixError"})}},Kd=class extends B{constructor(){super("Prefix must be 2 or 3 for compressed public keys."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PublicKey.InvalidCompressedPrefixError"})}},Wd=class extends B{constructor(){super("Prefix must be 4 for uncompressed public keys."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PublicKey.InvalidUncompressedPrefixError"})}},Jd=class extends B{constructor({publicKey:t}){super(`Value \`${t}\` is an invalid public key size.`,{metaMessages:["Expected: 33 bytes (compressed + prefix), 64 bytes (uncompressed) or 65 bytes (uncompressed + prefix).",`Received ${Ae(La(t))} bytes.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PublicKey.InvalidSerializedSizeError"})}};var u_=/^0x[a-fA-F0-9]{40}$/;function Yo(e,t={}){let{strict:r=!0}=t;if(!u_.test(e))throw new Gp({address:e,cause:new Yd});if(r){if(e.toLowerCase()===e)return;if(qp(e)!==e)throw new Gp({address:e,cause:new Xd})}}function qp(e){if(Hp.has(e))return Hp.get(e);Yo(e,{strict:!1});let t=e.substring(2).toLowerCase(),r=Zo(Pb(t),{as:"Bytes"}),n=t.split("");for(let s=0;s<40;s+=2)r[s>>1]>>4>=8&&n[s]&&(n[s]=n[s].toUpperCase()),(r[s>>1]&15)>=8&&n[s+1]&&(n[s+1]=n[s+1].toUpperCase());let o=`0x${n.join("")}`;return Hp.set(e,o),o}function p_(e,t={}){let{checksum:r=!1}=t;return Yo(e),r?qp(e):e}function Ox(e,t={}){let r=Zo(`0x${Zd(e).slice(4)}`).substring(26);return p_(`0x${r}`,t)}function Kp(e,t={}){let{strict:r=!0}=t??{};try{return Yo(e,{strict:r}),!0}catch{return!1}}var Gp=class extends B{constructor({address:t,cause:r}){super(`Address "${t}" is invalid.`,{cause:r}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Address.InvalidAddressError"})}},Yd=class extends B{constructor(){super("Address is not a 20 byte (40 hexadecimal character) value."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Address.InvalidInputError"})}},Xd=class extends B{constructor(){super("Address does not match its checksum counterpart."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Address.InvalidChecksumError"})}};io();Mt();tt();io();Mt();tt();var jx=/^(.*)\[([0-9]*)\]$/,Hx=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,Jp=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/,WJ=2n**(8n-1n)-1n,JJ=2n**(16n-1n)-1n,ZJ=2n**(24n-1n)-1n,YJ=2n**(32n-1n)-1n,XJ=2n**(40n-1n)-1n,QJ=2n**(48n-1n)-1n,eZ=2n**(56n-1n)-1n,tZ=2n**(64n-1n)-1n,rZ=2n**(72n-1n)-1n,nZ=2n**(80n-1n)-1n,oZ=2n**(88n-1n)-1n,sZ=2n**(96n-1n)-1n,aZ=2n**(104n-1n)-1n,iZ=2n**(112n-1n)-1n,cZ=2n**(120n-1n)-1n,mZ=2n**(128n-1n)-1n,uZ=2n**(136n-1n)-1n,pZ=2n**(144n-1n)-1n,lZ=2n**(152n-1n)-1n,fZ=2n**(160n-1n)-1n,dZ=2n**(168n-1n)-1n,gZ=2n**(176n-1n)-1n,hZ=2n**(184n-1n)-1n,yZ=2n**(192n-1n)-1n,bZ=2n**(200n-1n)-1n,xZ=2n**(208n-1n)-1n,vZ=2n**(216n-1n)-1n,wZ=2n**(224n-1n)-1n,CZ=2n**(232n-1n)-1n,SZ=2n**(240n-1n)-1n,kZ=2n**(248n-1n)-1n,EZ=2n**(256n-1n)-1n,_Z=-(2n**(8n-1n)),IZ=-(2n**(16n-1n)),AZ=-(2n**(24n-1n)),PZ=-(2n**(32n-1n)),TZ=-(2n**(40n-1n)),$Z=-(2n**(48n-1n)),RZ=-(2n**(56n-1n)),MZ=-(2n**(64n-1n)),FZ=-(2n**(72n-1n)),NZ=-(2n**(80n-1n)),LZ=-(2n**(88n-1n)),BZ=-(2n**(96n-1n)),DZ=-(2n**(104n-1n)),UZ=-(2n**(112n-1n)),zZ=-(2n**(120n-1n)),OZ=-(2n**(128n-1n)),jZ=-(2n**(136n-1n)),HZ=-(2n**(144n-1n)),VZ=-(2n**(152n-1n)),GZ=-(2n**(160n-1n)),qZ=-(2n**(168n-1n)),KZ=-(2n**(176n-1n)),WZ=-(2n**(184n-1n)),JZ=-(2n**(192n-1n)),ZZ=-(2n**(200n-1n)),YZ=-(2n**(208n-1n)),XZ=-(2n**(216n-1n)),QZ=-(2n**(224n-1n)),eY=-(2n**(232n-1n)),tY=-(2n**(240n-1n)),rY=-(2n**(248n-1n)),nY=-(2n**(256n-1n)),oY=2n**8n-1n,sY=2n**16n-1n,aY=2n**24n-1n,iY=2n**32n-1n,cY=2n**40n-1n,mY=2n**48n-1n,uY=2n**56n-1n,pY=2n**64n-1n,lY=2n**72n-1n,fY=2n**80n-1n,dY=2n**88n-1n,gY=2n**96n-1n,hY=2n**104n-1n,yY=2n**112n-1n,bY=2n**120n-1n,xY=2n**128n-1n,vY=2n**136n-1n,wY=2n**144n-1n,CY=2n**152n-1n,SY=2n**160n-1n,kY=2n**168n-1n,EY=2n**176n-1n,_Y=2n**184n-1n,IY=2n**192n-1n,AY=2n**200n-1n,PY=2n**208n-1n,TY=2n**216n-1n,$Y=2n**224n-1n,RY=2n**232n-1n,MY=2n**240n-1n,FY=2n**248n-1n,Qd=2n**256n-1n;function Xo(e,t,r){let{checksumAddress:n,staticPosition:o}=r,s=r0(t.type);if(s){let[a,i]=s;return f_(e,{...t,type:i},{checksumAddress:n,length:a,staticPosition:o})}if(t.type==="tuple")return y_(e,t,{checksumAddress:n,staticPosition:o});if(t.type==="address")return l_(e,{checksum:n});if(t.type==="bool")return d_(e);if(t.type.startsWith("bytes"))return g_(e,t,{staticPosition:o});if(t.type.startsWith("uint")||t.type.startsWith("int"))return h_(e,t);if(t.type==="string")return b_(e,{staticPosition:o});throw new Ka(t.type)}var Gx=32,e0=32;function l_(e,t={}){let{checksum:r=!1}=t,n=e.readBytes(32);return[(s=>r?qp(s):s)(Oe(Tb(n,-20))),32]}function f_(e,t,r){let{checksumAddress:n,length:o,staticPosition:s}=r;if(!o){let c=qr(e.readBytes(e0)),m=s+c,u=m+Gx;e.setPosition(m);let p=qr(e.readBytes(Gx)),f=ac(t),d=0,g=[];for(let h=0;h<p;++h){e.setPosition(u+(f?h*32:d));let[y,b]=Xo(e,t,{checksumAddress:n,staticPosition:u});d+=b,g.push(y)}return e.setPosition(s+32),[g,32]}if(ac(t)){let c=qr(e.readBytes(e0)),m=s+c,u=[];for(let p=0;p<o;++p){e.setPosition(m+p*32);let[f]=Xo(e,t,{checksumAddress:n,staticPosition:m});u.push(f)}return e.setPosition(s+32),[u,32]}let a=0,i=[];for(let c=0;c<o;++c){let[m,u]=Xo(e,t,{checksumAddress:n,staticPosition:s+a});a+=u,i.push(m)}return[i,a]}function d_(e){return[Rb(e.readBytes(32),{size:32}),32]}function g_(e,t,{staticPosition:r}){let[n,o]=t.type.split("bytes");if(!o){let a=qr(e.readBytes(32));e.setPosition(r+a);let i=qr(e.readBytes(32));if(i===0)return e.setPosition(r+32),["0x",32];let c=e.readBytes(i);return e.setPosition(r+32),[Oe(c),32]}return[Oe(e.readBytes(Number.parseInt(o,10),32)),32]}function h_(e,t){let r=t.type.startsWith("int"),n=Number.parseInt(t.type.split("int")[1]||"256",10),o=e.readBytes(32);return[n>48?$b(o,{signed:r}):qr(o,{signed:r}),32]}function y_(e,t,r){let{checksumAddress:n,staticPosition:o}=r,s=t.components.length===0||t.components.some(({name:c})=>!c),a=s?[]:{},i=0;if(ac(t)){let c=qr(e.readBytes(e0)),m=o+c;for(let u=0;u<t.components.length;++u){let p=t.components[u];e.setPosition(m+i);let[f,d]=Xo(e,p,{checksumAddress:n,staticPosition:m});i+=d,a[s?u:p?.name]=f}return e.setPosition(o+32),[a,32]}for(let c=0;c<t.components.length;++c){let m=t.components[c],[u,p]=Xo(e,m,{checksumAddress:n,staticPosition:o});a[s?c:m?.name]=u,i+=p}return[a,i]}function b_(e,{staticPosition:t}){let r=qr(e.readBytes(32)),n=t+r;e.setPosition(n);let o=qr(e.readBytes(32));if(o===0)return e.setPosition(t+32),["",32];let s=e.readBytes(o,32),a=Mb(Cd(s));return e.setPosition(t+32),[a,32]}function qx({checksumAddress:e,parameters:t,values:r}){let n=[];for(let o=0;o<t.length;o++)n.push(t0({checksumAddress:e,parameter:t[o],value:r[o]}));return n}function t0({checksumAddress:e=!1,parameter:t,value:r}){let n=t,o=r0(n.type);if(o){let[s,a]=o;return v_(r,{checksumAddress:e,length:s,parameter:{...n,type:a}})}if(n.type==="tuple")return E_(r,{checksumAddress:e,parameter:n});if(n.type==="address")return x_(r,{checksum:e});if(n.type==="bool")return C_(r);if(n.type.startsWith("uint")||n.type.startsWith("int")){let s=n.type.startsWith("int"),[,,a="256"]=Jp.exec(n.type)??[];return S_(r,{signed:s,size:Number(a)})}if(n.type.startsWith("bytes"))return w_(r,{type:n.type});if(n.type==="string")return k_(r);throw new Ka(n.type)}function Zp(e){let t=0;for(let s=0;s<e.length;s++){let{dynamic:a,encoded:i}=e[s];a?t+=32:t+=Ae(i)}let r=[],n=[],o=0;for(let s=0;s<e.length;s++){let{dynamic:a,encoded:i}=e[s];a?(r.push(me(t+o,{size:32})),n.push(i),o+=Ae(i)):r.push(i)}return $e(...r,...n)}function x_(e,t){let{checksum:r=!1}=t;return Yo(e,{strict:r}),{dynamic:!1,encoded:Cn(e.toLowerCase())}}function v_(e,t){let{checksumAddress:r,length:n,parameter:o}=t,s=n===null;if(!Array.isArray(e))throw new Xp(e);if(!s&&e.length!==n)throw new Yp({expectedLength:n,givenLength:e.length,type:`${o.type}[${n}]`});let a=!1,i=[];for(let c=0;c<e.length;c++){let m=t0({checksumAddress:r,parameter:o,value:e[c]});m.dynamic&&(a=!0),i.push(m)}if(s||a){let c=Zp(i);if(s){let m=me(i.length,{size:32});return{dynamic:!0,encoded:i.length>0?$e(m,c):m}}if(a)return{dynamic:!0,encoded:c}}return{dynamic:!1,encoded:$e(...i.map(({encoded:c})=>c))}}function w_(e,{type:t}){let[,r]=t.split("bytes"),n=Ae(e);if(!r){let o=e;return n%32!==0&&(o=Kr(o,Math.ceil((e.length-2)/2/32)*32)),{dynamic:!0,encoded:$e(Cn(me(n,{size:32})),o)}}if(n!==Number.parseInt(r,10))throw new ic({expectedSize:Number.parseInt(r,10),value:e});return{dynamic:!1,encoded:Kr(e)}}function C_(e){if(typeof e!="boolean")throw new B(`Invalid boolean value: "${e}" (type: ${typeof e}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:Cn(ip(e))}}function S_(e,{signed:t,size:r}){if(typeof r=="number"){let n=2n**(BigInt(r)-(t?1n:0n))-1n,o=t?-n-1n:0n;if(e>n||e<o)throw new Qi({max:n.toString(),min:o.toString(),signed:t,size:r/8,value:e.toString()})}return{dynamic:!1,encoded:me(e,{size:32,signed:t})}}function k_(e){let t=Ba(e),r=Math.ceil(Ae(t)/32),n=[];for(let o=0;o<r;o++)n.push(Kr(Pe(t,o*32,(o+1)*32)));return{dynamic:!0,encoded:$e(Kr(me(Ae(t),{size:32})),...n)}}function E_(e,t){let{checksumAddress:r,parameter:n}=t,o=!1,s=[];for(let a=0;a<n.components.length;a++){let i=n.components[a],c=Array.isArray(e)?a:i.name,m=t0({checksumAddress:r,parameter:i,value:e[c]});s.push(m),m.dynamic&&(o=!0)}return{dynamic:o,encoded:o?Zp(s):$e(...s.map(({encoded:a})=>a))}}function r0(e){let t=e.match(/^(.*)\[(\d+)?\]$/);return t?[t[2]?Number(t[2]):null,t[1]]:void 0}function ac(e){let{type:t}=e;if(t==="string"||t==="bytes"||t.endsWith("[]"))return!0;if(t==="tuple")return e.components?.some(ac);let r=r0(e.type);return!!(r&&ac({...e,type:r[1]}))}Mt();var I_={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:Number.POSITIVE_INFINITY,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new o0({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(e){if(e<0||e>this.bytes.length-1)throw new n0({length:this.bytes.length,position:e})},decrementPosition(e){if(e<0)throw new Qp({offset:e});let t=this.position-e;this.assertPosition(t),this.position=t},getReadCount(e){return this.positionReadCount.get(e||this.position)||0},incrementPosition(e){if(e<0)throw new Qp({offset:e});let t=this.position+e;this.assertPosition(t),this.position=t},inspectByte(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectBytes(e,t){let r=t??this.position;return this.assertPosition(r+e-1),this.bytes.subarray(r,r+e)},inspectUint8(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectUint16(e){let t=e??this.position;return this.assertPosition(t+1),this.dataView.getUint16(t)},inspectUint24(e){let t=e??this.position;return this.assertPosition(t+2),(this.dataView.getUint16(t)<<8)+this.dataView.getUint8(t+2)},inspectUint32(e){let t=e??this.position;return this.assertPosition(t+3),this.dataView.getUint32(t)},pushByte(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushBytes(e){this.assertPosition(this.position+e.length-1),this.bytes.set(e,this.position),this.position+=e.length},pushUint8(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushUint16(e){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,e),this.position+=2},pushUint24(e){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,e>>8),this.dataView.setUint8(this.position+2,e&255),this.position+=3},pushUint32(e){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,e),this.position+=4},readByte(){this.assertReadLimit(),this._touch();let e=this.inspectByte();return this.position++,e},readBytes(e,t){this.assertReadLimit(),this._touch();let r=this.inspectBytes(e);return this.position+=t??e,r},readUint8(){this.assertReadLimit(),this._touch();let e=this.inspectUint8();return this.position+=1,e},readUint16(){this.assertReadLimit(),this._touch();let e=this.inspectUint16();return this.position+=2,e},readUint24(){this.assertReadLimit(),this._touch();let e=this.inspectUint24();return this.position+=3,e},readUint32(){this.assertReadLimit(),this._touch();let e=this.inspectUint32();return this.position+=4,e},get remaining(){return this.bytes.length-this.position},setPosition(e){let t=this.position;return this.assertPosition(e),this.position=e,()=>this.position=t},_touch(){if(this.recursiveReadLimit===Number.POSITIVE_INFINITY)return;let e=this.getReadCount();this.positionReadCount.set(this.position,e+1),e>0&&this.recursiveReadCount++}};function el(e,{recursiveReadLimit:t=8192}={}){let r=Object.create(I_);return r.bytes=e,r.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength),r.positionReadCount=new Map,r.recursiveReadLimit=t,r}var Qp=class extends B{constructor({offset:t}){super(`Offset \`${t}\` cannot be negative.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Cursor.NegativeOffsetError"})}},n0=class extends B{constructor({length:t,position:r}){super(`Position \`${r}\` is out of bounds (\`0 < position < ${t}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Cursor.PositionOutOfBoundsError"})}},o0=class extends B{constructor({count:t,limit:r}){super(`Recursive read limit of \`${r}\` exceeded (recursive read count: \`${t}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Cursor.RecursiveReadLimitExceededError"})}};function Wa(e,t,r={}){let{as:n="Array",checksumAddress:o=!1}=r,s=typeof t=="string"?Na(t):t,a=el(s);if(pr(s)===0&&e.length>0)throw new i0;if(pr(s)&&pr(s)<32)throw new a0({data:typeof t=="string"?t:Oe(t),parameters:e,size:pr(s)});let i=0,c=n==="Array"?[]:{};for(let m=0;m<e.length;++m){let u=e[m];a.setPosition(i);let[p,f]=Xo(a,u,{checksumAddress:o,staticPosition:0});i+=f,n==="Array"?c.push(p):c[u.name??m]=p}return c}function go(e,t,r){let{checksumAddress:n=!1}=r??{};if(e.length!==t.length)throw new tl({expectedLength:e.length,givenLength:t.length});let o=qx({checksumAddress:n,parameters:e,values:t}),s=Zp(o);return s.length===0?"0x":s}function s0(e,t){if(e.length!==t.length)throw new tl({expectedLength:e.length,givenLength:t.length});let r=[];for(let n=0;n<e.length;n++){let o=e[n],s=t[n];r.push(s0.encode(o,s))}return $e(...r)}(function(e){function t(r,n,o=!1){if(r==="address"){let c=n;return Yo(c),Cn(c.toLowerCase(),o?32:0)}if(r==="string")return Ba(n);if(r==="bytes")return n;if(r==="bool")return Cn(ip(n),o?32:1);let s=r.match(Jp);if(s){let[c,m,u="256"]=s,p=Number.parseInt(u,10)/8;return me(n,{size:o?32:p,signed:m==="int"})}let a=r.match(Hx);if(a){let[c,m]=a;if(Number.parseInt(m,10)!==(n.length-2)/2)throw new ic({expectedSize:Number.parseInt(m,10),value:n});return Kr(n,o?32:0)}let i=r.match(jx);if(i&&Array.isArray(n)){let[c,m]=i,u=[];for(let p=0;p<n.length;p++)u.push(t(m,n[p],!0));return u.length===0?"0x":$e(...u)}throw new Ka(r)}e.encode=t})(s0||(s0={}));function mc(e){return Array.isArray(e)&&typeof e[0]=="string"?Pu(e):typeof e=="string"?Pu(e):e}var a0=class extends B{constructor({data:t,parameters:r,size:n}){super(`Data size of ${n} bytes is too small for given parameters.`,{metaMessages:[`Params: (${hn(r)})`,`Data: ${t} (${n} bytes)`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiParameters.DataSizeTooSmallError"})}},i0=class extends B{constructor(){super('Cannot decode zero data ("0x") with ABI parameters.'),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiParameters.ZeroDataError"})}},Yp=class extends B{constructor({expectedLength:t,givenLength:r,type:n}){super(`Array length mismatch for type \`${n}\`. Expected: \`${t}\`. Given: \`${r}\`.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiParameters.ArrayLengthMismatchError"})}},ic=class extends B{constructor({expectedSize:t,value:r}){super(`Size of bytes "${r}" (bytes${Ae(r)}) does not match expected size (bytes${t}).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiParameters.BytesSizeMismatchError"})}},tl=class extends B{constructor({expectedLength:t,givenLength:r}){super(["ABI encoding parameters/values length mismatch.",`Expected length (parameters): ${t}`,`Given length (values): ${r}`].join(`
50
- `)),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiParameters.LengthMismatchError"})}},Xp=class extends B{constructor(t){super(`Value \`${t}\` is not a valid array.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiParameters.InvalidArrayError"})}},Ka=class extends B{constructor(t){super(`Type \`${t}\` is not a valid ABI Type.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiParameters.InvalidTypeError"})}};tt();io();Mt();tt();function A_(e,t){let{as:r}=t,n=Jx(e),o=el(new Uint8Array(n.length));return n.encode(o),r==="Hex"?Oe(o.bytes):o.bytes}function Wx(e,t={}){let{as:r="Hex"}=t;return A_(e,{as:r})}function Jx(e){return Array.isArray(e)?P_(e.map(t=>Jx(t))):T_(e)}function P_(e){let t=e.reduce((o,s)=>o+s.length,0),r=Zx(t);return{length:t<=55?1+t:1+r+t,encode(o){t<=55?o.pushByte(192+t):(o.pushByte(247+r),r===1?o.pushUint8(t):r===2?o.pushUint16(t):r===3?o.pushUint24(t):o.pushUint32(t));for(let{encode:s}of e)s(o)}}}function T_(e){let t=typeof e=="string"?Na(e):e,r=Zx(t.length);return{length:t.length===1&&t[0]<128?1:t.length<=55?1+t.length:1+r+t.length,encode(o){t.length===1&&t[0]<128?o.pushBytes(t):t.length<=55?(o.pushByte(128+t.length),o.pushBytes(t)):(o.pushByte(183+r),r===1?o.pushUint8(t.length):r===2?o.pushUint16(t.length):r===3?o.pushUint24(t.length):o.pushUint32(t.length),o.pushBytes(t))}}}function Zx(e){if(e<2**8)return 1;if(e<2**16)return 2;if(e<2**24)return 3;if(e<2**32)return 4;throw new B("Length is too large.")}import{secp256k1 as DY}from"@noble/curves/secp256k1";Mt();tt();Xi();function l0(e,t={}){let{recovered:r}=t;if(typeof e.r>"u")throw new uc({signature:e});if(typeof e.s>"u")throw new uc({signature:e});if(r&&typeof e.yParity>"u")throw new uc({signature:e});if(e.r<0n||e.r>Qd)throw new m0({value:e.r});if(e.s<0n||e.s>Qd)throw new u0({value:e.s});if(typeof e.yParity=="number"&&e.yParity!==0&&e.yParity!==1)throw new pc({value:e.yParity})}function R_(e){return Yx(Oe(e))}function Yx(e){if(e.length!==130&&e.length!==132)throw new c0({signature:e});let t=BigInt(Pe(e,0,32)),r=BigInt(Pe(e,32,64)),n=(()=>{let o=+`0x${e.slice(130)}`;if(!Number.isNaN(o))try{return g0(o)}catch{throw new pc({value:o})}})();return typeof n>"u"?{r:t,s:r}:{r:t,s:r,yParity:n}}function f0(e){if(!(typeof e.r>"u")&&!(typeof e.s>"u"))return d0(e)}function d0(e){let t=typeof e=="string"?Yx(e):e instanceof Uint8Array?R_(e):typeof e.r=="string"?F_(e):e.v?M_(e):{r:e.r,s:e.s,...typeof e.yParity<"u"?{yParity:e.yParity}:{}};return l0(t),t}function M_(e){return{r:e.r,s:e.s,yParity:g0(e.v)}}function F_(e){let t=(()=>{let r=e.v?Number(e.v):void 0,n=e.yParity?Number(e.yParity):void 0;if(typeof r=="number"&&typeof n!="number"&&(n=g0(r)),typeof n!="number")throw new pc({value:e.yParity});return n})();return{r:BigInt(e.r),s:BigInt(e.s),yParity:t}}function Xx(e){let{r:t,s:r,yParity:n}=e;return[n?"0x01":"0x",t===0n?"0x":kd(me(t)),r===0n?"0x":kd(me(r))]}function g0(e){if(e===0||e===27)return 0;if(e===1||e===28)return 1;if(e>=35)return e%2===0?1:0;throw new p0({value:e})}var c0=class extends B{constructor({signature:t}){super(`Value \`${t}\` is an invalid signature size.`,{metaMessages:["Expected: 64 bytes or 65 bytes.",`Received ${Ae(La(t))} bytes.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.InvalidSerializedSizeError"})}},uc=class extends B{constructor({signature:t}){super(`Signature \`${co(t)}\` is missing either an \`r\`, \`s\`, or \`yParity\` property.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.MissingPropertiesError"})}},m0=class extends B{constructor({value:t}){super(`Value \`${t}\` is an invalid r value. r must be a positive integer less than 2^256.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.InvalidRError"})}},u0=class extends B{constructor({value:t}){super(`Value \`${t}\` is an invalid s value. s must be a positive integer less than 2^256.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.InvalidSError"})}},pc=class extends B{constructor({value:t}){super(`Value \`${t}\` is an invalid y-parity value. Y-parity must be 0 or 1.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.InvalidYParityError"})}},p0=class extends B{constructor({value:t}){super(`Value \`${t}\` is an invalid v value. v must be 27, 28 or >=35.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Signature.InvalidVError"})}};function e1(e,t={}){return typeof e.chainId=="string"?N_(e):{...e,...t.signature}}function N_(e){let{address:t,chainId:r,nonce:n}=e,o=f0(e);return{address:t,chainId:Number(r),nonce:BigInt(n),...o}}function t1(e){return L_(e,{presign:!0})}function L_(e,t={}){let{presign:r}=t;return Zo($e("0x05",Wx(B_(r?{address:e.address,chainId:e.chainId,nonce:e.nonce}:e))))}function B_(e){let{address:t,chainId:r,nonce:n}=e,o=f0(e);return[r?me(r):"0x",t,n?me(n):"0x",...o?Xx(o):[]]}Mt();tt();import{secp256k1 as U_}from"@noble/curves/secp256k1";tt();function r1(e){return Ox(z_(e))}function z_(e){let{payload:t,signature:r}=e,{r:n,s:o,yParity:s}=r,i=new U_.Signature(BigInt(n),BigInt(o)).addRecoveryBit(s).recoverPublicKey(La(t).substring(2));return Dx(i)}var h0="0x8010801080108010801080108010801080108010801080108010801080108010",y0=mc("(uint256 chainId, address delegation, uint256 nonce, uint8 yParity, uint256 r, uint256 s), address to, bytes data");function nl(e){if(typeof e=="string"){if(Pe(e,-32)!==h0)throw new rl(e)}else l0(e.authorization)}function j_(e){return typeof e=="string"?n1(e):e}function n1(e){nl(e);let t=op(Pe(e,-64,-32)),r=Pe(e,-t-64,-64),n=Pe(e,0,-t-64),[o,s,a]=Wa(y0,r);return{authorization:e1({address:o.delegation,chainId:Number(o.chainId),nonce:o.nonce,yParity:o.yParity,r:o.r,s:o.s}),signature:n,...a&&a!=="0x"?{data:a,to:s}:{}}}function H_(e){let{data:t,signature:r}=e;nl(e);let n=r1({payload:t1(e.authorization),signature:d0(e.authorization)}),o=go(y0,[{...e.authorization,delegation:e.authorization.address,chainId:BigInt(e.authorization.chainId)},e.to??n,t??"0x"]),s=me(Ae(o),{size:32});return $e(r,o,s,h0)}function V_(e){try{return nl(e),!0}catch{return!1}}var rl=class extends B{constructor(t){super(`Value \`${t}\` is an invalid ERC-8010 wrapped signature.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SignatureErc8010.InvalidWrappedSignatureError"})}};bm();K();var ol=class extends w{constructor({value:t}){super(`Number \`${t}\` is not a valid decimal number.`,{name:"InvalidDecimalNumberError"})}};function o1(e,t){if(!/^(-?)([0-9]*)\.?([0-9]*)$/.test(e))throw new ol({value:e});let[r,n="0"]=e.split("."),o=r.startsWith("-");if(o&&(r=r.slice(1)),n=n.replace(/(0+)$/,""),t===0)Math.round(+`.${n}`)===1&&(r=`${BigInt(r)+1n}`),n="";else if(n.length>t){let[s,a,i]=[n.slice(0,t-1),n.slice(t-1,t),n.slice(t)],c=Math.round(+`${a}.${i}`);c>9?n=`${BigInt(s)+BigInt(1)}0`.padStart(s.length+1,"0"):n=`${s}${c}`,n.length>t&&(n=n.slice(1),r=`${BigInt(r)+1n}`),n=n.slice(0,t)}else n=n.padEnd(t,"0");return BigInt(`${o?"-":""}${r}${n}`)}function Qo(e,t="wei"){return o1(e,ym[t])}function G_(e){return e.map(t=>({...t,value:BigInt(t.value)}))}function s1(e){return{...e,balance:e.balance?BigInt(e.balance):void 0,nonce:e.nonce?Te(e.nonce):void 0,storageProof:e.storageProof?G_(e.storageProof):void 0}}async function a1(e,{address:t,blockNumber:r,blockTag:n,storageKeys:o}){let s=n??"latest",a=r!==void 0?E(r):void 0,i=await e.request({method:"eth_getProof",params:[t,o,a||s]});return s1(i)}D();async function i1(e,{address:t,blockNumber:r,blockTag:n="latest",slot:o}){let s=r!==void 0?E(r):void 0;return await e.request({method:"eth_getStorageAt",params:[t,o,s||n]})}Ot();D();async function Ja(e,{blockHash:t,blockNumber:r,blockTag:n,hash:o,index:s}){let a=n||"latest",i=r!==void 0?E(r):void 0,c=null;if(o?c=await e.request({method:"eth_getTransactionByHash",params:[o]},{dedupe:!0}):t?c=await e.request({method:"eth_getTransactionByBlockHashAndIndex",params:[t,E(s)]},{dedupe:!0}):(i||a)&&(c=await e.request({method:"eth_getTransactionByBlockNumberAndIndex",params:[i||a,E(s)]},{dedupe:!!i})),!c)throw new _s({blockHash:t,blockNumber:r,blockTag:a,hash:o,index:s});return(e.chain?.formatters?.transaction?.format||Ro)(c,"getTransaction")}async function c1(e,{hash:t,transactionReceipt:r}){let[n,o]=await Promise.all([T(e,Jr,"getBlockNumber")({}),t?T(e,Ja,"getTransaction")({hash:t}):void 0]),s=r?.blockNumber||o?.blockNumber;return s?n-s+1n:0n}Ot();async function Za(e,{hash:t}){let r=await e.request({method:"eth_getTransactionReceipt",params:[t]},{dedupe:!0});if(!r)throw new Is({hash:t});return(e.chain?.formatters?.transactionReceipt?.format||Ai)(r,"getTransactionReceipt")}mo();tc();Ne();K();Yn();ao();Vt();Bo();async function m1(e,t){let{account:r,authorizationList:n,allowFailure:o=!0,blockNumber:s,blockOverrides:a,blockTag:i,stateOverride:c}=t,m=t.contracts,{batchSize:u=t.batchSize??1024,deployless:p=t.deployless??!1}=typeof e.batch?.multicall=="object"?e.batch.multicall:{},f=(()=>{if(t.multicallAddress)return t.multicallAddress;if(p)return null;if(e.chain)return ar({blockNumber:s,chain:e.chain,contract:"multicall3"});throw new Error("client chain not configured. multicallAddress is required.")})(),d=[[]],g=0,h=0;for(let x=0;x<m.length;x++){let{abi:v,address:C,args:k,functionName:_}=m[x];try{let I=ke({abi:v,args:k,functionName:_});h+=(I.length-2)/2,u>0&&h>u&&d[g].length>0&&(g++,h=(I.length-2)/2,d[g]=[]),d[g]=[...d[g],{allowFailure:!0,callData:I,target:C}]}catch(I){let M=Gt(I,{abi:v,address:C,args:k,docsPath:"/docs/contract/multicall",functionName:_,sender:r});if(!o)throw M;d[g]=[...d[g],{allowFailure:!0,callData:"0x",target:C}]}}let y=await Promise.allSettled(d.map(x=>T(e,Ve,"readContract")({...f===null?{code:Da}:{address:f},abi:qo,account:r,args:[x],authorizationList:n,blockNumber:s,blockOverrides:a,blockTag:i,functionName:"aggregate3",stateOverride:c}))),b=[];for(let x=0;x<y.length;x++){let v=y[x];if(v.status==="rejected"){if(!o)throw v.reason;for(let k=0;k<d[x].length;k++)b.push({status:"failure",error:v.reason,result:void 0});continue}let C=v.value;for(let k=0;k<C.length;k++){let{returnData:_,success:I}=C[k],{callData:M}=d[x][k],{abi:F,address:L,functionName:j,args:H}=m[b.length];try{if(M==="0x")throw new cr;if(!I)throw new Or({data:_});let V=Rt({abi:F,args:H,data:_,functionName:j});b.push(o?{result:V,status:"success"}:V)}catch(V){let de=Gt(V,{abi:F,address:L,args:H,docsPath:"/docs/contract/multicall",functionName:j});if(!o)throw de;b.push({error:de,result:void 0,status:"failure"})}}}if(b.length!==m.length)throw new w("multicall results mismatch");return b}Ed();Fe();Ne();Yn();Gn();ao();Vt();bt();D();Wi();jn();Wu();vn();async function fc(e,t){let{blockNumber:r,blockTag:n=e.experimental_blockTag??"latest",blocks:o,returnFullTransactions:s,traceTransfers:a,validation:i}=t;try{let c=[];for(let f of o){let d=f.blockOverrides?cp(f.blockOverrides):void 0,g=f.calls.map(y=>{let b=y,x=b.account?W(b.account):void 0,v=b.abi?ke(b):b.data,C={...b,account:x,data:b.dataSuffix?He([v||"0x",b.dataSuffix]):v,from:b.from??x?.address};return ut(C),At(C)}),h=f.stateOverrides?Ea(f.stateOverrides):void 0;c.push({blockOverrides:d,calls:g,stateOverrides:h})}let u=(typeof r=="bigint"?E(r):void 0)||n;return(await e.request({method:"eth_simulateV1",params:[{blockStateCalls:c,returnFullTransactions:s,traceTransfers:a,validation:i},u]})).map((f,d)=>({...Ii(f),calls:f.calls.map((g,h)=>{let{abi:y,args:b,functionName:x,to:v}=o[d].calls[h],C=g.error?.data??g.returnData,k=BigInt(g.gasUsed),_=g.logs?.map(L=>it(L)),I=g.status==="0x1"?"success":"failure",M=y&&I==="success"&&C!=="0x"?Rt({abi:y,data:C,functionName:x}):null,F=(()=>{if(I==="success")return;let L;if(g.error?.data==="0x"?L=new cr:g.error&&(L=new Or(g.error)),!!L)return Gt(L,{abi:y??[],address:v??"0x",args:b,functionName:x??"<unknown>"})})();return{data:C,gasUsed:k,logs:_,status:I,...I==="success"?{result:M}:{error:F}}})}))}catch(c){let m=c,u=ro(m,{});throw u instanceof rr?m:u}}Hi();Mt();tt();Mt();function al(e){let t=!0,r="",n=0,o="",s=!1;for(let a=0;a<e.length;a++){let i=e[a];if(["(",")",","].includes(i)&&(t=!0),i==="("&&n++,i===")"&&n--,!!t){if(n===0){if(i===" "&&["event","function","error",""].includes(o))o="";else if(o+=i,i===")"){s=!0;break}continue}if(i===" "){e[a-1]!==","&&r!==","&&r!==",("&&(r="",t=!1);continue}o+=i,r+=i}}if(!s)throw new B("Unable to normalize signature.");return o}function sl(e,t){let r=typeof e,n=t.type;switch(n){case"address":return Kp(e,{strict:!1});case"bool":return r==="boolean";case"function":return r==="string";case"string":return r==="string";default:return n==="tuple"&&"components"in t?Object.values(t.components).every((o,s)=>sl(Object.values(e)[s],o)):/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(n)?r==="number"||r==="bigint":/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(n)?r==="string"||e instanceof Uint8Array:/[a-z]+[1-9]{0,3}(\[[0-9]{0,}\])+$/.test(n)?Array.isArray(e)&&e.every(o=>sl(o,{...t,type:n.replace(/(\[[0-9]{0,}\])$/,"")})):!1}}function b0(e,t,r){for(let n in e){let o=e[n],s=t[n];if(o.type==="tuple"&&s.type==="tuple"&&"components"in o&&"components"in s)return b0(o.components,s.components,r[n]);let a=[o.type,s.type];if(a.includes("address")&&a.includes("bytes20")?!0:a.includes("address")&&a.includes("string")?Kp(r[n],{strict:!1}):a.includes("address")&&a.includes("bytes")?Kp(r[n],{strict:!1}):!1)return a}}function il(e,t={}){let{prepare:r=!0}=t,n=Array.isArray(e)?Au(e):typeof e=="string"?Au(e):e;return{...n,...r?{hash:Ya(n)}:{}}}function dc(e,t,r){let{args:n=[],prepare:o=!0}=r??{},s=ec(t,{strict:!1}),a=e.filter(m=>s?m.type==="function"||m.type==="error"?v0(m)===Pe(t,0,4):m.type==="event"?Ya(m)===t:!1:"name"in m&&m.name===t);if(a.length===0)throw new ho({name:t});if(a.length===1)return{...a[0],...o?{hash:Ya(a[0])}:{}};let i;for(let m of a){if(!("inputs"in m))continue;if(!n||n.length===0){if(!m.inputs||m.inputs.length===0)return{...m,...o?{hash:Ya(m)}:{}};continue}if(!m.inputs||m.inputs.length===0||m.inputs.length!==n.length)continue;if(n.every((p,f)=>{let d="inputs"in m&&m.inputs[f];return d?sl(p,d):!1})){if(i&&"inputs"in i&&i.inputs){let p=b0(m.inputs,i.inputs,n);if(p)throw new x0({abiItem:m,type:p[0]},{abiItem:i,type:p[1]})}i=m}}let c=(()=>{if(i)return i;let[m,...u]=a;return{...m,overloads:u}})();if(!c)throw new ho({name:t});return{...c,...o?{hash:Ya(c)}:{}}}function v0(...e){let t=(()=>{if(Array.isArray(e[0])){let[r,n]=e;return dc(r,n)}return e[0]})();return Pe(Ya(t),0,4)}function K_(...e){let t=(()=>{if(Array.isArray(e[0])){let[n,o]=e;return dc(n,o)}return e[0]})(),r=typeof t=="string"?t:Do(t);return al(r)}function Ya(...e){let t=(()=>{if(Array.isArray(e[0])){let[r,n]=e;return dc(r,n)}return e[0]})();return typeof t!="string"&&"hash"in t&&t.hash?t.hash:Zo(Ba(K_(t)))}var x0=class extends B{constructor(t,r){super("Found ambiguous types in overloaded ABI Items.",{metaMessages:[`\`${t.type}\` in \`${al(Do(t.abiItem))}\`, and`,`\`${r.type}\` in \`${al(Do(r.abiItem))}\``,"","These types encode differently and cannot be distinguished at runtime.","Remove one of the ambiguous items in the ABI."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiItem.AmbiguityError"})}},ho=class extends B{constructor({name:t,data:r,type:n="item"}){let o=t?` with name "${t}"`:r?` with data "${r}"`:"";super(`ABI ${n}${o} not found.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiItem.NotFoundError"})}};tt();function p1(...e){let[t,r]=(()=>{if(Array.isArray(e[0])){let[s,a]=e;return[W_(s),a]}return e})(),{bytecode:n,args:o}=r;return $e(n,t.inputs?.length&&o?.length?go(t.inputs,o):"0x")}function l1(e){return il(e)}function W_(e){let t=e.find(r=>r.type==="constructor");if(!t)throw new ho({name:"constructor"});return t}tt();function d1(...e){let[t,r=[]]=(()=>{if(Array.isArray(e[0])){let[m,u,p]=e;return[f1(m,u,{args:p}),p]}let[i,c]=e;return[i,c]})(),{overloads:n}=t,o=n?f1([t,...n],t.name,{args:r}):t,s=Z_(o),a=r.length>0?go(o.inputs,r):void 0;return a?$e(s,a):s}function es(e,t={}){return il(e,t)}function f1(e,t,r){let n=dc(e,t,r);if(n.type!=="function")throw new ho({name:t,type:"function"});return n}function Z_(e){return v0(e)}Fe();var g1="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",Ar="0x0000000000000000000000000000000000000000";tc();K();Vt();var X_="0x6080604052348015600e575f80fd5b5061016d8061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063f8b2cb4f1461002d575b5f80fd5b610047600480360381019061004291906100db565b61005d565b604051610054919061011e565b60405180910390f35b5f8173ffffffffffffffffffffffffffffffffffffffff16319050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100aa82610081565b9050919050565b6100ba816100a0565b81146100c4575f80fd5b50565b5f813590506100d5816100b1565b92915050565b5f602082840312156100f0576100ef61007d565b5b5f6100fd848285016100c7565b91505092915050565b5f819050919050565b61011881610106565b82525050565b5f6020820190506101315f83018461010f565b9291505056fea26469706673582212203b9fe929fe995c7cf9887f0bdba8a36dd78e8b73f149b17d2d9ad7cd09d2dc6264736f6c634300081a0033";async function h1(e,t){let{blockNumber:r,blockTag:n,calls:o,stateOverrides:s,traceAssetChanges:a,traceTransfers:i,validation:c}=t,m=t.account?W(t.account):void 0;if(a&&!m)throw new w("`account` is required when `traceAssetChanges` is true");let u=m?p1(l1("constructor(bytes, bytes)"),{bytecode:pp,args:[X_,d1(es("function getBalance(address)"),[m.address])]}):void 0,p=a?await Promise.all(t.calls.map(async U=>{if(!U.data&&!U.abi)return;let{accessList:Ue}=await $p(e,{account:m.address,...U,data:U.abi?ke(U):U.data});return Ue.map(({address:Nr,storageKeys:Dn})=>Dn.length>0?Nr:null)})).then(U=>U.flat().filter(Boolean)):[],f=await fc(e,{blockNumber:r,blockTag:n,blocks:[...a?[{calls:[{data:u}],stateOverrides:s},{calls:p.map((U,Ue)=>({abi:[es("function balanceOf(address) returns (uint256)")],functionName:"balanceOf",args:[m.address],to:U,from:Ar,nonce:Ue})),stateOverrides:[{address:Ar,nonce:0}]}]:[],{calls:[...o,{}].map(U=>({...U,from:m?.address})),stateOverrides:s},...a?[{calls:[{data:u}]},{calls:p.map((U,Ue)=>({abi:[es("function balanceOf(address) returns (uint256)")],functionName:"balanceOf",args:[m.address],to:U,from:Ar,nonce:Ue})),stateOverrides:[{address:Ar,nonce:0}]},{calls:p.map((U,Ue)=>({to:U,abi:[es("function decimals() returns (uint256)")],functionName:"decimals",from:Ar,nonce:Ue})),stateOverrides:[{address:Ar,nonce:0}]},{calls:p.map((U,Ue)=>({to:U,abi:[es("function tokenURI(uint256) returns (string)")],functionName:"tokenURI",args:[0n],from:Ar,nonce:Ue})),stateOverrides:[{address:Ar,nonce:0}]},{calls:p.map((U,Ue)=>({to:U,abi:[es("function symbol() returns (string)")],functionName:"symbol",from:Ar,nonce:Ue})),stateOverrides:[{address:Ar,nonce:0}]}]:[]],traceTransfers:i,validation:c}),d=a?f[2]:f[0],[g,h,,y,b,x,v,C]=a?f:[],{calls:k,..._}=d,I=k.slice(0,-1)??[],M=g?.calls??[],F=h?.calls??[],L=[...M,...F].map(U=>U.status==="success"?be(U.data):null),j=y?.calls??[],H=b?.calls??[],V=[...j,...H].map(U=>U.status==="success"?be(U.data):null),de=(x?.calls??[]).map(U=>U.status==="success"?U.result:null),Ie=(C?.calls??[]).map(U=>U.status==="success"?U.result:null),Me=(v?.calls??[]).map(U=>U.status==="success"?U.result:null),te=[];for(let[U,Ue]of V.entries()){let Nr=L[U];if(typeof Ue!="bigint"||typeof Nr!="bigint")continue;let Dn=de[U-1],we=Ie[U-1],Un=Me[U-1],br=U===0?{address:g1,decimals:18,symbol:"ETH"}:{address:p[U-1],decimals:Un||Dn?Number(Dn??1):void 0,symbol:we??void 0};te.some(Rf=>Rf.token.address===br.address)||te.push({token:br,value:{pre:Nr,post:Ue,diff:Ue-Nr}})}return{assetChanges:te,block:_,results:I}}var gc={};Ff(gc,{InvalidWrappedSignatureError:()=>cl,assert:()=>C0,from:()=>tI,magicBytes:()=>w0,universalSignatureValidatorAbi:()=>eI,universalSignatureValidatorBytecode:()=>Q_,unwrap:()=>y1,validate:()=>nI,wrap:()=>rI});Mt();tt();var w0="0x6492649264926492649264926492649264926492649264926492649264926492",Q_="0x608060405234801561001057600080fd5b5060405161069438038061069483398101604081905261002f9161051e565b600061003c848484610048565b9050806000526001601ff35b60007f64926492649264926492649264926492649264926492649264926492649264926100748361040c565b036101e7576000606080848060200190518101906100929190610577565b60405192955090935091506000906001600160a01b038516906100b69085906105dd565b6000604051808303816000865af19150503d80600081146100f3576040519150601f19603f3d011682016040523d82523d6000602084013e6100f8565b606091505b50509050876001600160a01b03163b60000361016057806101605760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90610190908b9087906004016105f9565b602060405180830381865afa1580156101ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d19190610633565b6001600160e01b03191614945050505050610405565b6001600160a01b0384163b1561027a57604051630b135d3f60e11b808252906001600160a01b03861690631626ba7e9061022790879087906004016105f9565b602060405180830381865afa158015610244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102689190610633565b6001600160e01b031916149050610405565b81516041146102df5760405162461bcd60e51b815260206004820152603a602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e6774680000000000006064820152608401610157565b6102e7610425565b5060208201516040808401518451859392600091859190811061030c5761030c61065d565b016020015160f81c9050601b811480159061032b57508060ff16601c14155b1561038c5760405162461bcd60e51b815260206004820152603b602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c756500000000006064820152608401610157565b60408051600081526020810180835289905260ff83169181019190915260608101849052608081018390526001600160a01b0389169060019060a0016020604051602081039080840390855afa1580156103ea573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149450505050505b9392505050565b600060208251101561041d57600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b038116811461045857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561048c578181015183820152602001610474565b50506000910152565b600082601f8301126104a657600080fd5b81516001600160401b038111156104bf576104bf61045b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045b565b60405281815283820160200185101561050557600080fd5b610516826020830160208701610471565b949350505050565b60008060006060848603121561053357600080fd5b835161053e81610443565b6020850151604086015191945092506001600160401b0381111561056157600080fd5b61056d86828701610495565b9150509250925092565b60008060006060848603121561058c57600080fd5b835161059781610443565b60208501519093506001600160401b038111156105b357600080fd5b6105bf86828701610495565b604086015190935090506001600160401b0381111561056157600080fd5b600082516105ef818460208701610471565b9190910192915050565b828152604060208201526000825180604084015261061e816060850160208701610471565b601f01601f1916919091016060019392505050565b60006020828403121561064557600080fd5b81516001600160e01b03198116811461040557600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572",eI=[{inputs:[{name:"_signer",type:"address"},{name:"_hash",type:"bytes32"},{name:"_signature",type:"bytes"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[{name:"_signer",type:"address"},{name:"_hash",type:"bytes32"},{name:"_signature",type:"bytes"}],outputs:[{type:"bool"}],stateMutability:"nonpayable",type:"function",name:"isValidSig"}];function C0(e){if(Pe(e,-32)!==w0)throw new cl(e)}function tI(e){return typeof e=="string"?y1(e):e}function y1(e){C0(e);let[t,r,n]=Wa(mc("address, bytes, bytes"),e);return{data:r,signature:n,to:t}}function rI(e){let{data:t,signature:r,to:n}=e;return $e(go(mc("address, bytes, bytes"),[n,t,r]),w0)}function nI(e){try{return C0(e),!0}catch{return!1}}var cl=class extends B{constructor(t){super(`Value \`${t}\` is an invalid ERC-6492 wrapped signature.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SignatureErc6492.InvalidWrappedSignatureError"})}};mo();tc();Yn();lp();Vt();qn();Vo();bt();zt();qe();D();qe();Xe();import{secp256k1 as oI}from"@noble/curves/secp256k1";function ml({r:e,s:t,to:r="hex",v:n,yParity:o}){let s=(()=>{if(o===0||o===1)return o;if(n&&(n===27n||n===28n||n>=35n))return n%2n===0n?1:0;throw new Error("Invalid `v` or `yParity` value")})(),a=`0x${new oI.Signature(be(e),be(t)).toCompactHex()}${s===0?"1b":"1c"}`;return r==="hex"?a:Ke(a)}za();async function yo(e,t){let{address:r,hash:n,erc6492VerifierAddress:o=t.universalSignatureVerifierAddress??e.chain?.contracts?.erc6492Verifier?.address,multicallAddress:s=t.multicallAddress??e.chain?.contracts?.multicall3?.address}=t,a=(()=>{let i=t.signature;return ve(i)?i:typeof i=="object"&&"r"in i&&"s"in i?ml(i):ne(i)})();try{return lc.validate(a)?await sI(e,{...t,multicallAddress:s,signature:a}):await aI(e,{...t,verifierAddress:o,signature:a})}catch(i){try{if(ur(Vs(r),await Gu({hash:n,signature:a})))return!0}catch{}if(i instanceof kn)return!1;throw i}}async function sI(e,t){let{address:r,blockNumber:n,blockTag:o,hash:s,multicallAddress:a}=t,{authorization:i,data:c,signature:m,to:u}=lc.unwrap(t.signature);if(await sc(e,{address:r,blockNumber:n,blockTag:o})===Qe(["0xef0100",i.address]))return await iI(e,{address:r,blockNumber:n,blockTag:o,hash:s,signature:m});let f={address:i.address,chainId:Number(i.chainId),nonce:Number(i.nonce),r:E(i.r,{size:32}),s:E(i.s,{size:32}),yParity:i.yParity};if(!await Ex({address:r,authorization:f}))throw new kn;let g=await T(e,Ve,"readContract")({...a?{address:a}:{code:Da},authorizationList:[f],abi:qo,blockNumber:n,blockTag:"pending",functionName:"aggregate3",args:[[...c?[{allowFailure:!0,target:u??r,callData:c}]:[],{allowFailure:!0,target:r,callData:ke({abi:Ad,functionName:"isValidSignature",args:[s,m]})}]]});if(g[g.length-1]?.returnData?.startsWith("0x1626ba7e"))return!0;throw new kn}async function aI(e,t){let{address:r,factory:n,factoryData:o,hash:s,signature:a,verifierAddress:i,...c}=t,m=await(async()=>!n&&!o||gc.validate(a)?a:gc.wrap({data:o,signature:a,to:n}))(),u=i?{to:i,data:ke({abi:Pd,functionName:"isValidSig",args:[r,s,m]}),...c}:{data:Ko({abi:Pd,args:[r,s,m],bytecode:Hb}),...c},{data:p}=await T(e,Wr,"call")(u).catch(f=>{throw f instanceof na?new kn:f});if(Uf(p??"0x0"))return!0;throw new kn}async function iI(e,t){let{address:r,blockNumber:n,blockTag:o,hash:s,signature:a}=t;if((await T(e,Ve,"readContract")({address:r,abi:Ad,args:[s,a],blockNumber:n,blockTag:o,functionName:"isValidSignature"}).catch(c=>{throw c instanceof oa?new kn:c})).startsWith("0x1626ba7e"))return!0;throw new kn}var kn=class extends Error{};async function b1(e,{address:t,message:r,factory:n,factoryData:o,signature:s,...a}){let i=qa(r);return yo(e,{address:t,factory:n,factoryData:o,hash:i,signature:s,...a})}async function x1(e,t){let{address:r,factory:n,factoryData:o,signature:s,message:a,primaryType:i,types:c,domain:m,...u}=t,p=Op({message:a,primaryType:i,types:c,domain:m});return yo(e,{address:r,factory:n,factoryData:o,hash:p,signature:s,...u})}Ot();fp();ct();qe();ct();function ul(e,{emitOnBegin:t=!1,emitMissed:r=!1,onBlockNumber:n,onError:o,poll:s,pollingInterval:a=e.pollingInterval}){let i=typeof s<"u"?s:!(e.transport.type==="webSocket"||e.transport.type==="ipc"||e.transport.type==="fallback"&&(e.transport.transports[0].config.type==="webSocket"||e.transport.transports[0].config.type==="ipc")),c;return i?(()=>{let p=Q(["watchBlockNumber",e.uid,t,r,a]);return lt(p,{onBlockNumber:n,onError:o},f=>lr(async()=>{try{let d=await T(e,Jr,"getBlockNumber")({cacheTime:0});if(c!==void 0){if(d===c)return;if(d-c>1&&r)for(let g=c+1n;g<d;g++)f.onBlockNumber(g,c),c=g}(c===void 0||d>c)&&(f.onBlockNumber(d,c),c=d)}catch(d){f.onError?.(d)}},{emitOnBegin:t,interval:a}))})():(()=>{let p=Q(["watchBlockNumber",e.uid,t,r]);return lt(p,{onBlockNumber:n,onError:o},f=>{let d=!0,g=()=>d=!1;return(async()=>{try{let h=(()=>{if(e.transport.type==="fallback"){let b=e.transport.transports.find(x=>x.config.type==="webSocket"||x.config.type==="ipc");return b?b.value:e.transport}return e.transport})(),{unsubscribe:y}=await h.subscribe({params:["newHeads"],onData(b){if(!d)return;let x=be(b.result?.number);f.onBlockNumber(x,c),c=x},onError(b){f.onError?.(b)}});g=y,d||g()}catch(h){o?.(h)}})(),()=>g()})})()}async function pl(e,t){let{checkReplacement:r=!0,confirmations:n=1,hash:o,onReplaced:s,retryCount:a=6,retryDelay:i=({count:k})=>~~(1<<k)*200,timeout:c=18e4}=t,m=Q(["waitForTransactionReceipt",e.uid,o]),u=t.pollingInterval?t.pollingInterval:e.chain?.experimental_preconfirmationTime?e.chain.experimental_preconfirmationTime:e.pollingInterval,p,f,d,g=!1,h,y,{promise:b,resolve:x,reject:v}=Ua(),C=c?setTimeout(()=>{y?.(),h?.(),v(new _m({hash:o}))},c):void 0;return h=lt(m,{onReplaced:s,resolve:x,reject:v},async k=>{if(d=await T(e,Za,"getTransactionReceipt")({hash:o}).catch(()=>{}),d&&n<=1){clearTimeout(C),k.resolve(d),h?.();return}y=T(e,ul,"watchBlockNumber")({emitMissed:!0,emitOnBegin:!0,poll:!0,pollingInterval:u,async onBlockNumber(_){let I=F=>{clearTimeout(C),y?.(),F(),h?.()},M=_;if(!g)try{if(d){if(n>1&&(!d.blockNumber||M-d.blockNumber+1n<n))return;I(()=>k.resolve(d));return}if(r&&!p&&(g=!0,await Jo(async()=>{p=await T(e,Ja,"getTransaction")({hash:o}),p.blockNumber&&(M=p.blockNumber)},{delay:i,retryCount:a}),g=!1),d=await T(e,Za,"getTransactionReceipt")({hash:o}),n>1&&(!d.blockNumber||M-d.blockNumber+1n<n))return;I(()=>k.resolve(d))}catch(F){if(F instanceof _s||F instanceof Is){if(!p){g=!1;return}try{f=p,g=!0;let L=await Jo(()=>T(e,pt,"getBlock")({blockNumber:M,includeTransactions:!0}),{delay:i,retryCount:a,shouldRetry:({error:V})=>V instanceof _a});g=!1;let j=L.transactions.find(({from:V,nonce:de})=>V===f.from&&de===f.nonce);if(!j||(d=await T(e,Za,"getTransactionReceipt")({hash:j.hash}),n>1&&(!d.blockNumber||M-d.blockNumber+1n<n)))return;let H="replaced";j.to===f.to&&j.value===f.value&&j.input===f.input?H="repriced":j.from===j.to&&j.value===0n&&(H="cancelled"),I(()=>{k.onReplaced?.({reason:H,replacedTransaction:f,transaction:j,transactionReceipt:d}),k.resolve(d)})}catch(L){I(()=>k.reject(L))}}else I(()=>k.reject(F))}}})}),b}ct();function v1(e,{blockTag:t=e.experimental_blockTag??"latest",emitMissed:r=!1,emitOnBegin:n=!1,onBlock:o,onError:s,includeTransactions:a,poll:i,pollingInterval:c=e.pollingInterval}){let m=typeof i<"u"?i:!(e.transport.type==="webSocket"||e.transport.type==="ipc"||e.transport.type==="fallback"&&(e.transport.transports[0].config.type==="webSocket"||e.transport.transports[0].config.type==="ipc")),u=a??!1,p;return m?(()=>{let g=Q(["watchBlocks",e.uid,t,r,n,u,c]);return lt(g,{onBlock:o,onError:s},h=>lr(async()=>{try{let y=await T(e,pt,"getBlock")({blockTag:t,includeTransactions:u});if(y.number!==null&&p?.number!=null){if(y.number===p.number)return;if(y.number-p.number>1&&r)for(let b=p?.number+1n;b<y.number;b++){let x=await T(e,pt,"getBlock")({blockNumber:b,includeTransactions:u});h.onBlock(x,p),p=x}}(p?.number==null||t==="pending"&&y?.number==null||y.number!==null&&y.number>p.number)&&(h.onBlock(y,p),p=y)}catch(y){h.onError?.(y)}},{emitOnBegin:n,interval:c}))})():(()=>{let g=!0,h=!0,y=()=>g=!1;return(async()=>{try{n&&T(e,pt,"getBlock")({blockTag:t,includeTransactions:u}).then(v=>{g&&h&&(o(v,void 0),h=!1)}).catch(s);let b=(()=>{if(e.transport.type==="fallback"){let v=e.transport.transports.find(C=>C.config.type==="webSocket"||C.config.type==="ipc");return v?v.value:e.transport}return e.transport})(),{unsubscribe:x}=await b.subscribe({params:["newHeads"],async onData(v){if(!g)return;let C=await T(e,pt,"getBlock")({blockNumber:v.result?.number,includeTransactions:u}).catch(()=>{});g&&(o(C,p),h=!1,p=C)},onError(v){s?.(v)}});y=x,g||y()}catch(b){s?.(b)}})(),()=>y()})()}Ne();Sa();ct();function w1(e,{address:t,args:r,batch:n=!0,event:o,events:s,fromBlock:a,onError:i,onLogs:c,poll:m,pollingInterval:u=e.pollingInterval,strict:p}){let f=typeof m<"u"?m:typeof a=="bigint"?!0:!(e.transport.type==="webSocket"||e.transport.type==="ipc"||e.transport.type==="fallback"&&(e.transport.transports[0].config.type==="webSocket"||e.transport.transports[0].config.type==="ipc")),d=p??!1;return f?(()=>{let y=Q(["watchEvent",t,r,n,e.uid,o,u,a]);return lt(y,{onLogs:c,onError:i},b=>{let x;a!==void 0&&(x=a-1n);let v,C=!1,k=lr(async()=>{if(!C){try{v=await T(e,Rp,"createEventFilter")({address:t,args:r,event:o,events:s,strict:d,fromBlock:a})}catch{}C=!0;return}try{let _;if(v)_=await T(e,uo,"getFilterChanges")({filter:v});else{let I=await T(e,Jr,"getBlockNumber")({});x&&x!==I?_=await T(e,$a,"getLogs")({address:t,args:r,event:o,events:s,fromBlock:x+1n,toBlock:I}):_=[],x=I}if(_.length===0)return;if(n)b.onLogs(_);else for(let I of _)b.onLogs([I])}catch(_){v&&_ instanceof jr&&(C=!1),b.onError?.(_)}},{emitOnBegin:!0,interval:u});return async()=>{v&&await T(e,po,"uninstallFilter")({filter:v}),k()}})})():(()=>{let y=!0,b=()=>y=!1;return(async()=>{try{let x=(()=>{if(e.transport.type==="fallback"){let _=e.transport.transports.find(I=>I.config.type==="webSocket"||I.config.type==="ipc");return _?_.value:e.transport}return e.transport})(),v=s??(o?[o]:void 0),C=[];v&&(C=[v.flatMap(I=>Vr({abi:[I],eventName:I.name,args:r}))],o&&(C=C[0]));let{unsubscribe:k}=await x.subscribe({params:["logs",{address:t,topics:C}],onData(_){if(!y)return;let I=_.result;try{let{eventName:M,args:F}=Ta({abi:v??[],data:I.data,topics:I.topics,strict:d}),L=it(I,{args:F,eventName:M});c([L])}catch(M){let F,L;if(M instanceof Er||M instanceof Br){if(p)return;F=M.abiItem.name,L=M.abiItem.inputs?.some(H=>!("name"in H&&H.name))}let j=it(I,{args:L?[]:{},eventName:F});c([j])}},onError(_){i?.(_)}});b=k,y||b()}catch(x){i?.(x)}})(),()=>b()})()}ct();function C1(e,{batch:t=!0,onError:r,onTransactions:n,poll:o,pollingInterval:s=e.pollingInterval}){return(typeof o<"u"?o:e.transport.type!=="webSocket"&&e.transport.type!=="ipc")?(()=>{let m=Q(["watchPendingTransactions",e.uid,t,s]);return lt(m,{onTransactions:n,onError:r},u=>{let p,f=lr(async()=>{try{if(!p)try{p=await T(e,Mp,"createPendingTransactionFilter")({});return}catch(g){throw f(),g}let d=await T(e,uo,"getFilterChanges")({filter:p});if(d.length===0)return;if(t)u.onTransactions(d);else for(let g of d)u.onTransactions([g])}catch(d){u.onError?.(d)}},{emitOnBegin:!0,interval:s});return async()=>{p&&await T(e,po,"uninstallFilter")({filter:p}),f()}})})():(()=>{let m=!0,u=()=>m=!1;return(async()=>{try{let{unsubscribe:p}=await e.transport.subscribe({params:["newPendingTransactions"],onData(f){if(!m)return;let d=f.result;n([d])},onError(f){r?.(f)}});u=p,m||u()}catch(p){r?.(p)}})(),()=>u()})()}function S1(e){let{scheme:t,statement:r,...n}=e.match(cI)?.groups??{},{chainId:o,expirationTime:s,issuedAt:a,notBefore:i,requestId:c,...m}=e.match(mI)?.groups??{},u=e.split("Resources:")[1]?.split(`
51
- - `).slice(1);return{...n,...m,...o?{chainId:Number(o)}:{},...s?{expirationTime:new Date(s)}:{},...a?{issuedAt:new Date(a)}:{},...i?{notBefore:new Date(i)}:{},...c?{requestId:c}:{},...u?{resources:u}:{},...t?{scheme:t}:{},...r?{statement:r}:{}}}var cI=/^(?:(?<scheme>[a-zA-Z][a-zA-Z0-9+-.]*):\/\/)?(?<domain>[a-zA-Z0-9+-.]*(?::[0-9]{1,5})?) (?:wants you to sign in with your Ethereum account:\n)(?<address>0x[a-fA-F0-9]{40})\n\n(?:(?<statement>.*)\n\n)?/,mI=/(?:URI: (?<uri>.+))\n(?:Version: (?<version>.+))\n(?:Chain ID: (?<chainId>\d+))\n(?:Nonce: (?<nonce>[a-zA-Z0-9]+))\n(?:Issued At: (?<issuedAt>.+))(?:\nExpiration Time: (?<expirationTime>.+))?(?:\nNot Before: (?<notBefore>.+))?(?:\nRequest ID: (?<requestId>.+))?/;jt();Vo();function k1(e){let{address:t,domain:r,message:n,nonce:o,scheme:s,time:a=new Date}=e;if(r&&n.domain!==r||o&&n.nonce!==o||s&&n.scheme!==s||n.expirationTime&&a>=n.expirationTime||n.notBefore&&a<n.notBefore)return!1;try{if(!n.address||!ie(n.address,{strict:!1})||t&&!ur(n.address,t))return!1}catch{return!1}return!0}async function E1(e,t){let{address:r,domain:n,message:o,nonce:s,scheme:a,signature:i,time:c=new Date,...m}=t,u=S1(o);if(!u.address||!k1({address:r,domain:n,message:u,nonce:s,scheme:a,time:c}))return!1;let f=qa(o);return yo(e,{address:u.address,hash:f,signature:i,...m})}Ot();async function Xa(e,{serializedTransaction:t,throwOnReceiptRevert:r,timeout:n}){let o=await e.request({method:"eth_sendRawTransactionSync",params:n?[t,E(n)]:[t]},{retryCount:0}),a=(e.chain?.formatters?.transactionReceipt?.format||Ai)(o);if(a.status==="reverted"&&r)throw new As({receipt:a});return a}function _1(e){return{call:t=>Wr(e,t),createAccessList:t=>$p(e,t),createBlockFilter:()=>yx(e),createContractEventFilter:t=>Hu(e,t),createEventFilter:t=>Rp(e,t),createPendingTransactionFilter:()=>Mp(e),estimateContractGas:t=>fb(e,t),estimateGas:t=>Pa(e,t),getBalance:t=>bx(e,t),getBlobBaseFee:()=>xx(e),getBlock:t=>pt(e,t),getBlockNumber:t=>Jr(e,t),getBlockTransactionCount:t=>vx(e,t),getBytecode:t=>sc(e,t),getChainId:()=>$t(e),getCode:t=>sc(e,t),getContractEvents:t=>Xu(e,t),getEip712Domain:t=>wx(e,t),getEnsAddress:t=>cx(e,t),getEnsAvatar:t=>dx(e,t),getEnsName:t=>gx(e,t),getEnsResolver:t=>hx(e,t),getEnsText:t=>Tp(e,t),getFeeHistory:t=>Sx(e,t),estimateFeesPerGas:t=>pb(e,t),getFilterChanges:t=>uo(e,t),getFilterLogs:t=>kx(e,t),getGasPrice:()=>Ia(e),getLogs:t=>$a(e,t),getProof:t=>a1(e,t),estimateMaxPriorityFeePerGas:t=>ub(e,t),getStorageAt:t=>i1(e,t),getTransaction:t=>Ja(e,t),getTransactionConfirmations:t=>c1(e,t),getTransactionCount:t=>Aa(e,t),getTransactionReceipt:t=>Za(e,t),multicall:t=>m1(e,t),prepareTransactionRequest:t=>Gr(e,t),readContract:t=>Ve(e,t),sendRawTransaction:t=>ja(e,t),sendRawTransactionSync:t=>Xa(e,t),simulate:t=>fc(e,t),simulateBlocks:t=>fc(e,t),simulateCalls:t=>h1(e,t),simulateContract:t=>tx(e,t),verifyHash:t=>yo(e,t),verifyMessage:t=>b1(e,t),verifySiweMessage:t=>E1(e,t),verifyTypedData:t=>x1(e,t),uninstallFilter:t=>po(e,t),waitForTransactionReceipt:t=>pl(e,t),watchBlocks:t=>v1(e,t),watchBlockNumber:t=>ul(e,t),watchContractEvent:t=>sx(e,t),watchEvent:t=>w1(e,t),watchPendingTransactions:t=>C1(e,t)}}function ts(e){let{key:t="public",name:r="Public Client"}=e;return Ep({...e,key:t,name:r,type:"publicClient"}).extend(_1)}D();async function I1(e,{chain:t}){let{id:r,name:n,nativeCurrency:o,rpcUrls:s,blockExplorers:a}=t;await e.request({method:"wallet_addEthereumChain",params:[{chainId:E(r),chainName:n,nativeCurrency:o,rpcUrls:s.default.http,blockExplorerUrls:a?Object.values(a).map(({url:i})=>i):void 0}]},{dedupe:!0,retryCount:0})}lp();function A1(e,t){let{abi:r,args:n,bytecode:o,...s}=t,a=Ko({abi:r,args:n,bytecode:o});return lo(e,{...s,...s.authorizationList?{to:null}:{},data:a})}qn();async function P1(e){return e.account?.type==="local"?[e.account.address]:(await e.request({method:"eth_accounts"},{dedupe:!0})).map(r=>dn(r))}Fe();D();async function T1(e,t={}){let{account:r=e.account,chainId:n}=t,o=r?W(r):void 0,s=n?[o?.address,[E(n)]]:[o?.address],a=await e.request({method:"wallet_getCapabilities",params:s}),i={};for(let[c,m]of Object.entries(a)){i[Number(c)]={};for(let[u,p]of Object.entries(m))u==="addSubAccount"&&(u="unstable_addSubAccount"),i[Number(c)][u]=p}return typeof n=="number"?i[n]:i}async function $1(e){return await e.request({method:"wallet_getPermissions"},{dedupe:!0})}Fe();Vo();async function ll(e,t){let{account:r=e.account,chainId:n,nonce:o}=t;if(!r)throw new et({docsPath:"/docs/eip7702/prepareAuthorization"});let s=W(r),a=(()=>{if(t.executor)return t.executor==="self"?t.executor:W(t.executor)})(),i={address:t.contractAddress??t.address,chainId:n,nonce:o};return typeof i.chainId>"u"&&(i.chainId=e.chain?.id??await T(e,$t,"getChainId")({})),typeof i.nonce>"u"&&(i.nonce=await T(e,Aa,"getTransactionCount")({address:s.address,blockTag:"pending"}),(a==="self"||a?.address&&ur(a.address,s.address))&&(i.nonce+=1)),i}qn();async function R1(e){return(await e.request({method:"eth_requestAccounts"},{dedupe:!0,retryCount:0})).map(r=>Vs(r))}async function M1(e,t){return e.request({method:"wallet_requestPermissions",params:[t]},{retryCount:0})}async function F1(e,t){let{chain:r=e.chain}=t,n=t.timeout??Math.max((r?.blockTime??0)*3,5e3),o=await xp(e,t);return await wp(e,{...t,id:o.id,timeout:n})}Fe();K();Ot();ka();jn();Hs();vn();var S0=new nr(128);async function fl(e,t){let{account:r=e.account,chain:n=e.chain,accessList:o,authorizationList:s,blobs:a,data:i,gas:c,gasPrice:m,maxFeePerBlobGas:u,maxFeePerGas:p,maxPriorityFeePerGas:f,nonce:d,pollingInterval:g,throwOnReceiptRevert:h,type:y,value:b,...x}=t,v=t.timeout??Math.max((n?.blockTime??0)*3,5e3);if(typeof r>"u")throw new et({docsPath:"/docs/actions/wallet/sendTransactionSync"});let C=r?W(r):null;try{ut(t);let k=await(async()=>{if(t.to)return t.to;if(t.to!==null&&s&&s.length>0)return await oo({authorization:s[0]}).catch(()=>{throw new w("`to` is required. Could not infer from `authorizationList`.")})})();if(C?.type==="json-rpc"||C===null){let _;n!==null&&(_=await T(e,$t,"getChainId")({}),Gs({currentChainId:_,chain:n}));let I=e.chain?.formatters?.transactionRequest?.format,F=(I||At)({...Hr(x,{format:I}),accessList:o,account:C,authorizationList:s,blobs:a,chainId:_,data:i,gas:c,gasPrice:m,maxFeePerBlobGas:u,maxFeePerGas:p,maxPriorityFeePerGas:f,nonce:d,to:k,type:y,value:b},"sendTransaction"),L=S0.get(e.uid),j=L?"wallet_sendTransaction":"eth_sendTransaction",H=await(async()=>{try{return await e.request({method:j,params:[F]},{retryCount:0})}catch(de){if(L===!1)throw de;let Ie=de;if(Ie.name==="InvalidInputRpcError"||Ie.name==="InvalidParamsRpcError"||Ie.name==="MethodNotFoundRpcError"||Ie.name==="MethodNotSupportedRpcError")return await e.request({method:"wallet_sendTransaction",params:[F]},{retryCount:0}).then(Me=>(S0.set(e.uid,!0),Me)).catch(Me=>{let te=Me;throw te.name==="MethodNotFoundRpcError"||te.name==="MethodNotSupportedRpcError"?(S0.set(e.uid,!1),Ie):te});throw Ie}})(),V=await T(e,pl,"waitForTransactionReceipt")({checkReplacement:!1,hash:H,pollingInterval:g,timeout:v});if(h&&V.status==="reverted")throw new As({receipt:V});return V}if(C?.type==="local"){let _=await T(e,Gr,"prepareTransactionRequest")({account:C,accessList:o,authorizationList:s,blobs:a,chain:n,data:i,gas:c,gasPrice:m,maxFeePerBlobGas:u,maxFeePerGas:p,maxPriorityFeePerGas:f,nonce:d,nonceManager:C.nonceManager,parameters:[...Ji,"sidecars"],type:y,value:b,...x,to:k}),I=n?.serializers?.transaction,M=await C.signTransaction(_,{serializer:I});return await T(e,Xa,"sendRawTransactionSync")({serializedTransaction:M,throwOnReceiptRevert:h})}throw C?.type==="smart"?new ir({metaMessages:["Consider using the `sendUserOperation` Action instead."],docsPath:"/docs/actions/bundler/sendUserOperation",type:"smart"}):new ir({docsPath:"/docs/actions/wallet/sendTransactionSync",type:C?.type})}catch(k){throw k instanceof ir?k:Oa(k,{...t,account:C,chain:t.chain||void 0})}}async function N1(e,t){let{id:r}=t;await e.request({method:"wallet_showCallsStatus",params:[r]})}Fe();async function L1(e,t){let{account:r=e.account}=t;if(!r)throw new et({docsPath:"/docs/eip7702/signAuthorization"});let n=W(r);if(!n.signAuthorization)throw new ir({docsPath:"/docs/eip7702/signAuthorization",metaMessages:["The `signAuthorization` Action does not support JSON-RPC Accounts."],type:n.type});let o=await ll(e,t);return n.signAuthorization(o)}Fe();D();async function B1(e,{account:t=e.account,message:r}){if(!t)throw new et({docsPath:"/docs/actions/wallet/signMessage"});let n=W(t);if(n.signMessage)return n.signMessage({message:r});let o=typeof r=="string"?xr(r):r.raw instanceof Uint8Array?ye(r.raw):r.raw;return e.request({method:"personal_sign",params:[o,n.address]},{retryCount:0})}Fe();D();jn();vn();async function D1(e,t){let{account:r=e.account,chain:n=e.chain,...o}=t;if(!r)throw new et({docsPath:"/docs/actions/wallet/signTransaction"});let s=W(r);ut({account:s,...t});let a=await T(e,$t,"getChainId")({});n!==null&&Gs({currentChainId:a,chain:n});let c=(n?.formatters||e.chain?.formatters)?.transactionRequest?.format||At;return s.signTransaction?s.signTransaction({...o,chainId:a},{serializer:e.chain?.serializers?.transaction}):await e.request({method:"eth_signTransaction",params:[{...c({...o,account:s},"signTransaction"),chainId:E(a),from:s.address}]},{retryCount:0})}Fe();async function U1(e,t){let{account:r=e.account,domain:n,message:o,primaryType:s}=t;if(!r)throw new et({docsPath:"/docs/actions/wallet/signTypedData"});let a=W(r),i={EIP712Domain:zp({domain:n}),...t.types};if(Up({domain:n,message:o,primaryType:s,types:i}),a.signTypedData)return a.signTypedData({domain:n,message:o,primaryType:s,types:i});let c=Rx({domain:n,message:o,primaryType:s,types:i});return e.request({method:"eth_signTypedData_v4",params:[a.address,c]},{retryCount:0})}D();async function z1(e,{id:t}){await e.request({method:"wallet_switchEthereumChain",params:[{chainId:E(t)}]},{retryCount:0})}async function O1(e,t){return await e.request({method:"wallet_watchAsset",params:t},{retryCount:0})}async function j1(e,t){return Wo.internal(e,fl,"sendTransactionSync",t)}function H1(e){return{addChain:t=>I1(e,t),deployContract:t=>A1(e,t),getAddresses:()=>P1(e),getCallsStatus:t=>vp(e,t),getCapabilities:t=>T1(e,t),getChainId:()=>$t(e),getPermissions:()=>$1(e),prepareAuthorization:t=>ll(e,t),prepareTransactionRequest:t=>Gr(e,t),requestAddresses:()=>R1(e),requestPermissions:t=>M1(e,t),sendCalls:t=>xp(e,t),sendCallsSync:t=>F1(e,t),sendRawTransaction:t=>ja(e,t),sendRawTransactionSync:t=>Xa(e,t),sendTransaction:t=>lo(e,t),sendTransactionSync:t=>fl(e,t),showCallsStatus:t=>N1(e,t),signAuthorization:t=>L1(e,t),signMessage:t=>B1(e,t),signTransaction:t=>D1(e,t),signTypedData:t=>U1(e,t),switchChain:t=>z1(e,t),waitForCallsStatus:t=>wp(e,t),watchAsset:t=>O1(e,t),writeContract:t=>Wo(e,t),writeContractSync:t=>j1(e,t)}}function hc(e){let{key:t="wallet",name:r="Wallet Client",transport:n}=e;return Ep({...e,key:t,name:r,transport:n,type:"walletClient"}).extend(H1)}function V1({key:e,methods:t,name:r,request:n,retryCount:o=3,retryDelay:s=150,timeout:a,type:i},c){let m=kp();return{config:{key:e,methods:t,name:r,request:n,retryCount:o,retryDelay:s,timeout:a,type:i},request:Ix(n,{methods:t,retryCount:o,retryDelay:s,uid:m}),value:c}}Oo();K();var dl=class extends w{constructor(){super("No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.",{docsPath:"/docs/clients/intro",name:"UrlRequiredError"})}};Rd();function En(e,t={}){let{batch:r,fetchFn:n,fetchOptions:o,key:s="http",methods:a,name:i="HTTP JSON-RPC",onFetchRequest:c,onFetchResponse:m,retryDelay:u,raw:p}=t;return({chain:f,retryCount:d,timeout:g})=>{let{batchSize:h=1e3,wait:y=0}=typeof r=="object"?r:{},b=t.retryCount??d,x=g??t.timeout??1e4,v=e||f?.rpcUrls.default.http[0];if(!v)throw new dl;let C=Px(v,{fetchFn:n,fetchOptions:o,onRequest:c,onResponse:m,timeout:x});return V1({key:s,methods:a,name:i,async request({method:k,params:_}){let I={method:k,params:_},{schedule:M}=dp({id:v,wait:y,shouldSplitBatch(H){return H.length>h},fn:H=>C.request({body:H}),sort:(H,V)=>H.id-V.id}),F=async H=>r?M(H):[await C.request({body:H})],[{error:L,result:j}]=await F(I);if(p)return{error:L,result:j};if(L)throw new Xn({body:I,error:L,url:v});return j},retryCount:b,retryDelay:u,timeout:x,type:"http"},{fetchOptions:o,url:v})}}zt();D();import{secp256k1 as pI}from"@noble/curves/secp256k1";Sr();jt();function G1(e){if(typeof e=="string"){if(!ie(e,{strict:!1}))throw new ge({address:e});return{address:e,type:"json-rpc"}}if(!ie(e.address,{strict:!1}))throw new ge({address:e.address});return{address:e.address,nonceManager:e.nonceManager,sign:e.sign,signAuthorization:e.signAuthorization,signMessage:e.signMessage,signTransaction:e.signTransaction,signTypedData:e.signTypedData,source:"custom",type:"local"}}zt();Xe();D();import{secp256k1 as uI}from"@noble/curves/secp256k1";var k0=!1;async function Zr({hash:e,privateKey:t,to:r="object"}){let{r:n,s:o,recovery:s}=uI.sign(e.slice(2),t.slice(2),{lowS:!0,extraEntropy:ve(k0,{strict:!1})?Ke(k0):k0}),a={r:E(n,{size:32}),s:E(o,{size:32}),v:s?28n:27n,yParity:s};return r==="bytes"||r==="hex"?ml({...a,to:r}):a}async function q1(e){let{chainId:t,nonce:r,privateKey:n,to:o="object"}=e,s=e.contractAddress??e.address,a=await Zr({hash:qu({address:s,chainId:t,nonce:r}),privateKey:n,to:o});return o==="object"?{address:s,chainId:t,nonce:r,...a}:a}async function K1({message:e,privateKey:t}){return await Zr({hash:qa(e),privateKey:t,to:"hex"})}or();async function W1(e){let{privateKey:t,transaction:r,serializer:n=Gm}=e,o=r.type==="eip4844"?{...r,sidecars:!1}:r,s=await Zr({hash:he(await n(o)),privateKey:t});return await n(r,s)}async function J1(e){let{privateKey:t,...r}=e;return await Zr({hash:Op(r),privateKey:t,to:"hex"})}function yc(e,t={}){let{nonceManager:r}=t,n=ye(pI.getPublicKey(e.slice(2),!1)),o=Vu(n);return{...G1({address:o,nonceManager:r,async sign({hash:a}){return Zr({hash:a,privateKey:e,to:"hex"})},async signAuthorization(a){return q1({...a,privateKey:e})},async signMessage({message:a}){return K1({message:a,privateKey:e})},async signTransaction(a,{serializer:i}={}){return W1({privateKey:e,transaction:a,serializer:i})},async signTypedData(a){return J1({...a,privateKey:e})}}),publicKey:n,source:"privateKey"}}var Kse=Ci(I0(),1);import{z as Le}from"zod";var gr=Ci(I0(),1),i3=Ci(Z1(),1),c3=Ci(Bv(),1);import{z as oi}from"zod";import{z as $r}from"zod";import{z as jT}from"zod";import{z as si}from"zod";import{z as Tr}from"zod";import{z as ot}from"zod";import{z as Ct}from"zod";import{z as Sc}from"zod";import{z as Kt}from"zod";import{z as jv}from"zod";import{z as Hv}from"zod";import{z as xl}from"zod";import{z as vl}from"zod";import{z as wt}from"zod";import{z as ue}from"zod";var XI=rt.object({detail:rt.union([rt.string(),rt.array(rt.object({msg:rt.string(),type:rt.string().optional(),ctx:rt.record(rt.unknown()).optional(),loc:rt.array(rt.union([rt.string(),rt.number()])).optional(),input:rt.unknown().optional()}).passthrough()),rt.record(rt.unknown())]).optional(),type:rt.string().optional(),code:rt.string().optional()}),rn=class extends Error{constructor(e,t){super(e),this.name=this.constructor.name,this.status=t.status,this.statusText=t.statusText,this.detail=t.detail,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},L0=class wl extends rn{constructor(t,r){super(t,{status:r?.status??0,statusText:r?.statusText??"Unknown Error",detail:r?.detail||t}),this.name="RequestError",this.isRequestError=!0,this.data=r?.data,this.request=r?.request,this.response=r?.response,this.code=r?.code,this.type=r?.type}static fromFetchError(t){let r=XI.safeParse(t.data);return r.success?new wl(t.message,{status:t.status??void 0,statusText:t.statusText??void 0,data:t.data,request:t.request??void 0,response:t.response??void 0,detail:r.data.detail,code:r.data.code??void 0,type:r.data.type??void 0}):new wl(t.message,{status:t.status??void 0,statusText:t.statusText??void 0,data:t.data,request:t.request??void 0,response:t.response??void 0,detail:t.data?.detail||"Unknown API error",code:t.status?.toString()??void 0})}static fromError(t,r){return new wl(t.message,{request:r??void 0,detail:t.message})}},QI=class extends rn{constructor(e,t){super(e,t),this.isValidationError=!0,this.validationErrors=t.validationErrors}},e8=class extends rn{constructor(){super(...arguments),this.isAuthError=!0}},kl=class extends rn{constructor(){super(...arguments),this.isBusinessError=!0}},t8=class extends rn{constructor(){super(...arguments),this.isServerError=!0}},r8=class extends rn{constructor(){super(...arguments),this.isUnknownError=!0}};function n8(e){if(!e||!Array.isArray(e))return"unknown";let t=e.filter(r=>typeof r=="string"?!["body","query","path","header"].includes(r):!0);return t.length>0?t.join("."):"unknown"}function qv(e){if(!Array.isArray(e))return{errors:[],message:typeof e=="string"?e:"Validation error"};let t=e.map((o,s)=>{let a=n8(o.loc),i=a;return a==="unknown"&&o.type&&(i=o.type==="missing"?"required field":o.type),{field:i,message:o.msg,type:o.type,context:o.ctx}}),r=t.length,n=r===1?`Validation failed: ${t[0].message}`:`Validation failed (${r} issue${r>1?"s":""})`;return{errors:t,message:n}}function o8(e){return e===422?"validation":e===401||e===403?"auth":e>=400&&e<500?"business":e>=500?"server":"unknown"}function s8(e,t,r){if(e===422&&Array.isArray(t)){let{message:n}=qv(t);return n}if(typeof t=="string")return t;if(t&&typeof t=="object"&&"message"in t){let n=t.message;if(typeof n=="string")return n}return r}function a8(e){let t=e.status??0,r=e.statusText??"Unknown Error",n=e.detail,o=i8(n);if(o)return new Ec(o.message,{status:t,statusText:r,detail:n,errorCode:o.error_code,structuredDetails:o.details,suggestions:o.suggestions,links:o.links});let s=o8(t),a=s8(t,n,e.message),i={status:t,statusText:r,detail:n};if(s==="validation"&&Array.isArray(n)){let{errors:c}=qv(n);return new QI(a,{...i,validationErrors:c})}return s==="auth"?new e8(a,i):s==="business"?new kl(a,i):s==="server"?new t8(a,i):new r8(a,i)}var Ec=class extends kl{constructor(e,t){super(e,t),this.isResourceError=!0,this.errorCode=t.errorCode,this.structuredDetails=t.structuredDetails,this.suggestions=t.suggestions,this.links=t.links}};function i8(e){if(!e||typeof e!="object")return null;let t=e;return t.error_code&&typeof t.error_code=="string"&&t.message&&typeof t.message=="string"?{error_code:t.error_code,message:t.message,details:t.details,suggestions:t.suggestions,links:t.links}:null}function El(e,t){let{showErrorCode:r=!0,showSuggestions:n=!0,showLinks:o=!0}=t??{},s=[];return r&&e.errorCode?s.push(`Error [${e.errorCode}]: ${e.message}`):s.push(e.message),e.structuredDetails&&e.structuredDetails.length>0&&(s.push(""),s.push("Details:"),e.structuredDetails.forEach(a=>{a.message?s.push(` - ${a.message}`):a.field&&a.value!==void 0&&s.push(` - ${a.field}: ${a.value}`)})),n&&e.suggestions&&e.suggestions.length>0&&(s.push(""),s.push("Suggestions:"),e.suggestions.forEach(a=>{s.push(` - ${a}`)})),o&&e.links&&e.links.length>0&&(s.push(""),s.push("Learn more:"),e.links.forEach(a=>{s.push(` - ${a.label}: ${a.url}`)})),s.join(`
52
- `)}var os=["2025-10-28","2026-01-21"],c8="2026-01-21",ti=(0,Gv.default)("phala::api-client");function m8(e){return Object.entries(e).map(([t,r])=>` -H "${t}: ${r}"`).join(`
53
- `)}function u8(e){return e?` -d '${(typeof e=="string"?e:JSON.stringify(e,null,2)).replace(/'/g,"\\'")}'`:""}function Dv(e,t,r,n){let o=[];r.forEach((i,c)=>{o.push(`${c}: ${i}`)});let s=o.join(`
54
- `),a=typeof n=="string"?n:JSON.stringify(n,null,2);return[`< HTTP/1.1 ${e} ${t}`,s?`< ${s.replace(/\n/g,`
55
- < `)}`:"","",a].filter(Boolean).join(`
56
- `)}var p8=class Kv{constructor(t={}){this.emitter=hh();let r=t.apiKey||process?.env?.PHALA_CLOUD_API_KEY,n=t.baseURL||process?.env?.PHALA_CLOUD_API_PREFIX||"https://cloud-api.phala.com/api/v1",o=t.version&&os.includes(t.version)?t.version:c8;this.config={...t,apiKey:r,baseURL:n,version:o};let{apiKey:s,baseURL:a,timeout:i,headers:c,useCookieAuth:m,onResponseError:u,...p}=this.config,f={"X-Phala-Version":o,"Content-Type":"application/json"};c&&typeof c=="object"&&Object.entries(c).forEach(([d,g])=>{typeof g=="string"&&(f[d]=g)}),!m&&s&&(f["X-API-Key"]=s),this.fetchInstance=YI.create({baseURL:a,timeout:i||3e4,headers:f,...m?{credentials:"include"}:{},...p,onRequest({request:d,options:g}){if(ti.enabled){let h=g.method||"GET",y=typeof d=="string"?d:d.url,b=y.startsWith("http")?y:`${a}${y}`,x={};g.headers&&typeof g.headers=="object"&&Object.entries(g.headers).forEach(([C,k])=>{typeof k=="string"&&(x[C]=k)});let v=[`> curl -X ${h} "${b}"`,m8(x),g.body?u8(g.body):""].filter(Boolean).join(`
57
- `);ti(`
5
+ `+a),e.push(o+"m+"+Fn.exports.humanize(this.diff)+"\x1B[0m")}else e[0]=xg()+t+" "+e[0]}function xg(){return be.inspectOpts.hideDate?"":new Date().toISOString()+" "}function Pg(...e){return process.stderr.write(On.formatWithOptions(be.inspectOpts,...e)+`
6
+ `)}function $g(e){e?process.env.DEBUG=e:delete process.env.DEBUG}function Dg(){return process.env.DEBUG}function Rg(e){e.inspectOpts={};let t=Object.keys(be.inspectOpts);for(let r=0;r<t.length;r++)e.inspectOpts[t[r]]=be.inspectOpts[t[r]]}Fn.exports=ua()(be);var{formatters:Ci}=Fn.exports;Ci.o=function(e){return this.inspectOpts.colors=this.useColors,On.inspect(e,this.inspectOpts).split(`
7
+ `).map(t=>t.trim()).join(" ")};Ci.O=function(e){return this.inspectOpts.colors=this.useColors,On.inspect(e,this.inspectOpts)}});var _i=Ze((ME,da)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?da.exports=bi():da.exports=wi()});var ha=Ze(Br=>{"use strict";var Mg=Br&&Br.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Br,"__esModule",{value:!0});Br.encryptEnvVars=Ng;var fa=Tt("@noble/curves/ed25519"),ga=Mg(Tt("crypto"));function Tg(e){var t,r;return e=e.startsWith("0x")?e.slice(2):e,new Uint8Array((r=(t=e.match(/.{1,2}/g))===null||t===void 0?void 0:t.map(n=>parseInt(n,16)))!==null&&r!==void 0?r:[])}function Lg(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}async function Ng(e,t){let r=JSON.stringify({env:e}),n=fa.x25519.utils.randomPrivateKey(),o=fa.x25519.getPublicKey(n),a=Tg(t),s=fa.x25519.getSharedSecret(n,a),c=await ga.default.subtle.importKey("raw",s,{name:"AES-GCM",length:256},!0,["encrypt"]),l=ga.default.getRandomValues(new Uint8Array(12)),m=await ga.default.subtle.encrypt({name:"AES-GCM",iv:l},c,new TextEncoder().encode(r)),p=new Uint8Array(o.length+l.length+m.byteLength);return p.set(o),p.set(l,o.length),p.set(new Uint8Array(m),o.length+l.length),Lg(p)}});var ki=Ze(Wr=>{"use strict";var Ug=Wr&&Wr.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Wr,"__esModule",{value:!0});Wr.getComposeHash=Vg;var Og=Ug(Tt("crypto"));function ya(e){return e==null?e:Array.isArray(e)?e.map(ya):e&&typeof e=="object"&&e.constructor===Object?Object.keys(e).sort().reduce((t,r)=>{let n=e[r];return t[r]=ya(n),t},{}):e}function Fg(e){let t={...e};return t.runner==="bash"&&"docker_compose_file"in t?delete t.docker_compose_file:t.runner==="docker-compose"&&"bash_script"in t&&delete t.bash_script,"pre_launch_script"in t&&!t.pre_launch_script&&delete t.pre_launch_script,t}function jg(e){let t=ya(e);return JSON.stringify(t,(r,n)=>typeof n=="number"&&(isNaN(n)||!isFinite(n))?null:n)}function Vg(e,t=!1){t&&(e=Fg(e));let r=jg(e);return Og.default.createHash("sha256").update(r,"utf8").digest("hex")}});var qi=Ze(T=>{"use strict";Object.defineProperty(T,"__esModule",{value:!0});T.toBig=T.shrSL=T.shrSH=T.rotrSL=T.rotrSH=T.rotrBL=T.rotrBH=T.rotr32L=T.rotr32H=T.rotlSL=T.rotlSH=T.rotlBL=T.rotlBH=T.add5L=T.add5H=T.add4L=T.add4H=T.add3L=T.add3H=void 0;T.add=Fi;T.fromBig=ba;T.split=Ei;var jn=BigInt(2**32-1),va=BigInt(32);function ba(e,t=!1){return t?{h:Number(e&jn),l:Number(e>>va&jn)}:{h:Number(e>>va&jn)|0,l:Number(e&jn)|0}}function Ei(e,t=!1){let r=e.length,n=new Uint32Array(r),o=new Uint32Array(r);for(let a=0;a<r;a++){let{h:s,l:c}=ba(e[a],t);[n[a],o[a]]=[s,c]}return[n,o]}var Ii=(e,t)=>BigInt(e>>>0)<<va|BigInt(t>>>0);T.toBig=Ii;var Ai=(e,t,r)=>e>>>r;T.shrSH=Ai;var xi=(e,t,r)=>e<<32-r|t>>>r;T.shrSL=xi;var Pi=(e,t,r)=>e>>>r|t<<32-r;T.rotrSH=Pi;var $i=(e,t,r)=>e<<32-r|t>>>r;T.rotrSL=$i;var Di=(e,t,r)=>e<<64-r|t>>>r-32;T.rotrBH=Di;var Ri=(e,t,r)=>e>>>r-32|t<<64-r;T.rotrBL=Ri;var Mi=(e,t)=>t;T.rotr32H=Mi;var Ti=(e,t)=>e;T.rotr32L=Ti;var Li=(e,t,r)=>e<<r|t>>>32-r;T.rotlSH=Li;var Ni=(e,t,r)=>t<<r|e>>>32-r;T.rotlSL=Ni;var Ui=(e,t,r)=>t<<r-32|e>>>64-r;T.rotlBH=Ui;var Oi=(e,t,r)=>e<<r-32|t>>>64-r;T.rotlBL=Oi;function Fi(e,t,r,n){let o=(t>>>0)+(n>>>0);return{h:e+r+(o/2**32|0)|0,l:o|0}}var ji=(e,t,r)=>(e>>>0)+(t>>>0)+(r>>>0);T.add3L=ji;var Vi=(e,t,r,n)=>t+r+n+(e/2**32|0)|0;T.add3H=Vi;var zi=(e,t,r,n)=>(e>>>0)+(t>>>0)+(r>>>0)+(n>>>0);T.add4L=zi;var Ki=(e,t,r,n,o)=>t+r+n+o+(e/2**32|0)|0;T.add4H=Ki;var Gi=(e,t,r,n,o)=>(e>>>0)+(t>>>0)+(r>>>0)+(n>>>0)+(o>>>0);T.add5L=Gi;var Hi=(e,t,r,n,o,a)=>t+r+n+o+a+(e/2**32|0)|0;T.add5H=Hi;var zg={fromBig:ba,split:Ei,toBig:Ii,shrSH:Ai,shrSL:xi,rotrSH:Pi,rotrSL:$i,rotrBH:Di,rotrBL:Ri,rotr32H:Mi,rotr32L:Ti,rotlSH:Li,rotlSL:Ni,rotlBH:Ui,rotlBL:Oi,add:Fi,add3L:ji,add3H:Vi,add4L:zi,add4H:Ki,add5H:Hi,add5L:Gi};T.default=zg});var Bi=Ze(Vn=>{"use strict";Object.defineProperty(Vn,"__esModule",{value:!0});Vn.crypto=void 0;var Lt=Tt("crypto");Vn.crypto=Lt&&typeof Lt=="object"&&"webcrypto"in Lt?Lt.webcrypto:Lt&&typeof Lt=="object"&&"randomBytes"in Lt?Lt:void 0});var tc=Ze(D=>{"use strict";Object.defineProperty(D,"__esModule",{value:!0});D.wrapXOFConstructorWithOpts=D.wrapConstructorWithOpts=D.wrapConstructor=D.Hash=D.nextTick=D.swap32IfBE=D.byteSwapIfBE=D.swap8IfBE=D.isLE=void 0;D.isBytes=Ji;D.anumber=Ca;D.abytes=hr;D.ahash=Kg;D.aexists=Gg;D.aoutput=Hg;D.u8=qg;D.u32=Bg;D.clean=Wg;D.createView=Jg;D.rotr=Yg;D.rotl=Zg;D.byteSwap=_a;D.byteSwap32=Yi;D.bytesToHex=Qg;D.hexToBytes=eh;D.asyncLoop=rh;D.utf8ToBytes=Sa;D.bytesToUtf8=nh;D.toBytes=zn;D.kdfInputToBytes=oh;D.concatBytes=ah;D.checkOpts=sh;D.createHasher=Xi;D.createOptHasher=Qi;D.createXOFer=ec;D.randomBytes=ih;var gr=Bi();function Ji(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function Ca(e){if(!Number.isSafeInteger(e)||e<0)throw new Error("positive integer expected, got "+e)}function hr(e,...t){if(!Ji(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error("Uint8Array expected of length "+t+", got length="+e.length)}function Kg(e){if(typeof e!="function"||typeof e.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");Ca(e.outputLen),Ca(e.blockLen)}function Gg(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Hg(e,t){hr(e);let r=t.outputLen;if(e.length<r)throw new Error("digestInto() expects output buffer of length at least "+r)}function qg(e){return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function Bg(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function Wg(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function Jg(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function Yg(e,t){return e<<32-t|e>>>t}function Zg(e,t){return e<<t|e>>>32-t>>>0}D.isLE=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function _a(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}D.swap8IfBE=D.isLE?e=>e:e=>_a(e);D.byteSwapIfBE=D.swap8IfBE;function Yi(e){for(let t=0;t<e.length;t++)e[t]=_a(e[t]);return e}D.swap32IfBE=D.isLE?e=>e:Yi;var Zi=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Xg=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function Qg(e){if(hr(e),Zi)return e.toHex();let t="";for(let r=0;r<e.length;r++)t+=Xg[e[r]];return t}var Ct={_0:48,_9:57,A:65,F:70,a:97,f:102};function Wi(e){if(e>=Ct._0&&e<=Ct._9)return e-Ct._0;if(e>=Ct.A&&e<=Ct.F)return e-(Ct.A-10);if(e>=Ct.a&&e<=Ct.f)return e-(Ct.a-10)}function eh(e){if(typeof e!="string")throw new Error("hex string expected, got "+typeof e);if(Zi)return Uint8Array.fromHex(e);let t=e.length,r=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(r);for(let o=0,a=0;o<r;o++,a+=2){let s=Wi(e.charCodeAt(a)),c=Wi(e.charCodeAt(a+1));if(s===void 0||c===void 0){let l=e[a]+e[a+1];throw new Error('hex string expected, got non-hex character "'+l+'" at index '+a)}n[o]=s*16+c}return n}var th=async()=>{};D.nextTick=th;async function rh(e,t,r){let n=Date.now();for(let o=0;o<e;o++){r(o);let a=Date.now()-n;a>=0&&a<t||(await(0,D.nextTick)(),n+=a)}}function Sa(e){if(typeof e!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(e))}function nh(e){return new TextDecoder().decode(e)}function zn(e){return typeof e=="string"&&(e=Sa(e)),hr(e),e}function oh(e){return typeof e=="string"&&(e=Sa(e)),hr(e),e}function ah(...e){let t=0;for(let n=0;n<e.length;n++){let o=e[n];hr(o),t+=o.length}let r=new Uint8Array(t);for(let n=0,o=0;n<e.length;n++){let a=e[n];r.set(a,o),o+=a.length}return r}function sh(e,t){if(t!==void 0&&{}.toString.call(t)!=="[object Object]")throw new Error("options should be object or undefined");return Object.assign(e,t)}var wa=class{};D.Hash=wa;function Xi(e){let t=n=>e().update(zn(n)).digest(),r=e();return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=()=>e(),t}function Qi(e){let t=(n,o)=>e(o).update(zn(n)).digest(),r=e({});return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=n=>e(n),t}function ec(e){let t=(n,o)=>e(o).update(zn(n)).digest(),r=e({});return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=n=>e(n),t}D.wrapConstructor=Xi;D.wrapConstructorWithOpts=Qi;D.wrapXOFConstructorWithOpts=ec;function ih(e=32){if(gr.crypto&&typeof gr.crypto.getRandomValues=="function")return gr.crypto.getRandomValues(new Uint8Array(e));if(gr.crypto&&typeof gr.crypto.randomBytes=="function")return Uint8Array.from(gr.crypto.randomBytes(e));throw new Error("crypto.getRandomValues must be defined")}});var mc=Ze(ae=>{"use strict";Object.defineProperty(ae,"__esModule",{value:!0});ae.shake256=ae.shake128=ae.keccak_512=ae.keccak_384=ae.keccak_256=ae.keccak_224=ae.sha3_512=ae.sha3_384=ae.sha3_256=ae.sha3_224=ae.Keccak=void 0;ae.keccakP=cc;var Yr=qi(),Ae=tc(),ch=BigInt(0),Jr=BigInt(1),lh=BigInt(2),mh=BigInt(7),ph=BigInt(256),uh=BigInt(113),oc=[],ac=[],sc=[];for(let e=0,t=Jr,r=1,n=0;e<24;e++){[r,n]=[n,(2*r+3*n)%5],oc.push(2*(5*n+r)),ac.push((e+1)*(e+2)/2%64);let o=ch;for(let a=0;a<7;a++)t=(t<<Jr^(t>>mh)*uh)%ph,t&lh&&(o^=Jr<<(Jr<<BigInt(a))-Jr);sc.push(o)}var ic=(0,Yr.split)(sc,!0),dh=ic[0],fh=ic[1],rc=(e,t,r)=>r>32?(0,Yr.rotlBH)(e,t,r):(0,Yr.rotlSH)(e,t,r),nc=(e,t,r)=>r>32?(0,Yr.rotlBL)(e,t,r):(0,Yr.rotlSL)(e,t,r);function cc(e,t=24){let r=new Uint32Array(10);for(let n=24-t;n<24;n++){for(let s=0;s<10;s++)r[s]=e[s]^e[s+10]^e[s+20]^e[s+30]^e[s+40];for(let s=0;s<10;s+=2){let c=(s+8)%10,l=(s+2)%10,m=r[l],p=r[l+1],u=rc(m,p,1)^r[c],d=nc(m,p,1)^r[c+1];for(let f=0;f<50;f+=10)e[s+f]^=u,e[s+f+1]^=d}let o=e[2],a=e[3];for(let s=0;s<24;s++){let c=ac[s],l=rc(o,a,c),m=nc(o,a,c),p=oc[s];o=e[p],a=e[p+1],e[p]=l,e[p+1]=m}for(let s=0;s<50;s+=10){for(let c=0;c<10;c++)r[c]=e[s+c];for(let c=0;c<10;c++)e[s+c]^=~r[(c+2)%10]&r[(c+4)%10]}e[0]^=dh[n],e[1]^=fh[n]}(0,Ae.clean)(r)}var Zr=class e extends Ae.Hash{constructor(t,r,n,o=!1,a=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=t,this.suffix=r,this.outputLen=n,this.enableXOF=o,this.rounds=a,(0,Ae.anumber)(n),!(0<t&&t<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=(0,Ae.u32)(this.state)}clone(){return this._cloneInto()}keccak(){(0,Ae.swap32IfBE)(this.state32),cc(this.state32,this.rounds),(0,Ae.swap32IfBE)(this.state32),this.posOut=0,this.pos=0}update(t){(0,Ae.aexists)(this),t=(0,Ae.toBytes)(t),(0,Ae.abytes)(t);let{blockLen:r,state:n}=this,o=t.length;for(let a=0;a<o;){let s=Math.min(r-this.pos,o-a);for(let c=0;c<s;c++)n[this.pos++]^=t[a++];this.pos===r&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:t,suffix:r,pos:n,blockLen:o}=this;t[n]^=r,(r&128)!==0&&n===o-1&&this.keccak(),t[o-1]^=128,this.keccak()}writeInto(t){(0,Ae.aexists)(this,!1),(0,Ae.abytes)(t),this.finish();let r=this.state,{blockLen:n}=this;for(let o=0,a=t.length;o<a;){this.posOut>=n&&this.keccak();let s=Math.min(n-this.posOut,a-o);t.set(r.subarray(this.posOut,this.posOut+s),o),this.posOut+=s,o+=s}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return(0,Ae.anumber)(t),this.xofInto(new Uint8Array(t))}digestInto(t){if((0,Ae.aoutput)(t,this),this.finished)throw new Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,(0,Ae.clean)(this.state)}_cloneInto(t){let{blockLen:r,suffix:n,outputLen:o,rounds:a,enableXOF:s}=this;return t||(t=new e(r,n,o,s,a)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=a,t.suffix=n,t.outputLen=o,t.enableXOF=s,t.destroyed=this.destroyed,t}};ae.Keccak=Zr;var Nt=(e,t,r)=>(0,Ae.createHasher)(()=>new Zr(t,e,r));ae.sha3_224=Nt(6,144,224/8);ae.sha3_256=Nt(6,136,256/8);ae.sha3_384=Nt(6,104,384/8);ae.sha3_512=Nt(6,72,512/8);ae.keccak_224=Nt(1,144,224/8);ae.keccak_256=Nt(1,136,256/8);ae.keccak_384=Nt(1,104,384/8);ae.keccak_512=Nt(1,72,512/8);var lc=(e,t,r)=>(0,Ae.createXOFer)((n={})=>new Zr(t,e,n.dkLen===void 0?r:n.dkLen,!0));ae.shake128=lc(31,168,128/8);ae.shake256=lc(31,136,256/8)});var pc=Ze(ka=>{"use strict";Object.defineProperty(ka,"__esModule",{value:!0});ka.verifyEnvEncryptPublicKey=yh;var gh=mc(),hh=Tt("@noble/curves/secp256k1");function yh(e,t,r){if(t.length!==65)return null;let n=Buffer.from("dstack-env-encrypt-pubkey","utf8"),o=r;r.startsWith("0x")&&(o=r.slice(2));let a=Buffer.from(o,"hex"),s=Buffer.from(":","utf8"),c=Buffer.concat([n,s,a,Buffer.from(e)]),l=(0,gh.keccak_256)(c);try{let m=t.slice(0,32),p=t.slice(32,64),u=t[64],d=new Uint8Array(64);d.set(m,0),d.set(p,32);let f=hh.secp256k1.Signature.fromCompact(d).addRecoveryBit(u).recoverPublicKey(l);return"0x"+Buffer.from(f.toRawBytes(!0)).toString("hex")}catch(m){return console.error("signature verification failed:",m),null}}});import{readFileSync as vE}from"fs";import{dirname as bE,join as CE}from"path";import{fileURLToPath as wE}from"url";import{ZodError as Hw}from"zod";import Tr from"chalk";var Mc=qr(_i(),1);import{ofetch as vh}from"ofetch";function Si(e){return{all:e=e||new Map,on:function(t,r){var n=e.get(t);n?n.push(r):e.set(t,[r])},off:function(t,r){var n=e.get(t);n&&(r?n.splice(n.indexOf(r)>>>0,1):e.set(t,[]))},emit:function(t,r){var n=e.get(t);n&&n.slice().map(function(o){o(r)}),(n=e.get("*"))&&n.slice().map(function(o){o(t,r)})}}}var HI=qr(ha(),1),$e=qr(ha(),1),cw=qr(ki(),1),lw=qr(pc(),1);import{z as Ce}from"zod";import{z as se}from"zod";import{z as Ut}from"zod";import{z as K}from"zod";import{z as Ot}from"zod";import{anvil as dc,base as fc,mainnet as gc}from"viem/chains";import{z as fe}from"zod";import{z as Ne}from"zod";import{z as I}from"zod";import{z as A}from"zod";import{z as vr}from"zod";import{z as br}from"zod";import{z as F}from"zod";import{z as we}from"zod";import{z as H}from"zod";import xy from"crypto";import{z as mt}from"zod";import{z as rt}from"zod";import{z as ke}from"zod";import{z as ze}from"zod";import{z as Ke}from"zod";import{z as nv}from"zod";import{z as hc}from"zod";import{z as pt}from"zod";import{z as Er}from"zod";import{z as Jt}from"zod";import{z as re}from"zod";import{z as Av}from"zod";import{z as $v}from"zod";import{z as X}from"zod";import{z as ct}from"zod";import{z as Gv}from"zod";import{z as de}from"zod";import{z as R}from"zod";import{z as Sr}from"zod";import{z as Aa}from"zod";import{z as xe}from"zod";import{z as el}from"zod";import{z as it}from"zod";import{z as Ve}from"zod";import{z as Ft}from"zod";import{z as xa}from"zod";import{z as La}from"zod";import{z as Wt}from"zod";import{z as Se}from"zod";import{z as ge}from"zod";import{z as $}from"zod";import{z as W}from"zod";import{z as q}from"zod";import{z as ye}from"zod";import{createPublicClient as bc,createWalletClient as Qb,http as Pa,parseEventLogs as eC,parseEther as Cc}from"viem";import{privateKeyToAccount as tC}from"viem/accounts";import{isHex as wc}from"viem";import{createPublicClient as JI,createWalletClient as YI,http as ZI,custom as XI}from"viem";import{privateKeyToAccount as eA}from"viem/accounts";import{z as le}from"zod";import{createPublicClient as _c,createWalletClient as mC,http as $a,parseEventLogs as pC,parseEther as Sc}from"viem";import{privateKeyToAccount as uC}from"viem/accounts";import{z as me}from"zod";import{createPublicClient as kc,createWalletClient as yC,http as Da,parseEther as Ec}from"viem";import{privateKeyToAccount as vC}from"viem/accounts";import{z as pe}from"zod";import{createPublicClient as Ic,createWalletClient as _C,http as Ra,parseEther as Ac}from"viem";import{privateKeyToAccount as SC}from"viem/accounts";import{z as ue}from"zod";import{createPublicClient as xc,createWalletClient as AC,http as Ma,parseEther as Pc}from"viem";import{privateKeyToAccount as xC}from"viem/accounts";import{z as Cr}from"zod";import{createPublicClient as RC,http as MC}from"viem";import{createPublicClient as yA,http as vA}from"viem";import{z as wr}from"zod";import{z as ot}from"zod";import{z as FC}from"zod";import{z as _r}from"zod";import{z as nt}from"zod";import{z as _e}from"zod";import{z as Le}from"zod";import{z as Xr}from"zod";import{z as Be}from"zod";import{z as $c}from"zod";import{z as Dc}from"zod";import{z as Ue}from"zod";import{z as Gn}from"zod";import{z as Hn}from"zod";import{z as Te}from"zod";import{z as J}from"zod";var bh=Ce.object({detail:Ce.union([Ce.string(),Ce.array(Ce.object({msg:Ce.string(),type:Ce.string().optional(),ctx:Ce.record(Ce.unknown()).optional(),loc:Ce.array(Ce.union([Ce.string(),Ce.number()])).optional(),input:Ce.unknown().optional()}).passthrough()),Ce.record(Ce.unknown())]).optional(),type:Ce.string().optional(),code:Ce.string().optional()}),ut=class extends Error{constructor(e,t){super(e),this.name=this.constructor.name,this.status=t.status,this.statusText=t.statusText,this.detail=t.detail,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},Ea=class qn extends ut{constructor(t,r){super(t,{status:r?.status??0,statusText:r?.statusText??"Unknown Error",detail:r?.detail||t}),this.name="RequestError",this.isRequestError=!0,this.data=r?.data,this.request=r?.request,this.response=r?.response,this.code=r?.code,this.type=r?.type}static fromFetchError(t){let r=bh.safeParse(t.data);return r.success?new qn(t.message,{status:t.status??void 0,statusText:t.statusText??void 0,data:t.data,request:t.request??void 0,response:t.response??void 0,detail:r.data.detail,code:r.data.code??void 0,type:r.data.type??void 0}):new qn(t.message,{status:t.status??void 0,statusText:t.statusText??void 0,data:t.data,request:t.request??void 0,response:t.response??void 0,detail:t.data?.detail||"Unknown API error",code:t.status?.toString()??void 0})}static fromError(t,r){return new qn(t.message,{request:r??void 0,detail:t.message})}},Ch=class extends ut{constructor(e,t){super(e,t),this.isValidationError=!0,this.validationErrors=t.validationErrors}},wh=class extends ut{constructor(){super(...arguments),this.isAuthError=!0}},Wn=class extends ut{constructor(){super(...arguments),this.isBusinessError=!0}},_h=class extends ut{constructor(){super(...arguments),this.isServerError=!0}},Sh=class extends ut{constructor(){super(...arguments),this.isUnknownError=!0}};function kh(e){if(!e||!Array.isArray(e))return"unknown";let t=e.filter(r=>typeof r=="string"?!["body","query","path","header"].includes(r):!0);return t.length>0?t.join("."):"unknown"}function Tc(e){if(!Array.isArray(e))return{errors:[],message:typeof e=="string"?e:"Validation error"};let t=e.map((o,a)=>{let s=kh(o.loc),c=s;return s==="unknown"&&o.type&&(c=o.type==="missing"?"required field":o.type),{field:c,message:o.msg,type:o.type,context:o.ctx}}),r=t.length,n=r===1?`Validation failed: ${t[0].message}`:`Validation failed (${r} issue${r>1?"s":""})`;return{errors:t,message:n}}function Eh(e){return e===422?"validation":e===401||e===403?"auth":e>=400&&e<500?"business":e>=500?"server":"unknown"}function Ih(e,t,r){if(e===422&&Array.isArray(t)){let{message:n}=Tc(t);return n}if(typeof t=="string")return t;if(t&&typeof t=="object"&&"message"in t){let n=t.message;if(typeof n=="string")return n}return r}function Ah(e){let t=e.status??0,r=e.statusText??"Unknown Error",n=e.detail,o=xh(n);if(o)return new en(o.message,{status:t,statusText:r,detail:n,errorCode:o.error_code,structuredDetails:o.details,suggestions:o.suggestions,links:o.links});let a=Eh(t),s=Ih(t,n,e.message),c={status:t,statusText:r,detail:n};if(a==="validation"&&Array.isArray(n)){let{errors:l}=Tc(n);return new Ch(s,{...c,validationErrors:l})}return a==="auth"?new wh(s,c):a==="business"?new Wn(s,c):a==="server"?new _h(s,c):new Sh(s,c)}var en=class extends Wn{constructor(e,t){super(e,t),this.isResourceError=!0,this.errorCode=t.errorCode,this.structuredDetails=t.structuredDetails,this.suggestions=t.suggestions,this.links=t.links}};function xh(e){if(!e||typeof e!="object")return null;let t=e;return t.error_code&&typeof t.error_code=="string"&&t.message&&typeof t.message=="string"?{error_code:t.error_code,message:t.message,details:t.details,suggestions:t.suggestions,links:t.links}:null}function Jn(e,t){let{showErrorCode:r=!0,showSuggestions:n=!0,showLinks:o=!0}=t??{},a=[];return r&&e.errorCode?a.push(`Error [${e.errorCode}]: ${e.message}`):a.push(e.message),e.structuredDetails&&e.structuredDetails.length>0&&(a.push(""),a.push("Details:"),e.structuredDetails.forEach(s=>{s.message?a.push(` - ${s.message}`):s.field&&s.value!==void 0&&a.push(` - ${s.field}: ${s.value}`)})),n&&e.suggestions&&e.suggestions.length>0&&(a.push(""),a.push("Suggestions:"),e.suggestions.forEach(s=>{a.push(` - ${s}`)})),o&&e.links&&e.links.length>0&&(a.push(""),a.push("Learn more:"),e.links.forEach(s=>{a.push(` - ${s.label}: ${s.url}`)})),a.join(`
8
+ `)}var Yt=["2025-10-28","2026-01-21"],Ph="2026-01-21",yr=(0,Mc.default)("phala::api-client");function $h(e){return Object.entries(e).map(([t,r])=>` -H "${t}: ${r}"`).join(`
9
+ `)}function Dh(e){return e?` -d '${(typeof e=="string"?e:JSON.stringify(e,null,2)).replace(/'/g,"\\'")}'`:""}function uc(e,t,r,n){let o=[];r.forEach((c,l)=>{o.push(`${l}: ${c}`)});let a=o.join(`
10
+ `),s=typeof n=="string"?n:JSON.stringify(n,null,2);return[`< HTTP/1.1 ${e} ${t}`,a?`< ${a.replace(/\n/g,`
11
+ < `)}`:"","",s].filter(Boolean).join(`
12
+ `)}var Rh=class Lc{constructor(t={}){this.emitter=Si();let r=t.apiKey||process?.env?.PHALA_CLOUD_API_KEY,n=t.baseURL||process?.env?.PHALA_CLOUD_API_PREFIX||"https://cloud-api.phala.com/api/v1",o=t.version&&Yt.includes(t.version)?t.version:Ph;this.config={...t,apiKey:r,baseURL:n,version:o};let{apiKey:a,baseURL:s,timeout:c,headers:l,useCookieAuth:m,onResponseError:p,...u}=this.config,d={"X-Phala-Version":o,"Content-Type":"application/json"};l&&typeof l=="object"&&Object.entries(l).forEach(([f,g])=>{typeof g=="string"&&(d[f]=g)}),!m&&a&&(d["X-API-Key"]=a),this.fetchInstance=vh.create({baseURL:s,timeout:c||3e4,headers:d,...m?{credentials:"include"}:{},...u,onRequest({request:f,options:g}){if(yr.enabled){let h=g.method||"GET",v=typeof f=="string"?f:f.url,w=v.startsWith("http")?v:`${s}${v}`,C={};g.headers&&typeof g.headers=="object"&&Object.entries(g.headers).forEach(([S,E])=>{typeof E=="string"&&(C[S]=E)});let _=[`> curl -X ${h} "${w}"`,$h(C),g.body?Dh(g.body):""].filter(Boolean).join(`
13
+ `);yr(`
58
14
  === REQUEST ===
59
15
  %s
60
- `,v)}},onResponse({request:d,response:g,options:h}){if(ti.enabled){let y=h.method||"GET",b=typeof d=="string"?d:d.url;ti(`
16
+ `,_)}},onResponse({request:f,response:g,options:h}){if(yr.enabled){let v=h.method||"GET",w=typeof f=="string"?f:f.url;yr(`
61
17
  === RESPONSE [%s %s] (%dms) ===
62
18
  %s
63
- `,y,b,g.headers.get("x-response-time")||"?",Dv(g.status,g.statusText,g.headers,g._data))}},onResponseError:({request:d,response:g,options:h})=>{if(ti.enabled){console.warn(`HTTP ${g.status}: ${g.url}`);let y=h.method||"GET",b=typeof d=="string"?d:d.url;ti(`
19
+ `,v,w,g.headers.get("x-response-time")||"?",uc(g.status,g.statusText,g.headers,g._data))}},onResponseError:({request:f,response:g,options:h})=>{if(yr.enabled){console.warn(`HTTP ${g.status}: ${g.url}`);let v=h.method||"GET",w=typeof f=="string"?f:f.url;yr(`
64
20
  === ERROR RESPONSE [%s %s] ===
65
21
  %s
66
- `,y,b,Dv(g.status,g.statusText,g.headers,g._data))}u&&u({request:d,response:g,options:h})}})}get raw(){return this.fetchInstance}on(t,r){this.emitter.on(t,r)}off(t,r){this.emitter.off(t,r)}once(t,r){let n=o=>{r(o),this.emitter.off(t,n)};this.emitter.on(t,n)}async request(t,r){try{let n=r?.method||"GET";return await this.fetchInstance(t,{...r,method:n})}catch(n){let o=this.convertToRequestError(n);throw this.emitError(o)}}async requestFull(t,r){try{let n=r?.method||"GET",o=await this.fetchInstance.raw(t,{...r,method:n,ignoreResponseError:!0});return{status:o.status,statusText:o.statusText,headers:o.headers,data:o._data,ok:o.ok}}catch(n){let o=this.convertToRequestError(n);throw this.emitError(o)}}async get(t,r){try{return await this.fetchInstance(t,{...r,method:"GET"})}catch(n){let o=this.convertToRequestError(n);throw this.emitError(o)}}async post(t,r,n){try{return await this.fetchInstance(t,{...n,method:"POST",body:r})}catch(o){let s=this.convertToRequestError(o);throw this.emitError(s)}}async put(t,r,n){try{return await this.fetchInstance(t,{...n,method:"PUT",body:r})}catch(o){let s=this.convertToRequestError(o);throw this.emitError(s)}}async patch(t,r,n){try{return await this.fetchInstance(t,{...n,method:"PATCH",body:r})}catch(o){let s=this.convertToRequestError(o);throw this.emitError(s)}}async delete(t,r){try{return await this.fetchInstance(t,{...r,method:"DELETE"})}catch(n){let o=this.convertToRequestError(n);throw this.emitError(o)}}convertToRequestError(t){return t&&typeof t=="object"&&"data"in t?L0.fromFetchError(t):t instanceof Error?L0.fromError(t):new L0("Unknown error occurred",{detail:"Unknown error occurred"})}emitError(t){let r=a8(t);return this.emitter.emit("error",r),r}async safeRequest(t){try{return{success:!0,data:await t()}}catch(r){if(r instanceof rn)return{success:!1,error:r};let n=this.convertToRequestError(r);return this.emitError(n),{success:!1,error:n}}}async safeGet(t,r){return this.safeRequest(()=>this.get(t,r))}async safePost(t,r,n){return this.safeRequest(()=>this.post(t,r,n))}async safePut(t,r,n){return this.safeRequest(()=>this.put(t,r,n))}async safePatch(t,r,n){return this.safeRequest(()=>this.patch(t,r,n))}async safeDelete(t,r){return this.safeRequest(()=>this.delete(t,r))}async safeRequestMethod(t,r){return this.safeRequest(()=>this.request(t,r))}async safeRequestFull(t,r){return this.safeRequest(()=>this.requestFull(t,r))}withVersion(t){return new Kv({...this.config,version:t})}extend(t){let r=typeof t=="function"?t(this):t,n=Object.create(this);for(let[o,s]of Object.entries(r))typeof s=="function"&&(n[o]=(...a)=>s(this,...a));return n}};function l8(e={}){return new p8(e)}var f8=_e.object({username:_e.string(),email:_e.string(),role:_e.enum(["admin","user"]),avatar:_e.string(),email_verified:_e.boolean(),totp_enabled:_e.boolean(),has_backup_codes:_e.boolean(),flag_has_password:_e.boolean()}).passthrough(),d8=_e.object({id:_e.string(),name:_e.string(),slug:_e.string().nullable(),tier:_e.string(),role:_e.string(),avatar:_e.string().nullable().optional()}).passthrough(),g8=_e.object({balance:_e.string().or(_e.number()),granted_balance:_e.string().or(_e.number()),is_post_paid:_e.boolean(),outstanding_amount:_e.string().or(_e.number()).nullable()}).passthrough(),h8=_e.object({user:f8,workspace:d8,credits:g8}).passthrough(),y8=vo.object({username:vo.string(),email:vo.string(),credits:vo.number(),granted_credits:vo.number(),avatar:vo.string(),team_name:vo.string(),team_tier:vo.string()}).passthrough();function b8(e){return e==="2025-10-28"?y8:h8}async function Wv(e,t){let r=await e.get("/auth/me");return t?.schema===!1?r:(t?.schema||b8(e.config.version)).parse(r)}async function ht(e,t){try{return{success:!0,data:await Wv(e,t)}}catch(r){return r&&typeof r=="object"&&("status"in r||"issues"in r)?{success:!1,error:r}:{success:!1,error:{name:"Error",message:r instanceof Error?r.message:String(r)}}}}var x8={[Ou.id]:Ou,[Li.id]:Li,[qm.id]:qm},v8=wo.object({id:wo.string(),slug:wo.string().nullable(),url:wo.string(),version:wo.string(),chain_id:wo.number().nullable(),kms_contract_address:wo.string().nullable().transform(e=>e),gateway_app_id:wo.string().nullable().transform(e=>e)}).passthrough(),nn=v8.transform(e=>{if(e.chain_id!=null){let t=x8[e.chain_id];if(t)return{...e,chain:t}}return e});function Jv(e){if(e?.schema!==void 0&&e?.schema!==!1&&(typeof e.schema!="object"||e.schema===null||!("parse"in e.schema)||typeof e.schema.parse!="function"))throw new Error("Invalid schema: must be a Zod schema object, false, or undefined")}function Zv(e){if(e?.schema!==void 0&&e?.schema!==!1&&(typeof e.schema!="object"||e.schema===null||!("parse"in e.schema)||typeof e.schema.parse!="function"))return{success:!1,error:{name:"ZodError",message:"Invalid schema: must be a Zod schema object, false, or undefined",issues:[{code:"invalid_type",expected:"object",received:typeof e.schema,path:["schema"],message:"Invalid schema: must be a Zod schema object, false, or undefined"}]}}}function Yv(e,t){function r(a,i){return n(a,i)}async function n(a,i){Jv(i);let c=await t(a);return i?.schema===!1?c:(i?.schema||e).parse(c)}function o(a,i){return s(a,i)}async function s(a,i){let c=Zv(i);if(c)return c;let m=await(async()=>{try{return{success:!0,data:await t(a)}}catch(p){return p&&typeof p=="object"&&"status"in p?{success:!1,error:p}:p&&typeof p=="object"&&"issues"in p?{success:!1,error:p}:{success:!1,error:{name:"Error",message:p instanceof Error?p.message:String(p)}}}})();return m.success?i?.schema===!1?{success:!0,data:m.data}:(i?.schema||e).safeParse(m.data):m}return{action:r,safeAction:o}}function J(e,t){function r(a,...i){let[c,m]=i;return n(a,c,m)}async function n(a,i,c){Jv(c);let m=await t(a,i);return c?.schema===!1?m:(c?.schema||e).parse(m)}function o(a,...i){let[c,m]=i;return s(a,c,m)}async function s(a,i,c){let m=Zv(c);if(m)return m;let u=await(async()=>{try{return{success:!0,data:await t(a,i)}}catch(f){return f&&typeof f=="object"&&"status"in f?{success:!1,error:f}:f&&typeof f=="object"&&"issues"in f?{success:!1,error:f}:{success:!1,error:{name:"Error",message:f instanceof Error?f.message:String(f)}}}})();return u.success?c?.schema===!1?{success:!0,data:u.data}:(c?.schema||e).safeParse(u.data):u}return{action:r,safeAction:o}}var w8=Y.object({name:Y.string(),is_dev:Y.boolean(),version:Y.union([Y.tuple([Y.number(),Y.number(),Y.number()]),Y.tuple([Y.number(),Y.number(),Y.number(),Y.number()])]),os_image_hash:Y.string().nullable().optional()}).passthrough(),C8=Y.object({teepod_id:Y.number(),name:Y.string(),listed:Y.boolean(),resource_score:Y.number(),remaining_vcpu:Y.number(),remaining_memory:Y.number(),remaining_cvm_slots:Y.number(),images:Y.array(w8),support_onchain_kms:Y.boolean().optional(),fmspc:Y.string().nullable().optional(),device_id:Y.string().nullable().optional(),region_identifier:Y.string().nullable().optional(),default_kms:Y.string().nullable().optional(),kms_list:Y.array(Y.string()).default([])}).passthrough(),S8=Y.object({max_instances:Y.number().nullable().optional(),max_vcpu:Y.number().nullable().optional(),max_memory:Y.number().nullable().optional(),max_disk:Y.number().nullable().optional()}).passthrough(),k8=Y.object({tier:Y.string(),capacity:S8,nodes:Y.array(C8),kms_list:Y.array(nn)}).passthrough(),{action:E8,safeAction:j0}=Yv(k8,async e=>await e.get("/teepods/available")),Xv=De.object({id:De.string(),name:De.string(),description:De.string(),vcpu:De.number(),memory_mb:De.number(),hourly_rate:De.string(),requires_gpu:De.boolean(),default_disk_size_gb:De.number().default(20),family:De.string().nullable()}).passthrough(),_8=De.object({name:De.string(),items:De.array(Xv),total:De.number()}).strict(),I8=De.object({result:De.array(_8)}).strict(),A8=De.object({items:De.array(Xv),total:De.number(),family:De.string()}).strict(),P8=De.object({family:De.string()}).strict(),{action:H0,safeAction:T8}=J(I8,async e=>await e.get("/instance-types")),{action:V0,safeAction:$8}=J(A8,async(e,t)=>{let r=P8.parse(t);return await e.get(`/instance-types/${r.family}`)}),Qv=St.object({id:St.string(),name:St.string(),slug:St.string().nullable(),tier:St.string(),role:St.string(),is_default:St.boolean(),created_at:St.string(),confidential_models_enabled:St.boolean().optional()}).passthrough(),R8=St.object({has_more:St.boolean(),next_cursor:St.string().nullable(),total:St.number().nullable()}).passthrough(),M8=St.object({data:St.array(Qv),pagination:R8}).passthrough(),{action:F8,safeAction:N8}=J(M8,async(e,t)=>{let r=new URLSearchParams;t?.cursor&&r.append("cursor",t.cursor),t?.limit&&r.append("limit",t.limit.toString());let n=r.toString()?`/workspaces?${r.toString()}`:"/workspaces";return await e.get(n)}),{action:L8,safeAction:B8}=J(Qv,async(e,t)=>await e.get(`/workspaces/${t}`)),D8=$.object({id:$.string(),name:$.string(),status:$.string(),uptime:$.string(),app_url:$.string().nullable(),app_id:$.string(),instance_id:$.string().nullable(),configuration:$.any().optional(),exited_at:$.string().nullable(),boot_progress:$.string().nullable(),boot_error:$.string().nullable(),shutdown_progress:$.string().nullable(),image_version:$.string().nullable()}),U8=$.object({id:$.number(),username:$.string()}),ew=$.object({id:$.number(),name:$.string(),region_identifier:$.string().nullable().optional()}),G0=$.object({vcpu:$.number(),memory:$.number(),disk_size:$.number(),gpu_count:$.number().default(0)}),q0=$.object({app:$.string(),instance:$.string()}),z8=$.object({hosted:D8,name:$.string(),managed_user:U8.nullable(),node:ew.nullable(),listed:$.boolean().default(!1),status:$.string(),in_progress:$.boolean().default(!1),dapp_dashboard_url:$.string().nullable(),syslog_endpoint:$.string().nullable(),allow_upgrade:$.boolean().default(!1),project_id:$.string().nullable(),project_type:$.string().nullable(),billing_period:$.string().nullable(),kms_info:nn.nullable(),vcpu:$.number().nullable(),memory:$.number().nullable(),disk_size:$.number().nullable(),gateway_domain:$.string().nullable(),public_urls:$.array(q0),machine_info:G0.nullable().optional(),updated_at:$.string().nullable().optional()}),tw=$.object({id:$.number(),name:$.string(),status:$.string(),in_progress:$.boolean().optional().default(!1),teepod_id:$.number().nullable(),teepod:ew.optional().nullable(),app_id:$.string(),vm_uuid:$.string().nullable(),instance_id:$.string().nullable(),vcpu:$.number(),memory:$.number(),disk_size:$.number(),base_image:$.string().nullable(),encrypted_env_pubkey:$.string().nullable(),listed:$.boolean().optional().default(!1),project_id:$.string().optional().nullable(),project_type:$.string().optional().nullable(),instance_type:$.string().optional().nullable(),public_sysinfo:$.boolean().optional().default(!1),public_logs:$.boolean().optional().default(!1),dapp_dashboard_url:$.string().optional().nullable(),syslog_endpoint:$.string().optional().nullable(),kms_info:nn.optional().nullable(),contract_address:$.string().optional().nullable(),deployer_address:$.string().optional().nullable(),scheduled_delete_at:$.string().optional().nullable(),public_urls:$.array(q0).optional().default([]),gateway_domain:$.string().optional().nullable(),machine_info:G0.optional().nullable(),updated_at:$.string().optional().nullable()}),O8=$.object({items:$.array(z8),total:$.number(),page:$.number(),page_size:$.number(),pages:$.number()}),j8=R.enum(["skip","hourly","monthly"]),H8=R.enum(["phala","ethereum","base","legacy"]),K0=R.object({object_type:R.literal("user"),id:R.string().nullable().optional(),username:R.string().nullable().optional(),avatar_url:R.string().nullable().optional()}),W0=R.object({object_type:R.literal("workspace"),id:R.string(),name:R.string(),slug:R.string().nullable().optional(),avatar_url:R.string().nullable().optional()}),V8=R.object({instance_type:R.string().nullable().optional(),vcpu:R.number().int().nullable().optional(),memory_in_gb:R.number().nullable().optional(),disk_in_gb:R.number().int().nullable().optional(),gpus:R.number().int().nullable().optional(),compute_billing_price:R.string().nullable().optional(),billing_period:j8.nullable().optional()}),G8=R.object({name:R.string().nullable().optional(),version:R.string().nullable().optional(),is_dev:R.boolean().nullable().optional(),os_image_hash:R.string().nullable().optional()}),q8=R.object({chain_id:R.number().int().nullable().optional(),dstack_kms_address:R.string().nullable().optional(),dstack_app_address:R.string().nullable().optional(),deployer_address:R.string().nullable().optional(),rpc_endpoint:R.string().nullable().optional(),encrypted_env_pubkey:R.string().nullable().optional()}),K8=R.object({target:R.string().nullable().optional(),started_at:R.string().nullable().optional(),correlation_id:R.string().nullable().optional()}),W8=R.object({base_domain:R.string().nullable().optional(),cname:R.string().nullable().optional()}),rw=R.object({object_type:R.literal("node"),id:R.number().int().nullable().optional(),name:R.string().nullable().optional(),region:R.string().nullable().optional(),device_id:R.string().nullable().optional(),ppid:R.string().nullable().optional(),status:R.string().nullable().optional(),version:R.string().nullable().optional()});var Cl=R.object({id:R.string(),name:R.string(),app_id:R.string().nullable().optional(),vm_uuid:R.string().nullable().optional(),instance_id:R.string().nullable().optional(),resource:V8,node_info:rw.nullable().optional(),os:G8.nullable().optional(),kms_type:H8.nullable().optional(),kms_info:q8.nullable().optional(),status:R.string(),progress:K8.nullable().optional(),compose_hash:R.string().nullable().optional(),gateway:W8,services:R.array(R.record(R.any())).optional().default([]),endpoints:R.array(q0).nullable().optional(),public_logs:R.boolean().optional(),public_sysinfo:R.boolean().optional(),public_tcbinfo:R.boolean().optional(),gateway_enabled:R.boolean().optional(),secure_time:R.boolean().optional(),listed:R.boolean().optional().default(!1),storage_fs:R.string().optional(),workspace:W0.nullable().optional(),creator:K0.nullable().optional()}),J8=Cl.extend({compose_file:R.union([R.record(R.any()),R.string()]).nullable().optional()}),Z8=R.object({items:R.array(Cl),total:R.number(),page:R.number(),page_size:R.number(),pages:R.number()});function mi(e){return typeof e!="string"||e.length<5||e.length>63?!1:/^[a-zA-Z](?!.*--)([a-zA-Z0-9-]*[a-zA-Z0-9])?$/.test(e)}function nw(e){if(typeof e!="string")return bl();let t=e;return t=t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),t=t.replace(/_/g,"-"),t=t.replace(/[^a-z0-9\s-]/gi,"-").replace(/\s+/g,"-"),t=t.replace(/-+/g,"-").replace(/^-+/,"").replace(/-+$/,""),t.length===0||(/^\d/.test(t)&&(t=`dstack-app-${t}`),t.length<5&&(t=`dstack-app-${t}`),t=t.slice(0,63).replace(/-+$/,""),t.length===0)||!mi(t)?bl():t}function bl(){let e=Date.now().toString(36),t=Math.random().toString(36).substring(2,6);return`dstack-app-${e}-${t}`}var fr=ri.object({id:ri.string().optional(),uuid:ri.string().regex(/^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i,"Invalid UUID format").optional(),app_id:ri.string().optional(),instance_id:ri.string().optional(),name:ri.string().refine(mi,{message:"Name must be 5-63 characters, start with letter, and contain only letters/numbers/hyphens"}).optional()}),on=e=>e.refine(t=>{let r=t;return!!(r.id||r.uuid||r.app_id||r.instance_id||r.name)},{message:"One of id, uuid, app_id, instance_id, or name must be provided"}),Y8=on(fr),X=Y8.transform(e=>{let t;if(e.id)t=e.id;else if(e.uuid)t=e.uuid;else if(e.app_id)t=e.app_id;else if(e.instance_id)t=e.instance_id;else{if(e.name)return{cvmId:e.name};throw new Error("No valid identifier provided")}let r=/^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i,n=/^[0-9a-f]{40}$/i,o;return r.test(t)?o=t.replace(/-/g,""):n.test(t)?o=`app_${t}`:o=t,{cvmId:o}}),X8=X;function Q8(e){return e==="2025-10-28"?tw:J8}async function ow(e,t){let{cvmId:r}=X8.parse(t),n=await e.get(`/cvms/${r}`);return Q8(e.config.version).parse(n)}async function Re(e,t){try{return{success:!0,data:await ow(e,t)}}catch(r){return r&&typeof r=="object"&&("status"in r||"issues"in r)?{success:!1,error:r}:{success:!1,error:{name:"Error",message:r instanceof Error?r.message:String(r)}}}}var eA=ni.object({page:ni.number().int().min(1).optional(),page_size:ni.number().int().min(1).optional(),node_id:ni.number().int().min(1).optional(),teepod_id:ni.number().int().min(1).optional(),user_id:ni.string().optional()}).strict();function tA(e){return e==="2025-10-28"?O8:Z8}async function sw(e,t){let r=eA.parse(t??{}),n=await e.get("/cvms/paginated",{params:r});return tA(e.config.version).parse(n)}async function _c(e,t){try{return{success:!0,data:await sw(e,t)}}catch(r){return r&&typeof r=="object"&&("status"in r||"issues"in r)?{success:!1,error:r}:{success:!1,error:{name:"Error",message:r instanceof Error?r.message:String(r)}}}}var kc=200*1024;function aw(e,t,r){let n=new TextEncoder,o=e?n.encode(e).byteLength:0,s=t?n.encode(t).byteLength:0,a=o+s;if(a>kc){let i=kc/1024,c=Math.ceil(a/1024);r.addIssue({code:dt.ZodIssueCode.custom,message:`Combined size of docker_compose_file and pre_launch_script must not exceed ${i}KB (current: ${c}KB)`})}}var iw=dt.object({allowed_envs:dt.array(dt.string()).optional(),docker_compose_file:dt.string(),features:dt.array(dt.string()).optional(),name:dt.string().optional(),manifest_version:dt.number().optional(),kms_enabled:dt.boolean().optional(),public_logs:dt.boolean().optional(),public_sysinfo:dt.boolean().optional(),tproxy_enabled:dt.boolean().optional(),pre_launch_script:dt.string().optional(),env_pubkey:dt.string().optional(),salt:dt.string().optional().nullable()}).passthrough().superRefine((e,t)=>{aw(e.docker_compose_file,e.pre_launch_script,t)}),rA=Z.object({app_id:Z.string().nullable().optional(),app_env_encrypt_pubkey:Z.string().nullable().optional(),compose_hash:Z.string(),kms_info:nn.nullable().optional(),fmspc:Z.string().nullable().optional(),device_id:Z.string().nullable().optional(),os_image_hash:Z.string().nullable().optional(),instance_type:Z.string().nullable().optional(),teepod_id:Z.number().nullable().optional(),node_id:Z.number().nullable().optional(),kms_id:Z.string().nullable().optional()}).passthrough().transform(e=>{if("teepod_id"in e&&e.teepod_id!==void 0){let{teepod_id:t,...r}=e;return{...r,node_id:t}}return e}),B0="Name must be 5-63 characters, start with letter, and contain only letters/numbers/hyphens",nA=Z.object({node_id:Z.number().optional(),teepod_id:Z.number().optional(),region:Z.string().optional(),name:Z.string().min(5,B0).max(63,B0).refine(e=>mi(e),B0),instance_type:Z.string().optional(),image:Z.string().optional(),vcpu:Z.number().optional(),memory:Z.number().optional(),disk_size:Z.number().optional(),compose_file:Z.object({allowed_envs:Z.array(Z.string()).optional(),pre_launch_script:Z.string().optional(),docker_compose_file:Z.string().optional(),name:Z.string().optional().default(""),kms_enabled:Z.boolean().optional(),public_logs:Z.boolean().optional(),public_sysinfo:Z.boolean().optional(),gateway_enabled:Z.boolean().optional(),tproxy_enabled:Z.boolean().optional()}).superRefine((e,t)=>{aw(e.docker_compose_file,e.pre_launch_script,t)}),listed:Z.boolean().optional(),kms_id:Z.string().optional(),kms:Z.enum(["PHALA","ETHEREUM","BASE"]).optional(),kms_contract:Z.string().optional(),env_keys:Z.array(Z.string()).optional(),nonce:Z.number().optional(),app_id:Z.string().optional()}).passthrough().transform(e=>!e.instance_type&&!e.vcpu&&!e.memory?{...e,instance_type:"tdx.small"}:e);function oA(e){if(!e.compose_file)return e;let t={...e.compose_file};return typeof t.gateway_enabled=="boolean"&&typeof t.tproxy_enabled=="boolean"?delete t.tproxy_enabled:typeof t.tproxy_enabled=="boolean"&&typeof t.gateway_enabled>"u"&&(t.gateway_enabled=t.tproxy_enabled,delete t.tproxy_enabled,(typeof window<"u"?window.console:globalThis.console)&&console.warn("[phala/cloud] tproxy_enabled is deprecated, please use gateway_enabled instead. See docs for migration.")),{...e,compose_file:t}}var{action:sA,safeAction:J0}=J(rA,async(e,t)=>{let r=nA.parse(t),n=oA(r),o={...n};return typeof n.node_id=="number"?(o={...n,teepod_id:n.node_id},delete o.node_id):typeof n.teepod_id=="number"&&console.warn("[phala/cloud] teepod_id is deprecated, please use node_id instead."),await e.post("/cvms/provision",o)}),aA=ee.object({id:ee.number(),name:ee.string(),status:ee.string(),teepod_id:ee.number(),teepod:ee.object({id:ee.number(),name:ee.string()}).nullable(),user_id:ee.number().nullable(),app_id:ee.string().nullable(),vm_uuid:ee.string().nullable(),instance_id:ee.string().nullable(),app_url:ee.string().nullable().default(null),base_image:ee.string().nullable(),vcpu:ee.number(),memory:ee.number(),disk_size:ee.number(),manifest_version:ee.number().nullable().default(2),version:ee.string().nullable().default("1.0.0"),runner:ee.string().nullable().default("docker-compose"),docker_compose_file:ee.string().nullable(),features:ee.array(ee.string()).nullable().default(["kms","tproxy-net"]),created_at:ee.string(),encrypted_env_pubkey:ee.string().nullable().optional(),app_auth_contract_address:ee.string().nullable().optional(),deployer_address:ee.string().nullable().optional()}).passthrough(),mse=ee.object({encrypted_env:ee.string().optional().nullable(),app_id:ee.string(),compose_hash:ee.string(),kms_id:ee.string().optional(),contract_address:ee.string().optional(),deployer_address:ee.string().optional(),env_keys:ee.array(ee.string()).optional().nullable()}).passthrough(),{action:iA,safeAction:_l}=J(aA,async(e,t)=>await e.post("/cvms",t));function z0(e){return e==null?e:Array.isArray(e)?e.map(z0):e&&typeof e=="object"&&e.constructor===Object?Object.keys(e).sort().reduce((t,r)=>{let n=e[r];return t[r]=z0(n),t},{}):e}function cw(e){let t={...e};return t.runner==="bash"&&"docker_compose_file"in t?delete t.docker_compose_file:t.runner==="docker-compose"&&"bash_script"in t&&delete t.bash_script,"pre_launch_script"in t&&!t.pre_launch_script&&delete t.pre_launch_script,t}function mw(e){let t=z0(e),r=JSON.stringify(t,null,4);return r=r.replace(/": /g,'":'),r}function mA(e){let t=cw(e),r=mw(t);return cA.createHash("sha256").update(r,"utf8").digest("hex")}function uA(e){let t=e;return{...e,getHash:()=>mA(t),toString:()=>mw(cw(t))}}var pA=iw.transform(e=>uA(e)),lA=X,{action:fA,safeAction:Ic}=J(pA,async(e,t)=>{let{cvmId:r}=lA.parse(t);return await e.get(`/cvms/${r}/compose_file`)}),dA=en.object({id:en.string().optional(),uuid:en.string().regex(/^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i).optional(),app_id:en.string().refine(e=>!e.startsWith("app_")&&e.length===40,"app_id should be 40 characters without prefix").transform(e=>e.startsWith("app_")?e:`app_${e}`).optional(),instance_id:en.string().refine(e=>!e.startsWith("instance_")&&e.length===40,"instance_id should be 40 characters without prefix").transform(e=>e.startsWith("instance_")?e:`instance_${e}`).optional(),app_compose:iw,update_env_vars:en.boolean().optional().nullable()}).refine(e=>!!(e.id||e.uuid||e.app_id||e.instance_id),"One of id, uuid, app_id, or instance_id must be provided").transform(e=>({cvmId:e.id||e.uuid||e.app_id||e.instance_id,request:{...e.app_compose,update_env_vars:e.update_env_vars},_raw:e})),gA=en.object({app_id:en.string().nullable(),device_id:en.string().nullable(),compose_hash:en.string(),kms_info:nn.nullable().optional()}).passthrough(),{action:hA,safeAction:Z0}=J(gA,async(e,t)=>{let r=dA.parse(t);return await e.post(`/cvms/${r.cvmId}/compose_file/provision`,r.request)}),yA=Pr.object({id:Pr.string().optional(),uuid:Pr.string().regex(/^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i).optional(),app_id:Pr.string().refine(e=>!e.startsWith("app_")&&e.length===40,"app_id should be 40 characters without prefix").transform(e=>e.startsWith("app_")?e:`app_${e}`).optional(),instance_id:Pr.string().refine(e=>!e.startsWith("instance_")&&e.length===40,"instance_id should be 40 characters without prefix").transform(e=>e.startsWith("instance_")?e:`instance_${e}`).optional(),compose_hash:Pr.string().min(1,"Compose hash is required"),encrypted_env:Pr.string().optional(),env_keys:Pr.array(Pr.string()).optional(),update_env_vars:Pr.boolean().optional().nullable()}).refine(e=>!!(e.id||e.uuid||e.app_id||e.instance_id),"One of id, uuid, app_id, or instance_id must be provided").transform(e=>({cvmId:e.id||e.uuid||e.app_id||e.instance_id,compose_hash:e.compose_hash,encrypted_env:e.encrypted_env,env_keys:e.env_keys,update_env_vars:e.update_env_vars??void 0,_raw:e})),bA=Pr.any().transform(()=>{}),{action:xA,safeAction:Y0}=J(bA,async(e,t)=>{let r=yA.parse(t);return await e.patch(`/cvms/${r.cvmId}/compose_file`,{compose_hash:r.compose_hash,encrypted_env:r.encrypted_env,env_keys:r.env_keys,update_env_vars:r.update_env_vars})}),vA=on(fr.extend({encrypted_env:st.string().describe("Encrypted environment variables (hex string)"),env_keys:st.array(st.string()).optional().describe("List of allowed environment variable keys"),compose_hash:st.string().optional().describe("Compose hash for verification (Phase 2, required when env_keys changes)"),transaction_hash:st.string().optional().describe("On-chain transaction hash for verification (Phase 2, required when env_keys changes)")})).transform(e=>{let{cvmId:t}=X.parse(e);return{cvmId:t,request:{encrypted_env:e.encrypted_env,env_keys:e.env_keys,compose_hash:e.compose_hash,transaction_hash:e.transaction_hash},_raw:e}}),wA=st.object({status:st.literal("in_progress"),message:st.string(),correlation_id:st.string(),allowed_envs_changed:st.boolean()}),CA=st.object({status:st.literal("precondition_required"),message:st.string(),compose_hash:st.string(),app_id:st.string(),device_id:st.string(),kms_info:nn}),SA=st.union([wA,CA]),{action:kA,safeAction:EA}=J(SA,async(e,t)=>{let r=vA.parse(t);try{return await e.patch(`/cvms/${r.cvmId}/envs`,r.request)}catch(n){if(n instanceof rn&&n.status===465){let o=n.detail;if(o&&typeof o=="object"){let s=o;return{status:"precondition_required",message:s.message||"Compose hash verification required",compose_hash:s.compose_hash,app_id:s.app_id,device_id:s.device_id,kms_info:s.kms_info}}}throw n}}),_A=on(fr.extend({docker_compose_file:Nt.string().describe("Docker Compose YAML content"),compose_hash:Nt.string().optional().describe("Compose hash for verification (Phase 2, contract-owned KMS only)"),transaction_hash:Nt.string().optional().describe("On-chain transaction hash for verification (Phase 2, contract-owned KMS only)")})).transform(e=>{let{cvmId:t}=X.parse(e);return{cvmId:t,request:{docker_compose_file:e.docker_compose_file,compose_hash:e.compose_hash,transaction_hash:e.transaction_hash},_raw:e}}),IA=Nt.object({status:Nt.literal("in_progress"),message:Nt.string(),correlation_id:Nt.string()}),AA=Nt.object({status:Nt.literal("precondition_required"),message:Nt.string(),compose_hash:Nt.string(),app_id:Nt.string(),device_id:Nt.string(),kms_info:nn}),PA=Nt.union([IA,AA]),{action:TA,safeAction:$A}=J(PA,async(e,t)=>{let r=_A.parse(t),n={"Content-Type":"text/yaml"};r.request.compose_hash&&(n["X-Compose-Hash"]=r.request.compose_hash),r.request.transaction_hash&&(n["X-Transaction-Hash"]=r.request.transaction_hash);try{return await e.patch(`/cvms/${r.cvmId}/docker-compose`,r.request.docker_compose_file,{headers:n})}catch(o){if(o instanceof rn&&o.status===465){let s=o.detail;if(s&&typeof s=="object"){let a=s;return{status:"precondition_required",message:a.message||"Compose hash verification required",compose_hash:a.compose_hash,app_id:a.app_id,device_id:a.device_id,kms_info:a.kms_info}}}throw o}}),RA=on(fr.extend({pre_launch_script:Lt.string().describe("Pre-launch script content (shell script)"),compose_hash:Lt.string().optional().describe("Compose hash for verification (Phase 2, contract-owned KMS only)"),transaction_hash:Lt.string().optional().describe("On-chain transaction hash for verification (Phase 2, contract-owned KMS only)")})).transform(e=>{let{cvmId:t}=X.parse(e);return{cvmId:t,request:{pre_launch_script:e.pre_launch_script,compose_hash:e.compose_hash,transaction_hash:e.transaction_hash},_raw:e}}),MA=Lt.object({status:Lt.literal("in_progress"),message:Lt.string(),correlation_id:Lt.string()}),FA=Lt.object({status:Lt.literal("precondition_required"),message:Lt.string(),compose_hash:Lt.string(),app_id:Lt.string(),device_id:Lt.string(),kms_info:nn}),NA=Lt.union([MA,FA]),{action:LA,safeAction:BA}=J(NA,async(e,t)=>{let r=RA.parse(t),n={"Content-Type":"text/plain"};r.request.compose_hash&&(n["X-Compose-Hash"]=r.request.compose_hash),r.request.transaction_hash&&(n["X-Transaction-Hash"]=r.request.transaction_hash);try{return await e.patch(`/cvms/${r.cvmId}/pre-launch-script`,r.request.pre_launch_script,{headers:n})}catch(o){if(o instanceof rn&&o.status===465){let s=o.detail;if(s&&typeof s=="object"){let a=s;return{status:"precondition_required",message:a.message||"Compose hash verification required",compose_hash:a.compose_hash,app_id:a.app_id,device_id:a.device_id,kms_info:a.kms_info}}}throw o}}),UA=X,{action:zA,safeAction:OA}=J(DA.string(),async(e,t)=>{let{cvmId:r}=UA.parse(t);return await e.get(`/cvms/${r}/pre-launch-script`)}),jA=Uv.object({kms_id:Uv.string().min(1,"KMS ID is required")}),{action:HA,safeAction:VA}=J(nn,async(e,t)=>{let r=jA.parse(t);return await e.get(`/kms/${r.kms_id}`)}),GA=tn.object({page:tn.number().int().min(1).optional(),page_size:tn.number().int().min(1).optional(),is_onchain:tn.boolean().optional()}).strict(),qA=tn.object({items:tn.array(nn),total:tn.number(),page:tn.number(),page_size:tn.number(),pages:tn.number()}).strict(),{action:KA,safeAction:WA}=J(qA,async(e,t)=>{let r=GA.parse(t??{});return await e.get("/kms",{params:r})}),JA=ci.object({kms:ci.string().min(1,"KMS ID or slug is required"),app_id:ci.string().refine(e=>e.length===40||e.startsWith("0x")&&e.length===42,"App ID must be exactly 40 characters or 42 characters with 0x prefix")}).strict(),ZA=ci.object({public_key:ci.string(),signature:ci.string()}).strict(),{action:YA,safeAction:Il}=J(ZA,async(e,t)=>{let r=JA.parse(t);return await e.get(`/kms/${r.kms}/pubkey/${r.app_id}`)}),XA=ns.object({counts:ns.number().int().min(1).max(20).optional().default(1)}).strict(),QA=ns.object({app_ids:ns.array(ns.object({app_id:ns.string(),nonce:ns.number().int().min(0)}))}).strict(),{action:eP,safeAction:tP}=J(QA,async(e,t)=>{let r=XA.parse(t??{}),n=new URLSearchParams;return n.append("counts",r.counts.toString()),await e.get(`/kms/phala/next_app_id?${n.toString()}`)}),Ac=Ce.object({id:Ce.number(),name:Ce.string(),status:Ce.string(),teepod_id:Ce.number(),teepod:Ce.object({id:Ce.number(),name:Ce.string(),region_identifier:Ce.string().nullable().optional()}).optional().nullable(),user_id:Ce.number().optional().nullable(),app_id:Ce.string(),vm_uuid:Ce.string().nullable(),instance_id:Ce.string().nullable(),app_url:Ce.string().optional().nullable(),base_image:Ce.string().optional().nullable(),vcpu:Ce.number(),memory:Ce.number(),disk_size:Ce.number(),manifest_version:Ce.number().optional().nullable(),version:Ce.string().optional().nullable(),runner:Ce.string().optional().nullable(),docker_compose_file:Ce.string().optional().nullable(),features:Ce.array(Ce.string()).optional().nullable(),created_at:Ce.string(),encrypted_env_pubkey:Ce.string().nullable()}),rP=X,{action:nP,safeAction:X0}=J(Ac,async(e,t)=>{let{cvmId:r}=rP.parse(t);return await e.post(`/cvms/${r}/start`)}),oP=X,{action:sP,safeAction:Q0}=J(Ac,async(e,t)=>{let{cvmId:r}=oP.parse(t);return await e.post(`/cvms/${r}/stop`)}),aP=X,{action:iP,safeAction:cP}=J(Ac,async(e,t)=>{let{cvmId:r}=aP.parse(t);return await e.post(`/cvms/${r}/shutdown`)}),uP=on(fr.extend({force:mP.boolean().optional()})),{action:pP,safeAction:eg}=J(Ac,async(e,t)=>{let r=uP.parse(t),{cvmId:n}=X.parse(r),{force:o=!1}=r;return await e.post(`/cvms/${n}/restart`,{force:o})}),fP=X,{action:dP,safeAction:tg}=J(lP.void(),async(e,t)=>{let{cvmId:r}=fP.parse(t);await e.delete(`/cvms/${r}`)}),gP=le.object({name:le.string(),mount_point:le.string(),total_size:le.number(),free_size:le.number()}),hP=le.object({os_name:le.string(),os_version:le.string(),kernel_version:le.string(),cpu_model:le.string(),num_cpus:le.number(),total_memory:le.number(),available_memory:le.number(),used_memory:le.number(),free_memory:le.number(),total_swap:le.number(),used_swap:le.number(),free_swap:le.number(),uptime:le.number(),loadavg_one:le.number(),loadavg_five:le.number(),loadavg_fifteen:le.number(),disks:le.array(gP)}),yP=le.object({is_online:le.boolean(),is_public:le.boolean().default(!1),error:le.string().nullable(),sysinfo:hP.nullable(),status:le.string().nullable(),in_progress:le.boolean().default(!1),boot_progress:le.string().nullable(),boot_error:le.string().nullable()}),bP=X,{action:xP,safeAction:vP}=J(yP,async(e,t)=>{let{cvmId:r}=bP.parse(t);return await e.get(`/cvms/${r}/stats`)}),wP=Xr.object({app:Xr.string(),instance:Xr.string()}),CP=Xr.object({is_online:Xr.boolean(),is_public:Xr.boolean().default(!0),error:Xr.string().nullable(),internal_ip:Xr.string().nullable(),latest_handshake:Xr.string().nullable(),public_urls:Xr.array(wP).nullable()}),SP=X,{action:kP,safeAction:EP}=J(CP,async(e,t)=>{let{cvmId:r}=SP.parse(t);return await e.get(`/cvms/${r}/network`)}),IP=X,{action:AP,safeAction:PP}=J(_P.string(),async(e,t)=>{let{cvmId:r}=IP.parse(t);return await e.get(`/cvms/${r}/docker-compose.yml`)}),TP=Be.object({id:Be.string(),names:Be.array(Be.string()),image:Be.string(),image_id:Be.string(),command:Be.string().nullable().optional(),created:Be.number(),state:Be.string(),status:Be.string(),log_endpoint:Be.string().nullable()}),$P=Be.object({is_online:Be.boolean(),is_public:Be.boolean().default(!0),error:Be.string().nullable(),docker_compose_file:Be.string().nullable(),manifest_version:Be.number().nullable(),version:Be.string().nullable(),runner:Be.string().nullable(),features:Be.array(Be.string()).nullable(),containers:Be.array(TP).nullable()}),RP=X,{action:MP,safeAction:rg}=J($P,async(e,t)=>{let{cvmId:r}=RP.parse(t);return await e.get(`/cvms/${r}/composition`)}),FP=G.object({common_name:G.string().nullable(),organization:G.string().nullable(),country:G.string().nullable(),state:G.string().nullable(),locality:G.string().nullable()}),NP=G.object({common_name:G.string().nullable(),organization:G.string().nullable(),country:G.string().nullable()}),uw=G.object({subject:FP,issuer:NP,serial_number:G.string(),not_before:G.string(),not_after:G.string(),version:G.string(),fingerprint:G.string(),signature_algorithm:G.string(),sans:G.array(G.string()).nullable(),is_ca:G.boolean(),position_in_chain:G.number().nullable(),quote:G.string().nullable(),app_id:G.string().nullable().optional(),cert_usage:G.string().nullable().optional()}),LP=G.object({imr:G.number(),event_type:G.number(),digest:G.string(),event:G.string(),event_payload:G.string()}),pw=G.object({mrtd:G.string(),rootfs_hash:G.string().nullable().optional(),rtmr0:G.string(),rtmr1:G.string(),rtmr2:G.string(),rtmr3:G.string(),event_log:G.array(LP),app_compose:G.string()}),BP=G.object({name:G.string().nullable(),is_online:G.boolean(),is_public:G.boolean().default(!0),error:G.string().nullable(),app_certificates:G.array(uw).nullable(),tcb_info:pw.nullable(),compose_file:G.string().nullable()}),DP=X,{action:UP,safeAction:zP}=J(BP,async(e,t)=>{let{cvmId:r}=DP.parse(t);return await e.get(`/cvms/${r}/attestation`)}),OP=on(fr.extend({vcpu:ai.number().optional(),memory:ai.number().optional(),disk_size:ai.number().optional(),instance_type:ai.string().optional(),allow_restart:ai.boolean().optional()})),{action:jP,safeAction:HP}=J(ai.void(),async(e,t)=>{let r=OP.parse(t),{cvmId:n}=X.parse(r),{...o}=r;await e.patch(`/cvms/${n}/resources`,o)}),VP=on(fr.extend({public_sysinfo:D0.boolean(),public_logs:D0.boolean(),public_tcbinfo:D0.boolean().optional()})),{action:GP,safeAction:ng}=J(tw,async(e,t)=>{let r=VP.parse(t),{cvmId:n}=X.parse(r),{public_sysinfo:o,public_logs:s,public_tcbinfo:a}=r;return await e.patch(`/cvms/${n}/visibility`,{public_sysinfo:o,public_logs:s,public_tcbinfo:a})}),zv=gt.object({name:gt.string(),os_image_hash:gt.string().nullable(),is_current:gt.boolean()}),qP=gt.object({version:gt.union([gt.tuple([gt.number(),gt.number(),gt.number(),gt.number()]),gt.tuple([gt.number(),gt.number(),gt.number()])]),prod:zv.nullable(),dev:zv.nullable()}),KP=gt.array(qP),WP=X,{action:JP,safeAction:ZP}=J(KP,async(e,t)=>{let{cvmId:r}=WP.parse(t);return await e.get(`/cvms/${r}/available-os-images`)}),YP=on(fr.extend({os_image_name:lw.string().min(1,"OS image name is required")})),{action:XP,safeAction:QP}=J(lw.void(),async(e,t)=>{let r=YP.parse(t),{cvmId:n}=X.parse(r),{os_image_name:o}=r;await e.patch(`/cvms/${n}/os-image`,{os_image_name:o})}),eT=Yr.object({id:Yr.string().optional(),instance_id:Yr.string().optional(),name:Yr.string(),status:Yr.string(),uptime:Yr.string().optional(),exited_at:Yr.string().optional(),boot_progress:Yr.string().optional(),boot_error:Yr.string().optional(),shutdown_progress:Yr.string().optional()}),tT=X,{action:rT,safeAction:nT}=J(eT,async(e,t)=>{let{cvmId:r}=tT.parse(t);return await e.get(`/cvms/${r}/state`)}),fw=Ft.object({id:Ft.string(),user_id:Ft.string(),name:Ft.string(),public_key:Ft.string(),fingerprint:Ft.string(),key_type:Ft.string(),source:Ft.string(),key_metadata:Ft.record(Ft.unknown()).nullable().optional(),last_synced_at:Ft.string().nullable().optional(),created_at:Ft.string(),updated_at:Ft.string()}),oT=Ft.array(fw);async function dw(e){let t=await e.get("/user/ssh-keys");return oT.parse(t)}async function Pc(e){try{return{success:!0,data:await dw(e)}}catch(t){return t&&typeof t=="object"&&("status"in t||"issues"in t)?{success:!1,error:t}:{success:!1,error:{name:"Error",message:t instanceof Error?t.message:String(t)}}}}var sT=Co.object({github_username:Co.string().min(1)}),aT=Co.object({github_username:Co.string(),keys_added:Co.number().int(),keys_skipped:Co.number().int(),errors:Co.array(Co.string()).default([])}),{action:iT,safeAction:og}=J(aT,async(e,t)=>{let{github_username:r}=sT.parse(t);return await e.post("/user/ssh-keys/github-profile",{github_username:r})}),cT=U0.object({name:U0.string().min(1),public_key:U0.string().min(1)}),{action:mT,safeAction:sg}=J(fw,async(e,t)=>{let{name:r,public_key:n}=cT.parse(t);return await e.post("/user/ssh-keys",{name:r,public_key:n})}),uT=O0.object({keyId:O0.string().min(1)}),{action:pT,safeAction:ag}=J(O0.void(),async(e,t)=>{let{keyId:r}=uT.parse(t);await e.delete(`/user/ssh-keys/${r}`)}),lT=rs.object({synced_count:rs.number().int(),keys_added:rs.number().int(),keys_updated:rs.number().int(),keys_removed:rs.number().int(),errors:rs.array(rs.string()).default([])}),{action:fT,safeAction:dT}=Yv(lT,async e=>await e.post("/user/ssh-keys/github-sync",{}));function dr(e={}){let t=l8(e),r={getCurrentUser:Wv,safeGetCurrentUser:ht,getAvailableNodes:E8,safeGetAvailableNodes:j0,listAllInstanceTypeFamilies:H0,safeListAllInstanceTypeFamilies:T8,listFamilyInstanceTypes:V0,safeListFamilyInstanceTypes:$8,listWorkspaces:F8,safeListWorkspaces:N8,getWorkspace:L8,safeGetWorkspace:B8,getCvmInfo:ow,safeGetCvmInfo:Re,getCvmList:sw,safeGetCvmList:_c,provisionCvm:sA,safeProvisionCvm:J0,commitCvmProvision:iA,safeCommitCvmProvision:_l,getCvmComposeFile:fA,safeGetCvmComposeFile:Ic,provisionCvmComposeFileUpdate:hA,safeProvisionCvmComposeFileUpdate:Z0,commitCvmComposeFileUpdate:xA,safeCommitCvmComposeFileUpdate:Y0,updateCvmEnvs:kA,safeUpdateCvmEnvs:EA,updateDockerCompose:TA,safeUpdateDockerCompose:$A,updatePreLaunchScript:LA,safeUpdatePreLaunchScript:BA,getCvmPreLaunchScript:zA,safeGetCvmPreLaunchScript:OA,startCvm:nP,safeStartCvm:X0,stopCvm:sP,safeStopCvm:Q0,shutdownCvm:iP,safeShutdownCvm:cP,restartCvm:pP,safeRestartCvm:eg,deleteCvm:dP,safeDeleteCvm:tg,getCvmStats:xP,safeGetCvmStats:vP,getCvmNetwork:kP,safeGetCvmNetwork:EP,getCvmDockerCompose:AP,safeGetCvmDockerCompose:PP,getCvmContainersStats:MP,safeGetCvmContainersStats:rg,getCvmAttestation:UP,safeGetCvmAttestation:zP,updateCvmResources:jP,safeUpdateCvmResources:HP,updateCvmVisibility:GP,safeUpdateCvmVisibility:ng,getAvailableOsImages:JP,safeGetAvailableOsImages:ZP,updateOsImage:XP,safeUpdateOsImage:QP,getKmsInfo:HA,safeGetKmsInfo:VA,getKmsList:KA,safeGetKmsList:WA,getAppEnvEncryptPubKey:YA,safeGetAppEnvEncryptPubKey:Il,nextAppIds:eP,safeNextAppIds:tP,getCvmState:rT,safeGetCvmState:nT,listSshKeys:dw,safeListSshKeys:Pc,importGithubProfileSshKeys:iT,safeImportGithubProfileSshKeys:og,createSshKey:mT,safeCreateSshKey:sg,deleteSshKey:pT,safeDeleteSshKey:ag,syncGithubSshKeys:fT,safeSyncGithubSshKeys:dT};return t.extend(r)}var Ov=z.object({vm_uuid:z.string().nullable(),app_id:z.string(),name:z.string().default(""),status:z.string(),vcpu:z.number().int(),memory:z.number().int(),disk_size:z.number().int(),teepod_id:z.number().int(),teepod_name:z.string(),region_identifier:z.string().nullable().optional(),kms_type:z.string().nullable().optional(),instance_type:z.string().nullable().optional(),listed:z.boolean().nullable().optional(),base_image:z.string().nullable().optional(),kms_slug:z.string().nullable().optional(),kms_id:z.string().nullable().optional(),instance_id:z.string().nullable().optional(),machine_info:G0.nullable().optional(),updated_at:z.string().nullable().optional()}),gT=z.object({display_name:z.string().nullable().optional(),avatar_url:z.string().nullable().optional(),description:z.string().nullable().optional(),custom_domain:z.string().nullable().optional()}),hT=z.object({id:z.string(),name:z.string(),app_id:z.string(),app_provision_type:z.string().nullable().optional(),app_icon_url:z.string().nullable().optional(),created_at:z.string(),kms_type:z.string(),profile:gT.nullable().optional(),current_cvm:Ov.nullable().optional(),cvms:z.array(Ov).default([]),cvm_count:z.number().int().default(0)}),yT=z.object({id:z.null().optional(),app_id:z.string(),name:z.null().optional(),app_provision_type:z.null().optional(),app_icon_url:z.null().optional(),created_at:z.null().optional(),kms_type:z.null().optional(),current_cvm:z.null().optional(),cvms:z.null().optional(),cvm_count:z.null().optional()}),bT=z.union([hT,yT]),xT=z.object({dstack_apps:z.array(bT),page:z.number().int(),page_size:z.number().int(),total:z.number().int(),total_pages:z.number().int()}),vT=ce.object({id:ce.string(),name:ce.string(),app_id:ce.string(),app_provision_type:ce.string().nullable().optional(),app_icon_url:ce.string().nullable().optional(),created_at:ce.string(),kms_type:ce.string(),profile:ce.object({display_name:ce.string().nullable().optional(),avatar_url:ce.string().nullable().optional(),description:ce.string().nullable().optional(),custom_domain:ce.string().nullable().optional()}).nullable().optional(),current_cvm:Cl.nullable().optional(),cvms:ce.array(Cl).default([]),cvm_count:ce.number().int().default(0)}),wT=ce.object({id:ce.null().optional(),app_id:ce.string(),name:ce.null().optional(),app_provision_type:ce.null().optional(),app_icon_url:ce.null().optional(),created_at:ce.null().optional(),kms_type:ce.null().optional(),current_cvm:ce.null().optional(),cvms:ce.null().optional(),cvm_count:ce.null().optional()}),CT=ce.union([vT,wT]),ST=ce.object({dstack_apps:ce.array(CT),page:ce.number().int(),page_size:ce.number().int(),total:ce.number().int(),total_pages:ce.number().int()}),gw=oe.object({object_type:oe.literal("cvm"),id:oe.string().nullable().optional(),name:oe.string().nullable().optional(),app_id:oe.string().nullable().optional(),vm_uuid:oe.string().nullable().optional()}),kT=oe.object({revision_id:oe.string(),app_id:oe.string(),vm_uuid:oe.string(),compose_hash:oe.string(),created_at:oe.string(),trace_id:oe.string().nullable().optional(),operation_type:oe.string(),triggered_by:K0.nullable().optional(),cvm:gw.nullable().optional(),workspace:W0.nullable().optional()}),jse=oe.object({revision_id:oe.string(),app_id:oe.string(),vm_uuid:oe.string(),compose_hash:oe.string(),compose_file:oe.union([oe.record(oe.any()),oe.string()]).nullable().optional(),encrypted_env:oe.string(),user_config:oe.string(),created_at:oe.string(),trace_id:oe.string().nullable().optional(),operation_type:oe.string(),triggered_by:K0.nullable().optional(),cvm:gw.nullable().optional(),workspace:W0.nullable().optional()}),Hse=oe.object({revisions:oe.array(kT),total:oe.number().int(),page:oe.number().int(),page_size:oe.number().int(),total_pages:oe.number().int()});function Sl(e){if(typeof e=="string"){if(e.startsWith("0x")&&ve(e))return e;if(ve(`0x${e}`))return`0x${e}`}throw new Error(`Invalid hex value: ${e}`)}var hw=class extends Error{constructor(e,t,r){super(e),this.code=t,this.details=r,this.name="NetworkError"}};var Qr=class extends Error{constructor(e,t,r){super(e),this.hash=t,this.details=r,this.name="TransactionError"}};async function ET(e,t){try{let r=await e.walletClient.getChainId();return{isCorrectNetwork:r===t,currentChainId:r}}catch(r){throw new hw(`Failed to check network status: ${r instanceof Error?r.message:"Unknown error"}`,"NETWORK_CHECK_FAILED",r)}}async function _T(e,t,r){try{let n=await e.getBalance({address:t});return{address:t,balance:n,sufficient:r?n>=r:!0,required:r}}catch(n){throw new hw(`Failed to check balance: ${n instanceof Error?n.message:"Unknown error"}`,"BALANCE_CHECK_FAILED",n)}}async function IT(e,t,r={}){let{timeout:n=6e4,pollingInterval:o=2e3,confirmations:s=1}=r,a=Date.now();return new Promise((i,c)=>{let m=async()=>{try{let u=await e.getTransactionReceipt({hash:t});if(u){if(s>1&&await e.getBlockNumber()-u.blockNumber+1n<BigInt(s)){if(Date.now()-a>=n){c(new Qr(`Transaction confirmation timeout after ${n}ms`,t));return}setTimeout(m,o);return}i(u)}else{if(Date.now()-a>=n){c(new Qr(`Transaction receipt timeout after ${n}ms`,t));return}setTimeout(m,o)}}catch(u){if(Date.now()-a>=n){c(new Qr(`Transaction receipt timeout after ${n}ms`,t,u));return}setTimeout(m,o)}};m()})}async function yw(e,t){let{targetChainId:r,minBalance:n,requiredAddress:o}=t,s=await ET(e,r),a=await _T(e.publicClient,e.address,n),i=o?e.address.toLowerCase()===o.toLowerCase():!0;return{networkValid:s.isCorrectNetwork,balanceValid:a.sufficient,addressValid:i,details:{currentChainId:s.currentChainId,balance:a.balance,address:e.address}}}function ig(){let e={state:"idle"},t,r,n=i=>{e={...e,...i}},o=()=>{t&&(clearTimeout(t),t=void 0),r&&(r.abort(),r=void 0),e={state:"idle"}},s=()=>{r&&r.abort(),t&&(clearTimeout(t),t=void 0),n({state:"error",aborted:!0,error:"Transaction aborted by user"})};return{get status(){return{...e}},get isIdle(){return e.state==="idle"},get isSubmitting(){return e.state==="submitting"},get isPending(){return e.state==="pending"},get isSuccess(){return e.state==="success"},get isError(){return e.state==="error"},get isTimeout(){return e.state==="timeout"},get isAborted(){return e.aborted===!0},get isComplete(){return["success","error","timeout"].includes(e.state)},abort:s,reset:o,execute:async(i,c,m,u={})=>{let{timeout:p=6e4,confirmations:f=1,onSubmitted:d,onConfirmed:g,onError:h,signal:y}=u;try{if(o(),r=new AbortController,y){if(y.aborted)throw new Qr("Operation was aborted before execution");y.addEventListener("abort",()=>{s()})}if(n({state:"submitting",startTime:Date.now(),error:void 0,hash:void 0,receipt:void 0,aborted:!1}),r.signal.aborted)throw new Qr("Transaction aborted");let b=await i(c,...m);if(r.signal.aborted)throw new Qr("Transaction aborted after submission",b);n({state:"pending",hash:b,submitTime:Date.now()}),d?.(b),p>0&&(t=setTimeout(()=>{e.state==="pending"&&!r?.signal.aborted&&n({state:"timeout",error:`Transaction timeout after ${p}ms`})},p));let x=await Promise.race([IT(c.publicClient,b,{timeout:p,confirmations:f}),new Promise((C,k)=>{r?.signal.addEventListener("abort",()=>{k(new Qr("Transaction aborted while waiting for receipt",b))})})]);t&&(clearTimeout(t),t=void 0);let v=x.status==="success";if(n({state:v?"success":"error",receipt:x,confirmTime:Date.now(),error:v?void 0:"Transaction failed on-chain"}),v)g?.(x);else{let C=new Qr("Transaction failed on-chain",b,x);throw h?.(C,b),C}return{hash:b,receipt:x,success:v}}catch(b){let x=b instanceof Qr?b:new Qr(`Transaction execution failed: ${b instanceof Error?b.message:"Unknown error"}`,e.hash,b);throw n({state:"error",error:x.message}),h?.(x,e.hash),x}}}}async function bw(e,t,r,n={},o={}){let{maxRetries:s=3,initialDelay:a=1e3,maxDelay:i=1e4,backoffFactor:c=2,retryCondition:m=()=>!0}=o,u,p=a;for(let f=0;f<=s;f++)try{return await ig().execute(e,t,r,n)}catch(d){if(u=d instanceof Error?d:new Error(String(d)),f===s||!m(u))break;await new Promise(g=>setTimeout(g,p)),p=Math.min(p*c,i)}throw u}var xw=[{inputs:[{name:"deployer",type:"address"},{name:"disableUpgrades",type:"bool"},{name:"allowAnyDevice",type:"bool"},{name:"deviceId",type:"bytes32"},{name:"composeHash",type:"bytes32"}],name:"deployAndRegisterApp",outputs:[{name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"appId",type:"address",indexed:!0},{name:"deployer",type:"address",indexed:!0}],name:"AppDeployedViaFactory",type:"event",anonymous:!1},{inputs:[{name:"appId",type:"address",indexed:!1}],name:"AppRegistered",type:"event",anonymous:!1}],AT=Ge.object({chain:Ge.unknown().optional(),rpcUrl:Ge.string().optional(),kmsContractAddress:Ge.string(),privateKey:Ge.string().optional(),walletClient:Ge.unknown().optional(),publicClient:Ge.unknown().optional(),allowAnyDevice:Ge.boolean().optional().default(!1),deviceId:Ge.string().optional().default("0000000000000000000000000000000000000000000000000000000000000000"),composeHash:Ge.string().optional().default("0000000000000000000000000000000000000000000000000000000000000000"),disableUpgrades:Ge.boolean().optional().default(!1),skipPrerequisiteChecks:Ge.boolean().optional().default(!1),minBalance:Ge.string().optional()}).passthrough(),PT=AT.refine(e=>{let t=!!e.privateKey,r=!!e.walletClient;return t!==r},{message:"Either 'privateKey' or 'walletClient' must be provided, but not both",path:["privateKey","walletClient"]}).refine(e=>{let t=!!e.publicClient,r=!!e.walletClient,n=!!e.chain;return t&&r?!0:n},{message:"Chain is required when publicClient or walletClient is not provided",path:["chain"]}),TT=Ge.object({appId:Ge.string(),appAuthAddress:Ge.string(),deployer:Ge.string(),transactionHash:Ge.string(),blockNumber:Ge.bigint().optional(),gasUsed:Ge.bigint().optional()}).passthrough();function $T(e,t,r){try{let n=Ir({abi:xw,eventName:"AppDeployedViaFactory",logs:e.logs,strict:!1});if(n.length===0)throw e.status==="reverted"?new Error(`Transaction failed: ${e.transactionHash}`):new Error(`Transaction ${e.transactionHash} has no AppDeployedViaFactory events. The deployment failed. Status: ${e.status}. Found ${e.logs.length} logs.`);let o=n[0];if(!o?.args)throw new Error("Event has no data");let{appId:s,deployer:a}=o.args;if(!s)throw new Error("Event missing appId");return{appId:s,appAuthAddress:s,deployer:t,transactionHash:e.transactionHash,blockNumber:e.blockNumber,gasUsed:e.gasUsed}}catch(n){throw n instanceof Error?n:new Error(`Parse failed: ${n}`)}}async function RT(e,t){let r=PT.parse(e),{chain:n,rpcUrl:o,kmsContractAddress:s,privateKey:a,walletClient:i,publicClient:c,allowAnyDevice:m=!1,deviceId:u="0000000000000000000000000000000000000000000000000000000000000000",composeHash:p="0000000000000000000000000000000000000000000000000000000000000000",disableUpgrades:f=!1,skipPrerequisiteChecks:d=!1,minBalance:g,timeout:h=12e4,retryOptions:y,signal:b,onTransactionStateChange:x,onTransactionSubmitted:v,onTransactionConfirmed:C}=r,k="0000000000000000000000000000000000000000000000000000000000000000",I=u!==k&&u!=="0x"+k?!1:m,M,F,L,j;if(a){let we=yc(a);if(c){if(typeof c!="object"||!c)throw new Error("publicClient is invalid");M=c}else{if(!n)throw new Error("Chain required for publicClient");M=ts({chain:n,transport:En(o)})}if(!n)throw new Error("Chain required for walletClient");F=hc({account:we,chain:n,transport:En(o)}),L=we.address,j=n.id}else if(i){if(typeof i!="object"||!i)throw new Error("walletClient is invalid");if(F=i,c){if(typeof c!="object"||!c)throw new Error("publicClient is invalid");M=c}else{if(!n)throw new Error("Chain required for publicClient");M=ts({chain:n,transport:En(o)})}if(!F.account?.address)throw new Error("WalletClient needs an account");L=F.account.address,n?j=n.id:j=await F.getChainId()}else throw new Error("Need privateKey or walletClient");let H={publicClient:M,walletClient:F,address:L,chainId:j},V=ig();if(x&&typeof x=="function"){let we=()=>{x(V.status),V.isComplete||setTimeout(we,100)};setTimeout(we,10)}if(!d){let we={targetChainId:j,minBalance:g?Qo(g):Qo("0.001")},Un=await yw(H,we);if(!Un.networkValid)throw new Error(`Wrong network. Need chain ${we.targetChainId}, got ${Un.details.currentChainId}`);if(!Un.balanceValid){let br=Number(we.minBalance)/1e18,Rf=Number(Un.details.balance)/1e18;throw new Error(`Not enough ETH. Need ${br}, have ${Rf.toFixed(6)}`)}}let de=Sl(u),Ie=Sl(p),Me=`0x${de.slice(2).padEnd(64,"0")}`,te=`0x${Ie.slice(2).padEnd(64,"0")}`,U=async we=>{try{let br=await we.publicClient.getCode({address:s});if(!br||br==="0x")throw new Error(`No contract at ${s}`)}catch(br){if(br instanceof Error&&br.message.includes("No contract at"))throw br}let Un={address:s,abi:xw,functionName:"deployAndRegisterApp",args:[we.address,f,I,Me,te],account:we.walletClient.account||we.address,chain:n||null};return await we.walletClient.writeContract(Un)},Ue=y?await bw(U,H,[],{timeout:h,confirmations:1,onSubmitted:v,onConfirmed:C,signal:b},y):await V.execute(U,H,[],{timeout:h,confirmations:1,onSubmitted:v,onConfirmed:C,signal:b}),Nr=$T(Ue.receipt,L,s);return t?.schema===!1?Nr:(t?.schema||TT).parse(Nr)}async function vw(e,t){try{return{success:!0,data:await RT(e,t)}}catch(r){let n=r instanceof Error?r.message:"Unknown deployment error";return{success:!1,error:{isRequestError:!0,message:n,status:500,detail:n}}}}var ww=[{inputs:[{name:"composeHash",type:"bytes32"}],name:"addComposeHash",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"composeHash",type:"bytes32",indexed:!1}],name:"ComposeHashAdded",type:"event",anonymous:!1}],MT=Le.object({chain:Le.unknown().optional(),rpcUrl:Le.string().optional(),appId:Le.string(),composeHash:Le.string(),privateKey:Le.string().optional(),walletClient:Le.unknown().optional(),publicClient:Le.unknown().optional(),skipPrerequisiteChecks:Le.boolean().optional().default(!1),minBalance:Le.string().optional(),timeout:Le.number().optional().default(12e4),retryOptions:Le.unknown().optional(),signal:Le.unknown().optional(),onTransactionStateChange:Le.function().optional(),onTransactionSubmitted:Le.function().optional(),onTransactionConfirmed:Le.function().optional()}).passthrough().refine(e=>{let t=!!e.privateKey,r=!!e.walletClient;return t!==r},{message:"Either 'privateKey' or 'walletClient' must be provided, but not both",path:["privateKey","walletClient"]}).refine(e=>{let t=!!e.publicClient,r=!!e.walletClient,n=!!e.chain;return t&&r?!0:n},{message:"Chain is required when publicClient or walletClient is not provided",path:["chain"]}),FT=Le.object({composeHash:Le.string(),appId:Le.string(),transactionHash:Le.string(),blockNumber:Le.bigint().optional(),gasUsed:Le.bigint().optional()}).passthrough();function NT(e,t,r,n){console.log(e.logs);try{let o=Ir({abi:ww,eventName:"ComposeHashAdded",logs:e.logs,strict:!1});if(o.length>0){let s=o[0];s?.args?.composeHash!==t&&console.warn(`Event compose hash (${s?.args?.composeHash}) does not match expected (${t})`)}return{composeHash:t,appAuthAddress:r,appId:n,transactionHash:e.transactionHash,blockNumber:e.blockNumber,gasUsed:e.gasUsed}}catch(o){return console.warn("Failed to parse ComposeHashAdded event, returning basic result:",o),{composeHash:t,appAuthAddress:r,appId:n,transactionHash:e.transactionHash,blockNumber:e.blockNumber,gasUsed:e.gasUsed}}}async function LT(e,t){let r=MT.parse(e),{chain:n,rpcUrl:o,appId:s,composeHash:a,privateKey:i,walletClient:c,publicClient:m,timeout:u=12e4,retryOptions:p,signal:f,onTransactionStateChange:d,onTransactionSubmitted:g,onTransactionConfirmed:h,skipPrerequisiteChecks:y=!1,minBalance:b}=r,x,v,C,k,_=s.startsWith("0x")?s:`0x${s}`;if(i){let V=yc(i);if(m)x=m;else{if(!n)throw new Error("Chain required when creating publicClient");x=ts({chain:n,transport:En(o)})}if(!n)throw new Error("Chain required when creating walletClient");v=hc({account:V,chain:n,transport:En(o)}),C=V.address,k=n.id}else if(c){if(v=c,m)x=m;else{if(!n)throw new Error("Chain required when creating publicClient");x=ts({chain:n,transport:En(o)})}if(!v.account?.address)throw new Error("WalletClient must have an account with address");C=v.account.address,k=n?n.id:await v.getChainId()}else throw new Error("Either privateKey or walletClient must be provided");let I={publicClient:x,walletClient:v,address:C,chainId:k},M=ig();if(d&&typeof d=="function"){let V=()=>{d(M.status),M.isComplete||setTimeout(V,100)};setTimeout(V,10)}if(!y){let V={targetChainId:k,minBalance:b?Qo(b):Qo("0.001")},de=await yw(I,V);if(!de.networkValid)throw new Error(`Network mismatch: Expected chain ${V.targetChainId}, but wallet is on chain ${de.details.currentChainId}`);if(!de.balanceValid){let Ie=Number(V.minBalance)/1e18,Me=Number(de.details.balance)/1e18;throw new Error(`Insufficient balance: Required ${Ie} ETH, but account has ${Me.toFixed(6)} ETH`)}}let F=async V=>await V.walletClient.writeContract({address:_,abi:ww,functionName:"addComposeHash",args:[Sl(a)],account:V.walletClient.account||V.address,chain:n||null}),L=p?await bw(F,I,[],{timeout:u,confirmations:1,onSubmitted:g,onConfirmed:h,signal:f},p):await M.execute(F,I,[],{timeout:u,confirmations:1,onSubmitted:g,onConfirmed:h,signal:f}),j=NT(L.receipt,Sl(a),_,s);return t?.schema===!1?j:(t?.schema||FT).parse(j)}async function Cw(e,t){try{return{success:!0,data:await LT(e,t)}}catch(r){let n=r instanceof Error?r.message:"Unknown blockchain error";return{success:!1,error:{isRequestError:!0,message:n,status:500,detail:n}}}}var BT=rw;var DT=oi.object({items:oi.array(BT),total:oi.number(),page:oi.number(),page_size:oi.number(),pages:oi.number()}).passthrough(),{action:eae,safeAction:Sw}=J(DT,async(e,t)=>{let{teamSlug:r,page:n,pageSize:o}=t,s=new URLSearchParams;n!==void 0&&s.append("page",n.toString()),o!==void 0&&s.append("page_size",o.toString());let a=s.toString()?`/workspaces/${r}/nodes?${s.toString()}`:`/workspaces/${r}/nodes`;return await e.get(a)}),ii=$r.object({limit:$r.number(),remaining:$r.number()}).passthrough(),UT=$r.object({vm_slots:ii,vcpu:ii,memory_mb:ii,disk_gb:ii}).passthrough(),zT=$r.object({gpus:ii,in_use:$r.number(),misconfigured:$r.number()}).passthrough(),OT=$r.object({team_slug:$r.string(),tier:$r.string(),quotas:UT,reserved_nodes:ii,reserved_gpu:zT,as_of:$r.string()}).passthrough(),{action:rae,safeAction:nae}=J(OT,async(e,t)=>await e.get(`/workspaces/${t.teamSlug}/quotas`)),HT=on(fr.extend({node_id:jT.number().optional()})),{action:sae,safeAction:aae}=J(Ac,async(e,t)=>{let r=HT.parse(t),{cvmId:n}=X.parse(r),{node_id:o}=r;return await e.post(`/cvms/${n}/replicas`,{node_id:o})}),cae=si.object({target:si.string().describe("Target status to wait for (e.g., 'running', 'stopped')"),interval:si.number().min(5).max(30).default(5).describe("Polling interval in seconds"),timeout:si.number().min(10).max(600).default(300).describe("Timeout per attempt in seconds"),maxRetries:si.number().min(0).default(Number.POSITIVE_INFINITY).describe("Maximum number of retry attempts (Infinity for unlimited)"),retryDelay:si.number().min(0).default(5e3).describe("Delay between retries in milliseconds")});var kw=Tr.object({cvm_id:Tr.number().int(),identifier:Tr.string(),status:Tr.enum(["updated","unchanged","skipped","conflict","error"]),old_instance_id:Tr.string().nullable().optional(),new_instance_id:Tr.string().nullable().optional(),source:Tr.enum(["teepod_state","teepod_info","gateway","none"]),verified_with_gateway:Tr.boolean(),reason:Tr.string().nullable().optional()}),VT=on(fr.extend({overwrite:Tr.boolean().optional(),dry_run:Tr.boolean().optional()})),{action:uae,safeAction:pae}=J(kw,async(e,t)=>{let r=VT.parse(t),{cvmId:n}=X.parse(r),{overwrite:o,dry_run:s}=r;return await e.patch(`/cvms/${n}/instance-id`,{overwrite:o,dry_run:s})}),GT=ot.object({cvm_ids:ot.array(ot.string()).optional(),running_only:ot.boolean().optional(),missing_only:ot.boolean().optional(),overwrite:ot.boolean().optional(),limit:ot.number().int().min(1).max(500).optional(),dry_run:ot.boolean().optional()}).strict(),qT=ot.object({total:ot.number().int(),scanned:ot.number().int(),updated:ot.number().int(),unchanged:ot.number().int(),skipped:ot.number().int(),conflicts:ot.number().int(),errors:ot.number().int(),items:ot.array(kw)}),{action:fae,safeAction:dae}=J(qT,async(e,t)=>{let r=GT.parse(t);return await e.patch("/cvms/instance-ids",r)}),KT=Ct.object({vm_uuid:Ct.string(),status:Ct.string(),uptime:Ct.string().nullable().optional(),in_progress:Ct.boolean(),boot_progress:Ct.string().nullable().optional(),boot_error:Ct.string().nullable().optional(),operation_type:Ct.string().nullable().optional(),operation_started_at:Ct.string().nullable().optional(),correlation_id:Ct.string().nullable().optional()}),WT=Ct.record(Ct.string(),KT),JT=Ct.object({vmUuids:Ct.array(Ct.string())}),{action:hae,safeAction:Ew}=J(WT,async(e,t)=>{let{vmUuids:r}=JT.parse(t);return await e.post("/status/batch",{vm_uuids:r})}),ZT=Sc.object({hostname:Sc.string().nullable().optional(),ssh_authorized_keys:Sc.array(Sc.string()).default([]),default_gateway_domain:Sc.string().nullable().optional()}),YT=X,{action:bae,safeAction:_w}=J(ZT,async(e,t)=>{let{cvmId:r}=YT.parse(t);return await e.get(`/cvms/${r}/user_config`)}),XT=Kt.object({page:Kt.number().int().min(1).optional(),page_size:Kt.number().int().min(1).max(100).optional(),search:Kt.string().optional(),status:Kt.array(Kt.string()).optional(),listed:Kt.boolean().optional(),base_image:Kt.string().optional(),instance_type:Kt.string().optional(),kms_slug:Kt.string().optional(),kms_type:Kt.string().optional(),node:Kt.string().optional(),region:Kt.string().optional()}).strict();function QT(e){return e==="2025-10-28"?xT:ST}async function e3(e,t){let r=XT.parse(t??{}),n=await e.get("/apps",{params:r});return QT(e.config.version).parse(n)}async function Iw(e,t){try{return{success:!0,data:await e3(e,t)}}catch(r){return r&&typeof r=="object"&&("status"in r||"issues"in r)?{success:!1,error:r}:{success:!1,error:{name:"Error",message:r instanceof Error?r.message:String(r)}}}}var wae=jv.object({appId:jv.string().min(1)}).strict();var Sae=Hv.object({appId:Hv.string().min(1)}).strict();var Eae=xl.object({appId:xl.string().min(1),page:xl.number().int().min(1).optional(),page_size:xl.number().int().min(1).max(1e3).optional()}).strict();var Iae=vl.object({appId:vl.string().min(1),revisionId:vl.string().min(1),rawComposeFile:vl.boolean().optional()}).strict();var Pae=wt.object({statuses:wt.array(wt.string()),image_versions:wt.array(wt.string()),instance_types:wt.array(wt.string()),kms_slugs:wt.array(wt.string()),kms_types:wt.array(wt.string()),regions:wt.array(wt.string()),nodes:wt.array(wt.string())});var t3=ue.object({contract_address:ue.string(),chain_id:ue.string().nullable(),version:ue.string(),url:ue.string(),gateway_app_id:ue.string().nullable(),gateway_app_url:ue.string(),kms_type:ue.string()}),Vv=ue.object({app_id:ue.string().optional(),instance_id:ue.string().optional(),app_name:ue.string().optional(),device_id:ue.string().optional()}).passthrough().nullable(),r3=ue.object({vm_uuid:ue.string().nullable().optional(),name:ue.string().optional(),instance_id:ue.string().nullable().optional(),status:ue.string().optional(),image_version:ue.string().nullable().optional(),quote:ue.string().nullable().optional(),ppid:ue.string().optional(),device_id:ue.string().optional(),tcb_info:pw.nullable().optional(),app_certificates:ue.array(uw).nullable().optional(),compose_file:ue.string().nullable().optional(),error:ue.string().nullable().optional()}),n3=ue.object({app_id:ue.string(),contract_address:ue.string(),kms_info:t3,instances:ue.array(r3),kms_guest_agent_info:Vv,gateway_guest_agent_info:Vv,qemu_version:ue.string().nullable()}),o3=ue.object({appId:ue.string().min(1)}).strict(),{action:$ae,safeAction:Rae}=J(n3,async(e,t)=>{let{appId:r}=o3.parse(t);return await e.get(`/apps/${r}/attestations`)}),s3=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/gm;function a3(e){let t={},r=e.toString();r=r.replace(/\r\n?/gm,`
67
- `);let n;for(;(n=s3.exec(r))!=null;){let o=n[1];if(!o)continue;let s=n[2]||"";s=s.trim();let a=s[0];s=s.replace(/^(['"`])([\s\S]*)\1$/gm,"$2"),a==='"'&&(s=s.replace(/\\n/g,`
68
- `),s=s.replace(/\\r/g,"\r")),t[o]=s}return t}function Al(e){let t=a3(e),r=[];for(let[n,o]of Object.entries(t))r.push({key:n,value:o});return r}function Pl(e){return e.split(/[\s-]+/).filter(Boolean).map((t,r)=>r===0?t.toLowerCase():t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join("")}function Aw(e){return e===void 0?[]:Array.isArray(e)?[...e]:[e]}function Pw(e,t){let r={};for(let i of t.flagConfig.descriptors.values()){let c=t.flags[i.canonicalKey];c!==void 0&&(r[i.target]=c)}for(let i of t.flagConfig.negatedLookup.values())i.negatedKey&&t.flags[i.negatedKey]&&(r[i.target]=!1);t.passThrough.length>0&&(r["--"]=t.passThrough);let n={},o=e.arguments??[],s=[...t.positionals],a=0;for(let i of o){let c=i.target??Pl(i.name);if(i.variadic){n[c]=s.slice(a),a=s.length;break}s[a]!==void 0&&(n[c]=s[a]),a+=1}return{options:r,positionals:n,raw:{flags:t.flags,positionals:t.positionals}}}import f3 from"arg";var m3={name:"help",shorthand:"h",description:"Show help information for the current command",type:"boolean",target:"help"},u3={name:"version",shorthand:"v",description:"Show CLI version",type:"boolean",target:"version"},se={name:"interactive",shorthand:"i",description:"Enable interactive mode",type:"boolean",target:"interactive",group:"basic"},Tw={name:"api-token",description:"API token used for authentication",type:"string",target:"apiToken",aliases:["api-key"],argumentName:"token",group:"basic"},Rr={name:"json",shorthand:"j",description:"Output in JSON format",type:"boolean",target:"json",negatedName:"no-json",group:"basic"},p3={name:"api-version",description:"API version to use (e.g. 2025-10-28, 2026-01-21)",type:"string",target:"apiVersion",group:"advanced"},ss=[m3,u3,Tw,Rr,p3],So=[Tw],xe={name:"cvm_id",description:"CVM identifier (UUID, app_id, instance_id, or name)",required:!1,target:"cvmId"},ui={name:"cvm-id",description:"CVM identifier (UUID, app_id, instance_id, or name)",type:"string",target:"cvmId"},$w={name:"uuid",description:"[DEPRECATED] Use --cvm-id instead. CVM UUID.",type:"string",target:"cvmId",deprecated:!0,group:"deprecated"};import Rw from"arg";function Mw(e){let t={},r=new Map,n=new Map;if(!e)return{spec:t,descriptors:r,negatedLookup:n};for(let o of e){let s=`--${o.name}`,a=o.target??Pl(o.name),i=l3(o.type);r.set(s,{option:o,canonicalKey:s,target:a,negatedKey:o.negatedName?`--${o.negatedName}`:void 0}),t[s]=i,o.shorthand&&(t[`-${o.shorthand}`]=s);for(let c of Aw(o.aliases))t[`--${c}`]=s;if(o.negatedName){let c=`--${o.negatedName}`;if(o.type!=="boolean")throw new Error(`Negated option is only supported for boolean types: ${o.name}`);t[c]=Rw.flag(()=>!0),n.set(c,{option:o,canonicalKey:s,target:a,negatedKey:c})}}return{spec:t,descriptors:r,negatedLookup:n}}function l3(e){switch(e){case"string":return(t="")=>t;case"number":return(t,r)=>{let n=Number(t);if(Number.isNaN(n))throw new Error(`Invalid value for ${r}: expected a number.`);return n};case"boolean":return Rw.flag(()=>!0);case"string[]":return(t,r,n)=>{let o=Array.isArray(n)?[...n]:[];if(t==="")throw new Error(`Option ${r} expects a value.`);return o.push(t),o};case"number[]":return(t,r,n)=>{let o=Array.isArray(n)?[...n]:[],s=Number(t);if(Number.isNaN(s))throw new Error(`Invalid value for ${r}: expected a number.`);return o.push(s),o};default:throw new Error(`Unsupported option type: ${e}`)}}function d3(e){let t=e.indexOf("--");return t===-1?[[...e],[]]:[e.slice(0,t),e.slice(t+1)]}function Tc(e,t,r={}){let n=[...ss,...t?[...t]:[]],o=Mw(n),{permissive:s=!1,stopAtPositional:a=!1}=r,[i,c]=d3(e),m=f3(o.spec,{argv:i,permissive:s,stopAtPositional:a}),{_:u,...p}=m;return{positionals:u??[],flags:p,flagConfig:o,passThrough:c}}function Tl(e){return e==="unstable"?" [UNSTABLE]":e==="deprecated"?" [DEPRECATED]":""}function Rl(e){let{registry:t,executableName:r}=e,n=[];n.push(`Usage: ${r} <command> [options]`),n.push("");let o=t.getChildren(),s=c=>{switch(c){case"deploy":return"Deploy:";case"manage":return"Manage:";case"cvm-ops":return"CVM operations:";case"profile":return"Profile / auth:";case"advanced":return"Advanced:";case"deprecated":return"Deprecated:"}},a=["deploy","manage","cvm-ops","profile","advanced","deprecated"],i=c=>{let m=c.command?.meta??c.group?.meta;if(m?.category)return m.category;let u=c.name??"";return m?.stability==="deprecated"?"deprecated":u==="nodes"||u==="deploy"?"deploy":u==="apps"||u==="cvms"||u==="link"||u==="simulator"?"manage":u==="ssh"||u==="cp"||u==="ps"||u==="logs"?"cvm-ops":u==="login"||u==="logout"||u==="switch"||u==="status"?"profile":u==="api"||u==="self"?"advanced":u==="auth"||u==="config"||u==="docker"?"deprecated":"advanced"};for(let c of a){let m=o.filter(u=>i(u)===c).sort((u,p)=>(u.name??"").localeCompare(p.name??""));if(m.length!==0){n.push(s(c));for(let u of m){let p=u.command?.meta??u.group?.meta,f=(p?.description??"").split(`
69
- `)[0],d=p?.stability,g=d?Tl(d):"",h=u.name??"",y=p?.aliases,b=y?.length?`${h} (${y.join(", ")})`:h;n.push(` ${b.padEnd(18)}${f}${g}`.trimEnd())}n.push("")}}n.push(""),n.push("Global options:");for(let c of ss){let m=$l(c),u=Math.max(24,m.length+2);n.push(` ${m.padEnd(u)}${c.description??""}`.trimEnd())}return n.join(`
70
- `)}function Fw(e){let{registry:t,executableName:r,groupPath:n}=e,o=t.getNode(n);if(!o?.group)return Rl({registry:t,executableName:r});let s=[],a=n.join(" "),i=`${r} ${a}`;s.push(`Usage: ${i} <command> [options]`),s.push(""),o.group.meta.description&&(s.push(o.group.meta.description),s.push(""));let c=t.getChildren(n);if(c.length>0){s.push("Available commands:");for(let m of c){let u=m.command?.meta??m.group?.meta,p=(u?.description??"").split(`
71
- `)[0],f=u?.stability,d=f?Tl(f):"",g=m.name??"",h=u?.aliases,y=h?.length?`${g} (${h.join(", ")})`:g;s.push(` ${y.padEnd(18)}${p}${d}`.trimEnd())}s.push("")}s.push("Global options:");for(let m of ss){let u=$l(m),p=Math.max(24,u.length+2);s.push(` ${u.padEnd(p)}${m.description??""}`.trimEnd())}return s.join(`
72
- `)}function cg(e){let{executableName:t,definition:r,registry:n}=e,o=g3({executableName:t,definition:r}),s=Tl(r.meta.stability),a=[o,"",`${r.meta.description}${s}`],i=r.meta.arguments??[];if(i.length>0){a.push(""),a.push("Arguments:");for(let g of i){let h=y3(g);a.push(` ${h.padEnd(18)}${g.description??""}`.trimEnd())}}let c=[...r.meta.options??[]],m=ss.filter(g=>!g.hidden),u=c.filter(g=>!g.hidden),p=new Set(ss.map(g=>g.name)),f=u.filter(g=>!p.has(g.name));if(m.length>0){let g=new Set(f.map(h=>h.shorthand).filter(h=>typeof h=="string"&&h.length>0));a.push(""),a.push("Global options:");for(let h of m){let y=!h.shorthand||!g.has(h.shorthand),b=$l(h,{includeShorthand:y}),x=Math.max(24,b.length+2);a.push(` ${b.padEnd(x)}${h.description??""}`.trimEnd())}}if(f.length>0){let g=x=>x.group==="deprecated"||x.deprecated?!0:(x.description??"").includes("[DEPRECATED]"),h=x=>x.group?x.group:g(x)?"deprecated":"basic",y={basic:[],advanced:[],deprecated:[]};for(let x of f)y[h(x)].push(x);let b=(x,v)=>{if(v.length!==0){a.push(""),a.push(x);for(let C of v){let k=$l(C),_=Math.max(24,k.length+2);a.push(` ${k.padEnd(_)}${C.description??""}`.trimEnd())}}};b("Basic options:",y.basic),b("Advanced options:",y.advanced),b("Deprecated options:",y.deprecated)}if(r.meta.passThrough&&(a.push(""),a.push("Pass-through (after --):"),a.push(` ${r.meta.passThrough.description}`),r.meta.passThrough.examples&&r.meta.passThrough.examples.length>0)){a.push(""),a.push(" Examples:");for(let g of r.meta.passThrough.examples)a.push(` ${g}`)}if(r.meta.examples&&r.meta.examples.length>0){a.push(""),a.push("Examples:");for(let g of r.meta.examples)a.push(` # ${g.name}`),a.push(` ${g.value}`)}let d=n.getChildren(r.path);if(d.length>0){a.push(""),a.push("Subcommands:");for(let g of d){let h=g.command?.meta??g.group?.meta,y=(h?.description??"").split(`
73
- `)[0],b=h?.stability,x=b?Tl(b):"",v=g.name??"",C=h?.aliases,k=C?.length?`${v} (${C.join(", ")})`:v;a.push(` ${k.padEnd(18)}${y}${x}`.trimEnd())}}return a.join(`
74
- `)}function g3({executableName:e,definition:t}){let r=[e,...t.path],o=(t.meta.arguments??[]).map(m=>h3(m)).join(" "),a=(t.meta.options?.length??0)>0?" [options]":"",i=o?` ${o}`:"",c=t.meta.passThrough?" [--] [...]":"";return`Usage: ${r.join(" ")}${a}${i}${c}`}function h3(e){let t=`<${e.name}>`;return e.variadic?`${t}...`:e.required===!1?`[${t}]`:t}function y3(e){return e.variadic?`<${e.name}...>`:e.required===!1?`<${e.name}>?`:`<${e.name}>`}function $l(e,{includeShorthand:t=!0}={}){let r=[];t&&e.shorthand&&r.push(`-${e.shorthand}`);let n=`--${e.name}`;if(e.argumentName?n+=` ${e.argumentName.toUpperCase()}`:e.type!=="boolean"&&(n+=" <value>"),r.push(n),e.aliases&&e.aliases.length>0)for(let o of e.aliases){let s=`--${o}`;e.argumentName?s+=` ${e.argumentName.toUpperCase()}`:e.type!=="boolean"&&(s+=" <value>"),r.push(s)}return e.type==="boolean"&&e.negatedName&&r.push(`--${e.negatedName}`),r.join(", ")}var Nw;function Lw(e){return os.includes(e)}function Bw(e){Nw=e}function mg(){return Nw}var ug=!1;function $c(e){ug=e}function Se(){return ug}function pg(){return!ug}import w3 from"path";import Ml from"fs-extra";import Uw from"@iarna/toml";import{z as Mr}from"zod";import kt from"chalk";import b3 from"ora";function x3(e,t){let r=e.split(/\s+/),n=[],o="";for(let s of r){let a=o.length===0?s:`${o} ${s}`;a.length<=t?o=a:(o.length>0&&n.push(o),o=s)}return o.length>0&&n.push(o),n}function v3(e,t){if(e.length<=t)return[e];let r=[],n=0;for(;n<e.length;)r.push(e.slice(n,n+t)),n+=t;return r}function Dw(e,t){let r=[];for(let n of e.split(`
75
- `)){if(n.length<=t){r.push(n);continue}if(n.indexOf(" ")===-1){r.push(...v3(n,t));continue}let o=x3(n,t);r.push(...o)}if(r.length===0){let n=e.trim();r.push(n)}return r}var l={error:(e,...t)=>{Se()||(process.stderr.write(`${kt.red("\u2717")} ${kt.red(e)}`),t.length>0&&process.stderr.write(` ${t.map(String).join(" ")}`),process.stderr.write(`
76
- `))},warn:(e,...t)=>{Se()||(process.stderr.write(`${kt.yellow("\u26A0")} ${kt.yellow(e)}`),t.length>0&&process.stderr.write(` ${t.map(String).join(" ")}`),process.stderr.write(`
77
- `))},info:(e,...t)=>{Se()||(process.stderr.write(`${kt.blue("\u2139")} ${kt.blue(e)}`),t.length>0&&process.stderr.write(` ${t.map(String).join(" ")}`),process.stderr.write(`
78
- `))},success:(e,...t)=>{Se()||(process.stderr.write(`${kt.green("\u2713")} ${kt.green(e)}`),t.length>0&&process.stderr.write(` ${t.map(String).join(" ")}`),process.stderr.write(`
79
- `))},debug:(e,...t)=>{Se()||process.env.DEBUG&&(process.stderr.write(`${kt.gray("\u{1F50D}")} ${kt.gray(e)}`),t.length>0&&process.stderr.write(` ${t.map(String).join(" ")}`),process.stderr.write(`
80
- `))},table:(e,t)=>{if(!Se()){if(e.length===0){console.log(kt.yellow("No data to display"));return}if(t){let r;typeof t[0]=="string"?r=t.map(a=>({key:a,header:a})):r=t;let n={};for(let a of r){let i=a.header||String(a.key);n[String(a.key)]=i.length}for(let a of e)for(let i of r){let c=String(typeof i.key=="string"&&!(i.key in a)?"":a[String(i.key)]??"");n[String(i.key)]=Math.max(n[String(i.key)],c.length)}let o=[];for(let a of r){let i=a.header||String(a.key);o.push(kt.bold(i.padEnd(n[String(a.key)])))}console.log(o.join(" "));let s=[];for(let a of r)s.push("-".repeat(n[String(a.key)]));console.log(s.join(" "));for(let a of e){let i=[];for(let c of r){let m=String(typeof c.key=="string"&&!(c.key in a)?"":a[String(c.key)]??"");i.push(m.padEnd(n[String(c.key)]))}console.log(i.join(" "))}}else{let r=e[0],n=Object.keys(r),o={};for(let i of n)o[i]=i.length;for(let i of e)for(let c of n){let m=String(i[c]??"");o[c]=Math.max(o[c],m.length)}let s=[];for(let i of n)s.push(kt.bold(i.padEnd(o[i])));console.log(s.join(" "));let a=[];for(let i of n)a.push("-".repeat(o[i]));console.log(a.join(" "));for(let i of e){let c=[];for(let m of n){let u=String(i[m]??"");c.push(u.padEnd(o[m]))}console.log(c.join(" "))}}}},keyValueTable:(e,t)=>{if(Se())return;let{borderStyle:r="single",keyColor:n=kt.blue,valueColor:o=kt.white,maxWidth:s=process.stdout.columns||80}=t||{},i={single:{topLeft:"\u250C",topRight:"\u2510",bottomLeft:"\u2514",bottomRight:"\u2518",horizontal:"\u2500",vertical:"\u2502",cross:"\u253C",leftT:"\u251C",rightT:"\u2524"},double:{topLeft:"\u2554",topRight:"\u2557",bottomLeft:"\u255A",bottomRight:"\u255D",horizontal:"\u2550",vertical:"\u2551",cross:"\u256C",leftT:"\u2560",rightT:"\u2563"},rounded:{topLeft:"\u256D",topRight:"\u256E",bottomLeft:"\u2570",bottomRight:"\u256F",horizontal:"\u2500",vertical:"\u2502",cross:"\u253C",leftT:"\u251C",rightT:"\u2524"},bold:{topLeft:"\u250F",topRight:"\u2513",bottomLeft:"\u2517",bottomRight:"\u251B",horizontal:"\u2501",vertical:"\u2503",cross:"\u254B",leftT:"\u2523",rightT:"\u252B"},none:{topLeft:"",topRight:"",bottomLeft:"",bottomRight:"",horizontal:"",vertical:"",cross:"",leftT:"",rightT:""}}[r],c=0,m=0;for(let[g,h]of Object.entries(e)){c=Math.max(c,g.length);let y=String(h??"");m=Math.max(m,y.length)}let u=4,p=1,f=s-u-p;if(c+m>f){let g=c/(c+m);c=Math.floor(f*g),m=f-c}let d=c+m+u+p;r!=="none"&&console.log(i.topLeft+i.horizontal.repeat(d-2)+i.topRight);for(let[g,h]of Object.entries(e)){let y=g,b=String(h??""),x=Dw(y,c),v=Dw(b,m),C=Math.max(x.length,v.length);for(;x.length<C;)x.push("");for(;v.length<C;)v.push("");for(let k=0;k<C;k++){let _=x[k].padEnd(c),I=v[k].padEnd(m);console.log(r!=="none"?`${i.vertical} ${n(_)} ${i.vertical} ${o(I)} ${i.vertical}`:`${n(_)} : ${o(I)}`)}}r!=="none"&&console.log(i.bottomLeft+i.horizontal.repeat(d-2)+i.bottomRight)},break:()=>{Se()||process.stderr.write(`
81
- `)},startSpinner:e=>{if(Se())return{stop:()=>{}};let t=b3(e).start();return{stop:(r=!0,n)=>{n&&(t.text=n),r?t.succeed():t.fail()}}},logDetailedError(e,t){if(Se())return;let r=t?`[${t}] `:"",n=s=>s!==null&&typeof s=="object"&&"isRequestError"in s&&s.isRequestError===!0&&"status"in s&&"message"in s&&"data"in s,o=s=>s!==null&&typeof s=="object"&&"issues"in s&&Array.isArray(s.issues);if(n(e)){process.stderr.write(`${r}HTTP ${e.status}: ${e.message}
22
+ `,v,w,uc(g.status,g.statusText,g.headers,g._data))}p&&p({request:f,response:g,options:h})}})}get raw(){return this.fetchInstance}on(t,r){this.emitter.on(t,r)}off(t,r){this.emitter.off(t,r)}once(t,r){let n=o=>{r(o),this.emitter.off(t,n)};this.emitter.on(t,n)}async request(t,r){try{let n=r?.method||"GET";return await this.fetchInstance(t,{...r,method:n})}catch(n){let o=this.convertToRequestError(n);throw this.emitError(o)}}async requestFull(t,r){try{let n=r?.method||"GET",o=await this.fetchInstance.raw(t,{...r,method:n,ignoreResponseError:!0});return{status:o.status,statusText:o.statusText,headers:o.headers,data:o._data,ok:o.ok}}catch(n){let o=this.convertToRequestError(n);throw this.emitError(o)}}async get(t,r){try{return await this.fetchInstance(t,{...r,method:"GET"})}catch(n){let o=this.convertToRequestError(n);throw this.emitError(o)}}async post(t,r,n){try{return await this.fetchInstance(t,{...n,method:"POST",body:r})}catch(o){let a=this.convertToRequestError(o);throw this.emitError(a)}}async put(t,r,n){try{return await this.fetchInstance(t,{...n,method:"PUT",body:r})}catch(o){let a=this.convertToRequestError(o);throw this.emitError(a)}}async patch(t,r,n){try{return await this.fetchInstance(t,{...n,method:"PATCH",body:r})}catch(o){let a=this.convertToRequestError(o);throw this.emitError(a)}}async delete(t,r){try{return await this.fetchInstance(t,{...r,method:"DELETE"})}catch(n){let o=this.convertToRequestError(n);throw this.emitError(o)}}convertToRequestError(t){return t&&typeof t=="object"&&"data"in t?Ea.fromFetchError(t):t instanceof Error?Ea.fromError(t):new Ea("Unknown error occurred",{detail:"Unknown error occurred"})}emitError(t){let r=Ah(t);return this.emitter.emit("error",r),r}async safeRequest(t){try{return{success:!0,data:await t()}}catch(r){if(r instanceof ut)return{success:!1,error:r};let n=this.convertToRequestError(r);return this.emitError(n),{success:!1,error:n}}}async safeGet(t,r){return this.safeRequest(()=>this.get(t,r))}async safePost(t,r,n){return this.safeRequest(()=>this.post(t,r,n))}async safePut(t,r,n){return this.safeRequest(()=>this.put(t,r,n))}async safePatch(t,r,n){return this.safeRequest(()=>this.patch(t,r,n))}async safeDelete(t,r){return this.safeRequest(()=>this.delete(t,r))}async safeRequestMethod(t,r){return this.safeRequest(()=>this.request(t,r))}async safeRequestFull(t,r){return this.safeRequest(()=>this.requestFull(t,r))}withVersion(t){return new Lc({...this.config,version:t})}extend(t){let r=typeof t=="function"?t(this):t,n=Object.create(this);for(let[o,a]of Object.entries(r))typeof a=="function"&&(n[o]=(...s)=>a(this,...s));return n}};function Mh(e={}){return new Rh(e)}var Th=se.object({username:se.string(),email:se.string(),role:se.enum(["admin","user"]),avatar:se.string(),email_verified:se.boolean(),totp_enabled:se.boolean(),has_backup_codes:se.boolean(),flag_has_password:se.boolean()}).passthrough(),Lh=se.object({id:se.string(),name:se.string(),slug:se.string().nullable(),tier:se.string(),role:se.string(),avatar:se.string().nullable().optional()}).passthrough(),Nh=se.object({balance:se.string().or(se.number()),granted_balance:se.string().or(se.number()),is_post_paid:se.boolean(),outstanding_amount:se.string().or(se.number()).nullable()}).passthrough(),Uh=se.object({user:Th,workspace:Lh,credits:Nh}).passthrough(),Oh=Ut.object({username:Ut.string(),email:Ut.string(),credits:Ut.number(),granted_credits:Ut.number(),avatar:Ut.string(),team_name:Ut.string(),team_tier:Ut.string()}).passthrough();function Fh(e){return e==="2025-10-28"?Oh:Uh}async function Nc(e,t){let r=await e.get("/auth/me");return t?.schema===!1?r:(t?.schema||Fh(e.config.version)).parse(r)}async function Pe(e,t){try{return{success:!0,data:await Nc(e,t)}}catch(r){return r&&typeof r=="object"&&("status"in r||"issues"in r)?{success:!1,error:r}:{success:!1,error:{name:"Error",message:r instanceof Error?r.message:String(r)}}}}var Na={[gc.id]:gc,[fc.id]:fc,[dc.id]:dc},jh=Ot.object({id:Ot.string(),slug:Ot.string().nullable(),url:Ot.string(),version:Ot.string(),chain_id:Ot.number().nullable(),kms_contract_address:Ot.string().nullable().transform(e=>e),gateway_app_id:Ot.string().nullable().transform(e=>e)}).passthrough(),dt=jh.transform(e=>{if(e.chain_id!=null){let t=Na[e.chain_id];if(t)return{...e,chain:t}}return e});function Uc(e){if(e?.schema!==void 0&&e?.schema!==!1&&(typeof e.schema!="object"||e.schema===null||!("parse"in e.schema)||typeof e.schema.parse!="function"))throw new Error("Invalid schema: must be a Zod schema object, false, or undefined")}function Oc(e){if(e?.schema!==void 0&&e?.schema!==!1&&(typeof e.schema!="object"||e.schema===null||!("parse"in e.schema)||typeof e.schema.parse!="function"))return{success:!1,error:{name:"ZodError",message:"Invalid schema: must be a Zod schema object, false, or undefined",issues:[{code:"invalid_type",expected:"object",received:typeof e.schema,path:["schema"],message:"Invalid schema: must be a Zod schema object, false, or undefined"}]}}}function Fc(e,t){function r(s,c){return n(s,c)}async function n(s,c){Uc(c);let l=await t(s);return c?.schema===!1?l:(c?.schema||e).parse(l)}function o(s,c){return a(s,c)}async function a(s,c){let l=Oc(c);if(l)return l;let m=await(async()=>{try{return{success:!0,data:await t(s)}}catch(u){return u&&typeof u=="object"&&"status"in u?{success:!1,error:u}:u&&typeof u=="object"&&"issues"in u?{success:!1,error:u}:{success:!1,error:{name:"Error",message:u instanceof Error?u.message:String(u)}}}})();return m.success?c?.schema===!1?{success:!0,data:m.data}:(c?.schema||e).safeParse(m.data):m}return{action:r,safeAction:o}}function M(e,t){function r(s,...c){let[l,m]=c;return n(s,l,m)}async function n(s,c,l){Uc(l);let m=await t(s,c);return l?.schema===!1?m:(l?.schema||e).parse(m)}function o(s,...c){let[l,m]=c;return a(s,l,m)}async function a(s,c,l){let m=Oc(l);if(m)return m;let p=await(async()=>{try{return{success:!0,data:await t(s,c)}}catch(d){return d&&typeof d=="object"&&"status"in d?{success:!1,error:d}:d&&typeof d=="object"&&"issues"in d?{success:!1,error:d}:{success:!1,error:{name:"Error",message:d instanceof Error?d.message:String(d)}}}})();return p.success?l?.schema===!1?{success:!0,data:p.data}:(l?.schema||e).safeParse(p.data):p}return{action:r,safeAction:o}}var Vh=K.object({name:K.string(),is_dev:K.boolean(),version:K.union([K.tuple([K.number(),K.number(),K.number()]),K.tuple([K.number(),K.number(),K.number(),K.number()])]),os_image_hash:K.string().nullable().optional()}).passthrough(),zh=K.object({teepod_id:K.number(),name:K.string(),listed:K.boolean(),resource_score:K.number(),remaining_vcpu:K.number(),remaining_memory:K.number(),remaining_cvm_slots:K.number(),images:K.array(Vh),support_onchain_kms:K.boolean().optional(),fmspc:K.string().nullable().optional(),device_id:K.string().nullable().optional(),region_identifier:K.string().nullable().optional(),default_kms:K.string().nullable().optional(),kms_list:K.array(K.string()).default([])}).passthrough(),Kh=K.object({max_instances:K.number().nullable().optional(),max_vcpu:K.number().nullable().optional(),max_memory:K.number().nullable().optional(),max_disk:K.number().nullable().optional()}).passthrough(),Gh=K.object({tier:K.string(),capacity:Kh,nodes:K.array(zh),kms_list:K.array(dt)}).passthrough(),{action:Hh,safeAction:Zt}=Fc(Gh,async e=>await e.get("/teepods/available")),jc=fe.object({id:fe.string(),name:fe.string(),description:fe.string(),vcpu:fe.number(),memory_mb:fe.number(),hourly_rate:fe.string(),requires_gpu:fe.boolean(),default_disk_size_gb:fe.number().default(20),family:fe.string().nullable()}).passthrough(),qh=fe.object({name:fe.string(),items:fe.array(jc),total:fe.number()}).strict(),Bh=fe.object({result:fe.array(qh)}).strict(),Wh=fe.object({items:fe.array(jc),total:fe.number(),family:fe.string()}).strict(),Jh=fe.object({family:fe.string()}).strict(),{action:Ua,safeAction:Yh}=M(Bh,async e=>await e.get("/instance-types")),{action:Oa,safeAction:Zh}=M(Wh,async(e,t)=>{let r=Jh.parse(t);return await e.get(`/instance-types/${r.family}`)}),Vc=Ne.object({id:Ne.string(),name:Ne.string(),slug:Ne.string().nullable(),tier:Ne.string(),role:Ne.string(),is_default:Ne.boolean(),created_at:Ne.string(),confidential_models_enabled:Ne.boolean().optional()}).passthrough(),Xh=Ne.object({has_more:Ne.boolean(),next_cursor:Ne.string().nullable(),total:Ne.number().nullable()}).passthrough(),Qh=Ne.object({data:Ne.array(Vc),pagination:Xh}).passthrough(),{action:ey,safeAction:ty}=M(Qh,async(e,t)=>{let r=new URLSearchParams;t?.cursor&&r.append("cursor",t.cursor),t?.limit&&r.append("limit",t.limit.toString());let n=r.toString()?`/workspaces?${r.toString()}`:"/workspaces";return await e.get(n)}),{action:ry,safeAction:ny}=M(Vc,async(e,t)=>await e.get(`/workspaces/${t}`)),oy=I.object({id:I.string(),name:I.string(),status:I.string(),uptime:I.string(),app_url:I.string().nullable(),app_id:I.string(),instance_id:I.string().nullable(),configuration:I.any().optional(),exited_at:I.string().nullable(),boot_progress:I.string().nullable(),boot_error:I.string().nullable(),shutdown_progress:I.string().nullable(),image_version:I.string().nullable()}),ay=I.object({id:I.number(),username:I.string()}),zc=I.object({id:I.number(),name:I.string(),region_identifier:I.string().nullable().optional()}),Fa=I.object({vcpu:I.number(),memory:I.number(),disk_size:I.number(),gpu_count:I.number().default(0)}),ja=I.object({app:I.string(),instance:I.string()}),sy=I.object({hosted:oy,name:I.string(),managed_user:ay.nullable(),node:zc.nullable(),listed:I.boolean().default(!1),status:I.string(),in_progress:I.boolean().default(!1),dapp_dashboard_url:I.string().nullable(),syslog_endpoint:I.string().nullable(),allow_upgrade:I.boolean().default(!1),project_id:I.string().nullable(),project_type:I.string().nullable(),billing_period:I.string().nullable(),kms_info:dt.nullable(),vcpu:I.number().nullable(),memory:I.number().nullable(),disk_size:I.number().nullable(),gateway_domain:I.string().nullable(),public_urls:I.array(ja),machine_info:Fa.nullable().optional(),updated_at:I.string().nullable().optional()}),Kc=I.object({id:I.number(),name:I.string(),status:I.string(),in_progress:I.boolean().optional().default(!1),teepod_id:I.number().nullable(),teepod:zc.optional().nullable(),app_id:I.string(),vm_uuid:I.string().nullable(),instance_id:I.string().nullable(),vcpu:I.number(),memory:I.number(),disk_size:I.number(),base_image:I.string().nullable(),encrypted_env_pubkey:I.string().nullable(),listed:I.boolean().optional().default(!1),project_id:I.string().optional().nullable(),project_type:I.string().optional().nullable(),instance_type:I.string().optional().nullable(),public_sysinfo:I.boolean().optional().default(!1),public_logs:I.boolean().optional().default(!1),dapp_dashboard_url:I.string().optional().nullable(),syslog_endpoint:I.string().optional().nullable(),kms_info:dt.optional().nullable(),contract_address:I.string().optional().nullable(),deployer_address:I.string().optional().nullable(),scheduled_delete_at:I.string().optional().nullable(),public_urls:I.array(ja).optional().default([]),gateway_domain:I.string().optional().nullable(),machine_info:Fa.optional().nullable(),updated_at:I.string().optional().nullable()}),iy=I.object({items:I.array(sy),total:I.number(),page:I.number(),page_size:I.number(),pages:I.number()}),cy=A.enum(["skip","hourly","monthly"]),ly=A.enum(["phala","ethereum","base","legacy"]),Va=A.object({object_type:A.literal("user"),id:A.string().nullable().optional(),username:A.string().nullable().optional(),avatar_url:A.string().nullable().optional()}),za=A.object({object_type:A.literal("workspace"),id:A.string(),name:A.string(),slug:A.string().nullable().optional(),avatar_url:A.string().nullable().optional()}),my=A.object({instance_type:A.string().nullable().optional(),vcpu:A.number().int().nullable().optional(),memory_in_gb:A.number().nullable().optional(),disk_in_gb:A.number().int().nullable().optional(),gpus:A.number().int().nullable().optional(),compute_billing_price:A.string().nullable().optional(),billing_period:cy.nullable().optional()}),py=A.object({name:A.string().nullable().optional(),version:A.string().nullable().optional(),is_dev:A.boolean().nullable().optional(),os_image_hash:A.string().nullable().optional()}),uy=A.object({chain_id:A.number().int().nullable().optional(),dstack_kms_address:A.string().nullable().optional(),dstack_app_address:A.string().nullable().optional(),deployer_address:A.string().nullable().optional(),rpc_endpoint:A.string().nullable().optional(),encrypted_env_pubkey:A.string().nullable().optional()}),dy=A.object({target:A.string().nullable().optional(),started_at:A.string().nullable().optional(),correlation_id:A.string().nullable().optional()}),fy=A.object({base_domain:A.string().nullable().optional(),cname:A.string().nullable().optional()}),Gc=A.object({object_type:A.literal("node"),id:A.number().int().nullable().optional(),name:A.string().nullable().optional(),region:A.string().nullable().optional(),device_id:A.string().nullable().optional(),ppid:A.string().nullable().optional(),status:A.string().nullable().optional(),version:A.string().nullable().optional()});var Bn=A.object({id:A.string(),name:A.string(),app_id:A.string().nullable().optional(),vm_uuid:A.string().nullable().optional(),instance_id:A.string().nullable().optional(),resource:my,node_info:Gc.nullable().optional(),os:py.nullable().optional(),kms_type:ly.nullable().optional(),kms_info:uy.nullable().optional(),status:A.string(),progress:dy.nullable().optional(),compose_hash:A.string().nullable().optional(),gateway:fy,services:A.array(A.record(A.any())).optional().default([]),endpoints:A.array(ja).nullable().optional(),public_logs:A.boolean().optional(),public_sysinfo:A.boolean().optional(),public_tcbinfo:A.boolean().optional(),gateway_enabled:A.boolean().optional(),secure_time:A.boolean().optional(),listed:A.boolean().optional().default(!1),storage_fs:A.string().optional(),workspace:za.nullable().optional(),creator:Va.nullable().optional()}),gy=Bn.extend({compose_file:A.union([A.record(A.any()),A.string()]).nullable().optional()}),hy=A.object({items:A.array(Bn),total:A.number(),page:A.number(),page_size:A.number(),pages:A.number()});function Ar(e){return typeof e!="string"||e.length<5||e.length>63?!1:/^[a-zA-Z](?!.*--)([a-zA-Z0-9-]*[a-zA-Z0-9])?$/.test(e)}function Hc(e){if(typeof e!="string")return Kn();let t=e;return t=t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),t=t.replace(/_/g,"-"),t=t.replace(/[^a-z0-9\s-]/gi,"-").replace(/\s+/g,"-"),t=t.replace(/-+/g,"-").replace(/^-+/,"").replace(/-+$/,""),t.length===0||(/^\d/.test(t)&&(t=`dstack-app-${t}`),t.length<5&&(t=`dstack-app-${t}`),t=t.slice(0,63).replace(/-+$/,""),t.length===0)||!Ar(t)?Kn():t}function Kn(){let e=Date.now().toString(36),t=Math.random().toString(36).substring(2,6);return`dstack-app-${e}-${t}`}var Xe=vr.object({id:vr.string().optional(),uuid:vr.string().regex(/^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i,"Invalid UUID format").optional(),app_id:vr.string().optional(),instance_id:vr.string().optional(),name:vr.string().refine(Ar,{message:"Name must be 5-63 characters, start with letter, and contain only letters/numbers/hyphens"}).optional()}),ft=e=>e.refine(t=>{let r=t;return!!(r.id||r.uuid||r.app_id||r.instance_id||r.name)},{message:"One of id, uuid, app_id, instance_id, or name must be provided"}),yy=ft(Xe),G=yy.transform(e=>{let t;if(e.id)t=e.id;else if(e.uuid)t=e.uuid;else if(e.app_id)t=e.app_id;else if(e.instance_id)t=e.instance_id;else{if(e.name)return{cvmId:e.name};throw new Error("No valid identifier provided")}let r=/^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i,n=/^[0-9a-f]{40}$/i,o;return r.test(t)?o=t.replace(/-/g,""):n.test(t)?o=`app_${t}`:o=t,{cvmId:o}}),vy=G;function by(e){return e==="2025-10-28"?Kc:gy}async function qc(e,t){let{cvmId:r}=vy.parse(t),n=await e.get(`/cvms/${r}`);return by(e.config.version).parse(n)}async function Q(e,t){try{return{success:!0,data:await qc(e,t)}}catch(r){return r&&typeof r=="object"&&("status"in r||"issues"in r)?{success:!1,error:r}:{success:!1,error:{name:"Error",message:r instanceof Error?r.message:String(r)}}}}var Cy=br.object({page:br.number().int().min(1).optional(),page_size:br.number().int().min(1).optional(),node_id:br.number().int().min(1).optional(),teepod_id:br.number().int().min(1).optional(),user_id:br.string().optional()}).strict();function wy(e){return e==="2025-10-28"?iy:hy}async function Bc(e,t){let r=Cy.parse(t??{}),n=await e.get("/cvms/paginated",{params:r});return wy(e.config.version).parse(n)}async function tn(e,t){try{return{success:!0,data:await Bc(e,t)}}catch(r){return r&&typeof r=="object"&&("status"in r||"issues"in r)?{success:!1,error:r}:{success:!1,error:{name:"Error",message:r instanceof Error?r.message:String(r)}}}}var Qr=200*1024;function Wc(e,t,r){let n=new TextEncoder,o=e?n.encode(e).byteLength:0,a=t?n.encode(t).byteLength:0,s=o+a;if(s>Qr){let c=Qr/1024,l=Math.ceil(s/1024);r.addIssue({code:we.ZodIssueCode.custom,message:`Combined size of docker_compose_file and pre_launch_script must not exceed ${c}KB (current: ${l}KB)`})}}var Jc=we.object({allowed_envs:we.array(we.string()).optional(),docker_compose_file:we.string(),features:we.array(we.string()).optional(),name:we.string().optional(),manifest_version:we.number().optional(),kms_enabled:we.boolean().optional(),public_logs:we.boolean().optional(),public_sysinfo:we.boolean().optional(),tproxy_enabled:we.boolean().optional(),storage_fs:we.enum(["ext4","zfs"]).optional(),pre_launch_script:we.string().optional(),env_pubkey:we.string().optional(),salt:we.string().optional().nullable()}).passthrough().superRefine((e,t)=>{Wc(e.docker_compose_file,e.pre_launch_script,t)}),_y=F.object({app_id:F.string().nullable().optional(),app_env_encrypt_pubkey:F.string().nullable().optional(),compose_hash:F.string(),kms_info:dt.nullable().optional(),fmspc:F.string().nullable().optional(),device_id:F.string().nullable().optional(),os_image_hash:F.string().nullable().optional(),instance_type:F.string().nullable().optional(),teepod_id:F.number().nullable().optional(),node_id:F.number().nullable().optional(),kms_id:F.string().nullable().optional()}).passthrough().transform(e=>{if("teepod_id"in e&&e.teepod_id!==void 0){let{teepod_id:t,...r}=e;return{...r,node_id:t}}return e}),Ia="Name must be 5-63 characters, start with letter, and contain only letters/numbers/hyphens",Sy=F.object({node_id:F.number().optional(),teepod_id:F.number().optional(),region:F.string().optional(),name:F.string().min(5,Ia).max(63,Ia).refine(e=>Ar(e),Ia),instance_type:F.string().optional(),image:F.string().optional(),vcpu:F.number().optional(),memory:F.number().optional(),disk_size:F.number().optional(),compose_file:F.object({allowed_envs:F.array(F.string()).optional(),pre_launch_script:F.string().optional(),docker_compose_file:F.string().optional(),name:F.string().optional().default(""),kms_enabled:F.boolean().optional(),public_logs:F.boolean().optional(),public_sysinfo:F.boolean().optional(),gateway_enabled:F.boolean().optional(),tproxy_enabled:F.boolean().optional(),storage_fs:F.enum(["ext4","zfs"]).optional()}).superRefine((e,t)=>{Wc(e.docker_compose_file,e.pre_launch_script,t)}),listed:F.boolean().optional(),kms_id:F.string().optional(),kms:F.enum(["PHALA","ETHEREUM","BASE"]).optional(),kms_contract:F.string().optional(),env_keys:F.array(F.string()).optional(),nonce:F.number().optional(),app_id:F.string().optional()}).passthrough().transform(e=>!e.instance_type&&!e.vcpu&&!e.memory?{...e,instance_type:"tdx.small"}:e);function ky(e){if(!e.compose_file)return e;let t={...e.compose_file};return typeof t.gateway_enabled=="boolean"&&typeof t.tproxy_enabled=="boolean"?delete t.tproxy_enabled:typeof t.tproxy_enabled=="boolean"&&typeof t.gateway_enabled>"u"&&(t.gateway_enabled=t.tproxy_enabled,delete t.tproxy_enabled,(typeof window<"u"?window.console:globalThis.console)&&console.warn("[phala/cloud] tproxy_enabled is deprecated, please use gateway_enabled instead. See docs for migration.")),{...e,compose_file:t}}var{action:Ey,safeAction:Ka}=M(_y,async(e,t)=>{let r=Sy.parse(t),n=ky(r),o={...n};return typeof n.node_id=="number"?(o={...n,teepod_id:n.node_id},delete o.node_id):typeof n.teepod_id=="number"&&console.warn("[phala/cloud] teepod_id is deprecated, please use node_id instead."),await e.post("/cvms/provision",o)}),Iy=H.object({id:H.number(),name:H.string(),status:H.string(),teepod_id:H.number(),teepod:H.object({id:H.number(),name:H.string()}).nullable(),user_id:H.number().nullable(),app_id:H.string().nullable(),vm_uuid:H.string().nullable(),instance_id:H.string().nullable(),app_url:H.string().nullable().default(null),base_image:H.string().nullable(),vcpu:H.number(),memory:H.number(),disk_size:H.number(),manifest_version:H.number().nullable().default(2),version:H.string().nullable().default("1.0.0"),runner:H.string().nullable().default("docker-compose"),docker_compose_file:H.string().nullable(),features:H.array(H.string()).nullable().default(["kms","tproxy-net"]),created_at:H.string(),encrypted_env_pubkey:H.string().nullable().optional(),app_auth_contract_address:H.string().nullable().optional(),deployer_address:H.string().nullable().optional()}).passthrough(),aI=H.object({encrypted_env:H.string().optional().nullable(),app_id:H.string(),compose_hash:H.string(),kms_id:H.string().optional(),contract_address:H.string().optional(),deployer_address:H.string().optional(),env_keys:H.array(H.string()).optional().nullable()}).passthrough(),{action:Ay,safeAction:Yn}=M(Iy,async(e,t)=>await e.post("/cvms",t));function Ta(e){return e==null?e:Array.isArray(e)?e.map(Ta):e&&typeof e=="object"&&e.constructor===Object?Object.keys(e).sort().reduce((t,r)=>{let n=e[r];return t[r]=Ta(n),t},{}):e}function Yc(e){let t={...e};return t.runner==="bash"&&"docker_compose_file"in t?delete t.docker_compose_file:t.runner==="docker-compose"&&"bash_script"in t&&delete t.bash_script,"pre_launch_script"in t&&!t.pre_launch_script&&delete t.pre_launch_script,t}function Zc(e){let t=Ta(e),r=JSON.stringify(t,null,4);return r=r.replace(/": /g,'":'),r}function Py(e){let t=Yc(e),r=Zc(t);return xy.createHash("sha256").update(r,"utf8").digest("hex")}function $y(e){let t=e;return{...e,getHash:()=>Py(t),toString:()=>Zc(Yc(t))}}var Dy=Jc.transform(e=>$y(e)),Ry=G,{action:My,safeAction:rn}=M(Dy,async(e,t)=>{let{cvmId:r}=Ry.parse(t);return await e.get(`/cvms/${r}/compose_file`)}),Ty=mt.object({id:mt.string().optional(),uuid:mt.string().regex(/^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i).optional(),app_id:mt.string().refine(e=>!e.startsWith("app_")&&e.length===40,"app_id should be 40 characters without prefix").transform(e=>e.startsWith("app_")?e:`app_${e}`).optional(),instance_id:mt.string().refine(e=>!e.startsWith("instance_")&&e.length===40,"instance_id should be 40 characters without prefix").transform(e=>e.startsWith("instance_")?e:`instance_${e}`).optional(),app_compose:Jc,update_env_vars:mt.boolean().optional().nullable()}).refine(e=>!!(e.id||e.uuid||e.app_id||e.instance_id),"One of id, uuid, app_id, or instance_id must be provided").transform(e=>({cvmId:e.id||e.uuid||e.app_id||e.instance_id,request:{...e.app_compose,update_env_vars:e.update_env_vars},_raw:e})),Ly=mt.object({app_id:mt.string().nullable(),device_id:mt.string().nullable(),compose_hash:mt.string(),kms_info:dt.nullable().optional()}).passthrough(),{action:Ny,safeAction:Ga}=M(Ly,async(e,t)=>{let r=Ty.parse(t);return await e.post(`/cvms/${r.cvmId}/compose_file/provision`,r.request)}),Uy=rt.object({id:rt.string().optional(),uuid:rt.string().regex(/^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i).optional(),app_id:rt.string().refine(e=>!e.startsWith("app_")&&e.length===40,"app_id should be 40 characters without prefix").transform(e=>e.startsWith("app_")?e:`app_${e}`).optional(),instance_id:rt.string().refine(e=>!e.startsWith("instance_")&&e.length===40,"instance_id should be 40 characters without prefix").transform(e=>e.startsWith("instance_")?e:`instance_${e}`).optional(),compose_hash:rt.string().min(1,"Compose hash is required"),encrypted_env:rt.string().optional(),env_keys:rt.array(rt.string()).optional(),update_env_vars:rt.boolean().optional().nullable()}).refine(e=>!!(e.id||e.uuid||e.app_id||e.instance_id),"One of id, uuid, app_id, or instance_id must be provided").transform(e=>({cvmId:e.id||e.uuid||e.app_id||e.instance_id,compose_hash:e.compose_hash,encrypted_env:e.encrypted_env,env_keys:e.env_keys,update_env_vars:e.update_env_vars??void 0,_raw:e})),Oy=rt.any().transform(()=>{}),{action:Fy,safeAction:Ha}=M(Oy,async(e,t)=>{let r=Uy.parse(t);return await e.patch(`/cvms/${r.cvmId}/compose_file`,{compose_hash:r.compose_hash,encrypted_env:r.encrypted_env,env_keys:r.env_keys,update_env_vars:r.update_env_vars})}),jy=ft(Xe.extend({encrypted_env:ke.string().describe("Encrypted environment variables (hex string)"),env_keys:ke.array(ke.string()).optional().describe("List of allowed environment variable keys"),compose_hash:ke.string().optional().describe("Compose hash for verification (Phase 2, required when env_keys changes)"),transaction_hash:ke.string().optional().describe("On-chain transaction hash for verification (Phase 2, required when env_keys changes)")})).transform(e=>{let{cvmId:t}=G.parse(e);return{cvmId:t,request:{encrypted_env:e.encrypted_env,env_keys:e.env_keys,compose_hash:e.compose_hash,transaction_hash:e.transaction_hash},_raw:e}}),Vy=ke.object({status:ke.literal("in_progress"),message:ke.string(),correlation_id:ke.string(),allowed_envs_changed:ke.boolean()}),zy=ke.object({status:ke.literal("precondition_required"),message:ke.string(),compose_hash:ke.string(),app_id:ke.string(),device_id:ke.string(),kms_info:dt}),Ky=ke.union([Vy,zy]),{action:Gy,safeAction:Zn}=M(Ky,async(e,t)=>{let r=jy.parse(t);try{return await e.patch(`/cvms/${r.cvmId}/envs`,r.request)}catch(n){if(n instanceof ut&&n.status===465){let o=n.detail;if(o&&typeof o=="object"){let a=o;return{status:"precondition_required",message:a.message||"Compose hash verification required",compose_hash:a.compose_hash,app_id:a.app_id,device_id:a.device_id,kms_info:a.kms_info}}}throw n}}),Hy=ft(Xe.extend({docker_compose_file:ze.string().describe("Docker Compose YAML content"),compose_hash:ze.string().optional().describe("Compose hash for verification (Phase 2, contract-owned KMS only)"),transaction_hash:ze.string().optional().describe("On-chain transaction hash for verification (Phase 2, contract-owned KMS only)")})).transform(e=>{let{cvmId:t}=G.parse(e);return{cvmId:t,request:{docker_compose_file:e.docker_compose_file,compose_hash:e.compose_hash,transaction_hash:e.transaction_hash},_raw:e}}),qy=ze.object({status:ze.literal("in_progress"),message:ze.string(),correlation_id:ze.string()}),By=ze.object({status:ze.literal("precondition_required"),message:ze.string(),compose_hash:ze.string(),app_id:ze.string(),device_id:ze.string(),kms_info:dt}),Wy=ze.union([qy,By]),{action:Jy,safeAction:Yy}=M(Wy,async(e,t)=>{let r=Hy.parse(t),n={"Content-Type":"text/yaml"};r.request.compose_hash&&(n["X-Compose-Hash"]=r.request.compose_hash),r.request.transaction_hash&&(n["X-Transaction-Hash"]=r.request.transaction_hash);try{return await e.patch(`/cvms/${r.cvmId}/docker-compose`,r.request.docker_compose_file,{headers:n})}catch(o){if(o instanceof ut&&o.status===465){let a=o.detail;if(a&&typeof a=="object"){let s=a;return{status:"precondition_required",message:s.message||"Compose hash verification required",compose_hash:s.compose_hash,app_id:s.app_id,device_id:s.device_id,kms_info:s.kms_info}}}throw o}}),Zy=ft(Xe.extend({pre_launch_script:Ke.string().describe("Pre-launch script content (shell script)"),compose_hash:Ke.string().optional().describe("Compose hash for verification (Phase 2, contract-owned KMS only)"),transaction_hash:Ke.string().optional().describe("On-chain transaction hash for verification (Phase 2, contract-owned KMS only)")})).transform(e=>{let{cvmId:t}=G.parse(e);return{cvmId:t,request:{pre_launch_script:e.pre_launch_script,compose_hash:e.compose_hash,transaction_hash:e.transaction_hash},_raw:e}}),Xy=Ke.object({status:Ke.literal("in_progress"),message:Ke.string(),correlation_id:Ke.string()}),Qy=Ke.object({status:Ke.literal("precondition_required"),message:Ke.string(),compose_hash:Ke.string(),app_id:Ke.string(),device_id:Ke.string(),kms_info:dt}),ev=Ke.union([Xy,Qy]),{action:tv,safeAction:rv}=M(ev,async(e,t)=>{let r=Zy.parse(t),n={"Content-Type":"text/plain"};r.request.compose_hash&&(n["X-Compose-Hash"]=r.request.compose_hash),r.request.transaction_hash&&(n["X-Transaction-Hash"]=r.request.transaction_hash);try{return await e.patch(`/cvms/${r.cvmId}/pre-launch-script`,r.request.pre_launch_script,{headers:n})}catch(o){if(o instanceof ut&&o.status===465){let a=o.detail;if(a&&typeof a=="object"){let s=a;return{status:"precondition_required",message:s.message||"Compose hash verification required",compose_hash:s.compose_hash,app_id:s.app_id,device_id:s.device_id,kms_info:s.kms_info}}}throw o}}),ov=G,{action:av,safeAction:sv}=M(nv.string(),async(e,t)=>{let{cvmId:r}=ov.parse(t);return await e.get(`/cvms/${r}/pre-launch-script`)}),iv=hc.object({kms_id:hc.string().min(1,"KMS ID is required")}),{action:cv,safeAction:lv}=M(dt,async(e,t)=>{let r=iv.parse(t);return await e.get(`/kms/${r.kms_id}`)}),mv=pt.object({page:pt.number().int().min(1).optional(),page_size:pt.number().int().min(1).optional(),is_onchain:pt.boolean().optional()}).strict(),pv=pt.object({items:pt.array(dt),total:pt.number(),page:pt.number(),page_size:pt.number(),pages:pt.number()}).strict(),{action:uv,safeAction:qa}=M(pv,async(e,t)=>{let r=mv.parse(t??{});return await e.get("/kms",{params:r})}),dv=Er.object({kms:Er.string().min(1,"KMS ID or slug is required"),app_id:Er.string().refine(e=>e.length===40||e.startsWith("0x")&&e.length===42,"App ID must be exactly 40 characters or 42 characters with 0x prefix")}).strict(),fv=Er.object({public_key:Er.string(),signature:Er.string()}).strict(),{action:gv,safeAction:xr}=M(fv,async(e,t)=>{let r=dv.parse(t);return await e.get(`/kms/${r.kms}/pubkey/${r.app_id}`)}),hv=Jt.object({counts:Jt.number().int().min(1).max(20).optional().default(1)}).strict(),yv=Jt.object({app_ids:Jt.array(Jt.object({app_id:Jt.string(),nonce:Jt.number().int().min(0)}))}).strict(),{action:vv,safeAction:bv}=M(yv,async(e,t)=>{let r=hv.parse(t??{}),n=new URLSearchParams;return n.append("counts",r.counts.toString()),await e.get(`/kms/phala/next_app_id?${n.toString()}`)}),nn=re.object({id:re.number(),name:re.string(),status:re.string(),teepod_id:re.number(),teepod:re.object({id:re.number(),name:re.string(),region_identifier:re.string().nullable().optional()}).optional().nullable(),user_id:re.number().optional().nullable(),app_id:re.string(),vm_uuid:re.string().nullable(),instance_id:re.string().nullable(),app_url:re.string().optional().nullable(),base_image:re.string().optional().nullable(),vcpu:re.number(),memory:re.number(),disk_size:re.number(),manifest_version:re.number().optional().nullable(),version:re.string().optional().nullable(),runner:re.string().optional().nullable(),docker_compose_file:re.string().optional().nullable(),features:re.array(re.string()).optional().nullable(),created_at:re.string(),encrypted_env_pubkey:re.string().nullable()}),Cv=G,{action:wv,safeAction:Ba}=M(nn,async(e,t)=>{let{cvmId:r}=Cv.parse(t);return await e.post(`/cvms/${r}/start`)}),_v=G,{action:Sv,safeAction:Wa}=M(nn,async(e,t)=>{let{cvmId:r}=_v.parse(t);return await e.post(`/cvms/${r}/stop`)}),kv=G,{action:Ev,safeAction:Iv}=M(nn,async(e,t)=>{let{cvmId:r}=kv.parse(t);return await e.post(`/cvms/${r}/shutdown`)}),xv=ft(Xe.extend({force:Av.boolean().optional()})),{action:Pv,safeAction:Ja}=M(nn,async(e,t)=>{let r=xv.parse(t),{cvmId:n}=G.parse(r),{force:o=!1}=r;return await e.post(`/cvms/${n}/restart`,{force:o})}),Dv=G,{action:Rv,safeAction:Ya}=M($v.void(),async(e,t)=>{let{cvmId:r}=Dv.parse(t);await e.delete(`/cvms/${r}`)}),Mv=X.object({name:X.string(),mount_point:X.string(),total_size:X.number(),free_size:X.number()}),Tv=X.object({os_name:X.string(),os_version:X.string(),kernel_version:X.string(),cpu_model:X.string(),num_cpus:X.number(),total_memory:X.number(),available_memory:X.number(),used_memory:X.number(),free_memory:X.number(),total_swap:X.number(),used_swap:X.number(),free_swap:X.number(),uptime:X.number(),loadavg_one:X.number(),loadavg_five:X.number(),loadavg_fifteen:X.number(),disks:X.array(Mv)}),Lv=X.object({is_online:X.boolean(),is_public:X.boolean().default(!1),error:X.string().nullable(),sysinfo:Tv.nullable(),status:X.string().nullable(),in_progress:X.boolean().default(!1),boot_progress:X.string().nullable(),boot_error:X.string().nullable()}),Nv=G,{action:Uv,safeAction:Ov}=M(Lv,async(e,t)=>{let{cvmId:r}=Nv.parse(t);return await e.get(`/cvms/${r}/stats`)}),Fv=ct.object({app:ct.string(),instance:ct.string()}),jv=ct.object({is_online:ct.boolean(),is_public:ct.boolean().default(!0),error:ct.string().nullable(),internal_ip:ct.string().nullable(),latest_handshake:ct.string().nullable(),public_urls:ct.array(Fv).nullable()}),Vv=G,{action:zv,safeAction:Kv}=M(jv,async(e,t)=>{let{cvmId:r}=Vv.parse(t);return await e.get(`/cvms/${r}/network`)}),Hv=G,{action:qv,safeAction:Bv}=M(Gv.string(),async(e,t)=>{let{cvmId:r}=Hv.parse(t);return await e.get(`/cvms/${r}/docker-compose.yml`)}),Wv=de.object({id:de.string(),names:de.array(de.string()),image:de.string(),image_id:de.string(),command:de.string().nullable().optional(),created:de.number(),state:de.string(),status:de.string(),log_endpoint:de.string().nullable()}),Jv=de.object({is_online:de.boolean(),is_public:de.boolean().default(!0),error:de.string().nullable(),docker_compose_file:de.string().nullable(),manifest_version:de.number().nullable(),version:de.string().nullable(),runner:de.string().nullable(),features:de.array(de.string()).nullable(),containers:de.array(Wv).nullable()}),Yv=G,{action:Zv,safeAction:Za}=M(Jv,async(e,t)=>{let{cvmId:r}=Yv.parse(t);return await e.get(`/cvms/${r}/composition`)}),Xv=R.object({common_name:R.string().nullable(),organization:R.string().nullable(),country:R.string().nullable(),state:R.string().nullable(),locality:R.string().nullable()}),Qv=R.object({common_name:R.string().nullable(),organization:R.string().nullable(),country:R.string().nullable()}),Xc=R.object({subject:Xv,issuer:Qv,serial_number:R.string(),not_before:R.string(),not_after:R.string(),version:R.string(),fingerprint:R.string(),signature_algorithm:R.string(),sans:R.array(R.string()).nullable(),is_ca:R.boolean(),position_in_chain:R.number().nullable(),quote:R.string().nullable(),app_id:R.string().nullable().optional(),cert_usage:R.string().nullable().optional()}),eb=R.object({imr:R.number(),event_type:R.number(),digest:R.string(),event:R.string(),event_payload:R.string()}),Qc=R.object({mrtd:R.string(),rootfs_hash:R.string().nullable().optional(),rtmr0:R.string(),rtmr1:R.string(),rtmr2:R.string(),rtmr3:R.string(),event_log:R.array(eb),app_compose:R.string()}),tb=R.object({name:R.string().nullable(),is_online:R.boolean(),is_public:R.boolean().default(!0),error:R.string().nullable(),app_certificates:R.array(Xc).nullable(),tcb_info:Qc.nullable(),compose_file:R.string().nullable()}),rb=G,{action:nb,safeAction:ob}=M(tb,async(e,t)=>{let{cvmId:r}=rb.parse(t);return await e.get(`/cvms/${r}/attestation`)}),ab=ft(Xe.extend({vcpu:Sr.number().optional(),memory:Sr.number().optional(),disk_size:Sr.number().optional(),instance_type:Sr.string().optional(),allow_restart:Sr.boolean().optional()})),{action:sb,safeAction:ib}=M(Sr.void(),async(e,t)=>{let r=ab.parse(t),{cvmId:n}=G.parse(r),{...o}=r;await e.patch(`/cvms/${n}/resources`,o)}),cb=ft(Xe.extend({public_sysinfo:Aa.boolean(),public_logs:Aa.boolean(),public_tcbinfo:Aa.boolean().optional()})),{action:lb,safeAction:Xa}=M(Kc,async(e,t)=>{let r=cb.parse(t),{cvmId:n}=G.parse(r),{public_sysinfo:o,public_logs:a,public_tcbinfo:s}=r;return await e.patch(`/cvms/${n}/visibility`,{public_sysinfo:o,public_logs:a,public_tcbinfo:s})}),yc=xe.object({name:xe.string(),os_image_hash:xe.string().nullable(),is_current:xe.boolean()}),mb=xe.object({version:xe.union([xe.tuple([xe.number(),xe.number(),xe.number(),xe.number()]),xe.tuple([xe.number(),xe.number(),xe.number()])]),prod:yc.nullable(),dev:yc.nullable()}),pb=xe.array(mb),ub=G,{action:db,safeAction:fb}=M(pb,async(e,t)=>{let{cvmId:r}=ub.parse(t);return await e.get(`/cvms/${r}/available-os-images`)}),gb=ft(Xe.extend({os_image_name:el.string().min(1,"OS image name is required")})),{action:hb,safeAction:yb}=M(el.void(),async(e,t)=>{let r=gb.parse(t),{cvmId:n}=G.parse(r),{os_image_name:o}=r;await e.patch(`/cvms/${n}/os-image`,{os_image_name:o})}),vb=it.object({id:it.string().optional(),instance_id:it.string().optional(),name:it.string(),status:it.string(),uptime:it.string().optional(),exited_at:it.string().optional(),boot_progress:it.string().optional(),boot_error:it.string().optional(),shutdown_progress:it.string().optional()}),bb=G,{action:Cb,safeAction:wb}=M(vb,async(e,t)=>{let{cvmId:r}=bb.parse(t);return await e.get(`/cvms/${r}/state`)}),tl=Ve.object({id:Ve.string(),user_id:Ve.string(),name:Ve.string(),public_key:Ve.string(),fingerprint:Ve.string(),key_type:Ve.string(),source:Ve.string(),key_metadata:Ve.record(Ve.unknown()).nullable().optional(),last_synced_at:Ve.string().nullable().optional(),created_at:Ve.string(),updated_at:Ve.string()}),_b=Ve.array(tl);async function rl(e){let t=await e.get("/user/ssh-keys");return _b.parse(t)}async function on(e){try{return{success:!0,data:await rl(e)}}catch(t){return t&&typeof t=="object"&&("status"in t||"issues"in t)?{success:!1,error:t}:{success:!1,error:{name:"Error",message:t instanceof Error?t.message:String(t)}}}}var Sb=Ft.object({github_username:Ft.string().min(1)}),kb=Ft.object({github_username:Ft.string(),keys_added:Ft.number().int(),keys_skipped:Ft.number().int(),errors:Ft.array(Ft.string()).default([])}),{action:Eb,safeAction:Qa}=M(kb,async(e,t)=>{let{github_username:r}=Sb.parse(t);return await e.post("/user/ssh-keys/github-profile",{github_username:r})}),Ib=xa.object({name:xa.string().min(1),public_key:xa.string().min(1)}),{action:Ab,safeAction:es}=M(tl,async(e,t)=>{let{name:r,public_key:n}=Ib.parse(t);return await e.post("/user/ssh-keys",{name:r,public_key:n})}),xb=La.object({keyId:La.string().min(1)}),{action:Pb,safeAction:ts}=M(La.void(),async(e,t)=>{let{keyId:r}=xb.parse(t);await e.delete(`/user/ssh-keys/${r}`)}),$b=Wt.object({synced_count:Wt.number().int(),keys_added:Wt.number().int(),keys_updated:Wt.number().int(),keys_removed:Wt.number().int(),errors:Wt.array(Wt.string()).default([])}),{action:Db,safeAction:Rb}=Fc($b,async e=>await e.post("/user/ssh-keys/github-sync",{})),Mb=Se.object({name:Se.string(),slug:Se.string(),version:Se.string(),os_image_hash:Se.string().nullable(),is_dev:Se.boolean(),requires_gpu:Se.boolean()}).passthrough(),Tb=Se.object({page:Se.number().int().min(1).optional(),page_size:Se.number().int().min(1).optional(),is_dev:Se.boolean().optional()}).strict(),Lb=Se.object({items:Se.array(Mb),total:Se.number(),page:Se.number(),page_size:Se.number(),pages:Se.number()}).passthrough(),{action:Nb,safeAction:rs}=M(Lb,async(e,t)=>{let r=Tb.parse(t??{});return await e.get("/os-images",{params:r})}),Ub=ge.object({device_id:ge.string(),node_name:ge.string().nullable().optional(),on_chain_allowed:ge.boolean().nullable()}).passthrough(),Ob=ge.object({name:ge.string(),version:ge.string(),os_image_hash:ge.string().nullable(),on_chain_allowed:ge.boolean().nullable()}).passthrough(),Fb=ge.object({contract_address:ge.string(),chain_id:ge.number(),chain_name:ge.string(),devices:ge.array(Ub),os_images:ge.array(Ob)}).passthrough(),jb=ge.object({chain_name:ge.string(),chain_id:ge.number(),contracts:ge.array(Fb)}).passthrough(),Vb=ge.object({chain:ge.string()}).strict(),{action:zb,safeAction:ns}=M(jb,async(e,t)=>{let{chain:r}=Vb.parse(t);return await e.get(`/kms/on-chain/${r}`)});function Qe(e={}){let t=Mh(e),r={getCurrentUser:Nc,safeGetCurrentUser:Pe,getAvailableNodes:Hh,safeGetAvailableNodes:Zt,listAllInstanceTypeFamilies:Ua,safeListAllInstanceTypeFamilies:Yh,listFamilyInstanceTypes:Oa,safeListFamilyInstanceTypes:Zh,listWorkspaces:ey,safeListWorkspaces:ty,getWorkspace:ry,safeGetWorkspace:ny,getCvmInfo:qc,safeGetCvmInfo:Q,getCvmList:Bc,safeGetCvmList:tn,provisionCvm:Ey,safeProvisionCvm:Ka,commitCvmProvision:Ay,safeCommitCvmProvision:Yn,getCvmComposeFile:My,safeGetCvmComposeFile:rn,provisionCvmComposeFileUpdate:Ny,safeProvisionCvmComposeFileUpdate:Ga,commitCvmComposeFileUpdate:Fy,safeCommitCvmComposeFileUpdate:Ha,updateCvmEnvs:Gy,safeUpdateCvmEnvs:Zn,updateDockerCompose:Jy,safeUpdateDockerCompose:Yy,updatePreLaunchScript:tv,safeUpdatePreLaunchScript:rv,getCvmPreLaunchScript:av,safeGetCvmPreLaunchScript:sv,startCvm:wv,safeStartCvm:Ba,stopCvm:Sv,safeStopCvm:Wa,shutdownCvm:Ev,safeShutdownCvm:Iv,restartCvm:Pv,safeRestartCvm:Ja,deleteCvm:Rv,safeDeleteCvm:Ya,getCvmStats:Uv,safeGetCvmStats:Ov,getCvmNetwork:zv,safeGetCvmNetwork:Kv,getCvmDockerCompose:qv,safeGetCvmDockerCompose:Bv,getCvmContainersStats:Zv,safeGetCvmContainersStats:Za,getCvmAttestation:nb,safeGetCvmAttestation:ob,updateCvmResources:sb,safeUpdateCvmResources:ib,updateCvmVisibility:lb,safeUpdateCvmVisibility:Xa,getAvailableOsImages:db,safeGetAvailableOsImages:fb,updateOsImage:hb,safeUpdateOsImage:yb,getKmsInfo:cv,safeGetKmsInfo:lv,getKmsList:uv,safeGetKmsList:qa,getAppEnvEncryptPubKey:gv,safeGetAppEnvEncryptPubKey:xr,nextAppIds:vv,safeNextAppIds:bv,getCvmState:Cb,safeGetCvmState:wb,listSshKeys:rl,safeListSshKeys:on,importGithubProfileSshKeys:Eb,safeImportGithubProfileSshKeys:Qa,createSshKey:Ab,safeCreateSshKey:es,deleteSshKey:Pb,safeDeleteSshKey:ts,syncGithubSshKeys:Db,safeSyncGithubSshKeys:Rb,getOsImages:Nb,safeGetOsImages:rs,getKmsOnChainDetail:zb,safeGetKmsOnChainDetail:ns};return t.extend(r)}var vc=$.object({vm_uuid:$.string().nullable(),app_id:$.string(),name:$.string().default(""),status:$.string(),vcpu:$.number().int(),memory:$.number().int(),disk_size:$.number().int(),teepod_id:$.number().int(),teepod_name:$.string(),region_identifier:$.string().nullable().optional(),kms_type:$.string().nullable().optional(),instance_type:$.string().nullable().optional(),listed:$.boolean().nullable().optional(),base_image:$.string().nullable().optional(),kms_slug:$.string().nullable().optional(),kms_id:$.string().nullable().optional(),instance_id:$.string().nullable().optional(),machine_info:Fa.nullable().optional(),updated_at:$.string().nullable().optional()}),Kb=$.object({display_name:$.string().nullable().optional(),avatar_url:$.string().nullable().optional(),description:$.string().nullable().optional(),custom_domain:$.string().nullable().optional()}),Gb=$.object({id:$.string(),name:$.string(),app_id:$.string(),app_provision_type:$.string().nullable().optional(),app_icon_url:$.string().nullable().optional(),created_at:$.string(),kms_type:$.string(),profile:Kb.nullable().optional(),current_cvm:vc.nullable().optional(),cvms:$.array(vc).default([]),cvm_count:$.number().int().default(0)}),Hb=$.object({id:$.null().optional(),app_id:$.string(),name:$.null().optional(),app_provision_type:$.null().optional(),app_icon_url:$.null().optional(),created_at:$.null().optional(),kms_type:$.null().optional(),current_cvm:$.null().optional(),cvms:$.null().optional(),cvm_count:$.null().optional()}),qb=$.union([Gb,Hb]),Bb=$.object({dstack_apps:$.array(qb),page:$.number().int(),page_size:$.number().int(),total:$.number().int(),total_pages:$.number().int()}),Wb=W.object({id:W.string(),name:W.string(),app_id:W.string(),app_provision_type:W.string().nullable().optional(),app_icon_url:W.string().nullable().optional(),created_at:W.string(),kms_type:W.string(),profile:W.object({display_name:W.string().nullable().optional(),avatar_url:W.string().nullable().optional(),description:W.string().nullable().optional(),custom_domain:W.string().nullable().optional()}).nullable().optional(),current_cvm:Bn.nullable().optional(),cvms:W.array(Bn).default([]),cvm_count:W.number().int().default(0)}),Jb=W.object({id:W.null().optional(),app_id:W.string(),name:W.null().optional(),app_provision_type:W.null().optional(),app_icon_url:W.null().optional(),created_at:W.null().optional(),kms_type:W.null().optional(),current_cvm:W.null().optional(),cvms:W.null().optional(),cvm_count:W.null().optional()}),Yb=W.union([Wb,Jb]),Zb=W.object({dstack_apps:W.array(Yb),page:W.number().int(),page_size:W.number().int(),total:W.number().int(),total_pages:W.number().int()}),nl=q.object({object_type:q.literal("cvm"),id:q.string().nullable().optional(),name:q.string().nullable().optional(),app_id:q.string().nullable().optional(),vm_uuid:q.string().nullable().optional()}),Xb=q.object({revision_id:q.string(),app_id:q.string(),vm_uuid:q.string(),compose_hash:q.string(),created_at:q.string(),trace_id:q.string().nullable().optional(),operation_type:q.string(),triggered_by:Va.nullable().optional(),cvm:nl.nullable().optional(),workspace:za.nullable().optional()}),jI=q.object({revision_id:q.string(),app_id:q.string(),vm_uuid:q.string(),compose_hash:q.string(),compose_file:q.union([q.record(q.any()),q.string()]).nullable().optional(),encrypted_env:q.string(),user_config:q.string(),created_at:q.string(),trace_id:q.string().nullable().optional(),operation_type:q.string(),triggered_by:Va.nullable().optional(),cvm:nl.nullable().optional(),workspace:za.nullable().optional()}),VI=q.object({revisions:q.array(Xb),total:q.number().int(),page:q.number().int(),page_size:q.number().int(),total_pages:q.number().int()});function wt(e){if(typeof e=="string"){if(e.startsWith("0x")&&wc(e))return e;if(wc(`0x${e}`))return`0x${e}`}throw new Error(`Invalid hex value: ${e}`)}var ol=class extends Error{constructor(e,t,r){super(e),this.code=t,this.details=r,this.name="NetworkError"}};var lt=class extends Error{constructor(e,t,r){super(e),this.hash=t,this.details=r,this.name="TransactionError"}};async function rC(e,t){try{let r=await e.walletClient.getChainId();return{isCorrectNetwork:r===t,currentChainId:r}}catch(r){throw new ol(`Failed to check network status: ${r instanceof Error?r.message:"Unknown error"}`,"NETWORK_CHECK_FAILED",r)}}async function nC(e,t,r){try{let n=await e.getBalance({address:t});return{address:t,balance:n,sufficient:r?n>=r:!0,required:r}}catch(n){throw new ol(`Failed to check balance: ${n instanceof Error?n.message:"Unknown error"}`,"BALANCE_CHECK_FAILED",n)}}async function oC(e,t,r={}){let{timeout:n=6e4,pollingInterval:o=2e3,confirmations:a=1}=r,s=Date.now();return new Promise((c,l)=>{let m=async()=>{try{let p=await e.getTransactionReceipt({hash:t});if(p){if(a>1&&await e.getBlockNumber()-p.blockNumber+1n<BigInt(a)){if(Date.now()-s>=n){l(new lt(`Transaction confirmation timeout after ${n}ms`,t));return}setTimeout(m,o);return}c(p)}else{if(Date.now()-s>=n){l(new lt(`Transaction receipt timeout after ${n}ms`,t));return}setTimeout(m,o)}}catch(p){if(Date.now()-s>=n){l(new lt(`Transaction receipt timeout after ${n}ms`,t,p));return}setTimeout(m,o)}};m()})}async function an(e,t){let{targetChainId:r,minBalance:n,requiredAddress:o}=t,a=await rC(e,r),s=await nC(e.publicClient,e.address,n),c=o?e.address.toLowerCase()===o.toLowerCase():!0;return{networkValid:a.isCorrectNetwork,balanceValid:s.sufficient,addressValid:c,details:{currentChainId:a.currentChainId,balance:s.balance,address:e.address}}}function Pr(){let e={state:"idle"},t,r,n=c=>{e={...e,...c}},o=()=>{t&&(clearTimeout(t),t=void 0),r&&(r.abort(),r=void 0),e={state:"idle"}},a=()=>{r&&r.abort(),t&&(clearTimeout(t),t=void 0),n({state:"error",aborted:!0,error:"Transaction aborted by user"})};return{get status(){return{...e}},get isIdle(){return e.state==="idle"},get isSubmitting(){return e.state==="submitting"},get isPending(){return e.state==="pending"},get isSuccess(){return e.state==="success"},get isError(){return e.state==="error"},get isTimeout(){return e.state==="timeout"},get isAborted(){return e.aborted===!0},get isComplete(){return["success","error","timeout"].includes(e.state)},abort:a,reset:o,execute:async(c,l,m,p={})=>{let{timeout:u=6e4,confirmations:d=1,onSubmitted:f,onConfirmed:g,onError:h,signal:v}=p;try{if(o(),r=new AbortController,v){if(v.aborted)throw new lt("Operation was aborted before execution");v.addEventListener("abort",()=>{a()})}if(n({state:"submitting",startTime:Date.now(),error:void 0,hash:void 0,receipt:void 0,aborted:!1}),r.signal.aborted)throw new lt("Transaction aborted");let w=await c(l,...m);if(r.signal.aborted)throw new lt("Transaction aborted after submission",w);n({state:"pending",hash:w,submitTime:Date.now()}),f?.(w),u>0&&(t=setTimeout(()=>{e.state==="pending"&&!r?.signal.aborted&&n({state:"timeout",error:`Transaction timeout after ${u}ms`})},u));let C=await Promise.race([oC(l.publicClient,w,{timeout:u,confirmations:d}),new Promise((S,E)=>{r?.signal.addEventListener("abort",()=>{E(new lt("Transaction aborted while waiting for receipt",w))})})]);t&&(clearTimeout(t),t=void 0);let _=C.status==="success";if(n({state:_?"success":"error",receipt:C,confirmTime:Date.now(),error:_?void 0:"Transaction failed on-chain"}),_)g?.(C);else{let S=new lt("Transaction failed on-chain",w,C);throw h?.(S,w),S}return{hash:w,receipt:C,success:_}}catch(w){let C=w instanceof lt?w:new lt(`Transaction execution failed: ${w instanceof Error?w.message:"Unknown error"}`,e.hash,w);throw n({state:"error",error:C.message}),h?.(C,e.hash),C}}}}async function sn(e,t,r,n={},o={}){let{maxRetries:a=3,initialDelay:s=1e3,maxDelay:c=1e4,backoffFactor:l=2,retryCondition:m=()=>!0}=o,p,u=s;for(let d=0;d<=a;d++)try{return await Pr().execute(e,t,r,n)}catch(f){if(p=f instanceof Error?f:new Error(String(f)),d===a||!m(p))break;await new Promise(g=>setTimeout(g,u)),u=Math.min(u*l,c)}throw p}var al=[{inputs:[{name:"deployer",type:"address"},{name:"disableUpgrades",type:"bool"},{name:"allowAnyDevice",type:"bool"},{name:"deviceId",type:"bytes32"},{name:"composeHash",type:"bytes32"}],name:"deployAndRegisterApp",outputs:[{name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"appId",type:"address",indexed:!0},{name:"deployer",type:"address",indexed:!0}],name:"AppDeployedViaFactory",type:"event",anonymous:!1},{inputs:[{name:"appId",type:"address",indexed:!1}],name:"AppRegistered",type:"event",anonymous:!1}],aC=ye.object({chain:ye.unknown().optional(),rpcUrl:ye.string().optional(),kmsContractAddress:ye.string(),privateKey:ye.string().optional(),walletClient:ye.unknown().optional(),publicClient:ye.unknown().optional(),allowAnyDevice:ye.boolean().optional().default(!1),deviceId:ye.string().optional().default("0000000000000000000000000000000000000000000000000000000000000000"),composeHash:ye.string().optional().default("0000000000000000000000000000000000000000000000000000000000000000"),disableUpgrades:ye.boolean().optional().default(!1),skipPrerequisiteChecks:ye.boolean().optional().default(!1),minBalance:ye.string().optional()}).passthrough(),sC=aC.refine(e=>{let t=!!e.privateKey,r=!!e.walletClient;return t!==r},{message:"Either 'privateKey' or 'walletClient' must be provided, but not both",path:["privateKey","walletClient"]}).refine(e=>{let t=!!e.publicClient,r=!!e.walletClient,n=!!e.chain;return t&&r?!0:n},{message:"Chain is required when publicClient or walletClient is not provided",path:["chain"]}),iC=ye.object({appId:ye.string(),appAuthAddress:ye.string(),deployer:ye.string(),transactionHash:ye.string(),blockNumber:ye.bigint().optional(),gasUsed:ye.bigint().optional()}).passthrough();function cC(e,t,r){try{let n=eC({abi:al,eventName:"AppDeployedViaFactory",logs:e.logs,strict:!1});if(n.length===0)throw e.status==="reverted"?new Error(`Transaction failed: ${e.transactionHash}`):new Error(`Transaction ${e.transactionHash} has no AppDeployedViaFactory events. The deployment failed. Status: ${e.status}. Found ${e.logs.length} logs.`);let o=n[0];if(!o?.args)throw new Error("Event has no data");let{appId:a,deployer:s}=o.args;if(!a)throw new Error("Event missing appId");return{appId:a,appAuthAddress:a,deployer:t,transactionHash:e.transactionHash,blockNumber:e.blockNumber,gasUsed:e.gasUsed}}catch(n){throw n instanceof Error?n:new Error(`Parse failed: ${n}`)}}async function lC(e,t){let r=sC.parse(e),{chain:n,rpcUrl:o,kmsContractAddress:a,privateKey:s,walletClient:c,publicClient:l,allowAnyDevice:m=!1,deviceId:p="0000000000000000000000000000000000000000000000000000000000000000",composeHash:u="0000000000000000000000000000000000000000000000000000000000000000",disableUpgrades:d=!1,skipPrerequisiteChecks:f=!1,minBalance:g,timeout:h=12e4,retryOptions:v,signal:w,onTransactionStateChange:C,onTransactionSubmitted:_,onTransactionConfirmed:S}=r,E="0000000000000000000000000000000000000000000000000000000000000000",P=p!==E&&p!=="0x"+E?!1:m,O,V,te,oe;if(s){let Me=tC(s);if(l){if(typeof l!="object"||!l)throw new Error("publicClient is invalid");O=l}else{if(!n)throw new Error("Chain required for publicClient");O=bc({chain:n,transport:Pa(o)})}if(!n)throw new Error("Chain required for walletClient");V=Qb({account:Me,chain:n,transport:Pa(o)}),te=Me.address,oe=n.id}else if(c){if(typeof c!="object"||!c)throw new Error("walletClient is invalid");if(V=c,l){if(typeof l!="object"||!l)throw new Error("publicClient is invalid");O=l}else{if(!n)throw new Error("Chain required for publicClient");O=bc({chain:n,transport:Pa(o)})}if(!V.account?.address)throw new Error("WalletClient needs an account");te=V.account.address,n?oe=n.id:oe=await V.getChainId()}else throw new Error("Need privateKey or walletClient");let Re={publicClient:O,walletClient:V,address:te,chainId:oe},z=Pr();if(C&&typeof C=="function"){let Me=()=>{C(z.status),z.isComplete||setTimeout(Me,100)};setTimeout(Me,10)}if(!f){let Me={targetChainId:oe,minBalance:g?Cc(g):Cc("0.001")},pr=await an(Re,Me);if(!pr.networkValid)throw new Error(`Wrong network. Need chain ${Me.targetChainId}, got ${pr.details.currentChainId}`);if(!pr.balanceValid){let Mt=Number(Me.minBalance)/1e18,sg=Number(pr.details.balance)/1e18;throw new Error(`Not enough ETH. Need ${Mt}, have ${sg.toFixed(6)}`)}}let L=wt(p),ve=wt(u),Fe=`0x${L.slice(2).padEnd(64,"0")}`,ee=`0x${ve.slice(2).padEnd(64,"0")}`,bt=async Me=>{try{let Mt=await Me.publicClient.getCode({address:a});if(!Mt||Mt==="0x")throw new Error(`No contract at ${a}`)}catch(Mt){if(Mt instanceof Error&&Mt.message.includes("No contract at"))throw Mt}let pr={address:a,abi:al,functionName:"deployAndRegisterApp",args:[Me.address,d,P,Fe,ee],account:Me.walletClient.account||Me.address,chain:n||null};return await Me.walletClient.writeContract(pr)},ag=v?await sn(bt,Re,[],{timeout:h,confirmations:1,onSubmitted:_,onConfirmed:S,signal:w},v):await z.execute(bt,Re,[],{timeout:h,confirmations:1,onSubmitted:_,onConfirmed:S,signal:w}),fi=cC(ag.receipt,te,a);return t?.schema===!1?fi:(t?.schema||iC).parse(fi)}async function sl(e,t){try{return{success:!0,data:await lC(e,t)}}catch(r){let n=r instanceof Error?r.message:"Unknown deployment error";return{success:!1,error:{isRequestError:!0,message:n,status:500,detail:n}}}}var il=[{inputs:[{name:"composeHash",type:"bytes32"}],name:"addComposeHash",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"composeHash",type:"bytes32",indexed:!1}],name:"ComposeHashAdded",type:"event",anonymous:!1}],dC=le.object({chain:le.unknown().optional(),rpcUrl:le.string().optional(),appId:le.string(),composeHash:le.string(),privateKey:le.string().optional(),walletClient:le.unknown().optional(),publicClient:le.unknown().optional(),skipPrerequisiteChecks:le.boolean().optional().default(!1),minBalance:le.string().optional(),timeout:le.number().optional().default(12e4),retryOptions:le.unknown().optional(),signal:le.unknown().optional(),onTransactionStateChange:le.function().optional(),onTransactionSubmitted:le.function().optional(),onTransactionConfirmed:le.function().optional()}).passthrough().refine(e=>{let t=!!e.privateKey,r=!!e.walletClient;return t!==r},{message:"Either 'privateKey' or 'walletClient' must be provided, but not both",path:["privateKey","walletClient"]}).refine(e=>{let t=!!e.publicClient,r=!!e.walletClient,n=!!e.chain;return t&&r?!0:n},{message:"Chain is required when publicClient or walletClient is not provided",path:["chain"]}),fC=le.object({composeHash:le.string(),appId:le.string(),transactionHash:le.string(),blockNumber:le.bigint().optional(),gasUsed:le.bigint().optional()}).passthrough();function gC(e,t,r,n){console.log(e.logs);try{let o=pC({abi:il,eventName:"ComposeHashAdded",logs:e.logs,strict:!1});if(o.length>0){let a=o[0];a?.args?.composeHash!==t&&console.warn(`Event compose hash (${a?.args?.composeHash}) does not match expected (${t})`)}return{composeHash:t,appAuthAddress:r,appId:n,transactionHash:e.transactionHash,blockNumber:e.blockNumber,gasUsed:e.gasUsed}}catch(o){return console.warn("Failed to parse ComposeHashAdded event, returning basic result:",o),{composeHash:t,appAuthAddress:r,appId:n,transactionHash:e.transactionHash,blockNumber:e.blockNumber,gasUsed:e.gasUsed}}}async function hC(e,t){let r=dC.parse(e),{chain:n,rpcUrl:o,appId:a,composeHash:s,privateKey:c,walletClient:l,publicClient:m,timeout:p=12e4,retryOptions:u,signal:d,onTransactionStateChange:f,onTransactionSubmitted:g,onTransactionConfirmed:h,skipPrerequisiteChecks:v=!1,minBalance:w}=r,C,_,S,E,x=a.startsWith("0x")?a:`0x${a}`;if(c){let z=uC(c);if(m)C=m;else{if(!n)throw new Error("Chain required when creating publicClient");C=_c({chain:n,transport:$a(o)})}if(!n)throw new Error("Chain required when creating walletClient");_=mC({account:z,chain:n,transport:$a(o)}),S=z.address,E=n.id}else if(l){if(_=l,m)C=m;else{if(!n)throw new Error("Chain required when creating publicClient");C=_c({chain:n,transport:$a(o)})}if(!_.account?.address)throw new Error("WalletClient must have an account with address");S=_.account.address,E=n?n.id:await _.getChainId()}else throw new Error("Either privateKey or walletClient must be provided");let P={publicClient:C,walletClient:_,address:S,chainId:E},O=Pr();if(f&&typeof f=="function"){let z=()=>{f(O.status),O.isComplete||setTimeout(z,100)};setTimeout(z,10)}if(!v){let z={targetChainId:E,minBalance:w?Sc(w):Sc("0.001")},L=await an(P,z);if(!L.networkValid)throw new Error(`Network mismatch: Expected chain ${z.targetChainId}, but wallet is on chain ${L.details.currentChainId}`);if(!L.balanceValid){let ve=Number(z.minBalance)/1e18,Fe=Number(L.details.balance)/1e18;throw new Error(`Insufficient balance: Required ${ve} ETH, but account has ${Fe.toFixed(6)} ETH`)}}let V=async z=>await z.walletClient.writeContract({address:x,abi:il,functionName:"addComposeHash",args:[wt(s)],account:z.walletClient.account||z.address,chain:n||null}),te=u?await sn(V,P,[],{timeout:p,confirmations:1,onSubmitted:g,onConfirmed:h,signal:d},u):await O.execute(V,P,[],{timeout:p,confirmations:1,onSubmitted:g,onConfirmed:h,signal:d}),oe=gC(te.receipt,wt(s),x,a);return t?.schema===!1?oe:(t?.schema||fC).parse(oe)}async function Xn(e,t){try{return{success:!0,data:await hC(e,t)}}catch(r){let n=r instanceof Error?r.message:"Unknown blockchain error";return{success:!1,error:{isRequestError:!0,message:n,status:500,detail:n}}}}var Ir=[{inputs:[{internalType:"bytes32",name:"deviceId",type:"bytes32"}],name:"addDevice",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"deviceId",type:"bytes32"}],name:"removeDevice",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"_allowAnyDevice",type:"bool"}],name:"setAllowAnyDevice",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"allowedDeviceIds",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"allowAnyDevice",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"deviceId",type:"bytes32"}],name:"DeviceAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"deviceId",type:"bytes32"}],name:"DeviceRemoved",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bool",name:"allowAny",type:"bool"}],name:"AllowAnyDeviceSet",type:"event"}],bC=me.object({chain:me.unknown().optional(),rpcUrl:me.string().optional(),appAddress:me.string(),deviceId:me.string(),privateKey:me.string().optional(),walletClient:me.unknown().optional(),publicClient:me.unknown().optional(),skipPrerequisiteChecks:me.boolean().optional().default(!1),minBalance:me.string().optional(),timeout:me.number().optional().default(12e4),retryOptions:me.unknown().optional(),signal:me.unknown().optional(),onTransactionStateChange:me.function().optional(),onTransactionSubmitted:me.function().optional(),onTransactionConfirmed:me.function().optional()}).passthrough().refine(e=>!!e.privateKey!=!!e.walletClient,{message:"Either 'privateKey' or 'walletClient' must be provided, but not both",path:["privateKey","walletClient"]}).refine(e=>e.publicClient&&e.walletClient?!0:!!e.chain,{message:"Chain is required when publicClient or walletClient is not provided",path:["chain"]}),CC=me.object({appAddress:me.string(),deviceId:me.string(),transactionHash:me.string(),blockNumber:me.bigint().optional(),gasUsed:me.bigint().optional()}).passthrough();async function wC(e,t){let r=bC.parse(e),{chain:n,rpcUrl:o,appAddress:a,deviceId:s,privateKey:c,walletClient:l,publicClient:m,timeout:p=12e4,retryOptions:u,signal:d,onTransactionStateChange:f,onTransactionSubmitted:g,onTransactionConfirmed:h,skipPrerequisiteChecks:v=!1,minBalance:w}=r,C=a.startsWith("0x")?a:`0x${a}`,_=wt(s),S,E,x,P;if(c){let L=vC(c);S=m||kc({chain:n,transport:Da(o)}),E=yC({account:L,chain:n,transport:Da(o)}),x=L.address,P=n.id}else if(l){if(E=l,S=m||kc({chain:n,transport:Da(o)}),!E.account?.address)throw new Error("WalletClient must have an account with address");x=E.account.address,P=n?n.id:await E.getChainId()}else throw new Error("Either privateKey or walletClient must be provided");let O={publicClient:S,walletClient:E,address:x,chainId:P},V=Pr();if(f&&typeof f=="function"){let L=()=>{f(V.status),V.isComplete||setTimeout(L,100)};setTimeout(L,10)}if(!v){let L={targetChainId:P,minBalance:w?Ec(w):Ec("0.001")},ve=await an(O,L);if(!ve.networkValid)throw new Error(`Network mismatch: Expected chain ${L.targetChainId}, but wallet is on chain ${ve.details.currentChainId}`);if(!ve.balanceValid){let Fe=Number(L.minBalance)/1e18,ee=Number(ve.details.balance)/1e18;throw new Error(`Insufficient balance: Required ${Fe} ETH, but account has ${ee.toFixed(6)} ETH`)}}let te=async L=>L.walletClient.writeContract({address:C,abi:Ir,functionName:"addDevice",args:[_],account:L.walletClient.account||L.address,chain:n||null}),oe=u?await sn(te,O,[],{timeout:p,confirmations:1,onSubmitted:g,onConfirmed:h,signal:d},u):await V.execute(te,O,[],{timeout:p,confirmations:1,onSubmitted:g,onConfirmed:h,signal:d}),Re={appAddress:C,deviceId:_,transactionHash:oe.receipt.transactionHash,blockNumber:oe.receipt.blockNumber,gasUsed:oe.receipt.gasUsed};return t?.schema===!1?Re:(t?.schema||CC).parse(Re)}async function cl(e,t){try{return{success:!0,data:await wC(e,t)}}catch(r){let n=r instanceof Error?r.message:"Unknown blockchain error";return{success:!1,error:{isRequestError:!0,message:n,status:500,detail:n}}}}var kC=pe.object({chain:pe.unknown().optional(),rpcUrl:pe.string().optional(),appAddress:pe.string(),deviceId:pe.string(),privateKey:pe.string().optional(),walletClient:pe.unknown().optional(),publicClient:pe.unknown().optional(),skipPrerequisiteChecks:pe.boolean().optional().default(!1),minBalance:pe.string().optional(),timeout:pe.number().optional().default(12e4),retryOptions:pe.unknown().optional(),signal:pe.unknown().optional(),onTransactionStateChange:pe.function().optional(),onTransactionSubmitted:pe.function().optional(),onTransactionConfirmed:pe.function().optional()}).passthrough().refine(e=>!!e.privateKey!=!!e.walletClient,{message:"Either 'privateKey' or 'walletClient' must be provided, but not both",path:["privateKey","walletClient"]}).refine(e=>e.publicClient&&e.walletClient?!0:!!e.chain,{message:"Chain is required when publicClient or walletClient is not provided",path:["chain"]}),EC=pe.object({appAddress:pe.string(),deviceId:pe.string(),transactionHash:pe.string(),blockNumber:pe.bigint().optional(),gasUsed:pe.bigint().optional()}).passthrough();async function IC(e,t){let r=kC.parse(e),{chain:n,rpcUrl:o,appAddress:a,deviceId:s,privateKey:c,walletClient:l,publicClient:m,timeout:p=12e4,retryOptions:u,signal:d,onTransactionStateChange:f,onTransactionSubmitted:g,onTransactionConfirmed:h,skipPrerequisiteChecks:v=!1,minBalance:w}=r,C=a.startsWith("0x")?a:`0x${a}`,_=wt(s),S,E,x,P;if(c){let L=SC(c);S=m||Ic({chain:n,transport:Ra(o)}),E=_C({account:L,chain:n,transport:Ra(o)}),x=L.address,P=n.id}else if(l){if(E=l,S=m||Ic({chain:n,transport:Ra(o)}),!E.account?.address)throw new Error("WalletClient must have an account with address");x=E.account.address,P=n?n.id:await E.getChainId()}else throw new Error("Either privateKey or walletClient must be provided");let O={publicClient:S,walletClient:E,address:x,chainId:P},V=Pr();if(f&&typeof f=="function"){let L=()=>{f(V.status),V.isComplete||setTimeout(L,100)};setTimeout(L,10)}if(!v){let L={targetChainId:P,minBalance:w?Ac(w):Ac("0.001")},ve=await an(O,L);if(!ve.networkValid)throw new Error(`Network mismatch: Expected chain ${L.targetChainId}, but wallet is on chain ${ve.details.currentChainId}`);if(!ve.balanceValid){let Fe=Number(L.minBalance)/1e18,ee=Number(ve.details.balance)/1e18;throw new Error(`Insufficient balance: Required ${Fe} ETH, but account has ${ee.toFixed(6)} ETH`)}}let te=async L=>L.walletClient.writeContract({address:C,abi:Ir,functionName:"removeDevice",args:[_],account:L.walletClient.account||L.address,chain:n||null}),oe=u?await sn(te,O,[],{timeout:p,confirmations:1,onSubmitted:g,onConfirmed:h,signal:d},u):await V.execute(te,O,[],{timeout:p,confirmations:1,onSubmitted:g,onConfirmed:h,signal:d}),Re={appAddress:C,deviceId:_,transactionHash:oe.receipt.transactionHash,blockNumber:oe.receipt.blockNumber,gasUsed:oe.receipt.gasUsed};return t?.schema===!1?Re:(t?.schema||EC).parse(Re)}async function ll(e,t){try{return{success:!0,data:await IC(e,t)}}catch(r){let n=r instanceof Error?r.message:"Unknown blockchain error";return{success:!1,error:{isRequestError:!0,message:n,status:500,detail:n}}}}var PC=ue.object({chain:ue.unknown().optional(),rpcUrl:ue.string().optional(),appAddress:ue.string(),allow:ue.boolean(),privateKey:ue.string().optional(),walletClient:ue.unknown().optional(),publicClient:ue.unknown().optional(),skipPrerequisiteChecks:ue.boolean().optional().default(!1),minBalance:ue.string().optional(),timeout:ue.number().optional().default(12e4),retryOptions:ue.unknown().optional(),signal:ue.unknown().optional(),onTransactionStateChange:ue.function().optional(),onTransactionSubmitted:ue.function().optional(),onTransactionConfirmed:ue.function().optional()}).passthrough().refine(e=>!!e.privateKey!=!!e.walletClient,{message:"Either 'privateKey' or 'walletClient' must be provided, but not both",path:["privateKey","walletClient"]}).refine(e=>e.publicClient&&e.walletClient?!0:!!e.chain,{message:"Chain is required when publicClient or walletClient is not provided",path:["chain"]}),$C=ue.object({appAddress:ue.string(),allow:ue.boolean(),transactionHash:ue.string(),blockNumber:ue.bigint().optional(),gasUsed:ue.bigint().optional()}).passthrough();async function DC(e,t){let r=PC.parse(e),{chain:n,rpcUrl:o,appAddress:a,allow:s,privateKey:c,walletClient:l,publicClient:m,timeout:p=12e4,retryOptions:u,signal:d,onTransactionStateChange:f,onTransactionSubmitted:g,onTransactionConfirmed:h,skipPrerequisiteChecks:v=!1,minBalance:w}=r,C=a.startsWith("0x")?a:`0x${a}`,_,S,E,x;if(c){let z=xC(c);_=m||xc({chain:n,transport:Ma(o)}),S=AC({account:z,chain:n,transport:Ma(o)}),E=z.address,x=n.id}else if(l){if(S=l,_=m||xc({chain:n,transport:Ma(o)}),!S.account?.address)throw new Error("WalletClient must have an account with address");E=S.account.address,x=n?n.id:await S.getChainId()}else throw new Error("Either privateKey or walletClient must be provided");let P={publicClient:_,walletClient:S,address:E,chainId:x},O=Pr();if(f&&typeof f=="function"){let z=()=>{f(O.status),O.isComplete||setTimeout(z,100)};setTimeout(z,10)}if(!v){let z={targetChainId:x,minBalance:w?Pc(w):Pc("0.001")},L=await an(P,z);if(!L.networkValid)throw new Error(`Network mismatch: Expected chain ${z.targetChainId}, but wallet is on chain ${L.details.currentChainId}`);if(!L.balanceValid){let ve=Number(z.minBalance)/1e18,Fe=Number(L.details.balance)/1e18;throw new Error(`Insufficient balance: Required ${ve} ETH, but account has ${Fe.toFixed(6)} ETH`)}}let V=async z=>z.walletClient.writeContract({address:C,abi:Ir,functionName:"setAllowAnyDevice",args:[s],account:z.walletClient.account||z.address,chain:n||null}),te=u?await sn(V,P,[],{timeout:p,confirmations:1,onSubmitted:g,onConfirmed:h,signal:d},u):await O.execute(V,P,[],{timeout:p,confirmations:1,onSubmitted:g,onConfirmed:h,signal:d}),oe={appAddress:C,allow:s,transactionHash:te.receipt.transactionHash,blockNumber:te.receipt.blockNumber,gasUsed:te.receipt.gasUsed};return t?.schema===!1?oe:(t?.schema||$C).parse(oe)}async function ml(e,t){try{return{success:!0,data:await DC(e,t)}}catch(r){let n=r instanceof Error?r.message:"Unknown blockchain error";return{success:!1,error:{isRequestError:!0,message:n,status:500,detail:n}}}}var gA=Cr.object({appAddress:Cr.string(),owner:Cr.string(),allowAnyDevice:Cr.boolean(),devices:Cr.array(Cr.string())});async function Qn(e){let{chain:t,rpcUrl:r,appAddress:n,deviceIds:o,publicClient:a}=e,s=n.startsWith("0x")?n:`0x${n}`,c=a||(()=>{if(!t)throw new Error("Chain is required when publicClient is not provided");return RC({chain:t,transport:MC(r)})})(),[l,m]=await Promise.all([c.readContract({address:s,abi:Ir,functionName:"allowAnyDevice"}),c.readContract({address:s,abi:Ir,functionName:"owner"})]);if(l)return{appAddress:s,owner:m,allowAnyDevice:!0,devices:o.map(u=>wt(u))};let p;if(o.length===0)p=[];else{let u=o.map(f=>({address:s,abi:Ir,functionName:"allowedDeviceIds",args:[wt(f)]})),d=await c.multicall({contracts:u});p=o.map((f,g)=>({deviceId:wt(f),allowed:d[g]?.status==="success"&&d[g]?.result===!0})).filter(f=>f.allowed).map(f=>f.deviceId)}return{appAddress:s,owner:m,allowAnyDevice:!1,devices:p}}var TC=Gc;var LC=wr.object({items:wr.array(TC),total:wr.number(),page:wr.number(),page_size:wr.number(),pages:wr.number()}).passthrough(),{action:CA,safeAction:pl}=M(LC,async(e,t)=>{let{teamSlug:r,page:n,pageSize:o}=t,a=new URLSearchParams;n!==void 0&&a.append("page",n.toString()),o!==void 0&&a.append("page_size",o.toString());let s=a.toString()?`/workspaces/${r}/nodes?${a.toString()}`:`/workspaces/${r}/nodes`;return await e.get(s)}),kr=ot.object({limit:ot.number(),remaining:ot.number()}).passthrough(),NC=ot.object({vm_slots:kr,vcpu:kr,memory_mb:kr,disk_gb:kr}).passthrough(),UC=ot.object({gpus:kr,in_use:ot.number(),misconfigured:ot.number()}).passthrough(),OC=ot.object({team_slug:ot.string(),tier:ot.string(),quotas:NC,reserved_nodes:kr,reserved_gpu:UC,as_of:ot.string()}).passthrough(),{action:_A,safeAction:SA}=M(OC,async(e,t)=>await e.get(`/workspaces/${t.teamSlug}/quotas`)),jC=ft(Xe.extend({node_id:FC.number().optional()})),{action:EA,safeAction:IA}=M(nn,async(e,t)=>{let r=jC.parse(t),{cvmId:n}=G.parse(r),{node_id:o}=r;return await e.post(`/cvms/${n}/replicas`,{node_id:o})}),xA=_r.object({target:_r.string().describe("Target status to wait for (e.g., 'running', 'stopped')"),interval:_r.number().min(5).max(30).default(5).describe("Polling interval in seconds"),timeout:_r.number().min(10).max(600).default(300).describe("Timeout per attempt in seconds"),maxRetries:_r.number().min(0).default(Number.POSITIVE_INFINITY).describe("Maximum number of retry attempts (Infinity for unlimited)"),retryDelay:_r.number().min(0).default(5e3).describe("Delay between retries in milliseconds")});var ul=nt.object({cvm_id:nt.number().int(),identifier:nt.string(),status:nt.enum(["updated","unchanged","skipped","conflict","error"]),old_instance_id:nt.string().nullable().optional(),new_instance_id:nt.string().nullable().optional(),source:nt.enum(["teepod_state","teepod_info","gateway","none"]),verified_with_gateway:nt.boolean(),reason:nt.string().nullable().optional()}),VC=ft(Xe.extend({overwrite:nt.boolean().optional(),dry_run:nt.boolean().optional()})),{action:$A,safeAction:DA}=M(ul,async(e,t)=>{let r=VC.parse(t),{cvmId:n}=G.parse(r),{overwrite:o,dry_run:a}=r;return await e.patch(`/cvms/${n}/instance-id`,{overwrite:o,dry_run:a})}),zC=_e.object({cvm_ids:_e.array(_e.string()).optional(),running_only:_e.boolean().optional(),missing_only:_e.boolean().optional(),overwrite:_e.boolean().optional(),limit:_e.number().int().min(1).max(500).optional(),dry_run:_e.boolean().optional()}).strict(),KC=_e.object({total:_e.number().int(),scanned:_e.number().int(),updated:_e.number().int(),unchanged:_e.number().int(),skipped:_e.number().int(),conflicts:_e.number().int(),errors:_e.number().int(),items:_e.array(ul)}),{action:MA,safeAction:TA}=M(KC,async(e,t)=>{let r=zC.parse(t);return await e.patch("/cvms/instance-ids",r)}),GC=Le.object({vm_uuid:Le.string(),status:Le.string(),uptime:Le.string().nullable().optional(),in_progress:Le.boolean(),boot_progress:Le.string().nullable().optional(),boot_error:Le.string().nullable().optional(),operation_type:Le.string().nullable().optional(),operation_started_at:Le.string().nullable().optional(),correlation_id:Le.string().nullable().optional()}),HC=Le.record(Le.string(),GC),qC=Le.object({vmUuids:Le.array(Le.string())}),{action:NA,safeAction:dl}=M(HC,async(e,t)=>{let{vmUuids:r}=qC.parse(t);return await e.post("/status/batch",{vm_uuids:r})}),BC=Xr.object({hostname:Xr.string().nullable().optional(),ssh_authorized_keys:Xr.array(Xr.string()).default([]),default_gateway_domain:Xr.string().nullable().optional()}),WC=G,{action:OA,safeAction:fl}=M(BC,async(e,t)=>{let{cvmId:r}=WC.parse(t);return await e.get(`/cvms/${r}/user_config`)}),JC=Be.object({page:Be.number().int().min(1).optional(),page_size:Be.number().int().min(1).max(100).optional(),search:Be.string().optional(),status:Be.array(Be.string()).optional(),listed:Be.boolean().optional(),base_image:Be.string().optional(),instance_type:Be.string().optional(),kms_slug:Be.string().optional(),kms_type:Be.string().optional(),node:Be.string().optional(),region:Be.string().optional()}).strict();function YC(e){return e==="2025-10-28"?Bb:Zb}async function ZC(e,t){let r=JC.parse(t??{}),n=await e.get("/apps",{params:r});return YC(e.config.version).parse(n)}async function gl(e,t){try{return{success:!0,data:await ZC(e,t)}}catch(r){return r&&typeof r=="object"&&("status"in r||"issues"in r)?{success:!1,error:r}:{success:!1,error:{name:"Error",message:r instanceof Error?r.message:String(r)}}}}var VA=$c.object({appId:$c.string().min(1)}).strict();var KA=Dc.object({appId:Dc.string().min(1)}).strict();var XC=Ue.object({device_id:Ue.string(),node_name:Ue.string().nullable(),cvm_ids:Ue.array(Ue.number()),allowed_onchain:Ue.boolean(),status:Ue.string()}),QC=Ue.object({is_onchain_kms:Ue.boolean(),allow_any_device:Ue.boolean().nullable().optional(),chain_id:Ue.number().nullable().optional(),app_contract_address:Ue.string().nullable().optional(),devices:Ue.array(XC).optional().default([])}),ew=Ue.object({appId:Ue.string().min(1)}).strict();async function tw(e,t){let{appId:r}=ew.parse(t),n=await e.get(`/apps/${r}/device-allowlist`);return QC.parse(n)}async function eo(e,t){try{return{success:!0,data:await tw(e,t)}}catch(r){return r&&typeof r=="object"&&("status"in r||"issues"in r)?{success:!1,error:r}:{success:!1,error:{name:"Error",message:r instanceof Error?r.message:String(r)}}}}var qA=Gn.object({appId:Gn.string().min(1),page:Gn.number().int().min(1).optional(),page_size:Gn.number().int().min(1).max(1e3).optional()}).strict();var WA=Hn.object({appId:Hn.string().min(1),revisionId:Hn.string().min(1),rawComposeFile:Hn.boolean().optional()}).strict();var YA=Te.object({statuses:Te.array(Te.string()),image_versions:Te.array(Te.string()),instance_types:Te.array(Te.string()),kms_slugs:Te.array(Te.string()),kms_types:Te.array(Te.string()),regions:Te.array(Te.string()),nodes:Te.array(Te.string())});var rw=J.object({contract_address:J.string(),chain_id:J.string().nullable(),version:J.string(),url:J.string(),gateway_app_id:J.string().nullable(),gateway_app_url:J.string(),kms_type:J.string()}),Rc=J.object({app_id:J.string().optional(),instance_id:J.string().optional(),app_name:J.string().optional(),device_id:J.string().optional()}).passthrough().nullable(),nw=J.object({vm_uuid:J.string().nullable().optional(),name:J.string().optional(),instance_id:J.string().nullable().optional(),status:J.string().optional(),image_version:J.string().nullable().optional(),quote:J.string().nullable().optional(),ppid:J.string().optional(),device_id:J.string().optional(),tcb_info:Qc.nullable().optional(),app_certificates:J.array(Xc).nullable().optional(),compose_file:J.string().nullable().optional(),error:J.string().nullable().optional()}),ow=J.object({app_id:J.string(),contract_address:J.string(),kms_info:rw,instances:J.array(nw),kms_guest_agent_info:Rc,gateway_guest_agent_info:Rc,qemu_version:J.string().nullable()}),aw=J.object({appId:J.string().min(1)}).strict(),{action:XA,safeAction:QA}=M(ow,async(e,t)=>{let{appId:r}=aw.parse(t);return await e.get(`/apps/${r}/attestations`)}),sw=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/gm;function iw(e){let t={},r=e.toString();r=r.replace(/\r\n?/gm,`
23
+ `);let n;for(;(n=sw.exec(r))!=null;){let o=n[1];if(!o)continue;let a=n[2]||"";a=a.trim();let s=a[0];a=a.replace(/^(['"`])([\s\S]*)\1$/gm,"$2"),s==='"'&&(a=a.replace(/\\n/g,`
24
+ `),a=a.replace(/\\r/g,"\r")),t[o]=a}return t}function $r(e){let t=iw(e),r=[];for(let[n,o]of Object.entries(t))r.push({key:n,value:o});return r}function to(e){return e.split(/[\s-]+/).filter(Boolean).map((t,r)=>r===0?t.toLowerCase():t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join("")}function hl(e){return e===void 0?[]:Array.isArray(e)?[...e]:[e]}function yl(e,t){let r={};for(let c of t.flagConfig.descriptors.values()){let l=t.flags[c.canonicalKey];l!==void 0&&(r[c.target]=l)}for(let c of t.flagConfig.negatedLookup.values())c.negatedKey&&t.flags[c.negatedKey]&&(r[c.target]=!1);t.passThrough.length>0&&(r["--"]=t.passThrough);let n={},o=e.arguments??[],a=[...t.positionals],s=0;for(let c of o){let l=c.target??to(c.name);if(c.variadic){n[l]=a.slice(s),s=a.length;break}a[s]!==void 0&&(n[l]=a[s]),s+=1}return{options:r,positionals:n,raw:{flags:t.flags,positionals:t.positionals}}}import fw from"arg";var mw={name:"help",shorthand:"h",description:"Show help information for the current command",type:"boolean",target:"help"},pw={name:"version",shorthand:"v",description:"Show CLI version",type:"boolean",target:"version"},N={name:"interactive",shorthand:"i",description:"Enable interactive mode",type:"boolean",target:"interactive",group:"basic"},vl={name:"api-token",description:"API token used for authentication",type:"string",target:"apiToken",aliases:["api-key"],argumentName:"token",group:"basic"},Ee={name:"json",shorthand:"j",description:"Output in JSON format",type:"boolean",target:"json",negatedName:"no-json",group:"basic"},uw={name:"api-version",description:"API version to use (e.g. 2025-10-28, 2026-01-21)",type:"string",target:"apiVersion",group:"advanced"},Xt=[mw,pw,vl,Ee,uw],jt=[vl],B={name:"cvm_id",description:"CVM identifier (UUID, app_id, instance_id, or name)",required:!1,target:"cvmId"},Dr={name:"cvm-id",description:"CVM identifier (UUID, app_id, instance_id, or name)",type:"string",target:"cvmId"},bl={name:"uuid",description:"[DEPRECATED] Use --cvm-id instead. CVM UUID.",type:"string",target:"cvmId",deprecated:!0,group:"deprecated"};import Cl from"arg";function wl(e){let t={},r=new Map,n=new Map;if(!e)return{spec:t,descriptors:r,negatedLookup:n};for(let o of e){let a=`--${o.name}`,s=o.target??to(o.name),c=dw(o.type);r.set(a,{option:o,canonicalKey:a,target:s,negatedKey:o.negatedName?`--${o.negatedName}`:void 0}),t[a]=c,o.shorthand&&(t[`-${o.shorthand}`]=a);for(let l of hl(o.aliases))t[`--${l}`]=a;if(o.negatedName){let l=`--${o.negatedName}`;if(o.type!=="boolean")throw new Error(`Negated option is only supported for boolean types: ${o.name}`);t[l]=Cl.flag(()=>!0),n.set(l,{option:o,canonicalKey:a,target:s,negatedKey:l})}}return{spec:t,descriptors:r,negatedLookup:n}}function dw(e){switch(e){case"string":return(t="")=>t;case"number":return(t,r)=>{let n=Number(t);if(Number.isNaN(n))throw new Error(`Invalid value for ${r}: expected a number.`);return n};case"boolean":return Cl.flag(()=>!0);case"string[]":return(t,r,n)=>{let o=Array.isArray(n)?[...n]:[];if(t==="")throw new Error(`Option ${r} expects a value.`);return o.push(t),o};case"number[]":return(t,r,n)=>{let o=Array.isArray(n)?[...n]:[],a=Number(t);if(Number.isNaN(a))throw new Error(`Invalid value for ${r}: expected a number.`);return o.push(a),o};default:throw new Error(`Unsupported option type: ${e}`)}}function gw(e){let t=e.indexOf("--");return t===-1?[[...e],[]]:[e.slice(0,t),e.slice(t+1)]}function cn(e,t,r={}){let n=[...Xt,...t?[...t]:[]],o=wl(n),{permissive:a=!1,stopAtPositional:s=!1}=r,[c,l]=gw(e),m=fw(o.spec,{argv:c,permissive:a,stopAtPositional:s}),{_:p,...u}=m;return{positionals:p??[],flags:u,flagConfig:o,passThrough:l}}function ro(e){return e==="unstable"?" [UNSTABLE]":e==="deprecated"?" [DEPRECATED]":""}function oo(e){let{registry:t,executableName:r}=e,n=[];n.push(`Usage: ${r} <command> [options]`),n.push("");let o=t.getChildren(),a=l=>{switch(l){case"deploy":return"Deploy:";case"manage":return"Manage:";case"cvm-ops":return"CVM operations:";case"profile":return"Profile / auth:";case"advanced":return"Advanced:";case"deprecated":return"Deprecated:"}},s=["deploy","manage","cvm-ops","profile","advanced","deprecated"],c=l=>{let m=l.command?.meta??l.group?.meta;if(m?.category)return m.category;let p=l.name??"";return m?.stability==="deprecated"?"deprecated":p==="nodes"||p==="deploy"?"deploy":p==="apps"||p==="cvms"||p==="link"||p==="simulator"?"manage":p==="ssh"||p==="cp"||p==="ps"||p==="logs"?"cvm-ops":p==="login"||p==="logout"||p==="switch"||p==="status"?"profile":p==="api"||p==="self"?"advanced":p==="auth"||p==="config"||p==="docker"?"deprecated":"advanced"};for(let l of s){let m=o.filter(p=>c(p)===l).sort((p,u)=>(p.name??"").localeCompare(u.name??""));if(m.length!==0){n.push(a(l));for(let p of m){let u=p.command?.meta??p.group?.meta,d=(u?.description??"").split(`
25
+ `)[0],f=u?.stability,g=f?ro(f):"",h=p.name??"",v=u?.aliases,w=v?.length?`${h} (${v.join(", ")})`:h;n.push(` ${w.padEnd(18)}${d}${g}`.trimEnd())}n.push("")}}n.push(""),n.push("Global options:");for(let l of Xt){let m=no(l),p=Math.max(24,m.length+2);n.push(` ${m.padEnd(p)}${l.description??""}`.trimEnd())}return n.join(`
26
+ `)}function _l(e){let{registry:t,executableName:r,groupPath:n}=e,o=t.getNode(n);if(!o?.group)return oo({registry:t,executableName:r});let a=[],s=n.join(" "),c=`${r} ${s}`;a.push(`Usage: ${c} <command> [options]`),a.push(""),o.group.meta.description&&(a.push(o.group.meta.description),a.push(""));let l=t.getChildren(n);if(l.length>0){a.push("Available commands:");for(let m of l){let p=m.command?.meta??m.group?.meta,u=(p?.description??"").split(`
27
+ `)[0],d=p?.stability,f=d?ro(d):"",g=m.name??"",h=p?.aliases,v=h?.length?`${g} (${h.join(", ")})`:g;a.push(` ${v.padEnd(18)}${u}${f}`.trimEnd())}a.push("")}a.push("Global options:");for(let m of Xt){let p=no(m),u=Math.max(24,p.length+2);a.push(` ${p.padEnd(u)}${m.description??""}`.trimEnd())}return a.join(`
28
+ `)}function os(e){let{executableName:t,definition:r,registry:n}=e,o=hw({executableName:t,definition:r}),a=ro(r.meta.stability),s=[o,"",`${r.meta.description}${a}`],c=r.meta.arguments??[];if(c.length>0){s.push(""),s.push("Arguments:");for(let g of c){let h=vw(g);s.push(` ${h.padEnd(18)}${g.description??""}`.trimEnd())}}let l=[...r.meta.options??[]],m=Xt.filter(g=>!g.hidden),p=l.filter(g=>!g.hidden),u=new Set(Xt.map(g=>g.name)),d=p.filter(g=>!u.has(g.name));if(m.length>0){let g=new Set(d.map(h=>h.shorthand).filter(h=>typeof h=="string"&&h.length>0));s.push(""),s.push("Global options:");for(let h of m){let v=!h.shorthand||!g.has(h.shorthand),w=no(h,{includeShorthand:v}),C=Math.max(24,w.length+2);s.push(` ${w.padEnd(C)}${h.description??""}`.trimEnd())}}if(d.length>0){let g=C=>C.group==="deprecated"||C.deprecated?!0:(C.description??"").includes("[DEPRECATED]"),h=C=>C.group?C.group:g(C)?"deprecated":"basic",v={basic:[],advanced:[],deprecated:[]};for(let C of d)v[h(C)].push(C);let w=(C,_)=>{if(_.length!==0){s.push(""),s.push(C);for(let S of _){let E=no(S),x=Math.max(24,E.length+2);s.push(` ${E.padEnd(x)}${S.description??""}`.trimEnd())}}};w("Basic options:",v.basic),w("Advanced options:",v.advanced),w("Deprecated options:",v.deprecated)}if(r.meta.passThrough&&(s.push(""),s.push("Pass-through (after --):"),s.push(` ${r.meta.passThrough.description}`),r.meta.passThrough.examples&&r.meta.passThrough.examples.length>0)){s.push(""),s.push(" Examples:");for(let g of r.meta.passThrough.examples)s.push(` ${g}`)}if(r.meta.examples&&r.meta.examples.length>0){s.push(""),s.push("Examples:");for(let g of r.meta.examples)s.push(` # ${g.name}`),s.push(` ${g.value}`)}let f=n.getChildren(r.path);if(f.length>0){s.push(""),s.push("Subcommands:");for(let g of f){let h=g.command?.meta??g.group?.meta,v=(h?.description??"").split(`
29
+ `)[0],w=h?.stability,C=w?ro(w):"",_=g.name??"",S=h?.aliases,E=S?.length?`${_} (${S.join(", ")})`:_;s.push(` ${E.padEnd(18)}${v}${C}`.trimEnd())}}return s.join(`
30
+ `)}function hw({executableName:e,definition:t}){let r=[e,...t.path],o=(t.meta.arguments??[]).map(m=>yw(m)).join(" "),s=(t.meta.options?.length??0)>0?" [options]":"",c=o?` ${o}`:"",l=t.meta.passThrough?" [--] [...]":"";return`Usage: ${r.join(" ")}${s}${c}${l}`}function yw(e){let t=`<${e.name}>`;return e.variadic?`${t}...`:e.required===!1?`[${t}]`:t}function vw(e){return e.variadic?`<${e.name}...>`:e.required===!1?`<${e.name}>?`:`<${e.name}>`}function no(e,{includeShorthand:t=!0}={}){let r=[];t&&e.shorthand&&r.push(`-${e.shorthand}`);let n=`--${e.name}`;if(e.argumentName?n+=` ${e.argumentName.toUpperCase()}`:e.type!=="boolean"&&(n+=" <value>"),r.push(n),e.aliases&&e.aliases.length>0)for(let o of e.aliases){let a=`--${o}`;e.argumentName?a+=` ${e.argumentName.toUpperCase()}`:e.type!=="boolean"&&(a+=" <value>"),r.push(a)}return e.type==="boolean"&&e.negatedName&&r.push(`--${e.negatedName}`),r.join(", ")}var Sl;function kl(e){return Yt.includes(e)}function El(e){Sl=e}function as(){return Sl}var ss=!1;function ln(e){ss=e}function ne(){return ss}function is(){return!ss}import _w from"path";import ao from"fs-extra";import Al from"@iarna/toml";import{z as at}from"zod";import Oe from"chalk";import bw from"ora";function Cw(e,t){let r=e.split(/\s+/),n=[],o="";for(let a of r){let s=o.length===0?a:`${o} ${a}`;s.length<=t?o=s:(o.length>0&&n.push(o),o=a)}return o.length>0&&n.push(o),n}function ww(e,t){if(e.length<=t)return[e];let r=[],n=0;for(;n<e.length;)r.push(e.slice(n,n+t)),n+=t;return r}function Il(e,t){let r=[];for(let n of e.split(`
31
+ `)){if(n.length<=t){r.push(n);continue}if(n.indexOf(" ")===-1){r.push(...ww(n,t));continue}let o=Cw(n,t);r.push(...o)}if(r.length===0){let n=e.trim();r.push(n)}return r}var i={error:(e,...t)=>{ne()||(process.stderr.write(`${Oe.red("\u2717")} ${Oe.red(e)}`),t.length>0&&process.stderr.write(` ${t.map(String).join(" ")}`),process.stderr.write(`
32
+ `))},warn:(e,...t)=>{ne()||(process.stderr.write(`${Oe.yellow("\u26A0")} ${Oe.yellow(e)}`),t.length>0&&process.stderr.write(` ${t.map(String).join(" ")}`),process.stderr.write(`
33
+ `))},info:(e,...t)=>{ne()||(process.stderr.write(`${Oe.blue("\u2139")} ${Oe.blue(e)}`),t.length>0&&process.stderr.write(` ${t.map(String).join(" ")}`),process.stderr.write(`
34
+ `))},success:(e,...t)=>{ne()||(process.stderr.write(`${Oe.green("\u2713")} ${Oe.green(e)}`),t.length>0&&process.stderr.write(` ${t.map(String).join(" ")}`),process.stderr.write(`
35
+ `))},debug:(e,...t)=>{ne()||process.env.DEBUG&&(process.stderr.write(`${Oe.gray("\u{1F50D}")} ${Oe.gray(e)}`),t.length>0&&process.stderr.write(` ${t.map(String).join(" ")}`),process.stderr.write(`
36
+ `))},table:(e,t)=>{if(!ne()){if(e.length===0){console.log(Oe.yellow("No data to display"));return}if(t){let r;typeof t[0]=="string"?r=t.map(s=>({key:s,header:s})):r=t;let n={};for(let s of r){let c=s.header||String(s.key);n[String(s.key)]=c.length}for(let s of e)for(let c of r){let l=String(typeof c.key=="string"&&!(c.key in s)?"":s[String(c.key)]??"");n[String(c.key)]=Math.max(n[String(c.key)],l.length)}let o=[];for(let s of r){let c=s.header||String(s.key);o.push(Oe.bold(c.padEnd(n[String(s.key)])))}console.log(o.join(" "));let a=[];for(let s of r)a.push("-".repeat(n[String(s.key)]));console.log(a.join(" "));for(let s of e){let c=[];for(let l of r){let m=String(typeof l.key=="string"&&!(l.key in s)?"":s[String(l.key)]??"");c.push(m.padEnd(n[String(l.key)]))}console.log(c.join(" "))}}else{let r=e[0],n=Object.keys(r),o={};for(let c of n)o[c]=c.length;for(let c of e)for(let l of n){let m=String(c[l]??"");o[l]=Math.max(o[l],m.length)}let a=[];for(let c of n)a.push(Oe.bold(c.padEnd(o[c])));console.log(a.join(" "));let s=[];for(let c of n)s.push("-".repeat(o[c]));console.log(s.join(" "));for(let c of e){let l=[];for(let m of n){let p=String(c[m]??"");l.push(p.padEnd(o[m]))}console.log(l.join(" "))}}}},keyValueTable:(e,t)=>{if(ne())return;let{borderStyle:r="single",keyColor:n=Oe.blue,valueColor:o=Oe.white,maxWidth:a=process.stdout.columns||80}=t||{},c={single:{topLeft:"\u250C",topRight:"\u2510",bottomLeft:"\u2514",bottomRight:"\u2518",horizontal:"\u2500",vertical:"\u2502",cross:"\u253C",leftT:"\u251C",rightT:"\u2524"},double:{topLeft:"\u2554",topRight:"\u2557",bottomLeft:"\u255A",bottomRight:"\u255D",horizontal:"\u2550",vertical:"\u2551",cross:"\u256C",leftT:"\u2560",rightT:"\u2563"},rounded:{topLeft:"\u256D",topRight:"\u256E",bottomLeft:"\u2570",bottomRight:"\u256F",horizontal:"\u2500",vertical:"\u2502",cross:"\u253C",leftT:"\u251C",rightT:"\u2524"},bold:{topLeft:"\u250F",topRight:"\u2513",bottomLeft:"\u2517",bottomRight:"\u251B",horizontal:"\u2501",vertical:"\u2503",cross:"\u254B",leftT:"\u2523",rightT:"\u252B"},none:{topLeft:"",topRight:"",bottomLeft:"",bottomRight:"",horizontal:"",vertical:"",cross:"",leftT:"",rightT:""}}[r],l=0,m=0;for(let[g,h]of Object.entries(e)){l=Math.max(l,g.length);let v=String(h??"");m=Math.max(m,v.length)}let p=4,u=1,d=a-p-u;if(l+m>d){let g=l/(l+m);l=Math.floor(d*g),m=d-l}let f=l+m+p+u;r!=="none"&&console.log(c.topLeft+c.horizontal.repeat(f-2)+c.topRight);for(let[g,h]of Object.entries(e)){let v=g,w=String(h??""),C=Il(v,l),_=Il(w,m),S=Math.max(C.length,_.length);for(;C.length<S;)C.push("");for(;_.length<S;)_.push("");for(let E=0;E<S;E++){let x=C[E].padEnd(l),P=_[E].padEnd(m);console.log(r!=="none"?`${c.vertical} ${n(x)} ${c.vertical} ${o(P)} ${c.vertical}`:`${n(x)} : ${o(P)}`)}}r!=="none"&&console.log(c.bottomLeft+c.horizontal.repeat(f-2)+c.bottomRight)},break:()=>{ne()||process.stderr.write(`
37
+ `)},startSpinner:e=>{if(ne())return{stop:()=>{}};let t=bw(e).start();return{stop:(r=!0,n)=>{n&&(t.text=n),r?t.succeed():t.fail()}}},logDetailedError(e,t){if(ne())return;let r=t?`[${t}] `:"",n=a=>a!==null&&typeof a=="object"&&"isRequestError"in a&&a.isRequestError===!0&&"status"in a&&"message"in a&&"data"in a,o=a=>a!==null&&typeof a=="object"&&"issues"in a&&Array.isArray(a.issues);if(n(e)){process.stderr.write(`${r}HTTP ${e.status}: ${e.message}
82
38
  `),e.data!==void 0&&e.data!==null&&process.stderr.write(`${JSON.stringify(e.data,null,2)}
83
39
  `);return}if(o(e)){process.stderr.write(`${r}Validation error: ${JSON.stringify(e.issues)}
84
40
  `);return}e instanceof Error?process.stderr.write(`${r}${e.message}
85
41
  `):process.stderr.write(`${r}${String(e)}
86
- `)}};var zw=fr.extend({profile:Mr.string().optional(),api_version:Mr.enum(os).optional(),gateway_domain:Mr.string().optional(),gateway_port:Mr.number().int().positive().optional(),compose_file:Mr.string().optional(),env_file:Mr.string().optional(),public_logs:Mr.boolean().optional(),public_sysinfo:Mr.boolean().optional(),listed:Mr.boolean().optional()}),Rc="phala.toml";function lg(){return w3.join(process.cwd(),Rc)}function Fl(){return Ml.existsSync(lg())}function C3(){let e=lg();if(!Ml.existsSync(e))throw new Error(`Project configuration file not found: ${Rc}
87
- Run 'phala init' to create one.`);try{let t=Ml.readFileSync(e,"utf8"),r=Uw.parse(t),n=zw.parse(r);if(n.id||n.uuid||n.app_id||n.instance_id||n.name){let{cvmId:o}=X.parse(n);return{...n,cvm_id:o}}return n}catch(t){if(t instanceof Mr.ZodError){let r=t.issues.map(n=>` - ${n.path.join(".")}: ${n.message}`).join(`
42
+ `)}};var xl=Xe.extend({profile:at.string().optional(),api_version:at.enum(Yt).optional(),gateway_domain:at.string().optional(),gateway_port:at.number().int().positive().optional(),compose_file:at.string().optional(),env_file:at.string().optional(),public_logs:at.boolean().optional(),public_sysinfo:at.boolean().optional(),listed:at.boolean().optional()}),mn="phala.toml";function cs(){return _w.join(process.cwd(),mn)}function so(){return ao.existsSync(cs())}function Sw(){let e=cs();if(!ao.existsSync(e))throw new Error(`Project configuration file not found: ${mn}
43
+ Run 'phala init' to create one.`);try{let t=ao.readFileSync(e,"utf8"),r=Al.parse(t),n=xl.parse(r);if(n.id||n.uuid||n.app_id||n.instance_id||n.name){let{cvmId:o}=G.parse(n);return{...n,cvm_id:o}}return n}catch(t){if(t instanceof at.ZodError){let r=t.issues.map(n=>` - ${n.path.join(".")}: ${n.message}`).join(`
88
44
  `);throw new Error(`Invalid project configuration:
89
- ${r}`)}throw new Error(`Failed to parse ${Rc}: ${t instanceof Error?t.message:String(t)}`)}}function Ow(e){let t=lg();try{let r=zw.parse(e),n=Uw.stringify(r);Ml.writeFileSync(t,n,"utf8"),l.success(`Project configuration saved to ${Rc}`)}catch(r){if(r instanceof Mr.ZodError){let n=r.issues.map(o=>` - ${o.path.join(".")}: ${o.message}`).join(`
45
+ ${r}`)}throw new Error(`Failed to parse ${mn}: ${t instanceof Error?t.message:String(t)}`)}}function Pl(e){let t=cs();try{let r=xl.parse(e),n=Al.stringify(r);ao.writeFileSync(t,n,"utf8"),i.success(`Project configuration saved to ${mn}`)}catch(r){if(r instanceof at.ZodError){let n=r.issues.map(o=>` - ${o.path.join(".")}: ${o.message}`).join(`
90
46
  `);throw new Error(`Invalid configuration:
91
- ${n}`)}throw new Error(`Failed to save ${Rc}: ${r instanceof Error?r.message:String(r)}`)}}function Mc(){return Fl()?C3():{}}function jw(e){if(!e)return;let{cvmId:t}=X.parse({id:e});return t}import In from"fs";import S3 from"os";import Ll from"path";var sn="https://cloud-api.phala.com/api/v1";function Bl(){let e=process.env.PHALA_CLOUD_DIR;return typeof e=="string"&&e.trim().length>0?e:Ll.join(S3.homedir(),".phala-cloud")}function Fc(){return Ll.join(Bl(),"credentials.json")}function fg(){return Ll.join(Bl(),"api-key")}function Hw(){return Ll.join(Bl(),"docker-credentials.json")}function Vw(){let e=Bl();In.existsSync(e)||In.mkdirSync(e,{recursive:!0})}function Nl(e){return typeof e=="string"&&e.trim().length>0}function Dl(e){let t=e.trim();return t.length===0?"default":t}function Bt(){try{let e=Fc();if(!In.existsSync(e))return null;let t=In.readFileSync(e,"utf8"),r=JSON.parse(t);if(!r||typeof r!="object")return null;let n=r;return n.schema_version!==1||!Nl(n.current_profile)||!n.profiles||typeof n.profiles!="object"?null:n}catch(e){return l.error("Failed to read credentials file:",e),null}}function dg(e){Vw(),In.writeFileSync(Fc(),JSON.stringify(e,null,2),{mode:384,encoding:"utf8"})}function Gw(e){let t=Bt(),r=Dl(e.profile||e.projectProfile||t?.current_profile||"default"),n=e.env.PHALA_CLOUD_API_PREFIX,o=t?.profiles?.[r]?.api_prefix,s=(n&&n.trim().length>0?n:o&&o.trim().length>0?o:sn)??sn,a=n?"env":o?"file":"default";if(Nl(e.apiToken))return{apiKey:e.apiToken,baseURL:s,profileName:r,tokenSource:"flag",apiPrefixSource:a};if(Nl(e.env.PHALA_CLOUD_API_KEY))return{apiKey:e.env.PHALA_CLOUD_API_KEY,baseURL:s,profileName:r,tokenSource:"env",apiPrefixSource:a};let i=t?.profiles?.[r]?.token;return Nl(i)?{apiKey:i,baseURL:s,profileName:r,tokenSource:"file",apiPrefixSource:a}:{apiKey:null,baseURL:s,profileName:r,tokenSource:"none",apiPrefixSource:a}}function pi(e){let t=Dl(e.profileName),r=(e.apiPrefix||sn).trim(),n=Bt(),s=e.setCurrent??!0?t:n?.current_profile||t,a=e.workspaceSlug?{name:e.workspaceName,slug:e.workspaceSlug}:{name:e.workspaceName},i={schema_version:1,current_profile:s,profiles:{...n?.profiles||{},[t]:{token:e.token,api_prefix:r.length>0?r:sn,workspace:a,user:e.user,updated_at:new Date().toISOString()}}};dg(i)}function Ul(e){let t=Bt();if(!t)return;let r=Dl(e||t.current_profile),n={...t.profiles};delete n[r];let o=Object.keys(n);if(o.length===0){try{In.unlinkSync(Fc())}catch(i){l.error("Failed to remove credentials file:",i)}return}let a={schema_version:1,current_profile:t.current_profile===r?o[0]:t.current_profile,profiles:n};dg(a)}function Nc(){let e=Bt();return e?Object.keys(e.profiles):[]}function gg(e){let t=Dl(e),r=Bt();if(!r)throw new Error("No credentials file found. Please login first.");if(!r.profiles[t])throw new Error(`Profile "${t}" not found`);r.current_profile!==t&&dg({...r,current_profile:t})}function as(){let e=Bt();if(!e)return null;let t=e.current_profile,r=e.profiles[t];return r?{name:t,info:r}:null}async function hg(e){Vw();try{In.writeFileSync(Hw(),JSON.stringify(e,null,2),{mode:384}),l.success("Docker information saved successfully.")}catch(t){throw l.error("Failed to save Docker information:",t),t}}async function An(){try{let e=Hw();if(In.existsSync(e)){let t=In.readFileSync(e,"utf8");return JSON.parse(t)}return null}catch(e){return l.error("Failed to read Docker credentials:",e),null}}var qw="2026-01-21";function k3(){return{env:process.env,projectConfig:Mc()}}function an(e,t){let r=e??k3();return Gw({env:r.env,apiToken:t?.apiToken,profile:t?.profile,projectProfile:r.projectConfig.profile})}async function N(e,t){let r=an(e,t),n=mg()??qw;return dr({apiKey:r.apiKey??void 0,baseURL:r.baseURL,version:n})}async function zl(e,t){let r=an(e,t);return{client:await N(e,t),auth:r}}async function Ol(e,t){let r=mg()??qw;return dr({apiKey:e,baseURL:t?.baseURL,version:r})}import{z as S}from"zod";var E3=S.object({password:S.string(),registry:S.string().nullable(),username:S.string()}),Aie=S.object({docker_compose_file:S.string(),docker_config:E3.optional().nullable(),features:S.array(S.string()),kms_enabled:S.boolean(),manifest_version:S.number(),name:S.string(),public_logs:S.boolean(),public_sysinfo:S.boolean(),runner:S.string().optional(),salt:S.string().nullable().optional(),tproxy_enabled:S.boolean(),version:S.string().optional()}).passthrough(),Kw=S.object({id:S.number(),name:S.string(),status:S.string(),teepod_id:S.number().nullable(),teepod:S.object({id:S.number(),name:S.string()}).nullable(),user_id:S.number().nullable(),app_id:S.string(),vm_uuid:S.string().nullable(),instance_id:S.string().nullable(),app_url:S.string().nullable(),base_image:S.string().nullable(),vcpu:S.number(),memory:S.number(),disk_size:S.number(),manifest_version:S.number().nullable(),version:S.string().nullable(),runner:S.string().nullable(),docker_compose_file:S.string().nullable(),features:S.array(S.string()).nullable(),created_at:S.string(),encrypted_env_pubkey:S.string().nullable()}),Pie=S.object({key:S.string(),value:S.string()}),_3=S.object({is_online:S.boolean(),is_public:S.boolean(),error:S.string().nullable(),internal_ip:S.string(),latest_handshake:S.string(),public_urls:S.array(S.object({app:S.string(),instance:S.string()}))}),Ww=S.object({id:S.number(),name:S.string(),status:S.string(),teepod_id:S.number(),teepod:S.object({id:S.number(),name:S.string()}),user_id:S.number().nullable(),app_id:S.string(),vm_uuid:S.string().nullable(),instance_id:S.string().nullable(),app_url:S.string().nullable(),base_image:S.string().nullable(),vcpu:S.number(),memory:S.number(),disk_size:S.number(),manifest_version:S.number().nullable(),version:S.string().nullable(),runner:S.string().nullable(),docker_compose_file:S.string().nullable(),features:S.array(S.string()).nullable(),created_at:S.string(),encrypted_env_pubkey:S.string().nullable()}),Jw=S.object({is_online:S.boolean(),is_public:S.boolean(),error:S.string().nullable(),app_certificates:S.array(S.object({subject:S.object({common_name:S.string().nullable(),organization:S.string().nullable(),country:S.string().nullable(),state:S.string().nullable().optional(),locality:S.string().nullable().optional()}),issuer:S.object({common_name:S.string().nullable(),organization:S.string().nullable(),country:S.string().nullable()}),serial_number:S.string(),not_before:S.string(),not_after:S.string(),version:S.string(),fingerprint:S.string(),signature_algorithm:S.string(),sans:S.string().nullable(),is_ca:S.boolean(),position_in_chain:S.number(),quote:S.string().nullable()})).nullable(),tcb_info:S.object({mrtd:S.string(),rootfs_hash:S.string(),rtmr0:S.string(),rtmr1:S.string(),rtmr2:S.string(),rtmr3:S.string(),event_log:S.array(S.object({imr:S.number(),event_type:S.number(),digest:S.string(),event:S.string(),event_payload:S.string()}))}).nullable(),compose_file:S.string().nullable()}),I3=S.object({name:S.string(),description:S.string().optional(),version:S.array(S.number()).optional(),is_dev:S.boolean().optional(),os_image_hash:S.string().nullable().optional(),rootfs_hash:S.string().optional(),shared_ro:S.boolean().optional(),cmdline:S.string().optional(),kernel:S.string().optional(),initrd:S.string().optional(),hda:S.string().nullable().optional(),rootfs:S.string().optional(),bios:S.string().optional()}),Tie=S.object({teepod_id:S.number().nullable(),id:S.number().optional(),name:S.string(),listed:S.boolean().optional(),resource_score:S.number().optional(),remaining_vcpu:S.number().optional(),remaining_memory:S.number().optional(),remaining_cvm_slots:S.number().optional(),images:S.array(I3).optional(),region_identifier:S.string().optional(),dedicated_for_team_id:S.number().nullable().optional(),support_onchain_kms:S.boolean().optional(),fmspc:S.string().nullable().optional(),device_id:S.string().nullable().optional()});import A3 from"inquirer";async function Zw(e){let t=await N(),r=await Ic(t,{id:e});if(!r.success)throw new Error(r.error.message);return r.data}async function Yw(){let e=l.startSpinner("Fetching available CVMs"),t=await N(),r=await _c(t);if(e.stop(!0),!r.success){l.error(`Failed to fetch CVMs: ${r.error.message}`);return}let{items:n}=r.data;if(n.length===0){l.info("No CVMs found for your account");return}let o=n.map(a=>({name:`${a.name} (${a.app_id??a.id}) - ${a.status}`,value:a.app_id??a.id})),{selectedCvm:s}=await A3.prompt([{type:"list",name:"selectedCvm",message:"Select a CVM:",choices:o}]);return s}async function Xw(e){let t=await N(),r=e.replace(/^app_/,""),n=await t.get(`cvms/app_${r}/attestation`);try{return Jw.parse(n)}catch(o){return l.debug(`Validation error: ${o instanceof Error?o.message:String(o)}`),{is_online:!!n?.is_online,is_public:!!n?.is_public,error:typeof n?.error=="string"?n.error:null,app_certificates:Array.isArray(n?.app_certificates)?n.app_certificates:null,tcb_info:n?.tcb_info||null,compose_file:typeof n?.compose_file=="string"?n.compose_file:null}}}async function Qw(e,t){let r=await N(),n=e.replace(/^app_/,""),o=await r.post(`cvms/app_${n}/replicas`,t);return Ww.parse(o)}async function yg(e,t,r,n,o){let s=await N(),a=e.replace(/^app_/,""),i={};if(t!==void 0&&(i.vcpu=t),r!==void 0&&(i.memory=r),n!==void 0&&(i.disk_size=n),o!==void 0&&(i.allow_restart=o),Object.keys(i).length===0)throw new Error("At least one resource parameter must be provided");return await s.patch(`cvms/app_${a}/resources`,i),!0}async function e6(e){return await(await N()).post("cvms/pubkey/from_cvm_configuration",e)}async function t6(e){let r=await(await N()).post("cvms/from_cvm_configuration",e);return Kw.parse(r)}async function r6(e,t){let r=await N(),n=e.replace(/^app_/,"");return await r.put(`cvms/app_${n}/compose`,t)}async function n6(e=!1){let t=await N(),r="teepods/available";return e&&(r+="?v03x_only=1"),await t.get(r)}function ko(e,t){let r=[];t.since&&r.push(`since=${encodeURIComponent(t.since)}`),t.until&&r.push(`until=${encodeURIComponent(t.until)}`),t.follow&&r.push("follow"),t.text&&r.push("text"),t.bare&&r.push("bare"),t.tail!==void 0&&(r.push(`tail=${t.tail}`),r.push(`lines=${t.tail}`)),t.timestamps&&r.push("timestamps"),(t.ansi??!0)&&r.push("ansi");let n=e.includes("?")?"&":"?";return e+n+r.join("&")}async function o6(e,t){let r=e.body?.getReader();if(!r)throw new Error("No response body available for streaming");let n=new TextDecoder;for(;;){let{done:o,value:s}=await r.read();if(o)break;t(n.decode(s,{stream:!0}))}}function P3(e){return!e||/\s/.test(e)||e.length%4!==0?!1:/^[A-Za-z0-9+/]+={0,2}$/.test(e)}function T3(e){if(!P3(e))return e;try{return Buffer.from(e,"base64").toString("utf-8")}catch{return e}}function jl(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return typeof r.message!="string"?null:{channel:r.channel==="stderr"?"stderr":"stdout",message:T3(r.message)}}catch{return null}}function $3(e){let t=e.split(/\r?\n/),r=[];for(let n of t){if(!n.trim())continue;let o=jl(n);if(o){r.push(o);continue}r.push({channel:"stdout",message:`${n}
92
- `})}return r}function R3(e){let t=e.split(/\r?\n/),r="";for(let n of t){let o=jl(n);if(o){r+=o.message;continue}n.trim()&&(r+=`${n}
93
- `)}return r}async function M3(e,t){let r=e.body?.getReader();if(!r)throw new Error("No response body available for streaming");let n=new TextDecoder,o="",s="unknown",a=i=>{let c=jl(i);if(c){t(c.message);return}i.trim()&&t(`${i}
94
- `)};for(;;){let{done:i,value:c}=await r.read();if(i)break;let m=n.decode(c,{stream:!0});if(s==="raw"){t(m);continue}if(o+=m,s==="unknown")if(o.trimStart().startsWith("{"))s="structured";else{s="raw",t(o),o="";continue}let u=o.indexOf(`
95
- `);for(;u>=0;){let p=o.slice(0,u);o=o.slice(u+1),a(p),u=o.indexOf(`
96
- `)}}s==="structured"&&o.trim()?a(o):s==="raw"&&o&&t(o)}async function F3(e,t){let r=e.body?.getReader();if(!r)throw new Error("No response body available for streaming");let n=new TextDecoder,o="",s="unknown",a=i=>{let c=jl(i);if(c){t(c);return}i.trim()&&t({channel:"stdout",message:`${i}
97
- `})};for(;;){let{done:i,value:c}=await r.read();if(i)break;let m=n.decode(c,{stream:!0});if(s==="raw"){t({channel:"stdout",message:m});continue}if(o+=m,s==="unknown")if(o.trimStart().startsWith("{"))s="structured";else{s="raw",t({channel:"stdout",message:o}),o="";continue}let u=o.indexOf(`
98
- `);for(;u>=0;){let p=o.slice(0,u);o=o.slice(u+1),a(p),u=o.indexOf(`
99
- `)}}s==="structured"&&o.trim()?a(o):s==="raw"&&o&&t({channel:"stdout",message:o})}async function bg(e,t){let n=await(await N()).get(`cvms/${e}`,{headers:{"X-Phala-Version":"2025-10-28"}});if(!n.syslog_endpoint)throw new Error(`No syslog endpoint available for CVM '${e}'`);return`${n.syslog_endpoint}&ch=${t}`}async function s6(e){return bg(e,"serial")}async function Hl(e,t,r=!0){let o=await(await N()).get(`cvms/${e}/composition`);if(!o.containers?.length)throw new Error(`No containers found for CVM '${e}'`);let s=o.containers;if(t&&(s=s.filter(i=>i.names.some(m=>m===t||m===`/${t}`)?!0:r?i.id.startsWith(t):!1),!s.length))throw new Error(`Container '${t}' not found in CVM '${e}'`);let a=s.find(i=>i.log_endpoint);if(!a?.log_endpoint)throw new Error(`No log endpoints available for CVM '${e}'`);return a.log_endpoint}async function a6(e,t={}){let r=await s6(e),n=ko(r,t),o=await fetch(n);if(!o.ok)throw new Error(`Failed to fetch serial logs: ${o.status} ${o.statusText}`);return o.text()}async function i6(e,t={}){let r=await Hl(e,t.container,t.matchContainerIdPrefix??!0),n=t.text??!0,o=t.bare??!0,s=ko(r,{...t,text:n,bare:o}),a=await fetch(s);if(!a.ok)throw new Error(`Failed to fetch container logs: ${a.status} ${a.statusText}`);let i=await a.text();return i.trimStart().startsWith("{")?R3(i):i}async function c6(e,t={}){let r=await Hl(e,t.container,t.matchContainerIdPrefix??!0),n=ko(r,{...t,text:!1,bare:!1}),o=await fetch(n);if(!o.ok)throw new Error(`Failed to fetch container logs: ${o.status} ${o.statusText}`);let s=await o.text();return s.trimStart().startsWith("{")?$3(s):[{channel:"stdout",message:s}]}async function m6(e,t,r={},n){let o=await Hl(e,r.container,r.matchContainerIdPrefix??!0),s=ko(o,{...r,follow:!0,text:!1,bare:!1}),a=await fetch(s,{signal:n});if(!a.ok)throw new Error(`Failed to stream container logs: ${a.status} ${a.statusText}`);await F3(a,t)}async function u6(e,t,r={},n){let o=await s6(e),s=ko(o,{...r,follow:!0}),a=await fetch(s,{signal:n});if(!a.ok)throw new Error(`Failed to stream serial logs: ${a.status} ${a.statusText}`);await o6(a,t)}async function p6(e,t,r={},n){let o=await Hl(e,r.container,r.matchContainerIdPrefix??!0),s=r.text??!0,a=r.bare??!0,i=ko(o,{...r,follow:!0,text:s,bare:a}),c=await fetch(i,{signal:n});if(!c.ok)throw new Error(`Failed to stream container logs: ${c.status} ${c.statusText}`);await M3(c,t)}async function l6(e,t,r={}){let n=await bg(e,t),o=ko(n,r),s=await fetch(o);if(!s.ok)throw new Error(`Failed to fetch CVM ${t} logs: ${s.status} ${s.statusText}`);return s.text()}async function f6(e,t,r,n={},o){let s=await bg(e,t),a=ko(s,{...n,follow:!0}),i=await fetch(a,{signal:o});if(!i.ok)throw new Error(`Failed to stream CVM ${t} logs: ${i.status} ${i.statusText}`);await o6(i,r)}async function d6(e){let t=await N(),r=e.replace(/^app_/,""),n=await Re(t,{app_id:r});if(!n.success)throw new Error(n.error.message);return n.data.status}import Eo from"chalk";import cs from"semver";import Lc from"fs";import N3 from"os";import g6 from"path";var xg={};function h6(){let e=process.env.PHALA_CLOUD_DIR;return typeof e=="string"&&e.trim().length>0?e:g6.join(N3.homedir(),".phala-cloud")}function Vl(){return g6.join(h6(),"state.json")}function L3(){let e=h6();Lc.existsSync(e)||Lc.mkdirSync(e,{recursive:!0})}function Bc(){try{let e=Vl();if(!Lc.existsSync(e))return xg;let t=Lc.readFileSync(e,"utf8"),r=JSON.parse(t);return!r||typeof r!="object"?xg:r}catch{return xg}}function is(e){L3();let t={...Bc(),...e};Lc.writeFileSync(Vl(),JSON.stringify(t,null,2),{mode:384,encoding:"utf8"})}function li(e){return Bc()[e]}function y6(e,t){is({[e]:t})}function b6(){return Bc()}function Gl(){return typeof process.versions.bun=="string"?"bun":"node"}function B3(e){let t=e.replace(/\\/g,"/");if(/[/\\]\.bun[/\\]/.test(t))return"bun";if(/pnpm/.test(t))return"pnpm";if(/[/\\]\.yarn[/\\]|yarn[/\\]global/.test(t))return"yarn"}function Dc(e,t){if(t==="bun")return"bun";let r=e.npm_config_user_agent;if(r){let s=(r.split(" ")[0]??"").split("/")[0];if(s==="pnpm")return"pnpm";if(s==="yarn")return"yarn";if(s==="npm")return"npm";if(s==="bun")return"bun"}let n=process.argv[1];if(n){let o=B3(n);if(o)return o}return"npm"}function Uc(e,t){switch(e){case"bun":return`bun add -g --no-cache ${t}`;case"pnpm":return`pnpm add -g ${t}`;case"yarn":return`yarn global add ${t}`;default:return`npm i -g ${t}`}}function x6(e,t){switch(e){case"bun":return{command:"bun",args:["add","-g","--no-cache",t]};case"pnpm":return{command:"pnpm",args:["add","-g",t]};case"yarn":return{command:"yarn",args:["global","add",t]};default:return{command:"npm",args:["i","-g",t]}}}var D3=200,U3=1440*60*1e3,z3="Phala-Network/phala-cloud",v6="cli-v";function S6(e,t){return`https://github.com/${z3}/compare/${v6}${e}...${v6}${t}`}function ql(e){return e?e==="1"||e.toLowerCase()==="true":!1}function w6(e){return typeof e=="string"&&e.trim().length>0}function O3(e){return e.startsWith("@")?e.replace("/","%2F"):e}function j3(e){let r=cs.parse(e)?.prerelease?.[0];return typeof r=="string"&&r.length>0?r:void 0}function k6(e,t,r){if(w6(t.PHALA_UPDATE_CHANNEL))return t.PHALA_UPDATE_CHANNEL;let n=r.get("updateCheckChannel");return w6(n)?n:j3(e)??"latest"}function H3(e){return e.replace(/[^a-zA-Z0-9_-]/g,"_")}function vg(e,t){return`${e}_${H3(t)}`}function C6(e,t){let r=e.get(t);if(typeof r=="number"&&Number.isFinite(r))return r;if(typeof r=="string"){let n=Number(r);return Number.isFinite(n)?n:void 0}}function E6(){return{get(e){return li(e)},save(e){is(e)}}}function Kl(e){let{executableName:t,packageName:r,currentVersion:n,runtime:o,env:s,isJson:a,stderrIsTTY:i,configStore:c=E6()}=e;try{if(!i||a||ql(s.CI)||ql(s.PHALA_DISABLE_UPDATE_CHECK)||c.get("disableUpdateNotice")===!0)return null;let m=cs.valid(n);if(!m)return null;let u=k6(n,s,c),p=vg("updateCheckLatest",u),f=c.get(p)??(u==="latest"?c.get("updateCheckLatest"):void 0),d=typeof f=="string"?cs.valid(f):null;if(!d||!cs.gt(d,m))return null;let g=Dc(s,o),h=g==="bun"?`${r}@${d}`:u==="latest"?`${r}@latest`:`${r}@${u}`,y=Uc(g,h),b=S6(m,d);return{message:`${[Eo.yellow(`Update available: v${m} -> v${d}${u==="latest"?"":` (${u})`}.`),Eo.gray(b),Eo.gray(`Update with: "${t} self update" (or "${y}").`),Eo.gray(`Disable with: PHALA_DISABLE_UPDATE_CHECK=1 or "${t} config set disableUpdateNotice true".`)].join(`
47
+ ${n}`)}throw new Error(`Failed to save ${mn}: ${r instanceof Error?r.message:String(r)}`)}}function pn(){return so()?Sw():{}}function $l(e){if(!e)return;let{cvmId:t}=G.parse({id:e});return t}import _t from"fs";import kw from"os";import co from"path";var gt="https://cloud-api.phala.com/api/v1";function lo(){let e=process.env.PHALA_CLOUD_DIR;return typeof e=="string"&&e.trim().length>0?e:co.join(kw.homedir(),".phala-cloud")}function un(){return co.join(lo(),"credentials.json")}function ls(){return co.join(lo(),"api-key")}function Dl(){return co.join(lo(),"docker-credentials.json")}function Rl(){let e=lo();_t.existsSync(e)||_t.mkdirSync(e,{recursive:!0})}function io(e){return typeof e=="string"&&e.trim().length>0}function mo(e){let t=e.trim();return t.length===0?"default":t}function Ge(){try{let e=un();if(!_t.existsSync(e))return null;let t=_t.readFileSync(e,"utf8"),r=JSON.parse(t);if(!r||typeof r!="object")return null;let n=r;return n.schema_version!==1||!io(n.current_profile)||!n.profiles||typeof n.profiles!="object"?null:n}catch(e){return i.error("Failed to read credentials file:",e),null}}function ms(e){Rl(),_t.writeFileSync(un(),JSON.stringify(e,null,2),{mode:384,encoding:"utf8"})}function Ml(e){let t=Ge(),r=mo(e.profile||e.projectProfile||t?.current_profile||"default"),n=e.env.PHALA_CLOUD_API_PREFIX,o=t?.profiles?.[r]?.api_prefix,a=(n&&n.trim().length>0?n:o&&o.trim().length>0?o:gt)??gt,s=n?"env":o?"file":"default";if(io(e.apiToken))return{apiKey:e.apiToken,baseURL:a,profileName:r,tokenSource:"flag",apiPrefixSource:s};if(io(e.env.PHALA_CLOUD_API_KEY))return{apiKey:e.env.PHALA_CLOUD_API_KEY,baseURL:a,profileName:r,tokenSource:"env",apiPrefixSource:s};let c=t?.profiles?.[r]?.token;return io(c)?{apiKey:c,baseURL:a,profileName:r,tokenSource:"file",apiPrefixSource:s}:{apiKey:null,baseURL:a,profileName:r,tokenSource:"none",apiPrefixSource:s}}function Rr(e){let t=mo(e.profileName),r=(e.apiPrefix||gt).trim(),n=Ge(),a=e.setCurrent??!0?t:n?.current_profile||t,s=e.workspaceSlug?{name:e.workspaceName,slug:e.workspaceSlug}:{name:e.workspaceName},c={schema_version:1,current_profile:a,profiles:{...n?.profiles||{},[t]:{token:e.token,api_prefix:r.length>0?r:gt,workspace:s,user:e.user,updated_at:new Date().toISOString()}}};ms(c)}function po(e){let t=Ge();if(!t)return;let r=mo(e||t.current_profile),n={...t.profiles};delete n[r];let o=Object.keys(n);if(o.length===0){try{_t.unlinkSync(un())}catch(c){i.error("Failed to remove credentials file:",c)}return}let s={schema_version:1,current_profile:t.current_profile===r?o[0]:t.current_profile,profiles:n};ms(s)}function dn(){let e=Ge();return e?Object.keys(e.profiles):[]}function ps(e){let t=mo(e),r=Ge();if(!r)throw new Error("No credentials file found. Please login first.");if(!r.profiles[t])throw new Error(`Profile "${t}" not found`);r.current_profile!==t&&ms({...r,current_profile:t})}function Qt(){let e=Ge();if(!e)return null;let t=e.current_profile,r=e.profiles[t];return r?{name:t,info:r}:null}async function us(e){Rl();try{_t.writeFileSync(Dl(),JSON.stringify(e,null,2),{mode:384}),i.success("Docker information saved successfully.")}catch(t){throw i.error("Failed to save Docker information:",t),t}}async function St(){try{let e=Dl();if(_t.existsSync(e)){let t=_t.readFileSync(e,"utf8");return JSON.parse(t)}return null}catch(e){return i.error("Failed to read Docker credentials:",e),null}}var Tl="2026-01-21";function Ew(){return{env:process.env,projectConfig:pn()}}function ht(e,t){let r=e??Ew();return Ml({env:r.env,apiToken:t?.apiToken,profile:t?.profile,projectProfile:r.projectConfig.profile})}async function k(e,t){let r=ht(e,t),n=as()??Tl;return Qe({apiKey:r.apiKey??void 0,baseURL:r.baseURL,version:n})}async function uo(e,t){let r=ht(e,t);return{client:await k(e,t),auth:r}}async function fo(e,t){let r=as()??Tl;return Qe({apiKey:e,baseURL:t?.baseURL,version:r})}import{z as y}from"zod";var Iw=y.object({password:y.string(),registry:y.string().nullable(),username:y.string()}),Jx=y.object({docker_compose_file:y.string(),docker_config:Iw.optional().nullable(),features:y.array(y.string()),kms_enabled:y.boolean(),manifest_version:y.number(),name:y.string(),public_logs:y.boolean(),public_sysinfo:y.boolean(),runner:y.string().optional(),salt:y.string().nullable().optional(),tproxy_enabled:y.boolean(),version:y.string().optional()}).passthrough(),Ll=y.object({id:y.number(),name:y.string(),status:y.string(),teepod_id:y.number().nullable(),teepod:y.object({id:y.number(),name:y.string()}).nullable(),user_id:y.number().nullable(),app_id:y.string(),vm_uuid:y.string().nullable(),instance_id:y.string().nullable(),app_url:y.string().nullable(),base_image:y.string().nullable(),vcpu:y.number(),memory:y.number(),disk_size:y.number(),manifest_version:y.number().nullable(),version:y.string().nullable(),runner:y.string().nullable(),docker_compose_file:y.string().nullable(),features:y.array(y.string()).nullable(),created_at:y.string(),encrypted_env_pubkey:y.string().nullable()}),Yx=y.object({key:y.string(),value:y.string()}),Aw=y.object({is_online:y.boolean(),is_public:y.boolean(),error:y.string().nullable(),internal_ip:y.string(),latest_handshake:y.string(),public_urls:y.array(y.object({app:y.string(),instance:y.string()}))}),Nl=y.object({id:y.number(),name:y.string(),status:y.string(),teepod_id:y.number(),teepod:y.object({id:y.number(),name:y.string()}),user_id:y.number().nullable(),app_id:y.string(),vm_uuid:y.string().nullable(),instance_id:y.string().nullable(),app_url:y.string().nullable(),base_image:y.string().nullable(),vcpu:y.number(),memory:y.number(),disk_size:y.number(),manifest_version:y.number().nullable(),version:y.string().nullable(),runner:y.string().nullable(),docker_compose_file:y.string().nullable(),features:y.array(y.string()).nullable(),created_at:y.string(),encrypted_env_pubkey:y.string().nullable()}),Ul=y.object({is_online:y.boolean(),is_public:y.boolean(),error:y.string().nullable(),app_certificates:y.array(y.object({subject:y.object({common_name:y.string().nullable(),organization:y.string().nullable(),country:y.string().nullable(),state:y.string().nullable().optional(),locality:y.string().nullable().optional()}),issuer:y.object({common_name:y.string().nullable(),organization:y.string().nullable(),country:y.string().nullable()}),serial_number:y.string(),not_before:y.string(),not_after:y.string(),version:y.string(),fingerprint:y.string(),signature_algorithm:y.string(),sans:y.string().nullable(),is_ca:y.boolean(),position_in_chain:y.number(),quote:y.string().nullable()})).nullable(),tcb_info:y.object({mrtd:y.string(),rootfs_hash:y.string(),rtmr0:y.string(),rtmr1:y.string(),rtmr2:y.string(),rtmr3:y.string(),event_log:y.array(y.object({imr:y.number(),event_type:y.number(),digest:y.string(),event:y.string(),event_payload:y.string()}))}).nullable(),compose_file:y.string().nullable()}),xw=y.object({name:y.string(),description:y.string().optional(),version:y.array(y.number()).optional(),is_dev:y.boolean().optional(),os_image_hash:y.string().nullable().optional(),rootfs_hash:y.string().optional(),shared_ro:y.boolean().optional(),cmdline:y.string().optional(),kernel:y.string().optional(),initrd:y.string().optional(),hda:y.string().nullable().optional(),rootfs:y.string().optional(),bios:y.string().optional()}),Zx=y.object({teepod_id:y.number().nullable(),id:y.number().optional(),name:y.string(),listed:y.boolean().optional(),resource_score:y.number().optional(),remaining_vcpu:y.number().optional(),remaining_memory:y.number().optional(),remaining_cvm_slots:y.number().optional(),images:y.array(xw).optional(),region_identifier:y.string().optional(),dedicated_for_team_id:y.number().nullable().optional(),support_onchain_kms:y.boolean().optional(),fmspc:y.string().nullable().optional(),device_id:y.string().nullable().optional()});import Pw from"inquirer";async function Ol(e){let t=await k(),r=await rn(t,{id:e});if(!r.success)throw new Error(r.error.message);return r.data}async function Fl(){let e=i.startSpinner("Fetching available CVMs"),t=await k(),r=await tn(t);if(e.stop(!0),!r.success){i.error(`Failed to fetch CVMs: ${r.error.message}`);return}let{items:n}=r.data;if(n.length===0){i.info("No CVMs found for your account");return}let o=n.map(s=>({name:`${s.name} (${s.app_id??s.id}) - ${s.status}`,value:s.app_id??s.id})),{selectedCvm:a}=await Pw.prompt([{type:"list",name:"selectedCvm",message:"Select a CVM:",choices:o}]);return a}async function jl(e){let t=await k(),r=e.replace(/^app_/,""),n=await t.get(`cvms/app_${r}/attestation`);try{return Ul.parse(n)}catch(o){return i.debug(`Validation error: ${o instanceof Error?o.message:String(o)}`),{is_online:!!n?.is_online,is_public:!!n?.is_public,error:typeof n?.error=="string"?n.error:null,app_certificates:Array.isArray(n?.app_certificates)?n.app_certificates:null,tcb_info:n?.tcb_info||null,compose_file:typeof n?.compose_file=="string"?n.compose_file:null}}}async function Vl(e,t){let r=await k(),n=e.replace(/^app_/,""),o=await r.post(`cvms/app_${n}/replicas`,t);return Nl.parse(o)}async function ds(e,t,r,n,o){let a=await k(),s=e.replace(/^app_/,""),c={};if(t!==void 0&&(c.vcpu=t),r!==void 0&&(c.memory=r),n!==void 0&&(c.disk_size=n),o!==void 0&&(c.allow_restart=o),Object.keys(c).length===0)throw new Error("At least one resource parameter must be provided");return await a.patch(`cvms/app_${s}/resources`,c),!0}async function zl(e){return await(await k()).post("cvms/pubkey/from_cvm_configuration",e)}async function Kl(e){let r=await(await k()).post("cvms/from_cvm_configuration",e);return Ll.parse(r)}async function Gl(e,t){let r=await k(),n=e.replace(/^app_/,"");return await r.put(`cvms/app_${n}/compose`,t)}async function Hl(e=!1){let t=await k(),r="teepods/available";return e&&(r+="?v03x_only=1"),await t.get(r)}function Vt(e,t){let r=[];t.since&&r.push(`since=${encodeURIComponent(t.since)}`),t.until&&r.push(`until=${encodeURIComponent(t.until)}`),t.follow&&r.push("follow"),t.text&&r.push("text"),t.bare&&r.push("bare"),t.tail!==void 0&&(r.push(`tail=${t.tail}`),r.push(`lines=${t.tail}`)),t.timestamps&&r.push("timestamps"),(t.ansi??!0)&&r.push("ansi");let n=e.includes("?")?"&":"?";return e+n+r.join("&")}async function ql(e,t){let r=e.body?.getReader();if(!r)throw new Error("No response body available for streaming");let n=new TextDecoder;for(;;){let{done:o,value:a}=await r.read();if(o)break;t(n.decode(a,{stream:!0}))}}function $w(e){return!e||/\s/.test(e)||e.length%4!==0?!1:/^[A-Za-z0-9+/]+={0,2}$/.test(e)}function Dw(e){if(!$w(e))return e;try{return Buffer.from(e,"base64").toString("utf-8")}catch{return e}}function go(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return typeof r.message!="string"?null:{channel:r.channel==="stderr"?"stderr":"stdout",message:Dw(r.message)}}catch{return null}}function Rw(e){let t=e.split(/\r?\n/),r=[];for(let n of t){if(!n.trim())continue;let o=go(n);if(o){r.push(o);continue}r.push({channel:"stdout",message:`${n}
48
+ `})}return r}function Mw(e){let t=e.split(/\r?\n/),r="";for(let n of t){let o=go(n);if(o){r+=o.message;continue}n.trim()&&(r+=`${n}
49
+ `)}return r}async function Tw(e,t){let r=e.body?.getReader();if(!r)throw new Error("No response body available for streaming");let n=new TextDecoder,o="",a="unknown",s=c=>{let l=go(c);if(l){t(l.message);return}c.trim()&&t(`${c}
50
+ `)};for(;;){let{done:c,value:l}=await r.read();if(c)break;let m=n.decode(l,{stream:!0});if(a==="raw"){t(m);continue}if(o+=m,a==="unknown")if(o.trimStart().startsWith("{"))a="structured";else{a="raw",t(o),o="";continue}let p=o.indexOf(`
51
+ `);for(;p>=0;){let u=o.slice(0,p);o=o.slice(p+1),s(u),p=o.indexOf(`
52
+ `)}}a==="structured"&&o.trim()?s(o):a==="raw"&&o&&t(o)}async function Lw(e,t){let r=e.body?.getReader();if(!r)throw new Error("No response body available for streaming");let n=new TextDecoder,o="",a="unknown",s=c=>{let l=go(c);if(l){t(l);return}c.trim()&&t({channel:"stdout",message:`${c}
53
+ `})};for(;;){let{done:c,value:l}=await r.read();if(c)break;let m=n.decode(l,{stream:!0});if(a==="raw"){t({channel:"stdout",message:m});continue}if(o+=m,a==="unknown")if(o.trimStart().startsWith("{"))a="structured";else{a="raw",t({channel:"stdout",message:o}),o="";continue}let p=o.indexOf(`
54
+ `);for(;p>=0;){let u=o.slice(0,p);o=o.slice(p+1),s(u),p=o.indexOf(`
55
+ `)}}a==="structured"&&o.trim()?s(o):a==="raw"&&o&&t({channel:"stdout",message:o})}async function fs(e,t){let n=await(await k()).get(`cvms/${e}`,{headers:{"X-Phala-Version":"2025-10-28"}});if(!n.syslog_endpoint)throw new Error(`No syslog endpoint available for CVM '${e}'`);return`${n.syslog_endpoint}&ch=${t}`}async function Bl(e){return fs(e,"serial")}async function ho(e,t,r=!0){let o=await(await k()).get(`cvms/${e}/composition`);if(!o.containers?.length)throw new Error(`No containers found for CVM '${e}'`);let a=o.containers;if(t&&(a=a.filter(c=>c.names.some(m=>m===t||m===`/${t}`)?!0:r?c.id.startsWith(t):!1),!a.length))throw new Error(`Container '${t}' not found in CVM '${e}'`);let s=a.find(c=>c.log_endpoint);if(!s?.log_endpoint)throw new Error(`No log endpoints available for CVM '${e}'`);return s.log_endpoint}async function Wl(e,t={}){let r=await Bl(e),n=Vt(r,t),o=await fetch(n);if(!o.ok)throw new Error(`Failed to fetch serial logs: ${o.status} ${o.statusText}`);return o.text()}async function Jl(e,t={}){let r=await ho(e,t.container,t.matchContainerIdPrefix??!0),n=t.text??!0,o=t.bare??!0,a=Vt(r,{...t,text:n,bare:o}),s=await fetch(a);if(!s.ok)throw new Error(`Failed to fetch container logs: ${s.status} ${s.statusText}`);let c=await s.text();return c.trimStart().startsWith("{")?Mw(c):c}async function Yl(e,t={}){let r=await ho(e,t.container,t.matchContainerIdPrefix??!0),n=Vt(r,{...t,text:!1,bare:!1}),o=await fetch(n);if(!o.ok)throw new Error(`Failed to fetch container logs: ${o.status} ${o.statusText}`);let a=await o.text();return a.trimStart().startsWith("{")?Rw(a):[{channel:"stdout",message:a}]}async function Zl(e,t,r={},n){let o=await ho(e,r.container,r.matchContainerIdPrefix??!0),a=Vt(o,{...r,follow:!0,text:!1,bare:!1}),s=await fetch(a,{signal:n});if(!s.ok)throw new Error(`Failed to stream container logs: ${s.status} ${s.statusText}`);await Lw(s,t)}async function Xl(e,t,r={},n){let o=await Bl(e),a=Vt(o,{...r,follow:!0}),s=await fetch(a,{signal:n});if(!s.ok)throw new Error(`Failed to stream serial logs: ${s.status} ${s.statusText}`);await ql(s,t)}async function Ql(e,t,r={},n){let o=await ho(e,r.container,r.matchContainerIdPrefix??!0),a=r.text??!0,s=r.bare??!0,c=Vt(o,{...r,follow:!0,text:a,bare:s}),l=await fetch(c,{signal:n});if(!l.ok)throw new Error(`Failed to stream container logs: ${l.status} ${l.statusText}`);await Tw(l,t)}async function em(e,t,r={}){let n=await fs(e,t),o=Vt(n,r),a=await fetch(o);if(!a.ok)throw new Error(`Failed to fetch CVM ${t} logs: ${a.status} ${a.statusText}`);return a.text()}async function tm(e,t,r,n={},o){let a=await fs(e,t),s=Vt(a,{...n,follow:!0}),c=await fetch(s,{signal:o});if(!c.ok)throw new Error(`Failed to stream CVM ${t} logs: ${c.status} ${c.statusText}`);await ql(c,r)}async function rm(e){let t=await k(),r=e.replace(/^app_/,""),n=await Q(t,{app_id:r});if(!n.success)throw new Error(n.error.message);return n.data.status}import zt from"chalk";import tr from"semver";import fn from"fs";import Nw from"os";import nm from"path";var gs={};function om(){let e=process.env.PHALA_CLOUD_DIR;return typeof e=="string"&&e.trim().length>0?e:nm.join(Nw.homedir(),".phala-cloud")}function yo(){return nm.join(om(),"state.json")}function Uw(){let e=om();fn.existsSync(e)||fn.mkdirSync(e,{recursive:!0})}function gn(){try{let e=yo();if(!fn.existsSync(e))return gs;let t=fn.readFileSync(e,"utf8"),r=JSON.parse(t);return!r||typeof r!="object"?gs:r}catch{return gs}}function er(e){Uw();let t={...gn(),...e};fn.writeFileSync(yo(),JSON.stringify(t,null,2),{mode:384,encoding:"utf8"})}function Mr(e){return gn()[e]}function am(e,t){er({[e]:t})}function sm(){return gn()}function vo(){return typeof process.versions.bun=="string"?"bun":"node"}function Ow(e){let t=e.replace(/\\/g,"/");if(/[/\\]\.bun[/\\]/.test(t))return"bun";if(/pnpm/.test(t))return"pnpm";if(/[/\\]\.yarn[/\\]|yarn[/\\]global/.test(t))return"yarn"}function hn(e,t){if(t==="bun")return"bun";let r=e.npm_config_user_agent;if(r){let a=(r.split(" ")[0]??"").split("/")[0];if(a==="pnpm")return"pnpm";if(a==="yarn")return"yarn";if(a==="npm")return"npm";if(a==="bun")return"bun"}let n=process.argv[1];if(n){let o=Ow(n);if(o)return o}return"npm"}function yn(e,t){switch(e){case"bun":return`bun add -g --no-cache ${t}`;case"pnpm":return`pnpm add -g ${t}`;case"yarn":return`yarn global add ${t}`;default:return`npm i -g ${t}`}}function im(e,t){switch(e){case"bun":return{command:"bun",args:["add","-g","--no-cache",t]};case"pnpm":return{command:"pnpm",args:["add","-g",t]};case"yarn":return{command:"yarn",args:["global","add",t]};default:return{command:"npm",args:["i","-g",t]}}}var Fw=200,jw=1440*60*1e3,Vw="Phala-Network/phala-cloud",cm="cli-v";function pm(e,t){return`https://github.com/${Vw}/compare/${cm}${e}...${cm}${t}`}function bo(e){return e?e==="1"||e.toLowerCase()==="true":!1}function lm(e){return typeof e=="string"&&e.trim().length>0}function zw(e){return e.startsWith("@")?e.replace("/","%2F"):e}function Kw(e){let r=tr.parse(e)?.prerelease?.[0];return typeof r=="string"&&r.length>0?r:void 0}function um(e,t,r){if(lm(t.PHALA_UPDATE_CHANNEL))return t.PHALA_UPDATE_CHANNEL;let n=r.get("updateCheckChannel");return lm(n)?n:Kw(e)??"latest"}function Gw(e){return e.replace(/[^a-zA-Z0-9_-]/g,"_")}function hs(e,t){return`${e}_${Gw(t)}`}function mm(e,t){let r=e.get(t);if(typeof r=="number"&&Number.isFinite(r))return r;if(typeof r=="string"){let n=Number(r);return Number.isFinite(n)?n:void 0}}function dm(){return{get(e){return Mr(e)},save(e){er(e)}}}function Co(e){let{executableName:t,packageName:r,currentVersion:n,runtime:o,env:a,isJson:s,stderrIsTTY:c,configStore:l=dm()}=e;try{if(!c||s||bo(a.CI)||bo(a.PHALA_DISABLE_UPDATE_CHECK)||l.get("disableUpdateNotice")===!0)return null;let m=tr.valid(n);if(!m)return null;let p=um(n,a,l),u=hs("updateCheckLatest",p),d=l.get(u)??(p==="latest"?l.get("updateCheckLatest"):void 0),f=typeof d=="string"?tr.valid(d):null;if(!f||!tr.gt(f,m))return null;let g=hn(a,o),h=g==="bun"?`${r}@${f}`:p==="latest"?`${r}@latest`:`${r}@${p}`,v=yn(g,h),w=pm(m,f);return{message:`${[zt.yellow(`Update available: v${m} -> v${f}${p==="latest"?"":` (${p})`}.`),zt.gray(w),zt.gray(`Update with: "${t} self update" (or "${v}").`),zt.gray(`Disable with: PHALA_DISABLE_UPDATE_CHECK=1 or "${t} config set disableUpdateNotice true".`)].join(`
100
56
  `)}
101
- `,currentVersion:m,latestVersion:d,packageName:r}}catch{return null}}async function Wl(e){let{executableName:t,packageName:r,currentVersion:n,runtime:o,env:s,isJson:a,stderrIsTTY:i,now:c=Date.now(),timeoutMs:m=D3,ttlMs:u=U3,fetchImpl:p=fetch,configStore:f=E6()}=e;try{if(!i||a||ql(s.CI)||ql(s.PHALA_DISABLE_UPDATE_CHECK)||f.get("disableUpdateNotice")===!0)return null;let d=k6(n,s,f),g=vg("updateCheckLastAt",d),h=C6(f,g)??(d==="latest"?C6(f,"updateCheckLastAt"):void 0);if(h&&c-h<u)return Kl({executableName:t,packageName:r,currentVersion:n,runtime:o,env:s,isJson:a,stderrIsTTY:i,configStore:f});let b=`https://registry.npmjs.org/${O3(r)}`,x=new AbortController,v=setTimeout(()=>x.abort(),m);v.unref?.();let C,k=null;try{if(C=await p(b,{signal:x.signal,headers:{accept:"application/json"}}),!C.ok)return null;let _=await C.json();if(!_||typeof _!="object")return null;let I=_["dist-tags"];if(!I||typeof I!="object")return null;let M=I[d]??I.latest;if(typeof M!="string")return null;k=cs.valid(M);let F=cs.valid(n);if(!k||!F||!cs.gt(k,F))return null;let L=Dc(s,o),j=L==="bun"?`${r}@${k}`:d==="latest"?`${r}@latest`:`${r}@${d}`,H=Uc(L,j),V=S6(F,k);return{message:`${[Eo.yellow(`Update available: v${F} -> v${k}${d==="latest"?"":` (${d})`}.`),Eo.gray(V),Eo.gray(`Update with: "${t} self update" (or "${H}").`),Eo.gray(`Disable with: PHALA_DISABLE_UPDATE_CHECK=1 or "${t} config set disableUpdateNotice true".`)].join(`
57
+ `,currentVersion:m,latestVersion:f,packageName:r}}catch{return null}}async function wo(e){let{executableName:t,packageName:r,currentVersion:n,runtime:o,env:a,isJson:s,stderrIsTTY:c,now:l=Date.now(),timeoutMs:m=Fw,ttlMs:p=jw,fetchImpl:u=fetch,configStore:d=dm()}=e;try{if(!c||s||bo(a.CI)||bo(a.PHALA_DISABLE_UPDATE_CHECK)||d.get("disableUpdateNotice")===!0)return null;let f=um(n,a,d),g=hs("updateCheckLastAt",f),h=mm(d,g)??(f==="latest"?mm(d,"updateCheckLastAt"):void 0);if(h&&l-h<p)return Co({executableName:t,packageName:r,currentVersion:n,runtime:o,env:a,isJson:s,stderrIsTTY:c,configStore:d});let w=`https://registry.npmjs.org/${zw(r)}`,C=new AbortController,_=setTimeout(()=>C.abort(),m);_.unref?.();let S,E=null;try{if(S=await u(w,{signal:C.signal,headers:{accept:"application/json"}}),!S.ok)return null;let x=await S.json();if(!x||typeof x!="object")return null;let P=x["dist-tags"];if(!P||typeof P!="object")return null;let O=P[f]??P.latest;if(typeof O!="string")return null;E=tr.valid(O);let V=tr.valid(n);if(!E||!V||!tr.gt(E,V))return null;let te=hn(a,o),oe=te==="bun"?`${r}@${E}`:f==="latest"?`${r}@latest`:`${r}@${f}`,Re=yn(te,oe),z=pm(V,E);return{message:`${[zt.yellow(`Update available: v${V} -> v${E}${f==="latest"?"":` (${f})`}.`),zt.gray(z),zt.gray(`Update with: "${t} self update" (or "${Re}").`),zt.gray(`Disable with: PHALA_DISABLE_UPDATE_CHECK=1 or "${t} config set disableUpdateNotice true".`)].join(`
102
58
  `)}
103
- `,currentVersion:F,latestVersion:k,packageName:r}}finally{clearTimeout(v);let _=vg("updateCheckLatest",d);f.save({[g]:c,...k?{[_]:k}:{},...d==="latest"?{updateCheckLastAt:c,...k?{updateCheckLatest:k}:{}}:{}})}}catch{return null}}async function I6(e){let{registry:t,argv:r,executableName:n,version:o,packageName:s,packageVersion:a,runtime:i,stdout:c,stderr:m,stdin:u,env:p,cwd:f}=e,d=q3(r);if((d.length>0?t.getNode(d):null)?.group){let v=r.slice(d.length),C=Tc(v,void 0);if(C.flags["--help"]||C.positionals.length===0)return _6({registry:t,argv:r,executableName:n,version:o,packageName:s,packageVersion:a,runtime:i,env:p,stdout:c,stderr:m,groupPath:d})}let h=t.resolveCommand(d);if(!h)return d.length>1&&t.getNode([d[0]])?.group?_6({registry:t,argv:r,executableName:n,version:o,packageName:s,packageVersion:a,runtime:i,env:p,stdout:c,stderr:m,groupPath:[d[0]]}):G3({registry:t,argv:r,executableName:n,version:o,packageName:s,packageVersion:a,runtime:i,env:p,stdout:c,stderr:m});let{definition:y,consumed:b}=h,x=r.slice(b.length);try{let v=Tc(x,y.meta.options);$c(v.flags["--json"]===!0);let C=v.flags["--api-version"];if(typeof C=="string"){if(!Lw(C))return m.write(`Invalid API version "${C}". Supported versions: ${os.join(", ")}
104
- `),1;Bw(C)}if(v.flags["--version"])return c.write(`${o}
105
- `),0;if(v.flags["--help"])return c.write(`${cg({executableName:n,definition:y,registry:t})}
106
- `),0;let _=!(y.path[0]==="self"&&y.path[1]==="update")?Wl({executableName:n,packageName:s,currentVersion:a,runtime:i,env:p,isJson:v.flags["--json"]===!0,stderrIsTTY:m.isTTY===!0}):Promise.resolve(null);y.meta.stability==="deprecated"&&m.write(fi.yellow(`Warning: This command is deprecated and may be removed in a future version.
107
- `));let I=Pw(y.meta,v),M={...I.options,...I.positionals,options:I.options,positionals:I.positionals,raw:I.raw},F,L="cvmId"in M?M.cvmId:void 0,j="interactive"in M&&M.interactive===!0;v.flags["--debug"]&&(console.log("[DISPATCHER DEBUG] 'cvmId' in mergedInput:","cvmId"in M),console.log("[DISPATCHER DEBUG] rawCvmId:",L),console.log("[DISPATCHER DEBUG] mergedInput keys:",Object.keys(M)));let H=[...y.meta.arguments??[],...y.meta.options??[]].some(te=>te.target==="cvmId"||te.name==="cvm-id"||te.name==="cvm_id");if(j&&H){let te=await Yw();te&&(F={app_id:te})}if(!F&&L&&typeof L=="string"&&(F={id:L}),!F){let te=Mc().cvm_id;te&&(F={id:te})}v.flags["--debug"]&&(console.log("[DISPATCHER DEBUG] final cvmId:",JSON.stringify(F)),console.log("[DISPATCHER DEBUG] cvmId type:",typeof F),console.log("[DISPATCHER DEBUG] cvmId is undefined:",F===void 0));let V={argv:x,rawFlags:v.flags,rawPositionals:v.positionals,cwd:f,env:p,stdout:c,stderr:m,stdin:u,projectConfig:Mc(),cvmId:F,cli:{executableName:n,packageName:s,packageVersion:a,runtime:i},success(te){if(Se()){let U=typeof te=="string"?{success:!0,message:te}:{success:!0,...typeof te=="object"&&te!==null?te:{data:te}};c.write(`${JSON.stringify(U,null,2)}
108
- `)}else typeof te=="string"?c.write(`${fi.green("\u2713")} ${fi.green(te)}
109
- `):(c.write(`${fi.green("\u2713")} Success
110
- `),c.write(`${JSON.stringify(te,null,2)}
111
- `))},fail(te,U){Se()?c.write(`${JSON.stringify({success:!1,error:te,...U&&{details:U}},null,2)}
112
- `):(m.write(`${fi.red("\u2717")} ${fi.red(te)}
113
- `),U&&m.write(`${JSON.stringify(U,null,2)}
114
- `))}};v.flags["--debug"]&&console.log("[DISPATCHER DEBUG] context.cvmId after creation:",JSON.stringify(V.cvmId));let de=y.schema.parse(M);v.flags["--debug"]&&console.log("[DISPATCHER DEBUG] context.cvmId before handler:",JSON.stringify(V.cvmId));let Ie=await y.run(de,V),Me=await _;return typeof Ie=="number"?(Ie===0&&Me&&!Se()&&m.write(Me.message),Ie):(Me&&!Se()&&m.write(Me.message),0)}catch(v){if(v instanceof V3){let C=v.issues.some(_=>_.code==="invalid_type"&&_.received==="undefined"&&_.message==="Required"),k=x.some(_=>!_.startsWith("-"));return C&&!k?(c.write(`${cg({executableName:n,definition:y,registry:t})}
115
- `),0):(m.write(K3(v)),1)}if(wg(v))return m.write(`${v.message}
116
- `),1;throw v}}function G3(e){let{registry:t,argv:r,executableName:n,version:o,packageName:s,packageVersion:a,runtime:i,env:c,stdout:m,stderr:u}=e;try{let p=Tc(r,void 0);if(p.flags["--version"])return m.write(`${o}
117
- `),0;if(p.flags["--help"])return m.write(`${Rl({registry:t,executableName:n})}
118
- `),0;if(p.positionals.length===0){m.write(`${Rl({registry:t,executableName:n})}
119
- `);let d=Kl({executableName:n,packageName:s,currentVersion:a,runtime:i,env:c,isJson:!1,stderrIsTTY:u.isTTY===!0});return d&&u.write(d.message),0}let f=p.positionals.join(" ");return u.write(`Unknown command "${f}". Run \`${n} --help\` for a list of commands.
120
- `),1}catch(p){if(wg(p))return u.write(`${p.message}
121
- `),1;throw p}}function _6(e){let{registry:t,argv:r,executableName:n,version:o,packageName:s,packageVersion:a,runtime:i,env:c,stdout:m,stderr:u,groupPath:p}=e;try{let f=r.slice(p.length),d=Tc(f,void 0);if(d.flags["--version"])return m.write(`${o}
122
- `),0;if(d.flags["--help"]||d.positionals.length===0){if(m.write(`${Fw({registry:t,executableName:n,groupPath:p})}
123
- `),!d.flags["--help"]){let y=Kl({executableName:n,packageName:s,currentVersion:a,runtime:i,env:c,isJson:!1,stderrIsTTY:u.isTTY===!0});y&&u.write(y.message)}return 0}let g=d.positionals.join(" "),h=p.join(" ");return u.write(`Unknown subcommand "${g}" for "${h}". Run \`${n} ${h} --help\` for a list of subcommands.
124
- `),1}catch(f){if(wg(f))return u.write(`${f.message}
125
- `),1;throw f}}function q3(e){let t=[];for(let r of e){if(r.startsWith("-"))break;t.push(r)}return t}function K3(e){let t=e.issues[0];return t?`Invalid value for "${t.path.length>0?t.path.join("."):"input"}": ${t.message}
59
+ `,currentVersion:V,latestVersion:E,packageName:r}}finally{clearTimeout(_);let x=hs("updateCheckLatest",f);d.save({[g]:l,...E?{[x]:E}:{},...f==="latest"?{updateCheckLastAt:l,...E?{updateCheckLatest:E}:{}}:{}})}}catch{return null}}async function gm(e){let{registry:t,argv:r,executableName:n,version:o,packageName:a,packageVersion:s,runtime:c,stdout:l,stderr:m,stdin:p,env:u,cwd:d}=e,f=Bw(r);if((f.length>0?t.getNode(f):null)?.group){let _=r.slice(f.length),S=cn(_,void 0);if(S.flags["--help"]||S.positionals.length===0)return fm({registry:t,argv:r,executableName:n,version:o,packageName:a,packageVersion:s,runtime:c,env:u,stdout:l,stderr:m,groupPath:f})}let h=t.resolveCommand(f);if(!h)return f.length>1&&t.getNode([f[0]])?.group?fm({registry:t,argv:r,executableName:n,version:o,packageName:a,packageVersion:s,runtime:c,env:u,stdout:l,stderr:m,groupPath:[f[0]]}):qw({registry:t,argv:r,executableName:n,version:o,packageName:a,packageVersion:s,runtime:c,env:u,stdout:l,stderr:m});let{definition:v,consumed:w}=h,C=r.slice(w.length);try{let _=cn(C,v.meta.options);ln(_.flags["--json"]===!0);let S=_.flags["--api-version"];if(typeof S=="string"){if(!kl(S))return m.write(`Invalid API version "${S}". Supported versions: ${Yt.join(", ")}
60
+ `),1;El(S)}if(_.flags["--version"])return l.write(`${o}
61
+ `),0;if(_.flags["--help"])return l.write(`${os({executableName:n,definition:v,registry:t})}
62
+ `),0;let x=!(v.path[0]==="self"&&v.path[1]==="update")?wo({executableName:n,packageName:a,currentVersion:s,runtime:c,env:u,isJson:_.flags["--json"]===!0,stderrIsTTY:m.isTTY===!0}):Promise.resolve(null);v.meta.stability==="deprecated"&&m.write(Tr.yellow(`Warning: This command is deprecated and may be removed in a future version.
63
+ `));let P=yl(v.meta,_),O={...P.options,...P.positionals,options:P.options,positionals:P.positionals,raw:P.raw},V,te="cvmId"in O?O.cvmId:void 0,oe="interactive"in O&&O.interactive===!0;_.flags["--debug"]&&(console.log("[DISPATCHER DEBUG] 'cvmId' in mergedInput:","cvmId"in O),console.log("[DISPATCHER DEBUG] rawCvmId:",te),console.log("[DISPATCHER DEBUG] mergedInput keys:",Object.keys(O)));let Re=[...v.meta.arguments??[],...v.meta.options??[]].some(ee=>ee.target==="cvmId"||ee.name==="cvm-id"||ee.name==="cvm_id");if(oe&&Re){let ee=await Fl();ee&&(V={app_id:ee})}if(!V&&te&&typeof te=="string"&&(V={id:te}),!V){let ee=pn().cvm_id;ee&&(V={id:ee})}_.flags["--debug"]&&(console.log("[DISPATCHER DEBUG] final cvmId:",JSON.stringify(V)),console.log("[DISPATCHER DEBUG] cvmId type:",typeof V),console.log("[DISPATCHER DEBUG] cvmId is undefined:",V===void 0));let z={argv:C,rawFlags:_.flags,rawPositionals:_.positionals,cwd:d,env:u,stdout:l,stderr:m,stdin:p,projectConfig:pn(),cvmId:V,cli:{executableName:n,packageName:a,packageVersion:s,runtime:c},success(ee){if(ne()){let bt=typeof ee=="string"?{success:!0,message:ee}:{success:!0,...typeof ee=="object"&&ee!==null?ee:{data:ee}};l.write(`${JSON.stringify(bt,null,2)}
64
+ `)}else typeof ee=="string"?l.write(`${Tr.green("\u2713")} ${Tr.green(ee)}
65
+ `):(l.write(`${Tr.green("\u2713")} Success
66
+ `),l.write(`${JSON.stringify(ee,null,2)}
67
+ `))},fail(ee,bt){ne()?l.write(`${JSON.stringify({success:!1,error:ee,...bt&&{details:bt}},null,2)}
68
+ `):(m.write(`${Tr.red("\u2717")} ${Tr.red(ee)}
69
+ `),bt&&m.write(`${JSON.stringify(bt,null,2)}
70
+ `))}};_.flags["--debug"]&&console.log("[DISPATCHER DEBUG] context.cvmId after creation:",JSON.stringify(z.cvmId));let L=v.schema.parse(O);_.flags["--debug"]&&console.log("[DISPATCHER DEBUG] context.cvmId before handler:",JSON.stringify(z.cvmId));let ve=await v.run(L,z),Fe=await x;return typeof ve=="number"?(ve===0&&Fe&&!ne()&&m.write(Fe.message),ve):(Fe&&!ne()&&m.write(Fe.message),0)}catch(_){if(_ instanceof Hw){let S=_.issues.some(x=>x.code==="invalid_type"&&x.received==="undefined"&&x.message==="Required"),E=C.some(x=>!x.startsWith("-"));return S&&!E?(l.write(`${os({executableName:n,definition:v,registry:t})}
71
+ `),0):(m.write(Ww(_)),1)}if(ys(_))return m.write(`${_.message}
72
+ `),1;throw _}}function qw(e){let{registry:t,argv:r,executableName:n,version:o,packageName:a,packageVersion:s,runtime:c,env:l,stdout:m,stderr:p}=e;try{let u=cn(r,void 0);if(u.flags["--version"])return m.write(`${o}
73
+ `),0;if(u.flags["--help"])return m.write(`${oo({registry:t,executableName:n})}
74
+ `),0;if(u.positionals.length===0){m.write(`${oo({registry:t,executableName:n})}
75
+ `);let f=Co({executableName:n,packageName:a,currentVersion:s,runtime:c,env:l,isJson:!1,stderrIsTTY:p.isTTY===!0});return f&&p.write(f.message),0}let d=u.positionals.join(" ");return p.write(`Unknown command "${d}". Run \`${n} --help\` for a list of commands.
76
+ `),1}catch(u){if(ys(u))return p.write(`${u.message}
77
+ `),1;throw u}}function fm(e){let{registry:t,argv:r,executableName:n,version:o,packageName:a,packageVersion:s,runtime:c,env:l,stdout:m,stderr:p,groupPath:u}=e;try{let d=r.slice(u.length),f=cn(d,void 0);if(f.flags["--version"])return m.write(`${o}
78
+ `),0;if(f.flags["--help"]||f.positionals.length===0){if(m.write(`${_l({registry:t,executableName:n,groupPath:u})}
79
+ `),!f.flags["--help"]){let v=Co({executableName:n,packageName:a,currentVersion:s,runtime:c,env:l,isJson:!1,stderrIsTTY:p.isTTY===!0});v&&p.write(v.message)}return 0}let g=f.positionals.join(" "),h=u.join(" ");return p.write(`Unknown subcommand "${g}" for "${h}". Run \`${n} ${h} --help\` for a list of subcommands.
80
+ `),1}catch(d){if(ys(d))return p.write(`${d.message}
81
+ `),1;throw d}}function Bw(e){let t=[];for(let r of e){if(r.startsWith("-"))break;t.push(r)}return t}function Ww(e){let t=e.issues[0];return t?`Invalid value for "${t.path.length>0?t.path.join("."):"input"}": ${t.message}
126
82
  `:`${e.message}
127
- `}function wg(e){return e instanceof Error&&Object.prototype.hasOwnProperty.call(e,"code")&&typeof e.code=="string"}import P6 from"crypto";import ms from"fs";import di from"os";import T6 from"path";function W3(){let e=process.env.PHALA_CLOUD_DIR;return typeof e=="string"&&e.trim().length>0?e:T6.join(di.homedir(),".phala-cloud")}function J3(){return T6.join(W3(),"config.json")}function A6(e){return/^[0-9a-fA-F]+$/.test(e)}function Z3(e){let r=e.trim().split(":");if(r.length!==2)return!1;let[n,o]=r;return n.length===32&&A6(n)&&o.length>0&&A6(o)}function Y3(){let e=[di.hostname(),di.platform(),di.arch(),di.cpus()[0]?.model||"",di.userInfo().username],t=P6.createHash("sha256");return t.update(e.join("|")),t.digest()}function X3(e){let t=Y3(),r=e.trim().split(":");if(r.length!==2)throw new Error("Invalid legacy encrypted format");let n=Buffer.from(r[0],"hex"),o=r[1],s=P6.createDecipheriv("aes-256-cbc",t.slice(0,32),n),a=s.update(o,"hex","utf8");return a+=s.final("utf8"),a}function zc(e){try{ms.unlinkSync(e)}catch{}}function Q3(e){let t={};for(let[r,n]of Object.entries(e))(r==="disableUpdateNotice"||r==="updateCheckChannel"||r==="updateCheckLastAt"||r==="updateCheckLatest"||r.startsWith("updateCheckLastAt_")||r.startsWith("updateCheckLatest_"))&&(t[r]=n);return t}function e4(){return async({token:e,baseURL:t})=>{let r=dr({apiKey:e,baseURL:t}),n=await ht(r);return n.success?{success:!0,data:{username:n.data.user.username,email:n.data.user.email,workspace_name:n.data.workspace.name,workspace_slug:n.data.workspace.slug||void 0}}:{success:!1}}}async function $6(e){await t4(e),await r4(e)}async function t4(e){let t=Fc();if(ms.existsSync(t)){let i=fg();ms.existsSync(i)&&zc(i);return}let r=fg();if(!ms.existsSync(r))return;let n=ms.readFileSync(r,"utf8").trim();if(!n)return;let o;try{o=Z3(n)?X3(n):n}catch{e.stderr.write(`Legacy credentials could not be migrated (possibly due to machine change). Please run 'phala login' again.
128
- `);return}let s=e.env.PHALA_CLOUD_API_PREFIX||sn,a=e.fetchCurrentUser??e4();try{let i=await a({token:o,baseURL:s});if(!i.success){e.stderr.write(`Legacy credentials appear invalid or expired. Please run 'phala login' again.
129
- `);return}let c=i.data,m=c.workspace_name||"default",u=c.workspace_slug,p=u||"default";pi({profileName:p,token:o,apiPrefix:s,workspaceName:m,workspaceSlug:u,user:{username:c.username||"unknown",email:c.email},setCurrent:!0}),zc(r),e.stderr.write(`Migrated legacy credentials into ${t} (profile: ${p}).
83
+ `}function ys(e){return e instanceof Error&&Object.prototype.hasOwnProperty.call(e,"code")&&typeof e.code=="string"}import ym from"crypto";import rr from"fs";import Lr from"os";import vm from"path";function Jw(){let e=process.env.PHALA_CLOUD_DIR;return typeof e=="string"&&e.trim().length>0?e:vm.join(Lr.homedir(),".phala-cloud")}function Yw(){return vm.join(Jw(),"config.json")}function hm(e){return/^[0-9a-fA-F]+$/.test(e)}function Zw(e){let r=e.trim().split(":");if(r.length!==2)return!1;let[n,o]=r;return n.length===32&&hm(n)&&o.length>0&&hm(o)}function Xw(){let e=[Lr.hostname(),Lr.platform(),Lr.arch(),Lr.cpus()[0]?.model||"",Lr.userInfo().username],t=ym.createHash("sha256");return t.update(e.join("|")),t.digest()}function Qw(e){let t=Xw(),r=e.trim().split(":");if(r.length!==2)throw new Error("Invalid legacy encrypted format");let n=Buffer.from(r[0],"hex"),o=r[1],a=ym.createDecipheriv("aes-256-cbc",t.slice(0,32),n),s=a.update(o,"hex","utf8");return s+=a.final("utf8"),s}function vn(e){try{rr.unlinkSync(e)}catch{}}function e_(e){let t={};for(let[r,n]of Object.entries(e))(r==="disableUpdateNotice"||r==="updateCheckChannel"||r==="updateCheckLastAt"||r==="updateCheckLatest"||r.startsWith("updateCheckLastAt_")||r.startsWith("updateCheckLatest_"))&&(t[r]=n);return t}function t_(){return async({token:e,baseURL:t})=>{let r=Qe({apiKey:e,baseURL:t}),n=await Pe(r);return n.success?{success:!0,data:{username:n.data.user.username,email:n.data.user.email,workspace_name:n.data.workspace.name,workspace_slug:n.data.workspace.slug||void 0}}:{success:!1}}}async function bm(e){await r_(e),await n_(e)}async function r_(e){let t=un();if(rr.existsSync(t)){let c=ls();rr.existsSync(c)&&vn(c);return}let r=ls();if(!rr.existsSync(r))return;let n=rr.readFileSync(r,"utf8").trim();if(!n)return;let o;try{o=Zw(n)?Qw(n):n}catch{e.stderr.write(`Legacy credentials could not be migrated (possibly due to machine change). Please run 'phala login' again.
84
+ `);return}let a=e.env.PHALA_CLOUD_API_PREFIX||gt,s=e.fetchCurrentUser??t_();try{let c=await s({token:o,baseURL:a});if(!c.success){e.stderr.write(`Legacy credentials appear invalid or expired. Please run 'phala login' again.
85
+ `);return}let l=c.data,m=l.workspace_name||"default",p=l.workspace_slug,u=p||"default";Rr({profileName:u,token:o,apiPrefix:a,workspaceName:m,workspaceSlug:p,user:{username:l.username||"unknown",email:l.email},setCurrent:!0}),vn(r),e.stderr.write(`Migrated legacy credentials into ${t} (profile: ${u}).
130
86
  `)}catch{e.stderr.write(`Legacy credentials could not be migrated. Please run 'phala login' again.
131
- `)}}async function r4(e){let t=Vl(),r=J3();if(ms.existsSync(r))try{let n=ms.readFileSync(r,"utf8"),o=JSON.parse(n);if(!o||typeof o!="object"){zc(r);return}let s=Q3(o);if(Object.keys(s).length>0){let a=Bc();is({...a,...s}),e.stderr.write(`Migrated legacy config into ${t}.
132
- `)}zc(r)}catch{zc(r)}}function R6(e){return{name:e,children:new Map,aliasMap:new Map}}var Jl=class{constructor(){this.root=R6(null)}registerGroup(t){let r=this.ensurePath(t.path);r.group=t;let n=this.getParentNode(t.path);if(n&&t.meta.aliases){let o=t.path[t.path.length-1];for(let s of t.meta.aliases)n.aliasMap.set(s,o)}}registerCommand(t){let r=this.ensurePath(t.path);r.command=t;let n=this.getParentNode(t.path);if(n&&t.meta.aliases){let o=t.path[t.path.length-1];for(let s of t.meta.aliases)n.aliasMap.set(s,o)}}resolveCommand(t){let r=this.root,n;for(let i=0;i<t.length;i+=1){let c=t[i],m=this.getChild(r,c);if(!m)break;r=m,r.command&&(n={node:r,depth:i+1})}if(!n)return;let o=t.slice(0,n.depth),s=t.slice(n.depth),a=n.node.command;return a?{definition:a,consumed:o,remaining:s}:null}getChildren(t=[]){let r=this.getNode(t);return r?[...r.children.values()]:[]}getNode(t){let r=this.root;for(let n of t){let o=this.getChild(r,n);if(!o)return;r=o}return r}ensurePath(t){let r=this.root;for(let n of t){let o=r.children.get(n);o||(o=R6(n),r.children.set(n,o)),r=o}return r}getParentNode(t){if(t.length!==0)return this.getNode(t.slice(0,-1))}getChild(t,r){let n=t.children.get(r);if(n)return n;let o=t.aliasMap.get(r);if(o)return t.children.get(o)}};import{readFileSync as Cg}from"fs";import{dirname as s4,join as a4}from"path";import{fileURLToPath as i4}from"url";function P(e){return{path:e.path,meta:e.meta,schema:e.schema,run:e.handler}}import n4 from"@michaelhomer/jqjs";function M6(e,t){let n=[...n4.compile(t)(e)];return n.length===1?n[0]:n}function F6(e,t=2){return e==null?String(e):typeof e=="string"?e:JSON.stringify(e,null,t)}import{z as yt}from"zod";var o4=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],N6={name:"api",category:"advanced",description:`Make an authenticated HTTP request to Phala Cloud API.
87
+ `)}}async function n_(e){let t=yo(),r=Yw();if(rr.existsSync(r))try{let n=rr.readFileSync(r,"utf8"),o=JSON.parse(n);if(!o||typeof o!="object"){vn(r);return}let a=e_(o);if(Object.keys(a).length>0){let s=gn();er({...s,...a}),e.stderr.write(`Migrated legacy config into ${t}.
88
+ `)}vn(r)}catch{vn(r)}}function Cm(e){return{name:e,children:new Map,aliasMap:new Map}}var _o=class{constructor(){this.root=Cm(null)}registerGroup(t){let r=this.ensurePath(t.path);r.group=t;let n=this.getParentNode(t.path);if(n&&t.meta.aliases){let o=t.path[t.path.length-1];for(let a of t.meta.aliases)n.aliasMap.set(a,o)}}registerCommand(t){let r=this.ensurePath(t.path);r.command=t;let n=this.getParentNode(t.path);if(n&&t.meta.aliases){let o=t.path[t.path.length-1];for(let a of t.meta.aliases)n.aliasMap.set(a,o)}}resolveCommand(t){let r=this.root,n;for(let c=0;c<t.length;c+=1){let l=t[c],m=this.getChild(r,l);if(!m)break;r=m,r.command&&(n={node:r,depth:c+1})}if(!n)return;let o=t.slice(0,n.depth),a=t.slice(n.depth),s=n.node.command;return s?{definition:s,consumed:o,remaining:a}:null}getChildren(t=[]){let r=this.getNode(t);return r?[...r.children.values()]:[]}getNode(t){let r=this.root;for(let n of t){let o=this.getChild(r,n);if(!o)return;r=o}return r}ensurePath(t){let r=this.root;for(let n of t){let o=r.children.get(n);o||(o=Cm(n),r.children.set(n,o)),r=o}return r}getParentNode(t){if(t.length!==0)return this.getNode(t.slice(0,-1))}getChild(t,r){let n=t.children.get(r);if(n)return n;let o=t.aliasMap.get(r);if(o)return t.children.get(o)}};import{readFileSync as vs}from"fs";import{dirname as s_,join as i_}from"path";import{fileURLToPath as c_}from"url";function b(e){return{path:e.path,meta:e.meta,schema:e.schema,run:e.handler}}import o_ from"@michaelhomer/jqjs";function wm(e,t){let n=[...o_.compile(t)(e)];return n.length===1?n[0]:n}function _m(e,t=2){return e==null?String(e):typeof e=="string"?e:JSON.stringify(e,null,t)}import{z as De}from"zod";var a_=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],Sm={name:"api",category:"advanced",description:`Make an authenticated HTTP request to Phala Cloud API.
133
89
 
134
90
  The endpoint should be an API path like "/cvms" or "/users/me".
135
91
 
@@ -152,15 +108,15 @@ Use -q to filter JSON output with jq syntax (built-in, no jq installation needed
152
108
  ENVIRONMENT VARIABLES
153
109
 
154
110
  PHALA_CLOUD_API_KEY Override the API key (useful for CI/CD)
155
- PHALA_CLOUD_API_PREFIX Override the API base URL`,stability:"unstable",arguments:[{name:"endpoint",description:"API endpoint path",required:!0}],options:[...So,{name:"method",shorthand:"X",description:"HTTP method (default: GET)",type:"string",target:"method"},{name:"query",shorthand:"f",description:"Query parameter: key=value (use key=@file to read from file)",type:"string[]",target:"query"},{name:"field",shorthand:"F",description:"Body field: key=value (string) or key:=value (typed JSON). Supports @file",type:"string[]",target:"field"},{name:"header",shorthand:"H",description:"HTTP header: key:value",type:"string[]",target:"header"},{name:"data",shorthand:"d",description:"Request body data (cURL-style)",type:"string[]",target:"data"},{name:"input",description:'Read body from file (use "-" for stdin)',type:"string",target:"input"},{name:"include",shorthand:"i",description:"Print response headers",type:"boolean",target:"include"},{name:"jq",shorthand:"q",description:"Filter output with jq expression",type:"string",target:"jq"},{name:"silent",description:"Don't print response body",type:"boolean",target:"silent"}],examples:[{name:"List CVMs",value:"phala api /cvms"},{name:"Get CVM by app ID",value:"phala api /cvms/app_xxx"},{name:"Filter with jq",value:"phala api /cvms -q '.items[].name'"},{name:"GET with query params",value:"phala api /endpoint -f status=active -f page=2"},{name:"POST with body fields",value:"phala api /endpoint -X POST -F name=foo -F count:=10"},{name:"POST with cURL-style -d",value:`phala api /endpoint -X POST -d '{"foo":"bar"}'`},{name:"POST from file",value:"phala api /endpoint -X POST --input data.json"},{name:"Query params + body combined",value:"phala api /endpoint -X POST -f page=1 -F name=foo"},{name:"Body field from file",value:"phala api /endpoint -X POST -F config:=@settings.json"},{name:"Show response headers",value:"phala api /cvms -i"}]},L6=yt.object({endpoint:yt.string(),method:yt.enum(o4).default("GET").transform(e=>e.toUpperCase()),query:yt.array(yt.string()).optional(),field:yt.array(yt.string()).optional(),header:yt.array(yt.string()).optional(),data:yt.array(yt.string()).optional(),input:yt.string().optional(),include:yt.boolean().default(!1),jq:yt.string().optional(),silent:yt.boolean().default(!1),apiToken:yt.string().optional()});var c4=i4(import.meta.url),m4=s4(c4),u4=a4(m4,"../../../package.json"),B6="unknown";try{B6=JSON.parse(Cg(u4,"utf-8")).version||"unknown"}catch{}function Zl(e){return e==="-"?Cg(0,"utf-8"):Cg(e,"utf-8")}function p4(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;if(/^-?\d+$/.test(e))return Number.parseInt(e,10);if(/^-?\d+\.\d+$/.test(e))return Number.parseFloat(e);if(e.startsWith("[")||e.startsWith("{"))try{return JSON.parse(e)}catch{}return e}function l4(e){let t={};for(let r of e??[]){let n=r.indexOf("=");if(n>0){let o=r.slice(0,n),s=r.slice(n+1);s.startsWith("@")?t[o]=Zl(s.slice(1)):t[o]=s}}return t}function f4(e){let t={};for(let r of e??[]){let n=r.indexOf(":=");if(n>0){let s=r.slice(0,n),a=r.slice(n+2);if(a.startsWith("@")){let i=a.slice(1),c=Zl(i);try{t[s]=JSON.parse(c)}catch{throw new Error(`Failed to parse JSON from file "${i}" for field "${s}"`)}}else t[s]=p4(a);continue}let o=r.indexOf("=");if(o>0){let s=r.slice(0,o),a=r.slice(o+1);a.startsWith("@")?t[s]=Zl(a.slice(1)):t[s]=a}}return t}function d4(e){let t={};for(let r of e??[]){let n=r.indexOf(":");if(n>0){let o=r.slice(0,n).trim(),s=r.slice(n+1).trim();t[o]=s}}return t}function g4(e,t){let r=t.toLowerCase();return Object.keys(e).some(n=>n.toLowerCase()===r)}function h4(e){return!["GET","HEAD","OPTIONS"].includes(e)}function D6(e){let t=e.field&&e.field.length>0;if(e.input&&e.data&&e.data.length>0)throw new Error('"-d/--data" cannot be used with "--input"');if(t&&e.data&&e.data.length>0)throw new Error('"-d/--data" cannot be used with "-F/--field"');if(t&&e.input)throw new Error('"--input" cannot be used with "-F/--field"');if(e.input){let r=Zl(e.input);try{return{body:JSON.parse(r)}}catch{return{body:r}}}if(e.data&&e.data.length>0){let r=e.data.length===1?e.data[0]:e.data.join("&"),n=r.trim();if(n.startsWith("{")||n.startsWith("["))try{return{body:JSON.parse(n)}}catch{}return{body:r,defaultContentType:"application/x-www-form-urlencoded"}}if(t){let r=f4(e.field);return Object.keys(r).length===0?{body:void 0}:{body:r}}return{body:void 0}}function y4(e,t){let{body:r}=D6(e),n=l4(e.query),o=t;if(Object.keys(n).length>0){let s=new URLSearchParams;for(let[i,c]of Object.entries(n))s.append(i,c);let a=o.includes("?")?"&":"?";o=`${o}${a}${s.toString()}`}return{method:e.method,endpoint:o,body:r}}async function b4(e,t){let r=an(t,{apiToken:e.apiToken});if(!r.apiKey)return t.stderr.write(`Error: Not authenticated. Run "phala login" first.
156
- `),1;let n=dr({apiKey:r.apiKey,baseURL:r.baseURL,headers:{"User-Agent":`phala-cli/${B6}`}}),o=d4(e.header),s=e.endpoint.startsWith("/")?e.endpoint:`/${e.endpoint}`,a=s.indexOf("?"),i=a>=0?`${s.slice(0,a)}?${new URLSearchParams(s.slice(a+1)).toString()}`:s;try{let{defaultContentType:c}=D6(e);c&&!g4(o,"content-type")&&(o["Content-Type"]=c);let m=y4(e,i);if(m.body!==void 0&&!h4(m.method))return t.stderr.write(`Error: ${m.method} does not support a request body. Use -X POST (or PUT/PATCH) to send body data.
157
- `),1;let u=await n.requestFull(m.endpoint,{method:m.method,body:m.body,headers:o});if(e.include&&(t.stdout.write(`HTTP/1.1 ${u.status} ${u.statusText}
158
- `),u.headers.forEach((p,f)=>{t.stdout.write(`${f}: ${p}
111
+ PHALA_CLOUD_API_PREFIX Override the API base URL`,stability:"unstable",arguments:[{name:"endpoint",description:"API endpoint path",required:!0}],options:[...jt,{name:"method",shorthand:"X",description:"HTTP method (default: GET)",type:"string",target:"method"},{name:"query",shorthand:"f",description:"Query parameter: key=value (use key=@file to read from file)",type:"string[]",target:"query"},{name:"field",shorthand:"F",description:"Body field: key=value (string) or key:=value (typed JSON). Supports @file",type:"string[]",target:"field"},{name:"header",shorthand:"H",description:"HTTP header: key:value",type:"string[]",target:"header"},{name:"data",shorthand:"d",description:"Request body data (cURL-style)",type:"string[]",target:"data"},{name:"input",description:'Read body from file (use "-" for stdin)',type:"string",target:"input"},{name:"include",shorthand:"i",description:"Print response headers",type:"boolean",target:"include"},{name:"jq",shorthand:"q",description:"Filter output with jq expression",type:"string",target:"jq"},{name:"silent",description:"Don't print response body",type:"boolean",target:"silent"}],examples:[{name:"List CVMs",value:"phala api /cvms"},{name:"Get CVM by app ID",value:"phala api /cvms/app_xxx"},{name:"Filter with jq",value:"phala api /cvms -q '.items[].name'"},{name:"GET with query params",value:"phala api /endpoint -f status=active -f page=2"},{name:"POST with body fields",value:"phala api /endpoint -X POST -F name=foo -F count:=10"},{name:"POST with cURL-style -d",value:`phala api /endpoint -X POST -d '{"foo":"bar"}'`},{name:"POST from file",value:"phala api /endpoint -X POST --input data.json"},{name:"Query params + body combined",value:"phala api /endpoint -X POST -f page=1 -F name=foo"},{name:"Body field from file",value:"phala api /endpoint -X POST -F config:=@settings.json"},{name:"Show response headers",value:"phala api /cvms -i"}]},km=De.object({endpoint:De.string(),method:De.enum(a_).default("GET").transform(e=>e.toUpperCase()),query:De.array(De.string()).optional(),field:De.array(De.string()).optional(),header:De.array(De.string()).optional(),data:De.array(De.string()).optional(),input:De.string().optional(),include:De.boolean().default(!1),jq:De.string().optional(),silent:De.boolean().default(!1),apiToken:De.string().optional()});var l_=c_(import.meta.url),m_=s_(l_),p_=i_(m_,"../../../package.json"),Em="unknown";try{Em=JSON.parse(vs(p_,"utf-8")).version||"unknown"}catch{}function So(e){return e==="-"?vs(0,"utf-8"):vs(e,"utf-8")}function u_(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;if(/^-?\d+$/.test(e))return Number.parseInt(e,10);if(/^-?\d+\.\d+$/.test(e))return Number.parseFloat(e);if(e.startsWith("[")||e.startsWith("{"))try{return JSON.parse(e)}catch{}return e}function d_(e){let t={};for(let r of e??[]){let n=r.indexOf("=");if(n>0){let o=r.slice(0,n),a=r.slice(n+1);a.startsWith("@")?t[o]=So(a.slice(1)):t[o]=a}}return t}function f_(e){let t={};for(let r of e??[]){let n=r.indexOf(":=");if(n>0){let a=r.slice(0,n),s=r.slice(n+2);if(s.startsWith("@")){let c=s.slice(1),l=So(c);try{t[a]=JSON.parse(l)}catch{throw new Error(`Failed to parse JSON from file "${c}" for field "${a}"`)}}else t[a]=u_(s);continue}let o=r.indexOf("=");if(o>0){let a=r.slice(0,o),s=r.slice(o+1);s.startsWith("@")?t[a]=So(s.slice(1)):t[a]=s}}return t}function g_(e){let t={};for(let r of e??[]){let n=r.indexOf(":");if(n>0){let o=r.slice(0,n).trim(),a=r.slice(n+1).trim();t[o]=a}}return t}function h_(e,t){let r=t.toLowerCase();return Object.keys(e).some(n=>n.toLowerCase()===r)}function y_(e){return!["GET","HEAD","OPTIONS"].includes(e)}function Im(e){let t=e.field&&e.field.length>0;if(e.input&&e.data&&e.data.length>0)throw new Error('"-d/--data" cannot be used with "--input"');if(t&&e.data&&e.data.length>0)throw new Error('"-d/--data" cannot be used with "-F/--field"');if(t&&e.input)throw new Error('"--input" cannot be used with "-F/--field"');if(e.input){let r=So(e.input);try{return{body:JSON.parse(r)}}catch{return{body:r}}}if(e.data&&e.data.length>0){let r=e.data.length===1?e.data[0]:e.data.join("&"),n=r.trim();if(n.startsWith("{")||n.startsWith("["))try{return{body:JSON.parse(n)}}catch{}return{body:r,defaultContentType:"application/x-www-form-urlencoded"}}if(t){let r=f_(e.field);return Object.keys(r).length===0?{body:void 0}:{body:r}}return{body:void 0}}function v_(e,t){let{body:r}=Im(e),n=d_(e.query),o=t;if(Object.keys(n).length>0){let a=new URLSearchParams;for(let[c,l]of Object.entries(n))a.append(c,l);let s=o.includes("?")?"&":"?";o=`${o}${s}${a.toString()}`}return{method:e.method,endpoint:o,body:r}}async function b_(e,t){let r=ht(t,{apiToken:e.apiToken});if(!r.apiKey)return t.stderr.write(`Error: Not authenticated. Run "phala login" first.
112
+ `),1;let n=Qe({apiKey:r.apiKey,baseURL:r.baseURL,headers:{"User-Agent":`phala-cli/${Em}`}}),o=g_(e.header),a=e.endpoint.startsWith("/")?e.endpoint:`/${e.endpoint}`,s=a.indexOf("?"),c=s>=0?`${a.slice(0,s)}?${new URLSearchParams(a.slice(s+1)).toString()}`:a;try{let{defaultContentType:l}=Im(e);l&&!h_(o,"content-type")&&(o["Content-Type"]=l);let m=v_(e,c);if(m.body!==void 0&&!y_(m.method))return t.stderr.write(`Error: ${m.method} does not support a request body. Use -X POST (or PUT/PATCH) to send body data.
113
+ `),1;let p=await n.requestFull(m.endpoint,{method:m.method,body:m.body,headers:o});if(e.include&&(t.stdout.write(`HTTP/1.1 ${p.status} ${p.statusText}
114
+ `),p.headers.forEach((u,d)=>{t.stdout.write(`${d}: ${u}
159
115
  `)}),t.stdout.write(`
160
- `)),!e.silent&&u.data!==void 0){let p=u.data;if(e.jq)try{p=M6(p,e.jq)}catch(d){return t.stderr.write(`Error: jq filter failed: ${d.message}
161
- `),1}let f=F6(p);t.stdout.write(`${f}
162
- `)}return u.ok?0:1}catch(c){let m=c;return t.stderr.write(`Error: ${m.message}
163
- `),1}}var U6=P({path:["api"],meta:N6,schema:L6,handler:b4});var z6={path:["auth"],meta:{name:"auth",category:"deprecated",description:"Authenticate with Phala Cloud",stability:"deprecated"}};import x4 from"prompts";var je=process.env.CLOUD_URL||"https://cloud.phala.com";var Oc=1,jc=2048,us=40,Sg="dstack-0.3.6",O6=`version: '3.8'
116
+ `)),!e.silent&&p.data!==void 0){let u=p.data;if(e.jq)try{u=wm(u,e.jq)}catch(f){return t.stderr.write(`Error: jq filter failed: ${f.message}
117
+ `),1}let d=_m(u);t.stdout.write(`${d}
118
+ `)}return p.ok?0:1}catch(l){let m=l;return t.stderr.write(`Error: ${m.message}
119
+ `),1}}var Am=b({path:["api"],meta:Sm,schema:km,handler:b_});var xm={path:["auth"],meta:{name:"auth",category:"deprecated",description:"Authenticate with Phala Cloud",stability:"deprecated"}};import C_ from"prompts";var he=process.env.CLOUD_URL||"https://cloud.phala.com";var bn=1,Cn=2048,nr=40,bs="dstack-0.3.6",Pm=`version: '3.8'
164
120
  services:
165
121
  postgres:
166
122
  image: ankane/pgvector:latest
@@ -205,7 +161,7 @@ networks:
205
161
  driver: bridge
206
162
 
207
163
  volumes:
208
- postgres-data:`,j6=`version: '3.8'
164
+ postgres-data:`,$m=`version: '3.8'
209
165
  services:
210
166
  app:
211
167
  image: {{imageName}}
@@ -216,51 +172,51 @@ services:
216
172
  {{#each envVars}} - {{{this}}}
217
173
  {{/each}}
218
174
  restart: always
219
- `;import{z as Yl}from"zod";var H6={name:"login",description:"Authenticate with Phala Cloud (use 'phala login' instead)",stability:"deprecated",arguments:[{name:"api-key",description:"API key (triggers device flow if omitted)",required:!1,target:"apiKey"}],options:[{name:"manual",description:"Enter API key manually",type:"boolean"},{name:"no-open",description:"Skip browser launch",type:"boolean"}]},V6=Yl.object({apiKey:Yl.string().min(1,"API key cannot be empty").optional(),manual:Yl.boolean().optional(),noOpen:Yl.boolean().optional()});async function kg(e){let t=await Ol(e.apiKey,{baseURL:e.baseURL}),r=await ht(t);if(!r.success||!r.data?.user.username)throw new Error("Invalid API key");return{username:r.data.user.username,email:r.data.user.email,workspace_name:r.data.workspace.name,workspace_slug:r.data.workspace.slug||void 0}}async function v4(e){let t,r=await x4({type:"password",name:"apiKey",message:"Enter your API key:",validate:async n=>{if(!n||n.trim().length===0)return"API key cannot be empty";try{return t=await kg({apiKey:n,baseURL:e.baseURL}),!0}catch(o){return o instanceof Error?o.message:"Invalid API key"}}});if(!r.apiKey)throw new Error("API key input cancelled");return t||(t=await kg({apiKey:r.apiKey,baseURL:e.baseURL})),{apiKey:r.apiKey,user:t}}async function w4(e,t){l.warn('The "phala auth login" command is deprecated and will be removed in a future version.'),l.info('Please use "phala login" instead for a better experience.'),l.break();try{let r=t.env.PHALA_CLOUD_API_PREFIX||sn,n=e.apiKey,o;if(n)o=await kg({apiKey:n,baseURL:r});else{let c=await v4({baseURL:r});n=c.apiKey,o=c.user}if(!o)throw new Error("Failed to validate API key");let s=o.workspace_name||"default",a=o.workspace_slug,i=s;return pi({profileName:i,token:n,apiPrefix:r,workspaceName:s,workspaceSlug:a,user:{username:o.username,email:o.email},setCurrent:!0}),l.success(`Welcome ${o.username}! Credentials saved successfully (profile: ${i})`),l.break(),l.info(`Open in Web UI at ${je}/dashboard/`),0}catch(r){return l.error("Failed to set API key"),l.logDetailedError(r),1}}var G6=P({path:["auth","login"],meta:H6,schema:V6,handler:w4});import{z as C4}from"zod";var q6={name:"logout",description:"Remove stored API key (use 'phala logout' instead)",stability:"deprecated"},K6=C4.object({});async function S4(e,t){l.warn('The "phala auth logout" command is deprecated and will be removed in a future version.'),l.info('Please use "phala logout" instead.'),l.break();try{let n=Bt()?.current_profile;return Ul(),l.success(n?`Credentials removed successfully (profile: ${n})`:"Credentials removed successfully"),0}catch(r){return l.error("Failed to remove credentials"),l.logDetailedError(r),1}}var W6=P({path:["auth","logout"],meta:q6,schema:K6,handler:S4});import{z as Xl}from"zod";var Et={name:"json",shorthand:"j",description:"Output in JSON format",type:"boolean",target:"json",negatedName:"no-json"},Eg={name:"debug",shorthand:"d",description:"Enable debug output",type:"boolean",target:"debug"},J6={name:"status",category:"profile",description:"Check authentication status",stability:"stable",options:[...So,Et,Eg],examples:[{name:"Show login status",value:"phala status"},{name:"Get status as JSON",value:"phala status --json"}]},Ql=Xl.object({json:Xl.boolean().default(!1),debug:Xl.boolean().default(!1),apiToken:Xl.string().optional()});async function _g(e,t){let r=e.debug||t.env.DEBUG?.toLowerCase()==="true",{client:n,auth:o}=await zl(t,{apiToken:e.apiToken});if(!o.apiKey)return l.warn('Not authenticated. Please set an API key with "phala login"'),0;r&&(l.debug(`Using API key: ${o.apiKey.substring(0,5)}... (source=${o.tokenSource}, profile=${o.profileName})`),l.debug(`Using API prefix: ${o.baseURL} (source=${o.apiPrefixSource})`));try{let s=await ht(n);if(!s.success)return l.error("Failed to get user information"),s.error&&l.error(`Error: ${s.error.message}`),t.fail(s.error?.message||"Failed to get user information"),1;let a=s.data,i=o.baseURL,c=n.config.version;if(e.json)return t.success({apiUrl:i,apiVersion:c,username:a.user.username,team_name:a.workspace.name,profile:o.profileName}),0;if(t.stdout.write(`Integrated API: ${i}
220
- `),t.stdout.write(`API Version: ${c}
221
- `),t.stdout.write(`Logged in as: ${a.user.username}
222
- `),t.stdout.write(`Current Workspace: ${a.workspace.name}
175
+ `;import{z as ko}from"zod";var Dm={name:"login",description:"Authenticate with Phala Cloud (use 'phala login' instead)",stability:"deprecated",arguments:[{name:"api-key",description:"API key (triggers device flow if omitted)",required:!1,target:"apiKey"}],options:[{name:"manual",description:"Enter API key manually",type:"boolean"},{name:"no-open",description:"Skip browser launch",type:"boolean"}]},Rm=ko.object({apiKey:ko.string().min(1,"API key cannot be empty").optional(),manual:ko.boolean().optional(),noOpen:ko.boolean().optional()});async function Cs(e){let t=await fo(e.apiKey,{baseURL:e.baseURL}),r=await Pe(t);if(!r.success||!r.data?.user.username)throw new Error("Invalid API key");return{username:r.data.user.username,email:r.data.user.email,workspace_name:r.data.workspace.name,workspace_slug:r.data.workspace.slug||void 0}}async function w_(e){let t,r=await C_({type:"password",name:"apiKey",message:"Enter your API key:",validate:async n=>{if(!n||n.trim().length===0)return"API key cannot be empty";try{return t=await Cs({apiKey:n,baseURL:e.baseURL}),!0}catch(o){return o instanceof Error?o.message:"Invalid API key"}}});if(!r.apiKey)throw new Error("API key input cancelled");return t||(t=await Cs({apiKey:r.apiKey,baseURL:e.baseURL})),{apiKey:r.apiKey,user:t}}async function __(e,t){i.warn('The "phala auth login" command is deprecated and will be removed in a future version.'),i.info('Please use "phala login" instead for a better experience.'),i.break();try{let r=t.env.PHALA_CLOUD_API_PREFIX||gt,n=e.apiKey,o;if(n)o=await Cs({apiKey:n,baseURL:r});else{let l=await w_({baseURL:r});n=l.apiKey,o=l.user}if(!o)throw new Error("Failed to validate API key");let a=o.workspace_name||"default",s=o.workspace_slug,c=a;return Rr({profileName:c,token:n,apiPrefix:r,workspaceName:a,workspaceSlug:s,user:{username:o.username,email:o.email},setCurrent:!0}),i.success(`Welcome ${o.username}! Credentials saved successfully (profile: ${c})`),i.break(),i.info(`Open in Web UI at ${he}/dashboard/`),0}catch(r){return i.error("Failed to set API key"),i.logDetailedError(r),1}}var Mm=b({path:["auth","login"],meta:Dm,schema:Rm,handler:__});import{z as S_}from"zod";var Tm={name:"logout",description:"Remove stored API key (use 'phala logout' instead)",stability:"deprecated"},Lm=S_.object({});async function k_(e,t){i.warn('The "phala auth logout" command is deprecated and will be removed in a future version.'),i.info('Please use "phala logout" instead.'),i.break();try{let n=Ge()?.current_profile;return po(),i.success(n?`Credentials removed successfully (profile: ${n})`:"Credentials removed successfully"),0}catch(r){return i.error("Failed to remove credentials"),i.logDetailedError(r),1}}var Nm=b({path:["auth","logout"],meta:Tm,schema:Lm,handler:k_});import{z as Eo}from"zod";var ie={name:"json",shorthand:"j",description:"Output in JSON format",type:"boolean",target:"json",negatedName:"no-json"},ws={name:"debug",shorthand:"d",description:"Enable debug output",type:"boolean",target:"debug"},Um={name:"status",category:"profile",description:"Check authentication status",stability:"stable",options:[...jt,ie,ws],examples:[{name:"Show login status",value:"phala status"},{name:"Get status as JSON",value:"phala status --json"}]},Io=Eo.object({json:Eo.boolean().default(!1),debug:Eo.boolean().default(!1),apiToken:Eo.string().optional()});async function _s(e,t){let r=e.debug||t.env.DEBUG?.toLowerCase()==="true",{client:n,auth:o}=await uo(t,{apiToken:e.apiToken});if(!o.apiKey)return i.warn('Not authenticated. Please set an API key with "phala login"'),0;r&&(i.debug(`Using API key: ${o.apiKey.substring(0,5)}... (source=${o.tokenSource}, profile=${o.profileName})`),i.debug(`Using API prefix: ${o.baseURL} (source=${o.apiPrefixSource})`));try{let a=await Pe(n);if(!a.success)return i.error("Failed to get user information"),a.error&&i.error(`Error: ${a.error.message}`),t.fail(a.error?.message||"Failed to get user information"),1;let s=a.data,c=o.baseURL,l=n.config.version;if(e.json)return t.success({apiUrl:c,apiVersion:l,username:s.user.username,team_name:s.workspace.name,profile:o.profileName}),0;if(t.stdout.write(`Integrated API: ${c}
176
+ `),t.stdout.write(`API Version: ${l}
177
+ `),t.stdout.write(`Logged in as: ${s.user.username}
178
+ `),t.stdout.write(`Current Workspace: ${s.workspace.name}
223
179
  `),t.stdout.write(`Current Profile: ${o.profileName}
224
- `),t.cli){let m=await Wl({executableName:t.cli.executableName,packageName:t.cli.packageName,currentVersion:t.cli.packageVersion,runtime:t.cli.runtime,env:t.env,isJson:!1,stderrIsTTY:t.stderr.isTTY===!0,ttlMs:0,timeoutMs:5e3});m?t.stderr.write(`
180
+ `),t.cli){let m=await wo({executableName:t.cli.executableName,packageName:t.cli.packageName,currentVersion:t.cli.packageVersion,runtime:t.cli.runtime,env:t.env,isJson:!1,stderrIsTTY:t.stderr.isTTY===!0,ttlMs:0,timeoutMs:5e3});m?t.stderr.write(`
225
181
  ${m.message}`):t.stdout.write(`CLI is up to date.
226
- `)}return 0}catch(s){return l.error("Authentication failed. Your API key may be invalid or expired."),l.info('Please set a new API key with "phala login"'),r&&l.logDetailedError(s),t.fail("Authentication failed. Your API key may be invalid or expired."),1}}var Z6=P({path:["status"],meta:J6,schema:Ql,handler:_g});var Y6={name:"status",description:"Check auth status (use 'phala status' instead)",stability:"deprecated",options:[...So,Et,Eg]},X6=Ql;var Q6=P({path:["auth","status"],meta:Y6,schema:X6,handler:async(e,t)=>(e.json||(l.warn('The "phala auth status" command is deprecated and will be removed in a future version.'),l.info('Please use "phala status" instead.'),l.break()),_g(e,t))});var Ig={group:z6,commands:[G6,W6,Q6]};var eC={path:["config"],meta:{name:"config",category:"deprecated",description:"Manage local CLI state",stability:"deprecated"}};import{z as tC}from"zod";var rC={name:"get",description:"Get a configuration value",stability:"stable",arguments:[{name:"key",description:"Configuration key",required:!0}]},nC=tC.object({key:tC.string()});async function k4(e,t){l.warn('The "phala config" commands are deprecated and will be removed in a future version.');try{let r=li(e.key);return r===void 0?(t.stderr.write(`Configuration key '${e.key}' not found
182
+ `)}return 0}catch(a){return i.error("Authentication failed. Your API key may be invalid or expired."),i.info('Please set a new API key with "phala login"'),r&&i.logDetailedError(a),t.fail("Authentication failed. Your API key may be invalid or expired."),1}}var Om=b({path:["status"],meta:Um,schema:Io,handler:_s});var Fm={name:"status",description:"Check auth status (use 'phala status' instead)",stability:"deprecated",options:[...jt,ie,ws]},jm=Io;var Vm=b({path:["auth","status"],meta:Fm,schema:jm,handler:async(e,t)=>(e.json||(i.warn('The "phala auth status" command is deprecated and will be removed in a future version.'),i.info('Please use "phala status" instead.'),i.break()),_s(e,t))});var Ss={group:xm,commands:[Mm,Nm,Vm]};var zm={path:["config"],meta:{name:"config",category:"deprecated",description:"Manage local CLI state",stability:"deprecated"}};import{z as Km}from"zod";var Gm={name:"get",description:"Get a configuration value",stability:"stable",arguments:[{name:"key",description:"Configuration key",required:!0}]},Hm=Km.object({key:Km.string()});async function E_(e,t){i.warn('The "phala config" commands are deprecated and will be removed in a future version.');try{let r=Mr(e.key);return r===void 0?(t.stderr.write(`Configuration key '${e.key}' not found
227
183
  `),1):(t.stdout.write(`${e.key}: ${JSON.stringify(r)}
228
184
  `),0)}catch(r){return t.stderr.write(`Failed to get configuration value
229
- `),l.logDetailedError(r),1}}var oC=P({path:["config","get"],meta:rC,schema:nC,handler:k4});import{z as sC}from"zod";var aC={name:"list",aliases:["ls"],description:"List config values",stability:"stable",options:[{name:"json",shorthand:"j",description:"Output in JSON format",type:"boolean",target:"json"}]},iC=sC.object({json:sC.boolean().default(!1)});async function E4(e,t){l.warn('The "phala config" commands are deprecated and will be removed in a future version.');try{let r=b6();if(e.json)return t.success(r),0;t.stdout.write(`Configuration values:
185
+ `),i.logDetailedError(r),1}}var qm=b({path:["config","get"],meta:Gm,schema:Hm,handler:E_});import{z as Bm}from"zod";var Wm={name:"list",aliases:["ls"],description:"List config values",stability:"stable",options:[{name:"json",shorthand:"j",description:"Output in JSON format",type:"boolean",target:"json"}]},Jm=Bm.object({json:Bm.boolean().default(!1)});async function I_(e,t){i.warn('The "phala config" commands are deprecated and will be removed in a future version.');try{let r=sm();if(e.json)return t.success(r),0;t.stdout.write(`Configuration values:
230
186
  `);for(let[n,o]of Object.entries(r))t.stdout.write(`${n}: ${JSON.stringify(o)}
231
- `);return 0}catch(r){return l.logDetailedError(r),t.fail("Failed to list configuration values"),1}}var cC=P({path:["config","list"],meta:aC,schema:iC,handler:E4});import{z as Ag}from"zod";var mC={name:"set",description:"Set a configuration value",stability:"stable",arguments:[{name:"key",description:"Configuration key",required:!0},{name:"value",description:"Configuration value",required:!0}]},uC=Ag.object({key:Ag.string(),value:Ag.string()});async function _4(e,t){try{let r=e.value;if(e.value.startsWith("{")||e.value.startsWith("[")||e.value==="true"||e.value==="false"||!Number.isNaN(Number(e.value)))try{r=JSON.parse(e.value)}catch{}return l.warn('The "phala config" commands are deprecated and will be removed in a future version.'),y6(e.key,r),t.stdout.write(`Configuration value for '${e.key}' set successfully
187
+ `);return 0}catch(r){return i.logDetailedError(r),t.fail("Failed to list configuration values"),1}}var Ym=b({path:["config","list"],meta:Wm,schema:Jm,handler:I_});import{z as ks}from"zod";var Zm={name:"set",description:"Set a configuration value",stability:"stable",arguments:[{name:"key",description:"Configuration key",required:!0},{name:"value",description:"Configuration value",required:!0}]},Xm=ks.object({key:ks.string(),value:ks.string()});async function A_(e,t){try{let r=e.value;if(e.value.startsWith("{")||e.value.startsWith("[")||e.value==="true"||e.value==="false"||!Number.isNaN(Number(e.value)))try{r=JSON.parse(e.value)}catch{}return i.warn('The "phala config" commands are deprecated and will be removed in a future version.'),am(e.key,r),t.stdout.write(`Configuration value for '${e.key}' set successfully
232
188
  `),0}catch(r){return t.stderr.write(`Failed to set configuration value
233
- `),l.logDetailedError(r),1}}var pC=P({path:["config","set"],meta:mC,schema:uC,handler:_4});var Pg={group:eC,commands:[oC,cC,pC]};var lC={path:["cvms"],meta:{name:"cvms",category:"manage",description:"Manage CVMs",stability:"unstable"}};import tf from"chalk";import{z as ef}from"zod";var fC={name:"attestation",description:"Get CVM attestation",stability:"unstable",arguments:[xe],options:[Et,se],examples:[{name:"Show attestation summary",value:"phala cvms attestation"},{name:"Output full attestation JSON",value:"phala cvms attestation --json"}]},dC=ef.object({cvmId:ef.string().optional(),interactive:ef.boolean().default(!1),json:ef.boolean().default(!1)});async function I4(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=await N(),n=await Re(r,t.cvmId);if(!n.success)return t.fail(n.error.message),1;let o=n.data;if(!o)return t.fail("CVM not found"),1;let s=o.app_id,a=l.startSpinner(`Fetching attestation information for CVM app_${s}...`);try{let i=await Xw(s);if(a.stop(!0),!i)return t.fail("No attestation information found"),1;if(e.json)return t.success(i),0;if(l.success("Attestation Summary:"),l.keyValueTable({Status:i.is_online?tf.green("Online"):tf.red("Offline"),"Public Access":i.is_public?tf.green("Enabled"):tf.yellow("Disabled"),Error:i.error||"None",Certificates:`${i.app_certificates?.length||0} found`},{borderStyle:"rounded"}),i.app_certificates?.length&&i.app_certificates.forEach((c,m)=>{l.break(),l.success(`Certificate #${m+1} (${c.position_in_chain===0?"End Entity":"CA"}):`),l.keyValueTable({Subject:`${c.subject.common_name||"Unknown"}${c.subject.organization?` (${c.subject.organization})`:""}`,Issuer:`${c.issuer.common_name||"Unknown"}${c.issuer.organization?` (${c.issuer.organization})`:""}`,"Serial Number":c.serial_number,Validity:`${new Date(c.not_before).toLocaleString()} to ${new Date(c.not_after).toLocaleString()}`,Fingerprint:c.fingerprint,"Signature Algorithm":c.signature_algorithm,"Is CA":c.is_ca?"Yes":"No","Position in Chain":c.position_in_chain},{borderStyle:"rounded"})}),i.tcb_info&&(l.break(),l.success("Trusted Computing Base (TCB) Information:"),l.keyValueTable({Mrtd:i.tcb_info.mrtd,"Rootfs Hash":i.tcb_info.rootfs_hash,Rtmr0:i.tcb_info.rtmr0,Rtmr1:i.tcb_info.rtmr1,Rtmr2:i.tcb_info.rtmr2,Rtmr3:i.tcb_info.rtmr3,"Event Log Entries":`${i.tcb_info.event_log.length} entries`},{borderStyle:"rounded"}),i.tcb_info.event_log?.length)){l.break(),l.success("Event Log (Showing entries to reproduce RTMR3):");let c=i.tcb_info.event_log.filter(m=>m.event).map(m=>({Event:m.event,IMR:m.imr.toString(),"Event Type":m.event_type.toString(),Payload:m.event_payload}));l.table(c,[{key:"Event",header:"Event"},{key:"IMR",header:"IMR"},{key:"Event Type",header:"Type"},{key:"Payload",header:"Payload"}]),i.tcb_info.event_log.length>c.length&&l.info("To see all full attestation data, use --json"),l.break(),l.success("To reproduce RTMR3, use the tool at https://rtmr3-calculator.vercel.app/")}return 0}catch(i){throw a.stop(!1),i}}catch(r){return l.logDetailedError(r),t.fail(`Failed to get attestation information: ${r instanceof Error?r.message:String(r)}`),1}}var gC=P({path:["cvms","attestation"],meta:fC,schema:dC,handler:I4});import SC from"fs";import R4 from"path";import Tg from"fs";import $g from"path";import A4 from"inquirer";function Wt(e,t=process.cwd()){let r=$g.resolve(t,e);if(!Tg.existsSync(r))throw new Error(`File not found at ${r}`);return!0}async function Pn(e,t,r="file",n=process.cwd()){return(await A4.prompt([{type:"input",name:r,message:e,default:t,validate:s=>{let a=$g.resolve(n,s);return Tg.existsSync(a)?!0:`File not found at ${a}`}}]))[r]}function gi(e,t){for(let r of e){let n=$g.join(process.cwd(),r);if(Tg.existsSync(n))return t?l.info(t.replace("{path}",n)):l.info(`File detected: ${n}`),r}}import*as hC from"fs";var Hc=(e,t)=>{let r={};if(e){for(let n of e)if(n.includes("=")){let[o,...s]=n.split("="),a=s.join("=");o&&(r[o]=a)}}if(t){let n=hC.readFileSync(t,"utf8");for(let o of n.split(`
234
- `)){if(!o.trim()||o.trim().startsWith("#"))continue;let s=-1,a=!1,i="";for(let h=0;h<o.length;h++)if((o[h]==='"'||o[h]==="'"||o[h]==="`")&&(h===0||o[h-1]!=="\\"))a&&o[h]===i?(a=!1,i=""):a||(a=!0,i=o[h]);else if(o[h]==="="&&!a){s=h;break}else if(o[h]==="#"&&!a)break;if(s===-1){o.trim().startsWith("#");continue}let c=o.substring(0,s).trim(),m=o.substring(s+1),u=!1,p="",f=-1;for(let h=0;h<m.length;h++)if((m[h]==='"'||m[h]==="'"||m[h]==="`")&&(h===0||m[h-1]!=="\\"))u&&m[h]===p?(u=!1,p=""):u||(u=!0,p=m[h]);else if(m[h]==="#"&&!u&&h>0&&m[h-1]===" "){f=h-1;break}else if(m[h]==="#"&&!u&&h===0){f=h;break}f!==-1&&(m=m.substring(0,f)),m===void 0&&(m="");let d=m.charAt(0),g=m.charAt(m.length-1);d==='"'&&g==='"'||d==="'"&&g==="'"||d==="`"&&g==="`"?(m=m.substring(1,m.length-1),d==='"'&&(m=m.replace(/\\\\n/g,`
235
- `))):m=m.trim(),c&&(r[c]=m)}}return Object.entries(r).map(([n,o])=>({key:n,value:o}))};import{execSync as Tn,spawn as P4}from"child_process";import*as pe from"fs";import*as Rg from"net";import*as cn from"os";import*as hr from"path";var at={version:"0.5.3",baseUrl:"https://github.com/Dstack-TEE/dstack/releases/download/v0.5.3",installDir:hr.join(cn.homedir(),".phala-cloud","simulator"),defaultLogPath:hr.join(cn.homedir(),".phala-cloud","logs","dstack-simulator.log"),platforms:{darwin:{filename:"dstack-simulator-0.5.3-aarch64-apple-darwin.tgz",extractedFolder:"0.5.3",socketPath:hr.join(cn.homedir(),".phala-cloud","simulator","0.5.3","dstack.sock")},linux:{filename:"dstack-simulator-0.5.3-x86_64-linux-musl.tgz",extractedFolder:"0.5.3",socketPath:hr.join(cn.homedir(),".phala-cloud","simulator","0.5.3","dstack.sock")},win32:{filename:"dstack-simulator-0.5.3-x86_64-pc-windows-msvc.tgz",extractedFolder:"dstack-simulator-0.5.3-x86_64-pc-windows-msvc",socketPath:"127.0.0.1:8090"}}};function yC(){try{if(!pe.existsSync(at.installDir))return!1;let e=cn.platform();if(!at.platforms[e])throw new Error(`Unsupported platform: ${e}`);let t=hr.join(at.installDir,at.platforms[e].extractedFolder);if(!pe.existsSync(t))return!1;let n=hr.join(t,e==="win32"?"dstack-simulator.exe":"dstack-simulator");return pe.existsSync(n)}catch(e){return l.error("Error checking if simulator is installed:",e),!1}}function Vc(){let e=cn.platform();if(!at.platforms[e])throw new Error(`Unsupported platform: ${e}. Only darwin, linux, and win32 are supported.`);return e}async function bC(e){let t=r=>{l.info(r),e&&e(r)};try{let r=Vc(),n=at.platforms[r];if(r==="win32"){try{Tn("tar --version",{stdio:"ignore"})}catch{throw new Error("Windows 10 build 17063 or later is required (includes tar command). Please update your Windows version.")}throw new Error("Windows platform is currently not supported. Support will be added in a future release.")}pe.existsSync(at.installDir)||(l.info(`Creating installation directory at ${at.installDir}`),pe.mkdirSync(at.installDir,{recursive:!0})),process.chdir(at.installDir);let o=`${at.baseUrl}/${n.filename}`;l.info(`Downloading simulator from ${o}`),Tn(`wget ${o}`,{stdio:"inherit"});let s=hr.join(at.installDir,n.extractedFolder);pe.existsSync(s)||pe.mkdirSync(s,{recursive:!0}),l.info(`Extracting ${n.filename} to ${s}`);let a=`tar -xvf "${n.filename}" -C "${s}" --strip-components=1`;l.debug(`Running: ${a}`);try{Tn(a,{stdio:"inherit"}),pe.unlinkSync(n.filename)}catch(i){throw l.error(`Failed to extract ${n.filename}:`,i),new Error("Failed to extract simulator archive. Make sure you have sufficient permissions and disk space.")}l.success("Simulator installation completed successfully")}catch(r){throw l.error("Error installing simulator:",r),new Error(`Failed to install simulator: ${r}`)}}var Mg=()=>hr.join(cn.tmpdir(),"dstack-simulator.pid");function T4(e){return Buffer.byteLength(e,"utf8")>104}function rf(){try{let e=Mg();if(pe.existsSync(e)){let t=Number.parseInt(pe.readFileSync(e,"utf-8").trim(),10);try{return process.kill(t,0),t}catch{pe.unlinkSync(e)}}return null}catch(e){return l.warn("Error checking simulator PID:",e),null}}function $4(e,t){try{let r=Mg();t&&l.info(`Saving simulator PID ${e} to: ${r}`),pe.writeFileSync(r,e.toString(),"utf-8")}catch(r){l.warn("Failed to save simulator PID:",r)}}async function xC(e={}){try{let t=Vc(),r=at.platforms[t],n=hr.join(at.installDir,r.extractedFolder),o=rf();if(o)throw new Error(`Simulator is already running with PID: ${o}`);if(t!=="win32"&&T4(r.socketPath))throw new Error(`Socket path is too long (${r.socketPath.length} chars, max 104): ${r.socketPath}`);if(t!=="win32"&&pe.existsSync(r.socketPath)){l.warn(`Removing existing socket file: ${r.socketPath}`);try{pe.unlinkSync(r.socketPath)}catch(m){l.warn(`Failed to remove existing socket file: ${m}`)}}process.chdir(n);let s=t==="win32"?"dstack-simulator.exe":"./dstack-simulator";e.verbose&&t!=="win32"&&l.info(`Using socket path: ${r.socketPath}`);let a={background:e.background??!0,logToFile:e.logToFile??!0,logFilePath:e.logFilePath??at.defaultLogPath};if(a.logToFile){let m=hr.dirname(a.logFilePath);pe.existsSync(m)||pe.mkdirSync(m,{recursive:!0}),e.verbose&&l.info(`Simulator logs will be written to: ${a.logFilePath}`)}e.verbose&&l.info(`Starting simulator with: ${s}`);let i=a.logToFile?["ignore",pe.openSync(a.logFilePath,"a"),pe.openSync(a.logFilePath,"a")]:"inherit",c=P4(s,[],{stdio:i,shell:t==="win32",detached:a.background});if(a.logToFile&&Array.isArray(i)&&(typeof i[1]=="number"&&pe.closeSync(i[1]),typeof i[2]=="number"&&pe.closeSync(i[2])),a.logToFile){let u=`
189
+ `),i.logDetailedError(r),1}}var Qm=b({path:["config","set"],meta:Zm,schema:Xm,handler:A_});var Es={group:zm,commands:[qm,Ym,Qm]};var ep={path:["cvms"],meta:{name:"cvms",category:"manage",description:"Manage CVMs",stability:"unstable"}};import xo from"chalk";import{z as Ao}from"zod";var tp={name:"attestation",description:"Get CVM attestation",stability:"unstable",arguments:[B],options:[ie,N],examples:[{name:"Show attestation summary",value:"phala cvms attestation"},{name:"Output full attestation JSON",value:"phala cvms attestation --json"}]},rp=Ao.object({cvmId:Ao.string().optional(),interactive:Ao.boolean().default(!1),json:Ao.boolean().default(!1)});async function x_(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=await k(),n=await Q(r,t.cvmId);if(!n.success)return t.fail(n.error.message),1;let o=n.data;if(!o)return t.fail("CVM not found"),1;let a=o.app_id,s=i.startSpinner(`Fetching attestation information for CVM app_${a}...`);try{let c=await jl(a);if(s.stop(!0),!c)return t.fail("No attestation information found"),1;if(e.json)return t.success(c),0;if(i.success("Attestation Summary:"),i.keyValueTable({Status:c.is_online?xo.green("Online"):xo.red("Offline"),"Public Access":c.is_public?xo.green("Enabled"):xo.yellow("Disabled"),Error:c.error||"None",Certificates:`${c.app_certificates?.length||0} found`},{borderStyle:"rounded"}),c.app_certificates?.length&&c.app_certificates.forEach((l,m)=>{i.break(),i.success(`Certificate #${m+1} (${l.position_in_chain===0?"End Entity":"CA"}):`),i.keyValueTable({Subject:`${l.subject.common_name||"Unknown"}${l.subject.organization?` (${l.subject.organization})`:""}`,Issuer:`${l.issuer.common_name||"Unknown"}${l.issuer.organization?` (${l.issuer.organization})`:""}`,"Serial Number":l.serial_number,Validity:`${new Date(l.not_before).toLocaleString()} to ${new Date(l.not_after).toLocaleString()}`,Fingerprint:l.fingerprint,"Signature Algorithm":l.signature_algorithm,"Is CA":l.is_ca?"Yes":"No","Position in Chain":l.position_in_chain},{borderStyle:"rounded"})}),c.tcb_info&&(i.break(),i.success("Trusted Computing Base (TCB) Information:"),i.keyValueTable({Mrtd:c.tcb_info.mrtd,"Rootfs Hash":c.tcb_info.rootfs_hash,Rtmr0:c.tcb_info.rtmr0,Rtmr1:c.tcb_info.rtmr1,Rtmr2:c.tcb_info.rtmr2,Rtmr3:c.tcb_info.rtmr3,"Event Log Entries":`${c.tcb_info.event_log.length} entries`},{borderStyle:"rounded"}),c.tcb_info.event_log?.length)){i.break(),i.success("Event Log (Showing entries to reproduce RTMR3):");let l=c.tcb_info.event_log.filter(m=>m.event).map(m=>({Event:m.event,IMR:m.imr.toString(),"Event Type":m.event_type.toString(),Payload:m.event_payload}));i.table(l,[{key:"Event",header:"Event"},{key:"IMR",header:"IMR"},{key:"Event Type",header:"Type"},{key:"Payload",header:"Payload"}]),c.tcb_info.event_log.length>l.length&&i.info("To see all full attestation data, use --json"),i.break(),i.success("To reproduce RTMR3, use the tool at https://rtmr3-calculator.vercel.app/")}return 0}catch(c){throw s.stop(!1),c}}catch(r){return i.logDetailedError(r),t.fail(`Failed to get attestation information: ${r instanceof Error?r.message:String(r)}`),1}}var np=b({path:["cvms","attestation"],meta:tp,schema:rp,handler:x_});import pp from"fs";import M_ from"path";import Is from"fs";import As from"path";import P_ from"inquirer";function We(e,t=process.cwd()){let r=As.resolve(t,e);if(!Is.existsSync(r))throw new Error(`File not found at ${r}`);return!0}async function kt(e,t,r="file",n=process.cwd()){return(await P_.prompt([{type:"input",name:r,message:e,default:t,validate:a=>{let s=As.resolve(n,a);return Is.existsSync(s)?!0:`File not found at ${s}`}}]))[r]}function Nr(e,t){for(let r of e){let n=As.join(process.cwd(),r);if(Is.existsSync(n))return t?i.info(t.replace("{path}",n)):i.info(`File detected: ${n}`),r}}import*as op from"fs";var wn=(e,t)=>{let r={};if(e){for(let n of e)if(n.includes("=")){let[o,...a]=n.split("="),s=a.join("=");o&&(r[o]=s)}}if(t){let n=op.readFileSync(t,"utf8");for(let o of n.split(`
190
+ `)){if(!o.trim()||o.trim().startsWith("#"))continue;let a=-1,s=!1,c="";for(let h=0;h<o.length;h++)if((o[h]==='"'||o[h]==="'"||o[h]==="`")&&(h===0||o[h-1]!=="\\"))s&&o[h]===c?(s=!1,c=""):s||(s=!0,c=o[h]);else if(o[h]==="="&&!s){a=h;break}else if(o[h]==="#"&&!s)break;if(a===-1){o.trim().startsWith("#");continue}let l=o.substring(0,a).trim(),m=o.substring(a+1),p=!1,u="",d=-1;for(let h=0;h<m.length;h++)if((m[h]==='"'||m[h]==="'"||m[h]==="`")&&(h===0||m[h-1]!=="\\"))p&&m[h]===u?(p=!1,u=""):p||(p=!0,u=m[h]);else if(m[h]==="#"&&!p&&h>0&&m[h-1]===" "){d=h-1;break}else if(m[h]==="#"&&!p&&h===0){d=h;break}d!==-1&&(m=m.substring(0,d)),m===void 0&&(m="");let f=m.charAt(0),g=m.charAt(m.length-1);f==='"'&&g==='"'||f==="'"&&g==="'"||f==="`"&&g==="`"?(m=m.substring(1,m.length-1),f==='"'&&(m=m.replace(/\\\\n/g,`
191
+ `))):m=m.trim(),l&&(r[l]=m)}}return Object.entries(r).map(([n,o])=>({key:n,value:o}))};import{execSync as Et,spawn as $_}from"child_process";import*as Y from"fs";import*as xs from"net";import*as yt from"os";import*as et from"path";var Ie={version:"0.5.3",baseUrl:"https://github.com/Dstack-TEE/dstack/releases/download/v0.5.3",installDir:et.join(yt.homedir(),".phala-cloud","simulator"),defaultLogPath:et.join(yt.homedir(),".phala-cloud","logs","dstack-simulator.log"),platforms:{darwin:{filename:"dstack-simulator-0.5.3-aarch64-apple-darwin.tgz",extractedFolder:"0.5.3",socketPath:et.join(yt.homedir(),".phala-cloud","simulator","0.5.3","dstack.sock")},linux:{filename:"dstack-simulator-0.5.3-x86_64-linux-musl.tgz",extractedFolder:"0.5.3",socketPath:et.join(yt.homedir(),".phala-cloud","simulator","0.5.3","dstack.sock")},win32:{filename:"dstack-simulator-0.5.3-x86_64-pc-windows-msvc.tgz",extractedFolder:"dstack-simulator-0.5.3-x86_64-pc-windows-msvc",socketPath:"127.0.0.1:8090"}}};function ap(){try{if(!Y.existsSync(Ie.installDir))return!1;let e=yt.platform();if(!Ie.platforms[e])throw new Error(`Unsupported platform: ${e}`);let t=et.join(Ie.installDir,Ie.platforms[e].extractedFolder);if(!Y.existsSync(t))return!1;let n=et.join(t,e==="win32"?"dstack-simulator.exe":"dstack-simulator");return Y.existsSync(n)}catch(e){return i.error("Error checking if simulator is installed:",e),!1}}function _n(){let e=yt.platform();if(!Ie.platforms[e])throw new Error(`Unsupported platform: ${e}. Only darwin, linux, and win32 are supported.`);return e}async function sp(e){let t=r=>{i.info(r),e&&e(r)};try{let r=_n(),n=Ie.platforms[r];if(r==="win32"){try{Et("tar --version",{stdio:"ignore"})}catch{throw new Error("Windows 10 build 17063 or later is required (includes tar command). Please update your Windows version.")}throw new Error("Windows platform is currently not supported. Support will be added in a future release.")}Y.existsSync(Ie.installDir)||(i.info(`Creating installation directory at ${Ie.installDir}`),Y.mkdirSync(Ie.installDir,{recursive:!0})),process.chdir(Ie.installDir);let o=`${Ie.baseUrl}/${n.filename}`;i.info(`Downloading simulator from ${o}`),Et(`wget ${o}`,{stdio:"inherit"});let a=et.join(Ie.installDir,n.extractedFolder);Y.existsSync(a)||Y.mkdirSync(a,{recursive:!0}),i.info(`Extracting ${n.filename} to ${a}`);let s=`tar -xvf "${n.filename}" -C "${a}" --strip-components=1`;i.debug(`Running: ${s}`);try{Et(s,{stdio:"inherit"}),Y.unlinkSync(n.filename)}catch(c){throw i.error(`Failed to extract ${n.filename}:`,c),new Error("Failed to extract simulator archive. Make sure you have sufficient permissions and disk space.")}i.success("Simulator installation completed successfully")}catch(r){throw i.error("Error installing simulator:",r),new Error(`Failed to install simulator: ${r}`)}}var Ps=()=>et.join(yt.tmpdir(),"dstack-simulator.pid");function D_(e){return Buffer.byteLength(e,"utf8")>104}function Po(){try{let e=Ps();if(Y.existsSync(e)){let t=Number.parseInt(Y.readFileSync(e,"utf-8").trim(),10);try{return process.kill(t,0),t}catch{Y.unlinkSync(e)}}return null}catch(e){return i.warn("Error checking simulator PID:",e),null}}function R_(e,t){try{let r=Ps();t&&i.info(`Saving simulator PID ${e} to: ${r}`),Y.writeFileSync(r,e.toString(),"utf-8")}catch(r){i.warn("Failed to save simulator PID:",r)}}async function ip(e={}){try{let t=_n(),r=Ie.platforms[t],n=et.join(Ie.installDir,r.extractedFolder),o=Po();if(o)throw new Error(`Simulator is already running with PID: ${o}`);if(t!=="win32"&&D_(r.socketPath))throw new Error(`Socket path is too long (${r.socketPath.length} chars, max 104): ${r.socketPath}`);if(t!=="win32"&&Y.existsSync(r.socketPath)){i.warn(`Removing existing socket file: ${r.socketPath}`);try{Y.unlinkSync(r.socketPath)}catch(m){i.warn(`Failed to remove existing socket file: ${m}`)}}process.chdir(n);let a=t==="win32"?"dstack-simulator.exe":"./dstack-simulator";e.verbose&&t!=="win32"&&i.info(`Using socket path: ${r.socketPath}`);let s={background:e.background??!0,logToFile:e.logToFile??!0,logFilePath:e.logFilePath??Ie.defaultLogPath};if(s.logToFile){let m=et.dirname(s.logFilePath);Y.existsSync(m)||Y.mkdirSync(m,{recursive:!0}),e.verbose&&i.info(`Simulator logs will be written to: ${s.logFilePath}`)}e.verbose&&i.info(`Starting simulator with: ${a}`);let c=s.logToFile?["ignore",Y.openSync(s.logFilePath,"a"),Y.openSync(s.logFilePath,"a")]:"inherit",l=$_(a,[],{stdio:c,shell:t==="win32",detached:s.background});if(s.logToFile&&Array.isArray(c)&&(typeof c[1]=="number"&&Y.closeSync(c[1]),typeof c[2]=="number"&&Y.closeSync(c[2])),s.logToFile){let p=`
236
192
  === Simulator started at ${new Date().toISOString()} ===
237
- Command: ${s}
238
-
239
- `;pe.appendFileSync(a.logFilePath,u)}return c.pid&&$4(c.pid,e.verbose),a.background&&(c.unref(),e.verbose&&l.success("Simulator is running in the background")),await Ng(),c}catch(t){throw l.error("Error running simulator:",t),new Error(`Failed to run simulator: ${t}`)}}async function Gc(){try{let e=Vc(),t=at.platforms[e];if(e==="darwin"||e==="linux"){let r=t.socketPath;return pe.existsSync(r)?new Promise(n=>{let o=Rg.createConnection({path:r}).on("connect",()=>{o.end(),n(!0)}).on("error",()=>{n(!1)});setTimeout(()=>{o.end(),n(!1)},1e3)}):!1}if(e==="win32"){let r="127.0.0.1";return new Promise(o=>{let s=Rg.createConnection({host:r,port:8090}).on("connect",()=>{s.end(),o(!0)}).on("error",()=>{o(!1)});setTimeout(()=>{s.end(),o(!1)},1e3)})}return!1}catch(e){return l.error("Error checking if simulator is running:",e),!1}}async function vC(){try{let e=rf();if(!await Gc()&&!e)return l.info("Simulator is not running"),!0;let r=Vc(),n=!1;if(r==="win32")try{e?(l.info(`Stopping simulator process (PID: ${e})...`),process.kill(e,"SIGTERM")):Tn("taskkill /F /IM dstack-simulator.exe",{stdio:"ignore"}),n=!0}catch(s){if(s.code!=="ESRCH")return l.error("Failed to stop simulator:",s),!1;n=!0}else try{e?(l.info(`Stopping simulator process (PID: ${e})...`),process.kill(e,"SIGTERM")):Tn("pkill -f dstack-simulator",{stdio:"ignore"}),n=!0}catch(s){if(s.code!=="ESRCH")return l.error("Failed to stop simulator:",s),!1;n=!0}let o=Mg();if(pe.existsSync(o))try{pe.unlinkSync(o)}catch(s){l.warn("Failed to remove PID file:",s)}return await ps(),n&&l.success("Simulator stopped successfully"),n}catch(e){return l.error("Error stopping simulator:",e),!1}}function Fg(){let e=Vc(),t=at.platforms[e];return e==="win32"?"http://127.0.0.1:8090":`${t.socketPath||"/tmp/dstack.sock"}`}async function Ng(e){try{let t=Fg(),r=e||t;await Tn(`export DSTACK_SIMULATOR_ENDPOINT=${r}`);let n=r.replace(/dstack\.sock$/,"tappd.sock");return await Tn(`export TAPPD_SIMULATOR_ENDPOINT=${n}`),l.success("Setting environment for current process..."),l.success(` DSTACK_SIMULATOR_ENDPOINT=${r}`),l.success(` TAPPD_SIMULATOR_ENDPOINT=${n}`),r}catch(t){throw l.error("Error setting simulator endpoint environment variable:",t),new Error(`Failed to set simulator endpoint: ${t}`)}}async function ps(){try{return await Tn("unset DSTACK_SIMULATOR_ENDPOINT"),await Tn("unset TAPPD_SIMULATOR_ENDPOINT"),l.debug("Deleted simulator endpoint environment variables from current process"),!0}catch(e){return l.warn("Error while unsetting simulator endpoint environment variables:",e),!1}}import kC from"inquirer";import{z as Fr}from"zod";var wC={name:"create",description:'Create a new CVM (use "phala deploy" instead)',stability:"deprecated",options:[{name:"name",shorthand:"n",description:"Name of the CVM",type:"string",target:"name"},{name:"compose",shorthand:"c",description:"Path to Docker Compose file",type:"string",target:"compose"},{name:"vcpu",description:`Virtual CPUs (default: ${Oc})`,type:"string",target:"vcpu"},{name:"memory",description:`Memory in MB (default: ${jc})`,type:"string",target:"memory"},{name:"disk-size",description:`Disk size in GB (default: ${us})`,type:"string",target:"diskSize"},{name:"teepod-id",description:"TEEPod ID (auto-selected if omitted)",type:"string",target:"teepodId"},{name:"image",description:"dstack image version (uses default if omitted)",type:"string",target:"image"},{name:"env-file",shorthand:"e",description:"Path to environment file",type:"string",target:"envFile"},{name:"skip-env",description:"Skip env var prompt",type:"boolean",target:"skipEnv"},{name:"debug",description:"Enable debug output",type:"boolean",target:"debug"}],examples:[{name:"Create a CVM interactively",value:"phala cvms create"},{name:"Create using predefined values",value:"phala cvms create --name demo --compose ./docker-compose.yml"}]},CC=Fr.object({name:Fr.string().optional(),compose:Fr.string().optional(),vcpu:Fr.string().optional(),memory:Fr.string().optional(),diskSize:Fr.string().optional(),teepodId:Fr.string().optional(),image:Fr.string().optional(),envFile:Fr.string().optional(),skipEnv:Fr.boolean().default(!1),debug:Fr.boolean().default(!1)});async function M4(e){if(e)return e;let{value:t}=await kC.prompt([{type:"input",name:"value",message:"Enter a name for the CVM:",validate:r=>{let n=r.trim();return n?n.length>20?"CVM name must be less than 20 characters":n.length<3?"CVM name must be at least 3 characters":/^[a-zA-Z0-9_-]+$/.test(n)?!0:"CVM name must contain only letters, numbers, underscores, and hyphens":"CVM name is required"}}]);return t.trim()}async function F4(e){if(e)return e;let r=gi(["docker-compose.yml","docker-compose.yaml"],"Detected docker compose file: {path}");return await Pn("Enter the path to your Docker Compose file:",r,"file")}async function N4(e){if(e.envFile)return Hc([],e.envFile);if(e.skipEnv)return l.info("Skipping environment variable prompt"),[];let{shouldSkip:t}=await kC.prompt([{type:"confirm",name:"shouldSkip",message:"Do you want to skip environment variable prompt?",default:!0}]);if(t)return l.info("Skipping environment variable prompt"),[];let r=await Pn("Enter the path to your environment file:",".env","file");return Hc([],r)}function Lg(e,t){if(!e)return t;let r=Number(e);return Number.isFinite(r)?r:t}function L4(e,t){return!Number.isFinite(t)||t<=0?`Invalid ${e}: ${t}`:null}async function B4(e,t){if(!t.nodes.length)return;if(!e)return t.nodes[0];let r=Number(e);return t.nodes.find(n=>n.teepod_id===r)}function D4(e,t){let r=e.images??[];return t?r.find(n=>n.name===t):r.find(n=>n.name===Sg)}async function U4(e,t){try{l.warn('\u26A0\uFE0F This command is deprecated. Please use "phala deploy" instead.'),l.warn("\u26A0\uFE0F This legacy API will be maintained but may have limited support.\\n");let r=await M4(e.name),n=await F4(e.compose),o=R4.resolve(n);if(!SC.existsSync(o))return l.error(`Docker Compose file not found: ${o}`),1;let s=SC.readFileSync(o,"utf8");await ps(),process.env.DSTACK_DOCKER_USERNAME&&process.env.DSTACK_DOCKER_PASSWORD?l.info("\u{1F510} Using private DockerHub registry credentials..."):process.env.DSTACK_AWS_ACCESS_KEY_ID&&process.env.DSTACK_AWS_SECRET_ACCESS_KEY&&process.env.DSTACK_AWS_REGION&&process.env.DSTACK_AWS_ECR_REGISTRY?l.info(`\u{1F510} Using private AWS ECR registry: ${process.env.DSTACK_AWS_ECR_REGISTRY}`):l.info("\u{1F510} Using public DockerHub registry...");let a=[];try{a=await N4(e)}catch(k){return l.error(`Failed to read environment file: ${k instanceof Error?k.message:String(k)}`),1}let i=Lg(e.vcpu,Oc),c=Lg(e.memory,jc),m=Lg(e.diskSize,us);for(let[k,_]of[["number of vCPUs",i],["memory",c],["disk size",m]]){let I=L4(k,_);if(I)return l.error(I),1}let u=l.startSpinner("Fetching available TEEPods"),p=await n6(!0);u.stop(!0);let f=await B4(e.teepodId,p);if(!f)return l.error("Failed to find suitable TEEPod"),1;let d=D4(f,e.image);if(!d)return l.error(e.image?`Failed to find selected image: ${e.image}`:`Failed to find default image ${Sg}`),1;let g={teepod_id:f.teepod_id,name:r,image:d.name,vcpu:i,memory:c,disk_size:m,compose_manifest:{docker_compose_file:s,docker_config:{url:"",username:"",password:""},features:["kms","tproxy-net"],kms_enabled:!0,manifest_version:2,name:r,public_logs:!0,public_sysinfo:!0,runner:"docker-compose",tproxy_enabled:!0},listed:!1},h=l.startSpinner("Getting public key from CVM"),y=await e6(g);if(h.stop(!0),!y)return l.error("Failed to get public key from CVM"),1;let b=l.startSpinner("Encrypting environment variables"),x=await(0,gr.encryptEnvVars)(a,y.app_env_encrypt_pubkey);b.stop(!0),e.debug&&(l.debug("Public key:",y.app_env_encrypt_pubkey),l.debug("Encrypted environment variables:",x),l.debug("Environment variables:",JSON.stringify(a)));let v=l.startSpinner("Creating CVM"),C=await t6({...g,encrypted_env:x,app_env_encrypt_pubkey:y.app_env_encrypt_pubkey,app_id_salt:y.app_id_salt});return v.stop(!0),C?(l.success("CVM created successfully"),l.break(),l.keyValueTable({"CVM ID":C.id,Name:C.name,Status:C.status,"App ID":`app_${C.app_id}`,"App URL":C.app_url||`${je}/dashboard/cvms/app_${C.app_id}`},{borderStyle:"rounded"}),l.info(""),l.success(`Your CVM is being created. You can check its status with:
240
- phala cvms get app_${C.app_id}`),0):(l.error("Failed to create CVM"),1)}catch(r){return l.error(`Failed to create CVM: ${r instanceof Error?r.message:String(r)}`),1}}var EC=P({path:["cvms","create"],meta:wC,schema:CC,handler:U4});import z4 from"inquirer";import{z as qc}from"zod";var _C={name:"delete",description:"Delete a CVM",stability:"unstable",arguments:[xe],options:[se,{name:"force",shorthand:"f",description:"Skip confirmation prompt",type:"boolean",target:"force"},{name:"yes",shorthand:"y",description:"Alias for --force (skip confirmation prompt)",type:"boolean",target:"yes"}],examples:[{name:"Delete a CVM interactively",value:"phala cvms delete"},{name:"Delete CVM by app_id",value:"phala cvms delete app_123 --force"},{name:"Delete CVM by UUID",value:"phala cvms delete 550e8400-e29b-41d4-a716-446655440000 -f"},{name:"Delete CVM by name",value:"phala cvms delete my-app --yes"}]},IC=qc.object({cvmId:qc.string().optional(),interactive:qc.boolean().default(!1),force:qc.boolean().default(!1),yes:qc.boolean().default(!1)});async function O4(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=await N(),n=await Re(r,t.cvmId);if(!n.success)return t.fail(n.error.message),1;let o=n.data;if(!o)return t.fail("CVM not found"),1;let s=o.name||`app_${o.app_id}`;if(!e.force&&!e.yes){let{confirm:c}=await z4.prompt([{type:"confirm",name:"confirm",message:`Are you sure you want to delete CVM "${s}"? This action cannot be undone.`,default:!1}]);if(!c)return l.info("Deletion cancelled"),0}let a=l.startSpinner(`Deleting CVM ${s}`),i=await tg(r,t.cvmId);return a.stop(!0),i.success?(l.success(`CVM ${s} deleted successfully`),0):(l.error(`Failed to delete CVM ${s}: ${i.error.message}`),1)}catch(r){return l.error("Failed to delete CVM"),l.logDetailedError(r),1}}var AC=P({path:["cvms","delete"],meta:_C,schema:IC,handler:O4});import Bg from"chalk";import{z as nf}from"zod";var PC={name:"get",description:"Get details of a CVM",stability:"unstable",arguments:[xe],options:[Et,se],examples:[{name:"Get CVM interactively",value:"phala cvms get"},{name:"By app_id",value:"phala cvms get app_abc123"},{name:"By UUID",value:"phala cvms get 550e8400-e29b-41d4-a716-446655440000"},{name:"By name",value:"phala cvms get my-app"}]},TC=nf.object({cvmId:nf.string().optional(),json:nf.boolean().default(!1),interactive:nf.boolean().default(!1)});async function j4(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=l.startSpinner("Fetching CVM details"),n=await N(),o=await Re(n,t.cvmId);if(r.stop(!0),!o.success)return t.fail(o.error.message),1;let s=o.data;if(!s)return t.fail("CVM not found"),1;if(e.json)return t.success(s),0;l.break();let a=s.status==="running"?Bg.green(s.status):s.status==="stopped"?Bg.red(s.status):Bg.yellow(s.status);return l.keyValueTable({Name:s.name,"App ID":`app_${s.app_id}`,Status:a,vCPU:s.resource.vcpu,Memory:s.resource.memory_in_gb!=null?`${s.resource.memory_in_gb} GB`:"N/A","Disk Size":s.resource.disk_in_gb!=null?`${s.resource.disk_in_gb} GB`:"N/A","Dstack Image":s.os?.name,"App URL":`${je}/dashboard/cvms/app_${s.app_id}`}),0}catch(r){return l.logDetailedError(r),t.fail(`Failed to get CVM details: ${r instanceof Error?r.message:String(r)}`),1}}var $C=P({path:["cvms","get"],meta:PC,schema:TC,handler:j4});import sf from"chalk";function H4(e,t){if(t<=0)return[Array.from(e)];let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}async function of(e,t){let r=await Iw(e,{page:t.page,page_size:t.pageSize,search:t.search,status:t.status,listed:t.listed,base_image:t.baseImage,instance_type:t.instanceType,kms_type:t.kmsType,node:t.node,region:t.region});if(!r.success)return{success:!1,error:{message:r.error.message}};let n=r.data,s=(n.dstack_apps??[]).filter(m=>m.current_cvm&&typeof m.current_cvm=="object"&&"vm_uuid"in m.current_cvm&&!!m.current_cvm.vm_uuid),a=s.map(m=>m.current_cvm?.vm_uuid).filter(m=>typeof m=="string"&&m.length>0),i={};for(let m of H4(a,100)){let u=await Ew(e,{vmUuids:m});if(!u.success)return{success:!1,error:{message:u.error.message}};for(let[p,f]of Object.entries(u.data))i[p]={status:f.status,uptime:f.uptime,in_progress:f.in_progress}}let c=[];for(let m of s){let u=m.current_cvm;if(!u?.vm_uuid)continue;let p=i[u.vm_uuid],f=p?p.status:typeof u.status=="string"?u.status:"unknown";c.push({appId:m.app_id,cvmName:u.name,status:f,uptime:p?.uptime})}return{success:!0,data:{page:n.page,pageSize:n.page_size,total:n.total,totalPages:n.total_pages,items:c}}}function Jt(e,t){let r={};for(let o of e){r[o]=o.length;for(let s of t)r[o]=Math.max(r[o],(s[o]??"").length)}let n=o=>e.map(s=>(o[s]??"").padEnd(r[s])).join(" ");console.log(n(Object.fromEntries(e.map(o=>[o,o]))));for(let o of t)console.log(n(o))}import{z as Zt}from"zod";var RC={name:"list",aliases:["ls"],description:"List CVMs",stability:"unstable",options:[{name:"page",description:"Page number (1-based)",type:"number",target:"page",group:"basic"},{name:"page-size",description:"Number of items per page",type:"number",target:"pageSize",group:"basic"},{name:"search",description:"Search by name, app_id, vm_uuid, or instance_id",type:"string",target:"search",group:"basic"},{name:"status",description:"Filter by CVM status (can be specified multiple times)",type:"string[]",target:"status",group:"basic"},{name:"listed",description:"Filter by listed status",type:"boolean",target:"listed",negatedName:"no-listed",group:"basic"},{name:"base-image",description:"Filter by base image name",type:"string",target:"baseImage",group:"basic"},{name:"instance-type",description:"Filter by instance type",type:"string",target:"instanceType",group:"basic"},{name:"kms-type",description:"Filter by KMS type",type:"string",target:"kmsType",group:"basic"},{name:"node",description:"Filter by node name",type:"string",target:"node",group:"basic"},{name:"region",description:"Filter by region identifier",type:"string",target:"region",group:"basic"},Rr],examples:[{name:"List CVMs",value:"phala cvms ls"},{name:"Second page",value:"phala cvms ls --page 2"},{name:"Search by name",value:"phala cvms ls --search my-cvm"},{name:"Filter by status",value:"phala cvms ls --status running"},{name:"Output as JSON",value:"phala cvms ls --json"}]},MC=Zt.object({page:Zt.coerce.number().int().min(1).default(1),pageSize:Zt.coerce.number().int().min(1).max(100).default(50),search:Zt.string().optional(),status:Zt.array(Zt.string()).optional(),listed:Zt.boolean().optional(),baseImage:Zt.string().optional(),instanceType:Zt.string().optional(),kmsType:Zt.string().optional(),node:Zt.string().optional(),region:Zt.string().optional(),json:Zt.boolean().default(!1)});function V4(e){return e.toLowerCase().endsWith("ing")?sf.yellow(e):e==="running"?sf.green(e):e==="stopped"?sf.red(e):sf.yellow(e)}async function G4(e,t){try{let r=await N(),n=await of(r,{page:e.page,pageSize:e.pageSize,search:e.search,status:e.status,listed:e.listed,baseImage:e.baseImage,instanceType:e.instanceType,kmsType:e.kmsType,node:e.node,region:e.region});if(n.success===!1)return t.fail(n.error.message),1;let o=n.data;if(e.json)return t.success(o),0;let s=["APP_ID","CVM","STATUS","UPTIME"],a=o.items.map(i=>({APP_ID:i.appId,CVM:i.cvmName,STATUS:V4(i.status),UPTIME:i.uptime??"-"}));return a.length===0?(l.info("No CVMs found"),0):(Jt(s,a),l.info(`Page ${o.page}/${o.totalPages} (total ${o.total})`),0)}catch(r){return l.logDetailedError(r),t.fail(`Failed to list CVMs: ${r instanceof Error?r.message:String(r)}`),1}}var FC=P({path:["cvms","list"],meta:RC,schema:MC,handler:G4});import{z as q4}from"zod";var NC={name:"list-nodes",description:"List worker nodes",stability:"unstable"},LC=q4.object({});async function K4(e,t){try{let r=await N(),n=await j0(r);if(!n.success)throw new Error(n.error.message);let{nodes:o,kms_list:s}=n.data;if(!o||o.length===0)return l.info("No available nodes found."),0;l.info("Available Nodes:");for(let a of o)if(l.info("----------------------------------------"),l.info(` ID: ${a.teepod_id}`),l.info(` Name: ${a.name}`),l.info(` Region: ${a.region_identifier}`),l.info(` FMSPC: ${a.fmspc||"N/A"}`),l.info(` Device ID: ${a.device_id||"N/A"}`),l.info(` Support Onchain KMS: ${a.support_onchain_kms}`),l.info(" Images:"),a.images&&a.images.length>0)for(let i of a.images)l.info(` - ${i.name}`),l.info(` Hash: ${i.os_image_hash||"N/A"}`);else l.info(" N/A");if(s&&s.length>0){l.info(`
241
- Available KMS Instances:`);for(let a of s)l.info("----------------------------------------"),l.info(` ID: ${a.id}`),l.info(` URL: ${a.url}`),l.info(` Version: ${a.version}`),l.info(` Chain ID: ${a.chain_id}`),l.info(` Contract Address: ${a.kms_contract_address}`),l.info(` Gateway App ID: ${a.gateway_app_id}`)}return 0}catch(r){return l.error("Failed to list available nodes"),l.logDetailedError(r),1}}var BC=P({path:["cvms","list-nodes"],meta:NC,schema:LC,handler:K4});async function Kc(e){try{let t=await N(),r=await Re(t,{id:e});if(r.success&&r.data.public_logs===!1)return l.warn("Logs are disabled for this CVM (public_logs=false)."),l.warn("To enable logs, run:"),l.warn(` phala deploy --cvm-id ${e} --public-logs`),!0}catch(t){l.debug?.(`Failed to check CVM info: ${t}`)}return!1}function af(e,t){return async function(n,o){if(!o.cvmId)return o.fail("No CVM ID provided. Use --interactive to select interactively."),1;let{cvmId:s}=X.parse(o.cvmId),a=t(n),i=e.logType==="serial"?"serial":"container";try{if(n.follow){if(n.json)return o.fail("Cannot use --json with --follow"),1;l.info(`Streaming ${i} logs (press Ctrl+C to stop)...`),l.break();let m=new AbortController,u=!1,p=()=>{u=!0,m.abort()};process.on("SIGINT",p),process.on("SIGTERM",p);try{await e.streamLogs(s,f=>process.stdout.write(f),a,m.signal)}catch(f){if(f.name!=="AbortError")throw f}finally{process.removeListener("SIGINT",p),process.removeListener("SIGTERM",p)}return u&&(l.break(),l.info("Stopped streaming logs")),0}let c=await e.fetchLogs(s,a);return n.json?(o.success({logs:c,cvm_id:s}),0):(c.trim()?console.log(c):await Kc(s)||l.info("No logs available"),0)}catch(c){return o.fail(`Failed to fetch ${i} logs: ${c instanceof Error?c.message:String(c)}`),await Kc(s),1}}}import{z as _o}from"zod";var DC={name:"logs",description:"Fetch container logs from a CVM",stability:"deprecated",arguments:[xe],options:[{name:"tail",shorthand:"n",description:"Lines from end",type:"number",target:"tail"},{name:"follow",shorthand:"f",description:"Stream logs in real-time",type:"boolean",target:"follow"},{name:"timestamps",shorthand:"t",description:"Show timestamps",type:"boolean",target:"timestamps"},{name:"container",shorthand:"c",description:"Container name or ID (defaults to first)",type:"string",target:"container"},Et,se],examples:[{name:"Show container logs from a CVM",value:"phala cvms logs app_abc123"},{name:"Show last 100 lines of logs",value:"phala cvms logs app_abc123 --tail 100"},{name:"Follow logs in real-time",value:"phala cvms logs app_abc123 --follow"},{name:"Show logs from a specific container",value:"phala cvms logs app_abc123 --container my-service"},{name:"Show logs with timestamps",value:"phala cvms logs app_abc123 --timestamps"}]},UC=_o.object({cvmId:_o.string().optional(),tail:_o.number().optional(),follow:_o.boolean().default(!1),timestamps:_o.boolean().default(!1),container:_o.string().optional(),json:_o.boolean().default(!1),interactive:_o.boolean().default(!1)});var W4=af({logType:"container",fetchLogs:i6,streamLogs:p6},e=>({tail:e.tail,timestamps:e.timestamps,container:e.container})),zC=P({path:["cvms","logs"],meta:DC,schema:UC,handler:W4});import HC from"fs";import J4 from"path";import{z as Wc}from"zod";var OC={name:"replicate",description:"Create a replica of an existing CVM",stability:"unstable",arguments:[xe],options:[{name:"teepod-id",description:"TEEPod ID for replica",type:"string",target:"teepodId"},{name:"env-file",shorthand:"e",description:"Path to environment file",type:"string",target:"envFile"},se],examples:[{name:"Replicate a CVM",value:"phala cvms replicate 1234 --teepod-id 5"}]},jC=Wc.object({cvmId:Wc.string().optional(),teepodId:Wc.string().optional(),envFile:Wc.string().optional(),interactive:Wc.boolean().default(!1)});function Z4(e){return HC.readFileSync(e,"utf-8").split(`
242
- `).filter(r=>r.trim()!==""&&!r.trim().startsWith("#")).map(r=>{let[n,...o]=r.split("=");return{key:n.trim(),value:o.join("=").trim()}})}async function Y4(e,t){try{if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;let{cvmId:r}=X.parse(t.cvmId),n;if(e.envFile){let a=J4.resolve(process.cwd(),e.envFile);if(!HC.existsSync(a))throw new Error(`Environment file not found: ${a}`);let i=Z4(a),c=await Zw(r);l.info("Encrypting environment variables..."),n=await(0,gr.encryptEnvVars)(i,c.env_pubkey)}let o={};e.teepodId&&(o.teepod_id=Number.parseInt(e.teepodId,10)),n&&(o.encrypted_env=n);let s=await Qw(r,o);return l.success(`Successfully created replica of CVM UUID: ${r} with App ID: ${s.app_id}`),l.keyValueTable({"CVM UUID":s.vm_uuid.replace(/-/g,""),"App ID":s.app_id,Name:s.name,Status:s.status,TEEPod:`${s.teepod.name} (ID: ${s.teepod_id})`,vCPUs:s.vcpu,Memory:`${s.memory} MB`,"Disk Size":`${s.disk_size} GB`,"App URL":s.app_url||`${process.env.CLOUD_URL||"https://cloud.phala.com"}/dashboard/cvms/${s.vm_uuid.replace(/-/g,"")}`},{borderStyle:"rounded"}),l.success(`Your CVM replica is being created. You can check its status with:
243
- phala cvms get ${s.app_id}`),0}catch(r){return l.error("Failed to create CVM replica"),l.logDetailedError(r),1}}var VC=P({path:["cvms","replicate"],meta:OC,schema:jC,handler:Y4});import Io from"chalk";import zg from"inquirer";async function $n(e,t={}){let{maxRetries:r=100,retryDelayMs:n=3e3,spinner:o,logRetries:s=!0}=t,a;for(let c=0;c<=r;c++)try{return await e()}catch(m){a=m;let u=m;if((u.message?.includes("409")||u.status===409||u.message?.includes("Conflict"))&&c<r)o&&o.stop(!0),s&&l.warn(`CVM is busy, retrying in ${n}ms... (attempt ${c+1}/${r})`),await new Promise(f=>setTimeout(f,n));else throw m}let i=a;throw new Error(`Failed after ${r} retries due to conflicts: ${i?.message||String(a)}`)}import{z as Rn}from"zod";var GC={name:"resize",description:"Resize resources for a CVM",stability:"unstable",arguments:[xe],options:[se,{name:"vcpu",shorthand:"v",description:"Virtual CPUs",type:"string",target:"vcpu"},{name:"memory",shorthand:"m",description:"Memory in MB",type:"string",target:"memory"},{name:"disk-size",shorthand:"d",description:"Disk size in GB",type:"string",target:"diskSize"},{name:"allow-restart",shorthand:"r",description:"Allow CVM restart",type:"string",target:"allowRestart"},{name:"yes",shorthand:"y",description:"Skip confirmation",type:"boolean",target:"yes"},{name:"json",description:"Output in JSON format",type:"boolean",target:"json"}],examples:[{name:"Resize CVM interactively",value:"phala cvms resize"},{name:"Resize without confirmation",value:"phala cvms resize app_123 --vcpu 4 --memory 4096 --disk-size 120 --yes"}]},qC=Rn.object({cvmId:Rn.string().optional(),interactive:Rn.boolean().default(!1),vcpu:Rn.string().optional(),memory:Rn.string().optional(),diskSize:Rn.string().optional(),allowRestart:Rn.string().optional(),yes:Rn.boolean().default(!1),json:Rn.boolean().default(!1)});function Dg(e,t){if(e===void 0)return;let r=Number.parseInt(e,10);if(Number.isNaN(r)||r<0)throw new Error(`Please provide a valid non-negative number for ${t}`);return r}function X4(e){if(e===void 0)return;let t=e.trim().toLowerCase();if(["true","1","yes","y"].includes(t))return!0;if(["false","0","no","n"].includes(t))return!1;throw new Error(`Invalid value for --allow-restart: ${e}`)}async function Ug(e,t){return(await zg.prompt([{type:"input",name:"value",message:e,default:t,validate:n=>{let o=Number.parseInt(n,10);return Number.isNaN(o)||o<0?"Please enter a valid non-negative number":!0},filter:n=>Number.parseInt(n,10)}])).value}async function Q4(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=await N(),n=await Re(r,t.cvmId);if(!n.success)return t.fail(n.error.message),1;let o=n.data;if(!o)return t.fail("CVM not found"),1;let s=o.app_id,a,i,c,m;try{a=Dg(e.vcpu,"--vcpu"),i=Dg(e.memory,"--memory"),c=Dg(e.diskSize,"--disk-size"),m=X4(e.allowRestart)}catch(u){return l.error(u instanceof Error?u.message:String(u)),1}if(pg()?(a===void 0&&(a=await Ug("Enter number of vCPUs:",o.resource.vcpu??void 0)),i===void 0&&(i=await Ug("Enter memory in MB:",o.resource.memory_in_gb?o.resource.memory_in_gb*1024:void 0)),c===void 0&&(c=await Ug("Enter disk size in GB:",o.resource.disk_in_gb??void 0)),m===void 0&&(m=(await zg.prompt([{type:"confirm",name:"allowRestart",message:"Allow restart of the CVM if needed for resizing?",default:!1}])).allowRestart)):(a===void 0&&(a=o.resource.vcpu??void 0),i===void 0&&(i=o.resource.memory_in_gb?o.resource.memory_in_gb*1024:void 0),c===void 0&&(c=o.resource.disk_in_gb??void 0),m===void 0&&(m=!0)),pg()){let u=o.resource.vcpu,p=o.resource.memory_in_gb?o.resource.memory_in_gb*1024:void 0,f=o.resource.disk_in_gb;if(l.keyValueTable({vCPUs:u!==a?`${Io.red(u)} -> ${Io.green(a)}`:u,Memory:p!==i?`${Io.red(p)} MB -> ${Io.green(i)} MB`:p,"Disk Size":f!==c?`${Io.red(f)} GB -> ${Io.green(c)} GB`:f,"Allow Restart":m?Io.green("Yes"):Io.red("No")}),!e.yes){let{confirm:g}=await zg.prompt([{type:"confirm",name:"confirm",message:`Are you sure you want to resize CVM app_${s}?`,default:!1}]);if(!g)return l.info("Resize operation cancelled"),0}let d=l.startSpinner(`Resizing CVM with App ID app_${s}`);await $n(()=>yg(s,a,i,c,m?1:0),{spinner:d}),d.stop(!0),l.break(),l.success(`Your CVM is being resized. You can check the dashboard for more details:
244
- ${je}/dashboard/cvms/app_${s}`)}else await $n(()=>yg(s,a,i,c,m?1:0)),t.success({app_id:s,vcpu:a,memory:i,disk_size:c,allow_restart:m});return 0}catch(r){return l.error("Failed to resize CVM"),l.logDetailedError(r),t.fail(r instanceof Error?r.message:String(r)),1}}var KC=P({path:["cvms","resize"],meta:GC,schema:qC,handler:Q4});async function cf(e,t=3e5){let r=await N(),n=Date.now(),o=2e3;for(l.info("Waiting for CVM to be ready...");Date.now()-n<t;){try{let s=await Re(r,{id:e});if(!s.success)l.warn(`Failed to get CVM info: ${s.error.message}`);else{let a=s.data,i=a.status,c=a.in_progress,m=Math.floor((Date.now()-n)/1e3);if(l.info(` [${m}s] status=${i}, in_progress=${c}`),i==="running"&&!c){let u=Math.floor((Date.now()-n)/1e3);l.success(`CVM is ready (took ${u}s)`);return}}}catch(s){l.warn(`Error checking CVM status: ${s}`)}await new Promise(s=>setTimeout(s,o))}throw new Error(`Timeout waiting for CVM to be ready (${Math.floor(t/1e3)}s)`)}import{z as Og}from"zod";var WC={name:"restart",description:"Restart a CVM",stability:"stable",arguments:[xe],options:[se],examples:[{name:"By app_id",value:"phala cvms restart app_123"},{name:"By UUID",value:"phala cvms restart 550e8400-e29b-41d4-a716-446655440000"},{name:"By name",value:"phala cvms restart my-app"}]},JC=Og.object({cvmId:Og.string().optional(),interactive:Og.boolean().default(!1)});async function e$(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=await N(),n=await Re(r,t.cvmId);if(!n.success)return t.fail(n.error.message),1;let o=n.data;o.progress?.target&&(l.warn("CVM is currently in progress (updating/restarting). Waiting for operation to complete..."),await cf(o.vm_uuid,3e5));let s=l.startSpinner("Restarting CVM"),a=t.cvmId,i=await $n(()=>eg(r,a),{spinner:s});if(s.stop(!0),!i.success)return l.error(`Failed to restart CVM: ${i.error.message}`),1;let c=i.data;return l.break(),l.keyValueTable({"CVM ID":c.id,Name:c.name,Status:c.status,"App ID":`app_${c.app_id}`,"App URL":c.app_url||`${je}/dashboard/cvms/app_${c.app_id}`},{borderStyle:"rounded"}),l.break(),l.success(`Your CVM is being restarted. You can check the dashboard for more details:
245
- ${je}/dashboard/cvms/app_${c.app_id}`),0}catch(r){return l.error("Failed to restart CVM"),l.logDetailedError(r),1}}var ZC=P({path:["cvms","restart"],meta:WC,schema:JC,handler:e$});import{z as ls}from"zod";var YC={name:"serial-logs",description:"Fetch VM serial console logs from a CVM",stability:"deprecated",arguments:[xe],options:[{name:"tail",shorthand:"n",description:"Lines from end",type:"number",target:"tail"},{name:"follow",shorthand:"f",description:"Stream logs in real-time",type:"boolean",target:"follow"},{name:"timestamps",shorthand:"t",description:"Show timestamps",type:"boolean",target:"timestamps"},Et,se],examples:[{name:"Show VM serial logs",value:"phala cvms serial-logs app_abc123"},{name:"Show last 100 lines of serial logs",value:"phala cvms serial-logs app_abc123 --tail 100"},{name:"Follow serial logs in real-time",value:"phala cvms serial-logs app_abc123 --follow"},{name:"Show serial logs with timestamps",value:"phala cvms serial-logs app_abc123 --timestamps"}]},XC=ls.object({cvmId:ls.string().optional(),tail:ls.number().optional(),follow:ls.boolean().default(!1),timestamps:ls.boolean().default(!1),json:ls.boolean().default(!1),interactive:ls.boolean().default(!1)});var t$=af({logType:"serial",fetchLogs:a6,streamLogs:u6},e=>({tail:e.tail,timestamps:e.timestamps})),QC=P({path:["cvms","serial-logs"],meta:YC,schema:XC,handler:t$});import{z as jg}from"zod";var e5={name:"start",description:"Start a stopped CVM",stability:"stable",arguments:[xe],options:[se],examples:[{name:"Start CVM by app_id",value:"phala cvms start app_123"},{name:"Start CVM by UUID",value:"phala cvms start 550e8400-e29b-41d4-a716-446655440000"},{name:"Start CVM by name",value:"phala cvms start my-app"}]},t5=jg.object({cvmId:jg.string().optional(),interactive:jg.boolean().default(!1)});async function r$(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=await N(),n=l.startSpinner("Starting CVM"),o=t.cvmId,s=await $n(()=>X0(r,o),{spinner:n});if(n.stop(!0),!s.success)return l.error(`Failed to start CVM: ${s.error.message}`),1;let a=s.data;return l.break(),l.keyValueTable({"CVM ID":a.id,Name:a.name,Status:a.status,"App ID":`app_${a.app_id}`},{borderStyle:"rounded"}),l.break(),l.success(`Your CVM is being started. You can check the dashboard for more details:
246
- ${je}/dashboard/cvms/app_${a.app_id}`),0}catch(r){return l.error("Failed to start CVM"),l.logDetailedError(r),1}}var r5=P({path:["cvms","start"],meta:e5,schema:t5,handler:r$});import{z as Hg}from"zod";var n5={name:"stop",description:"Stop a running CVM",stability:"stable",arguments:[xe],options:[se],examples:[{name:"Stop CVM by app_id",value:"phala cvms stop app_123"},{name:"Stop CVM by UUID",value:"phala cvms stop 550e8400-e29b-41d4-a716-446655440000"},{name:"Stop CVM by name",value:"phala cvms stop my-app"}]},o5=Hg.object({cvmId:Hg.string().optional(),interactive:Hg.boolean().default(!1)});async function n$(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=await N(),n=l.startSpinner("Stopping CVM"),o=t.cvmId,s=await $n(()=>Q0(r,o),{spinner:n});if(n.stop(!0),!s.success)return l.error(`Failed to stop CVM: ${s.error.message}`),1;let a=s.data;return l.break(),l.keyValueTable({"CVM ID":a.id,Name:a.name,Status:a.status,"App ID":`app_${a.app_id}`},{borderStyle:"rounded"}),l.break(),l.success(`Your CVM is being stopped. You can check the dashboard for more details:
247
- ${je}/dashboard/cvms/app_${a.app_id}`),0}catch(r){return l.error("Failed to stop CVM"),l.logDetailedError(r),1}}var s5=P({path:["cvms","stop"],meta:n5,schema:o5,handler:n$});import o$ from"fs";import{z as hi}from"zod";var a5={name:"upgrade",description:'Upgrade a CVM to a new version (use "phala deploy" instead)',stability:"deprecated",arguments:[xe],options:[se,{name:"compose",shorthand:"c",description:"Path to Docker Compose file",type:"string",target:"compose"},{name:"env-file",shorthand:"e",description:"Path to environment file",type:"string",target:"envFile"},{name:"debug",description:"Enable debug output",type:"boolean",target:"debug"}],examples:[{name:"Upgrade a CVM interactively",value:"phala cvms upgrade"},{name:"Upgrade using a compose file",value:"phala cvms upgrade app_123 --compose ./docker-compose.yml"}]},i5=hi.object({cvmId:hi.string().optional(),interactive:hi.boolean().default(!1),compose:hi.string().optional(),envFile:hi.string().optional(),debug:hi.boolean().default(!1)});async function s$(e){if(e.compose)return e.compose;let r=gi(["docker-compose.yml","docker-compose.yaml"],"Detected docker compose file: {path}");return Pn("Enter the path to your Docker Compose file:",r,"file")}async function a$(e,t){try{if(l.warn('\u26A0\uFE0F This command is deprecated. Please use "phala deploy" instead.'),l.warn(`\u26A0\uFE0F This legacy API will be maintained but may have limited support.
248
- `),!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;let r=await N(),n=await Re(r,t.cvmId);if(!n.success)return t.fail(n.error.message),1;let o=n.data;if(!o)return t.fail("CVM not found"),1;let s=o.app_id,a=o,i=await s$(e),c="";if(i)try{c=o$.readFileSync(i,"utf8")}catch(g){return l.error(`Failed to read Docker Compose file: ${g instanceof Error?g.message:String(g)}`),1}await ps(),process.env.DSTACK_DOCKER_USERNAME&&process.env.DSTACK_DOCKER_PASSWORD?l.info("\u{1F510} Using private DockerHub registry credentials..."):process.env.DSTACK_AWS_ACCESS_KEY_ID&&process.env.DSTACK_AWS_SECRET_ACCESS_KEY&&process.env.DSTACK_AWS_REGION&&process.env.DSTACK_AWS_ECR_REGISTRY?l.info(`\u{1F510} Using private AWS ECR registry: ${process.env.DSTACK_AWS_ECR_REGISTRY}`):l.info("\u{1F510} Using public DockerHub registry...");let m,u=[];if(e.envFile)try{let g=Hc([],e.envFile);m=await(0,gr.encryptEnvVars)(g,a.kms_info?.encrypted_env_pubkey),u=g.map(h=>h.key)}catch(g){return l.error(`Failed to read environment file: ${g instanceof Error?g.message:String(g)}`),1}let p={compose_manifest:{docker_compose_file:c,manifest_version:1,runner:"docker-compose",version:"1.0.0",features:["kms","tproxy-net"],name:`app_${s}`,allowed_envs:u},encrypted_env:m,allow_restart:!0,env_keys:u},f=l.startSpinner(`Upgrading CVM app_${s}`),d=await r6(s,p);return d?(f.stop(!0),d.detail&&l.info(`Details: ${d.detail}`),l.break(),l.success(`Your CVM is being upgraded. You can check the dashboard for more details:
249
- ${je}/dashboard/cvms/app_${s}`),0):(f.stop(!1),l.error("Failed to upgrade CVM"),1)}catch(r){return l.error(`Failed to upgrade CVM: ${r instanceof Error?r.message:String(r)}`),e.debug&&l.error("Full Error:",r),1}}var c5=P({path:["cvms","upgrade"],meta:a5,schema:i5,handler:a$});var Vg={group:lC,commands:[gC,EC,AC,$C,FC,BC,zC,VC,KC,ZC,QC,r5,s5,c5]};import{z as fe}from"zod";var m5={name:"deploy",category:"deploy",description:"Deploy new CVM or update existing one",stability:"stable",arguments:[],options:[ui,$w,se,{name:"debug",description:"Enable debug logging",type:"boolean",target:"debug",group:"advanced"},{name:"name",shorthand:"n",description:"CVM name (defaults to directory name)",type:"string",target:"name",group:"basic"},{name:"compose",shorthand:"c",description:"Path to Docker Compose file (default: docker-compose.yml)",type:"string",target:"compose",group:"basic"},{name:"instance-type",shorthand:"t",description:"Instance type (e.g., tdx.small, auto-selected if omitted)",type:"string",target:"instanceType",group:"basic"},{name:"vcpu",description:"Use --instance-type instead",type:"string",target:"vcpu",deprecated:!0,group:"deprecated"},{name:"memory",description:"Use --instance-type instead",type:"string",target:"memory",deprecated:!0,group:"deprecated"},{name:"disk-size",description:`Disk size with unit (e.g., 50G, default: ${us}GB)`,type:"string",target:"diskSize",group:"advanced"},{name:"image",description:"OS image version (auto-selected if omitted)",type:"string",target:"image",group:"advanced"},{name:"region",shorthand:"r",description:"Preferred region (e.g., us-west, auto-selected if omitted)",type:"string",target:"region",group:"basic"},{name:"node-id",description:"Node ID (auto-selected if omitted)",type:"string",target:"nodeId",group:"advanced"},{name:"env",shorthand:"e",description:"Environment variable (KEY=VALUE) or env file path (repeatable)",type:"string[]",target:"env",group:"basic"},{name:"env-file",description:"Use -e instead",type:"string",target:"envFile",deprecated:!0,group:"deprecated"},{name:"kms",description:"KMS type: phala (default), ethereum/eth, or base",type:"string",target:"kms",group:"basic"},{name:"kms-id",description:"Use --kms instead",type:"string",target:"kmsId",deprecated:!0,group:"deprecated"},{name:"custom-app-id",description:"Custom App ID (requires --nonce for PHALA KMS)",type:"string",target:"customAppId",group:"advanced"},{name:"nonce",description:"Nonce for deterministic app_id (requires --custom-app-id, PHALA KMS only)",type:"string",target:"nonce",group:"advanced"},{name:"pre-launch-script",description:"Path to pre-launch script",type:"string",target:"preLaunchScript",group:"advanced"},{name:"private-key",description:"Private key for signing transactions.",type:"string",target:"privateKey",group:"advanced"},{name:"rpc-url",description:"RPC URL for the blockchain.",type:"string",target:"rpcUrl",group:"advanced"},{name:"wait",description:"Wait for deployment/update completion",type:"boolean",target:"wait",group:"basic"},{name:"ssh-pubkey",description:"SSH public key path (default: ~/.ssh/id_rsa.pub)",type:"string",target:"sshPubkey",group:"basic"},{name:"dev-os",description:"Use dev OS image (requires SSH key)",type:"boolean",target:"devOs",negatedName:"no-dev-os",group:"basic"},{name:"public-logs",description:"Make CVM logs publicly accessible (default: true)",type:"boolean",target:"publicLogs",negatedName:"no-public-logs"},{name:"public-sysinfo",description:"Make CVM system info publicly accessible (default: true)",type:"boolean",target:"publicSysinfo",negatedName:"no-public-sysinfo"},{name:"listed",description:"List CVM on the public Trust Center (default: false)",type:"boolean",target:"listed",negatedName:"no-listed"}],examples:[{name:"Deploy new CVM",value:"phala deploy"},{name:"Deploy with environment variables",value:"phala deploy -e NODE_ENV=production -e DEBUG=true"},{name:"Deploy with env file",value:"phala deploy -e .env"},{name:"Deploy with specific instance type",value:"phala deploy --instance-type tdx.medium"},{name:"Deploy to specific region",value:"phala deploy --region us-west"},{name:"Deploy with Ethereum KMS",value:"phala deploy --kms ethereum --private-key <key> --rpc-url <url>"},{name:"Update existing CVM by ID",value:"phala deploy --cvm-id app_abc123"},{name:"Update CVM with new compose file and env",value:"phala deploy --cvm-id my-app --compose ./new-docker-compose.yml -e .env"},{name:"Update CVM and wait for completion",value:"phala deploy --cvm-id app_abc123 --wait"},{name:"Update CVM from phala.toml",value:"phala deploy"},{name:"Deploy with logs and sysinfo disabled",value:"phala deploy --no-public-logs --no-public-sysinfo"},{name:"Deploy and list on Trust Center",value:"phala deploy --listed"},{name:"Update existing CVM to disable logs",value:"phala deploy --cvm-id app_123 --no-public-logs"}]},u5=fe.object({compose:fe.string().optional(),json:fe.boolean().default(!1),debug:fe.boolean().default(!1),apiToken:fe.string().optional(),name:fe.string().optional(),instanceType:fe.string().optional(),vcpu:fe.string().optional(),memory:fe.string().optional(),diskSize:fe.string().optional(),image:fe.string().optional(),region:fe.string().optional(),nodeId:fe.string().optional(),env:fe.array(fe.string()).optional(),envFile:fe.string().optional(),interactive:fe.boolean().default(!1),kms:fe.enum(["phala","ethereum","eth","base"]).default("phala"),kmsId:fe.string().optional(),cvmId:fe.string().optional(),customAppId:fe.string().optional(),nonce:fe.string().optional(),preLaunchScript:fe.string().optional(),privateKey:fe.string().optional(),rpcUrl:fe.string().optional(),wait:fe.boolean().default(!1),sshPubkey:fe.string().optional(),devOs:fe.boolean().optional(),publicLogs:fe.boolean().optional(),publicSysinfo:fe.boolean().optional(),listed:fe.boolean().optional()});import Mn from"path";import h5 from"os";function i$(e){let t=e.indexOf("=");if(t===-1)return!1;let r=e.substring(0,t);return r.includes("/")||r.includes("\\")?!1:/^[A-Za-z_][A-Za-z0-9_]*$/.test(r)}function p5(e){let t={files:[],keyValues:[]};for(let r of e)if(i$(r)){let n=r.indexOf("="),o=r.substring(0,n),s=r.substring(n+1);t.keyValues.push({key:o,value:s})}else t.files.push(r);return t}function l5(e){let t=new Map;for(let r of e)t.set(r.key,r.value);return Array.from(t.entries()).map(([r,n])=>({key:r,value:n}))}function f5(e,t="B"){if(!e||typeof e!="string")throw new Error("Invalid input: must be a non-empty string");let r=e.trim().match(/^(\d+(?:\.\d+)?)\s*([KkMmGgTt][Bb]?)?$/);if(!r)throw new Error(`Invalid format: ${e}. Expected format: <number>[unit] (e.g., 2G, 500MB, 1T)`);let n=Number.parseFloat(r[1]),o=(r[2]||t).toUpperCase().replace("B",""),s={K:1024,M:1024*1024,G:1024*1024*1024,T:1024*1024*1024*1024,"":1};if(!(o in s))throw new Error(`Unsupported unit: ${o}. Supported units: B, K/KB, M/MB, G/GB, T/TB`);return Math.round(n*s[o])}function d5(e){let t=f5(e,"MB"),r=Math.round(t/(1024*1024));if(r%1024!==0)throw new Error(`Memory must be a multiple of 1GB (1024MB). Got: ${r}MB`);return r}function g5(e){let t=f5(e,"GB"),r=Math.round(t/(1024*1024*1024));if(r%1!==0)throw new Error(`Disk size must be a multiple of 1GB. Got: ${r}GB`);return r}import mf from"dedent";import yr from"fs-extra";import uf from"inquirer";function c$(e,t){if(e instanceof Ec)return t.json?{success:!1,error_code:e.errorCode,message:e.message,details:e.structuredDetails,suggestions:e.suggestions,links:e.links}:El(e);if(e&&typeof e=="object"&&"response"in e){let o=e.response?.data?.detail;if(o&&typeof o=="object"&&"error_code"in o){let{error_code:s,message:a,details:i,suggestions:c,links:m}=o;if(t.json)return{success:!1,error_code:s,message:a,details:i,suggestions:c,links:m};let u=`
250
- Error [${s}]: ${a}
251
- `;if(i&&i.length>0){u+=`
193
+ Command: ${a}
194
+
195
+ `;Y.appendFileSync(s.logFilePath,p)}return l.pid&&R_(l.pid,e.verbose),s.background&&(l.unref(),e.verbose&&i.success("Simulator is running in the background")),await Ds(),l}catch(t){throw i.error("Error running simulator:",t),new Error(`Failed to run simulator: ${t}`)}}async function Sn(){try{let e=_n(),t=Ie.platforms[e];if(e==="darwin"||e==="linux"){let r=t.socketPath;return Y.existsSync(r)?new Promise(n=>{let o=xs.createConnection({path:r}).on("connect",()=>{o.end(),n(!0)}).on("error",()=>{n(!1)});setTimeout(()=>{o.end(),n(!1)},1e3)}):!1}if(e==="win32"){let r="127.0.0.1";return new Promise(o=>{let a=xs.createConnection({host:r,port:8090}).on("connect",()=>{a.end(),o(!0)}).on("error",()=>{o(!1)});setTimeout(()=>{a.end(),o(!1)},1e3)})}return!1}catch(e){return i.error("Error checking if simulator is running:",e),!1}}async function cp(){try{let e=Po();if(!await Sn()&&!e)return i.info("Simulator is not running"),!0;let r=_n(),n=!1;if(r==="win32")try{e?(i.info(`Stopping simulator process (PID: ${e})...`),process.kill(e,"SIGTERM")):Et("taskkill /F /IM dstack-simulator.exe",{stdio:"ignore"}),n=!0}catch(a){if(a.code!=="ESRCH")return i.error("Failed to stop simulator:",a),!1;n=!0}else try{e?(i.info(`Stopping simulator process (PID: ${e})...`),process.kill(e,"SIGTERM")):Et("pkill -f dstack-simulator",{stdio:"ignore"}),n=!0}catch(a){if(a.code!=="ESRCH")return i.error("Failed to stop simulator:",a),!1;n=!0}let o=Ps();if(Y.existsSync(o))try{Y.unlinkSync(o)}catch(a){i.warn("Failed to remove PID file:",a)}return await or(),n&&i.success("Simulator stopped successfully"),n}catch(e){return i.error("Error stopping simulator:",e),!1}}function $s(){let e=_n(),t=Ie.platforms[e];return e==="win32"?"http://127.0.0.1:8090":`${t.socketPath||"/tmp/dstack.sock"}`}async function Ds(e){try{let t=$s(),r=e||t;await Et(`export DSTACK_SIMULATOR_ENDPOINT=${r}`);let n=r.replace(/dstack\.sock$/,"tappd.sock");return await Et(`export TAPPD_SIMULATOR_ENDPOINT=${n}`),i.success("Setting environment for current process..."),i.success(` DSTACK_SIMULATOR_ENDPOINT=${r}`),i.success(` TAPPD_SIMULATOR_ENDPOINT=${n}`),r}catch(t){throw i.error("Error setting simulator endpoint environment variable:",t),new Error(`Failed to set simulator endpoint: ${t}`)}}async function or(){try{return await Et("unset DSTACK_SIMULATOR_ENDPOINT"),await Et("unset TAPPD_SIMULATOR_ENDPOINT"),i.debug("Deleted simulator endpoint environment variables from current process"),!0}catch(e){return i.warn("Error while unsetting simulator endpoint environment variables:",e),!1}}import up from"inquirer";import{z as st}from"zod";var lp={name:"create",description:'Create a new CVM (use "phala deploy" instead)',stability:"deprecated",options:[{name:"name",shorthand:"n",description:"Name of the CVM",type:"string",target:"name"},{name:"compose",shorthand:"c",description:"Path to Docker Compose file",type:"string",target:"compose"},{name:"vcpu",description:`Virtual CPUs (default: ${bn})`,type:"string",target:"vcpu"},{name:"memory",description:`Memory in MB (default: ${Cn})`,type:"string",target:"memory"},{name:"disk-size",description:`Disk size in GB (default: ${nr})`,type:"string",target:"diskSize"},{name:"teepod-id",description:"TEEPod ID (auto-selected if omitted)",type:"string",target:"teepodId"},{name:"image",description:"dstack image version (uses default if omitted)",type:"string",target:"image"},{name:"env-file",shorthand:"e",description:"Path to environment file",type:"string",target:"envFile"},{name:"skip-env",description:"Skip env var prompt",type:"boolean",target:"skipEnv"},{name:"debug",description:"Enable debug output",type:"boolean",target:"debug"}],examples:[{name:"Create a CVM interactively",value:"phala cvms create"},{name:"Create using predefined values",value:"phala cvms create --name demo --compose ./docker-compose.yml"}]},mp=st.object({name:st.string().optional(),compose:st.string().optional(),vcpu:st.string().optional(),memory:st.string().optional(),diskSize:st.string().optional(),teepodId:st.string().optional(),image:st.string().optional(),envFile:st.string().optional(),skipEnv:st.boolean().default(!1),debug:st.boolean().default(!1)});async function T_(e){if(e)return e;let{value:t}=await up.prompt([{type:"input",name:"value",message:"Enter a name for the CVM:",validate:r=>{let n=r.trim();return n?n.length>20?"CVM name must be less than 20 characters":n.length<3?"CVM name must be at least 3 characters":/^[a-zA-Z0-9_-]+$/.test(n)?!0:"CVM name must contain only letters, numbers, underscores, and hyphens":"CVM name is required"}}]);return t.trim()}async function L_(e){if(e)return e;let r=Nr(["docker-compose.yml","docker-compose.yaml"],"Detected docker compose file: {path}");return await kt("Enter the path to your Docker Compose file:",r,"file")}async function N_(e){if(e.envFile)return wn([],e.envFile);if(e.skipEnv)return i.info("Skipping environment variable prompt"),[];let{shouldSkip:t}=await up.prompt([{type:"confirm",name:"shouldSkip",message:"Do you want to skip environment variable prompt?",default:!0}]);if(t)return i.info("Skipping environment variable prompt"),[];let r=await kt("Enter the path to your environment file:",".env","file");return wn([],r)}function Rs(e,t){if(!e)return t;let r=Number(e);return Number.isFinite(r)?r:t}function U_(e,t){return!Number.isFinite(t)||t<=0?`Invalid ${e}: ${t}`:null}async function O_(e,t){if(!t.nodes.length)return;if(!e)return t.nodes[0];let r=Number(e);return t.nodes.find(n=>n.teepod_id===r)}function F_(e,t){let r=e.images??[];return t?r.find(n=>n.name===t):r.find(n=>n.name===bs)}async function j_(e,t){try{i.warn('\u26A0\uFE0F This command is deprecated. Please use "phala deploy" instead.'),i.warn("\u26A0\uFE0F This legacy API will be maintained but may have limited support.\\n");let r=await T_(e.name),n=await L_(e.compose),o=M_.resolve(n);if(!pp.existsSync(o))return i.error(`Docker Compose file not found: ${o}`),1;let a=pp.readFileSync(o,"utf8");await or(),process.env.DSTACK_DOCKER_USERNAME&&process.env.DSTACK_DOCKER_PASSWORD?i.info("\u{1F510} Using private DockerHub registry credentials..."):process.env.DSTACK_AWS_ACCESS_KEY_ID&&process.env.DSTACK_AWS_SECRET_ACCESS_KEY&&process.env.DSTACK_AWS_REGION&&process.env.DSTACK_AWS_ECR_REGISTRY?i.info(`\u{1F510} Using private AWS ECR registry: ${process.env.DSTACK_AWS_ECR_REGISTRY}`):i.info("\u{1F510} Using public DockerHub registry...");let s=[];try{s=await N_(e)}catch(E){return i.error(`Failed to read environment file: ${E instanceof Error?E.message:String(E)}`),1}let c=Rs(e.vcpu,bn),l=Rs(e.memory,Cn),m=Rs(e.diskSize,nr);for(let[E,x]of[["number of vCPUs",c],["memory",l],["disk size",m]]){let P=U_(E,x);if(P)return i.error(P),1}let p=i.startSpinner("Fetching available TEEPods"),u=await Hl(!0);p.stop(!0);let d=await O_(e.teepodId,u);if(!d)return i.error("Failed to find suitable TEEPod"),1;let f=F_(d,e.image);if(!f)return i.error(e.image?`Failed to find selected image: ${e.image}`:`Failed to find default image ${bs}`),1;let g={teepod_id:d.teepod_id,name:r,image:f.name,vcpu:c,memory:l,disk_size:m,compose_manifest:{docker_compose_file:a,docker_config:{url:"",username:"",password:""},features:["kms","tproxy-net"],kms_enabled:!0,manifest_version:2,name:r,public_logs:!0,public_sysinfo:!0,runner:"docker-compose",tproxy_enabled:!0},listed:!1},h=i.startSpinner("Getting public key from CVM"),v=await zl(g);if(h.stop(!0),!v)return i.error("Failed to get public key from CVM"),1;let w=i.startSpinner("Encrypting environment variables"),C=await(0,$e.encryptEnvVars)(s,v.app_env_encrypt_pubkey);w.stop(!0),e.debug&&(i.debug("Public key:",v.app_env_encrypt_pubkey),i.debug("Encrypted environment variables:",C),i.debug("Environment variables:",JSON.stringify(s)));let _=i.startSpinner("Creating CVM"),S=await Kl({...g,encrypted_env:C,app_env_encrypt_pubkey:v.app_env_encrypt_pubkey,app_id_salt:v.app_id_salt});return _.stop(!0),S?(i.success("CVM created successfully"),i.break(),i.keyValueTable({"CVM ID":S.id,Name:S.name,Status:S.status,"App ID":`app_${S.app_id}`,"App URL":S.app_url||`${he}/dashboard/cvms/app_${S.app_id}`},{borderStyle:"rounded"}),i.info(""),i.success(`Your CVM is being created. You can check its status with:
196
+ phala cvms get app_${S.app_id}`),0):(i.error("Failed to create CVM"),1)}catch(r){return i.error(`Failed to create CVM: ${r instanceof Error?r.message:String(r)}`),1}}var dp=b({path:["cvms","create"],meta:lp,schema:mp,handler:j_});import V_ from"inquirer";import{z as kn}from"zod";var fp={name:"delete",description:"Delete a CVM",stability:"unstable",arguments:[B],options:[N,{name:"force",shorthand:"f",description:"Skip confirmation prompt",type:"boolean",target:"force"},{name:"yes",shorthand:"y",description:"Alias for --force (skip confirmation prompt)",type:"boolean",target:"yes"}],examples:[{name:"Delete a CVM interactively",value:"phala cvms delete"},{name:"Delete CVM by app_id",value:"phala cvms delete app_123 --force"},{name:"Delete CVM by UUID",value:"phala cvms delete 550e8400-e29b-41d4-a716-446655440000 -f"},{name:"Delete CVM by name",value:"phala cvms delete my-app --yes"}]},gp=kn.object({cvmId:kn.string().optional(),interactive:kn.boolean().default(!1),force:kn.boolean().default(!1),yes:kn.boolean().default(!1)});async function z_(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=await k(),n=await Q(r,t.cvmId);if(!n.success)return t.fail(n.error.message),1;let o=n.data;if(!o)return t.fail("CVM not found"),1;let a=o.name||`app_${o.app_id}`;if(!e.force&&!e.yes){let{confirm:l}=await V_.prompt([{type:"confirm",name:"confirm",message:`Are you sure you want to delete CVM "${a}"? This action cannot be undone.`,default:!1}]);if(!l)return i.info("Deletion cancelled"),0}let s=i.startSpinner(`Deleting CVM ${a}`),c=await Ya(r,t.cvmId);return s.stop(!0),c.success?(i.success(`CVM ${a} deleted successfully`),0):(i.error(`Failed to delete CVM ${a}: ${c.error.message}`),1)}catch(r){return i.error("Failed to delete CVM"),i.logDetailedError(r),1}}var hp=b({path:["cvms","delete"],meta:fp,schema:gp,handler:z_});import Do from"chalk";function ce(e,t){let r={};for(let o of e){r[o]=o.length;for(let a of t)r[o]=Math.max(r[o],(a[o]??"").length)}let n=o=>e.map(a=>(o[a]??"").padEnd(r[a])).join(" ");console.log(n(Object.fromEntries(e.map(o=>[o,o]))));for(let o of t)console.log(n(o))}import{z as $o}from"zod";var yp={name:"device-allowlist",description:"Show device allowlist status for a CVM's app",stability:"unstable",arguments:[B],options:[ie,N],examples:[{name:"Check device allowlist",value:"phala cvms device-allowlist app_abc123"}]},vp=$o.object({cvmId:$o.string().optional(),json:$o.boolean().default(!1),interactive:$o.boolean().default(!1)});async function K_(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=await k(),n=await Q(r,t.cvmId);if(!n.success)return t.fail(n.error.message),1;let o=n.data;if(!o)return t.fail("CVM not found"),1;let a=o.app_id;if(!a)return t.fail("CVM has no app_id assigned yet."),1;let s=await eo(r,{appId:a});if(!s.success)return t.fail(s.error.message),1;let c=s.data;if(e.json)return t.success(c),0;if(!c.is_onchain_kms)return i.info("This app does not use on-chain KMS."),0;if(i.info(`Chain: ${c.chain_id??"N/A"} Contract: ${c.app_contract_address??"N/A"}`),i.info(`Allow Any Device: ${c.allow_any_device?Do.green("yes"):Do.red("no")}`),c.devices.length===0)return i.info("No devices found for this app."),0;let l=["DEVICE_ID","NODE","CVMS","STATUS"],m=c.devices.map(p=>({DEVICE_ID:p.device_id,NODE:p.node_name??"-",CVMS:p.cvm_ids.join(", ")||"-",STATUS:p.status==="allowed"?Do.green(p.status):Do.red(p.status)}));return ce(l,m),0}catch(r){return i.logDetailedError(r),t.fail(`Failed to get device allowlist: ${r instanceof Error?r.message:String(r)}`),1}}var bp=b({path:["cvms","device-allowlist"],meta:yp,schema:vp,handler:K_});import Ms from"chalk";import{z as Ro}from"zod";var Cp={name:"get",description:"Get details of a CVM",stability:"unstable",arguments:[B],options:[ie,N],examples:[{name:"Get CVM interactively",value:"phala cvms get"},{name:"By app_id",value:"phala cvms get app_abc123"},{name:"By UUID",value:"phala cvms get 550e8400-e29b-41d4-a716-446655440000"},{name:"By name",value:"phala cvms get my-app"}]},wp=Ro.object({cvmId:Ro.string().optional(),json:Ro.boolean().default(!1),interactive:Ro.boolean().default(!1)});async function G_(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=i.startSpinner("Fetching CVM details"),n=await k(),o=await Q(n,t.cvmId);if(r.stop(!0),!o.success)return t.fail(o.error.message),1;let a=o.data;if(!a)return t.fail("CVM not found"),1;if(e.json)return t.success(a),0;i.break();let s=a.status==="running"?Ms.green(a.status):a.status==="stopped"?Ms.red(a.status):Ms.yellow(a.status);return i.keyValueTable({Name:a.name,"App ID":`app_${a.app_id}`,Status:s,vCPU:a.resource.vcpu,Memory:a.resource.memory_in_gb!=null?`${a.resource.memory_in_gb} GB`:"N/A","Disk Size":a.resource.disk_in_gb!=null?`${a.resource.disk_in_gb} GB`:"N/A","Dstack Image":a.os?.name,"App URL":`${he}/dashboard/cvms/app_${a.app_id}`}),0}catch(r){return i.logDetailedError(r),t.fail(`Failed to get CVM details: ${r instanceof Error?r.message:String(r)}`),1}}var _p=b({path:["cvms","get"],meta:Cp,schema:wp,handler:G_});import To from"chalk";function H_(e,t){if(t<=0)return[Array.from(e)];let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}async function Mo(e,t){let r=await gl(e,{page:t.page,page_size:t.pageSize,search:t.search,status:t.status,listed:t.listed,base_image:t.baseImage,instance_type:t.instanceType,kms_type:t.kmsType,node:t.node,region:t.region});if(!r.success)return{success:!1,error:{message:r.error.message}};let n=r.data,a=(n.dstack_apps??[]).filter(m=>m.current_cvm&&typeof m.current_cvm=="object"&&"vm_uuid"in m.current_cvm&&!!m.current_cvm.vm_uuid),s=a.map(m=>m.current_cvm?.vm_uuid).filter(m=>typeof m=="string"&&m.length>0),c={};for(let m of H_(s,100)){let p=await dl(e,{vmUuids:m});if(!p.success)return{success:!1,error:{message:p.error.message}};for(let[u,d]of Object.entries(p.data))c[u]={status:d.status,uptime:d.uptime,in_progress:d.in_progress}}let l=[];for(let m of a){let p=m.current_cvm;if(!p?.vm_uuid)continue;let u=c[p.vm_uuid],d=u?u.status:typeof p.status=="string"?p.status:"unknown";l.push({appId:m.app_id,cvmName:p.name,status:d,uptime:u?.uptime})}return{success:!0,data:{page:n.page,pageSize:n.page_size,total:n.total,totalPages:n.total_pages,items:l}}}import{z as Je}from"zod";var Sp={name:"list",aliases:["ls"],description:"List CVMs",stability:"unstable",options:[{name:"page",description:"Page number (1-based)",type:"number",target:"page",group:"basic"},{name:"page-size",description:"Number of items per page",type:"number",target:"pageSize",group:"basic"},{name:"search",description:"Search by name, app_id, vm_uuid, or instance_id",type:"string",target:"search",group:"basic"},{name:"status",description:"Filter by CVM status (can be specified multiple times)",type:"string[]",target:"status",group:"basic"},{name:"listed",description:"Filter by listed status",type:"boolean",target:"listed",negatedName:"no-listed",group:"basic"},{name:"base-image",description:"Filter by base image name",type:"string",target:"baseImage",group:"basic"},{name:"instance-type",description:"Filter by instance type",type:"string",target:"instanceType",group:"basic"},{name:"kms-type",description:"Filter by KMS type",type:"string",target:"kmsType",group:"basic"},{name:"node",description:"Filter by node name",type:"string",target:"node",group:"basic"},{name:"region",description:"Filter by region identifier",type:"string",target:"region",group:"basic"},Ee],examples:[{name:"List CVMs",value:"phala cvms ls"},{name:"Second page",value:"phala cvms ls --page 2"},{name:"Search by name",value:"phala cvms ls --search my-cvm"},{name:"Filter by status",value:"phala cvms ls --status running"},{name:"Output as JSON",value:"phala cvms ls --json"}]},kp=Je.object({page:Je.coerce.number().int().min(1).default(1),pageSize:Je.coerce.number().int().min(1).max(100).default(50),search:Je.string().optional(),status:Je.array(Je.string()).optional(),listed:Je.boolean().optional(),baseImage:Je.string().optional(),instanceType:Je.string().optional(),kmsType:Je.string().optional(),node:Je.string().optional(),region:Je.string().optional(),json:Je.boolean().default(!1)});function q_(e){return e.toLowerCase().endsWith("ing")?To.yellow(e):e==="running"?To.green(e):e==="stopped"?To.red(e):To.yellow(e)}async function B_(e,t){try{let r=await k(),n=await Mo(r,{page:e.page,pageSize:e.pageSize,search:e.search,status:e.status,listed:e.listed,baseImage:e.baseImage,instanceType:e.instanceType,kmsType:e.kmsType,node:e.node,region:e.region});if(n.success===!1)return t.fail(n.error.message),1;let o=n.data;if(e.json)return t.success(o),0;let a=["APP_ID","CVM","STATUS","UPTIME"],s=o.items.map(c=>({APP_ID:c.appId,CVM:c.cvmName,STATUS:q_(c.status),UPTIME:c.uptime??"-"}));return s.length===0?(i.info("No CVMs found"),0):(ce(a,s),i.info(`Page ${o.page}/${o.totalPages} (total ${o.total})`),0)}catch(r){return i.logDetailedError(r),t.fail(`Failed to list CVMs: ${r instanceof Error?r.message:String(r)}`),1}}var Ep=b({path:["cvms","list"],meta:Sp,schema:kp,handler:B_});import{z as W_}from"zod";var Ip={name:"list-nodes",description:"List worker nodes",stability:"unstable"},Ap=W_.object({});async function J_(e,t){try{let r=await k(),n=await Zt(r);if(!n.success)throw new Error(n.error.message);let{nodes:o,kms_list:a}=n.data;if(!o||o.length===0)return i.info("No available nodes found."),0;i.info("Available Nodes:");for(let s of o)if(i.info("----------------------------------------"),i.info(` ID: ${s.teepod_id}`),i.info(` Name: ${s.name}`),i.info(` Region: ${s.region_identifier}`),i.info(` FMSPC: ${s.fmspc||"N/A"}`),i.info(` Device ID: ${s.device_id||"N/A"}`),i.info(` Support Onchain KMS: ${s.support_onchain_kms}`),i.info(" Images:"),s.images&&s.images.length>0)for(let c of s.images)i.info(` - ${c.name}`),i.info(` Hash: ${c.os_image_hash||"N/A"}`);else i.info(" N/A");if(a&&a.length>0){i.info(`
197
+ Available KMS Instances:`);for(let s of a)i.info("----------------------------------------"),i.info(` ID: ${s.id}`),i.info(` URL: ${s.url}`),i.info(` Version: ${s.version}`),i.info(` Chain ID: ${s.chain_id}`),i.info(` Contract Address: ${s.kms_contract_address}`),i.info(` Gateway App ID: ${s.gateway_app_id}`)}return 0}catch(r){return i.error("Failed to list available nodes"),i.logDetailedError(r),1}}var xp=b({path:["cvms","list-nodes"],meta:Ip,schema:Ap,handler:J_});async function En(e){try{let t=await k(),r=await Q(t,{id:e});if(r.success&&r.data.public_logs===!1)return i.warn("Logs are disabled for this CVM (public_logs=false)."),i.warn("To enable logs, run:"),i.warn(` phala deploy --cvm-id ${e} --public-logs`),!0}catch(t){i.debug?.(`Failed to check CVM info: ${t}`)}return!1}function Lo(e,t){return async function(n,o){if(!o.cvmId)return o.fail("No CVM ID provided. Use --interactive to select interactively."),1;let{cvmId:a}=G.parse(o.cvmId),s=t(n),c=e.logType==="serial"?"serial":"container";try{if(n.follow){if(n.json)return o.fail("Cannot use --json with --follow"),1;i.info(`Streaming ${c} logs (press Ctrl+C to stop)...`),i.break();let m=new AbortController,p=!1,u=()=>{p=!0,m.abort()};process.on("SIGINT",u),process.on("SIGTERM",u);try{await e.streamLogs(a,d=>process.stdout.write(d),s,m.signal)}catch(d){if(d.name!=="AbortError")throw d}finally{process.removeListener("SIGINT",u),process.removeListener("SIGTERM",u)}return p&&(i.break(),i.info("Stopped streaming logs")),0}let l=await e.fetchLogs(a,s);return n.json?(o.success({logs:l,cvm_id:a}),0):(l.trim()?console.log(l):await En(a)||i.info("No logs available"),0)}catch(l){return o.fail(`Failed to fetch ${c} logs: ${l instanceof Error?l.message:String(l)}`),await En(a),1}}}import{z as Kt}from"zod";var Pp={name:"logs",description:"Fetch container logs from a CVM",stability:"deprecated",arguments:[B],options:[{name:"tail",shorthand:"n",description:"Lines from end",type:"number",target:"tail"},{name:"follow",shorthand:"f",description:"Stream logs in real-time",type:"boolean",target:"follow"},{name:"timestamps",shorthand:"t",description:"Show timestamps",type:"boolean",target:"timestamps"},{name:"container",shorthand:"c",description:"Container name or ID (defaults to first)",type:"string",target:"container"},ie,N],examples:[{name:"Show container logs from a CVM",value:"phala cvms logs app_abc123"},{name:"Show last 100 lines of logs",value:"phala cvms logs app_abc123 --tail 100"},{name:"Follow logs in real-time",value:"phala cvms logs app_abc123 --follow"},{name:"Show logs from a specific container",value:"phala cvms logs app_abc123 --container my-service"},{name:"Show logs with timestamps",value:"phala cvms logs app_abc123 --timestamps"}]},$p=Kt.object({cvmId:Kt.string().optional(),tail:Kt.number().optional(),follow:Kt.boolean().default(!1),timestamps:Kt.boolean().default(!1),container:Kt.string().optional(),json:Kt.boolean().default(!1),interactive:Kt.boolean().default(!1)});var Y_=Lo({logType:"container",fetchLogs:Jl,streamLogs:Ql},e=>({tail:e.tail,timestamps:e.timestamps,container:e.container})),Dp=b({path:["cvms","logs"],meta:Pp,schema:$p,handler:Y_});import Tp from"fs";import Z_ from"path";import{z as In}from"zod";var Rp={name:"replicate",description:"Create a replica of an existing CVM",stability:"unstable",arguments:[B],options:[{name:"teepod-id",description:"TEEPod ID for replica",type:"string",target:"teepodId"},{name:"env-file",shorthand:"e",description:"Path to environment file",type:"string",target:"envFile"},N],examples:[{name:"Replicate a CVM",value:"phala cvms replicate 1234 --teepod-id 5"}]},Mp=In.object({cvmId:In.string().optional(),teepodId:In.string().optional(),envFile:In.string().optional(),interactive:In.boolean().default(!1)});function X_(e){return Tp.readFileSync(e,"utf-8").split(`
198
+ `).filter(r=>r.trim()!==""&&!r.trim().startsWith("#")).map(r=>{let[n,...o]=r.split("=");return{key:n.trim(),value:o.join("=").trim()}})}async function Q_(e,t){try{if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;let{cvmId:r}=G.parse(t.cvmId),n;if(e.envFile){let s=Z_.resolve(process.cwd(),e.envFile);if(!Tp.existsSync(s))throw new Error(`Environment file not found: ${s}`);let c=X_(s),l=await Ol(r);i.info("Encrypting environment variables..."),n=await(0,$e.encryptEnvVars)(c,l.env_pubkey)}let o={};e.teepodId&&(o.teepod_id=Number.parseInt(e.teepodId,10)),n&&(o.encrypted_env=n);let a=await Vl(r,o);return i.success(`Successfully created replica of CVM UUID: ${r} with App ID: ${a.app_id}`),i.keyValueTable({"CVM UUID":a.vm_uuid.replace(/-/g,""),"App ID":a.app_id,Name:a.name,Status:a.status,TEEPod:`${a.teepod.name} (ID: ${a.teepod_id})`,vCPUs:a.vcpu,Memory:`${a.memory} MB`,"Disk Size":`${a.disk_size} GB`,"App URL":a.app_url||`${process.env.CLOUD_URL||"https://cloud.phala.com"}/dashboard/cvms/${a.vm_uuid.replace(/-/g,"")}`},{borderStyle:"rounded"}),i.success(`Your CVM replica is being created. You can check its status with:
199
+ phala cvms get ${a.app_id}`),0}catch(r){return i.error("Failed to create CVM replica"),i.logDetailedError(r),1}}var Lp=b({path:["cvms","replicate"],meta:Rp,schema:Mp,handler:Q_});import Gt from"chalk";import Ns from"inquirer";async function It(e,t={}){let{maxRetries:r=100,retryDelayMs:n=3e3,spinner:o,logRetries:a=!0}=t,s;for(let l=0;l<=r;l++)try{return await e()}catch(m){s=m;let p=m;if((p.message?.includes("409")||p.status===409||p.message?.includes("Conflict"))&&l<r)o&&o.stop(!0),a&&i.warn(`CVM is busy, retrying in ${n}ms... (attempt ${l+1}/${r})`),await new Promise(d=>setTimeout(d,n));else throw m}let c=s;throw new Error(`Failed after ${r} retries due to conflicts: ${c?.message||String(s)}`)}import{z as At}from"zod";var Np={name:"resize",description:"Resize resources for a CVM",stability:"unstable",arguments:[B],options:[N,{name:"vcpu",shorthand:"v",description:"Virtual CPUs",type:"string",target:"vcpu"},{name:"memory",shorthand:"m",description:"Memory in MB",type:"string",target:"memory"},{name:"disk-size",shorthand:"d",description:"Disk size in GB",type:"string",target:"diskSize"},{name:"allow-restart",shorthand:"r",description:"Allow CVM restart",type:"string",target:"allowRestart"},{name:"yes",shorthand:"y",description:"Skip confirmation",type:"boolean",target:"yes"},{name:"json",description:"Output in JSON format",type:"boolean",target:"json"}],examples:[{name:"Resize CVM interactively",value:"phala cvms resize"},{name:"Resize without confirmation",value:"phala cvms resize app_123 --vcpu 4 --memory 4096 --disk-size 120 --yes"}]},Up=At.object({cvmId:At.string().optional(),interactive:At.boolean().default(!1),vcpu:At.string().optional(),memory:At.string().optional(),diskSize:At.string().optional(),allowRestart:At.string().optional(),yes:At.boolean().default(!1),json:At.boolean().default(!1)});function Ts(e,t){if(e===void 0)return;let r=Number.parseInt(e,10);if(Number.isNaN(r)||r<0)throw new Error(`Please provide a valid non-negative number for ${t}`);return r}function eS(e){if(e===void 0)return;let t=e.trim().toLowerCase();if(["true","1","yes","y"].includes(t))return!0;if(["false","0","no","n"].includes(t))return!1;throw new Error(`Invalid value for --allow-restart: ${e}`)}async function Ls(e,t){return(await Ns.prompt([{type:"input",name:"value",message:e,default:t,validate:n=>{let o=Number.parseInt(n,10);return Number.isNaN(o)||o<0?"Please enter a valid non-negative number":!0},filter:n=>Number.parseInt(n,10)}])).value}async function tS(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=await k(),n=await Q(r,t.cvmId);if(!n.success)return t.fail(n.error.message),1;let o=n.data;if(!o)return t.fail("CVM not found"),1;let a=o.app_id,s,c,l,m;try{s=Ts(e.vcpu,"--vcpu"),c=Ts(e.memory,"--memory"),l=Ts(e.diskSize,"--disk-size"),m=eS(e.allowRestart)}catch(p){return i.error(p instanceof Error?p.message:String(p)),1}if(is()?(s===void 0&&(s=await Ls("Enter number of vCPUs:",o.resource.vcpu??void 0)),c===void 0&&(c=await Ls("Enter memory in MB:",o.resource.memory_in_gb?o.resource.memory_in_gb*1024:void 0)),l===void 0&&(l=await Ls("Enter disk size in GB:",o.resource.disk_in_gb??void 0)),m===void 0&&(m=(await Ns.prompt([{type:"confirm",name:"allowRestart",message:"Allow restart of the CVM if needed for resizing?",default:!1}])).allowRestart)):(s===void 0&&(s=o.resource.vcpu??void 0),c===void 0&&(c=o.resource.memory_in_gb?o.resource.memory_in_gb*1024:void 0),l===void 0&&(l=o.resource.disk_in_gb??void 0),m===void 0&&(m=!0)),is()){let p=o.resource.vcpu,u=o.resource.memory_in_gb?o.resource.memory_in_gb*1024:void 0,d=o.resource.disk_in_gb;if(i.keyValueTable({vCPUs:p!==s?`${Gt.red(p)} -> ${Gt.green(s)}`:p,Memory:u!==c?`${Gt.red(u)} MB -> ${Gt.green(c)} MB`:u,"Disk Size":d!==l?`${Gt.red(d)} GB -> ${Gt.green(l)} GB`:d,"Allow Restart":m?Gt.green("Yes"):Gt.red("No")}),!e.yes){let{confirm:g}=await Ns.prompt([{type:"confirm",name:"confirm",message:`Are you sure you want to resize CVM app_${a}?`,default:!1}]);if(!g)return i.info("Resize operation cancelled"),0}let f=i.startSpinner(`Resizing CVM with App ID app_${a}`);await It(()=>ds(a,s,c,l,m?1:0),{spinner:f}),f.stop(!0),i.break(),i.success(`Your CVM is being resized. You can check the dashboard for more details:
200
+ ${he}/dashboard/cvms/app_${a}`)}else await It(()=>ds(a,s,c,l,m?1:0)),t.success({app_id:a,vcpu:s,memory:c,disk_size:l,allow_restart:m});return 0}catch(r){return i.error("Failed to resize CVM"),i.logDetailedError(r),t.fail(r instanceof Error?r.message:String(r)),1}}var Op=b({path:["cvms","resize"],meta:Np,schema:Up,handler:tS});async function No(e,t=3e5){let r=await k(),n=Date.now(),o=2e3;for(i.info("Waiting for CVM to be ready...");Date.now()-n<t;){try{let a=await Q(r,{id:e});if(!a.success)i.warn(`Failed to get CVM info: ${a.error.message}`);else{let s=a.data,c=s.status,l=s.in_progress,m=Math.floor((Date.now()-n)/1e3);if(i.info(` [${m}s] status=${c}, in_progress=${l}`),c==="running"&&!l){let p=Math.floor((Date.now()-n)/1e3);i.success(`CVM is ready (took ${p}s)`);return}}}catch(a){i.warn(`Error checking CVM status: ${a}`)}await new Promise(a=>setTimeout(a,o))}throw new Error(`Timeout waiting for CVM to be ready (${Math.floor(t/1e3)}s)`)}import{z as Us}from"zod";var Fp={name:"restart",description:"Restart a CVM",stability:"stable",arguments:[B],options:[N],examples:[{name:"By app_id",value:"phala cvms restart app_123"},{name:"By UUID",value:"phala cvms restart 550e8400-e29b-41d4-a716-446655440000"},{name:"By name",value:"phala cvms restart my-app"}]},jp=Us.object({cvmId:Us.string().optional(),interactive:Us.boolean().default(!1)});async function rS(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=await k(),n=await Q(r,t.cvmId);if(!n.success)return t.fail(n.error.message),1;let o=n.data;o.progress?.target&&(i.warn("CVM is currently in progress (updating/restarting). Waiting for operation to complete..."),await No(o.vm_uuid,3e5));let a=i.startSpinner("Restarting CVM"),s=t.cvmId,c=await It(()=>Ja(r,s),{spinner:a});if(a.stop(!0),!c.success)return i.error(`Failed to restart CVM: ${c.error.message}`),1;let l=c.data;return i.break(),i.keyValueTable({"CVM ID":l.id,Name:l.name,Status:l.status,"App ID":`app_${l.app_id}`,"App URL":l.app_url||`${he}/dashboard/cvms/app_${l.app_id}`},{borderStyle:"rounded"}),i.break(),i.success(`Your CVM is being restarted. You can check the dashboard for more details:
201
+ ${he}/dashboard/cvms/app_${l.app_id}`),0}catch(r){return i.error("Failed to restart CVM"),i.logDetailedError(r),1}}var Vp=b({path:["cvms","restart"],meta:Fp,schema:jp,handler:rS});import{z as ar}from"zod";var zp={name:"serial-logs",description:"Fetch VM serial console logs from a CVM",stability:"deprecated",arguments:[B],options:[{name:"tail",shorthand:"n",description:"Lines from end",type:"number",target:"tail"},{name:"follow",shorthand:"f",description:"Stream logs in real-time",type:"boolean",target:"follow"},{name:"timestamps",shorthand:"t",description:"Show timestamps",type:"boolean",target:"timestamps"},ie,N],examples:[{name:"Show VM serial logs",value:"phala cvms serial-logs app_abc123"},{name:"Show last 100 lines of serial logs",value:"phala cvms serial-logs app_abc123 --tail 100"},{name:"Follow serial logs in real-time",value:"phala cvms serial-logs app_abc123 --follow"},{name:"Show serial logs with timestamps",value:"phala cvms serial-logs app_abc123 --timestamps"}]},Kp=ar.object({cvmId:ar.string().optional(),tail:ar.number().optional(),follow:ar.boolean().default(!1),timestamps:ar.boolean().default(!1),json:ar.boolean().default(!1),interactive:ar.boolean().default(!1)});var nS=Lo({logType:"serial",fetchLogs:Wl,streamLogs:Xl},e=>({tail:e.tail,timestamps:e.timestamps})),Gp=b({path:["cvms","serial-logs"],meta:zp,schema:Kp,handler:nS});import{z as Os}from"zod";var Hp={name:"start",description:"Start a stopped CVM",stability:"stable",arguments:[B],options:[N],examples:[{name:"Start CVM by app_id",value:"phala cvms start app_123"},{name:"Start CVM by UUID",value:"phala cvms start 550e8400-e29b-41d4-a716-446655440000"},{name:"Start CVM by name",value:"phala cvms start my-app"}]},qp=Os.object({cvmId:Os.string().optional(),interactive:Os.boolean().default(!1)});async function oS(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=await k(),n=i.startSpinner("Starting CVM"),o=t.cvmId,a=await It(()=>Ba(r,o),{spinner:n});if(n.stop(!0),!a.success)return i.error(`Failed to start CVM: ${a.error.message}`),1;let s=a.data;return i.break(),i.keyValueTable({"CVM ID":s.id,Name:s.name,Status:s.status,"App ID":`app_${s.app_id}`},{borderStyle:"rounded"}),i.break(),i.success(`Your CVM is being started. You can check the dashboard for more details:
202
+ ${he}/dashboard/cvms/app_${s.app_id}`),0}catch(r){return i.error("Failed to start CVM"),i.logDetailedError(r),1}}var Bp=b({path:["cvms","start"],meta:Hp,schema:qp,handler:oS});import{z as Fs}from"zod";var Wp={name:"stop",description:"Stop a running CVM",stability:"stable",arguments:[B],options:[N],examples:[{name:"Stop CVM by app_id",value:"phala cvms stop app_123"},{name:"Stop CVM by UUID",value:"phala cvms stop 550e8400-e29b-41d4-a716-446655440000"},{name:"Stop CVM by name",value:"phala cvms stop my-app"}]},Jp=Fs.object({cvmId:Fs.string().optional(),interactive:Fs.boolean().default(!1)});async function aS(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=await k(),n=i.startSpinner("Stopping CVM"),o=t.cvmId,a=await It(()=>Wa(r,o),{spinner:n});if(n.stop(!0),!a.success)return i.error(`Failed to stop CVM: ${a.error.message}`),1;let s=a.data;return i.break(),i.keyValueTable({"CVM ID":s.id,Name:s.name,Status:s.status,"App ID":`app_${s.app_id}`},{borderStyle:"rounded"}),i.break(),i.success(`Your CVM is being stopped. You can check the dashboard for more details:
203
+ ${he}/dashboard/cvms/app_${s.app_id}`),0}catch(r){return i.error("Failed to stop CVM"),i.logDetailedError(r),1}}var Yp=b({path:["cvms","stop"],meta:Wp,schema:Jp,handler:aS});import sS from"fs";import{z as Ur}from"zod";var Zp={name:"upgrade",description:'Upgrade a CVM to a new version (use "phala deploy" instead)',stability:"deprecated",arguments:[B],options:[N,{name:"compose",shorthand:"c",description:"Path to Docker Compose file",type:"string",target:"compose"},{name:"env-file",shorthand:"e",description:"Path to environment file",type:"string",target:"envFile"},{name:"debug",description:"Enable debug output",type:"boolean",target:"debug"}],examples:[{name:"Upgrade a CVM interactively",value:"phala cvms upgrade"},{name:"Upgrade using a compose file",value:"phala cvms upgrade app_123 --compose ./docker-compose.yml"}]},Xp=Ur.object({cvmId:Ur.string().optional(),interactive:Ur.boolean().default(!1),compose:Ur.string().optional(),envFile:Ur.string().optional(),debug:Ur.boolean().default(!1)});async function iS(e){if(e.compose)return e.compose;let r=Nr(["docker-compose.yml","docker-compose.yaml"],"Detected docker compose file: {path}");return kt("Enter the path to your Docker Compose file:",r,"file")}async function cS(e,t){try{if(i.warn('\u26A0\uFE0F This command is deprecated. Please use "phala deploy" instead.'),i.warn(`\u26A0\uFE0F This legacy API will be maintained but may have limited support.
204
+ `),!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;let r=await k(),n=await Q(r,t.cvmId);if(!n.success)return t.fail(n.error.message),1;let o=n.data;if(!o)return t.fail("CVM not found"),1;let a=o.app_id,s=o,c=await iS(e),l="";if(c)try{l=sS.readFileSync(c,"utf8")}catch(g){return i.error(`Failed to read Docker Compose file: ${g instanceof Error?g.message:String(g)}`),1}await or(),process.env.DSTACK_DOCKER_USERNAME&&process.env.DSTACK_DOCKER_PASSWORD?i.info("\u{1F510} Using private DockerHub registry credentials..."):process.env.DSTACK_AWS_ACCESS_KEY_ID&&process.env.DSTACK_AWS_SECRET_ACCESS_KEY&&process.env.DSTACK_AWS_REGION&&process.env.DSTACK_AWS_ECR_REGISTRY?i.info(`\u{1F510} Using private AWS ECR registry: ${process.env.DSTACK_AWS_ECR_REGISTRY}`):i.info("\u{1F510} Using public DockerHub registry...");let m,p=[];if(e.envFile)try{let g=wn([],e.envFile);m=await(0,$e.encryptEnvVars)(g,s.kms_info?.encrypted_env_pubkey),p=g.map(h=>h.key)}catch(g){return i.error(`Failed to read environment file: ${g instanceof Error?g.message:String(g)}`),1}let u={compose_manifest:{docker_compose_file:l,manifest_version:1,runner:"docker-compose",version:"1.0.0",features:["kms","tproxy-net"],name:`app_${a}`,allowed_envs:p},encrypted_env:m,allow_restart:!0,env_keys:p},d=i.startSpinner(`Upgrading CVM app_${a}`),f=await Gl(a,u);return f?(d.stop(!0),f.detail&&i.info(`Details: ${f.detail}`),i.break(),i.success(`Your CVM is being upgraded. You can check the dashboard for more details:
205
+ ${he}/dashboard/cvms/app_${a}`),0):(d.stop(!1),i.error("Failed to upgrade CVM"),1)}catch(r){return i.error(`Failed to upgrade CVM: ${r instanceof Error?r.message:String(r)}`),e.debug&&i.error("Full Error:",r),1}}var Qp=b({path:["cvms","upgrade"],meta:Zp,schema:Xp,handler:cS});var Uo={group:ep,commands:[np,dp,hp,bp,_p,Ep,xp,Dp,Lp,Op,Vp,Gp,Bp,Yp,Qp],subgroups:[]};import{z as Z}from"zod";var eu={name:"deploy",category:"deploy",description:"Deploy new CVM or update existing one",stability:"stable",arguments:[],options:[Dr,bl,N,{name:"debug",description:"Enable debug logging",type:"boolean",target:"debug",group:"advanced"},{name:"name",shorthand:"n",description:"CVM name (defaults to directory name)",type:"string",target:"name",group:"basic"},{name:"compose",shorthand:"c",description:"Path to Docker Compose file (default: docker-compose.yml)",type:"string",target:"compose",group:"basic"},{name:"instance-type",shorthand:"t",description:"Instance type (e.g., tdx.small, auto-selected if omitted)",type:"string",target:"instanceType",group:"basic"},{name:"vcpu",description:"Use --instance-type instead",type:"string",target:"vcpu",deprecated:!0,group:"deprecated"},{name:"memory",description:"Use --instance-type instead",type:"string",target:"memory",deprecated:!0,group:"deprecated"},{name:"disk-size",description:`Disk size with unit (e.g., 50G, default: ${nr}GB)`,type:"string",target:"diskSize",group:"advanced"},{name:"fs",description:"Filesystem type (ext4 or zfs, default: zfs)",type:"string",target:"fs",group:"advanced"},{name:"image",description:"OS image version (auto-selected if omitted)",type:"string",target:"image",group:"advanced"},{name:"region",shorthand:"r",description:"Preferred region (e.g., us-west, auto-selected if omitted)",type:"string",target:"region",group:"basic"},{name:"node-id",description:"Node ID (auto-selected if omitted)",type:"string",target:"nodeId",group:"advanced"},{name:"env",shorthand:"e",description:"Environment variable (KEY=VALUE) or env file path (repeatable)",type:"string[]",target:"env",group:"basic"},{name:"env-file",description:"Use -e instead",type:"string",target:"envFile",deprecated:!0,group:"deprecated"},{name:"kms",description:"KMS type: phala (default), ethereum/eth, or base",type:"string",target:"kms",group:"basic"},{name:"kms-id",description:"Use --kms instead",type:"string",target:"kmsId",deprecated:!0,group:"deprecated"},{name:"custom-app-id",description:"Custom App ID (requires --nonce for PHALA KMS)",type:"string",target:"customAppId",group:"advanced"},{name:"nonce",description:"Nonce for deterministic app_id (requires --custom-app-id, PHALA KMS only)",type:"string",target:"nonce",group:"advanced"},{name:"pre-launch-script",description:"Path to pre-launch script",type:"string",target:"preLaunchScript",group:"advanced"},{name:"private-key",description:"Private key for signing transactions.",type:"string",target:"privateKey",group:"advanced"},{name:"rpc-url",description:"RPC URL for the blockchain.",type:"string",target:"rpcUrl",group:"advanced"},{name:"wait",description:"Wait for deployment/update completion",type:"boolean",target:"wait",group:"basic"},{name:"ssh-pubkey",description:"SSH public key path (default: ~/.ssh/id_rsa.pub)",type:"string",target:"sshPubkey",group:"basic"},{name:"dev-os",description:"Use dev OS image (requires SSH key)",type:"boolean",target:"devOs",negatedName:"no-dev-os",group:"basic"},{name:"public-logs",description:"Make CVM logs publicly accessible (default: true)",type:"boolean",target:"publicLogs",negatedName:"no-public-logs"},{name:"public-sysinfo",description:"Make CVM system info publicly accessible (default: true)",type:"boolean",target:"publicSysinfo",negatedName:"no-public-sysinfo"},{name:"listed",description:"List CVM on the public Trust Center (default: false)",type:"boolean",target:"listed",negatedName:"no-listed"}],examples:[{name:"Deploy new CVM",value:"phala deploy"},{name:"Deploy with environment variables",value:"phala deploy -e NODE_ENV=production -e DEBUG=true"},{name:"Deploy with env file",value:"phala deploy -e .env"},{name:"Deploy with specific instance type",value:"phala deploy --instance-type tdx.medium"},{name:"Deploy to specific region",value:"phala deploy --region us-west"},{name:"Deploy with Ethereum KMS",value:"phala deploy --kms ethereum --private-key <key> --rpc-url <url>"},{name:"Update existing CVM by ID",value:"phala deploy --cvm-id app_abc123"},{name:"Update CVM with new compose file and env",value:"phala deploy --cvm-id my-app --compose ./new-docker-compose.yml -e .env"},{name:"Update CVM and wait for completion",value:"phala deploy --cvm-id app_abc123 --wait"},{name:"Update CVM from phala.toml",value:"phala deploy"},{name:"Deploy with logs and sysinfo disabled",value:"phala deploy --no-public-logs --no-public-sysinfo"},{name:"Deploy and list on Trust Center",value:"phala deploy --listed"},{name:"Update existing CVM to disable logs",value:"phala deploy --cvm-id app_123 --no-public-logs"}]},tu=Z.object({compose:Z.string().optional(),json:Z.boolean().default(!1),debug:Z.boolean().default(!1),apiToken:Z.string().optional(),name:Z.string().optional(),instanceType:Z.string().optional(),vcpu:Z.string().optional(),memory:Z.string().optional(),diskSize:Z.string().optional(),fs:Z.enum(["ext4","zfs"]).optional(),image:Z.string().optional(),region:Z.string().optional(),nodeId:Z.string().optional(),env:Z.array(Z.string()).optional(),envFile:Z.string().optional(),interactive:Z.boolean().default(!1),kms:Z.enum(["phala","ethereum","eth","base"]).default("phala"),kmsId:Z.string().optional(),cvmId:Z.string().optional(),customAppId:Z.string().optional(),nonce:Z.string().optional(),preLaunchScript:Z.string().optional(),privateKey:Z.string().optional(),rpcUrl:Z.string().optional(),wait:Z.boolean().default(!1),sshPubkey:Z.string().optional(),devOs:Z.boolean().optional(),publicLogs:Z.boolean().optional(),publicSysinfo:Z.boolean().optional(),listed:Z.boolean().optional()});import xt from"path";import au from"os";function lS(e){let t=e.indexOf("=");if(t===-1)return!1;let r=e.substring(0,t);return r.includes("/")||r.includes("\\")?!1:/^[A-Za-z_][A-Za-z0-9_]*$/.test(r)}function Oo(e){let t={files:[],keyValues:[]};for(let r of e)if(lS(r)){let n=r.indexOf("="),o=r.substring(0,n),a=r.substring(n+1);t.keyValues.push({key:o,value:a})}else t.files.push(r);return t}function Fo(e){let t=new Map;for(let r of e)t.set(r.key,r.value);return Array.from(t.entries()).map(([r,n])=>({key:r,value:n}))}function ru(e,t="B"){if(!e||typeof e!="string")throw new Error("Invalid input: must be a non-empty string");let r=e.trim().match(/^(\d+(?:\.\d+)?)\s*([KkMmGgTt][Bb]?)?$/);if(!r)throw new Error(`Invalid format: ${e}. Expected format: <number>[unit] (e.g., 2G, 500MB, 1T)`);let n=Number.parseFloat(r[1]),o=(r[2]||t).toUpperCase().replace("B",""),a={K:1024,M:1024*1024,G:1024*1024*1024,T:1024*1024*1024*1024,"":1};if(!(o in a))throw new Error(`Unsupported unit: ${o}. Supported units: B, K/KB, M/MB, G/GB, T/TB`);return Math.round(n*a[o])}function nu(e){let t=ru(e,"MB"),r=Math.round(t/(1024*1024));if(r%1024!==0)throw new Error(`Memory must be a multiple of 1GB (1024MB). Got: ${r}MB`);return r}function ou(e){let t=ru(e,"GB"),r=Math.round(t/(1024*1024*1024));if(r%1!==0)throw new Error(`Disk size must be a multiple of 1GB. Got: ${r}GB`);return r}import jo from"dedent";import tt from"fs-extra";import Vo from"inquirer";function mS(e,t){if(e instanceof en)return t.json?{success:!1,error_code:e.errorCode,message:e.message,details:e.structuredDetails,suggestions:e.suggestions,links:e.links}:Jn(e);if(e&&typeof e=="object"&&"response"in e){let o=e.response?.data?.detail;if(o&&typeof o=="object"&&"error_code"in o){let{error_code:a,message:s,details:c,suggestions:l,links:m}=o;if(t.json)return{success:!1,error_code:a,message:s,details:c,suggestions:l,links:m};let p=`
206
+ Error [${a}]: ${s}
207
+ `;if(c&&c.length>0){p+=`
252
208
  Details:
253
- `;for(let p of i)p.message?u+=` - ${p.message}
254
- `:p.field&&p.value!==void 0&&(u+=` - ${p.field}: ${p.value}
255
- `)}if(c&&c.length>0){u+=`
209
+ `;for(let u of c)u.message?p+=` - ${u.message}
210
+ `:u.field&&u.value!==void 0&&(p+=` - ${u.field}: ${u.value}
211
+ `)}if(l&&l.length>0){p+=`
256
212
  Suggestions:
257
- `;for(let p of c)u+=` - ${p}
258
- `}if(m&&m.length>0){u+=`
213
+ `;for(let u of l)p+=` - ${u}
214
+ `}if(m&&m.length>0){p+=`
259
215
  Learn more:
260
- `;for(let p of m)u+=` - ${p.label}: ${p.url}
261
- `}return u}}let r=e instanceof Error?e.message:String(e||"Unknown error");return t.json?{success:!1,error:r}:`
216
+ `;for(let u of m)p+=` - ${u.label}: ${u.url}
217
+ `}return p}}let r=e instanceof Error?e.message:String(e||"Unknown error");return t.json?{success:!1,error:r}:`
262
218
  Error: ${r}
263
- `}var y5="2025-10-28";async function m$({apiToken:e,interactive:t}){let r=an(void 0,{apiToken:e});if(r.apiKey)return dr({apiKey:r.apiKey,baseURL:r.baseURL,version:y5});if(t){let{apiToken:n}=await uf.prompt([{type:"password",name:"apiToken",message:"Enter your API token:",validate:o=>o.trim()?!0:"API token is required"}]);return dr({apiKey:n,baseURL:r.baseURL,version:y5})}throw new Error("API token is required. Please run 'phala login' or set PHALA_CLOUD_API_KEY environment variable")}async function u$({dockerComposePath:e,interactive:t}){if(!e)if(t){let n=gi(["docker-compose.yml","docker-compose.yaml"],"Detected docker compose file: {path}");e=await Pn("Enter the path to your Docker Compose file:",n,"file")}else throw new Error(mf(`
219
+ `}var su="2025-10-28";async function pS({apiToken:e,interactive:t}){let r=ht(void 0,{apiToken:e});if(r.apiKey)return Qe({apiKey:r.apiKey,baseURL:r.baseURL,version:su});if(t){let{apiToken:n}=await Vo.prompt([{type:"password",name:"apiToken",message:"Enter your API token:",validate:o=>o.trim()?!0:"API token is required"}]);return Qe({apiKey:n,baseURL:r.baseURL,version:su})}throw new Error("API token is required. Please run 'phala login' or set PHALA_CLOUD_API_KEY environment variable")}async function uS({dockerComposePath:e,interactive:t}){if(!e)if(t){let n=Nr(["docker-compose.yml","docker-compose.yaml"],"Detected docker compose file: {path}");e=await kt("Enter the path to your Docker Compose file:",n,"file")}else throw new Error(jo(`
264
220
  Docker Compose file is required.
265
221
 
266
222
  Usage examples:
@@ -276,7 +232,7 @@ Error: ${r}
276
232
  --rpc-url <url> RPC URL for the blockchain
277
233
 
278
234
  Run with --interactive for guided setup
279
- `));if(!yr.existsSync(e))throw new Error(`Docker compose file not found: ${e}`);return yr.readFileSync(e,"utf8")}var p$=async(e,t)=>{let r=e.privateKey||process.env.PRIVATE_KEY;if(t&&!e.privateKey)if(e.interactive)r=(await uf.prompt([{type:"password",name:"privateKey",message:"Enter your private key:",validate:o=>o.trim()?!0:"Private key is required"}])).privateKey;else throw new Error("When using on-chain KMS, either --private-key (or PRIVATE_KEY env) must be provided");return r};function b5(e){e.kmsId&&l.warn("--kms-id is deprecated. Use --kms instead.");let t=(e.kms??"phala").toLowerCase(),r;switch(t){case"eth":case"ethereum":r="ETHEREUM";break;case"base":r="BASE";break;default:r="PHALA";break}return{kmsType:r,deprecatedKmsId:e.kmsId}}var l$=async e=>{let t=e.name;if(e.name){if(!mi(e.name))throw new Error(`Invalid CVM name: "${e.name}". Name must be 5-63 characters, start with letter, and contain only letters/numbers/hyphens.`);return e.name}let r=Mn.basename(process.cwd()),n=nw(r);return e.interactive?t=(await uf.prompt([{type:"input",name:"name",message:"Enter a name for the CVM:",default:n,validate:s=>s.trim()?mi(s.trim())?!0:"Name must be 5-63 characters, start with letter, and contain only letters/numbers/hyphens":"CVM name is required"}])).name:t=n,t},f$=async e=>{let t=[];if(e.envFile&&typeof e.envFile=="string"){l.warn("--env-file is deprecated. Use -e <file> or -e KEY=VALUE instead.");try{let r=yr.readFileSync(e.envFile,{encoding:"utf8"});t.push(...Al(r))}catch(r){throw new Error(`Error reading environment file ${e.envFile}: ${r instanceof Error?r.message:String(r)}`)}}if(e.env&&e.env.length>0){let r=p5(e.env);for(let n of r.files){let o=Mn.resolve(process.cwd(),n);if(!yr.existsSync(o))throw new Error(`Environment file not found: ${n}`);try{let s=yr.readFileSync(o,{encoding:"utf8"});t.push(...Al(s))}catch(s){throw new Error(`Error reading environment file ${n}: ${s instanceof Error?s.message:String(s)}`)}}t.push(...r.keyValues)}if(e.interactive&&t.length===0&&!e.env&&!e.envFile){let{envPath:r}=await uf.prompt([{type:"input",name:"envPath",message:"Enter the path to your environment file (leave empty to skip):",default:"",validate:n=>{if(!n||n.trim()==="")return!0;let o=Mn.resolve(process.cwd(),n);return yr.existsSync(o)?!0:`File not found at ${o}`}}]);if(r.trim()){let n=Mn.resolve(process.cwd(),r.trim()),o=yr.readFileSync(n,{encoding:"utf8"});t.push(...Al(o))}}if(t.length!==0)return l5(t)},d$=async e=>{let t=e.sshPubkey;if(!(e.devOs===!1&&!e.sshPubkey)){if(t){if(t.startsWith("~")&&(t=Mn.join(h5.homedir(),t.slice(1))),!yr.existsSync(t))throw new Error(`SSH public key file not found: ${t}`)}else{let r=h5.homedir(),n=[Mn.join(r,".ssh","id_rsa.pub"),Mn.join(r,".ssh","id_ed25519.pub"),Mn.join(r,".ssh","id_ecdsa.pub"),Mn.join(r,".ssh","id_dsa.pub")];for(let o of n)if(yr.existsSync(o)){t=o;break}if(!t){if(e.devOs)throw new Error(mf(`
235
+ `));if(!tt.existsSync(e))throw new Error(`Docker compose file not found: ${e}`);return tt.readFileSync(e,"utf8")}var dS=async(e,t)=>{let r=e.privateKey||process.env.PRIVATE_KEY;if(t&&!e.privateKey)if(e.interactive)r=(await Vo.prompt([{type:"password",name:"privateKey",message:"Enter your private key:",validate:o=>o.trim()?!0:"Private key is required"}])).privateKey;else throw new Error("When using on-chain KMS, either --private-key (or PRIVATE_KEY env) must be provided");return r};function iu(e){e.kmsId&&i.warn("--kms-id is deprecated. Use --kms instead.");let t=(e.kms??"phala").toLowerCase(),r;switch(t){case"eth":case"ethereum":r="ETHEREUM";break;case"base":r="BASE";break;default:r="PHALA";break}return{kmsType:r,deprecatedKmsId:e.kmsId}}var fS=async e=>{let t=e.name;if(e.name){if(!Ar(e.name))throw new Error(`Invalid CVM name: "${e.name}". Name must be 5-63 characters, start with letter, and contain only letters/numbers/hyphens.`);return e.name}let r=xt.basename(process.cwd()),n=Hc(r);return e.interactive?t=(await Vo.prompt([{type:"input",name:"name",message:"Enter a name for the CVM:",default:n,validate:a=>a.trim()?Ar(a.trim())?!0:"Name must be 5-63 characters, start with letter, and contain only letters/numbers/hyphens":"CVM name is required"}])).name:t=n,t},gS=async e=>{let t=[];if(e.envFile&&typeof e.envFile=="string"){i.warn("--env-file is deprecated. Use -e <file> or -e KEY=VALUE instead.");try{let r=tt.readFileSync(e.envFile,{encoding:"utf8"});t.push(...$r(r))}catch(r){throw new Error(`Error reading environment file ${e.envFile}: ${r instanceof Error?r.message:String(r)}`)}}if(e.env&&e.env.length>0){let r=Oo(e.env);for(let n of r.files){let o=xt.resolve(process.cwd(),n);if(!tt.existsSync(o))throw new Error(`Environment file not found: ${n}`);try{let a=tt.readFileSync(o,{encoding:"utf8"});t.push(...$r(a))}catch(a){throw new Error(`Error reading environment file ${n}: ${a instanceof Error?a.message:String(a)}`)}}t.push(...r.keyValues)}if(e.interactive&&t.length===0&&!e.env&&!e.envFile){let{envPath:r}=await Vo.prompt([{type:"input",name:"envPath",message:"Enter the path to your environment file (leave empty to skip):",default:"",validate:n=>{if(!n||n.trim()==="")return!0;let o=xt.resolve(process.cwd(),n);return tt.existsSync(o)?!0:`File not found at ${o}`}}]);if(r.trim()){let n=xt.resolve(process.cwd(),r.trim()),o=tt.readFileSync(n,{encoding:"utf8"});t.push(...$r(o))}}if(t.length!==0)return Fo(t)},hS=async e=>{let t=e.sshPubkey;if(!(e.devOs===!1&&!e.sshPubkey)){if(t){if(t.startsWith("~")&&(t=xt.join(au.homedir(),t.slice(1))),!tt.existsSync(t))throw new Error(`SSH public key file not found: ${t}`)}else{let r=au.homedir(),n=[xt.join(r,".ssh","id_rsa.pub"),xt.join(r,".ssh","id_ed25519.pub"),xt.join(r,".ssh","id_ecdsa.pub"),xt.join(r,".ssh","id_dsa.pub")];for(let o of n)if(tt.existsSync(o)){t=o;break}if(!t){if(e.devOs)throw new Error(jo(`
280
236
  SSH public key is required for dev images but not found.
281
237
 
282
238
  Searched for:
@@ -288,37 +244,38 @@ Error: ${r}
288
244
  Please either:
289
245
  1. Create an SSH key pair: ssh-keygen -t rsa
290
246
  2. Specify a different key file: --ssh-pubkey <path>
291
- `));return}}try{let r=yr.readFileSync(t,"utf8").trim();return l.info(`Using SSH public key from ${t}`),r}catch(r){throw new Error(`Failed to read SSH public key from ${t}: ${r instanceof Error?r.message:String(r)}`)}}};var g$=(e,t)=>({publicLogs:e.publicLogs??t?.public_logs??!0,publicSysinfo:e.publicSysinfo??t?.public_sysinfo??!0,listed:e.listed??t?.listed??!1}),h$=(e,t,r,n,o,s,a)=>{let i={name:"",docker_compose_file:r,allowed_envs:n?.map(f=>f.key)||[],public_logs:o.publicLogs,public_sysinfo:o.publicSysinfo};a&&(i.pre_launch_script=a);let c={name:t,compose_file:i,listed:o.listed},{kmsType:m,deprecatedKmsId:u}=s??b5(e);e.instanceType&&(c.instance_type=e.instanceType),e.vcpu&&(c.vcpu=Number(e.vcpu)),e.memory&&(c.memory=d5(e.memory)),e.diskSize&&(c.disk_size=g5(e.diskSize)),e.nodeId&&(c.teepod_id=Number(e.nodeId)),e.region&&(c.region=e.region),e.image&&(c.image=e.image),c.kms=m,u&&(c.kms_id=u);let p=m==="ETHEREUM"||m==="BASE";if(e.devOs===!0?c.prefer_dev=!0:(e.devOs===!1||p)&&(c.prefer_dev=!1),e.customAppId&&(c.app_id=e.customAppId,m==="PHALA")){if(!e.nonce)throw new Error("--nonce is required when using --custom-app-id with PHALA KMS.");let f=Number(e.nonce);if(Number.isNaN(f))throw new Error(`Invalid nonce value: "${e.nonce}". Nonce must be a valid number.`);c.nonce=f}if(e.nonce&&!e.customAppId)throw new Error("--nonce requires --custom-app-id to be specified.");return c},y$=async(e,t,r,n,o,s,a,i)=>{let c=b5(e),m=await l$(e),u=await d$(e),p=[...r||[]];u&&p.push({key:"DSTACK_AUTHORIZED_KEYS",value:u});let f=g$(e,a),d=h$(e,m,t,p,f,c,i);o.write(`Provisioning CVM ${m}...
292
- `);let g=await J0(n,d);if(!g.success){let C=c$(g.error,e);throw l.error("Error in provisioning CVM:",C),g.error}let h=g.data,y,b=h.kms_info;if(!h.app_id&&!!b?.chain_id&&!!b?.kms_contract_address){if(!b?.chain_id||!b?.chain)throw new Error("KMS chain info is missing from provision response. Please retry or contact support.");if(!b?.kms_contract_address)throw new Error("KMS contract address is missing from provision response. Please retry or contact support.");let C=await p$(e,b.chain_id),k=await vw({chain:b.chain,rpcUrl:e.rpcUrl,kmsContractAddress:b.kms_contract_address,privateKey:C,deviceId:h.device_id,composeHash:h.compose_hash});if(!k.success){l.logDetailedError(k,"Deploy App Auth");let j=typeof k=="object"&&k!==null?JSON.stringify(k):String(k);throw new Error(`Deployment contract failed: ${j}`)}let _=k.data,I=b.slug||b.id;if(!I)throw new Error("KMS reference (slug or id) is missing from provision response");let M=await Il(n,{app_id:_.appId,kms:I});if(!M.success)throw l.logDetailedError(M.error,"Get App Env Encrypt PubKey"),new Error(`Failed to get app env encrypt pubkey: ${M.error.message}`);let F=M.data,L=await(0,gr.encryptEnvVars)(p,F.public_key);y=await _l(n,{app_id:_.appId,encrypted_env:L,compose_hash:h.compose_hash,kms_id:I,contract_address:_.appAuthAddress,deployer_address:_.deployer})}else{let C=p&&p.length>0?await(0,gr.encryptEnvVars)(p,h.app_env_encrypt_pubkey):void 0;y=await _l(n,{app_id:h.app_id,encrypted_env:C,compose_hash:h.compose_hash,kms_id:c.deprecatedKmsId})}if(!y.success)throw l.logDetailedError(y.error,"Commit CVM Provision"),new Error(`Failed to commit CVM provision: ${y.error.message}`);let v=y.data;if(e?.json!==!1)o.write(`${JSON.stringify({success:!0,vm_uuid:v.vm_uuid,name:v.name,app_id:v.app_id,dashboard_url:`${je}/dashboard/cvms/${v.vm_uuid}`},null,2)}
293
- `);else{let C=mf`
247
+ `));return}}try{let r=tt.readFileSync(t,"utf8").trim();return i.info(`Using SSH public key from ${t}`),r}catch(r){throw new Error(`Failed to read SSH public key from ${t}: ${r instanceof Error?r.message:String(r)}`)}}};var yS=(e,t)=>({publicLogs:e.publicLogs??t?.public_logs??!0,publicSysinfo:e.publicSysinfo??t?.public_sysinfo??!0,listed:e.listed??t?.listed??!1}),vS=(e,t,r,n,o,a,s)=>{let c={name:"",docker_compose_file:r,allowed_envs:n?.map(d=>d.key)||[],public_logs:o.publicLogs,public_sysinfo:o.publicSysinfo};s&&(c.pre_launch_script=s),e.fs&&(c.storage_fs=e.fs);let l={name:t,compose_file:c,listed:o.listed},{kmsType:m,deprecatedKmsId:p}=a??iu(e);e.instanceType&&(l.instance_type=e.instanceType),e.vcpu&&(l.vcpu=Number(e.vcpu)),e.memory&&(l.memory=nu(e.memory)),e.diskSize&&(l.disk_size=ou(e.diskSize)),e.nodeId&&(l.teepod_id=Number(e.nodeId)),e.region&&(l.region=e.region),e.image&&(l.image=e.image),l.kms=m,p&&(l.kms_id=p);let u=m==="ETHEREUM"||m==="BASE";if(e.devOs===!0?l.prefer_dev=!0:(e.devOs===!1||u)&&(l.prefer_dev=!1),e.customAppId&&(l.app_id=e.customAppId,m==="PHALA")){if(!e.nonce)throw new Error("--nonce is required when using --custom-app-id with PHALA KMS.");let d=Number(e.nonce);if(Number.isNaN(d))throw new Error(`Invalid nonce value: "${e.nonce}". Nonce must be a valid number.`);l.nonce=d}if(e.nonce&&!e.customAppId)throw new Error("--nonce requires --custom-app-id to be specified.");return l},bS=async(e,t,r,n,o,a,s,c)=>{let l=iu(e),m=await fS(e),p=await hS(e),u=[...r||[]];p&&u.push({key:"DSTACK_AUTHORIZED_KEYS",value:p});let d=yS(e,s),f=vS(e,m,t,u,d,l,c);o.write(`Provisioning CVM ${m}...
248
+ `);let g=await Ka(n,f);if(!g.success){let S=mS(g.error,e);throw i.error("Error in provisioning CVM:",S),g.error}let h=g.data,v,w=h.kms_info;if(!h.app_id&&!!w?.chain_id&&!!w?.kms_contract_address){if(!w?.chain_id||!w?.chain)throw new Error("KMS chain info is missing from provision response. Please retry or contact support.");if(!w?.kms_contract_address)throw new Error("KMS contract address is missing from provision response. Please retry or contact support.");let S=await dS(e,w.chain_id),E=await sl({chain:w.chain,rpcUrl:e.rpcUrl,kmsContractAddress:w.kms_contract_address,privateKey:S,deviceId:h.device_id,composeHash:h.compose_hash});if(!E.success){i.logDetailedError(E,"Deploy App Auth");let oe=typeof E=="object"&&E!==null?JSON.stringify(E):String(E);throw new Error(`Deployment contract failed: ${oe}`)}let x=E.data,P=w.slug||w.id;if(!P)throw new Error("KMS reference (slug or id) is missing from provision response");let O=await xr(n,{app_id:x.appId,kms:P});if(!O.success)throw i.logDetailedError(O.error,"Get App Env Encrypt PubKey"),new Error(`Failed to get app env encrypt pubkey: ${O.error.message}`);let V=O.data,te=await(0,$e.encryptEnvVars)(u,V.public_key);v=await Yn(n,{app_id:x.appId,encrypted_env:te,compose_hash:h.compose_hash,kms_id:P,contract_address:x.appAuthAddress,deployer_address:x.deployer})}else{let S=u&&u.length>0?await(0,$e.encryptEnvVars)(u,h.app_env_encrypt_pubkey):void 0;v=await Yn(n,{app_id:h.app_id,encrypted_env:S,compose_hash:h.compose_hash,kms_id:l.deprecatedKmsId})}if(!v.success)throw i.logDetailedError(v.error,"Commit CVM Provision"),new Error(`Failed to commit CVM provision: ${v.error.message}`);let _=v.data;if(e?.json!==!1)o.write(`${JSON.stringify({success:!0,vm_uuid:_.vm_uuid,name:_.name,app_id:_.app_id,dashboard_url:`${he}/dashboard/cvms/${_.vm_uuid}`},null,2)}
249
+ `);else{let S=jo`
294
250
  CVM created successfully!
295
251
 
296
- CVM ID: ${v.vm_uuid}
297
- Name: ${v.name}
298
- App ID: ${v.app_id}
299
- Dashboard URL: ${je}/dashboard/cvms/${v.vm_uuid}
300
- `;o.write(`${C}
301
- `)}},b$=async(e,t,r,n,o,s)=>{let[a,i]=await Promise.all([Re(n,{id:e.uuid}),Ic(n,{id:e.uuid})]);if(!a.success)throw l.logDetailedError(a.error,"Get CVM Info"),new Error(`Failed to get cvm info: ${a.error.message}`);if(!i.success)throw l.logDetailedError(i.error,"Get CVM Compose File"),new Error(`Failed to get cvm compose file: ${i.error.message}`);let c=a.data,m=i.data;m.docker_compose_file=t,s&&(m.pre_launch_script=s),r&&r.length>0&&(m.allowed_envs=r.map(y=>y.key)),l.info(`Preparing update for CVM ${e.uuid}...`);let u=await Z0(n,{id:e.uuid,app_compose:m,update_env_vars:!!(r&&r.length>0)});if(!u.success)throw l.logDetailedError(u.error,"Provision CVM Compose File Update"),new Error(`Failed to provision cvm compose file: ${u.error.message}`);let p=u.data,f;if(c.kms_info?.chain_id){if(!e.privateKey)throw new Error("Private key is required for contract DstackApp");e.debug&&(console.log("[DEBUG] provision.compose_hash:",p.compose_hash),console.log("[DEBUG] cvm.app_id:",c.app_id));let y=await Cw({chain:c.kms_info?.chain,rpcUrl:e.rpcUrl,appId:c.app_id,composeHash:p.compose_hash,privateKey:e.privateKey});if(!y.success){l.logDetailedError(y,"Add Compose Hash");let b=typeof y=="object"&&y!==null?JSON.stringify(y):String(y);throw new Error(`Failed to add compose hash: ${b}`)}if(e.debug){let b=y.data;console.log("[DEBUG] addComposeHash.transactionHash:",b.transactionHash),console.log("[DEBUG] addComposeHash.composeHash:",b.composeHash)}if(r&&r.length>0){let b=c.kms_info?.slug||c.kms_info?.id;if(!b)throw new Error("KMS slug or id is required for decentralized KMS");let x=await Il(n,{app_id:c.app_id,kms:b});if(!x.success)throw l.logDetailedError(x.error,"Get App Env Encrypt PubKey"),new Error(`Failed to get app env encrypt pubkey: ${x.error.message}`);let v=x.data;f=await(0,gr.encryptEnvVars)(r,v.public_key)}}else if(r&&r.length>0){if(!c.encrypted_env_pubkey)throw new Error("CVM encrypted_env_pubkey is required for centralized KMS");f=await(0,gr.encryptEnvVars)(r,c.encrypted_env_pubkey)}let d={id:e.uuid,compose_hash:p.compose_hash,encrypted_env:f,env_keys:r?.length?r.map(y=>y.key):void 0,update_env_vars:r?.length?!0:void 0};e.debug&&console.log("[DEBUG] commit.compose_hash:",d.compose_hash);let g=await Y0(n,d);if(!g.success)throw l.logDetailedError(g.error,"Commit CVM Compose File Update"),new Error(`Failed to commit CVM compose file update: ${g.error.message}`);let h=e.publicLogs!==void 0||e.publicSysinfo!==void 0;if(e.wait||h){l.info("Waiting for update to complete...");try{await cf(e.uuid,3e5)}catch(y){throw l.logDetailedError(y,"Wait for CVM Ready"),new Error(`Wait failed: ${y instanceof Error?y.message:String(y)}`)}}if(h){let y=await ng(n,{id:e.uuid,public_logs:e.publicLogs??c.public_logs,public_sysinfo:e.publicSysinfo??c.public_sysinfo});y.success?l.info("CVM visibility settings updated"):"status"in y.error&&y.error.status===409?l.warn("Cannot update visibility while CVM operation is in progress. Please wait and try again."):l.warn(`Failed to update visibility: ${y.error.message}`)}e?.json!==!1?o.write(`${JSON.stringify({success:!0,vm_uuid:e.uuid,name:c.name,app_id:c.app_id,dashboard_url:`${je}/dashboard/cvms/${e.uuid}`},null,2)}
252
+ CVM ID: ${_.vm_uuid}
253
+ Name: ${_.name}
254
+ App ID: ${_.app_id}
255
+ Dashboard URL: ${he}/dashboard/cvms/${_.vm_uuid}
256
+ `;o.write(`${S}
257
+ `)}},CS=async(e,t,r,n,o,a)=>{let[s,c]=await Promise.all([Q(n,{id:e.uuid}),rn(n,{id:e.uuid})]);if(!s.success)throw i.logDetailedError(s.error,"Get CVM Info"),new Error(`Failed to get cvm info: ${s.error.message}`);if(!c.success)throw i.logDetailedError(c.error,"Get CVM Compose File"),new Error(`Failed to get cvm compose file: ${c.error.message}`);let l=s.data,m=c.data;m.docker_compose_file=t,a&&(m.pre_launch_script=a),r&&r.length>0&&(m.allowed_envs=r.map(v=>v.key)),i.info(`Preparing update for CVM ${e.uuid}...`);let p=await Ga(n,{id:e.uuid,app_compose:m,update_env_vars:!!(r&&r.length>0)});if(!p.success)throw i.logDetailedError(p.error,"Provision CVM Compose File Update"),new Error(`Failed to provision cvm compose file: ${p.error.message}`);let u=p.data,d;if(l.kms_info?.chain_id){if(!e.privateKey)throw new Error("Private key is required for contract DstackApp");e.debug&&(console.log("[DEBUG] provision.compose_hash:",u.compose_hash),console.log("[DEBUG] cvm.app_id:",l.app_id));let v=await Xn({chain:l.kms_info?.chain,rpcUrl:e.rpcUrl,appId:l.app_id,composeHash:u.compose_hash,privateKey:e.privateKey});if(!v.success){i.logDetailedError(v,"Add Compose Hash");let w=typeof v=="object"&&v!==null?JSON.stringify(v):String(v);throw new Error(`Failed to add compose hash: ${w}`)}if(e.debug){let w=v.data;console.log("[DEBUG] addComposeHash.transactionHash:",w.transactionHash),console.log("[DEBUG] addComposeHash.composeHash:",w.composeHash)}if(r&&r.length>0){let w=l.kms_info?.slug||l.kms_info?.id;if(!w)throw new Error("KMS slug or id is required for decentralized KMS");let C=await xr(n,{app_id:l.app_id,kms:w});if(!C.success)throw i.logDetailedError(C.error,"Get App Env Encrypt PubKey"),new Error(`Failed to get app env encrypt pubkey: ${C.error.message}`);let _=C.data;d=await(0,$e.encryptEnvVars)(r,_.public_key)}}else if(r&&r.length>0){if(!l.encrypted_env_pubkey)throw new Error("CVM encrypted_env_pubkey is required for centralized KMS");d=await(0,$e.encryptEnvVars)(r,l.encrypted_env_pubkey)}let f={id:e.uuid,compose_hash:u.compose_hash,encrypted_env:d,env_keys:r?.length?r.map(v=>v.key):void 0,update_env_vars:r?.length?!0:void 0};e.debug&&console.log("[DEBUG] commit.compose_hash:",f.compose_hash);let g=await Ha(n,f);if(!g.success)throw i.logDetailedError(g.error,"Commit CVM Compose File Update"),new Error(`Failed to commit CVM compose file update: ${g.error.message}`);let h=e.publicLogs!==void 0||e.publicSysinfo!==void 0;if(e.wait||h){i.info("Waiting for update to complete...");try{await No(e.uuid,3e5)}catch(v){throw i.logDetailedError(v,"Wait for CVM Ready"),new Error(`Wait failed: ${v instanceof Error?v.message:String(v)}`)}}if(h){let v=await Xa(n,{id:e.uuid,public_logs:e.publicLogs??l.public_logs,public_sysinfo:e.publicSysinfo??l.public_sysinfo});v.success?i.info("CVM visibility settings updated"):"status"in v.error&&v.error.status===409?i.warn("Cannot update visibility while CVM operation is in progress. Please wait and try again."):i.warn(`Failed to update visibility: ${v.error.message}`)}e?.json!==!1?o.write(`${JSON.stringify({success:!0,vm_uuid:e.uuid,name:l.name,app_id:l.app_id,dashboard_url:`${he}/dashboard/cvms/${e.uuid}`},null,2)}
302
258
  `):o.write(`CVM compose file updated successfully!
303
- `)};async function x5(e,t){try{let r=e.compose||t.projectConfig.compose_file,n=await m$({apiToken:e.apiToken,interactive:e.interactive}),o=await u$({dockerComposePath:r,interactive:e.interactive}),s;if(e.preLaunchScript){if(!yr.existsSync(e.preLaunchScript))throw new Error(`Pre-launch script file not found: ${e.preLaunchScript}`);s=yr.readFileSync(e.preLaunchScript,"utf8")}let a=Buffer.byteLength(o,"utf8"),i=s?Buffer.byteLength(s,"utf8"):0,c=a+i;if(c>kc){let d=kc/1024,g=Math.ceil(c/1024);throw new Error(`Combined size of docker compose file and pre-launch script is too large (${g}KB). Maximum allowed size is ${d}KB.`)}let m={...e,env:e.env&&e.env.length>0?e.env:t.projectConfig.env_file?[t.projectConfig.env_file]:void 0},u=await f$(m);e.debug&&(console.log("[DEBUG] context.cvmId:",JSON.stringify(t.cvmId)),console.log("[DEBUG] input.cvmId:",e.cvmId));let p=t.cvmId?X.parse(t.cvmId).cvmId:void 0;e.debug&&(console.log("[DEBUG] resolved uuid:",p),console.log("[DEBUG] isUpdate:",!!p)),!!p?await b$({...e,uuid:p},o,u,n,t.stdout,s):await y$(e,o,u??[],n,t.stdout,t.stderr,t.projectConfig,s)}catch(r){throw e.json!==!1?t.stderr.write(`${JSON.stringify({success:!1,error:r instanceof Error?r.message:String(r),stack:e.debug&&r instanceof Error?r.stack:void 0},null,2)}
304
- `):t.stderr.write(`${mf`${r instanceof Error?r.message:String(r)}`}
305
- `),r}}async function x$(e,t){try{return await x5(e,t),0}catch{return 1}}var v5=P({path:["deploy"],meta:m5,schema:u5,handler:x$});import{z as V$}from"zod";var w5={path:["docker"],meta:{name:"docker",description:"Docker Hub login and image management",stability:"deprecated"}};import $$ from"fs";import $5 from"path";import R5 from"inquirer";import{exec as E$,spawn as _$}from"child_process";import Fn from"fs";import _5 from"os";import Jc from"path";import{promisify as I$}from"util";import{execa as A$}from"execa";import P$ from"handlebars";import{INVALID as v$,ParseStatus as w$,ZodIssueCode as yi,ZodParsedType as C5,ZodType as C$,addIssueToContext as bi,z as S5}from"zod";var S$="ZodDecimal",k$=/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/,k5=class e extends C${constructor(){super(...arguments);this.max=this.lte;this.min=this.gte}_parse(r){if(r.data!==null&&typeof r.data=="object"&&"toNumber"in r.data&&(r.data=r.data.toNumber()),this._def.coerce&&(r.data=Number(r.data)),this._getType(r)!==C5.number){let a=this._getOrReturnCtx(r);return bi(a,{code:yi.invalid_type,expected:C5.number,received:a.parsedType}),v$}let o,s=new w$;for(let a of this._def.checks)if(a.kind==="precision"){let i=r.data.toString().match(k$);Math.max((i[1]?i[1].length:0)-(i[2]?Number.parseInt(i[2],10):0),0)>a.value&&(o=this._getOrReturnCtx(r,o),bi(o,{code:yi.custom,message:a.message,params:{precision:a.value}}),s.dirty())}else a.kind==="wholeNumber"?r.data.toString().split(".")[0].length>a.value&&(o=this._getOrReturnCtx(r,o),bi(o,{code:yi.custom,message:a.message,params:{wholeNumber:a.value}}),s.dirty()):a.kind==="min"?(a.inclusive?r.data<a.value:r.data<=a.value)&&(o=this._getOrReturnCtx(r,o),bi(o,{code:yi.too_small,minimum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),s.dirty()):a.kind==="max"?(a.inclusive?r.data>a.value:r.data>=a.value)&&(o=this._getOrReturnCtx(r,o),bi(o,{code:yi.too_big,maximum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),s.dirty()):a.kind==="finite"&&(Number.isFinite(r.data)||(o=this._getOrReturnCtx(r,o),bi(o,{code:yi.not_finite,message:a.message}),s.dirty()));return{status:s.value,value:r.data}}static{this.create=r=>new e({checks:[],typeName:S$,coerce:r?.coerce??!1})}setLimit(r,n,o,s){return new e({...this._def,checks:[...this._def.checks,{kind:r,value:n,inclusive:o,message:s}]})}_addCheck(r){return new e({...this._def,checks:[...this._def.checks,r]})}lte(r,n){return this.setLimit("max",r,!0,n)}lt(r,n){return this.setLimit("max",r,!1,n)}gt(r,n){return this.setLimit("min",r,!1,n)}gte(r,n){return this.setLimit("min",r,!0,n)}precision(r,n){return this._addCheck({kind:"precision",value:r,message:n})}wholeNumber(r,n){return this._addCheck({kind:"wholeNumber",value:r,message:n})}get minValue(){let r=null;for(let n of this._def.checks)n.kind==="min"&&(r===null||n.value>r)&&(r=n.value);return r}get maxValue(){let r=null;for(let n of this._def.checks)n.kind==="max"&&(r===null||n.value<r)&&(r=n.value);return r}positive(r){return this._addCheck({kind:"min",value:0,inclusive:!1,message:r})}negative(r){return this._addCheck({kind:"max",value:0,inclusive:!1,message:r})}nonpositive(r){return this._addCheck({kind:"max",value:0,inclusive:!0,message:r})}nonnegative(r){return this._addCheck({kind:"min",value:0,inclusive:!0,message:r})}finite(r){return this._addCheck({kind:"finite",message:r})}safe(r){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:r})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:r})}get isFinite(){let r=null,n=null;for(let o of this._def.checks){if(o.kind==="finite")return!0;o.kind==="min"?(n===null||o.value>n)&&(n=o.value):o.kind==="max"&&(r===null||o.value<r)&&(r=o.value)}return Number.isFinite(n)&&Number.isFinite(r)}},E5=S5.object({template:S5.string().min(1,"Template cannot be empty")});var Zc=I$(E$),I5=".phala-cloud/logs",T$=".phala-cloud/compose",A5=10,Dt=class{constructor(t,r,n){this.image=t,this.username=r||"",this.registry=n||""}ensureLogsDir(){let t=Jc.resolve(I5);Fn.existsSync(t)||Fn.mkdirSync(t,{recursive:!0})}getLogFilePath(t,r){let n=new Date().toISOString().replace(/[:.]/g,"-");return Jc.resolve(I5,`${r||this.image}-${t}-${n}.log`)}getSystemArchitecture(){let t=_5.arch();switch(t){case"arm":case"arm64":return"arm64";case"x64":return"amd64";default:return t}}spawnProcess(t,r,n,o){return new Promise((s,a)=>{let i=_$(t,r);this.ensureLogsDir();let c=this.getLogFilePath(n,o),m=Fn.createWriteStream(c,{flags:"a"}),u=[],p=(f,d=!1)=>{let g=f.toString().split(`
306
- `);m.write(f);for(let h of g)if(h.trim()){u.push(h),u.length>A5&&u.shift(),console.clear(),console.log(`Latest ${A5} lines (full log at ${c}):`),console.log("-".repeat(50));for(let y of u)d?console.error(y):console.log(y)}};i.stdout.on("data",f=>p(f)),i.stderr.on("data",f=>p(f,!0)),i.on("close",f=>{m.end(),f===0?(console.log(`
307
- Operation completed. Full log available at: ${c}`),s()):a(new Error(`Process exited with code ${f}. Check log file: ${c}`))}),i.on("error",f=>{m.end(),a(f)})})}setCredentials(t,r){this.username=t,r&&(this.registry=r)}async buildImage(t,r){try{let n=this.getSystemArchitecture(),o=`${this.username}/${this.image}:${r}`,s=l.startSpinner(`Building Docker image ${this.username}/${this.image}:${r}`);Wt(t);let a=["build","-t",o,"-f",t];return n==="arm64"&&(console.log("Detected arm64 architecture, using --platform linux/amd64"),a.push("--platform","linux/amd64")),a.push("."),await this.spawnProcess("docker",a,"build",this.image),s.stop(!0,`Docker image ${o} built successfully`),!0}catch(n){return l.error(`Failed to build Docker image: ${n instanceof Error?n.message:String(n)}`),!1}}async pushImage(t){try{let r=l.startSpinner(`Pushing Docker image ${t} to Docker Hub`);if(!await An())throw r.stop(!1),new Error('Docker credentials not found. Please log in first with "phala docker login"');let o=t;return console.log(`Pushing image ${o} to Docker Hub...`),await this.spawnProcess("docker",["push",o],"push",t.replace(/.*\/+([\w-]+):.*$/g,"$1")),r.stop(!0,`Docker image ${o} pushed successfully`),!0}catch(r){return l.error(`Failed to push Docker image: ${r instanceof Error?r.message:String(r)}`),!1}}async login(t,r,n){try{let o=l.startSpinner(`Logging in to Docker Hub as ${t}`);if(await this.checkLogin())return o.stop(!0,"Already logged in to Docker Hub"),this.setCredentials(t,n),!0;if(!r)throw o.stop(!1),new Error("Password is required for Docker login");try{await A$("docker",["login",...n?[n]:[],"-u",t,"--password-stdin"],{input:r,timeout:1e4})}catch(a){throw a.timedOut?(o.stop(!1),new Error("Docker login timed out. Please check your credentials and try again.")):a}return o.stop(!0,"Logged in to Docker Hub successfully"),this.setCredentials(t,n),!0}catch(o){return l.error(`Failed to login to Docker Hub: ${o instanceof Error?o.message:String(o)}`),!1}}async checkLogin(){try{let t=_5.homedir(),r=Jc.join(t,".docker","config.json");if(!Fn.existsSync(r))return!1;let n=JSON.parse(Fn.readFileSync(r,"utf-8"));return!!(n?.auths&&Object.keys(n.auths).length>0)}catch(t){return l.debug(`Docker login check failed: ${t instanceof Error?t.message:String(t)}`),!1}}async buildComposeFile(t,r,n){if(!this.username)throw new Error("Docker Hub username is required for building compose file");let o=n==="eliza"?O6:j6,s=E5.parse({template:o}),a=Jc.resolve(T$);Fn.existsSync(a)||(l.info(`Creating directory: ${a}`),Fn.mkdirSync(a,{recursive:!0}));let i=[];r&&(i=Fn.readFileSync(r,"utf-8").split(`
308
- `).filter(d=>d&&!d.startsWith("#")).map(d=>{let g=d.indexOf("#");return g>0?d.substring(0,g).trim():d.trim()}).filter(d=>d.includes("=")).map(d=>{let[g,h]=d.split("=",2),y=g.trim();return(h?h.trim():"")===""?null:`${y}=${y}`}).filter(Boolean));let c=t,u=P$.compile(s.template,{noEscape:!0})({imageName:c,envVars:i.map(f=>f.replace(/=.*/,`=\${${f.split("=")[0]}}`))}),p=Jc.join(a,`${t.replace(/.*\/+([\w-]+):.*$/g,"$1")}-tee-compose.yaml`);return Fn.writeFileSync(p,u),l.success(`Backup of docker compose file created at: ${p}`),p}async runComposeLocally(t,r){try{let n=l.startSpinner(`Running Docker Compose file at ${t}`);Wt(t);let o=["-f",t,"up","-d"];return r&&(Wt(r),o.splice(2,0,"--env-file",r)),await Zc(`docker compose ${o.join(" ")}`),n.stop(!0,"Docker Compose file running successfully"),!0}catch(n){return l.error(`Failed to run Docker Compose file: ${n instanceof Error?n.message:String(n)}`),!1}}async runSimulator(t,r){try{l.info(`Running TEE simulator with image ${t}`),l.info("Pulling latest simulator image..."),await Zc(`docker pull ${t}`),l.info("Starting simulator in background...");let{stdout:n}=await Zc(`docker run -d --name tee-simulator --rm -p ${r}:${r} ${t}`),o=n.trim();return l.success(`TEE simulator running successfully. Container ID: ${o}`),l.break(),l.break(),l.info("Useful commands:"),l.info(`- View logs: docker logs -f ${o}`),l.info(`- Stop simulator: docker stop ${o}`),Ng(`http://localhost:${r}`),!0}catch(n){return l.error(`Failed to run TEE simulator: ${n instanceof Error?n.message:String(n)}`),!1}}async stopSimulator(){try{let t=l.startSpinner("Stopping TEE simulator...");return await Zc("docker stop tee-simulator"),await ps(),t.stop(!0,"TEE simulator stopped successfully"),!0}catch(t){return l.error(`Failed to stop TEE simulator: ${t instanceof Error?t.message:String(t)}`),!1}}static async listLocalImages(){try{let{stdout:t}=await Zc('docker images --format "{{.Repository}}:{{.Tag}}"'),n=(await An())?.username;return t.split(`
309
- `).filter(s=>s&&!s.includes("<none>")).filter(s=>s.includes(`${n}/`)).map(s=>({imageName:s}))}catch(t){return l.error(`Failed to list local Docker images: ${t instanceof Error?t.message:String(t)}`),[]}}};import{z as pf}from"zod";var P5={name:"build",description:"Build a Docker image",stability:"unstable",options:[{name:"image",shorthand:"i",description:"Image name",type:"string",target:"image"},{name:"tag",shorthand:"t",description:"Image tag",type:"string",target:"tag"},{name:"file",shorthand:"f",description:"Path to Dockerfile",type:"string",target:"file"}],examples:[{name:"Build docker image with prompts",value:"phala docker build"},{name:"Build docker image with options",value:"phala docker build --image myapp --tag latest"}]},T5=pf.object({image:pf.string().optional(),tag:pf.string().optional(),file:pf.string().default("Dockerfile")});async function R$(e,t){try{let r=await An();if(!r)return l.error('Docker information not found. Please login first with "phala docker login"'),1;let n=e.image;n||(n=(await R5.prompt([{type:"input",name:"image",message:"Enter the Docker image name:",validate:m=>m.trim()?!0:"Image name is required"}])).image);let o=e.tag;o||(o=(await R5.prompt([{type:"input",name:"tag",message:"Enter the Docker image tag:",default:"latest",validate:m=>m.trim()?!0:"Tag is required"}])).tag);let s=$5.resolve(process.cwd(),e.file);if(!$$.existsSync(s)){l.info(`Default Dockerfile not found at ${s}`);let c=await Pn("Enter the path to your Dockerfile:","Dockerfile","file");s=$5.resolve(process.cwd(),c)}return await new Dt(n,r.username,r.registry).buildImage(s,o)?(l.success(`Docker image ${r.username}/${n}:${o} built successfully`),0):(l.error("Failed to build Docker image"),1)}catch(r){return l.error("Failed to build Docker image"),l.logDetailedError(r),1}}var M5=P({path:["docker","build"],meta:P5,schema:T5,handler:R$});import Xc from"fs";import lf from"path";import Qc from"inquirer";import{z as Yc}from"zod";var F5={name:"generate",description:"Generate a Docker Compose file",stability:"unstable",options:[{name:"image",shorthand:"i",description:"Docker image name (e.g. phala/phala-cloud)",type:"string",target:"image"},{name:"env-file",shorthand:"e",description:"Path to env file",type:"string",target:"envFile"},{name:"output",shorthand:"o",description:"Output path for docker-compose.yml",type:"string",target:"output"},{name:"template",description:"Template for docker-compose.yml",type:"string",target:"template"}]},N5=Yc.object({image:Yc.string().optional(),envFile:Yc.string().optional(),output:Yc.string().optional(),template:Yc.string().optional()});async function M$(e){if(e)return e;let t=await Dt.listLocalImages();if(t.length===0)throw new Error('No local Docker images found. Please build an image first with "phala docker build"');let r=Array.from(new Set(t.map(o=>o.imageName))),{selectedImage:n}=await Qc.prompt([{type:"list",name:"selectedImage",message:"Select an image to use in the compose file:",choices:r}]);return n}async function F$(e){if(e)return Wt(e),e;let t=lf.join(process.cwd(),".env");if(Xc.existsSync(t)){let{useDefault:n}=await Qc.prompt([{type:"confirm",name:"useDefault",message:"Use .env file in current directory?",default:!0}]);if(n)return t}let{envPath:r}=await Qc.prompt([{type:"input",name:"envPath",message:"Enter path to environment variables file:",validate:n=>{try{return Wt(n),!0}catch{return`File not found: ${n}`}}}]);return r}async function N$(e){let t=e??lf.join(process.cwd(),"docker-compose.yml");if(Xc.existsSync(t)){let{confirmOverwrite:n}=await Qc.prompt([{type:"confirm",name:"confirmOverwrite",message:`File ${t} already exists. Overwrite?`,default:!1}]);if(!n){let{customPath:o}=await Qc.prompt([{type:"input",name:"customPath",message:"Enter alternative output path:",default:lf.join(process.cwd(),"docker-generated-compose.yml")}]);t=o}}let r=lf.dirname(t);return Xc.existsSync(r)||(l.info(`Creating directory: ${r}`),Xc.mkdirSync(r,{recursive:!0})),t}async function L$(e,t){try{let r=await An();if(!r||!r.username)throw new Error('Docker Hub username not found. Please login first with "phala docker login"');let n=await M$(e.image),o=await F$(e.envFile),s=await N$(e.output);o?l.info(`Generating Docker Compose file for ${n} using env file: ${o}`):l.info(`Generating Docker Compose file for ${n} without env file`);let i=await new Dt("",r.username,r.registry).buildComposeFile(n,o,e.template);return i!==s&&Xc.copyFileSync(i,s),l.success(`Docker Compose file generated successfully: ${s}`),0}catch(r){return l.error("Failed to generate Docker Compose file"),l.logDetailedError(r),1}}var L5=P({path:["docker","generate"],meta:F5,schema:N5,handler:L$});import U5 from"prompts";import{z as ff}from"zod";var B5={name:"login",description:"Login to Docker Hub",stability:"unstable",options:[{name:"username",shorthand:"u",description:"Docker Hub username",type:"string",target:"username"},{name:"password",shorthand:"p",description:"Docker Hub password",type:"string",target:"password"},{name:"registry",shorthand:"r",description:"Docker registry URL",type:"string",target:"registry"}]},D5=ff.object({username:ff.string().optional(),password:ff.string().optional(),registry:ff.string().optional()});async function B$(e,t){try{let r=e.username,n=e.password,o=e.registry;if(!r){l.info("First we need your Docker Hub username to check if you are already logged in.");let c=await U5({type:"text",name:"username",message:"Enter your Docker Hub username:",validate:m=>m.length>0?!0:"Username cannot be empty"});if(!c.username)return l.error("Username is required"),1;r=c.username}let s=new Dt("",r,o);if(await s.login(r))return l.success(`${r} is logged in to Docker Hub`),await hg({username:r,registry:o||null}),0;if(!n){let c=await U5({type:"password",name:"password",message:"Enter your Docker Hub password:",validate:m=>m.length>0?!0:"Password cannot be empty"});if(!c.password)return l.error("Password is required"),1;n=c.password}return await s.login(r,n,o)?(await hg({username:r,registry:o||null}),l.success("Logged in to Docker Hub successfully"),0):(l.error("Failed to login to Docker Hub"),1)}catch(r){return l.error("Failed to login to Docker Hub"),l.logDetailedError(r),1}}var z5=P({path:["docker","login"],meta:B5,schema:D5,handler:B$});import D$ from"inquirer";import{z as O5}from"zod";var j5={name:"push",description:"Push a Docker image to Docker Hub",stability:"unstable",options:[{name:"image",shorthand:"i",description:"Full image name (e.g. username/image:tag)",type:"string",target:"image"}]},H5=O5.object({image:O5.string().optional()});async function U$(e){if(e)return e;let t=await Dt.listLocalImages();if(t.length===0)throw new Error('No local Docker images found. Please build an image first with "phala docker build"');let r=Array.from(new Set(t.map(o=>o.imageName))),{selectedImage:n}=await D$.prompt([{type:"list",name:"selectedImage",message:"Select an image to push:",choices:r}]);return n}async function z$(e,t){try{let r=await An();if(!r)throw new Error('Docker information not found. Please login first with "phala docker login"');let n=await U$(e.image);return await new Dt("",r.username,r.registry).pushImage(n)?(l.success(`Docker image ${n} pushed successfully`),0):(l.error("Failed to push Docker image"),1)}catch(r){return l.error("Failed to push Docker image"),l.logDetailedError(r),1}}var V5=P({path:["docker","push"],meta:j5,schema:H5,handler:z$});import K5 from"fs";import W5 from"path";import gf from"inquirer";import{z as df}from"zod";var G5={name:"run",description:"Run a Docker Compose setup",stability:"unstable",options:[{name:"compose",shorthand:"c",description:"Path to docker-compose.yml file",type:"string",target:"compose"},{name:"env-file",shorthand:"e",description:"Path to environment variables file",type:"string",target:"envFile"},{name:"skip-env",description:"Skip env file prompt",type:"boolean",target:"skipEnv"}]},q5=df.object({compose:df.string().optional(),envFile:df.string().optional(),skipEnv:df.boolean().default(!0)});async function O$(e){if(e)return Wt(e),e;let t=W5.join(process.cwd(),"docker-compose.yml");if(K5.existsSync(t)){let{useDefault:n}=await gf.prompt([{type:"confirm",name:"useDefault",message:"Use docker-compose.yml in current directory?",default:!0}]);if(n)return t}let{composePath:r}=await gf.prompt([{type:"input",name:"composePath",message:"Enter path to docker-compose.yml file:",validate:n=>{try{return Wt(n),!0}catch{return"File not found"}}}]);return r}async function j$(e,t){if(t)return e;if(e)return Wt(e),e;let r=W5.join(process.cwd(),".env");if(K5.existsSync(r)){let{useDefault:o}=await gf.prompt([{type:"confirm",name:"useDefault",message:"Use .env file in current directory?",default:!0}]);if(o)return r}let{envPath:n}=await gf.prompt([{type:"input",name:"envPath",message:"Enter path to environment variables file:",validate:o=>{try{return Wt(o),!0}catch{return`File not found: ${o}`}}}]);return n}async function H$(e,t){try{let r=await O$(e.compose),n=await j$(e.envFile,e.skipEnv),o=new Dt("");return n?(l.info(`Validating env file: ${n}`),Wt(n),l.info(`Running Docker Compose with compose file: ${r} and env file: ${n}`)):l.info(`Running Docker Compose with compose file: ${r} without env file`),await o.runComposeLocally(r,n)?(l.success("Docker Compose is running"),0):(l.error("Failed to run Docker Compose"),1)}catch(r){return l.error("Failed to run Docker Compose"),l.logDetailedError(r),1}}var J5=P({path:["docker","run"],meta:G5,schema:q5,handler:H$});var G$={name:"docker",description:"Docker Hub login and image management",stability:"deprecated"},q$=V$.object({});async function K$(e,t){return t.stdout.write(`Available docker subcommands: login, build, push, generate, run. Use 'phala docker <command> --help' for details.
310
- `),0}var W$=P({path:["docker"],meta:G$,schema:q$,handler:K$}),Gg={group:w5,commands:[W$,z5,M5,V5,L5,J5]};import Wg from"path";import r2 from"fs-extra";import mn from"chalk";import Kg from"inquirer";import xi from"chalk";import J$ from"open";import Z$ from"ora";import Y$ from"prompts";import{z as fs}from"zod";var Z5={name:"login",category:"profile",description:"Authenticate with Phala Cloud",stability:"stable",arguments:[{name:"api-key",description:"API key (triggers device flow if omitted)",required:!1,target:"apiKey"}],options:[{name:"manual",description:"Enter API key manually",type:"boolean"},{name:"no-open",description:"Skip browser launch",type:"boolean",target:"noOpen"},{name:"profile",description:"Profile name (defaults to workspace slug)",type:"string",target:"profile"},{name:"print-token",description:"Print token to stdout without saving",type:"boolean",target:"printToken"},{name:"url",description:"Custom API endpoint URL",type:"string",target:"url"}]},Y5=fs.object({apiKey:fs.string().min(1,"API key cannot be empty").optional(),manual:fs.boolean().optional(),noOpen:fs.boolean().optional(),profile:fs.string().min(1).optional(),printToken:fs.boolean().optional(),url:fs.string().url().optional()});function X5(e){let{detail:t}=e;if(t&&typeof t=="object"&&!Array.isArray(t)){let r=t;if(r.error&&typeof r.error=="string"&&!r.error_code)return{error:r.error,error_description:typeof r.error_description=="string"?r.error_description:void 0}}return null}function Ao(e,t=""){e.write(`${t}
311
- `)}async function hf(e){let t=await Ol(e.apiKey,{baseURL:e.baseURL}),r=await ht(t);if(!r.success||!r.data?.user.username)throw new Error("Invalid API key");return r.data}async function X$(e){let t,r=await Y$({type:"password",name:"apiKey",message:"Enter your API key:",validate:async n=>{if(!n||n.trim().length===0)return"API key cannot be empty";try{return t=await hf({apiKey:n,baseURL:e.baseURL}),!0}catch(o){return o instanceof Error?o.message:"Invalid API key"}}});if(!r.apiKey)throw new Error("API key input cancelled");return t||(t=await hf({apiKey:r.apiKey,baseURL:e.baseURL})),{apiKey:r.apiKey,user:t}}async function Q$(e,t){let r=dr({useCookieAuth:!0,baseURL:t.baseURL}),n=await r.post("/auth/device/code",{client_id:"phala-cli",scope:"user:profile cvms:* nodes:*"}),{device_code:o,user_code:s,verification_uri_complete:a,interval:i,expires_in:c}=n,m=i,u=t.printToken?e.stderr:e.stdout;if(Ao(u),Ao(u,xi.bold("To authenticate, visit:")),Ao(u,xi.cyan(a)),Ao(u),Ao(u,`${xi.bold("And enter code:")} ${xi.yellow(s)}`),Ao(u),!t.noOpen)try{await J$(a),Ao(u,"Opening browser automatically...")}catch{Ao(u,"Could not open browser automatically. Please visit the URL above.")}let p=Z$("Waiting for authorization...").start(),f=Date.now()+c*1e3;for(;Date.now()<f;){await new Promise(d=>setTimeout(d,m*1e3));try{let d=await r.post("/auth/device/token",{device_code:o,grant_type:"urn:ietf:params:oauth:grant-type:device_code"});return p.succeed("Authorization successful!"),d.access_token}catch(d){if(d instanceof Ec)throw p.stop(),new Error(El(d));if(d instanceof kl){let g=X5(d);if(g)switch(g.error){case"authorization_pending":continue;case"slow_down":m+=5;continue;case"expired_token":throw p.fail("Authorization expired"),new Error(g.error_description||"Device authorization expired. Please try again.");case"access_denied":throw p.fail("Authorization denied"),new Error(g.error_description||"You denied the authorization request.");default:throw p.fail("Authorization failed"),new Error(`Authorization failed: ${g.error_description||g.error}`)}}throw p.fail("Request failed"),d}}throw p.fail("Authorization timed out"),new Error("Authorization timed out. Please try again.")}async function yf(e,t){try{if(e.printToken&&e.manual)throw new Error("--print-token is not compatible with --manual");let r=e.url||t.env.PHALA_CLOUD_API_PREFIX||sn,n,o;if(e.apiKey)n=e.apiKey,o=await hf({apiKey:n,baseURL:r});else if(e.manual){let c=await X$({baseURL:r});n=c.apiKey,o=c.user}else n=await Q$(t,{noOpen:e.noOpen,printToken:e.printToken,baseURL:r}),o=await hf({apiKey:n,baseURL:r});if(!o)throw new Error("Failed to validate API key");if(e.printToken)return t.stdout.write(`${n}
312
- `),0;let s=o.workspace.name||"default",a=o.workspace.slug||void 0,i=e.profile||a||"default";return pi({profileName:i,token:n,apiPrefix:r,workspaceName:s,workspaceSlug:a,user:{username:o.user.username,email:o.user.email},setCurrent:!0}),t.stdout.write(xi.green(`Welcome ${o.user.username}! Credentials saved successfully (profile: ${i})
313
- `)),0}catch(r){let n=r instanceof Error?r.message:String(r);return t.stderr.write(xi.red(`Failed to authenticate: ${n}
314
- `)),1}}var Q5=P({path:["login"],meta:Z5,schema:Y5,handler:yf});import{z as qg}from"zod";var e9={name:"json",shorthand:"j",description:"Output in JSON format",type:"boolean",target:"json",negatedName:"no-json"},e2={name:"link",category:"manage",description:"Link a local directory to a CVM",stability:"unstable",arguments:[{name:"cvm-id",description:"CVM ID or name (interactive if omitted)",required:!1,target:"cvmId"}],options:[e9],examples:[{name:"Link by name or ID",value:"phala link my-cvm-name"},{name:"Link interactively",value:"phala link"}]},t2=qg.object({cvmId:qg.string().optional(),json:qg.boolean().default(!1)});function t9(e){return e!==null&&typeof e=="object"&&"name"in e&&e.name==="ExitPromptError"}function n2(){let e=["docker-compose.yml","docker-compose.yaml"];for(let t of e)if(r2.existsSync(Wg.join(process.cwd(),t)))return t}function o2(){let e=".env.production";if(r2.existsSync(Wg.join(process.cwd(),e)))return e}async function s2(e){let t=an(e).apiKey;if(!t){if(l.info(`Not authenticated. Starting login flow...
315
- `),await yf({manual:!1,noOpen:!1},e)!==0||(t=an(e).apiKey,!t))return null;console.log()}let r=await N(e),n=await ht(r);if(!n.success){if(l.info(`API key expired or invalid. Starting login flow...
316
- `),await yf({manual:!1,noOpen:!1},e)!==0||(t=an(e).apiKey,!t))return null;let s=await N(e),a=await ht(s);return a.success?(l.success(`Authenticated as ${a.data.user.username}`),console.log(),{apiKey:t,workspaceName:a.data.workspace.name||"default"}):null}return l.success(`Authenticated as ${n.data.user.username}`),console.log(),{apiKey:t,workspaceName:n.data.workspace.name||"default"}}function a2(e){let t={name:e.cvmName,profile:e.profile};e.composeFile&&(t.compose_file=e.composeFile),e.envFile&&(t.env_file=e.envFile),Ow(t),console.log(),console.log(mn.bold("Created phala.toml:")),console.log(mn.dim(` name = "${e.cvmName}"`)),console.log(mn.dim(` profile = "${e.profile}"`)),e.composeFile&&console.log(mn.dim(` compose_file = "${e.composeFile}"`)),e.envFile&&console.log(mn.dim(` env_file = "${e.envFile}"`)),console.log(),l.success("Project linked successfully!"),l.info('Run "phala deploy" to update your CVM.')}async function r9(e,t){try{return e.cvmId?await n9(e.cvmId,t):await o9(t)}catch(r){if(t9(r))return console.log(),l.info("Link cancelled."),0;throw r}}async function n9(e,t){let r=await s2(t);if(!r)return t.fail("Authentication failed."),1;let{workspaceName:n}=r,o=await N(t),s=await Re(o,{id:e});if(!s.success)return t.fail(`CVM not found: ${e}`),1;let i=s.data.name||e;if(l.success(`Found CVM: ${i}`),Fl()){let{overwrite:u}=await Kg.prompt([{type:"confirm",name:"overwrite",message:"phala.toml already exists. Overwrite?",default:!1}]);if(!u)return l.info("Link cancelled."),0}let c=n2(),m=o2();return(c||m)&&(console.log(),l.info("Detected local files:"),c&&console.log(mn.green(` \u2713 ${c}`)),m&&console.log(mn.green(` \u2713 ${m}`))),a2({cvmName:i,composeFile:c,envFile:m,profile:n}),0}async function o9(e){let t=await s2(e);if(!t)return e.fail("Authentication failed."),1;let{workspaceName:r}=t,n=l.startSpinner("Fetching your CVMs..."),o=await N(e),s=await _c(o);if(n.stop(!0),!s.success)return e.fail(`Failed to fetch CVMs: ${s.error.message}`),1;let i=s.data.items??[];if(i.length===0)return l.warn("You don't have any CVMs yet."),l.info('Deploy your first CVM with "phala deploy"'),0;let c=Wg.basename(process.cwd()),m=i.map(g=>{let h=g.hosted?.app_id||g.hosted?.id||"",y=g.name||g.hosted?.name||"Unnamed",b=g.status||g.hosted?.status||"Unknown";return{name:`${y} (${h}) - Status: ${b}`,value:y,cvmName:y}}),u=m.findIndex(g=>g.cvmName.toLowerCase()===c.toLowerCase());console.log(mn.bold(`Found ${i.length} CVM(s):
317
- `));let{selectedCvm:p}=await Kg.prompt([{type:"list",name:"selectedCvm",message:"Select a CVM to link:",choices:m.map(g=>({name:g.name,value:g.value})),default:u>=0?u:0}]);if(Fl()){let{overwrite:g}=await Kg.prompt([{type:"confirm",name:"overwrite",message:"phala.toml already exists. Overwrite?",default:!1}]);if(!g)return l.info("Link cancelled."),0}let f=n2(),d=o2();return console.log(),(f||d)&&(l.info("Detected local files:"),f&&console.log(mn.green(` \u2713 ${f}`)),d&&console.log(mn.green(` \u2713 ${d}`)),console.log()),a2({cvmName:p,composeFile:f,envFile:d,profile:r}),0}var i2=P({path:["link"],meta:e2,schema:t2,handler:r9});import{z as s9}from"zod";var c2={name:"logout",category:"profile",description:"Remove stored API key",stability:"stable"},m2=s9.object({});async function a9(e,t){try{let n=Bt()?.current_profile;return Ul(),l.success(n?`Credentials removed successfully (profile: ${n})`:"Credentials removed successfully"),0}catch(r){return l.error("Failed to remove credentials"),l.logDetailedError(r),1}}var u2=P({path:["logout"],meta:c2,schema:m2,handler:a9});var p2={path:["nodes"],meta:{name:"nodes",category:"deploy",description:"Manage TEE nodes",stability:"unstable"}};import{z as bf}from"zod";var l2={name:"list",aliases:["ls"],description:"List workspace nodes",stability:"unstable",options:[{name:"page",description:"Page number (1-based)",type:"number",target:"page",group:"basic"},{name:"page-size",description:"Number of items per page",type:"number",target:"pageSize",group:"basic"},Rr],examples:[{name:"List nodes (page 1)",value:"phala nodes list"},{name:"List nodes (page 2)",value:"phala nodes list --page 2"},{name:"Output as JSON",value:"phala nodes list --json"}]},Jg=bf.object({page:bf.coerce.number().int().min(1).default(1),pageSize:bf.coerce.number().int().min(1).max(100).default(30),json:bf.boolean().default(!1)});async function f2(e,t){try{let r=await N(),n=await ht(r);if(!n.success)return t.fail(n.error.message),1;let o=n.data.workspace.slug;if(!o)return t.fail("Workspace slug is not available. Please contact support."),1;let s=await Sw(r,{teamSlug:o,page:e.page,pageSize:e.pageSize});if(!s.success)return t.fail(s.error.message),1;let a=s.data;if(e.json)return t.success(a),0;let i=["ID","NAME","REGION","PPID","DEVICE_ID","VERSION"],c=a.items.map(m=>({ID:m.id?.toString()??"-",NAME:m.name??"-",REGION:m.region??"-",PPID:m.ppid??"-",DEVICE_ID:m.device_id??"-",VERSION:m.version?.split(" ")[0]??"-"}));return c.length===0?(l.info("No nodes found"),0):(Jt(i,c),l.info(`Page ${a.page}/${a.pages} (total ${a.total})`),0)}catch(r){return l.logDetailedError(r),t.fail(`Failed to list nodes: ${r instanceof Error?r.message:String(r)}`),1}}var i9={name:"nodes",description:"List and manage TEE nodes",stability:"unstable"},d2=P({path:["nodes","list"],meta:l2,schema:Jg,handler:f2}),g2=P({path:["nodes"],meta:i9,schema:Jg,handler:f2});var Zg={group:p2,commands:[g2,d2]};import{z as p9}from"zod";var h2={path:["simulator"],meta:{name:"simulator",category:"manage",description:"TEE simulator commands",stability:"unstable"}};import{z as Yg}from"zod";var y2={name:"start",description:"Start the TEE simulator",stability:"unstable",options:[{name:"port",shorthand:"p",description:"Simulator port (default: 8090)",type:"string",target:"port"},{name:"verbose",shorthand:"v",description:"Enable verbose output",type:"boolean",target:"verbose"}]},b2=Yg.object({port:Yg.string().default("8090"),verbose:Yg.boolean().default(!1)});async function c9(e,t){try{return yC()||await bC(),await Gc()?(l.success("TEE simulator is already running"),0):(await xC({verbose:e.verbose}),l.success("TEE simulator started successfully"),0)}catch(r){return l.error("Failed to start TEE simulator"),l.logDetailedError(r),1}}var x2=P({path:["simulator","start"],meta:y2,schema:b2,handler:c9});import{z as m9}from"zod";var v2={name:"stop",description:"Stop the TEE simulator",stability:"unstable"},w2=m9.object({});async function u9(e,t){try{return await vC()?(l.success("TEE simulator stopped successfully"),0):(l.error("Failed to stop TEE simulator"),1)}catch(r){return l.error("Failed to stop TEE simulator"),l.logDetailedError(r),1}}var C2=P({path:["simulator","stop"],meta:v2,schema:w2,handler:u9});var l9={name:"simulator",description:"TEE simulator commands",stability:"unstable"},f9=p9.object({});async function d9(e,t){try{let r=await Gc(),n=rf();if(r&&n){let s=Fg(),a=s.replace(/dstack\.sock$/,"tappd.sock");t.stdout.write(`\u2713 TEE simulator is running (PID: ${n})\\n`),t.stdout.write(`
259
+ `)};async function cu(e,t){try{let r=e.compose||t.projectConfig.compose_file,n=await pS({apiToken:e.apiToken,interactive:e.interactive}),o=await uS({dockerComposePath:r,interactive:e.interactive}),a;if(e.preLaunchScript){if(!tt.existsSync(e.preLaunchScript))throw new Error(`Pre-launch script file not found: ${e.preLaunchScript}`);a=tt.readFileSync(e.preLaunchScript,"utf8")}let s=Buffer.byteLength(o,"utf8"),c=a?Buffer.byteLength(a,"utf8"):0,l=s+c;if(l>Qr){let f=Qr/1024,g=Math.ceil(l/1024);throw new Error(`Combined size of docker compose file and pre-launch script is too large (${g}KB). Maximum allowed size is ${f}KB.`)}let m={...e,env:e.env&&e.env.length>0?e.env:t.projectConfig.env_file?[t.projectConfig.env_file]:void 0},p=await gS(m);e.debug&&(console.log("[DEBUG] context.cvmId:",JSON.stringify(t.cvmId)),console.log("[DEBUG] input.cvmId:",e.cvmId));let u=t.cvmId?G.parse(t.cvmId).cvmId:void 0;e.debug&&(console.log("[DEBUG] resolved uuid:",u),console.log("[DEBUG] isUpdate:",!!u)),!!u?await CS({...e,uuid:u},o,p,n,t.stdout,a):await bS(e,o,p??[],n,t.stdout,t.stderr,t.projectConfig,a)}catch(r){throw e.json!==!1?t.stderr.write(`${JSON.stringify({success:!1,error:r instanceof Error?r.message:String(r),stack:e.debug&&r instanceof Error?r.stack:void 0},null,2)}
260
+ `):t.stderr.write(`${jo`${r instanceof Error?r.message:String(r)}`}
261
+ `),r}}async function wS(e,t){try{return await cu(e,t),0}catch{return 1}}var lu=b({path:["deploy"],meta:eu,schema:tu,handler:wS});var mu={path:["envs"],meta:{name:"envs",category:"manage",description:"Encrypt and update CVM sealed environment variables",stability:"stable"}};import pu from"fs";import _S from"path";function zo(e){let t=Oo(e),r=[];for(let n of t.files){let o=_S.resolve(n);if(!pu.existsSync(o))throw new Error(`Environment file not found: ${n}`);let a=pu.readFileSync(o,"utf8"),s=$r(a);r.push(...s)}return r.push(...t.keyValues),Fo(r)}async function Ko(e,t){if(t.kms_info?.chain_id!=null){let o=t.kms_type;if(!o)throw new Error("KMS type is required for decentralized KMS");if(!t.app_id)throw new Error("app_id is required for decentralized KMS");let a=await xr(e,{app_id:t.app_id,kms:o});if(!a.success)throw i.logDetailedError(a.error,"Get App Env Encrypt PubKey"),new Error(`Failed to get encryption public key: ${a.error.message}`);return a.data.public_key}let n=t.kms_info?.encrypted_env_pubkey;if(!n)throw new Error("CVM does not have an encryption public key. The CVM may not support encrypted environment variables.");return n}import{z as Or}from"zod";var uu={name:"encrypt",description:"Encrypt environment variables for a CVM (sealed, only readable inside TEE)",stability:"stable",arguments:[B],options:[N,{name:"env",shorthand:"e",description:"Environment variable (KEY=VALUE) or env file path (repeatable)",type:"string[]",target:"env",group:"basic"},{name:"no-newline",shorthand:"n",description:"Do not print trailing newline (useful for piping)",type:"boolean",target:"noNewline",group:"basic"}],examples:[{name:"Encrypt inline variables",value:"phala envs encrypt app_abc123 -e SECRET=value -e API_KEY=xxx"},{name:"Encrypt from env file",value:"phala envs encrypt app_abc123 -e .env"},{name:"Encrypt with CVM from phala.toml",value:"phala envs encrypt -e .env.production"},{name:"Pipe to file for later use",value:"phala envs encrypt app_abc123 -e .env > encrypted.hex"},{name:"Pipe without trailing newline",value:"phala envs encrypt app_abc123 -n -e .env | some-tool"}]},du=Or.object({cvmId:Or.string().optional(),env:Or.array(Or.string()).min(1,"At least one -e argument is required"),noNewline:Or.boolean().default(!1),interactive:Or.boolean().default(!1)});async function SS(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Pass a CVM identifier or set it in phala.toml."),1;try{let r=zo(e.env);if(r.length===0)return t.fail("No environment variables found in the provided inputs."),1;let n=await k(),o=await Q(n,t.cvmId);if(!o.success)return t.fail(o.error.message),1;let a=o.data,s=await Ko(n,a),c=await(0,$e.encryptEnvVars)(r,s);return process.stdout.write(e.noNewline?c:`${c}
262
+ `),0}catch(r){return t.fail(r instanceof Error?r.message:String(r)),1}}var fu=b({path:["envs","encrypt"],meta:uu,schema:du,handler:SS});import{z as Ht}from"zod";var gu={name:"update",description:"Encrypt and push sealed environment variables to a CVM (only readable inside TEE)",stability:"stable",arguments:[B],options:[N,{name:"env",shorthand:"e",description:"Environment variable (KEY=VALUE) or env file path (repeatable)",type:"string[]",target:"env",group:"basic"},{name:"encrypted-env",description:"Pre-encrypted environment variables as hex string (from 'phala envs encrypt')",type:"string",target:"encryptedEnv",group:"basic"},{name:"private-key",description:"Private key for signing on-chain transactions (or set PRIVATE_KEY env var)",type:"string",target:"privateKey",group:"advanced"},{name:"rpc-url",description:"RPC URL for the blockchain",type:"string",target:"rpcUrl",group:"advanced"}],examples:[{name:"Update with inline variables",value:"phala envs update app_abc123 -e SECRET=newvalue -e API_KEY=xxx"},{name:"Update from env file",value:"phala envs update app_abc123 -e .env.production"},{name:"Update with CVM from phala.toml",value:"phala envs update -e .env"},{name:"Update with pre-encrypted hex (from 'phala envs encrypt')",value:"phala envs update app_abc123 --encrypted-env $(phala envs encrypt app_abc123 -e .env)"},{name:"Update with on-chain KMS",value:"phala envs update app_abc123 -e .env --private-key <key>"}]},hu=Ht.object({cvmId:Ht.string().optional(),env:Ht.array(Ht.string()).optional(),encryptedEnv:Ht.string().optional(),privateKey:Ht.string().optional(),rpcUrl:Ht.string().optional(),interactive:Ht.boolean().default(!1)});async function kS(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Pass a CVM identifier or set it in phala.toml."),1;let r=e.env&&e.env.length>0,n=!!e.encryptedEnv;if(!r&&!n)return t.fail("Provide either -e (environment variables) or --encrypted-env (pre-encrypted hex)."),1;if(r&&n)return t.fail("Cannot use both -e and --encrypted-env at the same time."),1;try{let o=await k(),a=await Q(o,t.cvmId);if(!a.success)return t.fail(a.error.message),1;let s=a.data,c,l;if(r&&e.env){let u=zo(e.env);if(u.length===0)return t.fail("No environment variables found in the provided inputs."),1;l=u.map(f=>f.key);let d=await Ko(o,s);c=await(0,$e.encryptEnvVars)(u,d)}else if(e.encryptedEnv)c=e.encryptedEnv;else return t.fail("No environment input provided."),1;i.info("Updating environment variables...");let m=await Zn(o,{id:s.id,encrypted_env:c,env_keys:l});if(!m.success)return t.fail(m.error.message),1;let p=m.data;if(p.status==="in_progress")return i.success(`Environment update initiated (correlation_id: ${p.correlation_id})`),0;if(p.status==="precondition_required"){let u=e.privateKey||process.env.PRIVATE_KEY;if(!u)return t.fail("On-chain KMS requires a private key. Use --private-key or set PRIVATE_KEY env var."),1;i.info("Environment key list changed \u2014 registering compose hash on-chain...");let d=p.kms_info.chain;if(!d)return t.fail(`Unsupported chain_id ${p.kms_info.chain_id} \u2014 update @phala/cloud to add support.`),1;let f=await Xn({chain:d,rpcUrl:e.rpcUrl,appId:p.app_id,composeHash:p.compose_hash,privateKey:u});if(!f.success)return i.logDetailedError(f,"Add Compose Hash"),t.fail("Failed to register compose hash on-chain."),1;let g=f.data;i.info("Completing environment update...");let h=await Zn(o,{id:s.id,encrypted_env:c,env_keys:l,compose_hash:p.compose_hash,transaction_hash:g.transactionHash});return h.success?h.data.status==="in_progress"?(i.success(`Environment update initiated (correlation_id: ${h.data.correlation_id})`),0):(t.fail("Unexpected response after on-chain verification."),1):(t.fail(h.error.message),1)}return t.fail(`Unexpected response status: ${p.status}`),1}catch(o){return t.fail(o instanceof Error?o.message:String(o)),1}}var yu=b({path:["envs","update"],meta:gu,schema:hu,handler:kS});var js={group:mu,commands:[fu,yu]};import{z as JS}from"zod";var vu={path:["docker"],meta:{name:"docker",description:"Docker Hub login and image management",stability:"deprecated"}};import NS from"fs";import xu from"path";import Pu from"inquirer";import{exec as $S,spawn as DS}from"child_process";import Pt from"fs";import Su from"os";import An from"path";import{promisify as RS}from"util";import{execa as MS}from"execa";import TS from"handlebars";import{INVALID as ES,ParseStatus as IS,ZodIssueCode as Fr,ZodParsedType as bu,ZodType as AS,addIssueToContext as jr,z as Cu}from"zod";var xS="ZodDecimal",PS=/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/,wu=class e extends AS{constructor(){super(...arguments);this.max=this.lte;this.min=this.gte}_parse(r){if(r.data!==null&&typeof r.data=="object"&&"toNumber"in r.data&&(r.data=r.data.toNumber()),this._def.coerce&&(r.data=Number(r.data)),this._getType(r)!==bu.number){let s=this._getOrReturnCtx(r);return jr(s,{code:Fr.invalid_type,expected:bu.number,received:s.parsedType}),ES}let o,a=new IS;for(let s of this._def.checks)if(s.kind==="precision"){let c=r.data.toString().match(PS);Math.max((c[1]?c[1].length:0)-(c[2]?Number.parseInt(c[2],10):0),0)>s.value&&(o=this._getOrReturnCtx(r,o),jr(o,{code:Fr.custom,message:s.message,params:{precision:s.value}}),a.dirty())}else s.kind==="wholeNumber"?r.data.toString().split(".")[0].length>s.value&&(o=this._getOrReturnCtx(r,o),jr(o,{code:Fr.custom,message:s.message,params:{wholeNumber:s.value}}),a.dirty()):s.kind==="min"?(s.inclusive?r.data<s.value:r.data<=s.value)&&(o=this._getOrReturnCtx(r,o),jr(o,{code:Fr.too_small,minimum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),a.dirty()):s.kind==="max"?(s.inclusive?r.data>s.value:r.data>=s.value)&&(o=this._getOrReturnCtx(r,o),jr(o,{code:Fr.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),a.dirty()):s.kind==="finite"&&(Number.isFinite(r.data)||(o=this._getOrReturnCtx(r,o),jr(o,{code:Fr.not_finite,message:s.message}),a.dirty()));return{status:a.value,value:r.data}}static{this.create=r=>new e({checks:[],typeName:xS,coerce:r?.coerce??!1})}setLimit(r,n,o,a){return new e({...this._def,checks:[...this._def.checks,{kind:r,value:n,inclusive:o,message:a}]})}_addCheck(r){return new e({...this._def,checks:[...this._def.checks,r]})}lte(r,n){return this.setLimit("max",r,!0,n)}lt(r,n){return this.setLimit("max",r,!1,n)}gt(r,n){return this.setLimit("min",r,!1,n)}gte(r,n){return this.setLimit("min",r,!0,n)}precision(r,n){return this._addCheck({kind:"precision",value:r,message:n})}wholeNumber(r,n){return this._addCheck({kind:"wholeNumber",value:r,message:n})}get minValue(){let r=null;for(let n of this._def.checks)n.kind==="min"&&(r===null||n.value>r)&&(r=n.value);return r}get maxValue(){let r=null;for(let n of this._def.checks)n.kind==="max"&&(r===null||n.value<r)&&(r=n.value);return r}positive(r){return this._addCheck({kind:"min",value:0,inclusive:!1,message:r})}negative(r){return this._addCheck({kind:"max",value:0,inclusive:!1,message:r})}nonpositive(r){return this._addCheck({kind:"max",value:0,inclusive:!0,message:r})}nonnegative(r){return this._addCheck({kind:"min",value:0,inclusive:!0,message:r})}finite(r){return this._addCheck({kind:"finite",message:r})}safe(r){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:r})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:r})}get isFinite(){let r=null,n=null;for(let o of this._def.checks){if(o.kind==="finite")return!0;o.kind==="min"?(n===null||o.value>n)&&(n=o.value):o.kind==="max"&&(r===null||o.value<r)&&(r=o.value)}return Number.isFinite(n)&&Number.isFinite(r)}},_u=Cu.object({template:Cu.string().min(1,"Template cannot be empty")});var xn=RS($S),ku=".phala-cloud/logs",LS=".phala-cloud/compose",Eu=10,He=class{constructor(t,r,n){this.image=t,this.username=r||"",this.registry=n||""}ensureLogsDir(){let t=An.resolve(ku);Pt.existsSync(t)||Pt.mkdirSync(t,{recursive:!0})}getLogFilePath(t,r){let n=new Date().toISOString().replace(/[:.]/g,"-");return An.resolve(ku,`${r||this.image}-${t}-${n}.log`)}getSystemArchitecture(){let t=Su.arch();switch(t){case"arm":case"arm64":return"arm64";case"x64":return"amd64";default:return t}}spawnProcess(t,r,n,o){return new Promise((a,s)=>{let c=DS(t,r);this.ensureLogsDir();let l=this.getLogFilePath(n,o),m=Pt.createWriteStream(l,{flags:"a"}),p=[],u=(d,f=!1)=>{let g=d.toString().split(`
263
+ `);m.write(d);for(let h of g)if(h.trim()){p.push(h),p.length>Eu&&p.shift(),console.clear(),console.log(`Latest ${Eu} lines (full log at ${l}):`),console.log("-".repeat(50));for(let v of p)f?console.error(v):console.log(v)}};c.stdout.on("data",d=>u(d)),c.stderr.on("data",d=>u(d,!0)),c.on("close",d=>{m.end(),d===0?(console.log(`
264
+ Operation completed. Full log available at: ${l}`),a()):s(new Error(`Process exited with code ${d}. Check log file: ${l}`))}),c.on("error",d=>{m.end(),s(d)})})}setCredentials(t,r){this.username=t,r&&(this.registry=r)}async buildImage(t,r){try{let n=this.getSystemArchitecture(),o=`${this.username}/${this.image}:${r}`,a=i.startSpinner(`Building Docker image ${this.username}/${this.image}:${r}`);We(t);let s=["build","-t",o,"-f",t];return n==="arm64"&&(console.log("Detected arm64 architecture, using --platform linux/amd64"),s.push("--platform","linux/amd64")),s.push("."),await this.spawnProcess("docker",s,"build",this.image),a.stop(!0,`Docker image ${o} built successfully`),!0}catch(n){return i.error(`Failed to build Docker image: ${n instanceof Error?n.message:String(n)}`),!1}}async pushImage(t){try{let r=i.startSpinner(`Pushing Docker image ${t} to Docker Hub`);if(!await St())throw r.stop(!1),new Error('Docker credentials not found. Please log in first with "phala docker login"');let o=t;return console.log(`Pushing image ${o} to Docker Hub...`),await this.spawnProcess("docker",["push",o],"push",t.replace(/.*\/+([\w-]+):.*$/g,"$1")),r.stop(!0,`Docker image ${o} pushed successfully`),!0}catch(r){return i.error(`Failed to push Docker image: ${r instanceof Error?r.message:String(r)}`),!1}}async login(t,r,n){try{let o=i.startSpinner(`Logging in to Docker Hub as ${t}`);if(await this.checkLogin())return o.stop(!0,"Already logged in to Docker Hub"),this.setCredentials(t,n),!0;if(!r)throw o.stop(!1),new Error("Password is required for Docker login");try{await MS("docker",["login",...n?[n]:[],"-u",t,"--password-stdin"],{input:r,timeout:1e4})}catch(s){throw s.timedOut?(o.stop(!1),new Error("Docker login timed out. Please check your credentials and try again.")):s}return o.stop(!0,"Logged in to Docker Hub successfully"),this.setCredentials(t,n),!0}catch(o){return i.error(`Failed to login to Docker Hub: ${o instanceof Error?o.message:String(o)}`),!1}}async checkLogin(){try{let t=Su.homedir(),r=An.join(t,".docker","config.json");if(!Pt.existsSync(r))return!1;let n=JSON.parse(Pt.readFileSync(r,"utf-8"));return!!(n?.auths&&Object.keys(n.auths).length>0)}catch(t){return i.debug(`Docker login check failed: ${t instanceof Error?t.message:String(t)}`),!1}}async buildComposeFile(t,r,n){if(!this.username)throw new Error("Docker Hub username is required for building compose file");let o=n==="eliza"?Pm:$m,a=_u.parse({template:o}),s=An.resolve(LS);Pt.existsSync(s)||(i.info(`Creating directory: ${s}`),Pt.mkdirSync(s,{recursive:!0}));let c=[];r&&(c=Pt.readFileSync(r,"utf-8").split(`
265
+ `).filter(f=>f&&!f.startsWith("#")).map(f=>{let g=f.indexOf("#");return g>0?f.substring(0,g).trim():f.trim()}).filter(f=>f.includes("=")).map(f=>{let[g,h]=f.split("=",2),v=g.trim();return(h?h.trim():"")===""?null:`${v}=${v}`}).filter(Boolean));let l=t,p=TS.compile(a.template,{noEscape:!0})({imageName:l,envVars:c.map(d=>d.replace(/=.*/,`=\${${d.split("=")[0]}}`))}),u=An.join(s,`${t.replace(/.*\/+([\w-]+):.*$/g,"$1")}-tee-compose.yaml`);return Pt.writeFileSync(u,p),i.success(`Backup of docker compose file created at: ${u}`),u}async runComposeLocally(t,r){try{let n=i.startSpinner(`Running Docker Compose file at ${t}`);We(t);let o=["-f",t,"up","-d"];return r&&(We(r),o.splice(2,0,"--env-file",r)),await xn(`docker compose ${o.join(" ")}`),n.stop(!0,"Docker Compose file running successfully"),!0}catch(n){return i.error(`Failed to run Docker Compose file: ${n instanceof Error?n.message:String(n)}`),!1}}async runSimulator(t,r){try{i.info(`Running TEE simulator with image ${t}`),i.info("Pulling latest simulator image..."),await xn(`docker pull ${t}`),i.info("Starting simulator in background...");let{stdout:n}=await xn(`docker run -d --name tee-simulator --rm -p ${r}:${r} ${t}`),o=n.trim();return i.success(`TEE simulator running successfully. Container ID: ${o}`),i.break(),i.break(),i.info("Useful commands:"),i.info(`- View logs: docker logs -f ${o}`),i.info(`- Stop simulator: docker stop ${o}`),Ds(`http://localhost:${r}`),!0}catch(n){return i.error(`Failed to run TEE simulator: ${n instanceof Error?n.message:String(n)}`),!1}}async stopSimulator(){try{let t=i.startSpinner("Stopping TEE simulator...");return await xn("docker stop tee-simulator"),await or(),t.stop(!0,"TEE simulator stopped successfully"),!0}catch(t){return i.error(`Failed to stop TEE simulator: ${t instanceof Error?t.message:String(t)}`),!1}}static async listLocalImages(){try{let{stdout:t}=await xn('docker images --format "{{.Repository}}:{{.Tag}}"'),n=(await St())?.username;return t.split(`
266
+ `).filter(a=>a&&!a.includes("<none>")).filter(a=>a.includes(`${n}/`)).map(a=>({imageName:a}))}catch(t){return i.error(`Failed to list local Docker images: ${t instanceof Error?t.message:String(t)}`),[]}}};import{z as Go}from"zod";var Iu={name:"build",description:"Build a Docker image",stability:"unstable",options:[{name:"image",shorthand:"i",description:"Image name",type:"string",target:"image"},{name:"tag",shorthand:"t",description:"Image tag",type:"string",target:"tag"},{name:"file",shorthand:"f",description:"Path to Dockerfile",type:"string",target:"file"}],examples:[{name:"Build docker image with prompts",value:"phala docker build"},{name:"Build docker image with options",value:"phala docker build --image myapp --tag latest"}]},Au=Go.object({image:Go.string().optional(),tag:Go.string().optional(),file:Go.string().default("Dockerfile")});async function US(e,t){try{let r=await St();if(!r)return i.error('Docker information not found. Please login first with "phala docker login"'),1;let n=e.image;n||(n=(await Pu.prompt([{type:"input",name:"image",message:"Enter the Docker image name:",validate:m=>m.trim()?!0:"Image name is required"}])).image);let o=e.tag;o||(o=(await Pu.prompt([{type:"input",name:"tag",message:"Enter the Docker image tag:",default:"latest",validate:m=>m.trim()?!0:"Tag is required"}])).tag);let a=xu.resolve(process.cwd(),e.file);if(!NS.existsSync(a)){i.info(`Default Dockerfile not found at ${a}`);let l=await kt("Enter the path to your Dockerfile:","Dockerfile","file");a=xu.resolve(process.cwd(),l)}return await new He(n,r.username,r.registry).buildImage(a,o)?(i.success(`Docker image ${r.username}/${n}:${o} built successfully`),0):(i.error("Failed to build Docker image"),1)}catch(r){return i.error("Failed to build Docker image"),i.logDetailedError(r),1}}var $u=b({path:["docker","build"],meta:Iu,schema:Au,handler:US});import $n from"fs";import Ho from"path";import Dn from"inquirer";import{z as Pn}from"zod";var Du={name:"generate",description:"Generate a Docker Compose file",stability:"unstable",options:[{name:"image",shorthand:"i",description:"Docker image name (e.g. phala/phala-cloud)",type:"string",target:"image"},{name:"env-file",shorthand:"e",description:"Path to env file",type:"string",target:"envFile"},{name:"output",shorthand:"o",description:"Output path for docker-compose.yml",type:"string",target:"output"},{name:"template",description:"Template for docker-compose.yml",type:"string",target:"template"}]},Ru=Pn.object({image:Pn.string().optional(),envFile:Pn.string().optional(),output:Pn.string().optional(),template:Pn.string().optional()});async function OS(e){if(e)return e;let t=await He.listLocalImages();if(t.length===0)throw new Error('No local Docker images found. Please build an image first with "phala docker build"');let r=Array.from(new Set(t.map(o=>o.imageName))),{selectedImage:n}=await Dn.prompt([{type:"list",name:"selectedImage",message:"Select an image to use in the compose file:",choices:r}]);return n}async function FS(e){if(e)return We(e),e;let t=Ho.join(process.cwd(),".env");if($n.existsSync(t)){let{useDefault:n}=await Dn.prompt([{type:"confirm",name:"useDefault",message:"Use .env file in current directory?",default:!0}]);if(n)return t}let{envPath:r}=await Dn.prompt([{type:"input",name:"envPath",message:"Enter path to environment variables file:",validate:n=>{try{return We(n),!0}catch{return`File not found: ${n}`}}}]);return r}async function jS(e){let t=e??Ho.join(process.cwd(),"docker-compose.yml");if($n.existsSync(t)){let{confirmOverwrite:n}=await Dn.prompt([{type:"confirm",name:"confirmOverwrite",message:`File ${t} already exists. Overwrite?`,default:!1}]);if(!n){let{customPath:o}=await Dn.prompt([{type:"input",name:"customPath",message:"Enter alternative output path:",default:Ho.join(process.cwd(),"docker-generated-compose.yml")}]);t=o}}let r=Ho.dirname(t);return $n.existsSync(r)||(i.info(`Creating directory: ${r}`),$n.mkdirSync(r,{recursive:!0})),t}async function VS(e,t){try{let r=await St();if(!r||!r.username)throw new Error('Docker Hub username not found. Please login first with "phala docker login"');let n=await OS(e.image),o=await FS(e.envFile),a=await jS(e.output);o?i.info(`Generating Docker Compose file for ${n} using env file: ${o}`):i.info(`Generating Docker Compose file for ${n} without env file`);let c=await new He("",r.username,r.registry).buildComposeFile(n,o,e.template);return c!==a&&$n.copyFileSync(c,a),i.success(`Docker Compose file generated successfully: ${a}`),0}catch(r){return i.error("Failed to generate Docker Compose file"),i.logDetailedError(r),1}}var Mu=b({path:["docker","generate"],meta:Du,schema:Ru,handler:VS});import Nu from"prompts";import{z as qo}from"zod";var Tu={name:"login",description:"Login to Docker Hub",stability:"unstable",options:[{name:"username",shorthand:"u",description:"Docker Hub username",type:"string",target:"username"},{name:"password",shorthand:"p",description:"Docker Hub password",type:"string",target:"password"},{name:"registry",shorthand:"r",description:"Docker registry URL",type:"string",target:"registry"}]},Lu=qo.object({username:qo.string().optional(),password:qo.string().optional(),registry:qo.string().optional()});async function zS(e,t){try{let r=e.username,n=e.password,o=e.registry;if(!r){i.info("First we need your Docker Hub username to check if you are already logged in.");let l=await Nu({type:"text",name:"username",message:"Enter your Docker Hub username:",validate:m=>m.length>0?!0:"Username cannot be empty"});if(!l.username)return i.error("Username is required"),1;r=l.username}let a=new He("",r,o);if(await a.login(r))return i.success(`${r} is logged in to Docker Hub`),await us({username:r,registry:o||null}),0;if(!n){let l=await Nu({type:"password",name:"password",message:"Enter your Docker Hub password:",validate:m=>m.length>0?!0:"Password cannot be empty"});if(!l.password)return i.error("Password is required"),1;n=l.password}return await a.login(r,n,o)?(await us({username:r,registry:o||null}),i.success("Logged in to Docker Hub successfully"),0):(i.error("Failed to login to Docker Hub"),1)}catch(r){return i.error("Failed to login to Docker Hub"),i.logDetailedError(r),1}}var Uu=b({path:["docker","login"],meta:Tu,schema:Lu,handler:zS});import KS from"inquirer";import{z as Ou}from"zod";var Fu={name:"push",description:"Push a Docker image to Docker Hub",stability:"unstable",options:[{name:"image",shorthand:"i",description:"Full image name (e.g. username/image:tag)",type:"string",target:"image"}]},ju=Ou.object({image:Ou.string().optional()});async function GS(e){if(e)return e;let t=await He.listLocalImages();if(t.length===0)throw new Error('No local Docker images found. Please build an image first with "phala docker build"');let r=Array.from(new Set(t.map(o=>o.imageName))),{selectedImage:n}=await KS.prompt([{type:"list",name:"selectedImage",message:"Select an image to push:",choices:r}]);return n}async function HS(e,t){try{let r=await St();if(!r)throw new Error('Docker information not found. Please login first with "phala docker login"');let n=await GS(e.image);return await new He("",r.username,r.registry).pushImage(n)?(i.success(`Docker image ${n} pushed successfully`),0):(i.error("Failed to push Docker image"),1)}catch(r){return i.error("Failed to push Docker image"),i.logDetailedError(r),1}}var Vu=b({path:["docker","push"],meta:Fu,schema:ju,handler:HS});import Gu from"fs";import Hu from"path";import Wo from"inquirer";import{z as Bo}from"zod";var zu={name:"run",description:"Run a Docker Compose setup",stability:"unstable",options:[{name:"compose",shorthand:"c",description:"Path to docker-compose.yml file",type:"string",target:"compose"},{name:"env-file",shorthand:"e",description:"Path to environment variables file",type:"string",target:"envFile"},{name:"skip-env",description:"Skip env file prompt",type:"boolean",target:"skipEnv"}]},Ku=Bo.object({compose:Bo.string().optional(),envFile:Bo.string().optional(),skipEnv:Bo.boolean().default(!0)});async function qS(e){if(e)return We(e),e;let t=Hu.join(process.cwd(),"docker-compose.yml");if(Gu.existsSync(t)){let{useDefault:n}=await Wo.prompt([{type:"confirm",name:"useDefault",message:"Use docker-compose.yml in current directory?",default:!0}]);if(n)return t}let{composePath:r}=await Wo.prompt([{type:"input",name:"composePath",message:"Enter path to docker-compose.yml file:",validate:n=>{try{return We(n),!0}catch{return"File not found"}}}]);return r}async function BS(e,t){if(t)return e;if(e)return We(e),e;let r=Hu.join(process.cwd(),".env");if(Gu.existsSync(r)){let{useDefault:o}=await Wo.prompt([{type:"confirm",name:"useDefault",message:"Use .env file in current directory?",default:!0}]);if(o)return r}let{envPath:n}=await Wo.prompt([{type:"input",name:"envPath",message:"Enter path to environment variables file:",validate:o=>{try{return We(o),!0}catch{return`File not found: ${o}`}}}]);return n}async function WS(e,t){try{let r=await qS(e.compose),n=await BS(e.envFile,e.skipEnv),o=new He("");return n?(i.info(`Validating env file: ${n}`),We(n),i.info(`Running Docker Compose with compose file: ${r} and env file: ${n}`)):i.info(`Running Docker Compose with compose file: ${r} without env file`),await o.runComposeLocally(r,n)?(i.success("Docker Compose is running"),0):(i.error("Failed to run Docker Compose"),1)}catch(r){return i.error("Failed to run Docker Compose"),i.logDetailedError(r),1}}var qu=b({path:["docker","run"],meta:zu,schema:Ku,handler:WS});var YS={name:"docker",description:"Docker Hub login and image management",stability:"deprecated"},ZS=JS.object({});async function XS(e,t){return t.stdout.write(`Available docker subcommands: login, build, push, generate, run. Use 'phala docker <command> --help' for details.
267
+ `),0}var QS=b({path:["docker"],meta:YS,schema:ZS,handler:XS}),Vs={group:vu,commands:[QS,Uu,$u,Vu,Mu,qu]};import Gs from"path";import Qu from"fs-extra";import vt from"chalk";import Ks from"inquirer";import Vr from"chalk";import ek from"open";import tk from"ora";import rk from"prompts";import{z as sr}from"zod";var Bu={name:"login",category:"profile",description:"Authenticate with Phala Cloud",stability:"stable",arguments:[{name:"api-key",description:"API key (triggers device flow if omitted)",required:!1,target:"apiKey"}],options:[{name:"manual",description:"Enter API key manually",type:"boolean"},{name:"no-open",description:"Skip browser launch",type:"boolean",target:"noOpen"},{name:"profile",description:"Profile name (defaults to workspace slug)",type:"string",target:"profile"},{name:"print-token",description:"Print token to stdout without saving",type:"boolean",target:"printToken"},{name:"url",description:"Custom API endpoint URL",type:"string",target:"url"}]},Wu=sr.object({apiKey:sr.string().min(1,"API key cannot be empty").optional(),manual:sr.boolean().optional(),noOpen:sr.boolean().optional(),profile:sr.string().min(1).optional(),printToken:sr.boolean().optional(),url:sr.string().url().optional()});function Ju(e){let{detail:t}=e;if(t&&typeof t=="object"&&!Array.isArray(t)){let r=t;if(r.error&&typeof r.error=="string"&&!r.error_code)return{error:r.error,error_description:typeof r.error_description=="string"?r.error_description:void 0}}return null}function qt(e,t=""){e.write(`${t}
268
+ `)}async function Jo(e){let t=await fo(e.apiKey,{baseURL:e.baseURL}),r=await Pe(t);if(!r.success||!r.data?.user.username)throw new Error("Invalid API key");return r.data}async function nk(e){let t,r=await rk({type:"password",name:"apiKey",message:"Enter your API key:",validate:async n=>{if(!n||n.trim().length===0)return"API key cannot be empty";try{return t=await Jo({apiKey:n,baseURL:e.baseURL}),!0}catch(o){return o instanceof Error?o.message:"Invalid API key"}}});if(!r.apiKey)throw new Error("API key input cancelled");return t||(t=await Jo({apiKey:r.apiKey,baseURL:e.baseURL})),{apiKey:r.apiKey,user:t}}async function ok(e,t){let r=Qe({useCookieAuth:!0,baseURL:t.baseURL}),n=await r.post("/auth/device/code",{client_id:"phala-cli",scope:"user:profile cvms:* nodes:*"}),{device_code:o,user_code:a,verification_uri_complete:s,interval:c,expires_in:l}=n,m=c,p=t.printToken?e.stderr:e.stdout;if(qt(p),qt(p,Vr.bold("To authenticate, visit:")),qt(p,Vr.cyan(s)),qt(p),qt(p,`${Vr.bold("And enter code:")} ${Vr.yellow(a)}`),qt(p),!t.noOpen)try{await ek(s),qt(p,"Opening browser automatically...")}catch{qt(p,"Could not open browser automatically. Please visit the URL above.")}let u=tk("Waiting for authorization...").start(),d=Date.now()+l*1e3;for(;Date.now()<d;){await new Promise(f=>setTimeout(f,m*1e3));try{let f=await r.post("/auth/device/token",{device_code:o,grant_type:"urn:ietf:params:oauth:grant-type:device_code"});return u.succeed("Authorization successful!"),f.access_token}catch(f){if(f instanceof en)throw u.stop(),new Error(Jn(f));if(f instanceof Wn){let g=Ju(f);if(g)switch(g.error){case"authorization_pending":continue;case"slow_down":m+=5;continue;case"expired_token":throw u.fail("Authorization expired"),new Error(g.error_description||"Device authorization expired. Please try again.");case"access_denied":throw u.fail("Authorization denied"),new Error(g.error_description||"You denied the authorization request.");default:throw u.fail("Authorization failed"),new Error(`Authorization failed: ${g.error_description||g.error}`)}}throw u.fail("Request failed"),f}}throw u.fail("Authorization timed out"),new Error("Authorization timed out. Please try again.")}async function Yo(e,t){try{if(e.printToken&&e.manual)throw new Error("--print-token is not compatible with --manual");let r=e.url||t.env.PHALA_CLOUD_API_PREFIX||gt,n,o;if(e.apiKey)n=e.apiKey,o=await Jo({apiKey:n,baseURL:r});else if(e.manual){let l=await nk({baseURL:r});n=l.apiKey,o=l.user}else n=await ok(t,{noOpen:e.noOpen,printToken:e.printToken,baseURL:r}),o=await Jo({apiKey:n,baseURL:r});if(!o)throw new Error("Failed to validate API key");if(e.printToken)return t.stdout.write(`${n}
269
+ `),0;let a=o.workspace.name||"default",s=o.workspace.slug||void 0,c=e.profile||s||"default";return Rr({profileName:c,token:n,apiPrefix:r,workspaceName:a,workspaceSlug:s,user:{username:o.user.username,email:o.user.email},setCurrent:!0}),t.stdout.write(Vr.green(`Welcome ${o.user.username}! Credentials saved successfully (profile: ${c})
270
+ `)),0}catch(r){let n=r instanceof Error?r.message:String(r);return t.stderr.write(Vr.red(`Failed to authenticate: ${n}
271
+ `)),1}}var Yu=b({path:["login"],meta:Bu,schema:Wu,handler:Yo});import{z as zs}from"zod";var ak={name:"json",shorthand:"j",description:"Output in JSON format",type:"boolean",target:"json",negatedName:"no-json"},Zu={name:"link",category:"manage",description:"Link a local directory to a CVM",stability:"unstable",arguments:[{name:"cvm-id",description:"CVM ID or name (interactive if omitted)",required:!1,target:"cvmId"}],options:[ak],examples:[{name:"Link by name or ID",value:"phala link my-cvm-name"},{name:"Link interactively",value:"phala link"}]},Xu=zs.object({cvmId:zs.string().optional(),json:zs.boolean().default(!1)});function sk(e){return e!==null&&typeof e=="object"&&"name"in e&&e.name==="ExitPromptError"}function ed(){let e=["docker-compose.yml","docker-compose.yaml"];for(let t of e)if(Qu.existsSync(Gs.join(process.cwd(),t)))return t}function td(){let e=".env.production";if(Qu.existsSync(Gs.join(process.cwd(),e)))return e}async function rd(e){let t=ht(e).apiKey;if(!t){if(i.info(`Not authenticated. Starting login flow...
272
+ `),await Yo({manual:!1,noOpen:!1},e)!==0||(t=ht(e).apiKey,!t))return null;console.log()}let r=await k(e),n=await Pe(r);if(!n.success){if(i.info(`API key expired or invalid. Starting login flow...
273
+ `),await Yo({manual:!1,noOpen:!1},e)!==0||(t=ht(e).apiKey,!t))return null;let a=await k(e),s=await Pe(a);return s.success?(i.success(`Authenticated as ${s.data.user.username}`),console.log(),{apiKey:t,workspaceName:s.data.workspace.name||"default"}):null}return i.success(`Authenticated as ${n.data.user.username}`),console.log(),{apiKey:t,workspaceName:n.data.workspace.name||"default"}}function nd(e){let t={name:e.cvmName,profile:e.profile};e.composeFile&&(t.compose_file=e.composeFile),e.envFile&&(t.env_file=e.envFile),Pl(t),console.log(),console.log(vt.bold("Created phala.toml:")),console.log(vt.dim(` name = "${e.cvmName}"`)),console.log(vt.dim(` profile = "${e.profile}"`)),e.composeFile&&console.log(vt.dim(` compose_file = "${e.composeFile}"`)),e.envFile&&console.log(vt.dim(` env_file = "${e.envFile}"`)),console.log(),i.success("Project linked successfully!"),i.info('Run "phala deploy" to update your CVM.')}async function ik(e,t){try{return e.cvmId?await ck(e.cvmId,t):await lk(t)}catch(r){if(sk(r))return console.log(),i.info("Link cancelled."),0;throw r}}async function ck(e,t){let r=await rd(t);if(!r)return t.fail("Authentication failed."),1;let{workspaceName:n}=r,o=await k(t),a=await Q(o,{id:e});if(!a.success)return t.fail(`CVM not found: ${e}`),1;let c=a.data.name||e;if(i.success(`Found CVM: ${c}`),so()){let{overwrite:p}=await Ks.prompt([{type:"confirm",name:"overwrite",message:"phala.toml already exists. Overwrite?",default:!1}]);if(!p)return i.info("Link cancelled."),0}let l=ed(),m=td();return(l||m)&&(console.log(),i.info("Detected local files:"),l&&console.log(vt.green(` \u2713 ${l}`)),m&&console.log(vt.green(` \u2713 ${m}`))),nd({cvmName:c,composeFile:l,envFile:m,profile:n}),0}async function lk(e){let t=await rd(e);if(!t)return e.fail("Authentication failed."),1;let{workspaceName:r}=t,n=i.startSpinner("Fetching your CVMs..."),o=await k(e),a=await tn(o);if(n.stop(!0),!a.success)return e.fail(`Failed to fetch CVMs: ${a.error.message}`),1;let c=a.data.items??[];if(c.length===0)return i.warn("You don't have any CVMs yet."),i.info('Deploy your first CVM with "phala deploy"'),0;let l=Gs.basename(process.cwd()),m=c.map(g=>{let h=g.hosted?.app_id||g.hosted?.id||"",v=g.name||g.hosted?.name||"Unnamed",w=g.status||g.hosted?.status||"Unknown";return{name:`${v} (${h}) - Status: ${w}`,value:v,cvmName:v}}),p=m.findIndex(g=>g.cvmName.toLowerCase()===l.toLowerCase());console.log(vt.bold(`Found ${c.length} CVM(s):
274
+ `));let{selectedCvm:u}=await Ks.prompt([{type:"list",name:"selectedCvm",message:"Select a CVM to link:",choices:m.map(g=>({name:g.name,value:g.value})),default:p>=0?p:0}]);if(so()){let{overwrite:g}=await Ks.prompt([{type:"confirm",name:"overwrite",message:"phala.toml already exists. Overwrite?",default:!1}]);if(!g)return i.info("Link cancelled."),0}let d=ed(),f=td();return console.log(),(d||f)&&(i.info("Detected local files:"),d&&console.log(vt.green(` \u2713 ${d}`)),f&&console.log(vt.green(` \u2713 ${f}`)),console.log()),nd({cvmName:u,composeFile:d,envFile:f,profile:r}),0}var od=b({path:["link"],meta:Zu,schema:Xu,handler:ik});import{z as mk}from"zod";var ad={name:"logout",category:"profile",description:"Remove stored API key",stability:"stable"},sd=mk.object({});async function pk(e,t){try{let n=Ge()?.current_profile;return po(),i.success(n?`Credentials removed successfully (profile: ${n})`:"Credentials removed successfully"),0}catch(r){return i.error("Failed to remove credentials"),i.logDetailedError(r),1}}var id=b({path:["logout"],meta:ad,schema:sd,handler:pk});var cd={path:["kms"],meta:{name:"kms",category:"deploy",description:"Manage on-chain KMS contracts",stability:"unstable"}};import{z as ld}from"zod";var md={name:"list",aliases:["ls"],description:"List on-chain KMS contracts",stability:"unstable",options:[Ee],examples:[{name:"List on-chain KMS",value:"phala kms list"},{name:"Output as JSON",value:"phala kms list --json"}]},Hs=ld.object({json:ld.boolean().default(!1)});var uk={1:"ethereum",8453:"base",31337:"anvil"};async function pd(e,t){try{let r=await k(),n=await qa(r,{is_onchain:!0,page_size:100});if(!n.success)return t.fail(n.error.message),1;let o=n.data;if(e.json)return t.success(o),0;let a=new Map;for(let l of o.items){let m=`${l.kms_contract_address}:${l.chain_id}`;a.has(m)||a.set(m,{address:l.kms_contract_address??"-",chain:uk[l.chain_id??0]??`chain-${l.chain_id}`})}let s=["CHAIN","CONTRACT_ADDRESS"],c=[...a.values()].map(l=>({CHAIN:l.chain,CONTRACT_ADDRESS:l.address}));return c.length===0?(i.info("No on-chain KMS contracts found"),0):(ce(s,c),0)}catch(r){return i.logDetailedError(r),t.fail(`Failed to list KMS: ${r instanceof Error?r.message:String(r)}`),1}}var dk={name:"kms",description:"List and manage on-chain KMS contracts",stability:"unstable"},ud=b({path:["kms","list"],meta:md,schema:Hs,handler:pd}),dd=b({path:["kms"],meta:dk,schema:Hs,handler:pd});import{z as fd}from"zod";var qs=e=>({name:e,description:`Show on-chain KMS details for ${e}`,stability:"unstable",options:[Ee],examples:[{name:`Show ${e} KMS details`,value:`phala kms ${e}`},{name:"Output as JSON",value:`phala kms ${e} --json`}]}),Bs=fd.object({json:fd.boolean().default(!1)});function gd(e){return async function(r,n){try{let o=await k(),a=await ns(o,{chain:e});if(!a.success)return n.fail(a.error.message),1;let s=a.data;if(r.json)return n.success(s),0;if(s.contracts.length===0)return i.info(`No KMS contracts found on ${e}`),0;for(let c of s.contracts){if(i.info(`Contract: ${c.contract_address} (${c.chain_name})`),i.break(),c.devices.length>0){i.info("Devices:");let l=["DEVICE_ID","NODE"],m=c.devices.map(p=>({DEVICE_ID:p.device_id,NODE:typeof p.node_name=="string"&&p.node_name.length>0?p.node_name:"-"}));ce(l,m)}else i.info("Devices: none");if(i.break(),c.os_images.length>0){i.info("OS Images:");let l=["NAME","VERSION","OS_IMAGE_HASH"],m=c.os_images.map(p=>({NAME:p.name,VERSION:p.version,OS_IMAGE_HASH:p.os_image_hash??"-"}));ce(l,m)}else i.info("OS Images: none");i.break()}return 0}catch(o){return i.logDetailedError(o),n.fail(`Failed to get KMS details for ${e}: ${o instanceof Error?o.message:String(o)}`),1}}}var hd=b({path:["kms","ethereum"],meta:qs("ethereum"),schema:Bs,handler:gd("ethereum")}),yd=b({path:["kms","base"],meta:qs("base"),schema:Bs,handler:gd("base")});var Ws={group:cd,commands:[dd,ud,hd,yd]};var vd={path:["nodes"],meta:{name:"nodes",category:"deploy",description:"Manage TEE nodes",stability:"unstable"}};import{z as Zo}from"zod";var bd={name:"list",aliases:["ls"],description:"List workspace nodes",stability:"unstable",options:[{name:"page",description:"Page number (1-based)",type:"number",target:"page",group:"basic"},{name:"page-size",description:"Number of items per page",type:"number",target:"pageSize",group:"basic"},Ee],examples:[{name:"List nodes (page 1)",value:"phala nodes list"},{name:"List nodes (page 2)",value:"phala nodes list --page 2"},{name:"Output as JSON",value:"phala nodes list --json"}]},Js=Zo.object({page:Zo.coerce.number().int().min(1).default(1),pageSize:Zo.coerce.number().int().min(1).max(100).default(30),json:Zo.boolean().default(!1)});async function Cd(e,t){try{let r=await k(),n=await Pe(r);if(!n.success)return t.fail(n.error.message),1;let o=n.data.workspace.slug;if(!o)return t.fail("Workspace slug is not available. Please contact support."),1;let a=await pl(r,{teamSlug:o,page:e.page,pageSize:e.pageSize});if(!a.success)return t.fail(a.error.message),1;let s=a.data;if(e.json)return t.success(s),0;let c=["ID","NAME","REGION","PPID","DEVICE_ID","VERSION"],l=s.items.map(m=>({ID:m.id?.toString()??"-",NAME:m.name??"-",REGION:m.region??"-",PPID:m.ppid??"-",DEVICE_ID:m.device_id??"-",VERSION:m.version?.split(" ")[0]??"-"}));return l.length===0?(i.info("No nodes found"),0):(ce(c,l),i.info(`Page ${s.page}/${s.pages} (total ${s.total})`),0)}catch(r){return i.logDetailedError(r),t.fail(`Failed to list nodes: ${r instanceof Error?r.message:String(r)}`),1}}var fk={name:"nodes",description:"List and manage TEE nodes",stability:"unstable"},wd=b({path:["nodes","list"],meta:bd,schema:Js,handler:Cd}),_d=b({path:["nodes"],meta:fk,schema:Js,handler:Cd});var Ys={group:vd,commands:[_d,wd]};import{z as ir}from"zod";var Sd={name:"os-images",category:"deploy",description:"List available OS images",stability:"unstable",options:[{name:"dev",description:"Show only dev images",type:"boolean",target:"dev",group:"basic"},{name:"prod",description:"Show only prod images",type:"boolean",target:"prod",group:"basic"},{name:"page",description:"Page number (1-indexed)",type:"number",target:"page",group:"basic"},{name:"page-size",description:"Items per page (max 100)",type:"number",target:"pageSize",group:"basic"},{name:"all",description:"Fetch all pages",type:"boolean",target:"all",group:"basic"},Ee],examples:[{name:"List all OS images",value:"phala os-images"},{name:"List prod images only",value:"phala os-images --prod"},{name:"List page 2 with page size 20",value:"phala os-images --page 2 --page-size 20"},{name:"Fetch all pages",value:"phala os-images --all"},{name:"Output as JSON",value:"phala os-images --json"}]},kd=ir.object({dev:ir.boolean().default(!1),prod:ir.boolean().default(!1),page:ir.number().int().min(1).default(1),pageSize:ir.number().int().min(1).max(100).default(100),all:ir.boolean().default(!1),json:ir.boolean().default(!1)});async function gk(e,t){try{let r=await k(),n=e.dev?!0:e.prod?!1:void 0,o=async m=>await rs(r,{page:m,page_size:e.pageSize,is_dev:n}),a=await o(e.page);if(!a.success)return t.fail(a.error.message),1;let s=a.data;if(e.all&&s.pages>s.page){let m=[...s.items];for(let p=s.page+1;p<=s.pages;p++){let u=await o(p);if(!u.success)return t.fail(u.error.message),1;m.push(...u.data.items)}s={...s,items:m,page_size:m.length,page:1,pages:1}}if(e.json)return t.success(s),0;let c=["NAME","VERSION","OS_IMAGE_HASH","DEV","GPU"],l=s.items.map(m=>({NAME:m.name,VERSION:m.version,OS_IMAGE_HASH:m.os_image_hash??"-",DEV:m.is_dev?"yes":"no",GPU:m.requires_gpu?"yes":"no"}));return l.length===0?(i.info("No OS images found"),0):(ce(c,l),i.info(`Total: ${s.total}`),0)}catch(r){return i.logDetailedError(r),t.fail(`Failed to list OS images: ${r instanceof Error?r.message:String(r)}`),1}}var Ed=b({path:["os-images"],meta:Sd,schema:kd,handler:gk});import{z as bk}from"zod";var Id={path:["simulator"],meta:{name:"simulator",category:"manage",description:"TEE simulator commands",stability:"unstable"}};import{z as Zs}from"zod";var Ad={name:"start",description:"Start the TEE simulator",stability:"unstable",options:[{name:"port",shorthand:"p",description:"Simulator port (default: 8090)",type:"string",target:"port"},{name:"verbose",shorthand:"v",description:"Enable verbose output",type:"boolean",target:"verbose"}]},xd=Zs.object({port:Zs.string().default("8090"),verbose:Zs.boolean().default(!1)});async function hk(e,t){try{return ap()||await sp(),await Sn()?(i.success("TEE simulator is already running"),0):(await ip({verbose:e.verbose}),i.success("TEE simulator started successfully"),0)}catch(r){return i.error("Failed to start TEE simulator"),i.logDetailedError(r),1}}var Pd=b({path:["simulator","start"],meta:Ad,schema:xd,handler:hk});import{z as yk}from"zod";var $d={name:"stop",description:"Stop the TEE simulator",stability:"unstable"},Dd=yk.object({});async function vk(e,t){try{return await cp()?(i.success("TEE simulator stopped successfully"),0):(i.error("Failed to stop TEE simulator"),1)}catch(r){return i.error("Failed to stop TEE simulator"),i.logDetailedError(r),1}}var Rd=b({path:["simulator","stop"],meta:$d,schema:Dd,handler:vk});var Ck={name:"simulator",description:"TEE simulator commands",stability:"unstable"},wk=bk.object({});async function _k(e,t){try{let r=await Sn(),n=Po();if(r&&n){let a=$s(),s=a.replace(/dstack\.sock$/,"tappd.sock");t.stdout.write(`\u2713 TEE simulator is running (PID: ${n})\\n`),t.stdout.write(`
318
275
  Set these environment variables to use the simulator:
319
- `),t.stdout.write(` export DSTACK_SIMULATOR_ENDPOINT=${s}\\n`),t.stdout.write(` export TAPPD_SIMULATOR_ENDPOINT=${a}\\n`)}else t.stdout.write(`TEE simulator is not running\\n
276
+ `),t.stdout.write(` export DSTACK_SIMULATOR_ENDPOINT=${a}\\n`),t.stdout.write(` export TAPPD_SIMULATOR_ENDPOINT=${s}\\n`)}else t.stdout.write(`TEE simulator is not running\\n
320
277
  `),t.stdout.write(`To start the simulator, run:
321
- `),t.stdout.write(" phala simulator start\\n");return 0}catch(r){return t.stderr.write(`Error checking simulator status: ${r instanceof Error?r.message:String(r)}\\n`),1}}var g9=P({path:["simulator"],meta:l9,schema:f9,handler:d9}),Xg={group:h2,commands:[g9,x2,C2]};import{z as h9}from"zod";var S2={name:"profiles",category:"profile",description:"List auth profiles",stability:"stable",arguments:[],options:[]},k2=h9.object({});async function y9(e,t){let r=Nc(),n=as();if(r.length===0)return l.warn("No profiles found. Please login first."),0;let o=Bt(),s=["PROFILE","WORKSPACE","USER","API ENDPOINT",""],a=r.map(i=>{let c=n?.name===i,m=o?.profiles[i];return{PROFILE:i,WORKSPACE:m?.workspace?.name||"",USER:m?.user?.username||"","API ENDPOINT":m?.api_prefix||"","":c?"*":""}});return Jt(s,a),0}var E2=P({path:["profiles"],meta:S2,schema:k2,handler:y9});import b9 from"chalk";import x9 from"inquirer";import{z as Qg}from"zod";var _2={name:"switch",category:"profile",description:"Switch auth profiles",stability:"unstable",arguments:[{name:"profile-name",description:"Profile name",required:!0,target:"profileName"}],options:[{name:"interactive",shorthand:"i",description:"Select profile interactively",type:"boolean",target:"interactive"}]},I2=Qg.object({profileName:Qg.string().min(1).optional(),interactive:Qg.boolean().default(!1)});function v9(e){return e!==null&&typeof e=="object"&&"name"in e&&e.name==="ExitPromptError"}async function w9(e,t){try{return e.interactive?await C9():e.profileName?S9(e.profileName):(l.error("Missing required argument: profile-name"),l.info("Usage: phala switch <profile-name>"),l.info(" phala switch -i"),1)}catch(r){if(v9(r))return console.log(),l.info("Switch cancelled."),0;let n=r instanceof Error?r.message:String(r);if(n.includes("not found")){l.error(n);let o=Nc();if(o.length>0){l.info("Available profiles:");for(let s of o)console.log(b9.gray(` - ${s}`))}else l.info("No profiles found. Please login first.")}else l.error("Failed to switch profile"),l.logDetailedError(r);return 1}}async function C9(){let e=Nc(),t=as();if(e.length===0)return l.warn("No profiles found. Please login first."),1;if(e.length===1)return l.info(`Only one profile available: ${e[0]}`),0;let r=Bt(),n=e.map(a=>{let c=r?.profiles[a]?.workspace?.name||"unknown",u=t?.name===a?" (current)":"";return{name:`${a} (workspace: ${c})${u}`,value:a}}),{selectedProfile:o}=await x9.prompt([{type:"list",name:"selectedProfile",message:"Select a profile to switch to:",choices:n,default:t?.name}]);if(o===t?.name)return l.info(`Already using profile "${o}"`),0;gg(o);let s=as();return l.success(`Switched to profile "${o}"`),s?.info.workspace?.name&&l.info(`Workspace: ${s.info.workspace.name}`),0}function S9(e){if(as()?.name===e)return l.info(`Already using profile "${e}"`),0;gg(e);let r=as();return l.success(`Switched to profile "${e}"`),r?.info.workspace?.name&&l.info(`Workspace: ${r.info.workspace.name}`),0}var A2=P({path:["switch"],meta:_2,schema:I2,handler:w9});import{z as vi}from"zod";import{readFileSync as I9}from"fs";import{dirname as A9,join as P9}from"path";import{fileURLToPath as T9}from"url";function P2(e,t,r){switch(t){case"bash":return k9(e,r);case"zsh":return E9(e,r);case"fish":return _9(e,r)}}function k9(e,t){let r=t?`
278
+ `),t.stdout.write(" phala simulator start\\n");return 0}catch(r){return t.stderr.write(`Error checking simulator status: ${r instanceof Error?r.message:String(r)}\\n`),1}}var Sk=b({path:["simulator"],meta:Ck,schema:wk,handler:_k}),Xs={group:Id,commands:[Sk,Pd,Rd]};import{z as kk}from"zod";var Md={name:"profiles",category:"profile",description:"List auth profiles",stability:"stable",arguments:[],options:[]},Td=kk.object({});async function Ek(e,t){let r=dn(),n=Qt();if(r.length===0)return i.warn("No profiles found. Please login first."),0;let o=Ge(),a=["PROFILE","WORKSPACE","USER","API ENDPOINT",""],s=r.map(c=>{let l=n?.name===c,m=o?.profiles[c];return{PROFILE:c,WORKSPACE:m?.workspace?.name||"",USER:m?.user?.username||"","API ENDPOINT":m?.api_prefix||"","":l?"*":""}});return ce(a,s),0}var Ld=b({path:["profiles"],meta:Md,schema:Td,handler:Ek});import Ik from"chalk";import Ak from"inquirer";import{z as Qs}from"zod";var Nd={name:"switch",category:"profile",description:"Switch auth profiles",stability:"unstable",arguments:[{name:"profile-name",description:"Profile name",required:!0,target:"profileName"}],options:[{name:"interactive",shorthand:"i",description:"Select profile interactively",type:"boolean",target:"interactive"}]},Ud=Qs.object({profileName:Qs.string().min(1).optional(),interactive:Qs.boolean().default(!1)});function xk(e){return e!==null&&typeof e=="object"&&"name"in e&&e.name==="ExitPromptError"}async function Pk(e,t){try{return e.interactive?await $k():e.profileName?Dk(e.profileName):(i.error("Missing required argument: profile-name"),i.info("Usage: phala switch <profile-name>"),i.info(" phala switch -i"),1)}catch(r){if(xk(r))return console.log(),i.info("Switch cancelled."),0;let n=r instanceof Error?r.message:String(r);if(n.includes("not found")){i.error(n);let o=dn();if(o.length>0){i.info("Available profiles:");for(let a of o)console.log(Ik.gray(` - ${a}`))}else i.info("No profiles found. Please login first.")}else i.error("Failed to switch profile"),i.logDetailedError(r);return 1}}async function $k(){let e=dn(),t=Qt();if(e.length===0)return i.warn("No profiles found. Please login first."),1;if(e.length===1)return i.info(`Only one profile available: ${e[0]}`),0;let r=Ge(),n=e.map(s=>{let l=r?.profiles[s]?.workspace?.name||"unknown",p=t?.name===s?" (current)":"";return{name:`${s} (workspace: ${l})${p}`,value:s}}),{selectedProfile:o}=await Ak.prompt([{type:"list",name:"selectedProfile",message:"Select a profile to switch to:",choices:n,default:t?.name}]);if(o===t?.name)return i.info(`Already using profile "${o}"`),0;ps(o);let a=Qt();return i.success(`Switched to profile "${o}"`),a?.info.workspace?.name&&i.info(`Workspace: ${a.info.workspace.name}`),0}function Dk(e){if(Qt()?.name===e)return i.info(`Already using profile "${e}"`),0;ps(e);let r=Qt();return i.success(`Switched to profile "${e}"`),r?.info.workspace?.name&&i.info(`Workspace: ${r.info.workspace.name}`),0}var Od=b({path:["switch"],meta:Nd,schema:Ud,handler:Pk});import{z as zr}from"zod";import{readFileSync as Lk}from"fs";import{dirname as Nk,join as Uk}from"path";import{fileURLToPath as Ok}from"url";function Fd(e,t,r){switch(t){case"bash":return Rk(e,r);case"zsh":return Mk(e,r);case"fish":return Tk(e,r)}}function Rk(e,t){let r=t?`
322
279
  # Version check (once per day)
323
280
  local completion_version="${t}"
324
281
  local check_file=~/."${e}"/completion-check
@@ -355,7 +312,7 @@ ${r}
355
312
  }
356
313
 
357
314
  complete -F _${e}_completions ${e}
358
- `.trim()}function E9(e,t){let r=t?`
315
+ `.trim()}function Mk(e,t){let r=t?`
359
316
  # Version check (once per day)
360
317
  local completion_version="${t}"
361
318
  local check_file=~/."${e}"/completion-check
@@ -400,7 +357,7 @@ ${r}
400
357
  }
401
358
 
402
359
  _${e}
403
- `.trim()}function _9(e,t){let r=t?`
360
+ `.trim()}function Tk(e,t){let r=t?`
404
361
  # Version check (once per day)
405
362
  set -l completion_version "${t}"
406
363
  set -l check_file ~/."${e}"/completion-check
@@ -433,10 +390,10 @@ ${r}
433
390
  end
434
391
 
435
392
  complete -c ${e} -f -a "(__${e}_complete)"
436
- `.trim()}function $9(){try{let e=T9(import.meta.url),t=A9(e),r=P9(t,"../package.json");return JSON.parse(I9(r,"utf-8")).version}catch{return"unknown"}}var R9={name:"__complete",description:"Internal command for shell completion",stability:"stable",arguments:[{name:"line",description:"Full command line",required:!0},{name:"fragment",description:"Current word being completed",required:!0}]},M9=vi.object({line:vi.string(),fragment:vi.string()});async function F9(e,t){return t.stdout.write(`
437
- `),0}var xhe=P({path:["__complete"],meta:R9,schema:M9,handler:F9}),N9={name:"completion",description:"Generate shell completion scripts",stability:"stable",options:[{name:"shell",type:"string",description:"Shell type (bash, zsh, fish)"},{name:"fig",type:"boolean",description:"Generate Fig/Amazon Q completion spec"}]},L9=vi.object({shell:vi.enum(["bash","zsh","fish"]).optional(),fig:vi.boolean().optional()});async function B9(e,t){if(e.fig)return t.stdout.write(`Fig spec generation requires registry access. See fig-spec.ts for implementation.
438
- `),0;let r=e.shell||D9();if(!r)return t.stderr.write(`Could not detect shell. Please specify with --shell (bash, zsh, or fish)
439
- `),1;let n=$9(),o=P2("phala",r,n);switch(t.stdout.write(`# Add this to your shell configuration file:
393
+ `.trim()}function Fk(){try{let e=Ok(import.meta.url),t=Nk(e),r=Uk(t,"../package.json");return JSON.parse(Lk(r,"utf-8")).version}catch{return"unknown"}}var jk={name:"__complete",description:"Internal command for shell completion",stability:"stable",arguments:[{name:"line",description:"Full command line",required:!0},{name:"fragment",description:"Current word being completed",required:!0}]},Vk=zr.object({line:zr.string(),fragment:zr.string()});async function zk(e,t){return t.stdout.write(`
394
+ `),0}var fF=b({path:["__complete"],meta:jk,schema:Vk,handler:zk}),Kk={name:"completion",description:"Generate shell completion scripts",stability:"stable",options:[{name:"shell",type:"string",description:"Shell type (bash, zsh, fish)"},{name:"fig",type:"boolean",description:"Generate Fig/Amazon Q completion spec"}]},Gk=zr.object({shell:zr.enum(["bash","zsh","fish"]).optional(),fig:zr.boolean().optional()});async function Hk(e,t){if(e.fig)return t.stdout.write(`Fig spec generation requires registry access. See fig-spec.ts for implementation.
395
+ `),0;let r=e.shell||qk();if(!r)return t.stderr.write(`Could not detect shell. Please specify with --shell (bash, zsh, or fish)
396
+ `),1;let n=Fk(),o=Fd("phala",r,n);switch(t.stdout.write(`# Add this to your shell configuration file:
440
397
 
441
398
  `),t.stdout.write(`${o}
442
399
 
@@ -449,24 +406,23 @@ complete -c ${e} -f -a "(__${e}_complete)"
449
406
  `),t.stdout.write(`# source ~/.zshrc
450
407
  `);break;case"fish":t.stdout.write(`# For fish, run:
451
408
  `),t.stdout.write(`# phala completion --shell fish > ~/.config/fish/completions/phala.fish
452
- `);break}return 0}function D9(){let e=process.env.SHELL||"";return e.includes("bash")?"bash":e.includes("zsh")?"zsh":e.includes("fish")?"fish":null}var T2=P({path:["completion"],meta:N9,schema:L9,handler:B9});import{spawn as W9}from"child_process";import J9 from"chalk";import{execSync as U9}from"child_process";import{existsSync as $2,readFileSync as z9}from"fs";import{homedir as em,platform as O9}from"os";import{basename as j9,join as tm}from"path";import R2 from"chalk";var ds=class extends Error{constructor(r,n){super(`CVM is not running (current status: ${R2.yellow(r)})`);this.status=r;this.cvmId=n;this.name="CvmNotRunningError"}},gs=class extends Error{constructor(r){super("CVM is not registered on any gateway.");this.cvmId=r;this.name="NoGatewayError"}};function xf(e){let t=e.lastIndexOf(":");if(t>0){let r=e.substring(t+1);if(/^\d+$/.test(r))return{host:e.substring(0,t),port:r}}return{host:e}}function eh(){let e=[tm(em(),".ssh","id_rsa"),tm(em(),".ssh","id_ed25519"),tm(em(),".ssh","id_ecdsa"),tm(em(),".ssh","id_dsa")];for(let t of e)if($2(t))return t}function M2(e){if(e){let t=e.startsWith("~")?tm(em(),e.slice(1)):e;if(!$2(t))throw new Error(`SSH key file not found: ${t}`);return t}return eh()}function rm(e){return e?e.toLowerCase().includes("dev"):!1}function H9(e){if(!e||typeof e!="object")return;if("gateway_domain"in e){let r=e.gateway_domain;return typeof r=="string"&&r.length>0?r:void 0}let t=e.gateway;if(t&&typeof t=="object"){let r=t.base_domain;if(typeof r=="string"&&r.length>0)return r}}function V9(e){if(!e||typeof e!="object")return{};if("base_image"in e){let r=e.base_image;return{baseImage:typeof r=="string"?r:void 0,isDev:typeof r=="string"?rm(r):void 0}}let t=e.os;if(t&&typeof t=="object"){let r=t.name,n=t.is_dev;return{baseImage:typeof r=="string"?r:void 0,isDev:typeof n=="boolean"?n:void 0}}return{}}function G9(e,t){if(e&&typeof e=="object"&&"app_id"in e){let r=e.app_id;if(typeof r=="string"&&r.length>0)return r.startsWith("app_")?r.slice(4):r}if(t.startsWith("app_"))return t.slice(4);if(/^[0-9a-f]{40}$/i.test(t))return t}async function vf(e,t){let r=await e.getCvmInfo({id:t}),n=H9(r);if(!n)throw new gs(t);if(r.status!=="running")throw new ds(r.status,t);let{baseImage:o,isDev:s}=V9(r),a=G9(r,t);if(!a)throw new Error("CVM does not have an app_id usable for gateway SSH/SCP.");return{appId:a,gatewayDomain:n,status:r.status,baseImage:o,isDevImage:s}}function wf(e,t){return`${e}-22.${t}`}function Cf(e,t){return e!=="443"?e:t||"443"}function Sf(e){return/^[a-zA-Z0-9_./:@=-]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function q9(){try{return U9("openssl version",{encoding:"utf-8"}).toLowerCase().includes("libressl")}catch{return!1}}function K9(e){if(j9(e).toLowerCase().includes("ed25519"))return!0;try{let r=z9(e,"utf-8");return r.includes("ssh-ed25519")||r.includes("ED25519")}catch{return!1}}function kf(e){O9()==="darwin"&&q9()&&K9(e)&&(l.warn("Detected LibreSSL with ed25519 key on macOS. This combination may cause SSH connection issues."),l.info(`If\xB7you\xB7experience\xB7problems,\xB7install\xB7OpenSSL\xB7via\xB7Homebrew:\xB7${R2.cyan("brew\xB7install\xB7openssl")}`),l.info("Then ensure Homebrew's OpenSSL is in your PATH before /usr/bin"))}function Ef(e,t){return["-o",`ProxyCommand=${e?"openssl s_client -quiet -connect %h:%p":"openssl s_client -quiet -connect %h:%p 2>/dev/null"}`,"-o","StrictHostKeyChecking=no","-o","UserKnownHostsFile=/dev/null","-o",`ConnectTimeout=${t}`]}import{z as Nn}from"zod";var F2={name:"ssh",category:"cvm-ops",description:"Connect to a CVM via SSH",stability:"unstable",arguments:[xe],options:[se,{name:"port",shorthand:"p",description:"Gateway port (priority: CLI > phala.toml > 443)",type:"string",target:"port"},{name:"gateway",shorthand:"g",description:"Gateway domain (priority: CLI > phala.toml > API)",type:"string",target:"gatewayDomain"},{name:"timeout",shorthand:"t",description:"Connection timeout in seconds (default: 30)",type:"string",target:"timeout"},{name:"verbose",shorthand:"v",description:"Show verbose connection details",type:"boolean",target:"verbose"},{name:"dry-run",description:"Print SSH command without executing",type:"boolean",target:"dryRun"}],passThrough:{description:"All arguments after -- are passed directly to ssh. Common options: -i (identity file), -L (local forward), -R (remote forward), -D (SOCKS proxy), -N (no command), -v (ssh verbose). Any trailing arguments are executed as remote command. Note: -o ProxyCommand is blocked.",examples:["-- -L 8080:localhost:80","-- -i ~/.ssh/key -D 1080 -N","-- ls -la /app"]},examples:[{name:"Connect from phala.toml",value:"phala ssh"},{name:"Connect to CVM",value:"phala ssh app_123"},{name:"Offline mode",value:"phala ssh app_123 -g dstack-pha-prod7.phala.network -p 16185"},{name:"Connect with custom SSH key",value:"phala ssh app_123 -- -i ~/.ssh/custom_key"},{name:"Forward local port 8080 to remote port 80",value:"phala ssh app_123 -- -L 8080:localhost:80"},{name:"SOCKS proxy without remote command",value:"phala ssh app_123 -- -D 1080 -N"},{name:"Execute remote command",value:"phala ssh app_123 -- ls -la /app"},{name:"Connect with verbose output for debugging",value:"phala ssh app_123 -v"},{name:"Print the SSH command without executing",value:"phala ssh app_123 --dry-run -- -L 8080:localhost:80"}]},N2=Nn.object({cvmId:Nn.string().optional(),port:Nn.string().default("443"),gatewayDomain:Nn.string().optional(),timeout:Nn.string().default("30"),verbose:Nn.boolean().default(!1),dryRun:Nn.boolean().default(!1),"--":Nn.array(Nn.string()).optional()});function Z9(e){for(let t=0;t<e.length;t++){let r=e[t];if(r==="-o"&&t+1<e.length&&e[t+1].toLowerCase().startsWith("proxycommand")||r.toLowerCase().startsWith("-oproxycommand"))return"-o ProxyCommand"}return null}async function Y9(e,t){try{if(!t.cvmId)return t.fail("No CVM ID provided. Either pass a CVM ID as argument or configure it in phala.toml."),1;let{cvmId:r}=X.parse(t.cvmId),n=e["--"]??[],o=Z9(n);if(o)return l.error(`${o} is not allowed as it would break the TLS gateway connection.`),1;let s=e.gatewayDomain??t.projectConfig.gateway_domain,a=e.port!=="443"?e.port:t.projectConfig.gateway_port?.toString()??"443",i,c;if(s)c=s,i=r.startsWith("app_")?r.substring(4):r;else try{let x=await N(),v=await vf(x,r);i=v.appId,c=v.gatewayDomain,(v.isDevImage??rm(v.baseImage))===!1&&l.warn("This CVM is not using a dev image. SSH access may not be available.")}catch(x){return x instanceof gs?l.error(x.message):x instanceof ds?(l.error(x.message),l.info("Please start the CVM first using: phala cvms start")):l.error(x instanceof Error?x.message:"Failed to fetch CVM info"),1}let m=xf(c),u=Cf(a,m.port),p=wf(i,m.host),f=eh();f&&kf(f),e.verbose&&l.info(`Connecting to ${J9.cyan(p)}:${u}...`);let d=Ef(e.verbose,e.timeout),{options:g,command:h}=X9(n),y=[];if(e.verbose&&y.push("-v"),y.push(...d,"-p",u,...g,`root@${p}`,...h),e.dryRun){let x=y.map(v=>Sf(v));return t.stdout.write(`ssh ${x.join(" ")}
453
- `),0}let b=W9("ssh",y,{stdio:"inherit"});return b.on("error",x=>{l.break(),l.error(`SSH connection failed: ${x.message}`)}),new Promise(x=>{b.on("close",v=>{l.break(),v===0?(l.success("Connection closed"),x(0)):(l.error(`Connection failed with code ${v}`),x(v??1))})})}catch(r){return l.error("Failed to connect via SSH"),r instanceof Error?l.error(r.message):l.error(String(r)),1}}function X9(e){let t=[],r=[],n=new Set(["-b","-c","-D","-E","-e","-F","-I","-i","-J","-L","-l","-m","-O","-o","-P","-p","-R","-S","-W","-w"]),o=0,s=!1;for(;o<e.length;){let a=e[o];if(s){r.push(a),o++;continue}if(a.startsWith("-")){t.push(a);let i=a.length===2?a:a.slice(0,2);n.has(i)&&a.length===2&&o+1<e.length&&(o++,t.push(e[o])),o++}else s=!0,r.push(a),o++}return{options:t,command:r}}var L2=P({path:["ssh"],meta:F2,schema:N2,handler:Y9});import{spawn as Q9}from"child_process";import th from"chalk";import{z as Ln}from"zod";var B2={name:"cp",category:"cvm-ops",description:"Copy files to/from a CVM via SCP",stability:"unstable",arguments:[{name:"source",description:"Source path (local or cvm-name:path, use :path for phala.toml cvm_id)",required:!0,target:"source"},{name:"destination",description:"Destination path (local or cvm-name:path, use :path for phala.toml cvm_id)",required:!0,target:"destination"}],options:[{name:"identity",shorthand:"i",description:"SSH identity file (private key)",type:"string",target:"identity"},{name:"port",shorthand:"p",description:"SSH port (priority: CLI > phala.toml > 443)",type:"string",target:"port"},{name:"gateway",shorthand:"g",description:"Gateway domain (priority: CLI > phala.toml > API)",type:"string",target:"gatewayDomain"},{name:"recursive",shorthand:"r",description:"Recursively copy directories",type:"boolean",target:"recursive"},{name:"verbose",shorthand:"v",description:"Show verbose SCP details",type:"boolean",target:"verbose"},{name:"dry-run",description:"Print SCP command without executing",type:"boolean",target:"dryRun"}],examples:[{name:"Upload from phala.toml",value:"phala cp ./local.txt :/root/remote.txt"},{name:"Upload to CVM",value:"phala cp ./local.txt app_123:/root/remote.txt"},{name:"Download from CVM",value:"phala cp app_123:/root/remote.txt ./local.txt"},{name:"Offline mode",value:"phala cp -g dstack-pha-prod7.phala.network -p 16185 ./file.txt app_123:/root/"},{name:"Upload directory recursively",value:"phala cp -r ./local_dir app_123:/root/remote_dir"},{name:"Copy with custom SSH key",value:"phala cp -i ~/.ssh/custom_key app_123:/root/file.txt ./file.txt"},{name:"Print the SCP command without executing",value:"phala cp ./local.txt app_123:/root/remote.txt --dry-run"}]},D2=Ln.object({source:Ln.string(),destination:Ln.string(),identity:Ln.string().optional(),port:Ln.string().default("443"),gatewayDomain:Ln.string().optional(),recursive:Ln.boolean().default(!1),verbose:Ln.boolean().default(!1),dryRun:Ln.boolean().default(!1)});function U2(e){let t=e.match(/^([^:]+):(.+)$/);return t?{isRemote:!0,cvmId:t[1],path:t[2]}:{isRemote:!1,path:e}}async function eR(e,t){try{let r=U2(e.source),n=U2(e.destination);if(r.isRemote===n.isRemote)return l.error("Either source or destination must be a remote path in format: cvm-id:path"),l.info("Examples:"),l.info(" phala cp ./local.txt app_123:/root/remote.txt"),l.info(" phala cp app_123:/root/remote.txt ./local.txt"),1;let o=r.isRemote?r:n,s;if(o.cvmId?s=jw(o.cvmId):t.cvmId&&(s=X.parse(t.cvmId).cvmId),!s)return t.fail("No CVM ID provided. Either use format cvm-id:path or configure it in phala.toml."),1;let a=e.gatewayDomain??t.projectConfig.gateway_domain,i=e.port!=="443"?e.port:t.projectConfig.gateway_port?.toString()??"443",c,m;if(a)m=a,c=s.startsWith("app_")?s.substring(4):s;else try{let _=await N(),I=await vf(_,s);c=I.appId,m=I.gatewayDomain,(I.isDevImage??rm(I.baseImage))===!1&&l.warn("This CVM is not using a dev image. SCP access may not be available.")}catch(_){return _ instanceof gs?l.error(_.message):_ instanceof ds?(l.error(_.message),l.info("Please start the CVM first using: phala cvms start")):l.error(_ instanceof Error?_.message:"Failed to fetch CVM info"),1}let u=xf(m),p=Cf(i,u.port),f=wf(c,u.host),d=M2(e.identity);d?kf(d):l.warn("No default SSH key found. SCP will use ssh-agent or prompt for password."),e.verbose&&l.info(`Connecting to ${th.cyan(f)}:${p}...`);let h=[...Ef(e.verbose,"30"),"-P",p];e.verbose&&h.unshift("-v"),d&&h.push("-i",d),e.recursive&&h.push("-r");let y=r.isRemote?`root@${f}:${r.path}`:r.path,b=n.isRemote?`root@${f}:${n.path}`:n.path;if(h.push(y,b),e.dryRun){let _=h.map(I=>Sf(I));return t.stdout.write(`scp ${_.join(" ")}
454
- `),0}let x=r.isRemote?"download":"upload",v=r.isRemote?n.path:r.path,C=r.isRemote?r.path:n.path;l.info(`${x==="upload"?"Uploading":"Downloading"} ${th.cyan(v)} ${x==="upload"?"to":"from"} ${th.cyan(C)}...`);let k=Q9("scp",h,{stdio:"inherit"});return k.on("error",_=>{l.break(),l.error(`SCP failed: ${_.message}`)}),new Promise(_=>{k.on("close",I=>{l.break(),I===0?(l.success(`${x==="upload"?"Upload":"Download"} completed`),_(0)):(l.error(`Transfer failed with code ${I}`),_(I??1))})})}catch(r){return l.error("Failed to copy file via SCP"),r instanceof Error&&l.error(r.message),1}}var z2=P({path:["cp"],meta:B2,schema:D2,handler:eR});import{z as _f}from"zod";var O2={name:"ps",category:"cvm-ops",description:"List containers of a CVM",stability:"stable",arguments:[xe],options:[ui,Rr,se],examples:[{name:"List containers interactively",value:"phala ps"},{name:"List containers by app_id",value:"phala ps app_abc123"},{name:"List containers by name",value:"phala ps my-app"},{name:"Output as JSON",value:"phala ps app_abc123 --json"}]},j2=_f.object({cvmId:_f.string().optional(),json:_f.boolean().default(!1),interactive:_f.boolean().default(!1)});function tR(e){let r=Date.now()/1e3-e;return r<60?"Less than a minute ago":r<3600?`${Math.floor(r/60)} minutes ago`:r<86400?`${Math.floor(r/3600)} hours ago`:r<86400*30?`${Math.floor(r/86400)} days ago`:r<86400*365?`${Math.floor(r/(86400*30))} months ago`:`${Math.floor(r/(86400*365))} years ago`}function rR(e){let t=e[0]??"";return t.startsWith("/")?t.slice(1):t}async function nR(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=await N(),n=await rg(r,t.cvmId);if(!n.success)return t.fail(n.error.message),1;let o=n.data;if(!o.is_online){let u=o.error??"CVM is offline";return e.json?(t.success({containers:[],error:u}),0):(l.warn(u),0)}let s=o.containers??[];if(e.json)return t.success({containers:s}),0;if(s.length===0)return l.info("No containers running"),0;let a=["NAME","IMAGE","CREATED","STATUS","STATE"],i=s.map(u=>({NAME:rR(u.names),IMAGE:u.image,CREATED:tR(u.created),STATUS:u.status,STATE:u.state})),c={};for(let u of a){c[u]=u.length;for(let p of i)c[u]=Math.max(c[u],p[u].length)}let m=u=>a.map(p=>u[p].padEnd(c[p])).join(" ");console.log(m(Object.fromEntries(a.map(u=>[u,u]))));for(let u of i)console.log(m(u));return 0}catch(r){return l.logDetailedError(r),t.fail(`Failed to list containers: ${r instanceof Error?r.message:String(r)}`),1}}var H2=P({path:["ps"],meta:O2,schema:j2,handler:nR});import{z as Ut}from"zod";var V2={name:"logs",category:"cvm-ops",description:"Fetch logs from a CVM",stability:"unstable",arguments:[{name:"container-name",description:"Container name to fetch logs from",required:!1,target:"containerName"}],options:[{name:"serial",description:"CVM serial console (boot, kernel, docker-compose)",type:"boolean",target:"serial"},{name:"cvm-stdout",description:"CVM stdout channel",type:"boolean",target:"cvmStdout"},{name:"cvm-stderr",description:"CVM stderr channel",type:"boolean",target:"cvmStderr"},{name:"stderr",description:"Include container stderr (container mode only)",type:"boolean",target:"stderr"},{name:"tail",shorthand:"n",description:"Number of lines from end",type:"number",target:"tail"},{name:"follow",shorthand:"f",description:"Stream in real-time",type:"boolean",target:"follow"},{name:"timestamps",shorthand:"t",description:"Show timestamps",type:"boolean",target:"timestamps"},{name:"since",description:"Start time (RFC3339 or relative, e.g. 42m)",type:"string",target:"since",argumentName:"since"},{name:"until",description:"End time (RFC3339 or relative)",type:"string",target:"until",argumentName:"until"},ui,Et,se],examples:[{name:"Container stdout",value:"phala logs my-service"},{name:"Container stderr",value:"phala logs my-service --stderr"},{name:"Follow container logs",value:"phala logs my-service -f"},{name:"CVM serial console",value:"phala logs --serial"},{name:"CVM stdout channel",value:"phala logs --cvm-stdout"},{name:"CVM stderr channel",value:"phala logs --cvm-stderr"},{name:"Last 100 lines",value:"phala logs my-service -n 100"},{name:"Specify CVM",value:"phala logs my-service --cvm-id app_abc123"}]},G2=Ut.object({containerName:Ut.string().optional(),cvmId:Ut.string().optional(),serial:Ut.boolean().default(!1),cvmStdout:Ut.boolean().default(!1),cvmStderr:Ut.boolean().default(!1),stderr:Ut.boolean().default(!1),since:Ut.string().optional(),until:Ut.string().optional(),tail:Ut.number().optional(),follow:Ut.boolean().default(!1),timestamps:Ut.boolean().default(!1),json:Ut.boolean().default(!1),interactive:Ut.boolean().default(!1)});function q2(e,t,r){if(e.channel==="stdout"){t.includeStdout&&r.stdout.write(e.message);return}t.includeStderr&&r.stderr.write(e.message)}function oR(e){let t=[e.serial&&"serial",e.cvmStdout&&"stdout",e.cvmStderr&&"stderr"].filter(Boolean);return t.length>1?null:t.length===1?{type:"cvm",channel:t[0]}:e.containerName?{type:"container",containerName:e.containerName}:null}async function sR(e,t){if($c(e.json),!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;let{cvmId:r}=X.parse(t.cvmId),n=[e.serial,e.cvmStdout,e.cvmStderr].filter(Boolean).length;if(n>1)return t.fail("--serial, --cvm-stdout, and --cvm-stderr are mutually exclusive"),1;let o=n===1;if(e.containerName&&o)return t.fail("Cannot combine container name with --serial/--cvm-stdout/--cvm-stderr. Use container name for container logs, or CVM flags for CVM-level logs."),1;if(e.stderr&&o)return t.fail("--stderr is only valid in container mode, not with CVM flags"),1;let s=oR(e);if(!s)try{let a=await d6(r);a==="running"?s={type:"container"}:(l.warn(`CVM is ${a}. Falling back to serial console logs.`),l.warn("Use --serial, --cvm-stdout, or --cvm-stderr for specific CVM channels."),s={type:"cvm",channel:"serial"})}catch{s={type:"container"}}return s.type==="cvm"?aR(r,s.channel,e,t):iR(r,s.containerName,e,t)}async function aR(e,t,r,n){try{if(r.follow){if(r.json)return n.fail("Cannot use --json with --follow"),1;let s=new AbortController,a=()=>s.abort();process.on("SIGINT",a),process.on("SIGTERM",a);try{await f6(e,t,i=>n.stdout.write(i),{tail:r.tail,timestamps:r.timestamps,since:r.since,until:r.until},s.signal)}catch(i){if(i.name!=="AbortError")throw i}finally{process.removeListener("SIGINT",a),process.removeListener("SIGTERM",a)}return 0}let o=await l6(e,t,{tail:r.tail,timestamps:r.timestamps,since:r.since,until:r.until});return r.json?(n.success({logs:o,cvm_id:e,channel:t}),0):(o.trim()?n.stdout.write(o):l.info(`No ${t} logs available`),0)}catch(o){return n.fail(`Failed to fetch CVM ${t} logs: ${o instanceof Error?o.message:String(o)}`),1}}async function iR(e,t,r,n){let o={includeStdout:!0,includeStderr:r.stderr},s={container:t,since:r.since,until:r.until,tail:r.tail,timestamps:r.timestamps,matchContainerIdPrefix:!1};try{if(r.follow){if(r.json)return n.fail("Cannot use --json with --follow"),1;let u=new AbortController,p=()=>u.abort();process.on("SIGINT",p),process.on("SIGTERM",p);try{await m6(e,f=>q2(f,o,n),s,u.signal)}catch(f){if(f.name!=="AbortError")throw f}finally{process.removeListener("SIGINT",p),process.removeListener("SIGTERM",p)}return 0}let i=(await c6(e,s)).filter(u=>u.channel==="stderr"?o.includeStderr:o.includeStdout),c=i.map(u=>u.message).join("");if(r.json)return n.success({logs:c,cvm_id:e}),0;if(c.trim()){for(let u of i)q2(u,o,n);return 0}return await Kc(e)||l.info("No logs available"),0}catch(a){return n.fail(`Failed to fetch container logs: ${a instanceof Error?a.message:String(a)}`),await Kc(e),1}}var K2=P({path:["logs"],meta:V2,schema:G2,handler:sR});var W2={path:["self"],meta:{name:"self",category:"advanced",description:"CLI self-management",stability:"unstable"}};import fR from"prompts";import{execa as dR}from"execa";import If from"semver";import Bn from"chalk";import{z as wi}from"zod";var cR={name:"json",shorthand:"j",description:"Output in JSON format",type:"boolean",target:"json",negatedName:"no-json"},mR={name:"yes",shorthand:"y",description:"Skip confirmation prompt",type:"boolean",target:"yes"},uR={name:"dry-run",description:"Print update command without executing",type:"boolean",target:"dryRun"},pR={name:"package-manager",description:"Override package manager (npm|pnpm|yarn|bun)",type:"string",target:"packageManager",aliases:["pm"],argumentName:"name"},lR={name:"channel",description:"Release channel/dist-tag (e.g. latest, beta, next)",type:"string",target:"channel",argumentName:"tag"},J2={name:"update",description:"Update the Phala CLI",stability:"unstable",options:[cR,mR,uR,pR,lR],examples:[{name:"Update CLI",value:"phala self update"},{name:"Dry run",value:"phala self update --dry-run"},{name:"Beta channel",value:"phala self update --channel beta"}]},Z2=wi.object({json:wi.boolean().default(!1),yes:wi.boolean().default(!1),dryRun:wi.boolean().default(!1),packageManager:wi.enum(["npm","pnpm","yarn","bun"]).optional(),channel:wi.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/).optional()});var Y2="Phala-Network/phala-cloud",rh="cli-v";function gR(e,t){return`https://github.com/${Y2}/compare/${rh}${e}...${rh}${t}`}function hR(e){return`https://github.com/${Y2}/releases/tag/${rh}${e}`}function nm(e){return typeof e=="string"&&e.trim().length>0}function yR(e){return e.startsWith("@")?e.replace("/","%2F"):e}async function bR(e,t){let n=`https://registry.npmjs.org/${yR(e)}`,o=new AbortController,s=setTimeout(()=>o.abort(),5e3);try{let a=await fetch(n,{signal:o.signal,headers:{accept:"application/json"}});if(!a.ok)return{latestVersion:null,error:`Registry returned ${a.status}`};let i=await a.json();if(!i||typeof i!="object")return{latestVersion:null,error:"Invalid registry response"};let c=i["dist-tags"];if(!c||typeof c!="object")return{latestVersion:null,error:"No dist-tags in response"};let m=c[t]??c.latest;return typeof m!="string"?{latestVersion:null,error:`Channel "${t}" not found`}:{latestVersion:If.valid(m)}}catch(a){return a instanceof Error&&a.name==="AbortError"?{latestVersion:null,error:"Request timed out"}:{latestVersion:null,error:String(a)}}finally{clearTimeout(s)}}function xR(e){if(typeof e!="object"||e===null||!("code"in e))return;let t=e.code;return typeof t=="string"?t:void 0}function vR(e){let r=If.parse(e)?.prerelease?.[0];return typeof r=="string"&&r.length>0?r:void 0}function wR(e,t,r,n){let o=[],s=n instanceof Error&&typeof n.message=="string"?n.message:String(n),a=xR(n);(/permission denied|eacces|not permitted/i.test(s)||n instanceof Error&&(a==="EACCES"||a==="EPERM"))&&o.push(`Permission error while running "${r}". Ensure your global install prefix is writable (avoid sudo if possible).`),/command not found|not recognized as an internal|ENOENT/i.test(s)&&o.push(`Package manager "${t}" not found. Install it or rerun with --package-manager npm|pnpm|yarn|bun.`);let i=e.NVM_DIR;t==="npm"&&nm(i)&&o.push(`Detected nvm (NVM_DIR=${i}). Make sure the intended Node version is active (e.g. "nvm use <version>") and your npm global bin is on PATH.`);let c=e.FNM_DIR;return t==="npm"&&nm(c)&&o.push(`Detected fnm (FNM_DIR=${c}). Ensure your shell has fnm env loaded (e.g. eval "$(fnm env)") so the correct node/npm are on PATH.`),o}function CR(e,t,r){if(nm(e))return e.trim();if(nm(r.PHALA_UPDATE_CHANNEL))return r.PHALA_UPDATE_CHANNEL;let n=li("updateCheckChannel");return nm(n)?n:vR(t)??"latest"}async function SR(e,t){let r=t.cli?.packageName??"phala",n=t.cli?.runtime??Gl(),o=e.packageManager??Dc(t.env,n),s=t.cli?.packageVersion??"0.0.0",a=CR(e.channel,s,t.env);e.json||t.stderr.write(Bn.gray(`Checking for updates...
455
- `));let{latestVersion:i,error:c}=await bR(r,a);if(i){let C=Date.now(),k=a.replace(/[^a-zA-Z0-9_-]/g,"_");is({[`updateCheckLastAt_${k}`]:C,[`updateCheckLatest_${k}`]:i,...a==="latest"?{updateCheckLastAt:C,updateCheckLatest:i}:{}})}let m=If.valid(s),u=i&&m&&!If.gt(i,m),p=!u&&i&&m?gR(m,i):void 0,f=i?hR(i):void 0;e.json||(c?(t.stderr.write(Bn.yellow(`Warning: Could not fetch latest version: ${c}
456
- `)),t.stderr.write(Bn.gray(`Current version: v${s}
457
- `))):i&&(t.stderr.write(Bn.gray(`Current version: v${s}
458
- `)),t.stderr.write(Bn.gray(`Latest version: v${i}${a!=="latest"?` (${a})`:""}
459
- `)),u?t.stderr.write(Bn.green(`You are already on the latest version.
460
- `)):(t.stderr.write(Bn.yellow(`Update available: v${s} \u2192 v${i}
461
- `)),p&&t.stderr.write(Bn.gray(`${p}
462
- `)))));let d=o==="bun"&&i?`${r}@${i}`:a==="latest"?`${r}@latest`:`${r}@${a}`,g=Uc(o,d),{command:h,args:y}=x6(o,d);if(e.json&&e.dryRun)return t.success({command:g,dryRun:!0,currentVersion:s,latestVersion:i,isUpToDate:u,releaseUrl:f,changelogUrl:p}),0;if(e.dryRun)return t.stderr.write(Bn.gray(`Command: ${g}
463
- `)),0;let b=t.stderr.isTTY===!0&&e.json!==!0;if(!e.yes&&!b){let C=`Non-interactive session detected. Re-run with --yes to apply the update, or use --dry-run to print the command.
464
- `;return e.json?(t.success({command:g,ran:!1,reason:"nonInteractive",currentVersion:s,latestVersion:i,isUpToDate:u,releaseUrl:f,changelogUrl:p}),0):(t.stderr.write(C),1)}let x=u?`Already up to date. Reinstall anyway with "${g}"?`:`Run "${g}"?`;if(!(e.yes||await fR({type:"confirm",name:"ok",message:x,initial:!u}).then(C=>C.ok===!0)))return e.json&&t.success({command:g,ran:!1,currentVersion:s,latestVersion:i,isUpToDate:u,releaseUrl:f,changelogUrl:p}),0;try{return await dR(h,y,{stdio:"inherit"}),e.json?(t.success({command:g,ran:!0,currentVersion:s,latestVersion:i,isUpToDate:u,releaseUrl:f,changelogUrl:p}),0):(l.success("Update completed"),0)}catch(C){let k=wR(t.env,o,g,C);if(l.logDetailedError(C),t.fail("Self update failed",{command:g,hints:k.length>0?k:void 0}),!e.json&&k.length>0)for(let _ of k)l.info(_);return 1}}var X2=P({path:["self","update"],meta:J2,schema:Z2,handler:SR});var nh={group:W2,commands:[X2]};import Af from"chalk";import{z as Yt}from"zod";var Q2={name:"apps",category:"manage",description:"List dstack apps",stability:"unstable",options:[{name:"page",description:"Page number (1-based)",type:"number",target:"page",group:"basic"},{name:"page-size",description:"Number of items per page",type:"number",target:"pageSize",group:"basic"},{name:"search",description:"Search by name, app_id, vm_uuid, or instance_id",type:"string",target:"search",group:"basic"},{name:"status",description:"Filter by CVM status (can be specified multiple times)",type:"string[]",target:"status",group:"basic"},{name:"listed",description:"Filter by listed status",type:"boolean",target:"listed",negatedName:"no-listed",group:"basic"},{name:"base-image",description:"Filter by base image name",type:"string",target:"baseImage",group:"basic"},{name:"instance-type",description:"Filter by instance type",type:"string",target:"instanceType",group:"basic"},{name:"kms-type",description:"Filter by KMS type",type:"string",target:"kmsType",group:"basic"},{name:"node",description:"Filter by node name",type:"string",target:"node",group:"basic"},{name:"region",description:"Filter by region identifier",type:"string",target:"region",group:"basic"},Rr],examples:[{name:"List apps",value:"phala apps"},{name:"Second page",value:"phala apps --page 2"},{name:"Search by name",value:"phala apps --search my-app"},{name:"Filter by status",value:"phala apps --status running"},{name:"Output as JSON",value:"phala apps --json"}]},eS=Yt.object({page:Yt.coerce.number().int().min(1).default(1),pageSize:Yt.coerce.number().int().min(1).max(100).default(50),search:Yt.string().optional(),status:Yt.array(Yt.string()).optional(),listed:Yt.boolean().optional(),baseImage:Yt.string().optional(),instanceType:Yt.string().optional(),kmsType:Yt.string().optional(),node:Yt.string().optional(),region:Yt.string().optional(),json:Yt.boolean().default(!1)});function kR(e){return e.toLowerCase().endsWith("ing")?Af.yellow(e):e==="running"?Af.green(e):e==="stopped"?Af.red(e):Af.yellow(e)}async function ER(e,t){try{let r=await N(),n=await of(r,{page:e.page,pageSize:e.pageSize,search:e.search,status:e.status,listed:e.listed,baseImage:e.baseImage,instanceType:e.instanceType,kmsType:e.kmsType,node:e.node,region:e.region});if(n.success===!1)return t.fail(n.error.message),1;let o=n.data;if(e.json)return t.success(o),0;let s=["APP_ID","CVM","STATUS","UPTIME"],a=o.items.map(i=>({APP_ID:i.appId,CVM:i.cvmName,STATUS:kR(i.status),UPTIME:i.uptime??"-"}));return a.length===0?(l.info("No CVMs found"),0):(Jt(s,a),l.info(`Page ${o.page}/${o.totalPages} (total ${o.total})`),0)}catch(r){return l.logDetailedError(r),t.fail(`Failed to list apps: ${r instanceof Error?r.message:String(r)}`),1}}var tS=P({path:["apps"],meta:Q2,schema:eS,handler:ER});import{z as oh}from"zod";var rS={name:"instance-types",category:"deploy",description:"List available instance types",stability:"unstable",arguments:[{name:"family",description:"Instance type family (cpu, gpu)",required:!1,target:"family"}],options:[Rr],examples:[{name:"List all instance type families",value:"phala instance-types"},{name:"List CPU instance types",value:"phala instance-types cpu"},{name:"List GPU instance types",value:"phala instance-types gpu"},{name:"Output as JSON",value:"phala instance-types --json"}]},nS=oh.object({family:oh.string().optional(),json:oh.boolean().default(!1)});function oS(e){return(e/1024).toFixed(0)}function sS(e){return`$${e}`}async function _R(e,t){try{let r=await N();if(e.family){let s=await V0(r,{family:e.family});if(e.json)return t.success(s),0;let a=["ID","NAME","vCPU","Memory(GB)","Hourly Rate","GPU"],i=s.items.map(c=>({ID:c.id,NAME:c.name,vCPU:c.vcpu.toString(),"Memory(GB)":oS(c.memory_mb),"Hourly Rate":sS(c.hourly_rate),GPU:c.requires_gpu?"Yes":"No"}));return i.length===0?(l.info(`No instance types found for family '${e.family}'`),0):(Jt(a,i),l.info(`Total: ${s.total} instance types`),0)}let n=await H0(r);if(e.json)return t.success(n),0;if(n.result.length===0)return l.info("No instance types found"),0;let o=["ID","NAME","vCPU","Memory(GB)","Hourly Rate"];for(let s of n.result){l.info(`
465
- Family: ${s.name} (${s.total} types)`);let a=s.items.map(i=>({ID:i.id,NAME:i.name,vCPU:i.vcpu.toString(),"Memory(GB)":oS(i.memory_mb),"Hourly Rate":sS(i.hourly_rate)}));Jt(o,a)}return 0}catch(r){return l.logDetailedError(r),t.fail(`Failed to list instance types: ${r instanceof Error?r.message:String(r)}`),1}}var aS=P({path:["instance-types"],meta:rS,schema:nS,handler:_R});import{z as iS}from"zod";var cS={name:"runtime-config",description:"Show the runtime configuration of a CVM",stability:"stable",category:"cvm-ops",arguments:[xe],options:[se],examples:[{name:"Show runtime config by app_id",value:"phala runtime-config app_123"},{name:"Show runtime config by name",value:"phala runtime-config my-app"}]},mS=iS.object({cvmId:iS.string().optional()});async function IR(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Either pass a CVM ID as argument or configure it in phala.toml."),1;try{let r=await N(),n=await _w(r,t.cvmId);if(!n.success)return t.fail(`Failed to get runtime config: ${n.error.message}`),1;let o=n.data;if(Se())return t.success(o),0;if(console.log(`Hostname: ${o.hostname??"-"}`),console.log(`Gateway Domain: ${o.default_gateway_domain??"-"}`),console.log(`SSH Keys: ${o.ssh_authorized_keys.length>0?`${o.ssh_authorized_keys.length} key(s)`:"none"}`),o.ssh_authorized_keys.length>0){console.log(),console.log("SSH Authorized Keys:");for(let s of o.ssh_authorized_keys)console.log(` ${s}`)}return 0}catch(r){return l.logDetailedError(r),t.fail("Failed to get CVM runtime config"),1}}var uS=P({path:["runtime-config"],meta:cS,schema:mS,handler:IR});import{existsSync as fS,readFileSync as TR}from"fs";import{basename as $R,join as Pf}from"path";import{homedir as Tf,hostname as RR}from"os";import{z as sh}from"zod";var AR={name:"name",description:"Name for the SSH key (default: key file name)",type:"string",target:"name"},PR={name:"key-file",description:"Path to SSH public key file (default: ~/.ssh/id_ed25519.pub or ~/.ssh/id_rsa.pub)",type:"string",target:"keyFile"},pS={name:"add",description:"Add a local SSH public key to your account",stability:"stable",options:[AR,PR],examples:[{name:"Add default SSH key",value:"phala ssh-keys add"},{name:"Add a specific key with a name",value:"phala ssh-keys add --name my-laptop --key-file ~/.ssh/id_ed25519.pub"}]},lS=sh.object({name:sh.string().optional(),keyFile:sh.string().optional()});function MR(){let e=[Pf(Tf(),".ssh","id_ed25519.pub"),Pf(Tf(),".ssh","id_rsa.pub"),Pf(Tf(),".ssh","id_ecdsa.pub")];for(let t of e)if(fS(t))return t}async function FR(e,t){try{let r=e.keyFile;if(r?.startsWith("~/")&&(r=Pf(Tf(),r.slice(2))),!r&&(r=MR(),!r))return t.fail("No SSH public key found. Specify one with --key-file or generate one with ssh-keygen."),1;if(!fS(r))return t.fail(`SSH public key file not found: ${r}`),1;let n=TR(r,"utf-8").trim(),o=e.name??`${RR()}-${$R(r,".pub")}`,s=await N(),a=await sg(s,{name:o,public_key:n});return a.success?Se()?(t.success(a.data),0):(l.success(`Added SSH key "${o}" (${a.data.key_type}, ${a.data.fingerprint})`),0):(t.fail(`Failed to add SSH key: ${a.error.message}`),1)}catch(r){return l.logDetailedError(r),t.fail("Failed to add SSH key"),1}}var dS=P({path:["ssh-keys","add"],meta:pS,schema:lS,handler:FR});var gS={path:["ssh-keys"],meta:{name:"ssh-keys",category:"manage",description:"Manage SSH keys",stability:"stable"}};import{z as hS}from"zod";var NR={name:"github_username",description:"GitHub username to import SSH keys from",required:!0,target:"githubUsername"},yS={name:"import-github",description:"Import SSH keys from a GitHub user's public profile",stability:"stable",arguments:[NR],examples:[{name:"Import SSH keys from a GitHub profile",value:"phala ssh-keys import-github octocat"}]},bS=hS.object({githubUsername:hS.string()});async function LR(e,t){try{let r=await N(),n=l.startSpinner(`Importing SSH keys from github.com/${e.githubUsername}`),o=await og(r,{github_username:e.githubUsername});if(n.stop(!0),!o.success)return t.fail(`Failed to import SSH keys: ${o.error.message}`),1;if(Se())return t.success(o.data),0;let{keys_added:s,keys_skipped:a,errors:i}=o.data;if(i.length>0){l.warn(`${i.length} key(s) could not be imported:`);for(let c of i)l.warn(` ${c}`)}return s>0?l.success(`Added ${s} SSH key(s) from github.com/${e.githubUsername} (${a} skipped)`):l.info("No new keys added (all keys already exist)"),0}catch(r){return l.logDetailedError(r),t.fail("Failed to import SSH keys"),1}}var xS=P({path:["ssh-keys","import-github"],meta:yS,schema:bS,handler:LR});import{z as BR}from"zod";var vS={name:"list",aliases:["ls"],description:"List SSH keys for the current user",stability:"stable",examples:[{name:"List all SSH keys",value:"phala ssh-keys list"}]},wS=BR.object({});async function DR(e,t){try{let r=await N(),n=await Pc(r);if(!n.success)return t.fail(`Failed to list SSH keys: ${n.error.message}`),1;let o=n.data;if(Se())return t.success(o),0;if(o.length===0)return l.info("No SSH keys found"),0;let s=["ID","NAME","TYPE","FINGERPRINT","SOURCE","CREATED"],a=o.map(i=>({ID:i.id,NAME:i.name,TYPE:i.key_type,FINGERPRINT:i.fingerprint,SOURCE:i.source,CREATED:i.created_at.slice(0,10)}));return Jt(s,a),0}catch(r){return l.logDetailedError(r),t.fail("Failed to list SSH keys"),1}}var CS=P({path:["ssh-keys","list"],meta:vS,schema:wS,handler:DR});import zR from"inquirer";import{z as ah}from"zod";var UR={name:"key_id",description:"SSH key ID to remove (from `phala ssh-keys list`)",required:!1,target:"keyId"},SS={name:"remove",aliases:["rm"],description:"Remove an SSH key from your account",stability:"stable",arguments:[UR],options:[se],examples:[{name:"Remove an SSH key by ID",value:"phala ssh-keys remove sshkey_xxx"},{name:"Interactive selection",value:"phala ssh-keys rm -i"}]},kS=ah.object({keyId:ah.string().optional(),interactive:ah.boolean().default(!1)});async function OR(){let e=l.startSpinner("Fetching SSH keys"),t=await N(),r=await Pc(t);if(e.stop(!0),!r.success){l.error(`Failed to fetch SSH keys: ${r.error.message}`);return}let n=r.data;if(n.length===0){l.info("No SSH keys found");return}let o=n.map(a=>({name:`${a.id} ${a.name} (${a.key_type}, ${a.fingerprint})`,value:a.id})),{selectedKey:s}=await zR.prompt([{type:"list",name:"selectedKey",message:"Select an SSH key to remove:",choices:o}]);return s}async function jR(e,t){try{let r=e.keyId;if(!r&&e.interactive&&(r=await OR(),!r))return 0;if(!r)return t.fail("Missing key_id. Use `phala ssh-keys rm <key_id>` or `phala ssh-keys rm -i` for interactive selection."),1;let n=await N(),o=await ag(n,{keyId:r});return o.success?Se()?(t.success({keyId:r,removed:!0}),0):(l.success(`SSH key ${r} removed`),0):(t.fail(`Failed to remove SSH key: ${o.error.message}`),1)}catch(r){return l.logDetailedError(r),t.fail("Failed to remove SSH key"),1}}var ES=P({path:["ssh-keys","remove"],meta:SS,schema:kS,handler:jR});var ih={group:gS,commands:[CS,dS,ES,xS]};import{z as ch}from"zod";var _S={name:"whoami",category:"profile",description:"Print the current user",stability:"stable",options:[...So,Et],examples:[{name:"Show current user",value:"phala whoami"},{name:"JSON output",value:"phala whoami --json"}]},IS=ch.object({json:ch.boolean().default(!1),apiToken:ch.string().optional()});async function HR(e,t){let{client:r,auth:n}=await zl(t,{apiToken:e.apiToken});if(!n.apiKey)return t.fail('Not authenticated. Run "phala login" first.'),1;let o=await ht(r);if(!o.success)return t.fail(o.error?.message||"Failed to get user information"),1;let{user:s,workspace:a}=o.data;return e.json?(t.success({username:s.username,email:s.email,workspace:a.name,profile:n.profileName}),0):(t.stdout.write(`${s.username} (${a.name})
466
- `),0)}var AS=P({path:["whoami"],meta:_S,schema:IS,handler:HR});var WR=KR(import.meta.url),JR=GR(WR),ZR=qR(JR,"../package.json"),$f=JSON.parse(VR(ZR,"utf-8")),YR="+b7c34d6",XR=`v${$f.version}${YR}`,QR=Gl(),ae=new Jl;ae.registerCommand(v5);ae.registerCommand(tS);ae.registerCommand(aS);ae.registerCommand(i2);ae.registerCommand(L2);ae.registerCommand(z2);ae.registerCommand(H2);ae.registerCommand(K2);ae.registerCommand(uS);ae.registerCommand(Q5);ae.registerCommand(u2);ae.registerCommand(E2);ae.registerCommand(A2);ae.registerCommand(U6);ae.registerCommand(Z6);ae.registerCommand(AS);ae.registerCommand(T2);ae.registerGroup(nh.group);for(let e of nh.commands)ae.registerCommand(e);ae.registerGroup(Ig.group);for(let e of Ig.commands)ae.registerCommand(e);ae.registerGroup(Pg.group);for(let e of Pg.commands)ae.registerCommand(e);ae.registerGroup(Vg.group);for(let e of Vg.commands)ae.registerCommand(e);ae.registerGroup(ih.group);for(let e of ih.commands)ae.registerCommand(e);ae.registerGroup(Gg.group);for(let e of Gg.commands)ae.registerCommand(e);ae.registerGroup(Zg.group);for(let e of Zg.commands)ae.registerCommand(e);ae.registerGroup(Xg.group);for(let e of Xg.commands)ae.registerCommand(e);process.on("SIGINT",()=>process.exit(0));process.on("SIGTERM",()=>process.exit(0));async function eM(){await $6({env:process.env,stderr:process.stderr});let e=await I6({registry:ae,argv:process.argv.slice(2),executableName:$f.name??"phala",version:XR,packageName:$f.name??"phala",packageVersion:$f.version,runtime:QR,cwd:process.cwd(),env:process.env,stdout:process.stdout,stderr:process.stderr,stdin:process.stdin});process.exit(e)}eM().catch(e=>{console.error("An error occurred:",e),process.exit(1)});
409
+ `);break}return 0}function qk(){let e=process.env.SHELL||"";return e.includes("bash")?"bash":e.includes("zsh")?"zsh":e.includes("fish")?"fish":null}var jd=b({path:["completion"],meta:Kk,schema:Gk,handler:Hk});import{spawn as r0}from"child_process";import n0 from"chalk";import{execSync as Bk}from"child_process";import{existsSync as Vd,readFileSync as Wk}from"fs";import{homedir as Rn,platform as Jk}from"os";import{basename as Yk,join as Mn}from"path";import zd from"chalk";var cr=class extends Error{constructor(r,n){super(`CVM is not running (current status: ${zd.yellow(r)})`);this.status=r;this.cvmId=n;this.name="CvmNotRunningError"}},lr=class extends Error{constructor(r){super("CVM is not registered on any gateway.");this.cvmId=r;this.name="NoGatewayError"}};function Xo(e){let t=e.lastIndexOf(":");if(t>0){let r=e.substring(t+1);if(/^\d+$/.test(r))return{host:e.substring(0,t),port:r}}return{host:e}}function ei(){let e=[Mn(Rn(),".ssh","id_rsa"),Mn(Rn(),".ssh","id_ed25519"),Mn(Rn(),".ssh","id_ecdsa"),Mn(Rn(),".ssh","id_dsa")];for(let t of e)if(Vd(t))return t}function Kd(e){if(e){let t=e.startsWith("~")?Mn(Rn(),e.slice(1)):e;if(!Vd(t))throw new Error(`SSH key file not found: ${t}`);return t}return ei()}function Tn(e){return e?e.toLowerCase().includes("dev"):!1}function Zk(e){if(!e||typeof e!="object")return;if("gateway_domain"in e){let r=e.gateway_domain;return typeof r=="string"&&r.length>0?r:void 0}let t=e.gateway;if(t&&typeof t=="object"){let r=t.base_domain;if(typeof r=="string"&&r.length>0)return r}}function Xk(e){if(!e||typeof e!="object")return{};if("base_image"in e){let r=e.base_image;return{baseImage:typeof r=="string"?r:void 0,isDev:typeof r=="string"?Tn(r):void 0}}let t=e.os;if(t&&typeof t=="object"){let r=t.name,n=t.is_dev;return{baseImage:typeof r=="string"?r:void 0,isDev:typeof n=="boolean"?n:void 0}}return{}}function Qk(e,t){if(e&&typeof e=="object"&&"app_id"in e){let r=e.app_id;if(typeof r=="string"&&r.length>0)return r.startsWith("app_")?r.slice(4):r}if(t.startsWith("app_"))return t.slice(4);if(/^[0-9a-f]{40}$/i.test(t))return t}async function Qo(e,t){let r=await e.getCvmInfo({id:t}),n=Zk(r);if(!n)throw new lr(t);if(r.status!=="running")throw new cr(r.status,t);let{baseImage:o,isDev:a}=Xk(r),s=Qk(r,t);if(!s)throw new Error("CVM does not have an app_id usable for gateway SSH/SCP.");return{appId:s,gatewayDomain:n,status:r.status,baseImage:o,isDevImage:a}}function ea(e,t){return`${e}-22.${t}`}function ta(e,t){return e!=="443"?e:t||"443"}function ra(e){return/^[a-zA-Z0-9_./:@=-]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function e0(){try{return Bk("openssl version",{encoding:"utf-8"}).toLowerCase().includes("libressl")}catch{return!1}}function t0(e){if(Yk(e).toLowerCase().includes("ed25519"))return!0;try{let r=Wk(e,"utf-8");return r.includes("ssh-ed25519")||r.includes("ED25519")}catch{return!1}}function na(e){Jk()==="darwin"&&e0()&&t0(e)&&(i.warn("Detected LibreSSL with ed25519 key on macOS. This combination may cause SSH connection issues."),i.info(`If\xB7you\xB7experience\xB7problems,\xB7install\xB7OpenSSL\xB7via\xB7Homebrew:\xB7${zd.cyan("brew\xB7install\xB7openssl")}`),i.info("Then ensure Homebrew's OpenSSL is in your PATH before /usr/bin"))}function oa(e,t){return["-o",`ProxyCommand=${e?"openssl s_client -quiet -connect %h:%p":"openssl s_client -quiet -connect %h:%p 2>/dev/null"}`,"-o","StrictHostKeyChecking=no","-o","UserKnownHostsFile=/dev/null","-o",`ConnectTimeout=${t}`]}import{z as $t}from"zod";var Gd={name:"ssh",category:"cvm-ops",description:"Connect to a CVM via SSH",stability:"unstable",arguments:[B],options:[N,{name:"port",shorthand:"p",description:"Gateway port (priority: CLI > phala.toml > 443)",type:"string",target:"port"},{name:"gateway",shorthand:"g",description:"Gateway domain (priority: CLI > phala.toml > API)",type:"string",target:"gatewayDomain"},{name:"timeout",shorthand:"t",description:"Connection timeout in seconds (default: 30)",type:"string",target:"timeout"},{name:"verbose",shorthand:"v",description:"Show verbose connection details",type:"boolean",target:"verbose"},{name:"dry-run",description:"Print SSH command without executing",type:"boolean",target:"dryRun"}],passThrough:{description:"All arguments after -- are passed directly to ssh. Common options: -i (identity file), -L (local forward), -R (remote forward), -D (SOCKS proxy), -N (no command), -v (ssh verbose). Any trailing arguments are executed as remote command. Note: -o ProxyCommand is blocked.",examples:["-- -L 8080:localhost:80","-- -i ~/.ssh/key -D 1080 -N","-- ls -la /app"]},examples:[{name:"Connect from phala.toml",value:"phala ssh"},{name:"Connect to CVM",value:"phala ssh app_123"},{name:"Offline mode",value:"phala ssh app_123 -g dstack-pha-prod7.phala.network -p 16185"},{name:"Connect with custom SSH key",value:"phala ssh app_123 -- -i ~/.ssh/custom_key"},{name:"Forward local port 8080 to remote port 80",value:"phala ssh app_123 -- -L 8080:localhost:80"},{name:"SOCKS proxy without remote command",value:"phala ssh app_123 -- -D 1080 -N"},{name:"Execute remote command",value:"phala ssh app_123 -- ls -la /app"},{name:"Connect with verbose output for debugging",value:"phala ssh app_123 -v"},{name:"Print the SSH command without executing",value:"phala ssh app_123 --dry-run -- -L 8080:localhost:80"}]},Hd=$t.object({cvmId:$t.string().optional(),port:$t.string().default("443"),gatewayDomain:$t.string().optional(),timeout:$t.string().default("30"),verbose:$t.boolean().default(!1),dryRun:$t.boolean().default(!1),"--":$t.array($t.string()).optional()});function o0(e){for(let t=0;t<e.length;t++){let r=e[t];if(r==="-o"&&t+1<e.length&&e[t+1].toLowerCase().startsWith("proxycommand")||r.toLowerCase().startsWith("-oproxycommand"))return"-o ProxyCommand"}return null}async function a0(e,t){try{if(!t.cvmId)return t.fail("No CVM ID provided. Either pass a CVM ID as argument or configure it in phala.toml."),1;let{cvmId:r}=G.parse(t.cvmId),n=e["--"]??[],o=o0(n);if(o)return i.error(`${o} is not allowed as it would break the TLS gateway connection.`),1;let a=e.gatewayDomain??t.projectConfig.gateway_domain,s=e.port!=="443"?e.port:t.projectConfig.gateway_port?.toString()??"443",c,l;if(a)l=a,c=r.startsWith("app_")?r.substring(4):r;else try{let C=await k(),_=await Qo(C,r);c=_.appId,l=_.gatewayDomain,(_.isDevImage??Tn(_.baseImage))===!1&&i.warn("This CVM is not using a dev image. SSH access may not be available.")}catch(C){return C instanceof lr?i.error(C.message):C instanceof cr?(i.error(C.message),i.info("Please start the CVM first using: phala cvms start")):i.error(C instanceof Error?C.message:"Failed to fetch CVM info"),1}let m=Xo(l),p=ta(s,m.port),u=ea(c,m.host),d=ei();d&&na(d),e.verbose&&i.info(`Connecting to ${n0.cyan(u)}:${p}...`);let f=oa(e.verbose,e.timeout),{options:g,command:h}=s0(n),v=[];if(e.verbose&&v.push("-v"),v.push(...f,"-p",p,...g,`root@${u}`,...h),e.dryRun){let C=v.map(_=>ra(_));return t.stdout.write(`ssh ${C.join(" ")}
410
+ `),0}let w=r0("ssh",v,{stdio:"inherit"});return w.on("error",C=>{i.break(),i.error(`SSH connection failed: ${C.message}`)}),new Promise(C=>{w.on("close",_=>{i.break(),_===0?(i.success("Connection closed"),C(0)):(i.error(`Connection failed with code ${_}`),C(_??1))})})}catch(r){return i.error("Failed to connect via SSH"),r instanceof Error?i.error(r.message):i.error(String(r)),1}}function s0(e){let t=[],r=[],n=new Set(["-b","-c","-D","-E","-e","-F","-I","-i","-J","-L","-l","-m","-O","-o","-P","-p","-R","-S","-W","-w"]),o=0,a=!1;for(;o<e.length;){let s=e[o];if(a){r.push(s),o++;continue}if(s.startsWith("-")){t.push(s);let c=s.length===2?s:s.slice(0,2);n.has(c)&&s.length===2&&o+1<e.length&&(o++,t.push(e[o])),o++}else a=!0,r.push(s),o++}return{options:t,command:r}}var qd=b({path:["ssh"],meta:Gd,schema:Hd,handler:a0});import{spawn as i0}from"child_process";import ti from"chalk";import{z as Dt}from"zod";var Bd={name:"cp",category:"cvm-ops",description:"Copy files to/from a CVM via SCP",stability:"unstable",arguments:[{name:"source",description:"Source path (local or cvm-name:path, use :path for phala.toml cvm_id)",required:!0,target:"source"},{name:"destination",description:"Destination path (local or cvm-name:path, use :path for phala.toml cvm_id)",required:!0,target:"destination"}],options:[{name:"identity",shorthand:"i",description:"SSH identity file (private key)",type:"string",target:"identity"},{name:"port",shorthand:"p",description:"SSH port (priority: CLI > phala.toml > 443)",type:"string",target:"port"},{name:"gateway",shorthand:"g",description:"Gateway domain (priority: CLI > phala.toml > API)",type:"string",target:"gatewayDomain"},{name:"recursive",shorthand:"r",description:"Recursively copy directories",type:"boolean",target:"recursive"},{name:"verbose",shorthand:"v",description:"Show verbose SCP details",type:"boolean",target:"verbose"},{name:"dry-run",description:"Print SCP command without executing",type:"boolean",target:"dryRun"}],examples:[{name:"Upload from phala.toml",value:"phala cp ./local.txt :/root/remote.txt"},{name:"Upload to CVM",value:"phala cp ./local.txt app_123:/root/remote.txt"},{name:"Download from CVM",value:"phala cp app_123:/root/remote.txt ./local.txt"},{name:"Offline mode",value:"phala cp -g dstack-pha-prod7.phala.network -p 16185 ./file.txt app_123:/root/"},{name:"Upload directory recursively",value:"phala cp -r ./local_dir app_123:/root/remote_dir"},{name:"Copy with custom SSH key",value:"phala cp -i ~/.ssh/custom_key app_123:/root/file.txt ./file.txt"},{name:"Print the SCP command without executing",value:"phala cp ./local.txt app_123:/root/remote.txt --dry-run"}]},Wd=Dt.object({source:Dt.string(),destination:Dt.string(),identity:Dt.string().optional(),port:Dt.string().default("443"),gatewayDomain:Dt.string().optional(),recursive:Dt.boolean().default(!1),verbose:Dt.boolean().default(!1),dryRun:Dt.boolean().default(!1)});function Jd(e){let t=e.match(/^([^:]+):(.+)$/);return t?{isRemote:!0,cvmId:t[1],path:t[2]}:{isRemote:!1,path:e}}async function c0(e,t){try{let r=Jd(e.source),n=Jd(e.destination);if(r.isRemote===n.isRemote)return i.error("Either source or destination must be a remote path in format: cvm-id:path"),i.info("Examples:"),i.info(" phala cp ./local.txt app_123:/root/remote.txt"),i.info(" phala cp app_123:/root/remote.txt ./local.txt"),1;let o=r.isRemote?r:n,a;if(o.cvmId?a=$l(o.cvmId):t.cvmId&&(a=G.parse(t.cvmId).cvmId),!a)return t.fail("No CVM ID provided. Either use format cvm-id:path or configure it in phala.toml."),1;let s=e.gatewayDomain??t.projectConfig.gateway_domain,c=e.port!=="443"?e.port:t.projectConfig.gateway_port?.toString()??"443",l,m;if(s)m=s,l=a.startsWith("app_")?a.substring(4):a;else try{let x=await k(),P=await Qo(x,a);l=P.appId,m=P.gatewayDomain,(P.isDevImage??Tn(P.baseImage))===!1&&i.warn("This CVM is not using a dev image. SCP access may not be available.")}catch(x){return x instanceof lr?i.error(x.message):x instanceof cr?(i.error(x.message),i.info("Please start the CVM first using: phala cvms start")):i.error(x instanceof Error?x.message:"Failed to fetch CVM info"),1}let p=Xo(m),u=ta(c,p.port),d=ea(l,p.host),f=Kd(e.identity);f?na(f):i.warn("No default SSH key found. SCP will use ssh-agent or prompt for password."),e.verbose&&i.info(`Connecting to ${ti.cyan(d)}:${u}...`);let h=[...oa(e.verbose,"30"),"-P",u];e.verbose&&h.unshift("-v"),f&&h.push("-i",f),e.recursive&&h.push("-r");let v=r.isRemote?`root@${d}:${r.path}`:r.path,w=n.isRemote?`root@${d}:${n.path}`:n.path;if(h.push(v,w),e.dryRun){let x=h.map(P=>ra(P));return t.stdout.write(`scp ${x.join(" ")}
411
+ `),0}let C=r.isRemote?"download":"upload",_=r.isRemote?n.path:r.path,S=r.isRemote?r.path:n.path;i.info(`${C==="upload"?"Uploading":"Downloading"} ${ti.cyan(_)} ${C==="upload"?"to":"from"} ${ti.cyan(S)}...`);let E=i0("scp",h,{stdio:"inherit"});return E.on("error",x=>{i.break(),i.error(`SCP failed: ${x.message}`)}),new Promise(x=>{E.on("close",P=>{i.break(),P===0?(i.success(`${C==="upload"?"Upload":"Download"} completed`),x(0)):(i.error(`Transfer failed with code ${P}`),x(P??1))})})}catch(r){return i.error("Failed to copy file via SCP"),r instanceof Error&&i.error(r.message),1}}var Yd=b({path:["cp"],meta:Bd,schema:Wd,handler:c0});import{z as aa}from"zod";var Zd={name:"ps",category:"cvm-ops",description:"List containers of a CVM",stability:"stable",arguments:[B],options:[Dr,Ee,N],examples:[{name:"List containers interactively",value:"phala ps"},{name:"List containers by app_id",value:"phala ps app_abc123"},{name:"List containers by name",value:"phala ps my-app"},{name:"Output as JSON",value:"phala ps app_abc123 --json"}]},Xd=aa.object({cvmId:aa.string().optional(),json:aa.boolean().default(!1),interactive:aa.boolean().default(!1)});function l0(e){let r=Date.now()/1e3-e;return r<60?"Less than a minute ago":r<3600?`${Math.floor(r/60)} minutes ago`:r<86400?`${Math.floor(r/3600)} hours ago`:r<86400*30?`${Math.floor(r/86400)} days ago`:r<86400*365?`${Math.floor(r/(86400*30))} months ago`:`${Math.floor(r/(86400*365))} years ago`}function m0(e){let t=e[0]??"";return t.startsWith("/")?t.slice(1):t}async function p0(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;try{let r=await k(),n=await Za(r,t.cvmId);if(!n.success)return t.fail(n.error.message),1;let o=n.data;if(!o.is_online){let p=o.error??"CVM is offline";return e.json?(t.success({containers:[],error:p}),0):(i.warn(p),0)}let a=o.containers??[];if(e.json)return t.success({containers:a}),0;if(a.length===0)return i.info("No containers running"),0;let s=["NAME","IMAGE","CREATED","STATUS","STATE"],c=a.map(p=>({NAME:m0(p.names),IMAGE:p.image,CREATED:l0(p.created),STATUS:p.status,STATE:p.state})),l={};for(let p of s){l[p]=p.length;for(let u of c)l[p]=Math.max(l[p],u[p].length)}let m=p=>s.map(u=>p[u].padEnd(l[u])).join(" ");console.log(m(Object.fromEntries(s.map(p=>[p,p]))));for(let p of c)console.log(m(p));return 0}catch(r){return i.logDetailedError(r),t.fail(`Failed to list containers: ${r instanceof Error?r.message:String(r)}`),1}}var Qd=b({path:["ps"],meta:Zd,schema:Xd,handler:p0});import{z as qe}from"zod";var ef={name:"logs",category:"cvm-ops",description:"Fetch logs from a CVM",stability:"unstable",arguments:[{name:"container-name",description:"Container name to fetch logs from",required:!1,target:"containerName"}],options:[{name:"serial",description:"CVM serial console (boot, kernel, docker-compose)",type:"boolean",target:"serial"},{name:"cvm-stdout",description:"CVM stdout channel",type:"boolean",target:"cvmStdout"},{name:"cvm-stderr",description:"CVM stderr channel",type:"boolean",target:"cvmStderr"},{name:"stderr",description:"Include container stderr (container mode only)",type:"boolean",target:"stderr"},{name:"tail",shorthand:"n",description:"Number of lines from end",type:"number",target:"tail"},{name:"follow",shorthand:"f",description:"Stream in real-time",type:"boolean",target:"follow"},{name:"timestamps",shorthand:"t",description:"Show timestamps",type:"boolean",target:"timestamps"},{name:"since",description:"Start time (RFC3339 or relative, e.g. 42m)",type:"string",target:"since",argumentName:"since"},{name:"until",description:"End time (RFC3339 or relative)",type:"string",target:"until",argumentName:"until"},Dr,ie,N],examples:[{name:"Container stdout",value:"phala logs my-service"},{name:"Container stderr",value:"phala logs my-service --stderr"},{name:"Follow container logs",value:"phala logs my-service -f"},{name:"CVM serial console",value:"phala logs --serial"},{name:"CVM stdout channel",value:"phala logs --cvm-stdout"},{name:"CVM stderr channel",value:"phala logs --cvm-stderr"},{name:"Last 100 lines",value:"phala logs my-service -n 100"},{name:"Specify CVM",value:"phala logs my-service --cvm-id app_abc123"}]},tf=qe.object({containerName:qe.string().optional(),cvmId:qe.string().optional(),serial:qe.boolean().default(!1),cvmStdout:qe.boolean().default(!1),cvmStderr:qe.boolean().default(!1),stderr:qe.boolean().default(!1),since:qe.string().optional(),until:qe.string().optional(),tail:qe.number().optional(),follow:qe.boolean().default(!1),timestamps:qe.boolean().default(!1),json:qe.boolean().default(!1),interactive:qe.boolean().default(!1)});function rf(e,t,r){if(e.channel==="stdout"){t.includeStdout&&r.stdout.write(e.message);return}t.includeStderr&&r.stderr.write(e.message)}function u0(e){let t=[e.serial&&"serial",e.cvmStdout&&"stdout",e.cvmStderr&&"stderr"].filter(Boolean);return t.length>1?null:t.length===1?{type:"cvm",channel:t[0]}:e.containerName?{type:"container",containerName:e.containerName}:null}async function d0(e,t){if(ln(e.json),!t.cvmId)return t.fail("No CVM ID provided. Use --interactive to select interactively."),1;let{cvmId:r}=G.parse(t.cvmId),n=[e.serial,e.cvmStdout,e.cvmStderr].filter(Boolean).length;if(n>1)return t.fail("--serial, --cvm-stdout, and --cvm-stderr are mutually exclusive"),1;let o=n===1;if(e.containerName&&o)return t.fail("Cannot combine container name with --serial/--cvm-stdout/--cvm-stderr. Use container name for container logs, or CVM flags for CVM-level logs."),1;if(e.stderr&&o)return t.fail("--stderr is only valid in container mode, not with CVM flags"),1;let a=u0(e);if(!a)try{let s=await rm(r);s==="running"?a={type:"container"}:(i.warn(`CVM is ${s}. Falling back to serial console logs.`),i.warn("Use --serial, --cvm-stdout, or --cvm-stderr for specific CVM channels."),a={type:"cvm",channel:"serial"})}catch{a={type:"container"}}return a.type==="cvm"?f0(r,a.channel,e,t):g0(r,a.containerName,e,t)}async function f0(e,t,r,n){try{if(r.follow){if(r.json)return n.fail("Cannot use --json with --follow"),1;let a=new AbortController,s=()=>a.abort();process.on("SIGINT",s),process.on("SIGTERM",s);try{await tm(e,t,c=>n.stdout.write(c),{tail:r.tail,timestamps:r.timestamps,since:r.since,until:r.until},a.signal)}catch(c){if(c.name!=="AbortError")throw c}finally{process.removeListener("SIGINT",s),process.removeListener("SIGTERM",s)}return 0}let o=await em(e,t,{tail:r.tail,timestamps:r.timestamps,since:r.since,until:r.until});return r.json?(n.success({logs:o,cvm_id:e,channel:t}),0):(o.trim()?n.stdout.write(o):i.info(`No ${t} logs available`),0)}catch(o){return n.fail(`Failed to fetch CVM ${t} logs: ${o instanceof Error?o.message:String(o)}`),1}}async function g0(e,t,r,n){let o={includeStdout:!0,includeStderr:r.stderr},a={container:t,since:r.since,until:r.until,tail:r.tail,timestamps:r.timestamps,matchContainerIdPrefix:!1};try{if(r.follow){if(r.json)return n.fail("Cannot use --json with --follow"),1;let p=new AbortController,u=()=>p.abort();process.on("SIGINT",u),process.on("SIGTERM",u);try{await Zl(e,d=>rf(d,o,n),a,p.signal)}catch(d){if(d.name!=="AbortError")throw d}finally{process.removeListener("SIGINT",u),process.removeListener("SIGTERM",u)}return 0}let c=(await Yl(e,a)).filter(p=>p.channel==="stderr"?o.includeStderr:o.includeStdout),l=c.map(p=>p.message).join("");if(r.json)return n.success({logs:l,cvm_id:e}),0;if(l.trim()){for(let p of c)rf(p,o,n);return 0}return await En(e)||i.info("No logs available"),0}catch(s){return n.fail(`Failed to fetch container logs: ${s instanceof Error?s.message:String(s)}`),await En(e),1}}var nf=b({path:["logs"],meta:ef,schema:tf,handler:d0});var of={path:["self"],meta:{name:"self",category:"advanced",description:"CLI self-management",stability:"unstable"}};import w0 from"prompts";import{execa as _0}from"execa";import sa from"semver";import Rt from"chalk";import{z as Kr}from"zod";var h0={name:"json",shorthand:"j",description:"Output in JSON format",type:"boolean",target:"json",negatedName:"no-json"},y0={name:"yes",shorthand:"y",description:"Skip confirmation prompt",type:"boolean",target:"yes"},v0={name:"dry-run",description:"Print update command without executing",type:"boolean",target:"dryRun"},b0={name:"package-manager",description:"Override package manager (npm|pnpm|yarn|bun)",type:"string",target:"packageManager",aliases:["pm"],argumentName:"name"},C0={name:"channel",description:"Release channel/dist-tag (e.g. latest, beta, next)",type:"string",target:"channel",argumentName:"tag"},af={name:"update",description:"Update the Phala CLI",stability:"unstable",options:[h0,y0,v0,b0,C0],examples:[{name:"Update CLI",value:"phala self update"},{name:"Dry run",value:"phala self update --dry-run"},{name:"Beta channel",value:"phala self update --channel beta"}]},sf=Kr.object({json:Kr.boolean().default(!1),yes:Kr.boolean().default(!1),dryRun:Kr.boolean().default(!1),packageManager:Kr.enum(["npm","pnpm","yarn","bun"]).optional(),channel:Kr.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/).optional()});var cf="Phala-Network/phala-cloud",ri="cli-v";function S0(e,t){return`https://github.com/${cf}/compare/${ri}${e}...${ri}${t}`}function k0(e){return`https://github.com/${cf}/releases/tag/${ri}${e}`}function Ln(e){return typeof e=="string"&&e.trim().length>0}function E0(e){return e.startsWith("@")?e.replace("/","%2F"):e}async function I0(e,t){let n=`https://registry.npmjs.org/${E0(e)}`,o=new AbortController,a=setTimeout(()=>o.abort(),5e3);try{let s=await fetch(n,{signal:o.signal,headers:{accept:"application/json"}});if(!s.ok)return{latestVersion:null,error:`Registry returned ${s.status}`};let c=await s.json();if(!c||typeof c!="object")return{latestVersion:null,error:"Invalid registry response"};let l=c["dist-tags"];if(!l||typeof l!="object")return{latestVersion:null,error:"No dist-tags in response"};let m=l[t]??l.latest;return typeof m!="string"?{latestVersion:null,error:`Channel "${t}" not found`}:{latestVersion:sa.valid(m)}}catch(s){return s instanceof Error&&s.name==="AbortError"?{latestVersion:null,error:"Request timed out"}:{latestVersion:null,error:String(s)}}finally{clearTimeout(a)}}function A0(e){if(typeof e!="object"||e===null||!("code"in e))return;let t=e.code;return typeof t=="string"?t:void 0}function x0(e){let r=sa.parse(e)?.prerelease?.[0];return typeof r=="string"&&r.length>0?r:void 0}function P0(e,t,r,n){let o=[],a=n instanceof Error&&typeof n.message=="string"?n.message:String(n),s=A0(n);(/permission denied|eacces|not permitted/i.test(a)||n instanceof Error&&(s==="EACCES"||s==="EPERM"))&&o.push(`Permission error while running "${r}". Ensure your global install prefix is writable (avoid sudo if possible).`),/command not found|not recognized as an internal|ENOENT/i.test(a)&&o.push(`Package manager "${t}" not found. Install it or rerun with --package-manager npm|pnpm|yarn|bun.`);let c=e.NVM_DIR;t==="npm"&&Ln(c)&&o.push(`Detected nvm (NVM_DIR=${c}). Make sure the intended Node version is active (e.g. "nvm use <version>") and your npm global bin is on PATH.`);let l=e.FNM_DIR;return t==="npm"&&Ln(l)&&o.push(`Detected fnm (FNM_DIR=${l}). Ensure your shell has fnm env loaded (e.g. eval "$(fnm env)") so the correct node/npm are on PATH.`),o}function $0(e,t,r){if(Ln(e))return e.trim();if(Ln(r.PHALA_UPDATE_CHANNEL))return r.PHALA_UPDATE_CHANNEL;let n=Mr("updateCheckChannel");return Ln(n)?n:x0(t)??"latest"}async function D0(e,t){let r=t.cli?.packageName??"phala",n=t.cli?.runtime??vo(),o=e.packageManager??hn(t.env,n),a=t.cli?.packageVersion??"0.0.0",s=$0(e.channel,a,t.env);e.json||t.stderr.write(Rt.gray(`Checking for updates...
412
+ `));let{latestVersion:c,error:l}=await I0(r,s);if(c){let S=Date.now(),E=s.replace(/[^a-zA-Z0-9_-]/g,"_");er({[`updateCheckLastAt_${E}`]:S,[`updateCheckLatest_${E}`]:c,...s==="latest"?{updateCheckLastAt:S,updateCheckLatest:c}:{}})}let m=sa.valid(a),p=c&&m&&!sa.gt(c,m),u=!p&&c&&m?S0(m,c):void 0,d=c?k0(c):void 0;e.json||(l?(t.stderr.write(Rt.yellow(`Warning: Could not fetch latest version: ${l}
413
+ `)),t.stderr.write(Rt.gray(`Current version: v${a}
414
+ `))):c&&(t.stderr.write(Rt.gray(`Current version: v${a}
415
+ `)),t.stderr.write(Rt.gray(`Latest version: v${c}${s!=="latest"?` (${s})`:""}
416
+ `)),p?t.stderr.write(Rt.green(`You are already on the latest version.
417
+ `)):(t.stderr.write(Rt.yellow(`Update available: v${a} \u2192 v${c}
418
+ `)),u&&t.stderr.write(Rt.gray(`${u}
419
+ `)))));let f=o==="bun"&&c?`${r}@${c}`:s==="latest"?`${r}@latest`:`${r}@${s}`,g=yn(o,f),{command:h,args:v}=im(o,f);if(e.json&&e.dryRun)return t.success({command:g,dryRun:!0,currentVersion:a,latestVersion:c,isUpToDate:p,releaseUrl:d,changelogUrl:u}),0;if(e.dryRun)return t.stderr.write(Rt.gray(`Command: ${g}
420
+ `)),0;let w=t.stderr.isTTY===!0&&e.json!==!0;if(!e.yes&&!w){let S=`Non-interactive session detected. Re-run with --yes to apply the update, or use --dry-run to print the command.
421
+ `;return e.json?(t.success({command:g,ran:!1,reason:"nonInteractive",currentVersion:a,latestVersion:c,isUpToDate:p,releaseUrl:d,changelogUrl:u}),0):(t.stderr.write(S),1)}let C=p?`Already up to date. Reinstall anyway with "${g}"?`:`Run "${g}"?`;if(!(e.yes||await w0({type:"confirm",name:"ok",message:C,initial:!p}).then(S=>S.ok===!0)))return e.json&&t.success({command:g,ran:!1,currentVersion:a,latestVersion:c,isUpToDate:p,releaseUrl:d,changelogUrl:u}),0;try{return await _0(h,v,{stdio:"inherit"}),e.json?(t.success({command:g,ran:!0,currentVersion:a,latestVersion:c,isUpToDate:p,releaseUrl:d,changelogUrl:u}),0):(i.success("Update completed"),0)}catch(S){let E=P0(t.env,o,g,S);if(i.logDetailedError(S),t.fail("Self update failed",{command:g,hints:E.length>0?E:void 0}),!e.json&&E.length>0)for(let x of E)i.info(x);return 1}}var lf=b({path:["self","update"],meta:af,schema:sf,handler:D0});var ni={group:of,commands:[lf]};import ia from"chalk";import{z as Ye}from"zod";var mf={name:"apps",category:"manage",description:"List dstack apps",stability:"unstable",options:[{name:"page",description:"Page number (1-based)",type:"number",target:"page",group:"basic"},{name:"page-size",description:"Number of items per page",type:"number",target:"pageSize",group:"basic"},{name:"search",description:"Search by name, app_id, vm_uuid, or instance_id",type:"string",target:"search",group:"basic"},{name:"status",description:"Filter by CVM status (can be specified multiple times)",type:"string[]",target:"status",group:"basic"},{name:"listed",description:"Filter by listed status",type:"boolean",target:"listed",negatedName:"no-listed",group:"basic"},{name:"base-image",description:"Filter by base image name",type:"string",target:"baseImage",group:"basic"},{name:"instance-type",description:"Filter by instance type",type:"string",target:"instanceType",group:"basic"},{name:"kms-type",description:"Filter by KMS type",type:"string",target:"kmsType",group:"basic"},{name:"node",description:"Filter by node name",type:"string",target:"node",group:"basic"},{name:"region",description:"Filter by region identifier",type:"string",target:"region",group:"basic"},Ee],examples:[{name:"List apps",value:"phala apps"},{name:"Second page",value:"phala apps --page 2"},{name:"Search by name",value:"phala apps --search my-app"},{name:"Filter by status",value:"phala apps --status running"},{name:"Output as JSON",value:"phala apps --json"}]},pf=Ye.object({page:Ye.coerce.number().int().min(1).default(1),pageSize:Ye.coerce.number().int().min(1).max(100).default(50),search:Ye.string().optional(),status:Ye.array(Ye.string()).optional(),listed:Ye.boolean().optional(),baseImage:Ye.string().optional(),instanceType:Ye.string().optional(),kmsType:Ye.string().optional(),node:Ye.string().optional(),region:Ye.string().optional(),json:Ye.boolean().default(!1)});function R0(e){return e.toLowerCase().endsWith("ing")?ia.yellow(e):e==="running"?ia.green(e):e==="stopped"?ia.red(e):ia.yellow(e)}async function M0(e,t){try{let r=await k(),n=await Mo(r,{page:e.page,pageSize:e.pageSize,search:e.search,status:e.status,listed:e.listed,baseImage:e.baseImage,instanceType:e.instanceType,kmsType:e.kmsType,node:e.node,region:e.region});if(n.success===!1)return t.fail(n.error.message),1;let o=n.data;if(e.json)return t.success(o),0;let a=["APP_ID","CVM","STATUS","UPTIME"],s=o.items.map(c=>({APP_ID:c.appId,CVM:c.cvmName,STATUS:R0(c.status),UPTIME:c.uptime??"-"}));return s.length===0?(i.info("No CVMs found"),0):(ce(a,s),i.info(`Page ${o.page}/${o.totalPages} (total ${o.total})`),0)}catch(r){return i.logDetailedError(r),t.fail(`Failed to list apps: ${r instanceof Error?r.message:String(r)}`),1}}var uf=b({path:["apps"],meta:mf,schema:pf,handler:M0});import{z as oi}from"zod";var df={name:"instance-types",category:"deploy",description:"List available instance types",stability:"unstable",arguments:[{name:"family",description:"Instance type family (cpu, gpu)",required:!1,target:"family"}],options:[Ee],examples:[{name:"List all instance type families",value:"phala instance-types"},{name:"List CPU instance types",value:"phala instance-types cpu"},{name:"List GPU instance types",value:"phala instance-types gpu"},{name:"Output as JSON",value:"phala instance-types --json"}]},ff=oi.object({family:oi.string().optional(),json:oi.boolean().default(!1)});function gf(e){return(e/1024).toFixed(0)}function hf(e){return`$${e}`}async function T0(e,t){try{let r=await k();if(e.family){let a=await Oa(r,{family:e.family});if(e.json)return t.success(a),0;let s=["ID","NAME","vCPU","Memory(GB)","Hourly Rate","GPU"],c=a.items.map(l=>({ID:l.id,NAME:l.name,vCPU:l.vcpu.toString(),"Memory(GB)":gf(l.memory_mb),"Hourly Rate":hf(l.hourly_rate),GPU:l.requires_gpu?"Yes":"No"}));return c.length===0?(i.info(`No instance types found for family '${e.family}'`),0):(ce(s,c),i.info(`Total: ${a.total} instance types`),0)}let n=await Ua(r);if(e.json)return t.success(n),0;if(n.result.length===0)return i.info("No instance types found"),0;let o=["ID","NAME","vCPU","Memory(GB)","Hourly Rate"];for(let a of n.result){i.info(`
422
+ Family: ${a.name} (${a.total} types)`);let s=a.items.map(c=>({ID:c.id,NAME:c.name,vCPU:c.vcpu.toString(),"Memory(GB)":gf(c.memory_mb),"Hourly Rate":hf(c.hourly_rate)}));ce(o,s)}return 0}catch(r){return i.logDetailedError(r),t.fail(`Failed to list instance types: ${r instanceof Error?r.message:String(r)}`),1}}var yf=b({path:["instance-types"],meta:df,schema:ff,handler:T0});import{z as vf}from"zod";var bf={name:"runtime-config",description:"Show the runtime configuration of a CVM",stability:"stable",category:"cvm-ops",arguments:[B],options:[N],examples:[{name:"Show runtime config by app_id",value:"phala runtime-config app_123"},{name:"Show runtime config by name",value:"phala runtime-config my-app"}]},Cf=vf.object({cvmId:vf.string().optional()});async function L0(e,t){if(!t.cvmId)return t.fail("No CVM ID provided. Either pass a CVM ID as argument or configure it in phala.toml."),1;try{let r=await k(),n=await fl(r,t.cvmId);if(!n.success)return t.fail(`Failed to get runtime config: ${n.error.message}`),1;let o=n.data;if(ne())return t.success(o),0;if(console.log(`Hostname: ${o.hostname??"-"}`),console.log(`Gateway Domain: ${o.default_gateway_domain??"-"}`),console.log(`SSH Keys: ${o.ssh_authorized_keys.length>0?`${o.ssh_authorized_keys.length} key(s)`:"none"}`),o.ssh_authorized_keys.length>0){console.log(),console.log("SSH Authorized Keys:");for(let a of o.ssh_authorized_keys)console.log(` ${a}`)}return 0}catch(r){return i.logDetailedError(r),t.fail("Failed to get CVM runtime config"),1}}var wf=b({path:["runtime-config"],meta:bf,schema:Cf,handler:L0});import{existsSync as kf,readFileSync as O0}from"fs";import{basename as F0,join as ca}from"path";import{homedir as la,hostname as j0}from"os";import{z as ai}from"zod";var N0={name:"name",description:"Name for the SSH key (default: key file name)",type:"string",target:"name"},U0={name:"key-file",description:"Path to SSH public key file (default: ~/.ssh/id_ed25519.pub or ~/.ssh/id_rsa.pub)",type:"string",target:"keyFile"},_f={name:"add",description:"Add a local SSH public key to your account",stability:"stable",options:[N0,U0],examples:[{name:"Add default SSH key",value:"phala ssh-keys add"},{name:"Add a specific key with a name",value:"phala ssh-keys add --name my-laptop --key-file ~/.ssh/id_ed25519.pub"}]},Sf=ai.object({name:ai.string().optional(),keyFile:ai.string().optional()});function V0(){let e=[ca(la(),".ssh","id_ed25519.pub"),ca(la(),".ssh","id_rsa.pub"),ca(la(),".ssh","id_ecdsa.pub")];for(let t of e)if(kf(t))return t}async function z0(e,t){try{let r=e.keyFile;if(r?.startsWith("~/")&&(r=ca(la(),r.slice(2))),!r&&(r=V0(),!r))return t.fail("No SSH public key found. Specify one with --key-file or generate one with ssh-keygen."),1;if(!kf(r))return t.fail(`SSH public key file not found: ${r}`),1;let n=O0(r,"utf-8").trim(),o=e.name??`${j0()}-${F0(r,".pub")}`,a=await k(),s=await es(a,{name:o,public_key:n});return s.success?ne()?(t.success(s.data),0):(i.success(`Added SSH key "${o}" (${s.data.key_type}, ${s.data.fingerprint})`),0):(t.fail(`Failed to add SSH key: ${s.error.message}`),1)}catch(r){return i.logDetailedError(r),t.fail("Failed to add SSH key"),1}}var Ef=b({path:["ssh-keys","add"],meta:_f,schema:Sf,handler:z0});var If={path:["ssh-keys"],meta:{name:"ssh-keys",category:"manage",description:"Manage SSH keys",stability:"stable"}};import{z as Af}from"zod";var K0={name:"github_username",description:"GitHub username to import SSH keys from",required:!0,target:"githubUsername"},xf={name:"import-github",description:"Import SSH keys from a GitHub user's public profile",stability:"stable",arguments:[K0],examples:[{name:"Import SSH keys from a GitHub profile",value:"phala ssh-keys import-github octocat"}]},Pf=Af.object({githubUsername:Af.string()});async function G0(e,t){try{let r=await k(),n=i.startSpinner(`Importing SSH keys from github.com/${e.githubUsername}`),o=await Qa(r,{github_username:e.githubUsername});if(n.stop(!0),!o.success)return t.fail(`Failed to import SSH keys: ${o.error.message}`),1;if(ne())return t.success(o.data),0;let{keys_added:a,keys_skipped:s,errors:c}=o.data;if(c.length>0){i.warn(`${c.length} key(s) could not be imported:`);for(let l of c)i.warn(` ${l}`)}return a>0?i.success(`Added ${a} SSH key(s) from github.com/${e.githubUsername} (${s} skipped)`):i.info("No new keys added (all keys already exist)"),0}catch(r){return i.logDetailedError(r),t.fail("Failed to import SSH keys"),1}}var $f=b({path:["ssh-keys","import-github"],meta:xf,schema:Pf,handler:G0});import{z as H0}from"zod";var Df={name:"list",aliases:["ls"],description:"List SSH keys for the current user",stability:"stable",examples:[{name:"List all SSH keys",value:"phala ssh-keys list"}]},Rf=H0.object({});async function q0(e,t){try{let r=await k(),n=await on(r);if(!n.success)return t.fail(`Failed to list SSH keys: ${n.error.message}`),1;let o=n.data;if(ne())return t.success(o),0;if(o.length===0)return i.info("No SSH keys found"),0;let a=["ID","NAME","TYPE","FINGERPRINT","SOURCE","CREATED"],s=o.map(c=>({ID:c.id,NAME:c.name,TYPE:c.key_type,FINGERPRINT:c.fingerprint,SOURCE:c.source,CREATED:c.created_at.slice(0,10)}));return ce(a,s),0}catch(r){return i.logDetailedError(r),t.fail("Failed to list SSH keys"),1}}var Mf=b({path:["ssh-keys","list"],meta:Df,schema:Rf,handler:q0});import W0 from"inquirer";import{z as si}from"zod";var B0={name:"key_id",description:"SSH key ID to remove (from `phala ssh-keys list`)",required:!1,target:"keyId"},Tf={name:"remove",aliases:["rm"],description:"Remove an SSH key from your account",stability:"stable",arguments:[B0],options:[N],examples:[{name:"Remove an SSH key by ID",value:"phala ssh-keys remove sshkey_xxx"},{name:"Interactive selection",value:"phala ssh-keys rm -i"}]},Lf=si.object({keyId:si.string().optional(),interactive:si.boolean().default(!1)});async function J0(){let e=i.startSpinner("Fetching SSH keys"),t=await k(),r=await on(t);if(e.stop(!0),!r.success){i.error(`Failed to fetch SSH keys: ${r.error.message}`);return}let n=r.data;if(n.length===0){i.info("No SSH keys found");return}let o=n.map(s=>({name:`${s.id} ${s.name} (${s.key_type}, ${s.fingerprint})`,value:s.id})),{selectedKey:a}=await W0.prompt([{type:"list",name:"selectedKey",message:"Select an SSH key to remove:",choices:o}]);return a}async function Y0(e,t){try{let r=e.keyId;if(!r&&e.interactive&&(r=await J0(),!r))return 0;if(!r)return t.fail("Missing key_id. Use `phala ssh-keys rm <key_id>` or `phala ssh-keys rm -i` for interactive selection."),1;let n=await k(),o=await ts(n,{keyId:r});return o.success?ne()?(t.success({keyId:r,removed:!0}),0):(i.success(`SSH key ${r} removed`),0):(t.fail(`Failed to remove SSH key: ${o.error.message}`),1)}catch(r){return i.logDetailedError(r),t.fail("Failed to remove SSH key"),1}}var Nf=b({path:["ssh-keys","remove"],meta:Tf,schema:Lf,handler:Y0});var ii={group:If,commands:[Mf,Ef,Nf,$f]};import{z as ci}from"zod";var Uf={name:"whoami",category:"profile",description:"Print the current user",stability:"stable",options:[...jt,ie],examples:[{name:"Show current user",value:"phala whoami"},{name:"JSON output",value:"phala whoami --json"}]},Of=ci.object({json:ci.boolean().default(!1),apiToken:ci.string().optional()});async function Z0(e,t){let{client:r,auth:n}=await uo(t,{apiToken:e.apiToken});if(!n.apiKey)return t.fail('Not authenticated. Run "phala login" first.'),1;let o=await Pe(r);if(!o.success)return t.fail(o.error?.message||"Failed to get user information"),1;let{user:a,workspace:s}=o.data;return e.json?(t.success({username:a.username,email:a.email,workspace:s.name,profile:n.profileName}),0):(t.stdout.write(`${a.username} (${s.name})
423
+ `),0)}var Ff=b({path:["whoami"],meta:Uf,schema:Of,handler:Z0});import Qf from"chalk";import tg from"inquirer";import{createPublicClient as X0,createWalletClient as Q0,http as eg}from"viem";import{privateKeyToAccount as eE,nonceManager as tE}from"viem/accounts";import{z as j}from"zod";var Gr={name:"cvm",description:"CVM identifier (UUID, app_id, instance_id, or name)",required:!0,target:"cvm"},jf={path:["allow-devices"],meta:{name:"allow-devices",description:"Manage on-chain device allowlist for a CVM's app contract",stability:"unstable"}},Vf={name:"list",aliases:["ls"],description:"List allowed devices from the on-chain contract",stability:"unstable",arguments:[Gr],options:[ie],examples:[{name:"List devices on-chain",value:"phala allow-devices list app_abc123"}]},zf=j.object({cvm:j.string(),json:j.boolean().default(!1)}),Kf={name:"add",description:"Add device(s) to the on-chain allowlist",stability:"unstable",arguments:[Gr,{name:"device_id",description:"Device ID (bytes32 hex) or node name to resolve device_id from available nodes",required:!1,target:"deviceId"}],options:[{name:"private-key",description:"Private key for signing the transaction",type:"string",target:"privateKey",group:"advanced"},{name:"rpc-url",description:"Custom RPC URL for the blockchain",type:"string",target:"rpcUrl",group:"advanced"},{name:"wait",description:"Wait for on-chain state to reflect the change via RPC polling",type:"boolean",target:"wait"},ie,N],examples:[{name:"Add device to allowlist",value:"phala allow-devices add app_abc123 0xaabb... --private-key 0x..."},{name:"Interactive multi-select from available nodes",value:"phala allow-devices add app_abc123 -i --private-key 0x..."}]},Gf=j.object({cvm:j.string(),deviceId:j.string().optional(),privateKey:j.string().optional(),rpcUrl:j.string().optional(),wait:j.boolean().default(!1),json:j.boolean().default(!1),interactive:j.boolean().default(!1)}),Hf={name:"remove",aliases:["rm"],description:"Remove device(s) from the on-chain allowlist",stability:"unstable",arguments:[Gr,{name:"device_id",description:"Device ID (bytes32 hex) or node name to resolve device_id from available nodes",required:!1,target:"deviceId"}],options:[{name:"private-key",description:"Private key for signing the transaction",type:"string",target:"privateKey",group:"advanced"},{name:"rpc-url",description:"Custom RPC URL for the blockchain",type:"string",target:"rpcUrl",group:"advanced"},{name:"wait",description:"Wait for on-chain state to reflect the change via RPC polling",type:"boolean",target:"wait"},ie,N],examples:[{name:"Remove device from allowlist",value:"phala allow-devices remove app_abc123 0xaabb... --private-key 0x..."},{name:"Interactive multi-select from allowed devices",value:"phala allow-devices remove app_abc123 -i --private-key 0x..."}]},qf=j.object({cvm:j.string(),deviceId:j.string().optional(),privateKey:j.string().optional(),rpcUrl:j.string().optional(),wait:j.boolean().default(!1),json:j.boolean().default(!1),interactive:j.boolean().default(!1)}),Bf={name:"allow-any",description:"Set allow-any-device flag on the contract",stability:"unstable",arguments:[Gr],options:[{name:"enable",description:"Enable allow-any-device",type:"boolean",target:"enable"},{name:"disable",description:"Disable allow-any-device",type:"boolean",target:"disable"},{name:"private-key",description:"Private key for signing the transaction",type:"string",target:"privateKey",group:"advanced"},{name:"rpc-url",description:"Custom RPC URL for the blockchain",type:"string",target:"rpcUrl",group:"advanced"},{name:"wait",description:"Wait for on-chain state to reflect the change via RPC polling",type:"boolean",target:"wait"},ie],examples:[{name:"Enable allow-any-device",value:"phala allow-devices allow-any app_abc123 --enable --private-key 0x..."},{name:"Disable allow-any-device",value:"phala allow-devices allow-any app_abc123 --disable --private-key 0x..."}]},Wf=j.object({cvm:j.string(),enable:j.boolean().optional(),disable:j.boolean().optional(),privateKey:j.string().optional(),rpcUrl:j.string().optional(),wait:j.boolean().default(!1),json:j.boolean().default(!1)}),Jf={name:"disallow-any",description:"Disable allow-any-device on the contract",stability:"unstable",arguments:[Gr],options:[{name:"private-key",description:"Private key for signing the transaction",type:"string",target:"privateKey",group:"advanced"},{name:"rpc-url",description:"Custom RPC URL for the blockchain",type:"string",target:"rpcUrl",group:"advanced"},{name:"wait",description:"Wait for on-chain state to reflect the change via RPC polling",type:"boolean",target:"wait"},ie],examples:[{name:"Disable allow-any-device",value:"phala allow-devices disallow-any app_abc123 --private-key 0x..."}]},Yf=j.object({cvm:j.string(),privateKey:j.string().optional(),rpcUrl:j.string().optional(),wait:j.boolean().default(!1),json:j.boolean().default(!1)}),Zf={name:"toggle-allow-any",description:"Toggle allow-any-device on the contract (or force via --enable/--disable)",stability:"unstable",arguments:[Gr],options:[{name:"enable",description:"Force enable allow-any-device",type:"boolean",target:"enable"},{name:"disable",description:"Force disable allow-any-device",type:"boolean",target:"disable"},{name:"private-key",description:"Private key for signing the transaction",type:"string",target:"privateKey",group:"advanced"},{name:"rpc-url",description:"Custom RPC URL for the blockchain",type:"string",target:"rpcUrl",group:"advanced"},{name:"wait",description:"Wait for on-chain state to reflect the change via RPC polling",type:"boolean",target:"wait"},ie],examples:[{name:"Toggle based on current state",value:"phala allow-devices toggle-allow-any app_abc123 --private-key 0x..."},{name:"Force enable",value:"phala allow-devices toggle-allow-any app_abc123 --enable --private-key 0x..."}]},Xf=j.object({cvm:j.string(),enable:j.boolean().optional(),disable:j.boolean().optional(),privateKey:j.string().optional(),rpcUrl:j.string().optional(),wait:j.boolean().default(!1),json:j.boolean().default(!1)});var rE=/^(0x)?[0-9a-fA-F]{64}$/;function mr(e){return(e.startsWith("0x")?e:`0x${e}`).toLowerCase()}function ma(e){return rE.test(e)}function li(e,t){if(!t)return null;let r=e.blockExplorers?.default?.url;return r?`${r}/tx/${t}`:null}function nE(e){return e.enable&&e.disable||!e.enable&&!e.disable?null:!!e.enable}function oE(e){return e.enable&&e.disable?null:e.enable===!0?!0:e.disable===!0?!1:!(e.currentValue??!1)}function aE(e){return new Set(e.map(t=>mr(t.device_id)))}async function mi(e){let{chain:t,rpcUrl:r,appAddress:n,deviceIds:o,condition:a,description:s}=e,c=e.timeoutMs??6e4,l=e.intervalMs??2e3,m=Date.now()+c;for(;Date.now()<m;){let p=await Qn({chain:t,rpcUrl:r,appAddress:n,deviceIds:o});if(a(p))return!0;await new Promise(u=>{setTimeout(u,l)})}return i.warn(`Timeout waiting for on-chain state: ${s}`),!1}function rg(e){return e!==null&&typeof e=="object"&&"name"in e&&e.name==="ExitPromptError"}function pi(e){let t=e.privateKey||process.env.PRIVATE_KEY;if(!t)throw new Error("Private key required. Use --private-key or set PRIVATE_KEY env var.");return t.startsWith("0x")?t:`0x${t}`}function ng(e,t,r){let n=eE(t,{nonceManager:tE}),o=X0({chain:e,transport:eg(r)}),a=Q0({account:n,chain:e,transport:eg(r)});return{publicClient:o,walletClient:a}}async function og(e){if(ma(e))return mr(e);if(e.startsWith("0x"))throw new Error(`Invalid device ID format: ${e}. Expected 32-byte hex (0x + 64 hex chars).`);let t=await k(),r=await Zt(t);if(!r.success)throw new Error(`Failed to resolve node name "${e}": ${r.error.message}`);let n=r.data.nodes.filter(a=>a.name.toLowerCase()===e.toLowerCase());if(n.length===0)throw new Error(`Node "${e}" not found. Provide a valid node name or device ID.`);if(n.length>1)throw new Error(`Node name "${e}" is ambiguous (${n.length} matches). Use an explicit device ID.`);let o=n[0].device_id;if(!o||!ma(o))throw new Error(`Node "${n[0].name}" has no valid device_id. Use an explicit device ID.`);return mr(o)}async function Hr(e,t){let r=await k(),n=await Q(r,{id:e});if(!n.success)return t.fail(n.error.message),null;let o=n.data;if(!o)return t.fail("CVM not found"),null;let a=o.app_id;if(!a)return t.fail("CVM has no app_id assigned yet."),null;let s=await eo(r,{appId:a});if(!s.success)return t.fail(s.error.message),null;let c=s.data;if(!c.is_onchain_kms)return t.fail("This app does not use on-chain KMS. Device management requires an on-chain KMS."),null;if(!c.chain_id||!c.app_contract_address)return t.fail("Missing chain_id or app_contract_address in allowlist response."),null;let l=Na[c.chain_id];return l?{chain:l,chainId:c.chain_id,appContractAddress:c.app_contract_address,allowlist:c}:(t.fail(`Unsupported chain_id: ${c.chain_id}`),null)}async function sE(e,t){try{let r=await Hr(e.cvm,t);if(!r)return 1;let{chain:n,appContractAddress:o}=r,a=await k(),s=await Zt(a),c=new Map;if(s.success)for(let d of s.data.nodes)d.device_id&&ma(d.device_id)&&c.set(mr(d.device_id),d.name);else i.warn("Could not fetch platform nodes \u2014 node names will not be shown.");let l=Array.from(c.keys()),m=await Qn({chain:n,appAddress:o,deviceIds:l});if(e.json)return t.success({appAddress:o,chain:n.name,owner:m.owner,allowAnyDevice:m.allowAnyDevice,devices:m.devices.map(d=>({deviceId:d,nodeName:c.get(d.toLowerCase())??null}))}),0;if(i.info(`Contract: ${o}`),i.info(`Chain: ${n.name}`),i.info(`Owner: ${m.owner}`),i.info(`Allow Any Device: ${m.allowAnyDevice?Qf.green("yes"):Qf.red("no")}`),m.devices.length===0)return i.info("No devices found"),0;let p=["DEVICE_ID","NODE"],u=m.devices.map(d=>({DEVICE_ID:d,NODE:c.get(d.toLowerCase())??"-"}));return ce(p,u),0}catch(r){return i.logDetailedError(r),t.fail(`Failed: ${r instanceof Error?r.message:String(r)}`),1}}async function iE(e,t){try{let r=await Hr(e.cvm,t);if(!r)return 1;let{chain:n,appContractAddress:o,allowlist:a}=r,s=pi(e),c;if(e.interactive&&!e.deviceId){let u=await k(),d=await Zt(u);if(!d.success)return t.fail(d.error.message),1;let f=aE(a.devices),g=d.data.nodes.filter(v=>v.device_id&&ma(v.device_id)&&!f.has(mr(v.device_id)));if(g.length===0)return i.info("All available devices are already in the allowlist."),0;let{selected:h}=await tg.prompt([{type:"checkbox",name:"selected",message:"Select devices to add:",choices:g.map(v=>({name:`${v.name} ${v.device_id}`,value:v.device_id}))}]);if(h.length===0)return i.info("No devices selected."),0;c=h.map(v=>mr(v))}else if(e.deviceId)c=[await og(e.deviceId)];else return t.fail("Device ID is required. Use -i to select interactively."),1;let{publicClient:l,walletClient:m}=ng(n,s,e.rpcUrl),p=[];for(let u of c){let d=await cl({chain:n,appAddress:o,deviceId:u,walletClient:m,publicClient:l,skipPrerequisiteChecks:!0});if(!d.success){let g=d;return t.fail(`Failed to add ${u}: ${g.error.message}`),1}let f=d.data;p.push({deviceId:u,txHash:f.transactionHash,explorer:li(n,f.transactionHash)})}if(e.json)return t.success(p),0;for(let u of p)i.success(`Added ${u.deviceId}`),i.info(`Transaction: ${u.txHash}`),u.explorer&&i.info(`Explorer: ${u.explorer}`);if(e.wait){if(!await mi({chain:n,rpcUrl:e.rpcUrl,appAddress:o,deviceIds:c,description:"devices to be allowed",condition:d=>d.allowAnyDevice?!0:c.every(f=>d.devices.some(g=>g.toLowerCase()===f.toLowerCase()))}))return t.fail("Devices not observed on-chain within timeout."),1;i.success("On-chain allowlist updated.")}else i.info("Backend allowlist API may lag behind chain. Use --wait to verify via RPC.");return 0}catch(r){return rg(r)?(i.info("Cancelled."),0):(i.logDetailedError(r),t.fail(`Failed: ${r instanceof Error?r.message:String(r)}`),1)}}async function cE(e,t){try{let r=await Hr(e.cvm,t);if(!r)return 1;let{chain:n,appContractAddress:o,allowlist:a}=r,s=pi(e),c;if(e.interactive&&!e.deviceId){let u=a.devices.filter(f=>f.status==="allowed");if(u.length===0)return t.fail("No allowed devices found to remove."),1;let{selected:d}=await tg.prompt([{type:"checkbox",name:"selected",message:"Select devices to remove:",choices:u.map(f=>({name:`${f.node_name??"-"} ${f.device_id}`,value:f.device_id}))}]);if(d.length===0)return i.info("No devices selected."),0;c=d.map(f=>mr(f))}else if(e.deviceId)c=[await og(e.deviceId)];else return t.fail("Device ID is required. Use -i to select interactively."),1;let{publicClient:l,walletClient:m}=ng(n,s,e.rpcUrl),p=[];for(let u of c){let d=await ll({chain:n,appAddress:o,deviceId:u,walletClient:m,publicClient:l,skipPrerequisiteChecks:!0});if(!d.success){let g=d;return t.fail(`Failed to remove ${u}: ${g.error.message}`),1}let f=d.data;p.push({deviceId:u,txHash:f.transactionHash,explorer:li(n,f.transactionHash)})}if(e.json)return t.success(p),0;for(let u of p)i.success(`Removed ${u.deviceId}`),i.info(`Transaction: ${u.txHash}`),u.explorer&&i.info(`Explorer: ${u.explorer}`);if(e.wait)if((await Qn({chain:n,rpcUrl:e.rpcUrl,appAddress:o,deviceIds:[]})).allowAnyDevice)i.warn("allowAnyDevice is enabled \u2014 removed devices still appear as allowed. Disable allow-any-device first if you want per-device enforcement.");else{if(!await mi({chain:n,rpcUrl:e.rpcUrl,appAddress:o,deviceIds:c,description:"devices to be removed",condition:f=>c.every(g=>!f.devices.some(h=>h.toLowerCase()===g.toLowerCase()))}))return t.fail("Devices still appear on-chain after timeout."),1;i.success("On-chain allowlist updated.")}else i.info("Backend allowlist API may lag behind chain. Use --wait to verify via RPC.");return 0}catch(r){return rg(r)?(i.info("Cancelled."),0):(i.logDetailedError(r),t.fail(`Failed: ${r instanceof Error?r.message:String(r)}`),1)}}async function lE(e,t){let r=nE(e);if(r===null)return t.fail(e.enable&&e.disable?"Cannot use both --enable and --disable.":"Specify --enable or --disable to set the allow-any-device flag."),1;try{let n=await Hr(e.cvm,t);return n?await ui(e,t,{chain:n.chain,appContractAddress:n.appContractAddress,allow:r}):1}catch(n){return i.logDetailedError(n),t.fail(`Failed: ${n instanceof Error?n.message:String(n)}`),1}}async function mE(e,t){try{let r=await Hr(e.cvm,t);return r?await ui(e,t,{chain:r.chain,appContractAddress:r.appContractAddress,allow:!1}):1}catch(r){return i.logDetailedError(r),t.fail(`Failed: ${r instanceof Error?r.message:String(r)}`),1}}async function pE(e,t){try{let r=await Hr(e.cvm,t);if(!r)return 1;let n=oE({enable:e.enable,disable:e.disable,currentValue:r.allowlist.allow_any_device});return n===null?(t.fail("Cannot use both --enable and --disable."),1):await ui(e,t,{chain:r.chain,appContractAddress:r.appContractAddress,allow:n})}catch(r){return i.logDetailedError(r),t.fail(`Failed: ${r instanceof Error?r.message:String(r)}`),1}}async function ui(e,t,r){let{chain:n,appContractAddress:o,allow:a}=r,s=pi(e),c=await ml({chain:n,rpcUrl:e.rpcUrl,appAddress:o,allow:a,privateKey:s});if(!c.success){let p=c;return t.fail(p.error.message),1}let l=c.data,m=li(n,l.transactionHash);if(e.json)return t.success({...l,explorer:m??void 0}),0;if(i.success(`Allow-any-device ${a?"enabled":"disabled"} successfully!`),i.info(`Transaction: ${l.transactionHash}`),m&&i.info(`Explorer: ${m}`),e.wait){if(!await mi({chain:n,rpcUrl:e.rpcUrl,appAddress:o,deviceIds:[],description:`allowAnyDevice=${a}`,condition:u=>u.allowAnyDevice===a}))return t.fail(`allowAnyDevice did not become ${a} within timeout.`),1;i.success("On-chain allow-any state updated.")}else i.info("Backend allowlist API may lag behind chain. Use --wait to verify via RPC.");return 0}var uE=b({path:["allow-devices","list"],meta:Vf,schema:zf,handler:sE}),dE=b({path:["allow-devices","add"],meta:Kf,schema:Gf,handler:iE}),fE=b({path:["allow-devices","remove"],meta:Hf,schema:qf,handler:cE}),gE=b({path:["allow-devices","allow-any"],meta:Bf,schema:Wf,handler:lE}),hE=b({path:["allow-devices","disallow-any"],meta:Jf,schema:Yf,handler:mE}),yE=b({path:["allow-devices","toggle-allow-any"],meta:Zf,schema:Xf,handler:pE}),di={group:jf,commands:[uE,dE,fE,gE,hE,yE]};var _E=wE(import.meta.url),SE=bE(_E),kE=CE(SE,"../package.json"),pa=JSON.parse(vE(kE,"utf-8")),EE="+62338ec",IE=`v${pa.version}${EE}`,AE=vo(),U=new _o;U.registerCommand(lu);U.registerCommand(uf);U.registerCommand(yf);U.registerCommand(od);U.registerCommand(qd);U.registerCommand(Yd);U.registerCommand(Qd);U.registerCommand(nf);U.registerCommand(wf);U.registerCommand(Yu);U.registerCommand(id);U.registerCommand(Ld);U.registerCommand(Od);U.registerCommand(Am);U.registerCommand(Om);U.registerCommand(Ff);U.registerCommand(jd);U.registerCommand(Ed);U.registerGroup(ni.group);for(let e of ni.commands)U.registerCommand(e);U.registerGroup(Ss.group);for(let e of Ss.commands)U.registerCommand(e);U.registerGroup(Es.group);for(let e of Es.commands)U.registerCommand(e);U.registerGroup(Uo.group);for(let e of Uo.commands)U.registerCommand(e);for(let e of Uo.subgroups??[]){U.registerGroup(e.group);for(let t of e.commands)U.registerCommand(t)}U.registerGroup(js.group);for(let e of js.commands)U.registerCommand(e);U.registerGroup(ii.group);for(let e of ii.commands)U.registerCommand(e);U.registerGroup(Vs.group);for(let e of Vs.commands)U.registerCommand(e);U.registerGroup(Ws.group);for(let e of Ws.commands)U.registerCommand(e);U.registerGroup(Ys.group);for(let e of Ys.commands)U.registerCommand(e);U.registerGroup(Xs.group);for(let e of Xs.commands)U.registerCommand(e);U.registerGroup(di.group);for(let e of di.commands)U.registerCommand(e);process.on("SIGINT",()=>process.exit(0));process.on("SIGTERM",()=>process.exit(0));async function xE(){await bm({env:process.env,stderr:process.stderr});let e=await gm({registry:U,argv:process.argv.slice(2),executableName:pa.name??"phala",version:IE,packageName:pa.name??"phala",packageVersion:pa.version,runtime:AE,cwd:process.cwd(),env:process.env,stdout:process.stdout,stderr:process.stderr,stdin:process.stdin});process.exit(e)}xE().catch(e=>{console.error("An error occurred:",e),process.exit(1)});
467
424
  /*! Bundled license information:
468
425
 
469
- @noble/hashes/esm/utils.js:
470
426
  @noble/hashes/utils.js:
471
427
  (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
472
428
  */