@zktx.io/sui-mcp 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +18 -18
  2. package/dist/adapters/adapterPromptSurfaces.js +0 -20
  3. package/dist/adapters/deepbook/deepbookQuotePolicy.js +0 -4
  4. package/dist/adapters/deepbook/deepbookReviewEvidence.js +0 -9
  5. package/dist/adapters/deepbook/deepbookTransactionMaterialProducer.js +0 -9
  6. package/dist/adapters/intentPlanFactories.js +0 -6
  7. package/dist/core/action/contractNameRegistry.js +0 -53
  8. package/dist/core/action/forbiddenFields.js +0 -4
  9. package/dist/core/action/ptbVisualizationProducer.js +0 -3
  10. package/dist/core/action/receiptPtbGraph.js +0 -17
  11. package/dist/core/action/reviewTimeSimulationEvidence.js +0 -4
  12. package/dist/core/action/signableAdapterContract.js +0 -5
  13. package/dist/core/action/suiChainReceiptMapping.js +0 -18
  14. package/dist/core/action/suiChainReceiptReader.js +1 -21
  15. package/dist/core/action/suiChainReceiptVerifier.js +0 -10
  16. package/dist/core/action/transactionFunding.js +0 -7
  17. package/dist/core/action/types.js +0 -1
  18. package/dist/core/action/walletReviewContractAssembler.js +0 -2
  19. package/dist/core/activity/localDataService.js +0 -6
  20. package/dist/core/activity/sqliteActivityStore.js +0 -8
  21. package/dist/core/activity/sqliteActivityStoreRows.js +0 -2
  22. package/dist/core/activity/sqliteActivityStoreSchema.js +0 -4
  23. package/dist/core/read/deepbookReadHelpers.js +0 -2
  24. package/dist/core/read/deepbookRegistry.js +0 -19
  25. package/dist/core/read/deepbookUsdcChartService.js +0 -2
  26. package/dist/core/read/readCardResult.js +0 -2
  27. package/dist/core/read/readService.js +0 -19
  28. package/dist/core/read/readServiceTypes.js +0 -2
  29. package/dist/core/session/cardSession.js +0 -4
  30. package/dist/core/session/cardSessionStore.js +1 -4
  31. package/dist/core/session/reviewValidity.js +0 -3
  32. package/dist/core/session/sessionRecordStore.js +0 -1
  33. package/dist/core/session/sessionStore.js +0 -15
  34. package/dist/core/session/settingsFileIdentity.js +0 -2
  35. package/dist/core/session/settingsFileProtocol.js +0 -5
  36. package/dist/core/session/settingsFileStore.js +1 -10
  37. package/dist/core/session/settingsInputError.js +0 -2
  38. package/dist/core/session/settingsOperation.js +0 -4
  39. package/dist/core/session/settingsPreparationSql.js +0 -2
  40. package/dist/core/session/settingsWorkflow.js +1 -37
  41. package/dist/core/session/sqliteCardStore.js +0 -2
  42. package/dist/core/session/sqliteSessionStore.js +0 -11
  43. package/dist/core/session/sqliteSettingsWorkflowStore.js +0 -10
  44. package/dist/core/session/sqliteTransactionMaterialStore.js +0 -11
  45. package/dist/core/session/sqliteWalletWorkflowStore.js +0 -29
  46. package/dist/core/session/status.js +0 -2
  47. package/dist/core/session/transactionMaterialStore.js +0 -4
  48. package/dist/core/session/transactionRequest.js +0 -4
  49. package/dist/core/session/walletConnection.js +0 -3
  50. package/dist/core/session/walletWorkflow.js +3 -21
  51. package/dist/core/session/workflowState.js +0 -8
  52. package/dist/core/session/workflowView.js +0 -6
  53. package/dist/core/suiAddress.js +0 -5
  54. package/dist/core/suiEndpoint.js +0 -3
  55. package/dist/mcp/prompts.js +0 -12
  56. package/dist/mcp/schemas.js +0 -3
  57. package/dist/mcp/tools/action/prepareSuiActionReview.js +0 -6
  58. package/dist/mcp/tools/read/serverStatusTools.js +0 -1
  59. package/dist/mcp/tools/session/shared.js +0 -2
  60. package/dist/mcp/tools/session/statusTools.js +0 -2
  61. package/dist/mcp-app/account.html +1 -1
  62. package/dist/mcp-app/chart.html +6 -6
  63. package/dist/mcp-app/connect.html +6 -6
  64. package/dist/mcp-app/receipt.html +298 -298
  65. package/dist/mcp-app/review.html +237 -237
  66. package/dist/mcp-app/settings.html +1 -1
  67. package/dist/mcp-ui/tools.js +3 -4
  68. package/dist/review-server/server.js +0 -2
  69. package/dist/runtime/application.js +1 -1
  70. package/dist/runtime/config.js +0 -2
  71. package/dist/runtime/localSettingsService.js +0 -3
  72. package/dist/runtime/logger.js +0 -2
  73. package/dist/runtime/reviewServerAcquire.js +1 -18
  74. package/dist/runtime/runtimeTermination.js +1 -4
  75. package/dist/runtime/shared/authenticatedFetch.js +0 -6
  76. package/dist/runtime/shared/control.js +0 -2
  77. package/dist/runtime/shared/dataAccess.js +0 -2
  78. package/dist/runtime/shared/mcpHttp.js +0 -5
  79. package/dist/runtime/shared/ownerLease.js +0 -4
  80. package/dist/runtime/shared/server.js +0 -1
  81. package/dist/runtime/shared/stdio.js +2 -5
  82. package/dist/runtime/smokeMainnetRead.js +0 -2
  83. package/dist/runtime/smokeReview.js +0 -4
  84. package/dist/runtime/start.js +0 -2
  85. package/dist/runtime/suiTransactionGraphqlMapping.js +0 -2
  86. package/dist/runtime/suiTransactionGraphqlQueries.js +0 -3
  87. package/dist/runtime/walletConnectConfig.js +0 -2
  88. package/dist/runtime/walletConnectStorage.js +0 -6
  89. package/dist/runtime/walletConnectTransport.js +0 -11
  90. package/dist/runtime/walletSdkChildRuntime.js +0 -5
  91. package/dist/runtime/walletSdkProcess.js +0 -6
  92. package/docs/AGENT_BEHAVIOR.md +1 -5
  93. package/docs/LOCAL_DB_ARCHITECTURE.md +3 -3
  94. package/docs/MCP_SETUP.md +14 -14
  95. package/docs/MCP_TOOLS.md +15 -0
  96. package/docs/SDK_API.md +12 -0
  97. package/docs/WALLET_CONNECTION.md +2 -1
  98. package/package.json +10 -2
  99. package/docs/AGENT_DEVELOPMENT_POLICY.md +0 -819
  100. package/docs/FRONTEND_POLICY.md +0 -611
  101. package/docs/golden-scenarios/BEHAVIOR_MATRIX.md +0 -166
  102. package/docs/golden-scenarios/INTENT_EVIDENCE_GOLDEN_ANSWERS.md +0 -161
  103. package/docs/golden-scenarios/INTENT_EVIDENCE_MATRIX.md +0 -259
@@ -3130,4 +3130,4 @@ zebra
3130
3130
  zero
3131
3131
  zone
3132
3132
  zoo`.split(`
