@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.
- package/README.md +15 -9
- package/dist/core/activity/sqliteActivityStoreSchema.js +2 -2
- package/dist/core/activity/sqliteActivityStoreTypes.js +9 -0
- package/dist/mcp-app/account.html +1 -1
- package/dist/mcp-app/chart.html +1 -1
- package/dist/mcp-app/connect.html +1 -1
- package/dist/mcp-app/disconnect.html +1 -1
- package/dist/mcp-app/receipt.html +1 -1
- package/dist/mcp-app/review.html +1 -1
- package/dist/mcp-app/settings.html +1 -1
- package/dist/runtime/runtimeTermination.js +3 -0
- package/docs/MCP_SETUP.md +76 -19
- package/package.json +1 -1
|
@@ -3588,4 +3588,4 @@ zebra
|
|
|
3588
3588
|
zero
|
|
3589
3589
|
zone
|
|
3590
3590
|
zoo`.split(`
|
|
3591
|
-
`)),xv={0:`ED25519`,1:`Secp256k1`,2:`Secp256r1`,3:`MultiSig`,5:`ZkLogin`,6:`Passkey`},Sv=e=>Object.freeze(e());function Cv(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`&&`BYTES_PER_ELEMENT`in e&&e.BYTES_PER_ELEMENT===1}function wv(e){if(!Cv(e))throw TypeError(`Uint8Array expected`)}function Tv(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 Ev(e){if(typeof e!=`function`)throw TypeError(`function expected`);return!0}function Dv(e,t){if(typeof t!=`string`)throw TypeError(`${e}: string expected`);return!0}function Ov(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 kv(e,t){if(!Tv(!1,t))throw TypeError(`${e}: array of numbers expected`)}var Av=(()=>{let e=[];for(let t=0;t<40;t++)e.push(2**t);return e})();function jv(e,t=e.length){let n=Array(t);for(let r=0;r<t;r++)n[r]=e[r];return n}var Mv=(()=>{try{let e=new TextDecoder;return e.decode(Uint8Array.of(65,48,43,127))===`A0+`?e:void 0}catch{return}})(),Nv=8192;function Pv(e){let t=e.length;if(Mv!==void 0&&t>=12)return Mv.decode(e);if(t<=Nv)return String.fromCharCode.apply(null,e);let n=``;for(let r=0;r<t;r+=Nv)n+=String.fromCharCode.apply(null,e.subarray(r,r+Nv));return n}function Fv(e){if(Ov(e),e<=0||e>8)throw RangeError(`radix2: bits should be in (0..8]`);let t=Av[e]-1;return{encode:n=>{wv(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 Iv(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 Pv(t)},decode:t=>{Dv(`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 Lv(e){return Ev(e),function(...t){try{return e.apply(null,t)}catch{}}}var Rv=Iv(`qpzry9x8gf2tvdw0s3jn54khce6mua7l`),zv=/^[\x21-\x60\x7b-\x7e]+$/;function Bv(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 Vv(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 Hv=[996825010,642813549,513874426,1027748829,705979059];function Uv(e){let t=e>>25,n=(e&33554431)<<5;for(let e=0;e<Hv.length;e++)(t>>e&1)==1&&(n^=Hv[e]);return n}function Wv(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=Uv(i)^n>>5}i=Uv(i);for(let t=0;t<r;t++)i=Uv(i)^e.charCodeAt(t)&31;for(let e of t)i=Uv(i)^e;for(let e=0;e<6;e++)i=Uv(i);i^=n;let a=new Uint8Array(6);for(let e=0;e<6;e++)a[e]=i>>>5*(5-e)&31;return Rv.encode(a)}function Gv(e){let t=e===`bech32`?1:734539939,n=Fv(5),r=e=>{wv(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=>{kv(`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=Lv(i);function o(e,n,r=90){Dv(`bech32.encode prefix`,e),r!==!1&&Ov(r,`limit`),Cv(n)&&(n=jv(n)),kv(`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}`);Bv(`bech32.encode prefix`,e);let o=e.toLowerCase(),s=Wv(o,n,t);return`${o}1${Rv.encode(Vv(n))}${s}`}function s(e,n=90){Dv(`bech32.decode input`,e),n!==!1&&Ov(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&&!zv.test(e))throw Bv(`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=Rv.decode(s),l=jv(c,c.length-6),u=Wv(o,l,t);if(!s.endsWith(u))throw Error(`Invalid checksum in ${e}`);return{prefix:o,words:l}}let c=Lv(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 Kv=Sv(()=>Gv(`bech32`));function qv(e){let{prefix:t,words:n}=Kv.decode(e);if(t!==`suiprivkey`)throw Error(`invalid private key prefix`);let r=new Uint8Array(Kv.fromWords(n)),i=r.slice(1);return{scheme:xv[r[0]],secretKey:i}}var Jv=`external-proposal-alpha-2026-05-25`,Yv=`proposal-review-model-alpha-2026-05-25`,Xv=F().refine(e=>{let t=new Date(e);return!Number.isNaN(t.getTime())&&t.toISOString()===e},`Expected ISO 8601 UTC timestamp`),Zv=/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,Qv=/(?:0x[0-9a-fA-F]{160,}|[A-Za-z0-9+/_=-]{160,})/,$v=/suiprivkey1[023456789acdefghjklmnpqrstuvwxyz]+/gi,ey=/(^|[^0-9a-fA-F])(?:0x)?[0-9a-fA-F]{64}($|[^0-9a-fA-F])/,ty=/(^|[^A-Za-z0-9+/_=-])(?:[A-Za-z0-9+/]{43}=|[A-Za-z0-9+/]{44}|[A-Za-z0-9_-]{43,44})($|[^A-Za-z0-9+/_=-])/,ny=/^(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$/,ry=[12,15,18,21,24];function iy(e,t,n={}){return F().min(1).max(e).superRefine((e,r)=>{(Zv.test(e)||Qv.test(e)||oy(e)||sy(e)||!n.allowRawSecretLikeText&&cy(e))&&r.addIssue({code:`custom`,message:`${t} must not contain executable, signing, private-key, mnemonic, route-selected, or encoded secret-like material`})})}function ay(e,t){return iy(e,t,{allowRawSecretLikeText:!0})}function oy(e){return(e.match($v)??[]).some(e=>{try{return qv(e.toLowerCase()),!0}catch{return e.toLowerCase().startsWith(`suiprivkey1`)}})}function sy(e){let t=e.normalize(`NFKD`).toLowerCase().replace(/[^a-z]+/g,` `).trim().split(/\s+/).filter(Boolean);for(let e of ry)if(!(t.length<e)){for(let n=0;n<=t.length-e;n+=1)if(yv(t.slice(n,n+e).join(` `),bv))return!0}return!1}function cy(e){return ey.test(e)||ty.test(e)}var ly=iy(80,`amountDisplay`).refine(e=>ny.test(e)&&/[1-9]/.test(e),{message:`Expected a positive decimal display amount`}),uy=V({kind:G([`mcp_server`,`ai_client`,`user`,`other`]),name:iy(120,`source.name`),reference:iy(256,`source.reference`).optional()}).strict(),dy=V({address:m_.optional(),label:iy(120,`party.label`).optional()}).strict().refine(e=>e.address!==void 0||e.label!==void 0,{message:`Expected address or label`}),fy=V({amountDisplay:ly,amountKind:K(`display_proposal`).default(`display_proposal`),symbol:iy(64,`amount.symbol`).optional(),coinType:ay(512,`amount.coinType`).optional(),denomination:iy(64,`amount.denomination`).optional()}).strict(),py=V({packageId:ay(128,`action.target.packageId`).optional(),module:iy(128,`action.target.module`).optional(),function:iy(128,`action.target.function`).optional(),objectId:ay(128,`action.target.objectId`).optional(),label:iy(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`}),my=V({direction:G([`outgoing`,`expected_incoming`,`fee`]),amount:fy,recipient:dy.optional(),description:iy(512,`assetFlow.description`).optional()}).strict(),hy=V({id:iy(120,`proposal.id`),source:uy,network:K(`sui:mainnet`),createdAt:Xv,expiresAt:Xv.optional(),purpose:iy(512,`purpose`),assumptions:B(iy(512,`assumptions[]`)).max(20).optional(),requiredUserChoices:B(iy(512,`requiredUserChoices[]`)).max(20).optional()}).strict(),gy=mc(`type`,[hy.extend({type:K(`payment`),payment:V({amount:fy,recipient:dy,target:iy(512,`payment.target`).optional()}).strict()}).strict(),hy.extend({type:K(`sui_action`),action:V({actionKind:iy(120,`action.actionKind`),target:py,recipient:dy.optional(),assetFlow:B(my).max(20).optional()}).strict()}).strict()]),_y=V({id:F(),label:F(),status:G([`pass`,`warning`,`fail`]),message:F(),source:G([`proposal`,`adapter`,`registry`,`quote`,`wallet`,`simulation`,`network`])}).strict(),vy=V({id:F(),label:F(),reason:F()}).strict(),yy=V({modelVersion:K(Yv),contractVersion:K(Jv),proposalId:F(),proposalType:G([`payment`,`sui_action`]),proposalSource:uy,proposedAction:V({kind:G([`payment`,`sui_action`]),title:F(),purpose:F(),network:K(`sui:mainnet`),recipient:dy.optional(),target:U([F(),py]).optional()}).strict(),assetFlow:V({outgoing:B(fy),expectedIncoming:B(fy),fees:B(fy)}).strict(),recipients:B(dy),targets:B(U([F(),py])),evidenceUsed:B(V({id:F(),label:F(),source:G([`external_proposal`,`local_schema`]),summary:F()}).strict()),missingEvidence:B(vy),requiredUserChoices:B(vy),unsupportedClaims:B(V({id:F(),label:F(),reason:F()}).strict()),rejectedExecutableFields:B(V({fieldName:F(),reason:F()}).strict()),freshness:V({proposalCreatedAt:Xv,proposalExpiresAt:Xv.optional(),evaluatedAt:Xv,status:G([`current`,`expired`,`created_in_future`,`expiry_not_provided`]),reason:F()}).strict(),blockingChecks:B(_y),nonSignableReason:V({code:K(`external_proposal_review_only`),message:F(),blockedCapabilities:B(F())}).strict()}).strict();V({requestedIntent:gy,implementationStatus:K(`read_only_review_only`),contractVersion:K(Jv)}).strict();var by=[`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`],xy=[`review_evidence_stale`,`quote_stale`,`quote_unavailable`,`simulation_transient_failure`,`review_update_failed`,`wallet_connection_changed`],Sy=[`proposed`,`awaiting_wallet`,`wallet_connected`,`ready_for_wallet_review`,`refresh_required`,`blocked`,`expired`],Cy=[`humanReadableReview`,`simulation`,`transactionReviewData`,`ptbVisualization`,`assetFlowActual`,`beforeAfterBalance`],wy=G([`client.core.simulateTransaction`,`client.transactionExecutionService.simulateTransaction`]),Ty=`ptb-visualization-contract-alpha-2026-05-25`,Ey=[`proposedAction`,`assetFlow`,`recipients`,`targets`,`evidenceUsed`,`missingEvidence`,`requiredUserChoices`,`unsupportedClaims`,`freshness`,`blockingChecks`],Dy=[`effects`,`balanceChanges`,`objectTypes`,`transaction`],Oy=[`transaction_bytes`,`serialized_transaction`,`wallet_signature_request`,`private_key_material`,`wallet_authorization`,`signing_data`,`signing_readiness`,`payment_execution_readiness`],ky=[`transaction_building_input`,`wallet_authorization`,`signing_data`,`signing_readiness`,`payment_execution_readiness`,`route_recommendation`],Ay=p_,jy=`MIST`,My=[`checkedAt`,`expiresAt`],Ny=[`checkedAt`,`expiryStatus`],Py=[`rawAmount`,`asset`,`amountRole`],Fy=[`minOutRaw`,`asset`,`amountRole`],Iy=[`gasBudgetRaw`,`asset`,`amountRole`],Ly=[`gasUsedRaw`,`asset`,`amountRole`],Ry=[`checkedAt`,`gasResolutionStatus`,`unresolvedReason`],zy=[`balanceChanges`,`asset`,`amountRole`],By=[`coinType`,`decimals`],Vy=[`quoteEvidenceId`,`minOutRaw`],Hy=[`maxSlippageBps`,`userSelection`],Uy=[`maxSlippageBps`,`minOutRaw`],Wy=[`ownerAccount`,`objects`],Gy=[`pinned_sdk_registry`,`verified_mainnet_onchain_metadata`,`wallet_account_read`,`quote_evidence`,`review_time_simulation`,`validated_request_fact`,`user_explicit_choice`],Ky=[`input`,`expected_output`,`minimum_output`,`gas_budget`,`gas_used`,`fee`,`balance_delta`],qy={input:{kinds:[`validated_request_fact`,`wallet_account_read`,`user_explicit_choice`],fields:Py},expected_output:{kinds:[`quote_evidence`,`review_time_simulation`],fields:Py},minimum_output:{kinds:[`quote_evidence`],fields:Fy},gas_budget:{kinds:[`review_time_simulation`],fields:Iy},gas_used:{kinds:[`review_time_simulation`],fields:Ly},fee:{kinds:[`review_time_simulation`],fields:Py},balance_delta:{kinds:[`review_time_simulation`],fields:zy}},Jy={pinned_sdk_metadata:{kinds:[`pinned_sdk_registry`],fields:By},verified_mainnet_onchain_metadata:{kinds:[`verified_mainnet_onchain_metadata`],fields:By}},Yy={user_explicit:{kinds:[`user_explicit_choice`],fields:Hy},adapter_policy_from_quote_evidence:{kinds:[`quote_evidence`],fields:Uy}},Xy={kinds:[`review_time_simulation`],fields:Ry},Zy={kinds:[`quote_evidence`],fields:Vy},Qy={kinds:[`validated_request_fact`],fields:My},$y={kinds:[`validated_request_fact`],fields:Ny},eb={raw_quantity_amount:{byRole:qy},unit_metadata:{bySource:Jy},gas_unresolved_status:Xy,expiry_status:{current:Qy,expired:Qy,not_provided:$y,not_applicable:$y},quote_min_out:Zy,slippage_policy:{bySource:Yy},object_ownership:{kinds:[`wallet_account_read`],fields:Wy},simulation_result:{kinds:[`review_time_simulation`],fields:Dy}},tb={gasBudgetClaimId:{factKind:`raw_quantity_amount`,role:`gas_budget`,assetCoinType:Ay,rawUnit:jy},gasUsedClaimId:{factKind:`raw_quantity_amount`,role:`gas_used`,assetCoinType:Ay,rawUnit:jy},gasObjectOwnershipClaimId:{factKind:`object_ownership`,ownership:`owned_by_account`}},nb=F().refine(e=>{let t=new Date(e);return!Number.isNaN(t.getTime())&&t.toISOString()===e},`Expected ISO 8601 UTC timestamp`),rb=P_(`unsigned integer`),ib=F().regex(/^0x[0-9a-fA-F]{1,64}$/,{message:`Expected a Sui object id`}),ab=F().min(1).max(512).refine(e=>{try{return L_(e)===e}catch{return!1}},`Expected a normalized Sui struct tag coin type`),X=F().min(1).max(120),ob=V({symbol:F().min(1).max(64).optional(),coinType:ab}).strict(),sb=/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,cb=/(?:0x[0-9a-fA-F]{160,}|[A-Za-z0-9+/_=-]{160,})/;function lb(e,t){return F().min(1).max(e).superRefine((e,n)=>{(sb.test(e)||cb.test(e))&&n.addIssue({code:`custom`,message:`${t} must not contain executable transaction, signing, private-key, mnemonic, or long encoded material`})})}function ub(e,t){let n=new Set(e);return t.filter(e=>!n.has(e))}function db(e,t,n,r,i){let a=ub(t,n);a.length!==0&&e.addIssue({code:`custom`,path:r,message:`${i} must include ${a.join(`, `)}`})}function fb(e,t,n,r,i){db(e,t,n,r,i)}function pb(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&&pb(e,r,i)}function mb(e,t,n,r,i){let a=new Set(t),o=new Set(n);if(a.size!==o.size)pb(e,r,i);else for(let t of a)if(!o.has(t)){pb(e,r,i);return}}function hb(e,t,n,r,i){(t.symbol!==n.symbol||t.coinType!==n.coinType)&&pb(e,r,i)}function gb(e,t,n,r,i){try{L_(t.coinType)!==n&&pb(e,r,i)}catch{pb(e,r,i)}}var _b=V({kind:G([`natural_language_intent`,`external_proposal`,`mcp_action_request`,`local_review_request`]),sourceId:F().min(1).max(160),capturedAt:nb,authority:K(`untrusted_until_review_regenerates_and_verifies`),userSelectionSource:G([`user_explicit`,`prior_user_explicit_context`]).optional()}).strict(),vb=V({id:X,kind:G(Gy),network:K(`sui:mainnet`),source:F().min(1).max(240),verifiedAt:nb,fields:B(F().min(1).max(120)).min(1)}).strict(),yb=mc(`factKind`,[V({id:X,factKind:K(`raw_quantity_amount`),sourceEvidenceId:X,role:G(Ky),asset:ob,rawAmount:rb}).strict(),V({id:X,factKind:K(`unit_metadata`),sourceEvidenceId:X,source:G([`pinned_sdk_metadata`,`verified_mainnet_onchain_metadata`]),coinType:ab,decimals:L().int().min(0).max(255)}).strict(),V({id:X,factKind:K(`gas_unresolved_status`),sourceEvidenceId:X,checkedAt:nb,status:K(`unresolved`),reason:F().min(1).max(240)}).strict(),V({id:X,factKind:K(`expiry_status`),sourceEvidenceId:X,checkedAt:nb,status:G([`current`,`expired`,`not_provided`,`not_applicable`]),expiresAt:nb.optional(),reason:F().min(1).max(240).optional()}).strict(),V({id:X,factKind:K(`quote_min_out`),sourceEvidenceId:X,quoteEvidenceId:F().min(1).max(120),minOutRaw:rb}).strict(),V({id:X,factKind:K(`slippage_policy`),sourceEvidenceId:X,policySource:G([`user_explicit`,`adapter_policy_from_quote_evidence`]),maxSlippageBps:L().int().min(0).max(1e4),minOutRaw:rb.optional()}).strict(),V({id:X,factKind:K(`object_ownership`),sourceEvidenceId:X,objectId:ib,ownerAccount:m_,ownership:G([`owned_by_account`,`shared_object`,`immutable_or_package`,`not_owned_by_account`])}).strict(),V({id:X,factKind:K(`simulation_result`),sourceEvidenceId:X,provider:wy,checksEnabled:K(!0),simulatedAt:nb,status:G([`success`,`failed`,`unavailable`]),requiredFields:B(G(Dy)).min(Dy.length),missingFields:B(G(Dy)).default([]),failureReason:F().min(1).max(240).optional()}).strict()]),bb=V({id:X,role:G(Ky),asset:ob,rawAmount:rb,unit:V({decimals:L().int().min(0).max(255),source:G([`pinned_sdk_metadata`,`verified_mainnet_onchain_metadata`]),sourceField:F().min(1).max(160),unitClaimId:X}).strict(),amountClaimId:X,displayOnly:V({amountDisplay:F().min(1).max(120),reason:K(`presentation_only_not_signing_input`)}).strict().optional()}).strict(),xb=V({objectId:ib,ownerAccount:m_,ownershipClaimId:X}).strict(),Sb=V({source:K(`review_time_simulation`),checkedAt:nb,gasBudgetRaw:rb.optional(),gasBudgetClaimId:X.optional(),gasUsedRaw:rb.optional(),gasUsedClaimId:X.optional(),gasObjects:B(xb).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`})}),Cb=mc(`status`,[V({checkedAt:nb,status:K(`current`),expiresAt:nb,evidenceClaimId:X}).strict(),V({checkedAt:nb,status:K(`expired`),expiresAt:nb,evidenceClaimId:X}).strict(),V({checkedAt:nb,status:K(`not_provided`),evidenceClaimId:X,reason:F().min(1).max(240),expiresAt:lc().optional()}).strict(),V({checkedAt:nb,status:K(`not_applicable`),evidenceClaimId:X,reason:F().min(1).max(240),expiresAt:lc().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`})}),wb=V({status:G([`required_and_verified`,`not_required_for_action`,`missing`,`stale`]),quoteEvidenceId:F().min(1).max(120).optional(),quoteEvidenceClaimId:X.optional(),maxSlippageBps:L().int().min(0).max(1e4).optional(),minOutRaw:rb.optional(),policySource:G([`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`})}),Tb=V({checkedAt:nb,ownerAccount:m_,objects:B(V({objectId:ib,role:G([`input_coin`,`gas_coin`,`protocol_object`,`shared_object`,`receiving_object`]),ownership:G([`owned_by_account`,`shared_object`,`immutable_or_package`,`not_owned_by_account`]),evidenceClaimId:X}).strict()).min(1)}).strict(),Eb=V({evidenceClaimId:X,transactionDigest:h_,provider:wy,checksEnabled:K(!0),simulatedAt:nb,status:G([`success`,`failed`,`unavailable`]),requiredFields:B(G(Dy)).min(Dy.length),missingFields:B(G(Dy)).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=>Dy.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`}),Db=V({fields:B(G(Ey)).min(Ey.length),transactionDigest:h_,source:K(`review_model_or_adapter_equivalent`),purpose:K(`human_review_before_wallet_authorization`)}).strict().refine(e=>Ey.every(t=>e.fields.includes(t)),{message:`Human-readable review fields must include every required review field`}),Ob=V({runtimeStatus:K(`emitted_pre_handoff`),mcpAndReviewUiMayExpose:B(G([`human_readable_review`,`ptb_visualization_artifact`,`diagnostics`,`status_checks`])).min(1),prohibited:B(G(Oy)).min(1)}).strict().superRefine((e,t)=>{fb(t,e.prohibited,Oy,[`prohibited`],`prohibited`)}),kb=V({schemaVersion:K(1),adapterId:F().min(1).max(120),protocol:F().min(1).max(120),actionKind:F().min(1).max(120),network:K(`sui:mainnet`),inputProvenance:_b,sourceReferences:B(vb).min(1),evidenceClaims:B(yb).min(1),rawQuantities:B(bb).min(1),gas:Sb,expiry:Cb,slippageOrMinOut:wb,objectOwnership:Tb,simulation:Eb,humanReadableReview:Db,outputBoundary:Ob,reviewedTransactionDigest:h_}).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(`, `)}`}),db(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,eb.raw_quantity_amount.byRole[e.role],[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].raw_quantity_amount`),e.factKind===`unit_metadata`&&l(e.sourceEvidenceId,eb.unit_metadata.bySource[e.source],[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].unit_metadata`),e.factKind===`gas_unresolved_status`&&l(e.sourceEvidenceId,eb.gas_unresolved_status,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].gas_unresolved_status`),e.factKind===`expiry_status`&&(l(e.sourceEvidenceId,eb.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,eb.quote_min_out,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].quote_min_out`),e.factKind===`slippage_policy`&&(l(e.sourceEvidenceId,eb.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,eb.object_ownership,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].object_ownership`),e.factKind===`simulation_result`&&(l(e.sourceEvidenceId,eb.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`}),Dy.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`),hb(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,tb.gasBudgetClaimId.role,[`gas`,`gasBudgetClaimId`],`gas.gasBudgetClaimId role`),gb(t,n.asset,tb.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,tb.gasUsedClaimId.role,[`gas`,`gasUsedClaimId`],`gas.gasUsedClaimId role`),gb(t,n.asset,tb.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,tb.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`),mb(t,e.simulation.requiredFields,f.requiredFields,[`simulation`,`requiredFields`],`simulation.requiredFields`),mb(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`)}),Ab=V({contractVersion:K(Ty),artifactKind:K(`ptb_visualization`),generatedAt:nb,source:V({adapterId:F().min(1).max(120),planId:F().min(1).max(120).optional(),sourceKind:G([`review_time_generated_transaction_kind`,`review_time_ir`,`renderer_model`]),authority:K(`visualization_only_not_wallet_authorization`),renderer:V({name:F().min(1).max(120),packageName:F().min(1).max(120).optional(),version:F().min(1).max(80).optional()}).strict().optional()}).strict(),mermaid:V({diagramType:K(`flowchart`),text:lb(2e4,`mermaid.text`),namedText:lb(2e4,`mermaid.namedText`)}).strict(),diagnostics:B(V({severity:G([`info`,`warning`,`error`]),code:F().min(1).max(120),message:lb(512,`diagnostics.message`),source:G([`adapter`,`renderer`,`schema`,`simulation`])}).strict()).default([]),unsupportedUse:B(G(ky)).min(1),executableMaterial:V({included:K(!1),policy:K(`mcp_and_review_ui_outputs_must_not_include_executable_transaction_material`)}).strict()}).strict().superRefine((e,t)=>{fb(t,e.unsupportedUse,ky,[`unsupportedUse`],`unsupportedUse`)}),jb=W(F(),z()),Mb=G(by),Nb=G(xy);G([`ready_for_wallet_review`,`refresh_required`,`blocked`]);var Pb=G(Sy);G([`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 Fb=V({id:F(),label:F(),status:G([`pass`,`warning`,`fail`]),message:F(),source:G([`registry`,`quote`,`wallet`,`simulation`,`adapter`,`network`,`proposal`])}),Ib=F().min(1),Lb=`human_readable_review`,Rb=`review_time_simulation`,zb=V({stageCatalogId:F().min(1),adapterId:F(),protocol:F(),actionKind:F(),completedStages:B(Ib),missingStages:B(Ib)}).strict().superRefine((e,t)=>{let n=Bb(e.completedStages);n&&t.addIssue({code:`custom`,path:[`completedStages`],message:`completedStages contains duplicate stage '${n}'`});let r=Bb(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 Bb(e){let t=new Set;for(let n of e){if(t.has(n))return n;t.add(n)}}var Vb=V({symbol:F(),amount:F(),coinType:F().optional(),approx:R().optional()}).strict(),Hb=Vb.extend({amountKind:K(`display_intent`).default(`display_intent`)}),Ub=V({outgoing:B(Hb),expectedIncoming:B(Hb),minimumIncoming:B(Hb).optional(),fees:B(Hb).optional()}),Wb=V({outgoing:B(Vb),expectedIncoming:B(Vb),minimumIncoming:B(Vb).optional(),fees:B(Vb).optional()}),Gb=V({before:B(Vb),after:B(Vb),delta:B(Vb)}),Kb=V({computationCostRaw:M_(`computationCostRaw`),storageCostRaw:M_(`storageCostRaw`),storageRebateRaw:M_(`storageRebateRaw`),nonRefundableStorageFeeRaw:M_(`nonRefundableStorageFeeRaw`)}).strict(),qb=V({address:m_,coinType:F().min(1).max(512).refine(e=>{try{return L_(e)===e}catch{return!1}},`Expected a normalized Sui struct tag coin type`),amount:I_(`balanceChanges[].amount`)}).strict(),Jb=V({objectId:m_,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(),Yb=V({provider:wy,checksEnabled:R(),success:R(),gasCostSummary:Kb.optional(),balanceChanges:B(qb).optional(),objectChanges:B(Jb).optional(),error:F().optional()}),Xb=Yb,Zb=Yb.extend({checksEnabled:K(!0),success:K(!0),gasCostSummary:Kb,balanceChanges:B(qb),objectChanges:B(Jb),error:lc().optional()}).strict(),Qb=V({role:G([`input`,`expected_output`,`minimum_output`,`fee`]),symbol:F(),coinType:F().min(1).max(512).refine(e=>{try{return L_(e),!0}catch{return!1}},`Expected a Sui struct tag coin type`),decimals:L().int().min(0).max(255),rawAmount:M_(`rawAmount`),rawAmountSource:K(`quote_policy_evidence`),displayAmount:F().optional(),displayAmountSource:K(`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`})}),$b=V({role:G([`connected_account`,`output_recipient`]),address:m_}).strict(),ex=V({kind:K(`swap_output_asset`),symbol:F(),coinType:F().min(1).max(512).refine(e=>{try{return L_(e),!0}catch{return!1}},`Expected a Sui struct tag coin type`),protocol:F(),poolKey:F(),direction:G([`base_to_quote`,`quote_to_base`])}).strict(),tx=V({id:F(),label:F(),source:U([G([`registry`,`quote`,`wallet`,`simulation`,`adapter`,`network`,`proposal`]),G([`transaction_material`,`digest_commitment`])]),summary:F()}).strict(),nx=V({id:F(),label:F(),reason:F()}).strict(),rx=V({proposedAction:V({title:F(),summary:F(),actionKind:F(),adapterId:F(),protocol:F(),network:K(`sui:mainnet`)}).strict(),recipients:B($b),evidenceUsed:B(tx),missingEvidence:B(nx),requiredUserChoices:B(nx),unsupportedClaims:B(nx),freshness:V({status:K(`current`),evaluatedAt:F(),expiresAt:F(),reason:F()}).strict(),blockingChecks:B(Fb)}).strict(),ix=V({assetFlow:V({outgoing:B(Qb),expectedIncoming:B(Qb),minimumIncoming:B(Qb),fees:B(Qb)}).strict(),targets:B(ex)}).strict(),ax=mc(`kind`,[rx.extend({kind:K(`swap_human_readable_review`)}).merge(ix)]),ox=V({id:F(),actionKind:F(),adapterId:F(),protocol:F(),title:F(),summary:F(),assetFlowPreview:Ub,reviewModel:yy.optional(),adapterData:jb,createdAt:F(),expiresAt:F().optional(),registryVersion:F().optional(),preliminaryChecks:B(Fb).optional()}),sx=V({planId:F(),reviewSessionId:F(),account:m_,checks:B(Fb),assetFlowActual:Wb.optional(),beforeAfterBalance:Gb.optional(),simulation:Xb.optional(),humanReadableReview:ax.optional(),transactionReviewData:kb.optional(),ptbVisualization:Ab.optional(),adapterLifecycle:zb.optional(),updatedAt:F()}),cx=mc(`status`,[sx.extend({status:K(`ready_for_wallet_review`),evidenceValidity:lc().optional(),blockedReason:lc().optional(),refreshReason:lc().optional()}),sx.extend({status:K(`refresh_required`),evidenceValidity:K(`invalidated`).optional(),refreshReason:Nb,blockedReason:lc().optional()}),sx.extend({status:K(`blocked`),evidenceValidity:K(`invalidated`).optional(),blockedReason:Mb,refreshReason:lc().optional()})]).superRefine((e,t)=>{if(e.evidenceValidity===`invalidated`)for(let n of Cy)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&&lx(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 lx(e,t){let n=e.adapterLifecycle;n&&(e.humanReadableReview!==void 0&&ux(t,n,Lb,[`humanReadableReview`]),e.simulation!==void 0&&(ux(t,n,Rb,[`simulation`]),ux(t,n,Lb,[`simulation`]),dx(t,e.simulation,[`simulation`])),n.missingStages.includes(Rb)&&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(Lb)&&e.humanReadableReview!==void 0&&t.addIssue({code:`custom`,path:[`humanReadableReview`],message:`humanReadableReview public evidence cannot be present while human_readable_review is missing`}))}function ux(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 dx(e,t,n){Zb.safeParse(t).success||e.addIssue({code:`custom`,path:n,message:`simulation public evidence requires a successful checks-enabled review-time simulation projection`})}var fx=V({topic:F().min(1),grants:E_,expiresAt:F().datetime(),walletName:F().optional()}).strict(),px={topic:F().min(1),lifecycleRevision:L().int().positive(),grantRevisions:x_},mx=mc(`status`,[V({...px,status:K(`present`),session:fx}).strict(),V({...px,status:G([`absent`,`unusable`])}).strict()]);V({chainId:K(y_),lifecycleRevision:L().int().positive(),grantRevision:L().int().nonnegative()});var hx=V({runId:Y_,sequence:L().int().positive(),observedAt:F().datetime()}).strict();hx.extend({sessions:B(mx)}).strict();var gx=F().uuid(),_x={operationId:gx,walletRunId:Y_},vx=mc(`action`,[V({action:K(`connect`),..._x,chains:S_}).strict(),V({action:K(`disconnect`),..._x,connectionId:F().min(1),impactId:F().min(1)}).strict()]);V({}).strict();var yx=V({operationId:gx,cardId:F().min(1),action:G([`connect`,`disconnect`]),status:G([`running`,`completed`,`failed`,`stopped`]),connectionId:F().min(1),createdAt:F().datetime(),updatedAt:F().datetime(),expiresAt:F().datetime(),settlementPending:R(),message:F().optional(),endReason:G([`user_stopped`,`expired`,`run_ended`]).optional()}).strict();yx.pick({operationId:!0,action:!0,status:!0,settlementPending:!0});var bx=`A wallet connection provides account context; it is not a transaction approval or proof of address ownership.`,xx=`Review evidence is not a safety guarantee. Only an explicit card action and wallet approval may authorize this exact transaction.`,Sx=tv.extend({sessionPresence:G([`present`,`absent`,`unusable`,`unconfirmed`]),chainStates:B(nv).optional(),disconnectImpact:V({impactId:F(),requestCount:L().int().nonnegative(),chains:S_}).strict().optional()});G([`awaiting_approval`,`disconnect_pending`,`cleanup_pending`]);var Cx=V({action:G([`prepare_review`,`request_signature`]),connectionId:F().min(1),walletRunId:Y_,account:m_,reviewRevision:L().int().nonnegative()}).strict(),wx=V({action:G([`cancel`,`stop_waiting`,`read_result`])}).strict(),Tx=U([vx,V({action:K(`stop_connection`),operationId:F().uuid()}).strict(),Cx,wx]),Ex=U([vx.options[0],Cx.extend({action:K(`prepare_review`)})]);function Dx(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 Ox=V({kind:G(av),message:F().optional(),reason:F().optional()}).strict(),kx={allowedActions:B(G(iv)),actionRemainingMs:L().int().nonnegative(),nextStateReadAfterMs:L().int().nonnegative().optional(),observe:R(),walletAvailability:Q_,walletObservation:hx.optional(),progress:$_,nextStep:Ox},Ax=V({...kx,kind:K(`connect`),mode:K(`connect`),allowedActions:B(G([`connect`,`cancel`,`stop_connection`])),boundary:K(bx),requestedChains:S_,operation:yx.optional(),automaticAction:vx.options[0].optional()}).strict(),jx=V({...kx,kind:K(`disconnect`),mode:K(`disconnect`),allowedActions:B(G([`disconnect`,`cancel`])),boundary:K(bx),connection:Sx.optional(),operation:yx.optional()}).strict(),Mx=V({reviewSessionId:F(),plan:ox,reviewRevision:L().int().nonnegative(),status:Pb,account:F().optional(),preparing:R(),accountRequestPending:K(!0).optional(),error:F().optional(),state:cx.optional()}).strict(),Nx=V({connectionId:F(),account:m_}).strict(),Px=F().regex(/^-?[0-9]+$/).optional(),Fx=mc(`kind`,[Ax,jx,V({...kx,kind:K(`review`),mode:G([`review`,`review_manage`]),allowedActions:B(G([`prepare_review`,`request_signature`,`read_result`,`stop_waiting`,`cancel`])),boundary:K(xx),reviewTarget:Nx.optional(),review:Mx,walletName:F().optional(),acceptedWalletRunId:Y_.optional(),automaticAction:Cx.extend({action:K(`prepare_review`)}).optional(),request:J_.optional(),receipt:z().optional(),netGasMist:Px,observationStopped:R().optional()}).strict().superRefine(Dx)]),Ix=V({message:F(),recordedAt:F().datetime()}).strict(),Lx={allowedActions:B(lc()),observe:K(!1),actionRemainingMs:K(0),result:Ix};V({...Lx,kind:G([`connect`,`disconnect`]),result:Ix.extend({pendingWork:G([`approval_response`,`session_removal`,`session_status`]).optional()}),walletName:F().optional(),networks:B(V({chainId:b_,status:G([`bound`,`not_approved`,`multiple_accounts`,`invalid_response`])}).strict())}).strict(),V({...Lx,kind:K(`review`),mode:G([`review`,`review_manage`]),review:Mx.optional(),reviewTarget:Nx.optional(),request:J_.optional(),receipt:z().optional(),netGasMist:Px,observationStopped:R().optional(),boundary:K(xx)}).strict().superRefine(Dx);var Rx=`sui-mcp.local-data`,zx=16777216,Q=F().uuid(),Bx=L().int().nonnegative().safe(),Vx=F().regex(/^[a-f0-9]{64}$/),Hx=mc(`status`,[V({status:K(`no_file`)}).strict(),V({status:K(`receiving`)}).strict(),V({status:K(`checking`)}).strict(),V({status:K(`check_required`),message:F().min(1)}).strict(),V({status:K(`can_restore`)}).strict(),V({status:K(`cannot_restore`),reason:G([`invalid_backup`,`file_unavailable`,`wallet_request_unsettled`,`operation_busy`,`input_unavailable`,`check_failed`]),message:F().min(1)}).strict()]);V({fileId:Q,sha256:Vx,totalSize:Bx,dataEpoch:Bx,userDataRevision:Bx,check:Hx}).strict();var Ux=mc(`kind`,[V({kind:K(`set_endpoint`),endpoint:G([`grpc`,`graphql`]),value:F().min(1)}).strict(),V({kind:K(`restore_endpoint`),endpoint:G([`grpc`,`graphql`])}).strict(),V({kind:G([`import_local_data`,`reset_local_data`,`restart_wallet_service`])}).strict()]),Wx=mc(`kind`,[V({kind:K(`clear_read_address`)}).strict(),...Ux.options,V({kind:K(`set_wallet_networks`),chains:S_}).strict(),V({kind:K(`download_backup`)}).strict()]);V({operationStatus:V({operationId:F().uuid()}).strict().optional(),backupDelivery:V({operationId:F().uuid(),fileId:F().uuid()}).strict().optional()}).strict().refine(e=>!(e.operationStatus&&e.backupDelivery),`Choose exactly one card purpose.`);var Gx=G([`acknowledged`,`not_completed`,`unconfirmed`,`unsupported`,`not_sent`]),Kx=V({method:K(`ui/download-file`),code:K(-32601)}).strict(),qx=G([`acknowledged`,`cancelled`,`expired`,`server_restarted`,`data_replaced`,`source_unavailable`,`stored_locally`,`local_save_failed`]),Jx=V({device:F().regex(/^\d+$/),inode:F().regex(/^\d+$/)}).strict(),Yx=G([`not_published`,`target_conflict`,`source_unavailable`,`interrupted`]),Xx=V({status:G([`needs_consent`,`saving`,`saved`,`failed`]),attemptId:Q,fileId:Q,sha256:Vx,totalSize:Bx,destination:F(),ownerId:F().min(1),currentSaveAttemptId:Q.optional(),attempts:B(V({saveAttemptId:Q,cardId:F().min(1),previousSaveAttemptId:Q.optional(),admittedAt:F().datetime(),allowPossibleCopy:R()}).strict()),sourceIdentity:Jx.optional(),savedAt:F().datetime().optional(),failure:Yx.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.`})});V({currentAttemptId:Q,attempts:B(V({attemptId:Q,cardId:F().min(1),admittedAt:F().datetime(),previousAttemptId:Q.optional(),hostReport:Gx.optional(),failure:Kx.optional()}).strict()).min(1),readyAt:F().datetime().optional(),expiresAt:F().datetime().optional(),endReason:qx.optional(),localSave:Xx.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 Zx=G([`settings_retry_download`,`settings_report_download`,`settings_cancel_download`,`settings_store_backup`]),Qx=mc(`action`,[V({action:K(`settings_clear_read_address`),operationId:Q,connectionId:F().min(1),account:F().min(1)}).strict(),V({action:K(`settings_save_wallet_networks`),operationId:Q,chains:S_.transform(C_),expectedChains:S_.transform(C_)}).strict(),V({action:K(`settings_download_backup`),operationId:Q,attemptId:Q}).strict(),V({action:K(`settings_retry_download`),operationId:Q,fileId:Q,previousAttemptId:Q,attemptId:Q}).strict(),V({action:K(`settings_report_download`),operationId:Q,fileId:Q,attemptId:Q,status:Gx,failure:Kx.optional()}).strict().refine(e=>e.status===`unsupported`==(e.failure!==void 0),`Only unsupported downloads require the exact method failure.`),V({action:K(`settings_store_backup`),operationId:Q,fileId:Q,attemptId:Q,saveAttemptId:Q,previousSaveAttemptId:Q.optional(),allowPossibleCopy:R()}).strict(),V({action:K(`settings_cancel_download`),operationId:Q,fileId:Q,attemptId:Q}).strict(),V({action:K(`settings_select`),draft:Ux}).strict(),V({action:K(`settings_prepare`),operationId:Q}).strict(),V({action:K(`settings_begin_upload`),operationId:Q,name:F().min(1),totalSize:Bx.max(zx),sha256:Vx}).strict(),V({action:K(`settings_upload_chunk`),operationId:Q,fileId:Q,offset:Bx.max(zx),chunkBase64:F()}).strict(),V({action:K(`settings_seal_upload`),operationId:Q,fileId:Q}).strict(),V({action:K(`settings_confirm`),operationId:Q,preparationId:Q}).strict(),V({action:K(`settings_back`),operationId:Q}).strict(),V({action:K(`settings_cancel`)}).strict()]),$x=V({outcome:G([`completed`,`failed`,`interrupted`,`superseded`]),recordedAt:F().datetime(),message:F().min(1),details:W(F(),z()).optional(),completionScope:K(`backup_delivery`).optional()}).strict(),eS=V({storedValue:F(),effectiveValue:F(),source:G([`environment`,`local_db`,`builtin_default`]),pendingStoredValue:F().optional(),appliesAfter:K(`mcp_server_restart`).optional()}).strict(),tS=V({endpoint:G([`grpc`,`graphql`]),key:G([`suiGrpcUrl`,`suiGraphqlUrl`]),value:F().min(1),status:G([`saved`,`reset`]),storedValue:F(),effectiveValue:F(),source:eS.shape.source}).strict().refine(e=>e.key===(e.endpoint===`grpc`?`suiGrpcUrl`:`suiGraphqlUrl`),`The endpoint kind and preference key must agree.`),nS=L().int().nonnegative().safe(),rS=V({accounts:nS,reviewSessions:nS,reviewStateSnapshots:nS,reviewStatusTransitions:nS,reviewExecutions:nS,reviewRequests:nS,outcomeUnknownRequests:nS,externalActivityScans:nS,externalActivityTransactions:nS,localSettings:nS}).strict(),iS=V({status:K(`valid`),format:K(Rx),network:K(`mainnet`),exportedAt:F().datetime(),currentCounts:rS,incomingCounts:rS,willReplace:K(!0),restartRequiredAfterImport:R()}).strict(),aS=V({kind:K(`settings`),operationId:Q,phase:G([`draft`,`uploading`,`sealed`,`prepared`,`executing`,`stopping`,`starting`,`terminal`]),draft:Wx.optional(),preparationId:Q.optional(),preparation:W(F(),z()).optional(),file:V({fileId:Q,displayName:F(),totalSize:Bx,receivedSize:Bx,sha256:Vx,sealed:R(),cleanup:G([`pending`,`complete`,`failed`])}).strict().optional(),download:V({availability:G([`preparing`,`available`,`ended`]),currentAttemptId:Q,hostReport:Gx.optional(),previousUnconfirmed:R(),endReason:qx.optional(),expiresAt:F().datetime().optional(),remainingMs:Bx.optional(),localSave:V({status:G([`needs_consent`,`saving`,`saved`,`failed`]),currentSaveAttemptId:Q.optional(),failure:Yx.optional(),savedAt:F().datetime().optional()}).strict().optional(),allowedFileActions:B(Zx)}).strict().optional(),restoreCheck:Hx.optional(),backupLocation:V({directory:F().min(1),filename:F().min(1)}).strict().optional(),result:$x.optional(),temporaryFileCleanup:G([`pending`,`complete`,`failed`]).optional(),priorRunId:Q.optional(),nextRunId:Q.optional(),supersedesOperationId:Q.optional(),supersededByOperationId:Q.optional(),allowedActions:B(G(Qx.options.map(e=>e.shape.action.value))),observe:R(),facts:V({server:V({name:F(),version:F(),network:K(`mainnet`)}).strict(),localSettings:V({suiGrpcUrl:eS,suiGraphqlUrl:eS,walletConnectionChains:S_}).strict(),readAddress:F().optional(),readConnectionId:F().optional(),assetReadAccount:rv,walletAvailability:Q_,connectionReconciliationRequired:K(!0).optional(),observedAt:F().datetime().optional(),counts:rS}).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`&&!iS.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=tS.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.`})}),oS=65536;function sS(e){return new TextEncoder().encode(JSON.stringify(e)).length}function cS(e){let t=oS-sS(e);return t>0?3*Math.floor(t/4):0}function lS(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=zx,t.params.arguments.input.chunkBase64=``,cS(t)}var uS={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`},dS=V({connectionId:F().min(1),pairingUri:F().startsWith(`wc:`),expiresAt:F().datetime()}).strict(),fS=G([`account`,`receipt`,`chart`,`connect`,`disconnect`,`review`,`settings`]),pS=V({cardId:F().min(1),kind:fS,state:G([`ready`,`running`,`closed`]),revision:L().int().nonnegative(),createdAt:F().datetime(),expiresAt:F().datetime(),input:W(F(),z()),data:z().optional(),reason:G([`completed`,`expired`,`failed`,`server_restarted`,`cancelled`]).optional(),error:F().optional()}).strict().extend({pollAfterMs:L().int().positive(),inputRemainingMs:L().int().nonnegative()}),mS=V({transactionDigest:F().min(1),pureInputs:B(V({index:L().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:V({mermaid:V({text:F(),namedText:F()}).strict()}).strict().optional()}).strict(),hS=`sui-mcp/card`,gS=`sui-mcp/receipt-display`,_S=`sui-mcp/wallet-display`,vS=`sui-mcp/settings-file`,yS=`suimcp://cards/`,bS=mc(`kind`,[V({kind:K(`account`),status:K(`input_required`),field:K(`account`),message:F().min(1)}).strict(),V({kind:K(`receipt`),status:K(`input_required`),field:K(`digest`),message:F().min(1)}).strict()]),xS=V({cardId:F().min(1),permission:F().min(1)}).strict();xS.extend({revision:L().int().nonnegative(),input:W(F(),z())}).strict();var SS=mS.extend({cardId:F().min(1),revision:L().int().nonnegative(),attemptId:F().min(1).optional()}),CS=dS.extend({cardId:F().min(1),revision:L().int().nonnegative()}),wS=V({attemptId:F().uuid(),cardId:F().min(1),operationId:F().uuid(),fileId:F().uuid(),offset:L().int().nonnegative().safe(),totalSize:L().int().nonnegative().safe(),sha256:F().regex(/^[a-f0-9]{64}$/),chunkBase64:F()}).strict(),TS={account:uS.uiOpenAccount,receipt:uS.uiOpenReceipt,chart:uS.uiOpenChart,read:uS.uiReadCard,submit:uS.uiSubmitCard,act:uS.uiActCard,readSettingsFile:uS.uiReadSettingsFile};function $(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function ES(e){return e.kind!==`import_local_data`}function DS(e,t,n){if(e.kind!==`settings`||t.kind!==`settings`||e.cardId!==t.cardId||t.state!==`ready`)return;let r=aS.safeParse(e.data),i=aS.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=Wx.safeParse(n.draft);if(r.success&&ES(r.data)&&(t.revision===e.revision||kS(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(ES(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 OS(e){return Object.keys(e).filter(t=>e[t]!==void 0)}function kS(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)=>kS(e,t[n]));let n=$(e),r=$(t);if(!n||!r)return!1;let i=OS(n);return i.length===OS(r).length&&i.every(e=>Object.hasOwn(r,e)&&kS(n[e],r[e]))}function AS(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&&!kS(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=Yu.safeParse(i);if(!n.success)throw r();o=AS(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 OS(t)){let n=t[e];if(Object.hasOwn(c,e)&&!kS(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 jS(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 MS(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(yS.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 NS(e){let t=$(e.structuredContent),n=t?.ok===!0?bS.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:pS.parse(i);a?.kind===`settings`&&aS.parse(a.data);let o=$(e._meta)?.[gS],s=o===void 0?void 0:SS.parse(o);if(s&&!jS(a,s))throw Error(`Transaction details do not match this saved result.`);let c=$(e._meta)?.[_S],l=c===void 0?void 0:CS.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 PS(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 Xh({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,le,ue=0,de=0,fe,pe,me,he,E,ge,_e,ve,ye=!1;function be(){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 xe()||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 xe(){let e=Tx.safeParse(C?.input),t=Fx.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 Se(){if(!C)return;let e=be();e&&C.disposition!==`observed`&&(e!==`active`||C.disposition===`active`)&&(C.disposition=e),C.disposition===`observed`&&(C.retryRequired=!1)}function Ce(){if(y?.reason===`cancelled`)return;let e=Ex.safeParse($(y?.data)?.automaticAction);return C?.retryRequired&&e.success&&C.input.action===e.data.action?e.data:void 0}function we(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 Te(e){if(e!==`past`||!C)return;let t=we(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 Ee,De;function Oe(){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`||Ee===void 0||Date.now()<Ee)],o=e===`review`&&t?.mode===`review`&&!t.request&&!!g&&y?.state===`ready`,s=o&&fe!==void 0&&Date.now()>=fe,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=ge?.pending?.()===!0,ue=ge?.displayRecovery?.(),pe=u&&!l&&!oe&&!re&&!s&&!!g,me=pe&&!w&&!h&&(!m||!(ce&&(b||ee||ne))),he=Ex.safeParse(t?.automaticAction),E=p?$(n?.localSave):void 0,_e=!!y&&!r&&(m?t?.observe===!0||E?.status===`saving`:y.state===`running`),ve=!!_&&te&&!l&&!ce&&c&&(le===`explicit`||S.status!==`read_failed`&&(le===`background`||S.status===`needed`&&S.automatic)),be=c&&pe&&!ae&&!ce&&!le&&!w&&!ee&&!x&&!ne&&f&&he.success&&a.includes(he.data.action)?he.data:void 0,xe=$(t?.restoreCheck),Se=p&&pe&&y?.state===`ready`&&!y.input.backupDelivery&&!w&&!h&&!t?.result&&t?.observe!==!0&&(xe?.status===`cannot_restore`&&[`operation_busy`,`wallet_request_unsettled`].includes(String(xe.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`)),De;!l&&_&&(S.status===`read_failed`||ae||S.status===`unconfirmed`?De=`read`:S.status===`needed`?S.automatic||(De=`read`):oe||ue||!r&&p&&[`pending`,`failed`].includes(String(t?.temporaryFileCleanup))||!r&&(E?.status===`saving`||E?.status===`needs_consent`&&!a.includes(`settings_store_backup`)||E?.status===`failed`&&E.failure===`not_published`&&!n?.endReason&&!a.includes(`settings_store_backup`))||Se?De=`read`:g?!r&&$(t?.progress)?.status===`unavailable`||!r&&$(t?.walletAvailability)?.status===`initializing`&&$(t?.walletAvailability)?.stage===`state_sync`?De=`read`:!r&&!ne&&Ce()?De=`retry`:b&&(!m&&me&&y?.state===`ready`&&ye&&ge?.selectionRecovery?De=`selection`:!_e&&!(ne&&a.length>0)&&!(C?.input.action===`prepare_review`&&a.includes(`prepare_review`)&&t?.automaticAction===void 0)&&f&&(De=`read`)):(y?.state!==`closed`||oe)&&(De=`read`));let Oe=f?t?.actionRemainingMs:y?.inputRemainingMs;De===`retry`&&s&&(De=`read`);let ke=r?void 0:f?t?.nextStateReadAfterMs:p&&Ee!==void 0?Math.max(0,Ee-de):void 0,Ae=[!r&&(f?a.length>0:y?.state===`ready`)?Oe:void 0,ke].filter(e=>typeof e==`number`&&Number.isFinite(e)&&e>0),je=!l&&!!g&&c&&!ie&&!ae&&S.status!==`read_failed`,D=$(t?.review),Me=o&&!l&&!ae&&!oe&&!b&&!ee&&!ne&&S.status!==`read_failed`&&(re||w?.input.action===`prepare_review`||D?.preparing===!0||he.success&&he.data.action===`prepare_review`||S.status===`needed`&&D?.status===`ready_for_wallet_review`);return{current:u,inputEnabled:me,permitted:a,disposition:v,read:ve,auto:be,recover:De,paused:ne,partialDisplayFailure:ue,settingsInputBlocked:Se,reviewUpdatePending:Me,reviewCommandDeliveryFailed:b&&C?.input.action===`prepare_review`,reviewHint:s?void 0:Me?re||D?.preparing||w?.input.action===`prepare_review`?`Updating review…`:`Checking status…`:o&&$(D?.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 ${we(C)}: “${C.message}”`:void 0,oe,ue?.message],note:[se,Te(v)].filter(Boolean).join(` `),expiryAt:je&&u&&Ae.length?de+Math.min(...Ae):void 0,poll:je&&(_e||S.status===`needed`&&!S.automatic),lifetimeAt:!l&&c&&o?fe:void 0}}function ke(e){return e.recover===`retry`?C?.input.action===`connect`?`Retry connection`:`Retry review`:e.recover===`selection`?ge?.selectionRecovery?.label:e.recover===`read`?`Check status`:void 0}function Ae(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=ke(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:ge?.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 je(e=Oe()){return e.inputEnabled&&y?.state===`ready`&&ye}function D(e,t=Oe()){return y?.state!==`closed`&&m&&t.inputEnabled&&(e?t.permitted.includes(e.action):t.permitted.length>0)}function Me(e){let t=Oe();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 Ne(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,Ae(e)].filter(Boolean).join(` `),o.hidden=!o.textContent,ye)for(let t of s.querySelectorAll(`input, button, select`))(!m||t.tagName!==`BUTTON`||t.dataset.cardAction!==void 0)&&(t.disabled=m?!D(void 0,e):!je(e));if(m)for(let t of s.querySelectorAll(`[data-card-action]`))t.disabled=!D({action:t.dataset.cardAction},e);if(p)for(let t of s.querySelectorAll(`[data-settings-file-action]`))t.disabled=t.dataset.settingsLocalBlocked===`true`||!(h?Me({action:t.dataset.cardAction}):D({action:t.dataset.cardAction},e));_&&(e.reviewUpdatePending||_.dataset.cardAction===`request_signature`&&e.reviewCommandDeliveryFailed||_.dataset.cardAction===void 0)&&(_.disabled=!0),E&&(E.disabled=!!w||!!ce)}function Pe(e){try{e?.()}catch{oe=`The card display could not be closed cleanly. Its stored information is unchanged.`}}function Fe(e){if(!y||d.signal.aborted)return;if(y.state===`ready`&&S.status!==`confirmed`){if(p&&ge?.update)try{ge.update(y,{automaticPaused:T===`paused`,settings:qe,settingsCommandProgress:void 0,onDisplayChange:()=>k()})}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`?DS(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===_e||i===ve&&!e)return;ve=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:()=>k(),wallet:x,...p?{settings:qe,settingsCommandProgress:r}:{}};if(ge?.update?.(y,e)){_e=i,oe=void 0;return}if(y.state===`ready`&&g){let n=t.controls(y,e=>{Ge(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=>{Ge(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),Pe(c?.dispose),oe=`This card could not be displayed. Its stored information is unchanged.`;return}let f=ge?.dispose;ge=c,ye=l,_e=i,oe=void 0,Pe(f)}function Ie(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:Ex.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,Se(),u){de=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}`;De!==e&&(De=e,Ee=void 0),Ee=Math.min(Ee??1/0,de+Math.max(0,t.remainingMs))}else p&&t?.availability===`ended`&&(Ee=void 0);g&&e===`review`&&o?.mode===`review`&&!o.request&&typeof o.actionRemainingMs==`number`&&Number.isFinite(o.actionRemainingMs)&&o.actionRemainingMs>=0&&(fe=Math.min(fe??1/0,de+o.actionRemainingMs))}return r===`read`&&(S.status!==`needed`||a>S.afterRead)&&(S={status:`confirmed`},ae=void 0),n&&(b=n),x=i,!0}function Le(){pe!==void 0&&clearTimeout(pe),me!==void 0&&clearTimeout(me),he!==void 0&&clearTimeout(he),pe=void 0,me=void 0,he=void 0,l.hidden=!0}function Re(e){let t=ke(e);E?.textContent!==t&&(E?.remove(),E=void 0,t&&(E=ng(t,()=>{if(ce||w||d.signal.aborted)return;let e=Oe();if(e.recover===`selection`&&je(e))ge?.selectionRecovery?.retry();else if(e.recover===`retry`){let e=Ce();e&&We(e)}else O()})));let n=s.querySelector(`.review-primary-action`),r=s.querySelector(`.review-primary-slot`);n&&(n.hidden=!!E&&!!r),E&&(E.disabled=!!ce||!!w,r?(E.classList.add(`review-recovery-action`),r.append(E)):(E.classList.remove(`review-recovery-action`),c.append(E)))}async function O(){let e=ge,t=e?.displayRecovery?.(),n=await Be(!0);n?.kind===`accepted`&&y===n.snapshot&&S.status===`confirmed`&&!d.signal.aborted&&document.visibilityState!==`hidden`&&!oe&&e===ge&&t&&e?.displayRecovery?.()===t&&(t.retry(),k())}function k(e=!1){if(ie){let e=document.createElement(`p`);e.className=`ui-note`,e.textContent=ie,s.replaceChildren(e)}else Fe(e);let t=Oe();if(Ne(t),Le(),Re(t),d.signal.aborted||S.status===`rejected`)return;t.expiryAt!==void 0&&(me=setTimeout(()=>{ze(),k()},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)he=setTimeout(r,Math.min(1e3,t));else{let e=Oe();Ne(e),Re(e)}};r()}if(t.poll&&y){let e=de+y.pollAfterMs-Date.now();pe=setTimeout(()=>{Be(!1)},e>0?e:y.pollAfterMs)}t.read?(le=void 0,Ve()):t.auto&&(pe=setTimeout(()=>{let e=Oe().auto;e&&Ke(e,`automatic`)},0))}function ze(){S.status!==`rejected`&&S.status!==`read_failed`&&(S={status:`needed`,afterRead:ue,automatic:!0})}function Be(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):(le=e?`explicit`:`background`,k(),ce?.promise??Promise.resolve(void 0))}function Ve(){let e=++ue,t=performance.now(),n={id:e,promise:Promise.resolve().then(async()=>{try{let n,r,i;if(g){let e=NS(await He(TS.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=`${yS}${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=pS.parse(JSON.parse(t.text));let i=b??ee;r=i&&jS(n,i)?i:void 0}if(d.signal.aborted||S.status===`rejected`)return{kind:`disposed`,id:e};let a=Ie(n,r,`read`,i,e);return ee=void 0,!a&&S.status===`needed`&&e>S.afterRead&&(S={...S,automatic:!1}),k(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),k()})};ce=n,k()}async function He(e,t){return AS(await u.callServerTool({name:e,arguments:t},{signal:d.signal}))}function Ue(e,t,n){let r=Fx.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 We(e){if(!y||ce||!D(e))return;let t={input:e,basis:y,phase:`confirming`};w=t;let n=await Be(!1);w===t&&(w=void 0,n?.kind===`accepted`&&y===n.snapshot&&S.status===`confirmed`&&!d.signal.aborted&&document.visibilityState!==`hidden`&&Ue(e,t.basis,n.snapshot)&&D(e)?await Ke(e):S.status!==`read_failed`&&S.status!==`rejected`&&!d.signal.aborted&&(se=`The card state changed. Check the current selection before trying again.`),k())}async function Ge(e){f&&(C?.disposition===`active`||C?.retryRequired||T===`paused`)?await We(e):await Ke(e)}function A(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`},Se(),[`cancel`,`disconnect`,`stop_connection`,`stop_waiting`].includes(String(e.input.action))&&(T=`paused`),(m||n===`unknown`)&&ze()}async function Ke(e,t=`user`){if(!y||!g||(t===`file`?!Me(e):m?!D(e):!je()))return;let n={input:e,basis:y,phase:`sending`};w=n,T=`continue`,(t===`user`||C?.disposition!==`past`)&&(C=void 0),se=void 0,k();try{let t=NS(await He(m?TS.act:TS.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&&A(n,t.error,`rejected`),Ie(t.snapshot,t.display,`action`,t.wallet)}catch(e){!d.signal.aborted&&S.status!==`rejected`&&(A(n,e instanceof Error?e.message:`The request could not be confirmed.`,`unknown`),C&&(C.data=$(e)?.data))}finally{w===n&&(w=void 0),k()}}let qe={uploadChunkLimit(e,t){return g?lS({jsonrpc:`2.0`,id:2**53-1,method:`tools/call`,params:{name:TS.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 Be(!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?!Me(e):!D(e))throw Error(`This Settings action is unavailable until its current status has been checked.`);if(await Ke(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,k()},async readFile(e){if(!g||!_||!Oe().current||d.signal.aborted)throw Error(`Backup read permission is unavailable.`);let t=await He(TS.readSettingsFile,{...g,...e}),n=wS.parse($(t._meta)?.[vS]);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||!Oe().current||d.signal.aborted||document.visibilityState===`hidden`||!r||r.currentAttemptId!==n||r.localSave||r.availability!==`available`||Ee===void 0||Date.now()>=Ee)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 Je(){if(te&&re!==void 0&&!ne){ne=!0;try{let t=AS(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?.[hS];if(r!==void 0){let e=xS.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=NS(t);if(i.inputRequired){if(i.inputRequired.kind!==e||g)throw Error(`The app provided inconsistent card input information.`);ie=i.inputRequired.message,k();return}let a=MS(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&&Ie(s,i.display,`preview`,i.wallet),ze(),k()}catch(e){if(d.signal.aborted)return;ae=e instanceof Error?e.message:`Card data could not be read.`,k()}}}u.ontoolresult=e=>{if(re===void 0)re=e,Je();else try{let t=NS(AS(re)).snapshot??y,n=NS(AS(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.`},k()}},u.onhostcontextchanged=e=>{e.theme&&(document.documentElement.dataset.theme=e.theme)};let Ye=()=>{document.visibilityState!==`hidden`&&g&&ne&&S.status!==`read_failed`&&y?.state!==`closed`?Be(!1):k()};document.addEventListener?.(`visibilitychange`,Ye),u.onteardown=async()=>{if(d.signal.aborted)return{};d.abort(),w=void 0,document.removeEventListener?.(`visibilitychange`,Ye);let e=ge?.dispose;return ge=void 0,Pe(e),k(),{}},u.connect().then(()=>{d.signal.aborted||(te=!0,document.documentElement.dataset.theme=u.getHostContext()?.theme??`light`,Je())}).catch(()=>{d.signal.aborted||(ae=`Could not connect this card to the app.`,k())})}function FS(e){return typeof e==`object`&&e?e:void 0}function IS(e){return typeof e==`string`&&e.length>0?e:void 0}function LS(e){let t=FS(e);if(!t)return null;let n=FS(t.display),r=FS(t.unit),i=IS(t.coinType),a=IS(n?.symbol)??IS(r?.symbol)??(i===void 0?void 0:$h(i))??`(unknown coin)`,o=typeof r?.decimals==`number`?r.decimals:void 0,s=IS(n?.amount),c=IS(t.balance),l;return l=s!==void 0&&o!==void 0?s:c===void 0?`Amount unavailable`:(o===void 0?void 0:RS(c,o))??`Amount unavailable`,{symbol:a,total:l}}function RS(e,t){try{return Zh(e,t)}catch{return}}var zS={account:{name:`Name`,address:`Account address`,balances:`Balances`,noBalances:`No token balances were returned.`,nfts:`NFTs`,noNfts:`No NFTs in the scanned objects.`,noImage:`No image`,objectsTruncated:`Some objects beyond the scanned range are omitted.`},receipt:{success:`Transaction succeeded on Sui`,failure:`Transaction failed on Sui`,sender:`Sender`,account:`Affected account`,object:`Object`,noBalanceChanges:`No balance changes were recorded.`,gasComputation:`Computation cost`,gasStorage:`Storage cost`,gasRebate:`Storage rebate`,gasBudget:`Network fee limit (gas budget)`,netFeeExplanation:`The network fee shown above includes the storage rebate. If it is negative, the rebate exceeds the computation and storage charges.`,estimatedNetFeeExplanation:`The estimated network fee shown above includes the storage rebate. If it is negative, the rebate exceeds the estimated computation and storage charges.`,gasLimitExplanation:`The gas budget limits network fee spending. It is not an estimate of the amount charged.`,gasPrice:`Gas price`,gasPayment:`Gas payment object`,graph:`Transaction graph`,graphTip:`A diagram of this transaction's programmable transaction block (PTB), derived from public on-chain data. It is a diagnostic view only, not transaction input, signing, or a safety verdict.`,graphReviewTip:`A diagram of the transaction prepared for this review and simulation. It shows what is being reviewed, not an actual result, permission to sign, or a guarantee of safety.`,graphRendering:`Rendering the transaction graph…`,graphFailed:`The transaction graph could not be rendered`,graphZoomIn:`Zoom in`,graphZoomOut:`Zoom out`,graphCenter:`Center`,graphShowAddresses:`Show full addresses`,graphShowNames:`Show readable labels`,moveCalls:`Move calls`,noMoveCalls:`No Move calls were recorded.`,inputs:`Inputs`,noInputs:`No inputs were recorded.`,inputKinds:{object:`Owned object`,shared_object:`Shared object`,receiving:`Receiving object`,pure:`Pure value`,withdrawal:`Balance withdrawal`,unknown:`Input`},bytes:`bytes`,events:`Events`,noEvents:`No events were recorded.`,objectChanges:`Object changes`,noObjectChanges:`No object changes were recorded.`},chart:{boundaryUsdc:`Prices are in USDC, not USD; dollar parity is not guaranteed.`,boundaryScope:`Historical prices, not live quotes.`,source:`Source: DeepBookV3 Indexer.`,renderedWith:`Rendered with`,library:`TradingView Lightweight Charts`},common:{walletStatusRecovery:`Ask in chat to open Settings, then use Troubleshooting to restart the connection service. This does not confirm removal of a connection in your wallet app.`,mainnet:`Sui mainnet`,retrievedAt:`Data retrieved`}},BS={en:zS};function VS(){try{return(navigator.language||`en`).slice(0,2).toLowerCase()}catch{return`en`}}function HS(e=VS()){return BS[e]??zS}var US=HS(),WS={title:`Account assets`,guidance:(e,t)=>t.recoveryNeeded?`Ask in chat to view the assets for this account.`:void 0,controls:()=>Y(`p`,`ui-note`,`Please provide a Sui address in chat.`),result(e){let t=FS(e.data);if(!t||t.status!==`ok`||!Array.isArray(t.balances)||typeof t.account!=`string`||!Array.isArray(t.nfts)||!Array.isArray(t.objectGroups)||typeof t.objectsTruncated!=`boolean`||typeof t.fetchedAt!=`string`)throw Error(`Account data is incomplete.`);let n=Y(`div`);n.append(GS(t.account,t),KS(t)),n.append(ig(`NFTs`,String(t.nfts.length)));let r=ag(`Details`);return t.nfts.length&&r.body.append(qS(t)),r.body.append(ig(US.common.retrievedAt,lg(t.fetchedAt))),n.append(r.details,YS(t)),{node:n}}};function GS(e,t){let n=rg(),r=typeof t.name==`string`&&t.name.length>0?t.name:void 0;return r&&n.append(ig(US.account.name,r)),n.append(ig(US.account.address,cg(e))),n}function KS(e){let t=rg(US.account.balances),n=Array.isArray(e.balances)?e.balances:[];if(n.length===0)return t.append(Y(`p`,`ui-note`,US.account.noBalances)),t;for(let e of n){let n=LS(e);n&&t.append(XS(n))}return t}function qS(e){let t=rg(US.account.nfts),n=Array.isArray(e.nfts)?e.nfts:[],r=Y(`div`,`account-nfts`);for(let e of n){let t=FS(e);t&&r.append(JS(t))}return t.append(r),t}function JS(e){let t=typeof e.type==`string`?e.type:``,n=typeof e.name==`string`&&e.name.length>0?e.name:eg(t),r=typeof e.imageUrl==`string`&&e.imageUrl.length>0?ZS(e.imageUrl):void 0,i=Y(`div`,`account-nft`);if(r){let e=document.createElement(`img`);e.className=`account-nft-img`,e.src=r,e.alt=n,e.loading=`lazy`,e.referrerPolicy=`no-referrer`,e.addEventListener(`error`,()=>{e.replaceWith(Y(`div`,`account-nft-img account-nft-noimg`,US.account.noImage))}),i.append(e)}else i.append(Y(`div`,`account-nft-img account-nft-noimg`,US.account.noImage));return i.append(Y(`span`,`account-nft-name`,n)),i}function YS(e){let t=Array.isArray(e.objectGroups)?e.objectGroups:[],n=Y(`div`),r=t.reduce((e,t)=>{let n=FS(t);return e+(typeof n?.count==`number`?n.count:0)},0);return r>0&&n.append(Y(`p`,`ui-note`,`${r} other owned objects are not shown here.`)),e.objectsTruncated===!0&&n.append(og(US.account.objectsTruncated)),n}function XS(e){let t=Y(`div`,`account-asset`);t.append(Y(`span`,`account-asset-symbol`,e.symbol));let n=Y(`span`,`account-asset-total`);return n.append(e.total),t.append(n),t}function ZS(e){let t=e.startsWith(`ipfs://`)?`https://ipfs.io/ipfs/${e.slice(7)}`:e;try{return new URL(t).protocol===`https:`||/^data:image\//i.test(t)?t:``}catch{return``}}PS(`account`,WS);</script></body></html>
|
|
3591
|
+
`)),xv={0:`ED25519`,1:`Secp256k1`,2:`Secp256r1`,3:`MultiSig`,5:`ZkLogin`,6:`Passkey`},Sv=e=>Object.freeze(e());function Cv(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`&&`BYTES_PER_ELEMENT`in e&&e.BYTES_PER_ELEMENT===1}function wv(e){if(!Cv(e))throw TypeError(`Uint8Array expected`)}function Tv(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 Ev(e){if(typeof e!=`function`)throw TypeError(`function expected`);return!0}function Dv(e,t){if(typeof t!=`string`)throw TypeError(`${e}: string expected`);return!0}function Ov(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 kv(e,t){if(!Tv(!1,t))throw TypeError(`${e}: array of numbers expected`)}var Av=(()=>{let e=[];for(let t=0;t<40;t++)e.push(2**t);return e})();function jv(e,t=e.length){let n=Array(t);for(let r=0;r<t;r++)n[r]=e[r];return n}var Mv=(()=>{try{let e=new TextDecoder;return e.decode(Uint8Array.of(65,48,43,127))===`A0+`?e:void 0}catch{return}})(),Nv=8192;function Pv(e){let t=e.length;if(Mv!==void 0&&t>=12)return Mv.decode(e);if(t<=Nv)return String.fromCharCode.apply(null,e);let n=``;for(let r=0;r<t;r+=Nv)n+=String.fromCharCode.apply(null,e.subarray(r,r+Nv));return n}function Fv(e){if(Ov(e),e<=0||e>8)throw RangeError(`radix2: bits should be in (0..8]`);let t=Av[e]-1;return{encode:n=>{wv(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 Iv(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 Pv(t)},decode:t=>{Dv(`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 Lv(e){return Ev(e),function(...t){try{return e.apply(null,t)}catch{}}}var Rv=Iv(`qpzry9x8gf2tvdw0s3jn54khce6mua7l`),zv=/^[\x21-\x60\x7b-\x7e]+$/;function Bv(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 Vv(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 Hv=[996825010,642813549,513874426,1027748829,705979059];function Uv(e){let t=e>>25,n=(e&33554431)<<5;for(let e=0;e<Hv.length;e++)(t>>e&1)==1&&(n^=Hv[e]);return n}function Wv(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=Uv(i)^n>>5}i=Uv(i);for(let t=0;t<r;t++)i=Uv(i)^e.charCodeAt(t)&31;for(let e of t)i=Uv(i)^e;for(let e=0;e<6;e++)i=Uv(i);i^=n;let a=new Uint8Array(6);for(let e=0;e<6;e++)a[e]=i>>>5*(5-e)&31;return Rv.encode(a)}function Gv(e){let t=e===`bech32`?1:734539939,n=Fv(5),r=e=>{wv(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=>{kv(`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=Lv(i);function o(e,n,r=90){Dv(`bech32.encode prefix`,e),r!==!1&&Ov(r,`limit`),Cv(n)&&(n=jv(n)),kv(`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}`);Bv(`bech32.encode prefix`,e);let o=e.toLowerCase(),s=Wv(o,n,t);return`${o}1${Rv.encode(Vv(n))}${s}`}function s(e,n=90){Dv(`bech32.decode input`,e),n!==!1&&Ov(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&&!zv.test(e))throw Bv(`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=Rv.decode(s),l=jv(c,c.length-6),u=Wv(o,l,t);if(!s.endsWith(u))throw Error(`Invalid checksum in ${e}`);return{prefix:o,words:l}}let c=Lv(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 Kv=Sv(()=>Gv(`bech32`));function qv(e){let{prefix:t,words:n}=Kv.decode(e);if(t!==`suiprivkey`)throw Error(`invalid private key prefix`);let r=new Uint8Array(Kv.fromWords(n)),i=r.slice(1);return{scheme:xv[r[0]],secretKey:i}}var Jv=`external-proposal-alpha-2026-05-25`,Yv=`proposal-review-model-alpha-2026-05-25`,Xv=F().refine(e=>{let t=new Date(e);return!Number.isNaN(t.getTime())&&t.toISOString()===e},`Expected ISO 8601 UTC timestamp`),Zv=/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,Qv=/(?:0x[0-9a-fA-F]{160,}|[A-Za-z0-9+/_=-]{160,})/,$v=/suiprivkey1[023456789acdefghjklmnpqrstuvwxyz]+/gi,ey=/(^|[^0-9a-fA-F])(?:0x)?[0-9a-fA-F]{64}($|[^0-9a-fA-F])/,ty=/(^|[^A-Za-z0-9+/_=-])(?:[A-Za-z0-9+/]{43}=|[A-Za-z0-9+/]{44}|[A-Za-z0-9_-]{43,44})($|[^A-Za-z0-9+/_=-])/,ny=/^(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$/,ry=[12,15,18,21,24];function iy(e,t,n={}){return F().min(1).max(e).superRefine((e,r)=>{(Zv.test(e)||Qv.test(e)||oy(e)||sy(e)||!n.allowRawSecretLikeText&&cy(e))&&r.addIssue({code:`custom`,message:`${t} must not contain executable, signing, private-key, mnemonic, route-selected, or encoded secret-like material`})})}function ay(e,t){return iy(e,t,{allowRawSecretLikeText:!0})}function oy(e){return(e.match($v)??[]).some(e=>{try{return qv(e.toLowerCase()),!0}catch{return e.toLowerCase().startsWith(`suiprivkey1`)}})}function sy(e){let t=e.normalize(`NFKD`).toLowerCase().replace(/[^a-z]+/g,` `).trim().split(/\s+/).filter(Boolean);for(let e of ry)if(!(t.length<e)){for(let n=0;n<=t.length-e;n+=1)if(yv(t.slice(n,n+e).join(` `),bv))return!0}return!1}function cy(e){return ey.test(e)||ty.test(e)}var ly=iy(80,`amountDisplay`).refine(e=>ny.test(e)&&/[1-9]/.test(e),{message:`Expected a positive decimal display amount`}),uy=V({kind:G([`mcp_server`,`ai_client`,`user`,`other`]),name:iy(120,`source.name`),reference:iy(256,`source.reference`).optional()}).strict(),dy=V({address:m_.optional(),label:iy(120,`party.label`).optional()}).strict().refine(e=>e.address!==void 0||e.label!==void 0,{message:`Expected address or label`}),fy=V({amountDisplay:ly,amountKind:K(`display_proposal`).default(`display_proposal`),symbol:iy(64,`amount.symbol`).optional(),coinType:ay(512,`amount.coinType`).optional(),denomination:iy(64,`amount.denomination`).optional()}).strict(),py=V({packageId:ay(128,`action.target.packageId`).optional(),module:iy(128,`action.target.module`).optional(),function:iy(128,`action.target.function`).optional(),objectId:ay(128,`action.target.objectId`).optional(),label:iy(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`}),my=V({direction:G([`outgoing`,`expected_incoming`,`fee`]),amount:fy,recipient:dy.optional(),description:iy(512,`assetFlow.description`).optional()}).strict(),hy=V({id:iy(120,`proposal.id`),source:uy,network:K(`sui:mainnet`),createdAt:Xv,expiresAt:Xv.optional(),purpose:iy(512,`purpose`),assumptions:B(iy(512,`assumptions[]`)).max(20).optional(),requiredUserChoices:B(iy(512,`requiredUserChoices[]`)).max(20).optional()}).strict(),gy=mc(`type`,[hy.extend({type:K(`payment`),payment:V({amount:fy,recipient:dy,target:iy(512,`payment.target`).optional()}).strict()}).strict(),hy.extend({type:K(`sui_action`),action:V({actionKind:iy(120,`action.actionKind`),target:py,recipient:dy.optional(),assetFlow:B(my).max(20).optional()}).strict()}).strict()]),_y=V({id:F(),label:F(),status:G([`pass`,`warning`,`fail`]),message:F(),source:G([`proposal`,`adapter`,`registry`,`quote`,`wallet`,`simulation`,`network`])}).strict(),vy=V({id:F(),label:F(),reason:F()}).strict(),yy=V({modelVersion:K(Yv),contractVersion:K(Jv),proposalId:F(),proposalType:G([`payment`,`sui_action`]),proposalSource:uy,proposedAction:V({kind:G([`payment`,`sui_action`]),title:F(),purpose:F(),network:K(`sui:mainnet`),recipient:dy.optional(),target:U([F(),py]).optional()}).strict(),assetFlow:V({outgoing:B(fy),expectedIncoming:B(fy),fees:B(fy)}).strict(),recipients:B(dy),targets:B(U([F(),py])),evidenceUsed:B(V({id:F(),label:F(),source:G([`external_proposal`,`local_schema`]),summary:F()}).strict()),missingEvidence:B(vy),requiredUserChoices:B(vy),unsupportedClaims:B(V({id:F(),label:F(),reason:F()}).strict()),rejectedExecutableFields:B(V({fieldName:F(),reason:F()}).strict()),freshness:V({proposalCreatedAt:Xv,proposalExpiresAt:Xv.optional(),evaluatedAt:Xv,status:G([`current`,`expired`,`created_in_future`,`expiry_not_provided`]),reason:F()}).strict(),blockingChecks:B(_y),nonSignableReason:V({code:K(`external_proposal_review_only`),message:F(),blockedCapabilities:B(F())}).strict()}).strict();V({requestedIntent:gy,implementationStatus:K(`read_only_review_only`),contractVersion:K(Jv)}).strict();var by=[`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`],xy=[`review_evidence_stale`,`quote_stale`,`quote_unavailable`,`simulation_transient_failure`,`review_update_failed`,`wallet_connection_changed`],Sy=[`proposed`,`awaiting_wallet`,`wallet_connected`,`ready_for_wallet_review`,`refresh_required`,`blocked`,`expired`],Cy=[`humanReadableReview`,`simulation`,`transactionReviewData`,`ptbVisualization`,`assetFlowActual`,`beforeAfterBalance`],wy=G([`client.core.simulateTransaction`,`client.transactionExecutionService.simulateTransaction`]),Ty=`ptb-visualization-contract-alpha-2026-05-25`,Ey=[`proposedAction`,`assetFlow`,`recipients`,`targets`,`evidenceUsed`,`missingEvidence`,`requiredUserChoices`,`unsupportedClaims`,`freshness`,`blockingChecks`],Dy=[`effects`,`balanceChanges`,`objectTypes`,`transaction`],Oy=[`transaction_bytes`,`serialized_transaction`,`wallet_signature_request`,`private_key_material`,`wallet_authorization`,`signing_data`,`signing_readiness`,`payment_execution_readiness`],ky=[`transaction_building_input`,`wallet_authorization`,`signing_data`,`signing_readiness`,`payment_execution_readiness`,`route_recommendation`],Ay=p_,jy=`MIST`,My=[`checkedAt`,`expiresAt`],Ny=[`checkedAt`,`expiryStatus`],Py=[`rawAmount`,`asset`,`amountRole`],Fy=[`minOutRaw`,`asset`,`amountRole`],Iy=[`gasBudgetRaw`,`asset`,`amountRole`],Ly=[`gasUsedRaw`,`asset`,`amountRole`],Ry=[`checkedAt`,`gasResolutionStatus`,`unresolvedReason`],zy=[`balanceChanges`,`asset`,`amountRole`],By=[`coinType`,`decimals`],Vy=[`quoteEvidenceId`,`minOutRaw`],Hy=[`maxSlippageBps`,`userSelection`],Uy=[`maxSlippageBps`,`minOutRaw`],Wy=[`ownerAccount`,`objects`],Gy=[`pinned_sdk_registry`,`verified_mainnet_onchain_metadata`,`wallet_account_read`,`quote_evidence`,`review_time_simulation`,`validated_request_fact`,`user_explicit_choice`],Ky=[`input`,`expected_output`,`minimum_output`,`gas_budget`,`gas_used`,`fee`,`balance_delta`],qy={input:{kinds:[`validated_request_fact`,`wallet_account_read`,`user_explicit_choice`],fields:Py},expected_output:{kinds:[`quote_evidence`,`review_time_simulation`],fields:Py},minimum_output:{kinds:[`quote_evidence`],fields:Fy},gas_budget:{kinds:[`review_time_simulation`],fields:Iy},gas_used:{kinds:[`review_time_simulation`],fields:Ly},fee:{kinds:[`review_time_simulation`],fields:Py},balance_delta:{kinds:[`review_time_simulation`],fields:zy}},Jy={pinned_sdk_metadata:{kinds:[`pinned_sdk_registry`],fields:By},verified_mainnet_onchain_metadata:{kinds:[`verified_mainnet_onchain_metadata`],fields:By}},Yy={user_explicit:{kinds:[`user_explicit_choice`],fields:Hy},adapter_policy_from_quote_evidence:{kinds:[`quote_evidence`],fields:Uy}},Xy={kinds:[`review_time_simulation`],fields:Ry},Zy={kinds:[`quote_evidence`],fields:Vy},Qy={kinds:[`validated_request_fact`],fields:My},$y={kinds:[`validated_request_fact`],fields:Ny},eb={raw_quantity_amount:{byRole:qy},unit_metadata:{bySource:Jy},gas_unresolved_status:Xy,expiry_status:{current:Qy,expired:Qy,not_provided:$y,not_applicable:$y},quote_min_out:Zy,slippage_policy:{bySource:Yy},object_ownership:{kinds:[`wallet_account_read`],fields:Wy},simulation_result:{kinds:[`review_time_simulation`],fields:Dy}},tb={gasBudgetClaimId:{factKind:`raw_quantity_amount`,role:`gas_budget`,assetCoinType:Ay,rawUnit:jy},gasUsedClaimId:{factKind:`raw_quantity_amount`,role:`gas_used`,assetCoinType:Ay,rawUnit:jy},gasObjectOwnershipClaimId:{factKind:`object_ownership`,ownership:`owned_by_account`}},nb=F().refine(e=>{let t=new Date(e);return!Number.isNaN(t.getTime())&&t.toISOString()===e},`Expected ISO 8601 UTC timestamp`),rb=P_(`unsigned integer`),ib=F().regex(/^0x[0-9a-fA-F]{1,64}$/,{message:`Expected a Sui object id`}),ab=F().min(1).max(512).refine(e=>{try{return L_(e)===e}catch{return!1}},`Expected a normalized Sui struct tag coin type`),X=F().min(1).max(120),ob=V({symbol:F().min(1).max(64).optional(),coinType:ab}).strict(),sb=/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,cb=/(?:0x[0-9a-fA-F]{160,}|[A-Za-z0-9+/_=-]{160,})/;function lb(e,t){return F().min(1).max(e).superRefine((e,n)=>{(sb.test(e)||cb.test(e))&&n.addIssue({code:`custom`,message:`${t} must not contain executable transaction, signing, private-key, mnemonic, or long encoded material`})})}function ub(e,t){let n=new Set(e);return t.filter(e=>!n.has(e))}function db(e,t,n,r,i){let a=ub(t,n);a.length!==0&&e.addIssue({code:`custom`,path:r,message:`${i} must include ${a.join(`, `)}`})}function fb(e,t,n,r,i){db(e,t,n,r,i)}function pb(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&&pb(e,r,i)}function mb(e,t,n,r,i){let a=new Set(t),o=new Set(n);if(a.size!==o.size)pb(e,r,i);else for(let t of a)if(!o.has(t)){pb(e,r,i);return}}function hb(e,t,n,r,i){(t.symbol!==n.symbol||t.coinType!==n.coinType)&&pb(e,r,i)}function gb(e,t,n,r,i){try{L_(t.coinType)!==n&&pb(e,r,i)}catch{pb(e,r,i)}}var _b=V({kind:G([`natural_language_intent`,`external_proposal`,`mcp_action_request`,`local_review_request`]),sourceId:F().min(1).max(160),capturedAt:nb,authority:K(`untrusted_until_review_regenerates_and_verifies`),userSelectionSource:G([`user_explicit`,`prior_user_explicit_context`]).optional()}).strict(),vb=V({id:X,kind:G(Gy),network:K(`sui:mainnet`),source:F().min(1).max(240),verifiedAt:nb,fields:B(F().min(1).max(120)).min(1)}).strict(),yb=mc(`factKind`,[V({id:X,factKind:K(`raw_quantity_amount`),sourceEvidenceId:X,role:G(Ky),asset:ob,rawAmount:rb}).strict(),V({id:X,factKind:K(`unit_metadata`),sourceEvidenceId:X,source:G([`pinned_sdk_metadata`,`verified_mainnet_onchain_metadata`]),coinType:ab,decimals:L().int().min(0).max(255)}).strict(),V({id:X,factKind:K(`gas_unresolved_status`),sourceEvidenceId:X,checkedAt:nb,status:K(`unresolved`),reason:F().min(1).max(240)}).strict(),V({id:X,factKind:K(`expiry_status`),sourceEvidenceId:X,checkedAt:nb,status:G([`current`,`expired`,`not_provided`,`not_applicable`]),expiresAt:nb.optional(),reason:F().min(1).max(240).optional()}).strict(),V({id:X,factKind:K(`quote_min_out`),sourceEvidenceId:X,quoteEvidenceId:F().min(1).max(120),minOutRaw:rb}).strict(),V({id:X,factKind:K(`slippage_policy`),sourceEvidenceId:X,policySource:G([`user_explicit`,`adapter_policy_from_quote_evidence`]),maxSlippageBps:L().int().min(0).max(1e4),minOutRaw:rb.optional()}).strict(),V({id:X,factKind:K(`object_ownership`),sourceEvidenceId:X,objectId:ib,ownerAccount:m_,ownership:G([`owned_by_account`,`shared_object`,`immutable_or_package`,`not_owned_by_account`])}).strict(),V({id:X,factKind:K(`simulation_result`),sourceEvidenceId:X,provider:wy,checksEnabled:K(!0),simulatedAt:nb,status:G([`success`,`failed`,`unavailable`]),requiredFields:B(G(Dy)).min(Dy.length),missingFields:B(G(Dy)).default([]),failureReason:F().min(1).max(240).optional()}).strict()]),bb=V({id:X,role:G(Ky),asset:ob,rawAmount:rb,unit:V({decimals:L().int().min(0).max(255),source:G([`pinned_sdk_metadata`,`verified_mainnet_onchain_metadata`]),sourceField:F().min(1).max(160),unitClaimId:X}).strict(),amountClaimId:X,displayOnly:V({amountDisplay:F().min(1).max(120),reason:K(`presentation_only_not_signing_input`)}).strict().optional()}).strict(),xb=V({objectId:ib,ownerAccount:m_,ownershipClaimId:X}).strict(),Sb=V({source:K(`review_time_simulation`),checkedAt:nb,gasBudgetRaw:rb.optional(),gasBudgetClaimId:X.optional(),gasUsedRaw:rb.optional(),gasUsedClaimId:X.optional(),gasObjects:B(xb).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`})}),Cb=mc(`status`,[V({checkedAt:nb,status:K(`current`),expiresAt:nb,evidenceClaimId:X}).strict(),V({checkedAt:nb,status:K(`expired`),expiresAt:nb,evidenceClaimId:X}).strict(),V({checkedAt:nb,status:K(`not_provided`),evidenceClaimId:X,reason:F().min(1).max(240),expiresAt:lc().optional()}).strict(),V({checkedAt:nb,status:K(`not_applicable`),evidenceClaimId:X,reason:F().min(1).max(240),expiresAt:lc().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`})}),wb=V({status:G([`required_and_verified`,`not_required_for_action`,`missing`,`stale`]),quoteEvidenceId:F().min(1).max(120).optional(),quoteEvidenceClaimId:X.optional(),maxSlippageBps:L().int().min(0).max(1e4).optional(),minOutRaw:rb.optional(),policySource:G([`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`})}),Tb=V({checkedAt:nb,ownerAccount:m_,objects:B(V({objectId:ib,role:G([`input_coin`,`gas_coin`,`protocol_object`,`shared_object`,`receiving_object`]),ownership:G([`owned_by_account`,`shared_object`,`immutable_or_package`,`not_owned_by_account`]),evidenceClaimId:X}).strict()).min(1)}).strict(),Eb=V({evidenceClaimId:X,transactionDigest:h_,provider:wy,checksEnabled:K(!0),simulatedAt:nb,status:G([`success`,`failed`,`unavailable`]),requiredFields:B(G(Dy)).min(Dy.length),missingFields:B(G(Dy)).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=>Dy.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`}),Db=V({fields:B(G(Ey)).min(Ey.length),transactionDigest:h_,source:K(`review_model_or_adapter_equivalent`),purpose:K(`human_review_before_wallet_authorization`)}).strict().refine(e=>Ey.every(t=>e.fields.includes(t)),{message:`Human-readable review fields must include every required review field`}),Ob=V({runtimeStatus:K(`emitted_pre_handoff`),mcpAndReviewUiMayExpose:B(G([`human_readable_review`,`ptb_visualization_artifact`,`diagnostics`,`status_checks`])).min(1),prohibited:B(G(Oy)).min(1)}).strict().superRefine((e,t)=>{fb(t,e.prohibited,Oy,[`prohibited`],`prohibited`)}),kb=V({schemaVersion:K(1),adapterId:F().min(1).max(120),protocol:F().min(1).max(120),actionKind:F().min(1).max(120),network:K(`sui:mainnet`),inputProvenance:_b,sourceReferences:B(vb).min(1),evidenceClaims:B(yb).min(1),rawQuantities:B(bb).min(1),gas:Sb,expiry:Cb,slippageOrMinOut:wb,objectOwnership:Tb,simulation:Eb,humanReadableReview:Db,outputBoundary:Ob,reviewedTransactionDigest:h_}).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(`, `)}`}),db(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,eb.raw_quantity_amount.byRole[e.role],[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].raw_quantity_amount`),e.factKind===`unit_metadata`&&l(e.sourceEvidenceId,eb.unit_metadata.bySource[e.source],[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].unit_metadata`),e.factKind===`gas_unresolved_status`&&l(e.sourceEvidenceId,eb.gas_unresolved_status,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].gas_unresolved_status`),e.factKind===`expiry_status`&&(l(e.sourceEvidenceId,eb.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,eb.quote_min_out,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].quote_min_out`),e.factKind===`slippage_policy`&&(l(e.sourceEvidenceId,eb.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,eb.object_ownership,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].object_ownership`),e.factKind===`simulation_result`&&(l(e.sourceEvidenceId,eb.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`}),Dy.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`),hb(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,tb.gasBudgetClaimId.role,[`gas`,`gasBudgetClaimId`],`gas.gasBudgetClaimId role`),gb(t,n.asset,tb.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,tb.gasUsedClaimId.role,[`gas`,`gasUsedClaimId`],`gas.gasUsedClaimId role`),gb(t,n.asset,tb.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,tb.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`),mb(t,e.simulation.requiredFields,f.requiredFields,[`simulation`,`requiredFields`],`simulation.requiredFields`),mb(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`)}),Ab=V({contractVersion:K(Ty),artifactKind:K(`ptb_visualization`),generatedAt:nb,source:V({adapterId:F().min(1).max(120),planId:F().min(1).max(120).optional(),sourceKind:G([`review_time_generated_transaction_kind`,`review_time_ir`,`renderer_model`]),authority:K(`visualization_only_not_wallet_authorization`),renderer:V({name:F().min(1).max(120),packageName:F().min(1).max(120).optional(),version:F().min(1).max(80).optional()}).strict().optional()}).strict(),mermaid:V({diagramType:K(`flowchart`),text:lb(2e4,`mermaid.text`),namedText:lb(2e4,`mermaid.namedText`)}).strict(),diagnostics:B(V({severity:G([`info`,`warning`,`error`]),code:F().min(1).max(120),message:lb(512,`diagnostics.message`),source:G([`adapter`,`renderer`,`schema`,`simulation`])}).strict()).default([]),unsupportedUse:B(G(ky)).min(1),executableMaterial:V({included:K(!1),policy:K(`mcp_and_review_ui_outputs_must_not_include_executable_transaction_material`)}).strict()}).strict().superRefine((e,t)=>{fb(t,e.unsupportedUse,ky,[`unsupportedUse`],`unsupportedUse`)}),jb=W(F(),z()),Mb=G(by),Nb=G(xy);G([`ready_for_wallet_review`,`refresh_required`,`blocked`]);var Pb=G(Sy);G([`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 Fb=V({id:F(),label:F(),status:G([`pass`,`warning`,`fail`]),message:F(),source:G([`registry`,`quote`,`wallet`,`simulation`,`adapter`,`network`,`proposal`])}),Ib=F().min(1),Lb=`human_readable_review`,Rb=`review_time_simulation`,zb=V({stageCatalogId:F().min(1),adapterId:F(),protocol:F(),actionKind:F(),completedStages:B(Ib),missingStages:B(Ib)}).strict().superRefine((e,t)=>{let n=Bb(e.completedStages);n&&t.addIssue({code:`custom`,path:[`completedStages`],message:`completedStages contains duplicate stage '${n}'`});let r=Bb(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 Bb(e){let t=new Set;for(let n of e){if(t.has(n))return n;t.add(n)}}var Vb=V({symbol:F(),amount:F(),coinType:F().optional(),approx:R().optional()}).strict(),Hb=Vb.extend({amountKind:K(`display_intent`).default(`display_intent`)}),Ub=V({outgoing:B(Hb),expectedIncoming:B(Hb),minimumIncoming:B(Hb).optional(),fees:B(Hb).optional()}),Wb=V({outgoing:B(Vb),expectedIncoming:B(Vb),minimumIncoming:B(Vb).optional(),fees:B(Vb).optional()}),Gb=V({before:B(Vb),after:B(Vb),delta:B(Vb)}),Kb=V({computationCostRaw:M_(`computationCostRaw`),storageCostRaw:M_(`storageCostRaw`),storageRebateRaw:M_(`storageRebateRaw`),nonRefundableStorageFeeRaw:M_(`nonRefundableStorageFeeRaw`)}).strict(),qb=V({address:m_,coinType:F().min(1).max(512).refine(e=>{try{return L_(e)===e}catch{return!1}},`Expected a normalized Sui struct tag coin type`),amount:I_(`balanceChanges[].amount`)}).strict(),Jb=V({objectId:m_,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(),Yb=V({provider:wy,checksEnabled:R(),success:R(),gasCostSummary:Kb.optional(),balanceChanges:B(qb).optional(),objectChanges:B(Jb).optional(),error:F().optional()}),Xb=Yb,Zb=Yb.extend({checksEnabled:K(!0),success:K(!0),gasCostSummary:Kb,balanceChanges:B(qb),objectChanges:B(Jb),error:lc().optional()}).strict(),Qb=V({role:G([`input`,`expected_output`,`minimum_output`,`fee`]),symbol:F(),coinType:F().min(1).max(512).refine(e=>{try{return L_(e),!0}catch{return!1}},`Expected a Sui struct tag coin type`),decimals:L().int().min(0).max(255),rawAmount:M_(`rawAmount`),rawAmountSource:K(`quote_policy_evidence`),displayAmount:F().optional(),displayAmountSource:K(`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`})}),$b=V({role:G([`connected_account`,`output_recipient`]),address:m_}).strict(),ex=V({kind:K(`swap_output_asset`),symbol:F(),coinType:F().min(1).max(512).refine(e=>{try{return L_(e),!0}catch{return!1}},`Expected a Sui struct tag coin type`),protocol:F(),poolKey:F(),direction:G([`base_to_quote`,`quote_to_base`])}).strict(),tx=V({id:F(),label:F(),source:U([G([`registry`,`quote`,`wallet`,`simulation`,`adapter`,`network`,`proposal`]),G([`transaction_material`,`digest_commitment`])]),summary:F()}).strict(),nx=V({id:F(),label:F(),reason:F()}).strict(),rx=V({proposedAction:V({title:F(),summary:F(),actionKind:F(),adapterId:F(),protocol:F(),network:K(`sui:mainnet`)}).strict(),recipients:B($b),evidenceUsed:B(tx),missingEvidence:B(nx),requiredUserChoices:B(nx),unsupportedClaims:B(nx),freshness:V({status:K(`current`),evaluatedAt:F(),expiresAt:F(),reason:F()}).strict(),blockingChecks:B(Fb)}).strict(),ix=V({assetFlow:V({outgoing:B(Qb),expectedIncoming:B(Qb),minimumIncoming:B(Qb),fees:B(Qb)}).strict(),targets:B(ex)}).strict(),ax=mc(`kind`,[rx.extend({kind:K(`swap_human_readable_review`)}).merge(ix)]),ox=V({id:F(),actionKind:F(),adapterId:F(),protocol:F(),title:F(),summary:F(),assetFlowPreview:Ub,reviewModel:yy.optional(),adapterData:jb,createdAt:F(),expiresAt:F().optional(),registryVersion:F().optional(),preliminaryChecks:B(Fb).optional()}),sx=V({planId:F(),reviewSessionId:F(),account:m_,checks:B(Fb),assetFlowActual:Wb.optional(),beforeAfterBalance:Gb.optional(),simulation:Xb.optional(),humanReadableReview:ax.optional(),transactionReviewData:kb.optional(),ptbVisualization:Ab.optional(),adapterLifecycle:zb.optional(),updatedAt:F()}),cx=mc(`status`,[sx.extend({status:K(`ready_for_wallet_review`),evidenceValidity:lc().optional(),blockedReason:lc().optional(),refreshReason:lc().optional()}),sx.extend({status:K(`refresh_required`),evidenceValidity:K(`invalidated`).optional(),refreshReason:Nb,blockedReason:lc().optional()}),sx.extend({status:K(`blocked`),evidenceValidity:K(`invalidated`).optional(),blockedReason:Mb,refreshReason:lc().optional()})]).superRefine((e,t)=>{if(e.evidenceValidity===`invalidated`)for(let n of Cy)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&&lx(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 lx(e,t){let n=e.adapterLifecycle;n&&(e.humanReadableReview!==void 0&&ux(t,n,Lb,[`humanReadableReview`]),e.simulation!==void 0&&(ux(t,n,Rb,[`simulation`]),ux(t,n,Lb,[`simulation`]),dx(t,e.simulation,[`simulation`])),n.missingStages.includes(Rb)&&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(Lb)&&e.humanReadableReview!==void 0&&t.addIssue({code:`custom`,path:[`humanReadableReview`],message:`humanReadableReview public evidence cannot be present while human_readable_review is missing`}))}function ux(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 dx(e,t,n){Zb.safeParse(t).success||e.addIssue({code:`custom`,path:n,message:`simulation public evidence requires a successful checks-enabled review-time simulation projection`})}var fx=V({topic:F().min(1),grants:E_,expiresAt:F().datetime(),walletName:F().optional()}).strict(),px={topic:F().min(1),lifecycleRevision:L().int().positive(),grantRevisions:x_},mx=mc(`status`,[V({...px,status:K(`present`),session:fx}).strict(),V({...px,status:G([`absent`,`unusable`])}).strict()]);V({chainId:K(y_),lifecycleRevision:L().int().positive(),grantRevision:L().int().nonnegative()});var hx=V({runId:Y_,sequence:L().int().positive(),observedAt:F().datetime()}).strict();hx.extend({sessions:B(mx)}).strict();var gx=F().uuid(),_x={operationId:gx,walletRunId:Y_},vx=mc(`action`,[V({action:K(`connect`),..._x,chains:S_}).strict(),V({action:K(`disconnect`),..._x,connectionId:F().min(1),impactId:F().min(1)}).strict()]);V({}).strict();var yx=V({operationId:gx,cardId:F().min(1),action:G([`connect`,`disconnect`]),status:G([`running`,`completed`,`failed`,`stopped`]),connectionId:F().min(1),createdAt:F().datetime(),updatedAt:F().datetime(),expiresAt:F().datetime(),settlementPending:R(),message:F().optional(),endReason:G([`user_stopped`,`expired`,`run_ended`]).optional()}).strict();yx.pick({operationId:!0,action:!0,status:!0,settlementPending:!0});var bx=`A wallet connection provides account context; it is not a transaction approval or proof of address ownership.`,xx=`Review evidence is not a safety guarantee. Only an explicit card action and wallet approval may authorize this exact transaction.`,Sx=tv.extend({sessionPresence:G([`present`,`absent`,`unusable`,`unconfirmed`]),chainStates:B(nv).optional(),disconnectImpact:V({impactId:F(),requestCount:L().int().nonnegative(),chains:S_}).strict().optional()});G([`awaiting_approval`,`disconnect_pending`,`cleanup_pending`]);var Cx=V({action:G([`prepare_review`,`request_signature`]),connectionId:F().min(1),walletRunId:Y_,account:m_,reviewRevision:L().int().nonnegative()}).strict(),wx=V({action:G([`cancel`,`stop_waiting`,`read_result`])}).strict(),Tx=U([vx,V({action:K(`stop_connection`),operationId:F().uuid()}).strict(),Cx,wx]),Ex=U([vx.options[0],Cx.extend({action:K(`prepare_review`)})]);function Dx(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 Ox=V({kind:G(av),message:F().optional(),reason:F().optional()}).strict(),kx={allowedActions:B(G(iv)),actionRemainingMs:L().int().nonnegative(),nextStateReadAfterMs:L().int().nonnegative().optional(),observe:R(),walletAvailability:Q_,walletObservation:hx.optional(),progress:$_,nextStep:Ox},Ax=V({...kx,kind:K(`connect`),mode:K(`connect`),allowedActions:B(G([`connect`,`cancel`,`stop_connection`])),boundary:K(bx),requestedChains:S_,operation:yx.optional(),automaticAction:vx.options[0].optional()}).strict(),jx=V({...kx,kind:K(`disconnect`),mode:K(`disconnect`),allowedActions:B(G([`disconnect`,`cancel`])),boundary:K(bx),connection:Sx.optional(),operation:yx.optional()}).strict(),Mx=V({reviewSessionId:F(),plan:ox,reviewRevision:L().int().nonnegative(),status:Pb,account:F().optional(),preparing:R(),accountRequestPending:K(!0).optional(),error:F().optional(),state:cx.optional()}).strict(),Nx=V({connectionId:F(),account:m_}).strict(),Px=F().regex(/^-?[0-9]+$/).optional(),Fx=mc(`kind`,[Ax,jx,V({...kx,kind:K(`review`),mode:G([`review`,`review_manage`]),allowedActions:B(G([`prepare_review`,`request_signature`,`read_result`,`stop_waiting`,`cancel`])),boundary:K(xx),reviewTarget:Nx.optional(),review:Mx,walletName:F().optional(),acceptedWalletRunId:Y_.optional(),automaticAction:Cx.extend({action:K(`prepare_review`)}).optional(),request:J_.optional(),receipt:z().optional(),netGasMist:Px,observationStopped:R().optional()}).strict().superRefine(Dx)]),Ix=V({message:F(),recordedAt:F().datetime()}).strict(),Lx={allowedActions:B(lc()),observe:K(!1),actionRemainingMs:K(0),result:Ix};V({...Lx,kind:G([`connect`,`disconnect`]),result:Ix.extend({pendingWork:G([`approval_response`,`session_removal`,`session_status`]).optional()}),walletName:F().optional(),networks:B(V({chainId:b_,status:G([`bound`,`not_approved`,`multiple_accounts`,`invalid_response`])}).strict())}).strict(),V({...Lx,kind:K(`review`),mode:G([`review`,`review_manage`]),review:Mx.optional(),reviewTarget:Nx.optional(),request:J_.optional(),receipt:z().optional(),netGasMist:Px,observationStopped:R().optional(),boundary:K(xx)}).strict().superRefine(Dx);var Rx=`sui-mcp.local-data`,zx=16777216,Q=F().uuid(),Bx=L().int().nonnegative().safe(),Vx=F().regex(/^[a-f0-9]{64}$/),Hx=mc(`status`,[V({status:K(`no_file`)}).strict(),V({status:K(`receiving`)}).strict(),V({status:K(`checking`)}).strict(),V({status:K(`check_required`),message:F().min(1)}).strict(),V({status:K(`can_restore`)}).strict(),V({status:K(`cannot_restore`),reason:G([`invalid_backup`,`file_unavailable`,`wallet_request_unsettled`,`operation_busy`,`input_unavailable`,`check_failed`]),message:F().min(1)}).strict()]);V({fileId:Q,sha256:Vx,totalSize:Bx,dataEpoch:Bx,userDataRevision:Bx,check:Hx}).strict();var Ux=mc(`kind`,[V({kind:K(`set_endpoint`),endpoint:G([`grpc`,`graphql`]),value:F().min(1)}).strict(),V({kind:K(`restore_endpoint`),endpoint:G([`grpc`,`graphql`])}).strict(),V({kind:G([`import_local_data`,`reset_local_data`,`restart_wallet_service`])}).strict()]),Wx=mc(`kind`,[V({kind:K(`clear_read_address`)}).strict(),...Ux.options,V({kind:K(`set_wallet_networks`),chains:S_}).strict(),V({kind:K(`download_backup`)}).strict()]);V({operationStatus:V({operationId:F().uuid()}).strict().optional(),backupDelivery:V({operationId:F().uuid(),fileId:F().uuid()}).strict().optional()}).strict().refine(e=>!(e.operationStatus&&e.backupDelivery),`Choose exactly one card purpose.`);var Gx=G([`acknowledged`,`not_completed`,`unconfirmed`,`unsupported`,`not_sent`]),Kx=V({method:K(`ui/download-file`),code:K(-32601)}).strict(),qx=G([`acknowledged`,`cancelled`,`expired`,`server_restarted`,`data_replaced`,`source_unavailable`,`stored_locally`,`local_save_failed`]),Jx=V({device:F().regex(/^\d+$/),inode:F().regex(/^\d+$/)}).strict(),Yx=G([`not_published`,`target_conflict`,`source_unavailable`,`interrupted`]),Xx=V({status:G([`needs_consent`,`saving`,`saved`,`failed`]),attemptId:Q,fileId:Q,sha256:Vx,totalSize:Bx,destination:F(),ownerId:F().min(1),currentSaveAttemptId:Q.optional(),attempts:B(V({saveAttemptId:Q,cardId:F().min(1),previousSaveAttemptId:Q.optional(),admittedAt:F().datetime(),allowPossibleCopy:R()}).strict()),sourceIdentity:Jx.optional(),savedAt:F().datetime().optional(),failure:Yx.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.`})});V({currentAttemptId:Q,attempts:B(V({attemptId:Q,cardId:F().min(1),admittedAt:F().datetime(),previousAttemptId:Q.optional(),hostReport:Gx.optional(),failure:Kx.optional()}).strict()).min(1),readyAt:F().datetime().optional(),expiresAt:F().datetime().optional(),endReason:qx.optional(),localSave:Xx.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 Zx=G([`settings_retry_download`,`settings_report_download`,`settings_cancel_download`,`settings_store_backup`]),Qx=mc(`action`,[V({action:K(`settings_clear_read_address`),operationId:Q,connectionId:F().min(1),account:F().min(1)}).strict(),V({action:K(`settings_save_wallet_networks`),operationId:Q,chains:S_.transform(C_),expectedChains:S_.transform(C_)}).strict(),V({action:K(`settings_download_backup`),operationId:Q,attemptId:Q}).strict(),V({action:K(`settings_retry_download`),operationId:Q,fileId:Q,previousAttemptId:Q,attemptId:Q}).strict(),V({action:K(`settings_report_download`),operationId:Q,fileId:Q,attemptId:Q,status:Gx,failure:Kx.optional()}).strict().refine(e=>e.status===`unsupported`==(e.failure!==void 0),`Only unsupported downloads require the exact method failure.`),V({action:K(`settings_store_backup`),operationId:Q,fileId:Q,attemptId:Q,saveAttemptId:Q,previousSaveAttemptId:Q.optional(),allowPossibleCopy:R()}).strict(),V({action:K(`settings_cancel_download`),operationId:Q,fileId:Q,attemptId:Q}).strict(),V({action:K(`settings_select`),draft:Ux}).strict(),V({action:K(`settings_prepare`),operationId:Q}).strict(),V({action:K(`settings_begin_upload`),operationId:Q,name:F().min(1),totalSize:Bx.max(zx),sha256:Vx}).strict(),V({action:K(`settings_upload_chunk`),operationId:Q,fileId:Q,offset:Bx.max(zx),chunkBase64:F()}).strict(),V({action:K(`settings_seal_upload`),operationId:Q,fileId:Q}).strict(),V({action:K(`settings_confirm`),operationId:Q,preparationId:Q}).strict(),V({action:K(`settings_back`),operationId:Q}).strict(),V({action:K(`settings_cancel`)}).strict()]),$x=V({outcome:G([`completed`,`failed`,`interrupted`,`superseded`]),recordedAt:F().datetime(),message:F().min(1),details:W(F(),z()).optional(),completionScope:K(`backup_delivery`).optional()}).strict(),eS=V({storedValue:F(),effectiveValue:F(),source:G([`environment`,`local_db`,`builtin_default`]),pendingStoredValue:F().optional(),appliesAfter:K(`mcp_server_restart`).optional()}).strict(),tS=V({endpoint:G([`grpc`,`graphql`]),key:G([`suiGrpcUrl`,`suiGraphqlUrl`]),value:F().min(1),status:G([`saved`,`reset`]),storedValue:F(),effectiveValue:F(),source:eS.shape.source}).strict().refine(e=>e.key===(e.endpoint===`grpc`?`suiGrpcUrl`:`suiGraphqlUrl`),`The endpoint kind and preference key must agree.`),nS=L().int().nonnegative().safe(),rS=V({accounts:nS,reviewSessions:nS,reviewStateSnapshots:nS,reviewStatusTransitions:nS,reviewExecutions:nS,reviewRequests:nS,outcomeUnknownRequests:nS,externalActivityScans:nS,externalActivityTransactions:nS,localSettings:nS}).strict(),iS=V({status:K(`valid`),format:K(Rx),network:K(`mainnet`),exportedAt:F().datetime(),currentCounts:rS,incomingCounts:rS,willReplace:K(!0),restartRequiredAfterImport:R()}).strict(),aS=V({kind:K(`settings`),operationId:Q,phase:G([`draft`,`uploading`,`sealed`,`prepared`,`executing`,`stopping`,`starting`,`terminal`]),draft:Wx.optional(),preparationId:Q.optional(),preparation:W(F(),z()).optional(),file:V({fileId:Q,displayName:F(),totalSize:Bx,receivedSize:Bx,sha256:Vx,sealed:R(),cleanup:G([`pending`,`complete`,`failed`])}).strict().optional(),download:V({availability:G([`preparing`,`available`,`ended`]),currentAttemptId:Q,hostReport:Gx.optional(),previousUnconfirmed:R(),endReason:qx.optional(),expiresAt:F().datetime().optional(),remainingMs:Bx.optional(),localSave:V({status:G([`needs_consent`,`saving`,`saved`,`failed`]),currentSaveAttemptId:Q.optional(),failure:Yx.optional(),savedAt:F().datetime().optional()}).strict().optional(),allowedFileActions:B(Zx)}).strict().optional(),restoreCheck:Hx.optional(),backupLocation:V({directory:F().min(1),filename:F().min(1)}).strict().optional(),result:$x.optional(),temporaryFileCleanup:G([`pending`,`complete`,`failed`]).optional(),priorRunId:Q.optional(),nextRunId:Q.optional(),supersedesOperationId:Q.optional(),supersededByOperationId:Q.optional(),allowedActions:B(G(Qx.options.map(e=>e.shape.action.value))),observe:R(),facts:V({server:V({name:F(),version:F(),network:K(`mainnet`)}).strict(),localSettings:V({suiGrpcUrl:eS,suiGraphqlUrl:eS,walletConnectionChains:S_}).strict(),readAddress:F().optional(),readConnectionId:F().optional(),assetReadAccount:rv,walletAvailability:Q_,connectionReconciliationRequired:K(!0).optional(),observedAt:F().datetime().optional(),counts:rS}).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`&&!iS.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=tS.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.`})}),oS=65536;function sS(e){return new TextEncoder().encode(JSON.stringify(e)).length}function cS(e){let t=oS-sS(e);return t>0?3*Math.floor(t/4):0}function lS(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=zx,t.params.arguments.input.chunkBase64=``,cS(t)}var uS={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`},dS=V({connectionId:F().min(1),pairingUri:F().startsWith(`wc:`),expiresAt:F().datetime()}).strict(),fS=G([`account`,`receipt`,`chart`,`connect`,`disconnect`,`review`,`settings`]),pS=V({cardId:F().min(1),kind:fS,state:G([`ready`,`running`,`closed`]),revision:L().int().nonnegative(),createdAt:F().datetime(),expiresAt:F().datetime(),input:W(F(),z()),data:z().optional(),reason:G([`completed`,`expired`,`failed`,`server_restarted`,`cancelled`]).optional(),error:F().optional()}).strict().extend({pollAfterMs:L().int().positive(),inputRemainingMs:L().int().nonnegative()}),mS=V({transactionDigest:F().min(1),pureInputs:B(V({index:L().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:V({mermaid:V({text:F(),namedText:F()}).strict()}).strict().optional()}).strict(),hS=`sui-mcp/card`,gS=`sui-mcp/receipt-display`,_S=`sui-mcp/wallet-display`,vS=`sui-mcp/settings-file`,yS=`suimcp://cards/`,bS=mc(`kind`,[V({kind:K(`account`),status:K(`input_required`),field:K(`account`),message:F().min(1)}).strict(),V({kind:K(`receipt`),status:K(`input_required`),field:K(`digest`),message:F().min(1)}).strict()]),xS=V({cardId:F().min(1),permission:F().min(1)}).strict();xS.extend({revision:L().int().nonnegative(),input:W(F(),z())}).strict();var SS=mS.extend({cardId:F().min(1),revision:L().int().nonnegative(),attemptId:F().min(1).optional()}),CS=dS.extend({cardId:F().min(1),revision:L().int().nonnegative()}),wS=V({attemptId:F().uuid(),cardId:F().min(1),operationId:F().uuid(),fileId:F().uuid(),offset:L().int().nonnegative().safe(),totalSize:L().int().nonnegative().safe(),sha256:F().regex(/^[a-f0-9]{64}$/),chunkBase64:F()}).strict(),TS={account:uS.uiOpenAccount,receipt:uS.uiOpenReceipt,chart:uS.uiOpenChart,read:uS.uiReadCard,submit:uS.uiSubmitCard,act:uS.uiActCard,readSettingsFile:uS.uiReadSettingsFile};function $(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function ES(e){return e.kind!==`import_local_data`}function DS(e,t,n){if(e.kind!==`settings`||t.kind!==`settings`||e.cardId!==t.cardId||t.state!==`ready`)return;let r=aS.safeParse(e.data),i=aS.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=Wx.safeParse(n.draft);if(r.success&&ES(r.data)&&(t.revision===e.revision||kS(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(ES(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 OS(e){return Object.keys(e).filter(t=>e[t]!==void 0)}function kS(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)=>kS(e,t[n]));let n=$(e),r=$(t);if(!n||!r)return!1;let i=OS(n);return i.length===OS(r).length&&i.every(e=>Object.hasOwn(r,e)&&kS(n[e],r[e]))}function AS(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&&!kS(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=Yu.safeParse(i);if(!n.success)throw r();o=AS(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 OS(t)){let n=t[e];if(Object.hasOwn(c,e)&&!kS(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 jS(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 MS(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(yS.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 NS(e){let t=$(e.structuredContent),n=t?.ok===!0?bS.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:pS.parse(i);a?.kind===`settings`&&aS.parse(a.data);let o=$(e._meta)?.[gS],s=o===void 0?void 0:SS.parse(o);if(s&&!jS(a,s))throw Error(`Transaction details do not match this saved result.`);let c=$(e._meta)?.[_S],l=c===void 0?void 0:CS.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 PS(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 Xh({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,le,ue=0,de=0,fe,pe,me,he,E,ge,_e,ve,ye=!1;function be(){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 xe()||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 xe(){let e=Tx.safeParse(C?.input),t=Fx.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 Se(){if(!C)return;let e=be();e&&C.disposition!==`observed`&&(e!==`active`||C.disposition===`active`)&&(C.disposition=e),C.disposition===`observed`&&(C.retryRequired=!1)}function Ce(){if(y?.reason===`cancelled`)return;let e=Ex.safeParse($(y?.data)?.automaticAction);return C?.retryRequired&&e.success&&C.input.action===e.data.action?e.data:void 0}function we(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 Te(e){if(e!==`past`||!C)return;let t=we(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 Ee,De;function Oe(){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`||Ee===void 0||Date.now()<Ee)],o=e===`review`&&t?.mode===`review`&&!t.request&&!!g&&y?.state===`ready`,s=o&&fe!==void 0&&Date.now()>=fe,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=ge?.pending?.()===!0,ue=ge?.displayRecovery?.(),pe=u&&!l&&!oe&&!re&&!s&&!!g,me=pe&&!w&&!h&&(!m||!(ce&&(b||ee||ne))),he=Ex.safeParse(t?.automaticAction),E=p?$(n?.localSave):void 0,_e=!!y&&!r&&(m?t?.observe===!0||E?.status===`saving`:y.state===`running`),ve=!!_&&te&&!l&&!ce&&c&&(le===`explicit`||S.status!==`read_failed`&&(le===`background`||S.status===`needed`&&S.automatic)),be=c&&pe&&!ae&&!ce&&!le&&!w&&!ee&&!x&&!ne&&f&&he.success&&a.includes(he.data.action)?he.data:void 0,xe=$(t?.restoreCheck),Se=p&&pe&&y?.state===`ready`&&!y.input.backupDelivery&&!w&&!h&&!t?.result&&t?.observe!==!0&&(xe?.status===`cannot_restore`&&[`operation_busy`,`wallet_request_unsettled`].includes(String(xe.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`)),De;!l&&_&&(S.status===`read_failed`||ae||S.status===`unconfirmed`?De=`read`:S.status===`needed`?S.automatic||(De=`read`):oe||ue||!r&&p&&[`pending`,`failed`].includes(String(t?.temporaryFileCleanup))||!r&&(E?.status===`saving`||E?.status===`needs_consent`&&!a.includes(`settings_store_backup`)||E?.status===`failed`&&E.failure===`not_published`&&!n?.endReason&&!a.includes(`settings_store_backup`))||Se?De=`read`:g?!r&&$(t?.progress)?.status===`unavailable`||!r&&$(t?.walletAvailability)?.status===`initializing`&&$(t?.walletAvailability)?.stage===`state_sync`?De=`read`:!r&&!ne&&Ce()?De=`retry`:b&&(!m&&me&&y?.state===`ready`&&ye&&ge?.selectionRecovery?De=`selection`:!_e&&!(ne&&a.length>0)&&!(C?.input.action===`prepare_review`&&a.includes(`prepare_review`)&&t?.automaticAction===void 0)&&f&&(De=`read`)):(y?.state!==`closed`||oe)&&(De=`read`));let Oe=f?t?.actionRemainingMs:y?.inputRemainingMs;De===`retry`&&s&&(De=`read`);let ke=r?void 0:f?t?.nextStateReadAfterMs:p&&Ee!==void 0?Math.max(0,Ee-de):void 0,Ae=[!r&&(f?a.length>0:y?.state===`ready`)?Oe:void 0,ke].filter(e=>typeof e==`number`&&Number.isFinite(e)&&e>0),je=!l&&!!g&&c&&!ie&&!ae&&S.status!==`read_failed`,D=$(t?.review),Me=o&&!l&&!ae&&!oe&&!b&&!ee&&!ne&&S.status!==`read_failed`&&(re||w?.input.action===`prepare_review`||D?.preparing===!0||he.success&&he.data.action===`prepare_review`||S.status===`needed`&&D?.status===`ready_for_wallet_review`);return{current:u,inputEnabled:me,permitted:a,disposition:v,read:ve,auto:be,recover:De,paused:ne,partialDisplayFailure:ue,settingsInputBlocked:Se,reviewUpdatePending:Me,reviewCommandDeliveryFailed:b&&C?.input.action===`prepare_review`,reviewHint:s?void 0:Me?re||D?.preparing||w?.input.action===`prepare_review`?`Updating review…`:`Checking status…`:o&&$(D?.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 ${we(C)}: “${C.message}”`:void 0,oe,ue?.message],note:[se,Te(v)].filter(Boolean).join(` `),expiryAt:je&&u&&Ae.length?de+Math.min(...Ae):void 0,poll:je&&(_e||S.status===`needed`&&!S.automatic),lifetimeAt:!l&&c&&o?fe:void 0}}function ke(e){return e.recover===`retry`?C?.input.action===`connect`?`Retry connection`:`Retry review`:e.recover===`selection`?ge?.selectionRecovery?.label:e.recover===`read`?`Check status`:void 0}function Ae(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=ke(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:ge?.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 je(e=Oe()){return e.inputEnabled&&y?.state===`ready`&&ye}function D(e,t=Oe()){return y?.state!==`closed`&&m&&t.inputEnabled&&(e?t.permitted.includes(e.action):t.permitted.length>0)}function Me(e){let t=Oe();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 Ne(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,Ae(e)].filter(Boolean).join(` `),o.hidden=!o.textContent,ye)for(let t of s.querySelectorAll(`input, button, select`))(!m||t.tagName!==`BUTTON`||t.dataset.cardAction!==void 0)&&(t.disabled=m?!D(void 0,e):!je(e));if(m)for(let t of s.querySelectorAll(`[data-card-action]`))t.disabled=!D({action:t.dataset.cardAction},e);if(p)for(let t of s.querySelectorAll(`[data-settings-file-action]`))t.disabled=t.dataset.settingsLocalBlocked===`true`||!(h?Me({action:t.dataset.cardAction}):D({action:t.dataset.cardAction},e));_&&(e.reviewUpdatePending||_.dataset.cardAction===`request_signature`&&e.reviewCommandDeliveryFailed||_.dataset.cardAction===void 0)&&(_.disabled=!0),E&&(E.disabled=!!w||!!ce)}function Pe(e){try{e?.()}catch{oe=`The card display could not be closed cleanly. Its stored information is unchanged.`}}function Fe(e){if(!y||d.signal.aborted)return;if(y.state===`ready`&&S.status!==`confirmed`){if(p&&ge?.update)try{ge.update(y,{automaticPaused:T===`paused`,settings:qe,settingsCommandProgress:void 0,onDisplayChange:()=>k()})}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`?DS(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===_e||i===ve&&!e)return;ve=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:()=>k(),wallet:x,...p?{settings:qe,settingsCommandProgress:r}:{}};if(ge?.update?.(y,e)){_e=i,oe=void 0;return}if(y.state===`ready`&&g){let n=t.controls(y,e=>{Ge(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=>{Ge(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),Pe(c?.dispose),oe=`This card could not be displayed. Its stored information is unchanged.`;return}let f=ge?.dispose;ge=c,ye=l,_e=i,oe=void 0,Pe(f)}function Ie(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:Ex.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,Se(),u){de=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}`;De!==e&&(De=e,Ee=void 0),Ee=Math.min(Ee??1/0,de+Math.max(0,t.remainingMs))}else p&&t?.availability===`ended`&&(Ee=void 0);g&&e===`review`&&o?.mode===`review`&&!o.request&&typeof o.actionRemainingMs==`number`&&Number.isFinite(o.actionRemainingMs)&&o.actionRemainingMs>=0&&(fe=Math.min(fe??1/0,de+o.actionRemainingMs))}return r===`read`&&(S.status!==`needed`||a>S.afterRead)&&(S={status:`confirmed`},ae=void 0),n&&(b=n),x=i,!0}function Le(){pe!==void 0&&clearTimeout(pe),me!==void 0&&clearTimeout(me),he!==void 0&&clearTimeout(he),pe=void 0,me=void 0,he=void 0,l.hidden=!0}function Re(e){let t=ke(e);E?.textContent!==t&&(E?.remove(),E=void 0,t&&(E=ng(t,()=>{if(ce||w||d.signal.aborted)return;let e=Oe();if(e.recover===`selection`&&je(e))ge?.selectionRecovery?.retry();else if(e.recover===`retry`){let e=Ce();e&&We(e)}else O()})));let n=s.querySelector(`.review-primary-action`),r=s.querySelector(`.review-primary-slot`);n&&(n.hidden=!!E&&!!r),E&&(E.disabled=!!ce||!!w,r?(E.classList.add(`review-recovery-action`),r.append(E)):(E.classList.remove(`review-recovery-action`),c.append(E)))}async function O(){let e=ge,t=e?.displayRecovery?.(),n=await Be(!0);n?.kind===`accepted`&&y===n.snapshot&&S.status===`confirmed`&&!d.signal.aborted&&document.visibilityState!==`hidden`&&!oe&&e===ge&&t&&e?.displayRecovery?.()===t&&(t.retry(),k())}function k(e=!1){if(ie){let e=document.createElement(`p`);e.className=`ui-note`,e.textContent=ie,s.replaceChildren(e)}else Fe(e);let t=Oe();if(Ne(t),Le(),Re(t),d.signal.aborted||S.status===`rejected`)return;t.expiryAt!==void 0&&(me=setTimeout(()=>{ze(),k()},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)he=setTimeout(r,Math.min(1e3,t));else{let e=Oe();Ne(e),Re(e)}};r()}if(t.poll&&y){let e=de+y.pollAfterMs-Date.now();pe=setTimeout(()=>{Be(!1)},e>0?e:y.pollAfterMs)}t.read?(le=void 0,Ve()):t.auto&&(pe=setTimeout(()=>{let e=Oe().auto;e&&Ke(e,`automatic`)},0))}function ze(){S.status!==`rejected`&&S.status!==`read_failed`&&(S={status:`needed`,afterRead:ue,automatic:!0})}function Be(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):(le=e?`explicit`:`background`,k(),ce?.promise??Promise.resolve(void 0))}function Ve(){let e=++ue,t=performance.now(),n={id:e,promise:Promise.resolve().then(async()=>{try{let n,r,i;if(g){let e=NS(await He(TS.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=`${yS}${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=pS.parse(JSON.parse(t.text));let i=b??ee;r=i&&jS(n,i)?i:void 0}if(d.signal.aborted||S.status===`rejected`)return{kind:`disposed`,id:e};let a=Ie(n,r,`read`,i,e);return ee=void 0,!a&&S.status===`needed`&&e>S.afterRead&&(S={...S,automatic:!1}),k(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),k()})};ce=n,k()}async function He(e,t){return AS(await u.callServerTool({name:e,arguments:t},{signal:d.signal}))}function Ue(e,t,n){let r=Fx.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 We(e){if(!y||ce||!D(e))return;let t={input:e,basis:y,phase:`confirming`};w=t;let n=await Be(!1);w===t&&(w=void 0,n?.kind===`accepted`&&y===n.snapshot&&S.status===`confirmed`&&!d.signal.aborted&&document.visibilityState!==`hidden`&&Ue(e,t.basis,n.snapshot)&&D(e)?await Ke(e):S.status!==`read_failed`&&S.status!==`rejected`&&!d.signal.aborted&&(se=`The card state changed. Check the current selection before trying again.`),k())}async function Ge(e){f&&(C?.disposition===`active`||C?.retryRequired||T===`paused`)?await We(e):await Ke(e)}function A(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`},Se(),[`cancel`,`disconnect`,`stop_connection`,`stop_waiting`].includes(String(e.input.action))&&(T=`paused`),(m||n===`unknown`)&&ze()}async function Ke(e,t=`user`){if(!y||!g||(t===`file`?!Me(e):m?!D(e):!je()))return;let n={input:e,basis:y,phase:`sending`};w=n,T=`continue`,(t===`user`||C?.disposition!==`past`)&&(C=void 0),se=void 0,k();try{let t=NS(await He(m?TS.act:TS.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&&A(n,t.error,`rejected`),Ie(t.snapshot,t.display,`action`,t.wallet)}catch(e){!d.signal.aborted&&S.status!==`rejected`&&(A(n,e instanceof Error?e.message:`The request could not be confirmed.`,`unknown`),C&&(C.data=$(e)?.data))}finally{w===n&&(w=void 0),k()}}let qe={uploadChunkLimit(e,t){return g?lS({jsonrpc:`2.0`,id:2**53-1,method:`tools/call`,params:{name:TS.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 Be(!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?!Me(e):!D(e))throw Error(`This Settings action is unavailable until its current status has been checked.`);if(await Ke(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,k()},async readFile(e){if(!g||!_||!Oe().current||d.signal.aborted)throw Error(`Backup read permission is unavailable.`);let t=await He(TS.readSettingsFile,{...g,...e}),n=wS.parse($(t._meta)?.[vS]);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||!Oe().current||d.signal.aborted||document.visibilityState===`hidden`||!r||r.currentAttemptId!==n||r.localSave||r.availability!==`available`||Ee===void 0||Date.now()>=Ee)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 Je(){if(te&&re!==void 0&&!ne){ne=!0;try{let t=AS(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?.[hS];if(r!==void 0){let e=xS.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=NS(t);if(i.inputRequired){if(i.inputRequired.kind!==e||g)throw Error(`The app provided inconsistent card input information.`);ie=i.inputRequired.message,k();return}let a=MS(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&&Ie(s,i.display,`preview`,i.wallet),ze(),k()}catch(e){if(d.signal.aborted)return;ae=e instanceof Error?e.message:`Card data could not be read.`,k()}}}u.ontoolresult=e=>{if(re===void 0)re=e,Je();else try{let t=NS(AS(re)).snapshot??y,n=NS(AS(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.`},k()}},u.onhostcontextchanged=e=>{e.theme&&(document.documentElement.dataset.theme=e.theme)};let Ye=()=>{document.visibilityState!==`hidden`&&g&&ne&&S.status!==`read_failed`&&y?.state!==`closed`?Be(!1):k()};document.addEventListener?.(`visibilitychange`,Ye),u.onteardown=async()=>{if(d.signal.aborted)return{};d.abort(),w=void 0,document.removeEventListener?.(`visibilitychange`,Ye);let e=ge?.dispose;return ge=void 0,Pe(e),k(),{}},u.connect().then(()=>{d.signal.aborted||(te=!0,document.documentElement.dataset.theme=u.getHostContext()?.theme??`light`,Je())}).catch(()=>{d.signal.aborted||(ae=`Could not connect this card to the app.`,k())})}function FS(e){return typeof e==`object`&&e?e:void 0}function IS(e){return typeof e==`string`&&e.length>0?e:void 0}function LS(e){let t=FS(e);if(!t)return null;let n=FS(t.display),r=FS(t.unit),i=IS(t.coinType),a=IS(n?.symbol)??IS(r?.symbol)??(i===void 0?void 0:$h(i))??`(unknown coin)`,o=typeof r?.decimals==`number`?r.decimals:void 0,s=IS(n?.amount),c=IS(t.balance),l;return l=s!==void 0&&o!==void 0?s:c===void 0?`Amount unavailable`:(o===void 0?void 0:RS(c,o))??`Amount unavailable`,{symbol:a,total:l}}function RS(e,t){try{return Zh(e,t)}catch{return}}var zS={account:{name:`Name`,address:`Account address`,balances:`Balances`,noBalances:`No token balances were returned.`,nfts:`NFTs`,noNfts:`No NFTs in the scanned objects.`,noImage:`No image`,objectsTruncated:`Some objects beyond the scanned range are omitted.`},receipt:{success:`Transaction succeeded on Sui`,failure:`Transaction failed on Sui`,sender:`Sender`,account:`Affected account`,object:`Object`,noBalanceChanges:`No balance changes were recorded.`,gasComputation:`Computation cost`,gasStorage:`Storage cost`,gasRebate:`Storage rebate`,gasBudget:`Network fee limit (gas budget)`,netFeeExplanation:`The network fee shown above includes the storage rebate. If it is negative, the rebate exceeds the computation and storage charges.`,estimatedNetFeeExplanation:`The estimated network fee shown above includes the storage rebate. If it is negative, the rebate exceeds the estimated computation and storage charges.`,gasLimitExplanation:`The gas budget limits network fee spending. It is not an estimate of the amount charged.`,gasPrice:`Gas price`,gasPayment:`Gas payment object`,graph:`Transaction graph`,graphTip:`A diagram of this transaction's programmable transaction block (PTB), derived from public on-chain data. It is a diagnostic view only, not transaction input, signing, or a safety verdict.`,graphReviewTip:`A diagram of the transaction prepared for this review and simulation. It shows what is being reviewed, not an actual result, permission to sign, or a guarantee of safety.`,graphRendering:`Rendering the transaction graph…`,graphFailed:`The transaction graph could not be rendered`,graphZoomIn:`Zoom in`,graphZoomOut:`Zoom out`,graphCenter:`Center`,graphShowAddresses:`Show full addresses`,graphShowNames:`Show readable labels`,moveCalls:`Move calls`,noMoveCalls:`No Move calls were recorded.`,inputs:`Inputs`,noInputs:`No inputs were recorded.`,inputKinds:{object:`Owned object`,shared_object:`Shared object`,receiving:`Receiving object`,pure:`Pure value`,withdrawal:`Balance withdrawal`,unknown:`Input`},bytes:`bytes`,events:`Events`,noEvents:`No events were recorded.`,objectChanges:`Object changes`,noObjectChanges:`No object changes were recorded.`},chart:{boundaryUsdc:`Prices are in USDC, not USD; dollar parity is not guaranteed.`,boundaryScope:`Historical prices, not live quotes.`,source:`Source: DeepBookV3 Indexer.`,renderedWith:`Rendered with`,library:`TradingView Lightweight Charts`},common:{walletStatusRecovery:`Ask in chat to open Settings, then use Troubleshooting to restart the connection service. This does not confirm removal of a connection in your wallet app.`,mainnet:`Sui mainnet`,retrievedAt:`Data retrieved`}},BS={en:zS};function VS(){try{return(navigator.language||`en`).slice(0,2).toLowerCase()}catch{return`en`}}function HS(e=VS()){return BS[e]??zS}var US=HS(),WS={title:`Account assets`,guidance:(e,t)=>t.recoveryNeeded?`Ask in chat to view the assets for this account.`:void 0,controls:()=>Y(`p`,`ui-note`,`Please provide a Sui address in chat.`),result(e){let t=FS(e.data);if(!t||t.status!==`ok`||!Array.isArray(t.balances)||typeof t.account!=`string`||!Array.isArray(t.nfts)||!Array.isArray(t.objectGroups)||typeof t.objectsTruncated!=`boolean`||typeof t.fetchedAt!=`string`)throw Error(`Account data is incomplete.`);let n=Y(`div`);n.append(GS(t.account,t),KS(t)),n.append(ig(`NFTs`,String(t.nfts.length)));let r=ag(`Details`);return t.nfts.length&&r.body.append(qS(t)),r.body.append(ig(US.common.retrievedAt,lg(t.fetchedAt))),n.append(r.details,YS(t)),{node:n}}};function GS(e,t){let n=rg(),r=typeof t.name==`string`&&t.name.length>0?t.name:void 0;return r&&n.append(ig(US.account.name,r)),n.append(ig(US.account.address,cg(e))),n}function KS(e){let t=rg(US.account.balances),n=Array.isArray(e.balances)?e.balances:[];if(n.length===0)return t.append(Y(`p`,`ui-note`,US.account.noBalances)),t;for(let e of n){let n=LS(e);n&&t.append(XS(n))}return t}function qS(e){let t=rg(US.account.nfts),n=Array.isArray(e.nfts)?e.nfts:[],r=Y(`div`,`account-nfts`);for(let e of n){let t=FS(e);t&&r.append(JS(t))}return t.append(r),t}function JS(e){let t=typeof e.type==`string`?e.type:``,n=typeof e.name==`string`&&e.name.length>0?e.name:eg(t),r=typeof e.imageUrl==`string`&&e.imageUrl.length>0?ZS(e.imageUrl):void 0,i=Y(`div`,`account-nft`);if(r){let e=document.createElement(`img`);e.className=`account-nft-img`,e.src=r,e.alt=n,e.loading=`lazy`,e.referrerPolicy=`no-referrer`,e.addEventListener(`error`,()=>{e.replaceWith(Y(`div`,`account-nft-img account-nft-noimg`,US.account.noImage))}),i.append(e)}else i.append(Y(`div`,`account-nft-img account-nft-noimg`,US.account.noImage));return i.append(Y(`span`,`account-nft-name`,n)),i}function YS(e){let t=Array.isArray(e.objectGroups)?e.objectGroups:[],n=Y(`div`),r=t.reduce((e,t)=>{let n=FS(t);return e+(typeof n?.count==`number`?n.count:0)},0);return r>0&&n.append(Y(`p`,`ui-note`,`${r} other owned objects are not shown here.`)),e.objectsTruncated===!0&&n.append(og(US.account.objectsTruncated)),n}function XS(e){let t=Y(`div`,`account-asset`);t.append(Y(`span`,`account-asset-symbol`,e.symbol));let n=Y(`span`,`account-asset-total`);return n.append(e.total),t.append(n),t}function ZS(e){let t=e.startsWith(`ipfs://`)?`https://ipfs.io/ipfs/${e.slice(7)}`:e;try{return new URL(t).protocol===`https:`||/^data:image\//i.test(t)?t:``}catch{return``}}PS(`account`,WS);</script></body></html>
|