@zktx.io/sui-mcp 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3588,4 +3588,4 @@ zebra
3588
3588
  zero
3589
3589
  zone
3590
3590
  zoo`.split(`
3591
- `)),Tv={0:`ED25519`,1:`Secp256k1`,2:`Secp256r1`,3:`MultiSig`,5:`ZkLogin`,6:`Passkey`},Ev=e=>Object.freeze(e());function Dv(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`&&`BYTES_PER_ELEMENT`in e&&e.BYTES_PER_ELEMENT===1}function Ov(e){if(!Dv(e))throw TypeError(`Uint8Array expected`)}function kv(e,t){return Array.isArray(t)?t.length===0?!0:e?t.every(e=>typeof e==`string`):t.every(e=>Number.isSafeInteger(e)):!1}function Av(e){if(typeof e!=`function`)throw TypeError(`function expected`);return!0}function jv(e,t){if(typeof t!=`string`)throw TypeError(`${e}: string expected`);return!0}function Mv(e,t=`number`){if(typeof e!=`number`)throw TypeError(`${t}: expected number, got ${typeof e}`);if(!Number.isSafeInteger(e))throw RangeError(`${t}: expected safe integer, got ${e}`)}function Nv(e,t){if(!kv(!1,t))throw TypeError(`${e}: array of numbers expected`)}var Pv=(()=>{let e=[];for(let t=0;t<40;t++)e.push(2**t);return e})();function Fv(e,t=e.length){let n=Array(t);for(let r=0;r<t;r++)n[r]=e[r];return n}var Iv=(()=>{try{let e=new TextDecoder;return e.decode(Uint8Array.of(65,48,43,127))===`A0+`?e:void 0}catch{return}})(),Lv=8192;function Rv(e){let t=e.length;if(Iv!==void 0&&t>=12)return Iv.decode(e);if(t<=Lv)return String.fromCharCode.apply(null,e);let n=``;for(let r=0;r<t;r+=Lv)n+=String.fromCharCode.apply(null,e.subarray(r,r+Lv));return n}function zv(e){if(Mv(e),e<=0||e>8)throw RangeError(`radix2: bits should be in (0..8]`);let t=Pv[e]-1;return{encode:n=>{Ov(n);let r=n.length,i=new Uint8Array(Math.ceil(r*8/e)),a=0,o=0,s=0;for(let c=0;c<r;)for(c+2<r?(a=a<<24|n[c]<<16|n[c+1]<<8|n[c+2],o+=24,c+=3):(a=(a<<8|n[c])&65535,o+=8,c++);o-=e,i[s++]=a>>o&t,!(o<e););return o>0&&(i[s]=a<<e-o&t),i},decode:t=>{let n=t.length,r=new Uint8Array(Math.floor(n*e/8)),i=0,a=0,o=0;for(let s=0;s<n;s++)for(i=(i<<e|t[s])&65535,a+=e;a>=8;a-=8)r[o++]=i>>a-8&255;if(i=i<<8-a&255,a>=e)throw Error(`Excess padding`);if(i>0)throw Error(`Non-zero padding: ${i}`);return r}}}function Bv(e,t){let n=e.length;if(n>128)throw Error(`alphabet: max 128 letters`);let r=new Uint8Array(n),i=new Int8Array(128).fill(-1);for(let t=0;t<n;t++){let n=e.charCodeAt(t);if(e.codePointAt(t)!==n||n>127)throw Error(`alphabet: single-char ASCII letters only`);r[t]=n,i[n]=t}if(t!==void 0)for(let e of Object.keys(t)){let n=e.charCodeAt(0),r=i[t[e].charCodeAt(0)];if(e.length!==1||n>127||r===void 0||r===-1)throw Error(`alphabet: invalid alias ${e}`);i[n]=r}return{encode:e=>{let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++){let i=e[n],a=r[i];if(a===void 0)throw Error(`alphabet.encode: invalid digit ${i}`);t[n]=a}return Rv(t)},decode:t=>{jv(`decode`,t);let n=t.length,r=new Uint8Array(n);for(let a=0;a<n;a++){let n=t.charCodeAt(a),o=n<128?i[n]:-1;if(o===-1)throw Error(`Unknown letter "${t[a]}". Allowed: ${e}`);r[a]=o}return r}}}function Vv(e){return Av(e),function(...t){try{return e.apply(null,t)}catch{}}}var Hv=Bv(`qpzry9x8gf2tvdw0s3jn54khce6mua7l`),Uv=/^[\x21-\x60\x7b-\x7e]+$/;function Wv(e,t){for(let n=0;n<t.length;n++){let r=t.charCodeAt(n);if(r<33||r>126)throw Error(`${e}: printable ASCII expected`)}}function Gv(e){let t=e.length,n=new Uint8Array(t);for(let r=0;r<t;r++){let t=e[r];if(t<0||t>=32)throw Error(`alphabet.encode: invalid digit ${t}`);n[r]=t}return n}var Kv=[996825010,642813549,513874426,1027748829,705979059];function qv(e){let t=e>>25,n=(e&33554431)<<5;for(let e=0;e<Kv.length;e++)(t>>e&1)==1&&(n^=Kv[e]);return n}function Jv(e,t,n=1){let r=e.length,i=1;for(let t=0;t<r;t++){let n=e.charCodeAt(t);if(n<33||n>126)throw Error(`Invalid prefix (${e})`);i=qv(i)^n>>5}i=qv(i);for(let t=0;t<r;t++)i=qv(i)^e.charCodeAt(t)&31;for(let e of t)i=qv(i)^e;for(let e=0;e<6;e++)i=qv(i);i^=n;let a=new Uint8Array(6);for(let e=0;e<6;e++)a[e]=i>>>5*(5-e)&31;return Hv.encode(a)}function Yv(e){let t=e===`bech32`?1:734539939,n=zv(5),r=e=>{Ov(e);let t=e.length,n=Array(Math.ceil(t*8/5)),r=0,i=0,a=0;for(let o=0;o<t;o++)for(r=r<<8|e[o],i+=8;i>=5;i-=5)n[a++]=r>>i-5&31;return i>0&&(n[a]=r<<5-i&31),n},i=e=>{Nv(`radix2.decode`,e);let t=e.length,r=new Uint8Array(t);for(let n=0;n<t;n++){let t=e[n];if(t<0||t>=32)throw Error(`convertRadix2: invalid word=${t}`);r[n]=t}return n.decode(r)},a=Vv(i);function o(e,n,r=90){jv(`bech32.encode prefix`,e),r!==!1&&Mv(r,`limit`),Dv(n)&&(n=Fv(n)),Nv(`bech32.encode`,n);let i=e.length;if(i===0)throw TypeError(`Invalid prefix length ${i}`);let a=i+7+n.length;if(r!==!1&&a>r)throw TypeError(`Length ${a} exceeds limit ${r}`);Wv(`bech32.encode prefix`,e);let o=e.toLowerCase(),s=Jv(o,n,t);return`${o}1${Hv.encode(Gv(n))}${s}`}function s(e,n=90){jv(`bech32.decode input`,e),n!==!1&&Mv(n,`limit`);let r=e.length;if(r<8||n!==!1&&r>n)throw TypeError(`invalid string length ${r}, expected (8..${n})`);let i=e.toLowerCase();if(e!==i&&!Uv.test(e))throw Wv(`bech32.decode input`,e),Error(`mixed-case string not allowed`);let a=i.lastIndexOf(`1`);if(a===0||a===-1)throw Error(`invalid separator "1"`);let o=i.slice(0,a),s=i.slice(a+1);if(s.length<6)throw Error(`invalid data length`);let c=Hv.decode(s),l=Fv(c,c.length-6),u=Jv(o,l,t);if(!s.endsWith(u))throw Error(`Invalid checksum in ${e}`);return{prefix:o,words:l}}let c=Vv(s);function l(e,t=90){let{prefix:n,words:r}=s(e,t);return{prefix:n,words:r,bytes:i(r)}}function u(e,t){return o(e,r(t))}return{encode:o,decode:s,encodeFromBytes:u,decodeToBytes:l,decodeUnsafe:c,fromWords:i,fromWordsUnsafe:a,toWords:r}}var Xv=Ev(()=>Yv(`bech32`));function Zv(e){let{prefix:t,words:n}=Xv.decode(e);if(t!==`suiprivkey`)throw Error(`invalid private key prefix`);let r=new Uint8Array(Xv.fromWords(n)),i=r.slice(1);return{scheme:Tv[r[0]],secretKey:i}}var Qv=`external-proposal-alpha-2026-05-25`,$v=`proposal-review-model-alpha-2026-05-25`,ey=F().refine(e=>{let t=new Date(e);return!Number.isNaN(t.getTime())&&t.toISOString()===e},`Expected ISO 8601 UTC timestamp`),ty=/transaction\s*bytes?|transactionBytes|tx\s*bytes?|serialized\s*transaction|serializedTransaction|signed\s*transaction|signing\s*request|signingRequest|wallet\s*authorization|walletAuthorization|private\s*key|privateKey|secret\s*key|secretKey|seed\s*phrase|mnemonic|suiprivkey|signature|route[-_\s]*selected|routeSelectedPlan|bcs\s*transaction|programmable\s*transaction/i,ny=/(?:0x[0-9a-fA-F]{160,}|[A-Za-z0-9+/_=-]{160,})/,ry=/suiprivkey1[023456789acdefghjklmnpqrstuvwxyz]+/gi,iy=/(^|[^0-9a-fA-F])(?:0x)?[0-9a-fA-F]{64}($|[^0-9a-fA-F])/,ay=/(^|[^A-Za-z0-9+/_=-])(?:[A-Za-z0-9+/]{43}=|[A-Za-z0-9+/]{44}|[A-Za-z0-9_-]{43,44})($|[^A-Za-z0-9+/_=-])/,oy=/^(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$/,sy=[12,15,18,21,24];function cy(e,t,n={}){return F().min(1).max(e).superRefine((e,r)=>{(ty.test(e)||ny.test(e)||uy(e)||dy(e)||!n.allowRawSecretLikeText&&fy(e))&&r.addIssue({code:`custom`,message:`${t} must not contain executable, signing, private-key, mnemonic, route-selected, or encoded secret-like material`})})}function ly(e,t){return cy(e,t,{allowRawSecretLikeText:!0})}function uy(e){return(e.match(ry)??[]).some(e=>{try{return Zv(e.toLowerCase()),!0}catch{return e.toLowerCase().startsWith(`suiprivkey1`)}})}function dy(e){let t=e.normalize(`NFKD`).toLowerCase().replace(/[^a-z]+/g,` `).trim().split(/\s+/).filter(Boolean);for(let e of sy)if(!(t.length<e)){for(let n=0;n<=t.length-e;n+=1)if(Cv(t.slice(n,n+e).join(` `),wv))return!0}return!1}function fy(e){return iy.test(e)||ay.test(e)}var py=cy(80,`amountDisplay`).refine(e=>oy.test(e)&&/[1-9]/.test(e),{message:`Expected a positive decimal display amount`}),my=B({kind:W([`mcp_server`,`ai_client`,`user`,`other`]),name:cy(120,`source.name`),reference:cy(256,`source.reference`).optional()}).strict(),hy=B({address:h_.optional(),label:cy(120,`party.label`).optional()}).strict().refine(e=>e.address!==void 0||e.label!==void 0,{message:`Expected address or label`}),gy=B({amountDisplay:py,amountKind:G(`display_proposal`).default(`display_proposal`),symbol:cy(64,`amount.symbol`).optional(),coinType:ly(512,`amount.coinType`).optional(),denomination:cy(64,`amount.denomination`).optional()}).strict(),_y=B({packageId:ly(128,`action.target.packageId`).optional(),module:cy(128,`action.target.module`).optional(),function:cy(128,`action.target.function`).optional(),objectId:ly(128,`action.target.objectId`).optional(),label:cy(120,`action.target.label`).optional()}).strict().refine(e=>e.packageId!==void 0||e.module!==void 0||e.function!==void 0||e.objectId!==void 0||e.label!==void 0,{message:`Expected at least one action target field`}),vy=B({direction:W([`outgoing`,`expected_incoming`,`fee`]),amount:gy,recipient:hy.optional(),description:cy(512,`assetFlow.description`).optional()}).strict(),yy=B({id:cy(120,`proposal.id`),source:my,network:G(`sui:mainnet`),createdAt:ey,expiresAt:ey.optional(),purpose:cy(512,`purpose`),assumptions:z(cy(512,`assumptions[]`)).max(20).optional(),requiredUserChoices:z(cy(512,`requiredUserChoices[]`)).max(20).optional()}).strict(),by=hc(`type`,[yy.extend({type:G(`payment`),payment:B({amount:gy,recipient:hy,target:cy(512,`payment.target`).optional()}).strict()}).strict(),yy.extend({type:G(`sui_action`),action:B({actionKind:cy(120,`action.actionKind`),target:_y,recipient:hy.optional(),assetFlow:z(vy).max(20).optional()}).strict()}).strict()]),xy=B({id:F(),label:F(),status:W([`pass`,`warning`,`fail`]),message:F(),source:W([`proposal`,`adapter`,`registry`,`quote`,`wallet`,`simulation`,`network`])}).strict(),Sy=B({id:F(),label:F(),reason:F()}).strict(),Cy=B({modelVersion:G($v),contractVersion:G(Qv),proposalId:F(),proposalType:W([`payment`,`sui_action`]),proposalSource:my,proposedAction:B({kind:W([`payment`,`sui_action`]),title:F(),purpose:F(),network:G(`sui:mainnet`),recipient:hy.optional(),target:H([F(),_y]).optional()}).strict(),assetFlow:B({outgoing:z(gy),expectedIncoming:z(gy),fees:z(gy)}).strict(),recipients:z(hy),targets:z(H([F(),_y])),evidenceUsed:z(B({id:F(),label:F(),source:W([`external_proposal`,`local_schema`]),summary:F()}).strict()),missingEvidence:z(Sy),requiredUserChoices:z(Sy),unsupportedClaims:z(B({id:F(),label:F(),reason:F()}).strict()),rejectedExecutableFields:z(B({fieldName:F(),reason:F()}).strict()),freshness:B({proposalCreatedAt:ey,proposalExpiresAt:ey.optional(),evaluatedAt:ey,status:W([`current`,`expired`,`created_in_future`,`expiry_not_provided`]),reason:F()}).strict(),blockingChecks:z(xy),nonSignableReason:B({code:G(`external_proposal_review_only`),message:F(),blockedCapabilities:z(F())}).strict()}).strict();B({requestedIntent:by,implementationStatus:G(`read_only_review_only`),contractVersion:G(Qv)}).strict();var wy=[`adapter_not_implemented`,`producer_stage_missing`,`wallet_review_contract_emit_missing`,`network_mismatch`,`insufficient_balance`,`insufficient_gas`,`allowlist_violation`,`asset_mismatch`,`amount_mismatch`,`wallet_mismatch`,`unsupported_action`,`object_resolution_failed`,`proposal_review_only`],Ty=[`review_evidence_stale`,`quote_stale`,`quote_unavailable`,`simulation_transient_failure`,`review_update_failed`,`wallet_connection_changed`],Ey=[`proposed`,`awaiting_wallet`,`wallet_connected`,`ready_for_wallet_review`,`refresh_required`,`blocked`,`expired`],Dy=[`humanReadableReview`,`simulation`,`transactionReviewData`,`ptbVisualization`,`assetFlowActual`,`beforeAfterBalance`],Oy=W([`client.core.simulateTransaction`,`client.transactionExecutionService.simulateTransaction`]),ky=`ptb-visualization-contract-alpha-2026-05-25`,Ay=[`proposedAction`,`assetFlow`,`recipients`,`targets`,`evidenceUsed`,`missingEvidence`,`requiredUserChoices`,`unsupportedClaims`,`freshness`,`blockingChecks`],jy=[`effects`,`balanceChanges`,`objectTypes`,`transaction`],My=[`transaction_bytes`,`serialized_transaction`,`wallet_signature_request`,`private_key_material`,`wallet_authorization`,`signing_data`,`signing_readiness`,`payment_execution_readiness`],Ny=[`transaction_building_input`,`wallet_authorization`,`signing_data`,`signing_readiness`,`payment_execution_readiness`,`route_recommendation`],Py=m_,Fy=`MIST`,Iy=[`checkedAt`,`expiresAt`],Ly=[`checkedAt`,`expiryStatus`],Ry=[`rawAmount`,`asset`,`amountRole`],zy=[`minOutRaw`,`asset`,`amountRole`],By=[`gasBudgetRaw`,`asset`,`amountRole`],Vy=[`gasUsedRaw`,`asset`,`amountRole`],Hy=[`checkedAt`,`gasResolutionStatus`,`unresolvedReason`],Uy=[`balanceChanges`,`asset`,`amountRole`],Wy=[`coinType`,`decimals`],Gy=[`quoteEvidenceId`,`minOutRaw`],Ky=[`maxSlippageBps`,`userSelection`],qy=[`maxSlippageBps`,`minOutRaw`],Jy=[`ownerAccount`,`objects`],Yy=[`pinned_sdk_registry`,`verified_mainnet_onchain_metadata`,`wallet_account_read`,`quote_evidence`,`review_time_simulation`,`validated_request_fact`,`user_explicit_choice`],Xy=[`input`,`expected_output`,`minimum_output`,`gas_budget`,`gas_used`,`fee`,`balance_delta`],Zy={input:{kinds:[`validated_request_fact`,`wallet_account_read`,`user_explicit_choice`],fields:Ry},expected_output:{kinds:[`quote_evidence`,`review_time_simulation`],fields:Ry},minimum_output:{kinds:[`quote_evidence`],fields:zy},gas_budget:{kinds:[`review_time_simulation`],fields:By},gas_used:{kinds:[`review_time_simulation`],fields:Vy},fee:{kinds:[`review_time_simulation`],fields:Ry},balance_delta:{kinds:[`review_time_simulation`],fields:Uy}},Qy={pinned_sdk_metadata:{kinds:[`pinned_sdk_registry`],fields:Wy},verified_mainnet_onchain_metadata:{kinds:[`verified_mainnet_onchain_metadata`],fields:Wy}},$y={user_explicit:{kinds:[`user_explicit_choice`],fields:Ky},adapter_policy_from_quote_evidence:{kinds:[`quote_evidence`],fields:qy}},eb={kinds:[`review_time_simulation`],fields:Hy},tb={kinds:[`quote_evidence`],fields:Gy},nb={kinds:[`validated_request_fact`],fields:Iy},rb={kinds:[`validated_request_fact`],fields:Ly},ib={raw_quantity_amount:{byRole:Zy},unit_metadata:{bySource:Qy},gas_unresolved_status:eb,expiry_status:{current:nb,expired:nb,not_provided:rb,not_applicable:rb},quote_min_out:tb,slippage_policy:{bySource:$y},object_ownership:{kinds:[`wallet_account_read`],fields:Jy},simulation_result:{kinds:[`review_time_simulation`],fields:jy}},ab={gasBudgetClaimId:{factKind:`raw_quantity_amount`,role:`gas_budget`,assetCoinType:Py,rawUnit:Fy},gasUsedClaimId:{factKind:`raw_quantity_amount`,role:`gas_used`,assetCoinType:Py,rawUnit:Fy},gasObjectOwnershipClaimId:{factKind:`object_ownership`,ownership:`owned_by_account`}},ob=F().refine(e=>{let t=new Date(e);return!Number.isNaN(t.getTime())&&t.toISOString()===e},`Expected ISO 8601 UTC timestamp`),sb=I_(`unsigned integer`),cb=F().regex(/^0x[0-9a-fA-F]{1,64}$/,{message:`Expected a Sui object id`}),lb=F().min(1).max(512).refine(e=>{try{return z_(e)===e}catch{return!1}},`Expected a normalized Sui struct tag coin type`),X=F().min(1).max(120),ub=B({symbol:F().min(1).max(64).optional(),coinType:lb}).strict(),db=/transaction\s*bytes?|tx\s*bytes?|serialized\s*transaction|serializedTransaction|signed\s*transaction|signing\s*request|signingRequest|wallet\s*authorization|walletAuthorization|private\s*key|privateKey|secret\s*key|secretKey|seed\s*phrase|mnemonic|suiprivkey|signature|bcs\s*transaction/i,fb=/(?:0x[0-9a-fA-F]{160,}|[A-Za-z0-9+/_=-]{160,})/;function pb(e,t){return F().min(1).max(e).superRefine((e,n)=>{(db.test(e)||fb.test(e))&&n.addIssue({code:`custom`,message:`${t} must not contain executable transaction, signing, private-key, mnemonic, or long encoded material`})})}function mb(e,t){let n=new Set(e);return t.filter(e=>!n.has(e))}function hb(e,t,n,r,i){let a=mb(t,n);a.length!==0&&e.addIssue({code:`custom`,path:r,message:`${i} must include ${a.join(`, `)}`})}function gb(e,t,n,r,i){hb(e,t,n,r,i)}function _b(e,t,n){e.addIssue({code:`custom`,path:t,message:`${n} must match referenced evidence claim`})}function Z(e,t,n,r,i){t!==n&&_b(e,r,i)}function vb(e,t,n,r,i){let a=new Set(t),o=new Set(n);if(a.size!==o.size)_b(e,r,i);else for(let t of a)if(!o.has(t)){_b(e,r,i);return}}function yb(e,t,n,r,i){(t.symbol!==n.symbol||t.coinType!==n.coinType)&&_b(e,r,i)}function bb(e,t,n,r,i){try{z_(t.coinType)!==n&&_b(e,r,i)}catch{_b(e,r,i)}}var xb=B({kind:W([`natural_language_intent`,`external_proposal`,`mcp_action_request`,`local_review_request`]),sourceId:F().min(1).max(160),capturedAt:ob,authority:G(`untrusted_until_review_regenerates_and_verifies`),userSelectionSource:W([`user_explicit`,`prior_user_explicit_context`]).optional()}).strict(),Sb=B({id:X,kind:W(Yy),network:G(`sui:mainnet`),source:F().min(1).max(240),verifiedAt:ob,fields:z(F().min(1).max(120)).min(1)}).strict(),Cb=hc(`factKind`,[B({id:X,factKind:G(`raw_quantity_amount`),sourceEvidenceId:X,role:W(Xy),asset:ub,rawAmount:sb}).strict(),B({id:X,factKind:G(`unit_metadata`),sourceEvidenceId:X,source:W([`pinned_sdk_metadata`,`verified_mainnet_onchain_metadata`]),coinType:lb,decimals:I().int().min(0).max(255)}).strict(),B({id:X,factKind:G(`gas_unresolved_status`),sourceEvidenceId:X,checkedAt:ob,status:G(`unresolved`),reason:F().min(1).max(240)}).strict(),B({id:X,factKind:G(`expiry_status`),sourceEvidenceId:X,checkedAt:ob,status:W([`current`,`expired`,`not_provided`,`not_applicable`]),expiresAt:ob.optional(),reason:F().min(1).max(240).optional()}).strict(),B({id:X,factKind:G(`quote_min_out`),sourceEvidenceId:X,quoteEvidenceId:F().min(1).max(120),minOutRaw:sb}).strict(),B({id:X,factKind:G(`slippage_policy`),sourceEvidenceId:X,policySource:W([`user_explicit`,`adapter_policy_from_quote_evidence`]),maxSlippageBps:I().int().min(0).max(1e4),minOutRaw:sb.optional()}).strict(),B({id:X,factKind:G(`object_ownership`),sourceEvidenceId:X,objectId:cb,ownerAccount:h_,ownership:W([`owned_by_account`,`shared_object`,`immutable_or_package`,`not_owned_by_account`])}).strict(),B({id:X,factKind:G(`simulation_result`),sourceEvidenceId:X,provider:Oy,checksEnabled:G(!0),simulatedAt:ob,status:W([`success`,`failed`,`unavailable`]),requiredFields:z(W(jy)).min(jy.length),missingFields:z(W(jy)).default([]),failureReason:F().min(1).max(240).optional()}).strict()]),wb=B({id:X,role:W(Xy),asset:ub,rawAmount:sb,unit:B({decimals:I().int().min(0).max(255),source:W([`pinned_sdk_metadata`,`verified_mainnet_onchain_metadata`]),sourceField:F().min(1).max(160),unitClaimId:X}).strict(),amountClaimId:X,displayOnly:B({amountDisplay:F().min(1).max(120),reason:G(`presentation_only_not_signing_input`)}).strict().optional()}).strict(),Tb=B({objectId:cb,ownerAccount:h_,ownershipClaimId:X}).strict(),Eb=B({source:G(`review_time_simulation`),checkedAt:ob,gasBudgetRaw:sb.optional(),gasBudgetClaimId:X.optional(),gasUsedRaw:sb.optional(),gasUsedClaimId:X.optional(),gasObjects:z(Tb).optional(),unresolvedReason:F().min(1).max(240).optional(),unresolvedClaimId:X.optional()}).strict().superRefine((e,t)=>{let n=e.gasBudgetRaw!==void 0||e.gasUsedRaw!==void 0;!n&&e.unresolvedReason===void 0&&t.addIssue({code:`custom`,message:`Expected gas evidence or unresolvedReason`}),n&&e.unresolvedReason!==void 0&&t.addIssue({code:`custom`,path:[`unresolvedReason`],message:`Resolved gas quantities must not include unresolvedReason`}),e.gasBudgetRaw!==void 0&&e.gasBudgetClaimId===void 0&&t.addIssue({code:`custom`,path:[`gasBudgetClaimId`],message:`gasBudgetRaw requires gasBudgetClaimId`}),e.gasBudgetRaw===void 0&&e.gasBudgetClaimId!==void 0&&t.addIssue({code:`custom`,path:[`gasBudgetClaimId`],message:`gasBudgetClaimId requires gasBudgetRaw`}),e.gasUsedRaw!==void 0&&e.gasUsedClaimId===void 0&&t.addIssue({code:`custom`,path:[`gasUsedClaimId`],message:`gasUsedRaw requires gasUsedClaimId`}),e.gasUsedRaw===void 0&&e.gasUsedClaimId!==void 0&&t.addIssue({code:`custom`,path:[`gasUsedClaimId`],message:`gasUsedClaimId requires gasUsedRaw`}),e.unresolvedReason!==void 0&&e.unresolvedClaimId===void 0&&t.addIssue({code:`custom`,path:[`unresolvedClaimId`],message:`unresolvedReason requires unresolvedClaimId`}),e.unresolvedReason===void 0&&e.unresolvedClaimId!==void 0&&t.addIssue({code:`custom`,path:[`unresolvedClaimId`],message:`unresolvedClaimId requires unresolvedReason`})}),Db=hc(`status`,[B({checkedAt:ob,status:G(`current`),expiresAt:ob,evidenceClaimId:X}).strict(),B({checkedAt:ob,status:G(`expired`),expiresAt:ob,evidenceClaimId:X}).strict(),B({checkedAt:ob,status:G(`not_provided`),evidenceClaimId:X,reason:F().min(1).max(240),expiresAt:uc().optional()}).strict(),B({checkedAt:ob,status:G(`not_applicable`),evidenceClaimId:X,reason:F().min(1).max(240),expiresAt:uc().optional()}).strict()]).superRefine((e,t)=>{e.status===`current`&&Date.parse(e.expiresAt)<=Date.parse(e.checkedAt)&&t.addIssue({code:`custom`,path:[`expiresAt`],message:`Current expiry evidence requires expiresAt after checkedAt`}),e.status===`expired`&&Date.parse(e.expiresAt)>Date.parse(e.checkedAt)&&t.addIssue({code:`custom`,path:[`expiresAt`],message:`Expired expiry evidence requires expiresAt at or before checkedAt`})}),Ob=B({status:W([`required_and_verified`,`not_required_for_action`,`missing`,`stale`]),quoteEvidenceId:F().min(1).max(120).optional(),quoteEvidenceClaimId:X.optional(),maxSlippageBps:I().int().min(0).max(1e4).optional(),minOutRaw:sb.optional(),policySource:W([`user_explicit`,`adapter_policy_from_quote_evidence`]).optional(),policyEvidenceClaimId:X.optional()}).strict().superRefine((e,t)=>{e.status===`required_and_verified`&&(e.quoteEvidenceId===void 0||e.quoteEvidenceClaimId===void 0||e.maxSlippageBps===void 0||e.minOutRaw===void 0||e.policySource===void 0||e.policyEvidenceClaimId===void 0)&&t.addIssue({code:`custom`,message:`Verified min-out evidence requires quoteEvidenceId, quoteEvidenceClaimId, maxSlippageBps, minOutRaw, policySource, and policyEvidenceClaimId`}),e.quoteEvidenceId!==void 0&&e.quoteEvidenceClaimId===void 0&&t.addIssue({code:`custom`,path:[`quoteEvidenceClaimId`],message:`quoteEvidenceId requires quoteEvidenceClaimId`}),e.quoteEvidenceId===void 0&&e.quoteEvidenceClaimId!==void 0&&t.addIssue({code:`custom`,path:[`quoteEvidenceClaimId`],message:`quoteEvidenceClaimId requires quoteEvidenceId`}),e.minOutRaw!==void 0&&e.quoteEvidenceClaimId===void 0&&t.addIssue({code:`custom`,path:[`quoteEvidenceClaimId`],message:`minOutRaw requires quoteEvidenceClaimId`}),e.maxSlippageBps!==void 0&&e.policySource===void 0&&t.addIssue({code:`custom`,path:[`policySource`],message:`maxSlippageBps requires policySource`}),e.policySource!==void 0&&e.policyEvidenceClaimId===void 0&&t.addIssue({code:`custom`,path:[`policyEvidenceClaimId`],message:`policySource requires policyEvidenceClaimId`}),e.policySource===void 0&&e.policyEvidenceClaimId!==void 0&&t.addIssue({code:`custom`,path:[`policyEvidenceClaimId`],message:`policyEvidenceClaimId requires policySource`})}),kb=B({checkedAt:ob,ownerAccount:h_,objects:z(B({objectId:cb,role:W([`input_coin`,`gas_coin`,`protocol_object`,`shared_object`,`receiving_object`]),ownership:W([`owned_by_account`,`shared_object`,`immutable_or_package`,`not_owned_by_account`]),evidenceClaimId:X}).strict()).min(1)}).strict(),Ab=B({evidenceClaimId:X,transactionDigest:g_,provider:Oy,checksEnabled:G(!0),simulatedAt:ob,status:W([`success`,`failed`,`unavailable`]),requiredFields:z(W(jy)).min(jy.length),missingFields:z(W(jy)).default([]),failureReason:F().min(1).max(240).optional()}).strict().refine(e=>e.status!==`success`||e.missingFields.length===0,{message:`Successful simulation evidence must not have missing required fields`}).refine(e=>jy.every(t=>e.requiredFields.includes(t)),{message:`Simulation evidence must include every required simulation field`}).refine(e=>e.status===`success`||e.failureReason!==void 0,{message:`Failed or unavailable simulation evidence requires failureReason`}).refine(e=>e.status!==`success`||e.failureReason===void 0,{message:`Successful simulation evidence must not include failureReason`}),jb=B({fields:z(W(Ay)).min(Ay.length),transactionDigest:g_,source:G(`review_model_or_adapter_equivalent`),purpose:G(`human_review_before_wallet_authorization`)}).strict().refine(e=>Ay.every(t=>e.fields.includes(t)),{message:`Human-readable review fields must include every required review field`}),Mb=B({runtimeStatus:G(`emitted_pre_handoff`),mcpAndReviewUiMayExpose:z(W([`human_readable_review`,`ptb_visualization_artifact`,`diagnostics`,`status_checks`])).min(1),prohibited:z(W(My)).min(1)}).strict().superRefine((e,t)=>{gb(t,e.prohibited,My,[`prohibited`],`prohibited`)}),Nb=B({schemaVersion:G(1),adapterId:F().min(1).max(120),protocol:F().min(1).max(120),actionKind:F().min(1).max(120),network:G(`sui:mainnet`),inputProvenance:xb,sourceReferences:z(Sb).min(1),evidenceClaims:z(Cb).min(1),rawQuantities:z(wb).min(1),gas:Eb,expiry:Db,slippageOrMinOut:Ob,objectOwnership:kb,simulation:Ab,humanReadableReview:jb,outputBoundary:Mb,reviewedTransactionDigest:g_}).strict().superRefine((e,t)=>{let n=new Set,r=new Map,i=new Map;e.sourceReferences.forEach((e,a)=>{n.has(e.id)&&t.addIssue({code:`custom`,path:[`sourceReferences`,a,`id`],message:`sourceReferences id must be unique: ${e.id}`}),n.add(e.id),r.has(e.id)||(r.set(e.id,e),i.set(e.id,a))});let a=new Set,o=new Map,s=new Map;e.evidenceClaims.forEach((e,n)=>{a.has(e.id)&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`id`],message:`evidenceClaims id must be unique: ${e.id}`}),a.add(e.id),o.has(e.id)||(o.set(e.id,e),s.set(e.id,n))});let c=(e,n)=>{if(e===void 0)return;let i=r.get(e);if(i!==void 0)return i;t.addIssue({code:`custom`,path:n,message:`source evidence id must reference sourceReferences[].id: ${e}`})},l=(e,n,r,a)=>{if(e===void 0)return;let o=c(e,r);if(o===void 0)return;let s=i.get(e),l=s===void 0?r:[`sourceReferences`,s];n.kinds.includes(o.kind)||t.addIssue({code:`custom`,path:[...l,`kind`],message:`${a} source kind must be one of ${n.kinds.join(`, `)}`}),hb(t,o.fields,n.fields,[...l,`fields`],`${a} sourceReferences fields`)},u=(e,n,r,i)=>{if(e===void 0){t.addIssue({code:`custom`,path:r,message:`${i} must reference evidenceClaims[].id`});return}let a=o.get(e);if(a===void 0)t.addIssue({code:`custom`,path:r,message:`${i} must reference evidenceClaims[].id: ${e}`});else{if(a.factKind!==n){let a=s.get(e),o=a===void 0?r:[`evidenceClaims`,a,`factKind`];t.addIssue({code:`custom`,path:o,message:`${i} evidence claim factKind must be ${n}`})}return a}};if(e.evidenceClaims.forEach((e,n)=>{e.factKind===`raw_quantity_amount`&&l(e.sourceEvidenceId,ib.raw_quantity_amount.byRole[e.role],[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].raw_quantity_amount`),e.factKind===`unit_metadata`&&l(e.sourceEvidenceId,ib.unit_metadata.bySource[e.source],[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].unit_metadata`),e.factKind===`gas_unresolved_status`&&l(e.sourceEvidenceId,ib.gas_unresolved_status,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].gas_unresolved_status`),e.factKind===`expiry_status`&&(l(e.sourceEvidenceId,ib.expiry_status[e.status],[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].expiry_status`),(e.status===`current`||e.status===`expired`)&&e.expiresAt===void 0&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`expiresAt`],message:`Current or expired expiry claim requires expiresAt`}),(e.status===`not_provided`||e.status===`not_applicable`)&&e.reason===void 0&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`reason`],message:`Unavailable expiry claim requires reason`}),(e.status===`not_provided`||e.status===`not_applicable`)&&e.expiresAt!==void 0&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`expiresAt`],message:`Unavailable expiry claim must not include expiresAt`}),e.status===`current`&&e.expiresAt!==void 0&&Date.parse(e.expiresAt)<=Date.parse(e.checkedAt)&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`expiresAt`],message:`Current expiry claim requires expiresAt after checkedAt`}),e.status===`expired`&&e.expiresAt!==void 0&&Date.parse(e.expiresAt)>Date.parse(e.checkedAt)&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`expiresAt`],message:`Expired expiry claim requires expiresAt at or before checkedAt`})),e.factKind===`quote_min_out`&&l(e.sourceEvidenceId,ib.quote_min_out,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].quote_min_out`),e.factKind===`slippage_policy`&&(l(e.sourceEvidenceId,ib.slippage_policy.bySource[e.policySource],[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].slippage_policy`),e.policySource===`adapter_policy_from_quote_evidence`&&e.minOutRaw===void 0&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`minOutRaw`],message:`Adapter-derived slippage policy claim requires minOutRaw`})),e.factKind===`object_ownership`&&l(e.sourceEvidenceId,ib.object_ownership,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].object_ownership`),e.factKind===`simulation_result`&&(l(e.sourceEvidenceId,ib.simulation_result,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].simulation_result`),e.status===`success`&&e.missingFields.length!==0&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`missingFields`],message:`Successful simulation claim must not have missing required fields`}),jy.every(t=>e.requiredFields.includes(t))||t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`requiredFields`],message:`Simulation claim must include every required simulation field`}),e.status!==`success`&&e.failureReason===void 0&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`failureReason`],message:`Failed or unavailable simulation claim requires failureReason`}),e.status===`success`&&e.failureReason!==void 0&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`failureReason`],message:`Successful simulation claim must not include failureReason`}))}),e.rawQuantities.forEach((e,n)=>{let r=u(e.amountClaimId,`raw_quantity_amount`,[`rawQuantities`,n,`amountClaimId`],`rawQuantities[${n}].amountClaimId`);r?.factKind===`raw_quantity_amount`&&(Z(t,e.role,r.role,[`rawQuantities`,n,`role`],`rawQuantities[${n}].role`),Z(t,e.rawAmount,r.rawAmount,[`rawQuantities`,n,`rawAmount`],`rawQuantities[${n}].rawAmount`),yb(t,e.asset,r.asset,[`rawQuantities`,n,`asset`],`rawQuantities[${n}].asset`));let i=u(e.unit.unitClaimId,`unit_metadata`,[`rawQuantities`,n,`unit`,`unitClaimId`],`rawQuantities[${n}].unit.unitClaimId`);i?.factKind===`unit_metadata`&&(Z(t,e.unit.source,i.source,[`rawQuantities`,n,`unit`,`source`],`rawQuantities[${n}].unit.source`),Z(t,e.unit.decimals,i.decimals,[`rawQuantities`,n,`unit`,`decimals`],`rawQuantities[${n}].unit.decimals`),e.asset.coinType!==void 0&&Z(t,e.asset.coinType,i.coinType,[`rawQuantities`,n,`asset`,`coinType`],`rawQuantities[${n}].asset.coinType`))}),e.gas.gasBudgetRaw!==void 0){let n=u(e.gas.gasBudgetClaimId,`raw_quantity_amount`,[`gas`,`gasBudgetClaimId`],`gas.gasBudgetClaimId`);n?.factKind===`raw_quantity_amount`&&(Z(t,n.role,ab.gasBudgetClaimId.role,[`gas`,`gasBudgetClaimId`],`gas.gasBudgetClaimId role`),bb(t,n.asset,ab.gasBudgetClaimId.assetCoinType,[`gas`,`gasBudgetClaimId`],`gas.gasBudgetClaimId asset`),Z(t,e.gas.gasBudgetRaw,n.rawAmount,[`gas`,`gasBudgetRaw`],`gas.gasBudgetRaw`))}if(e.gas.gasUsedRaw!==void 0){let n=u(e.gas.gasUsedClaimId,`raw_quantity_amount`,[`gas`,`gasUsedClaimId`],`gas.gasUsedClaimId`);n?.factKind===`raw_quantity_amount`&&(Z(t,n.role,ab.gasUsedClaimId.role,[`gas`,`gasUsedClaimId`],`gas.gasUsedClaimId role`),bb(t,n.asset,ab.gasUsedClaimId.assetCoinType,[`gas`,`gasUsedClaimId`],`gas.gasUsedClaimId asset`),Z(t,e.gas.gasUsedRaw,n.rawAmount,[`gas`,`gasUsedRaw`],`gas.gasUsedRaw`))}if(e.gas.unresolvedReason!==void 0){let n=u(e.gas.unresolvedClaimId,`gas_unresolved_status`,[`gas`,`unresolvedClaimId`],`gas.unresolvedClaimId`);n?.factKind===`gas_unresolved_status`&&(Z(t,n.status,`unresolved`,[`gas`,`unresolvedClaimId`],`gas.unresolvedClaimId status`),Z(t,e.gas.checkedAt,n.checkedAt,[`gas`,`checkedAt`],`gas.checkedAt`),Z(t,e.gas.unresolvedReason,n.reason,[`gas`,`unresolvedReason`],`gas.unresolvedReason`))}e.gas.gasObjects?.forEach((e,n)=>{let r=u(e.ownershipClaimId,`object_ownership`,[`gas`,`gasObjects`,n,`ownershipClaimId`],`gas.gasObjects[${n}].ownershipClaimId`);r?.factKind===`object_ownership`&&(Z(t,e.objectId,r.objectId,[`gas`,`gasObjects`,n,`objectId`],`gas.gasObjects[${n}].objectId`),Z(t,e.ownerAccount,r.ownerAccount,[`gas`,`gasObjects`,n,`ownerAccount`],`gas.gasObjects[${n}].ownerAccount`),Z(t,r.ownership,ab.gasObjectOwnershipClaimId.ownership,[`gas`,`gasObjects`,n,`ownershipClaimId`],`gas.gasObjects[${n}].ownershipClaimId ownership`))});let d=u(e.expiry.evidenceClaimId,`expiry_status`,[`expiry`,`evidenceClaimId`],`expiry.evidenceClaimId`);if(d?.factKind===`expiry_status`&&(Z(t,e.expiry.status,d.status,[`expiry`,`status`],`expiry.status`),Z(t,e.expiry.checkedAt,d.checkedAt,[`expiry`,`checkedAt`],`expiry.checkedAt`),e.expiry.status===`current`||e.expiry.status===`expired`?Z(t,e.expiry.expiresAt,d.expiresAt,[`expiry`,`expiresAt`],`expiry.expiresAt`):Z(t,e.expiry.reason,d.reason,[`expiry`,`reason`],`expiry.reason`)),e.slippageOrMinOut.quoteEvidenceClaimId!==void 0){let n=u(e.slippageOrMinOut.quoteEvidenceClaimId,`quote_min_out`,[`slippageOrMinOut`,`quoteEvidenceClaimId`],`slippageOrMinOut.quoteEvidenceClaimId`);n?.factKind===`quote_min_out`&&(Z(t,e.slippageOrMinOut.quoteEvidenceId,n.quoteEvidenceId,[`slippageOrMinOut`,`quoteEvidenceId`],`slippageOrMinOut.quoteEvidenceId`),Z(t,e.slippageOrMinOut.minOutRaw,n.minOutRaw,[`slippageOrMinOut`,`minOutRaw`],`slippageOrMinOut.minOutRaw`))}if(e.slippageOrMinOut.minOutRaw!==void 0&&(e.rawQuantities.some(t=>t.role===`minimum_output`&&t.rawAmount===e.slippageOrMinOut.minOutRaw)||t.addIssue({code:`custom`,path:[`slippageOrMinOut`,`minOutRaw`],message:`slippageOrMinOut.minOutRaw must match a minimum_output rawQuantities entry`})),e.slippageOrMinOut.policyEvidenceClaimId!==void 0){let n=u(e.slippageOrMinOut.policyEvidenceClaimId,`slippage_policy`,[`slippageOrMinOut`,`policyEvidenceClaimId`],`slippageOrMinOut.policyEvidenceClaimId`);n?.factKind===`slippage_policy`&&(Z(t,e.slippageOrMinOut.policySource,n.policySource,[`slippageOrMinOut`,`policySource`],`slippageOrMinOut.policySource`),Z(t,e.slippageOrMinOut.maxSlippageBps,n.maxSlippageBps,[`slippageOrMinOut`,`maxSlippageBps`],`slippageOrMinOut.maxSlippageBps`),n.policySource===`adapter_policy_from_quote_evidence`&&Z(t,e.slippageOrMinOut.minOutRaw,n.minOutRaw,[`slippageOrMinOut`,`minOutRaw`],`slippageOrMinOut.minOutRaw`))}e.objectOwnership.objects.forEach((n,r)=>{let i=u(n.evidenceClaimId,`object_ownership`,[`objectOwnership`,`objects`,r,`evidenceClaimId`],`objectOwnership.objects[${r}].evidenceClaimId`);i?.factKind===`object_ownership`&&(Z(t,n.objectId,i.objectId,[`objectOwnership`,`objects`,r,`objectId`],`objectOwnership.objects[${r}].objectId`),Z(t,e.objectOwnership.ownerAccount,i.ownerAccount,[`objectOwnership`,`ownerAccount`],`objectOwnership.ownerAccount`),Z(t,n.ownership,i.ownership,[`objectOwnership`,`objects`,r,`ownership`],`objectOwnership.objects[${r}].ownership`))});let f=u(e.simulation.evidenceClaimId,`simulation_result`,[`simulation`,`evidenceClaimId`],`simulation.evidenceClaimId`);f?.factKind===`simulation_result`&&(Z(t,e.simulation.provider,f.provider,[`simulation`,`provider`],`simulation.provider`),Z(t,e.simulation.checksEnabled,f.checksEnabled,[`simulation`,`checksEnabled`],`simulation.checksEnabled`),Z(t,e.simulation.simulatedAt,f.simulatedAt,[`simulation`,`simulatedAt`],`simulation.simulatedAt`),Z(t,e.simulation.status,f.status,[`simulation`,`status`],`simulation.status`),vb(t,e.simulation.requiredFields,f.requiredFields,[`simulation`,`requiredFields`],`simulation.requiredFields`),vb(t,e.simulation.missingFields,f.missingFields,[`simulation`,`missingFields`],`simulation.missingFields`),Z(t,e.simulation.failureReason,f.failureReason,[`simulation`,`failureReason`],`simulation.failureReason`))}).superRefine((e,t)=>{let n=e.reviewedTransactionDigest;Z(t,e.humanReadableReview.transactionDigest,n,[`humanReadableReview`,`transactionDigest`],`humanReadableReview.transactionDigest`),Z(t,e.simulation.transactionDigest,n,[`simulation`,`transactionDigest`],`simulation.transactionDigest`)}),Pb=B({contractVersion:G(ky),artifactKind:G(`ptb_visualization`),generatedAt:ob,source:B({adapterId:F().min(1).max(120),planId:F().min(1).max(120).optional(),sourceKind:W([`review_time_generated_transaction_kind`,`review_time_ir`,`renderer_model`]),authority:G(`visualization_only_not_wallet_authorization`),renderer:B({name:F().min(1).max(120),packageName:F().min(1).max(120).optional(),version:F().min(1).max(80).optional()}).strict().optional()}).strict(),mermaid:B({diagramType:G(`flowchart`),text:pb(2e4,`mermaid.text`),namedText:pb(2e4,`mermaid.namedText`)}).strict(),diagnostics:z(B({severity:W([`info`,`warning`,`error`]),code:F().min(1).max(120),message:pb(512,`diagnostics.message`),source:W([`adapter`,`renderer`,`schema`,`simulation`])}).strict()).default([]),unsupportedUse:z(W(Ny)).min(1),executableMaterial:B({included:G(!1),policy:G(`mcp_and_review_ui_outputs_must_not_include_executable_transaction_material`)}).strict()}).strict().superRefine((e,t)=>{gb(t,e.unsupportedUse,Ny,[`unsupportedUse`],`unsupportedUse`)}),Fb=U(F(),R()),Ib=W(wy),Lb=W(Ty);W([`ready_for_wallet_review`,`refresh_required`,`blocked`]);var Rb=W(Ey);W([`proposed`,`awaiting_wallet`,`wallet_connected`,`ready_for_wallet_review`,`refresh_required`,`blocked`,`expired`,`awaiting_signature`,`submitting`,`awaiting_chain_result`,`stopped`,`request_failed`,`outcome_unknown`,`completed`]);var zb=B({id:F(),label:F(),status:W([`pass`,`warning`,`fail`]),message:F(),source:W([`registry`,`quote`,`wallet`,`simulation`,`adapter`,`network`,`proposal`])}),Bb=F().min(1),Vb=`human_readable_review`,Hb=`review_time_simulation`,Ub=B({stageCatalogId:F().min(1),adapterId:F(),protocol:F(),actionKind:F(),completedStages:z(Bb),missingStages:z(Bb)}).strict().superRefine((e,t)=>{let n=Wb(e.completedStages);n&&t.addIssue({code:`custom`,path:[`completedStages`],message:`completedStages contains duplicate stage '${n}'`});let r=Wb(e.missingStages);r&&t.addIssue({code:`custom`,path:[`missingStages`],message:`missingStages contains duplicate stage '${r}'`});for(let n of e.completedStages)e.missingStages.includes(n)&&t.addIssue({code:`custom`,path:[`missingStages`],message:`stage '${n}' cannot be both completed and missing`})});function Wb(e){let t=new Set;for(let n of e){if(t.has(n))return n;t.add(n)}}var Gb=B({symbol:F(),amount:F(),coinType:F().optional(),approx:L().optional()}).strict(),Kb=Gb.extend({amountKind:G(`display_intent`).default(`display_intent`)}),qb=B({outgoing:z(Kb),expectedIncoming:z(Kb),minimumIncoming:z(Kb).optional(),fees:z(Kb).optional()}),Jb=B({outgoing:z(Gb),expectedIncoming:z(Gb),minimumIncoming:z(Gb).optional(),fees:z(Gb).optional()}),Yb=B({before:z(Gb),after:z(Gb),delta:z(Gb)}),Xb=B({computationCostRaw:P_(`computationCostRaw`),storageCostRaw:P_(`storageCostRaw`),storageRebateRaw:P_(`storageRebateRaw`),nonRefundableStorageFeeRaw:P_(`nonRefundableStorageFeeRaw`)}).strict(),Zb=B({address:h_,coinType:F().min(1).max(512).refine(e=>{try{return z_(e)===e}catch{return!1}},`Expected a normalized Sui struct tag coin type`),amount:R_(`balanceChanges[].amount`)}).strict(),Qb=B({objectId:h_,objectType:F().min(1).max(512).optional(),inputState:F().min(1).max(80),outputState:F().min(1).max(80),idOperation:F().min(1).max(80)}).strict(),$b=B({provider:Oy,checksEnabled:L(),success:L(),gasCostSummary:Xb.optional(),balanceChanges:z(Zb).optional(),objectChanges:z(Qb).optional(),error:F().optional()}),ex=$b,tx=$b.extend({checksEnabled:G(!0),success:G(!0),gasCostSummary:Xb,balanceChanges:z(Zb),objectChanges:z(Qb),error:uc().optional()}).strict(),nx=B({role:W([`input`,`expected_output`,`minimum_output`,`fee`]),symbol:F(),coinType:F().min(1).max(512).refine(e=>{try{return z_(e),!0}catch{return!1}},`Expected a Sui struct tag coin type`),decimals:I().int().min(0).max(255),rawAmount:P_(`rawAmount`),rawAmountSource:G(`quote_policy_evidence`),displayAmount:F().optional(),displayAmountSource:G(`user_display_intent_not_signing_input`).optional()}).strict().superRefine((e,t)=>{e.displayAmount!==void 0&&e.displayAmountSource===void 0&&t.addIssue({code:`custom`,path:[`displayAmountSource`],message:`displayAmountSource is required when displayAmount is present`}),e.displayAmount===void 0&&e.displayAmountSource!==void 0&&t.addIssue({code:`custom`,path:[`displayAmount`],message:`displayAmount is required when displayAmountSource is present`})}),rx=B({role:W([`connected_account`,`output_recipient`]),address:h_}).strict(),ix=B({kind:G(`swap_output_asset`),symbol:F(),coinType:F().min(1).max(512).refine(e=>{try{return z_(e),!0}catch{return!1}},`Expected a Sui struct tag coin type`),protocol:F(),poolKey:F(),direction:W([`base_to_quote`,`quote_to_base`])}).strict(),ax=B({id:F(),label:F(),source:H([W([`registry`,`quote`,`wallet`,`simulation`,`adapter`,`network`,`proposal`]),W([`transaction_material`,`digest_commitment`])]),summary:F()}).strict(),ox=B({id:F(),label:F(),reason:F()}).strict(),sx=B({proposedAction:B({title:F(),summary:F(),actionKind:F(),adapterId:F(),protocol:F(),network:G(`sui:mainnet`)}).strict(),recipients:z(rx),evidenceUsed:z(ax),missingEvidence:z(ox),requiredUserChoices:z(ox),unsupportedClaims:z(ox),freshness:B({status:G(`current`),evaluatedAt:F(),expiresAt:F(),reason:F()}).strict(),blockingChecks:z(zb)}).strict(),cx=B({assetFlow:B({outgoing:z(nx),expectedIncoming:z(nx),minimumIncoming:z(nx),fees:z(nx)}).strict(),targets:z(ix)}).strict(),lx=hc(`kind`,[sx.extend({kind:G(`swap_human_readable_review`)}).merge(cx)]),ux=B({id:F(),actionKind:F(),adapterId:F(),protocol:F(),title:F(),summary:F(),assetFlowPreview:qb,reviewModel:Cy.optional(),adapterData:Fb,createdAt:F(),expiresAt:F().optional(),registryVersion:F().optional(),preliminaryChecks:z(zb).optional()}),dx=B({planId:F(),reviewSessionId:F(),account:h_,checks:z(zb),assetFlowActual:Jb.optional(),beforeAfterBalance:Yb.optional(),simulation:ex.optional(),humanReadableReview:lx.optional(),transactionReviewData:Nb.optional(),ptbVisualization:Pb.optional(),adapterLifecycle:Ub.optional(),updatedAt:F()}),fx=hc(`status`,[dx.extend({status:G(`ready_for_wallet_review`),evidenceValidity:uc().optional(),blockedReason:uc().optional(),refreshReason:uc().optional()}),dx.extend({status:G(`refresh_required`),evidenceValidity:G(`invalidated`).optional(),refreshReason:Lb,blockedReason:uc().optional()}),dx.extend({status:G(`blocked`),evidenceValidity:G(`invalidated`).optional(),blockedReason:Ib,refreshReason:uc().optional()})]).superRefine((e,t)=>{if(e.evidenceValidity===`invalidated`)for(let n of Dy)e[n]!==void 0&&t.addIssue({code:`custom`,path:[n],message:`Invalidated review evidence cannot carry current material-derived facts`});let n=e.adapterLifecycle;if(n!==void 0&&px(e,t),e.humanReadableReview!==void 0&&n===void 0&&t.addIssue({code:`custom`,path:[`humanReadableReview`],message:`humanReadableReview requires adapterLifecycle evidence stage provenance`}),e.simulation!==void 0&&n===void 0&&t.addIssue({code:`custom`,path:[`simulation`],message:`simulation requires adapterLifecycle evidence stage provenance`}),e.ptbVisualization!==void 0){let e=n?.completedStages??[];e.includes(`transaction_material_build_or_verify`)&&e.includes(`digest_commitment`)||t.addIssue({code:`custom`,path:[`ptbVisualization`],message:`ptbVisualization requires completed transaction material and digest commitment lifecycle stages`})}let r=e.status===`ready_for_wallet_review`;e.transactionReviewData!==void 0&&!r&&t.addIssue({code:`custom`,path:[`transactionReviewData`],message:`transactionReviewData is only valid on ready_for_wallet_review`}),e.status===`ready_for_wallet_review`&&n!==void 0&&(e.transactionReviewData===void 0&&t.addIssue({code:`custom`,path:[`transactionReviewData`],message:`ready_for_wallet_review requires an emitted wallet review contract`}),(n===void 0||n.missingStages.length!==0)&&t.addIssue({code:`custom`,path:[`adapterLifecycle`],message:`ready_for_wallet_review requires a completed adapterLifecycle with no missing stages`}),e.humanReadableReview===void 0&&t.addIssue({code:`custom`,path:[`humanReadableReview`],message:`ready_for_wallet_review requires humanReadableReview public evidence`}),e.simulation===void 0&&t.addIssue({code:`custom`,path:[`simulation`],message:`ready_for_wallet_review requires successful simulation public evidence`})),e.status===`blocked`&&(e.blockedReason===`producer_stage_missing`&&n===void 0&&t.addIssue({code:`custom`,path:[`adapterLifecycle`],message:`producer_stage_missing requires adapterLifecycle with at least one missing stage`}),e.blockedReason===`producer_stage_missing`&&n!==void 0&&n.missingStages.length===0&&t.addIssue({code:`custom`,path:[`blockedReason`],message:`producer_stage_missing requires at least one adapterLifecycle.missingStages entry`}),e.blockedReason===`wallet_review_contract_emit_missing`&&e.transactionReviewData!==void 0&&t.addIssue({code:`custom`,path:[`transactionReviewData`],message:`wallet_review_contract_emit_missing requires the wallet review contract to be absent`}),e.blockedReason===`wallet_review_contract_emit_missing`&&n===void 0&&t.addIssue({code:`custom`,path:[`adapterLifecycle`],message:`wallet_review_contract_emit_missing requires adapterLifecycle`}),e.blockedReason===`wallet_review_contract_emit_missing`&&n!==void 0&&n.missingStages.length!==0&&t.addIssue({code:`custom`,path:[`blockedReason`],message:`wallet_review_contract_emit_missing requires a completed adapterLifecycle with no missing stages`}),e.blockedReason===`wallet_review_contract_emit_missing`&&e.evidenceValidity!==`invalidated`&&e.humanReadableReview===void 0&&t.addIssue({code:`custom`,path:[`humanReadableReview`],message:`wallet_review_contract_emit_missing requires humanReadableReview public evidence`}),e.blockedReason===`wallet_review_contract_emit_missing`&&e.evidenceValidity!==`invalidated`&&e.simulation===void 0&&t.addIssue({code:`custom`,path:[`simulation`],message:`wallet_review_contract_emit_missing requires simulation public evidence`}))});function px(e,t){let n=e.adapterLifecycle;n&&(e.humanReadableReview!==void 0&&mx(t,n,Vb,[`humanReadableReview`]),e.simulation!==void 0&&(mx(t,n,Hb,[`simulation`]),mx(t,n,Vb,[`simulation`]),hx(t,e.simulation,[`simulation`])),n.missingStages.includes(Hb)&&e.simulation!==void 0&&t.addIssue({code:`custom`,path:[`simulation`],message:`simulation public evidence cannot be present while review_time_simulation is missing`}),n.missingStages.includes(Vb)&&e.humanReadableReview!==void 0&&t.addIssue({code:`custom`,path:[`humanReadableReview`],message:`humanReadableReview public evidence cannot be present while human_readable_review is missing`}))}function mx(e,t,n,r){t.completedStages.includes(n)||e.addIssue({code:`custom`,path:r,message:`${r.join(`.`)} requires completed adapterLifecycle stage '${n}'`}),t.missingStages.includes(n)&&e.addIssue({code:`custom`,path:r,message:`${r.join(`.`)} cannot be present while adapterLifecycle stage '${n}' is missing`})}function hx(e,t,n){tx.safeParse(t).success||e.addIssue({code:`custom`,path:n,message:`simulation public evidence requires a successful checks-enabled review-time simulation projection`})}var gx=B({topic:F().min(1),grants:O_,expiresAt:F().datetime(),walletName:F().optional()}).strict(),_x={topic:F().min(1),lifecycleRevision:I().int().positive(),grantRevisions:S_},vx=hc(`status`,[B({..._x,status:G(`present`),session:gx}).strict(),B({..._x,status:W([`absent`,`unusable`])}).strict()]);B({chainId:G(b_),lifecycleRevision:I().int().positive(),grantRevision:I().int().nonnegative()});var yx=B({runId:Z_,sequence:I().int().positive(),observedAt:F().datetime()}).strict();yx.extend({sessions:z(vx)}).strict();var bx=F().uuid(),xx={operationId:bx,walletRunId:Z_},Sx=hc(`action`,[B({action:G(`connect`),...xx,chains:C_}).strict(),B({action:G(`disconnect`),...xx,connectionId:F().min(1),impactId:F().min(1)}).strict()]);B({}).strict();var Cx=B({operationId:bx,cardId:F().min(1),action:W([`connect`,`disconnect`]),status:W([`running`,`completed`,`failed`,`stopped`]),connectionId:F().min(1),createdAt:F().datetime(),updatedAt:F().datetime(),expiresAt:F().datetime(),settlementPending:L(),message:F().optional(),endReason:W([`user_stopped`,`expired`,`run_ended`]).optional()}).strict();Cx.pick({operationId:!0,action:!0,status:!0,settlementPending:!0});var wx=`A wallet connection provides account context; it is not a transaction approval or proof of address ownership.`,Tx=`Review evidence is not a safety guarantee. Only an explicit card action and wallet approval may authorize this exact transaction.`,Ex=iv.extend({sessionPresence:W([`present`,`absent`,`unusable`,`unconfirmed`]),chainStates:z(av).optional(),disconnectImpact:B({impactId:F(),requestCount:I().int().nonnegative(),chains:C_}).strict().optional()});W([`awaiting_approval`,`disconnect_pending`,`cleanup_pending`]);var Dx=B({action:W([`prepare_review`,`request_signature`]),connectionId:F().min(1),walletRunId:Z_,account:h_,reviewRevision:I().int().nonnegative()}).strict(),Ox=B({action:W([`cancel`,`stop_waiting`,`read_result`])}).strict(),kx=H([Sx,B({action:G(`stop_connection`),operationId:F().uuid()}).strict(),Dx,Ox]),Ax=H([Sx.options[0],Dx.extend({action:G(`prepare_review`)})]);function jx(e,t){e.reviewTarget&&(e.review?.account&&e.review.account!==e.reviewTarget.account||e.request&&e.request.account!==e.reviewTarget.account)&&t.addIssue({code:`custom`,path:[`reviewTarget`],message:`The fixed review target must match its recorded account and request.`})}var Mx=B({kind:W(lv),message:F().optional(),reason:F().optional()}).strict(),Nx={allowedActions:z(W(cv)),actionRemainingMs:I().int().nonnegative(),nextStateReadAfterMs:I().int().nonnegative().optional(),observe:L(),walletAvailability:ev,walletObservation:yx.optional(),progress:tv,nextStep:Mx},Px=B({...Nx,kind:G(`connect`),mode:G(`connect`),allowedActions:z(W([`connect`,`cancel`,`stop_connection`])),boundary:G(wx),requestedChains:C_,operation:Cx.optional(),automaticAction:Sx.options[0].optional()}).strict(),Fx=B({...Nx,kind:G(`disconnect`),mode:G(`disconnect`),allowedActions:z(W([`disconnect`,`cancel`])),boundary:G(wx),connection:Ex.optional(),operation:Cx.optional()}).strict(),Ix=B({reviewSessionId:F(),plan:ux,reviewRevision:I().int().nonnegative(),status:Rb,account:F().optional(),preparing:L(),accountRequestPending:G(!0).optional(),error:F().optional(),state:fx.optional()}).strict(),Lx=B({connectionId:F(),account:h_}).strict(),Rx=F().regex(/^-?[0-9]+$/).optional(),zx=hc(`kind`,[Px,Fx,B({...Nx,kind:G(`review`),mode:W([`review`,`review_manage`]),allowedActions:z(W([`prepare_review`,`request_signature`,`read_result`,`stop_waiting`,`cancel`])),boundary:G(Tx),reviewTarget:Lx.optional(),review:Ix,walletName:F().optional(),acceptedWalletRunId:Z_.optional(),automaticAction:Dx.extend({action:G(`prepare_review`)}).optional(),request:X_.optional(),receipt:R().optional(),netGasMist:Rx,observationStopped:L().optional()}).strict().superRefine(jx)]),Bx=B({message:F(),recordedAt:F().datetime()}).strict(),Vx={allowedActions:z(uc()),observe:G(!1),actionRemainingMs:G(0),result:Bx};B({...Vx,kind:W([`connect`,`disconnect`]),result:Bx.extend({pendingWork:W([`approval_response`,`session_removal`,`session_status`]).optional()}),walletName:F().optional(),networks:z(B({chainId:x_,status:W([`bound`,`not_approved`,`multiple_accounts`,`invalid_response`])}).strict())}).strict(),B({...Vx,kind:G(`review`),mode:W([`review`,`review_manage`]),review:Ix.optional(),reviewTarget:Lx.optional(),request:X_.optional(),receipt:R().optional(),netGasMist:Rx,observationStopped:L().optional(),boundary:G(Tx)}).strict().superRefine(jx);var Hx=`sui-mcp.local-data`,Ux=16777216,Q=F().uuid(),Wx=I().int().nonnegative().safe(),Gx=F().regex(/^[a-f0-9]{64}$/),Kx=hc(`status`,[B({status:G(`no_file`)}).strict(),B({status:G(`receiving`)}).strict(),B({status:G(`checking`)}).strict(),B({status:G(`check_required`),message:F().min(1)}).strict(),B({status:G(`can_restore`)}).strict(),B({status:G(`cannot_restore`),reason:W([`invalid_backup`,`file_unavailable`,`wallet_request_unsettled`,`operation_busy`,`input_unavailable`,`check_failed`]),message:F().min(1)}).strict()]);B({fileId:Q,sha256:Gx,totalSize:Wx,dataEpoch:Wx,userDataRevision:Wx,check:Kx}).strict();var qx=hc(`kind`,[B({kind:G(`set_endpoint`),endpoint:W([`grpc`,`graphql`]),value:F().min(1)}).strict(),B({kind:G(`restore_endpoint`),endpoint:W([`grpc`,`graphql`])}).strict(),B({kind:W([`import_local_data`,`reset_local_data`,`restart_wallet_service`])}).strict()]),Jx=hc(`kind`,[B({kind:G(`clear_read_address`)}).strict(),...qx.options,B({kind:G(`set_wallet_networks`),chains:C_}).strict(),B({kind:G(`download_backup`)}).strict()]);B({operationStatus:B({operationId:F().uuid()}).strict().optional(),backupDelivery:B({operationId:F().uuid(),fileId:F().uuid()}).strict().optional()}).strict().refine(e=>!(e.operationStatus&&e.backupDelivery),`Choose exactly one card purpose.`);var Yx=W([`acknowledged`,`not_completed`,`unconfirmed`,`unsupported`,`not_sent`]),Xx=B({method:G(`ui/download-file`),code:G(-32601)}).strict(),Zx=W([`acknowledged`,`cancelled`,`expired`,`server_restarted`,`data_replaced`,`source_unavailable`,`stored_locally`,`local_save_failed`]),Qx=B({device:F().regex(/^\d+$/),inode:F().regex(/^\d+$/)}).strict(),$x=W([`not_published`,`target_conflict`,`source_unavailable`,`interrupted`]),eS=B({status:W([`needs_consent`,`saving`,`saved`,`failed`]),attemptId:Q,fileId:Q,sha256:Gx,totalSize:Wx,destination:F(),ownerId:F().min(1),currentSaveAttemptId:Q.optional(),attempts:z(B({saveAttemptId:Q,cardId:F().min(1),previousSaveAttemptId:Q.optional(),admittedAt:F().datetime(),allowPossibleCopy:L()}).strict()),sourceIdentity:Qx.optional(),savedAt:F().datetime().optional(),failure:$x.optional()}).strict().superRefine((e,t)=>{(e.status===`needs_consent`?e.attempts.length!==0||e.currentSaveAttemptId!==void 0:!e.currentSaveAttemptId||!e.attempts.some(t=>t.saveAttemptId===e.currentSaveAttemptId))&&t.addIssue({code:`custom`,message:`A local save must identify its admitted attempt.`}),(new Set(e.attempts.map(e=>e.saveAttemptId)).size!==e.attempts.length||e.status===`saved`!=(e.savedAt!==void 0)||e.status===`saved`&&!e.sourceIdentity||e.status===`failed`!=(e.failure!==void 0))&&t.addIssue({code:`custom`,message:`Local save evidence must match its state.`})});B({currentAttemptId:Q,attempts:z(B({attemptId:Q,cardId:F().min(1),admittedAt:F().datetime(),previousAttemptId:Q.optional(),hostReport:Yx.optional(),failure:Xx.optional()}).strict()).min(1),readyAt:F().datetime().optional(),expiresAt:F().datetime().optional(),endReason:Zx.optional(),localSave:eS.optional()}).strict().superRefine((e,t)=>{(new Set(e.attempts.map(e=>e.attemptId)).size!==e.attempts.length||!e.attempts.some(t=>t.attemptId===e.currentAttemptId)||e.readyAt===void 0!=(e.expiresAt===void 0))&&t.addIssue({code:`custom`,message:`Download attempts and lifetime must identify one stored snapshot.`}),(e.endReason===`stored_locally`&&e.localSave?.status!==`saved`||e.endReason===`local_save_failed`&&e.localSave?.status!==`failed`||e.attempts.some(e=>e.hostReport===`unsupported`!=(e.failure!==void 0))||e.localSave&&(e.localSave.attemptId!==e.currentAttemptId||!e.attempts.some(t=>t.attemptId===e.currentAttemptId&&t.hostReport===`unsupported`)||e.localSave.status===`saving`&&e.endReason!==void 0||e.localSave.status===`saved`!=(e.endReason===`stored_locally`)))&&t.addIssue({code:`custom`,message:`Local saving requires the current download's unsupported report.`})});var tS=W([`settings_retry_download`,`settings_report_download`,`settings_cancel_download`,`settings_store_backup`]),nS=hc(`action`,[B({action:G(`settings_clear_read_address`),operationId:Q,connectionId:F().min(1),account:F().min(1)}).strict(),B({action:G(`settings_save_wallet_networks`),operationId:Q,chains:C_.transform(w_),expectedChains:C_.transform(w_)}).strict(),B({action:G(`settings_download_backup`),operationId:Q,attemptId:Q}).strict(),B({action:G(`settings_retry_download`),operationId:Q,fileId:Q,previousAttemptId:Q,attemptId:Q}).strict(),B({action:G(`settings_report_download`),operationId:Q,fileId:Q,attemptId:Q,status:Yx,failure:Xx.optional()}).strict().refine(e=>e.status===`unsupported`==(e.failure!==void 0),`Only unsupported downloads require the exact method failure.`),B({action:G(`settings_store_backup`),operationId:Q,fileId:Q,attemptId:Q,saveAttemptId:Q,previousSaveAttemptId:Q.optional(),allowPossibleCopy:L()}).strict(),B({action:G(`settings_cancel_download`),operationId:Q,fileId:Q,attemptId:Q}).strict(),B({action:G(`settings_select`),draft:qx}).strict(),B({action:G(`settings_prepare`),operationId:Q}).strict(),B({action:G(`settings_begin_upload`),operationId:Q,name:F().min(1),totalSize:Wx.max(Ux),sha256:Gx}).strict(),B({action:G(`settings_upload_chunk`),operationId:Q,fileId:Q,offset:Wx.max(Ux),chunkBase64:F()}).strict(),B({action:G(`settings_seal_upload`),operationId:Q,fileId:Q}).strict(),B({action:G(`settings_confirm`),operationId:Q,preparationId:Q}).strict(),B({action:G(`settings_back`),operationId:Q}).strict(),B({action:G(`settings_cancel`)}).strict()]),rS=B({outcome:W([`completed`,`failed`,`interrupted`,`superseded`]),recordedAt:F().datetime(),message:F().min(1),details:U(F(),R()).optional(),completionScope:G(`backup_delivery`).optional()}).strict(),iS=B({storedValue:F(),effectiveValue:F(),source:W([`environment`,`local_db`,`builtin_default`]),pendingStoredValue:F().optional(),appliesAfter:G(`mcp_server_restart`).optional()}).strict(),aS=B({endpoint:W([`grpc`,`graphql`]),key:W([`suiGrpcUrl`,`suiGraphqlUrl`]),value:F().min(1),status:W([`saved`,`reset`]),storedValue:F(),effectiveValue:F(),source:iS.shape.source}).strict().refine(e=>e.key===(e.endpoint===`grpc`?`suiGrpcUrl`:`suiGraphqlUrl`),`The endpoint kind and preference key must agree.`),oS=I().int().nonnegative().safe(),sS=B({accounts:oS,reviewSessions:oS,reviewStateSnapshots:oS,reviewStatusTransitions:oS,reviewExecutions:oS,reviewRequests:oS,outcomeUnknownRequests:oS,externalActivityScans:oS,externalActivityTransactions:oS,localSettings:oS}).strict(),cS=B({status:G(`valid`),format:G(Hx),network:G(`mainnet`),exportedAt:F().datetime(),currentCounts:sS,incomingCounts:sS,willReplace:G(!0),restartRequiredAfterImport:L()}).strict(),lS=B({kind:G(`settings`),operationId:Q,phase:W([`draft`,`uploading`,`sealed`,`prepared`,`executing`,`stopping`,`starting`,`terminal`]),draft:Jx.optional(),preparationId:Q.optional(),preparation:U(F(),R()).optional(),file:B({fileId:Q,displayName:F(),totalSize:Wx,receivedSize:Wx,sha256:Gx,sealed:L(),cleanup:W([`pending`,`complete`,`failed`])}).strict().optional(),download:B({availability:W([`preparing`,`available`,`ended`]),currentAttemptId:Q,hostReport:Yx.optional(),previousUnconfirmed:L(),endReason:Zx.optional(),expiresAt:F().datetime().optional(),remainingMs:Wx.optional(),localSave:B({status:W([`needs_consent`,`saving`,`saved`,`failed`]),currentSaveAttemptId:Q.optional(),failure:$x.optional(),savedAt:F().datetime().optional()}).strict().optional(),allowedFileActions:z(tS)}).strict().optional(),restoreCheck:Kx.optional(),backupLocation:B({directory:F().min(1),filename:F().min(1)}).strict().optional(),result:rS.optional(),temporaryFileCleanup:W([`pending`,`complete`,`failed`]).optional(),priorRunId:Q.optional(),nextRunId:Q.optional(),supersedesOperationId:Q.optional(),supersededByOperationId:Q.optional(),allowedActions:z(W(nS.options.map(e=>e.shape.action.value))),observe:L(),facts:B({server:B({name:F(),version:F(),network:G(`mainnet`)}).strict(),localSettings:B({suiGrpcUrl:iS,suiGraphqlUrl:iS,walletConnectionChains:C_}).strict(),readAddress:F().optional(),readConnectionId:F().optional(),assetReadAccount:sv,walletAvailability:ev,connectionReconciliationRequired:G(!0).optional(),observedAt:F().datetime().optional(),counts:sS}).strict().optional()}).strict().superRefine((e,t)=>{if(e.download&&(e.draft?.kind!==`download_backup`||!e.file||e.download.availability===`available`&&(!e.file.sealed||e.download.endReason||!e.download.expiresAt)||e.download.availability===`ended`&&!e.download.endReason)&&t.addIssue({code:`custom`,message:`Download delivery must describe its own snapshot and lifetime.`}),e.draft?.kind===`download_backup`&&e.preparation!==void 0&&t.addIssue({code:`custom`,message:`Private download preparation is not public preparation data.`}),e.restoreCheck&&(e.draft?.kind!==`import_local_data`||e.result)&&t.addIssue({code:`custom`,message:`Restore checks belong to an uncompleted import preparation.`}),e.restoreCheck?.status===`can_restore`&&(e.phase!==`prepared`||!e.file?.sealed||!e.allowedActions.includes(`settings_confirm`))&&t.addIssue({code:`custom`,message:`Restore availability requires a sealed file and current confirmation.`}),e.draft?.kind===`import_local_data`&&e.restoreCheck?.status!==`can_restore`&&e.allowedActions.includes(`settings_confirm`)&&t.addIssue({code:`custom`,message:`An unchecked or blocked import cannot offer confirmation.`}),e.restoreCheck?.status===`receiving`&&(!e.file||e.file.sealed||![`draft`,`uploading`].includes(e.phase))&&t.addIssue({code:`custom`,message:`Receiving requires the selected unsealed upload.`}),e.restoreCheck?.status===`check_required`&&(!e.file?.sealed||e.phase!==`sealed`)&&t.addIssue({code:`custom`,message:`A new check requires the same complete sealed upload.`}),e.restoreCheck?.status===`cannot_restore`&&e.restoreCheck.reason===`invalid_backup`&&(e.phase===`prepared`||e.allowedActions.includes(`settings_prepare`))&&t.addIssue({code:`custom`,message:`A rejected backup requires an explicit new selection.`}),e.backupLocation&&(e.result?.outcome!==`completed`||e.draft?.kind!==`download_backup`||e.download?.localSave?.status!==`saved`||e.download.endReason!==`stored_locally`)&&t.addIssue({code:`custom`,message:`A backup location requires its recorded successful export.`}),e.download?.localSave?.status===`saved`&&!e.backupLocation&&t.addIssue({code:`custom`,message:`A saved backup must identify its verified location.`}),e.temporaryFileCleanup&&!e.result&&t.addIssue({code:`custom`,message:`Cleanup of an applied or ended operation requires its recorded result.`}),(e.phase===`terminal`!=(e.result!==void 0)||e.phase===`terminal`&&(e.observe||e.allowedActions.length||e.download?.allowedFileActions.length))&&t.addIssue({code:`custom`,message:`A terminal Settings result cannot grant input or observation.`}),e.phase===`prepared`&&(!e.preparationId||!e.draft||!e.preparation)&&t.addIssue({code:`custom`,message:`Settings confirmation requires a prepared identity and facts.`}),e.phase===`prepared`&&e.draft?.kind===`import_local_data`&&!cS.safeParse(e.preparation?.preview).success&&t.addIssue({code:`custom`,path:[`preparation`,`preview`],message:`Import confirmation requires the validated current and incoming read context and record counts.`}),e.phase===`prepared`&&(e.draft?.kind===`set_endpoint`||e.draft?.kind===`restore_endpoint`)){let n=aS.safeParse(e.preparation?.endpoint);(!n.success||n.data.endpoint!==e.draft.endpoint||n.data.status!==(e.draft.kind===`set_endpoint`?`saved`:`reset`)||e.draft.kind===`set_endpoint`&&n.data.value!==e.draft.value)&&t.addIssue({code:`custom`,path:[`preparation`,`endpoint`],message:`Endpoint confirmation must name its exact prepared target.`})}e.file&&e.file.receivedSize>e.file.totalSize&&t.addIssue({code:`custom`,message:`Received content exceeds the selected file.`})}),uS=65536;function dS(e){return new TextEncoder().encode(JSON.stringify(e)).length}function fS(e){let t=uS-dS(e);return t>0?3*Math.floor(t/4):0}function pS(e){if(!e||typeof e!=`object`)return;let t=structuredClone(e);if(t.method===`tools/call`&&t.params?.name===`ui_act_card`&&t.params.arguments?.input?.action===`settings_upload_chunk`)return t.id=2**53-1,t.params.arguments.revision=2**53-1,t.params.arguments.input.offset=Ux,t.params.arguments.input.chunkBase64=``,fS(t)}var mS={uiOpenAccount:`ui_open_account`,uiOpenReceipt:`ui_open_receipt`,uiOpenChart:`ui_open_chart`,uiReadCard:`ui_read_card`,uiSubmitCard:`ui_submit_card`,uiActCard:`ui_act_card`,uiReadSettingsFile:`ui_read_settings_file`,sessionOpenReviewManagement:`session_open_review_management`,readGetServerStatus:`read_get_server_status`,readListSupportedProtocols:`read_list_supported_protocols`,readListDeepbookPools:`read_list_deepbook_pools`,readListDeepbookTokens:`read_list_deepbook_tokens`,readInspectDeepbookOrderbook:`read_inspect_deepbook_orderbook`,readGetDeepbookMidPrice:`read_get_deepbook_mid_price`,readGetDeepbookUsdcPriceHistory:`read_get_deepbook_usdc_price_history`,readGetDeepbookUsdcPriceAtTime:`read_get_deepbook_usdc_price_at_time`,readQuoteDeepbookAction:`read_quote_deepbook_action`,readQuoteDeepbookDisplayAmount:`read_quote_deepbook_display_amount`,readSummarizeDeepbookAccountInventory:`read_summarize_deepbook_account_inventory`,readSummarizeWalletAssets:`read_summarize_wallet_assets`,readClassifyWalletAssets:`read_classify_wallet_assets`,readListSettlementAssetGroups:`read_list_settlement_asset_groups`,readSummarizeSettlementAssetGroupParity:`read_summarize_settlement_asset_group_parity`,readPreviewIntentEvidence:`read_preview_intent_evidence`,readListReviewActivity:`read_list_review_activity`,readSummarizeReviewFunnel:`read_summarize_review_funnel`,readGetReviewSessionDetail:`read_get_review_session_detail`,readInspectSuiTransaction:`read_inspect_sui_transaction`,readScanSuiAccountActivity:`read_scan_sui_account_activity`,readSummarizeSuiActivityScan:`read_summarize_sui_activity_scan`,readScanSuiFunctionActivity:`read_scan_sui_function_activity`,readSummarizeSuiFunctionActivityScan:`read_summarize_sui_function_activity_scan`,readSummarizeSuiAccountActivity:`read_summarize_sui_account_activity`,readGetAccountAssetTimeline:`read_get_account_asset_timeline`,settingsCreateLocalSettingsSession:`settings_create_local_settings_session`,settingsGetLocalSettings:`settings_get_local_settings`,actionStartReview:`action_start_review`,actionCreateProposalReview:`action_create_proposal_review`,sessionOpenWalletDisconnectionCard:`session_open_wallet_disconnection_card`,sessionOpenWalletConnectionCard:`session_open_wallet_connection_card`,sessionGetWalletConnectionCard:`session_get_wallet_connection_card`,sessionWaitWalletConnectionCard:`session_wait_wallet_connection_card`,sessionGetInteractionStatus:`session_get_interaction_status`,sessionGetReviewStatus:`session_get_review_status`,sessionGetExecutionResult:`session_get_execution_result`,sessionWaitExecutionResult:`session_wait_execution_result`,accountGetActiveAccount:`account_get_active_account`},hS=B({connectionId:F().min(1),pairingUri:F().startsWith(`wc:`),expiresAt:F().datetime()}).strict(),gS=W([`account`,`receipt`,`chart`,`connect`,`disconnect`,`review`,`settings`]),_S=B({cardId:F().min(1),kind:gS,state:W([`ready`,`running`,`closed`]),revision:I().int().nonnegative(),createdAt:F().datetime(),expiresAt:F().datetime(),input:U(F(),R()),data:R().optional(),reason:W([`completed`,`expired`,`failed`,`server_restarted`,`cancelled`]).optional(),error:F().optional()}).strict().extend({pollAfterMs:I().int().positive(),inputRemainingMs:I().int().nonnegative()}),vS=B({transactionDigest:F().min(1),pureInputs:z(B({index:I().int().nonnegative(),bytes:F().regex(/^0x(?:[0-9a-f]{2})*$/i)}).strict()).refine(e=>new Set(e.map(e=>e.index)).size===e.length,`Duplicate input index.`),ptbGraph:B({mermaid:B({text:F(),namedText:F()}).strict()}).strict().optional()}).strict(),yS=`sui-mcp/card`,bS=`sui-mcp/receipt-display`,xS=`sui-mcp/wallet-display`,SS=`sui-mcp/settings-file`,CS=`suimcp://cards/`,wS=hc(`kind`,[B({kind:G(`account`),status:G(`input_required`),field:G(`account`),message:F().min(1)}).strict(),B({kind:G(`receipt`),status:G(`input_required`),field:G(`digest`),message:F().min(1)}).strict()]),TS=B({cardId:F().min(1),permission:F().min(1)}).strict();TS.extend({revision:I().int().nonnegative(),input:U(F(),R())}).strict();var ES=vS.extend({cardId:F().min(1),revision:I().int().nonnegative(),attemptId:F().min(1).optional()}),DS=hS.extend({cardId:F().min(1),revision:I().int().nonnegative()}),OS=B({attemptId:F().uuid(),cardId:F().min(1),operationId:F().uuid(),fileId:F().uuid(),offset:I().int().nonnegative().safe(),totalSize:I().int().nonnegative().safe(),sha256:F().regex(/^[a-f0-9]{64}$/),chunkBase64:F()}).strict(),kS={account:mS.uiOpenAccount,receipt:mS.uiOpenReceipt,chart:mS.uiOpenChart,read:mS.uiReadCard,submit:mS.uiSubmitCard,act:mS.uiActCard,readSettingsFile:mS.uiReadSettingsFile};function $(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function AS(e){return e.kind!==`import_local_data`}function jS(e,t,n){if(e.kind!==`settings`||t.kind!==`settings`||e.cardId!==t.cardId||t.state!==`ready`)return;let r=lS.safeParse(e.data),i=lS.safeParse(t.data);if(!r.success||!i.success)return;let a=r.data,o=i.data,s=o.draft;if(n.action===`settings_select`&&a.operationId===o.operationId){let r=Jx.safeParse(n.draft);if(r.success&&AS(r.data)&&(t.revision===e.revision||NS(r.data,s)))return{kind:`selection_response`,cardId:t.cardId,operationId:o.operationId,draft:r.data}}if(!s||!a.draft||a.operationId!==o.operationId||n.operationId!==o.operationId||JSON.stringify(a.draft)!==JSON.stringify(s))return;if(AS(s))return n.action===`settings_prepare`?{kind:`preparation_response`,cardId:t.cardId,operationId:o.operationId,draft:s}:void 0;let c=o.file?.fileId;if(!(!c||!a.file?.fileId||a.file.fileId!==c||n.action!==`settings_prepare`&&n.action!==`settings_seal_upload`||n.action===`settings_seal_upload`&&n.fileId!==c))return{kind:`backup_check_response`,cardId:t.cardId,operationId:o.operationId,fileId:c,action:n.action}}function MS(e){return Object.keys(e).filter(t=>e[t]!==void 0)}function NS(e,t){if(e===t)return!0;if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((e,n)=>NS(e,t[n]));let n=$(e),r=$(t);if(!n||!r)return!1;let i=MS(n);return i.length===MS(r).length&&i.every(e=>Object.hasOwn(r,e)&&NS(n[e],r[e]))}function PS(e,t=!0){let n=$(e);if(!n)throw Error(`The app did not provide a usable card response.`);let r=()=>Error(`The app provided inconsistent card response information.`),i,a=e=>{let t=$(e);if(!t||typeof t.ok!=`boolean`||i&&!NS(i,t))throw r();i=t};n.structuredContent!==void 0&&a(n.structuredContent);let o,s;if(Array.isArray(n.content))for(let e of n.content){let n=$(e);if(n?.type!==`text`||typeof n.text!=`string`)continue;let i;try{i=$(JSON.parse(n.text))}catch{continue}if(i){if(i.ok!==void 0)a(i);else if(Array.isArray(i.content)){if(!t||o)throw r();let n=Xu.safeParse(i);if(!n.success)throw r();o=PS(n.data,!1),s=e,o.structuredContent!==void 0&&a(o.structuredContent)}}}let c=Object.create(null),l=!1;for(let e of[n._meta,o?._meta]){if(e===void 0)continue;let t=$(e);if(!t)throw r();for(let e of MS(t)){let n=t[e];if(Object.hasOwn(c,e)&&!NS(c[e],n))throw r();c[e]=n}l=!0}if(n.isError!==void 0&&typeof n.isError!=`boolean`||o?.isError!==void 0&&n.isError!==void 0&&o.isError!==n.isError||(n.isError===!0||o?.isError===!0)&&i?.ok===!0)throw r();return{...o,...n,...o?{content:[...Array.isArray(n.content)?n.content.filter(e=>e!==s):[],...Array.isArray(o.content)?o.content:[]]}:{},...i?{structuredContent:i}:{},...l?{_meta:c}:{}}}function FS(e,t){let n=$($(e?.data)?.request);return!!e&&(e.kind===`receipt`||e.kind===`review`)&&t.cardId===e.cardId&&t.revision===e.revision&&t.transactionDigest===(e.kind===`receipt`?e.input.digest:n?.transactionDigest)&&(e.kind!==`review`||t.attemptId===n?.attemptId)}function IS(e){let t;for(let n of Array.isArray(e.content)?e.content:[]){let e=$(n),r;if(e?.type===`resource_link`&&typeof e.uri==`string`&&e.uri.startsWith(`suimcp://cards/`)&&(r=e.uri),e?.type===`text`&&typeof e.text==`string`){let t=/^\[Resource link: card_([A-Za-z0-9_-]+)\] (suimcp:\/\/cards\/([A-Za-z0-9_-]+)) \(Saved data for this exact card\.\)$/.exec(e.text);if(!t&&e.text.startsWith(`[Resource link:`)&&e.text.includes(`suimcp://cards/`))throw Error(`The saved card links could not be matched to one card.`);if(t){if(t[1]!==t[3])throw Error(`The saved card links could not be matched to one card.`);r=t[2]}}if(r===void 0)continue;let i=r.slice(CS.length);if(!i||encodeURIComponent(i)!==i||t!==void 0&&i!==t||e?.type===`resource_link`&&typeof e.name==`string`&&e.name.startsWith(`card_`)&&e.name!==`card_${i}`)throw Error(`The saved card links could not be matched to one card.`);t=i}return t}function LS(e){let t=$(e.structuredContent),n=t?.ok===!0?wS.safeParse(t.data):void 0,r=$($(t?.error)?.details),i=n?.success?void 0:t?.ok===!0?$(t.data)?.card??t.data:r?.snapshot,a=i===void 0?void 0:_S.parse(i);a?.kind===`settings`&&lS.parse(a.data);let o=$(e._meta)?.[bS],s=o===void 0?void 0:ES.parse(o);if(s&&!FS(a,s))throw Error(`Transaction details do not match this saved result.`);let c=$(e._meta)?.[xS],l=c===void 0?void 0:DS.parse(c);if(l&&(!a||a.kind!==`connect`||l.cardId!==a.cardId||l.revision!==a.revision||l.connectionId!==$($(a.data)?.operation)?.connectionId))throw Error(`The connection QR code does not match this card.`);return{snapshot:a,display:s,wallet:l,inputRequired:n?.success?n.data:void 0,error:typeof r?.message==`string`?r.message:typeof r?.reason==`string`?r.reason:void 0}}function RS(e,t){let n=document.getElementById(`app`);if(!n)throw Error(`Card root is unavailable.`);let r=document.createElement(`h1`);r.textContent=t.title;let i=document.createElement(`p`);i.className=`ui-note`,i.setAttribute(`role`,`status`);let a=document.createElement(`p`);a.className=`ui-error`,a.setAttribute(`role`,`alert`);let o=document.createElement(`p`);o.className=`ui-note card-guidance`;let s=document.createElement(`section`),c=document.createElement(`div`);c.className=`card-actions`;let l=document.createElement(`div`);l.className=`card-progress-hint`,l.hidden=!0,n.replaceChildren(r,i,a,s,o,l,c);let u=new Zh({name:`sui-mcp-card`,version:`0.8.0`},{},{autoResize:!0,strict:!0}),d=new AbortController,f=e===`connect`||e===`disconnect`||e===`review`,p=e===`settings`,m=f||p,h=!1,g,_,v,y,b,ee,x,te=!1,ne=!1,re,ie,S={status:`unconfirmed`},ae,oe,se,C,w,T=`continue`,ce,E,D=0,O=0,le,ue,de,fe,k,pe,me,he,ge=!1;function _e(){if(!C||!y)return;let{input:t,basis:n}=C,r=$(y.data),i=$(n.data),a=$(r?.request),o=$(r?.review),s=$(i?.request),c=!!a&&a.attemptId===s?.attemptId;if(!f)return y.state===`running`||y.reason===`completed`?C.delivery===`rejected`?`past`:`observed`:y.state===`closed`?`past`:`active`;if((e===`connect`||e===`disconnect`)&&typeof t.operationId==`string`){let e=$(r?.operation)?.operationId===t.operationId?$(r?.operation):void 0;if(t.action===`stop_connection`){if(e?.endReason===`user_stopped`)return`observed`;if(e&&e.status!==`running`)return`past`}else if(e)return`observed`}if(t.walletRunId&&t.walletRunId!==$(r?.walletAvailability)?.walletRunId&&t.walletRunId!==r?.acceptedWalletRunId)return`past`;switch(t.action){case`connect`:break;case`prepare_review`:if(typeof o?.reviewRevision==`number`&&typeof t.reviewRevision==`number`&&o.reviewRevision>t.reviewRevision)return o.account===t.account?`observed`:`past`;break;case`request_signature`:if(a?.account===t.account&&a?.reviewRevision===t.reviewRevision)return`observed`;if(typeof o?.reviewRevision==`number`&&typeof t.reviewRevision==`number`&&o.reviewRevision>t.reviewRevision||!a&&o&&o.reviewRevision===t.reviewRevision&&o.account===t.account&&o.status===`refresh_required`&&$(o.state)?.refreshReason===`review_evidence_stale`&&Array.isArray(r?.allowedActions)&&r.allowedActions.includes(`prepare_review`))return`past`;break;case`cancel`:if(y.reason===`cancelled`)return`observed`;break;case`disconnect`:case`stop_connection`:break;case`stop_waiting`:if(c&&(a?.requestStatus===`stopped`||r?.observationStopped===!0))return`observed`;if(c&&[`completed`,`request_failed`,`outcome_unknown`].includes(String(a?.requestStatus)))return`past`;break;case`read_result`:if(c&&(r?.observe===!0||a?.requestStatus===`completed`))return`observed`;if(c&&[`stopped`,`request_failed`].includes(String(a?.requestStatus)))return`past`}return ve()||typeof r?.actionRemainingMs==`number`&&r.actionRemainingMs<=0||[`connect`,`disconnect`,`cancel`,`prepare_review`,`request_signature`].includes(String(t.action))&&(y.state!==`ready`||o?.status===`expired`)?`past`:`active`}function ve(){let e=kx.safeParse(C?.input),t=zx.safeParse(y?.data);if(!e.success||!t.success)return!1;let n=e.data,r=t.data,i=`operationId`in n&&!!y&&y.state===`ready`&&y.input.operationId===n.operationId&&r.kind!==`review`&&!r.operation;if(n.action===`connect`)return r.kind===`connect`&&i&&JSON.stringify([...n.chains].sort())!==JSON.stringify([...r.requestedChains].sort());if(n.action===`prepare_review`||n.action===`request_signature`)return r.kind!==`review`||r.reviewTarget?.connectionId!==n.connectionId||r.reviewTarget?.account!==n.account;if(n.action!==`disconnect`||r.kind!==`disconnect`)return!1;let a=r.connection?.connectionId===n.connectionId?r.connection:void 0;return a?i&&a.disconnectImpact?.impactId!==n.impactId||r.nextStep.reason===`no_session_to_disconnect`||r.nextStep.reason===`connection_target_changed`:i}function ye(){if(!C)return;let e=_e();e&&C.disposition!==`observed`&&(e!==`active`||C.disposition===`active`)&&(C.disposition=e),C.disposition===`observed`&&(C.retryRequired=!1)}function be(){if(y?.reason===`cancelled`)return;let e=Ax.safeParse($(y?.data)?.automaticAction);return C?.retryRequired&&e.success&&C.input.action===e.data.action?e.data:void 0}function xe(e){let t={connect:`connection request`,prepare_review:`review update`,request_signature:`wallet approval request`,read_result:`transaction status check`,cancel:`cancellation request`,stop_connection:`request to stop connecting`,stop_waiting:$($(e.basis.data)?.request)?.requestStatus===`awaiting_signature`?`request to stop wallet approval`:`request to stop checking the result`,disconnect:`wallet disconnect request`};return f?t[String(e.input.action)]??`request`:`data request`}function Se(e){if(e!==`past`||!C)return;let t=xe(C),n=C.input.action===`read_result`&&$($(y?.data)?.request)?.requestStatus===`outcome_unknown`?` To check this transaction again, ask to open its result in chat.`:``;return`Message from an earlier ${t}: “${C.message}”${n}`}let Ce,we;function Te(){let t=$(y?.data),n=p?$(t?.download):void 0,r=y?.state===`closed`,i=Array.isArray(n?.allowedFileActions)?n.allowedFileActions:[],a=r?[]:[...Array.isArray(t?.allowedActions)?t.allowedActions:[],...i.filter(e=>e===`settings_report_download`||Ce===void 0||Date.now()<Ce)],o=e===`review`&&t?.mode===`review`&&!t.request&&!!g&&y?.state===`ready`,s=o&&le!==void 0&&Date.now()>=le,c=document.visibilityState!==`hidden`,l=d.signal.aborted||S.status===`rejected`,u=S.status===`confirmed`,v=C?.disposition,b=v===`active`,ee=C?.retryRequired===!0,x=C?.input.action===`request_signature`&&v===`active`,ne=T===`paused`,re=pe?.pending?.()===!0,D=pe?.displayRecovery?.(),ue=u&&!l&&!oe&&!re&&!s&&!!g,de=ue&&!w&&!h&&(!m||!(ce&&(b||ee||ne))),fe=Ax.safeParse(t?.automaticAction),k=p?$(n?.localSave):void 0,me=!!y&&!r&&(m?t?.observe===!0||k?.status===`saving`:y.state===`running`),he=!!_&&te&&!l&&!ce&&c&&(E===`explicit`||S.status!==`read_failed`&&(E===`background`||S.status===`needed`&&S.automatic)),_e=c&&ue&&!ae&&!ce&&!E&&!w&&!ee&&!x&&!ne&&f&&fe.success&&a.includes(fe.data.action)?fe.data:void 0,ve=$(t?.restoreCheck),ye=p&&ue&&y?.state===`ready`&&!y.input.backupDelivery&&!w&&!h&&!t?.result&&t?.observe!==!0&&(ve?.status===`cannot_restore`&&[`operation_busy`,`wallet_request_unsettled`].includes(String(ve.reason))||!a.includes(`settings_select`)||!a.includes(`settings_download_backup`)||t?.phase===`prepared`&&!a.includes(`settings_confirm`)||t?.phase===`draft`&&$(t.draft)?.kind!==void 0&&$(t.draft)?.kind!==`import_local_data`&&!a.includes(`settings_prepare`)),we;!l&&_&&(S.status===`read_failed`||ae||S.status===`unconfirmed`?we=`read`:S.status===`needed`?S.automatic||(we=`read`):oe||D||!r&&p&&[`pending`,`failed`].includes(String(t?.temporaryFileCleanup))||!r&&(k?.status===`saving`||k?.status===`needs_consent`&&!a.includes(`settings_store_backup`)||k?.status===`failed`&&k.failure===`not_published`&&!n?.endReason&&!a.includes(`settings_store_backup`))||ye?we=`read`:g?!r&&$(t?.progress)?.status===`unavailable`||!r&&$(t?.walletAvailability)?.status===`initializing`&&$(t?.walletAvailability)?.stage===`state_sync`?we=`read`:!r&&!ne&&be()?we=`retry`:b&&(!m&&de&&y?.state===`ready`&&ge&&pe?.selectionRecovery?we=`selection`:!me&&!(ne&&a.length>0)&&!(C?.input.action===`prepare_review`&&a.includes(`prepare_review`)&&t?.automaticAction===void 0)&&f&&(we=`read`)):(y?.state!==`closed`||oe)&&(we=`read`));let Te=f?t?.actionRemainingMs:y?.inputRemainingMs;we===`retry`&&s&&(we=`read`);let Ee=r?void 0:f?t?.nextStateReadAfterMs:p&&Ce!==void 0?Math.max(0,Ce-O):void 0,De=[!r&&(f?a.length>0:y?.state===`ready`)?Te:void 0,Ee].filter(e=>typeof e==`number`&&Number.isFinite(e)&&e>0),Oe=!l&&!!g&&c&&!ie&&!ae&&S.status!==`read_failed`,ke=$(t?.review),Ae=o&&!l&&!ae&&!oe&&!b&&!ee&&!ne&&S.status!==`read_failed`&&(re||w?.input.action===`prepare_review`||ke?.preparing===!0||fe.success&&fe.data.action===`prepare_review`||S.status===`needed`&&ke?.status===`ready_for_wallet_review`);return{current:u,inputEnabled:de,permitted:a,disposition:v,read:he,auto:_e,recover:we,paused:ne,partialDisplayFailure:D,settingsInputBlocked:ye,reviewUpdatePending:Ae,reviewCommandDeliveryFailed:b&&C?.input.action===`prepare_review`,reviewHint:s?void 0:Ae?re||ke?.preparing||w?.input.action===`prepare_review`?`Updating review…`:`Checking status…`:o&&$(ke?.state)?.refreshReason===`review_evidence_stale`?`Review details are out of date.`:void 0,errors:[S.status===`rejected`?S.message:S.status===`read_failed`?`This card's status could not be checked. Reported message: “${S.message}”`:void 0,ae&&S.status!==`rejected`?`This card could not be opened. Reported message: “${ae}”`:void 0,b&&C?`Message for this ${xe(C)}: “${C.message}”`:void 0,oe,D?.message],note:[se,Se(v)].filter(Boolean).join(` `),expiryAt:Oe&&u&&De.length?O+Math.min(...De):void 0,poll:Oe&&(me||S.status===`needed`&&!S.automatic),lifetimeAt:!l&&c&&o?le:void 0}}function Ee(e){return e.recover===`retry`?C?.input.action===`connect`?`Retry connection`:`Retry review`:e.recover===`selection`?pe?.selectionRecovery?.label:e.recover===`read`?`Check status`:void 0}function De(e){if(d.signal.aborted)return``;let n=e.errors.some(Boolean)||e.recover!==void 0||!!y&&!g&&y.state!==`closed`||y?.state===`closed`&&y.reason!==`completed`,r=e.errors.some(Boolean)||S.status!==`confirmed`||e.recover===`retry`||e.settingsInputBlocked;if(n&&r&&S.status!==`rejected`){if(ce||e.read)return`Checking status…`;let t=Ee(e);if(e.recover===`selection`&&t)return`Use ${t} to try the current selection again.`;if(t)return t===`Check status`?oe||e.partialDisplayFailure?`Use Check status to read this card and try displaying it again.`:`Use Check status to read this card again.`:t===`Retry connection`?`Use Retry connection to try connecting your wallet again.`:`Use Retry review to try again with the displayed wallet and account.`}return t.guidance?.(y,{confirmed:e.current,readOnly:!g,recoveryNeeded:n,visibleConfirmation:pe?.visibleConfirmation?.(),commandPending:m&&w&&e.current&&!e.errors.some(Boolean)&&(w.phase===`confirming`||y?.state===`ready`&&!$(y.data)?.request&&!$($(y.data)?.review)?.preparing)?{phase:w.phase,action:String(w.input.action)}:void 0,approvalUnresolved:C?.input.action===`request_signature`&&e.disposition===`active`||w?.input.action===`request_signature`,automaticPaused:e.paused})??``}function Oe(e=Te()){return e.inputEnabled&&y?.state===`ready`&&ge}function ke(e,t=Te()){return y?.state!==`closed`&&m&&t.inputEnabled&&(e?t.permitted.includes(e.action):t.permitted.length>0)}function Ae(e){let t=Te();return p&&h&&t.current&&!!g&&!w&&!ce&&!oe&&!d.signal.aborted&&[`settings_begin_upload`,`settings_upload_chunk`,`settings_seal_upload`,`settings_retry_download`,`settings_report_download`,`settings_cancel_download`,`settings_store_backup`].includes(String(e.action))&&(t.permitted.includes(e.action)||e.action===`settings_report_download`)}function je(e){let u=$(y?.data),f=s.querySelector(`.review-action-feedback`),_=s.querySelector(`.review-primary-action`);if(f){let e=s.querySelector(`.review-lifetime`);e?(e.append(l),f.prepend(a)):f.prepend(l,a),f.append(o)}else n.insertBefore(a,s),n.insertBefore(l,c),n.insertBefore(o,l);a.className=f?`ui-note`:`ui-error`,y?(r.textContent=t.titleFor?.(y)??t.title,i.textContent=S.status===`rejected`?`Card unavailable`:!e.current&&y.state===`ready`?f?``:!d.signal.aborted&&(ce||e.read)?`Checking whether actions are available in this card…`:`Actions are unavailable until this card's status is checked.`:!g&&y.state!==`closed`?`View only.`:m?$(u?.progress)?.status===`unavailable`?`Current progress is unavailable. The last recorded state is shown.`:!u?.request&&y.state===`closed`&&[`expired`,`server_restarted`,`cancelled`].includes(y.reason??``)?`This card no longer accepts actions.`:``:y.state===`running`?`Reading the requested data…`:y.reason===`completed`?``:y.error??(y.reason===`expired`?`The time to make a selection has ended.`:y.reason===`server_restarted`?`This request ended when Sui MCP restarted.`:``)):i.textContent=ie?``:S.status===`read_failed`?`Card status unavailable`:ae||S.status===`rejected`?`Card unavailable`:`Opening card…`,i.hidden=!i.textContent,a.textContent=[...new Set(e.errors.filter(Boolean))].join(` `),a.hidden=!a.textContent;let v=s.querySelector(`.review-status`);if(v){let t=!!f&&(e.reviewUpdatePending||!!a.textContent);t?v.classList.add(`review-status--reserved`):v.classList.remove(`review-status--reserved`),v.setAttribute(`aria-hidden`,String(t))}let b=s.querySelector(`.review-material-status`);if(b&&(b.textContent=b.dataset.previous===`true`||!e.current||e.reviewUpdatePending?b.dataset.previousLabel??``:b.dataset.currentLabel??``),o.textContent=[e.note,De(e)].filter(Boolean).join(` `),o.hidden=!o.textContent,ge)for(let t of s.querySelectorAll(`input, button, select`))(!m||t.tagName!==`BUTTON`||t.dataset.cardAction!==void 0)&&(t.disabled=m?!ke(void 0,e):!Oe(e));if(m)for(let t of s.querySelectorAll(`[data-card-action]`))t.disabled=!ke({action:t.dataset.cardAction},e);if(p)for(let t of s.querySelectorAll(`[data-settings-file-action]`))t.disabled=t.dataset.settingsLocalBlocked===`true`||!(h?Ae({action:t.dataset.cardAction}):ke({action:t.dataset.cardAction},e));_&&(e.reviewUpdatePending||_.dataset.cardAction===`request_signature`&&e.reviewCommandDeliveryFailed||_.dataset.cardAction===void 0)&&(_.disabled=!0),k&&(k.disabled=!!w||!!ce)}function Me(e){try{e?.()}catch{oe=`The card display could not be closed cleanly. Its stored information is unchanged.`}}function Ne(e){if(!y||d.signal.aborted)return;if(y.state===`ready`&&S.status!==`confirmed`){if(p&&pe?.update)try{pe.update(y,{automaticPaused:T===`paused`,settings:Ge,settingsCommandProgress:void 0,onDisplayChange:()=>j()})}catch{oe=`This card could not be displayed. Its stored information is unchanged.`}return}let n=m?{...$(y.data),actionRemainingMs:void 0,nextStateReadAfterMs:void 0,...p&&$(y.data)?.download?{download:{...$($(y.data)?.download),remainingMs:void 0}}:{}}:void 0,r=p&&w?.phase===`sending`&&S.status===`confirmed`?jS(w.basis,y,w.input):void 0,i=`${T===`paused`}:${JSON.stringify(r)}:${y.revision}:${g!==void 0}:${b!==void 0}:${x!==void 0}:${JSON.stringify(n)}`;if(i===me||i===he&&!e)return;he=i;let a=[...s.children],o=new Set([...s.querySelectorAll(`details`)].filter(e=>e.open).map(e=>e.querySelector(`summary`)?.textContent)),c,l=!1,u=!1;try{let e={automaticPaused:T===`paused`,onDisplayChange:()=>j(),wallet:x,...p?{settings:Ge,settingsCommandProgress:r}:{}};if(pe?.update?.(y,e)){me=i,oe=void 0;return}if(y.state===`ready`&&g){let n=t.controls(y,e=>{Ue(e)},b,x,e);c=`node`in n?n:{node:n},l=!0}else(m||y.reason===`completed`)&&y.data!==void 0&&(c=t.result(y,b,g&&y.reason!==`cancelled`?e=>{Ue(e)}:void 0,x,e));s.replaceChildren(...c?[c.node]:[]),u=!0,c?.mount?.();for(let e of s.querySelectorAll(`details`))o.has(e.querySelector(`summary`)?.textContent)&&(e.open=!0)}catch{u&&s.replaceChildren(...a),Me(c?.dispose),oe=`This card could not be displayed. Its stored information is unchanged.`;return}let f=pe?.dispose;pe=c,ge=l,me=i,oe=void 0,Me(f)}function Pe(t,n,r,i,a){if(d.signal.aborted||S.status===`rejected`)return!1;if(t.kind!==e||t.cardId!==_)throw S={status:`rejected`,message:`The returned information does not match this card.`},Error(`The returned information does not match this card.`);let o=$(t.data),s=$(o?.request),c=$(s?.execution),l=o?.automaticAction===void 0?void 0:Ax.safeParse(o.automaticAction);if(l&&!l.success)throw Error(`This card could not start the next step.`);if(y&&t.revision<y.revision)return!1;if(y?.state===`closed`&&S.status===`confirmed`&&JSON.stringify(t)!==JSON.stringify(y))throw Error(`The completed card result cannot change.`);if(v&&[...new Set([...Object.keys(v),...Object.keys(t.input)])].some(e=>JSON.stringify(t.input[e])!==JSON.stringify(v[e])))throw S={status:`rejected`,message:`The returned information does not match this card.`},Error(`The returned information does not match this card.`);if(e===`review`&&($(o?.review)?.reviewSessionId!==void 0&&$(o?.review)?.reviewSessionId!==t.input.reviewSessionId||s&&(s.reviewSessionId!==t.input.reviewSessionId||t.input.attemptId!==void 0&&s.attemptId!==t.input.attemptId)||c&&(c.reviewSessionId!==s?.reviewSessionId||c.attemptId!==s?.attemptId||c.txDigest!==s?.transactionDigest)||$(o?.receipt)?.status===`found`&&$($(o?.receipt)?.receipt)?.txDigest!==s?.transactionDigest)||e===`receipt`&&o?.status===`found`&&$(o.receipt)?.txDigest!==t.input.digest)throw S={status:`rejected`,message:`The saved result does not match the information requested in this card.`},Error(S.message);!v&&(f||t.state!==`ready`)&&(v={...t.input});let u=r!==`preview`;if((!y||t.revision!==y.revision)&&(b=void 0,x=void 0),y=t,ye(),u){O=Date.now();let t=p?$(o?.download):void 0;if(t?.availability===`available`&&typeof t.remainingMs==`number`&&Number.isFinite(t.remainingMs)){let e=`${o?.operationId}:${$(o?.file)?.fileId}:${t.expiresAt}`;we!==e&&(we=e,Ce=void 0),Ce=Math.min(Ce??1/0,O+Math.max(0,t.remainingMs))}else p&&t?.availability===`ended`&&(Ce=void 0);g&&e===`review`&&o?.mode===`review`&&!o.request&&typeof o.actionRemainingMs==`number`&&Number.isFinite(o.actionRemainingMs)&&o.actionRemainingMs>=0&&(le=Math.min(le??1/0,O+o.actionRemainingMs))}return r===`read`&&(S.status!==`needed`||a>S.afterRead)&&(S={status:`confirmed`},ae=void 0),n&&(b=n),x=i,!0}function Fe(){ue!==void 0&&clearTimeout(ue),de!==void 0&&clearTimeout(de),fe!==void 0&&clearTimeout(fe),ue=void 0,de=void 0,fe=void 0,l.hidden=!0}function Ie(e){let t=Ee(e);k?.textContent!==t&&(k?.remove(),k=void 0,t&&(k=$h(t,()=>{if(ce||w||d.signal.aborted)return;let e=Te();if(e.recover===`selection`&&Oe(e))pe?.selectionRecovery?.retry();else if(e.recover===`retry`){let e=be();e&&He(e)}else A()})));let n=s.querySelector(`.review-primary-action`),r=s.querySelector(`.review-primary-slot`);n&&(n.hidden=!!k&&!!r),k&&(k.disabled=!!ce||!!w,r?(k.classList.add(`review-recovery-action`),r.append(k)):(k.classList.remove(`review-recovery-action`),c.append(k)))}async function A(){let e=pe,t=e?.displayRecovery?.(),n=await Re(!0);n?.kind===`accepted`&&y===n.snapshot&&S.status===`confirmed`&&!d.signal.aborted&&document.visibilityState!==`hidden`&&!oe&&e===pe&&t&&e?.displayRecovery?.()===t&&(t.retry(),j())}function j(e=!1){if(ie){let e=document.createElement(`p`);e.className=`ui-note`,e.textContent=ie,s.replaceChildren(e)}else Ne(e);let t=Te();if(je(t),Fe(),Ie(t),d.signal.aborted||S.status===`rejected`)return;t.expiryAt!==void 0&&(de=setTimeout(()=>{Le(),j()},Math.max(0,t.expiryAt-Date.now()))),t.reviewHint&&!a.textContent&&(l.replaceChildren(),l.textContent=t.reviewHint,l.setAttribute(`role`,`status`),l.hidden=!1);let n=s.querySelector(`.review-time-remaining`);if(n&&t.lifetimeAt!==void 0){let e=t.lifetimeAt,r=()=>{if(d.signal.aborted)return;let t=Math.max(0,e-Date.now()),i=Math.ceil(t/1e3);if(n.textContent=t>0?`Review expires in ${Math.floor(i/60)}:${String(i%60).padStart(2,`0`)}`:`Review time elapsed`,t>0)fe=setTimeout(r,Math.min(1e3,t));else{let e=Te();je(e),Ie(e)}};r()}if(t.poll&&y){let e=O+y.pollAfterMs-Date.now();ue=setTimeout(()=>{Re(!1)},e>0?e:y.pollAfterMs)}t.read?(E=void 0,ze()):t.auto&&(ue=setTimeout(()=>{let e=Te().auto;e&&We(e,`automatic`)},0))}function Le(){S.status!==`rejected`&&S.status!==`read_failed`&&(S={status:`needed`,afterRead:D,automatic:!0})}function Re(e){return d.signal.aborted||S.status===`rejected`||!_||!te?Promise.resolve(void 0):ce?ce.promise:S.status===`read_failed`&&!e?Promise.resolve(void 0):(E=e?`explicit`:`background`,j(),ce?.promise??Promise.resolve(void 0))}function ze(){let e=++D,t=performance.now(),n={id:e,promise:Promise.resolve().then(async()=>{try{let n,r,i;if(g){let e=LS(await Be(kS.read,{...g}));if(!e.snapshot)throw Error(e.error??`Saved card data is unavailable.`);if(e.error)throw Error(e.error);n=e.snapshot,r=e.display,i=e.wallet}else{let e=`${CS}${encodeURIComponent(_)}`,t=(await u.readServerResource({uri:e},{signal:d.signal})).contents.find(t=>t.uri===e&&`text`in t);if(!t||!(`text`in t))throw Error(`Saved card data is unavailable.`);n=_S.parse(JSON.parse(t.text));let i=b??ee;r=i&&FS(n,i)?i:void 0}if(d.signal.aborted||S.status===`rejected`)return{kind:`disposed`,id:e};let a=Pe(n,r,`read`,i,e);return ee=void 0,!a&&S.status===`needed`&&e>S.afterRead&&(S={...S,automatic:!1}),j(a),a&&S.status===`confirmed`?{kind:`accepted`,snapshot:n,id:e,requestStartedAt:t}:{kind:`ignored`,id:e}}catch(t){return d.signal.aborted?{kind:`disposed`,id:e}:(S.status!==`rejected`&&(S={status:`read_failed`,message:t instanceof Error?t.message:`Saved card data could not be read. The last displayed result is unchanged.`}),{kind:`failed`,id:e})}}).finally(()=>{ce===n&&(ce=void 0),j()})};ce=n,j()}async function Be(e,t){return PS(await u.callServerTool({name:e,arguments:t},{signal:d.signal}))}function Ve(e,t,n){let r=zx.safeParse(n.data);if(!r.success||!r.data.allowedActions.some(t=>t===e.action))return!1;let i=r.data,a=$(t.data);return e.walletRunId&&e.walletRunId!==i.walletAvailability.walletRunId?!1:e.action===`connect`?i.kind===`connect`&&JSON.stringify(e.chains)===JSON.stringify(i.requestedChains):e.action===`prepare_review`||e.action===`request_signature`?i.kind===`review`&&i.review.reviewRevision===e.reviewRevision&&i.reviewTarget?.account===e.account&&i.reviewTarget?.connectionId===e.connectionId:e.action===`disconnect`?i.kind===`disconnect`&&i.connection?.connectionId===e.connectionId&&i.connection?.disconnectImpact?.impactId===e.impactId:e.action===`stop_connection`?i.kind===`connect`&&i.operation?.operationId===e.operationId&&i.operation?.status===`running`:JSON.stringify(t.input)===JSON.stringify(n.input)&&(i.kind!==`review`||i.request?.attemptId===$(a?.request)?.attemptId&&i.review.reviewRevision===$(a?.review)?.reviewRevision)}async function He(e){if(!y||ce||!ke(e))return;let t={input:e,basis:y,phase:`confirming`};w=t;let n=await Re(!1);w===t&&(w=void 0,n?.kind===`accepted`&&y===n.snapshot&&S.status===`confirmed`&&!d.signal.aborted&&document.visibilityState!==`hidden`&&Ve(e,t.basis,n.snapshot)&&ke(e)?await We(e):S.status!==`read_failed`&&S.status!==`rejected`&&!d.signal.aborted&&(se=`The card state changed. Check the current selection before trying again.`),j())}async function Ue(e){f&&(C?.disposition===`active`||C?.retryRequired||T===`paused`)?await He(e):await We(e)}function M(e,t,n){C={input:e.input,basis:e.basis,message:t,delivery:n,disposition:`active`,retryRequired:e.input.action===`connect`||e.input.action===`prepare_review`},ye(),[`cancel`,`disconnect`,`stop_connection`,`stop_waiting`].includes(String(e.input.action))&&(T=`paused`),(m||n===`unknown`)&&Le()}async function We(e,t=`user`){if(!y||!g||(t===`file`?!Ae(e):m?!ke(e):!Oe()))return;let n={input:e,basis:y,phase:`sending`};w=n,T=`continue`,(t===`user`||C?.disposition!==`past`)&&(C=void 0),se=void 0,j();try{let t=LS(await Be(m?kS.act:kS.submit,{...g,revision:n.basis.revision,input:e}));if(d.signal.aborted||S.status===`rejected`)return;if(!t.snapshot)throw Error(t.error??`The request could not be confirmed.`);t.error&&M(n,t.error,`rejected`),Pe(t.snapshot,t.display,`action`,t.wallet)}catch(e){!d.signal.aborted&&S.status!==`rejected`&&(M(n,e instanceof Error?e.message:`The request could not be confirmed.`,`unknown`),C&&(C.data=$(e)?.data))}finally{w===n&&(w=void 0),j()}}let Ge={uploadChunkLimit(e,t){return g?pS({jsonrpc:`2.0`,id:2**53-1,method:`tools/call`,params:{name:kS.act,arguments:{...g,revision:2**53-1,input:{action:`settings_upload_chunk`,operationId:e,fileId:t,offset:2**53-1,chunkBase64:``}}}})??0:0},async readCurrent(){let e=await Re(!0);if(e?.kind!==`accepted`)throw Error(`The current Settings selection could not be checked. Use Check status before continuing.`);return{snapshot:e.snapshot,requestStartedAt:e.requestStartedAt}},async act(e,t=!1){if(t?!Ae(e):!ke(e))throw Error(`This Settings action is unavailable until its current status has been checked.`);if(await We(e,t?`file`:`user`),d.signal.aborted)throw Error(`This card closed before the request finished. Reopen the same conversation to check its status.`);if(C?.input===e){let e=Error(C.message);throw e.data=C.data,e}if(!y)throw Error(`The current Settings status could not be checked.`);return y},setFileTransferActive(e){h=e,j()},async readFile(e){if(!g||!_||!Te().current||d.signal.aborted)throw Error(`Backup read permission is unavailable.`);let t=await Be(kS.readSettingsFile,{...g,...e}),n=OS.parse($(t._meta)?.[SS]);if(n.cardId!==_||n.operationId!==e.operationId||n.fileId!==e.fileId||n.offset!==e.offset||n.attemptId!==e.attemptId)throw Error(`The backup response does not match this card's selected file.`);return n},download:async(e,t,n)=>{let r=$($(y?.data)?.download);if(!g||!Te().current||d.signal.aborted||document.visibilityState===`hidden`||!r||r.currentAttemptId!==n||r.localSave||r.availability!==`available`||Ce===void 0||Date.now()>=Ce)throw Error(`This download is no longer available in this card.`);try{return{isError:(await u.downloadFile({contents:[{type:`resource`,resource:{uri:`file:///${encodeURIComponent(e)}`,mimeType:`application/json`,blob:t}}]},{signal:d.signal})).isError}}catch(e){if(e&&typeof e==`object`&&`code`in e&&e.code===-32601)return{unsupported:!0};throw e}}};async function Ke(){if(te&&re!==void 0&&!ne){ne=!0;try{let t=PS(re),n=$(t._meta);if(t._meta!==void 0&&!n)throw Error(`This card cannot accept actions with the access information provided by the app.`);let r=n?.[yS];if(r!==void 0){let e=TS.safeParse(r);if(!e.success)throw Error(`This card cannot accept actions with the access information provided by the app.`);g=e.data}let i=LS(t);if(i.inputRequired){if(i.inputRequired.kind!==e||g)throw Error(`The app provided inconsistent card input information.`);ie=i.inputRequired.message,j();return}let a=IS(t),o=[i.snapshot?.cardId,g?.cardId,a].filter(e=>e!==void 0);if(!o.length)throw Error(`Card data is unavailable.`);if(o.some(e=>e!==o[0])||i.snapshot&&i.snapshot.kind!==e)throw S={status:`rejected`,message:`The returned information does not match this card.`},Error(S.message);_=o[0];let s=i.snapshot;s&&(f||s.state!==`ready`)&&(v={...s.input}),ee=i.display,s&&g&&Pe(s,i.display,`preview`,i.wallet),Le(),j()}catch(e){if(d.signal.aborted)return;ae=e instanceof Error?e.message:`Card data could not be read.`,j()}}}u.ontoolresult=e=>{if(re===void 0)re=e,Ke();else try{let t=LS(PS(re)).snapshot??y,n=LS(PS(e)).snapshot;if(t&&n&&(t.cardId!==n.cardId||t.kind!==n.kind))throw Error(`The app returned a different card.`)}catch{S={status:`rejected`,message:`The returned information does not match this card.`},j()}},u.onhostcontextchanged=e=>{e.theme&&(document.documentElement.dataset.theme=e.theme)};let qe=()=>{document.visibilityState!==`hidden`&&g&&ne&&S.status!==`read_failed`&&y?.state!==`closed`?Re(!1):j()};document.addEventListener?.(`visibilitychange`,qe),u.onteardown=async()=>{if(d.signal.aborted)return{};d.abort(),w=void 0,document.removeEventListener?.(`visibilitychange`,qe);let e=pe?.dispose;return pe=void 0,Me(e),j(),{}},u.connect().then(()=>{d.signal.aborted||(te=!0,document.documentElement.dataset.theme=u.getHostContext()?.theme??`light`,Ke())}).catch(()=>{d.signal.aborted||(ae=`Could not connect this card to the app.`,j())})}function zS(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t)}function BS(e){let t=atob(e),n=Uint8Array.from(t,e=>e.charCodeAt(0));if(zS(n)!==e)throw Error(`Part of the backup could not be read correctly.`);return n}async function VS(e,t,n,r,i){if(e.size>16777216)throw Error(`This backup exceeds the 16 MiB limit. Choose a smaller backup.`);let a=n();t.setFileTransferActive(!0);try{r()&&i?.({...a,stage:`reading`});let n=new Uint8Array(await e.arrayBuffer()),o=r_(mv(n));if(!r())return;i?.({...a,stage:`receiving`,sha256:o});let s=await t.act({action:`settings_begin_upload`,operationId:a.operationId,name:e.name,totalSize:n.length,sha256:o},!0),c=lS.parse(s.data),l=c.file?.receivedSize??0,u=c.file?.fileId;if(!u||c.operationId!==a.operationId||c.file?.sha256!==o||c.file.totalSize!==n.length)throw Error(`The file being received does not match your selection. Choose the backup file again.`);r()&&i?.({...a,stage:`receiving`,fileId:u,sha256:o});let d=t.uploadChunkLimit(a.operationId,u);for(;r()&&l<n.length;){if(d<1)throw Error(`This app cannot send the backup within its message size limit. Try opening Settings in another supported app.`);let e=Math.min(d,n.length-l),r={action:`settings_upload_chunk`,operationId:a.operationId,fileId:u,offset:l,chunkBase64:zS(n.subarray(l,l+e))};try{s=await t.act(r,!0)}catch(n){let r=n&&typeof n==`object`&&`data`in n?n.data:void 0;if(r?.code!==`settings_payload_too_large`||typeof r.rawChunkLimit!=`number`||!Number.isSafeInteger(r.rawChunkLimit)||r.rawChunkLimit<1||r.rawChunkLimit>=e)throw n;let i=lS.parse((await t.readCurrent()).snapshot.data);if(i.file?.fileId!==u||i.file.receivedSize!==l)throw Error(`The file transfer changed after a message was rejected. Choose the same file again to check how much was received.`);d=r.rawChunkLimit;continue}if(c=lS.parse(s.data),c.operationId!==a.operationId||c.file?.fileId!==u||c.file.sha256!==o||c.file.receivedSize!==l+e)throw Error(`The file transfer could not be confirmed. Choose the same file again to continue.`);l=c.file.receivedSize}r()&&(i?.({...a,stage:`checking`,fileId:u,sha256:o}),await t.act({action:`settings_seal_upload`,operationId:a.operationId,fileId:u},!0))}finally{t.setFileTransferActive(!1)}}async function HS(e,t,n,r){n(`pending`);let i;try{i=new Uint8Array(e.totalSize);let n=0;for(;n<i.length&&r();){let r=await t.readFile({operationId:e.operationId,fileId:e.fileId,offset:n,attemptId:e.attemptId}),a=BS(r.chunkBase64);if(r.totalSize!==i.length||r.sha256!==e.sha256||!a.length||n+a.length>i.length)throw Error(`Part of the downloaded backup does not match the original file.`);i.set(a,n),n+=a.length}if(!r())return;if(n!==i.length||r_(mv(i))!==e.sha256)throw Error(`The complete downloaded backup could not be checked against the original file.`)}catch{if(r())try{await t.readCurrent()}catch{}return r()&&n(`backup_unverified`),`backup_unverified`}try{let n=await t.readCurrent(),i=lS.parse(n.snapshot.data);if(!r()||i.operationId!==e.operationId||i.file?.fileId!==e.fileId||i.file.sha256!==e.sha256||i.file.totalSize!==e.totalSize||i.download?.currentAttemptId!==e.attemptId||i.download.localSave||i.download.availability!==`available`||!i.download.remainingMs)return;if(i.download.remainingMs<=Math.max(0,performance.now()-n.requestStartedAt)){try{await t.readCurrent()}catch{}return}}catch{return r()&&n(`backup_unverified`),`backup_unverified`}try{if(!r())return;let a=await t.download(e.displayName,zS(i),e.attemptId),o=a.unsupported===!0?`unsupported`:a.isError===!0?`not_completed`:`acknowledged`;return r()&&n(o),o}catch{return r()&&n(`unconfirmed`),`unconfirmed`}}var US={set_endpoint:`Change network address`,restore_endpoint:`Use default network address`,set_wallet_networks:`Wallet networks`,clear_read_address:`Clear saved read address`,download_backup:`Backup`,import_local_data:`Restore`,reset_local_data:`Reset`,restart_wallet_service:`Connection service restart`},WS={overview:`Settings`,address:`Address for viewing assets`,networks:`Wallet networks`,records:`Local records`,troubleshooting:`Troubleshooting`,advanced:`Advanced settings`},GS={address:`Clear the saved address used for implicit asset reads.`,networks:`Choose the networks to request when connecting a wallet.`,records:`Back up, restore or delete records saved on this computer.`,troubleshooting:`Check or restart the wallet connection service.`,advanced:`Change the Sui network addresses used to retrieve data and send transactions.`},KS=`Local records are saved addresses, reviews, transaction and activity records, wallet network choices, and Sui network settings on this computer. They do not include wallet keys, wallet connections or wallet approvals.`,qS=`Fully quit every app using Sui MCP, then reopen them. Closing a window or quitting only one app may leave Sui MCP running.`,JS={available:`Ready`,initializing:`Starting`,recovering:`Restarting`,unavailable:`Unavailable`},YS={environment:`App launch settings`,local_db:`Saved in Sui MCP`,builtin_default:`Built-in default`},XS={connected:`Connected`,awaiting_approval:`Waiting for wallet approval`,rejected:`Rejected`,failed:`Failed`,expired:`Expired`,stopped:`Stopped`,disconnected:`Disconnected`},ZS=[[`accounts`,`Saved addresses`],[`reviewSessions`,`Reviews`],[`reviewRequests`,`Transaction requests`],[`outcomeUnknownRequests`,`Transaction requests with unconfirmed results`],[`externalActivityTransactions`,`Activity records`],[`localSettings`,`Saved network settings`]],QS={set_endpoint:`Save network address?`,restore_endpoint:`Use default network address?`,set_wallet_networks:`Save selected networks?`,clear_read_address:`Clear saved read address`,download_backup:`Download backup`,import_local_data:`Restore available`,reset_local_data:`Reset local data?`,restart_wallet_service:`Restart connection service?`},$S={set_endpoint:`Save network address`,restore_endpoint:`Use default network address`,set_wallet_networks:`Save networks`,clear_read_address:`Clear saved read address`,download_backup:`Download backup`,import_local_data:`Restore local records`,reset_local_data:`Reset local data`,restart_wallet_service:`Restart connection service`};function eC(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function tC(e){return e===`clear_read_address`?`address`:e===`set_wallet_networks`?`networks`:e===`set_endpoint`||e===`restore_endpoint`?`advanced`:e===`restart_wallet_service`?`troubleshooting`:e?`records`:`overview`}function nC(e,t,n){let r=eC(t);e.append(J(`h3`,void 0,n));for(let[t,n]of ZS)typeof r[t]==`number`&&e.append(Y(n,String(r[t])))}function rC(e,t,n){let r=lS.parse(e.data),i=e,a=r.draft?{kind:`operation`,operation:r.draft.kind}:{kind:`section`,page:`overview`},o=!1,s,c=n?.settings,l=n?.onDisplayChange,u,d=!1,f,p=n?.settingsCommandProgress,m,h,g,_,v,y=J(`div`,`settings-card`),b=(e,n,r=`secondary`)=>{let i=$h(e,()=>{!o&&!d&&t?.(n)},r);return i.dataset.cardAction=String(n.action),i},ee=(e,t)=>{let n=$h(e,()=>{if(o)return;let e=a.kind===`section`?a.page:tC(a.operation);a=t,w(),(t.kind===`section`&&t.page===`overview`?[...y.querySelectorAll(`.settings-menu-item`)].find(t=>t.dataset.settingsPage===e):y.querySelector(`.settings-back`))?.focus(),l?.()},`secondary`);return n.setAttribute(`aria-label`,e),n.dataset.settingsPage=t.kind===`section`?t.page:tC(t.operation),n},x=(e,n,i=!1,s=!1)=>{let c=$h(e,()=>{o||d||(!s&&n.kind===`import_local_data`&&r.draft&&JSON.stringify(r.draft)===JSON.stringify(n)?(a={kind:`operation`,operation:n.kind},w(),l?.()):(u=void 0,t?.({action:`settings_select`,draft:n})))},i?`danger`:`secondary`);return c.dataset.cardAction=`settings_select`,c};function te(e,t,n){let r=J(`div`,`settings-choice`),i=J(`div`,`settings-choice-copy`);return i.append(J(`h3`,void 0,e),J(`p`,`ui-note`,t)),r.append(i,n),r}function ne(e){let t=J(`div`,`settings-action-row`);return t.setAttribute(`aria-label`,`Settings operation actions`),t.append(e),t}async function re(){if(!c||!h||o)return;let e=h;g=void 0,c.setFileTransferActive(!0);try{await c.act({action:`settings_report_download`,...e},!0),h===e&&(h=void 0)}catch{!o&&h===e&&(g={message:`The download response could not be recorded. Check status to record the same response without downloading again.`,retry:()=>{h===e&&re()}})}finally{o||(c.setFileTransferActive(!!m),w(),l?.())}}function ie(){let e=m;if(!c||o||!e||e.phase!==`waiting`||r.download?.availability!==`available`||r.download.localSave||r.download.currentAttemptId!==e.attemptId||!r.file)return;e.phase=`sending`;let t={operationId:r.operationId,...r.file,attemptId:e.attemptId};HS(t,c,t=>{m!==e||o||(f=t,w(),l?.())},()=>!o&&m===e&&document.visibilityState!==`hidden`&&r.download?.currentAttemptId===e.attemptId&&r.download.availability===`available`).then(async e=>{!o&&e&&[`acknowledged`,`not_completed`,`unconfirmed`,`unsupported`,`backup_unverified`].includes(e)&&(h={operationId:t.operationId,fileId:t.fileId,attemptId:t.attemptId,status:e===`backup_unverified`?`not_sent`:e,...e===`unsupported`?{failure:{method:`ui/download-file`,code:-32601}}:{}},await re())}).finally(()=>{m===e&&(m=void 0,d=!1),o||(c?.setFileTransferActive(!!m),w(),l?.())})}function S(e){if(!c||!t||o||m||d)return;let n=crypto.randomUUID(),i={attemptId:n,phase:`admitting`},a=e&&r.file&&r.download?{action:`settings_retry_download`,operationId:r.operationId,fileId:r.file.fileId,previousAttemptId:r.download.currentAttemptId,attemptId:n}:{action:`settings_download_backup`,operationId:r.operationId,attemptId:n};m=i,d=!0,f=void 0,h=void 0,g=void 0,w(),l?.(),e&&c.setFileTransferActive(!0),c.act(a,e).then(()=>{o||m!==i||(i.phase=`waiting`,c?.setFileTransferActive(!0),w(),l?.(),ie())}).catch(()=>{m===i&&(m=void 0,d=!1),o||(c?.setFileTransferActive(!1),w(),l?.())})}function ae(e,t,n,r=!1){let i=$h(e,n,`secondary`);return i.dataset.cardAction=t,t!==`settings_download_backup`&&(i.dataset.settingsFileAction=`true`),r&&(i.dataset.settingsLocalBlocked=`true`),i.disabled=r,i}function oe(e){let n=r.download,i=r.draft?.kind===`download_backup`?r.file:void 0;if(!se(e)){let r=n?.endReason===`acknowledged`?`Download requested`:n?.endReason===`cancelled`?`Download cancelled`:n?.endReason?`Download ended`:m?n?.availability===`available`?`Downloading backup…`:`Preparing backup…`:n?.hostReport===`not_completed`?`Download not completed`:n?.hostReport===`unconfirmed`?`Download unconfirmed`:`Backup ready`;e.append(J(`h2`,void 0,r)),n?.endReason===`acknowledged`?e.append(J(`p`,`ui-note`,`The app accepted the download request. This does not confirm that the file was saved or where it was saved.`)):n?.endReason===`cancelled`?e.append(J(`p`,`ui-note`,`No further download will be sent from this request. This does not close a save dialog or delete a file already saved by the app.`)):n?.endReason?e.append(J(`p`,`ui-note`,n.endReason===`expired`?`The time to download this backup has ended. Open a new Settings card to download the current records.`:`This backup can no longer be downloaded. Open a new Settings card to try again.`)):n?.hostReport===`not_completed`?e.append(J(`p`,`ui-note`,`The app did not complete the download request. It did not report whether it was cancelled, refused or failed.`)):(n?.hostReport===`unconfirmed`||n?.previousUnconfirmed||!m&&!h&&n?.availability===`available`&&!n.hostReport&&f!==`backup_unverified`)&&e.append(J(`p`,`ui-note`,`The previous download could not be confirmed.`+(t&&n?.allowedFileActions.includes(`settings_retry_download`)?` Retrying may save another copy if the app already handled it.`:``))),f===`backup_unverified`&&e.append(J(`p`,`ui-note`,`The backup could not be read or checked. Nothing was sent to the app for download.`)),i?.sealed&&(e.append(Y(`Suggested file name`,i.displayName),Y(`File size`,`${i.totalSize.toLocaleString(`en-US`)} bytes`)),i.totalSize>16777216&&e.append(J(`p`,`ui-note`,`This backup exceeds the 16 MiB restore limit.`))),t&&c&&!m&&!h&&n?.allowedFileActions.includes(`settings_retry_download`)&&e.append(ae(`Retry download`,`settings_retry_download`,()=>S(!0)))}t&&c&&r.file&&n?.allowedFileActions.includes(`settings_cancel_download`)&&e.append(ae(`Cancel download`,`settings_cancel_download`,()=>{if(!c||o||!r.file||!r.download)return;m=void 0,d=!1,f=void 0;let e={action:`settings_cancel_download`,operationId:r.operationId,fileId:r.file.fileId,attemptId:r.download.currentAttemptId};c.setFileTransferActive(!0),c.act(e,!0).catch(()=>{}).finally(()=>{o||(c?.setFileTransferActive(!1),w(),l?.())})})),(r.temporaryFileCleanup===`pending`||r.temporaryFileCleanup===`failed`)&&e.append(J(`p`,`ui-error`,`Temporary-file cleanup has not been confirmed. Use Check status to check the same request.`)),!t&&n?.localSave?.status!==`saved`?e.append(J(`p`,`ui-note`,`To download a backup, ask in chat to open a new Settings card.`)):n?.availability===`ended`&&e.append(J(`p`,`ui-note`,`To download the current records again, ask in chat to open a new Settings card.`))}function se(e){let n=r.download,i=n?.localSave,a=r.file;if(!n||!i||i.status!==`saved`&&i.status!==`saving`&&n.endReason&&n.endReason!==`local_save_failed`)return!1;if(e.append(J(`h2`,void 0,i.status===`saved`?`Backup saved`:i.status===`saving`?`Saving backup…`:i.status===`needs_consent`?`Save a local copy?`:`Backup not saved`)),i.status===`saved`&&r.backupLocation){let t=J(`div`,`settings-backup-location`);t.append(Y(`Folder`,J(`span`,`settings-path`,r.backupLocation.directory)),Y(`File name`,J(`span`,`settings-path`,r.backupLocation.filename))),e.append(J(`p`,`ui-note`,`The backup was saved in the Sui MCP backup folder on this computer.`),t)}else i.status===`saving`?e.append(J(`p`,`ui-note`,`Wait while this backup is saved and checked. Use Check status to check the same request.`)):i.status===`failed`&&e.append(J(`p`,`ui-error`,i.failure===`target_conflict`?`The backup location already contains an item or could not be verified. It has not been replaced.`:i.failure===`not_published`?`The backup could not be saved. You can retry saving the same backup.`:`The backup could not be verified for saving. Open a new Settings card to try again.`));return i.status!==`saved`&&i.status!==`saving`&&n.previousUnconfirmed&&e.append(J(`p`,`ui-note`,`An earlier request may already have saved this backup. Saving a local copy may leave another copy.`)),a&&(i.status!==`saved`&&e.append(Y(`Suggested file name`,a.displayName)),e.append(Y(`File size`,`${a.totalSize.toLocaleString(`en-US`)} bytes`)),a.totalSize>16777216&&e.append(J(`p`,`ui-note`,`This backup exceeds the 16 MiB restore limit.`))),t&&c&&n.allowedFileActions.includes(`settings_store_backup`)&&e.append(ae(i.status===`needs_consent`?`Save a local copy`:`Retry save`,`settings_store_backup`,()=>{if(!c||o||d||!r.file||!r.download)return;let e=r.download.localSave,t={action:`settings_store_backup`,operationId:r.operationId,fileId:r.file.fileId,attemptId:r.download.currentAttemptId,saveAttemptId:crypto.randomUUID(),allowPossibleCopy:r.download.previousUnconfirmed,...e?.currentSaveAttemptId?{previousSaveAttemptId:e.currentSaveAttemptId}:{}};d=!0,c.setFileTransferActive(!0),w(),l?.(),c.act(t,!0).catch(()=>{}).finally(()=>{d=!1,o||(c?.setFileTransferActive(!1),w(),l?.())})},d)),!0}function C(e,t,n,i){let a=ag(`Details`);if(r.facts&&a.body.append(Y(`Version`,r.facts.server.version)),a.body.append(Y(`Settings request ID`,og(r.operationId))),i&&i.kind===r.draft?.kind&&r.file&&a.body.append(Y(`File SHA-256`,og(r.file.sha256))),i&&[`download_backup`,`import_local_data`,`reset_local_data`].includes(i.kind)&&a.body.append(J(`p`,`ui-note`,`Local backups do not contain wallet keys, wallet connections, wallet approvals, access granted to cards, transaction bytes or signatures.`)),i?.kind===`import_local_data`&&r.preparation?.preview){let e=eC(r.preparation.preview);nC(a.body,e.currentCounts,`Checked local records`),nC(a.body,e.incomingCounts,`Backup records`)}if(t===`advanced`&&r.facts)for(let[e,t,n]of[[`grpc`,`Sui node`,r.facts.localSettings.suiGrpcUrl],[`graphql`,`Activity data`,r.facts.localSettings.suiGraphqlUrl]])(!i||i.kind!==`set_endpoint`&&i.kind!==`restore_endpoint`||i.endpoint===e)&&(a.body.append(J(`h3`,void 0,t),Y(`Saved network address`,n.storedValue),Y(`Network address in use`,n.effectiveValue),Y(`Set by`,YS[n.source])),n.pendingStoredValue&&a.body.append(Y(`Network address saved for next restart`,n.pendingStoredValue)));if(n){a.body.append(J(`h3`,void 0,`Connection and transaction request records`)),typeof r.preparation?.walletRunId==`string`&&a.body.append(Y(`Service run ID`,og(r.preparation.walletRunId)));for(let e of n.connections)a.body.append(Y(`${e.walletName??`Wallet`} connection ID`,og(e.connectionId)));for(let e of n.requests)a.body.append(Y(`Transaction request ID`,og(e.attempt_id)),Y(`Recorded request status`,e.request_status))}e.append(a.details)}function w(e=!1){let n=y.querySelector(`details`)?.open===!0,f=e?[...y.querySelectorAll(`input`)].filter(e=>e.type!==`file`).map(e=>e.value):void 0,h=ig();if(i.state===`closed`){let e=r.download?.localSave?.status===`saved`?`Backup saved`:r.download?.hostReport===`acknowledged`?`Download requested`:r.download?.hostReport===`not_completed`?`Download not completed`:r.download?.hostReport===`unconfirmed`?`Download unconfirmed`:r.download?.hostReport===`not_sent`?`Backup not sent`:r.download?.endReason===`cancelled`?`Download cancelled`:r.download?.endReason?`Download ended`:void 0;if(h.append(J(`h2`,void 0,e??(r.draft?US[r.draft.kind]:`Settings result`)),J(`p`,r.result?.outcome===`failed`?`ui-error`:`ui-note`,r.result?.message??`Status recorded. This card cannot apply changes.`),Y(`Recorded at`,sg(r.result?.recordedAt??i.createdAt))),i.input.operationStatus){let e={draft:`Not confirmed`,uploading:`Receiving a backup`,sealed:`Backup received`,prepared:`Awaiting confirmation`,executing:r.download?`Backup delivery in progress`:`Applying change`,stopping:`Stopping connection service`,starting:`Starting connection service`,terminal:`Finished`};h.append(Y(`Status checked at`,sg(i.createdAt)),Y(`Operation`,e[r.phase]))}r.download&&h.append(Y(`Backup delivery`,r.download.localSave?.status??r.download.hostReport??r.download.availability)),r.backupLocation&&h.append(Y(`Backup folder`,r.backupLocation.directory),Y(`File name`,r.backupLocation.filename));let t=eC(r.result?.details),n=C_.safeParse(t.walletConnectionChains);n.success&&h.append(Y(`Saved networks`,n.data.map(e=>T_[e]).join(`, `)||`None`)),typeof t.storedValue==`string`&&(h.append(Y(t.endpoint===`grpc`?`Saved Sui node address (gRPC)`:`Saved activity data address (GraphQL)`,t.storedValue)),typeof t.effectiveValueAtSave==`string`&&h.append(Y(`Network address in use when saved`,t.effectiveValueAtSave)),h.append(J(`p`,`ui-note`,t.effectiveSourceAtSave===`environment`?`The app launch settings override this saved address. Remove that launch setting and restart all apps using Sui MCP to use the saved address.`:`To use the saved network address, `+qS))),r.temporaryFileCleanup&&r.temporaryFileCleanup!==`complete`&&h.append(J(`p`,`ui-note`,`Temporary-file cleanup was not confirmed when this result was recorded. Ask in chat for a new Settings status card to check the same request.`)),r.file&&(h.append(Y(r.draft?.kind===`download_backup`?`Suggested file name`:`Backup file`,r.file.displayName),Y(`File size`,`${r.file.totalSize.toLocaleString(`en-US`)} bytes`)),r.draft?.kind===`download_backup`&&r.file.totalSize>16777216&&h.append(J(`p`,`ui-note`,`This backup exceeds the 16 MiB restore limit.`))),h.append(J(`p`,`ui-note`,`To make another change or try delivery again, ask in chat for a new card.`)),C(h,r.draft?tC(r.draft.kind):`overview`,void 0,r.draft),y.replaceChildren(h);return}let g=p&&i.state===`ready`&&p.cardId===i.cardId&&p.operationId===r.operationId&&(p.kind===`backup_check_response`?r.draft?.kind===`import_local_data`&&p.fileId===r.file?.fileId:p.kind===`selection_response`||JSON.stringify(p.draft)===JSON.stringify(r.draft))?p:void 0,re=r.result||r.restoreCheck?.status===`can_restore`||r.restoreCheck?.status===`cannot_restore`&&[`invalid_backup`,`file_unavailable`,`input_unavailable`].includes(r.restoreCheck.reason),ie=r.restoreCheck?.status===`checking`||!re&&(g?.kind===`backup_check_response`||v?.progress?.stage===`checking`),se=[`executing`,`stopping`,`starting`].includes(r.phase)||ie,T=r.draft?.kind===`import_local_data`&&r.restoreCheck?.status===`can_restore`,ce=m?.phase===`admitting`,E=ce?`progress`:r.result?`result`:se?`progress`:a.kind===`section`?`section`:r.phase===`prepared`&&(r.draft?.kind!==`import_local_data`||T)?`confirmation`:`input`,D=a.kind===`section`?a.page:tC(a.operation),O=ce?{kind:`download_backup`}:E===`section`?void 0:r.draft,le=O?tC(O.kind):D,ue=O?.kind===`restart_wallet_service`&&r.preparation?.impact?rv.parse(r.preparation.impact):void 0,de=E===`result`||E===`progress`?_??2:E===`confirmation`?3:E===`input`?2:le===`overview`?0:1;h.classList.add(`settings-page`),_!==void 0&&de!==_&&h.classList.add(de>_?`settings-page--forward`:`settings-page--back`),_=de;let fe=J(`nav`,`settings-toolbar`);if(fe.setAttribute(`aria-label`,`Settings navigation`),y.dataset.settingsPage=le,E===`confirmation`&&O&&t&&r.allowedActions.includes(`settings_back`)){let e=`Back to ${O.kind===`import_local_data`?US[O.kind]:WS[le]}`,n=$h(e,()=>{o||d||(a=O.kind===`import_local_data`?{kind:`operation`,operation:O.kind}:{kind:`section`,page:le},t({action:`settings_back`,operationId:r.operationId}))},`secondary`);n.dataset.cardAction=`settings_back`,n.setAttribute(`aria-label`,e),n.classList.add(`settings-back`),fe.append(n)}else if(E===`input`&&O&&t){let e=ee(`Back to ${WS[le]}`,{kind:`section`,page:le});e.classList.add(`settings-back`),fe.append(e)}else if(E===`section`&&le!==`overview`){let e=ee(`Back to Settings`,{kind:`section`,page:`overview`});e.classList.add(`settings-back`),fe.append(e)}let k=J(`span`,`settings-location`,[`Settings`,...le===`overview`?[]:[WS[le]],...O?[US[O.kind]]:[],...E===`result`?[`Result`]:E===`progress`?[O?.kind===`download_backup`?`Downloading`:ie?`Checking backup`:`Applying change`]:E===`confirmation`?[`Confirm`]:[]].join(` / `));if(k.setAttribute(`aria-current`,`page`),fe.append(k),h.append(fe),O?.kind===`download_backup`)oe(h);else if(E===`progress`){let e=J(`p`,`ui-note`,ie?`Checking backup…`:r.phase===`stopping`?`Stopping the wallet connection service…`:r.phase===`starting`?`Starting the wallet connection service…`:`Finishing this change…`);e.setAttribute(`role`,`status`),h.append(e),r.phase===`starting`&&h.append(J(`p`,`ui-note`,`If the service is not responding, you can request another restart in a new Settings card under Troubleshooting. This card keeps the result of the current restart.`))}else if(E===`confirmation`&&r.draft){if(h.append(J(`h2`,void 0,QS[r.draft.kind])),T&&r.file&&h.append(Y(`Backup file`,r.file.displayName)),r.draft.kind===`set_endpoint`||r.draft.kind===`restore_endpoint`){let e=eC(r.preparation?.endpoint);h.append(Y(`Setting`,r.draft.endpoint===`grpc`?`Sui node (gRPC)`:`Activity data (GraphQL)`)),typeof e.storedValue==`string`&&h.append(Y(`Previously saved network address`,e.storedValue)),typeof e.value==`string`&&h.append(Y(`Network address to save`,e.value)),h.append(J(`p`,`ui-note`,`Sui MCP checks that this address connects to Sui mainnet before saving it. Fully quit and reopen all apps using Sui MCP to use the change. Restarting only the wallet connection service does not apply it.`)),e.source===`environment`&&h.append(J(`p`,`ui-note`,`The app launch settings specify the network address to use. Restarting without removing that launch setting will keep using that address.`))}if(r.draft.kind===`reset_local_data`&&h.append(J(`p`,`ui-note`,KS)),r.draft.kind===`reset_local_data`||r.draft.kind===`import_local_data`){T?h.append(J(`p`,`ui-error`,`Restoring replaces local records and saved network settings, including records with unconfirmed transaction results. You cannot undo this from this card. Other open cards will no longer work; open new cards after restoring.`),J(`p`,`ui-note`,`Wallet keys and approvals are not restored. Transactions on Sui are not cancelled.`)):(h.append(J(`p`,`ui-error`,`This deletes local records and saved settings, including records whose transaction results are still unconfirmed. It does not cancel transactions on Sui. Data cannot be replaced until pending wallet or transaction responses and the initial result-checking period have ended.`)),h.append(J(`p`,`ui-error`,`You cannot undo this from this card. Other open cards will no longer work. You can still read this change's result.`)));let e=eC(r.preparation?.preview);if(r.draft.kind===`import_local_data`){let t=eC(e.currentCounts),n=eC(e.incomingCounts);h.append(J(`h3`,void 0,`Records to replace (now → backup)`));for(let[e,r]of ZS)typeof t[e]==`number`&&typeof n[e]==`number`&&(t[e]!==0||n[e]!==0)&&h.append(Y(r,`${t[e]} → ${n[e]}`));typeof t.outcomeUnknownRequests==`number`&&t.outcomeUnknownRequests>0&&h.append(J(`p`,`ui-error`,`The current records with unconfirmed transaction results will be removed.`)),e.restartRequiredAfterImport===!0&&h.append(J(`p`,`ui-note`,`After restoring, fully quit and reopen all apps using Sui MCP. Network addresses specified in the app launch settings still take priority over the restored settings.`)),h.append(J(`p`,`ui-note`,`Restoring saved addresses does not reconnect a wallet. Disconnect any retained wallet connection, then connect again before using an address.`))}else nC(h,r.preparation?.counts,`Current local records`)}if(r.draft.kind===`restart_wallet_service`){h.append(J(`p`,`ui-note`,`The wallet connection service restarts while your apps stay open. Pending wallet approvals can no longer send a transaction, and unfinished review checks stop. Transactions already sent to Sui are not cancelled; checks already in progress continue. Restarting does not confirm a failed disconnection or remove the connection from your wallet app.`));let e=ue??rv.parse(r.preparation?.impact);h.append(Y(`Wallet connection records`,String(e.connections.length)),J(`p`,`ui-note`,`These are recorded connections, not confirmation that a wallet is connected now. Restarting does not reconnect a disconnected wallet.`));for(let t of e.connections){h.append(Y(`Wallet`,t.walletName??`Wallet`),Y(`Recorded status`,XS[t.status]));for(let e of t.chainResults.filter(e=>e.status===`bound`))h.append(Y(`${T_[e.chainId]} address`,og(e.address)));t.disconnectPending&&h.append(J(`p`,`ui-note`,`This wallet's disconnection has not been confirmed.`))}let t=e.requests.filter(e=>e.request_status===`awaiting_signature`).length;h.append(Y(`Wallet approval requests to stop`,String(t)),Y(`Other transaction requests`,String(e.requests.length-t)))}t&&r.allowedActions.includes(`settings_confirm`)?h.append(ne(b($S[r.draft.kind],{action:`settings_confirm`,operationId:r.operationId,preparationId:r.preparationId},[`reset_local_data`,`import_local_data`].includes(r.draft.kind)?`danger`:`primary`))):t&&h.append(J(`p`,`ui-note`,`This change cannot be confirmed right now.`))}else if(O){let e;if(h.append(J(`h2`,void 0,US[O.kind])),le===`records`&&h.append(J(`p`,`ui-note`,KS)),O.kind===`import_local_data`){if(r.restoreCheck?.status===`cannot_restore`){let e=J(`p`,`ui-error`,r.restoreCheck.message);e.setAttribute(`role`,`alert`),h.append(J(`h3`,void 0,`Cannot restore`),e)}else r.restoreCheck?.status===`check_required`&&h.append(J(`p`,`ui-note`,r.restoreCheck.message));if(v?.progress&&!ie&&!re){let e=J(`p`,`ui-note`,v.progress.stage===`reading`?`Reading the selected file…`:`Receiving backup…`);e.setAttribute(`role`,`status`),h.append(e)}let n=ng({type:`file`});n.accept=`.json,application/json`,n.dataset.cardAction=`settings_begin_upload`,n.addEventListener(`change`,()=>{let e=n.files?.[0];if(!e||!c||d||o)return;let t={startingRevision:i.revision,progress:void 0};v=t,d=!0,u=void 0,VS(e,c,()=>({operationId:r.operationId,cardId:i.cardId}),()=>!o&&v===t,e=>{o||v!==t||e.operationId!==r.operationId||e.cardId!==i.cardId||(t.progress=e,w(),l?.())}).then(()=>{!o&&v===t&&(u=void 0)}).catch(e=>{!o&&v===t&&(u={cardId:i.cardId,operationId:r.operationId,revision:i.revision,draft:JSON.stringify(r.draft),fileId:r.file?.fileId,message:e instanceof Error?e.message:`The file transfer could not be confirmed. Choose the file again to continue.`})}).finally(()=>{v===t&&(v=void 0),d=!1,o||(w(),l?.())})}),t&&!r.file?.sealed&&h.append(rg(r.file?`Choose the same file to continue`:`Choose a Sui MCP backup (up to 16 MiB)`,n)),r.file&&(h.append(Y(`Selected file`,r.file.displayName),Y(`File received`,`${r.file.receivedSize.toLocaleString(`en-US`)} / ${r.file.totalSize.toLocaleString(`en-US`)} bytes`)),t&&r.allowedActions.includes(`settings_prepare`)&&(e=b(`Check backup again`,{action:`settings_prepare`,operationId:r.operationId},`primary`)),t&&h.append(x(`Change backup file`,{kind:`import_local_data`},!1,!0)))}else{if(O.kind===`set_endpoint`||O.kind===`restore_endpoint`){let e=O.endpoint===`grpc`?r.facts?.localSettings.suiGrpcUrl:r.facts?.localSettings.suiGraphqlUrl;h.append(Y(`Network setting`,O.endpoint===`grpc`?`Sui node (gRPC)`:`Activity data (GraphQL)`)),e&&h.append(Y(`Current saved address`,e.storedValue)),O.kind===`set_endpoint`?h.append(Y(`Selected network address`,O.value)):h.append(J(`p`,`ui-note`,`Review the built-in default address before confirming this change.`)),e?.source===`environment`&&h.append(J(`p`,`ui-note`,`The app launch settings specify the network address in use. Saving or restoring an address here does not remove that launch setting.`))}else O.kind===`set_wallet_networks`?h.append(Y(`Selected networks`,O.chains.map(e=>T_[e]).join(`, `)||`None`),J(`p`,`ui-note`,`The selection applies to new wallet connections. Existing connections and connection requests stay unchanged.`)):O.kind===`restart_wallet_service`?(r.facts&&h.append(Y(`Wallet connection service`,JS[r.facts.walletAvailability.status])),r.facts?.connectionReconciliationRequired&&h.append(J(`p`,`ui-error`,ov)),r.facts&&r.facts.walletAvailability.status!==`available`&&h.append(J(`p`,`ui-note`,r.facts.walletAvailability.message)),h.append(J(`p`,`ui-note`,`Review the connection and transaction requests affected before confirming a service restart.`))):O.kind===`reset_local_data`&&h.append(J(`p`,`ui-note`,`Review the records and saved settings to delete before confirming the reset.`));t&&r.allowedActions.includes(`settings_prepare`)&&(e=b(`Retry check`,{action:`settings_prepare`,operationId:r.operationId},`primary`))}e&&h.append(ne(e))}else{if(h.append(J(`h2`,void 0,D===`overview`?`Choose a section`:WS[D])),D===`overview`){h.append(J(`p`,`ui-note`,`You can use the default Sui mainnet network settings. Custom settings are optional.`)),r.facts?.connectionReconciliationRequired&&h.append(J(`p`,`ui-error`,ov));let e=r.facts?.walletAvailability;e&&e.status!==`available`&&h.append(J(`p`,e.status===`unavailable`?`ui-error`:`ui-note`,e.message),...e.status===`unavailable`?[J(`p`,`ui-note`,`Open Troubleshooting below to check the connection service.`)]:[]);let t=J(`div`,`settings-menu`);t.setAttribute(`aria-label`,`Settings sections`);for(let e of[`networks`,`address`,`records`,`troubleshooting`,`advanced`]){let n=ee(WS[e],{kind:`section`,page:e});n.classList.add(`settings-menu-item`),n.setAttribute(`aria-label`,WS[e]),n.textContent=``,n.append(J(`span`,`settings-menu-title`,WS[e]),J(`span`,`settings-menu-description`,GS[e])),t.append(n)}if(h.append(t),r.draft&&(r.phase===`prepared`||r.draft.kind===`import_local_data`)){let e=J(`div`,`settings-pending`);e.append(J(`p`,`ui-note`,`Unfinished change: ${US[r.draft.kind]}.`),ee(`Resume`,{kind:`operation`,operation:r.draft.kind})),h.append(e)}}else if(D===`address`)h.append(Y(`Saved read address`,r.facts?.readAddress?og(r.facts.readAddress):`Not set`),J(`p`,`ui-note`,`Clearing this address does not disconnect your wallet, change its fixed addresses or cancel a transaction. Explicit-address reads remain available.`)),t&&r.facts?.readAddress&&r.facts.readConnectionId&&r.allowedActions.includes(`settings_clear_read_address`)&&h.append(tg(b(`Clear saved read address`,{action:`settings_clear_read_address`,operationId:r.operationId,connectionId:r.facts.readConnectionId,account:r.facts.readAddress},`primary`)));else if(D===`networks`){let e=r.facts?.localSettings.walletConnectionChains??[];s??=new Set(r.draft?.kind===`set_wallet_networks`?r.draft.chains:e),h.append(J(`p`,`ui-note`,`Choose the networks for your next wallet connection. Only addresses approved by the wallet will be used.`),Y(`Saved networks`,e.map(e=>T_[e]).join(`, `)||`None`));for(let e of y_){let n=ng({type:`checkbox`,name:e});n.checked=s.has(e),n.disabled=!t,n.dataset.cardAction=`settings_save_wallet_networks`,n.dataset.walletNetwork=e,n.addEventListener(`change`,()=>{n.checked?s.add(e):s.delete(e)}),h.append(rg(T_[e],n))}if(h.append(J(`p`,`ui-note`,`An unsent Connect request ends if its networks change. Requests already sent and approved connections keep their networks. To change an approved connection, disconnect it and connect again. An empty selection disables new connections.`)),t){let n=$h(`Save networks`,()=>{!o&&!d&&t({action:`settings_save_wallet_networks`,operationId:r.operationId,chains:y_.filter(e=>s.has(e)),expectedChains:e})},`primary`);n.dataset.cardAction=`settings_save_wallet_networks`,h.append(tg(n))}}else if(D===`records`)h.append(J(`p`,`ui-note`,KS)),t&&h.append(te(`Backup`,`Download the current local records and settings as one backup file. If this connection cannot provide downloads, the same file is saved in the Sui MCP backup folder on this computer.`,ae(`Download backup`,`settings_download_backup`,()=>S(!1))),te(`Restore`,`Choose a Sui MCP backup. It will be checked automatically before you confirm the restore.`,x(`Restore local records`,{kind:`import_local_data`})),te(`Reset`,`Review the local records and stored settings to delete. This does not cancel transactions on Sui.`,x(`Reset local data`,{kind:`reset_local_data`},!0)));else if(D===`troubleshooting`)r.facts&&(h.append(Y(`Wallet connection service`,JS[r.facts.walletAvailability.status])),r.facts.connectionReconciliationRequired&&h.append(J(`p`,`ui-error`,ov)),r.facts.observedAt&&h.append(Y(`Status checked at`,sg(r.facts.observedAt))),r.facts.walletAvailability.status!==`available`&&h.append(J(`p`,`ui-note`,r.facts.walletAvailability.message))),h.append(J(`p`,`ui-note`,`Restart the wallet connection service if a connection request is not responding. Starting up or waiting for you to approve in your wallet does not by itself mean a failure.`)),t&&h.append(x(`Restart connection service`,{kind:`restart_wallet_service`}));else if(D===`advanced`&&r.facts)for(let e of[`grpc`,`graphql`]){let n=e===`grpc`?r.facts.localSettings.suiGrpcUrl:r.facts.localSettings.suiGraphqlUrl,i=ng({value:r.draft?.kind===`set_endpoint`&&r.draft.endpoint===e?r.draft.value:n.storedValue});i.dataset.cardAction=`settings_select`;let a=J(`div`,`settings-endpoint`);if(a.append(rg(e===`grpc`?`Sui node (gRPC)`:`Activity data (GraphQL)`,i),J(`p`,`ui-note`,e===`grpc`?`Used to retrieve balances, check transactions before wallet approval and send approved transactions.`:`Used to retrieve transaction activity.`)),t){let n=$h(`Select network address`,()=>{!d&&!o&&t({action:`settings_select`,draft:{kind:`set_endpoint`,endpoint:e,value:i.value}})},`secondary`);n.dataset.cardAction=`settings_select`,a.append(eg(n,x(`Select default network address`,{kind:`restore_endpoint`,endpoint:e})))}n.appliesAfter&&a.append(J(`p`,`ui-note`,`A saved change needs an app restart. `+qS)),n.source===`environment`&&a.append(J(`p`,`ui-note`,`The app launch settings specify the network address to use. Remove that launch setting before restarting to use an address saved here.`)),h.append(a)}D!==`overview`&&r.draft&&D===tC(r.draft.kind)&&(r.phase===`prepared`||r.draft.kind===`import_local_data`)&&h.append(J(`p`,`ui-note`,`Unfinished change: ${US[r.draft.kind]}.`),ee(`Resume`,{kind:`operation`,operation:r.draft.kind})),t&&D===`overview`&&r.allowedActions.includes(`settings_cancel`)&&(r.draft&&h.append(J(`p`,`ui-note`,`Closing Settings discards this unfinished change. Nothing will be applied.`)),h.append(tg(b(`Close Settings`,{action:`settings_cancel`}))))}if((g?.kind===`preparation_response`||g?.kind===`selection_response`)&&!r.result&&!se){let e=J(`p`,`ui-note`,g.kind===`selection_response`?`Checking this change…`:`Waiting for a response…`);e.setAttribute(`role`,`status`),h.append(e)}u&&E===`input`&&O?.kind===`import_local_data`&&h.append(J(`p`,`ui-note`,u.message));let pe=y.contains(document.activeElement)?document.activeElement.dataset.walletNetwork:void 0;C(h,le,ue,O),y.replaceChildren(h),pe&&[...y.querySelectorAll(`input[data-wallet-network]`)].find(e=>e.dataset.walletNetwork===pe)?.focus(),f&&[...y.querySelectorAll(`input`)].filter(e=>e.type!==`file`).forEach((e,t)=>{f[t]!==void 0&&(e.value=f[t])}),n&&(y.querySelector(`details`).open=!0)}return w(),{node:y,update(e,t){let n=lS.parse(e.data);if(n.operationId!==r.operationId)return!1;h&&n.file?.fileId===h.fileId&&n.download?.currentAttemptId===h.attemptId&&n.download.hostReport===h.status&&(h=void 0,g=void 0),h&&(!n.download?.allowedFileActions.includes(`settings_report_download`)||n.file?.fileId!==h.fileId)&&(h=void 0,g=void 0),u&&(n.result||e.revision!==u.revision||e.cardId!==u.cardId||n.operationId!==u.operationId||JSON.stringify(n.draft)!==u.draft||n.file?.fileId!==u.fileId)&&(u=void 0);let o=e===i;if(o&&!p&&!t.settingsCommandProgress)return!0;(JSON.stringify(n.draft)!==JSON.stringify(r.draft)||n.phase===`prepared`&&r.phase!==`prepared`)&&(a=n.draft?{kind:`operation`,operation:n.draft.kind}:{kind:`section`,page:tC(r.draft?.kind)});let s=v?.progress;return v&&(n.result||n.draft?.kind!==`import_local_data`||s?.stage===`reading`&&e.revision>v.startingRevision||s?.fileId&&n.file?.fileId!==s.fileId||s?.sha256&&n.file&&n.file.sha256!==s.sha256)&&(v=void 0),r=n,i=e,c=t.settings,l=t.onDisplayChange,p=t.settingsCommandProgress,w(o),ie(),!0},displayRecovery(){return h?g:void 0},dispose(){o=!0,v=void 0,u=void 0,m=void 0,h=void 0}}}RS(`settings`,{title:`Settings`,controls:(e,t,n,r,i)=>rC(e,t,i),result:(e,t,n,r,i)=>rC(e,n,i)});</script></body></html>
3591
+ `)),Tv={0:`ED25519`,1:`Secp256k1`,2:`Secp256r1`,3:`MultiSig`,5:`ZkLogin`,6:`Passkey`},Ev=e=>Object.freeze(e());function Dv(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`&&`BYTES_PER_ELEMENT`in e&&e.BYTES_PER_ELEMENT===1}function Ov(e){if(!Dv(e))throw TypeError(`Uint8Array expected`)}function kv(e,t){return Array.isArray(t)?t.length===0?!0:e?t.every(e=>typeof e==`string`):t.every(e=>Number.isSafeInteger(e)):!1}function Av(e){if(typeof e!=`function`)throw TypeError(`function expected`);return!0}function jv(e,t){if(typeof t!=`string`)throw TypeError(`${e}: string expected`);return!0}function Mv(e,t=`number`){if(typeof e!=`number`)throw TypeError(`${t}: expected number, got ${typeof e}`);if(!Number.isSafeInteger(e))throw RangeError(`${t}: expected safe integer, got ${e}`)}function Nv(e,t){if(!kv(!1,t))throw TypeError(`${e}: array of numbers expected`)}var Pv=(()=>{let e=[];for(let t=0;t<40;t++)e.push(2**t);return e})();function Fv(e,t=e.length){let n=Array(t);for(let r=0;r<t;r++)n[r]=e[r];return n}var Iv=(()=>{try{let e=new TextDecoder;return e.decode(Uint8Array.of(65,48,43,127))===`A0+`?e:void 0}catch{return}})(),Lv=8192;function Rv(e){let t=e.length;if(Iv!==void 0&&t>=12)return Iv.decode(e);if(t<=Lv)return String.fromCharCode.apply(null,e);let n=``;for(let r=0;r<t;r+=Lv)n+=String.fromCharCode.apply(null,e.subarray(r,r+Lv));return n}function zv(e){if(Mv(e),e<=0||e>8)throw RangeError(`radix2: bits should be in (0..8]`);let t=Pv[e]-1;return{encode:n=>{Ov(n);let r=n.length,i=new Uint8Array(Math.ceil(r*8/e)),a=0,o=0,s=0;for(let c=0;c<r;)for(c+2<r?(a=a<<24|n[c]<<16|n[c+1]<<8|n[c+2],o+=24,c+=3):(a=(a<<8|n[c])&65535,o+=8,c++);o-=e,i[s++]=a>>o&t,!(o<e););return o>0&&(i[s]=a<<e-o&t),i},decode:t=>{let n=t.length,r=new Uint8Array(Math.floor(n*e/8)),i=0,a=0,o=0;for(let s=0;s<n;s++)for(i=(i<<e|t[s])&65535,a+=e;a>=8;a-=8)r[o++]=i>>a-8&255;if(i=i<<8-a&255,a>=e)throw Error(`Excess padding`);if(i>0)throw Error(`Non-zero padding: ${i}`);return r}}}function Bv(e,t){let n=e.length;if(n>128)throw Error(`alphabet: max 128 letters`);let r=new Uint8Array(n),i=new Int8Array(128).fill(-1);for(let t=0;t<n;t++){let n=e.charCodeAt(t);if(e.codePointAt(t)!==n||n>127)throw Error(`alphabet: single-char ASCII letters only`);r[t]=n,i[n]=t}if(t!==void 0)for(let e of Object.keys(t)){let n=e.charCodeAt(0),r=i[t[e].charCodeAt(0)];if(e.length!==1||n>127||r===void 0||r===-1)throw Error(`alphabet: invalid alias ${e}`);i[n]=r}return{encode:e=>{let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++){let i=e[n],a=r[i];if(a===void 0)throw Error(`alphabet.encode: invalid digit ${i}`);t[n]=a}return Rv(t)},decode:t=>{jv(`decode`,t);let n=t.length,r=new Uint8Array(n);for(let a=0;a<n;a++){let n=t.charCodeAt(a),o=n<128?i[n]:-1;if(o===-1)throw Error(`Unknown letter "${t[a]}". Allowed: ${e}`);r[a]=o}return r}}}function Vv(e){return Av(e),function(...t){try{return e.apply(null,t)}catch{}}}var Hv=Bv(`qpzry9x8gf2tvdw0s3jn54khce6mua7l`),Uv=/^[\x21-\x60\x7b-\x7e]+$/;function Wv(e,t){for(let n=0;n<t.length;n++){let r=t.charCodeAt(n);if(r<33||r>126)throw Error(`${e}: printable ASCII expected`)}}function Gv(e){let t=e.length,n=new Uint8Array(t);for(let r=0;r<t;r++){let t=e[r];if(t<0||t>=32)throw Error(`alphabet.encode: invalid digit ${t}`);n[r]=t}return n}var Kv=[996825010,642813549,513874426,1027748829,705979059];function qv(e){let t=e>>25,n=(e&33554431)<<5;for(let e=0;e<Kv.length;e++)(t>>e&1)==1&&(n^=Kv[e]);return n}function Jv(e,t,n=1){let r=e.length,i=1;for(let t=0;t<r;t++){let n=e.charCodeAt(t);if(n<33||n>126)throw Error(`Invalid prefix (${e})`);i=qv(i)^n>>5}i=qv(i);for(let t=0;t<r;t++)i=qv(i)^e.charCodeAt(t)&31;for(let e of t)i=qv(i)^e;for(let e=0;e<6;e++)i=qv(i);i^=n;let a=new Uint8Array(6);for(let e=0;e<6;e++)a[e]=i>>>5*(5-e)&31;return Hv.encode(a)}function Yv(e){let t=e===`bech32`?1:734539939,n=zv(5),r=e=>{Ov(e);let t=e.length,n=Array(Math.ceil(t*8/5)),r=0,i=0,a=0;for(let o=0;o<t;o++)for(r=r<<8|e[o],i+=8;i>=5;i-=5)n[a++]=r>>i-5&31;return i>0&&(n[a]=r<<5-i&31),n},i=e=>{Nv(`radix2.decode`,e);let t=e.length,r=new Uint8Array(t);for(let n=0;n<t;n++){let t=e[n];if(t<0||t>=32)throw Error(`convertRadix2: invalid word=${t}`);r[n]=t}return n.decode(r)},a=Vv(i);function o(e,n,r=90){jv(`bech32.encode prefix`,e),r!==!1&&Mv(r,`limit`),Dv(n)&&(n=Fv(n)),Nv(`bech32.encode`,n);let i=e.length;if(i===0)throw TypeError(`Invalid prefix length ${i}`);let a=i+7+n.length;if(r!==!1&&a>r)throw TypeError(`Length ${a} exceeds limit ${r}`);Wv(`bech32.encode prefix`,e);let o=e.toLowerCase(),s=Jv(o,n,t);return`${o}1${Hv.encode(Gv(n))}${s}`}function s(e,n=90){jv(`bech32.decode input`,e),n!==!1&&Mv(n,`limit`);let r=e.length;if(r<8||n!==!1&&r>n)throw TypeError(`invalid string length ${r}, expected (8..${n})`);let i=e.toLowerCase();if(e!==i&&!Uv.test(e))throw Wv(`bech32.decode input`,e),Error(`mixed-case string not allowed`);let a=i.lastIndexOf(`1`);if(a===0||a===-1)throw Error(`invalid separator "1"`);let o=i.slice(0,a),s=i.slice(a+1);if(s.length<6)throw Error(`invalid data length`);let c=Hv.decode(s),l=Fv(c,c.length-6),u=Jv(o,l,t);if(!s.endsWith(u))throw Error(`Invalid checksum in ${e}`);return{prefix:o,words:l}}let c=Vv(s);function l(e,t=90){let{prefix:n,words:r}=s(e,t);return{prefix:n,words:r,bytes:i(r)}}function u(e,t){return o(e,r(t))}return{encode:o,decode:s,encodeFromBytes:u,decodeToBytes:l,decodeUnsafe:c,fromWords:i,fromWordsUnsafe:a,toWords:r}}var Xv=Ev(()=>Yv(`bech32`));function Zv(e){let{prefix:t,words:n}=Xv.decode(e);if(t!==`suiprivkey`)throw Error(`invalid private key prefix`);let r=new Uint8Array(Xv.fromWords(n)),i=r.slice(1);return{scheme:Tv[r[0]],secretKey:i}}var Qv=`external-proposal-alpha-2026-05-25`,$v=`proposal-review-model-alpha-2026-05-25`,ey=F().refine(e=>{let t=new Date(e);return!Number.isNaN(t.getTime())&&t.toISOString()===e},`Expected ISO 8601 UTC timestamp`),ty=/transaction\s*bytes?|transactionBytes|tx\s*bytes?|serialized\s*transaction|serializedTransaction|signed\s*transaction|signing\s*request|signingRequest|wallet\s*authorization|walletAuthorization|private\s*key|privateKey|secret\s*key|secretKey|seed\s*phrase|mnemonic|suiprivkey|signature|route[-_\s]*selected|routeSelectedPlan|bcs\s*transaction|programmable\s*transaction/i,ny=/(?:0x[0-9a-fA-F]{160,}|[A-Za-z0-9+/_=-]{160,})/,ry=/suiprivkey1[023456789acdefghjklmnpqrstuvwxyz]+/gi,iy=/(^|[^0-9a-fA-F])(?:0x)?[0-9a-fA-F]{64}($|[^0-9a-fA-F])/,ay=/(^|[^A-Za-z0-9+/_=-])(?:[A-Za-z0-9+/]{43}=|[A-Za-z0-9+/]{44}|[A-Za-z0-9_-]{43,44})($|[^A-Za-z0-9+/_=-])/,oy=/^(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$/,sy=[12,15,18,21,24];function cy(e,t,n={}){return F().min(1).max(e).superRefine((e,r)=>{(ty.test(e)||ny.test(e)||uy(e)||dy(e)||!n.allowRawSecretLikeText&&fy(e))&&r.addIssue({code:`custom`,message:`${t} must not contain executable, signing, private-key, mnemonic, route-selected, or encoded secret-like material`})})}function ly(e,t){return cy(e,t,{allowRawSecretLikeText:!0})}function uy(e){return(e.match(ry)??[]).some(e=>{try{return Zv(e.toLowerCase()),!0}catch{return e.toLowerCase().startsWith(`suiprivkey1`)}})}function dy(e){let t=e.normalize(`NFKD`).toLowerCase().replace(/[^a-z]+/g,` `).trim().split(/\s+/).filter(Boolean);for(let e of sy)if(!(t.length<e)){for(let n=0;n<=t.length-e;n+=1)if(Cv(t.slice(n,n+e).join(` `),wv))return!0}return!1}function fy(e){return iy.test(e)||ay.test(e)}var py=cy(80,`amountDisplay`).refine(e=>oy.test(e)&&/[1-9]/.test(e),{message:`Expected a positive decimal display amount`}),my=B({kind:W([`mcp_server`,`ai_client`,`user`,`other`]),name:cy(120,`source.name`),reference:cy(256,`source.reference`).optional()}).strict(),hy=B({address:h_.optional(),label:cy(120,`party.label`).optional()}).strict().refine(e=>e.address!==void 0||e.label!==void 0,{message:`Expected address or label`}),gy=B({amountDisplay:py,amountKind:G(`display_proposal`).default(`display_proposal`),symbol:cy(64,`amount.symbol`).optional(),coinType:ly(512,`amount.coinType`).optional(),denomination:cy(64,`amount.denomination`).optional()}).strict(),_y=B({packageId:ly(128,`action.target.packageId`).optional(),module:cy(128,`action.target.module`).optional(),function:cy(128,`action.target.function`).optional(),objectId:ly(128,`action.target.objectId`).optional(),label:cy(120,`action.target.label`).optional()}).strict().refine(e=>e.packageId!==void 0||e.module!==void 0||e.function!==void 0||e.objectId!==void 0||e.label!==void 0,{message:`Expected at least one action target field`}),vy=B({direction:W([`outgoing`,`expected_incoming`,`fee`]),amount:gy,recipient:hy.optional(),description:cy(512,`assetFlow.description`).optional()}).strict(),yy=B({id:cy(120,`proposal.id`),source:my,network:G(`sui:mainnet`),createdAt:ey,expiresAt:ey.optional(),purpose:cy(512,`purpose`),assumptions:z(cy(512,`assumptions[]`)).max(20).optional(),requiredUserChoices:z(cy(512,`requiredUserChoices[]`)).max(20).optional()}).strict(),by=hc(`type`,[yy.extend({type:G(`payment`),payment:B({amount:gy,recipient:hy,target:cy(512,`payment.target`).optional()}).strict()}).strict(),yy.extend({type:G(`sui_action`),action:B({actionKind:cy(120,`action.actionKind`),target:_y,recipient:hy.optional(),assetFlow:z(vy).max(20).optional()}).strict()}).strict()]),xy=B({id:F(),label:F(),status:W([`pass`,`warning`,`fail`]),message:F(),source:W([`proposal`,`adapter`,`registry`,`quote`,`wallet`,`simulation`,`network`])}).strict(),Sy=B({id:F(),label:F(),reason:F()}).strict(),Cy=B({modelVersion:G($v),contractVersion:G(Qv),proposalId:F(),proposalType:W([`payment`,`sui_action`]),proposalSource:my,proposedAction:B({kind:W([`payment`,`sui_action`]),title:F(),purpose:F(),network:G(`sui:mainnet`),recipient:hy.optional(),target:H([F(),_y]).optional()}).strict(),assetFlow:B({outgoing:z(gy),expectedIncoming:z(gy),fees:z(gy)}).strict(),recipients:z(hy),targets:z(H([F(),_y])),evidenceUsed:z(B({id:F(),label:F(),source:W([`external_proposal`,`local_schema`]),summary:F()}).strict()),missingEvidence:z(Sy),requiredUserChoices:z(Sy),unsupportedClaims:z(B({id:F(),label:F(),reason:F()}).strict()),rejectedExecutableFields:z(B({fieldName:F(),reason:F()}).strict()),freshness:B({proposalCreatedAt:ey,proposalExpiresAt:ey.optional(),evaluatedAt:ey,status:W([`current`,`expired`,`created_in_future`,`expiry_not_provided`]),reason:F()}).strict(),blockingChecks:z(xy),nonSignableReason:B({code:G(`external_proposal_review_only`),message:F(),blockedCapabilities:z(F())}).strict()}).strict();B({requestedIntent:by,implementationStatus:G(`read_only_review_only`),contractVersion:G(Qv)}).strict();var wy=[`adapter_not_implemented`,`producer_stage_missing`,`wallet_review_contract_emit_missing`,`network_mismatch`,`insufficient_balance`,`insufficient_gas`,`allowlist_violation`,`asset_mismatch`,`amount_mismatch`,`wallet_mismatch`,`unsupported_action`,`object_resolution_failed`,`proposal_review_only`],Ty=[`review_evidence_stale`,`quote_stale`,`quote_unavailable`,`simulation_transient_failure`,`review_update_failed`,`wallet_connection_changed`],Ey=[`proposed`,`awaiting_wallet`,`wallet_connected`,`ready_for_wallet_review`,`refresh_required`,`blocked`,`expired`],Dy=[`humanReadableReview`,`simulation`,`transactionReviewData`,`ptbVisualization`,`assetFlowActual`,`beforeAfterBalance`],Oy=W([`client.core.simulateTransaction`,`client.transactionExecutionService.simulateTransaction`]),ky=`ptb-visualization-contract-alpha-2026-05-25`,Ay=[`proposedAction`,`assetFlow`,`recipients`,`targets`,`evidenceUsed`,`missingEvidence`,`requiredUserChoices`,`unsupportedClaims`,`freshness`,`blockingChecks`],jy=[`effects`,`balanceChanges`,`objectTypes`,`transaction`],My=[`transaction_bytes`,`serialized_transaction`,`wallet_signature_request`,`private_key_material`,`wallet_authorization`,`signing_data`,`signing_readiness`,`payment_execution_readiness`],Ny=[`transaction_building_input`,`wallet_authorization`,`signing_data`,`signing_readiness`,`payment_execution_readiness`,`route_recommendation`],Py=m_,Fy=`MIST`,Iy=[`checkedAt`,`expiresAt`],Ly=[`checkedAt`,`expiryStatus`],Ry=[`rawAmount`,`asset`,`amountRole`],zy=[`minOutRaw`,`asset`,`amountRole`],By=[`gasBudgetRaw`,`asset`,`amountRole`],Vy=[`gasUsedRaw`,`asset`,`amountRole`],Hy=[`checkedAt`,`gasResolutionStatus`,`unresolvedReason`],Uy=[`balanceChanges`,`asset`,`amountRole`],Wy=[`coinType`,`decimals`],Gy=[`quoteEvidenceId`,`minOutRaw`],Ky=[`maxSlippageBps`,`userSelection`],qy=[`maxSlippageBps`,`minOutRaw`],Jy=[`ownerAccount`,`objects`],Yy=[`pinned_sdk_registry`,`verified_mainnet_onchain_metadata`,`wallet_account_read`,`quote_evidence`,`review_time_simulation`,`validated_request_fact`,`user_explicit_choice`],Xy=[`input`,`expected_output`,`minimum_output`,`gas_budget`,`gas_used`,`fee`,`balance_delta`],Zy={input:{kinds:[`validated_request_fact`,`wallet_account_read`,`user_explicit_choice`],fields:Ry},expected_output:{kinds:[`quote_evidence`,`review_time_simulation`],fields:Ry},minimum_output:{kinds:[`quote_evidence`],fields:zy},gas_budget:{kinds:[`review_time_simulation`],fields:By},gas_used:{kinds:[`review_time_simulation`],fields:Vy},fee:{kinds:[`review_time_simulation`],fields:Ry},balance_delta:{kinds:[`review_time_simulation`],fields:Uy}},Qy={pinned_sdk_metadata:{kinds:[`pinned_sdk_registry`],fields:Wy},verified_mainnet_onchain_metadata:{kinds:[`verified_mainnet_onchain_metadata`],fields:Wy}},$y={user_explicit:{kinds:[`user_explicit_choice`],fields:Ky},adapter_policy_from_quote_evidence:{kinds:[`quote_evidence`],fields:qy}},eb={kinds:[`review_time_simulation`],fields:Hy},tb={kinds:[`quote_evidence`],fields:Gy},nb={kinds:[`validated_request_fact`],fields:Iy},rb={kinds:[`validated_request_fact`],fields:Ly},ib={raw_quantity_amount:{byRole:Zy},unit_metadata:{bySource:Qy},gas_unresolved_status:eb,expiry_status:{current:nb,expired:nb,not_provided:rb,not_applicable:rb},quote_min_out:tb,slippage_policy:{bySource:$y},object_ownership:{kinds:[`wallet_account_read`],fields:Jy},simulation_result:{kinds:[`review_time_simulation`],fields:jy}},ab={gasBudgetClaimId:{factKind:`raw_quantity_amount`,role:`gas_budget`,assetCoinType:Py,rawUnit:Fy},gasUsedClaimId:{factKind:`raw_quantity_amount`,role:`gas_used`,assetCoinType:Py,rawUnit:Fy},gasObjectOwnershipClaimId:{factKind:`object_ownership`,ownership:`owned_by_account`}},ob=F().refine(e=>{let t=new Date(e);return!Number.isNaN(t.getTime())&&t.toISOString()===e},`Expected ISO 8601 UTC timestamp`),sb=I_(`unsigned integer`),cb=F().regex(/^0x[0-9a-fA-F]{1,64}$/,{message:`Expected a Sui object id`}),lb=F().min(1).max(512).refine(e=>{try{return z_(e)===e}catch{return!1}},`Expected a normalized Sui struct tag coin type`),X=F().min(1).max(120),ub=B({symbol:F().min(1).max(64).optional(),coinType:lb}).strict(),db=/transaction\s*bytes?|tx\s*bytes?|serialized\s*transaction|serializedTransaction|signed\s*transaction|signing\s*request|signingRequest|wallet\s*authorization|walletAuthorization|private\s*key|privateKey|secret\s*key|secretKey|seed\s*phrase|mnemonic|suiprivkey|signature|bcs\s*transaction/i,fb=/(?:0x[0-9a-fA-F]{160,}|[A-Za-z0-9+/_=-]{160,})/;function pb(e,t){return F().min(1).max(e).superRefine((e,n)=>{(db.test(e)||fb.test(e))&&n.addIssue({code:`custom`,message:`${t} must not contain executable transaction, signing, private-key, mnemonic, or long encoded material`})})}function mb(e,t){let n=new Set(e);return t.filter(e=>!n.has(e))}function hb(e,t,n,r,i){let a=mb(t,n);a.length!==0&&e.addIssue({code:`custom`,path:r,message:`${i} must include ${a.join(`, `)}`})}function gb(e,t,n,r,i){hb(e,t,n,r,i)}function _b(e,t,n){e.addIssue({code:`custom`,path:t,message:`${n} must match referenced evidence claim`})}function Z(e,t,n,r,i){t!==n&&_b(e,r,i)}function vb(e,t,n,r,i){let a=new Set(t),o=new Set(n);if(a.size!==o.size)_b(e,r,i);else for(let t of a)if(!o.has(t)){_b(e,r,i);return}}function yb(e,t,n,r,i){(t.symbol!==n.symbol||t.coinType!==n.coinType)&&_b(e,r,i)}function bb(e,t,n,r,i){try{z_(t.coinType)!==n&&_b(e,r,i)}catch{_b(e,r,i)}}var xb=B({kind:W([`natural_language_intent`,`external_proposal`,`mcp_action_request`,`local_review_request`]),sourceId:F().min(1).max(160),capturedAt:ob,authority:G(`untrusted_until_review_regenerates_and_verifies`),userSelectionSource:W([`user_explicit`,`prior_user_explicit_context`]).optional()}).strict(),Sb=B({id:X,kind:W(Yy),network:G(`sui:mainnet`),source:F().min(1).max(240),verifiedAt:ob,fields:z(F().min(1).max(120)).min(1)}).strict(),Cb=hc(`factKind`,[B({id:X,factKind:G(`raw_quantity_amount`),sourceEvidenceId:X,role:W(Xy),asset:ub,rawAmount:sb}).strict(),B({id:X,factKind:G(`unit_metadata`),sourceEvidenceId:X,source:W([`pinned_sdk_metadata`,`verified_mainnet_onchain_metadata`]),coinType:lb,decimals:I().int().min(0).max(255)}).strict(),B({id:X,factKind:G(`gas_unresolved_status`),sourceEvidenceId:X,checkedAt:ob,status:G(`unresolved`),reason:F().min(1).max(240)}).strict(),B({id:X,factKind:G(`expiry_status`),sourceEvidenceId:X,checkedAt:ob,status:W([`current`,`expired`,`not_provided`,`not_applicable`]),expiresAt:ob.optional(),reason:F().min(1).max(240).optional()}).strict(),B({id:X,factKind:G(`quote_min_out`),sourceEvidenceId:X,quoteEvidenceId:F().min(1).max(120),minOutRaw:sb}).strict(),B({id:X,factKind:G(`slippage_policy`),sourceEvidenceId:X,policySource:W([`user_explicit`,`adapter_policy_from_quote_evidence`]),maxSlippageBps:I().int().min(0).max(1e4),minOutRaw:sb.optional()}).strict(),B({id:X,factKind:G(`object_ownership`),sourceEvidenceId:X,objectId:cb,ownerAccount:h_,ownership:W([`owned_by_account`,`shared_object`,`immutable_or_package`,`not_owned_by_account`])}).strict(),B({id:X,factKind:G(`simulation_result`),sourceEvidenceId:X,provider:Oy,checksEnabled:G(!0),simulatedAt:ob,status:W([`success`,`failed`,`unavailable`]),requiredFields:z(W(jy)).min(jy.length),missingFields:z(W(jy)).default([]),failureReason:F().min(1).max(240).optional()}).strict()]),wb=B({id:X,role:W(Xy),asset:ub,rawAmount:sb,unit:B({decimals:I().int().min(0).max(255),source:W([`pinned_sdk_metadata`,`verified_mainnet_onchain_metadata`]),sourceField:F().min(1).max(160),unitClaimId:X}).strict(),amountClaimId:X,displayOnly:B({amountDisplay:F().min(1).max(120),reason:G(`presentation_only_not_signing_input`)}).strict().optional()}).strict(),Tb=B({objectId:cb,ownerAccount:h_,ownershipClaimId:X}).strict(),Eb=B({source:G(`review_time_simulation`),checkedAt:ob,gasBudgetRaw:sb.optional(),gasBudgetClaimId:X.optional(),gasUsedRaw:sb.optional(),gasUsedClaimId:X.optional(),gasObjects:z(Tb).optional(),unresolvedReason:F().min(1).max(240).optional(),unresolvedClaimId:X.optional()}).strict().superRefine((e,t)=>{let n=e.gasBudgetRaw!==void 0||e.gasUsedRaw!==void 0;!n&&e.unresolvedReason===void 0&&t.addIssue({code:`custom`,message:`Expected gas evidence or unresolvedReason`}),n&&e.unresolvedReason!==void 0&&t.addIssue({code:`custom`,path:[`unresolvedReason`],message:`Resolved gas quantities must not include unresolvedReason`}),e.gasBudgetRaw!==void 0&&e.gasBudgetClaimId===void 0&&t.addIssue({code:`custom`,path:[`gasBudgetClaimId`],message:`gasBudgetRaw requires gasBudgetClaimId`}),e.gasBudgetRaw===void 0&&e.gasBudgetClaimId!==void 0&&t.addIssue({code:`custom`,path:[`gasBudgetClaimId`],message:`gasBudgetClaimId requires gasBudgetRaw`}),e.gasUsedRaw!==void 0&&e.gasUsedClaimId===void 0&&t.addIssue({code:`custom`,path:[`gasUsedClaimId`],message:`gasUsedRaw requires gasUsedClaimId`}),e.gasUsedRaw===void 0&&e.gasUsedClaimId!==void 0&&t.addIssue({code:`custom`,path:[`gasUsedClaimId`],message:`gasUsedClaimId requires gasUsedRaw`}),e.unresolvedReason!==void 0&&e.unresolvedClaimId===void 0&&t.addIssue({code:`custom`,path:[`unresolvedClaimId`],message:`unresolvedReason requires unresolvedClaimId`}),e.unresolvedReason===void 0&&e.unresolvedClaimId!==void 0&&t.addIssue({code:`custom`,path:[`unresolvedClaimId`],message:`unresolvedClaimId requires unresolvedReason`})}),Db=hc(`status`,[B({checkedAt:ob,status:G(`current`),expiresAt:ob,evidenceClaimId:X}).strict(),B({checkedAt:ob,status:G(`expired`),expiresAt:ob,evidenceClaimId:X}).strict(),B({checkedAt:ob,status:G(`not_provided`),evidenceClaimId:X,reason:F().min(1).max(240),expiresAt:uc().optional()}).strict(),B({checkedAt:ob,status:G(`not_applicable`),evidenceClaimId:X,reason:F().min(1).max(240),expiresAt:uc().optional()}).strict()]).superRefine((e,t)=>{e.status===`current`&&Date.parse(e.expiresAt)<=Date.parse(e.checkedAt)&&t.addIssue({code:`custom`,path:[`expiresAt`],message:`Current expiry evidence requires expiresAt after checkedAt`}),e.status===`expired`&&Date.parse(e.expiresAt)>Date.parse(e.checkedAt)&&t.addIssue({code:`custom`,path:[`expiresAt`],message:`Expired expiry evidence requires expiresAt at or before checkedAt`})}),Ob=B({status:W([`required_and_verified`,`not_required_for_action`,`missing`,`stale`]),quoteEvidenceId:F().min(1).max(120).optional(),quoteEvidenceClaimId:X.optional(),maxSlippageBps:I().int().min(0).max(1e4).optional(),minOutRaw:sb.optional(),policySource:W([`user_explicit`,`adapter_policy_from_quote_evidence`]).optional(),policyEvidenceClaimId:X.optional()}).strict().superRefine((e,t)=>{e.status===`required_and_verified`&&(e.quoteEvidenceId===void 0||e.quoteEvidenceClaimId===void 0||e.maxSlippageBps===void 0||e.minOutRaw===void 0||e.policySource===void 0||e.policyEvidenceClaimId===void 0)&&t.addIssue({code:`custom`,message:`Verified min-out evidence requires quoteEvidenceId, quoteEvidenceClaimId, maxSlippageBps, minOutRaw, policySource, and policyEvidenceClaimId`}),e.quoteEvidenceId!==void 0&&e.quoteEvidenceClaimId===void 0&&t.addIssue({code:`custom`,path:[`quoteEvidenceClaimId`],message:`quoteEvidenceId requires quoteEvidenceClaimId`}),e.quoteEvidenceId===void 0&&e.quoteEvidenceClaimId!==void 0&&t.addIssue({code:`custom`,path:[`quoteEvidenceClaimId`],message:`quoteEvidenceClaimId requires quoteEvidenceId`}),e.minOutRaw!==void 0&&e.quoteEvidenceClaimId===void 0&&t.addIssue({code:`custom`,path:[`quoteEvidenceClaimId`],message:`minOutRaw requires quoteEvidenceClaimId`}),e.maxSlippageBps!==void 0&&e.policySource===void 0&&t.addIssue({code:`custom`,path:[`policySource`],message:`maxSlippageBps requires policySource`}),e.policySource!==void 0&&e.policyEvidenceClaimId===void 0&&t.addIssue({code:`custom`,path:[`policyEvidenceClaimId`],message:`policySource requires policyEvidenceClaimId`}),e.policySource===void 0&&e.policyEvidenceClaimId!==void 0&&t.addIssue({code:`custom`,path:[`policyEvidenceClaimId`],message:`policyEvidenceClaimId requires policySource`})}),kb=B({checkedAt:ob,ownerAccount:h_,objects:z(B({objectId:cb,role:W([`input_coin`,`gas_coin`,`protocol_object`,`shared_object`,`receiving_object`]),ownership:W([`owned_by_account`,`shared_object`,`immutable_or_package`,`not_owned_by_account`]),evidenceClaimId:X}).strict()).min(1)}).strict(),Ab=B({evidenceClaimId:X,transactionDigest:g_,provider:Oy,checksEnabled:G(!0),simulatedAt:ob,status:W([`success`,`failed`,`unavailable`]),requiredFields:z(W(jy)).min(jy.length),missingFields:z(W(jy)).default([]),failureReason:F().min(1).max(240).optional()}).strict().refine(e=>e.status!==`success`||e.missingFields.length===0,{message:`Successful simulation evidence must not have missing required fields`}).refine(e=>jy.every(t=>e.requiredFields.includes(t)),{message:`Simulation evidence must include every required simulation field`}).refine(e=>e.status===`success`||e.failureReason!==void 0,{message:`Failed or unavailable simulation evidence requires failureReason`}).refine(e=>e.status!==`success`||e.failureReason===void 0,{message:`Successful simulation evidence must not include failureReason`}),jb=B({fields:z(W(Ay)).min(Ay.length),transactionDigest:g_,source:G(`review_model_or_adapter_equivalent`),purpose:G(`human_review_before_wallet_authorization`)}).strict().refine(e=>Ay.every(t=>e.fields.includes(t)),{message:`Human-readable review fields must include every required review field`}),Mb=B({runtimeStatus:G(`emitted_pre_handoff`),mcpAndReviewUiMayExpose:z(W([`human_readable_review`,`ptb_visualization_artifact`,`diagnostics`,`status_checks`])).min(1),prohibited:z(W(My)).min(1)}).strict().superRefine((e,t)=>{gb(t,e.prohibited,My,[`prohibited`],`prohibited`)}),Nb=B({schemaVersion:G(1),adapterId:F().min(1).max(120),protocol:F().min(1).max(120),actionKind:F().min(1).max(120),network:G(`sui:mainnet`),inputProvenance:xb,sourceReferences:z(Sb).min(1),evidenceClaims:z(Cb).min(1),rawQuantities:z(wb).min(1),gas:Eb,expiry:Db,slippageOrMinOut:Ob,objectOwnership:kb,simulation:Ab,humanReadableReview:jb,outputBoundary:Mb,reviewedTransactionDigest:g_}).strict().superRefine((e,t)=>{let n=new Set,r=new Map,i=new Map;e.sourceReferences.forEach((e,a)=>{n.has(e.id)&&t.addIssue({code:`custom`,path:[`sourceReferences`,a,`id`],message:`sourceReferences id must be unique: ${e.id}`}),n.add(e.id),r.has(e.id)||(r.set(e.id,e),i.set(e.id,a))});let a=new Set,o=new Map,s=new Map;e.evidenceClaims.forEach((e,n)=>{a.has(e.id)&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`id`],message:`evidenceClaims id must be unique: ${e.id}`}),a.add(e.id),o.has(e.id)||(o.set(e.id,e),s.set(e.id,n))});let c=(e,n)=>{if(e===void 0)return;let i=r.get(e);if(i!==void 0)return i;t.addIssue({code:`custom`,path:n,message:`source evidence id must reference sourceReferences[].id: ${e}`})},l=(e,n,r,a)=>{if(e===void 0)return;let o=c(e,r);if(o===void 0)return;let s=i.get(e),l=s===void 0?r:[`sourceReferences`,s];n.kinds.includes(o.kind)||t.addIssue({code:`custom`,path:[...l,`kind`],message:`${a} source kind must be one of ${n.kinds.join(`, `)}`}),hb(t,o.fields,n.fields,[...l,`fields`],`${a} sourceReferences fields`)},u=(e,n,r,i)=>{if(e===void 0){t.addIssue({code:`custom`,path:r,message:`${i} must reference evidenceClaims[].id`});return}let a=o.get(e);if(a===void 0)t.addIssue({code:`custom`,path:r,message:`${i} must reference evidenceClaims[].id: ${e}`});else{if(a.factKind!==n){let a=s.get(e),o=a===void 0?r:[`evidenceClaims`,a,`factKind`];t.addIssue({code:`custom`,path:o,message:`${i} evidence claim factKind must be ${n}`})}return a}};if(e.evidenceClaims.forEach((e,n)=>{e.factKind===`raw_quantity_amount`&&l(e.sourceEvidenceId,ib.raw_quantity_amount.byRole[e.role],[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].raw_quantity_amount`),e.factKind===`unit_metadata`&&l(e.sourceEvidenceId,ib.unit_metadata.bySource[e.source],[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].unit_metadata`),e.factKind===`gas_unresolved_status`&&l(e.sourceEvidenceId,ib.gas_unresolved_status,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].gas_unresolved_status`),e.factKind===`expiry_status`&&(l(e.sourceEvidenceId,ib.expiry_status[e.status],[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].expiry_status`),(e.status===`current`||e.status===`expired`)&&e.expiresAt===void 0&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`expiresAt`],message:`Current or expired expiry claim requires expiresAt`}),(e.status===`not_provided`||e.status===`not_applicable`)&&e.reason===void 0&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`reason`],message:`Unavailable expiry claim requires reason`}),(e.status===`not_provided`||e.status===`not_applicable`)&&e.expiresAt!==void 0&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`expiresAt`],message:`Unavailable expiry claim must not include expiresAt`}),e.status===`current`&&e.expiresAt!==void 0&&Date.parse(e.expiresAt)<=Date.parse(e.checkedAt)&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`expiresAt`],message:`Current expiry claim requires expiresAt after checkedAt`}),e.status===`expired`&&e.expiresAt!==void 0&&Date.parse(e.expiresAt)>Date.parse(e.checkedAt)&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`expiresAt`],message:`Expired expiry claim requires expiresAt at or before checkedAt`})),e.factKind===`quote_min_out`&&l(e.sourceEvidenceId,ib.quote_min_out,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].quote_min_out`),e.factKind===`slippage_policy`&&(l(e.sourceEvidenceId,ib.slippage_policy.bySource[e.policySource],[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].slippage_policy`),e.policySource===`adapter_policy_from_quote_evidence`&&e.minOutRaw===void 0&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`minOutRaw`],message:`Adapter-derived slippage policy claim requires minOutRaw`})),e.factKind===`object_ownership`&&l(e.sourceEvidenceId,ib.object_ownership,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].object_ownership`),e.factKind===`simulation_result`&&(l(e.sourceEvidenceId,ib.simulation_result,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].simulation_result`),e.status===`success`&&e.missingFields.length!==0&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`missingFields`],message:`Successful simulation claim must not have missing required fields`}),jy.every(t=>e.requiredFields.includes(t))||t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`requiredFields`],message:`Simulation claim must include every required simulation field`}),e.status!==`success`&&e.failureReason===void 0&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`failureReason`],message:`Failed or unavailable simulation claim requires failureReason`}),e.status===`success`&&e.failureReason!==void 0&&t.addIssue({code:`custom`,path:[`evidenceClaims`,n,`failureReason`],message:`Successful simulation claim must not include failureReason`}))}),e.rawQuantities.forEach((e,n)=>{let r=u(e.amountClaimId,`raw_quantity_amount`,[`rawQuantities`,n,`amountClaimId`],`rawQuantities[${n}].amountClaimId`);r?.factKind===`raw_quantity_amount`&&(Z(t,e.role,r.role,[`rawQuantities`,n,`role`],`rawQuantities[${n}].role`),Z(t,e.rawAmount,r.rawAmount,[`rawQuantities`,n,`rawAmount`],`rawQuantities[${n}].rawAmount`),yb(t,e.asset,r.asset,[`rawQuantities`,n,`asset`],`rawQuantities[${n}].asset`));let i=u(e.unit.unitClaimId,`unit_metadata`,[`rawQuantities`,n,`unit`,`unitClaimId`],`rawQuantities[${n}].unit.unitClaimId`);i?.factKind===`unit_metadata`&&(Z(t,e.unit.source,i.source,[`rawQuantities`,n,`unit`,`source`],`rawQuantities[${n}].unit.source`),Z(t,e.unit.decimals,i.decimals,[`rawQuantities`,n,`unit`,`decimals`],`rawQuantities[${n}].unit.decimals`),e.asset.coinType!==void 0&&Z(t,e.asset.coinType,i.coinType,[`rawQuantities`,n,`asset`,`coinType`],`rawQuantities[${n}].asset.coinType`))}),e.gas.gasBudgetRaw!==void 0){let n=u(e.gas.gasBudgetClaimId,`raw_quantity_amount`,[`gas`,`gasBudgetClaimId`],`gas.gasBudgetClaimId`);n?.factKind===`raw_quantity_amount`&&(Z(t,n.role,ab.gasBudgetClaimId.role,[`gas`,`gasBudgetClaimId`],`gas.gasBudgetClaimId role`),bb(t,n.asset,ab.gasBudgetClaimId.assetCoinType,[`gas`,`gasBudgetClaimId`],`gas.gasBudgetClaimId asset`),Z(t,e.gas.gasBudgetRaw,n.rawAmount,[`gas`,`gasBudgetRaw`],`gas.gasBudgetRaw`))}if(e.gas.gasUsedRaw!==void 0){let n=u(e.gas.gasUsedClaimId,`raw_quantity_amount`,[`gas`,`gasUsedClaimId`],`gas.gasUsedClaimId`);n?.factKind===`raw_quantity_amount`&&(Z(t,n.role,ab.gasUsedClaimId.role,[`gas`,`gasUsedClaimId`],`gas.gasUsedClaimId role`),bb(t,n.asset,ab.gasUsedClaimId.assetCoinType,[`gas`,`gasUsedClaimId`],`gas.gasUsedClaimId asset`),Z(t,e.gas.gasUsedRaw,n.rawAmount,[`gas`,`gasUsedRaw`],`gas.gasUsedRaw`))}if(e.gas.unresolvedReason!==void 0){let n=u(e.gas.unresolvedClaimId,`gas_unresolved_status`,[`gas`,`unresolvedClaimId`],`gas.unresolvedClaimId`);n?.factKind===`gas_unresolved_status`&&(Z(t,n.status,`unresolved`,[`gas`,`unresolvedClaimId`],`gas.unresolvedClaimId status`),Z(t,e.gas.checkedAt,n.checkedAt,[`gas`,`checkedAt`],`gas.checkedAt`),Z(t,e.gas.unresolvedReason,n.reason,[`gas`,`unresolvedReason`],`gas.unresolvedReason`))}e.gas.gasObjects?.forEach((e,n)=>{let r=u(e.ownershipClaimId,`object_ownership`,[`gas`,`gasObjects`,n,`ownershipClaimId`],`gas.gasObjects[${n}].ownershipClaimId`);r?.factKind===`object_ownership`&&(Z(t,e.objectId,r.objectId,[`gas`,`gasObjects`,n,`objectId`],`gas.gasObjects[${n}].objectId`),Z(t,e.ownerAccount,r.ownerAccount,[`gas`,`gasObjects`,n,`ownerAccount`],`gas.gasObjects[${n}].ownerAccount`),Z(t,r.ownership,ab.gasObjectOwnershipClaimId.ownership,[`gas`,`gasObjects`,n,`ownershipClaimId`],`gas.gasObjects[${n}].ownershipClaimId ownership`))});let d=u(e.expiry.evidenceClaimId,`expiry_status`,[`expiry`,`evidenceClaimId`],`expiry.evidenceClaimId`);if(d?.factKind===`expiry_status`&&(Z(t,e.expiry.status,d.status,[`expiry`,`status`],`expiry.status`),Z(t,e.expiry.checkedAt,d.checkedAt,[`expiry`,`checkedAt`],`expiry.checkedAt`),e.expiry.status===`current`||e.expiry.status===`expired`?Z(t,e.expiry.expiresAt,d.expiresAt,[`expiry`,`expiresAt`],`expiry.expiresAt`):Z(t,e.expiry.reason,d.reason,[`expiry`,`reason`],`expiry.reason`)),e.slippageOrMinOut.quoteEvidenceClaimId!==void 0){let n=u(e.slippageOrMinOut.quoteEvidenceClaimId,`quote_min_out`,[`slippageOrMinOut`,`quoteEvidenceClaimId`],`slippageOrMinOut.quoteEvidenceClaimId`);n?.factKind===`quote_min_out`&&(Z(t,e.slippageOrMinOut.quoteEvidenceId,n.quoteEvidenceId,[`slippageOrMinOut`,`quoteEvidenceId`],`slippageOrMinOut.quoteEvidenceId`),Z(t,e.slippageOrMinOut.minOutRaw,n.minOutRaw,[`slippageOrMinOut`,`minOutRaw`],`slippageOrMinOut.minOutRaw`))}if(e.slippageOrMinOut.minOutRaw!==void 0&&(e.rawQuantities.some(t=>t.role===`minimum_output`&&t.rawAmount===e.slippageOrMinOut.minOutRaw)||t.addIssue({code:`custom`,path:[`slippageOrMinOut`,`minOutRaw`],message:`slippageOrMinOut.minOutRaw must match a minimum_output rawQuantities entry`})),e.slippageOrMinOut.policyEvidenceClaimId!==void 0){let n=u(e.slippageOrMinOut.policyEvidenceClaimId,`slippage_policy`,[`slippageOrMinOut`,`policyEvidenceClaimId`],`slippageOrMinOut.policyEvidenceClaimId`);n?.factKind===`slippage_policy`&&(Z(t,e.slippageOrMinOut.policySource,n.policySource,[`slippageOrMinOut`,`policySource`],`slippageOrMinOut.policySource`),Z(t,e.slippageOrMinOut.maxSlippageBps,n.maxSlippageBps,[`slippageOrMinOut`,`maxSlippageBps`],`slippageOrMinOut.maxSlippageBps`),n.policySource===`adapter_policy_from_quote_evidence`&&Z(t,e.slippageOrMinOut.minOutRaw,n.minOutRaw,[`slippageOrMinOut`,`minOutRaw`],`slippageOrMinOut.minOutRaw`))}e.objectOwnership.objects.forEach((n,r)=>{let i=u(n.evidenceClaimId,`object_ownership`,[`objectOwnership`,`objects`,r,`evidenceClaimId`],`objectOwnership.objects[${r}].evidenceClaimId`);i?.factKind===`object_ownership`&&(Z(t,n.objectId,i.objectId,[`objectOwnership`,`objects`,r,`objectId`],`objectOwnership.objects[${r}].objectId`),Z(t,e.objectOwnership.ownerAccount,i.ownerAccount,[`objectOwnership`,`ownerAccount`],`objectOwnership.ownerAccount`),Z(t,n.ownership,i.ownership,[`objectOwnership`,`objects`,r,`ownership`],`objectOwnership.objects[${r}].ownership`))});let f=u(e.simulation.evidenceClaimId,`simulation_result`,[`simulation`,`evidenceClaimId`],`simulation.evidenceClaimId`);f?.factKind===`simulation_result`&&(Z(t,e.simulation.provider,f.provider,[`simulation`,`provider`],`simulation.provider`),Z(t,e.simulation.checksEnabled,f.checksEnabled,[`simulation`,`checksEnabled`],`simulation.checksEnabled`),Z(t,e.simulation.simulatedAt,f.simulatedAt,[`simulation`,`simulatedAt`],`simulation.simulatedAt`),Z(t,e.simulation.status,f.status,[`simulation`,`status`],`simulation.status`),vb(t,e.simulation.requiredFields,f.requiredFields,[`simulation`,`requiredFields`],`simulation.requiredFields`),vb(t,e.simulation.missingFields,f.missingFields,[`simulation`,`missingFields`],`simulation.missingFields`),Z(t,e.simulation.failureReason,f.failureReason,[`simulation`,`failureReason`],`simulation.failureReason`))}).superRefine((e,t)=>{let n=e.reviewedTransactionDigest;Z(t,e.humanReadableReview.transactionDigest,n,[`humanReadableReview`,`transactionDigest`],`humanReadableReview.transactionDigest`),Z(t,e.simulation.transactionDigest,n,[`simulation`,`transactionDigest`],`simulation.transactionDigest`)}),Pb=B({contractVersion:G(ky),artifactKind:G(`ptb_visualization`),generatedAt:ob,source:B({adapterId:F().min(1).max(120),planId:F().min(1).max(120).optional(),sourceKind:W([`review_time_generated_transaction_kind`,`review_time_ir`,`renderer_model`]),authority:G(`visualization_only_not_wallet_authorization`),renderer:B({name:F().min(1).max(120),packageName:F().min(1).max(120).optional(),version:F().min(1).max(80).optional()}).strict().optional()}).strict(),mermaid:B({diagramType:G(`flowchart`),text:pb(2e4,`mermaid.text`),namedText:pb(2e4,`mermaid.namedText`)}).strict(),diagnostics:z(B({severity:W([`info`,`warning`,`error`]),code:F().min(1).max(120),message:pb(512,`diagnostics.message`),source:W([`adapter`,`renderer`,`schema`,`simulation`])}).strict()).default([]),unsupportedUse:z(W(Ny)).min(1),executableMaterial:B({included:G(!1),policy:G(`mcp_and_review_ui_outputs_must_not_include_executable_transaction_material`)}).strict()}).strict().superRefine((e,t)=>{gb(t,e.unsupportedUse,Ny,[`unsupportedUse`],`unsupportedUse`)}),Fb=U(F(),R()),Ib=W(wy),Lb=W(Ty);W([`ready_for_wallet_review`,`refresh_required`,`blocked`]);var Rb=W(Ey);W([`proposed`,`awaiting_wallet`,`wallet_connected`,`ready_for_wallet_review`,`refresh_required`,`blocked`,`expired`,`awaiting_signature`,`submitting`,`awaiting_chain_result`,`stopped`,`request_failed`,`outcome_unknown`,`completed`]);var zb=B({id:F(),label:F(),status:W([`pass`,`warning`,`fail`]),message:F(),source:W([`registry`,`quote`,`wallet`,`simulation`,`adapter`,`network`,`proposal`])}),Bb=F().min(1),Vb=`human_readable_review`,Hb=`review_time_simulation`,Ub=B({stageCatalogId:F().min(1),adapterId:F(),protocol:F(),actionKind:F(),completedStages:z(Bb),missingStages:z(Bb)}).strict().superRefine((e,t)=>{let n=Wb(e.completedStages);n&&t.addIssue({code:`custom`,path:[`completedStages`],message:`completedStages contains duplicate stage '${n}'`});let r=Wb(e.missingStages);r&&t.addIssue({code:`custom`,path:[`missingStages`],message:`missingStages contains duplicate stage '${r}'`});for(let n of e.completedStages)e.missingStages.includes(n)&&t.addIssue({code:`custom`,path:[`missingStages`],message:`stage '${n}' cannot be both completed and missing`})});function Wb(e){let t=new Set;for(let n of e){if(t.has(n))return n;t.add(n)}}var Gb=B({symbol:F(),amount:F(),coinType:F().optional(),approx:L().optional()}).strict(),Kb=Gb.extend({amountKind:G(`display_intent`).default(`display_intent`)}),qb=B({outgoing:z(Kb),expectedIncoming:z(Kb),minimumIncoming:z(Kb).optional(),fees:z(Kb).optional()}),Jb=B({outgoing:z(Gb),expectedIncoming:z(Gb),minimumIncoming:z(Gb).optional(),fees:z(Gb).optional()}),Yb=B({before:z(Gb),after:z(Gb),delta:z(Gb)}),Xb=B({computationCostRaw:P_(`computationCostRaw`),storageCostRaw:P_(`storageCostRaw`),storageRebateRaw:P_(`storageRebateRaw`),nonRefundableStorageFeeRaw:P_(`nonRefundableStorageFeeRaw`)}).strict(),Zb=B({address:h_,coinType:F().min(1).max(512).refine(e=>{try{return z_(e)===e}catch{return!1}},`Expected a normalized Sui struct tag coin type`),amount:R_(`balanceChanges[].amount`)}).strict(),Qb=B({objectId:h_,objectType:F().min(1).max(512).optional(),inputState:F().min(1).max(80),outputState:F().min(1).max(80),idOperation:F().min(1).max(80)}).strict(),$b=B({provider:Oy,checksEnabled:L(),success:L(),gasCostSummary:Xb.optional(),balanceChanges:z(Zb).optional(),objectChanges:z(Qb).optional(),error:F().optional()}),ex=$b,tx=$b.extend({checksEnabled:G(!0),success:G(!0),gasCostSummary:Xb,balanceChanges:z(Zb),objectChanges:z(Qb),error:uc().optional()}).strict(),nx=B({role:W([`input`,`expected_output`,`minimum_output`,`fee`]),symbol:F(),coinType:F().min(1).max(512).refine(e=>{try{return z_(e),!0}catch{return!1}},`Expected a Sui struct tag coin type`),decimals:I().int().min(0).max(255),rawAmount:P_(`rawAmount`),rawAmountSource:G(`quote_policy_evidence`),displayAmount:F().optional(),displayAmountSource:G(`user_display_intent_not_signing_input`).optional()}).strict().superRefine((e,t)=>{e.displayAmount!==void 0&&e.displayAmountSource===void 0&&t.addIssue({code:`custom`,path:[`displayAmountSource`],message:`displayAmountSource is required when displayAmount is present`}),e.displayAmount===void 0&&e.displayAmountSource!==void 0&&t.addIssue({code:`custom`,path:[`displayAmount`],message:`displayAmount is required when displayAmountSource is present`})}),rx=B({role:W([`connected_account`,`output_recipient`]),address:h_}).strict(),ix=B({kind:G(`swap_output_asset`),symbol:F(),coinType:F().min(1).max(512).refine(e=>{try{return z_(e),!0}catch{return!1}},`Expected a Sui struct tag coin type`),protocol:F(),poolKey:F(),direction:W([`base_to_quote`,`quote_to_base`])}).strict(),ax=B({id:F(),label:F(),source:H([W([`registry`,`quote`,`wallet`,`simulation`,`adapter`,`network`,`proposal`]),W([`transaction_material`,`digest_commitment`])]),summary:F()}).strict(),ox=B({id:F(),label:F(),reason:F()}).strict(),sx=B({proposedAction:B({title:F(),summary:F(),actionKind:F(),adapterId:F(),protocol:F(),network:G(`sui:mainnet`)}).strict(),recipients:z(rx),evidenceUsed:z(ax),missingEvidence:z(ox),requiredUserChoices:z(ox),unsupportedClaims:z(ox),freshness:B({status:G(`current`),evaluatedAt:F(),expiresAt:F(),reason:F()}).strict(),blockingChecks:z(zb)}).strict(),cx=B({assetFlow:B({outgoing:z(nx),expectedIncoming:z(nx),minimumIncoming:z(nx),fees:z(nx)}).strict(),targets:z(ix)}).strict(),lx=hc(`kind`,[sx.extend({kind:G(`swap_human_readable_review`)}).merge(cx)]),ux=B({id:F(),actionKind:F(),adapterId:F(),protocol:F(),title:F(),summary:F(),assetFlowPreview:qb,reviewModel:Cy.optional(),adapterData:Fb,createdAt:F(),expiresAt:F().optional(),registryVersion:F().optional(),preliminaryChecks:z(zb).optional()}),dx=B({planId:F(),reviewSessionId:F(),account:h_,checks:z(zb),assetFlowActual:Jb.optional(),beforeAfterBalance:Yb.optional(),simulation:ex.optional(),humanReadableReview:lx.optional(),transactionReviewData:Nb.optional(),ptbVisualization:Pb.optional(),adapterLifecycle:Ub.optional(),updatedAt:F()}),fx=hc(`status`,[dx.extend({status:G(`ready_for_wallet_review`),evidenceValidity:uc().optional(),blockedReason:uc().optional(),refreshReason:uc().optional()}),dx.extend({status:G(`refresh_required`),evidenceValidity:G(`invalidated`).optional(),refreshReason:Lb,blockedReason:uc().optional()}),dx.extend({status:G(`blocked`),evidenceValidity:G(`invalidated`).optional(),blockedReason:Ib,refreshReason:uc().optional()})]).superRefine((e,t)=>{if(e.evidenceValidity===`invalidated`)for(let n of Dy)e[n]!==void 0&&t.addIssue({code:`custom`,path:[n],message:`Invalidated review evidence cannot carry current material-derived facts`});let n=e.adapterLifecycle;if(n!==void 0&&px(e,t),e.humanReadableReview!==void 0&&n===void 0&&t.addIssue({code:`custom`,path:[`humanReadableReview`],message:`humanReadableReview requires adapterLifecycle evidence stage provenance`}),e.simulation!==void 0&&n===void 0&&t.addIssue({code:`custom`,path:[`simulation`],message:`simulation requires adapterLifecycle evidence stage provenance`}),e.ptbVisualization!==void 0){let e=n?.completedStages??[];e.includes(`transaction_material_build_or_verify`)&&e.includes(`digest_commitment`)||t.addIssue({code:`custom`,path:[`ptbVisualization`],message:`ptbVisualization requires completed transaction material and digest commitment lifecycle stages`})}let r=e.status===`ready_for_wallet_review`;e.transactionReviewData!==void 0&&!r&&t.addIssue({code:`custom`,path:[`transactionReviewData`],message:`transactionReviewData is only valid on ready_for_wallet_review`}),e.status===`ready_for_wallet_review`&&n!==void 0&&(e.transactionReviewData===void 0&&t.addIssue({code:`custom`,path:[`transactionReviewData`],message:`ready_for_wallet_review requires an emitted wallet review contract`}),(n===void 0||n.missingStages.length!==0)&&t.addIssue({code:`custom`,path:[`adapterLifecycle`],message:`ready_for_wallet_review requires a completed adapterLifecycle with no missing stages`}),e.humanReadableReview===void 0&&t.addIssue({code:`custom`,path:[`humanReadableReview`],message:`ready_for_wallet_review requires humanReadableReview public evidence`}),e.simulation===void 0&&t.addIssue({code:`custom`,path:[`simulation`],message:`ready_for_wallet_review requires successful simulation public evidence`})),e.status===`blocked`&&(e.blockedReason===`producer_stage_missing`&&n===void 0&&t.addIssue({code:`custom`,path:[`adapterLifecycle`],message:`producer_stage_missing requires adapterLifecycle with at least one missing stage`}),e.blockedReason===`producer_stage_missing`&&n!==void 0&&n.missingStages.length===0&&t.addIssue({code:`custom`,path:[`blockedReason`],message:`producer_stage_missing requires at least one adapterLifecycle.missingStages entry`}),e.blockedReason===`wallet_review_contract_emit_missing`&&e.transactionReviewData!==void 0&&t.addIssue({code:`custom`,path:[`transactionReviewData`],message:`wallet_review_contract_emit_missing requires the wallet review contract to be absent`}),e.blockedReason===`wallet_review_contract_emit_missing`&&n===void 0&&t.addIssue({code:`custom`,path:[`adapterLifecycle`],message:`wallet_review_contract_emit_missing requires adapterLifecycle`}),e.blockedReason===`wallet_review_contract_emit_missing`&&n!==void 0&&n.missingStages.length!==0&&t.addIssue({code:`custom`,path:[`blockedReason`],message:`wallet_review_contract_emit_missing requires a completed adapterLifecycle with no missing stages`}),e.blockedReason===`wallet_review_contract_emit_missing`&&e.evidenceValidity!==`invalidated`&&e.humanReadableReview===void 0&&t.addIssue({code:`custom`,path:[`humanReadableReview`],message:`wallet_review_contract_emit_missing requires humanReadableReview public evidence`}),e.blockedReason===`wallet_review_contract_emit_missing`&&e.evidenceValidity!==`invalidated`&&e.simulation===void 0&&t.addIssue({code:`custom`,path:[`simulation`],message:`wallet_review_contract_emit_missing requires simulation public evidence`}))});function px(e,t){let n=e.adapterLifecycle;n&&(e.humanReadableReview!==void 0&&mx(t,n,Vb,[`humanReadableReview`]),e.simulation!==void 0&&(mx(t,n,Hb,[`simulation`]),mx(t,n,Vb,[`simulation`]),hx(t,e.simulation,[`simulation`])),n.missingStages.includes(Hb)&&e.simulation!==void 0&&t.addIssue({code:`custom`,path:[`simulation`],message:`simulation public evidence cannot be present while review_time_simulation is missing`}),n.missingStages.includes(Vb)&&e.humanReadableReview!==void 0&&t.addIssue({code:`custom`,path:[`humanReadableReview`],message:`humanReadableReview public evidence cannot be present while human_readable_review is missing`}))}function mx(e,t,n,r){t.completedStages.includes(n)||e.addIssue({code:`custom`,path:r,message:`${r.join(`.`)} requires completed adapterLifecycle stage '${n}'`}),t.missingStages.includes(n)&&e.addIssue({code:`custom`,path:r,message:`${r.join(`.`)} cannot be present while adapterLifecycle stage '${n}' is missing`})}function hx(e,t,n){tx.safeParse(t).success||e.addIssue({code:`custom`,path:n,message:`simulation public evidence requires a successful checks-enabled review-time simulation projection`})}var gx=B({topic:F().min(1),grants:O_,expiresAt:F().datetime(),walletName:F().optional()}).strict(),_x={topic:F().min(1),lifecycleRevision:I().int().positive(),grantRevisions:S_},vx=hc(`status`,[B({..._x,status:G(`present`),session:gx}).strict(),B({..._x,status:W([`absent`,`unusable`])}).strict()]);B({chainId:G(b_),lifecycleRevision:I().int().positive(),grantRevision:I().int().nonnegative()});var yx=B({runId:Z_,sequence:I().int().positive(),observedAt:F().datetime()}).strict();yx.extend({sessions:z(vx)}).strict();var bx=F().uuid(),xx={operationId:bx,walletRunId:Z_},Sx=hc(`action`,[B({action:G(`connect`),...xx,chains:C_}).strict(),B({action:G(`disconnect`),...xx,connectionId:F().min(1),impactId:F().min(1)}).strict()]);B({}).strict();var Cx=B({operationId:bx,cardId:F().min(1),action:W([`connect`,`disconnect`]),status:W([`running`,`completed`,`failed`,`stopped`]),connectionId:F().min(1),createdAt:F().datetime(),updatedAt:F().datetime(),expiresAt:F().datetime(),settlementPending:L(),message:F().optional(),endReason:W([`user_stopped`,`expired`,`run_ended`]).optional()}).strict();Cx.pick({operationId:!0,action:!0,status:!0,settlementPending:!0});var wx=`A wallet connection provides account context; it is not a transaction approval or proof of address ownership.`,Tx=`Review evidence is not a safety guarantee. Only an explicit card action and wallet approval may authorize this exact transaction.`,Ex=iv.extend({sessionPresence:W([`present`,`absent`,`unusable`,`unconfirmed`]),chainStates:z(av).optional(),disconnectImpact:B({impactId:F(),requestCount:I().int().nonnegative(),chains:C_}).strict().optional()});W([`awaiting_approval`,`disconnect_pending`,`cleanup_pending`]);var Dx=B({action:W([`prepare_review`,`request_signature`]),connectionId:F().min(1),walletRunId:Z_,account:h_,reviewRevision:I().int().nonnegative()}).strict(),Ox=B({action:W([`cancel`,`stop_waiting`,`read_result`])}).strict(),kx=H([Sx,B({action:G(`stop_connection`),operationId:F().uuid()}).strict(),Dx,Ox]),Ax=H([Sx.options[0],Dx.extend({action:G(`prepare_review`)})]);function jx(e,t){e.reviewTarget&&(e.review?.account&&e.review.account!==e.reviewTarget.account||e.request&&e.request.account!==e.reviewTarget.account)&&t.addIssue({code:`custom`,path:[`reviewTarget`],message:`The fixed review target must match its recorded account and request.`})}var Mx=B({kind:W(lv),message:F().optional(),reason:F().optional()}).strict(),Nx={allowedActions:z(W(cv)),actionRemainingMs:I().int().nonnegative(),nextStateReadAfterMs:I().int().nonnegative().optional(),observe:L(),walletAvailability:ev,walletObservation:yx.optional(),progress:tv,nextStep:Mx},Px=B({...Nx,kind:G(`connect`),mode:G(`connect`),allowedActions:z(W([`connect`,`cancel`,`stop_connection`])),boundary:G(wx),requestedChains:C_,operation:Cx.optional(),automaticAction:Sx.options[0].optional()}).strict(),Fx=B({...Nx,kind:G(`disconnect`),mode:G(`disconnect`),allowedActions:z(W([`disconnect`,`cancel`])),boundary:G(wx),connection:Ex.optional(),operation:Cx.optional()}).strict(),Ix=B({reviewSessionId:F(),plan:ux,reviewRevision:I().int().nonnegative(),status:Rb,account:F().optional(),preparing:L(),accountRequestPending:G(!0).optional(),error:F().optional(),state:fx.optional()}).strict(),Lx=B({connectionId:F(),account:h_}).strict(),Rx=F().regex(/^-?[0-9]+$/).optional(),zx=hc(`kind`,[Px,Fx,B({...Nx,kind:G(`review`),mode:W([`review`,`review_manage`]),allowedActions:z(W([`prepare_review`,`request_signature`,`read_result`,`stop_waiting`,`cancel`])),boundary:G(Tx),reviewTarget:Lx.optional(),review:Ix,walletName:F().optional(),acceptedWalletRunId:Z_.optional(),automaticAction:Dx.extend({action:G(`prepare_review`)}).optional(),request:X_.optional(),receipt:R().optional(),netGasMist:Rx,observationStopped:L().optional()}).strict().superRefine(jx)]),Bx=B({message:F(),recordedAt:F().datetime()}).strict(),Vx={allowedActions:z(uc()),observe:G(!1),actionRemainingMs:G(0),result:Bx};B({...Vx,kind:W([`connect`,`disconnect`]),result:Bx.extend({pendingWork:W([`approval_response`,`session_removal`,`session_status`]).optional()}),walletName:F().optional(),networks:z(B({chainId:x_,status:W([`bound`,`not_approved`,`multiple_accounts`,`invalid_response`])}).strict())}).strict(),B({...Vx,kind:G(`review`),mode:W([`review`,`review_manage`]),review:Ix.optional(),reviewTarget:Lx.optional(),request:X_.optional(),receipt:R().optional(),netGasMist:Rx,observationStopped:L().optional(),boundary:G(Tx)}).strict().superRefine(jx);var Hx=`sui-mcp.local-data`,Ux=16777216,Q=F().uuid(),Wx=I().int().nonnegative().safe(),Gx=F().regex(/^[a-f0-9]{64}$/),Kx=hc(`status`,[B({status:G(`no_file`)}).strict(),B({status:G(`receiving`)}).strict(),B({status:G(`checking`)}).strict(),B({status:G(`check_required`),message:F().min(1)}).strict(),B({status:G(`can_restore`)}).strict(),B({status:G(`cannot_restore`),reason:W([`invalid_backup`,`file_unavailable`,`wallet_request_unsettled`,`operation_busy`,`input_unavailable`,`check_failed`]),message:F().min(1)}).strict()]);B({fileId:Q,sha256:Gx,totalSize:Wx,dataEpoch:Wx,userDataRevision:Wx,check:Kx}).strict();var qx=hc(`kind`,[B({kind:G(`set_endpoint`),endpoint:W([`grpc`,`graphql`]),value:F().min(1)}).strict(),B({kind:G(`restore_endpoint`),endpoint:W([`grpc`,`graphql`])}).strict(),B({kind:W([`import_local_data`,`reset_local_data`,`restart_wallet_service`])}).strict()]),Jx=hc(`kind`,[B({kind:G(`clear_read_address`)}).strict(),...qx.options,B({kind:G(`set_wallet_networks`),chains:C_}).strict(),B({kind:G(`download_backup`)}).strict()]);B({operationStatus:B({operationId:F().uuid()}).strict().optional(),backupDelivery:B({operationId:F().uuid(),fileId:F().uuid()}).strict().optional()}).strict().refine(e=>!(e.operationStatus&&e.backupDelivery),`Choose exactly one card purpose.`);var Yx=W([`acknowledged`,`not_completed`,`unconfirmed`,`unsupported`,`not_sent`]),Xx=B({method:G(`ui/download-file`),code:G(-32601)}).strict(),Zx=W([`acknowledged`,`cancelled`,`expired`,`server_restarted`,`data_replaced`,`source_unavailable`,`stored_locally`,`local_save_failed`]),Qx=B({device:F().regex(/^\d+$/),inode:F().regex(/^\d+$/)}).strict(),$x=W([`not_published`,`target_conflict`,`source_unavailable`,`interrupted`]),eS=B({status:W([`needs_consent`,`saving`,`saved`,`failed`]),attemptId:Q,fileId:Q,sha256:Gx,totalSize:Wx,destination:F(),ownerId:F().min(1),currentSaveAttemptId:Q.optional(),attempts:z(B({saveAttemptId:Q,cardId:F().min(1),previousSaveAttemptId:Q.optional(),admittedAt:F().datetime(),allowPossibleCopy:L()}).strict()),sourceIdentity:Qx.optional(),savedAt:F().datetime().optional(),failure:$x.optional()}).strict().superRefine((e,t)=>{(e.status===`needs_consent`?e.attempts.length!==0||e.currentSaveAttemptId!==void 0:!e.currentSaveAttemptId||!e.attempts.some(t=>t.saveAttemptId===e.currentSaveAttemptId))&&t.addIssue({code:`custom`,message:`A local save must identify its admitted attempt.`}),(new Set(e.attempts.map(e=>e.saveAttemptId)).size!==e.attempts.length||e.status===`saved`!=(e.savedAt!==void 0)||e.status===`saved`&&!e.sourceIdentity||e.status===`failed`!=(e.failure!==void 0))&&t.addIssue({code:`custom`,message:`Local save evidence must match its state.`})});B({currentAttemptId:Q,attempts:z(B({attemptId:Q,cardId:F().min(1),admittedAt:F().datetime(),previousAttemptId:Q.optional(),hostReport:Yx.optional(),failure:Xx.optional()}).strict()).min(1),readyAt:F().datetime().optional(),expiresAt:F().datetime().optional(),endReason:Zx.optional(),localSave:eS.optional()}).strict().superRefine((e,t)=>{(new Set(e.attempts.map(e=>e.attemptId)).size!==e.attempts.length||!e.attempts.some(t=>t.attemptId===e.currentAttemptId)||e.readyAt===void 0!=(e.expiresAt===void 0))&&t.addIssue({code:`custom`,message:`Download attempts and lifetime must identify one stored snapshot.`}),(e.endReason===`stored_locally`&&e.localSave?.status!==`saved`||e.endReason===`local_save_failed`&&e.localSave?.status!==`failed`||e.attempts.some(e=>e.hostReport===`unsupported`!=(e.failure!==void 0))||e.localSave&&(e.localSave.attemptId!==e.currentAttemptId||!e.attempts.some(t=>t.attemptId===e.currentAttemptId&&t.hostReport===`unsupported`)||e.localSave.status===`saving`&&e.endReason!==void 0||e.localSave.status===`saved`!=(e.endReason===`stored_locally`)))&&t.addIssue({code:`custom`,message:`Local saving requires the current download's unsupported report.`})});var tS=W([`settings_retry_download`,`settings_report_download`,`settings_cancel_download`,`settings_store_backup`]),nS=hc(`action`,[B({action:G(`settings_clear_read_address`),operationId:Q,connectionId:F().min(1),account:F().min(1)}).strict(),B({action:G(`settings_save_wallet_networks`),operationId:Q,chains:C_.transform(w_),expectedChains:C_.transform(w_)}).strict(),B({action:G(`settings_download_backup`),operationId:Q,attemptId:Q}).strict(),B({action:G(`settings_retry_download`),operationId:Q,fileId:Q,previousAttemptId:Q,attemptId:Q}).strict(),B({action:G(`settings_report_download`),operationId:Q,fileId:Q,attemptId:Q,status:Yx,failure:Xx.optional()}).strict().refine(e=>e.status===`unsupported`==(e.failure!==void 0),`Only unsupported downloads require the exact method failure.`),B({action:G(`settings_store_backup`),operationId:Q,fileId:Q,attemptId:Q,saveAttemptId:Q,previousSaveAttemptId:Q.optional(),allowPossibleCopy:L()}).strict(),B({action:G(`settings_cancel_download`),operationId:Q,fileId:Q,attemptId:Q}).strict(),B({action:G(`settings_select`),draft:qx}).strict(),B({action:G(`settings_prepare`),operationId:Q}).strict(),B({action:G(`settings_begin_upload`),operationId:Q,name:F().min(1),totalSize:Wx.max(Ux),sha256:Gx}).strict(),B({action:G(`settings_upload_chunk`),operationId:Q,fileId:Q,offset:Wx.max(Ux),chunkBase64:F()}).strict(),B({action:G(`settings_seal_upload`),operationId:Q,fileId:Q}).strict(),B({action:G(`settings_confirm`),operationId:Q,preparationId:Q}).strict(),B({action:G(`settings_back`),operationId:Q}).strict(),B({action:G(`settings_cancel`)}).strict()]),rS=B({outcome:W([`completed`,`failed`,`interrupted`,`superseded`]),recordedAt:F().datetime(),message:F().min(1),details:U(F(),R()).optional(),completionScope:G(`backup_delivery`).optional()}).strict(),iS=B({storedValue:F(),effectiveValue:F(),source:W([`environment`,`local_db`,`builtin_default`]),pendingStoredValue:F().optional(),appliesAfter:G(`mcp_server_restart`).optional()}).strict(),aS=B({endpoint:W([`grpc`,`graphql`]),key:W([`suiGrpcUrl`,`suiGraphqlUrl`]),value:F().min(1),status:W([`saved`,`reset`]),storedValue:F(),effectiveValue:F(),source:iS.shape.source}).strict().refine(e=>e.key===(e.endpoint===`grpc`?`suiGrpcUrl`:`suiGraphqlUrl`),`The endpoint kind and preference key must agree.`),oS=I().int().nonnegative().safe(),sS=B({accounts:oS,reviewSessions:oS,reviewStateSnapshots:oS,reviewStatusTransitions:oS,reviewExecutions:oS,reviewRequests:oS,outcomeUnknownRequests:oS,externalActivityScans:oS,externalActivityTransactions:oS,localSettings:oS}).strict(),cS=B({status:G(`valid`),format:G(Hx),network:G(`mainnet`),exportedAt:F().datetime(),currentCounts:sS,incomingCounts:sS,willReplace:G(!0),restartRequiredAfterImport:L()}).strict(),lS=B({kind:G(`settings`),operationId:Q,phase:W([`draft`,`uploading`,`sealed`,`prepared`,`executing`,`stopping`,`starting`,`terminal`]),draft:Jx.optional(),preparationId:Q.optional(),preparation:U(F(),R()).optional(),file:B({fileId:Q,displayName:F(),totalSize:Wx,receivedSize:Wx,sha256:Gx,sealed:L(),cleanup:W([`pending`,`complete`,`failed`])}).strict().optional(),download:B({availability:W([`preparing`,`available`,`ended`]),currentAttemptId:Q,hostReport:Yx.optional(),previousUnconfirmed:L(),endReason:Zx.optional(),expiresAt:F().datetime().optional(),remainingMs:Wx.optional(),localSave:B({status:W([`needs_consent`,`saving`,`saved`,`failed`]),currentSaveAttemptId:Q.optional(),failure:$x.optional(),savedAt:F().datetime().optional()}).strict().optional(),allowedFileActions:z(tS)}).strict().optional(),restoreCheck:Kx.optional(),backupLocation:B({directory:F().min(1),filename:F().min(1)}).strict().optional(),result:rS.optional(),temporaryFileCleanup:W([`pending`,`complete`,`failed`]).optional(),priorRunId:Q.optional(),nextRunId:Q.optional(),supersedesOperationId:Q.optional(),supersededByOperationId:Q.optional(),allowedActions:z(W(nS.options.map(e=>e.shape.action.value))),observe:L(),facts:B({server:B({name:F(),version:F(),network:G(`mainnet`)}).strict(),localSettings:B({suiGrpcUrl:iS,suiGraphqlUrl:iS,walletConnectionChains:C_}).strict(),readAddress:F().optional(),readConnectionId:F().optional(),assetReadAccount:sv,walletAvailability:ev,connectionReconciliationRequired:G(!0).optional(),observedAt:F().datetime().optional(),counts:sS}).strict().optional()}).strict().superRefine((e,t)=>{if(e.download&&(e.draft?.kind!==`download_backup`||!e.file||e.download.availability===`available`&&(!e.file.sealed||e.download.endReason||!e.download.expiresAt)||e.download.availability===`ended`&&!e.download.endReason)&&t.addIssue({code:`custom`,message:`Download delivery must describe its own snapshot and lifetime.`}),e.draft?.kind===`download_backup`&&e.preparation!==void 0&&t.addIssue({code:`custom`,message:`Private download preparation is not public preparation data.`}),e.restoreCheck&&(e.draft?.kind!==`import_local_data`||e.result)&&t.addIssue({code:`custom`,message:`Restore checks belong to an uncompleted import preparation.`}),e.restoreCheck?.status===`can_restore`&&(e.phase!==`prepared`||!e.file?.sealed||!e.allowedActions.includes(`settings_confirm`))&&t.addIssue({code:`custom`,message:`Restore availability requires a sealed file and current confirmation.`}),e.draft?.kind===`import_local_data`&&e.restoreCheck?.status!==`can_restore`&&e.allowedActions.includes(`settings_confirm`)&&t.addIssue({code:`custom`,message:`An unchecked or blocked import cannot offer confirmation.`}),e.restoreCheck?.status===`receiving`&&(!e.file||e.file.sealed||![`draft`,`uploading`].includes(e.phase))&&t.addIssue({code:`custom`,message:`Receiving requires the selected unsealed upload.`}),e.restoreCheck?.status===`check_required`&&(!e.file?.sealed||e.phase!==`sealed`)&&t.addIssue({code:`custom`,message:`A new check requires the same complete sealed upload.`}),e.restoreCheck?.status===`cannot_restore`&&e.restoreCheck.reason===`invalid_backup`&&(e.phase===`prepared`||e.allowedActions.includes(`settings_prepare`))&&t.addIssue({code:`custom`,message:`A rejected backup requires an explicit new selection.`}),e.backupLocation&&(e.result?.outcome!==`completed`||e.draft?.kind!==`download_backup`||e.download?.localSave?.status!==`saved`||e.download.endReason!==`stored_locally`)&&t.addIssue({code:`custom`,message:`A backup location requires its recorded successful export.`}),e.download?.localSave?.status===`saved`&&!e.backupLocation&&t.addIssue({code:`custom`,message:`A saved backup must identify its verified location.`}),e.temporaryFileCleanup&&!e.result&&t.addIssue({code:`custom`,message:`Cleanup of an applied or ended operation requires its recorded result.`}),(e.phase===`terminal`!=(e.result!==void 0)||e.phase===`terminal`&&(e.observe||e.allowedActions.length||e.download?.allowedFileActions.length))&&t.addIssue({code:`custom`,message:`A terminal Settings result cannot grant input or observation.`}),e.phase===`prepared`&&(!e.preparationId||!e.draft||!e.preparation)&&t.addIssue({code:`custom`,message:`Settings confirmation requires a prepared identity and facts.`}),e.phase===`prepared`&&e.draft?.kind===`import_local_data`&&!cS.safeParse(e.preparation?.preview).success&&t.addIssue({code:`custom`,path:[`preparation`,`preview`],message:`Import confirmation requires the validated current and incoming read context and record counts.`}),e.phase===`prepared`&&(e.draft?.kind===`set_endpoint`||e.draft?.kind===`restore_endpoint`)){let n=aS.safeParse(e.preparation?.endpoint);(!n.success||n.data.endpoint!==e.draft.endpoint||n.data.status!==(e.draft.kind===`set_endpoint`?`saved`:`reset`)||e.draft.kind===`set_endpoint`&&n.data.value!==e.draft.value)&&t.addIssue({code:`custom`,path:[`preparation`,`endpoint`],message:`Endpoint confirmation must name its exact prepared target.`})}e.file&&e.file.receivedSize>e.file.totalSize&&t.addIssue({code:`custom`,message:`Received content exceeds the selected file.`})}),uS=65536;function dS(e){return new TextEncoder().encode(JSON.stringify(e)).length}function fS(e){let t=uS-dS(e);return t>0?3*Math.floor(t/4):0}function pS(e){if(!e||typeof e!=`object`)return;let t=structuredClone(e);if(t.method===`tools/call`&&t.params?.name===`ui_act_card`&&t.params.arguments?.input?.action===`settings_upload_chunk`)return t.id=2**53-1,t.params.arguments.revision=2**53-1,t.params.arguments.input.offset=Ux,t.params.arguments.input.chunkBase64=``,fS(t)}var mS={uiOpenAccount:`ui_open_account`,uiOpenReceipt:`ui_open_receipt`,uiOpenChart:`ui_open_chart`,uiReadCard:`ui_read_card`,uiSubmitCard:`ui_submit_card`,uiActCard:`ui_act_card`,uiReadSettingsFile:`ui_read_settings_file`,sessionOpenReviewManagement:`session_open_review_management`,readGetServerStatus:`read_get_server_status`,readListSupportedProtocols:`read_list_supported_protocols`,readListDeepbookPools:`read_list_deepbook_pools`,readListDeepbookTokens:`read_list_deepbook_tokens`,readInspectDeepbookOrderbook:`read_inspect_deepbook_orderbook`,readGetDeepbookMidPrice:`read_get_deepbook_mid_price`,readGetDeepbookUsdcPriceHistory:`read_get_deepbook_usdc_price_history`,readGetDeepbookUsdcPriceAtTime:`read_get_deepbook_usdc_price_at_time`,readQuoteDeepbookAction:`read_quote_deepbook_action`,readQuoteDeepbookDisplayAmount:`read_quote_deepbook_display_amount`,readSummarizeDeepbookAccountInventory:`read_summarize_deepbook_account_inventory`,readSummarizeWalletAssets:`read_summarize_wallet_assets`,readClassifyWalletAssets:`read_classify_wallet_assets`,readListSettlementAssetGroups:`read_list_settlement_asset_groups`,readSummarizeSettlementAssetGroupParity:`read_summarize_settlement_asset_group_parity`,readPreviewIntentEvidence:`read_preview_intent_evidence`,readListReviewActivity:`read_list_review_activity`,readSummarizeReviewFunnel:`read_summarize_review_funnel`,readGetReviewSessionDetail:`read_get_review_session_detail`,readInspectSuiTransaction:`read_inspect_sui_transaction`,readScanSuiAccountActivity:`read_scan_sui_account_activity`,readSummarizeSuiActivityScan:`read_summarize_sui_activity_scan`,readScanSuiFunctionActivity:`read_scan_sui_function_activity`,readSummarizeSuiFunctionActivityScan:`read_summarize_sui_function_activity_scan`,readSummarizeSuiAccountActivity:`read_summarize_sui_account_activity`,readGetAccountAssetTimeline:`read_get_account_asset_timeline`,settingsCreateLocalSettingsSession:`settings_create_local_settings_session`,settingsGetLocalSettings:`settings_get_local_settings`,actionStartReview:`action_start_review`,actionCreateProposalReview:`action_create_proposal_review`,sessionOpenWalletDisconnectionCard:`session_open_wallet_disconnection_card`,sessionOpenWalletConnectionCard:`session_open_wallet_connection_card`,sessionGetWalletConnectionCard:`session_get_wallet_connection_card`,sessionWaitWalletConnectionCard:`session_wait_wallet_connection_card`,sessionGetInteractionStatus:`session_get_interaction_status`,sessionGetReviewStatus:`session_get_review_status`,sessionGetExecutionResult:`session_get_execution_result`,sessionWaitExecutionResult:`session_wait_execution_result`,accountGetActiveAccount:`account_get_active_account`},hS=B({connectionId:F().min(1),pairingUri:F().startsWith(`wc:`),expiresAt:F().datetime()}).strict(),gS=W([`account`,`receipt`,`chart`,`connect`,`disconnect`,`review`,`settings`]),_S=B({cardId:F().min(1),kind:gS,state:W([`ready`,`running`,`closed`]),revision:I().int().nonnegative(),createdAt:F().datetime(),expiresAt:F().datetime(),input:U(F(),R()),data:R().optional(),reason:W([`completed`,`expired`,`failed`,`server_restarted`,`cancelled`]).optional(),error:F().optional()}).strict().extend({pollAfterMs:I().int().positive(),inputRemainingMs:I().int().nonnegative()}),vS=B({transactionDigest:F().min(1),pureInputs:z(B({index:I().int().nonnegative(),bytes:F().regex(/^0x(?:[0-9a-f]{2})*$/i)}).strict()).refine(e=>new Set(e.map(e=>e.index)).size===e.length,`Duplicate input index.`),ptbGraph:B({mermaid:B({text:F(),namedText:F()}).strict()}).strict().optional()}).strict(),yS=`sui-mcp/card`,bS=`sui-mcp/receipt-display`,xS=`sui-mcp/wallet-display`,SS=`sui-mcp/settings-file`,CS=`suimcp://cards/`,wS=hc(`kind`,[B({kind:G(`account`),status:G(`input_required`),field:G(`account`),message:F().min(1)}).strict(),B({kind:G(`receipt`),status:G(`input_required`),field:G(`digest`),message:F().min(1)}).strict()]),TS=B({cardId:F().min(1),permission:F().min(1)}).strict();TS.extend({revision:I().int().nonnegative(),input:U(F(),R())}).strict();var ES=vS.extend({cardId:F().min(1),revision:I().int().nonnegative(),attemptId:F().min(1).optional()}),DS=hS.extend({cardId:F().min(1),revision:I().int().nonnegative()}),OS=B({attemptId:F().uuid(),cardId:F().min(1),operationId:F().uuid(),fileId:F().uuid(),offset:I().int().nonnegative().safe(),totalSize:I().int().nonnegative().safe(),sha256:F().regex(/^[a-f0-9]{64}$/),chunkBase64:F()}).strict(),kS={account:mS.uiOpenAccount,receipt:mS.uiOpenReceipt,chart:mS.uiOpenChart,read:mS.uiReadCard,submit:mS.uiSubmitCard,act:mS.uiActCard,readSettingsFile:mS.uiReadSettingsFile};function $(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function AS(e){return e.kind!==`import_local_data`}function jS(e,t,n){if(e.kind!==`settings`||t.kind!==`settings`||e.cardId!==t.cardId||t.state!==`ready`)return;let r=lS.safeParse(e.data),i=lS.safeParse(t.data);if(!r.success||!i.success)return;let a=r.data,o=i.data,s=o.draft;if(n.action===`settings_select`&&a.operationId===o.operationId){let r=Jx.safeParse(n.draft);if(r.success&&AS(r.data)&&(t.revision===e.revision||NS(r.data,s)))return{kind:`selection_response`,cardId:t.cardId,operationId:o.operationId,draft:r.data}}if(!s||!a.draft||a.operationId!==o.operationId||n.operationId!==o.operationId||JSON.stringify(a.draft)!==JSON.stringify(s))return;if(AS(s))return n.action===`settings_prepare`?{kind:`preparation_response`,cardId:t.cardId,operationId:o.operationId,draft:s}:void 0;let c=o.file?.fileId;if(!(!c||!a.file?.fileId||a.file.fileId!==c||n.action!==`settings_prepare`&&n.action!==`settings_seal_upload`||n.action===`settings_seal_upload`&&n.fileId!==c))return{kind:`backup_check_response`,cardId:t.cardId,operationId:o.operationId,fileId:c,action:n.action}}function MS(e){return Object.keys(e).filter(t=>e[t]!==void 0)}function NS(e,t){if(e===t)return!0;if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((e,n)=>NS(e,t[n]));let n=$(e),r=$(t);if(!n||!r)return!1;let i=MS(n);return i.length===MS(r).length&&i.every(e=>Object.hasOwn(r,e)&&NS(n[e],r[e]))}function PS(e,t=!0){let n=$(e);if(!n)throw Error(`The app did not provide a usable card response.`);let r=()=>Error(`The app provided inconsistent card response information.`),i,a=e=>{let t=$(e);if(!t||typeof t.ok!=`boolean`||i&&!NS(i,t))throw r();i=t};n.structuredContent!==void 0&&a(n.structuredContent);let o,s;if(Array.isArray(n.content))for(let e of n.content){let n=$(e);if(n?.type!==`text`||typeof n.text!=`string`)continue;let i;try{i=$(JSON.parse(n.text))}catch{continue}if(i){if(i.ok!==void 0)a(i);else if(Array.isArray(i.content)){if(!t||o)throw r();let n=Xu.safeParse(i);if(!n.success)throw r();o=PS(n.data,!1),s=e,o.structuredContent!==void 0&&a(o.structuredContent)}}}let c=Object.create(null),l=!1;for(let e of[n._meta,o?._meta]){if(e===void 0)continue;let t=$(e);if(!t)throw r();for(let e of MS(t)){let n=t[e];if(Object.hasOwn(c,e)&&!NS(c[e],n))throw r();c[e]=n}l=!0}if(n.isError!==void 0&&typeof n.isError!=`boolean`||o?.isError!==void 0&&n.isError!==void 0&&o.isError!==n.isError||(n.isError===!0||o?.isError===!0)&&i?.ok===!0)throw r();return{...o,...n,...o?{content:[...Array.isArray(n.content)?n.content.filter(e=>e!==s):[],...Array.isArray(o.content)?o.content:[]]}:{},...i?{structuredContent:i}:{},...l?{_meta:c}:{}}}function FS(e,t){let n=$($(e?.data)?.request);return!!e&&(e.kind===`receipt`||e.kind===`review`)&&t.cardId===e.cardId&&t.revision===e.revision&&t.transactionDigest===(e.kind===`receipt`?e.input.digest:n?.transactionDigest)&&(e.kind!==`review`||t.attemptId===n?.attemptId)}function IS(e){let t;for(let n of Array.isArray(e.content)?e.content:[]){let e=$(n),r;if(e?.type===`resource_link`&&typeof e.uri==`string`&&e.uri.startsWith(`suimcp://cards/`)&&(r=e.uri),e?.type===`text`&&typeof e.text==`string`){let t=/^\[Resource link: card_([A-Za-z0-9_-]+)\] (suimcp:\/\/cards\/([A-Za-z0-9_-]+)) \(Saved data for this exact card\.\)$/.exec(e.text);if(!t&&e.text.startsWith(`[Resource link:`)&&e.text.includes(`suimcp://cards/`))throw Error(`The saved card links could not be matched to one card.`);if(t){if(t[1]!==t[3])throw Error(`The saved card links could not be matched to one card.`);r=t[2]}}if(r===void 0)continue;let i=r.slice(CS.length);if(!i||encodeURIComponent(i)!==i||t!==void 0&&i!==t||e?.type===`resource_link`&&typeof e.name==`string`&&e.name.startsWith(`card_`)&&e.name!==`card_${i}`)throw Error(`The saved card links could not be matched to one card.`);t=i}return t}function LS(e){let t=$(e.structuredContent),n=t?.ok===!0?wS.safeParse(t.data):void 0,r=$($(t?.error)?.details),i=n?.success?void 0:t?.ok===!0?$(t.data)?.card??t.data:r?.snapshot,a=i===void 0?void 0:_S.parse(i);a?.kind===`settings`&&lS.parse(a.data);let o=$(e._meta)?.[bS],s=o===void 0?void 0:ES.parse(o);if(s&&!FS(a,s))throw Error(`Transaction details do not match this saved result.`);let c=$(e._meta)?.[xS],l=c===void 0?void 0:DS.parse(c);if(l&&(!a||a.kind!==`connect`||l.cardId!==a.cardId||l.revision!==a.revision||l.connectionId!==$($(a.data)?.operation)?.connectionId))throw Error(`The connection QR code does not match this card.`);return{snapshot:a,display:s,wallet:l,inputRequired:n?.success?n.data:void 0,error:typeof r?.message==`string`?r.message:typeof r?.reason==`string`?r.reason:void 0}}function RS(e,t){let n=document.getElementById(`app`);if(!n)throw Error(`Card root is unavailable.`);let r=document.createElement(`h1`);r.textContent=t.title;let i=document.createElement(`p`);i.className=`ui-note`,i.setAttribute(`role`,`status`);let a=document.createElement(`p`);a.className=`ui-error`,a.setAttribute(`role`,`alert`);let o=document.createElement(`p`);o.className=`ui-note card-guidance`;let s=document.createElement(`section`),c=document.createElement(`div`);c.className=`card-actions`;let l=document.createElement(`div`);l.className=`card-progress-hint`,l.hidden=!0,n.replaceChildren(r,i,a,s,o,l,c);let u=new Zh({name:`sui-mcp-card`,version:`0.8.1`},{},{autoResize:!0,strict:!0}),d=new AbortController,f=e===`connect`||e===`disconnect`||e===`review`,p=e===`settings`,m=f||p,h=!1,g,_,v,y,b,ee,x,te=!1,ne=!1,re,ie,S={status:`unconfirmed`},ae,oe,se,C,w,T=`continue`,ce,E,D=0,O=0,le,ue,de,fe,k,pe,me,he,ge=!1;function _e(){if(!C||!y)return;let{input:t,basis:n}=C,r=$(y.data),i=$(n.data),a=$(r?.request),o=$(r?.review),s=$(i?.request),c=!!a&&a.attemptId===s?.attemptId;if(!f)return y.state===`running`||y.reason===`completed`?C.delivery===`rejected`?`past`:`observed`:y.state===`closed`?`past`:`active`;if((e===`connect`||e===`disconnect`)&&typeof t.operationId==`string`){let e=$(r?.operation)?.operationId===t.operationId?$(r?.operation):void 0;if(t.action===`stop_connection`){if(e?.endReason===`user_stopped`)return`observed`;if(e&&e.status!==`running`)return`past`}else if(e)return`observed`}if(t.walletRunId&&t.walletRunId!==$(r?.walletAvailability)?.walletRunId&&t.walletRunId!==r?.acceptedWalletRunId)return`past`;switch(t.action){case`connect`:break;case`prepare_review`:if(typeof o?.reviewRevision==`number`&&typeof t.reviewRevision==`number`&&o.reviewRevision>t.reviewRevision)return o.account===t.account?`observed`:`past`;break;case`request_signature`:if(a?.account===t.account&&a?.reviewRevision===t.reviewRevision)return`observed`;if(typeof o?.reviewRevision==`number`&&typeof t.reviewRevision==`number`&&o.reviewRevision>t.reviewRevision||!a&&o&&o.reviewRevision===t.reviewRevision&&o.account===t.account&&o.status===`refresh_required`&&$(o.state)?.refreshReason===`review_evidence_stale`&&Array.isArray(r?.allowedActions)&&r.allowedActions.includes(`prepare_review`))return`past`;break;case`cancel`:if(y.reason===`cancelled`)return`observed`;break;case`disconnect`:case`stop_connection`:break;case`stop_waiting`:if(c&&(a?.requestStatus===`stopped`||r?.observationStopped===!0))return`observed`;if(c&&[`completed`,`request_failed`,`outcome_unknown`].includes(String(a?.requestStatus)))return`past`;break;case`read_result`:if(c&&(r?.observe===!0||a?.requestStatus===`completed`))return`observed`;if(c&&[`stopped`,`request_failed`].includes(String(a?.requestStatus)))return`past`}return ve()||typeof r?.actionRemainingMs==`number`&&r.actionRemainingMs<=0||[`connect`,`disconnect`,`cancel`,`prepare_review`,`request_signature`].includes(String(t.action))&&(y.state!==`ready`||o?.status===`expired`)?`past`:`active`}function ve(){let e=kx.safeParse(C?.input),t=zx.safeParse(y?.data);if(!e.success||!t.success)return!1;let n=e.data,r=t.data,i=`operationId`in n&&!!y&&y.state===`ready`&&y.input.operationId===n.operationId&&r.kind!==`review`&&!r.operation;if(n.action===`connect`)return r.kind===`connect`&&i&&JSON.stringify([...n.chains].sort())!==JSON.stringify([...r.requestedChains].sort());if(n.action===`prepare_review`||n.action===`request_signature`)return r.kind!==`review`||r.reviewTarget?.connectionId!==n.connectionId||r.reviewTarget?.account!==n.account;if(n.action!==`disconnect`||r.kind!==`disconnect`)return!1;let a=r.connection?.connectionId===n.connectionId?r.connection:void 0;return a?i&&a.disconnectImpact?.impactId!==n.impactId||r.nextStep.reason===`no_session_to_disconnect`||r.nextStep.reason===`connection_target_changed`:i}function ye(){if(!C)return;let e=_e();e&&C.disposition!==`observed`&&(e!==`active`||C.disposition===`active`)&&(C.disposition=e),C.disposition===`observed`&&(C.retryRequired=!1)}function be(){if(y?.reason===`cancelled`)return;let e=Ax.safeParse($(y?.data)?.automaticAction);return C?.retryRequired&&e.success&&C.input.action===e.data.action?e.data:void 0}function xe(e){let t={connect:`connection request`,prepare_review:`review update`,request_signature:`wallet approval request`,read_result:`transaction status check`,cancel:`cancellation request`,stop_connection:`request to stop connecting`,stop_waiting:$($(e.basis.data)?.request)?.requestStatus===`awaiting_signature`?`request to stop wallet approval`:`request to stop checking the result`,disconnect:`wallet disconnect request`};return f?t[String(e.input.action)]??`request`:`data request`}function Se(e){if(e!==`past`||!C)return;let t=xe(C),n=C.input.action===`read_result`&&$($(y?.data)?.request)?.requestStatus===`outcome_unknown`?` To check this transaction again, ask to open its result in chat.`:``;return`Message from an earlier ${t}: “${C.message}”${n}`}let Ce,we;function Te(){let t=$(y?.data),n=p?$(t?.download):void 0,r=y?.state===`closed`,i=Array.isArray(n?.allowedFileActions)?n.allowedFileActions:[],a=r?[]:[...Array.isArray(t?.allowedActions)?t.allowedActions:[],...i.filter(e=>e===`settings_report_download`||Ce===void 0||Date.now()<Ce)],o=e===`review`&&t?.mode===`review`&&!t.request&&!!g&&y?.state===`ready`,s=o&&le!==void 0&&Date.now()>=le,c=document.visibilityState!==`hidden`,l=d.signal.aborted||S.status===`rejected`,u=S.status===`confirmed`,v=C?.disposition,b=v===`active`,ee=C?.retryRequired===!0,x=C?.input.action===`request_signature`&&v===`active`,ne=T===`paused`,re=pe?.pending?.()===!0,D=pe?.displayRecovery?.(),ue=u&&!l&&!oe&&!re&&!s&&!!g,de=ue&&!w&&!h&&(!m||!(ce&&(b||ee||ne))),fe=Ax.safeParse(t?.automaticAction),k=p?$(n?.localSave):void 0,me=!!y&&!r&&(m?t?.observe===!0||k?.status===`saving`:y.state===`running`),he=!!_&&te&&!l&&!ce&&c&&(E===`explicit`||S.status!==`read_failed`&&(E===`background`||S.status===`needed`&&S.automatic)),_e=c&&ue&&!ae&&!ce&&!E&&!w&&!ee&&!x&&!ne&&f&&fe.success&&a.includes(fe.data.action)?fe.data:void 0,ve=$(t?.restoreCheck),ye=p&&ue&&y?.state===`ready`&&!y.input.backupDelivery&&!w&&!h&&!t?.result&&t?.observe!==!0&&(ve?.status===`cannot_restore`&&[`operation_busy`,`wallet_request_unsettled`].includes(String(ve.reason))||!a.includes(`settings_select`)||!a.includes(`settings_download_backup`)||t?.phase===`prepared`&&!a.includes(`settings_confirm`)||t?.phase===`draft`&&$(t.draft)?.kind!==void 0&&$(t.draft)?.kind!==`import_local_data`&&!a.includes(`settings_prepare`)),we;!l&&_&&(S.status===`read_failed`||ae||S.status===`unconfirmed`?we=`read`:S.status===`needed`?S.automatic||(we=`read`):oe||D||!r&&p&&[`pending`,`failed`].includes(String(t?.temporaryFileCleanup))||!r&&(k?.status===`saving`||k?.status===`needs_consent`&&!a.includes(`settings_store_backup`)||k?.status===`failed`&&k.failure===`not_published`&&!n?.endReason&&!a.includes(`settings_store_backup`))||ye?we=`read`:g?!r&&$(t?.progress)?.status===`unavailable`||!r&&$(t?.walletAvailability)?.status===`initializing`&&$(t?.walletAvailability)?.stage===`state_sync`?we=`read`:!r&&!ne&&be()?we=`retry`:b&&(!m&&de&&y?.state===`ready`&&ge&&pe?.selectionRecovery?we=`selection`:!me&&!(ne&&a.length>0)&&!(C?.input.action===`prepare_review`&&a.includes(`prepare_review`)&&t?.automaticAction===void 0)&&f&&(we=`read`)):(y?.state!==`closed`||oe)&&(we=`read`));let Te=f?t?.actionRemainingMs:y?.inputRemainingMs;we===`retry`&&s&&(we=`read`);let Ee=r?void 0:f?t?.nextStateReadAfterMs:p&&Ce!==void 0?Math.max(0,Ce-O):void 0,De=[!r&&(f?a.length>0:y?.state===`ready`)?Te:void 0,Ee].filter(e=>typeof e==`number`&&Number.isFinite(e)&&e>0),Oe=!l&&!!g&&c&&!ie&&!ae&&S.status!==`read_failed`,ke=$(t?.review),Ae=o&&!l&&!ae&&!oe&&!b&&!ee&&!ne&&S.status!==`read_failed`&&(re||w?.input.action===`prepare_review`||ke?.preparing===!0||fe.success&&fe.data.action===`prepare_review`||S.status===`needed`&&ke?.status===`ready_for_wallet_review`);return{current:u,inputEnabled:de,permitted:a,disposition:v,read:he,auto:_e,recover:we,paused:ne,partialDisplayFailure:D,settingsInputBlocked:ye,reviewUpdatePending:Ae,reviewCommandDeliveryFailed:b&&C?.input.action===`prepare_review`,reviewHint:s?void 0:Ae?re||ke?.preparing||w?.input.action===`prepare_review`?`Updating review…`:`Checking status…`:o&&$(ke?.state)?.refreshReason===`review_evidence_stale`?`Review details are out of date.`:void 0,errors:[S.status===`rejected`?S.message:S.status===`read_failed`?`This card's status could not be checked. Reported message: “${S.message}”`:void 0,ae&&S.status!==`rejected`?`This card could not be opened. Reported message: “${ae}”`:void 0,b&&C?`Message for this ${xe(C)}: “${C.message}”`:void 0,oe,D?.message],note:[se,Se(v)].filter(Boolean).join(` `),expiryAt:Oe&&u&&De.length?O+Math.min(...De):void 0,poll:Oe&&(me||S.status===`needed`&&!S.automatic),lifetimeAt:!l&&c&&o?le:void 0}}function Ee(e){return e.recover===`retry`?C?.input.action===`connect`?`Retry connection`:`Retry review`:e.recover===`selection`?pe?.selectionRecovery?.label:e.recover===`read`?`Check status`:void 0}function De(e){if(d.signal.aborted)return``;let n=e.errors.some(Boolean)||e.recover!==void 0||!!y&&!g&&y.state!==`closed`||y?.state===`closed`&&y.reason!==`completed`,r=e.errors.some(Boolean)||S.status!==`confirmed`||e.recover===`retry`||e.settingsInputBlocked;if(n&&r&&S.status!==`rejected`){if(ce||e.read)return`Checking status…`;let t=Ee(e);if(e.recover===`selection`&&t)return`Use ${t} to try the current selection again.`;if(t)return t===`Check status`?oe||e.partialDisplayFailure?`Use Check status to read this card and try displaying it again.`:`Use Check status to read this card again.`:t===`Retry connection`?`Use Retry connection to try connecting your wallet again.`:`Use Retry review to try again with the displayed wallet and account.`}return t.guidance?.(y,{confirmed:e.current,readOnly:!g,recoveryNeeded:n,visibleConfirmation:pe?.visibleConfirmation?.(),commandPending:m&&w&&e.current&&!e.errors.some(Boolean)&&(w.phase===`confirming`||y?.state===`ready`&&!$(y.data)?.request&&!$($(y.data)?.review)?.preparing)?{phase:w.phase,action:String(w.input.action)}:void 0,approvalUnresolved:C?.input.action===`request_signature`&&e.disposition===`active`||w?.input.action===`request_signature`,automaticPaused:e.paused})??``}function Oe(e=Te()){return e.inputEnabled&&y?.state===`ready`&&ge}function ke(e,t=Te()){return y?.state!==`closed`&&m&&t.inputEnabled&&(e?t.permitted.includes(e.action):t.permitted.length>0)}function Ae(e){let t=Te();return p&&h&&t.current&&!!g&&!w&&!ce&&!oe&&!d.signal.aborted&&[`settings_begin_upload`,`settings_upload_chunk`,`settings_seal_upload`,`settings_retry_download`,`settings_report_download`,`settings_cancel_download`,`settings_store_backup`].includes(String(e.action))&&(t.permitted.includes(e.action)||e.action===`settings_report_download`)}function je(e){let u=$(y?.data),f=s.querySelector(`.review-action-feedback`),_=s.querySelector(`.review-primary-action`);if(f){let e=s.querySelector(`.review-lifetime`);e?(e.append(l),f.prepend(a)):f.prepend(l,a),f.append(o)}else n.insertBefore(a,s),n.insertBefore(l,c),n.insertBefore(o,l);a.className=f?`ui-note`:`ui-error`,y?(r.textContent=t.titleFor?.(y)??t.title,i.textContent=S.status===`rejected`?`Card unavailable`:!e.current&&y.state===`ready`?f?``:!d.signal.aborted&&(ce||e.read)?`Checking whether actions are available in this card…`:`Actions are unavailable until this card's status is checked.`:!g&&y.state!==`closed`?`View only.`:m?$(u?.progress)?.status===`unavailable`?`Current progress is unavailable. The last recorded state is shown.`:!u?.request&&y.state===`closed`&&[`expired`,`server_restarted`,`cancelled`].includes(y.reason??``)?`This card no longer accepts actions.`:``:y.state===`running`?`Reading the requested data…`:y.reason===`completed`?``:y.error??(y.reason===`expired`?`The time to make a selection has ended.`:y.reason===`server_restarted`?`This request ended when Sui MCP restarted.`:``)):i.textContent=ie?``:S.status===`read_failed`?`Card status unavailable`:ae||S.status===`rejected`?`Card unavailable`:`Opening card…`,i.hidden=!i.textContent,a.textContent=[...new Set(e.errors.filter(Boolean))].join(` `),a.hidden=!a.textContent;let v=s.querySelector(`.review-status`);if(v){let t=!!f&&(e.reviewUpdatePending||!!a.textContent);t?v.classList.add(`review-status--reserved`):v.classList.remove(`review-status--reserved`),v.setAttribute(`aria-hidden`,String(t))}let b=s.querySelector(`.review-material-status`);if(b&&(b.textContent=b.dataset.previous===`true`||!e.current||e.reviewUpdatePending?b.dataset.previousLabel??``:b.dataset.currentLabel??``),o.textContent=[e.note,De(e)].filter(Boolean).join(` `),o.hidden=!o.textContent,ge)for(let t of s.querySelectorAll(`input, button, select`))(!m||t.tagName!==`BUTTON`||t.dataset.cardAction!==void 0)&&(t.disabled=m?!ke(void 0,e):!Oe(e));if(m)for(let t of s.querySelectorAll(`[data-card-action]`))t.disabled=!ke({action:t.dataset.cardAction},e);if(p)for(let t of s.querySelectorAll(`[data-settings-file-action]`))t.disabled=t.dataset.settingsLocalBlocked===`true`||!(h?Ae({action:t.dataset.cardAction}):ke({action:t.dataset.cardAction},e));_&&(e.reviewUpdatePending||_.dataset.cardAction===`request_signature`&&e.reviewCommandDeliveryFailed||_.dataset.cardAction===void 0)&&(_.disabled=!0),k&&(k.disabled=!!w||!!ce)}function Me(e){try{e?.()}catch{oe=`The card display could not be closed cleanly. Its stored information is unchanged.`}}function Ne(e){if(!y||d.signal.aborted)return;if(y.state===`ready`&&S.status!==`confirmed`){if(p&&pe?.update)try{pe.update(y,{automaticPaused:T===`paused`,settings:Ge,settingsCommandProgress:void 0,onDisplayChange:()=>j()})}catch{oe=`This card could not be displayed. Its stored information is unchanged.`}return}let n=m?{...$(y.data),actionRemainingMs:void 0,nextStateReadAfterMs:void 0,...p&&$(y.data)?.download?{download:{...$($(y.data)?.download),remainingMs:void 0}}:{}}:void 0,r=p&&w?.phase===`sending`&&S.status===`confirmed`?jS(w.basis,y,w.input):void 0,i=`${T===`paused`}:${JSON.stringify(r)}:${y.revision}:${g!==void 0}:${b!==void 0}:${x!==void 0}:${JSON.stringify(n)}`;if(i===me||i===he&&!e)return;he=i;let a=[...s.children],o=new Set([...s.querySelectorAll(`details`)].filter(e=>e.open).map(e=>e.querySelector(`summary`)?.textContent)),c,l=!1,u=!1;try{let e={automaticPaused:T===`paused`,onDisplayChange:()=>j(),wallet:x,...p?{settings:Ge,settingsCommandProgress:r}:{}};if(pe?.update?.(y,e)){me=i,oe=void 0;return}if(y.state===`ready`&&g){let n=t.controls(y,e=>{Ue(e)},b,x,e);c=`node`in n?n:{node:n},l=!0}else(m||y.reason===`completed`)&&y.data!==void 0&&(c=t.result(y,b,g&&y.reason!==`cancelled`?e=>{Ue(e)}:void 0,x,e));s.replaceChildren(...c?[c.node]:[]),u=!0,c?.mount?.();for(let e of s.querySelectorAll(`details`))o.has(e.querySelector(`summary`)?.textContent)&&(e.open=!0)}catch{u&&s.replaceChildren(...a),Me(c?.dispose),oe=`This card could not be displayed. Its stored information is unchanged.`;return}let f=pe?.dispose;pe=c,ge=l,me=i,oe=void 0,Me(f)}function Pe(t,n,r,i,a){if(d.signal.aborted||S.status===`rejected`)return!1;if(t.kind!==e||t.cardId!==_)throw S={status:`rejected`,message:`The returned information does not match this card.`},Error(`The returned information does not match this card.`);let o=$(t.data),s=$(o?.request),c=$(s?.execution),l=o?.automaticAction===void 0?void 0:Ax.safeParse(o.automaticAction);if(l&&!l.success)throw Error(`This card could not start the next step.`);if(y&&t.revision<y.revision)return!1;if(y?.state===`closed`&&S.status===`confirmed`&&JSON.stringify(t)!==JSON.stringify(y))throw Error(`The completed card result cannot change.`);if(v&&[...new Set([...Object.keys(v),...Object.keys(t.input)])].some(e=>JSON.stringify(t.input[e])!==JSON.stringify(v[e])))throw S={status:`rejected`,message:`The returned information does not match this card.`},Error(`The returned information does not match this card.`);if(e===`review`&&($(o?.review)?.reviewSessionId!==void 0&&$(o?.review)?.reviewSessionId!==t.input.reviewSessionId||s&&(s.reviewSessionId!==t.input.reviewSessionId||t.input.attemptId!==void 0&&s.attemptId!==t.input.attemptId)||c&&(c.reviewSessionId!==s?.reviewSessionId||c.attemptId!==s?.attemptId||c.txDigest!==s?.transactionDigest)||$(o?.receipt)?.status===`found`&&$($(o?.receipt)?.receipt)?.txDigest!==s?.transactionDigest)||e===`receipt`&&o?.status===`found`&&$(o.receipt)?.txDigest!==t.input.digest)throw S={status:`rejected`,message:`The saved result does not match the information requested in this card.`},Error(S.message);!v&&(f||t.state!==`ready`)&&(v={...t.input});let u=r!==`preview`;if((!y||t.revision!==y.revision)&&(b=void 0,x=void 0),y=t,ye(),u){O=Date.now();let t=p?$(o?.download):void 0;if(t?.availability===`available`&&typeof t.remainingMs==`number`&&Number.isFinite(t.remainingMs)){let e=`${o?.operationId}:${$(o?.file)?.fileId}:${t.expiresAt}`;we!==e&&(we=e,Ce=void 0),Ce=Math.min(Ce??1/0,O+Math.max(0,t.remainingMs))}else p&&t?.availability===`ended`&&(Ce=void 0);g&&e===`review`&&o?.mode===`review`&&!o.request&&typeof o.actionRemainingMs==`number`&&Number.isFinite(o.actionRemainingMs)&&o.actionRemainingMs>=0&&(le=Math.min(le??1/0,O+o.actionRemainingMs))}return r===`read`&&(S.status!==`needed`||a>S.afterRead)&&(S={status:`confirmed`},ae=void 0),n&&(b=n),x=i,!0}function Fe(){ue!==void 0&&clearTimeout(ue),de!==void 0&&clearTimeout(de),fe!==void 0&&clearTimeout(fe),ue=void 0,de=void 0,fe=void 0,l.hidden=!0}function Ie(e){let t=Ee(e);k?.textContent!==t&&(k?.remove(),k=void 0,t&&(k=$h(t,()=>{if(ce||w||d.signal.aborted)return;let e=Te();if(e.recover===`selection`&&Oe(e))pe?.selectionRecovery?.retry();else if(e.recover===`retry`){let e=be();e&&He(e)}else A()})));let n=s.querySelector(`.review-primary-action`),r=s.querySelector(`.review-primary-slot`);n&&(n.hidden=!!k&&!!r),k&&(k.disabled=!!ce||!!w,r?(k.classList.add(`review-recovery-action`),r.append(k)):(k.classList.remove(`review-recovery-action`),c.append(k)))}async function A(){let e=pe,t=e?.displayRecovery?.(),n=await Re(!0);n?.kind===`accepted`&&y===n.snapshot&&S.status===`confirmed`&&!d.signal.aborted&&document.visibilityState!==`hidden`&&!oe&&e===pe&&t&&e?.displayRecovery?.()===t&&(t.retry(),j())}function j(e=!1){if(ie){let e=document.createElement(`p`);e.className=`ui-note`,e.textContent=ie,s.replaceChildren(e)}else Ne(e);let t=Te();if(je(t),Fe(),Ie(t),d.signal.aborted||S.status===`rejected`)return;t.expiryAt!==void 0&&(de=setTimeout(()=>{Le(),j()},Math.max(0,t.expiryAt-Date.now()))),t.reviewHint&&!a.textContent&&(l.replaceChildren(),l.textContent=t.reviewHint,l.setAttribute(`role`,`status`),l.hidden=!1);let n=s.querySelector(`.review-time-remaining`);if(n&&t.lifetimeAt!==void 0){let e=t.lifetimeAt,r=()=>{if(d.signal.aborted)return;let t=Math.max(0,e-Date.now()),i=Math.ceil(t/1e3);if(n.textContent=t>0?`Review expires in ${Math.floor(i/60)}:${String(i%60).padStart(2,`0`)}`:`Review time elapsed`,t>0)fe=setTimeout(r,Math.min(1e3,t));else{let e=Te();je(e),Ie(e)}};r()}if(t.poll&&y){let e=O+y.pollAfterMs-Date.now();ue=setTimeout(()=>{Re(!1)},e>0?e:y.pollAfterMs)}t.read?(E=void 0,ze()):t.auto&&(ue=setTimeout(()=>{let e=Te().auto;e&&We(e,`automatic`)},0))}function Le(){S.status!==`rejected`&&S.status!==`read_failed`&&(S={status:`needed`,afterRead:D,automatic:!0})}function Re(e){return d.signal.aborted||S.status===`rejected`||!_||!te?Promise.resolve(void 0):ce?ce.promise:S.status===`read_failed`&&!e?Promise.resolve(void 0):(E=e?`explicit`:`background`,j(),ce?.promise??Promise.resolve(void 0))}function ze(){let e=++D,t=performance.now(),n={id:e,promise:Promise.resolve().then(async()=>{try{let n,r,i;if(g){let e=LS(await Be(kS.read,{...g}));if(!e.snapshot)throw Error(e.error??`Saved card data is unavailable.`);if(e.error)throw Error(e.error);n=e.snapshot,r=e.display,i=e.wallet}else{let e=`${CS}${encodeURIComponent(_)}`,t=(await u.readServerResource({uri:e},{signal:d.signal})).contents.find(t=>t.uri===e&&`text`in t);if(!t||!(`text`in t))throw Error(`Saved card data is unavailable.`);n=_S.parse(JSON.parse(t.text));let i=b??ee;r=i&&FS(n,i)?i:void 0}if(d.signal.aborted||S.status===`rejected`)return{kind:`disposed`,id:e};let a=Pe(n,r,`read`,i,e);return ee=void 0,!a&&S.status===`needed`&&e>S.afterRead&&(S={...S,automatic:!1}),j(a),a&&S.status===`confirmed`?{kind:`accepted`,snapshot:n,id:e,requestStartedAt:t}:{kind:`ignored`,id:e}}catch(t){return d.signal.aborted?{kind:`disposed`,id:e}:(S.status!==`rejected`&&(S={status:`read_failed`,message:t instanceof Error?t.message:`Saved card data could not be read. The last displayed result is unchanged.`}),{kind:`failed`,id:e})}}).finally(()=>{ce===n&&(ce=void 0),j()})};ce=n,j()}async function Be(e,t){return PS(await u.callServerTool({name:e,arguments:t},{signal:d.signal}))}function Ve(e,t,n){let r=zx.safeParse(n.data);if(!r.success||!r.data.allowedActions.some(t=>t===e.action))return!1;let i=r.data,a=$(t.data);return e.walletRunId&&e.walletRunId!==i.walletAvailability.walletRunId?!1:e.action===`connect`?i.kind===`connect`&&JSON.stringify(e.chains)===JSON.stringify(i.requestedChains):e.action===`prepare_review`||e.action===`request_signature`?i.kind===`review`&&i.review.reviewRevision===e.reviewRevision&&i.reviewTarget?.account===e.account&&i.reviewTarget?.connectionId===e.connectionId:e.action===`disconnect`?i.kind===`disconnect`&&i.connection?.connectionId===e.connectionId&&i.connection?.disconnectImpact?.impactId===e.impactId:e.action===`stop_connection`?i.kind===`connect`&&i.operation?.operationId===e.operationId&&i.operation?.status===`running`:JSON.stringify(t.input)===JSON.stringify(n.input)&&(i.kind!==`review`||i.request?.attemptId===$(a?.request)?.attemptId&&i.review.reviewRevision===$(a?.review)?.reviewRevision)}async function He(e){if(!y||ce||!ke(e))return;let t={input:e,basis:y,phase:`confirming`};w=t;let n=await Re(!1);w===t&&(w=void 0,n?.kind===`accepted`&&y===n.snapshot&&S.status===`confirmed`&&!d.signal.aborted&&document.visibilityState!==`hidden`&&Ve(e,t.basis,n.snapshot)&&ke(e)?await We(e):S.status!==`read_failed`&&S.status!==`rejected`&&!d.signal.aborted&&(se=`The card state changed. Check the current selection before trying again.`),j())}async function Ue(e){f&&(C?.disposition===`active`||C?.retryRequired||T===`paused`)?await He(e):await We(e)}function M(e,t,n){C={input:e.input,basis:e.basis,message:t,delivery:n,disposition:`active`,retryRequired:e.input.action===`connect`||e.input.action===`prepare_review`},ye(),[`cancel`,`disconnect`,`stop_connection`,`stop_waiting`].includes(String(e.input.action))&&(T=`paused`),(m||n===`unknown`)&&Le()}async function We(e,t=`user`){if(!y||!g||(t===`file`?!Ae(e):m?!ke(e):!Oe()))return;let n={input:e,basis:y,phase:`sending`};w=n,T=`continue`,(t===`user`||C?.disposition!==`past`)&&(C=void 0),se=void 0,j();try{let t=LS(await Be(m?kS.act:kS.submit,{...g,revision:n.basis.revision,input:e}));if(d.signal.aborted||S.status===`rejected`)return;if(!t.snapshot)throw Error(t.error??`The request could not be confirmed.`);t.error&&M(n,t.error,`rejected`),Pe(t.snapshot,t.display,`action`,t.wallet)}catch(e){!d.signal.aborted&&S.status!==`rejected`&&(M(n,e instanceof Error?e.message:`The request could not be confirmed.`,`unknown`),C&&(C.data=$(e)?.data))}finally{w===n&&(w=void 0),j()}}let Ge={uploadChunkLimit(e,t){return g?pS({jsonrpc:`2.0`,id:2**53-1,method:`tools/call`,params:{name:kS.act,arguments:{...g,revision:2**53-1,input:{action:`settings_upload_chunk`,operationId:e,fileId:t,offset:2**53-1,chunkBase64:``}}}})??0:0},async readCurrent(){let e=await Re(!0);if(e?.kind!==`accepted`)throw Error(`The current Settings selection could not be checked. Use Check status before continuing.`);return{snapshot:e.snapshot,requestStartedAt:e.requestStartedAt}},async act(e,t=!1){if(t?!Ae(e):!ke(e))throw Error(`This Settings action is unavailable until its current status has been checked.`);if(await We(e,t?`file`:`user`),d.signal.aborted)throw Error(`This card closed before the request finished. Reopen the same conversation to check its status.`);if(C?.input===e){let e=Error(C.message);throw e.data=C.data,e}if(!y)throw Error(`The current Settings status could not be checked.`);return y},setFileTransferActive(e){h=e,j()},async readFile(e){if(!g||!_||!Te().current||d.signal.aborted)throw Error(`Backup read permission is unavailable.`);let t=await Be(kS.readSettingsFile,{...g,...e}),n=OS.parse($(t._meta)?.[SS]);if(n.cardId!==_||n.operationId!==e.operationId||n.fileId!==e.fileId||n.offset!==e.offset||n.attemptId!==e.attemptId)throw Error(`The backup response does not match this card's selected file.`);return n},download:async(e,t,n)=>{let r=$($(y?.data)?.download);if(!g||!Te().current||d.signal.aborted||document.visibilityState===`hidden`||!r||r.currentAttemptId!==n||r.localSave||r.availability!==`available`||Ce===void 0||Date.now()>=Ce)throw Error(`This download is no longer available in this card.`);try{return{isError:(await u.downloadFile({contents:[{type:`resource`,resource:{uri:`file:///${encodeURIComponent(e)}`,mimeType:`application/json`,blob:t}}]},{signal:d.signal})).isError}}catch(e){if(e&&typeof e==`object`&&`code`in e&&e.code===-32601)return{unsupported:!0};throw e}}};async function Ke(){if(te&&re!==void 0&&!ne){ne=!0;try{let t=PS(re),n=$(t._meta);if(t._meta!==void 0&&!n)throw Error(`This card cannot accept actions with the access information provided by the app.`);let r=n?.[yS];if(r!==void 0){let e=TS.safeParse(r);if(!e.success)throw Error(`This card cannot accept actions with the access information provided by the app.`);g=e.data}let i=LS(t);if(i.inputRequired){if(i.inputRequired.kind!==e||g)throw Error(`The app provided inconsistent card input information.`);ie=i.inputRequired.message,j();return}let a=IS(t),o=[i.snapshot?.cardId,g?.cardId,a].filter(e=>e!==void 0);if(!o.length)throw Error(`Card data is unavailable.`);if(o.some(e=>e!==o[0])||i.snapshot&&i.snapshot.kind!==e)throw S={status:`rejected`,message:`The returned information does not match this card.`},Error(S.message);_=o[0];let s=i.snapshot;s&&(f||s.state!==`ready`)&&(v={...s.input}),ee=i.display,s&&g&&Pe(s,i.display,`preview`,i.wallet),Le(),j()}catch(e){if(d.signal.aborted)return;ae=e instanceof Error?e.message:`Card data could not be read.`,j()}}}u.ontoolresult=e=>{if(re===void 0)re=e,Ke();else try{let t=LS(PS(re)).snapshot??y,n=LS(PS(e)).snapshot;if(t&&n&&(t.cardId!==n.cardId||t.kind!==n.kind))throw Error(`The app returned a different card.`)}catch{S={status:`rejected`,message:`The returned information does not match this card.`},j()}},u.onhostcontextchanged=e=>{e.theme&&(document.documentElement.dataset.theme=e.theme)};let qe=()=>{document.visibilityState!==`hidden`&&g&&ne&&S.status!==`read_failed`&&y?.state!==`closed`?Re(!1):j()};document.addEventListener?.(`visibilitychange`,qe),u.onteardown=async()=>{if(d.signal.aborted)return{};d.abort(),w=void 0,document.removeEventListener?.(`visibilitychange`,qe);let e=pe?.dispose;return pe=void 0,Me(e),j(),{}},u.connect().then(()=>{d.signal.aborted||(te=!0,document.documentElement.dataset.theme=u.getHostContext()?.theme??`light`,Ke())}).catch(()=>{d.signal.aborted||(ae=`Could not connect this card to the app.`,j())})}function zS(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t)}function BS(e){let t=atob(e),n=Uint8Array.from(t,e=>e.charCodeAt(0));if(zS(n)!==e)throw Error(`Part of the backup could not be read correctly.`);return n}async function VS(e,t,n,r,i){if(e.size>16777216)throw Error(`This backup exceeds the 16 MiB limit. Choose a smaller backup.`);let a=n();t.setFileTransferActive(!0);try{r()&&i?.({...a,stage:`reading`});let n=new Uint8Array(await e.arrayBuffer()),o=r_(mv(n));if(!r())return;i?.({...a,stage:`receiving`,sha256:o});let s=await t.act({action:`settings_begin_upload`,operationId:a.operationId,name:e.name,totalSize:n.length,sha256:o},!0),c=lS.parse(s.data),l=c.file?.receivedSize??0,u=c.file?.fileId;if(!u||c.operationId!==a.operationId||c.file?.sha256!==o||c.file.totalSize!==n.length)throw Error(`The file being received does not match your selection. Choose the backup file again.`);r()&&i?.({...a,stage:`receiving`,fileId:u,sha256:o});let d=t.uploadChunkLimit(a.operationId,u);for(;r()&&l<n.length;){if(d<1)throw Error(`This app cannot send the backup within its message size limit. Try opening Settings in another supported app.`);let e=Math.min(d,n.length-l),r={action:`settings_upload_chunk`,operationId:a.operationId,fileId:u,offset:l,chunkBase64:zS(n.subarray(l,l+e))};try{s=await t.act(r,!0)}catch(n){let r=n&&typeof n==`object`&&`data`in n?n.data:void 0;if(r?.code!==`settings_payload_too_large`||typeof r.rawChunkLimit!=`number`||!Number.isSafeInteger(r.rawChunkLimit)||r.rawChunkLimit<1||r.rawChunkLimit>=e)throw n;let i=lS.parse((await t.readCurrent()).snapshot.data);if(i.file?.fileId!==u||i.file.receivedSize!==l)throw Error(`The file transfer changed after a message was rejected. Choose the same file again to check how much was received.`);d=r.rawChunkLimit;continue}if(c=lS.parse(s.data),c.operationId!==a.operationId||c.file?.fileId!==u||c.file.sha256!==o||c.file.receivedSize!==l+e)throw Error(`The file transfer could not be confirmed. Choose the same file again to continue.`);l=c.file.receivedSize}r()&&(i?.({...a,stage:`checking`,fileId:u,sha256:o}),await t.act({action:`settings_seal_upload`,operationId:a.operationId,fileId:u},!0))}finally{t.setFileTransferActive(!1)}}async function HS(e,t,n,r){n(`pending`);let i;try{i=new Uint8Array(e.totalSize);let n=0;for(;n<i.length&&r();){let r=await t.readFile({operationId:e.operationId,fileId:e.fileId,offset:n,attemptId:e.attemptId}),a=BS(r.chunkBase64);if(r.totalSize!==i.length||r.sha256!==e.sha256||!a.length||n+a.length>i.length)throw Error(`Part of the downloaded backup does not match the original file.`);i.set(a,n),n+=a.length}if(!r())return;if(n!==i.length||r_(mv(i))!==e.sha256)throw Error(`The complete downloaded backup could not be checked against the original file.`)}catch{if(r())try{await t.readCurrent()}catch{}return r()&&n(`backup_unverified`),`backup_unverified`}try{let n=await t.readCurrent(),i=lS.parse(n.snapshot.data);if(!r()||i.operationId!==e.operationId||i.file?.fileId!==e.fileId||i.file.sha256!==e.sha256||i.file.totalSize!==e.totalSize||i.download?.currentAttemptId!==e.attemptId||i.download.localSave||i.download.availability!==`available`||!i.download.remainingMs)return;if(i.download.remainingMs<=Math.max(0,performance.now()-n.requestStartedAt)){try{await t.readCurrent()}catch{}return}}catch{return r()&&n(`backup_unverified`),`backup_unverified`}try{if(!r())return;let a=await t.download(e.displayName,zS(i),e.attemptId),o=a.unsupported===!0?`unsupported`:a.isError===!0?`not_completed`:`acknowledged`;return r()&&n(o),o}catch{return r()&&n(`unconfirmed`),`unconfirmed`}}var US={set_endpoint:`Change network address`,restore_endpoint:`Use default network address`,set_wallet_networks:`Wallet networks`,clear_read_address:`Clear saved read address`,download_backup:`Backup`,import_local_data:`Restore`,reset_local_data:`Reset`,restart_wallet_service:`Connection service restart`},WS={overview:`Settings`,address:`Address for viewing assets`,networks:`Wallet networks`,records:`Local records`,troubleshooting:`Troubleshooting`,advanced:`Advanced settings`},GS={address:`Clear the saved address used for implicit asset reads.`,networks:`Choose the networks to request when connecting a wallet.`,records:`Back up, restore or delete records saved on this computer.`,troubleshooting:`Check or restart the wallet connection service.`,advanced:`Change the Sui network addresses used to retrieve data and send transactions.`},KS=`Local records are saved addresses, reviews, transaction and activity records, wallet network choices, and Sui network settings on this computer. They do not include wallet keys, wallet connections or wallet approvals.`,qS=`Fully quit every app using Sui MCP, then reopen them. Closing a window or quitting only one app may leave Sui MCP running.`,JS={available:`Ready`,initializing:`Starting`,recovering:`Restarting`,unavailable:`Unavailable`},YS={environment:`App launch settings`,local_db:`Saved in Sui MCP`,builtin_default:`Built-in default`},XS={connected:`Connected`,awaiting_approval:`Waiting for wallet approval`,rejected:`Rejected`,failed:`Failed`,expired:`Expired`,stopped:`Stopped`,disconnected:`Disconnected`},ZS=[[`accounts`,`Saved addresses`],[`reviewSessions`,`Reviews`],[`reviewRequests`,`Transaction requests`],[`outcomeUnknownRequests`,`Transaction requests with unconfirmed results`],[`externalActivityTransactions`,`Activity records`],[`localSettings`,`Saved network settings`]],QS={set_endpoint:`Save network address?`,restore_endpoint:`Use default network address?`,set_wallet_networks:`Save selected networks?`,clear_read_address:`Clear saved read address`,download_backup:`Download backup`,import_local_data:`Restore available`,reset_local_data:`Reset local data?`,restart_wallet_service:`Restart connection service?`},$S={set_endpoint:`Save network address`,restore_endpoint:`Use default network address`,set_wallet_networks:`Save networks`,clear_read_address:`Clear saved read address`,download_backup:`Download backup`,import_local_data:`Restore local records`,reset_local_data:`Reset local data`,restart_wallet_service:`Restart connection service`};function eC(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function tC(e){return e===`clear_read_address`?`address`:e===`set_wallet_networks`?`networks`:e===`set_endpoint`||e===`restore_endpoint`?`advanced`:e===`restart_wallet_service`?`troubleshooting`:e?`records`:`overview`}function nC(e,t,n){let r=eC(t);e.append(J(`h3`,void 0,n));for(let[t,n]of ZS)typeof r[t]==`number`&&e.append(Y(n,String(r[t])))}function rC(e,t,n){let r=lS.parse(e.data),i=e,a=r.draft?{kind:`operation`,operation:r.draft.kind}:{kind:`section`,page:`overview`},o=!1,s,c=n?.settings,l=n?.onDisplayChange,u,d=!1,f,p=n?.settingsCommandProgress,m,h,g,_,v,y=J(`div`,`settings-card`),b=(e,n,r=`secondary`)=>{let i=$h(e,()=>{!o&&!d&&t?.(n)},r);return i.dataset.cardAction=String(n.action),i},ee=(e,t)=>{let n=$h(e,()=>{if(o)return;let e=a.kind===`section`?a.page:tC(a.operation);a=t,w(),(t.kind===`section`&&t.page===`overview`?[...y.querySelectorAll(`.settings-menu-item`)].find(t=>t.dataset.settingsPage===e):y.querySelector(`.settings-back`))?.focus(),l?.()},`secondary`);return n.setAttribute(`aria-label`,e),n.dataset.settingsPage=t.kind===`section`?t.page:tC(t.operation),n},x=(e,n,i=!1,s=!1)=>{let c=$h(e,()=>{o||d||(!s&&n.kind===`import_local_data`&&r.draft&&JSON.stringify(r.draft)===JSON.stringify(n)?(a={kind:`operation`,operation:n.kind},w(),l?.()):(u=void 0,t?.({action:`settings_select`,draft:n})))},i?`danger`:`secondary`);return c.dataset.cardAction=`settings_select`,c};function te(e,t,n){let r=J(`div`,`settings-choice`),i=J(`div`,`settings-choice-copy`);return i.append(J(`h3`,void 0,e),J(`p`,`ui-note`,t)),r.append(i,n),r}function ne(e){let t=J(`div`,`settings-action-row`);return t.setAttribute(`aria-label`,`Settings operation actions`),t.append(e),t}async function re(){if(!c||!h||o)return;let e=h;g=void 0,c.setFileTransferActive(!0);try{await c.act({action:`settings_report_download`,...e},!0),h===e&&(h=void 0)}catch{!o&&h===e&&(g={message:`The download response could not be recorded. Check status to record the same response without downloading again.`,retry:()=>{h===e&&re()}})}finally{o||(c.setFileTransferActive(!!m),w(),l?.())}}function ie(){let e=m;if(!c||o||!e||e.phase!==`waiting`||r.download?.availability!==`available`||r.download.localSave||r.download.currentAttemptId!==e.attemptId||!r.file)return;e.phase=`sending`;let t={operationId:r.operationId,...r.file,attemptId:e.attemptId};HS(t,c,t=>{m!==e||o||(f=t,w(),l?.())},()=>!o&&m===e&&document.visibilityState!==`hidden`&&r.download?.currentAttemptId===e.attemptId&&r.download.availability===`available`).then(async e=>{!o&&e&&[`acknowledged`,`not_completed`,`unconfirmed`,`unsupported`,`backup_unverified`].includes(e)&&(h={operationId:t.operationId,fileId:t.fileId,attemptId:t.attemptId,status:e===`backup_unverified`?`not_sent`:e,...e===`unsupported`?{failure:{method:`ui/download-file`,code:-32601}}:{}},await re())}).finally(()=>{m===e&&(m=void 0,d=!1),o||(c?.setFileTransferActive(!!m),w(),l?.())})}function S(e){if(!c||!t||o||m||d)return;let n=crypto.randomUUID(),i={attemptId:n,phase:`admitting`},a=e&&r.file&&r.download?{action:`settings_retry_download`,operationId:r.operationId,fileId:r.file.fileId,previousAttemptId:r.download.currentAttemptId,attemptId:n}:{action:`settings_download_backup`,operationId:r.operationId,attemptId:n};m=i,d=!0,f=void 0,h=void 0,g=void 0,w(),l?.(),e&&c.setFileTransferActive(!0),c.act(a,e).then(()=>{o||m!==i||(i.phase=`waiting`,c?.setFileTransferActive(!0),w(),l?.(),ie())}).catch(()=>{m===i&&(m=void 0,d=!1),o||(c?.setFileTransferActive(!1),w(),l?.())})}function ae(e,t,n,r=!1){let i=$h(e,n,`secondary`);return i.dataset.cardAction=t,t!==`settings_download_backup`&&(i.dataset.settingsFileAction=`true`),r&&(i.dataset.settingsLocalBlocked=`true`),i.disabled=r,i}function oe(e){let n=r.download,i=r.draft?.kind===`download_backup`?r.file:void 0;if(!se(e)){let r=n?.endReason===`acknowledged`?`Download requested`:n?.endReason===`cancelled`?`Download cancelled`:n?.endReason?`Download ended`:m?n?.availability===`available`?`Downloading backup…`:`Preparing backup…`:n?.hostReport===`not_completed`?`Download not completed`:n?.hostReport===`unconfirmed`?`Download unconfirmed`:`Backup ready`;e.append(J(`h2`,void 0,r)),n?.endReason===`acknowledged`?e.append(J(`p`,`ui-note`,`The app accepted the download request. This does not confirm that the file was saved or where it was saved.`)):n?.endReason===`cancelled`?e.append(J(`p`,`ui-note`,`No further download will be sent from this request. This does not close a save dialog or delete a file already saved by the app.`)):n?.endReason?e.append(J(`p`,`ui-note`,n.endReason===`expired`?`The time to download this backup has ended. Open a new Settings card to download the current records.`:`This backup can no longer be downloaded. Open a new Settings card to try again.`)):n?.hostReport===`not_completed`?e.append(J(`p`,`ui-note`,`The app did not complete the download request. It did not report whether it was cancelled, refused or failed.`)):(n?.hostReport===`unconfirmed`||n?.previousUnconfirmed||!m&&!h&&n?.availability===`available`&&!n.hostReport&&f!==`backup_unverified`)&&e.append(J(`p`,`ui-note`,`The previous download could not be confirmed.`+(t&&n?.allowedFileActions.includes(`settings_retry_download`)?` Retrying may save another copy if the app already handled it.`:``))),f===`backup_unverified`&&e.append(J(`p`,`ui-note`,`The backup could not be read or checked. Nothing was sent to the app for download.`)),i?.sealed&&(e.append(Y(`Suggested file name`,i.displayName),Y(`File size`,`${i.totalSize.toLocaleString(`en-US`)} bytes`)),i.totalSize>16777216&&e.append(J(`p`,`ui-note`,`This backup exceeds the 16 MiB restore limit.`))),t&&c&&!m&&!h&&n?.allowedFileActions.includes(`settings_retry_download`)&&e.append(ae(`Retry download`,`settings_retry_download`,()=>S(!0)))}t&&c&&r.file&&n?.allowedFileActions.includes(`settings_cancel_download`)&&e.append(ae(`Cancel download`,`settings_cancel_download`,()=>{if(!c||o||!r.file||!r.download)return;m=void 0,d=!1,f=void 0;let e={action:`settings_cancel_download`,operationId:r.operationId,fileId:r.file.fileId,attemptId:r.download.currentAttemptId};c.setFileTransferActive(!0),c.act(e,!0).catch(()=>{}).finally(()=>{o||(c?.setFileTransferActive(!1),w(),l?.())})})),(r.temporaryFileCleanup===`pending`||r.temporaryFileCleanup===`failed`)&&e.append(J(`p`,`ui-error`,`Temporary-file cleanup has not been confirmed. Use Check status to check the same request.`)),!t&&n?.localSave?.status!==`saved`?e.append(J(`p`,`ui-note`,`To download a backup, ask in chat to open a new Settings card.`)):n?.availability===`ended`&&e.append(J(`p`,`ui-note`,`To download the current records again, ask in chat to open a new Settings card.`))}function se(e){let n=r.download,i=n?.localSave,a=r.file;if(!n||!i||i.status!==`saved`&&i.status!==`saving`&&n.endReason&&n.endReason!==`local_save_failed`)return!1;if(e.append(J(`h2`,void 0,i.status===`saved`?`Backup saved`:i.status===`saving`?`Saving backup…`:i.status===`needs_consent`?`Save a local copy?`:`Backup not saved`)),i.status===`saved`&&r.backupLocation){let t=J(`div`,`settings-backup-location`);t.append(Y(`Folder`,J(`span`,`settings-path`,r.backupLocation.directory)),Y(`File name`,J(`span`,`settings-path`,r.backupLocation.filename))),e.append(J(`p`,`ui-note`,`The backup was saved in the Sui MCP backup folder on this computer.`),t)}else i.status===`saving`?e.append(J(`p`,`ui-note`,`Wait while this backup is saved and checked. Use Check status to check the same request.`)):i.status===`failed`&&e.append(J(`p`,`ui-error`,i.failure===`target_conflict`?`The backup location already contains an item or could not be verified. It has not been replaced.`:i.failure===`not_published`?`The backup could not be saved. You can retry saving the same backup.`:`The backup could not be verified for saving. Open a new Settings card to try again.`));return i.status!==`saved`&&i.status!==`saving`&&n.previousUnconfirmed&&e.append(J(`p`,`ui-note`,`An earlier request may already have saved this backup. Saving a local copy may leave another copy.`)),a&&(i.status!==`saved`&&e.append(Y(`Suggested file name`,a.displayName)),e.append(Y(`File size`,`${a.totalSize.toLocaleString(`en-US`)} bytes`)),a.totalSize>16777216&&e.append(J(`p`,`ui-note`,`This backup exceeds the 16 MiB restore limit.`))),t&&c&&n.allowedFileActions.includes(`settings_store_backup`)&&e.append(ae(i.status===`needs_consent`?`Save a local copy`:`Retry save`,`settings_store_backup`,()=>{if(!c||o||d||!r.file||!r.download)return;let e=r.download.localSave,t={action:`settings_store_backup`,operationId:r.operationId,fileId:r.file.fileId,attemptId:r.download.currentAttemptId,saveAttemptId:crypto.randomUUID(),allowPossibleCopy:r.download.previousUnconfirmed,...e?.currentSaveAttemptId?{previousSaveAttemptId:e.currentSaveAttemptId}:{}};d=!0,c.setFileTransferActive(!0),w(),l?.(),c.act(t,!0).catch(()=>{}).finally(()=>{d=!1,o||(c?.setFileTransferActive(!1),w(),l?.())})},d)),!0}function C(e,t,n,i){let a=ag(`Details`);if(r.facts&&a.body.append(Y(`Version`,r.facts.server.version)),a.body.append(Y(`Settings request ID`,og(r.operationId))),i&&i.kind===r.draft?.kind&&r.file&&a.body.append(Y(`File SHA-256`,og(r.file.sha256))),i&&[`download_backup`,`import_local_data`,`reset_local_data`].includes(i.kind)&&a.body.append(J(`p`,`ui-note`,`Local backups do not contain wallet keys, wallet connections, wallet approvals, access granted to cards, transaction bytes or signatures.`)),i?.kind===`import_local_data`&&r.preparation?.preview){let e=eC(r.preparation.preview);nC(a.body,e.currentCounts,`Checked local records`),nC(a.body,e.incomingCounts,`Backup records`)}if(t===`advanced`&&r.facts)for(let[e,t,n]of[[`grpc`,`Sui node`,r.facts.localSettings.suiGrpcUrl],[`graphql`,`Activity data`,r.facts.localSettings.suiGraphqlUrl]])(!i||i.kind!==`set_endpoint`&&i.kind!==`restore_endpoint`||i.endpoint===e)&&(a.body.append(J(`h3`,void 0,t),Y(`Saved network address`,n.storedValue),Y(`Network address in use`,n.effectiveValue),Y(`Set by`,YS[n.source])),n.pendingStoredValue&&a.body.append(Y(`Network address saved for next restart`,n.pendingStoredValue)));if(n){a.body.append(J(`h3`,void 0,`Connection and transaction request records`)),typeof r.preparation?.walletRunId==`string`&&a.body.append(Y(`Service run ID`,og(r.preparation.walletRunId)));for(let e of n.connections)a.body.append(Y(`${e.walletName??`Wallet`} connection ID`,og(e.connectionId)));for(let e of n.requests)a.body.append(Y(`Transaction request ID`,og(e.attempt_id)),Y(`Recorded request status`,e.request_status))}e.append(a.details)}function w(e=!1){let n=y.querySelector(`details`)?.open===!0,f=e?[...y.querySelectorAll(`input`)].filter(e=>e.type!==`file`).map(e=>e.value):void 0,h=ig();if(i.state===`closed`){let e=r.download?.localSave?.status===`saved`?`Backup saved`:r.download?.hostReport===`acknowledged`?`Download requested`:r.download?.hostReport===`not_completed`?`Download not completed`:r.download?.hostReport===`unconfirmed`?`Download unconfirmed`:r.download?.hostReport===`not_sent`?`Backup not sent`:r.download?.endReason===`cancelled`?`Download cancelled`:r.download?.endReason?`Download ended`:void 0;if(h.append(J(`h2`,void 0,e??(r.draft?US[r.draft.kind]:`Settings result`)),J(`p`,r.result?.outcome===`failed`?`ui-error`:`ui-note`,r.result?.message??`Status recorded. This card cannot apply changes.`),Y(`Recorded at`,sg(r.result?.recordedAt??i.createdAt))),i.input.operationStatus){let e={draft:`Not confirmed`,uploading:`Receiving a backup`,sealed:`Backup received`,prepared:`Awaiting confirmation`,executing:r.download?`Backup delivery in progress`:`Applying change`,stopping:`Stopping connection service`,starting:`Starting connection service`,terminal:`Finished`};h.append(Y(`Status checked at`,sg(i.createdAt)),Y(`Operation`,e[r.phase]))}r.download&&h.append(Y(`Backup delivery`,r.download.localSave?.status??r.download.hostReport??r.download.availability)),r.backupLocation&&h.append(Y(`Backup folder`,r.backupLocation.directory),Y(`File name`,r.backupLocation.filename));let t=eC(r.result?.details),n=C_.safeParse(t.walletConnectionChains);n.success&&h.append(Y(`Saved networks`,n.data.map(e=>T_[e]).join(`, `)||`None`)),typeof t.storedValue==`string`&&(h.append(Y(t.endpoint===`grpc`?`Saved Sui node address (gRPC)`:`Saved activity data address (GraphQL)`,t.storedValue)),typeof t.effectiveValueAtSave==`string`&&h.append(Y(`Network address in use when saved`,t.effectiveValueAtSave)),h.append(J(`p`,`ui-note`,t.effectiveSourceAtSave===`environment`?`The app launch settings override this saved address. Remove that launch setting and restart all apps using Sui MCP to use the saved address.`:`To use the saved network address, `+qS))),r.temporaryFileCleanup&&r.temporaryFileCleanup!==`complete`&&h.append(J(`p`,`ui-note`,`Temporary-file cleanup was not confirmed when this result was recorded. Ask in chat for a new Settings status card to check the same request.`)),r.file&&(h.append(Y(r.draft?.kind===`download_backup`?`Suggested file name`:`Backup file`,r.file.displayName),Y(`File size`,`${r.file.totalSize.toLocaleString(`en-US`)} bytes`)),r.draft?.kind===`download_backup`&&r.file.totalSize>16777216&&h.append(J(`p`,`ui-note`,`This backup exceeds the 16 MiB restore limit.`))),h.append(J(`p`,`ui-note`,`To make another change or try delivery again, ask in chat for a new card.`)),C(h,r.draft?tC(r.draft.kind):`overview`,void 0,r.draft),y.replaceChildren(h);return}let g=p&&i.state===`ready`&&p.cardId===i.cardId&&p.operationId===r.operationId&&(p.kind===`backup_check_response`?r.draft?.kind===`import_local_data`&&p.fileId===r.file?.fileId:p.kind===`selection_response`||JSON.stringify(p.draft)===JSON.stringify(r.draft))?p:void 0,re=r.result||r.restoreCheck?.status===`can_restore`||r.restoreCheck?.status===`cannot_restore`&&[`invalid_backup`,`file_unavailable`,`input_unavailable`].includes(r.restoreCheck.reason),ie=r.restoreCheck?.status===`checking`||!re&&(g?.kind===`backup_check_response`||v?.progress?.stage===`checking`),se=[`executing`,`stopping`,`starting`].includes(r.phase)||ie,T=r.draft?.kind===`import_local_data`&&r.restoreCheck?.status===`can_restore`,ce=m?.phase===`admitting`,E=ce?`progress`:r.result?`result`:se?`progress`:a.kind===`section`?`section`:r.phase===`prepared`&&(r.draft?.kind!==`import_local_data`||T)?`confirmation`:`input`,D=a.kind===`section`?a.page:tC(a.operation),O=ce?{kind:`download_backup`}:E===`section`?void 0:r.draft,le=O?tC(O.kind):D,ue=O?.kind===`restart_wallet_service`&&r.preparation?.impact?rv.parse(r.preparation.impact):void 0,de=E===`result`||E===`progress`?_??2:E===`confirmation`?3:E===`input`?2:le===`overview`?0:1;h.classList.add(`settings-page`),_!==void 0&&de!==_&&h.classList.add(de>_?`settings-page--forward`:`settings-page--back`),_=de;let fe=J(`nav`,`settings-toolbar`);if(fe.setAttribute(`aria-label`,`Settings navigation`),y.dataset.settingsPage=le,E===`confirmation`&&O&&t&&r.allowedActions.includes(`settings_back`)){let e=`Back to ${O.kind===`import_local_data`?US[O.kind]:WS[le]}`,n=$h(e,()=>{o||d||(a=O.kind===`import_local_data`?{kind:`operation`,operation:O.kind}:{kind:`section`,page:le},t({action:`settings_back`,operationId:r.operationId}))},`secondary`);n.dataset.cardAction=`settings_back`,n.setAttribute(`aria-label`,e),n.classList.add(`settings-back`),fe.append(n)}else if(E===`input`&&O&&t){let e=ee(`Back to ${WS[le]}`,{kind:`section`,page:le});e.classList.add(`settings-back`),fe.append(e)}else if(E===`section`&&le!==`overview`){let e=ee(`Back to Settings`,{kind:`section`,page:`overview`});e.classList.add(`settings-back`),fe.append(e)}let k=J(`span`,`settings-location`,[`Settings`,...le===`overview`?[]:[WS[le]],...O?[US[O.kind]]:[],...E===`result`?[`Result`]:E===`progress`?[O?.kind===`download_backup`?`Downloading`:ie?`Checking backup`:`Applying change`]:E===`confirmation`?[`Confirm`]:[]].join(` / `));if(k.setAttribute(`aria-current`,`page`),fe.append(k),h.append(fe),O?.kind===`download_backup`)oe(h);else if(E===`progress`){let e=J(`p`,`ui-note`,ie?`Checking backup…`:r.phase===`stopping`?`Stopping the wallet connection service…`:r.phase===`starting`?`Starting the wallet connection service…`:`Finishing this change…`);e.setAttribute(`role`,`status`),h.append(e),r.phase===`starting`&&h.append(J(`p`,`ui-note`,`If the service is not responding, you can request another restart in a new Settings card under Troubleshooting. This card keeps the result of the current restart.`))}else if(E===`confirmation`&&r.draft){if(h.append(J(`h2`,void 0,QS[r.draft.kind])),T&&r.file&&h.append(Y(`Backup file`,r.file.displayName)),r.draft.kind===`set_endpoint`||r.draft.kind===`restore_endpoint`){let e=eC(r.preparation?.endpoint);h.append(Y(`Setting`,r.draft.endpoint===`grpc`?`Sui node (gRPC)`:`Activity data (GraphQL)`)),typeof e.storedValue==`string`&&h.append(Y(`Previously saved network address`,e.storedValue)),typeof e.value==`string`&&h.append(Y(`Network address to save`,e.value)),h.append(J(`p`,`ui-note`,`Sui MCP checks that this address connects to Sui mainnet before saving it. Fully quit and reopen all apps using Sui MCP to use the change. Restarting only the wallet connection service does not apply it.`)),e.source===`environment`&&h.append(J(`p`,`ui-note`,`The app launch settings specify the network address to use. Restarting without removing that launch setting will keep using that address.`))}if(r.draft.kind===`reset_local_data`&&h.append(J(`p`,`ui-note`,KS)),r.draft.kind===`reset_local_data`||r.draft.kind===`import_local_data`){T?h.append(J(`p`,`ui-error`,`Restoring replaces local records and saved network settings, including records with unconfirmed transaction results. You cannot undo this from this card. Other open cards will no longer work; open new cards after restoring.`),J(`p`,`ui-note`,`Wallet keys and approvals are not restored. Transactions on Sui are not cancelled.`)):(h.append(J(`p`,`ui-error`,`This deletes local records and saved settings, including records whose transaction results are still unconfirmed. It does not cancel transactions on Sui. Data cannot be replaced until pending wallet or transaction responses and the initial result-checking period have ended.`)),h.append(J(`p`,`ui-error`,`You cannot undo this from this card. Other open cards will no longer work. You can still read this change's result.`)));let e=eC(r.preparation?.preview);if(r.draft.kind===`import_local_data`){let t=eC(e.currentCounts),n=eC(e.incomingCounts);h.append(J(`h3`,void 0,`Records to replace (now → backup)`));for(let[e,r]of ZS)typeof t[e]==`number`&&typeof n[e]==`number`&&(t[e]!==0||n[e]!==0)&&h.append(Y(r,`${t[e]} → ${n[e]}`));typeof t.outcomeUnknownRequests==`number`&&t.outcomeUnknownRequests>0&&h.append(J(`p`,`ui-error`,`The current records with unconfirmed transaction results will be removed.`)),e.restartRequiredAfterImport===!0&&h.append(J(`p`,`ui-note`,`After restoring, fully quit and reopen all apps using Sui MCP. Network addresses specified in the app launch settings still take priority over the restored settings.`)),h.append(J(`p`,`ui-note`,`Restoring saved addresses does not reconnect a wallet. Disconnect any retained wallet connection, then connect again before using an address.`))}else nC(h,r.preparation?.counts,`Current local records`)}if(r.draft.kind===`restart_wallet_service`){h.append(J(`p`,`ui-note`,`The wallet connection service restarts while your apps stay open. Pending wallet approvals can no longer send a transaction, and unfinished review checks stop. Transactions already sent to Sui are not cancelled; checks already in progress continue. Restarting does not confirm a failed disconnection or remove the connection from your wallet app.`));let e=ue??rv.parse(r.preparation?.impact);h.append(Y(`Wallet connection records`,String(e.connections.length)),J(`p`,`ui-note`,`These are recorded connections, not confirmation that a wallet is connected now. Restarting does not reconnect a disconnected wallet.`));for(let t of e.connections){h.append(Y(`Wallet`,t.walletName??`Wallet`),Y(`Recorded status`,XS[t.status]));for(let e of t.chainResults.filter(e=>e.status===`bound`))h.append(Y(`${T_[e.chainId]} address`,og(e.address)));t.disconnectPending&&h.append(J(`p`,`ui-note`,`This wallet's disconnection has not been confirmed.`))}let t=e.requests.filter(e=>e.request_status===`awaiting_signature`).length;h.append(Y(`Wallet approval requests to stop`,String(t)),Y(`Other transaction requests`,String(e.requests.length-t)))}t&&r.allowedActions.includes(`settings_confirm`)?h.append(ne(b($S[r.draft.kind],{action:`settings_confirm`,operationId:r.operationId,preparationId:r.preparationId},[`reset_local_data`,`import_local_data`].includes(r.draft.kind)?`danger`:`primary`))):t&&h.append(J(`p`,`ui-note`,`This change cannot be confirmed right now.`))}else if(O){let e;if(h.append(J(`h2`,void 0,US[O.kind])),le===`records`&&h.append(J(`p`,`ui-note`,KS)),O.kind===`import_local_data`){if(r.restoreCheck?.status===`cannot_restore`){let e=J(`p`,`ui-error`,r.restoreCheck.message);e.setAttribute(`role`,`alert`),h.append(J(`h3`,void 0,`Cannot restore`),e)}else r.restoreCheck?.status===`check_required`&&h.append(J(`p`,`ui-note`,r.restoreCheck.message));if(v?.progress&&!ie&&!re){let e=J(`p`,`ui-note`,v.progress.stage===`reading`?`Reading the selected file…`:`Receiving backup…`);e.setAttribute(`role`,`status`),h.append(e)}let n=ng({type:`file`});n.accept=`.json,application/json`,n.dataset.cardAction=`settings_begin_upload`,n.addEventListener(`change`,()=>{let e=n.files?.[0];if(!e||!c||d||o)return;let t={startingRevision:i.revision,progress:void 0};v=t,d=!0,u=void 0,VS(e,c,()=>({operationId:r.operationId,cardId:i.cardId}),()=>!o&&v===t,e=>{o||v!==t||e.operationId!==r.operationId||e.cardId!==i.cardId||(t.progress=e,w(),l?.())}).then(()=>{!o&&v===t&&(u=void 0)}).catch(e=>{!o&&v===t&&(u={cardId:i.cardId,operationId:r.operationId,revision:i.revision,draft:JSON.stringify(r.draft),fileId:r.file?.fileId,message:e instanceof Error?e.message:`The file transfer could not be confirmed. Choose the file again to continue.`})}).finally(()=>{v===t&&(v=void 0),d=!1,o||(w(),l?.())})}),t&&!r.file?.sealed&&h.append(rg(r.file?`Choose the same file to continue`:`Choose a Sui MCP backup (up to 16 MiB)`,n)),r.file&&(h.append(Y(`Selected file`,r.file.displayName),Y(`File received`,`${r.file.receivedSize.toLocaleString(`en-US`)} / ${r.file.totalSize.toLocaleString(`en-US`)} bytes`)),t&&r.allowedActions.includes(`settings_prepare`)&&(e=b(`Check backup again`,{action:`settings_prepare`,operationId:r.operationId},`primary`)),t&&h.append(x(`Change backup file`,{kind:`import_local_data`},!1,!0)))}else{if(O.kind===`set_endpoint`||O.kind===`restore_endpoint`){let e=O.endpoint===`grpc`?r.facts?.localSettings.suiGrpcUrl:r.facts?.localSettings.suiGraphqlUrl;h.append(Y(`Network setting`,O.endpoint===`grpc`?`Sui node (gRPC)`:`Activity data (GraphQL)`)),e&&h.append(Y(`Current saved address`,e.storedValue)),O.kind===`set_endpoint`?h.append(Y(`Selected network address`,O.value)):h.append(J(`p`,`ui-note`,`Review the built-in default address before confirming this change.`)),e?.source===`environment`&&h.append(J(`p`,`ui-note`,`The app launch settings specify the network address in use. Saving or restoring an address here does not remove that launch setting.`))}else O.kind===`set_wallet_networks`?h.append(Y(`Selected networks`,O.chains.map(e=>T_[e]).join(`, `)||`None`),J(`p`,`ui-note`,`The selection applies to new wallet connections. Existing connections and connection requests stay unchanged.`)):O.kind===`restart_wallet_service`?(r.facts&&h.append(Y(`Wallet connection service`,JS[r.facts.walletAvailability.status])),r.facts?.connectionReconciliationRequired&&h.append(J(`p`,`ui-error`,ov)),r.facts&&r.facts.walletAvailability.status!==`available`&&h.append(J(`p`,`ui-note`,r.facts.walletAvailability.message)),h.append(J(`p`,`ui-note`,`Review the connection and transaction requests affected before confirming a service restart.`))):O.kind===`reset_local_data`&&h.append(J(`p`,`ui-note`,`Review the records and saved settings to delete before confirming the reset.`));t&&r.allowedActions.includes(`settings_prepare`)&&(e=b(`Retry check`,{action:`settings_prepare`,operationId:r.operationId},`primary`))}e&&h.append(ne(e))}else{if(h.append(J(`h2`,void 0,D===`overview`?`Choose a section`:WS[D])),D===`overview`){h.append(J(`p`,`ui-note`,`You can use the default Sui mainnet network settings. Custom settings are optional.`)),r.facts?.connectionReconciliationRequired&&h.append(J(`p`,`ui-error`,ov));let e=r.facts?.walletAvailability;e&&e.status!==`available`&&h.append(J(`p`,e.status===`unavailable`?`ui-error`:`ui-note`,e.message),...e.status===`unavailable`?[J(`p`,`ui-note`,`Open Troubleshooting below to check the connection service.`)]:[]);let t=J(`div`,`settings-menu`);t.setAttribute(`aria-label`,`Settings sections`);for(let e of[`networks`,`address`,`records`,`troubleshooting`,`advanced`]){let n=ee(WS[e],{kind:`section`,page:e});n.classList.add(`settings-menu-item`),n.setAttribute(`aria-label`,WS[e]),n.textContent=``,n.append(J(`span`,`settings-menu-title`,WS[e]),J(`span`,`settings-menu-description`,GS[e])),t.append(n)}if(h.append(t),r.draft&&(r.phase===`prepared`||r.draft.kind===`import_local_data`)){let e=J(`div`,`settings-pending`);e.append(J(`p`,`ui-note`,`Unfinished change: ${US[r.draft.kind]}.`),ee(`Resume`,{kind:`operation`,operation:r.draft.kind})),h.append(e)}}else if(D===`address`)h.append(Y(`Saved read address`,r.facts?.readAddress?og(r.facts.readAddress):`Not set`),J(`p`,`ui-note`,`Clearing this address does not disconnect your wallet, change its fixed addresses or cancel a transaction. Explicit-address reads remain available.`)),t&&r.facts?.readAddress&&r.facts.readConnectionId&&r.allowedActions.includes(`settings_clear_read_address`)&&h.append(tg(b(`Clear saved read address`,{action:`settings_clear_read_address`,operationId:r.operationId,connectionId:r.facts.readConnectionId,account:r.facts.readAddress},`primary`)));else if(D===`networks`){let e=r.facts?.localSettings.walletConnectionChains??[];s??=new Set(r.draft?.kind===`set_wallet_networks`?r.draft.chains:e),h.append(J(`p`,`ui-note`,`Choose the networks for your next wallet connection. Only addresses approved by the wallet will be used.`),Y(`Saved networks`,e.map(e=>T_[e]).join(`, `)||`None`));for(let e of y_){let n=ng({type:`checkbox`,name:e});n.checked=s.has(e),n.disabled=!t,n.dataset.cardAction=`settings_save_wallet_networks`,n.dataset.walletNetwork=e,n.addEventListener(`change`,()=>{n.checked?s.add(e):s.delete(e)}),h.append(rg(T_[e],n))}if(h.append(J(`p`,`ui-note`,`An unsent Connect request ends if its networks change. Requests already sent and approved connections keep their networks. To change an approved connection, disconnect it and connect again. An empty selection disables new connections.`)),t){let n=$h(`Save networks`,()=>{!o&&!d&&t({action:`settings_save_wallet_networks`,operationId:r.operationId,chains:y_.filter(e=>s.has(e)),expectedChains:e})},`primary`);n.dataset.cardAction=`settings_save_wallet_networks`,h.append(tg(n))}}else if(D===`records`)h.append(J(`p`,`ui-note`,KS)),t&&h.append(te(`Backup`,`Download the current local records and settings as one backup file. If this connection cannot provide downloads, the same file is saved in the Sui MCP backup folder on this computer.`,ae(`Download backup`,`settings_download_backup`,()=>S(!1))),te(`Restore`,`Choose a Sui MCP backup. It will be checked automatically before you confirm the restore.`,x(`Restore local records`,{kind:`import_local_data`})),te(`Reset`,`Review the local records and stored settings to delete. This does not cancel transactions on Sui.`,x(`Reset local data`,{kind:`reset_local_data`},!0)));else if(D===`troubleshooting`)r.facts&&(h.append(Y(`Wallet connection service`,JS[r.facts.walletAvailability.status])),r.facts.connectionReconciliationRequired&&h.append(J(`p`,`ui-error`,ov)),r.facts.observedAt&&h.append(Y(`Status checked at`,sg(r.facts.observedAt))),r.facts.walletAvailability.status!==`available`&&h.append(J(`p`,`ui-note`,r.facts.walletAvailability.message))),h.append(J(`p`,`ui-note`,`Restart the wallet connection service if a connection request is not responding. Starting up or waiting for you to approve in your wallet does not by itself mean a failure.`)),t&&h.append(x(`Restart connection service`,{kind:`restart_wallet_service`}));else if(D===`advanced`&&r.facts)for(let e of[`grpc`,`graphql`]){let n=e===`grpc`?r.facts.localSettings.suiGrpcUrl:r.facts.localSettings.suiGraphqlUrl,i=ng({value:r.draft?.kind===`set_endpoint`&&r.draft.endpoint===e?r.draft.value:n.storedValue});i.dataset.cardAction=`settings_select`;let a=J(`div`,`settings-endpoint`);if(a.append(rg(e===`grpc`?`Sui node (gRPC)`:`Activity data (GraphQL)`,i),J(`p`,`ui-note`,e===`grpc`?`Used to retrieve balances, check transactions before wallet approval and send approved transactions.`:`Used to retrieve transaction activity.`)),t){let n=$h(`Select network address`,()=>{!d&&!o&&t({action:`settings_select`,draft:{kind:`set_endpoint`,endpoint:e,value:i.value}})},`secondary`);n.dataset.cardAction=`settings_select`,a.append(eg(n,x(`Select default network address`,{kind:`restore_endpoint`,endpoint:e})))}n.appliesAfter&&a.append(J(`p`,`ui-note`,`A saved change needs an app restart. `+qS)),n.source===`environment`&&a.append(J(`p`,`ui-note`,`The app launch settings specify the network address to use. Remove that launch setting before restarting to use an address saved here.`)),h.append(a)}D!==`overview`&&r.draft&&D===tC(r.draft.kind)&&(r.phase===`prepared`||r.draft.kind===`import_local_data`)&&h.append(J(`p`,`ui-note`,`Unfinished change: ${US[r.draft.kind]}.`),ee(`Resume`,{kind:`operation`,operation:r.draft.kind})),t&&D===`overview`&&r.allowedActions.includes(`settings_cancel`)&&(r.draft&&h.append(J(`p`,`ui-note`,`Closing Settings discards this unfinished change. Nothing will be applied.`)),h.append(tg(b(`Close Settings`,{action:`settings_cancel`}))))}if((g?.kind===`preparation_response`||g?.kind===`selection_response`)&&!r.result&&!se){let e=J(`p`,`ui-note`,g.kind===`selection_response`?`Checking this change…`:`Waiting for a response…`);e.setAttribute(`role`,`status`),h.append(e)}u&&E===`input`&&O?.kind===`import_local_data`&&h.append(J(`p`,`ui-note`,u.message));let pe=y.contains(document.activeElement)?document.activeElement.dataset.walletNetwork:void 0;C(h,le,ue,O),y.replaceChildren(h),pe&&[...y.querySelectorAll(`input[data-wallet-network]`)].find(e=>e.dataset.walletNetwork===pe)?.focus(),f&&[...y.querySelectorAll(`input`)].filter(e=>e.type!==`file`).forEach((e,t)=>{f[t]!==void 0&&(e.value=f[t])}),n&&(y.querySelector(`details`).open=!0)}return w(),{node:y,update(e,t){let n=lS.parse(e.data);if(n.operationId!==r.operationId)return!1;h&&n.file?.fileId===h.fileId&&n.download?.currentAttemptId===h.attemptId&&n.download.hostReport===h.status&&(h=void 0,g=void 0),h&&(!n.download?.allowedFileActions.includes(`settings_report_download`)||n.file?.fileId!==h.fileId)&&(h=void 0,g=void 0),u&&(n.result||e.revision!==u.revision||e.cardId!==u.cardId||n.operationId!==u.operationId||JSON.stringify(n.draft)!==u.draft||n.file?.fileId!==u.fileId)&&(u=void 0);let o=e===i;if(o&&!p&&!t.settingsCommandProgress)return!0;(JSON.stringify(n.draft)!==JSON.stringify(r.draft)||n.phase===`prepared`&&r.phase!==`prepared`)&&(a=n.draft?{kind:`operation`,operation:n.draft.kind}:{kind:`section`,page:tC(r.draft?.kind)});let s=v?.progress;return v&&(n.result||n.draft?.kind!==`import_local_data`||s?.stage===`reading`&&e.revision>v.startingRevision||s?.fileId&&n.file?.fileId!==s.fileId||s?.sha256&&n.file&&n.file.sha256!==s.sha256)&&(v=void 0),r=n,i=e,c=t.settings,l=t.onDisplayChange,p=t.settingsCommandProgress,w(o),ie(),!0},displayRecovery(){return h?g:void 0},dispose(){o=!0,v=void 0,u=void 0,m=void 0,h=void 0}}}RS(`settings`,{title:`Settings`,controls:(e,t,n,r,i)=>rC(e,t,i),result:(e,t,n,r,i)=>rC(e,n,i)});</script></body></html>