3133
- `)),sx={0:`ED25519`,1:`Secp256k1`,2:`Secp256r1`,3:`MultiSig`,5:`ZkLogin`,6:`Passkey`};function cx(e){let{prefix:t,words:n}=Ry.decode(e);if(t!==`suiprivkey`)throw Error(`invalid private key prefix`);let r=new Uint8Array(Ry.fromWords(n)),i=r.slice(1);return{scheme:sx[r[0]],secretKey:i}}var lx=`external-proposal-alpha-2026-05-25`,ux=`proposal-review-model-alpha-2026-05-25`;yh();var dx=M().refine(e=>{let t=new Date(e);return!Number.isNaN(t.getTime())&&t.toISOString()===e},`Expected ISO 8601 UTC timestamp`),fx=/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,px=/(?:0x[0-9a-fA-F]{160,}|[A-Za-z0-9+/_=-]{160,})/,mx=/suiprivkey1[023456789acdefghjklmnpqrstuvwxyz]+/gi,hx=/(^|[^0-9a-fA-F])(?:0x)?[0-9a-fA-F]{64}($|[^0-9a-fA-F])/,gx=/(^|[^A-Za-z0-9+/_=-])(?:[A-Za-z0-9+/]{43}=|[A-Za-z0-9+/]{44}|[A-Za-z0-9_-]{43,44})($|[^A-Za-z0-9+/_=-])/,_x=/^(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$/,vx=[12,15,18,21,24];function yx(e,t,n={}){return M().min(1).max(e).superRefine((e,r)=>{(fx.test(e)||px.test(e)||xx(e)||Sx(e)||!n.allowRawSecretLikeText&&Cx(e))&&r.addIssue({code:`custom`,message:`${t} must not contain executable, signing, private-key, mnemonic, route-selected, or encoded secret-like material`})})}function bx(e,t){return yx(e,t,{allowRawSecretLikeText:!0})}function xx(e){return(e.match(mx)??[]).some(e=>{try{return cx(e.toLowerCase()),!0}catch{return e.toLowerCase().startsWith(`suiprivkey1`)}})}function Sx(e){let t=e.normalize(`NFKD`).toLowerCase().replace(/[^a-z]+/g,` `).trim().split(/\s+/).filter(Boolean);for(let e of vx)if(!(t.length<e)){for(let n=0;n<=t.length-e;n+=1)if(ax(t.slice(n,n+e).join(` `),ox))return!0}return!1}function Cx(e){return hx.test(e)||gx.test(e)}var wx=yx(80,`amountDisplay`).refine(e=>_x.test(e)&&/[1-9]/.test(e),{message:`Expected a positive decimal display amount`}),Tx=L({kind:B([`mcp_server`,`ai_client`,`user`,`other`]),name:yx(120,`source.name`),reference:yx(256,`source.reference`).optional()}).strict(),Ex=L({address:Y.optional(),label:yx(120,`party.label`).optional()}).strict().refine(e=>e.address!==void 0||e.label!==void 0,{message:`Expected address or label`}),Dx=L({amountDisplay:wx,amountKind:V(`display_proposal`).default(`display_proposal`),symbol:yx(64,`amount.symbol`).optional(),coinType:bx(512,`amount.coinType`).optional(),denomination:yx(64,`amount.denomination`).optional()}).strict(),Ox=L({packageId:bx(128,`action.target.packageId`).optional(),module:yx(128,`action.target.module`).optional(),function:yx(128,`action.target.function`).optional(),objectId:bx(128,`action.target.objectId`).optional(),label:yx(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`}),kx=L({direction:B([`outgoing`,`expected_incoming`,`fee`]),amount:Dx,recipient:Ex.optional(),description:yx(512,`assetFlow.description`).optional()}).strict(),Ax=L({id:yx(120,`proposal.id`),source:Tx,network:V(`sui:mainnet`),createdAt:dx,expiresAt:dx.optional(),purpose:yx(512,`purpose`),assumptions:I(yx(512,`assumptions[]`)).max(20).optional(),requiredUserChoices:I(yx(512,`requiredUserChoices[]`)).max(20).optional()}).strict(),jx=ep(`type`,[Ax.extend({type:V(`payment`),payment:L({amount:Dx,recipient:Ex,target:yx(512,`payment.target`).optional()}).strict()}).strict(),Ax.extend({type:V(`sui_action`),action:L({actionKind:yx(120,`action.actionKind`),target:Ox,recipient:Ex.optional(),assetFlow:I(kx).max(20).optional()}).strict()}).strict()]),Mx=L({id:M(),label:M(),status:B([`pass`,`warning`,`fail`]),message:M(),source:B([`proposal`,`adapter`,`registry`,`quote`,`wallet`,`simulation`,`network`])}).strict(),Nx=L({id:M(),label:M(),reason:M()}).strict(),Px=L({modelVersion:V(ux),contractVersion:V(lx),proposalId:M(),proposalType:B([`payment`,`sui_action`]),proposalSource:Tx,proposedAction:L({kind:B([`payment`,`sui_action`]),title:M(),purpose:M(),network:V(`sui:mainnet`),recipient:Ex.optional(),target:R([M(),Ox]).optional()}).strict(),assetFlow:L({outgoing:I(Dx),expectedIncoming:I(Dx),fees:I(Dx)}).strict(),recipients:I(Ex),targets:I(R([M(),Ox])),evidenceUsed:I(L({id:M(),label:M(),source:B([`external_proposal`,`local_schema`]),summary:M()}).strict()),missingEvidence:I(Nx),requiredUserChoices:I(Nx),unsupportedClaims:I(L({id:M(),label:M(),reason:M()}).strict()),rejectedExecutableFields:I(L({fieldName:M(),reason:M()}).strict()),freshness:L({proposalCreatedAt:dx,proposalExpiresAt:dx.optional(),evaluatedAt:dx,status:B([`current`,`expired`,`created_in_future`,`expiry_not_provided`]),reason:M()}).strict(),blockingChecks:I(Mx),nonSignableReason:L({code:V(`external_proposal_review_only`),message:M(),blockedCapabilities:I(M())}).strict()}).strict();L({requestedIntent:jx,implementationStatus:V(`read_only_review_only`),contractVersion:V(lx)}).strict();var Fx=[`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`],Ix=[`review_evidence_stale`,`quote_stale`,`quote_unavailable`,`simulation_transient_failure`,`review_update_failed`,`wallet_connection_changed`],Lx=[`proposed`,`awaiting_wallet`,`wallet_connected`,`ready_for_wallet_review`,`refresh_required`,`blocked`,`expired`],Rx=[`humanReadableReview`,`simulation`,`transactionReviewData`,`ptbVisualization`,`assetFlowActual`,`beforeAfterBalance`];yh();var zx=B([`client.core.simulateTransaction`,`client.transactionExecutionService.simulateTransaction`]),Bx=`ptb-visualization-contract-alpha-2026-05-25`,Vx=[`proposedAction`,`assetFlow`,`recipients`,`targets`,`evidenceUsed`,`missingEvidence`,`requiredUserChoices`,`unsupportedClaims`,`freshness`,`blockingChecks`],Hx=[`effects`,`balanceChanges`,`objectTypes`,`transaction`],Ux=[`transaction_bytes`,`serialized_transaction`,`wallet_signature_request`,`private_key_material`,`wallet_authorization`,`signing_data`,`signing_readiness`,`payment_execution_readiness`],Wx=[`transaction_building_input`,`wallet_authorization`,`signing_data`,`signing_readiness`,`payment_execution_readiness`,`route_recommendation`],Gx=mb,Kx=`MIST`,qx=[`checkedAt`,`expiresAt`],Jx=[`checkedAt`,`expiryStatus`],Yx=[`rawAmount`,`asset`,`amountRole`],Xx=[`minOutRaw`,`asset`,`amountRole`],Zx=[`gasBudgetRaw`,`asset`,`amountRole`],Qx=[`gasUsedRaw`,`asset`,`amountRole`],$x=[`checkedAt`,`gasResolutionStatus`,`unresolvedReason`],eS=[`balanceChanges`,`asset`,`amountRole`],tS=[`coinType`,`decimals`],nS=[`quoteEvidenceId`,`minOutRaw`],rS=[`maxSlippageBps`,`userSelection`],iS=[`maxSlippageBps`,`minOutRaw`],aS=[`ownerAccount`,`objects`],oS=[`pinned_sdk_registry`,`verified_mainnet_onchain_metadata`,`wallet_account_read`,`quote_evidence`,`review_time_simulation`,`validated_request_fact`,`user_explicit_choice`],sS=[`input`,`expected_output`,`minimum_output`,`gas_budget`,`gas_used`,`fee`,`balance_delta`],cS={input:{kinds:[`validated_request_fact`,`wallet_account_read`,`user_explicit_choice`],fields:Yx},expected_output:{kinds:[`quote_evidence`,`review_time_simulation`],fields:Yx},minimum_output:{kinds:[`quote_evidence`],fields:Xx},gas_budget:{kinds:[`review_time_simulation`],fields:Zx},gas_used:{kinds:[`review_time_simulation`],fields:Qx},fee:{kinds:[`review_time_simulation`],fields:Yx},balance_delta:{kinds:[`review_time_simulation`],fields:eS}},lS={pinned_sdk_metadata:{kinds:[`pinned_sdk_registry`],fields:tS},verified_mainnet_onchain_metadata:{kinds:[`verified_mainnet_onchain_metadata`],fields:tS}},uS={user_explicit:{kinds:[`user_explicit_choice`],fields:rS},adapter_policy_from_quote_evidence:{kinds:[`quote_evidence`],fields:iS}},dS={kinds:[`review_time_simulation`],fields:$x},fS={kinds:[`quote_evidence`],fields:nS},pS={kinds:[`validated_request_fact`],fields:qx},mS={kinds:[`validated_request_fact`],fields:Jx},hS={raw_quantity_amount:{byRole:cS},unit_metadata:{bySource:lS},gas_unresolved_status:dS,expiry_status:{current:pS,expired:pS,not_provided:mS,not_applicable:mS},quote_min_out:fS,slippage_policy:{bySource:uS},object_ownership:{kinds:[`wallet_account_read`],fields:aS},simulation_result:{kinds:[`review_time_simulation`],fields:Hx}},gS={gasBudgetClaimId:{factKind:`raw_quantity_amount`,role:`gas_budget`,assetCoinType:Gx,rawUnit:Kx},gasUsedClaimId:{factKind:`raw_quantity_amount`,role:`gas_used`,assetCoinType:Gx,rawUnit:Kx},gasObjectOwnershipClaimId:{factKind:`object_ownership`,ownership:`owned_by_account`}},_S=M().refine(e=>{let t=new Date(e);return!Number.isNaN(t.getTime())&&t.toISOString()===e},`Expected ISO 8601 UTC timestamp`),vS=Sb(`unsigned integer`),yS=M().regex(/^0x[0-9a-fA-F]{1,64}$/,{message:`Expected a Sui object id`}),bS=M().min(1).max(512).refine(e=>{try{return Tb(e)===e}catch{return!1}},`Expected a normalized Sui struct tag coin type`),X=M().min(1).max(120),xS=L({symbol:M().min(1).max(64).optional(),coinType:bS}).strict(),SS=/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,CS=/(?:0x[0-9a-fA-F]{160,}|[A-Za-z0-9+/_=-]{160,})/;function wS(e,t){return M().min(1).max(e).superRefine((e,n)=>{(SS.test(e)||CS.test(e))&&n.addIssue({code:`custom`,message:`${t} must not contain executable transaction, signing, private-key, mnemonic, or long encoded material`})})}function TS(e,t){let n=new Set(e);return t.filter(e=>!n.has(e))}function ES(e,t,n,r,i){let a=TS(t,n);a.length!==0&&e.addIssue({code:`custom`,path:r,message:`${i} must include ${a.join(`, `)}`})}function DS(e,t,n,r,i){ES(e,t,n,r,i)}function OS(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&&OS(e,r,i)}function kS(e,t,n,r,i){let a=new Set(t),o=new Set(n);if(a.size!==o.size){OS(e,r,i);return}for(let t of a)if(!o.has(t)){OS(e,r,i);return}}function AS(e,t,n,r,i){(t.symbol!==n.symbol||t.coinType!==n.coinType)&&OS(e,r,i)}function jS(e,t,n,r,i){try{Tb(t.coinType)!==n&&OS(e,r,i)}catch{OS(e,r,i)}}var MS=L({kind:B([`natural_language_intent`,`external_proposal`,`mcp_action_request`,`local_review_request`]),sourceId:M().min(1).max(160),capturedAt:_S,authority:V(`untrusted_until_review_regenerates_and_verifies`),userSelectionSource:B([`user_explicit`,`prior_user_explicit_context`]).optional()}).strict(),NS=L({id:X,kind:B(oS),network:V(`sui:mainnet`),source:M().min(1).max(240),verifiedAt:_S,fields:I(M().min(1).max(120)).min(1)}).strict(),PS=ep(`factKind`,[L({id:X,factKind:V(`raw_quantity_amount`),sourceEvidenceId:X,role:B(sS),asset:xS,rawAmount:vS}).strict(),L({id:X,factKind:V(`unit_metadata`),sourceEvidenceId:X,source:B([`pinned_sdk_metadata`,`verified_mainnet_onchain_metadata`]),coinType:bS,decimals:N().int().min(0).max(255)}).strict(),L({id:X,factKind:V(`gas_unresolved_status`),sourceEvidenceId:X,checkedAt:_S,status:V(`unresolved`),reason:M().min(1).max(240)}).strict(),L({id:X,factKind:V(`expiry_status`),sourceEvidenceId:X,checkedAt:_S,status:B([`current`,`expired`,`not_provided`,`not_applicable`]),expiresAt:_S.optional(),reason:M().min(1).max(240).optional()}).strict(),L({id:X,factKind:V(`quote_min_out`),sourceEvidenceId:X,quoteEvidenceId:M().min(1).max(120),minOutRaw:vS}).strict(),L({id:X,factKind:V(`slippage_policy`),sourceEvidenceId:X,policySource:B([`user_explicit`,`adapter_policy_from_quote_evidence`]),maxSlippageBps:N().int().min(0).max(1e4),minOutRaw:vS.optional()}).strict(),L({id:X,factKind:V(`object_ownership`),sourceEvidenceId:X,objectId:yS,ownerAccount:Y,ownership:B([`owned_by_account`,`shared_object`,`immutable_or_package`,`not_owned_by_account`])}).strict(),L({id:X,factKind:V(`simulation_result`),sourceEvidenceId:X,provider:zx,checksEnabled:V(!0),simulatedAt:_S,status:B([`success`,`failed`,`unavailable`]),requiredFields:I(B(Hx)).min(Hx.length),missingFields:I(B(Hx)).default([]),failureReason:M().min(1).max(240).optional()}).strict()]),FS=L({id:X,role:B(sS),asset:xS,rawAmount:vS,unit:L({decimals:N().int().min(0).max(255),source:B([`pinned_sdk_metadata`,`verified_mainnet_onchain_metadata`]),sourceField:M().min(1).max(160),unitClaimId:X}).strict(),amountClaimId:X,displayOnly:L({amountDisplay:M().min(1).max(120),reason:V(`presentation_only_not_signing_input`)}).strict().optional()}).strict(),IS=L({objectId:yS,ownerAccount:Y,ownershipClaimId:X}).strict(),LS=L({source:V(`review_time_simulation`),checkedAt:_S,gasBudgetRaw:vS.optional(),gasBudgetClaimId:X.optional(),gasUsedRaw:vS.optional(),gasUsedClaimId:X.optional(),gasObjects:I(IS).optional(),unresolvedReason:M().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`})}),RS=ep(`status`,[L({checkedAt:_S,status:V(`current`),expiresAt:_S,evidenceClaimId:X}).strict(),L({checkedAt:_S,status:V(`expired`),expiresAt:_S,evidenceClaimId:X}).strict(),L({checkedAt:_S,status:V(`not_provided`),evidenceClaimId:X,reason:M().min(1).max(240),expiresAt:qf().optional()}).strict(),L({checkedAt:_S,status:V(`not_applicable`),evidenceClaimId:X,reason:M().min(1).max(240),expiresAt:qf().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`})}),zS=L({status:B([`required_and_verified`,`not_required_for_action`,`missing`,`stale`]),quoteEvidenceId:M().min(1).max(120).optional(),quoteEvidenceClaimId:X.optional(),maxSlippageBps:N().int().min(0).max(1e4).optional(),minOutRaw:vS.optional(),policySource:B([`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`})}),BS=L({checkedAt:_S,ownerAccount:Y,objects:I(L({objectId:yS,role:B([`input_coin`,`gas_coin`,`protocol_object`,`shared_object`,`receiving_object`]),ownership:B([`owned_by_account`,`shared_object`,`immutable_or_package`,`not_owned_by_account`]),evidenceClaimId:X}).strict()).min(1)}).strict(),VS=L({evidenceClaimId:X,transactionDigest:hb,provider:zx,checksEnabled:V(!0),simulatedAt:_S,status:B([`success`,`failed`,`unavailable`]),requiredFields:I(B(Hx)).min(Hx.length),missingFields:I(B(Hx)).default([]),failureReason:M().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=>Hx.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`}),HS=L({fields:I(B(Vx)).min(Vx.length),transactionDigest:hb,source:V(`review_model_or_adapter_equivalent`),purpose:V(`human_review_before_wallet_authorization`)}).strict().refine(e=>Vx.every(t=>e.fields.includes(t)),{message:`Human-readable review fields must include every required review field`}),US=L({runtimeStatus:V(`emitted_pre_handoff`),mcpAndReviewUiMayExpose:I(B([`human_readable_review`,`ptb_visualization_artifact`,`diagnostics`,`status_checks`])).min(1),prohibited:I(B(Ux)).min(1)}).strict().superRefine((e,t)=>{DS(t,e.prohibited,Ux,[`prohibited`],`prohibited`)}),WS=L({schemaVersion:V(1),adapterId:M().min(1).max(120),protocol:M().min(1).max(120),actionKind:M().min(1).max(120),network:V(`sui:mainnet`),inputProvenance:MS,sourceReferences:I(NS).min(1),evidenceClaims:I(PS).min(1),rawQuantities:I(FS).min(1),gas:LS,expiry:RS,slippageOrMinOut:zS,objectOwnership:BS,simulation:VS,humanReadableReview:HS,outputBoundary:US,reviewedTransactionDigest:hb}).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(`, `)}`}),ES(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}`});return}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,hS.raw_quantity_amount.byRole[e.role],[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].raw_quantity_amount`),e.factKind===`unit_metadata`&&l(e.sourceEvidenceId,hS.unit_metadata.bySource[e.source],[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].unit_metadata`),e.factKind===`gas_unresolved_status`&&l(e.sourceEvidenceId,hS.gas_unresolved_status,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].gas_unresolved_status`),e.factKind===`expiry_status`&&(l(e.sourceEvidenceId,hS.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,hS.quote_min_out,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].quote_min_out`),e.factKind===`slippage_policy`&&(l(e.sourceEvidenceId,hS.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,hS.object_ownership,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].object_ownership`),e.factKind===`simulation_result`&&(l(e.sourceEvidenceId,hS.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`}),Hx.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`),AS(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,gS.gasBudgetClaimId.role,[`gas`,`gasBudgetClaimId`],`gas.gasBudgetClaimId role`),jS(t,n.asset,gS.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,gS.gasUsedClaimId.role,[`gas`,`gasUsedClaimId`],`gas.gasUsedClaimId role`),jS(t,n.asset,gS.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,gS.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`),kS(t,e.simulation.requiredFields,f.requiredFields,[`simulation`,`requiredFields`],`simulation.requiredFields`),kS(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`)}),GS=L({contractVersion:V(Bx),artifactKind:V(`ptb_visualization`),generatedAt:_S,source:L({adapterId:M().min(1).max(120),planId:M().min(1).max(120).optional(),sourceKind:B([`review_time_generated_transaction_kind`,`review_time_ir`,`renderer_model`]),authority:V(`visualization_only_not_wallet_authorization`),renderer:L({name:M().min(1).max(120),packageName:M().min(1).max(120).optional(),version:M().min(1).max(80).optional()}).strict().optional()}).strict(),mermaid:L({diagramType:V(`flowchart`),text:wS(2e4,`mermaid.text`),namedText:wS(2e4,`mermaid.namedText`)}).strict(),diagnostics:I(L({severity:B([`info`,`warning`,`error`]),code:M().min(1).max(120),message:wS(512,`diagnostics.message`),source:B([`adapter`,`renderer`,`schema`,`simulation`])}).strict()).default([]),unsupportedUse:I(B(Wx)).min(1),executableMaterial:L({included:V(!1),policy:V(`mcp_and_review_ui_outputs_must_not_include_executable_transaction_material`)}).strict()}).strict().superRefine((e,t)=>{DS(t,e.unsupportedUse,Wx,[`unsupportedUse`],`unsupportedUse`)});yh();var KS=z(M(),F()),qS=B(Fx),JS=B(Ix);B([`ready_for_wallet_review`,`refresh_required`,`blocked`]);var YS=B(Lx);B([`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 XS=L({id:M(),label:M(),status:B([`pass`,`warning`,`fail`]),message:M(),source:B([`registry`,`quote`,`wallet`,`simulation`,`adapter`,`network`,`proposal`])}),ZS=M().min(1),QS=`human_readable_review`,$S=`review_time_simulation`,eC=L({stageCatalogId:M().min(1),adapterId:M(),protocol:M(),actionKind:M(),completedStages:I(ZS),missingStages:I(ZS)}).strict().superRefine((e,t)=>{let n=tC(e.completedStages);n&&t.addIssue({code:`custom`,path:[`completedStages`],message:`completedStages contains duplicate stage '${n}'`});let r=tC(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 tC(e){let t=new Set;for(let n of e){if(t.has(n))return n;t.add(n)}}var nC=L({symbol:M(),amount:M(),coinType:M().optional(),approx:P().optional()}).strict(),rC=nC.extend({amountKind:V(`display_intent`).default(`display_intent`)}),iC=L({outgoing:I(rC),expectedIncoming:I(rC),minimumIncoming:I(rC).optional(),fees:I(rC).optional()}),aC=L({outgoing:I(nC),expectedIncoming:I(nC),minimumIncoming:I(nC).optional(),fees:I(nC).optional()}),oC=L({before:I(nC),after:I(nC),delta:I(nC)}),sC=L({computationCostRaw:bb(`computationCostRaw`),storageCostRaw:bb(`storageCostRaw`),storageRebateRaw:bb(`storageRebateRaw`),nonRefundableStorageFeeRaw:bb(`nonRefundableStorageFeeRaw`)}).strict(),cC=L({address:Y,coinType:M().min(1).max(512).refine(e=>{try{return Tb(e)===e}catch{return!1}},`Expected a normalized Sui struct tag coin type`),amount:wb(`balanceChanges[].amount`)}).strict(),lC=L({objectId:Y,objectType:M().min(1).max(512).optional(),inputState:M().min(1).max(80),outputState:M().min(1).max(80),idOperation:M().min(1).max(80)}).strict(),uC=L({provider:zx,checksEnabled:P(),success:P(),gasCostSummary:sC.optional(),balanceChanges:I(cC).optional(),objectChanges:I(lC).optional(),error:M().optional()}),dC=uC,fC=uC.extend({checksEnabled:V(!0),success:V(!0),gasCostSummary:sC,balanceChanges:I(cC),objectChanges:I(lC),error:qf().optional()}).strict(),pC=L({role:B([`input`,`expected_output`,`minimum_output`,`fee`]),symbol:M(),coinType:M().min(1).max(512).refine(e=>{try{return Tb(e),!0}catch{return!1}},`Expected a Sui struct tag coin type`),decimals:N().int().min(0).max(255),rawAmount:bb(`rawAmount`),rawAmountSource:V(`quote_policy_evidence`),displayAmount:M().optional(),displayAmountSource:V(`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`})}),mC=L({role:B([`connected_account`,`output_recipient`]),address:Y}).strict(),hC=L({kind:V(`swap_output_asset`),symbol:M(),coinType:M().min(1).max(512).refine(e=>{try{return Tb(e),!0}catch{return!1}},`Expected a Sui struct tag coin type`),protocol:M(),poolKey:M(),direction:B([`base_to_quote`,`quote_to_base`])}).strict(),gC=L({id:M(),label:M(),source:R([B([`registry`,`quote`,`wallet`,`simulation`,`adapter`,`network`,`proposal`]),B([`transaction_material`,`digest_commitment`])]),summary:M()}).strict(),_C=L({id:M(),label:M(),reason:M()}).strict(),vC=L({proposedAction:L({title:M(),summary:M(),actionKind:M(),adapterId:M(),protocol:M(),network:V(`sui:mainnet`)}).strict(),recipients:I(mC),evidenceUsed:I(gC),missingEvidence:I(_C),requiredUserChoices:I(_C),unsupportedClaims:I(_C),freshness:L({status:V(`current`),evaluatedAt:M(),expiresAt:M(),reason:M()}).strict(),blockingChecks:I(XS)}).strict(),yC=L({assetFlow:L({outgoing:I(pC),expectedIncoming:I(pC),minimumIncoming:I(pC),fees:I(pC)}).strict(),targets:I(hC)}).strict(),bC=ep(`kind`,[vC.extend({kind:V(`swap_human_readable_review`)}).merge(yC)]),xC=L({id:M(),actionKind:M(),adapterId:M(),protocol:M(),title:M(),summary:M(),assetFlowPreview:iC,reviewModel:Px.optional(),adapterData:KS,createdAt:M(),expiresAt:M().optional(),registryVersion:M().optional(),preliminaryChecks:I(XS).optional()}),SC=L({planId:M(),reviewSessionId:M(),account:Y,checks:I(XS),assetFlowActual:aC.optional(),beforeAfterBalance:oC.optional(),simulation:dC.optional(),humanReadableReview:bC.optional(),transactionReviewData:WS.optional(),ptbVisualization:GS.optional(),adapterLifecycle:eC.optional(),updatedAt:M()}),CC=ep(`status`,[SC.extend({status:V(`ready_for_wallet_review`),evidenceValidity:qf().optional(),blockedReason:qf().optional(),refreshReason:qf().optional()}),SC.extend({status:V(`refresh_required`),evidenceValidity:V(`invalidated`).optional(),refreshReason:JS,blockedReason:qf().optional()}),SC.extend({status:V(`blocked`),evidenceValidity:V(`invalidated`).optional(),blockedReason:qS,refreshReason:qf().optional()})]).superRefine((e,t)=>{if(e.evidenceValidity===`invalidated`)for(let n of Rx)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&&wC(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 wC(e,t){let n=e.adapterLifecycle;n&&(e.humanReadableReview!==void 0&&TC(t,n,QS,[`humanReadableReview`]),e.simulation!==void 0&&(TC(t,n,$S,[`simulation`]),TC(t,n,QS,[`simulation`]),EC(t,e.simulation,[`simulation`])),n.missingStages.includes($S)&&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(QS)&&e.humanReadableReview!==void 0&&t.addIssue({code:`custom`,path:[`humanReadableReview`],message:`humanReadableReview public evidence cannot be present while human_readable_review is missing`}))}function TC(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 EC(e,t,n){fC.safeParse(t).success||e.addIssue({code:`custom`,path:n,message:`simulation public evidence requires a successful checks-enabled review-time simulation projection`})}yh();var DC=L({topic:M().min(1),accounts:I(Y).min(1),methods:I(M()),chain:V(Lb),expiresAt:M().datetime(),walletName:M().optional()}).strict(),OC=ep(`status`,[L({topic:M().min(1),version:N().int().positive(),status:V(`present`),session:DC}).strict(),L({topic:M().min(1),version:N().int().positive(),status:B([`absent`,`unusable`])}).strict()]),kC=L({runId:Rb,sequence:N().int().positive(),observedAt:M().datetime()}).strict();kC.extend({sessions:I(OC)}).strict();var AC=L({kind:V(`wallet_service_recovery`),priorRunId:Rb,admittedAt:M().datetime(),updatedAt:M().datetime()}),jC=R([AC.extend({phase:V(`stopping`)}).strict(),AC.extend({phase:V(`starting`),nextRunId:Rb}).strict(),AC.extend({outcome:B([`available`,`failed`,`superseded`,`server_restarted`]),nextRunId:Rb.optional(),message:M().optional()}).strict()]);yh();var MC=`A wallet connection provides account context; it is not a transaction approval or proof of address ownership.`,NC=`Review evidence is not a safety guarantee. Only an explicit card action and wallet approval may authorize this exact transaction.`,PC=Wb.extend({pendingAction:V(`disconnect`).optional()});B([`input_required`,`awaiting_approval`,`disconnect_pending`]);var FC=L({action:V(`connect`),walletRunId:Rb}).strict(),IC=L({action:V(`disconnect`),walletRunId:Rb,connectionId:M().min(1)}).strict(),LC=L({action:V(`use_account`),walletRunId:Rb,connectionId:M().min(1),account:Y}).strict(),RC=L({action:B([`prepare_review`,`request_signature`]),connectionId:M().min(1),walletRunId:Rb,account:Y,reviewRevision:N().int().nonnegative()}).strict(),zC=R([FC,IC,LC,RC,L({action:B([`cancel`,`stop_connection`,`stop_waiting`,`read_result`])}).strict()]),BC=R([FC,RC.extend({action:V(`prepare_review`)})]),VC=L({kind:B([`connect`,`review`]),mode:B([`connect`,`review`,`review_manage`]),allowedActions:I(B(qb)),actionRemainingMs:N().int().nonnegative(),nextStateReadAfterMs:N().int().nonnegative().optional(),automaticAction:BC.optional(),observe:P(),walletAvailability:Vb,walletObservation:kC.optional(),runtimeRecovery:jC.optional(),connectionConflict:Gb.optional(),manageableConnectionIds:I(M().min(1)),connectionReconciliationRequired:V(!0).optional(),usableConnectionId:M().min(1).optional(),assetReadAccount:Kb.optional(),acceptedWalletRunId:Rb.optional(),progress:Hb,boundary:B([MC,NC]),connections:I(PC),activeAccount:M().optional(),connection:PC.optional(),connectionAction:B([`connect`,`disconnect`]).optional(),review:L({reviewSessionId:M(),plan:xC,reviewRevision:N().int().nonnegative(),status:YS,account:M().optional(),preparing:P(),accountRequestPending:V(!0).optional(),error:M().optional(),state:CC.optional()}).strict().optional(),request:Ib.optional(),receipt:F().optional(),netGasMist:M().regex(/^-?[0-9]+$/).optional(),observationStopped:P().optional()}).strict().superRefine((e,t)=>{let n=e.connections.find(t=>t.connectionId===e.usableConnectionId);e.usableConnectionId&&(!n||n.status!==`connected`||e.walletAvailability.status!==`available`||e.connectionConflict||e.connectionReconciliationRequired||e.connections.some(e=>e.pendingAction||e.status===`awaiting_approval`))&&t.addIssue({code:`custom`,path:[`usableConnectionId`],message:`The usable connection must match current connection facts.`}),(new Set(e.manageableConnectionIds).size!==e.manageableConnectionIds.length||e.manageableConnectionIds.some(t=>!e.connections.some(e=>e.connectionId===t&&!e.pendingAction&&e.status!==`awaiting_approval`)))&&t.addIssue({code:`custom`,path:[`manageableConnectionIds`],message:`Management must name distinct recorded targets without pending operations.`}),e.connectionReconciliationRequired&&(e.usableConnectionId||e.assetReadAccount?.status===`available`||e.allowedActions.some(e=>[`connect`,`use_account`,`prepare_review`,`request_signature`].includes(e)))&&t.addIssue({code:`custom`,path:[`connectionReconciliationRequired`],message:`Unrecorded SDK connections cannot authorize connection or account use.`}),e.assetReadAccount?.status===`available`&&(!n||!n.accounts.includes(e.assetReadAccount.account)||e.activeAccount!==e.assetReadAccount.account)&&t.addIssue({code:`custom`,path:[`assetReadAccount`],message:`The default address must belong to the usable connection and stored selection.`})});function HC(e,t,n=!1){return e.connections.filter(r=>r.connectionId===e.usableConnectionId&&r.accounts.includes(t)&&(!n||r.methods.includes(`sui_signTransaction`)))}var UC=`sui-mcp.local-data`;yh();var WC=16*1024*1024,Q=M().uuid(),GC=N().int().nonnegative().safe(),KC=M().regex(/^[a-f0-9]{64}$/),qC=ep(`status`,[L({status:V(`no_file`)}).strict(),L({status:V(`receiving`)}).strict(),L({status:V(`checking`)}).strict(),L({status:V(`check_required`),message:M().min(1)}).strict(),L({status:V(`can_restore`)}).strict(),L({status:V(`cannot_restore`),reason:B([`invalid_backup`,`file_unavailable`,`wallet_request_unsettled`,`operation_busy`,`input_unavailable`,`check_failed`]),message:M().min(1)}).strict()]);L({fileId:Q,sha256:KC,totalSize:GC,dataEpoch:GC,userDataRevision:GC,check:qC}).strict();var JC=ep(`kind`,[L({kind:V(`set_endpoint`),endpoint:B([`grpc`,`graphql`]),value:M().min(1)}).strict(),L({kind:V(`restore_endpoint`),endpoint:B([`grpc`,`graphql`])}).strict(),L({kind:B([`clear_read_address`,`export_local_data`,`download_backup`,`import_local_data`,`reset_local_data`,`restart_wallet_service`])}).strict()]),YC=B([`acknowledged`,`not_completed`,`unconfirmed`,`unsupported`]),XC=L({method:V(`ui/download-file`),code:V(-32601)}).strict(),ZC=B([`acknowledged`,`cancelled`,`expired`,`server_restarted`,`data_replaced`,`source_unavailable`,`stored_locally`,`local_save_failed`]),QC=L({device:M().regex(/^\d+$/),inode:M().regex(/^\d+$/)}).strict(),$C=B([`not_published`,`target_conflict`,`source_unavailable`,`interrupted`]),ew=L({status:B([`needs_consent`,`saving`,`saved`,`failed`]),attemptId:Q,fileId:Q,sha256:KC,totalSize:GC,destination:M(),ownerId:M().min(1),currentSaveAttemptId:Q.optional(),attempts:I(L({saveAttemptId:Q,previousSaveAttemptId:Q.optional(),admittedAt:M().datetime(),allowPossibleCopy:P()}).strict()),sourceIdentity:QC.optional(),savedAt:M().datetime().optional(),failure:$C.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.`})});L({currentAttemptId:Q,attempts:I(L({attemptId:Q,admittedAt:M().datetime(),previousAttemptId:Q.optional(),hostReport:YC.optional(),failure:XC.optional()}).strict()).min(1),readyAt:M().datetime().optional(),expiresAt:M().datetime().optional(),endReason:ZC.optional(),localSave:ew.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 tw=B([`settings_retry_download`,`settings_report_download`,`settings_cancel_download`,`settings_store_backup`]),nw=ep(`action`,[L({action:V(`settings_download_backup`),operationId:Q,attemptId:Q}).strict(),L({action:V(`settings_retry_download`),operationId:Q,fileId:Q,previousAttemptId:Q,attemptId:Q}).strict(),L({action:V(`settings_report_download`),operationId:Q,fileId:Q,attemptId:Q,status:YC,failure:XC.optional()}).strict().refine(e=>e.status===`unsupported`==(e.failure!==void 0),`Only unsupported downloads require the exact method failure.`),L({action:V(`settings_store_backup`),operationId:Q,fileId:Q,attemptId:Q,saveAttemptId:Q,previousSaveAttemptId:Q.optional(),allowPossibleCopy:P()}).strict(),L({action:V(`settings_cancel_download`),operationId:Q,fileId:Q,attemptId:Q}).strict(),L({action:V(`settings_select`),draft:JC}).strict(),L({action:V(`settings_prepare`),operationId:Q}).strict(),L({action:V(`settings_begin_upload`),operationId:Q,name:M().min(1),totalSize:GC.max(WC),sha256:KC}).strict(),L({action:V(`settings_upload_chunk`),operationId:Q,fileId:Q,offset:GC.max(WC),chunkBase64:M()}).strict(),L({action:V(`settings_seal_upload`),operationId:Q,fileId:Q}).strict(),L({action:V(`settings_confirm`),operationId:Q,preparationId:Q}).strict(),L({action:V(`settings_back`),operationId:Q}).strict(),L({action:V(`settings_cancel`)}).strict()]),rw=L({outcome:B([`completed`,`failed`,`interrupted`,`superseded`]),recordedAt:M().datetime(),message:M().min(1),details:z(M(),F()).optional(),completionScope:V(`backup_snapshot`).optional()}).strict(),iw=L({storedValue:M(),effectiveValue:M(),source:B([`environment`,`local_db`,`builtin_default`]),pendingStoredValue:M().optional(),appliesAfter:V(`mcp_server_restart`).optional()}).strict(),aw=L({endpoint:B([`grpc`,`graphql`]),key:B([`suiGrpcUrl`,`suiGraphqlUrl`]),value:M().min(1),status:B([`saved`,`reset`]),storedValue:M(),effectiveValue:M(),source:iw.shape.source}).strict().refine(e=>e.key===(e.endpoint===`grpc`?`suiGrpcUrl`:`suiGraphqlUrl`),`The endpoint kind and preference key must agree.`),ow=N().int().nonnegative().safe(),sw=L({accounts:ow,reviewSessions:ow,reviewStateSnapshots:ow,reviewStatusTransitions:ow,reviewExecutions:ow,reviewRequests:ow,outcomeUnknownRequests:ow,externalActivityScans:ow,externalActivityTransactions:ow,localSettings:ow}).strict(),cw=L({status:V(`valid`),format:V(UC),network:V(`mainnet`),exportedAt:M().datetime(),currentCounts:sw,incomingCounts:sw,willReplace:V(!0),activeAccountChange:B([`unchanged`,`set`,`cleared`]),currentReadAddress:Y.nullable(),incomingReadAddress:Y.nullable(),restartRequiredAfterImport:P()}).strict(),lw=L({kind:V(`settings`),operationId:Q,phase:B([`draft`,`uploading`,`sealed`,`prepared`,`executing`,`stopping`,`starting`,`terminal`]),draft:JC.optional(),preparationId:Q.optional(),preparation:z(M(),F()).optional(),file:L({fileId:Q,displayName:M(),totalSize:GC,receivedSize:GC,sha256:KC,sealed:P(),cleanup:B([`pending`,`complete`,`failed`])}).strict().optional(),download:L({availability:B([`preparing`,`available`,`ended`]),currentAttemptId:Q,hostReport:YC.optional(),previousUnconfirmed:P(),endReason:ZC.optional(),expiresAt:M().datetime().optional(),remainingMs:GC.optional(),localSave:L({status:B([`needs_consent`,`saving`,`saved`,`failed`]),currentSaveAttemptId:Q.optional(),failure:$C.optional(),savedAt:M().datetime().optional()}).strict().optional(),allowedFileActions:I(tw)}).strict().optional(),restoreCheck:qC.optional(),backupLocation:L({directory:M().min(1),filename:M().min(1)}).strict().optional(),result:rw.optional(),temporaryFileCleanup:B([`pending`,`complete`,`failed`]).optional(),priorRunId:Q.optional(),nextRunId:Q.optional(),supersedesOperationId:Q.optional(),supersededByOperationId:Q.optional(),allowedActions:I(B(nw.options.map(e=>e.shape.action.value))),observe:P(),facts:L({server:L({name:M(),version:M(),network:V(`mainnet`)}).strict(),localSettings:L({suiGrpcUrl:iw,suiGraphqlUrl:iw}).strict(),readAddress:M().optional(),assetReadAccount:Kb,walletAvailability:Vb,connectionReconciliationRequired:V(!0).optional(),observedAt:M().datetime().optional(),counts:sw}).strict().optional()}).strict().superRefine((e,t)=>{if(e.download&&(e.draft?.kind!==`download_backup`||!e.file||e.download.availability===`available`&&(!e.file.sealed||!e.result||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===`export_local_data`||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.draft?.kind===`export_local_data`&&e.result?.outcome===`completed`&&typeof e.result.details?.path==`string`&&!e.backupLocation&&t.addIssue({code:`custom`,message:`A recorded backup path must provide its folder and file name.`}),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))&&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`&&!cw.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=aw.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.`})}),uw=64*1024;function dw(e){return new TextEncoder().encode(JSON.stringify(e)).length}function fw(e){let t=uw-dw(e);return t>0?3*Math.floor(t/4):0}function pw(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=WC,t.params.arguments.input.chunkBase64=``,fw(t)}var mw={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`,actionPrepareSuiActionReview:`action.prepare_sui_action_review`,actionPrepareExternalProposalReview:`action.prepare_external_proposal_review`,sessionCreateWalletConnection:`session.create_wallet_connection`,sessionGetWalletConnection:`session.get_wallet_connection`,sessionWaitWalletConnection:`session.wait_wallet_connection`,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`};yh();var hw=L({connectionId:M().min(1),pairingUri:M().startsWith(`wc:`),expiresAt:M().datetime()}).strict(),gw=B([`account`,`receipt`,`chart`,`connect`,`review`,`settings`]),_w=L({cardId:M().min(1),kind:gw,state:B([`ready`,`running`,`closed`]),revision:N().int().nonnegative(),createdAt:M().datetime(),expiresAt:M().datetime(),input:z(M(),F()),data:F().optional(),reason:B([`completed`,`expired`,`failed`,`server_restarted`,`cancelled`]).optional(),error:M().optional()}).strict().extend({pollAfterMs:N().int().positive(),inputRemainingMs:N().int().nonnegative()}),vw=L({transactionDigest:M().min(1),pureInputs:I(L({index:N().int().nonnegative(),bytes:M().regex(/^0x(?:[0-9a-f]{2})*$/i)}).strict()).refine(e=>new Set(e.map(e=>e.index)).size===e.length,`Duplicate input index.`),ptbGraph:L({mermaid:L({text:M(),namedText:M()}).strict()}).strict().optional()}).strict();yh();var yw=`sui-mcp/card`,bw=`sui-mcp/receipt-display`,xw=`sui-mcp/wallet-display`,Sw=`sui-mcp/settings-file`,Cw=`suimcp://cards/`,ww=ep(`kind`,[L({kind:V(`account`),status:V(`input_required`),field:V(`account`),message:M().min(1)}).strict(),L({kind:V(`receipt`),status:V(`input_required`),field:V(`digest`),message:M().min(1)}).strict()]),Tw=L({cardId:M().min(1),permission:M().min(1)}).strict();Tw.extend({revision:N().int().nonnegative(),input:z(M(),F())}).strict();var Ew=vw.extend({cardId:M().min(1),revision:N().int().nonnegative(),attemptId:M().min(1).optional()}),Dw=hw.extend({cardId:M().min(1),revision:N().int().nonnegative()}),Ow=L({attemptId:M().uuid().optional(),cardId:M().min(1),operationId:M().uuid(),fileId:M().uuid(),offset:N().int().nonnegative().safe(),totalSize:N().int().nonnegative().safe(),sha256:M().regex(/^[a-f0-9]{64}$/),chunkBase64:M()}).strict(),kw={account:mw.uiOpenAccount,receipt:mw.uiOpenReceipt,chart:mw.uiOpenChart,read:mw.uiReadCard,submit:mw.uiSubmitCard,act:mw.uiActCard,readSettingsFile:mw.uiReadSettingsFile};function $(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function Aw(e){return e.kind!==`import_local_data`}function jw(e,t,n){if(e.kind!==`settings`||t.kind!==`settings`||e.cardId!==t.cardId||t.state!==`ready`)return;let r=lw.safeParse(e.data),i=lw.safeParse(t.data);if(!r.success||!i.success)return;let a=r.data,o=i.data,s=o.draft;if(!s||!a.draft||a.operationId!==o.operationId||n.operationId!==o.operationId||JSON.stringify(a.draft)!==JSON.stringify(s))return;if(Aw(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 Mw(e,t){let n=$(e);if(!n)throw Error(`The app did not provide a usable card response.`);if(n.structuredContent!==void 0)return n;if(Array.isArray(n.content))for(let e of n.content){let r=$(e);if(r?.type!==`text`||typeof r.text!=`string`)continue;let i;try{i=$(JSON.parse(r.text))}catch{continue}if(i?.ok!==void 0)return{...n,structuredContent:i};if(t===`chatgpt`&&i&&Array.isArray(i.content))return Mw(i,void 0)}return n}function Nw(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 Pw(e,t){let n;for(let r of Array.isArray(e.content)?e.content:[]){let e=$(r),i;if(e?.type===`resource_link`&&typeof e.uri==`string`&&e.uri.startsWith(`suimcp://cards/`)&&(i=e.uri),t===`Claude`&&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){if(t[1]!==t[3])throw Error(`The saved card links could not be matched to one card.`);i=t[2]}}if(i===void 0)continue;let a=i.slice(Cw.length);if(!a||encodeURIComponent(a)!==a||n!==void 0&&a!==n||e?.type===`resource_link`&&typeof e.name==`string`&&e.name.startsWith(`card_`)&&e.name!==`card_${a}`)throw Error(`The saved card links could not be matched to one card.`);n=a}return n}function Fw(e){let t=$(e.structuredContent),n=t?.ok===!0?ww.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:_w.parse(i);a?.kind===`settings`&&lw.parse(a.data);let o=$(e._meta)?.[bw],s=o===void 0?void 0:Ew.parse(o);if(s&&!Nw(a,s))throw Error(`Transaction details do not match this saved result.`);let c=$(e._meta)?.[xw],l=c===void 0?void 0:Dw.parse(c);if(l&&(!a||a.kind!==`connect`||l.cardId!==a.cardId||l.revision!==a.revision||l.connectionId!==$($(a.data)?.connection)?.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 Iw(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 Wv({name:`sui-mcp-card`,version:`0.6.0`},{},{autoResize:!0,strict:!0}),d=new AbortController,f=e===`connect`||e===`review`,p=e===`settings`,ee=f||p,te=!1,m,ne,re,h,g,ie,ae,oe=!1,se=!1,ce,_,v={status:`unconfirmed`},le,y,ue,b,x,de=`continue`,fe,pe,me=0,he=0,ge,_e,ve,S,C,ye,w,be,xe=!1;function Se(){if(!b||!h)return;let{input:e,basis:t}=b,n=$(h.data),r=$(t.data),i=$(n?.request),a=$(n?.review),o=$(n?.connection),s=$(r?.request),c=$(r?.connection),l=!!i&&i.attemptId===s?.attemptId,u=!!o&&o.connectionId===c?.connectionId;if(!f)return h.state===`running`||h.reason===`completed`?b.delivery===`rejected`?`past`:`observed`:h.state===`closed`?`past`:`active`;if(e.walletRunId&&e.walletRunId!==$(n?.walletAvailability)?.walletRunId&&e.walletRunId!==n?.acceptedWalletRunId)return`past`;switch(e.action){case`connect`:if(h.state!==`ready`&&o)return`observed`;if(n?.walletAvailability&&$(n.walletAvailability)?.status===`available`&&Array.isArray(n.connections)&&n.connections.some(e=>$(e)?.status===`connected`))return`past`;break;case`prepare_review`:if(typeof a?.reviewRevision==`number`&&typeof e.reviewRevision==`number`&&a.reviewRevision>e.reviewRevision)return a.account===e.account?`observed`:`past`;break;case`request_signature`:if(i?.account===e.account&&i?.reviewRevision===e.reviewRevision)return`observed`;if(typeof a?.reviewRevision==`number`&&typeof e.reviewRevision==`number`&&a.reviewRevision>e.reviewRevision||!i&&a&&a.reviewRevision===e.reviewRevision&&a.account===e.account&&a.status===`refresh_required`&&$(a.state)?.refreshReason===`review_evidence_stale`&&Array.isArray(n?.allowedActions)&&n.allowedActions.includes(`prepare_review`))return`past`;break;case`cancel`:if(h.reason===`cancelled`)return`observed`;break;case`disconnect`:if(o&&o.connectionId===e.connectionId&&(o.pendingAction===`disconnect`||h.state!==`ready`&&o.status===`disconnected`))return`observed`;break;case`use_account`:if(h.reason===`completed`&&n?.activeAccount===e.account&&o?.connectionId===e.connectionId)return`observed`;break;case`stop_connection`:if(u&&o?.status===`stopped`)return`observed`;if(u&&o?.status!==`awaiting_approval`)return`past`;break;case`stop_waiting`:if(l&&(i?.requestStatus===`stopped`||n?.observationStopped===!0))return`observed`;if(l&&[`completed`,`request_failed`,`outcome_unknown`].includes(String(i?.requestStatus)))return`past`;break;case`read_result`:if(l&&(n?.observe===!0||i?.requestStatus===`completed`))return`observed`;if(l&&[`stopped`,`request_failed`].includes(String(i?.requestStatus)))return`past`;break}return Ce()||typeof n?.actionRemainingMs==`number`&&n.actionRemainingMs<=0||[`connect`,`disconnect`,`use_account`,`cancel`,`prepare_review`,`request_signature`].includes(String(e.action))&&(h.state!==`ready`||a?.status===`expired`)?`past`:`active`}function Ce(){let e=zC.safeParse(b?.input);if(!e.success||e.data.action!==`disconnect`&&e.data.action!==`use_account`)return!1;let t=e.data,n=VC.safeParse(h?.data);if(!n.success)return!1;let r=n.data.connections.find(e=>e.connectionId===t.connectionId);return r?t.action===`disconnect`?n.data.walletAvailability.status===`available`&&!r.pendingAction&&!n.data.manageableConnectionIds.includes(t.connectionId)&&[`disconnected`,`failed`,`rejected`,`stopped`,`expired`].includes(r.status):[`disconnected`,`failed`,`rejected`,`stopped`,`expired`].includes(r.status)||t.action===`use_account`&&r.status===`connected`&&!r.accounts.includes(t.account):!1}function we(){if(!b)return;let e=Se();e&&b.disposition!==`observed`&&(e!==`active`||b.disposition===`active`)&&(b.disposition=e),b.disposition===`observed`&&(b.retryRequired=!1)}function Te(){let e=BC.safeParse($(h?.data)?.automaticAction);return b?.retryRequired&&e.success&&b.input.action===e.data.action?e.data:void 0}function Ee(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`,use_account:`account selection`};return f?t[String(e.input.action)]??`request`:`data request`}function De(e){if(e!==`past`||!b)return;let t=Ee(b),n=b.input.action===`read_result`&&$($(h?.data)?.request)?.requestStatus===`outcome_unknown`?` To check this transaction again, ask to open its result in chat.`:``;return`Message from an earlier ${t}: “${b.message}”${n}`}let Oe,ke;function T(){let t=$(h?.data),n=p?$(t?.download):void 0,r=Array.isArray(n?.allowedFileActions)?n.allowedFileActions:[],i=[...Array.isArray(t?.allowedActions)?t.allowedActions:[],...r.filter(e=>e===`settings_report_download`||Oe===void 0||Date.now()<Oe)],a=e===`review`&&t?.mode===`review`&&!t.request&&!!m&&h?.state===`ready`,o=a&&ge!==void 0&&Date.now()>=ge,s=document.visibilityState!==`hidden`,c=d.signal.aborted||v.status===`rejected`,l=v.status===`confirmed`,u=b?.disposition,re=u===`active`,g=b?.retryRequired===!0,ie=b?.input.action===`request_signature`&&u===`active`,ae=de===`paused`,se=ye?.pending?.()===!0,ce=ye?.displayRecovery?.(),me=l&&!c&&!y&&!se&&!o&&!!m,_e=me&&!x&&!te&&(!ee||!(fe&&(re||g||ae))),ve=BC.safeParse(t?.automaticAction),S=p?$(n?.localSave):void 0,C=!!h&&(ee?t?.observe===!0||S?.status===`saving`:h.state===`running`),w=!!ne&&oe&&!c&&!fe&&s&&(pe===`explicit`||v.status!==`read_failed`&&(pe===`background`||v.status===`needed`&&v.automatic)),be=s&&me&&!le&&!fe&&!pe&&!x&&!g&&!ie&&!ae&&f&&ve.success&&i.includes(ve.data.action)?ve.data:void 0,xe=$(t?.restoreCheck),Se=p&&me&&h?.state===`ready`&&!x&&!te&&!t?.result&&t?.observe!==!0&&(xe?.status===`cannot_restore`&&[`operation_busy`,`wallet_request_unsettled`].includes(String(xe.reason))||!i.includes(`settings_select`)||!i.includes(`settings_download_backup`)||t?.phase===`prepared`&&!i.includes(`settings_confirm`)||t?.phase===`draft`&&$(t.draft)?.kind!==void 0&&$(t.draft)?.kind!==`import_local_data`&&!i.includes(`settings_prepare`)),Ce;!c&&ne&&(v.status===`read_failed`||le||v.status===`unconfirmed`?Ce=`read`:v.status===`needed`?v.automatic||(Ce=`read`):y||ce||p&&[`pending`,`failed`].includes(String(t?.temporaryFileCleanup))||S?.status===`saving`||S?.status===`needs_consent`&&!i.includes(`settings_store_backup`)||S?.status===`failed`&&S.failure===`not_published`&&!n?.endReason&&!i.includes(`settings_store_backup`)||Se?Ce=`read`:m?$(t?.progress)?.status===`unavailable`||$(t?.walletAvailability)?.status===`initializing`&&$(t?.walletAvailability)?.stage===`state_sync`?Ce=`read`:!ae&&Te()?Ce=`retry`:re&&!C&&!(ae&&i.length>0)&&!(b?.input.action===`prepare_review`&&i.includes(`prepare_review`)&&t?.automaticAction===void 0)&&f&&(Ce=`read`):(h?.state!==`closed`||y)&&(Ce=`read`));let we=f?t?.actionRemainingMs:h?.inputRemainingMs;Ce===`retry`&&o&&(Ce=`read`);let ke=f?t?.nextStateReadAfterMs:p&&Oe!==void 0?Math.max(0,Oe-he):void 0,T=[(f?i.length>0:h?.state===`ready`)?we:void 0,ke].filter(e=>typeof e==`number`&&Number.isFinite(e)&&e>0),Ae=!c&&!!m&&s&&!_&&!le&&v.status!==`read_failed`,je=$(t?.review),Me=a&&!c&&!le&&!y&&!re&&!g&&!ae&&v.status!==`read_failed`&&(se||x?.input.action===`prepare_review`||je?.preparing===!0||ve.success&&ve.data.action===`prepare_review`||v.status===`needed`&&je?.status===`ready_for_wallet_review`);return{current:l,inputEnabled:_e,permitted:i,disposition:u,read:w,auto:be,recover:Ce,paused:ae,partialDisplayFailure:ce,settingsInputBlocked:Se,reviewUpdatePending:Me,reviewCommandDeliveryFailed:re&&b?.input.action===`prepare_review`,reviewHint:o?void 0:Me?se||je?.preparing||x?.input.action===`prepare_review`?`Updating review…`:`Checking status…`:a&&$(je?.state)?.refreshReason===`review_evidence_stale`?`Review details are out of date.`:void 0,errors:[v.status===`rejected`?v.message:v.status===`read_failed`?`This card's status could not be checked. Reported message: “${v.message}”`:void 0,le&&v.status!==`rejected`?`This card could not be opened. Reported message: “${le}”`:void 0,re&&b?`Message for this ${Ee(b)}: “${b.message}”`:void 0,y,ce?.message],note:[ue,De(u)].filter(Boolean).join(` `),expiryAt:Ae&&l&&T.length?he+Math.min(...T):void 0,poll:Ae&&(C||v.status===`needed`&&!v.automatic),lifetimeAt:!c&&s&&a?ge:void 0}}function Ae(e){return e.recover===`retry`?b?.input.action===`connect`?`Retry connection`:`Retry review`:e.recover===`read`?`Check status`:void 0}function je(e){if(d.signal.aborted)return``;let n=e.errors.some(Boolean)||e.recover!==void 0||!!h&&!m&&h.state!==`closed`||h?.state===`closed`&&h.reason!==`completed`,r=e.errors.some(Boolean)||v.status!==`confirmed`||e.recover===`retry`||e.settingsInputBlocked;if(n&&r&&v.status!==`rejected`){if(fe||e.read)return`Checking status…`;let t=Ae(e);if(t)return t===`Check status`?y||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.`;if(Me(e)&&ye?.selectionHint)return ye.selectionHint}return t.guidance?.(h,{confirmed:e.current,readOnly:!m,recoveryNeeded:n,visibleConfirmation:ye?.visibleConfirmation?.(),commandPending:ee&&x&&e.current&&!e.errors.some(Boolean)&&(x.phase===`confirming`||h?.state===`ready`&&!$(h.data)?.runtimeRecovery&&!$(h.data)?.request&&!$($(h.data)?.review)?.preparing)?{phase:x.phase,action:String(x.input.action)}:void 0,approvalUnresolved:b?.input.action===`request_signature`&&e.disposition===`active`||x?.input.action===`request_signature`,automaticPaused:e.paused})??``}function Me(e=T()){return e.inputEnabled&&h?.state===`ready`&&xe}function Ne(e,t=T()){return ee&&t.inputEnabled&&(e?t.permitted.includes(e.action):t.permitted.length>0)}function E(e){let t=T();return p&&te&&t.current&&!!m&&!x&&!fe&&!y&&!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)}function Pe(e){let u=$(h?.data),f=s.querySelector(`.review-action-feedback`),ne=s.querySelector(`.review-primary-action`);if(ne&&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=ne?`ui-note`:`ui-error`,h?(r.textContent=t.titleFor?.(h)??t.title,i.textContent=v.status===`rejected`?`Card unavailable`:!e.current&&h.state===`ready`?ne?``:!d.signal.aborted&&(fe||e.read)?`Checking whether actions are available in this card…`:`Actions are unavailable until this card's status is checked.`:!m&&h.state!==`closed`?`View only.`:ee?$(u?.progress)?.status===`unavailable`?`Current progress is unavailable. The last recorded state is shown.`:!u?.request&&h.state===`closed`&&[`expired`,`server_restarted`,`cancelled`].includes(h.reason??``)?`This card no longer accepts actions.`:``:h.state===`running`?`Reading the requested data…`:h.reason===`completed`?``:h.error??(h.reason===`expired`?`The time to make a selection has ended.`:h.reason===`server_restarted`?`This request ended when Sui MCP restarted.`:``)):i.textContent=_?``:v.status===`read_failed`?`Card status unavailable`:le||v.status===`rejected`?`Card unavailable`:`Opening card…`,i.hidden=!i.textContent,a.textContent=[...new Set(e.errors.filter(Boolean))].join(` `),a.hidden=!a.textContent;let re=s.querySelector(`.review-status`);re&&(re.hidden=!!ne&&(e.reviewUpdatePending||!!a.textContent));let g=s.querySelector(`.review-material-status`);if(g&&(g.textContent=g.dataset.previous===`true`||!e.current||e.reviewUpdatePending?g.dataset.previousLabel??``:g.dataset.currentLabel??``),o.textContent=[e.note,je(e)].filter(Boolean).join(` `),o.hidden=!o.textContent,xe)for(let t of s.querySelectorAll(`input, button, select`))(!ee||t.tagName!==`BUTTON`||t.dataset.cardAction!==void 0)&&(t.disabled=ee?!Ne(void 0,e):!Me(e));if(ee)for(let t of s.querySelectorAll(`[data-card-action]`))t.disabled=!Ne({action:t.dataset.cardAction},e);if(p)for(let t of s.querySelectorAll(`[data-settings-file-action]`))t.disabled=t.dataset.settingsLocalBlocked===`true`||!(te?E({action:t.dataset.cardAction}):Ne({action:t.dataset.cardAction},e));ne&&(e.reviewUpdatePending||ne.dataset.cardAction===`request_signature`&&e.reviewCommandDeliveryFailed||ne.dataset.cardAction===void 0)&&(ne.disabled=!0),C&&(C.disabled=!!x||!!fe)}function Fe(e){try{e?.()}catch{y=`The card display could not be closed cleanly. Its stored information is unchanged.`}}function Ie(e){if(!h||d.signal.aborted)return;if(h.state===`ready`&&v.status!==`confirmed`){if(p&&ye?.update)try{ye.update(h,{automaticPaused:de===`paused`,settings:D,settingsCommandProgress:void 0,onDisplayChange:()=>Ve()})}catch{y=`This card could not be displayed. Its stored information is unchanged.`}return}if(h.state===`running`&&!ee){y=void 0;return}let n=ee?{...$(h.data),actionRemainingMs:void 0,nextStateReadAfterMs:void 0,...p&&$(h.data)?.download?{download:{...$($(h.data)?.download),remainingMs:void 0}}:{}}:void 0,r=p&&x?.phase===`sending`&&v.status===`confirmed`?jw(x.basis,h,x.input):void 0,i=`${de===`paused`}:${JSON.stringify(r)}:${h.revision}:${m!==void 0}:${g!==void 0}:${ae!==void 0}:${JSON.stringify(n)}`;if(i===w||i===be&&!e)return;be=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:de===`paused`,onDisplayChange:()=>Ve(),...p?{settings:D,settingsCommandProgress:r}:{}};if(ye?.update?.(h,e)){w=i,y=void 0;return}if(h.state===`ready`&&m){let n=t.controls(h,e=>{Je(e)},g,ae,e);c=`node`in n?n:{node:n},l=!0}else (ee||h.reason===`completed`)&&h.data!==void 0&&(c=t.result(h,g,m?e=>{Je(e)}:void 0,ae,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),Fe(c?.dispose),y=`This card could not be displayed. Its stored information is unchanged.`;return}let f=ye?.dispose;ye=c,xe=l,w=i,y=void 0,Fe(f)}function Le(t,n,r,i,a){if(d.signal.aborted||v.status===`rejected`)return!1;if(t.kind!==e||t.cardId!==ne)throw v={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:BC.safeParse(o.automaticAction);if(l&&!l.success)throw Error(`This card could not start the next step.`);if(h&&t.revision<h.revision)return!1;if(re&&[...new Set([...Object.keys(re),...Object.keys(t.input)])].some(e=>JSON.stringify(t.input[e])!==JSON.stringify(re[e])))throw v={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 v={status:`rejected`,message:`The saved result does not match the information requested in this card.`},Error(v.message);!re&&(f||t.state!==`ready`)&&(re={...t.input});let u=r!==`preview`;if((!h||t.revision!==h.revision)&&(g=void 0,ae=void 0),h=t,we(),u){he=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}`;ke!==e&&(ke=e,Oe=void 0),Oe=Math.min(Oe??1/0,he+Math.max(0,t.remainingMs))}else p&&t?.availability===`ended`&&(Oe=void 0);m&&e===`review`&&o?.mode===`review`&&!o.request&&typeof o.actionRemainingMs==`number`&&Number.isFinite(o.actionRemainingMs)&&o.actionRemainingMs>=0&&(ge=Math.min(ge??1/0,he+o.actionRemainingMs))}return r===`read`&&(v.status!==`needed`||a>v.afterRead)&&(v={status:`confirmed`},le=void 0),n&&(g=n),ae=i,!0}function Re(){_e!==void 0&&clearTimeout(_e),ve!==void 0&&clearTimeout(ve),S!==void 0&&clearTimeout(S),_e=void 0,ve=void 0,S=void 0,l.hidden=!0}function ze(e){let t=Ae(e);C?.textContent!==t&&(C?.remove(),C=void 0,t&&(C=Xv(t,()=>{if(!(fe||x||d.signal.aborted))if(T().recover===`retry`){let e=Te();e&&qe(e)}else Be()})));let n=s.querySelector(`.review-primary-action`),r=s.querySelector(`.review-primary-slot`);n&&(n.hidden=!!C&&!!r),C&&(C.disabled=!!fe||!!x,r?(C.classList.add(`review-recovery-action`),r.append(C)):(C.classList.remove(`review-recovery-action`),c.append(C)))}async function Be(){let e=ye,t=e?.displayRecovery?.(),n=await Ue(!0);n?.kind===`accepted`&&h===n.snapshot&&v.status===`confirmed`&&!d.signal.aborted&&document.visibilityState!==`hidden`&&!y&&e===ye&&t&&e?.displayRecovery?.()===t&&(t.retry(),Ve())}function Ve(e=!1){if(_){let e=document.createElement(`p`);e.className=`ui-note`,e.textContent=_,s.replaceChildren(e)}else Ie(e);let t=T();if(Pe(t),Re(),ze(t),d.signal.aborted||v.status===`rejected`)return;t.expiryAt!==void 0&&(ve=setTimeout(()=>{He(),Ve()},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)S=setTimeout(r,Math.min(1e3,t));else{let e=T();Pe(e),ze(e)}};r()}if(t.poll&&h){let e=he+h.pollAfterMs-Date.now();_e=setTimeout(()=>{Ue(!1)},e>0?e:h.pollAfterMs)}t.read?(pe=void 0,We()):t.auto&&(_e=setTimeout(()=>{let e=T().auto;e&&Xe(e,`automatic`)},0))}function He(){v.status!==`rejected`&&v.status!==`read_failed`&&(v={status:`needed`,afterRead:me,automatic:!0})}function Ue(e){return d.signal.aborted||v.status===`rejected`||!ne||!oe?Promise.resolve(void 0):fe?fe.promise:v.status===`read_failed`&&!e?Promise.resolve(void 0):(pe=e?`explicit`:`background`,Ve(),fe?.promise??Promise.resolve(void 0))}function We(){let e=++me,t=performance.now(),n={id:e,promise:Promise.resolve().then(async()=>{try{let n,r,i;if(m){let e=Fw(await Ge(kw.read,m));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=`${Cw}${encodeURIComponent(ne)}`,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=_w.parse(JSON.parse(t.text));let i=g??ie;r=i&&Nw(n,i)?i:void 0}if(d.signal.aborted||v.status===`rejected`)return{kind:`disposed`,id:e};let a=Le(n,r,`read`,i,e);return ie=void 0,!a&&v.status===`needed`&&e>v.afterRead&&(v={...v,automatic:!1}),Ve(a),a&&v.status===`confirmed`?{kind:`accepted`,snapshot:n,id:e,requestStartedAt:t}:{kind:`ignored`,id:e}}catch(t){return d.signal.aborted?{kind:`disposed`,id:e}:(v.status!==`rejected`&&(v={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(()=>{fe===n&&(fe=void 0),Ve()})};fe=n,Ve()}async function Ge(e,t){return Mw(await u.callServerTool({name:e,arguments:t},{signal:d.signal}),u.getHostVersion()?.name)}function Ke(e,t,n){let r=VC.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.allowedActions.includes(`connect`)&&[`connect`,`manage`].includes(String(n.input.intent)):e.action===`prepare_review`||e.action===`request_signature`?i.review?.reviewRevision===e.reviewRevision&&(e.action===`prepare_review`?i.assetReadAccount?.status===`available`?i.assetReadAccount.account:void 0:i.review?.account)===e.account&&HC(i,String(e.account),e.action===`request_signature`).some(t=>t.connectionId===e.connectionId):e.action===`disconnect`?i.manageableConnectionIds.includes(String(e.connectionId))&&i.connections.some(t=>t.connectionId===e.connectionId&&!t.pendingAction):e.action===`use_account`?i.connections.some(t=>t.connectionId===e.connectionId&&t.status===`connected`&&!t.pendingAction&&t.connectionId===i.usableConnectionId&&t.accounts.includes(String(e.account))):i.connection?.connectionId===$(a?.connection)?.connectionId&&i.request?.attemptId===$(a?.request)?.attemptId&&i.review?.reviewRevision===$(a?.review)?.reviewRevision}async function qe(e){if(!h||fe||!Ne(e))return;let t={input:e,basis:h,phase:`confirming`};x=t;let n=await Ue(!1);x===t&&(x=void 0,n?.kind===`accepted`&&h===n.snapshot&&v.status===`confirmed`&&!d.signal.aborted&&document.visibilityState!==`hidden`&&Ke(e,t.basis,n.snapshot)&&Ne(e)?await Xe(e):v.status!==`read_failed`&&v.status!==`rejected`&&!d.signal.aborted&&(ue=`The card state changed. Check the current selection before trying again.`),Ve())}async function Je(e){f&&(b?.disposition===`active`||b?.retryRequired||de===`paused`)?await qe(e):await Xe(e)}function Ye(e,t,n){b={input:e.input,basis:e.basis,message:t,delivery:n,disposition:`active`,retryRequired:e.input.action===`connect`||e.input.action===`prepare_review`},we(),[`cancel`,`disconnect`,`stop_connection`,`stop_waiting`,`use_account`].includes(String(e.input.action))&&(de=`paused`),(ee||n===`unknown`)&&He()}async function Xe(e,t=`user`){if(!h||!m||(t===`file`?!E(e):ee?!Ne(e):!Me()))return;let n={input:e,basis:h,phase:`sending`};x=n,de=`continue`,(t===`user`||b?.disposition!==`past`)&&(b=void 0),ue=void 0,Ve();try{let t=Fw(await Ge(ee?kw.act:kw.submit,{...m,revision:n.basis.revision,input:e}));if(d.signal.aborted||v.status===`rejected`)return;if(!t.snapshot)throw Error(t.error??`The request could not be confirmed.`);t.error&&Ye(n,t.error,`rejected`),Le(t.snapshot,t.display,`action`,t.wallet)}catch(e){!d.signal.aborted&&v.status!==`rejected`&&(Ye(n,e instanceof Error?e.message:`The request could not be confirmed.`,`unknown`),b&&(b.data=$(e)?.data))}finally{x===n&&(x=void 0),Ve()}}let D={uploadChunkLimit(e,t){return m?pw({jsonrpc:`2.0`,id:2**53-1,method:`tools/call`,params:{name:kw.act,arguments:{...m,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 Ue(!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?!E(e):!Ne(e))throw Error(`This Settings action is unavailable until its current status has been checked.`);if(await Xe(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(b?.input===e){let e=Error(b.message);throw e.data=b.data,e}if(!h)throw Error(`The current Settings status could not be checked.`);return h},setFileTransferActive(e){te=e,Ve()},async readFile(e){if(!m||!ne||!T().current||d.signal.aborted)throw Error(`Backup read permission is unavailable.`);let t=await Ge(kw.readSettingsFile,{...m,...e}),n=Ow.parse($(t._meta)?.[Sw]);if(n.cardId!==ne||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=$($(h?.data)?.download);if(!m||!T().current||d.signal.aborted||document.visibilityState===`hidden`||r&&(r.currentAttemptId!==n||r.localSave||r.availability!==`available`||Oe===void 0||Date.now()>=Oe))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 Ze(){if(!(!oe||ce===void 0||se)){se=!0;try{let t=Mw(ce,u.getHostVersion()?.name),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?.[yw];if(r!==void 0){let e=Tw.safeParse(r);if(!e.success)throw Error(`This card cannot accept actions with the access information provided by the app.`);m=e.data}let i=Fw(t);if(i.inputRequired){if(i.inputRequired.kind!==e||m)throw Error(`The app provided inconsistent card input information.`);_=i.inputRequired.message,Ve();return}let a=Pw(t,u.getHostVersion()?.name),o=[i.snapshot?.cardId,m?.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 v={status:`rejected`,message:`The returned information does not match this card.`},Error(v.message);ne=o[0];let s=i.snapshot;s&&(f||s.state!==`ready`)&&(re={...s.input}),ie=i.display,s&&m&&Le(s,i.display,`preview`,i.wallet),He(),Ve()}catch(e){if(d.signal.aborted)return;le=e instanceof Error?e.message:`Card data could not be read.`,Ve()}}}u.ontoolresult=e=>{if(ce===void 0){ce=e,Ze();return}try{let t=Fw(Mw(ce,u.getHostVersion()?.name)).snapshot??h,n=Fw(Mw(e,u.getHostVersion()?.name)).snapshot;if(t&&n&&(t.cardId!==n.cardId||t.kind!==n.kind))throw Error(`The app returned a different card.`)}catch{v={status:`rejected`,message:`The returned information does not match this card.`},Ve()}},u.onhostcontextchanged=e=>{e.theme&&(document.documentElement.dataset.theme=e.theme)};let Qe=()=>{document.visibilityState!==`hidden`&&m&&se&&v.status!==`read_failed`?Ue(!1):Ve()};document.addEventListener?.(`visibilitychange`,Qe),u.onteardown=async()=>{if(d.signal.aborted)return{};d.abort(),x=void 0,document.removeEventListener?.(`visibilitychange`,Qe);let e=ye?.dispose;return ye=void 0,Fe(e),Ve(),{}},u.connect().then(()=>{d.signal.aborted||(oe=!0,document.documentElement.dataset.theme=u.getHostContext()?.theme??`light`,Ze())}).catch(()=>{d.signal.aborted||(le=`Could not connect this card to the app.`,Ve())})}function Lw(e){return typeof e==`object`&&e?e:void 0}function Rw(e){return typeof e==`string`&&e.length>0?e:void 0}function zw(e){let t=Lw(e);if(!t)return null;let n=Lw(t.display),r=Lw(t.unit),i=Rw(t.coinType),a=Rw(n?.symbol)??Rw(r?.symbol)??(i===void 0?void 0:qv(i))??`(unknown coin)`,o=typeof r?.decimals==`number`?r.decimals:void 0,s=Rw(n?.amount),c=Rw(t.balance),l;return l=s!==void 0&&o!==void 0?s:c===void 0?`Amount unavailable`:(o===void 0?void 0:Bw(c,o))??`Amount unavailable`,{symbol:a,total:l}}function Bw(e,t){try{return Gv(e,t)}catch{return}}var Vw={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`}},Hw={en:Vw};function Uw(){try{return(navigator.language||`en`).slice(0,2).toLowerCase()}catch{return`en`}}function Ww(e=Uw()){return Hw[e]??Vw}var Gw=Ww(),Kw={title:`Account assets`,guidance:(e,t)=>t.recoveryNeeded?`Ask in chat to view the assets for this account.`:void 0,controls:()=>J(`p`,`ui-note`,`Please provide a Sui address in chat.`),result(e){let t=Lw(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=J(`div`);n.append(qw(t.account,t),Jw(t)),n.append(Qv(`NFTs`,String(t.nfts.length)));let r=$v(`Details`);return t.nfts.length&&r.body.append(Yw(t)),r.body.append(Qv(Gw.common.retrievedAt,ry(t.fetchedAt))),n.append(r.details,Zw(t)),{node:n}}};function qw(e,t){let n=Zv(),r=typeof t.name==`string`&&t.name.length>0?t.name:void 0;return r&&n.append(Qv(Gw.account.name,r)),n.append(Qv(Gw.account.address,ny(e))),n}function Jw(e){let t=Zv(Gw.account.balances),n=Array.isArray(e.balances)?e.balances:[];if(n.length===0)return t.append(J(`p`,`ui-note`,Gw.account.noBalances)),t;for(let e of n){let n=zw(e);n&&t.append(Qw(n))}return t}function Yw(e){let t=Zv(Gw.account.nfts),n=Array.isArray(e.nfts)?e.nfts:[],r=J(`div`,`account-nfts`);for(let e of n){let t=Lw(e);t&&r.append(Xw(t))}return t.append(r),t}function Xw(e){let t=typeof e.type==`string`?e.type:``,n=typeof e.name==`string`&&e.name.length>0?e.name:Jv(t),r=typeof e.imageUrl==`string`&&e.imageUrl.length>0?$w(e.imageUrl):void 0,i=J(`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(J(`div`,`account-nft-img account-nft-noimg`,Gw.account.noImage))}),i.append(e)}else i.append(J(`div`,`account-nft-img account-nft-noimg`,Gw.account.noImage));return i.append(J(`span`,`account-nft-name`,n)),i}function Zw(e){let t=Array.isArray(e.objectGroups)?e.objectGroups:[],n=J(`div`),r=t.reduce((e,t)=>{let n=Lw(t);return e+(typeof n?.count==`number`?n.count:0)},0);return r>0&&n.append(J(`p`,`ui-note`,`${r} other owned objects are not shown here.`)),e.objectsTruncated===!0&&n.append(ey(Gw.account.objectsTruncated)),n}function Qw(e){let t=J(`div`,`account-asset`);t.append(J(`span`,`account-asset-symbol`,e.symbol));let n=J(`span`,`account-asset-total`);return n.append(e.total),t.append(n),t}function $w(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``}}Iw(`account`,Kw);</script></body></html>
3133
+ `)),sx={0:`ED25519`,1:`Secp256k1`,2:`Secp256r1`,3:`MultiSig`,5:`ZkLogin`,6:`Passkey`};function cx(e){let{prefix:t,words:n}=Ry.decode(e);if(t!==`suiprivkey`)throw Error(`invalid private key prefix`);let r=new Uint8Array(Ry.fromWords(n)),i=r.slice(1);return{scheme:sx[r[0]],secretKey:i}}var lx=`external-proposal-alpha-2026-05-25`,ux=`proposal-review-model-alpha-2026-05-25`;yh();var dx=M().refine(e=>{let t=new Date(e);return!Number.isNaN(t.getTime())&&t.toISOString()===e},`Expected ISO 8601 UTC timestamp`),fx=/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,px=/(?:0x[0-9a-fA-F]{160,}|[A-Za-z0-9+/_=-]{160,})/,mx=/suiprivkey1[023456789acdefghjklmnpqrstuvwxyz]+/gi,hx=/(^|[^0-9a-fA-F])(?:0x)?[0-9a-fA-F]{64}($|[^0-9a-fA-F])/,gx=/(^|[^A-Za-z0-9+/_=-])(?:[A-Za-z0-9+/]{43}=|[A-Za-z0-9+/]{44}|[A-Za-z0-9_-]{43,44})($|[^A-Za-z0-9+/_=-])/,_x=/^(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$/,vx=[12,15,18,21,24];function yx(e,t,n={}){return M().min(1).max(e).superRefine((e,r)=>{(fx.test(e)||px.test(e)||xx(e)||Sx(e)||!n.allowRawSecretLikeText&&Cx(e))&&r.addIssue({code:`custom`,message:`${t} must not contain executable, signing, private-key, mnemonic, route-selected, or encoded secret-like material`})})}function bx(e,t){return yx(e,t,{allowRawSecretLikeText:!0})}function xx(e){return(e.match(mx)??[]).some(e=>{try{return cx(e.toLowerCase()),!0}catch{return e.toLowerCase().startsWith(`suiprivkey1`)}})}function Sx(e){let t=e.normalize(`NFKD`).toLowerCase().replace(/[^a-z]+/g,` `).trim().split(/\s+/).filter(Boolean);for(let e of vx)if(!(t.length<e)){for(let n=0;n<=t.length-e;n+=1)if(ax(t.slice(n,n+e).join(` `),ox))return!0}return!1}function Cx(e){return hx.test(e)||gx.test(e)}var wx=yx(80,`amountDisplay`).refine(e=>_x.test(e)&&/[1-9]/.test(e),{message:`Expected a positive decimal display amount`}),Tx=L({kind:B([`mcp_server`,`ai_client`,`user`,`other`]),name:yx(120,`source.name`),reference:yx(256,`source.reference`).optional()}).strict(),Ex=L({address:Y.optional(),label:yx(120,`party.label`).optional()}).strict().refine(e=>e.address!==void 0||e.label!==void 0,{message:`Expected address or label`}),Dx=L({amountDisplay:wx,amountKind:V(`display_proposal`).default(`display_proposal`),symbol:yx(64,`amount.symbol`).optional(),coinType:bx(512,`amount.coinType`).optional(),denomination:yx(64,`amount.denomination`).optional()}).strict(),Ox=L({packageId:bx(128,`action.target.packageId`).optional(),module:yx(128,`action.target.module`).optional(),function:yx(128,`action.target.function`).optional(),objectId:bx(128,`action.target.objectId`).optional(),label:yx(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`}),kx=L({direction:B([`outgoing`,`expected_incoming`,`fee`]),amount:Dx,recipient:Ex.optional(),description:yx(512,`assetFlow.description`).optional()}).strict(),Ax=L({id:yx(120,`proposal.id`),source:Tx,network:V(`sui:mainnet`),createdAt:dx,expiresAt:dx.optional(),purpose:yx(512,`purpose`),assumptions:I(yx(512,`assumptions[]`)).max(20).optional(),requiredUserChoices:I(yx(512,`requiredUserChoices[]`)).max(20).optional()}).strict(),jx=ep(`type`,[Ax.extend({type:V(`payment`),payment:L({amount:Dx,recipient:Ex,target:yx(512,`payment.target`).optional()}).strict()}).strict(),Ax.extend({type:V(`sui_action`),action:L({actionKind:yx(120,`action.actionKind`),target:Ox,recipient:Ex.optional(),assetFlow:I(kx).max(20).optional()}).strict()}).strict()]),Mx=L({id:M(),label:M(),status:B([`pass`,`warning`,`fail`]),message:M(),source:B([`proposal`,`adapter`,`registry`,`quote`,`wallet`,`simulation`,`network`])}).strict(),Nx=L({id:M(),label:M(),reason:M()}).strict(),Px=L({modelVersion:V(ux),contractVersion:V(lx),proposalId:M(),proposalType:B([`payment`,`sui_action`]),proposalSource:Tx,proposedAction:L({kind:B([`payment`,`sui_action`]),title:M(),purpose:M(),network:V(`sui:mainnet`),recipient:Ex.optional(),target:R([M(),Ox]).optional()}).strict(),assetFlow:L({outgoing:I(Dx),expectedIncoming:I(Dx),fees:I(Dx)}).strict(),recipients:I(Ex),targets:I(R([M(),Ox])),evidenceUsed:I(L({id:M(),label:M(),source:B([`external_proposal`,`local_schema`]),summary:M()}).strict()),missingEvidence:I(Nx),requiredUserChoices:I(Nx),unsupportedClaims:I(L({id:M(),label:M(),reason:M()}).strict()),rejectedExecutableFields:I(L({fieldName:M(),reason:M()}).strict()),freshness:L({proposalCreatedAt:dx,proposalExpiresAt:dx.optional(),evaluatedAt:dx,status:B([`current`,`expired`,`created_in_future`,`expiry_not_provided`]),reason:M()}).strict(),blockingChecks:I(Mx),nonSignableReason:L({code:V(`external_proposal_review_only`),message:M(),blockedCapabilities:I(M())}).strict()}).strict();L({requestedIntent:jx,implementationStatus:V(`read_only_review_only`),contractVersion:V(lx)}).strict();var Fx=[`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`],Ix=[`review_evidence_stale`,`quote_stale`,`quote_unavailable`,`simulation_transient_failure`,`review_update_failed`,`wallet_connection_changed`],Lx=[`proposed`,`awaiting_wallet`,`wallet_connected`,`ready_for_wallet_review`,`refresh_required`,`blocked`,`expired`],Rx=[`humanReadableReview`,`simulation`,`transactionReviewData`,`ptbVisualization`,`assetFlowActual`,`beforeAfterBalance`];yh();var zx=B([`client.core.simulateTransaction`,`client.transactionExecutionService.simulateTransaction`]),Bx=`ptb-visualization-contract-alpha-2026-05-25`,Vx=[`proposedAction`,`assetFlow`,`recipients`,`targets`,`evidenceUsed`,`missingEvidence`,`requiredUserChoices`,`unsupportedClaims`,`freshness`,`blockingChecks`],Hx=[`effects`,`balanceChanges`,`objectTypes`,`transaction`],Ux=[`transaction_bytes`,`serialized_transaction`,`wallet_signature_request`,`private_key_material`,`wallet_authorization`,`signing_data`,`signing_readiness`,`payment_execution_readiness`],Wx=[`transaction_building_input`,`wallet_authorization`,`signing_data`,`signing_readiness`,`payment_execution_readiness`,`route_recommendation`],Gx=mb,Kx=`MIST`,qx=[`checkedAt`,`expiresAt`],Jx=[`checkedAt`,`expiryStatus`],Yx=[`rawAmount`,`asset`,`amountRole`],Xx=[`minOutRaw`,`asset`,`amountRole`],Zx=[`gasBudgetRaw`,`asset`,`amountRole`],Qx=[`gasUsedRaw`,`asset`,`amountRole`],$x=[`checkedAt`,`gasResolutionStatus`,`unresolvedReason`],eS=[`balanceChanges`,`asset`,`amountRole`],tS=[`coinType`,`decimals`],nS=[`quoteEvidenceId`,`minOutRaw`],rS=[`maxSlippageBps`,`userSelection`],iS=[`maxSlippageBps`,`minOutRaw`],aS=[`ownerAccount`,`objects`],oS=[`pinned_sdk_registry`,`verified_mainnet_onchain_metadata`,`wallet_account_read`,`quote_evidence`,`review_time_simulation`,`validated_request_fact`,`user_explicit_choice`],sS=[`input`,`expected_output`,`minimum_output`,`gas_budget`,`gas_used`,`fee`,`balance_delta`],cS={input:{kinds:[`validated_request_fact`,`wallet_account_read`,`user_explicit_choice`],fields:Yx},expected_output:{kinds:[`quote_evidence`,`review_time_simulation`],fields:Yx},minimum_output:{kinds:[`quote_evidence`],fields:Xx},gas_budget:{kinds:[`review_time_simulation`],fields:Zx},gas_used:{kinds:[`review_time_simulation`],fields:Qx},fee:{kinds:[`review_time_simulation`],fields:Yx},balance_delta:{kinds:[`review_time_simulation`],fields:eS}},lS={pinned_sdk_metadata:{kinds:[`pinned_sdk_registry`],fields:tS},verified_mainnet_onchain_metadata:{kinds:[`verified_mainnet_onchain_metadata`],fields:tS}},uS={user_explicit:{kinds:[`user_explicit_choice`],fields:rS},adapter_policy_from_quote_evidence:{kinds:[`quote_evidence`],fields:iS}},dS={kinds:[`review_time_simulation`],fields:$x},fS={kinds:[`quote_evidence`],fields:nS},pS={kinds:[`validated_request_fact`],fields:qx},mS={kinds:[`validated_request_fact`],fields:Jx},hS={raw_quantity_amount:{byRole:cS},unit_metadata:{bySource:lS},gas_unresolved_status:dS,expiry_status:{current:pS,expired:pS,not_provided:mS,not_applicable:mS},quote_min_out:fS,slippage_policy:{bySource:uS},object_ownership:{kinds:[`wallet_account_read`],fields:aS},simulation_result:{kinds:[`review_time_simulation`],fields:Hx}},gS={gasBudgetClaimId:{factKind:`raw_quantity_amount`,role:`gas_budget`,assetCoinType:Gx,rawUnit:Kx},gasUsedClaimId:{factKind:`raw_quantity_amount`,role:`gas_used`,assetCoinType:Gx,rawUnit:Kx},gasObjectOwnershipClaimId:{factKind:`object_ownership`,ownership:`owned_by_account`}},_S=M().refine(e=>{let t=new Date(e);return!Number.isNaN(t.getTime())&&t.toISOString()===e},`Expected ISO 8601 UTC timestamp`),vS=Sb(`unsigned integer`),yS=M().regex(/^0x[0-9a-fA-F]{1,64}$/,{message:`Expected a Sui object id`}),bS=M().min(1).max(512).refine(e=>{try{return Tb(e)===e}catch{return!1}},`Expected a normalized Sui struct tag coin type`),X=M().min(1).max(120),xS=L({symbol:M().min(1).max(64).optional(),coinType:bS}).strict(),SS=/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,CS=/(?:0x[0-9a-fA-F]{160,}|[A-Za-z0-9+/_=-]{160,})/;function wS(e,t){return M().min(1).max(e).superRefine((e,n)=>{(SS.test(e)||CS.test(e))&&n.addIssue({code:`custom`,message:`${t} must not contain executable transaction, signing, private-key, mnemonic, or long encoded material`})})}function TS(e,t){let n=new Set(e);return t.filter(e=>!n.has(e))}function ES(e,t,n,r,i){let a=TS(t,n);a.length!==0&&e.addIssue({code:`custom`,path:r,message:`${i} must include ${a.join(`, `)}`})}function DS(e,t,n,r,i){ES(e,t,n,r,i)}function OS(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&&OS(e,r,i)}function kS(e,t,n,r,i){let a=new Set(t),o=new Set(n);if(a.size!==o.size){OS(e,r,i);return}for(let t of a)if(!o.has(t)){OS(e,r,i);return}}function AS(e,t,n,r,i){(t.symbol!==n.symbol||t.coinType!==n.coinType)&&OS(e,r,i)}function jS(e,t,n,r,i){try{Tb(t.coinType)!==n&&OS(e,r,i)}catch{OS(e,r,i)}}var MS=L({kind:B([`natural_language_intent`,`external_proposal`,`mcp_action_request`,`local_review_request`]),sourceId:M().min(1).max(160),capturedAt:_S,authority:V(`untrusted_until_review_regenerates_and_verifies`),userSelectionSource:B([`user_explicit`,`prior_user_explicit_context`]).optional()}).strict(),NS=L({id:X,kind:B(oS),network:V(`sui:mainnet`),source:M().min(1).max(240),verifiedAt:_S,fields:I(M().min(1).max(120)).min(1)}).strict(),PS=ep(`factKind`,[L({id:X,factKind:V(`raw_quantity_amount`),sourceEvidenceId:X,role:B(sS),asset:xS,rawAmount:vS}).strict(),L({id:X,factKind:V(`unit_metadata`),sourceEvidenceId:X,source:B([`pinned_sdk_metadata`,`verified_mainnet_onchain_metadata`]),coinType:bS,decimals:N().int().min(0).max(255)}).strict(),L({id:X,factKind:V(`gas_unresolved_status`),sourceEvidenceId:X,checkedAt:_S,status:V(`unresolved`),reason:M().min(1).max(240)}).strict(),L({id:X,factKind:V(`expiry_status`),sourceEvidenceId:X,checkedAt:_S,status:B([`current`,`expired`,`not_provided`,`not_applicable`]),expiresAt:_S.optional(),reason:M().min(1).max(240).optional()}).strict(),L({id:X,factKind:V(`quote_min_out`),sourceEvidenceId:X,quoteEvidenceId:M().min(1).max(120),minOutRaw:vS}).strict(),L({id:X,factKind:V(`slippage_policy`),sourceEvidenceId:X,policySource:B([`user_explicit`,`adapter_policy_from_quote_evidence`]),maxSlippageBps:N().int().min(0).max(1e4),minOutRaw:vS.optional()}).strict(),L({id:X,factKind:V(`object_ownership`),sourceEvidenceId:X,objectId:yS,ownerAccount:Y,ownership:B([`owned_by_account`,`shared_object`,`immutable_or_package`,`not_owned_by_account`])}).strict(),L({id:X,factKind:V(`simulation_result`),sourceEvidenceId:X,provider:zx,checksEnabled:V(!0),simulatedAt:_S,status:B([`success`,`failed`,`unavailable`]),requiredFields:I(B(Hx)).min(Hx.length),missingFields:I(B(Hx)).default([]),failureReason:M().min(1).max(240).optional()}).strict()]),FS=L({id:X,role:B(sS),asset:xS,rawAmount:vS,unit:L({decimals:N().int().min(0).max(255),source:B([`pinned_sdk_metadata`,`verified_mainnet_onchain_metadata`]),sourceField:M().min(1).max(160),unitClaimId:X}).strict(),amountClaimId:X,displayOnly:L({amountDisplay:M().min(1).max(120),reason:V(`presentation_only_not_signing_input`)}).strict().optional()}).strict(),IS=L({objectId:yS,ownerAccount:Y,ownershipClaimId:X}).strict(),LS=L({source:V(`review_time_simulation`),checkedAt:_S,gasBudgetRaw:vS.optional(),gasBudgetClaimId:X.optional(),gasUsedRaw:vS.optional(),gasUsedClaimId:X.optional(),gasObjects:I(IS).optional(),unresolvedReason:M().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`})}),RS=ep(`status`,[L({checkedAt:_S,status:V(`current`),expiresAt:_S,evidenceClaimId:X}).strict(),L({checkedAt:_S,status:V(`expired`),expiresAt:_S,evidenceClaimId:X}).strict(),L({checkedAt:_S,status:V(`not_provided`),evidenceClaimId:X,reason:M().min(1).max(240),expiresAt:qf().optional()}).strict(),L({checkedAt:_S,status:V(`not_applicable`),evidenceClaimId:X,reason:M().min(1).max(240),expiresAt:qf().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`})}),zS=L({status:B([`required_and_verified`,`not_required_for_action`,`missing`,`stale`]),quoteEvidenceId:M().min(1).max(120).optional(),quoteEvidenceClaimId:X.optional(),maxSlippageBps:N().int().min(0).max(1e4).optional(),minOutRaw:vS.optional(),policySource:B([`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`})}),BS=L({checkedAt:_S,ownerAccount:Y,objects:I(L({objectId:yS,role:B([`input_coin`,`gas_coin`,`protocol_object`,`shared_object`,`receiving_object`]),ownership:B([`owned_by_account`,`shared_object`,`immutable_or_package`,`not_owned_by_account`]),evidenceClaimId:X}).strict()).min(1)}).strict(),VS=L({evidenceClaimId:X,transactionDigest:hb,provider:zx,checksEnabled:V(!0),simulatedAt:_S,status:B([`success`,`failed`,`unavailable`]),requiredFields:I(B(Hx)).min(Hx.length),missingFields:I(B(Hx)).default([]),failureReason:M().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=>Hx.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`}),HS=L({fields:I(B(Vx)).min(Vx.length),transactionDigest:hb,source:V(`review_model_or_adapter_equivalent`),purpose:V(`human_review_before_wallet_authorization`)}).strict().refine(e=>Vx.every(t=>e.fields.includes(t)),{message:`Human-readable review fields must include every required review field`}),US=L({runtimeStatus:V(`emitted_pre_handoff`),mcpAndReviewUiMayExpose:I(B([`human_readable_review`,`ptb_visualization_artifact`,`diagnostics`,`status_checks`])).min(1),prohibited:I(B(Ux)).min(1)}).strict().superRefine((e,t)=>{DS(t,e.prohibited,Ux,[`prohibited`],`prohibited`)}),WS=L({schemaVersion:V(1),adapterId:M().min(1).max(120),protocol:M().min(1).max(120),actionKind:M().min(1).max(120),network:V(`sui:mainnet`),inputProvenance:MS,sourceReferences:I(NS).min(1),evidenceClaims:I(PS).min(1),rawQuantities:I(FS).min(1),gas:LS,expiry:RS,slippageOrMinOut:zS,objectOwnership:BS,simulation:VS,humanReadableReview:HS,outputBoundary:US,reviewedTransactionDigest:hb}).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(`, `)}`}),ES(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}`});return}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,hS.raw_quantity_amount.byRole[e.role],[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].raw_quantity_amount`),e.factKind===`unit_metadata`&&l(e.sourceEvidenceId,hS.unit_metadata.bySource[e.source],[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].unit_metadata`),e.factKind===`gas_unresolved_status`&&l(e.sourceEvidenceId,hS.gas_unresolved_status,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].gas_unresolved_status`),e.factKind===`expiry_status`&&(l(e.sourceEvidenceId,hS.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,hS.quote_min_out,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].quote_min_out`),e.factKind===`slippage_policy`&&(l(e.sourceEvidenceId,hS.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,hS.object_ownership,[`evidenceClaims`,n,`sourceEvidenceId`],`evidenceClaims[${n}].object_ownership`),e.factKind===`simulation_result`&&(l(e.sourceEvidenceId,hS.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`}),Hx.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`),AS(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,gS.gasBudgetClaimId.role,[`gas`,`gasBudgetClaimId`],`gas.gasBudgetClaimId role`),jS(t,n.asset,gS.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,gS.gasUsedClaimId.role,[`gas`,`gasUsedClaimId`],`gas.gasUsedClaimId role`),jS(t,n.asset,gS.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,gS.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`),kS(t,e.simulation.requiredFields,f.requiredFields,[`simulation`,`requiredFields`],`simulation.requiredFields`),kS(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`)}),GS=L({contractVersion:V(Bx),artifactKind:V(`ptb_visualization`),generatedAt:_S,source:L({adapterId:M().min(1).max(120),planId:M().min(1).max(120).optional(),sourceKind:B([`review_time_generated_transaction_kind`,`review_time_ir`,`renderer_model`]),authority:V(`visualization_only_not_wallet_authorization`),renderer:L({name:M().min(1).max(120),packageName:M().min(1).max(120).optional(),version:M().min(1).max(80).optional()}).strict().optional()}).strict(),mermaid:L({diagramType:V(`flowchart`),text:wS(2e4,`mermaid.text`),namedText:wS(2e4,`mermaid.namedText`)}).strict(),diagnostics:I(L({severity:B([`info`,`warning`,`error`]),code:M().min(1).max(120),message:wS(512,`diagnostics.message`),source:B([`adapter`,`renderer`,`schema`,`simulation`])}).strict()).default([]),unsupportedUse:I(B(Wx)).min(1),executableMaterial:L({included:V(!1),policy:V(`mcp_and_review_ui_outputs_must_not_include_executable_transaction_material`)}).strict()}).strict().superRefine((e,t)=>{DS(t,e.unsupportedUse,Wx,[`unsupportedUse`],`unsupportedUse`)});yh();var KS=z(M(),F()),qS=B(Fx),JS=B(Ix);B([`ready_for_wallet_review`,`refresh_required`,`blocked`]);var YS=B(Lx);B([`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 XS=L({id:M(),label:M(),status:B([`pass`,`warning`,`fail`]),message:M(),source:B([`registry`,`quote`,`wallet`,`simulation`,`adapter`,`network`,`proposal`])}),ZS=M().min(1),QS=`human_readable_review`,$S=`review_time_simulation`,eC=L({stageCatalogId:M().min(1),adapterId:M(),protocol:M(),actionKind:M(),completedStages:I(ZS),missingStages:I(ZS)}).strict().superRefine((e,t)=>{let n=tC(e.completedStages);n&&t.addIssue({code:`custom`,path:[`completedStages`],message:`completedStages contains duplicate stage '${n}'`});let r=tC(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 tC(e){let t=new Set;for(let n of e){if(t.has(n))return n;t.add(n)}}var nC=L({symbol:M(),amount:M(),coinType:M().optional(),approx:P().optional()}).strict(),rC=nC.extend({amountKind:V(`display_intent`).default(`display_intent`)}),iC=L({outgoing:I(rC),expectedIncoming:I(rC),minimumIncoming:I(rC).optional(),fees:I(rC).optional()}),aC=L({outgoing:I(nC),expectedIncoming:I(nC),minimumIncoming:I(nC).optional(),fees:I(nC).optional()}),oC=L({before:I(nC),after:I(nC),delta:I(nC)}),sC=L({computationCostRaw:bb(`computationCostRaw`),storageCostRaw:bb(`storageCostRaw`),storageRebateRaw:bb(`storageRebateRaw`),nonRefundableStorageFeeRaw:bb(`nonRefundableStorageFeeRaw`)}).strict(),cC=L({address:Y,coinType:M().min(1).max(512).refine(e=>{try{return Tb(e)===e}catch{return!1}},`Expected a normalized Sui struct tag coin type`),amount:wb(`balanceChanges[].amount`)}).strict(),lC=L({objectId:Y,objectType:M().min(1).max(512).optional(),inputState:M().min(1).max(80),outputState:M().min(1).max(80),idOperation:M().min(1).max(80)}).strict(),uC=L({provider:zx,checksEnabled:P(),success:P(),gasCostSummary:sC.optional(),balanceChanges:I(cC).optional(),objectChanges:I(lC).optional(),error:M().optional()}),dC=uC,fC=uC.extend({checksEnabled:V(!0),success:V(!0),gasCostSummary:sC,balanceChanges:I(cC),objectChanges:I(lC),error:qf().optional()}).strict(),pC=L({role:B([`input`,`expected_output`,`minimum_output`,`fee`]),symbol:M(),coinType:M().min(1).max(512).refine(e=>{try{return Tb(e),!0}catch{return!1}},`Expected a Sui struct tag coin type`),decimals:N().int().min(0).max(255),rawAmount:bb(`rawAmount`),rawAmountSource:V(`quote_policy_evidence`),displayAmount:M().optional(),displayAmountSource:V(`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`})}),mC=L({role:B([`connected_account`,`output_recipient`]),address:Y}).strict(),hC=L({kind:V(`swap_output_asset`),symbol:M(),coinType:M().min(1).max(512).refine(e=>{try{return Tb(e),!0}catch{return!1}},`Expected a Sui struct tag coin type`),protocol:M(),poolKey:M(),direction:B([`base_to_quote`,`quote_to_base`])}).strict(),gC=L({id:M(),label:M(),source:R([B([`registry`,`quote`,`wallet`,`simulation`,`adapter`,`network`,`proposal`]),B([`transaction_material`,`digest_commitment`])]),summary:M()}).strict(),_C=L({id:M(),label:M(),reason:M()}).strict(),vC=L({proposedAction:L({title:M(),summary:M(),actionKind:M(),adapterId:M(),protocol:M(),network:V(`sui:mainnet`)}).strict(),recipients:I(mC),evidenceUsed:I(gC),missingEvidence:I(_C),requiredUserChoices:I(_C),unsupportedClaims:I(_C),freshness:L({status:V(`current`),evaluatedAt:M(),expiresAt:M(),reason:M()}).strict(),blockingChecks:I(XS)}).strict(),yC=L({assetFlow:L({outgoing:I(pC),expectedIncoming:I(pC),minimumIncoming:I(pC),fees:I(pC)}).strict(),targets:I(hC)}).strict(),bC=ep(`kind`,[vC.extend({kind:V(`swap_human_readable_review`)}).merge(yC)]),xC=L({id:M(),actionKind:M(),adapterId:M(),protocol:M(),title:M(),summary:M(),assetFlowPreview:iC,reviewModel:Px.optional(),adapterData:KS,createdAt:M(),expiresAt:M().optional(),registryVersion:M().optional(),preliminaryChecks:I(XS).optional()}),SC=L({planId:M(),reviewSessionId:M(),account:Y,checks:I(XS),assetFlowActual:aC.optional(),beforeAfterBalance:oC.optional(),simulation:dC.optional(),humanReadableReview:bC.optional(),transactionReviewData:WS.optional(),ptbVisualization:GS.optional(),adapterLifecycle:eC.optional(),updatedAt:M()}),CC=ep(`status`,[SC.extend({status:V(`ready_for_wallet_review`),evidenceValidity:qf().optional(),blockedReason:qf().optional(),refreshReason:qf().optional()}),SC.extend({status:V(`refresh_required`),evidenceValidity:V(`invalidated`).optional(),refreshReason:JS,blockedReason:qf().optional()}),SC.extend({status:V(`blocked`),evidenceValidity:V(`invalidated`).optional(),blockedReason:qS,refreshReason:qf().optional()})]).superRefine((e,t)=>{if(e.evidenceValidity===`invalidated`)for(let n of Rx)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&&wC(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 wC(e,t){let n=e.adapterLifecycle;n&&(e.humanReadableReview!==void 0&&TC(t,n,QS,[`humanReadableReview`]),e.simulation!==void 0&&(TC(t,n,$S,[`simulation`]),TC(t,n,QS,[`simulation`]),EC(t,e.simulation,[`simulation`])),n.missingStages.includes($S)&&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(QS)&&e.humanReadableReview!==void 0&&t.addIssue({code:`custom`,path:[`humanReadableReview`],message:`humanReadableReview public evidence cannot be present while human_readable_review is missing`}))}function TC(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 EC(e,t,n){fC.safeParse(t).success||e.addIssue({code:`custom`,path:n,message:`simulation public evidence requires a successful checks-enabled review-time simulation projection`})}yh();var DC=L({topic:M().min(1),accounts:I(Y).min(1),methods:I(M()),chain:V(Lb),expiresAt:M().datetime(),walletName:M().optional()}).strict(),OC=ep(`status`,[L({topic:M().min(1),version:N().int().positive(),status:V(`present`),session:DC}).strict(),L({topic:M().min(1),version:N().int().positive(),status:B([`absent`,`unusable`])}).strict()]),kC=L({runId:Rb,sequence:N().int().positive(),observedAt:M().datetime()}).strict();kC.extend({sessions:I(OC)}).strict();var AC=L({kind:V(`wallet_service_recovery`),priorRunId:Rb,admittedAt:M().datetime(),updatedAt:M().datetime()}),jC=R([AC.extend({phase:V(`stopping`)}).strict(),AC.extend({phase:V(`starting`),nextRunId:Rb}).strict(),AC.extend({outcome:B([`available`,`failed`,`superseded`,`server_restarted`]),nextRunId:Rb.optional(),message:M().optional()}).strict()]);yh();var MC=`A wallet connection provides account context; it is not a transaction approval or proof of address ownership.`,NC=`Review evidence is not a safety guarantee. Only an explicit card action and wallet approval may authorize this exact transaction.`,PC=Wb.extend({pendingAction:V(`disconnect`).optional()});B([`input_required`,`awaiting_approval`,`disconnect_pending`]);var FC=L({action:V(`connect`),walletRunId:Rb}).strict(),IC=L({action:V(`disconnect`),walletRunId:Rb,connectionId:M().min(1)}).strict(),LC=L({action:V(`use_account`),walletRunId:Rb,connectionId:M().min(1),account:Y}).strict(),RC=L({action:B([`prepare_review`,`request_signature`]),connectionId:M().min(1),walletRunId:Rb,account:Y,reviewRevision:N().int().nonnegative()}).strict(),zC=R([FC,IC,LC,RC,L({action:B([`cancel`,`stop_connection`,`stop_waiting`,`read_result`])}).strict()]),BC=R([FC,RC.extend({action:V(`prepare_review`)})]),VC=L({kind:B([`connect`,`review`]),mode:B([`connect`,`review`,`review_manage`]),allowedActions:I(B(qb)),actionRemainingMs:N().int().nonnegative(),nextStateReadAfterMs:N().int().nonnegative().optional(),automaticAction:BC.optional(),observe:P(),walletAvailability:Vb,walletObservation:kC.optional(),runtimeRecovery:jC.optional(),connectionConflict:Gb.optional(),manageableConnectionIds:I(M().min(1)),connectionReconciliationRequired:V(!0).optional(),usableConnectionId:M().min(1).optional(),assetReadAccount:Kb.optional(),acceptedWalletRunId:Rb.optional(),progress:Hb,boundary:B([MC,NC]),connections:I(PC),activeAccount:M().optional(),connection:PC.optional(),connectionAction:B([`connect`,`disconnect`]).optional(),review:L({reviewSessionId:M(),plan:xC,reviewRevision:N().int().nonnegative(),status:YS,account:M().optional(),preparing:P(),accountRequestPending:V(!0).optional(),error:M().optional(),state:CC.optional()}).strict().optional(),request:Ib.optional(),receipt:F().optional(),netGasMist:M().regex(/^-?[0-9]+$/).optional(),observationStopped:P().optional()}).strict().superRefine((e,t)=>{let n=e.connections.find(t=>t.connectionId===e.usableConnectionId);e.usableConnectionId&&(!n||n.status!==`connected`||e.walletAvailability.status!==`available`||e.connectionConflict||e.connectionReconciliationRequired||e.connections.some(e=>e.pendingAction||e.status===`awaiting_approval`))&&t.addIssue({code:`custom`,path:[`usableConnectionId`],message:`The usable connection must match current connection facts.`}),(new Set(e.manageableConnectionIds).size!==e.manageableConnectionIds.length||e.manageableConnectionIds.some(t=>!e.connections.some(e=>e.connectionId===t&&!e.pendingAction&&e.status!==`awaiting_approval`)))&&t.addIssue({code:`custom`,path:[`manageableConnectionIds`],message:`Management must name distinct recorded targets without pending operations.`}),e.connectionReconciliationRequired&&(e.usableConnectionId||e.assetReadAccount?.status===`available`||e.allowedActions.some(e=>[`connect`,`use_account`,`prepare_review`,`request_signature`].includes(e)))&&t.addIssue({code:`custom`,path:[`connectionReconciliationRequired`],message:`Unrecorded SDK connections cannot authorize connection or account use.`}),e.assetReadAccount?.status===`available`&&(!n||!n.accounts.includes(e.assetReadAccount.account)||e.activeAccount!==e.assetReadAccount.account)&&t.addIssue({code:`custom`,path:[`assetReadAccount`],message:`The default address must belong to the usable connection and stored selection.`})});function HC(e,t,n=!1){return e.connections.filter(r=>r.connectionId===e.usableConnectionId&&r.accounts.includes(t)&&(!n||r.methods.includes(`sui_signTransaction`)))}var UC=`sui-mcp.local-data`;yh();var WC=16*1024*1024,Q=M().uuid(),GC=N().int().nonnegative().safe(),KC=M().regex(/^[a-f0-9]{64}$/),qC=ep(`status`,[L({status:V(`no_file`)}).strict(),L({status:V(`receiving`)}).strict(),L({status:V(`checking`)}).strict(),L({status:V(`check_required`),message:M().min(1)}).strict(),L({status:V(`can_restore`)}).strict(),L({status:V(`cannot_restore`),reason:B([`invalid_backup`,`file_unavailable`,`wallet_request_unsettled`,`operation_busy`,`input_unavailable`,`check_failed`]),message:M().min(1)}).strict()]);L({fileId:Q,sha256:KC,totalSize:GC,dataEpoch:GC,userDataRevision:GC,check:qC}).strict();var JC=ep(`kind`,[L({kind:V(`set_endpoint`),endpoint:B([`grpc`,`graphql`]),value:M().min(1)}).strict(),L({kind:V(`restore_endpoint`),endpoint:B([`grpc`,`graphql`])}).strict(),L({kind:B([`clear_read_address`,`export_local_data`,`download_backup`,`import_local_data`,`reset_local_data`,`restart_wallet_service`])}).strict()]),YC=B([`acknowledged`,`not_completed`,`unconfirmed`,`unsupported`]),XC=L({method:V(`ui/download-file`),code:V(-32601)}).strict(),ZC=B([`acknowledged`,`cancelled`,`expired`,`server_restarted`,`data_replaced`,`source_unavailable`,`stored_locally`,`local_save_failed`]),QC=L({device:M().regex(/^\d+$/),inode:M().regex(/^\d+$/)}).strict(),$C=B([`not_published`,`target_conflict`,`source_unavailable`,`interrupted`]),ew=L({status:B([`needs_consent`,`saving`,`saved`,`failed`]),attemptId:Q,fileId:Q,sha256:KC,totalSize:GC,destination:M(),ownerId:M().min(1),currentSaveAttemptId:Q.optional(),attempts:I(L({saveAttemptId:Q,previousSaveAttemptId:Q.optional(),admittedAt:M().datetime(),allowPossibleCopy:P()}).strict()),sourceIdentity:QC.optional(),savedAt:M().datetime().optional(),failure:$C.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.`})});L({currentAttemptId:Q,attempts:I(L({attemptId:Q,admittedAt:M().datetime(),previousAttemptId:Q.optional(),hostReport:YC.optional(),failure:XC.optional()}).strict()).min(1),readyAt:M().datetime().optional(),expiresAt:M().datetime().optional(),endReason:ZC.optional(),localSave:ew.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 tw=B([`settings_retry_download`,`settings_report_download`,`settings_cancel_download`,`settings_store_backup`]),nw=ep(`action`,[L({action:V(`settings_download_backup`),operationId:Q,attemptId:Q}).strict(),L({action:V(`settings_retry_download`),operationId:Q,fileId:Q,previousAttemptId:Q,attemptId:Q}).strict(),L({action:V(`settings_report_download`),operationId:Q,fileId:Q,attemptId:Q,status:YC,failure:XC.optional()}).strict().refine(e=>e.status===`unsupported`==(e.failure!==void 0),`Only unsupported downloads require the exact method failure.`),L({action:V(`settings_store_backup`),operationId:Q,fileId:Q,attemptId:Q,saveAttemptId:Q,previousSaveAttemptId:Q.optional(),allowPossibleCopy:P()}).strict(),L({action:V(`settings_cancel_download`),operationId:Q,fileId:Q,attemptId:Q}).strict(),L({action:V(`settings_select`),draft:JC}).strict(),L({action:V(`settings_prepare`),operationId:Q}).strict(),L({action:V(`settings_begin_upload`),operationId:Q,name:M().min(1),totalSize:GC.max(WC),sha256:KC}).strict(),L({action:V(`settings_upload_chunk`),operationId:Q,fileId:Q,offset:GC.max(WC),chunkBase64:M()}).strict(),L({action:V(`settings_seal_upload`),operationId:Q,fileId:Q}).strict(),L({action:V(`settings_confirm`),operationId:Q,preparationId:Q}).strict(),L({action:V(`settings_back`),operationId:Q}).strict(),L({action:V(`settings_cancel`)}).strict()]),rw=L({outcome:B([`completed`,`failed`,`interrupted`,`superseded`]),recordedAt:M().datetime(),message:M().min(1),details:z(M(),F()).optional(),completionScope:V(`backup_snapshot`).optional()}).strict(),iw=L({storedValue:M(),effectiveValue:M(),source:B([`environment`,`local_db`,`builtin_default`]),pendingStoredValue:M().optional(),appliesAfter:V(`mcp_server_restart`).optional()}).strict(),aw=L({endpoint:B([`grpc`,`graphql`]),key:B([`suiGrpcUrl`,`suiGraphqlUrl`]),value:M().min(1),status:B([`saved`,`reset`]),storedValue:M(),effectiveValue:M(),source:iw.shape.source}).strict().refine(e=>e.key===(e.endpoint===`grpc`?`suiGrpcUrl`:`suiGraphqlUrl`),`The endpoint kind and preference key must agree.`),ow=N().int().nonnegative().safe(),sw=L({accounts:ow,reviewSessions:ow,reviewStateSnapshots:ow,reviewStatusTransitions:ow,reviewExecutions:ow,reviewRequests:ow,outcomeUnknownRequests:ow,externalActivityScans:ow,externalActivityTransactions:ow,localSettings:ow}).strict(),cw=L({status:V(`valid`),format:V(UC),network:V(`mainnet`),exportedAt:M().datetime(),currentCounts:sw,incomingCounts:sw,willReplace:V(!0),activeAccountChange:B([`unchanged`,`set`,`cleared`]),currentReadAddress:Y.nullable(),incomingReadAddress:Y.nullable(),restartRequiredAfterImport:P()}).strict(),lw=L({kind:V(`settings`),operationId:Q,phase:B([`draft`,`uploading`,`sealed`,`prepared`,`executing`,`stopping`,`starting`,`terminal`]),draft:JC.optional(),preparationId:Q.optional(),preparation:z(M(),F()).optional(),file:L({fileId:Q,displayName:M(),totalSize:GC,receivedSize:GC,sha256:KC,sealed:P(),cleanup:B([`pending`,`complete`,`failed`])}).strict().optional(),download:L({availability:B([`preparing`,`available`,`ended`]),currentAttemptId:Q,hostReport:YC.optional(),previousUnconfirmed:P(),endReason:ZC.optional(),expiresAt:M().datetime().optional(),remainingMs:GC.optional(),localSave:L({status:B([`needs_consent`,`saving`,`saved`,`failed`]),currentSaveAttemptId:Q.optional(),failure:$C.optional(),savedAt:M().datetime().optional()}).strict().optional(),allowedFileActions:I(tw)}).strict().optional(),restoreCheck:qC.optional(),backupLocation:L({directory:M().min(1),filename:M().min(1)}).strict().optional(),result:rw.optional(),temporaryFileCleanup:B([`pending`,`complete`,`failed`]).optional(),priorRunId:Q.optional(),nextRunId:Q.optional(),supersedesOperationId:Q.optional(),supersededByOperationId:Q.optional(),allowedActions:I(B(nw.options.map(e=>e.shape.action.value))),observe:P(),facts:L({server:L({name:M(),version:M(),network:V(`mainnet`)}).strict(),localSettings:L({suiGrpcUrl:iw,suiGraphqlUrl:iw}).strict(),readAddress:M().optional(),assetReadAccount:Kb,walletAvailability:Vb,connectionReconciliationRequired:V(!0).optional(),observedAt:M().datetime().optional(),counts:sw}).strict().optional()}).strict().superRefine((e,t)=>{if(e.download&&(e.draft?.kind!==`download_backup`||!e.file||e.download.availability===`available`&&(!e.file.sealed||!e.result||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===`export_local_data`||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.draft?.kind===`export_local_data`&&e.result?.outcome===`completed`&&typeof e.result.details?.path==`string`&&!e.backupLocation&&t.addIssue({code:`custom`,message:`A recorded backup path must provide its folder and file name.`}),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))&&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`&&!cw.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=aw.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.`})}),uw=64*1024;function dw(e){return new TextEncoder().encode(JSON.stringify(e)).length}function fw(e){let t=uw-dw(e);return t>0?3*Math.floor(t/4):0}function pw(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=WC,t.params.arguments.input.chunkBase64=``,fw(t)}var mw={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`,actionPrepareSuiActionReview:`action.prepare_sui_action_review`,actionPrepareExternalProposalReview:`action.prepare_external_proposal_review`,sessionCreateWalletConnection:`session.create_wallet_connection`,sessionGetWalletConnection:`session.get_wallet_connection`,sessionWaitWalletConnection:`session.wait_wallet_connection`,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`};yh();var hw=L({connectionId:M().min(1),pairingUri:M().startsWith(`wc:`),expiresAt:M().datetime()}).strict(),gw=B([`account`,`receipt`,`chart`,`connect`,`review`,`settings`]),_w=L({cardId:M().min(1),kind:gw,state:B([`ready`,`running`,`closed`]),revision:N().int().nonnegative(),createdAt:M().datetime(),expiresAt:M().datetime(),input:z(M(),F()),data:F().optional(),reason:B([`completed`,`expired`,`failed`,`server_restarted`,`cancelled`]).optional(),error:M().optional()}).strict().extend({pollAfterMs:N().int().positive(),inputRemainingMs:N().int().nonnegative()}),vw=L({transactionDigest:M().min(1),pureInputs:I(L({index:N().int().nonnegative(),bytes:M().regex(/^0x(?:[0-9a-f]{2})*$/i)}).strict()).refine(e=>new Set(e.map(e=>e.index)).size===e.length,`Duplicate input index.`),ptbGraph:L({mermaid:L({text:M(),namedText:M()}).strict()}).strict().optional()}).strict();yh();var yw=`sui-mcp/card`,bw=`sui-mcp/receipt-display`,xw=`sui-mcp/wallet-display`,Sw=`sui-mcp/settings-file`,Cw=`suimcp://cards/`,ww=ep(`kind`,[L({kind:V(`account`),status:V(`input_required`),field:V(`account`),message:M().min(1)}).strict(),L({kind:V(`receipt`),status:V(`input_required`),field:V(`digest`),message:M().min(1)}).strict()]),Tw=L({cardId:M().min(1),permission:M().min(1)}).strict();Tw.extend({revision:N().int().nonnegative(),input:z(M(),F())}).strict();var Ew=vw.extend({cardId:M().min(1),revision:N().int().nonnegative(),attemptId:M().min(1).optional()}),Dw=hw.extend({cardId:M().min(1),revision:N().int().nonnegative()}),Ow=L({attemptId:M().uuid().optional(),cardId:M().min(1),operationId:M().uuid(),fileId:M().uuid(),offset:N().int().nonnegative().safe(),totalSize:N().int().nonnegative().safe(),sha256:M().regex(/^[a-f0-9]{64}$/),chunkBase64:M()}).strict(),kw={account:mw.uiOpenAccount,receipt:mw.uiOpenReceipt,chart:mw.uiOpenChart,read:mw.uiReadCard,submit:mw.uiSubmitCard,act:mw.uiActCard,readSettingsFile:mw.uiReadSettingsFile};function $(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function Aw(e){return e.kind!==`import_local_data`}function jw(e,t,n){if(e.kind!==`settings`||t.kind!==`settings`||e.cardId!==t.cardId||t.state!==`ready`)return;let r=lw.safeParse(e.data),i=lw.safeParse(t.data);if(!r.success||!i.success)return;let a=r.data,o=i.data,s=o.draft;if(!s||!a.draft||a.operationId!==o.operationId||n.operationId!==o.operationId||JSON.stringify(a.draft)!==JSON.stringify(s))return;if(Aw(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 Mw(e){return Object.keys(e).filter(t=>e[t]!==void 0)}function Nw(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)=>Nw(e,t[n]));let n=$(e),r=$(t);if(!n||!r)return!1;let i=Mw(n);return i.length===Mw(r).length&&i.every(e=>Object.hasOwn(r,e)&&Nw(n[e],r[e]))}function Pw(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&&!Nw(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=y_.safeParse(i);if(!n.success)throw r();o=Pw(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 Mw(t)){let n=t[e];if(Object.hasOwn(c,e)&&!Nw(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 Fw(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 Iw(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(Cw.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 Lw(e){let t=$(e.structuredContent),n=t?.ok===!0?ww.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:_w.parse(i);a?.kind===`settings`&&lw.parse(a.data);let o=$(e._meta)?.[bw],s=o===void 0?void 0:Ew.parse(o);if(s&&!Fw(a,s))throw Error(`Transaction details do not match this saved result.`);let c=$(e._meta)?.[xw],l=c===void 0?void 0:Dw.parse(c);if(l&&(!a||a.kind!==`connect`||l.cardId!==a.cardId||l.revision!==a.revision||l.connectionId!==$($(a.data)?.connection)?.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 Rw(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 Wv({name:`sui-mcp-card`,version:`0.6.1`},{},{autoResize:!0,strict:!0}),d=new AbortController,f=e===`connect`||e===`review`,p=e===`settings`,ee=f||p,te=!1,m,ne,re,h,g,ie,ae,oe=!1,se=!1,ce,_,v={status:`unconfirmed`},le,y,ue,b,x,de=`continue`,fe,pe,me=0,he=0,ge,_e,ve,S,C,ye,w,be,xe=!1;function Se(){if(!b||!h)return;let{input:e,basis:t}=b,n=$(h.data),r=$(t.data),i=$(n?.request),a=$(n?.review),o=$(n?.connection),s=$(r?.request),c=$(r?.connection),l=!!i&&i.attemptId===s?.attemptId,u=!!o&&o.connectionId===c?.connectionId;if(!f)return h.state===`running`||h.reason===`completed`?b.delivery===`rejected`?`past`:`observed`:h.state===`closed`?`past`:`active`;if(e.walletRunId&&e.walletRunId!==$(n?.walletAvailability)?.walletRunId&&e.walletRunId!==n?.acceptedWalletRunId)return`past`;switch(e.action){case`connect`:if(h.state!==`ready`&&o)return`observed`;if(n?.walletAvailability&&$(n.walletAvailability)?.status===`available`&&Array.isArray(n.connections)&&n.connections.some(e=>$(e)?.status===`connected`))return`past`;break;case`prepare_review`:if(typeof a?.reviewRevision==`number`&&typeof e.reviewRevision==`number`&&a.reviewRevision>e.reviewRevision)return a.account===e.account?`observed`:`past`;break;case`request_signature`:if(i?.account===e.account&&i?.reviewRevision===e.reviewRevision)return`observed`;if(typeof a?.reviewRevision==`number`&&typeof e.reviewRevision==`number`&&a.reviewRevision>e.reviewRevision||!i&&a&&a.reviewRevision===e.reviewRevision&&a.account===e.account&&a.status===`refresh_required`&&$(a.state)?.refreshReason===`review_evidence_stale`&&Array.isArray(n?.allowedActions)&&n.allowedActions.includes(`prepare_review`))return`past`;break;case`cancel`:if(h.reason===`cancelled`)return`observed`;break;case`disconnect`:if(o&&o.connectionId===e.connectionId&&(o.pendingAction===`disconnect`||h.state!==`ready`&&o.status===`disconnected`))return`observed`;break;case`use_account`:if(h.reason===`completed`&&n?.activeAccount===e.account&&o?.connectionId===e.connectionId)return`observed`;break;case`stop_connection`:if(u&&o?.status===`stopped`)return`observed`;if(u&&o?.status!==`awaiting_approval`)return`past`;break;case`stop_waiting`:if(l&&(i?.requestStatus===`stopped`||n?.observationStopped===!0))return`observed`;if(l&&[`completed`,`request_failed`,`outcome_unknown`].includes(String(i?.requestStatus)))return`past`;break;case`read_result`:if(l&&(n?.observe===!0||i?.requestStatus===`completed`))return`observed`;if(l&&[`stopped`,`request_failed`].includes(String(i?.requestStatus)))return`past`;break}return Ce()||typeof n?.actionRemainingMs==`number`&&n.actionRemainingMs<=0||[`connect`,`disconnect`,`use_account`,`cancel`,`prepare_review`,`request_signature`].includes(String(e.action))&&(h.state!==`ready`||a?.status===`expired`)?`past`:`active`}function Ce(){let e=zC.safeParse(b?.input);if(!e.success||e.data.action!==`disconnect`&&e.data.action!==`use_account`)return!1;let t=e.data,n=VC.safeParse(h?.data);if(!n.success)return!1;let r=n.data.connections.find(e=>e.connectionId===t.connectionId);return r?t.action===`disconnect`?n.data.walletAvailability.status===`available`&&!r.pendingAction&&!n.data.manageableConnectionIds.includes(t.connectionId)&&[`disconnected`,`failed`,`rejected`,`stopped`,`expired`].includes(r.status):[`disconnected`,`failed`,`rejected`,`stopped`,`expired`].includes(r.status)||t.action===`use_account`&&r.status===`connected`&&!r.accounts.includes(t.account):!1}function we(){if(!b)return;let e=Se();e&&b.disposition!==`observed`&&(e!==`active`||b.disposition===`active`)&&(b.disposition=e),b.disposition===`observed`&&(b.retryRequired=!1)}function Te(){let e=BC.safeParse($(h?.data)?.automaticAction);return b?.retryRequired&&e.success&&b.input.action===e.data.action?e.data:void 0}function Ee(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`,use_account:`account selection`};return f?t[String(e.input.action)]??`request`:`data request`}function De(e){if(e!==`past`||!b)return;let t=Ee(b),n=b.input.action===`read_result`&&$($(h?.data)?.request)?.requestStatus===`outcome_unknown`?` To check this transaction again, ask to open its result in chat.`:``;return`Message from an earlier ${t}: “${b.message}”${n}`}let Oe,ke;function T(){let t=$(h?.data),n=p?$(t?.download):void 0,r=Array.isArray(n?.allowedFileActions)?n.allowedFileActions:[],i=[...Array.isArray(t?.allowedActions)?t.allowedActions:[],...r.filter(e=>e===`settings_report_download`||Oe===void 0||Date.now()<Oe)],a=e===`review`&&t?.mode===`review`&&!t.request&&!!m&&h?.state===`ready`,o=a&&ge!==void 0&&Date.now()>=ge,s=document.visibilityState!==`hidden`,c=d.signal.aborted||v.status===`rejected`,l=v.status===`confirmed`,u=b?.disposition,re=u===`active`,g=b?.retryRequired===!0,ie=b?.input.action===`request_signature`&&u===`active`,ae=de===`paused`,se=ye?.pending?.()===!0,ce=ye?.displayRecovery?.(),me=l&&!c&&!y&&!se&&!o&&!!m,_e=me&&!x&&!te&&(!ee||!(fe&&(re||g||ae))),ve=BC.safeParse(t?.automaticAction),S=p?$(n?.localSave):void 0,C=!!h&&(ee?t?.observe===!0||S?.status===`saving`:h.state===`running`),w=!!ne&&oe&&!c&&!fe&&s&&(pe===`explicit`||v.status!==`read_failed`&&(pe===`background`||v.status===`needed`&&v.automatic)),be=s&&me&&!le&&!fe&&!pe&&!x&&!g&&!ie&&!ae&&f&&ve.success&&i.includes(ve.data.action)?ve.data:void 0,xe=$(t?.restoreCheck),Se=p&&me&&h?.state===`ready`&&!x&&!te&&!t?.result&&t?.observe!==!0&&(xe?.status===`cannot_restore`&&[`operation_busy`,`wallet_request_unsettled`].includes(String(xe.reason))||!i.includes(`settings_select`)||!i.includes(`settings_download_backup`)||t?.phase===`prepared`&&!i.includes(`settings_confirm`)||t?.phase===`draft`&&$(t.draft)?.kind!==void 0&&$(t.draft)?.kind!==`import_local_data`&&!i.includes(`settings_prepare`)),Ce;!c&&ne&&(v.status===`read_failed`||le||v.status===`unconfirmed`?Ce=`read`:v.status===`needed`?v.automatic||(Ce=`read`):y||ce||p&&[`pending`,`failed`].includes(String(t?.temporaryFileCleanup))||S?.status===`saving`||S?.status===`needs_consent`&&!i.includes(`settings_store_backup`)||S?.status===`failed`&&S.failure===`not_published`&&!n?.endReason&&!i.includes(`settings_store_backup`)||Se?Ce=`read`:m?$(t?.progress)?.status===`unavailable`||$(t?.walletAvailability)?.status===`initializing`&&$(t?.walletAvailability)?.stage===`state_sync`?Ce=`read`:!ae&&Te()?Ce=`retry`:re&&!C&&!(ae&&i.length>0)&&!(b?.input.action===`prepare_review`&&i.includes(`prepare_review`)&&t?.automaticAction===void 0)&&f&&(Ce=`read`):(h?.state!==`closed`||y)&&(Ce=`read`));let we=f?t?.actionRemainingMs:h?.inputRemainingMs;Ce===`retry`&&o&&(Ce=`read`);let ke=f?t?.nextStateReadAfterMs:p&&Oe!==void 0?Math.max(0,Oe-he):void 0,T=[(f?i.length>0:h?.state===`ready`)?we:void 0,ke].filter(e=>typeof e==`number`&&Number.isFinite(e)&&e>0),Ae=!c&&!!m&&s&&!_&&!le&&v.status!==`read_failed`,je=$(t?.review),Me=a&&!c&&!le&&!y&&!re&&!g&&!ae&&v.status!==`read_failed`&&(se||x?.input.action===`prepare_review`||je?.preparing===!0||ve.success&&ve.data.action===`prepare_review`||v.status===`needed`&&je?.status===`ready_for_wallet_review`);return{current:l,inputEnabled:_e,permitted:i,disposition:u,read:w,auto:be,recover:Ce,paused:ae,partialDisplayFailure:ce,settingsInputBlocked:Se,reviewUpdatePending:Me,reviewCommandDeliveryFailed:re&&b?.input.action===`prepare_review`,reviewHint:o?void 0:Me?se||je?.preparing||x?.input.action===`prepare_review`?`Updating review…`:`Checking status…`:a&&$(je?.state)?.refreshReason===`review_evidence_stale`?`Review details are out of date.`:void 0,errors:[v.status===`rejected`?v.message:v.status===`read_failed`?`This card's status could not be checked. Reported message: “${v.message}”`:void 0,le&&v.status!==`rejected`?`This card could not be opened. Reported message: “${le}”`:void 0,re&&b?`Message for this ${Ee(b)}: “${b.message}”`:void 0,y,ce?.message],note:[ue,De(u)].filter(Boolean).join(` `),expiryAt:Ae&&l&&T.length?he+Math.min(...T):void 0,poll:Ae&&(C||v.status===`needed`&&!v.automatic),lifetimeAt:!c&&s&&a?ge:void 0}}function Ae(e){return e.recover===`retry`?b?.input.action===`connect`?`Retry connection`:`Retry review`:e.recover===`read`?`Check status`:void 0}function je(e){if(d.signal.aborted)return``;let n=e.errors.some(Boolean)||e.recover!==void 0||!!h&&!m&&h.state!==`closed`||h?.state===`closed`&&h.reason!==`completed`,r=e.errors.some(Boolean)||v.status!==`confirmed`||e.recover===`retry`||e.settingsInputBlocked;if(n&&r&&v.status!==`rejected`){if(fe||e.read)return`Checking status…`;let t=Ae(e);if(t)return t===`Check status`?y||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.`;if(Me(e)&&ye?.selectionHint)return ye.selectionHint}return t.guidance?.(h,{confirmed:e.current,readOnly:!m,recoveryNeeded:n,visibleConfirmation:ye?.visibleConfirmation?.(),commandPending:ee&&x&&e.current&&!e.errors.some(Boolean)&&(x.phase===`confirming`||h?.state===`ready`&&!$(h.data)?.runtimeRecovery&&!$(h.data)?.request&&!$($(h.data)?.review)?.preparing)?{phase:x.phase,action:String(x.input.action)}:void 0,approvalUnresolved:b?.input.action===`request_signature`&&e.disposition===`active`||x?.input.action===`request_signature`,automaticPaused:e.paused})??``}function Me(e=T()){return e.inputEnabled&&h?.state===`ready`&&xe}function Ne(e,t=T()){return ee&&t.inputEnabled&&(e?t.permitted.includes(e.action):t.permitted.length>0)}function E(e){let t=T();return p&&te&&t.current&&!!m&&!x&&!fe&&!y&&!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)}function Pe(e){let u=$(h?.data),f=s.querySelector(`.review-action-feedback`),ne=s.querySelector(`.review-primary-action`);if(ne&&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=ne?`ui-note`:`ui-error`,h?(r.textContent=t.titleFor?.(h)??t.title,i.textContent=v.status===`rejected`?`Card unavailable`:!e.current&&h.state===`ready`?ne?``:!d.signal.aborted&&(fe||e.read)?`Checking whether actions are available in this card…`:`Actions are unavailable until this card's status is checked.`:!m&&h.state!==`closed`?`View only.`:ee?$(u?.progress)?.status===`unavailable`?`Current progress is unavailable. The last recorded state is shown.`:!u?.request&&h.state===`closed`&&[`expired`,`server_restarted`,`cancelled`].includes(h.reason??``)?`This card no longer accepts actions.`:``:h.state===`running`?`Reading the requested data…`:h.reason===`completed`?``:h.error??(h.reason===`expired`?`The time to make a selection has ended.`:h.reason===`server_restarted`?`This request ended when Sui MCP restarted.`:``)):i.textContent=_?``:v.status===`read_failed`?`Card status unavailable`:le||v.status===`rejected`?`Card unavailable`:`Opening card…`,i.hidden=!i.textContent,a.textContent=[...new Set(e.errors.filter(Boolean))].join(` `),a.hidden=!a.textContent;let re=s.querySelector(`.review-status`);re&&(re.hidden=!!ne&&(e.reviewUpdatePending||!!a.textContent));let g=s.querySelector(`.review-material-status`);if(g&&(g.textContent=g.dataset.previous===`true`||!e.current||e.reviewUpdatePending?g.dataset.previousLabel??``:g.dataset.currentLabel??``),o.textContent=[e.note,je(e)].filter(Boolean).join(` `),o.hidden=!o.textContent,xe)for(let t of s.querySelectorAll(`input, button, select`))(!ee||t.tagName!==`BUTTON`||t.dataset.cardAction!==void 0)&&(t.disabled=ee?!Ne(void 0,e):!Me(e));if(ee)for(let t of s.querySelectorAll(`[data-card-action]`))t.disabled=!Ne({action:t.dataset.cardAction},e);if(p)for(let t of s.querySelectorAll(`[data-settings-file-action]`))t.disabled=t.dataset.settingsLocalBlocked===`true`||!(te?E({action:t.dataset.cardAction}):Ne({action:t.dataset.cardAction},e));ne&&(e.reviewUpdatePending||ne.dataset.cardAction===`request_signature`&&e.reviewCommandDeliveryFailed||ne.dataset.cardAction===void 0)&&(ne.disabled=!0),C&&(C.disabled=!!x||!!fe)}function Fe(e){try{e?.()}catch{y=`The card display could not be closed cleanly. Its stored information is unchanged.`}}function Ie(e){if(!h||d.signal.aborted)return;if(h.state===`ready`&&v.status!==`confirmed`){if(p&&ye?.update)try{ye.update(h,{automaticPaused:de===`paused`,settings:D,settingsCommandProgress:void 0,onDisplayChange:()=>Ve()})}catch{y=`This card could not be displayed. Its stored information is unchanged.`}return}if(h.state===`running`&&!ee){y=void 0;return}let n=ee?{...$(h.data),actionRemainingMs:void 0,nextStateReadAfterMs:void 0,...p&&$(h.data)?.download?{download:{...$($(h.data)?.download),remainingMs:void 0}}:{}}:void 0,r=p&&x?.phase===`sending`&&v.status===`confirmed`?jw(x.basis,h,x.input):void 0,i=`${de===`paused`}:${JSON.stringify(r)}:${h.revision}:${m!==void 0}:${g!==void 0}:${ae!==void 0}:${JSON.stringify(n)}`;if(i===w||i===be&&!e)return;be=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:de===`paused`,onDisplayChange:()=>Ve(),...p?{settings:D,settingsCommandProgress:r}:{}};if(ye?.update?.(h,e)){w=i,y=void 0;return}if(h.state===`ready`&&m){let n=t.controls(h,e=>{Je(e)},g,ae,e);c=`node`in n?n:{node:n},l=!0}else (ee||h.reason===`completed`)&&h.data!==void 0&&(c=t.result(h,g,m?e=>{Je(e)}:void 0,ae,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),Fe(c?.dispose),y=`This card could not be displayed. Its stored information is unchanged.`;return}let f=ye?.dispose;ye=c,xe=l,w=i,y=void 0,Fe(f)}function Le(t,n,r,i,a){if(d.signal.aborted||v.status===`rejected`)return!1;if(t.kind!==e||t.cardId!==ne)throw v={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:BC.safeParse(o.automaticAction);if(l&&!l.success)throw Error(`This card could not start the next step.`);if(h&&t.revision<h.revision)return!1;if(re&&[...new Set([...Object.keys(re),...Object.keys(t.input)])].some(e=>JSON.stringify(t.input[e])!==JSON.stringify(re[e])))throw v={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 v={status:`rejected`,message:`The saved result does not match the information requested in this card.`},Error(v.message);!re&&(f||t.state!==`ready`)&&(re={...t.input});let u=r!==`preview`;if((!h||t.revision!==h.revision)&&(g=void 0,ae=void 0),h=t,we(),u){he=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}`;ke!==e&&(ke=e,Oe=void 0),Oe=Math.min(Oe??1/0,he+Math.max(0,t.remainingMs))}else p&&t?.availability===`ended`&&(Oe=void 0);m&&e===`review`&&o?.mode===`review`&&!o.request&&typeof o.actionRemainingMs==`number`&&Number.isFinite(o.actionRemainingMs)&&o.actionRemainingMs>=0&&(ge=Math.min(ge??1/0,he+o.actionRemainingMs))}return r===`read`&&(v.status!==`needed`||a>v.afterRead)&&(v={status:`confirmed`},le=void 0),n&&(g=n),ae=i,!0}function Re(){_e!==void 0&&clearTimeout(_e),ve!==void 0&&clearTimeout(ve),S!==void 0&&clearTimeout(S),_e=void 0,ve=void 0,S=void 0,l.hidden=!0}function ze(e){let t=Ae(e);C?.textContent!==t&&(C?.remove(),C=void 0,t&&(C=Xv(t,()=>{if(!(fe||x||d.signal.aborted))if(T().recover===`retry`){let e=Te();e&&qe(e)}else Be()})));let n=s.querySelector(`.review-primary-action`),r=s.querySelector(`.review-primary-slot`);n&&(n.hidden=!!C&&!!r),C&&(C.disabled=!!fe||!!x,r?(C.classList.add(`review-recovery-action`),r.append(C)):(C.classList.remove(`review-recovery-action`),c.append(C)))}async function Be(){let e=ye,t=e?.displayRecovery?.(),n=await Ue(!0);n?.kind===`accepted`&&h===n.snapshot&&v.status===`confirmed`&&!d.signal.aborted&&document.visibilityState!==`hidden`&&!y&&e===ye&&t&&e?.displayRecovery?.()===t&&(t.retry(),Ve())}function Ve(e=!1){if(_){let e=document.createElement(`p`);e.className=`ui-note`,e.textContent=_,s.replaceChildren(e)}else Ie(e);let t=T();if(Pe(t),Re(),ze(t),d.signal.aborted||v.status===`rejected`)return;t.expiryAt!==void 0&&(ve=setTimeout(()=>{He(),Ve()},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)S=setTimeout(r,Math.min(1e3,t));else{let e=T();Pe(e),ze(e)}};r()}if(t.poll&&h){let e=he+h.pollAfterMs-Date.now();_e=setTimeout(()=>{Ue(!1)},e>0?e:h.pollAfterMs)}t.read?(pe=void 0,We()):t.auto&&(_e=setTimeout(()=>{let e=T().auto;e&&Xe(e,`automatic`)},0))}function He(){v.status!==`rejected`&&v.status!==`read_failed`&&(v={status:`needed`,afterRead:me,automatic:!0})}function Ue(e){return d.signal.aborted||v.status===`rejected`||!ne||!oe?Promise.resolve(void 0):fe?fe.promise:v.status===`read_failed`&&!e?Promise.resolve(void 0):(pe=e?`explicit`:`background`,Ve(),fe?.promise??Promise.resolve(void 0))}function We(){let e=++me,t=performance.now(),n={id:e,promise:Promise.resolve().then(async()=>{try{let n,r,i;if(m){let e=Lw(await Ge(kw.read,m));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=`${Cw}${encodeURIComponent(ne)}`,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=_w.parse(JSON.parse(t.text));let i=g??ie;r=i&&Fw(n,i)?i:void 0}if(d.signal.aborted||v.status===`rejected`)return{kind:`disposed`,id:e};let a=Le(n,r,`read`,i,e);return ie=void 0,!a&&v.status===`needed`&&e>v.afterRead&&(v={...v,automatic:!1}),Ve(a),a&&v.status===`confirmed`?{kind:`accepted`,snapshot:n,id:e,requestStartedAt:t}:{kind:`ignored`,id:e}}catch(t){return d.signal.aborted?{kind:`disposed`,id:e}:(v.status!==`rejected`&&(v={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(()=>{fe===n&&(fe=void 0),Ve()})};fe=n,Ve()}async function Ge(e,t){return Pw(await u.callServerTool({name:e,arguments:t},{signal:d.signal}))}function Ke(e,t,n){let r=VC.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.allowedActions.includes(`connect`)&&[`connect`,`manage`].includes(String(n.input.intent)):e.action===`prepare_review`||e.action===`request_signature`?i.review?.reviewRevision===e.reviewRevision&&(e.action===`prepare_review`?i.assetReadAccount?.status===`available`?i.assetReadAccount.account:void 0:i.review?.account)===e.account&&HC(i,String(e.account),e.action===`request_signature`).some(t=>t.connectionId===e.connectionId):e.action===`disconnect`?i.manageableConnectionIds.includes(String(e.connectionId))&&i.connections.some(t=>t.connectionId===e.connectionId&&!t.pendingAction):e.action===`use_account`?i.connections.some(t=>t.connectionId===e.connectionId&&t.status===`connected`&&!t.pendingAction&&t.connectionId===i.usableConnectionId&&t.accounts.includes(String(e.account))):i.connection?.connectionId===$(a?.connection)?.connectionId&&i.request?.attemptId===$(a?.request)?.attemptId&&i.review?.reviewRevision===$(a?.review)?.reviewRevision}async function qe(e){if(!h||fe||!Ne(e))return;let t={input:e,basis:h,phase:`confirming`};x=t;let n=await Ue(!1);x===t&&(x=void 0,n?.kind===`accepted`&&h===n.snapshot&&v.status===`confirmed`&&!d.signal.aborted&&document.visibilityState!==`hidden`&&Ke(e,t.basis,n.snapshot)&&Ne(e)?await Xe(e):v.status!==`read_failed`&&v.status!==`rejected`&&!d.signal.aborted&&(ue=`The card state changed. Check the current selection before trying again.`),Ve())}async function Je(e){f&&(b?.disposition===`active`||b?.retryRequired||de===`paused`)?await qe(e):await Xe(e)}function Ye(e,t,n){b={input:e.input,basis:e.basis,message:t,delivery:n,disposition:`active`,retryRequired:e.input.action===`connect`||e.input.action===`prepare_review`},we(),[`cancel`,`disconnect`,`stop_connection`,`stop_waiting`,`use_account`].includes(String(e.input.action))&&(de=`paused`),(ee||n===`unknown`)&&He()}async function Xe(e,t=`user`){if(!h||!m||(t===`file`?!E(e):ee?!Ne(e):!Me()))return;let n={input:e,basis:h,phase:`sending`};x=n,de=`continue`,(t===`user`||b?.disposition!==`past`)&&(b=void 0),ue=void 0,Ve();try{let t=Lw(await Ge(ee?kw.act:kw.submit,{...m,revision:n.basis.revision,input:e}));if(d.signal.aborted||v.status===`rejected`)return;if(!t.snapshot)throw Error(t.error??`The request could not be confirmed.`);t.error&&Ye(n,t.error,`rejected`),Le(t.snapshot,t.display,`action`,t.wallet)}catch(e){!d.signal.aborted&&v.status!==`rejected`&&(Ye(n,e instanceof Error?e.message:`The request could not be confirmed.`,`unknown`),b&&(b.data=$(e)?.data))}finally{x===n&&(x=void 0),Ve()}}let D={uploadChunkLimit(e,t){return m?pw({jsonrpc:`2.0`,id:2**53-1,method:`tools/call`,params:{name:kw.act,arguments:{...m,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 Ue(!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?!E(e):!Ne(e))throw Error(`This Settings action is unavailable until its current status has been checked.`);if(await Xe(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(b?.input===e){let e=Error(b.message);throw e.data=b.data,e}if(!h)throw Error(`The current Settings status could not be checked.`);return h},setFileTransferActive(e){te=e,Ve()},async readFile(e){if(!m||!ne||!T().current||d.signal.aborted)throw Error(`Backup read permission is unavailable.`);let t=await Ge(kw.readSettingsFile,{...m,...e}),n=Ow.parse($(t._meta)?.[Sw]);if(n.cardId!==ne||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=$($(h?.data)?.download);if(!m||!T().current||d.signal.aborted||document.visibilityState===`hidden`||r&&(r.currentAttemptId!==n||r.localSave||r.availability!==`available`||Oe===void 0||Date.now()>=Oe))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 Ze(){if(!(!oe||ce===void 0||se)){se=!0;try{let t=Pw(ce),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?.[yw];if(r!==void 0){let e=Tw.safeParse(r);if(!e.success)throw Error(`This card cannot accept actions with the access information provided by the app.`);m=e.data}let i=Lw(t);if(i.inputRequired){if(i.inputRequired.kind!==e||m)throw Error(`The app provided inconsistent card input information.`);_=i.inputRequired.message,Ve();return}let a=Iw(t),o=[i.snapshot?.cardId,m?.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 v={status:`rejected`,message:`The returned information does not match this card.`},Error(v.message);ne=o[0];let s=i.snapshot;s&&(f||s.state!==`ready`)&&(re={...s.input}),ie=i.display,s&&m&&Le(s,i.display,`preview`,i.wallet),He(),Ve()}catch(e){if(d.signal.aborted)return;le=e instanceof Error?e.message:`Card data could not be read.`,Ve()}}}u.ontoolresult=e=>{if(ce===void 0){ce=e,Ze();return}try{let t=Lw(Pw(ce)).snapshot??h,n=Lw(Pw(e)).snapshot;if(t&&n&&(t.cardId!==n.cardId||t.kind!==n.kind))throw Error(`The app returned a different card.`)}catch{v={status:`rejected`,message:`The returned information does not match this card.`},Ve()}},u.onhostcontextchanged=e=>{e.theme&&(document.documentElement.dataset.theme=e.theme)};let Qe=()=>{document.visibilityState!==`hidden`&&m&&se&&v.status!==`read_failed`?Ue(!1):Ve()};document.addEventListener?.(`visibilitychange`,Qe),u.onteardown=async()=>{if(d.signal.aborted)return{};d.abort(),x=void 0,document.removeEventListener?.(`visibilitychange`,Qe);let e=ye?.dispose;return ye=void 0,Fe(e),Ve(),{}},u.connect().then(()=>{d.signal.aborted||(oe=!0,document.documentElement.dataset.theme=u.getHostContext()?.theme??`light`,Ze())}).catch(()=>{d.signal.aborted||(le=`Could not connect this card to the app.`,Ve())})}function zw(e){return typeof e==`object`&&e?e:void 0}function Bw(e){return typeof e==`string`&&e.length>0?e:void 0}function Vw(e){let t=zw(e);if(!t)return null;let n=zw(t.display),r=zw(t.unit),i=Bw(t.coinType),a=Bw(n?.symbol)??Bw(r?.symbol)??(i===void 0?void 0:qv(i))??`(unknown coin)`,o=typeof r?.decimals==`number`?r.decimals:void 0,s=Bw(n?.amount),c=Bw(t.balance),l;return l=s!==void 0&&o!==void 0?s:c===void 0?`Amount unavailable`:(o===void 0?void 0:Hw(c,o))??`Amount unavailable`,{symbol:a,total:l}}function Hw(e,t){try{return Gv(e,t)}catch{return}}var Uw={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`}},Ww={en:Uw};function Gw(){try{return(navigator.language||`en`).slice(0,2).toLowerCase()}catch{return`en`}}function Kw(e=Gw()){return Ww[e]??Uw}var qw=Kw(),Jw={title:`Account assets`,guidance:(e,t)=>t.recoveryNeeded?`Ask in chat to view the assets for this account.`:void 0,controls:()=>J(`p`,`ui-note`,`Please provide a Sui address in chat.`),result(e){let t=zw(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=J(`div`);n.append(Yw(t.account,t),Xw(t)),n.append(Qv(`NFTs`,String(t.nfts.length)));let r=$v(`Details`);return t.nfts.length&&r.body.append(Zw(t)),r.body.append(Qv(qw.common.retrievedAt,ry(t.fetchedAt))),n.append(r.details,$w(t)),{node:n}}};function Yw(e,t){let n=Zv(),r=typeof t.name==`string`&&t.name.length>0?t.name:void 0;return r&&n.append(Qv(qw.account.name,r)),n.append(Qv(qw.account.address,ny(e))),n}function Xw(e){let t=Zv(qw.account.balances),n=Array.isArray(e.balances)?e.balances:[];if(n.length===0)return t.append(J(`p`,`ui-note`,qw.account.noBalances)),t;for(let e of n){let n=Vw(e);n&&t.append(eT(n))}return t}function Zw(e){let t=Zv(qw.account.nfts),n=Array.isArray(e.nfts)?e.nfts:[],r=J(`div`,`account-nfts`);for(let e of n){let t=zw(e);t&&r.append(Qw(t))}return t.append(r),t}function Qw(e){let t=typeof e.type==`string`?e.type:``,n=typeof e.name==`string`&&e.name.length>0?e.name:Jv(t),r=typeof e.imageUrl==`string`&&e.imageUrl.length>0?tT(e.imageUrl):void 0,i=J(`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(J(`div`,`account-nft-img account-nft-noimg`,qw.account.noImage))}),i.append(e)}else i.append(J(`div`,`account-nft-img account-nft-noimg`,qw.account.noImage));return i.append(J(`span`,`account-nft-name`,n)),i}function $w(e){let t=Array.isArray(e.objectGroups)?e.objectGroups:[],n=J(`div`),r=t.reduce((e,t)=>{let n=zw(t);return e+(typeof n?.count==`number`?n.count:0)},0);return r>0&&n.append(J(`p`,`ui-note`,`${r} other owned objects are not shown here.`)),e.objectsTruncated===!0&&n.append(ey(qw.account.objectsTruncated)),n}function eT(e){let t=J(`div`,`account-asset`);t.append(J(`span`,`account-asset-symbol`,e.symbol));let n=J(`span`,`account-asset-total`);return n.append(e.total),t.append(n),t}function tT(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``}}Rw(`account`,Jw);</script></body></html>