@seams/wallet 0.15.4 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -19
- package/THIRD_PARTY_NOTICES.md +102 -1
- package/dist/.build-inputs.sha256 +1 -1
- package/dist/esm/SeamsWeb/SeamsWeb.js +20 -1
- package/dist/esm/SeamsWeb/operations/registration/registrationSignerSet.js +73 -0
- package/dist/esm/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +22 -0
- package/dist/esm/SeamsWeb/publicApi/capabilitySelection.js +2 -1
- package/dist/esm/SeamsWeb/publicApi/createPublicApi.js +26 -1
- package/dist/esm/SeamsWeb/walletIframe/client/overlay/overlay-controller.js +71 -69
- package/dist/esm/SeamsWeb/walletIframe/client/preferenceState.js +6 -8
- package/dist/esm/SeamsWeb/walletIframe/client/preferences.js +7 -5
- package/dist/esm/SeamsWeb/walletIframe/client/progress/on-events-progress-bus.js +2 -1
- package/dist/esm/SeamsWeb/walletIframe/client/router.js +116 -108
- package/dist/esm/SeamsWeb/walletIframe/client/surface/transactionSurfaceQueue.js +11 -7
- package/dist/esm/SeamsWeb/walletIframe/client/transactionReviewReservation.js +3 -2
- package/dist/esm/SeamsWeb/walletIframe/client/transport/IframeTransport.js +53 -49
- package/dist/esm/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.js +6 -2
- package/dist/esm/SeamsWeb/walletIframe/coordinator.js +18 -13
- package/dist/esm/SeamsWeb/walletIframe/host/auth-menu/domain.js +13 -1
- package/dist/esm/SeamsWeb/walletIframe/host/surface-measurement-reporter.js +14 -13
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +1 -4
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +306 -301
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/mountAuthMenuSurface.js +9 -6
- package/dist/esm/SeamsWeb/walletIframe/shared/exactSessionState.js +1 -0
- package/dist/esm/core/config/configBuilder.js +1 -1
- package/dist/esm/core/config/defaultConfigs.js +1 -0
- package/dist/esm/core/indexedDB/accountSignerLifecycle.js +2 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +1 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/manager.js +6 -5
- package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +2 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +2 -2
- package/dist/esm/core/indexedDB/unifiedIndexedDBManager.js +6 -3
- package/dist/esm/core/rpcClients/near/NearRpcError.js +7 -0
- package/dist/esm/core/rpcClients/relayer/routerAbNormalSigning.js +3 -0
- package/dist/esm/core/rpcClients/relayer/walletRegistration.js +6 -2
- package/dist/esm/core/rpcClients/relayer/walletSessionAuthorizationStatus.js +5 -4
- package/dist/esm/core/signingEngine/chains/evm/evmAdapter.js +2 -1
- package/dist/esm/core/signingEngine/chains/tempo/tempoAdapter.js +2 -1
- package/dist/esm/core/signingEngine/flows/registration/accountLifecycle.js +1 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signers/secp256k1.js +5 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signers/webauthnP256.js +1 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlow.js +3 -2
- package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/presignatureRefillProgress.js +5 -7
- package/dist/esm/core/signingEngine/session/lifecycle/walletSessionFailure.js +2 -0
- package/dist/esm/core/signingEngine/session/material/ecdsaCapabilityManifest.js +68 -10
- package/dist/esm/core/signingEngine/session/material/walletSigningStateFailure.js +2 -2
- package/dist/esm/core/signingEngine/session/operationState/authorizationAdmission.js +2 -0
- package/dist/esm/core/signingEngine/stepUpConfirmation/methodSelection.js +2 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +29 -28
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationBody.js +3 -6
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +20 -23
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationDrawer.js +134 -137
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationModal.js +17 -20
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/EmailOtpContent.js +41 -39
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/EmailOtpInput.js +14 -17
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/HaloBorder.js +21 -24
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationContent.js +6 -9
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.js +100 -103
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +70 -73
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +23 -26
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +19 -22
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionTree.js +114 -117
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/email-otp-session.js +81 -80
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +41 -37
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountRecoveryCodeBackupSurface.js +13 -9
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +4 -21
- package/dist/esm/core/types/actionBuilders.js +16 -2
- package/dist/esm/core/types/amounts.js +83 -0
- package/dist/esm/core/types/linkDevice.js +1 -1
- package/dist/esm/externalEvm/controller.js +49 -48
- package/dist/esm/index.js +2 -1
- package/dist/esm/react/boundWallet.js +56 -0
- package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +13 -2
- package/dist/esm/react/components/AccountMenuButton/WalletRegionSection.js +90 -93
- package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +55 -58
- package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +17 -6
- package/dist/esm/react/components/ShowQRCode.css +13 -2
- package/dist/esm/react/context/index.js +30 -3
- package/dist/esm/react/context/useSeamsWithSdkFlow.js +1 -1
- package/dist/esm/react/externalEvm.js +22 -25
- package/dist/esm/react/index.js +4 -4
- package/dist/esm/react/styles/styles.css +13 -2
- package/dist/esm/react/transactionReview/TransactionReviewHost.js +3 -6
- package/dist/esm/react/transactionReview/boundCalls.js +1 -1
- package/dist/esm/react/transactionReview/controller.js +121 -119
- package/dist/esm/sdk/ConfirmationDrawer-CXVNmfTy.js +1 -0
- package/dist/esm/sdk/NonceCoordinator-DuDKN-B8.js +1 -0
- package/dist/{public/sdk/accountLifecycle-CBOkr0vU.js → esm/sdk/accountLifecycle-D61FIpFS.js} +1 -1
- package/dist/esm/sdk/{activeWalletSession-WdZkhtBB.js → activeWalletSession-Ba6X4CUN.js} +1 -1
- package/dist/esm/sdk/adapters-CTlDBRJy.js +2 -0
- package/dist/esm/sdk/authorizationAdmission-Dd23mTx7.js +1 -0
- package/dist/esm/sdk/{canonicalPrimitives-Dsbsxgxc.js → canonicalPrimitives-BOzRXzfv.js} +1 -1
- package/dist/esm/sdk/{capabilityKinds-N8xo_IEh.js → capabilityKinds-D0Yrp9uf.js} +1 -1
- package/dist/esm/sdk/{chains-C_X_fNuS.js → chains-CPmd4s9f.js} +1 -1
- package/dist/esm/sdk/challengeDelivery-FD9GHK1T.js +1 -0
- package/dist/esm/sdk/{clientSessionPersistenceState-CBylL1Ul.js → clientSessionPersistenceState-BHRUSWMt.js} +1 -1
- package/dist/esm/sdk/{commitQueue-DYEgzoLA.js → commitQueue-DOIaR0Hr.js} +1 -1
- package/dist/esm/sdk/{configHelpers-B-hs0mTO.js → configHelpers-BXdl5Mxs.js} +1 -1
- package/dist/esm/sdk/{digestEncoding-BX3VW9eF.js → digestEncoding-CbEFYvlJ.js} +1 -1
- package/dist/esm/sdk/{display-DsfJkAra.js → display-CY_aJEn6.js} +1 -1
- package/dist/esm/sdk/domainIds-C3fUa33Q.js +1 -0
- package/dist/esm/sdk/ecdsaCapabilityManifest-DzA996y9.js +1 -0
- package/dist/esm/sdk/{ecdsaChainTarget-Bfatk3oP.js → ecdsaChainTarget-DkOrgv4y.js} +1 -1
- package/dist/esm/sdk/ecdsaDerivationClientWasm-DQlajPpE.js +1 -0
- package/dist/{public/sdk/ecdsaDerivationExport-DOGzq0qC.js → esm/sdk/ecdsaDerivationExport-DyugdheE.js} +1 -1
- package/dist/esm/sdk/{ecdsaWalletRecords-CHfrYvKr.js → ecdsaWalletRecords-C_v74n5X.js} +1 -1
- package/dist/{public/sdk/emailOtpEcdsaDerivationIdentity-Bik0N8v9.js → esm/sdk/emailOtpEcdsaDerivationIdentity-BDVjvnmO.js} +1 -1
- package/dist/esm/sdk/{errors-DIWY1KR9.js → errors-ADOZT8oV.js} +1 -1
- package/dist/esm/sdk/export-viewer-host-DsRaS0UH.js +1 -0
- package/dist/{public/sdk/exportKeypairOperation-DzbjKbnk.js → esm/sdk/exportKeypairOperation-SJPysnE1.js} +1 -1
- package/dist/esm/sdk/{helpers-B9fpZNAP.js → helpers-D3CUEdHI.js} +1 -1
- package/dist/esm/sdk/{host-z-JJRWQe.js → host-GPb_mSAQ.js} +1 -1
- package/dist/esm/sdk/{intentDigest-P_-CM7lS.js → intentDigest-CGLrsMgj.js} +1 -1
- package/dist/esm/sdk/{lanes-5kcTFbPx.js → lanes-DJKIHJBm.js} +1 -1
- package/dist/esm/sdk/{localOnly-C5mSXb_D.js → localOnly-CPmpw381.js} +1 -1
- package/dist/esm/sdk/mountExportPrivateKeySurface-C8_tpDHF.js +1 -0
- package/dist/esm/sdk/mountRecoveryCodeBackupSurface-BtNFtmSj.js +2 -0
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-J6EHFScV.js +1 -0
- package/dist/{public/sdk/nearEd25519YaoSigningPreparation-RIfkYN0d.js → esm/sdk/nearEd25519YaoSigningPreparation-CqBNMG87.js} +1 -1
- package/dist/esm/sdk/{nonceLaneKeys-BCYfl1wv.js → nonceLaneKeys-D18nlLjh.js} +1 -1
- package/dist/esm/sdk/{normalization-n503J-BI.js → normalization-Ct9-AY13.js} +1 -1
- package/dist/esm/sdk/{operationFingerprint-BHNYryLY.js → operationFingerprint-Boa9DQ51.js} +1 -1
- package/dist/esm/sdk/{passkey-custody-DpTM-eNJ.js → passkey-custody-CBSal3E9.js} +1 -1
- package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-C60sZMj5.js → pendingWalletRecoveryCodeBackup-CvsrXbzn.js} +1 -1
- package/dist/esm/sdk/presignaturePool-CQNt13kE.js +1 -0
- package/dist/esm/sdk/{primitives-CqrjmIAH.js → primitives-cC0a9GRC.js} +1 -1
- package/dist/{public/sdk/recovery-entrypoint-BULjaFBM.js → esm/sdk/recovery-entrypoint-nj7Zo3CR.js} +1 -1
- package/dist/esm/sdk/{registration-CyF7nOXs.js → registration-49OGU_GZ.js} +1 -1
- package/dist/esm/sdk/registration-C7tywPXF.js +1 -0
- package/dist/esm/sdk/{registrationAccounts-BQMUusdD.js → registrationAccounts-9GFI0Ger.js} +1 -1
- package/dist/esm/sdk/{registrationAuthMethodInput-RbSR7R1G.js → registrationAuthMethodInput-B23_HRil.js} +1 -1
- package/dist/esm/sdk/{registrationIds-BaK3jUS6.js → registrationIds-Br-zI4_5.js} +1 -1
- package/dist/esm/sdk/{registrationIntent-090Zj7Iu.js → registrationIntent-PqmcTEE3.js} +1 -1
- package/dist/esm/sdk/{registrationSignerPlan-CPzHavPM.js → registrationSignerPlan-BHkqlian.js} +1 -1
- package/dist/{public/sdk/requireStepUpAuth-BCY5ZStI.js → esm/sdk/requireStepUpAuth-C4PGTly-.js} +1 -1
- package/dist/esm/sdk/routerAbNormalSigning-xxATTIh5.js +1 -0
- package/dist/esm/sdk/runtime-auth-CpjGW90U.js +1 -0
- package/dist/esm/sdk/{runtime-device-link-Dq8g_UNb.js → runtime-device-link-CKgfGi7D.js} +1 -1
- package/dist/esm/sdk/{runtime-ecdsa-tempo-AGjT7Xpa.js → runtime-ecdsa-tempo-5VV9xSEh.js} +1 -1
- package/dist/esm/sdk/{runtime-email-otp-BpBOuSsT.js → runtime-email-otp-D1hYZNn6.js} +1 -1
- package/dist/esm/sdk/{runtime-export-CBsacCPY.js → runtime-export-B92wQD25.js} +1 -1
- package/dist/esm/sdk/{runtime-near-J3hKjC7G.js → runtime-near-CUuKg38M.js} +1 -1
- package/dist/esm/sdk/runtime-preferences-EdL3G_MO.js +1 -0
- package/dist/esm/sdk/{runtime-recovery-codes-GOytzExh.js → runtime-recovery-codes-LR4mg7-k.js} +1 -1
- package/dist/esm/sdk/runtime-recovery-uyw8sywI.js +1 -0
- package/dist/esm/sdk/{sdkSentEvents-D4KtK7_I.js → sdkSentEvents-DujYAPEM.js} +1 -1
- package/dist/esm/sdk/secp256k1-BldUPNQI.js +1 -0
- package/dist/{public/sdk/sessionObservationRevision-CnEOLDbl.js → esm/sdk/sessionObservationRevision-DmmNV25w.js} +1 -1
- package/dist/esm/sdk/shared-ha31XIdc.js +6 -0
- package/dist/{public/sdk/signEvmFamily-Cpm3e6Zs.js → esm/sdk/signEvmFamily-C_RvEnDB.js} +1 -1
- package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-CUKdq5dE.js +1 -0
- package/dist/esm/sdk/{signEvmWithUiConfirm-BRmdLgmm.js → signEvmWithUiConfirm-CxXzcvj2.js} +1 -1
- package/dist/esm/sdk/signNear-Dno7NsP_.js +1 -0
- package/dist/esm/sdk/signatureUses-B_nN17i7.js +1 -0
- package/dist/esm/sdk/{signerDomain-Dp7BhfmZ.js → signerDomain-BFqRQ0Jl.js} +1 -1
- package/dist/{public/sdk/signingFlow-VAnM8L5C.js → esm/sdk/signingFlow-DtugI_2z.js} +2 -2
- package/dist/esm/sdk/{signingQueue-D_Ebmzcn.js → signingQueue-C1Pb07gm.js} +1 -1
- package/dist/{public/sdk/singletons-BXhnsqeY.js → esm/sdk/singletons-DxIyVhNb.js} +1 -1
- package/dist/esm/sdk/surface-measurement-reporter-BJhfiPw6.js +1 -0
- package/dist/{public/sdk/thresholdEcdsa-CneSKcRt.js → esm/sdk/thresholdEcdsa-murTq-xz.js} +1 -1
- package/dist/esm/sdk/{trace-BBux0jtr.js → trace-CsRMlSh1.js} +1 -1
- package/dist/{public/sdk/transaction-activity-Cccvec2J.js → esm/sdk/transaction-activity-C0nCSW6c.js} +1 -1
- package/dist/esm/sdk/transactionReviewAdmission-CNNho8IG.js +1 -0
- package/dist/{public/sdk/transactionState-Day-1x7Y.js → esm/sdk/transactionState-XbZm9Zon.js} +1 -1
- package/dist/esm/sdk/tx-confirm-ui.js +709 -744
- package/dist/esm/sdk/{types-hKLqDUhR.js → types-CQTWmtqu.js} +1 -1
- package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
- package/dist/{public/sdk/wallet-recovery-Bfhfk52N.js → esm/sdk/wallet-recovery-CVUalZ3p.js} +1 -1
- package/dist/esm/sdk/wallet-ui.css +1 -1
- package/dist/{public/sdk/walletAuthMethodRecord-LniOQQmj.js → esm/sdk/walletAuthMethodRecord-Bv68Vq-g.js} +1 -1
- package/dist/esm/sdk/{walletAuthority-CAiGuWW2.js → walletAuthority-v5wvv3IB.js} +1 -1
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-rRHExT_R.js +1 -0
- package/dist/esm/sdk/{walletDbName-DtRewci9.js → walletDbName-DRzPv5Ir.js} +1 -1
- package/dist/esm/sdk/{walletOwnershipGeneration-B6HyR2rE.js → walletOwnershipGeneration-pMmmJ6XA.js} +1 -1
- package/dist/esm/sdk/{walletRecoveryCommit-C6HF84_U.js → walletRecoveryCommit-DvC6WlGz.js} +1 -1
- package/dist/esm/sdk/{walletRecoveryRotate-BN3H8byw.js → walletRecoveryRotate-Dd3prJpr.js} +1 -1
- package/dist/esm/sdk/walletRegistrationSetupPrewarm-DcbhVNMQ.js +1 -0
- package/dist/esm/sdk/walletSessionAuthorizationStatus-DVV3xkAx.js +1 -0
- package/dist/esm/sdk/walletSessionAuthorizationStore-D-MhJ0PC.js +1 -0
- package/dist/esm/sdk/walletSessionFailure-C6TAQTZn.js +1 -0
- package/dist/esm/sdk/webauthnP256-XgYu-Y6E.js +1 -0
- package/dist/esm/sdk/webauthnPromptCoordinator-D5sP8Q7e.js +1 -0
- package/dist/esm/shared-ts/src/authorization/delegatedAuthority.js +1 -1
- package/dist/esm/shared-ts/src/authorization/operationFingerprint.js +6 -0
- package/dist/esm/shared-ts/src/near/nearClient.js +6 -0
- package/dist/esm/shared-ts/src/threshold/participants.js +2 -1
- package/dist/esm/shared-ts/src/threshold/secp256k1.js +6 -0
- package/dist/esm/shared-ts/src/utils/domainIds.js +7 -0
- package/dist/esm/shared-ts/src/utils/index.js +1 -1
- package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +14 -1
- package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +5 -4
- package/dist/esm/utils/qrScanner.js +10 -8
- package/dist/public/headers.manifest.json +1 -1
- package/dist/public/sdk/ConfirmationDrawer-CXVNmfTy.js +1 -0
- package/dist/public/sdk/NonceCoordinator-DuDKN-B8.js +1 -0
- package/dist/{esm/sdk/accountLifecycle-CBOkr0vU.js → public/sdk/accountLifecycle-D61FIpFS.js} +1 -1
- package/dist/public/sdk/{activeWalletSession-WdZkhtBB.js → activeWalletSession-Ba6X4CUN.js} +1 -1
- package/dist/public/sdk/adapters-CTlDBRJy.js +2 -0
- package/dist/public/sdk/authorizationAdmission-Dd23mTx7.js +1 -0
- package/dist/public/sdk/{canonicalPrimitives-Dsbsxgxc.js → canonicalPrimitives-BOzRXzfv.js} +1 -1
- package/dist/public/sdk/{capabilityKinds-N8xo_IEh.js → capabilityKinds-D0Yrp9uf.js} +1 -1
- package/dist/public/sdk/{chains-C_X_fNuS.js → chains-CPmd4s9f.js} +1 -1
- package/dist/public/sdk/challengeDelivery-FD9GHK1T.js +1 -0
- package/dist/public/sdk/{clientSessionPersistenceState-CBylL1Ul.js → clientSessionPersistenceState-BHRUSWMt.js} +1 -1
- package/dist/public/sdk/{commitQueue-DYEgzoLA.js → commitQueue-DOIaR0Hr.js} +1 -1
- package/dist/public/sdk/{configHelpers-B-hs0mTO.js → configHelpers-BXdl5Mxs.js} +1 -1
- package/dist/public/sdk/{digestEncoding-BX3VW9eF.js → digestEncoding-CbEFYvlJ.js} +1 -1
- package/dist/public/sdk/{display-DsfJkAra.js → display-CY_aJEn6.js} +1 -1
- package/dist/public/sdk/domainIds-C3fUa33Q.js +1 -0
- package/dist/public/sdk/ecdsaCapabilityManifest-DzA996y9.js +1 -0
- package/dist/public/sdk/{ecdsaChainTarget-Bfatk3oP.js → ecdsaChainTarget-DkOrgv4y.js} +1 -1
- package/dist/public/sdk/ecdsaDerivationClientWasm-DQlajPpE.js +1 -0
- package/dist/{esm/sdk/ecdsaDerivationExport-DOGzq0qC.js → public/sdk/ecdsaDerivationExport-DyugdheE.js} +1 -1
- package/dist/public/sdk/{ecdsaWalletRecords-CHfrYvKr.js → ecdsaWalletRecords-C_v74n5X.js} +1 -1
- package/dist/{esm/sdk/emailOtpEcdsaDerivationIdentity-Bik0N8v9.js → public/sdk/emailOtpEcdsaDerivationIdentity-BDVjvnmO.js} +1 -1
- package/dist/public/sdk/{errors-DIWY1KR9.js → errors-ADOZT8oV.js} +1 -1
- package/dist/public/sdk/export-viewer-host-DsRaS0UH.js +1 -0
- package/dist/{esm/sdk/exportKeypairOperation-DzbjKbnk.js → public/sdk/exportKeypairOperation-SJPysnE1.js} +1 -1
- package/dist/public/sdk/{helpers-B9fpZNAP.js → helpers-D3CUEdHI.js} +1 -1
- package/dist/public/sdk/{host-z-JJRWQe.js → host-GPb_mSAQ.js} +1 -1
- package/dist/public/sdk/{intentDigest-P_-CM7lS.js → intentDigest-CGLrsMgj.js} +1 -1
- package/dist/public/sdk/{lanes-5kcTFbPx.js → lanes-DJKIHJBm.js} +1 -1
- package/dist/public/sdk/{localOnly-C5mSXb_D.js → localOnly-CPmpw381.js} +1 -1
- package/dist/public/sdk/mountExportPrivateKeySurface-C8_tpDHF.js +1 -0
- package/dist/public/sdk/mountRecoveryCodeBackupSurface-BtNFtmSj.js +2 -0
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-J6EHFScV.js +1 -0
- package/dist/{esm/sdk/nearEd25519YaoSigningPreparation-RIfkYN0d.js → public/sdk/nearEd25519YaoSigningPreparation-CqBNMG87.js} +1 -1
- package/dist/public/sdk/{nonceLaneKeys-BCYfl1wv.js → nonceLaneKeys-D18nlLjh.js} +1 -1
- package/dist/public/sdk/{normalization-n503J-BI.js → normalization-Ct9-AY13.js} +1 -1
- package/dist/public/sdk/{operationFingerprint-BHNYryLY.js → operationFingerprint-Boa9DQ51.js} +1 -1
- package/dist/public/sdk/{passkey-custody-DpTM-eNJ.js → passkey-custody-CBSal3E9.js} +1 -1
- package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-C60sZMj5.js → pendingWalletRecoveryCodeBackup-CvsrXbzn.js} +1 -1
- package/dist/public/sdk/presignaturePool-CQNt13kE.js +1 -0
- package/dist/public/sdk/{primitives-CqrjmIAH.js → primitives-cC0a9GRC.js} +1 -1
- package/dist/{esm/sdk/recovery-entrypoint-BULjaFBM.js → public/sdk/recovery-entrypoint-nj7Zo3CR.js} +1 -1
- package/dist/public/sdk/{registration-CyF7nOXs.js → registration-49OGU_GZ.js} +1 -1
- package/dist/public/sdk/registration-C7tywPXF.js +1 -0
- package/dist/public/sdk/{registrationAccounts-BQMUusdD.js → registrationAccounts-9GFI0Ger.js} +1 -1
- package/dist/public/sdk/{registrationAuthMethodInput-RbSR7R1G.js → registrationAuthMethodInput-B23_HRil.js} +1 -1
- package/dist/public/sdk/{registrationIds-BaK3jUS6.js → registrationIds-Br-zI4_5.js} +1 -1
- package/dist/public/sdk/{registrationIntent-090Zj7Iu.js → registrationIntent-PqmcTEE3.js} +1 -1
- package/dist/public/sdk/{registrationSignerPlan-CPzHavPM.js → registrationSignerPlan-BHkqlian.js} +1 -1
- package/dist/{esm/sdk/requireStepUpAuth-BCY5ZStI.js → public/sdk/requireStepUpAuth-C4PGTly-.js} +1 -1
- package/dist/public/sdk/routerAbNormalSigning-xxATTIh5.js +1 -0
- package/dist/public/sdk/runtime-auth-CpjGW90U.js +1 -0
- package/dist/public/sdk/{runtime-device-link-Dq8g_UNb.js → runtime-device-link-CKgfGi7D.js} +1 -1
- package/dist/public/sdk/{runtime-ecdsa-tempo-AGjT7Xpa.js → runtime-ecdsa-tempo-5VV9xSEh.js} +1 -1
- package/dist/public/sdk/{runtime-email-otp-BpBOuSsT.js → runtime-email-otp-D1hYZNn6.js} +1 -1
- package/dist/public/sdk/{runtime-export-CBsacCPY.js → runtime-export-B92wQD25.js} +1 -1
- package/dist/public/sdk/{runtime-near-J3hKjC7G.js → runtime-near-CUuKg38M.js} +1 -1
- package/dist/public/sdk/runtime-preferences-EdL3G_MO.js +1 -0
- package/dist/public/sdk/{runtime-recovery-codes-GOytzExh.js → runtime-recovery-codes-LR4mg7-k.js} +1 -1
- package/dist/public/sdk/runtime-recovery-uyw8sywI.js +1 -0
- package/dist/public/sdk/{sdkSentEvents-D4KtK7_I.js → sdkSentEvents-DujYAPEM.js} +1 -1
- package/dist/public/sdk/secp256k1-BldUPNQI.js +1 -0
- package/dist/{esm/sdk/sessionObservationRevision-CnEOLDbl.js → public/sdk/sessionObservationRevision-DmmNV25w.js} +1 -1
- package/dist/public/sdk/shared-ha31XIdc.js +6 -0
- package/dist/{esm/sdk/signEvmFamily-Cpm3e6Zs.js → public/sdk/signEvmFamily-C_RvEnDB.js} +1 -1
- package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-CUKdq5dE.js +1 -0
- package/dist/public/sdk/{signEvmWithUiConfirm-BRmdLgmm.js → signEvmWithUiConfirm-CxXzcvj2.js} +1 -1
- package/dist/public/sdk/signNear-Dno7NsP_.js +1 -0
- package/dist/public/sdk/signatureUses-B_nN17i7.js +1 -0
- package/dist/public/sdk/{signerDomain-Dp7BhfmZ.js → signerDomain-BFqRQ0Jl.js} +1 -1
- package/dist/{esm/sdk/signingFlow-VAnM8L5C.js → public/sdk/signingFlow-DtugI_2z.js} +2 -2
- package/dist/public/sdk/{signingQueue-D_Ebmzcn.js → signingQueue-C1Pb07gm.js} +1 -1
- package/dist/{esm/sdk/singletons-BXhnsqeY.js → public/sdk/singletons-DxIyVhNb.js} +1 -1
- package/dist/public/sdk/surface-measurement-reporter-BJhfiPw6.js +1 -0
- package/dist/{esm/sdk/thresholdEcdsa-CneSKcRt.js → public/sdk/thresholdEcdsa-murTq-xz.js} +1 -1
- package/dist/public/sdk/{trace-BBux0jtr.js → trace-CsRMlSh1.js} +1 -1
- package/dist/{esm/sdk/transaction-activity-Cccvec2J.js → public/sdk/transaction-activity-C0nCSW6c.js} +1 -1
- package/dist/public/sdk/transactionReviewAdmission-CNNho8IG.js +1 -0
- package/dist/{esm/sdk/transactionState-Day-1x7Y.js → public/sdk/transactionState-XbZm9Zon.js} +1 -1
- package/dist/public/sdk/tx-confirm-ui.js +709 -744
- package/dist/public/sdk/{types-hKLqDUhR.js → types-CQTWmtqu.js} +1 -1
- package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
- package/dist/{esm/sdk/wallet-recovery-Bfhfk52N.js → public/sdk/wallet-recovery-CVUalZ3p.js} +1 -1
- package/dist/public/sdk/wallet-ui.css +1 -1
- package/dist/{esm/sdk/walletAuthMethodRecord-LniOQQmj.js → public/sdk/walletAuthMethodRecord-Bv68Vq-g.js} +1 -1
- package/dist/public/sdk/{walletAuthority-CAiGuWW2.js → walletAuthority-v5wvv3IB.js} +1 -1
- package/dist/public/sdk/walletCustodyEcdsaContinuity-rRHExT_R.js +1 -0
- package/dist/public/sdk/{walletDbName-DtRewci9.js → walletDbName-DRzPv5Ir.js} +1 -1
- package/dist/public/sdk/{walletOwnershipGeneration-B6HyR2rE.js → walletOwnershipGeneration-pMmmJ6XA.js} +1 -1
- package/dist/public/sdk/{walletRecoveryCommit-C6HF84_U.js → walletRecoveryCommit-DvC6WlGz.js} +1 -1
- package/dist/public/sdk/{walletRecoveryRotate-BN3H8byw.js → walletRecoveryRotate-Dd3prJpr.js} +1 -1
- package/dist/public/sdk/walletRegistrationSetupPrewarm-DcbhVNMQ.js +1 -0
- package/dist/public/sdk/walletSessionAuthorizationStatus-DVV3xkAx.js +1 -0
- package/dist/public/sdk/walletSessionAuthorizationStore-D-MhJ0PC.js +1 -0
- package/dist/public/sdk/walletSessionFailure-C6TAQTZn.js +1 -0
- package/dist/public/sdk/webauthnP256-XgYu-Y6E.js +1 -0
- package/dist/public/sdk/webauthnPromptCoordinator-D5sP8Q7e.js +1 -0
- package/dist/public/sdk/workers/device-linking-key.worker.js +12 -11
- package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +146 -48
- package/dist/public/sdk/workers/ecdsa-online-client.worker.js +7 -6
- package/dist/public/sdk/workers/ecdsa-presign-client.worker.js +7 -6
- package/dist/public/sdk/workers/email-otp.worker.js +24 -4
- package/dist/public/sdk/workers/passkey-mpc-export.worker.js +17 -1
- package/dist/public/sdk/workers/passkey-mpc-session.worker.js +2 -1
- package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +2 -0
- package/dist/public/wallet-assets.manifest.json +190 -190
- package/dist/public/wallet-service/index.html +4 -4
- package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +14 -14
- package/dist/types/shared-ts/src/authorization/delegatedAuthority.d.ts +1 -1
- package/dist/types/shared-ts/src/device-linking/ed25519ExportRoot.d.ts +1 -1
- package/dist/types/shared-ts/src/device-linking/requestProof.d.ts +1 -1
- package/dist/types/shared-ts/src/device-linking/sourceContribution.d.ts +5 -5
- package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +3 -3
- package/dist/types/shared-ts/src/passkey-custody/custodySecretBinding.d.ts +1 -1
- package/dist/types/shared-ts/src/tenant-root/tenantRootIdentity.d.ts +1 -1
- package/dist/types/shared-ts/src/tenant-root/tenantRootOperationRecord.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/base64.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/digestEncoding.d.ts +1 -1
- package/dist/types/shared-ts/src/utils/digests.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +16 -16
- package/dist/types/shared-ts/src/utils/emailOtpRecoveryKey.d.ts +1 -1
- package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +10 -10
- package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +12 -11
- package/dist/types/shared-ts/src/utils/routerAbPublicKeyset.d.ts +3 -3
- package/dist/types/shared-ts/src/utils/routerAbTraceContext.d.ts +1 -1
- package/dist/types/shared-ts/src/utils/signerDomain.d.ts +15 -15
- package/dist/types/shared-ts/src/utils/signingSessionSeal.d.ts +11 -11
- package/dist/types/shared-ts/src/utils/walletSessionFailure.d.ts +8 -8
- package/dist/types/shared-ts/src/utils/webauthnDeviceInfo.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/wireSchema.d.ts +1 -1
- package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +1 -1
- package/dist/types/wallet/build-paths.d.ts +73 -73
- package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.d.ts +3 -2
- package/dist/types/wallet/src/SeamsWeb/operations/devices/deviceLinkingResume.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/operations/devices/linkDeviceTargetActivation.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/operations/registration/pendingRegistrationRecovery.d.ts +3 -3
- package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationEd25519Yao.d.ts +4 -3
- package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationSignerSet.d.ts +5 -0
- package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationTiming.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/publicApi/createPublicApi.d.ts +10 -1
- package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +4 -2
- package/dist/types/wallet/src/SeamsWeb/signingSurface/BrowserSigningSurface.d.ts +1 -0
- package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +1 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +2 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +15 -2
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createEmailOtpCommands.d.ts +3 -2
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +3 -3
- package/dist/types/wallet/src/config.d.ts +8 -8
- package/dist/types/wallet/src/core/browser/walletIframe/events.d.ts +1 -1
- package/dist/types/wallet/src/core/indexedDB/linkedAuthoritySignerMaterial.d.ts +3 -3
- package/dist/types/wallet/src/core/indexedDB/pendingWalletRecoveryCommit.d.ts +1 -1
- package/dist/types/wallet/src/core/indexedDB/schemaNames.d.ts +181 -181
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.d.ts +8 -8
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.d.ts +4 -4
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.d.ts +1 -1
- package/dist/types/wallet/src/core/indexedDB/walletCustodyEd25519MaterialRecord.d.ts +2 -2
- package/dist/types/wallet/src/core/indexedDB/walletDbName.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/chains/evm/evmAdapter.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/chains/evm/evmSigning.types.d.ts +1 -0
- package/dist/types/wallet/src/core/signingEngine/chains/tempo/tempoAdapter.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/flows/shared/signingStateMachine.d.ts +27 -27
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signers/secp256k1.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signers/webauthnP256.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.d.ts +17 -17
- package/dist/types/wallet/src/core/signingEngine/nonce/nonceTypes.d.ts +40 -40
- package/dist/types/wallet/src/core/signingEngine/session/material/walletSigningStateFailure.d.ts +4 -4
- package/dist/types/wallet/src/core/signingEngine/session/operationState/types.d.ts +8 -8
- package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/session/persistence/sealedSessionRecords.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/channel/confirmCommon.d.ts +3 -3
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/types.d.ts +4 -4
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoClient.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/threshold/sessionPolicy.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.d.ts +2 -2
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/CopyStatusIcon.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PadlockIcon.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PasskeyHaloLoading.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/SeamsWordmark.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/webauthnAuth/credentials/helpers.d.ts +2 -2
- package/dist/types/wallet/src/core/signingEngine/workerManager/SignerWorkerManager.d.ts +1 -0
- package/dist/types/wallet/src/core/signingEngine/workerManager/deviceLinkingPorts.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaClientWorkerChannels.d.ts +3 -3
- package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaPresignPoolIdentity.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/validation.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workerTransport.d.ts +1 -0
- package/dist/types/wallet/src/core/signingEngine/workerManager/workerTypes.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/device-linking-key/ecdsaTargetShareHpke.d.ts +3 -3
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/device-linking-key/ordinaryMaterialState.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/crypto.d.ts +3 -3
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/materialParsing.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/payloadParsing.d.ts +2 -2
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/unlock.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/workerErrorPayload.d.ts +2 -2
- package/dist/types/wallet/src/core/types/actionBuilders.d.ts +16 -2
- package/dist/types/wallet/src/core/types/amounts.d.ts +75 -0
- package/dist/types/wallet/src/core/types/amounts.typecheck.d.ts +2 -0
- package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +5 -5
- package/dist/types/wallet/src/core/types/secure-confirm-worker.d.ts +1 -1
- package/dist/types/wallet/src/core/types/signer-worker.d.ts +7 -7
- package/dist/types/wallet/src/externalEvm/types.d.ts +1 -0
- package/dist/types/wallet/src/index.d.ts +2 -0
- package/dist/types/wallet/src/react/{hooks/useWallet.d.ts → boundWallet.d.ts} +8 -48
- package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuButtonView.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/AccountsSection.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodsModal.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/ExportKeysSection.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/LinkedDevicesModal.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/ProfileDropdown.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/WalletSettingsLayout.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/GlobeIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/HoverArrowIcon.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/KeyIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LaptopIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LinkIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LockIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LockKeyholeIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/MailIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/PlusIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/RecoveryCodesIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/ScanIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SlidersIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SmartphoneIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/TouchIcon.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/index.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/types.d.ts +8 -8
- package/dist/types/wallet/src/react/components/ShowQRCode.d.ts +0 -1
- package/dist/types/wallet/src/react/components/VoiceAssistantCard.d.ts +0 -1
- package/dist/types/wallet/src/react/components/theme/design-tokens.d.ts +1 -0
- package/dist/types/wallet/src/react/context/index.d.ts +2 -1
- package/dist/types/wallet/src/react/context/useSeamsContextValue.d.ts +2 -2
- package/dist/types/wallet/src/react/index.d.ts +3 -2
- package/dist/types/wallet/src/react/styles.d.ts +2 -0
- package/dist/types/wallet/src/react/transactionReview/boundCalls.d.ts +57 -57
- package/dist/types/wallet/src/react/types.d.ts +14 -1
- package/dist/types/wallet/src/theme/base-styles.d.ts +4 -4
- package/dist/workers/device-linking-key.worker.js +12 -11
- package/dist/workers/ecdsa-derivation-client.worker.js +146 -48
- package/dist/workers/ecdsa-online-client.worker.js +7 -6
- package/dist/workers/ecdsa-presign-client.worker.js +7 -6
- package/dist/workers/email-otp.worker.js +24 -4
- package/dist/workers/passkey-mpc-export.worker.js +17 -1
- package/dist/workers/passkey-mpc-session.worker.js +2 -1
- package/dist/workers/wallet-custody-ceremony.worker.js +2 -0
- package/package.json +8 -6
- package/dist/esm/react/hooks/useWallet.js +0 -108
- package/dist/esm/sdk/ConfirmationDrawer-BFzQjd1P.js +0 -1
- package/dist/esm/sdk/NonceCoordinator-CDGnEgfI.js +0 -1
- package/dist/esm/sdk/adapters-DsAaBNNY.js +0 -2
- package/dist/esm/sdk/authorizationAdmission-CGinGhXH.js +0 -1
- package/dist/esm/sdk/challengeDelivery-CATQ4u6P.js +0 -1
- package/dist/esm/sdk/domainIds-BzkGsRqO.js +0 -1
- package/dist/esm/sdk/ecdsaCapabilityManifest-DX6TflEz.js +0 -1
- package/dist/esm/sdk/ecdsaDerivationClientWasm-CpjnN4aK.js +0 -1
- package/dist/esm/sdk/export-viewer-host-CV-lSsQF.js +0 -1
- package/dist/esm/sdk/mountExportPrivateKeySurface-CatAhYoG.js +0 -1
- package/dist/esm/sdk/mountRecoveryCodeBackupSurface-DlEb3uD7.js +0 -2
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-Bo3IOTS-.js +0 -1
- package/dist/esm/sdk/presignaturePool-V10fZpG3.js +0 -1
- package/dist/esm/sdk/registration-DEGZR8kA.js +0 -1
- package/dist/esm/sdk/routerAbNormalSigning-C4P2tDU-.js +0 -1
- package/dist/esm/sdk/runtime-auth-ZcxkQ-XF.js +0 -1
- package/dist/esm/sdk/runtime-preferences-CVt5sLvm.js +0 -1
- package/dist/esm/sdk/runtime-recovery-BzewdcoT.js +0 -1
- package/dist/esm/sdk/secp256k1-CKq7_HD-.js +0 -1
- package/dist/esm/sdk/shared-BywEqTsd.js +0 -6
- package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-DGWmm9n7.js +0 -1
- package/dist/esm/sdk/signNear-XGZBxc_g.js +0 -1
- package/dist/esm/sdk/signatureUses-BKAoDbQd.js +0 -1
- package/dist/esm/sdk/surface-measurement-reporter-DvVHPu_O.js +0 -1
- package/dist/esm/sdk/transactionReviewAdmission-CIvR4W5_.js +0 -1
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-B4fTDL10.js +0 -1
- package/dist/esm/sdk/walletRegistrationSetupPrewarm-B9kpnrbK.js +0 -1
- package/dist/esm/sdk/walletSessionAuthorizationStatus-BL7j2TeM.js +0 -1
- package/dist/esm/sdk/walletSessionAuthorizationStore-DmYe-cDR.js +0 -1
- package/dist/esm/sdk/walletSessionFailure-YuhraC3P.js +0 -1
- package/dist/esm/sdk/webauthnP256-BwgxtG5N.js +0 -1
- package/dist/esm/sdk/webauthnPromptCoordinator-CwJeKiYq.js +0 -1
- package/dist/public/sdk/ConfirmationDrawer-BFzQjd1P.js +0 -1
- package/dist/public/sdk/NonceCoordinator-CDGnEgfI.js +0 -1
- package/dist/public/sdk/adapters-DsAaBNNY.js +0 -2
- package/dist/public/sdk/authorizationAdmission-CGinGhXH.js +0 -1
- package/dist/public/sdk/challengeDelivery-CATQ4u6P.js +0 -1
- package/dist/public/sdk/domainIds-BzkGsRqO.js +0 -1
- package/dist/public/sdk/ecdsaCapabilityManifest-DX6TflEz.js +0 -1
- package/dist/public/sdk/ecdsaDerivationClientWasm-CpjnN4aK.js +0 -1
- package/dist/public/sdk/export-viewer-host-CV-lSsQF.js +0 -1
- package/dist/public/sdk/mountExportPrivateKeySurface-CatAhYoG.js +0 -1
- package/dist/public/sdk/mountRecoveryCodeBackupSurface-DlEb3uD7.js +0 -2
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-Bo3IOTS-.js +0 -1
- package/dist/public/sdk/presignaturePool-V10fZpG3.js +0 -1
- package/dist/public/sdk/registration-DEGZR8kA.js +0 -1
- package/dist/public/sdk/routerAbNormalSigning-C4P2tDU-.js +0 -1
- package/dist/public/sdk/runtime-auth-ZcxkQ-XF.js +0 -1
- package/dist/public/sdk/runtime-preferences-CVt5sLvm.js +0 -1
- package/dist/public/sdk/runtime-recovery-BzewdcoT.js +0 -1
- package/dist/public/sdk/secp256k1-CKq7_HD-.js +0 -1
- package/dist/public/sdk/shared-BywEqTsd.js +0 -6
- package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-DGWmm9n7.js +0 -1
- package/dist/public/sdk/signNear-XGZBxc_g.js +0 -1
- package/dist/public/sdk/signatureUses-BKAoDbQd.js +0 -1
- package/dist/public/sdk/surface-measurement-reporter-DvVHPu_O.js +0 -1
- package/dist/public/sdk/transactionReviewAdmission-CIvR4W5_.js +0 -1
- package/dist/public/sdk/walletCustodyEcdsaContinuity-B4fTDL10.js +0 -1
- package/dist/public/sdk/walletRegistrationSetupPrewarm-B9kpnrbK.js +0 -1
- package/dist/public/sdk/walletSessionAuthorizationStatus-BL7j2TeM.js +0 -1
- package/dist/public/sdk/walletSessionAuthorizationStore-DmYe-cDR.js +0 -1
- package/dist/public/sdk/walletSessionFailure-YuhraC3P.js +0 -1
- package/dist/public/sdk/webauthnP256-BwgxtG5N.js +0 -1
- package/dist/public/sdk/webauthnPromptCoordinator-CwJeKiYq.js +0 -1
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./chunk-dVx5-UGu.js";import{B as t,C as n,D as r,M as i,N as a,O as o,S as s,T as c,V as l,b as u,c as d,d as f,h as p,j as m,k as h,l as g,m as _,n as v,p as y,r as b,t as x,u as S,v as C,w,x as T}from"./domainIds-BzkGsRqO.js";import{C as E,D,S as O,T as ee,c as k,d as A,j,k as M,m as te,o as ne,p as re,s as N,t as ie,u as ae,y as oe}from"./chains-C_X_fNuS.js";import{A as se,C as ce,D as le,E as ue,S as de,T as fe,_ as pe,a as me,b as he,c as ge,f as _e,i as ve,j as ye,k as be,l as xe,n as Se,o as Ce,r as we,s as Te,t as Ee,u as De,w as Oe,x as ke,y as Ae}from"./primitives-CqrjmIAH.js";import{t as je}from"./theme-BKaFqCAj.js";import{i as P,n as Me,r as F}from"./base64-DW79QA0h.js";import{n as Ne,r as Pe,t as Fe}from"./secureRandomId-LwBFx84B.js";import{a as Ie,c as Le,i as Re,n as ze,o as Be,s as Ve}from"./walletDbName-DtRewci9.js";import{n as He,t as Ue}from"./configHelpers-B-hs0mTO.js";import{a as We,c as Ge,d as Ke,n as qe,s as Je,t as Ye}from"./signingSessionSeal-DX41aXUL.js";import{_ as Xe,b as Ze,f as Qe,h as $e,m as et,n as tt,p as nt,t as rt}from"./sessionObservationRevision-CnEOLDbl.js";import{r as it}from"./transactionReviewAdmission-CIvR4W5_.js";import{a as at,h as ot,i as st,r as ct,t as lt}from"./activeWalletSession-WdZkhtBB.js";import{a as ut,d as dt,g as ft,h as pt,i as mt,l as ht,m as gt,n as _t,o as vt,r as yt,t as bt}from"./capabilityKinds-N8xo_IEh.js";import{a as xt,r as St}from"./canonicalPrimitives-Dsbsxgxc.js";import{t as Ct}from"./walletIframeIdentity-Cz82I_Uh.js";import{i as wt,n as Tt,o as I,t as L}from"./errors-DIWY1KR9.js";import{t as Et}from"./signer-worker-DlK58rEA.js";import{$ as Dt,$t as Ot,A as kt,At,B as jt,Bt as Mt,C as Nt,Ct as Pt,D as Ft,Dt as It,E as Lt,Et as Rt,F as zt,Ft as Bt,G as Vt,Gt as Ht,H as Ut,Ht as Wt,I as Gt,It as Kt,J as qt,Jt,K as Yt,Kt as Xt,L as Zt,Lt as Qt,M as $t,Mt as en,N as tn,Nt as nn,O as rn,Ot as an,P as on,Pt as sn,Q as cn,Qt as ln,R as un,Rt as dn,S as fn,St as pn,T as mn,Tt as hn,U as gn,Ut as _n,V as vn,Vt as yn,W as bn,Wt as xn,X as Sn,Xt as Cn,Y as wn,Yt as Tn,Z as En,Zt as Dn,_ as On,_t as kn,a as An,at as jn,b as Mn,bt as Nn,c as Pn,ct as Fn,d as In,dt as Ln,en as Rn,et as zn,f as Bn,ft as Vn,g as Hn,gt as Un,h as Wn,ht as Gn,in as Kn,it as qn,j as Jn,jt as Yn,k as Xn,kt as Zn,l as Qn,lt as $n,m as er,mt as tr,nt as nr,ot as rr,p as ir,pt as ar,q as or,qt as sr,rn as cr,rt as lr,st as ur,t as dr,tn as fr,tt as pr,u as mr,ut as R,v as hr,vt as gr,w as _r,wt as vr,x as yr,xt as br,y as xr,yt as Sr,z as Cr,zt as wr}from"./registration-DEGZR8kA.js";import{a as Tr,d as Er,i as Dr,r as Or,t as kr}from"./accountIds-Cpvlkvbe.js";import{c as Ar,t as jr}from"./registrationSignerPlan-CPzHavPM.js";import{a as Mr,c as z,i as Nr,n as Pr,o as B,s as Fr,t as Ir,u as Lr}from"./ecdsaChainTarget-Bfatk3oP.js";import{a as V,d as Rr,f as zr,i as Br,l as Vr,m as Hr,n as H,o as Ur,p as Wr,r as Gr,s as Kr,u as qr}from"./signerDomain-Dp7BhfmZ.js";import{$ as Jr,A as Yr,B as Xr,C as Zr,D as Qr,E as $r,F as ei,G as ti,H as ni,I as ri,J as ii,K as ai,L as oi,M as si,N as ci,O as li,Q as ui,R as di,S as fi,T as pi,U as mi,V as hi,W as gi,X as _i,Y as vi,Z as yi,at as bi,b as xi,ct as Si,dt as Ci,et as wi,ft as Ti,gt as Ei,ht as Di,it as Oi,j as ki,k as Ai,mt as ji,nt as Mi,ot as Ni,pt as Pi,q as Fi,r as Ii,rt as Li,st as Ri,tt as zi,ut as Bi,v as Vi,w as Hi,x as Ui,y as Wi,z as Gi}from"./registrationIntent-090Zj7Iu.js";import{t as Ki}from"./singletons-BXhnsqeY.js";import{s as qi,t as Ji}from"./normalization-n503J-BI.js";import{A as Yi,C as Xi,D as Zi,E as Qi,F as $i,I as ea,M as ta,O as na,S as ra,T as ia,_ as aa,a as oa,b as sa,c as ca,g as la,i as ua,k as da,l as fa,n as pa,o as ma,r as ha,s as ga,t as _a,v as va,w as ya,x as ba,y as xa}from"./accountLifecycle-CBOkr0vU.js";import{f as Sa,g as Ca,n as wa,o as Ta,p as Ea,r as Da,s as Oa,t as ka}from"./walletAuthority-CAiGuWW2.js";import{A as Aa,C as ja,Dt as Ma,Et as Na,H as Pa,Jt as Fa,K as Ia,Mt as La,Nt as U,O as Ra,Ot as za,S as Ba,St as Va,T as Ha,Xt as Ua,Yt as Wa,_ as Ga,_t as Ka,bt as qa,c as Ja,d as Ya,en as Xa,f as Za,gt as Qa,h as $a,ht as eo,j as to,jt as no,k as ro,l as io,m as ao,nn as oo,o as so,q as co,s as lo,st as uo,tn as fo,tt as po,v as mo,vt as ho,x as go,xt as _o}from"./emailOtpEcdsaDerivationIdentity-Bik0N8v9.js";import{B as vo,C as yo,E as bo,G as xo,H as So,O as Co,R as wo,V as To,Z as Eo,b as Do,c as Oo,d as ko,g as Ao,h as jo,k as Mo,l as No,m as Po,q as Fo,r as Io,s as Lo,w as Ro,z as zo}from"./challengeDelivery-CATQ4u6P.js";import{c as Bo,l as Vo}from"./digestEncoding-BX3VW9eF.js";import{n as Ho,r as Uo,t as Wo}from"./walletAuthMethodRecord-LniOQQmj.js";import{a as Go,i as Ko,r as qo}from"./registrationIds-BaK3jUS6.js";import{a as Jo,c as Yo,d as Xo,h as Zo,i as Qo,l as $o,m as es,o as ts,s as ns}from"./passkey-custody-DpTM-eNJ.js";import{C as rs,D as is,E as as,I as os,M as ss,N as cs,P as ls,R as us,T as ds,V as fs,j as ps,k as ms,w as hs,z as gs}from"./ecdsaCapabilityManifest-DX6TflEz.js";import{d as _s,f as vs,g as ys,h as bs,l as xs,m as Ss,o as W,r as Cs,s as G,t as ws}from"./sdkSentEvents-D4KtK7_I.js";import{D as Ts,O as Es,T as Ds,a as Os,d as ks,f as As,g as js,h as Ms,i as Ns,l as Ps,m as Fs,n as Is,o as Ls,p as Rs,s as zs,t as Bs,u as K}from"./walletCustodyEcdsaContinuity-B4fTDL10.js";import{t as Vs}from"./signerSlot-FJAGOhmg.js";import{c as Hs,d as Us,f as Ws,i as Gs,o as Ks,r as qs,s as Js,t as Ys}from"./wallet-recovery-Bfhfk52N.js";import{n as Xs}from"./authenticatorOptions-2_XK8aXv.js";import{i as Zs,n as Qs}from"./walletOwnershipGeneration-B6HyR2rE.js";import{t as $s}from"./presignatures-K-yuzOE0.js";import{c as ec,n as tc,r as nc,s as rc}from"./types-hKLqDUhR.js";import{o as q,t as ic}from"./walletSessionAuthorizationStore-DmYe-cDR.js";import{c as ac,l as oc,n as sc,o as cc,s as lc,t as uc,u as dc}from"./helpers-B9fpZNAP.js";import{i as fc}from"./profileAccountProjection-BNVJLOt2.js";import{D as pc,_ as mc,a as hc,g as gc,i as _c,j as vc,k as yc,l as J,m as bc,n as xc,o as Sc,r as Cc,t as wc,u as Tc,v as Ec,w as Dc}from"./nearEd25519YaoMaterialActivation-Bo3IOTS-.js";import{C as Oc,D as kc,M as Ac,N as jc,O as Mc,P as Nc,_ as Pc,a as Fc,c as Ic,d as Lc,f as Rc,h as zc,i as Bc,j as Vc,k as Hc,l as Uc,m as Wc,n as Gc,p as Kc,r as qc,s as Jc,t as Yc,u as Xc,v as Zc,w as Qc}from"./nearEd25519YaoSigningPreparation-RIfkYN0d.js";import{n as $c,t as el}from"./walletSessionAuthorizationStatus-BL7j2TeM.js";import{n as tl,t as nl}from"./prfCache-DJ93rtDv.js";import{u as rl}from"./trace-BBux0jtr.js";import{t as il}from"./webauthnPromptCoordinator-CwJeKiYq.js";import{i as al,n as ol,o as sl,r as cl,u as ll}from"./intentDigest-P_-CM7lS.js";import{A as ul,C as dl,E as fl,S as pl,_ as ml,b as hl,c as gl,d as _l,f as vl,g as yl,h as bl,k as xl,l as Sl,m as Cl,n as wl,o as Tl,p as El,r as Dl,s as Ol,t as kl,u as Al,v as jl,w as Ml,x as Nl,y as Pl}from"./adapters-DsAaBNNY.js";import{_ as Fl,a as Il,c as Ll,d as Rl,f as zl,g as Bl,h as Vl,i as Hl,l as Ul,m as Wl,n as Gl,o as Kl,p as ql,s as Jl,u as Yl,y as Xl}from"./ecdsaDerivationExport-DOGzq0qC.js";import{r as Zl,t as Ql}from"./pendingWalletRecoveryCodeBackup-C60sZMj5.js";import{r as $l,t as eu}from"./walletSessionAuthorizationProjection-DuU6w0FP.js";import{i as tu}from"./walletRecoveryCommit-C6HF84_U.js";import{t as nu}from"./NonceCoordinator-CDGnEgfI.js";import{t as ru}from"./executeWorkerOperation-DKCRRq5E.js";import{A as iu,C as au,D as ou,E as su,F as cu,I as lu,L as uu,M as du,N as fu,O as pu,P as mu,R as hu,S as gu,T as _u,_ as vu,b as yu,c as bu,f as xu,g as Su,h as Cu,j as wu,k as Tu,l as Eu,m as Du,o as Ou,p as ku,r as Au,s as ju,t as Mu,v as Nu,w as Pu,y as Fu}from"./ecdsaDerivationClientWasm-CpjnN4aK.js";import{a as Iu,n as Lu,o as Ru,r as zu,s as Bu,t as Vu}from"./presignaturePool-V10fZpG3.js";import{i as Hu,t as Uu}from"./walletSessionFailure-YuhraC3P.js";import{_ as Wu,a as Gu,b as Ku,c as qu,d as Ju,f as Yu,g as Xu,h as Zu,i as Qu,l as $u,m as ed,n as td,o as nd,p as rd,r as id,t as ad,u as od,v as sd,y as cd}from"./signEvmFamily-Cpm3e6Zs.js";import{a as ld,c as ud,d as dd,f as fd,i as pd,l as md,o as hd,s as gd,t as _d,u as vd}from"./signingQueue-D_Ebmzcn.js";import{_ as yd,c as bd,d as xd,g as Sd,h as Cd,i as wd,o as Td,r as Ed,s as Dd,t as Od,u as kd,v as Ad}from"./clientSessionPersistenceState-CBylL1Ul.js";import{_ as jd,a as Md,c as Nd,d as Pd,f as Fd,g as Id,h as Ld,i as Rd,m as zd,o as Bd,p as Vd,r as Hd,s as Ud,t as Wd,u as Gd}from"./signNear-XGZBxc_g.js";import{c as Kd,d as qd,i as Jd,o as Yd,s as Xd,t as Zd}from"./signingFlow-VAnM8L5C.js";import{t as Qd}from"./types-Buoe6179.js";import{S as $d,_ as ef,d as tf,f as nf,m as rf,p as af}from"./requireStepUpAuth-BCY5ZStI.js";import{t as of}from"./commitQueue-DYEgzoLA.js";import{i as sf,n as cf,r as lf,t as uf}from"./walletRecoveryRotate-BN3H8byw.js";import{i as Y,r as df}from"./appearance-4DmzKUWf.js";import{i as ff,n as pf,r as mf,t as hf}from"./transaction-activity-Cccvec2J.js";import{a as gf,i as _f}from"./jsxRuntime.module-DKsgiFjd.js";import{t as vf}from"./registration-CyF7nOXs.js";function yf(){let e=typeof window<`u`&&window.location?.origin?window.location.origin:``;try{let t=window?.__SEAMS_WALLET_SDK_BASE__;if(t){let n=new URL(t,e||`https://invalid.local`).origin;if(n===e)return n}}catch{}return e}function bf(e,t){let n=t.worker,r=t.baseOrigin||yf()||(typeof window<`u`?window.location.origin:``)||`https://invalid.local`;try{let t=typeof window<`u`?window:{},i;switch(n){case`signer`:i=t.__SEAMS_SIGNER_WORKER_URL__;break;case`ecdsaDerivationClient`:i=t.__SEAMS_ECDSA_DERIVATION_CLIENT_WORKER_URL__;break;case`ecdsaPresignClient`:i=t.__SEAMS_ECDSA_PRESIGN_CLIENT_WORKER_URL__;break;case`ecdsaOnlineClient`:i=t.__SEAMS_ECDSA_ONLINE_CLIENT_WORKER_URL__;break;case`touchConfirm`:i=t.__SEAMS_TOUCH_CONFIRM_WORKER_URL__;break;case`passkeyMpcExport`:i=t.__SEAMS_PASSKEY_MPC_EXPORT_WORKER_URL__;break;case`passkeyMpcSession`:i=t.__SEAMS_PASSKEY_MPC_SESSION_WORKER_URL__;break;case`deviceLinking`:i=t.__SEAMS_DEVICE_LINKING_WORKER_URL__;break;default:}let a=typeof i==`string`&&i?i:e||Sf(n);return xf(/^https?:\/\//i.test(a)?new URL(a):new URL(a,r),i).toString()}catch{try{return new URL(e||Sf(n),r).toString()}catch{}return e||Sf(n)}}function xf(e,t){if(typeof t==`string`&&t.length>0)return e;let n=nt(),r=et();if(!n||!r||e.searchParams.has(`v`))return e;try{let t=new URL(r);if(e.origin!==t.origin||!e.pathname.startsWith(t.pathname))return e;e.searchParams.set(`v`,n)}catch{}return e}function Sf(e){switch(e){case`signer`:return`/sdk/workers/near-signer.worker.js`;case`ecdsaDerivationClient`:return`/sdk/workers/ecdsa-derivation-client.worker.js`;case`ecdsaPresignClient`:return`/sdk/workers/ecdsa-presign-client.worker.js`;case`ecdsaOnlineClient`:return`/sdk/workers/ecdsa-online-client.worker.js`;case`touchConfirm`:return`/sdk/workers/passkey-confirm.worker.js`;case`passkeyMpcExport`:return`/sdk/workers/passkey-mpc-export.worker.js`;case`passkeyMpcSession`:return`/sdk/workers/passkey-mpc-session.worker.js`;case`deviceLinking`:return`/sdk/workers/device-linking-key.worker.js`;default:throw Error(`Unsupported dedicated worker kind`)}}var X=class extends Error{constructor(e,t,n){super(e),this.code=t,this.phase=n,this.name=`DeviceLinkingError`}};let Z=function(e){return e.INVALID_QR_DATA=`INVALID_QR_DATA`,e.ACCOUNT_NOT_OWNED=`ACCOUNT_NOT_OWNED`,e.AUTHORIZATION_TIMEOUT=`AUTHORIZATION_TIMEOUT`,e.INSUFFICIENT_BALANCE=`INSUFFICIENT_BALANCE`,e.REGISTRATION_FAILED=`REGISTRATION_FAILED`,e.WALLET_UNLOCK_REQUIRED=`WALLET_UNLOCK_REQUIRED`,e.DELIVERY_RECOVERY_REQUIRED=`DELIVERY_RECOVERY_REQUIRED`,e.SESSION_EXPIRED=`SESSION_EXPIRED`,e.UNSUPPORTED=`UNSUPPORTED`,e}({});function Cf(e){let t=w(e);if(!t.ok)throw Error(`Device-link target email address is invalid: ${t.error.message}`);return t.value}function wf(e){try{return Cf(e),!0}catch{return!1}}async function Tf(e,t){let n=Df(e,t);if(n===null)return;let r=await K.resolveSelectedWalletAuthority(n);if(r.kind!==`resolved`)return;let i=await q.readExactWithOperationCredential({walletId:n,authorityId:r.authority.authorityId,authMethodId:r.authMethod.walletAuthMethodId});i.kind===`found`&&await Qs(n,i.operationCredential.ownershipGeneration)}function Ef(e){let t=o(e);if(!t.ok)throw Error(`Wallet mutation identity is invalid`);return t.value}function Df(e,t){switch(e.type){case`PM_ADD_WALLET_SIGNER`:case`PM_ADD_PASSKEY`:case`PM_ADD_EMAIL_OTP`:case`PM_REVOKE_AUTH_METHOD`:case`PM_ACKNOWLEDGE_WALLET_RECOVERY_CODE_BACKUP`:case`PM_ROTATE_WALLET_RECOVERY_CODES`:case`PM_REQUEST_WALLET_CUSTODY_EMAIL_OTP_CHALLENGE`:case`PM_SIGN_TX_WITH_ACTIONS`:case`PM_SIGN_AND_SEND_TX`:case`PM_SIGN_DELEGATE_ACTION`:case`PM_SIGN_NEP413`:case`PM_REVOKE_LINKED_DEVICE`:return Ef(e.payload?.walletId);case`PM_SIGN_TEMPO`:case`PM_RESOLVE_EXACT_KEY_EXPORT_LANE`:case`PM_EXPORT_KEYPAIR_UI`:return Ef(e.payload?.walletSession.walletId);case`PM_SYNC_ACCOUNT_FLOW`:{let n=e.payload?.walletId??t;return n===null?null:Ef(n)}case`PM_SCAN_AND_LINK_DEVICE`:return t===null?null:Ef(t);case`PM_SET_TRANSACTION_VIEW`:case`PM_TRANSACTION_BROADCAST_STARTED`:case`PING`:case`PM_PREPARE_WALLET_RUNTIME`:case`PM_SET_CONFIG`:case`PM_ACTIVATE_TRANSACTION_REVIEW`:case`PM_CANCEL`:case`PM_OPEN_AUTH_MENU`:case`PM_CANCEL_AUTH_MENU`:case`PM_RESOLVE_AUTH_MENU_EXTERNAL_AUTH`:case`PM_REDEEM_HOSTED_WALLET_SEAMS_SESSION`:case`PM_REGISTER_WALLET`:case`PM_UNLOCK`:case`PM_LOCK`:case`PM_LOCK_EXACT_WALLET_SESSION`:case`PM_GET_LAST_WALLET_MOVE_REQUEST`:case`PM_MOVE_WALLET`:case`PM_GET_WALLET_MOVE`:case`PM_GET_WALLET_PLACEMENT`:case`PM_GET_WALLET_SESSION`:case`PM_GET_EXACT_WALLET_SESSION_STATE`:case`PM_GET_NEAR_PROVISIONING_STATE`:case`PM_REQUEST_EMAIL_OTP_CHALLENGE`:case`PM_BEGIN_GOOGLE_EMAIL_OTP_WALLET_AUTH`:case`PM_GOOGLE_EMAIL_OTP_WALLET_AUTH_RESEND`:case`PM_GOOGLE_EMAIL_OTP_WALLET_AUTH_REROLL_WALLET_ID`:case`PM_GOOGLE_EMAIL_OTP_WALLET_AUTH_SUBMIT`:case`PM_GOOGLE_EMAIL_OTP_WALLET_AUTH_COMPLETE_REGISTRATION`:case`PM_GOOGLE_EMAIL_OTP_WALLET_AUTH_CANCEL`:case`PM_GET_WALLET_RECOVERY_CODE_STATUS`:case`PM_SEND_TRANSACTION`:case`PM_REPORT_TEMPO_BROADCAST_ACCEPTED`:case`PM_REPORT_TEMPO_BROADCAST_REJECTED`:case`PM_REPORT_TEMPO_FINALIZED`:case`PM_REPORT_TEMPO_DROPPED_OR_REPLACED`:case`PM_RECONCILE_TEMPO_NONCE_LANE`:case`PM_GET_RECENT_UNLOCKS`:case`PM_SET_CONFIRM_BEHAVIOR`:case`PM_SET_CONFIRMATION_CONFIG`:case`PM_GET_CONFIRMATION_CONFIG`:case`PM_HAS_PASSKEY`:case`PM_LIST_LINKED_DEVICES`:case`PM_START_DEVICE2_LINKING_FLOW`:case`PM_DEVICE_LINK_TARGET_FACTOR_ACTION`:case`PM_DEVICE_LINK_EMAIL_OTP_BASE_FACTOR_ACTION`:case`PM_CANCEL_DEVICE_LINKING`:return null;default:throw Error(`Unsupported wallet mutation request`)}}async function Of(e,t){return kf(e,t,3)}async function kf(e,t,n){let{walletId:r}=e;if(n===0)return Bf(r,`superseded`);let i;try{i=await t.resolveSelectedWalletAuthority(String(e.walletId))}catch{return Bf(e.walletId,`unavailable`)}switch(i.kind){case`missing_selection`:return{kind:`wallet_locked`};case`missing_auth_method`:case`missing_authority`:case`integrity_error`:return Bf(e.walletId,`invalid`);case`resolved`:break}let{selection:a,authMethod:o,authority:s}=i;if(a.walletId!==e.walletId||a.walletAuthMethodId!==o.walletAuthMethodId||o.walletId!==e.walletId||o.walletAuthorityId!==s.authorityId||s.walletId!==e.walletId)return Bf(e.walletId,`invalid`);if(a.lockState===`locked`)return{kind:`wallet_locked`};if(o.status!==`active`||s.state!==`active`)return Bf(e.walletId,`invalid`);let c=await Mf(t,{walletId:e.walletId,authorityId:s.authorityId,authMethodId:o.walletAuthMethodId});switch(c.kind){case`missing`:return Bf(e.walletId,`absent`);case`corrupt`:return Bf(e.walletId,`invalid`);case`persistence_unavailable`:return Bf(e.walletId,`unavailable`);case`upgrade_required`:return Bf(e.walletId,`upgrade_required`);case`found`:break}let{record:l,operationCredential:u}=c;if(!jf({walletId:e.walletId,authorization:l,operationCredential:u,selected:i}))return Bf(e.walletId,`invalid`);let d=t.nowMs();if(l.expiresAtMs<=d)return Pf(e.walletId,o.kind,l,u);let f;try{f=await t.readStatus({authorization:l,operationCredential:u})}catch{return Bf(e.walletId,`unavailable`)}let p;try{p=await t.resolveSelectedWalletAuthority(e.walletId)}catch{return Bf(e.walletId,`unavailable`)}if(p.kind!==`resolved`||p.selection.lockState!==`unlocked`||p.selection.lockGeneration!==a.lockGeneration||p.selection.walletAuthMethodId!==a.walletAuthMethodId||p.authMethod.status!==`active`||p.authMethod.kind!==o.kind||p.authority.state!==`active`||!jf({walletId:r,authorization:l,operationCredential:u,selected:p}))return kf(e,t,n-1);let m=await Mf(t,{walletId:r,authorityId:s.authorityId,authMethodId:o.walletAuthMethodId});return m.kind!==`found`||!lt(m.record,l)||m.operationCredential.walletSessionId!==u.walletSessionId||m.operationCredential.token!==u.token?kf(e,t,n-1):l.expiresAtMs<=t.nowMs()?Pf(r,o.kind,l,u):Ff(f,l,u)?If({walletId:e.walletId,authMethod:o.kind,authorization:l,operationCredential:u,status:f}):Bf(e.walletId,`invalid`)}function Af(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Wallet iframe exact session identity must be an object`);return Rf(e)}function jf(e){let{authorization:t,operationCredential:n,selected:r}=e;return t.walletId===e.walletId&&t.authorityId===r.authority.authorityId&&t.authMethodId===r.authMethod.walletAuthMethodId&&t.authorityDigestB64u===r.authority.authorityDigestB64u&&t.authorityRevocationEpoch===r.authority.revocationEpoch&&n.kind===`opaque_wallet_session_operation_credential_v1`&&n.token.trim().length>0&&String(t.authorizationId)!==String(n.walletSessionId)}async function Mf(e,t){try{return await e.readExactActiveForWallet(t)}catch{return{kind:`persistence_unavailable`}}}function Nf(e,t,n,r){return{walletId:e,authorizationId:n.authorizationId,walletSessionId:r.walletSessionId,authMethod:t,expiresAtMs:n.expiresAtMs}}function Pf(e,t,n,r){return{kind:`expired_session`,...Nf(e,t,n,r)}}function Ff(e,t,n){if(e.walletSessionId!==n.walletSessionId||e.quotaId!==t.quotaId)return!1;switch(e.status){case`missing`:case`invalid`:return!0;case`active`:case`exhausted`:case`expired`:case`superseded`:case`authority_unavailable`:case`method_unavailable`:case`capability_unavailable`:return e.expiresAtMs===t.expiresAtMs&<(e.authorization,t)}}function If(e){switch(e.status.status){case`active`:return e.status.remainingUses<=0?Bf(e.walletId,`invalid`):{kind:`active_session`,status:`active`,...Nf(e.walletId,e.authMethod,e.authorization,e.operationCredential)};case`exhausted`:return Bf(e.walletId,`exhausted`);case`expired`:return Pf(e.walletId,e.authMethod,e.authorization,e.operationCredential);case`missing`:return{kind:`wallet_unlocked_without_signing_session`,walletId:e.walletId,reason:`not_found`,authorizationId:e.authorization.authorizationId,walletSessionId:e.operationCredential.walletSessionId,authMethod:e.authMethod};case`superseded`:case`authority_unavailable`:case`method_unavailable`:case`capability_unavailable`:return Bf(e.walletId,`superseded`);case`invalid`:return Bf(e.walletId,`invalid`)}}function Lf(e,t){return e.walletId===t.walletId&&e.authorizationId===t.authorizationId&&e.walletSessionId===t.walletSessionId}function Rf(e){let t=pt(Reflect.get(e,`walletSessionId`));if(!t.ok)throw Error(`Wallet iframe walletSessionId is invalid`);let n=Reflect.get(e,`expiresAtMs`);if(!Hf(n))throw Error(`Wallet iframe expiresAtMs is invalid`);let r=Vf(Reflect.get(e,`walletId`)),i=gt(Reflect.get(e,`authorizationId`));if(!i.ok)throw Error(`Wallet iframe authorizationId is invalid`);let a=Reflect.get(e,`authMethod`);if(!Ur(a))throw Error(`Wallet iframe authMethod is invalid`);return zf(i.value,t.value),{walletId:r,authorizationId:i.value,walletSessionId:t.value,authMethod:a,expiresAtMs:n}}function zf(e,t){if(String(e)===String(t))throw Error(`Wallet iframe authorization and Wallet Session IDs must be distinct`)}function Bf(e,t){return{kind:`wallet_unlocked_without_signing_session`,walletId:e,reason:t}}function Vf(e){let t=o(e);if(!t.ok)throw Error(`Wallet iframe walletId is invalid`);return t.value}function Hf(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>0}async function Uf(e,t){let n;try{n=await t.resolveSelectedWalletAuthority(String(e.walletId))}catch{return{kind:`failed`,reason:`unavailable`}}let r=Wf(e.walletId,n);if(r.kind!==`context`)return r;let i;try{i=await t.listWalletAuthMethodsV2ForWallet(String(e.walletId))}catch{return{kind:`failed`,reason:`unavailable`}}let a=new Set;for(let e of i){let n=await Gf({context:r,method:e,seenMethodIds:a},t);if(n.kind===`failed`)return n}return{kind:`reconciled`}}function Wf(e,t){switch(t.kind){case`missing_selection`:return{kind:`skipped`};case`missing_auth_method`:case`missing_authority`:case`integrity_error`:return{kind:`failed`,reason:`invalid`};case`resolved`:break}return t.selection.walletId!==e||t.authMethod.walletId!==e||t.authority.walletId!==e||t.selection.walletAuthMethodId!==t.authMethod.walletAuthMethodId||t.authMethod.walletAuthorityId!==t.authority.authorityId?{kind:`failed`,reason:`invalid`}:t.selection.lockState===`locked`?{kind:`skipped`}:t.authMethod.status!==`active`||t.authority.state!==`active`?{kind:`failed`,reason:`invalid`}:{kind:`context`,walletId:e,selected:t}}async function Gf(e,t){let{context:n,method:r,seenMethodIds:i}=e,a=String(r.walletAuthMethodId);if(i.has(a)||(i.add(a),r.walletId!==n.walletId))return{kind:`failed`,reason:`invalid`};if(r.walletAuthorityId!==n.selected.authority.authorityId||r.status!==`active`)return{kind:`skipped`};let o;try{o=await t.resolveWalletAuthorityForMethod(String(n.walletId),a)}catch{return{kind:`failed`,reason:`unavailable`}}if(o.kind!==`resolved`||!Kf(o,n,r))return{kind:`failed`,reason:`invalid`};let s;try{s=await t.readExactActiveForWallet({walletId:n.walletId,authorityId:o.authority.authorityId,authMethodId:o.authMethod.walletAuthMethodId})}catch{return{kind:`failed`,reason:`unavailable`}}switch(s.kind){case`missing`:return{kind:`skipped`};case`upgrade_required`:case`corrupt`:return{kind:`failed`,reason:`invalid`};case`persistence_unavailable`:return{kind:`failed`,reason:`unavailable`};case`found`:break}if(!qf(s.record,s.operationCredential,o))return{kind:`failed`,reason:`invalid`};let c;try{c=await t.readStatus({authorization:s.record,operationCredential:s.operationCredential})}catch{return{kind:`failed`,reason:`unavailable`}}let l=Jf(c,s.record,s.operationCredential);if(l.kind===`failed`||l.kind===`skipped`)return l;if(!lt(l.authorization,s.record)){try{if(await t.refreshExactWithOperationCredential({expected:s.record,record:l.authorization,operationCredential:s.operationCredential})===`superseded`)return{kind:`skipped`}}catch{return{kind:`failed`,reason:`unavailable`}}return{kind:`reconciled`}}return{kind:`reconciled`}}function Kf(e,t,n){return e.selection.walletId===t.walletId&&e.authMethod.walletAuthMethodId===n.walletAuthMethodId&&e.authMethod.walletId===t.walletId&&e.authMethod.walletAuthorityId===t.selected.authority.authorityId&&e.authMethod.status===`active`&&e.authority.authorityId===t.selected.authority.authorityId&&e.authority.walletId===t.walletId&&e.authority.state===`active`&&e.authority.authorityDigestB64u===t.selected.authority.authorityDigestB64u&&e.authority.revocationEpoch===t.selected.authority.revocationEpoch}function qf(e,t,n){try{return st(t),e.walletId===n.authority.walletId&&e.authorityId===n.authority.authorityId&&e.authMethodId===n.authMethod.walletAuthMethodId}catch{return!1}}function Jf(e,t,n){if(e.walletSessionId!==n.walletSessionId||e.quotaId!==t.quotaId)return{kind:`failed`,reason:`invalid`};switch(e.status){case`missing`:return{kind:`skipped`};case`invalid`:return{kind:`failed`,reason:`invalid`};case`active`:if(e.remainingUses<=0||e.quotaLifecycle!==`active`)return{kind:`failed`,reason:`invalid`};break;case`exhausted`:if(e.remainingUses!==0||e.quotaLifecycle!==`exhausted`)return{kind:`failed`,reason:`invalid`};break;case`expired`:case`superseded`:case`authority_unavailable`:case`method_unavailable`:case`capability_unavailable`:break}return e.authorization.walletId!==t.walletId||e.authorization.authorityId!==t.authorityId||e.authorization.authMethodId!==t.authMethodId||e.authorization.authorizationId!==t.authorizationId||e.authorization.quotaId!==t.quotaId||e.authorization.issuedAtMs!==t.issuedAtMs||e.authorization.expiresAtMs!==t.expiresAtMs||e.expiresAtMs!==e.authorization.expiresAtMs?{kind:`failed`,reason:`invalid`}:{kind:`reconciled`,authorization:e.authorization}}async function Yf(e,t,n){let r=String(e||``).trim();if(!r)throw Error(`Wallet iframe relayer URL is required`);return await t.read({relayerUrl:r,operationCredential:n.operationCredential},{walletSessionId:n.operationCredential.walletSessionId,quotaId:n.authorization.quotaId})}function Xf(e,t){return{resolveSelectedWalletAuthority:K.resolveSelectedWalletAuthority.bind(K),listWalletAuthMethodsV2ForWallet:K.listWalletAuthMethodsV2ForWallet.bind(K),resolveWalletAuthorityForMethod:K.resolveWalletAuthorityForMethod.bind(K),readExactActiveForWallet:q.readExactActiveForWallet.bind(q),readStatus:Yf.bind(null,e,t),refreshExactWithOperationCredential:q.refreshExactWithOperationCredential.bind(q),nowMs:Date.now}}function Zf(e){e.changed=!0}async function Qf(e){let t=String(e.preferences.getCurrentWalletId()||``).trim();if(t)return t;let n={changed:!1},r=e.preferences.onCurrentWalletChange(Zf.bind(null,n));try{let t=await e.auth.getRecentUnlocks();if(n.changed)return e.preferences.getCurrentWalletId()??void 0;let r=String(t.lastUsedAccount?.walletId||``).trim(),i=t.walletIds.map(e=>String(e).trim()).filter(Boolean),a=r||(i.length===1?i[0]:void 0);return a&&e.preferences.setCurrentWallet(z(a)),a}finally{r()}}async function $f(e,t,n){let r;switch(t.wallet.kind){case`current`:r=t.authenticationRead===`restore`?await Qf(e):e.preferences.getCurrentWalletId()??void 0;break;case`exact`:if(r=t.wallet.walletId.trim(),!r)throw Error(`Wallet iframe exact session walletId is invalid`);break}if(!r)return{kind:`wallet_locked`};let i=Xf(e.configs.network.relayer.url,n),a=await Uf({walletId:z(r)},i);return a.kind===`failed`?{kind:`wallet_unlocked_without_signing_session`,walletId:z(r),reason:a.reason}:await Of({walletId:z(r)},i)}var ep=class{constructor(e,t,n,r){this.runtime=e,this.post=t,this.expiredSessions=n,this.readSession=r,this.lifecycle=`active`,this.refresh={kind:`idle`},this.invalidationRevision=0,this.activeOperations=0,this.pendingObservations=new Map,this.unsubscribeAuthority=Ki.onWalletAuthorityChange(this.invalidate.bind(this)),this.unsubscribeSelection=e.preferences.onCurrentWalletChange(this.invalidate.bind(this))}dispose(){this.lifecycle=`disposed`,this.unsubscribeAuthority(),this.unsubscribeSelection()}beginOperation(){this.assertActive(),this.activeOperations+=1}endOperation(){--this.activeOperations,this.lifecycle===`active`&&this.activeOperations===0&&this.refresh.kind===`pending`&&this.requestRefresh()}onLifecycleEvent(e){if(this.lifecycle===`disposed`)return;let t=rt();e.event===`signing_session.expired`&&(this.invalidationRevision+=1),this.post({type:`SDK_LIFECYCLE_EVENT`,payload:{revision:t,event:e}}),e.event===`signing_session.expired`&&this.requestRefresh()}publishCurrentSession(){return this.observe({authenticationRead:`current`,wallet:{kind:`current`}},this.publishSnapshot.bind(this))}async observe(e,t){for(let n=0;n<3;n+=1){this.assertActive();let n=this.invalidationRevision,r=Ki.getWalletAuthorityRevision(),i={changed:!1},a=this.runtime.preferences.onCurrentWalletChange(Zf.bind(null,i));try{let{revision:a,state:o,session:s}=await this.readObservation(e,r);if(this.assertActive(),i.changed&&this.runtime.preferences.getCurrentWalletId()===null){t({revision:rt(),walletId:null,state:{kind:`wallet_locked`},session:tt()});return}if(i.changed||n!==this.invalidationRevision||r!==Ki.getWalletAuthorityRevision())continue;t({revision:a,walletId:e.wallet.kind===`exact`?z(e.wallet.walletId):this.runtime.preferences.getCurrentWalletId(),state:this.projectExpiry(o),session:s});return}finally{a()}}throw Error(`Wallet authority changed repeatedly during session observation`)}readObservation(e,t){let n=this.runtime.preferences.getCurrentWalletId(),r=e.wallet.kind===`exact`?e.wallet.walletId:n,i=JSON.stringify([e.authenticationRead,r,n,t,this.invalidationRevision]),a=this.pendingObservations.get(i);if(a)return a;let o=this.resolveObservation(e).finally(this.finishObservation.bind(this,i));return this.pendingObservations.set(i,o),o}async resolveObservation(e){let t=rt(),n=el.forHostObservation(),r=await $f(this.runtime,e,n);return{revision:t,state:r,session:r.kind===`wallet_locked`?tt():await this.readSession(r.walletId,n)}}finishObservation(e){this.pendingObservations.delete(e)}projectExpiry(e){return e.kind!==`active_session`||!this.expiredSessions.get(e.walletId)?.has(e.walletSessionId)?e:{kind:`expired_session`,walletId:e.walletId,authorizationId:e.authorizationId,walletSessionId:e.walletSessionId,authMethod:e.authMethod,expiresAtMs:e.expiresAtMs}}assertActive(){if(this.lifecycle===`disposed`)throw Error(`Wallet session observer is disposed`)}invalidate(){this.lifecycle!==`disposed`&&(this.invalidationRevision+=1,this.requestRefresh())}requestRefresh(){if(this.refresh.kind===`running`){this.refresh.pending=!0;return}if(this.activeOperations>0){this.refresh={kind:`pending`};return}this.refresh={kind:`running`,pending:!1},this.refreshSession().catch(this.reportRefreshFailure.bind(this))}async refreshSession(){try{do{if(this.refresh.kind!==`running`)return;this.refresh.pending=!1;try{await this.publishCurrentSession()}catch(e){this.reportRefreshFailure(e)}}while(this.lifecycle===`active`&&this.refresh.kind===`running`&&this.refresh.pending)}finally{this.refresh={kind:`idle`}}}publishSnapshot(e){this.assertActive(),this.refresh.kind===`running`?this.refresh.pending=!1:this.refresh.kind===`pending`&&(this.refresh={kind:`idle`}),this.post({type:`SESSION_CHANGED`,payload:e})}reportRefreshFailure(e){this.lifecycle===`active`&&console.warn(`[WalletIframeHost] Session refresh failed:`,e)}};function tp(e){let t=e.override?.ttlMs??e.defaults.ttlMs,n=typeof t==`number`?Math.floor(t):Math.floor(Number(t)||0),r=Le({requestedRemainingUses:e.override?.remainingUses??e.defaults.remainingUses??Re});return!(n>0)||r===null?{kind:`disabled`,ttlMs:0,unlockRemainingUses:null}:{kind:`enabled`,ttlMs:n,unlockRemainingUses:r}}async function np(e){try{let t=e.runtime.activationReceipt.normalSigning.scope,n=Ku({routerAbState:e.runtime.activationReceipt.normalSigning}),r=await ao({ecdsaThresholdKeyId:t.ecdsa_threshold_key_id,signingRootId:t.signing_root_id,signingRootVersion:t.signing_root_version});if(fd(e.runtime)!==e.runtime)return;let i=zu({relayerUrl:e.relayerUrl,keyHandle:gs(r),ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,clientVerifyingShareB64u:n.clientVerifier33B64u,clientSigningMaterial:Bu(e.runtime.holderHandleId),thresholdEcdsaPublicKeyB64u:n.thresholdVerifier33B64u,relayerVerifyingShareB64u:n.serverVerifier33B64u,credential:{kind:`wallet_session_opaque`,walletSessionToken:e.operationCredential.token,home:e.operationCredential.home,ownershipGeneration:e.operationCredential.ownershipGeneration},authorization:{kind:`reusable_wallet_session`,wallet_session_id:e.operationCredential.walletSessionId},materialActivation:fo(e.runtime.materialActivation),routerAbEcdsaDerivationPoolFill:{kind:`router_ab_ecdsa_derivation_signing_worker_pool`,scope:t,ceremonyExpiresAtMs:e.expiresAtMs,materialExpiresAtMs:Date.now()+$s},workerCtx:e.workerCtx});rl(`evm-family`,{event:`ecdsa_linked_device_prefill`,scheduled:i.scheduled,reason:i.reason,depth:i.depth,targetDepth:i.targetDepth})}catch{rl(`evm-family`,{event:`ecdsa_linked_device_prefill`,scheduled:!1,reason:`unexpected_error`})}}var rp=class extends Error{constructor(e){super(`[OwnerLaneScope] ${e}`),this.name=`OwnerLaneScopeIntegrityError`}};function ip(e){return{walletId:e.walletId,factor:{kind:`passkey`,credentialIdB64u:e.credentialIdB64u},verifier:{kind:`webauthn`,rpId:e.rpId},bindingId:e.walletAuthMethodId}}function ap(e){let t=String(e.providerSubjectId||``).trim();if(!t)throw new rp(`active Email OTP method has no exact local factor`);let n=za({walletId:e.authMethod.walletId,factor:{kind:`email_otp`,provider:t.startsWith(`google:`)?`google`:`email`,providerUserId:t},verifier:{kind:`email_otp_wallet_auth_method`,emailHashHex:e.authMethod.emailHashHex},bindingId:e.authMethod.walletAuthMethodId});if(!n)throw new rp(`active Email OTP method has no exact local factor`);return n}function op(e){let t=e.localMethods.filter(t=>t.kind===`email_otp`&&t.status===`active`&&t.walletId===e.authMethod.walletId&&t.emailHashHex===e.authMethod.emailHashHex),n=t[0],r=n?za(n.authority):null;if(t.length!==1||!r||r.walletId!==e.authMethod.walletId||r.bindingId!==e.authMethod.walletAuthMethodId||r.verifier.emailHashHex!==e.authMethod.emailHashHex)throw new rp(`active Email OTP method has no exact local factor`);return r}async function sp(e){let t=String(e.authMethod.walletId);try{return op({authMethod:e.authMethod,localMethods:await e.stores.listWalletAuthMethodsForWallet(t)})}catch(n){if(!e.stores.readEmailOtpProviderSubjectForWallet)throw n;let r=await e.stores.readEmailOtpProviderSubjectForWallet(t);if(!r)throw n;return ap({authMethod:e.authMethod,providerSubjectId:r})}}function cp(e){if(e.authority.walletId!==e.authMethod.walletId||e.authority.bindingId!==e.authMethod.walletAuthMethodId)throw new rp(`active wallet auth method does not have an exact factor authority binding`);return e.authority}async function lp(e){return e.authMethod.kind===`passkey`?cp({authMethod:e.authMethod,authority:ip(e.authMethod)}):cp({authMethod:e.authMethod,authority:await sp({authMethod:e.authMethod,stores:e.stores})})}function up(e){return{auth:{kind:`passkey`,rpId:Ha(e.authMethod.rpId),credentialIdB64u:e.authMethod.credentialIdB64u},signerSlot:e.signerSlot}}function dp(e){return{auth:{kind:`passkey`,rpId:Ha(e.authMethod.rpId),credentialIdB64u:e.authMethod.credentialIdB64u},keyFamily:`ecdsa`}}function fp(e){if(e.factorAuthority.walletId!==e.authMethod.walletId||e.factorAuthority.bindingId!==e.authMethod.walletAuthMethodId||e.factorAuthority.verifier.emailHashHex!==e.authMethod.emailHashHex||e.authorityRef.walletId!==e.authMethod.walletId||e.authorityRef.walletAuthMethodId!==e.authMethod.walletAuthMethodId)throw new rp(`linked Email OTP authority does not match the selected V2 method`);return{auth:{kind:`email_otp`,providerSubjectId:String(e.factorAuthority.factor.providerUserId)},ownerAuthority:{walletAuthMethodId:e.authorityRef.walletAuthMethodId,authorityDigest:e.authorityRef.authorityDigest}}}async function pp(e){let t=await e.stores.getWalletPasskeyAuthenticator({walletId:String(e.authMethod.walletId),credentialId:e.authMethod.credentialIdB64u});if(!t||t.credentialId!==e.authMethod.credentialIdB64u)throw new rp(`active Passkey auth method has no exact local authenticator`);let n=Vs(t.signerSlot,{min:1});if(n===null)throw new rp(`local authenticator signer slot is invalid`);return up({authMethod:e.authMethod,signerSlot:n})}async function mp(e){if(e.authMethod.kind===`passkey`)return await pp({authMethod:e.authMethod,stores:e.stores});let t=await sp({authMethod:e.authMethod,stores:e.stores}),n=await U({authority:t});return{auth:{kind:`email_otp`,providerSubjectId:String(t.factor.providerUserId)},ownerAuthority:{walletAuthMethodId:n.walletAuthMethodId,authorityDigest:n.authorityDigest}}}function hp(e){let t=e.available.capability,n=t.manifest.signer;if(!n.scope.targetMemberships.some(t=>B(t)===B(e.chainTarget)))return null;let r=n.registeredPublicFacts,i={capability:t,key:so({walletId:n.walletId,ecdsaThresholdKeyId:t.manifest.durableMaterial.roleLocalBinding.ecdsaThresholdKeyId,signingRootId:n.signingRootId,signingRootVersion:n.signingRootVersion,participantIds:r.participantIds,thresholdOwnerAddress:r.thresholdOwnerAddress}),materialActivation:t.manifest.activation.materialActivation,publicFacts:r,curve:`ecdsa`,chainTarget:e.chainTarget,source:`canonical_capability`},a=e.available.kind===`authorized_evm_family_ecdsa_signing_capability`?e.available.authorization:null;if(Ma(t.authority)){let e={kind:`passkey`,rpId:Ha(t.authority.verifier.rpId),credentialIdB64u:t.authority.factor.credentialIdB64u},o=Za({walletId:n.walletId,publicFacts:r,authBinding:Ya(e)});return a?{...i,auth:e,resolvedKey:o,state:`ready`,authorization:a,remainingUses:a.runtime.remainingUses,expiresAtMs:a.runtime.expiresAtMs}:{...i,auth:e,resolvedKey:o,state:`deferred`}}if(!Na(t.authority))return null;let o={kind:`email_otp`,providerSubjectId:t.authority.factor.providerUserId};return a?{...i,auth:o,state:`ready`,authorization:a,remainingUses:a.runtime.remainingUses,expiresAtMs:a.runtime.expiresAtMs}:{...i,auth:o,state:`deferred`}}function gp(e){throw Error(`Unsupported persisted Ed25519 auth method: ${String(e)}`)}async function _p(e,t,n,r){return await Cp(e,{...t,ecdsaChainTargets:n,requiredEcdsaCapability:`sign`},r,`all`)}async function vp(e,t,n){return await Cp(e,{walletId:t.walletId,authMethod:ec(t.ownerScope.auth),ownerScope:t.ownerScope,ecdsaChainTargets:t.ecdsaChainTargets,requiredEcdsaCapability:t.requiredEcdsaCapability,...t.nowMs===void 0?{}:{nowMs:t.nowMs}},n,`all`)}async function yp(e,t,n){if(t.curve===`ecdsa`){let{curve:r,...i}=t,a=new Map;for(let e of[...t.ecdsaChainTargets,...n])a.set(B(e),e);return await Cp(e,{...i,ecdsaChainTargets:[...a.values()],requiredEcdsaCapability:`sign`},new el,`ecdsa`)}let{curve:r,...i}=t;return await _p(e,i,[],new el)}function bp(e){return String(e.thresholdSessionIds?.ed25519||``).trim().length>0}function xp(e,t){let n=e.ecdsaRestore?.chainTarget;if(!n)return!1;let r=B(n);for(let e of t)if(r===B(e))return!0;return!1}function Sp(e,t){let n=[];for(let r of e)`recordKind`in r||bp(r)&&(t.length>0&&!xp(r,t)||n.push(r));return n}async function Cp(e,t,n,r){let i=String(z(t.walletId)).trim();return await Sd({...t,walletId:i,ecdsaChainTargets:t.ecdsaChainTargets},{listPublicCapabilityReferences:r===`all`&&e.ed25519YaoPublicCapabilityLanes?e.ed25519YaoPublicCapabilityLanes.listLanes.bind(e.ed25519YaoPublicCapabilityLanes):void 0,isPublicCapabilityActive:e.isEd25519YaoPublicCapabilityActive,readActiveWalletSessionAuthorization:r===`all`?e.readActiveWalletSessionAuthorization?.bind(null,n):void 0,listSealedRecordsForWallet:async({walletId:e,filter:n})=>{if(r===`ecdsa`)return[];let i=async n=>{let r=await en({walletId:e,filter:{authMethod:n,curve:`ed25519`}});switch(n){case H.passkey:return r;case H.emailOtp:{let n=Sp(await Yn({walletId:e,filter:{authMethod:H.emailOtp,curve:`ecdsa`}}),t.ecdsaChainTargets);return[...r,...n]}default:return gp(n)}};if(n.authMethod)return await i(n.authMethod);let[a,o]=await Promise.all([i(H.emailOtp),i(H.passkey)]);return[...a,...o]},listCanonicalEcdsaLanesForWallet:async({walletId:r})=>{let i=[],a=new Set,o=await e.listEcdsaSigningCapabilitiesForWallet({walletId:r,chainTargets:t.ecdsaChainTargets,...t.authMethod?{authMethod:t.authMethod}:{}},n);for(let e of o)for(let n of t.ecdsaChainTargets){let t=hp({available:e,chainTarget:n});if(!t)continue;let r=xd(t);!r||a.has(r)||(a.add(r),i.push(t))}return i},listActiveWalletAuthorityEcdsaLanesForWallet:async({walletId:n,chainTargets:r})=>(await Promise.all(r.map(async r=>{let i=await gd({ports:e.activeWalletAuthorityEcdsaRuntimeReadPorts,input:{walletId:z(n),chainTarget:r,requiredCapability:t.requiredEcdsaCapability}});return i.kind===`resolved`&&i.lane?i.lane:null}))).filter(e=>e!==null).map(Td)})}function wp(e,t){let n=String(e||``).trim();if(!n)throw Error(`[WalletSessionStatus] ${t} is required`);return n}function Tp(e){let t=pt(e.walletSessionId),n=dt(e.quotaId);return!t.ok||!n.ok?null:{walletSessionId:t.value,quotaId:n.value}}function Ep(e){let t=Tp(e.authorization);if(!t)throw Error(`[WalletSessionStatus] canonical Wallet Session identity is invalid`);return{kind:`wallet_session_status_check`,owner:e.owner,authorization:t}}function Dp(e){return{curve:`ed25519`,walletId:z(e)}}function Op(e){return e.walletId}function kp(e){return`${e.curve}:${Op(e)}`}function Ap(e){return`${e.walletSessionId}:${e.quotaId}`}function jp(e){let t=String(e.walletSessionId);switch(e.status){case`active`:return{sessionId:t,status:`active`,remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs};case`exhausted`:return{sessionId:t,status:`exhausted`,remainingUses:0,expiresAtMs:e.expiresAtMs};case`expired`:return{sessionId:t,status:`expired`,expiresAtMs:e.expiresAtMs};case`missing`:case`superseded`:return{sessionId:t,status:`not_found`,statusCode:e.status};case`authority_unavailable`:case`method_unavailable`:case`capability_unavailable`:return{sessionId:t,status:`unavailable`,statusCode:e.status,expiresAtMs:e.expiresAtMs};case`invalid`:return{sessionId:t,status:`status_unknown`,statusCode:`invalid_wallet_session_status`};default:throw Error(`[WalletSessionStatus] unsupported canonical status`)}}async function Mp(e,t){return await e.getAvailableStatus(t).catch(()=>null)}function Np(e,t){if(!t||t.status===`status_unknown`)return e;if(t.status!==`active`)return{...e,...t,sessionId:e.sessionId};let n=Math.max(0,Math.floor(Number(t.remainingUses)||0)),r=Math.floor(Number(e.expiresAtMs)||0),i=Math.floor(Number(t.expiresAtMs)||0);return{...e,status:`active`,remainingUses:n,expiresAtMs:r>0&&i>0?Math.min(r,i):r||i,...t.authMethod?{authMethod:t.authMethod}:{},...t.retention?{retention:t.retention}:{}}}function Pp(e){return Ep(e)}function Fp(e){return async t=>{let n=t.authorization,r=await e.readAuthorization(t.owner.walletId);switch(r.kind){case`missing`:case`corrupt`:case`persistence_unavailable`:case`upgrade_required`:return null;case`found`:break;default:return r}if(!Ip(n,t.owner.walletId,r))return null;let i=String(e.relayerUrl||``).trim();if(!i)return null;let a=await $c({relayerUrl:i,operationCredential:r.operationCredential}).read(n).catch(()=>null);return a?jp(a):null}}function Ip(e,t,n){return n.record.walletId===t&&n.record.quotaId===e.quotaId&&n.operationCredential.walletSessionId===e.walletSessionId}function Lp(e,t,n){let r=String(e||``).trim();if(!r)throw Error(`[signer-core-command] ${t} is required`);if(F(r).length!==n)throw Error(`[signer-core-command] ${t} must decode to ${n} bytes`);return r}function Rp(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`[signer-core-command] ${t} must be an object`);return e}function zp(e,t,n){let r=Object.keys(e).sort(),i=[...t].sort();if(r.length!==i.length||r.some((e,t)=>e!==i[t]))throw Error(`[signer-core-command] ${n} fields are invalid`)}function Bp(e,t){if(typeof e!=`string`)throw Error(`[signer-core-command] ${t} must be a string`);let n=e.trim();if(!n)throw Error(`[signer-core-command] ${t} is required`);return n}function Vp(e){return Lp(e,`derivationClientSharePublicKey33B64u`,33)}function Hp(e){return Lp(e,`relayerPublicKey33B64u`,33)}function Up(e,t){return Lp(e,t,33)}function Wp(e){let t=String(e||``).trim();if(!/^0x[0-9a-fA-F]{40}$/.test(t))throw Error(`[signer-core-command] ethereumAddress must be 0x-prefixed 20-byte hex`);return t}function Gp(e){let t=Rp(e,`ECDSA pending state blob`);if(zp(t,[`kind`,`curve`,`encoding`,`producer`,`stateBlobB64u`],`ECDSA pending state blob`),Reflect.get(t,`kind`)!==`ecdsa_role_local_pending_state_blob_v1`||Reflect.get(t,`curve`)!==`secp256k1`||Reflect.get(t,`encoding`)!==`base64url`||Reflect.get(t,`producer`)!==`signer_core`)throw Error(`[signer-core-command] invalid ECDSA pending state blob envelope`);return{kind:`ecdsa_role_local_pending_state_blob_v1`,curve:`secp256k1`,encoding:`base64url`,producer:`signer_core`,stateBlobB64u:Bp(Reflect.get(t,`stateBlobB64u`),`pendingStateBlob.stateBlobB64u`)}}function Kp(e){if(e.kind!==`ecdsa_role_local_state_blob_v1`||e.curve!==`secp256k1`||e.encoding!==`base64url`||e.producer!==`signer_core`)throw Error(`[signer-core-command] invalid ECDSA ready state blob envelope`);return e}function qp(e){return{kind:e.kind,algorithm:e.algorithm,context:{applicationBindingDigestB64u:e.context.applicationBindingDigestB64u},participants:{clientParticipantId:e.participants.clientParticipantId,relayerParticipantId:e.participants.relayerParticipantId,participantIds:[...e.participants.participantIds]},secretSource:{kind:`threshold_prf_x_client_base`,xClientBaseB64u:Lp(e.secretSource.xClientBaseB64u,`secretSource.xClientBaseB64u`,32)}}}function Jp(e){if(e.clientBootstrap.participantId!==1)throw Error(`[signer-core-command] ECDSA client bootstrap participantId must be 1`);let t=Vp(e.clientBootstrap.derivationClientSharePublicKey33B64u);return{pendingStateBlob:Gp(e.pendingStateBlob),clientBootstrap:{contextBinding32B64u:Lp(e.clientBootstrap.contextBinding32B64u,`contextBinding32B64u`,32),derivationClientSharePublicKey33B64u:t,clientShareRetryCounter:e.clientBootstrap.clientShareRetryCounter,participantId:1},publicFacts:{derivationClientSharePublicKey33B64u:Vp(e.publicFacts.derivationClientSharePublicKey33B64u),clientVerifyingShareB64u:Up(e.publicFacts.clientVerifyingShareB64u,`clientVerifyingShareB64u`)}}}function Yp(e){return{kind:e.kind,pendingStateBlob:e.pendingStateBlob,relayerPublicIdentity:{relayerKeyId:e.relayerPublicIdentity.relayerKeyId,relayerPublicKey33B64u:e.relayerPublicIdentity.relayerPublicKey33B64u,groupPublicKey33B64u:e.relayerPublicIdentity.groupPublicKey33B64u,ethereumAddress:e.relayerPublicIdentity.ethereumAddress,relayerShareRetryCounter:e.relayerPublicIdentity.relayerShareRetryCounter}}}function Xp(e){return{stateBlob:Kp(e.stateBlob),publicFacts:{contextBinding32B64u:Lp(e.publicFacts.contextBinding32B64u,`contextBinding32B64u`,32),derivationClientSharePublicKey33B64u:Vp(e.publicFacts.derivationClientSharePublicKey33B64u),clientVerifyingShareB64u:Up(e.publicFacts.clientVerifyingShareB64u,`clientVerifyingShareB64u`),relayerPublicKey33B64u:Hp(e.publicFacts.relayerPublicKey33B64u),groupPublicKey33B64u:Up(e.publicFacts.groupPublicKey33B64u,`groupPublicKey33B64u`),ethereumAddress:Wp(e.publicFacts.ethereumAddress)}}}function Zp(e){return{ok:!1,code:`unavailable`,message:e}}function Qp(e,t){return{ok:!1,failure:`invocation`,code:e,message:t}}function $p(e,t){return{ok:!1,failure:`command`,code:e,message:t}}function em(e){let t=F(e),n=new ArrayBuffer(t.byteLength);return new Uint8Array(n).set(t),n}function tm(e){return{challenge:em(e.challengeB64u),rp:{id:e.rpId,name:e.rpId},user:{id:em(e.user.idB64u),name:e.user.name,displayName:e.user.displayName},pubKeyCredParams:e.pubKeyCredParams.map(e=>({type:e.type,alg:e.alg})),authenticatorSelection:e.authenticatorSelection,timeout:e.timeoutMs,attestation:e.attestation,excludeCredentials:e.excludeCredentials.map(e=>({type:e.type,id:em(e.id)})),extensions:{prf:{eval:{first:F(e.extensions.prf.eval.firstB64u),second:F(e.extensions.prf.eval.secondB64u)}}}}}function nm(e){return/wasm (initialization|initialize|instantiation)|webassembly|module_or_path|failed to (load|compile|instantiate) wasm|derivation client wasm initialization failed/i.test(e)}function rm(e){let t=hu(e),n=uu(e),r=L(e);if(n===`ECDSA_DERIVATION_WASM_INIT_FAILURE`||nm(r))return Qp(`native_binding_failure`,r);switch(t){case`TIMEOUT`:return Qp(`timeout`,r);case`WORKER_POSTMESSAGE_ERROR`:case`WORKER_PROTOCOL_ERROR`:case`WORKER_RUNTIME_ERROR`:return Qp(`worker_transport_failure`,r);default:break}return/timed out/i.test(r)?Qp(`timeout`,r):/postMessage|worker runtime|worker response|worker protocol|Malformed worker|Unknown worker/i.test(r)?Qp(`worker_transport_failure`,r):null}function im(e){let t=L(e);return/relayer|public identity|group public key|ethereum address|threshold public key/i.test(t)?$p(`public_identity_mismatch`,t):$p(`invalid_pending_state`,t)}function am(e){return{kind:`durable_record_store`,async loadEcdsaRoleLocalReadyRecord(t){let n=ds(t);try{let r=await e.getAppState(n);if(r!=null){let e=is(r);return hs({record:e,input:t})?{ok:!0,value:{kind:`found`,record:e}}:{ok:!0,value:{kind:`malformed`,cleanup:{...t,reason:`Stored ECDSA role-local record identity does not match lookup input`},message:`Stored ECDSA role-local record identity does not match lookup input`}}}return{ok:!0,value:{kind:`not_found`}}}catch(e){let n=L(e);return{ok:!0,value:{kind:`malformed`,cleanup:{...t,reason:n},message:n}}}},async persistEcdsaRoleLocalReadyRecord(t){try{let n=is(t.record);return hs({record:n,input:t.storageKeyFacts})?(await e.setAppState(ds(t.storageKeyFacts),ms(n)),{ok:!0,value:{kind:`persisted`}}):{ok:!1,code:`invalid_record`,message:`ECDSA role-local ready record identity does not match storageKeyFacts`}}catch(e){return{ok:!1,code:`invalid_record`,message:L(e)}}},async cleanupMalformedEcdsaRoleLocalRecord(t){try{return await e.setAppState(ds(t),null),{ok:!0,value:{kind:`deleted`}}}catch(e){return{ok:!1,code:`unavailable`,message:L(e)}}}}}function om(){return{kind:`secure_secret_store`,async seal(){return Zp(`Browser secure secret store is not wired yet`)},async unseal(){return Zp(`Browser secure secret store is not wired yet`)},async delete(){return Zp(`Browser secure secret store is not wired yet`)}}}function sm(e){return e instanceof DOMException?e.name===`NotAllowedError`?{ok:!1,code:`not_allowed`,message:e.message||`Passkey operation was not allowed`}:{ok:!1,code:`platform_error`,message:e.message||e.name}:{ok:!1,code:`platform_error`,message:e instanceof Error?e.message:String(e)}}function cm(){return{prf:{eval:{first:Ye,second:qe}}}}function lm(){return{ok:!1,code:`prf_unavailable`,message:`Required passkey PRF.first output is unavailable`}}function um(e){return/Missing PRF/i.test(L(e))?lm():null}function dm(e){return!!(e&&typeof e==`object`&&`rawId`in e&&`response`in e&&typeof e.getClientExtensionResults==`function`)}async function fm(e,t,n){return e===`create`?n.create({publicKey:t}):n.get({publicKey:t})}function pm(e){return{kind:`authenticator`,async run(t){if(!e)return{ok:!1,code:`unavailable`,message:`navigator.credentials is unavailable`};try{switch(t.kind){case`create_passkey`:{let n=t.registrationOptions,r=await fm(`create`,tm(n),e);if(!dm(r))return{ok:!1,code:`invalid_credential`,message:`Passkey creation returned an invalid credential`};let i;try{i=ac({credential:r})}catch(e){if(t.requirePrfFirst){let t=um(e);if(t)return t}throw e}let a=oc(i);if(t.requirePrfFirst&&!a)return lm();if(t.requirePrfFirst){let e=a||``;return{ok:!0,operation:`create_passkey`,requirePrfFirst:!0,credential:i,credentialIdB64u:i.rawId,rawIdB64u:i.rawId,rpId:Ha(n.rpId),prf:{kind:`required`,prfFirstB64u:e}}}return{ok:!0,operation:`create_passkey`,requirePrfFirst:!1,credential:i,credentialIdB64u:i.rawId,rawIdB64u:i.rawId,rpId:Ha(n.rpId),prf:a?{kind:`available_without_requirement`,prfFirstB64u:a}:{kind:`not_requested_or_unavailable`}}}case`get_passkey`:{let n=await fm(`get`,{rpId:t.rpId,challenge:em(t.challengeB64u),allowCredentials:[{type:`public-key`,id:em(t.credentialIdB64u)}],userVerification:`preferred`,extensions:cm()},e);if(!dm(n))return{ok:!1,code:`invalid_credential`,message:`Passkey assertion returned an invalid credential`};let r;try{r=lc({credential:n})}catch(e){if(t.requirePrfFirst){let t=um(e);if(t)return t}throw e}let i=oc(r);if(t.requirePrfFirst&&!i)return lm();if(t.requirePrfFirst){let e=i||``;return{ok:!0,operation:`get_passkey`,requirePrfFirst:!0,credential:r,credentialIdB64u:r.rawId,rawIdB64u:r.rawId,rpId:t.rpId,prf:{kind:`required`,prfFirstB64u:e}}}return{ok:!0,operation:`get_passkey`,requirePrfFirst:!1,credential:r,credentialIdB64u:r.rawId,rawIdB64u:r.rawId,rpId:t.rpId,prf:i?{kind:`available_without_requirement`,prfFirstB64u:i}:{kind:`not_requested_or_unavailable`}}}}}catch(e){return sm(e)}}}}function mm(e){return{kind:`signer_crypto`,async createRouterAbEcdsaRegistrationCeremony(t){if(!e)throw Error(`ECDSA derivation client worker context is unavailable`);return Ou({command:t,workerCtx:e})},async verifyRouterAbEcdsaRegistrationClientProofs(t){if(!e)throw Error(`ECDSA derivation client worker context is unavailable`);return wu({command:t,workerCtx:e})},async persistInitialCanonicalEcdsaActivation(t){if(!e)throw Error(`ECDSA derivation client worker context is unavailable`);return Du({command:t,workerCtx:e})},async finalizeRouterAbEcdsaRegistrationActivation(t){if(!e)throw Error(`ECDSA derivation client worker context is unavailable`);return xu({command:t,workerCtx:e})},async closeRouterAbEcdsaRegistrationCeremony(t){if(!e)throw Error(`ECDSA derivation client worker context is unavailable`);return Au({command:t,workerCtx:e})},async prepareEcdsaClientBootstrap(t){if(!e)return Qp(`unavailable`,`ECDSA client bootstrap worker context is unavailable`);try{return{ok:!0,value:Jp(await Cu({command:qp(t),workerCtx:e}))}}catch(e){let t=L(e);return t.includes(`unsupported ECDSA bootstrap secret source`)?$p(`unsupported_secret_source`,t):rm(e)||$p(`crypto_failure`,t)}},async finalizeEcdsaClientBootstrap(t){if(t.pendingStateBlob.kind!==`ecdsa_role_local_pending_state_blob_v1`||t.pendingStateBlob.curve!==`secp256k1`||t.pendingStateBlob.encoding!==`base64url`||t.pendingStateBlob.producer!==`signer_core`)return $p(`invalid_pending_state`,`ECDSA client bootstrap pending blob envelope is invalid`);if(!e)return Qp(`unavailable`,`ECDSA client bootstrap worker context is unavailable`);try{return{ok:!0,value:Xp(await Eu({command:Yp(t),workerCtx:e}))}}catch(e){return rm(e)||im(e)}},async storeEcdsaRoleLocalSigningMaterial(t){if(t.stateBlob.kind!==`ecdsa_role_local_state_blob_v1`||t.stateBlob.curve!==`secp256k1`||t.stateBlob.encoding!==`base64url`||t.stateBlob.producer!==`signer_core`)return $p(`invalid_ready_state`,`ECDSA role-local ready blob envelope is invalid`);if(!e)return Qp(`unavailable`,`ECDSA role-local material worker context is unavailable`);try{let n=await Fu({materialHandle:t.handle.materialHandle,bindingDigest:t.handle.bindingDigest,stateBlob:t.stateBlob,workerCtx:e});return{ok:!0,value:{handle:{kind:`ecdsa_role_local_worker_handle_v1`,materialHandle:cs(n.materialHandle),durableMaterialRef:ss(n.materialHandle),bindingDigest:ps(n.bindingDigest)}}}}catch(e){return rm(e)||$p(`crypto_failure`,L(e))}}}}function hm(e){return{kind:`http_transport`,async request(t){if(!e)return{ok:!1,code:`network_error`,message:`fetch is unavailable`};let n=new AbortController,r=t.timeoutMs&&t.timeoutMs>0?setTimeout(()=>n.abort(),t.timeoutMs):null;try{let r=await e(t.url,{method:t.method,headers:t.headers,body:t.body==null?void 0:JSON.stringify(t.body),signal:n.signal}),i=(r.headers.get(`content-type`)||``).includes(`application/json`)?await r.json().catch(()=>null):await r.text().catch(()=>``);return{ok:!0,value:{status:r.status,body:i}}}catch(e){return{ok:!1,code:n.signal.aborted?`timeout`:`network_error`,message:e instanceof Error?e.message:String(e)}}finally{r&&clearTimeout(r)}}}}function gm(e){return{kind:`clock`,nowMs:e||(()=>Date.now())}}function _m(e){return{kind:`random_source`,randomBytes(t){if(!e?.getRandomValues)throw Error(`Browser crypto.getRandomValues is unavailable`);let n=new Uint8Array(t);return e.getRandomValues(n),n}}}function vm(e={}){return{kind:`browser`,storage:am(e.indexedDB||K),secrets:om(),authenticator:pm(e.credentials||globalThis.navigator?.credentials),signerCrypto:mm(e.workerCtx),http:hm(e.fetch||globalThis.fetch?.bind(globalThis)),clock:gm(e.nowMs),random:_m(e.crypto||globalThis.crypto)}}function ym(e){throw Error(`[threshold-ed25519] unsupported wallet auth factor kind: ${String(e)}`)}function bm(e){return Ma(e.authority)?e.authority:Na(e.authority)?null:(e.authority,ym(e.authority))}async function xm(e){let t=bm(e.authority),n=t?String(t.verifier.rpId||``).trim():``;if(t&&!n)return{ok:!1,code:`invalid_args`,message:`Missing rpId for WebAuthn`};let{policy:r,sessionPolicyDigest32:i}=await Ie({nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,authority:e.authority,relayerKeyId:e.relayerKeyId,...e.runtimePolicyScope?{runtimePolicyScope:e.runtimePolicyScope}:{},routerAbNormalSigning:e.routerAbNormalSigning,participantIds:e.participantIds,thresholdSessionId:e.thresholdSessionId,ttlMs:e.ttlMs,remainingUses:e.remainingUses}),a=e.auth;if(!a){if(!t)return{ok:!1,code:`invalid_args`,message:`Email OTP Ed25519 session mint requires explicit route authorization`};a={kind:`threshold_session_policy_webauthn`,policySecretSource:Vd({credential:await fl({credentialStore:e.credentialStore,touchIdPrompt:e.touchIdPrompt,nearAccountId:e.nearAccountId,challengeB64u:i}),rpId:n})}}let o=zd(a);if(!o)return{ok:!1,code:`unsupported`,message:`Missing PRF.first output from credential (requires a PRF-enabled passkey)`};let s=await Ld({relayerUrl:e.relayerUrl,sessionKind:`opaque`,relayerKeyId:e.relayerKeyId,sessionPolicy:r,auth:a,projectEnvironmentId:e.runtimeScopeBootstrap?.projectEnvironmentId,publishableKey:e.runtimeScopeBootstrap?.publishableKey,...e.existingOperationCredential?{existingOperationCredential:e.existingOperationCredential}:{}});if(!s.ok)return s.code===`already_committed`?s:{ok:!1,code:s.code,message:s.message};let c=r.thresholdSessionId,l=s.thresholdSessionId||c,u=s.expiresAtMs,d=s.remainingUses,f=s.runtimePolicyScope;if(!l||!s.authorizationId||!s.walletSessionId||!s.quotaId||!f)return{ok:!1,code:`invalid_response`,message:`Threshold Ed25519 session mint returned incomplete lifecycle metadata`};let p={ok:!0,thresholdSessionId:nc.thresholdEd25519Session(l),authorizationId:s.authorizationId,walletSessionId:s.walletSessionId,quotaId:s.quotaId,expiresAtMs:u,remainingUses:d,runtimePolicyScope:f,routerAbNormalSigning:e.routerAbNormalSigning,passkeyPrfFirstB64u:o};switch(s.sessionKind){case`issued_exact_wallet_session`:return s.operationCredential.walletSessionId===s.walletSessionId?{...p,sessionKind:s.sessionKind,operationCredential:s.operationCredential}:{ok:!1,code:`invalid_response`,message:`Threshold Ed25519 session mint credential does not identify its session`};case`already_committed_exact_wallet_session`:return{...p,sessionKind:s.sessionKind};default:return Sm(s)}}function Sm(e){throw Error(`[threshold-ed25519] unsupported Wallet Session mint kind: ${String(e)}`)}function Cm(e){return{curve:`ed25519`,authMethod:`passkey`,walletId:e.walletId,relayerUrl:e.relayerUrl,walletSessionToken:e.walletSessionToken,ed25519Restore:e.ed25519Restore}}function wm(e){let t=String(e.authority.factor.credentialIdB64u||``).trim();if(!t)throw Error(`[threshold-ed25519] passkey authority credential id is required`);return t}function Tm(e){switch(e.kind){case`fresh_ed25519_provisioning`:return{kind:`fresh`,walletId:e.walletId,nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,signerSlot:e.signerSlot,thresholdSessionId:nc.thresholdEd25519Session(tl(`threshold-ed25519`))};case`exact_ed25519_provisioning`:{let t=Ac(e.laneIdentity,`exact Ed25519 capability provisioning`);return{kind:`exact`,walletId:String(t.walletId),nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:String(t.nearEd25519SigningKeyId),signerSlot:t.signerSlot,thresholdSessionId:e.laneIdentity.thresholdSessionId,walletSessionId:e.laneIdentity.walletSessionId,quotaId:e.laneIdentity.quotaId}}}throw Error(`[threshold-ed25519] unsupported Ed25519 provisioning kind`)}function Em(e){switch(e.requested.kind){case`fresh`:return!1;case`exact`:return e.returnedThresholdSessionId!==e.requested.thresholdSessionId||e.returnedWalletSessionId!==e.requested.walletSessionId||e.returnedQuotaId!==e.requested.quotaId}throw e.requested,Error(`[threshold-ed25519] unsupported resolved provisioning identity`)}function Dm(e){switch(e.connected.sessionKind){case`issued_exact_wallet_session`:return e.connected.operationCredential.walletSessionId===e.connected.walletSessionId?{ok:!0,operationCredential:e.connected.operationCredential}:{ok:!1,code:`invalid_result`,message:`Threshold Ed25519 session mint credential does not identify its session`};case`already_committed_exact_wallet_session`:{if(e.protocol.kind!==`exact`||!e.existingOperationCredential)return{ok:!1,code:`unlock_exact_method`,message:`Threshold Ed25519 session reuse returned no credential; exact-method unlock is required`};let t=e.existingOperationCredential;return t.walletSessionId===e.connected.walletSessionId?{ok:!0,operationCredential:t}:{ok:!1,code:`unlock_exact_method`,message:`Threshold Ed25519 reused session credential identifies another session`}}default:return Om(e.connected)}}function Om(e){throw Error(`[threshold-ed25519] unsupported connected session kind: ${String(e)}`)}async function km(e,t){let n=Tm(t);if(t.kind===`exact_ed25519_provisioning`&&t.operationCredential.walletSessionId!==t.laneIdentity.walletSessionId)return{ok:!1,code:`invalid_args`,message:`Threshold Ed25519 exact credential identifies another Wallet Session`};let r=kr(n.nearAccountId),i=String(t.relayerUrl||e.defaultRelayerUrl||``).trim(),a=Oe(t.participantIds);if(!i)throw Error(`Missing relayer url (configs.network.relayer.url)`);if(!a)throw Error(`Missing participantIds for threshold Ed25519 session provision`);let o=e.getSignerWorkerContext(),s=await xm({credentialStore:e.credentialStore,touchIdPrompt:e.touchIdPrompt,relayerUrl:i,relayerKeyId:t.relayerKeyId,nearEd25519SigningKeyId:n.nearEd25519SigningKeyId,authority:t.authority,...t.auth?{auth:t.auth}:{},...t.runtimePolicyScope?{runtimePolicyScope:t.runtimePolicyScope}:{},routerAbNormalSigning:t.routerAbNormalSigning,...t.runtimeScopeBootstrap?{runtimeScopeBootstrap:t.runtimeScopeBootstrap}:{},nearAccountId:r,participantIds:a,thresholdSessionId:n.thresholdSessionId,ttlMs:t.ttlMs,remainingUses:t.remainingUses,workerCtx:o,...t.kind===`exact_ed25519_provisioning`?{existingOperationCredential:t.operationCredential}:{}});if(!s.ok)return{ok:!1,code:String(s.code||`worker_error`).trim()||`worker_error`,message:String(s.message||``).trim()||`Threshold Ed25519 session mint failed`};let c=s.thresholdSessionId||n.thresholdSessionId,l=Number(s.expiresAtMs),u=Number(s.remainingUses),d=String(s.passkeyPrfFirstB64u||``).trim(),f=s.runtimePolicyScope;if(!c||!s.walletSessionId||!s.authorizationId||!s.quotaId||!Number.isFinite(l)||!Number.isFinite(u))return{ok:!1,code:`invalid_result`,message:`Threshold Ed25519 session mint returned incomplete public session metadata`};if(Em({requested:n,returnedThresholdSessionId:c,returnedWalletSessionId:s.walletSessionId,returnedQuotaId:s.quotaId}))return{ok:!1,code:`invalid_result`,message:`Threshold Ed25519 exact provisioning returned a different lifecycle identity`};let p=Dm({connected:s,protocol:n,existingOperationCredential:t.kind===`exact_ed25519_provisioning`?t.operationCredential:void 0});if(!p.ok)return p;let{operationCredential:m}=p,h=m.token,g={kind:`minted_ed25519_wallet_session_authority`,thresholdSessionId:c,walletSessionId:s.walletSessionId,authorizationId:s.authorizationId,quotaId:s.quotaId,expiresAtMs:l,remainingUses:u,runtimePolicyScope:f,operationCredential:m},_=e.touchIdPrompt.getRpId();if(d&&t.source===`email_otp`)return{ok:!1,code:`invalid_result`,message:`Passkey PRF material cannot seal an Email OTP Ed25519 session`};if(await t.onWalletSessionAuthorityReady?.(g),d&&t.source!==`email_otp`){let o=wm(t.authority),s=xn({rpId:_,nearAccountId:String(r),nearEd25519SigningKeyId:n.nearEd25519SigningKeyId,relayerKeyId:t.relayerKeyId,participantIds:a,runtimePolicyScope:f,signerSlot:n.signerSlot,routerAbNormalSigning:t.routerAbNormalSigning,credentialIdB64u:o,materialActivation:t.materialActivation}),p=Cm({walletId:n.walletId,relayerUrl:i,walletSessionToken:h,ed25519Restore:s});try{await nl(e.touchConfirm,{thresholdSessionId:String(c),prfFirstB64u:d,expiresAtMs:l,remainingUses:u,transport:p})}catch(e){return{ok:!1,code:`warm_session_cache_failed`,message:String(e&&typeof e==`object`&&`message`in e?e.message:e||``).trim()||`Threshold Ed25519 session material could not be cached`}}}return{ok:!0,sessionKind:s.sessionKind,thresholdSessionId:c,walletSessionId:s.walletSessionId,authorizationId:s.authorizationId,quotaId:s.quotaId,expiresAtMs:l,remainingUses:u,runtimePolicyScope:f,operationCredential:m}}function Am(e){if(!e)return null;switch(e.materialKind){case`role_local_worker_handle`:return e.roleLocalMaterialRef;case`role_local_durable_sealed_ref`:return e.roleLocalMaterialRef;case`role_local_durable_public_anchor`:case`role_local_ready_state_blob`:case`metadata_only`:return null}}function jm(e){let t=e.bootstrap.thresholdEcdsaKeyRef,n=t.keyHandle,r=t.ecdsaThresholdKeyId,i=t.backendBinding?.ecdsaRoleLocalReadyRecord,a=t.backendBinding?.materialKind===`role_local_worker_handle`?t.backendBinding.publicFacts:i?.publicFacts;if(!a)throw Error(`[SigningEngine] threshold-ecdsa bootstrap did not provide role-local public facts`);let o=go({record:{signingRootId:a.signingRootId,signingRootVersion:a.signingRootVersion}}),s=String(o.signingRootId),c=String(o.signingRootVersion),l=Ji(t.ethereumAddress);if(!l)throw Error(`[SigningEngine] threshold-ecdsa bootstrap did not provide a threshold owner address`);let u=t.thresholdEcdsaPublicKeyB64u,d=t.backendBinding.relayerKeyId,f=t.relayerVerifyingShareB64u,p=t.participantIds,m=qi(e.chainTarget),h=Am(t.backendBinding),g={accountModel:`threshold-ecdsa`,accountAddress:l,ownerAddress:l,thresholdOwnerAddress:l,keyScope:`evm-family`,keyHandle:n,walletId:e.walletId,ecdsaThresholdKeyId:r,signingRootId:s,signingRootVersion:c,relayerKeyId:d,relayerVerifyingShareB64u:f,thresholdEcdsaPublicKeyB64u:u,participantIds:p,publicCapability:a.publicCapability,ecdsaRoleLocalPublicFacts:a,chainTarget:e.chainTarget,targetMembership:{targetKey:m,chainTarget:e.chainTarget},sharedEvmFamilyKey:{walletId:e.walletId,keyScope:`evm-family`,keyHandle:n,ecdsaThresholdKeyId:r,signingRootId:s,signingRootVersion:c,participantIds:p,thresholdOwnerAddress:l,thresholdEcdsaPublicKeyB64u:u},chainId:e.chainTarget.chainId};return h&&(g.roleLocalMaterialRef=h),{account:{profileId:e.walletId,chainIdKey:m,accountAddress:l,accountModel:`threshold-ecdsa`},signer:{signerId:l,signerType:`threshold`,signerKind:Gr.thresholdEcdsa,signerAuthMethod:e.signerAuth.authMethod,signerSource:e.signerAuth.signerSource,metadata:g},activationPolicy:{mode:`allocate_next_free`},preferredSlot:1,selectAsActive:!1,mutation:{routeThroughOutbox:!1}}}async function Mm(e){let t=z(e.walletId);await e.bootstrapStore.upsertProfile({profileId:t}),await e.bootstrapStore.activateAccountSigner(jm({walletId:t,chainTarget:e.chainTarget,bootstrap:e.bootstrap,signerAuth:e.signerAuth}))}function Nm(e){let t=String(e.operationId||``).trim(),n=String(e.operationFingerprint||``).trim();if(!t)throw Error(`[SigningEngine] signingOperationId is required`);if(!n)throw Error(`[SigningEngine] operation fingerprint is required`);let r=e.state.callerProvidedOperationFingerprintsById,i=r.get(t);if(i&&i!==n)throw Error(`[SigningEngine] caller-provided signingOperationId reused for a different operation: ${t}`);r.set(t,n),Fm(r)}var Pm=class{constructor(){this.state={callerProvidedOperationFingerprintsById:new Map}}bindCallerProvidedOperationIdToFingerprint(e){Nm({state:this.state,operationId:e.operationId,operationFingerprint:e.operationFingerprint})}};function Fm(e){for(;e.size>1024;){let t=e.keys().next().value;if(!t)return;e.delete(t)}}function Im(e){let t=re(e);if(!t)return null;if(t.kind===`all`)return{kind:`all`};if(t.kind!==`session`)return null;let r=n(t.thresholdSessionId);return r.ok?{kind:`session`,thresholdSessionId:r.value}:null}function Lm(e){let t=re(e);if(!t||t.kind!==`clear_volatile_warm_material`||t.durableRecord!=null||t.resolvedIdentity!=null||t.deleteReason!=null)return null;let n=Im(t.scope);return n?{kind:`clear_volatile_warm_material`,scope:n}:null}function Rm(e){return{kind:`clear_volatile_warm_material`,scope:{kind:`session`,thresholdSessionId:e}}}function zm(){return{kind:`clear_volatile_warm_material`,scope:{kind:`all`}}}async function Bm(e){let{authMethod:t,authority:n}=e.selected;if(n.state!==`active`)return{kind:`rejected`,reason:{kind:`authority_not_active`}};if(t.status!==`active`)return{kind:`rejected`,reason:{kind:`auth_method_not_active`}};if(n.walletId!==t.walletId)return{kind:`rejected`,reason:{kind:`wallet_id_mismatch`}};if(n.authorityId!==t.walletAuthorityId)return{kind:`rejected`,reason:{kind:`authority_id_mismatch`}};if(await wa(n.signerActivations)!==n.signerActivationSetDigestB64u)return{kind:`rejected`,reason:{kind:`authority_activation_set_digest_mismatch`}};if(await ka(n)!==n.authorityDigestB64u)return{kind:`rejected`,reason:{kind:`authority_digest_mismatch`}};let r=Vm(e.operation);if(!n.permissions.includes(r))return{kind:`rejected`,reason:{kind:`permission_missing`}};switch(e.operation.kind){case`near_sign`:case`near_export`:return Hm(n,t);case`evm_sign`:case`evm_export`:return Um(n,t);default:return Km(e.operation)}}function Vm(e){switch(e.kind){case`near_sign`:case`evm_sign`:return`sign`;case`near_export`:case`evm_export`:return`export_keys`;default:return Km(e)}}function Hm(e,t){let n=Wm(e.signerActivations);return n===null?{kind:`rejected`,reason:{kind:`signer_family_unavailable`}}:n.signer.walletId===e.walletId?{kind:`resolved`,value:{kind:`resolved`,keyFamily:`ed25519`,walletId:e.walletId,authorityId:e.authorityId,authMethodId:t.walletAuthMethodId,materialActivation:n.materialActivation,registeredPublicKeyB64u:n.signer.registeredPublicKeyB64u}}:{kind:`rejected`,reason:{kind:`signer_wallet_id_mismatch`}}}function Um(e,t){let n=Gm(e.signerActivations);return n===null?{kind:`rejected`,reason:{kind:`signer_family_unavailable`}}:n.signer.walletId===e.walletId?{kind:`resolved`,value:{kind:`resolved`,keyFamily:`ecdsa_secp256k1`,walletId:e.walletId,authorityId:e.authorityId,authMethodId:t.walletAuthMethodId,materialActivation:n.materialActivation,thresholdPublicKey33B64u:n.signer.thresholdPublicKey33B64u,evmAddress:n.signer.evmAddress}}:{kind:`rejected`,reason:{kind:`signer_wallet_id_mismatch`}}}function Wm(e){return e.keyFamilies[0]!==`ed25519`||e.ed25519===void 0?null:e.ed25519}function Gm(e){return e.keyFamilies[0]!==`ecdsa_secp256k1`&&e.keyFamilies.length!==2||e.ecdsa===void 0?null:e.ecdsa}function Km(e){throw Error(`unsupported wallet authority operation: ${String(e)}`)}const qm={listed:0,discovered:0,truncated:0};async function Jm(e,t){let n=z(t.walletId);switch(t.authMethod){case H.emailOtp:return await e.discovery.emailOtp({...t,walletId:n,authMethod:H.emailOtp});case H.passkey:return await e.discovery.passkey?.({...t,walletId:n,authMethod:H.passkey})??qm;default:throw t.authMethod,Error(`Unsupported signer auth method`)}}async function Ym(e,t,n){return await _p(e.availableLanes,t,e.getConfiguredEcdsaChainTargets(),n)}async function Xm(e,t,n){return await vp(e.availableLanes,{walletId:t.walletId,ownerScope:t.ownerScope,ecdsaChainTargets:e.getConfiguredEcdsaChainTargets(),requiredEcdsaCapability:`sign`},n)}function Zm(e){let t=typeof e?.getWarmSessionStatus==`function`?t=>e.getWarmSessionStatus(t):null,n=typeof e?.getWarmSessionStatuses==`function`?t=>e.getWarmSessionStatuses(t):null;return t&&n?{statusPort:`single_and_batch`,getWarmSessionStatus:t,getWarmSessionStatuses:n}:t?{statusPort:`single`,getWarmSessionStatus:t}:n?{statusPort:`batch`,getWarmSessionStatuses:n}:null}function Qm(e){console.warn(`[WarmSessionStore] warm-session availability failure`,{operation:e.operation,thresholdSessionId:e.thresholdSessionId,code:String(e.code||`worker_error`).trim()||`worker_error`})}async function $m(e,t){let n=String(t||``).trim();return!e||!n||e.statusPort===`batch`?null:eh({thresholdSessionId:n,status:await e.getWarmSessionStatus({thresholdSessionId:n}).catch(()=>({ok:!1,code:`worker_error`,message:`worker_error`}))})}function eh(e){let t=String(e.thresholdSessionId||``).trim();return e.status.ok?{state:`warm`,thresholdSessionId:t,expiresAtMs:e.status.expiresAtMs,remainingUses:e.status.remainingUses}:e.status.code===`expired`?{state:`expired`,thresholdSessionId:t}:e.status.code===`exhausted`?{state:`exhausted`,thresholdSessionId:t}:e.status.code===`not_found`?{state:`missing`,thresholdSessionId:t}:(Qm({operation:`status_read`,thresholdSessionId:t,code:e.status.code}),{state:`unavailable`,thresholdSessionId:t,code:String(e.status.code||`worker_error`).trim()||`worker_error`})}function th(e){if(!e.auth||String(e.auth.session.walletId)!==String(e.runtime.walletId)||e.auth.selectedAuthMethod.kind!==e.runtime.factor.kind||e.auth.status.remainingUses<=0||e.auth.status.quotaId!==e.auth.session.quotaId||!Fc({session:e.auth.session,materialActivation:e.runtime.sealedRecord.ed25519Restore.materialActivation})||e.runtime.factor.kind===`passkey`&&(e.auth.selectedAuthMethod.kind!==`passkey`||String(e.auth.selectedAuthMethod.rpId)!==String(e.runtime.factor.rpId)||e.auth.selectedAuthMethod.credentialIdB64u!==e.runtime.factor.credentialIdB64u||e.auth.selectedFactorAuthority.factor.kind!==`passkey`||e.auth.selectedFactorAuthority.factor.credentialIdB64u!==e.runtime.factor.credentialIdB64u)||e.runtime.factor.kind===`email_otp`&&(e.auth.selectedAuthMethod.kind!==`email_otp`||e.auth.selectedFactorAuthority.factor.kind!==`email_otp`||e.auth.selectedFactorAuthority.factor.providerUserId!==e.runtime.factor.providerSubjectId||e.auth.selectedFactorAuthority.verifier.kind!==`email_otp_wallet_auth_method`||e.auth.selectedFactorAuthority.verifier.emailHashHex!==e.runtime.factor.emailHashHex))return`authorization_required`;let t=Pc({remainingUses:e.runtime.remainingUses,expiresAtMs:e.runtime.expiresAtMs});if(t===`expired`||t===`exhausted`)return`authorization_required`;if(!e.prfClaim)return`prf_missing`;switch(e.prfClaim.state){case`unavailable`:return`prf_unavailable`;case`warm`:return`ready`;case`missing`:case`expired`:case`exhausted`:return`prf_missing`}}function nh(e){if(!e.auth)return`authorization_required`;let t=Pc({remainingUses:e.runtime.remainingUses,expiresAtMs:e.runtime.expiresAtMs});if(t===`expired`||t===`exhausted`)return`authorization_required`;let n=e.emailOtpAuthContext;return n&&Kc(n)===`single_use`&&Number(Uc(n))>0||!e.prfClaim?`prf_missing`:e.prfClaim.state===`unavailable`?`prf_unavailable`:e.prfClaim.state===`warm`?`ready`:`prf_missing`}function rh(e){let t=String(e.sessionId||``).trim(),n=e.claim,r={...e.authMethod?{authMethod:e.authMethod}:{},...e.retention?{retention:e.retention}:{}};return n?n.state===`unavailable`?{sessionId:t,status:`unavailable`,statusCode:n.code,...r}:n.state===`warm`?{sessionId:t,status:`active`,...r,remainingUses:n.remainingUses,expiresAtMs:n.expiresAtMs}:{sessionId:t,...r,status:n.state===`expired`?`expired`:n.state===`exhausted`?`exhausted`:`not_found`}:{sessionId:t,status:`not_found`,...r}}function ih(e){if(!e.auth?.operationCredential.token||!String(e.runtime.relayerUrl||``).trim())return null;let t=String(e.groupId||``).trim();return{curve:`ecdsa`,...e.signingSessionSealKeyVersion?{signingSessionSealKeyVersion:e.signingSessionSealKeyVersion}:{},...t?{groupId:t}:{}}}function ah(e){return String(e||``).trim()}function oh(e){let t=ah(e.thresholdSessionId),n=Math.max(0,Math.floor(Number(e.remainingUses)||0)),r=Math.floor(Number(e.expiresAtMs)||0);return r<=Date.now()?{state:`expired`,thresholdSessionId:t}:n<=0?{state:`exhausted`,thresholdSessionId:t}:{state:`warm`,thresholdSessionId:t,remainingUses:n,expiresAtMs:r}}function sh(e){switch(e.factor.kind){case`email_otp`:return H.emailOtp;case`passkey`:return H.passkey}}function ch(e){for(let t of e){let e=t.source;switch(e){case H.emailOtp:return H.emailOtp;case H.passkey:break;default:return lh(e)}}return null}function lh(e){throw Error(`Unsupported signing session lane auth method: ${String(e)}`)}function uh(e){return Dp(e.walletId)}function dh(e,t){t&&(!t.thresholdSessionId||!t.walletSessionId||e.push(t))}function fh(e,t,n){return{curve:`ed25519`,chain:`near`,source:sh(e),thresholdSessionId:e.thresholdSessionId,walletSessionId:t,quotaId:n,materialActivation:e.sealedRecord.ed25519Restore.materialActivation,backing:`record_policy`,runtime:e}}async function ph(e,t){return await gh(e,t,e.exactWalletSessionReadPorts)}function mh(e,t){return e.capabilitySubjects.some(e=>e.kind===`sign`&&e.keyFamily===`ed25519`&&b(e.materialActivation,t))}function hh(e){switch(e.runtime.factor.kind){case`passkey`:return e.authMethod.kind===`passkey`&&String(e.authMethod.rpId)===String(e.runtime.factor.rpId)&&String(e.authMethod.credentialIdB64u)===String(e.runtime.factor.credentialIdB64u);case`email_otp`:return e.authMethod.kind===`email_otp`&&e.authMethod.emailHashHex===e.runtime.factor.emailHashHex}}async function gh(e,t,n){let r=e.listExactSealedSessionsForWallet??en,i=(await Promise.all([r({walletId:t,filter:{authMethod:H.passkey,curve:`ed25519`}}),r({walletId:t,filter:{authMethod:H.emailOtp,curve:`ed25519`}})])).flat(),a;try{a=await n.resolveSelectedWalletAuthority(String(t))}catch{return[]}if(a.kind!==`resolved`)return[];let{selection:o,authMethod:s,authority:c}=a;if(o.lockState!==`unlocked`||o.walletId!==t||o.walletAuthMethodId!==s.walletAuthMethodId||s.status!==`active`||s.walletId!==t||s.walletAuthorityId!==c.authorityId||c.state!==`active`||c.walletId!==t)return[];let l;try{l=await Bm({selected:{authMethod:s,authority:c},operation:{kind:`near_sign`,operation:`sign`,keyFamily:`ed25519`}})}catch{return[]}if(l.kind!==`resolved`||l.value.walletId!==t||l.value.authorityId!==c.authorityId||l.value.authMethodId!==s.walletAuthMethodId)return[];let u;try{u=await n.readExactWithOperationCredential({walletId:t,authorityId:c.authorityId,authMethodId:s.walletAuthMethodId})}catch{return[]}if(u.kind!==`found`)return[];let d=u.record,f=u.operationCredential;if(d.walletId!==t||d.authorityId!==c.authorityId||d.authMethodId!==s.walletAuthMethodId||d.authorityDigestB64u!==c.authorityDigestB64u||d.authorityRevocationEpoch!==c.revocationEpoch||d.expiresAtMs<=Date.now()||f.walletSessionId.length===0||f.token.trim().length===0||!mh(d,l.value.materialActivation))return[];let p=[],m=new Set;for(let e of i){if(e.curve!==`ed25519`)continue;let n=hn(e);!n||n.walletId!==t||!hh({runtime:n,authMethod:s})||!b(n.sealedRecord.ed25519Restore.materialActivation,l.value.materialActivation)||m.has(n.thresholdSessionId)||(m.add(n.thresholdSessionId),dh(p,fh(n,f.walletSessionId,d.quotaId)))}return p}async function _h(e){let t=wp(e.walletSessionId,`walletSessionId`);return(await ph(e.deps,e.walletId)).filter(n=>n.walletSessionId===t&&n.quotaId===e.quotaId)}function vh(e){let t=new Map;for(let n of e.lanes){let e=Ap({walletSessionId:n.walletSessionId,quotaId:n.quotaId}),r=t.get(e)||[];r.push(n),t.set(e,r)}let n=new Map;for(let r of t.values()){let t=r[0];if(!t)continue;let i=t.walletSessionId,a=t.quotaId,o=yh({walletSessionId:i,quotaId:a,lanes:r,claimsByThresholdSessionId:e.claimsByThresholdSessionId,statusOverrides:e.statusOverrides}),s=r.map(t=>({lane:t,claim:e.claimsByThresholdSessionId.get(t.thresholdSessionId)||null})),c=e=>{if(!e.length)return;let t=e.find(e=>e.claim?.state===`expired`)?.claim||e.find(e=>e.claim?.state===`exhausted`)?.claim||null,r=e.map(e=>e.claim).filter(e=>e?.state===`warm`),i=r.length?Math.min(...r.map(e=>Math.floor(Number(e.remainingUses)||0))):void 0,a=r.length?Math.min(...r.map(e=>Math.floor(Number(e.expiresAtMs)||0))):void 0;for(let r of e){if(t){n.set(r.lane.thresholdSessionId,Th(t,r.lane.thresholdSessionId));continue}if(r.claim?.state===`warm`){n.set(r.lane.thresholdSessionId,{state:`warm`,thresholdSessionId:r.lane.thresholdSessionId,remainingUses:i??r.claim.remainingUses,expiresAtMs:a??r.claim.expiresAtMs});continue}n.set(r.lane.thresholdSessionId,r.claim)}};if(o){let e=Ch(o),t=s.filter(e=>o.thresholdSessionIds.has(ah(e.lane.thresholdSessionId))),r=s.filter(e=>!o.thresholdSessionIds.has(ah(e.lane.thresholdSessionId)));if(t.length===s.length){for(let t of s)n.set(t.lane.thresholdSessionId,e?Th(e,t.lane.thresholdSessionId):null);continue}for(let r of t)n.set(r.lane.thresholdSessionId,e?Th(e,r.lane.thresholdSessionId):null);c(r);continue}c(s)}return n}function yh(e){let t=e.statusOverrides;if(!t)return null;for(let n of bh(e.lanes)){let r=t.get(xh(n,e.walletSessionId,e.quotaId));if(!r)continue;let i=Sh({override:r,lanes:e.lanes,claimsByThresholdSessionId:e.claimsByThresholdSessionId,statusOverrides:t});if(i)return i}return null}function bh(e){let t=new Map;for(let n of e){let e=uh(n.runtime);t.set(kp(e),e)}return[...t.values()]}function xh(e,t,n){return`${kp(e)}:${Ap({walletSessionId:t,quotaId:n})}`}function Sh(e){if(!e.lanes.length)return null;if(e.lanes.find(t=>{let n=ah(t.thresholdSessionId);return e.override.thresholdSessionIds.has(n)||t.runtime.sealedRecord.updatedAtMs<=e.override.updatedAtMs?!1:(e.claimsByThresholdSessionId.get(n)||null)?.state===`warm`})){for(let t of e.lanes)e.statusOverrides?.delete(xh(uh(t.runtime),e.override.walletSessionId,e.override.quotaId));return null}return e.override}function Ch(e){let t=e.status;if(t.status===`active`){if(typeof t.remainingUses!=`number`||typeof t.expiresAtMs!=`number`)return{state:`unavailable`,code:`invalid_wallet_budget_status`};let e=Math.max(0,Math.floor(Number(t.remainingUses)||0)),n=Math.floor(Number(t.expiresAtMs)||0);return n<=Date.now()?{state:`expired`}:e<=0?{state:`exhausted`}:{state:`warm`,remainingUses:e,expiresAtMs:n}}return t.status===`expired`?{state:`expired`}:t.status===`exhausted`?{state:`exhausted`}:t.status===`unavailable`?{state:`unavailable`,code:String(t.statusCode||`wallet_budget_status_override`)}:null}async function wh(e){let t=new Map;for(let n of e.lanes)t.set(n.thresholdSessionId,oh({thresholdSessionId:n.thresholdSessionId,remainingUses:n.runtime.remainingUses,expiresAtMs:n.runtime.expiresAtMs}));return t}function Th(e,t){switch(e.state){case`warm`:return{state:`warm`,thresholdSessionId:t,remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs};case`unavailable`:return{state:`unavailable`,thresholdSessionId:t,code:e.code};case`missing`:return{state:`missing`,thresholdSessionId:t};case`expired`:return{state:`expired`,thresholdSessionId:t};case`exhausted`:return{state:`exhausted`,thresholdSessionId:t}}}async function Eh(e){let t=await ph(e.deps,e.walletId);return Dh({deps:e.deps,lanes:t,statusOverrides:e.statusOverrides})}async function Dh(e){let t=await wh({deps:e.deps,lanes:e.lanes});return vh({lanes:e.lanes,claimsByThresholdSessionId:t,statusOverrides:e.statusOverrides})}async function Oh(e){let t=e.walletSessionId,n=Array.from(new Set([...e.targetThresholdSessionIds||[]].map(ah).filter(Boolean)));if(!n.length)return null;let r=Zm(e.deps.touchConfirm),i=await Promise.all(n.map(e=>$m(r,e)));return rh({sessionId:t,claim:i.find(e=>e?.state===`expired`)||i.find(e=>e?.state===`exhausted`)||i.find(e=>e?.state===`unavailable`)||i.find(e=>e?.state===`warm`)||null})}function kh(e){let t=e.lanes.some(e=>e.source===H.emailOtp);return rh({sessionId:e.walletSessionId,claim:e.claim,authMethod:ch(e.lanes),retention:t?`session`:null})}async function Ah(e){let t=await _h({deps:e.deps,walletId:e.walletId,walletSessionId:e.walletSessionId,quotaId:e.quotaId});e.statusOverrides.delete(xh(Dp(e.walletId),e.walletSessionId,e.quotaId));let n=new Set,r=new Set;for(let i of t){if(i.backing===`record_policy`)continue;let t=String(i.materialActivation.activationId);if(n.has(t))continue;if(n.add(t),i.backing===`email_otp_worker`){try{await e.deps.clearEmailOtpWarmSessionMaterial?.(i.thresholdSessionId)}catch{r.add(`email_otp_material`)}continue}let a=s(i.thresholdSessionId);if(a.ok)try{await e.deps.touchConfirm?.clearVolatileWarmSessionMaterial?.(Rm(a.value))}catch{r.add(`touch_confirm_material`)}}return r.size>0?{kind:`unavailable`,failures:[...r]}:{kind:`cleared`}}function jh(e){return`${String(e.walletId)}:wallet-session:${String(e.walletSessionId)}`}function Mh(e){let t=e.state;return{kind:`wallet_session_expired`,walletId:t.walletId,walletSessionId:e.walletSessionId,authMethod:t.authMethod,expiresAtMs:t.expiresAtMs,detectedAtMs:t.detectedAtMs}}async function Nh(e){let t=e.state.laneIdentity;if(!(`thresholdSessionId`in t))return{kind:`cleared`};try{return t.auth.kind===`email_otp`?await e.deps.readiness.clearEmailOtpWarmSessionMaterial(t.thresholdSessionId):await e.deps.readiness.touchConfirm.clearVolatileWarmSessionMaterial(Rm(t.thresholdSessionId)),{kind:`cleared`}}catch{return{kind:`unavailable`,failures:[t.auth.kind===`email_otp`?`email_otp_material`:`touch_confirm_material`]}}}var Ph=class{#e;#t=new Map;#n=new Set;constructor(e){this.#e=e}async invalidate(e){let t=e.state,n=jh(t),r=this.#t.get(n);r||(r=Nh({deps:this.#e,state:t}),this.#t.set(n,r));let i=await r;return i.kind===`unavailable`?(this.#t.delete(n),{kind:`unavailable`,failures:i.failures,event:null}):this.#n.has(n)?{kind:`already_invalidated`,event:null}:(this.#n.add(n),{kind:`invalidated`,event:Mh(e)})}};function Fh(e){return e.lane.curve===`ed25519`&&e.readiness.curve===`ed25519`}function Ih(e){return e.lane.curve===`ecdsa`&&e.readiness.curve===`ecdsa`}var Lh=class{#e;#t;#n=!0;constructor(e){this.#e=e.listeners,this.#t=e.listener}unsubscribe(){this.#n&&(this.#n=!1,this.#e.delete(this.#t))}};function Rh(e){return bs({walletId:e.event.walletId,walletSessionId:e.event.walletSessionId,authMethod:e.event.authMethod,expiresAtMs:e.event.expiresAtMs,detectedAtMs:e.event.detectedAtMs,source:e.source})}var zh=class{constructor(e){this.lifecycleListeners=new Set,this.walletSessionQuotaAdmissionRefreshQueues=new Map,this.exactWalletSessionReadPorts=e.exactWalletSessionReadPorts,this.onPlannerTrace=e.onPlannerTrace,this.walletSessionDeps=e,this.walletSessionState={statusOverrides:new Map},this.walletSessionExpiryInvalidator=new Ph({readiness:{touchConfirm:e.touchConfirm,clearEmailOtpWarmSessionMaterial:e.clearEmailOtpWarmSessionMaterial},statusOverrides:this.walletSessionState.statusOverrides}),this.operationIdBindings=new Pm,this.walletSessionStatusReader=e.getStatus}async resolveActiveAuthorizedRouterAbEd25519WalletSessionState(e){return await pn({state:e.state,nowMs:e.nowMs,ports:this.exactWalletSessionReadPorts})}subscribeLifecycle(e){return this.lifecycleListeners.add(e),new Lh({listeners:this.lifecycleListeners,listener:e})}async invalidateExpiredWalletSession(e){let t=await _n({ports:this.exactWalletSessionReadPorts,input:{walletId:e.state.walletId,authMethod:e.state.authMethod,walletSessionId:e.state.walletSessionId,quotaId:e.state.quotaId,requiredSigningSubject:Wt(e.state.laneIdentity),expiry:{kind:`expired`,nowMs:e.state.detectedAtMs}}});if(t.kind!==`resolved`)return{kind:`unavailable`,failures:[`wallet_session_authorization`],event:null};let n=await this.walletSessionExpiryInvalidator.invalidate({state:e.state,walletSessionId:t.resolved.walletSessionId});if(n.kind!==`invalidated`)return n;let r=Rh({event:n.event,source:e.source});return this.emitLifecycleEvent(r),{kind:`invalidated`,event:r}}emitLifecycleEvent(e){for(let t of this.lifecycleListeners)try{t(e)}catch(e){console.error(`[SigningSessionCoordinator] lifecycle listener failed`,e)}}resolveAuthPlan(e,t){let n=Fd(e),r=Pd(e,n);return t?.(r),t||this.onPlannerTrace?.(r),n}async resolveAuthPlanFromReadiness(e,t){if(Fh(e)){let n=e.readiness.status===`ready`||e.readiness.status===`exhausted`||e.readiness.status===`expired`?e.readiness.expiresAtMs:0,r=e.readiness.status===`ready`||e.readiness.status===`exhausted`?e.readiness.remainingUses:0;return{readiness:e.readiness,expiresAtMs:n,remainingUses:r,signingSessionPlan:this.resolveAuthPlan({lane:e.lane,readiness:e.readiness,forceFreshAuth:e.forceFreshAuth,sensitiveOperationPolicy:e.sensitiveOperationPolicy},t)}}if(Ih(e)){let n=e.readiness.status===`ready`||e.readiness.status===`exhausted`||e.readiness.status===`expired`?e.readiness.expiresAtMs:Math.floor(Number(e.expiresAtMs)||0),r=e.readiness.status===`ready`||e.readiness.status===`exhausted`?e.readiness.remainingUses:0;return{readiness:e.readiness,expiresAtMs:n,remainingUses:r,signingSessionPlan:this.resolveAuthPlan({lane:e.lane,readiness:e.readiness,forceFreshAuth:e.forceFreshAuth,sensitiveOperationPolicy:e.sensitiveOperationPolicy},t)}}throw Error(`[SigningSessionCoordinator] lane and readiness curves do not match`)}async getStatus(e){let t=z(e.walletId),n=e.walletSessionId,r=new Set((e.targetThresholdSessionIds||[]).map(ah).filter(Boolean)),i=r.size>0,a=async()=>i?await Oh({deps:this.walletSessionDeps,walletSessionId:n,targetThresholdSessionIds:r}):null,o=(await ph(this.walletSessionDeps,t)).filter(t=>t.walletSessionId===n&&t.quotaId===e.quotaId);if(!o.length)return await a();let s=i?o.filter(e=>r.has(e.thresholdSessionId)):o;if(i&&!s.length)return await a()||{sessionId:n,status:`not_found`};let c=vh({lanes:s,claimsByThresholdSessionId:await wh({deps:this.walletSessionDeps,lanes:s}),statusOverrides:this.walletSessionState.statusOverrides}),l=s.map(e=>c.get(e.thresholdSessionId)||null).filter(Boolean);return kh({walletSessionId:n,lanes:s,claim:l.find(e=>e?.state===`expired`)||l.find(e=>e?.state===`exhausted`)||l.find(e=>e?.state===`unavailable`)||l.find(e=>e?.state===`warm`)||null})}async getLaneClaimsForWallet(e){return await Eh({deps:this.walletSessionDeps,walletId:z(e),statusOverrides:this.walletSessionState.statusOverrides})}async clear(e){await Ah({deps:this.walletSessionDeps,statusOverrides:this.walletSessionState.statusOverrides,walletId:z(e.walletId),walletSessionId:e.walletSessionId,quotaId:e.quotaId})}async getAvailableStatus(e){return this.walletSessionStatusReader?await this.walletSessionStatusReader(e):null}bindCallerProvidedOperationIdToFingerprint(e){this.operationIdBindings.bindCallerProvidedOperationIdToFingerprint(e)}async runWalletSessionQuotaAdmissionRetry(e){let t=String(e.queueKey),n=this.walletSessionQuotaAdmissionRefreshQueues.get(t);if(n)return await n.catch(()=>void 0),await e.retryAfterRefresh();let r=e.refresh(),i=r.catch(()=>void 0).then(()=>{this.walletSessionQuotaAdmissionRefreshQueues.get(t)===i&&this.walletSessionQuotaAdmissionRefreshQueues.delete(t)});return this.walletSessionQuotaAdmissionRefreshQueues.set(t,i),await r}};const Bh={resolveSelectedWalletAuthority:K.resolveSelectedWalletAuthority.bind(K),readExactWithOperationCredential:q.readExactWithOperationCredential.bind(q)};function Vh(e){return e.getEmailOtpWarmSessionStatus||(async t=>await e.passkeyMpcSession.getWarmSessionStatus({thresholdSessionId:t.thresholdSessionId}))}function Hh(e){let{createArgs:t,getEmailOtpWarmSessionStatus:n}=e;return new zh({exactWalletSessionReadPorts:Bh,getStatus:t.getWalletSessionStatus,touchConfirm:t.passkeyMpcSession,getEmailOtpWarmSessionStatus:e=>n({kind:`ecdsa`,thresholdSessionId:e}),clearEmailOtpWarmSessionMaterial:t.clearEmailOtpWarmSessionMaterial})}async function Uh(e){if(e.lane.auth.kind!==`email_otp`)return null;try{let t=await e.createArgs.resolveCanonicalEcdsaSigningCapability({walletId:e.lane.signer.walletId,chainTarget:e.lane.signer.chainTarget,materialActivation:e.lane.signer.materialActivation});if(!Na(t.authority)||t.authority.factor.providerUserId!==e.lane.auth.providerSubjectId)return null;let n=await e.createArgs.resolveActiveEcdsaWalletSessionAuthorization({walletId:e.lane.signer.walletId,chainTarget:e.lane.signer.chainTarget,materialActivation:e.lane.signer.materialActivation},new el);if(!n)return null;let r=ed({capability:t,authorization:n,nowMs:Date.now()}),i=r.authorization.runtime;return r.authorization.selectedAuthMethod.kind!==`email_otp`||i.authBinding.kind!==`email_otp`||!La(t.authority,i.authBinding.emailOtpAuthority)||t.authority.factor.providerUserId!==e.lane.auth.providerSubjectId||i.walletId!==e.lane.signer.walletId||!Fr(i.chainTarget,e.lane.signer.chainTarget)||!b(i.materialActivation,e.lane.signer.materialActivation)?null:r.authorization}catch{return null}}function Wh(e){let{createArgs:t,signingSessionCoordinator:n,getEmailOtpWarmSessionStatus:r}=e;return{activeWalletAuthorityEcdsaRuntimeReadPorts:Bh,resolveOwnerLaneScope:t.resolveOwnerLaneScope,resolveCanonicalEcdsaSigningCapability:t.resolveCanonicalEcdsaSigningCapability,resolveAuthorizedEcdsaSigningCapability:t.resolveAuthorizedEcdsaSigningCapability,resolveActiveEcdsaWalletSessionAuthorization:t.resolveActiveEcdsaWalletSessionAuthorization,walletSignerStore:e.walletSignerStore,passkeyAuthenticatorStore:e.passkeyAuthenticatorStore,seamsWebConfigs:t.seamsWebConfigs,nonceCoordinator:t.nonceCoordinator,ensureSealedRefreshStartupParity:t.ensureSealedRefreshStartupParity,getSignerWorkerContext:()=>t.signerWorkerManager.getContext(),requestEmailOtpTransactionSigningChallenge:({walletSession:e,chain:n,authority:r,operationFingerprintDigest:i})=>t.requestEmailOtpTransactionSigningChallenge?.({walletSession:e,chain:n,authority:r,operationFingerprintDigest:i})||Promise.reject(Error(`Email OTP signing challenge is not configured`)),resolveDurableEmailOtpEcdsaSigningSessionAuthority:async({lane:e})=>await Uh({lane:e,createArgs:t}),restorePersistedSessionForSigning:e=>t.restorePersistedSessionForSigning(e),readAvailableSigningLanesForSigning:e=>t.readAvailableSigningLanesForSigning(e),signingSessionCoordinator:n,getEmailOtpWarmSessionStatus:e=>r({kind:`ecdsa`,thresholdSessionId:e}),provisionThresholdEcdsaSession:e=>t.provisionThresholdEcdsaSession(e),withThresholdEcdsaSigningQueue:e=>t.withThresholdEcdsaSigningQueue(e),touchConfirm:t.touchConfirm}}function Gh(e){let{createArgs:t,nearRpcUrl:n,signingSessionCoordinator:r}=e;return{nearRpcUrl:n,touchConfirm:t.touchConfirm,resolveOwnerLaneScope:t.resolveOwnerLaneScope,prepareNearEd25519YaoMaterialBoundary:t.prepareNearEd25519YaoMaterialBoundary,createSigningSessionId:e=>tl(e),getSignerWorkerContext:()=>t.signerWorkerManager.getContext(),readAvailableSigningLanesForSigning:e=>t.readAvailableSigningLanesForSigning(e),...t.requestEmailOtpEd25519SigningChallenge?{requestEmailOtpEd25519SigningChallenge:e=>t.requestEmailOtpEd25519SigningChallenge(e)}:{},signingSessionCoordinator:r,withThresholdEd25519CommitQueue:e=>t.withThresholdEd25519CommitQueue(e)}}function Kh(e){return{credentialStore:e.credentialStore,touchIdPrompt:e.createArgs.touchIdPrompt,getSignerWorkerContext:()=>e.createArgs.signerWorkerManager.getContext(),routerAbNormalSigning:e.createArgs.seamsWebConfigs.signing.routerAb.normalSigning,defaultRelayerUrl:e.createArgs.seamsWebConfigs.network.relayer?.url||``,persistThresholdEcdsaBootstrapForWalletTarget:e.createArgs.persistThresholdEcdsaBootstrapForWalletTarget}}function qh(e){return{accountStore:e.accountStore,userPreferencesManager:e.createArgs.userPreferencesManager,nonceCoordinator:e.createArgs.nonceCoordinator}}var Jh=class{async upsert(e){}async remove(e){}async list(){return[]}async upsertLane(e){}async removeLane(e){}async listLanes(){return[]}};function Yh(e,t){let n=String(e??``).trim();if(!n)throw Error(`${t} is required`);return n}function Xh(e){let t=e.materialActivation;return JSON.stringify([Yh(e.walletId,`walletId`),Yh(e.nearAccountId,`nearAccountId`),Yh(t.activationId,`materialActivation.activationId`),Yh(t.capability,`materialActivation.capability`),Yh(t.materialOwner,`materialActivation.materialOwner`),Yh(t.keyBinding,`materialActivation.keyBinding`),Yh(t.lifecycleBinding,`materialActivation.lifecycleBinding`),Yh(t.signingWorker,`materialActivation.signingWorker`)])}function Zh(e){if(e.activeClient.status().kind!==`active`)throw Error(`Ed25519 Yao active Client registry rejects disposed state`);let t=e.activeClient.metadata(),n=e.facts,r=n.signer,i=r.account.wallet.walletId,a=r.account.nearAccountId,o=Yh(n.thresholdSessionId,`material.facts.thresholdSessionId`),s=wc(t);if(t.scope.threshold_session_id!==o||!oo(t.scope.material_activation,fo(s))||t.scope.account_id!==String(i)||t.applicationBinding.wallet_id!==String(i)||t.applicationBinding.near_ed25519_signing_key_id!==String(r.nearEd25519SigningKeyId)||t.applicationBinding.signing_root_id!==n.signingRootId||t.scope.root_share_epoch!==n.signingRootVersion||t.applicationBinding.key_creation_signer_slot!==r.signerSlot||t.scope.signing_worker_id!==n.routerAbNormalSigning.signingWorkerId)throw Error(`Ed25519 Yao active Client registry subject identity mismatch`);if(t.participantIds[0]!==de[0]||t.participantIds[1]!==de[1])throw Error(`Ed25519 Yao active Client registry participant identity mismatch`);return{walletId:i,nearAccountId:a,materialActivation:s}}function Qh(e,t){return String(e.walletId)===String(t.walletId)&&String(e.nearAccountId)===String(t.nearAccountId)&&b(e.materialActivation,t.materialActivation)}var $h=class{constructor(e=new Jh){this.publicReferences=e,this.entries=new Map,this.lifecycleGeneration=0}async activate(e){let t=Zh(e),n=Xh(t),r=this.lifecycleGeneration;for(let n of this.entries.values())if(n.material.activeClient===e.activeClient&&!Qh(n.identity,t))throw Error(`Ed25519 Yao active Client state is already bound to another identity`);let i=this.entries.get(n);if(!i&&this.entries.size>=64)throw Error(`Ed25519 Yao active Client registry capacity is exhausted`);if(await this.publicReferences.upsert({walletId:t.walletId,nearAccountId:t.nearAccountId,thresholdSessionId:e.facts.thresholdSessionId,runtimePolicyScope:e.facts.runtimePolicyScope,materialActivation:t.materialActivation}),r!==this.lifecycleGeneration||e.activeClient.status().kind!==`active`)throw e.activeClient.dispose(),await this.publicReferences.remove(t),await this.publicReferences.removeLane(t),Error(`Ed25519 Yao active Client activation was interrupted`);return i&&i.material.activeClient!==e.activeClient&&i.material.activeClient.dispose(),this.entries.set(n,{identity:t,material:e}),t}resolve(e){let t=Xh(e),n=this.entries.get(t);return n?n.material.activeClient.status().kind===`disposed`?(this.entries.delete(t),null):n.material:null}resolveExact(e){return this.resolve(e)}resolveForWalletAccount(e){let t=null;for(let n of this.entries.values())if(!(String(n.identity.walletId)!==String(e.walletId)||String(n.identity.nearAccountId)!==String(e.nearAccountId))&&n.material.activeClient.status().kind!==`disposed`){if(t)throw Error(`Ed25519 Yao active Client lookup scope is ambiguous`);t=n.material}return t}async rollbackActivation(e){this.lifecycleGeneration+=1;let t=Xh(e),n=this.entries.get(t);return n&&(this.entries.delete(t),n.material.activeClient.dispose()),await this.publicReferences.remove(e),await this.publicReferences.removeLane(e),n!==void 0}disposeWallet(e){this.lifecycleGeneration+=1;let t=Yh(e,`walletId`),n=0;for(let[e,r]of this.entries)String(r.identity.walletId)===t&&(this.entries.delete(e),r.material.activeClient.dispose(),n+=1);return n}dispose(){this.lifecycleGeneration+=1;for(let e of this.entries.values())e.material.activeClient.dispose();this.entries.clear()}};function eg(e,t){t.wrapKeySalt&&(e.wrapKeySalt=t.wrapKeySalt),t.payload&&(e.payload=t.payload),typeof t.timestamp==`number`&&(e.timestamp=t.timestamp),typeof t.schemaVersion==`number`&&(e.schemaVersion=t.schemaVersion)}function tg(e,t){typeof t.timestamp==`number`&&(e.timestamp=t.timestamp),typeof t.schemaVersion==`number`&&(e.schemaVersion=t.schemaVersion)}function ng(e){let n=Dr(t(e||``));return n.startsWith(`ed25519:`)?n:``}function rg(e){let n=ng(e.publicKey);if(n)return n;let r=Dr(t(e.relayerKeyId||``));return r.startsWith(`ed25519:`)?r:``}function ig(e,t){if(e.role!==`relayer`)return e;let n={id:e.id,role:`relayer`,relayerKeyId:t};return e.relayerUrl&&(n.relayerUrl=e.relayerUrl),e.shareDerivation&&(n.shareDerivation=e.shareDerivation),n}function ag(e){let t=fe(e.participants),n=t?.some(e=>e.role===`relayer`)===!0;return!t||!n?ce({relayerKeyId:e.relayerKeyId,clientShareDerivation:`prf_first_v1`}):t.map(t=>ig(t,e.relayerKeyId))}function og(e,n,r){if(!r)return null;let i=r.payload||{},a=ng(r.publicKey),o=rg({publicKey:a,relayerKeyId:i.relayerKeyId}),s=t(i.keyVersion||``);return!a||!o||!s?null:{nearAccountId:e,signerSlot:n,kind:`threshold_ed25519_v1`,publicKey:a,relayerKeyId:o,keyVersion:s,participants:ag({participants:i.participants,relayerKeyId:o}),timestamp:r.timestamp}}async function sg(e,t,n){return og(t,n,await zs({deps:e,accountRefs:fc(t),signerSlot:n,keyKind:`threshold_share_v1`}))}async function cg(e,n){let r=t(n.nearAccountId||``).toLowerCase();if(!r)throw Error(`IndexedDBManager: Missing nearAccountId for key write`);if(!Number.isSafeInteger(n.signerSlot)||n.signerSlot<1)throw Error(`IndexedDBManager: Invalid signerSlot for key write`);let i=t(n.keyKind||``);if(!i)throw Error(`IndexedDBManager: Missing keyKind for key write`);let a=String(n.algorithm||`ed25519`).trim().toLowerCase(),o=t(n.publicKey||``);if(!o)throw Error(`IndexedDBManager: Missing publicKey for key write`);let s=t(n.signerId||``);if(!s)throw Error(`IndexedDBManager: Missing signerId for key write`);let c=t(n.chainIdKey||``).toLowerCase(),l=t(n.profileId||``),u=fc(r);if(l||c){if(!l||!c)throw Error(`IndexedDBManager: profileId and chainIdKey are required together for explicit NEAR key material writes`);let t={accountRefs:u,signerSlot:n.signerSlot,keyKind:i,algorithm:a,publicKey:o,signerId:s,explicitProfileId:l,explicitChainIdKey:c,explicitAccountAddress:r};eg(t,n),await Ps(e,t);return}let d={accountRefs:u,signerSlot:n.signerSlot,keyKind:i,algorithm:a,publicKey:o,signerId:s};eg(d,n),await Ps(e,d)}async function lg(e,n){let r=ng(n.publicKey);if(!r)throw Error(`IndexedDBManager: Missing Ed25519 publicKey for threshold key write`);let i=rg({publicKey:r,relayerKeyId:n.relayerKeyId}),a=t(n.keyVersion||``);if(!i||!a)throw Error(`IndexedDBManager: Missing threshold Ed25519 relayer metadata for key write`);let o={relayerKeyId:i,keyVersion:a,participants:ag({participants:n.participants,relayerKeyId:i})},s=t(n.profileId||``),c=t(n.chainIdKey||``).toLowerCase();if(s||c){if(!s||!c)throw Error(`IndexedDBManager: profileId and chainIdKey are required together for explicit NEAR threshold key writes`);let t={nearAccountId:n.nearAccountId,signerSlot:n.signerSlot,keyKind:`threshold_share_v1`,publicKey:r,signerId:n.signerId,payload:o,profileId:s,chainIdKey:c};tg(t,n),await cg(e,t);return}let l={nearAccountId:n.nearAccountId,signerSlot:n.signerSlot,keyKind:`threshold_share_v1`,publicKey:r,signerId:n.signerId,payload:o};tg(l,n),await cg(e,l)}function ug(e){return Math.max(0,Math.round(performance.now()-e))}async function dg(e){let t=performance.now();try{await e()}catch{}return ug(t)}async function fg(e,t){if(!e)return null;try{return await Gd(e,t)}catch{return null}}async function pg(e,t={kind:`none`}){let n=t.kind===`near_account_bound`?t.account:null,r=n?kr(n.nearAccountId):null,i=await fg(r,e.store);return{kind:`worker_resource_warmup_diagnostics_v1`,authenticatedWalletStateMs:n&&r&&i?await dg(()=>e.activateAuthenticatedWalletState({walletId:n.wallet.walletId,nearAccountId:r,signerSlot:i,nearClient:e.nearClient})):0,noncePrefetchMs:await dg(()=>e.nonceCoordinator.prefetchNearContext({kind:`initialized_state`,nearClient:e.nearClient})),keyMaterialReadMs:r&&i?await dg(async()=>{await sg({clientDB:e.store,keyMaterialStore:e.store},r,i).catch(()=>null)}):0,uiConfirmPrewarmMs:e.shouldPrewarmUiConfirmUi(e.workerBaseOrigin)?await dg(e.prewarmUiConfirmUi):0}}function mg(e){return N(e.seamsWebConfigs.network.chains)}function hg(e,t){return()=>({workerBaseOrigin:e.getWorkerBaseOrigin(),store:t.warmupStore,nearClient:e.nearClient,nonceCoordinator:e.nonceCoordinator,shouldPrewarmUiConfirmUi:e.shouldPrewarmUiConfirmUi,prewarmUiConfirmUi:async()=>{await Promise.all([e.touchConfirm.initialize(),e.passkeyMpcSession.prewarmShamir3Pass()])},activateAuthenticatedWalletState:e.activateAuthenticatedWalletState})}function gg(e){let{createArgs:t,getWorkerResourceWarmupDeps:n}=e;return()=>({signTempo:t.signTempo,warmCriticalResources:e=>pg(n(),e)})}function _g(e){let t=new $h(e.ed25519YaoPublicCapabilityReferences),n=mg(e),r=Vh(e),i=Hh({createArgs:e,getEmailOtpWarmSessionStatus:r}),a=hg(e,{warmupStore:e.stores.warmup.store});return{ed25519YaoActiveClients:t,nearSigningDeps:Gh({createArgs:e,nearRpcUrl:n,signingSessionCoordinator:i}),tempoSigningDeps:Wh({createArgs:e,walletSignerStore:e.stores.walletProfileAndSignerRecords.walletSignerStore,passkeyAuthenticatorStore:e.stores.walletProfileAndSignerRecords.passkeyAuthenticatorStore,signingSessionCoordinator:i,getEmailOtpWarmSessionStatus:r}),registrationAccountLifecycleDeps:qh({createArgs:e,accountStore:e.stores.walletProfileAndSignerRecords.accountStore}),registrationSessionDeps:{touchConfirm:e.touchConfirm,touchIdPrompt:e.touchIdPrompt},walletSessionActivationDeps:Kh({createArgs:e,credentialStore:e.stores.recoveryAndDeviceLinking.credentialStore}),signingSessionCoordinator:i,getWorkerResourceWarmupDeps:a,getManagerConveniencePorts:gg({createArgs:e,getWorkerResourceWarmupDeps:a})}}const vg=[`kind`,`keyFamily`,`walletId`,`walletKeyId`,`walletKeyVersion`,`lifecycle`],yg=[...vg,`nearEd25519SigningKeyId`,`keyCreationSignerSlot`,`registeredPublicKeyB64u`],bg=[...vg,`evmFamilySigningKeySlotId`,`thresholdPublicKey33B64u`,`evmAddress`],xg=Array.from(new Set([...yg,...bg])),Sg=[`state`,`activatedAtMs`,`retiredAtMs`,`compromisedAtMs`],Cg=[...[`kind`,`walletId`,`walletKeyId`,`laneId`,`laneKind`,`laneShareEpoch`,`participantBindingDigestB64u`],`lifecycle`],wg=[...Cg,`walletAuthMethodId`,`ownerParticipantContinuity`],Tg=[...Cg,`ownerParticipantContinuity`],Eg=[...Cg,`holderParticipant`,`serverParticipant`],Dg=[...Eg,`authorizationId`,`agentIdentityKeyId`,`custodyBindingId`,`authorizationBindingDigestB64u`],Og=[...Eg,`linkedDeviceId`],kg=Array.from(new Set([...wg,...Tg,...Dg,...Og])),Ag=[`state`,`revocationEpoch`,`startedAtMs`,`deliveryDigestB64u`,`activatedAtMs`,`activationReceiptDigestB64u`,`revokedAtMs`,`revokeReason`];function jg(e){switch(e){case`owner_passkey`:case`owner_email_otp`:return wg;case`recovery`:case`break_glass`:return Tg;case`linked_device`:return Og;case`delegated_execution`:return Dg}}function Mg(e,t){if(e==null)throw Error(`${t} is required`);if(typeof e!=`string`)throw Error(`${t} must be a string`);let n=e.trim();if(!n)throw Error(`${t} is required`);if(v(n))throw Error(`${t} must not contain whitespace or control characters`);return n}function Ng(e,t){if(typeof e!=`string`)throw Error(`${t} must be a string`);let n=e.trim();if(!n)throw Error(`${t} is required`);if(v(n))throw Error(`${t} must not contain whitespace or control characters`);return n}function Pg(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0)throw Error(`${t} must be a non-negative safe integer`);return e}function Fg(e,t=`walletKeyVersion`){return Mg(e,t)}function Ig(e,t){return Mg(e,t)}function Lg(e,t){return Mg(e,t)}function Rg(e,t){return Mg(e,t)}function zg(e,t){switch(e){case`owner_passkey`:case`owner_email_otp`:case`linked_device`:case`delegated_execution`:case`recovery`:case`break_glass`:return e;default:throw Error(`${t} must be a known signing lane kind`)}}function Bg(e,t){let n=M(e,t);switch(pe(n,Sg,t,Sg),n.state){case`active`:if(n.retiredAtMs!==void 0||n.compromisedAtMs!==void 0)throw Error(`${t} cannot be active and carry a retired or compromised timestamp`);return qg({activatedAtMs:ge(n.activatedAtMs,`${t}.activatedAtMs`)});case`retired`:if(n.activatedAtMs!==void 0||n.compromisedAtMs!==void 0)throw Error(`${t} cannot be retired and carry an active or compromised timestamp`);return Jg({retiredAtMs:ge(n.retiredAtMs,`${t}.retiredAtMs`)});case`compromised`:if(n.activatedAtMs!==void 0||n.retiredAtMs!==void 0)throw Error(`${t} cannot be compromised and carry an active or retired timestamp`);return Yg({compromisedAtMs:ge(n.compromisedAtMs,`${t}.compromisedAtMs`)});default:throw Error(`${t}.state must be active, retired, or compromised`)}}function Vg(e,t){let n=M(e,t);pe(n,Ag,t);let r=Pg(n.revocationEpoch,`${t}.revocationEpoch`);switch(n.state){case`provisioning`:if(n.deliveryDigestB64u!==void 0||n.activatedAtMs!==void 0||n.activationReceiptDigestB64u!==void 0||n.revokedAtMs!==void 0||n.revokeReason!==void 0)throw Error(`${t} provisioning state carries fields from another lifecycle state`);return $g({revocationEpoch:r,startedAtMs:ge(n.startedAtMs,`${t}.startedAtMs`)});case`pending_receipt`:if(n.activatedAtMs!==void 0||n.activationReceiptDigestB64u!==void 0||n.revokedAtMs!==void 0||n.revokeReason!==void 0)throw Error(`${t} pending_receipt state carries fields from another lifecycle state`);return e_({revocationEpoch:r,startedAtMs:ge(n.startedAtMs,`${t}.startedAtMs`),deliveryDigestB64u:Ee(n.deliveryDigestB64u,`${t}.deliveryDigestB64u`)});case`active`:if(n.startedAtMs!==void 0||n.deliveryDigestB64u!==void 0||n.revokedAtMs!==void 0||n.revokeReason!==void 0)throw Error(`${t} active state carries fields from another lifecycle state`);return t_({revocationEpoch:r,activatedAtMs:ge(n.activatedAtMs,`${t}.activatedAtMs`),activationReceiptDigestB64u:Ee(n.activationReceiptDigestB64u,`${t}.activationReceiptDigestB64u`)});case`revoked`:{if(n.startedAtMs!==void 0||n.deliveryDigestB64u!==void 0||n.activatedAtMs!==void 0||n.activationReceiptDigestB64u!==void 0)throw Error(`${t} revoked state carries fields from another lifecycle state`);let e=n.revokeReason;if(e!==`user_revoked`&&e!==`device_compromise`&&e!==`agent_compromise`&&e!==`rotation`)throw Error(`${t}.revokeReason is invalid`);return n_({revocationEpoch:r,revokedAtMs:ge(n.revokedAtMs,`${t}.revokedAtMs`),revokeReason:e})}default:throw Error(`${t}.state must be provisioning, pending_receipt, active, or revoked`)}}function Hg(e,t){if(e.kind!==`signing_lane_reference_v1`)throw Error(`${t}.kind must be signing_lane_reference_v1`);return Qg({walletId:xe(o(e.walletId),`${t}.walletId`),walletKeyId:xe(h(e.walletKeyId),`${t}.walletKeyId`),laneId:xe(u(e.laneId),`${t}.laneId`),laneShareEpoch:xe(d(e.laneShareEpoch),`${t}.laneShareEpoch`),laneKind:zg(e.laneKind,`${t}.laneKind`),participantBindingDigestB64u:xe(Aa(e.participantBindingDigestB64u),`${t}.participantBindingDigestB64u`)})}function Ug(e,t){let n=Hg(e,t);return{walletId:n.walletId,walletKeyId:n.walletKeyId,laneId:n.laneId,laneShareEpoch:n.laneShareEpoch,participantBindingDigestB64u:n.participantBindingDigestB64u,lifecycle:Vg(e.lifecycle,`${t}.lifecycle`)}}function Wg(e,t){let n=Ug(e,t),r=c(e.walletAuthMethodId);return{...n,walletAuthMethodId:xe(r,`${t}.walletAuthMethodId`),ownerParticipantContinuity:Ra(e.ownerParticipantContinuity,`${t}.ownerParticipantContinuity`)}}function Gg(e,t){return{...Ug(e,t),ownerParticipantContinuity:Ra(e.ownerParticipantContinuity,`${t}.ownerParticipantContinuity`)}}function Kg(e,t){return{...Ug(e,t),holderParticipant:ro(e.holderParticipant,`${t}.holderParticipant`),serverParticipant:to(e.serverParticipant,`${t}.serverParticipant`)}}function qg(e){return{state:`active`,activatedAtMs:e.activatedAtMs}}function Jg(e){return{state:`retired`,retiredAtMs:e.retiredAtMs}}function Yg(e){return{state:`compromised`,compromisedAtMs:e.compromisedAtMs}}function Xg(e){return{kind:`wallet_key_record_v1`,keyFamily:`ed25519`,walletId:e.walletId,walletKeyId:e.walletKeyId,walletKeyVersion:e.walletKeyVersion,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,keyCreationSignerSlot:e.keyCreationSignerSlot,registeredPublicKeyB64u:e.registeredPublicKeyB64u,lifecycle:e.lifecycle}}function Zg(e){return{kind:`wallet_key_record_v1`,keyFamily:`ecdsa_secp256k1`,walletId:e.walletId,walletKeyId:e.walletKeyId,walletKeyVersion:e.walletKeyVersion,evmFamilySigningKeySlotId:e.evmFamilySigningKeySlotId,thresholdPublicKey33B64u:e.thresholdPublicKey33B64u,evmAddress:e.evmAddress,lifecycle:e.lifecycle}}function Qg(e){return{kind:`signing_lane_reference_v1`,walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneKind:e.laneKind,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u}}function $g(e){return{state:`provisioning`,revocationEpoch:e.revocationEpoch,startedAtMs:e.startedAtMs}}function e_(e){return{state:`pending_receipt`,revocationEpoch:e.revocationEpoch,startedAtMs:e.startedAtMs,deliveryDigestB64u:e.deliveryDigestB64u}}function t_(e){return{state:`active`,revocationEpoch:e.revocationEpoch,activatedAtMs:e.activatedAtMs,activationReceiptDigestB64u:e.activationReceiptDigestB64u}}function n_(e){return{state:`revoked`,revocationEpoch:e.revocationEpoch,revokedAtMs:e.revokedAtMs,revokeReason:e.revokeReason}}function r_(e){return{kind:`signing_lane_reference_v1`,walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneKind:`owner_passkey`,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u,walletAuthMethodId:e.walletAuthMethodId,ownerParticipantContinuity:e.ownerParticipantContinuity,lifecycle:e.lifecycle}}function i_(e){return{kind:`signing_lane_reference_v1`,walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneKind:`owner_email_otp`,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u,walletAuthMethodId:e.walletAuthMethodId,ownerParticipantContinuity:e.ownerParticipantContinuity,lifecycle:e.lifecycle}}function a_(e){return{kind:`signing_lane_reference_v1`,walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneKind:`linked_device`,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u,holderParticipant:e.holderParticipant,serverParticipant:e.serverParticipant,lifecycle:e.lifecycle,linkedDeviceId:e.linkedDeviceId}}function o_(e){return{kind:`signing_lane_reference_v1`,walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneKind:`delegated_execution`,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u,holderParticipant:e.holderParticipant,serverParticipant:e.serverParticipant,lifecycle:e.lifecycle,authorizationId:e.authorizationId,agentIdentityKeyId:e.agentIdentityKeyId,custodyBindingId:e.custodyBindingId,authorizationBindingDigestB64u:e.authorizationBindingDigestB64u}}function s_(e){return{kind:`signing_lane_reference_v1`,walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneKind:`recovery`,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u,ownerParticipantContinuity:e.ownerParticipantContinuity,lifecycle:e.lifecycle}}function c_(e){return{kind:`signing_lane_reference_v1`,walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneKind:`break_glass`,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u,ownerParticipantContinuity:e.ownerParticipantContinuity,lifecycle:e.lifecycle}}function l_(e,t=`walletKeyRecord`){let n=M(e,t);if(n.kind!==`wallet_key_record_v1`)throw Error(`${t}.kind must be wallet_key_record_v1`);if(n.keyFamily===`ed25519`)return pe(n,yg,t,xg),Xg({walletId:xe(o(n.walletId),`${t}.walletId`),walletKeyId:xe(h(n.walletKeyId),`${t}.walletKeyId`),walletKeyVersion:Fg(n.walletKeyVersion,`${t}.walletKeyVersion`),nearEd25519SigningKeyId:Ko(n.nearEd25519SigningKeyId),keyCreationSignerSlot:Ce(n.keyCreationSignerSlot,`${t}.keyCreationSignerSlot`),registeredPublicKeyB64u:Se(n.registeredPublicKeyB64u,`${t}.registeredPublicKeyB64u`),lifecycle:Bg(n.lifecycle,`${t}.lifecycle`)});if(n.keyFamily===`ecdsa_secp256k1`)return pe(n,bg,t,xg),Zg({walletId:xe(o(n.walletId),`${t}.walletId`),walletKeyId:xe(h(n.walletKeyId),`${t}.walletKeyId`),walletKeyVersion:Fg(n.walletKeyVersion,`${t}.walletKeyVersion`),evmFamilySigningKeySlotId:Vo(n.evmFamilySigningKeySlotId,`${t}.evmFamilySigningKeySlotId`),thresholdPublicKey33B64u:Te(n.thresholdPublicKey33B64u,`${t}.thresholdPublicKey33B64u`),evmAddress:Ng(n.evmAddress,`${t}.evmAddress`),lifecycle:Bg(n.lifecycle,`${t}.lifecycle`)});throw Error(`${t}.keyFamily must be ed25519 or ecdsa_secp256k1`)}function u_(e,t=`signingLaneRecord`){let n=M(e,t);if(n.kind!==`signing_lane_reference_v1`)throw Error(`${t}.kind must be signing_lane_reference_v1`);let r=zg(n.laneKind,`${t}.laneKind`);switch(pe(n,jg(r),t,kg),r){case`owner_passkey`:return r_(Wg(n,t));case`owner_email_otp`:return i_(Wg(n,t));case`linked_device`:{let e=Kg(n,t);return a_({walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u,holderParticipant:e.holderParticipant,serverParticipant:e.serverParticipant,lifecycle:e.lifecycle,linkedDeviceId:xe(f(n.linkedDeviceId),`${t}.linkedDeviceId`)})}case`delegated_execution`:{let e=Kg(n,t);return o_({walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u,holderParticipant:e.holderParticipant,serverParticipant:e.serverParticipant,lifecycle:e.lifecycle,authorizationId:Rg(n.authorizationId,`${t}.authorizationId`),agentIdentityKeyId:Ig(n.agentIdentityKeyId,`${t}.agentIdentityKeyId`),custodyBindingId:Lg(n.custodyBindingId,`${t}.custodyBindingId`),authorizationBindingDigestB64u:Ee(n.authorizationBindingDigestB64u,`${t}.authorizationBindingDigestB64u`)})}case`recovery`:return s_(Gg(n,t));case`break_glass`:return c_(Gg(n,t))}}async function d_(e){let t=await se(new Request(`${ye(e.relayerUrl)}/wallet/execution-lane/owner`,le({headers:be(e.operationCredential),body:{curve:e.curve,expectedMaterialActivation:e.expectedMaterialActivation}}))),n=await t.json().catch(()=>null);if(!t.ok){let e=m_(n);throw Error(e||`Owner execution-lane preflight returned HTTP ${t.status}`)}return f_(n,e.curve)}function f_(e,t){let n=p_(e,[`ok`,`projection`],`owner execution-lane response`);if(n.get(`ok`)!==!0)throw Error(`owner execution-lane response is unsuccessful`);let r=p_(n.get(`projection`),[`kind`,`walletKey`,`lane`,`materialActivation`,`verifiedActivationReceiptDigestB64u`],`owner execution-lane projection`);if(r.get(`kind`)!==`active_owner_wallet_execution_lane_projection_v1`)throw Error(`owner execution-lane projection kind is invalid`);let i=l_(r.get(`walletKey`)),a=u_(r.get(`lane`)),o=p(r.get(`materialActivation`));if(!o.ok)throw Error(o.error.message);if(i.keyFamily!==t||a.walletId!==i.walletId||a.walletKeyId!==i.walletKeyId||a.laneKind!==`owner_passkey`&&a.laneKind!==`owner_email_otp`)throw Error(`owner execution-lane projection identity is inconsistent`);return{kind:`active_owner_wallet_execution_lane_projection_v1`,walletKey:i,lane:a,materialActivation:o.value,verifiedActivationReceiptDigestB64u:St(r.get(`verifiedActivationReceiptDigestB64u`))}}function p_(e,t,n){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)throw Error(`${n} must be a JSON object`);let r=new Map(Object.entries(e)),i=new Set(t);if(r.size!==i.size||[...r.keys()].some(e=>!i.has(e)))throw Error(`${n} fields are invalid`);return r}function m_(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return null;let t=new Map(Object.entries(e));if(t.size===0||t.size>2||[...t.keys()].some(e=>e!==`code`&&e!==`message`))return null;let n=t.get(`message`);return typeof n==`string`&&n.trim()?n.trim():null}function h_(e){return fn(e)}function g_(e){return`selector`in e?e.selector.capability:e.capability}function __(e){switch(e.kind){case`retired`:return _c({capability:e.manifest.signer.capability,reason:`replaced`});case`missing`:return e.subject===`capability`?_c({capability:null,reason:`missing_capability`}):_c({capability:g_(e),reason:`missing_material`});case`exact_binding_mismatch`:return _c({capability:g_(e),reason:`binding_mismatch`});case`exact_record_conflict`:return _c({capability:g_(e),reason:`exact_record_conflict`});case`corrupt`:return _c({capability:g_(e),reason:`corrupt`});case`persistence_unavailable`:return _c({capability:g_(e),reason:`persistence_unavailable`})}}function v_(e){let t=e.lookup.manifest.activation.materialActivation;if(!b(t,e.lookup.material.binding.materialActivation)||e.lookup.manifest.signer.materialOwner!==t.materialOwner)return _c({capability:e.lookup.manifest.signer.capability,reason:`binding_mismatch`});switch(e.runtime.kind){case`live`:return b(t,e.runtime.materialActivation)?Sc({authority:e.lookup.manifest.signer.authority,runtime:e.runtime.runtime,materialActivation:t}):_c({capability:e.lookup.manifest.signer.capability,reason:`binding_mismatch`});case`absent`:return hc({authority:e.lookup.manifest.signer.authority,materialActivation:t,sealedMaterial:fn(e.lookup.material.binding.durableMaterialRef)})}}function y_(e){return e.lookup.kind===`active`?v_({lookup:e.lookup,runtime:e.runtime}):__(e.lookup)}function b_(e){let t=d(e);if(!t.ok)throw Error(t.error.message);return t.value}function x_(e){return{walletKey:l_(e.walletKey),lane:u_(e.lane)}}function S_(e,t){return{kind:`wallet_execution_lane_refused_v1`,reason:e,walletId:t.walletKey.walletId,walletKeyId:t.walletKey.walletKeyId,laneId:t.lane.laneId}}function C_(){return{kind:`wallet_execution_lane_refused_v1`,reason:`invalid_boundary_record`}}function w_(e){if(e.lane.lifecycle.state!==`active`)throw Error(`active lane reference requires an active lane`);return{kind:`signing_lane_reference_v1`,walletId:e.lane.walletId,walletKeyId:e.lane.walletKeyId,laneId:e.lane.laneId,laneKind:e.lane.laneKind,laneShareEpoch:e.lane.laneShareEpoch,participantBindingDigestB64u:e.lane.participantBindingDigestB64u,lifecycle:e.lane.lifecycle,materialActivation:e.materialActivation}}function T_(e){switch(e.laneKind){case`owner_passkey`:case`owner_email_otp`:case`recovery`:case`break_glass`:return e.ownerParticipantContinuity;case`linked_device`:case`delegated_execution`:return null}}function E_(e,t){return t.length===e.participantIds.length&&t.every((t,n)=>t===e.participantIds[n])}function D_(e,t){let{walletKey:n,lane:r}=e;if(n.lifecycle.state!==`active`)return S_(`wallet_key_inactive`,e);if(r.lifecycle.state!==`active`)return S_(`lane_inactive`,e);if(String(n.walletId)!==String(r.walletId)||String(n.walletKeyId)!==String(r.walletKeyId))return S_(`wallet_key_mismatch`,e);if(n.keyFamily!==t.keyFamily)return S_(`key_family_mismatch`,e);if(r.laneKind===`linked_device`||r.laneKind===`delegated_execution`)return S_(`unsupported_lane_kind`,e);let i=T_(r);if(i===null)return C_();let a;try{a=b_(t.laneShareEpoch)}catch{return C_()}return String(a)===String(r.laneShareEpoch)?!String(r.participantBindingDigestB64u)||!String(i.signerId)||!String(i.signingWorkerId)||i.participantIds.length!==2?S_(`participant_binding_mismatch`,e):null:S_(`share_epoch_mismatch`,e)}function O_(e){return e.kind===`use_live_runtime`||e.kind===`rehydrate_material_activation`}function k_(e,t){let n=D_(e,t);if(n)return n;let r=e.walletKey,i=e.lane,a=T_(i);if(r.keyFamily!==`ecdsa_secp256k1`||i.lifecycle.state!==`active`)return S_(`key_family_mismatch`,e);if(a===null)return C_();let o=y_({lookup:t.lookup,runtime:t.runtime});if(!O_(o)||t.lookup.kind!==`active`)return S_(`hydration_blocked`,e);let s=t.lookup.manifest,c=s.durableMaterial,l=c.roleLocalPublicFacts,u=s.signer.registeredPublicFacts,d=s.activation.serverActivation.serverActivationReceipt,f=d.protocolReceipt.ecdsa_activation.public_identity,p=Bo({walletId:l.walletId,signingRootId:l.signingRootId,signingRootVersion:l.signingRootVersion});if(!b(o.materialActivation,s.activation.materialActivation)||!b(o.materialActivation,c.materialActivation)||String(o.authority.walletId)!==String(r.walletId)||String(s.signer.walletId)!==String(r.walletId)||String(l.walletId)!==String(r.walletId)||String(r.evmFamilySigningKeySlotId)!==String(p)||String(r.thresholdPublicKey33B64u)!==String(l.groupPublicKey33B64u)||String(r.thresholdPublicKey33B64u)!==String(u.publicKeyB64u)||r.evmAddress.toLowerCase()!==String(l.ethereumAddress).toLowerCase()||r.evmAddress.toLowerCase()!==String(u.thresholdOwnerAddress).toLowerCase()||String(f.context_binding_b64u)!==String(c.bindingDigest)||String(f.derivation_client_share_public_key33_b64u)!==String(l.derivationClientSharePublicKey33B64u)||String(f.threshold_public_key33_b64u)!==String(r.thresholdPublicKey33B64u)||String(d.activationDigest)!==String(i.lifecycle.activationReceiptDigestB64u))return S_(`activation_receipt_mismatch`,e);if(String(a.signingWorkerId)!==String(o.materialActivation.signingWorker)||!E_(a,l.participantIds))return S_(`participant_binding_mismatch`,e);let m=o.materialActivation;return{kind:`active_wallet_execution_lane_v1`,keyFamily:`ecdsa_secp256k1`,walletKey:r,lane:w_({lane:i,materialActivation:m}),ownerParticipantContinuity:a,materialActivation:m,laneShareEpoch:i.laneShareEpoch,activationReceiptDigestB64u:i.lifecycle.activationReceiptDigestB64u,publicIdentity:{keyFamily:`ecdsa_secp256k1`,thresholdPublicKey33B64u:r.thresholdPublicKey33B64u,evmAddress:r.evmAddress,evmFamilySigningKeySlotId:r.evmFamilySigningKeySlotId}}}function A_(e){let t;try{t=x_(e)}catch{return C_()}try{return k_(t,e.material)}catch{return C_()}}function j_(e){let t=Ir(e.seamsWebConfigs.network.chains),n=e=>{if(e.ecdsaChainTargets.length===0)return e;let n=new Map;for(let r of[...e.ecdsaChainTargets,...t])n.set(B(r),r);return{...e,ecdsaChainTargets:[...n.values()]}};return{sessionLifecycle:e.sessionLifecycle,laneSelection:{readPersistedAvailableSigningLanesForTargets:t=>Cp({activeWalletAuthorityEcdsaRuntimeReadPorts:Bh,ed25519YaoPublicCapabilityLanes:e.ed25519YaoPublicCapabilityLanes,isEd25519YaoPublicCapabilityActive:e.isEd25519YaoPublicCapabilityActive,readActiveWalletSessionAuthorization:e.readActiveWalletSessionAuthorization,listEcdsaSigningCapabilitiesForWallet:e.listEcdsaSigningCapabilitiesForWallet},{...n(t),requiredEcdsaCapability:`export_keys`},new el,`all`),readOwnerScopedAvailableSigningLanesForTargets:async t=>await vp({activeWalletAuthorityEcdsaRuntimeReadPorts:Bh,ed25519YaoPublicCapabilityLanes:e.ed25519YaoPublicCapabilityLanes,isEd25519YaoPublicCapabilityActive:e.isEd25519YaoPublicCapabilityActive,readActiveWalletSessionAuthorization:e.readActiveWalletSessionAuthorization,listEcdsaSigningCapabilitiesForWallet:e.listEcdsaSigningCapabilitiesForWallet},{...n(t),requiredEcdsaCapability:`export_keys`,ownerScope:await e.resolveOwnerLaneScope(String(t.walletId))},new el)},ecdsa:{activeWalletAuthorityEcdsaRuntimeReadPorts:Bh,sessionStore:{...e.ecdsaSessions,resolveActiveEcdsaCapabilityRuntime:e.resolveActiveEcdsaCapabilityRuntime,relayerUrl:String(e.relayerUrl).trim().replace(/\/+$/g,``)},touchConfirm:e.touchConfirm,emailOtp:{requestExportChallenge:t=>e.emailOtpSessions.requestExportChallenge(t),exportEcdsaKeyWithDurableAuthorization:t=>e.emailOtpSessions.exportEcdsaKeyWithDurableAuthorization(t)},provisionPasskeyEcdsaExplicitExportSession:t=>e.provisionPasskeyEcdsaExplicitExportSession(t),getSignerWorkerContext:()=>e.signerWorkerManager.getContext(),withThresholdEcdsaSigningQueue:e.withThresholdEcdsaSigningQueue},ed25519Yao:{touchConfirm:e.touchConfirm,passkeyMpcExport:e.passkeyMpcExport,resolvePasskeyExportContext:e.resolvePasskeyEd25519YaoExportContext,withThresholdEd25519CommitQueue:e.withThresholdEd25519CommitQueue,emailOtp:{requestExportChallenge:t=>e.emailOtpSessions.requestExportChallenge(t),resolveExportContext:t=>e.resolveEmailOtpEd25519YaoExportContext(t),exportSeedWithFreshAuthorization:t=>e.emailOtpSessions.exportEd25519YaoSeedWithFreshEmailOtpLane(t)}},getTheme:e.getTheme}}async function M_(e,t){let n=t.laneIdentity,r={kind:`ed25519`,laneIdentity:n},i=Hc(n),a;try{a=await e.resolveSelectedWalletAuthority(String(i))}catch{return Od({observation:{kind:`unavailable`,source:r},nowMs:t.nowMs})}if(a.kind!==`resolved`)return Od({observation:a.kind===`integrity_error`?{kind:`invalid`,source:r}:{kind:`missing`,source:r},nowMs:t.nowMs});if(!N_(a,n))return Od({observation:{kind:`invalid`,source:r},nowMs:t.nowMs});let o;try{o=await e.readExactActiveForWallet({walletId:i,authorityId:a.authority.authorityId,authMethodId:a.authMethod.walletAuthMethodId})}catch{return Od({observation:{kind:`unavailable`,source:r},nowMs:t.nowMs})}switch(o.kind){case`missing`:return Od({observation:{kind:`missing`,source:r},nowMs:t.nowMs});case`corrupt`:case`upgrade_required`:return Od({observation:{kind:`invalid`,source:r},nowMs:t.nowMs});case`persistence_unavailable`:return Od({observation:{kind:`unavailable`,source:r},nowMs:t.nowMs});case`found`:break}return o.record.walletId!==i||o.record.authorityId!==a.authority.authorityId||o.record.authMethodId!==a.authMethod.walletAuthMethodId||o.operationCredential.walletSessionId!==n.walletSessionId||o.record.quotaId!==n.quotaId||o.record.authorityDigestB64u!==a.authority.authorityDigestB64u||o.record.authorityRevocationEpoch!==a.authority.revocationEpoch?Od({observation:{kind:`invalid`,source:r},nowMs:t.nowMs}):Od({observation:{kind:`found`,source:r,expiresAtMs:o.record.expiresAtMs},nowMs:t.nowMs})}function N_(e,t){let n=Hc(t);if(e.selection.lockState!==`unlocked`||e.selection.walletId!==n||e.selection.walletAuthMethodId!==e.authMethod.walletAuthMethodId||e.authMethod.walletId!==n||e.authMethod.walletAuthorityId!==e.authority.authorityId||e.authMethod.status!==`active`||e.authority.walletId!==n||e.authority.state!==`active`)return!1;switch(t.auth.kind){case`passkey`:return e.authMethod.kind===`passkey`&&String(e.authMethod.rpId)===String(t.auth.rpId)&&e.authMethod.credentialIdB64u===t.auth.credentialIdB64u;case`email_otp`:return e.authMethod.kind===`email_otp`}}function P_(e){return Od({observation:{kind:`found`,source:{kind:`ecdsa`,laneIdentity:e.laneIdentity,authorization:e.authorization},expiresAtMs:e.authorization.session.expiresAtMs},nowMs:e.nowMs})}async function F_(e,t){switch(t.kind){case`ed25519`:return await M_(e,t);case`ecdsa`:return P_(t)}}const I_={resolveSelectedWalletAuthority:K.resolveSelectedWalletAuthority.bind(K),readExactActiveForWallet:q.readExactActiveForWallet.bind(q)};async function L_(e){return await F_(I_,e)}function R_(e,t){return e.selection.lockState===`unlocked`&&e.selection.walletId===t&&e.selection.walletAuthMethodId===e.authMethod.walletAuthMethodId&&e.authMethod.status===`active`&&e.authMethod.walletId===t&&e.authMethod.walletAuthorityId===e.authority.authorityId&&e.authority.state===`active`&&e.authority.walletId===t}async function z_(e){let t;try{t=await K.resolveSelectedWalletAuthority(String(e))}catch{return{kind:`persistence_unavailable`}}if(t.kind!==`resolved`||!R_(t,e))return{kind:`missing`};try{return await q.readExactActiveForWallet({walletId:e,authorityId:t.authority.authorityId,authMethodId:t.authMethod.walletAuthMethodId})}catch{return{kind:`persistence_unavailable`}}}function B_(e){let t=Fp({relayerUrl:String(e.seamsWebConfigs.network.relayer?.url||``).trim(),readAuthorization:z_});return j_({resolveActiveEcdsaCapabilityRuntime:Ev,seamsWebConfigs:e.seamsWebConfigs,signerWorkerManager:e.signerWorkerManager,getTheme:e.getTheme,withThresholdEcdsaSigningQueue:t=>_d({queueByKey:e.thresholdEcdsaSigningQueueByKey,...t}),withThresholdEd25519CommitQueue:t=>of({queueByKey:e.thresholdEd25519CommitQueueByKey,...t}),ecdsaSessions:e.warmSigning.ecdsaSessions,relayerUrl:String(e.seamsWebConfigs.network.relayer?.url||``).trim(),readActiveWalletSessionAuthorization:e.readActiveWalletSessionAuthorization,ed25519YaoPublicCapabilityLanes:e.ed25519YaoPublicCapabilityLanes,isEd25519YaoPublicCapabilityActive:e.isEd25519YaoPublicCapabilityActive,listEcdsaSigningCapabilitiesForWallet:e.listEcdsaSigningCapabilitiesForWallet,resolveOwnerLaneScope:e.resolveOwnerLaneScope,touchConfirm:e.touchConfirm,passkeyMpcSession:e.passkeyMpcSession,passkeyMpcExport:e.passkeyMpcExport,emailOtpSessions:{readWarmSessionStatusOnly:t=>e.emailOtpSessions.readWarmSessionStatusOnly(t),requestExportChallenge:t=>e.emailOtpSessions.requestExportChallenge(t),exportEcdsaKeyWithDurableAuthorization:t=>e.emailOtpSessions.exportEcdsaKeyWithDurableAuthorization(t),exportEd25519YaoSeedWithFreshEmailOtpLane:t=>e.emailOtpSessions.exportEd25519YaoSeedWithFreshEmailOtpLane(t)},provisionPasskeyEcdsaExplicitExportSession:t=>Yl({queueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,activationDeps:e.getWalletSessionActivationDeps(),persistEcdsaRoleLocalReadyRecord:e.runtimePorts.storage.persistEcdsaRoleLocalReadyRecord},t),getWalletSessionStatus:e=>t(e),resolvePasskeyEd25519YaoExportContext:e.resolvePasskeyEd25519YaoExportContext,resolveEmailOtpEd25519YaoExportContext:e.resolveEmailOtpEd25519YaoExportContext,sessionLifecycle:{readAuthorization:L_,invalidateExpiredAuthorization:async t=>{if((await e.getSigningSessionCoordinator().invalidateExpiredWalletSession({state:t.state,source:t.source})).kind===`unavailable`)throw Error(`[SigningEngine][key-export] expired Wallet Session cleanup failed`)}}})}const V_=new js;function H_(e,t){return e.kind===t.kind&&e.walletId===t.walletId&&e.authorityId===t.authorityId&&e.authMethodId===t.authMethodId&&e.authorizationId===t.authorizationId&&e.quotaId===t.quotaId&&e.issuedAtMs===t.issuedAtMs&&e.expiresAtMs===t.expiresAtMs}function U_(e,t){return e.walletId===t.authority.walletId&&e.authorityId===t.authority.authorityId&&e.authMethodId===t.authMethod.walletAuthMethodId&&e.authorityDigestB64u===t.authority.authorityDigestB64u&&e.authorityRevocationEpoch===t.authority.revocationEpoch}function W_(e){if(e.authMethod!==`passkey`)throw Error(`Passkey restore adapter received a non-Passkey request`);let{authMethod:t,...n}=e;return n}const G_={getWalletAuthMethodV2:K.getWalletAuthMethodV2.bind(K),listWalletAuthMethodsForWallet:K.listWalletAuthMethodsForWallet.bind(K),readEmailOtpProviderSubjectForWallet:Ms.bind(null,K)};async function K_(){return null}async function q_(e,t){let n=await t.getWalletAuthMethodV2(String(e.walletAuthMethodId));if(!n||n.status!==`active`||n.walletId!==e.walletId)throw Error(`Exact wallet authentication authority is unavailable`);let r;try{r=await lp({authMethod:n,stores:{...t,getWalletPasskeyAuthenticator:K_}})}catch{throw Error(`Exact wallet authentication authority is unavailable`)}let i=await U({authority:r});if(i.walletId===e.walletId&&i.walletAuthMethodId===e.walletAuthMethodId&&i.authorityDigest===e.authorityDigest)return r;throw Error(`Exact wallet authentication authority is unavailable`)}function J_(e){return Fp({relayerUrl:String(e.seamsWebConfigs.network.relayer?.url||``).trim(),readAuthorization:z_})}function Y_(e,t){return e.kind!==`resolved`||e.selection.lockState!==`unlocked`||e.selection.walletId!==t||e.selection.walletAuthMethodId!==e.authMethod.walletAuthMethodId||e.authMethod.status!==`active`||e.authMethod.walletId!==t||e.authMethod.walletAuthorityId!==e.authority.authorityId||e.authority.state!==`active`||e.authority.walletId!==t?null:{kind:e.kind,selection:e.selection,authMethod:e.authMethod,authority:e.authority,signerMaterials:e.signerMaterials,exportRoot:e.exportRoot}}async function X_(e,t,n){let r=Y_(await K.resolveSelectedWalletAuthority(String(e)),e),i=await z_(e);return!r||i.kind!==`found`||i.operationCredential.token!==n.token||!U_(i.record,r)||!H_(t,i.record)||t.authorityRevocationEpoch!==i.record.authorityRevocationEpoch||t.capabilitySubjects.length>=i.record.capabilitySubjects.length||!at(t,i.record)?null:{selected:r,session:i.record}}async function Z_(e){return await lp({authMethod:e.authMethod,stores:{...G_,getWalletPasskeyAuthenticator:K_}})}async function Q_(e){let t;try{t=await K.resolveSelectedWalletAuthority(String(e.walletId))}catch{throw Error(`[SigningEngine][near] exact Passkey authority is unavailable`)}let n=Y_(t,e.walletId);if(!n||n.authMethod.kind!==V.passkey)throw Error(`[SigningEngine][near] exact Passkey authority is unavailable`);if(e.runtime.walletId!==e.walletId||e.runtime.factor.kind!==V.passkey||String(e.runtime.factor.rpId)!==String(n.authMethod.rpId)||e.runtime.factor.credentialIdB64u!==n.authMethod.credentialIdB64u)throw Error(`[SigningEngine][near] exact Passkey authority changed`);let r;try{r=await vr({runtime:e.runtime,walletAuthMethodId:n.authMethod.walletAuthMethodId})}catch{throw Error(`[SigningEngine][near] exact Passkey authority changed`)}let i;try{i=await Z_(n)}catch{throw Error(`[SigningEngine][near] exact Passkey authority changed`)}let a=await U({authority:i});if(a.walletId!==r.walletId||a.walletAuthMethodId!==r.walletAuthMethodId||a.authorityDigest!==r.authorityDigest)throw Error(`[SigningEngine][near] exact Passkey authority changed`);return a}async function $_(e){switch(e.authorizationRead.kind){case`expired`:case`exhausted`:return await Q_(e);case`found`:{let t=e.authorizationRead.authorization;if(t.selectedAuthMethod.kind!==V.passkey||e.runtime.factor.kind!==V.passkey||String(e.runtime.factor.rpId)!==String(t.selectedAuthMethod.rpId)||e.runtime.factor.credentialIdB64u!==t.selectedAuthMethod.credentialIdB64u)throw Error(`[SigningEngine][near] exact Passkey authority changed`);let n=await vr({runtime:e.runtime,walletAuthMethodId:t.selectedAuthMethod.walletAuthMethodId}),r=await U({authority:t.selectedFactorAuthority});if(n.walletId!==r.walletId||n.walletAuthMethodId!==r.walletAuthMethodId||n.authorityDigest!==r.authorityDigest)throw Error(`[SigningEngine][near] exact Passkey authority changed`);return n}default:throw e.authorizationRead,Error(`[SigningEngine][near] unsupported exact Passkey authorization read`)}}function ev(e){switch(e.status){case`missing`:return{kind:`missing`};case`exhausted`:return{kind:`exhausted`};case`expired`:return{kind:`expired`};case`superseded`:return{kind:`superseded`};case`authority_unavailable`:return{kind:`authority_unavailable`};case`method_unavailable`:return{kind:`method_unavailable`};case`capability_unavailable`:return{kind:`capability_unavailable`};case`invalid`:return{kind:`unavailable`};case`active`:throw Error(`[SigningEngine][near] active status must be resolved as authorization`);default:throw Error(`[SigningEngine][near] unsupported Wallet Session status`)}}async function tv(e,t,n){let r=await z_(n);if(r.kind!==`found`)return r;let i=Y_(await K.resolveSelectedWalletAuthority(String(n)),n);if(!i)return{kind:`missing`};if(r.record.expiresAtMs<=Date.now())return{kind:`expired`};let a=el.observationForConfirmation({relayerUrl:e,operationCredential:r.operationCredential},{walletSessionId:r.operationCredential.walletSessionId,quotaId:r.record.quotaId});if(!a||a.status.status===`active`&&(!lt(a.status.authorization,r.record)||!U_(r.record,i)))return nv(e,t,n);let o=a.status;if(o.status!==`active`)return ev(o);let s=await Z_(i);return{kind:`found`,authorization:Yc({selectedAuthority:i.authority,selectedAuthMethod:i.authMethod,selectedFactorAuthority:s,session:r.record,operationCredential:r.operationCredential,status:o,nowMs:Date.now()})}}async function nv(e,t,n){let r=z(n),i;try{i=await K.resolveSelectedWalletAuthority(String(r))}catch{return{kind:`persistence_unavailable`}}let a=Y_(i,r);if(!a)return{kind:`missing`};let o;try{o=await q.readExactActiveForWallet({walletId:r,authorityId:a.authority.authorityId,authMethodId:a.authMethod.walletAuthMethodId})}catch{return{kind:`persistence_unavailable`}}switch(o.kind){case`missing`:case`corrupt`:case`persistence_unavailable`:case`upgrade_required`:return o;case`found`:break;default:throw Error(`[SigningEngine][near] unsupported exact Wallet Session read result`)}let s=String(e||``).trim();if(!s)return{kind:`unavailable`};let c=Date.now();if(o.record.expiresAtMs<=c)return{kind:`expired`};let l;try{l=await t.read({relayerUrl:s,operationCredential:o.operationCredential},{walletSessionId:o.operationCredential.walletSessionId,quotaId:o.record.quotaId})}catch{return{kind:`unavailable`}}if(l.status!==`active`)return ev(l);let u;try{u=await K.resolveSelectedWalletAuthority(String(r))}catch{return{kind:`persistence_unavailable`}}let d=Y_(u,r);if(!d)return{kind:`missing`};let f=Date.now();if(l.authorization.expiresAtMs<=f)return{kind:`expired`};if(l.walletSessionId!==o.operationCredential.walletSessionId||l.quotaId!==o.record.quotaId||l.expiresAtMs!==l.authorization.expiresAtMs||!H_(l.authorization,o.record)||!U_(l.authorization,d))return{kind:`corrupt`};let p;try{p=await K.replaceExactActiveWalletSessionFromStatus({active:l.authorization,operationCredential:o.operationCredential})}catch{return{kind:`persistence_unavailable`}}if(p.kind===`superseded`)return rl(`near`,{event:`wallet_session_status_superseded`,walletSessionId:o.operationCredential.walletSessionId}),{kind:`unavailable`};let m;try{m=await Z_(d)}catch{return{kind:`unavailable`}}try{return{kind:`found`,authorization:Yc({selectedAuthority:d.authority,selectedAuthMethod:d.authMethod,selectedFactorAuthority:m,session:l.authorization,operationCredential:o.operationCredential,status:l,nowMs:f})}}catch{return{kind:`corrupt`}}}async function rv(e,t,n){let r=await nv(t,n,e);return r.kind===`found`?r.authorization:null}function iv(e){return e.curve===`ecdsa`}function av(e){let{manifest:t,selected:n,walletId:r,chainTarget:i,materialActivation:a}=e;return t.signer.walletId===r&&t.signer.authority.walletId===r&&t.signer.authority.walletAuthMethodId===n.authMethod.walletAuthMethodId&&b(t.activation.materialActivation,a)&&t.signer.scope.targetMemberships.some(e=>B(e)===B(i))}async function ov(e){let t=(await wv(String(e.walletId))).filter(t=>av({manifest:t,selected:e.selected,walletId:e.walletId,chainTarget:e.chainTarget,materialActivation:e.materialActivation}));if(t.length!==1)return{kind:`inactive`,reason:`Expected one exact ECDSA capability manifest; found ${t.length}`};let[n]=t;if(!n)return{kind:`inactive`,reason:`Exact ECDSA capability manifest is missing`};let r=await hv(n),i=await e.context.sealedSigningSessionStore.listExactSealedSessionsForWallet({walletId:String(e.walletId),filter:{authMethod:e.selected.authMethod.kind,curve:`ecdsa`,chainTarget:e.chainTarget}}),a=Ju({manifest:n,walletId:e.walletId,chainTarget:e.chainTarget,sealedRecords:i.filter(iv)}),o;if(a.kind===`resolved`){let t=a.runtime;o={kind:`exact_ecdsa_sealed_runtime_v1`,walletId:t.walletId,chainTarget:t.chainTarget,materialActivation:t.materialActivation,normalSigning:t.normalSigning,relayerUrl:t.relayerUrl,relayerKeyId:t.relayerKeyId,clientVerifyingPublicKey33B64u:t.clientVerifyingPublicKey33B64u,participantIds:t.participantIds,ecdsaThresholdKeyId:t.ecdsaThresholdKeyId,thresholdEcdsaPublicKeyB64u:t.thresholdEcdsaPublicKeyB64u,keyHandle:t.keyHandle,runtimePolicyScope:t.runtimePolicyScope,roleLocalMaterialRef:t.roleLocalMaterialRef,authBinding:t.authBinding,sealedRecord:t.sealedRecord,expiresAtMs:Math.min(t.expiresAtMs,e.status.expiresAtMs),remainingUses:e.status.remainingUses}}else{if(a.reason!==`missing_material`)return{kind:`inactive`,reason:`Exact sealed ECDSA runtime is ${a.reason}`};let t=await od({manifest:n,chainTarget:e.chainTarget,relayerUrl:e.context.seamsWebConfigs.network.relayer?.url??``});if(t.kind!==`resolved`)return{kind:`inactive`,reason:`Exact durable ECDSA capability runtime is ${t.reason}`};try{o=Wu({runtime:t.runtime,authority:r.authority,status:e.status})}catch{return{kind:`inactive`,reason:`Exact durable ECDSA quota facts are invalid`}}}try{return{kind:`resolved`,capability:Xu({capability:r,selected:e.selected,session:e.session,operationCredential:e.operationCredential,runtime:o,nowMs:e.nowMs})}}catch(e){return{kind:`inactive`,reason:e instanceof Error?e.message:`Exact ECDSA Wallet Session authorization is invalid`}}}async function sv(e,t,n){let r=z(t.walletId),i=Date.now(),a=Y_(await K.resolveSelectedWalletAuthority(String(r)),r);if(!a)return{kind:`inactive`,reason:`Selected wallet authentication authority is unavailable`};let o=String(e.seamsWebConfigs.network.relayer?.url||``).trim();if(!o)throw Error(`Exact Wallet Session status requires a relayer URL`);let s=await z_(r);if(s.kind!==`found`)return{kind:`inactive`,reason:`Exact Wallet Session authorization is ${s.kind}`};if(s.record.expiresAtMs<=i)return{kind:`inactive`,reason:`Exact Wallet Session authorization is expired`};let c=await n.read({relayerUrl:o,operationCredential:s.operationCredential},{walletSessionId:s.operationCredential.walletSessionId,quotaId:s.record.quotaId});if(c.status!==`active`&&c.status!==`exhausted`)return{kind:`inactive`,reason:`Exact Wallet Session is ${c.status}`};if(H_(c.authorization,s.record)&&!U_(c.authorization,a))try{await K.reconcilePendingNearRegistrationAuthority({walletSession:c.authorization,operationCredential:s.operationCredential})}catch{return{kind:`inactive`,reason:`NEAR authority reconciliation was superseded`}}let l=Y_(await K.resolveSelectedWalletAuthority(String(r)),r);if(!l||c.walletSessionId!==s.operationCredential.walletSessionId||c.quotaId!==s.record.quotaId||c.expiresAtMs!==c.authorization.expiresAtMs||!H_(c.authorization,s.record))return{kind:`inactive`,reason:`Exact Wallet Session status identity is inconsistent`};let u=Date.now();if(c.authorization.expiresAtMs<=u)return{kind:`inactive`,reason:`Exact Wallet Session authorization is expired`};let d=U_(c.authorization,l),f=null;if(d){let e;try{e=await K.replaceExactActiveWalletSessionFromStatus({active:c.authorization,operationCredential:s.operationCredential})}catch{return{kind:`inactive`,reason:`Exact Wallet Session promotion reconciliation could not be persisted`}}e.kind===`replaced`?f={selected:l,session:c.authorization}:rl(`evm-family`,{event:`wallet_session_status_superseded`,walletSessionId:s.operationCredential.walletSessionId})}if(f??=await X_(r,c.authorization,s.operationCredential),!f)return{kind:`inactive`,reason:d?`Exact Wallet Session status was superseded by a newer wallet authority`:`Exact Wallet Session status identity is inconsistent`};let p=await ov({context:e,walletId:r,selected:f.selected,session:f.session,operationCredential:s.operationCredential,status:c,chainTarget:t.chainTarget,materialActivation:t.materialActivation,nowMs:u});return p.kind===`resolved`?{kind:`active`,capability:p.capability}:p}async function cv(e,t,n){let r=await sv(e,t,n);if(r.kind===`inactive`)return r;let i=cd(r.capability,Date.now());return i?{kind:`active`,authorization:i}:{kind:`inactive`,reason:`Exact Wallet Session signing quota is exhausted`}}async function lv(e,t,n){let r=await Cv({walletId:z(t.walletId),chainTargets:t.chainTargets}),i=[];for(let a of r)for(let r of t.chainTargets){let t=await sv(e,{walletId:a.manifest.signer.walletId,materialActivation:a.manifest.activation.materialActivation,chainTarget:r},n);if(t.kind===`active`){i.push(t.capability);break}}return i}function uv(e){return dv.bind(null,e)}async function dv(e,t,n){let r=await cv(e,t,n);return r.kind===`active`?r.authorization:null}async function fv(e){for(let t of e.subjects){let n=await V_.lookup(t);if(n.kind===`persistence_unavailable`)throw Error(`ECDSA capability persistence is unavailable`);if(n.kind!==`active`)continue;let r=n.manifest;if(r.signer.walletId===e.walletId&&r.signer.scope.targetMemberships.some(t=>B(t)===B(e.chainTarget)))return r}return null}async function pv(e){let t=await K.resolveSelectedWalletAuthority(String(e.walletId));if(t.kind!==`resolved`)throw Error(`ECDSA material activation is ambiguous and the wallet selection is ${t.kind}`);let n=e.authorities.find(e=>e.walletAuthMethodId===t.selection.walletAuthMethodId);if(!n)throw Error(`ECDSA material activation has no access projection for the selected wallet auth method`);return await V_.lookupByMaterialActivation({walletId:e.walletId,materialActivation:e.materialActivation,authority:n})}async function mv(e,t){let n=z(t.walletId),r=await V_.listActiveWalletCapabilitySubjects(n);if(r.kind!==`resolved`)throw Error(`ECDSA capability subjects are ${r.kind}`);let i=async e=>{let i=await fv({walletId:n,subjects:r.subjects,chainTarget:t.chainTarget});if(i)throw new Zd({kind:`superseded`,supersessionKind:`material_activation_replaced`,preparedMaterialActivation:t.materialActivation,currentMaterialActivation:i.activation.materialActivation});return e()},a=await V_.lookupByMaterialActivation({walletId:n,materialActivation:t.materialActivation});if(a.kind===`ambiguous_authority`&&(a=await pv({walletId:n,materialActivation:t.materialActivation,authorities:a.authorities})),a.kind===`persistence_unavailable`||a.kind===`exact_record_conflict`||a.kind===`corrupt`)throw Error(`ECDSA material activation is ${a.kind}`);if(a.kind!==`active`)return await i(()=>{throw Error(`ECDSA capability manifest is missing`)});let o=a.manifest;if(o.signer.walletId!==n||!o.signer.scope.targetMemberships.some(e=>B(e)===B(t.chainTarget)))throw Error(`ECDSA capability manifest does not match the requested signer`);return{capability:await hv(o),lookup:a}}async function hv(e){return await Zu({authority:await q_(e.signer.authority,{getWalletAuthMethodV2:e=>K.getWalletAuthMethodV2(e),listWalletAuthMethodsForWallet:e=>K.listWalletAuthMethodsForWallet(e),readEmailOtpProviderSubjectForWallet:e=>Ms(K,e)}),manifest:e,material:pd({authority:e.signer.authority,materialActivation:e.activation.materialActivation,publicFacts:e.durableMaterial.roleLocalPublicFacts})})}async function gv(e,t){return(await mv(e,t)).capability}async function _v(e,t){let n=await cv(e,t,new el);if(n.kind!==`active`)throw Error(n.reason);let r=n.authorization,i=await mv(e,t),a=await d_({relayerUrl:String(e.seamsWebConfigs.network.relayer?.url||``).trim(),operationCredential:r.operationCredential,curve:`ecdsa_secp256k1`,expectedMaterialActivation:i.capability.manifest.activation.materialActivation}),o=A_({walletKey:a.walletKey,lane:a.lane,material:{keyFamily:`ecdsa_secp256k1`,laneShareEpoch:a.lane.laneShareEpoch,lookup:i.lookup,runtime:{kind:`absent`}}});if(o.kind!==`active_wallet_execution_lane_v1`)throw Error(`Owner ECDSA execution lane is ${o.reason}`);return ed({capability:i.capability,authorization:r,nowMs:Date.now()})}async function vv(e,t,n){let r=await Cv({walletId:z(t.walletId),chainTargets:t.chainTargets,...t.authMethod?{authMethod:t.authMethod}:{}});return await Promise.all(r.map(yv.bind(null,e,t.chainTargets,n)))}async function yv(e,t,n,r){let i=r.manifest,a=t.find(e=>i.signer.scope.targetMemberships.some(t=>B(e)===B(t)));if(!a)return{kind:`authorization_required`,capability:r};let o=await cv(e,{walletId:i.signer.walletId,chainTarget:a,materialActivation:i.activation.materialActivation},n);return o.kind===`active`?bv(r,o.authorization):{kind:`authorization_required`,capability:r}}function bv(e,t){try{return ed({capability:e,authorization:t,nowMs:Date.now()})}catch{return{kind:`authorization_required`,capability:e}}}async function xv(e,t,n,r){let i=r.manifest,a=i.signer.walletId,o=t.find(e=>i.signer.scope.targetMemberships.some(t=>B(e)===B(t)));if(!o)return{kind:`authorization_required`,capability:r};let s=Y_(await K.resolveSelectedWalletAuthority(String(a)),a),c=await z_(a);if(!s||c.kind!==`found`||!U_(c.record,s))return{kind:`authorization_required`,capability:r};let l=el.observationForConfirmation({relayerUrl:e.seamsWebConfigs.network.relayer.url,operationCredential:c.operationCredential},{walletSessionId:c.operationCredential.walletSessionId,quotaId:c.record.quotaId});if(!l)return yv(e,t,n,r);let u=l.status;if(u.status!==`active`)return{kind:`authorization_required`,capability:r};if(!H_(u.authorization,c.record)||!U_(u.authorization,s))return yv(e,t,n,r);let d=await ov({context:e,walletId:a,selected:s,session:c.record,operationCredential:c.operationCredential,status:u,chainTarget:o,materialActivation:i.activation.materialActivation,nowMs:Date.now()});if(d.kind!==`resolved`)return{kind:`authorization_required`,capability:r};let f=cd(d.capability,Date.now());return f?bv(r,f):{kind:`authorization_required`,capability:r}}async function Sv(e,t,n){let r=await Cv({walletId:z(t.walletId),chainTargets:t.chainTargets,...t.authMethod?{authMethod:t.authMethod}:{}});return Promise.all(r.map(xv.bind(null,e,t.chainTargets,n)))}async function Cv(e){let t=await V_.listActiveWalletCapabilitySubjects(e.walletId);if(t.kind!==`resolved`)return[];let n=[];for(let r of t.subjects){let t=await V_.lookup(r);if(t.kind!==`active`)continue;let i=t.manifest;if(!i.signer.scope.targetMemberships.some(t=>e.chainTargets.some(e=>B(e)===B(t))))continue;let a;try{a=await hv(i)}catch{continue}let o=Ma(a.authority)?`passkey`:Na(a.authority)?`email_otp`:null;!o||e.authMethod&&o!==e.authMethod||n.push(a)}return n}async function wv(e){let t=z(e),n=await V_.listActiveWalletCapabilitySubjects(t);if(n.kind!==`resolved`)return[];let r=[];for(let e of n.subjects){let t=await V_.lookup(e);t.kind===`active`&&r.push(t.manifest)}return r}const Tv={listActiveEcdsaCapabilityManifestsForWallet:wv,listExactSealedSessionsForWallet:en,resolveSelectedWalletAuthority:K.resolveSelectedWalletAuthority.bind(K)},Ev=$u(Tv),Dv=qu(Tv);async function Ov(e){let t=await z_(e);if(t.kind!==`found`||t.record.expiresAtMs<=Date.now())throw Error(`Email OTP step-up requires the exact unexpired Wallet Session`);return t.operationCredential}async function kv(e){switch(e.authority.kind){case`live_session`:return await e.coordinator.requestTransactionSigningChallenge({kind:`wallet_session_challenge`,walletSession:e.walletSession,chain:e.chain,authLane:e.authority.authLane,operationFingerprintDigest:e.operationFingerprintDigest});case`capability_step_up`:return await e.coordinator.requestTransactionSigningChallenge({kind:`wallet_operation_challenge`,operationCredential:await Ov(e.walletSession.walletId),walletSession:e.walletSession,chain:e.chain,operationFingerprintDigest:e.operationFingerprintDigest})}}function Av(e){let t=J_(e);return _g({runtimePorts:e.runtimePorts,stores:e.stores,ed25519YaoPublicCapabilityReferences:e.ed25519YaoPublicCapabilityReferences,seamsWebConfigs:e.seamsWebConfigs,nearClient:e.nearClient,touchIdPrompt:e.touchIdPrompt,userPreferencesManager:e.userPreferencesManager,nonceCoordinator:e.nonceCoordinator,ensureSealedRefreshStartupParity:e.ensureSealedRefreshStartupParity,touchConfirm:e.touchConfirm,passkeyMpcSession:e.passkeyMpcSession,passkeyMpcExport:e.passkeyMpcExport,getEmailOtpWarmSessionStatus:t=>e.emailOtpSessions.readWarmSessionStatusOnly(t),consumeEmailOtpWarmSessionUses:t=>e.emailOtpSessions.consumeWarmSessionUses(t),clearEmailOtpWarmSessionMaterial:t=>e.emailOtpSessions.clearVolatileWarmSessionMaterial({kind:`ecdsa`,thresholdSessionId:t}),getWalletSessionStatus:e=>t(e),resolveCanonicalEcdsaSigningCapability:t=>gv(e,t),resolveAuthorizedEcdsaSigningCapability:t=>_v(e,t),resolveActiveEcdsaWalletSessionAuthorization:uv(e),resolveOwnerLaneScope:e.resolveOwnerLaneScope,signerWorkerManager:e.signerWorkerManager,getWorkerBaseOrigin:e.getWorkerBaseOrigin,shouldPrewarmUiConfirmUi:e.shouldPrewarmUiConfirmUi,getTheme:e.getTheme,signTempo:t=>nd(e.getEnginePorts().tempoSigningDeps,t),activateAuthenticatedWalletState:t=>_a(e.getEnginePorts().registrationAccountLifecycleDeps,{walletId:t.walletId,nearAccountId:t.nearAccountId,signerSlot:t.signerSlot,nearClient:t.nearClient}),persistThresholdEcdsaBootstrapForWalletTarget:t=>Mm({bootstrapStore:e.ecdsaBootstrapStore,walletId:t.walletId,chainTarget:t.chainTarget,bootstrap:t.bootstrap,signerAuth:t.signerAuth}),requestEmailOtpTransactionSigningChallenge:t=>kv({coordinator:e.emailOtpSessions,walletSession:t.walletSession,chain:t.chain,authority:t.authority,operationFingerprintDigest:t.operationFingerprintDigest}),requestEmailOtpEd25519SigningChallenge:async({walletSession:t,operationFingerprintDigest:n})=>e.emailOtpSessions.requestTransactionSigningChallenge({kind:`wallet_operation_challenge`,operationCredential:await Ov(t.walletId),walletSession:t,chain:`near`,operationFingerprintDigest:n}),prepareNearEd25519YaoMaterialBoundary:e.prepareNearEd25519YaoMaterialBoundary,provisionThresholdEd25519Session:t=>km({credentialStore:e.stores.recoveryAndDeviceLinking.credentialStore,touchIdPrompt:e.touchIdPrompt,touchConfirm:e.passkeyMpcSession,defaultRelayerUrl:e.seamsWebConfigs.network.relayer?.url||``,getSignerWorkerContext:()=>e.getEnginePorts().walletSessionActivationDeps.getSignerWorkerContext()},t),restorePersistedSessionForSigning:t=>t.authMethod===`passkey`?e.passkeyMpcSession.restorePersistedSessionForSigning(W_(t)):e.emailOtpSessions.restorePersistedSessionForSigning(t),readAvailableSigningLanesForSigning:async t=>yp({activeWalletAuthorityEcdsaRuntimeReadPorts:{resolveSelectedWalletAuthority:K.resolveSelectedWalletAuthority.bind(K),readExactWithOperationCredential:q.readExactWithOperationCredential.bind(q)},ed25519YaoPublicCapabilityLanes:e.ed25519YaoPublicCapabilityReferences,isEd25519YaoPublicCapabilityActive:t=>{switch(t.auth.kind){case`email_otp`:return!0;case`passkey`:return e.getEnginePorts().ed25519YaoActiveClients.resolve({walletId:t.walletId,nearAccountId:t.nearAccountId,materialActivation:t.materialActivation})!==null}},readActiveWalletSessionAuthorization:tv.bind(null,e.seamsWebConfigs.network.relayer.url),listEcdsaSigningCapabilitiesForWallet:(t.curve===`ecdsa`?Sv:vv).bind(null,e)},t,Ir(e.seamsWebConfigs.network.chains)),provisionThresholdEcdsaSession:t=>Rl({queueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,activationDeps:e.getEnginePorts().walletSessionActivationDeps,persistEcdsaRoleLocalReadyRecord:e.runtimePorts.storage.persistEcdsaRoleLocalReadyRecord},t),withThresholdEcdsaSigningQueue:t=>_d({queueByKey:e.thresholdEcdsaSigningQueueByKey,...t,walletId:z(t.walletId)}),withThresholdEd25519CommitQueue:t=>of({queueByKey:e.thresholdEd25519CommitQueueByKey,...t})})}function jv(e){throw Error(`Unexpected Router A/B normal-signing config branch: ${String(e)}`)}function Mv(e){let t=e.signing.routerAb.normalSigning;switch(t.mode){case`disabled`:throw Error(`[threshold-warm-session] Router A/B normal signing must be enabled for Ed25519 sessions`);case`enabled`:return{kind:We,signingWorkerId:t.signingWorkerId};default:return jv(t)}}var Nv=class extends Error{constructor(e){super(`[WalletRuntimePostcondition] ${e.code} ${JSON.stringify(e.details)}`),this.name=`WalletRuntimePostconditionError`,this.code=e.code,this.details=e.details}};function Pv(e){let t=Math.floor(Number(e));return Number.isFinite(t)&&t>0?t:null}function Fv(e,t){let n=Math.floor(Number(e));return Number.isFinite(n)&&n>t?n:null}function Iv(e){return Pv(e.remainingUses??e.policyHint?.remainingUses)}function Lv(e,t){return Fv(e.expiresAtMs??e.policyHint?.expiresAtMs,t)}function Rv(e){if(e.state===`missing`)return null;switch(e.source){case`durable_sealed_record`:case`public_capability_reference`:return{kind:e.source};default:return null}}function zv(e){let t=e.lanes.lanes.ed25519.near;if(t.state===`missing`)return`ed25519_lane_missing`;if(bd(t)!==e.authMethod)return`auth_method_route_mismatch`;if(t.state!==`ready`&&t.state!==`restorable`)return`ed25519_lane_missing`;let n=Iv(t),r=Lv(t,e.nowMs);if(t.authorizationState!==`authorized`||!t.authorization.operationCredential.walletSessionId||!t.authorization.session.quotaId||!t.thresholdSessionId||!n||!r)return`lane_inventory_mismatch`;let i=Rv(t);if(!i)return`lane_material_missing`;let a={authMethod:e.authMethod,target:{curve:`ed25519`},walletSessionId:t.authorization.operationCredential.walletSessionId,quotaId:t.authorization.session.quotaId,thresholdSessionId:t.thresholdSessionId,remainingSignatureUses:n,expiresAtMs:r,material:i};return t.state===`restorable`?{...a,state:`restorable`}:{...a,state:`ready`}}function Bv(e){let t=B(e.chainTarget),n=e.lanes.ecdsa.lanesByTarget[t];if(!n||n.state===`missing`)return`ecdsa_lane_missing`;if(Dd(n)!==e.authMethod)return`auth_method_route_mismatch`;if(n.state!==`ready`)return`ecdsa_lane_missing`;let r=Iv(n),i=Lv(n,e.nowMs);return!n.authorization||!r||!i?`lane_inventory_mismatch`:{state:n.state,authMethod:e.authMethod,target:{curve:`ecdsa`,chainTarget:e.chainTarget},authorizationId:n.authorization.session.authorizationId,materialActivationId:String(n.materialActivation.activationId),remainingSignatureUses:r,expiresAtMs:i,material:{kind:`canonical_capability`}}}async function Vv(e){let t=String(e.walletId||``).trim();if(!t)return{ok:!1,code:`wallet_missing`,details:{source:e.source}};let n=ec(e.ownerScope.auth),r=await e.readOwnerScopedSigningLanes({walletId:t,ownerScope:e.ownerScope}),i=e.nowMs??Date.now(),a,o=new Map;for(let s of e.requiredTargets){if(s.curve===`ed25519`){let o=zv({lanes:r,authMethod:n,nowMs:i});if(typeof o==`string`)return{ok:!1,code:o,details:{source:e.source,walletId:t,authMethod:n,curve:`ed25519`,state:r.lanes.ed25519.near.state,candidateCount:r.candidates.ed25519.near.length}};a=o;continue}let c=Bv({lanes:r,chainTarget:s.chainTarget,authMethod:n,nowMs:i});if(typeof c==`string`){let i=B(s.chainTarget);return{ok:!1,code:c,details:{source:e.source,walletId:t,authMethod:n,curve:`ecdsa`,targetKey:i,state:r.ecdsa.lanesByTarget[i]?.state||`missing`,candidateCount:r.ecdsa.candidatesByTarget[i]?.length||0}}}o.set(B(s.chainTarget),c)}return{ok:!0,inventory:{...a?{ed25519:a}:{},ecdsaByTarget:o}}}async function Hv(e){let t=await Vv(e);if(!t.ok)throw new Nv(t);return t.inventory}function Uv(e){let{record:t,operationCredential:n,scope:r}=e;return t.walletId===r.walletId&&t.authorityId===r.authorityId&&t.authMethodId===r.authMethodId&&t.authorityDigestB64u===r.authorityDigestB64u&&t.authorityRevocationEpoch===r.authorityRevocationEpoch&&n.kind===`opaque_wallet_session_operation_credential_v1`&&n.token.trim().length>0}async function Wv(e){let{walletId:t,ports:n}=e,r=await n.resolveSelectedWalletAuthority(String(t));if(r.kind!==`resolved`)return{kind:`missing`};let{selection:i,authMethod:a,authority:o}=r;if(i.walletId!==t||i.walletAuthMethodId!==a.walletAuthMethodId||i.lockState!==`unlocked`||a.walletId!==t||a.walletAuthorityId!==o.authorityId||a.status!==`active`||o.walletId!==t||o.state!==`active`)return{kind:`missing`};let s=await n.readExactWithOperationCredential({walletId:t,authorityId:o.authorityId,authMethodId:a.walletAuthMethodId});switch(s.kind){case`found`:break;case`missing`:return{kind:`missing`};case`upgrade_required`:return{kind:`upgrade_required`}}return!Uv({record:s.record,operationCredential:s.operationCredential,scope:{walletId:t,authorityId:o.authorityId,authMethodId:a.walletAuthMethodId,authorityDigestB64u:o.authorityDigestB64u,authorityRevocationEpoch:o.revocationEpoch}})||s.record.expiresAtMs<=Date.now()?{kind:`missing`}:{kind:`authenticated`,state:{kind:`authenticated`,walletId:t,authMethod:a.kind},walletAuthMethodId:a.walletAuthMethodId}}function Gv(e,t){switch(e.kind){case`found`:return e;case`missing`:return null;case`upgrade_required`:throw new ic(t)}}function Kv(e,t){let n=String(e??``).trim();if(!n)throw Error(`${t} is required`);return n}function qv(e){return{kind:e.kind,scope:{lifecycle_id:e.scope.lifecycle_id,root_share_epoch:e.scope.root_share_epoch,account_id:e.scope.account_id,threshold_session_id:e.scope.threshold_session_id,signer_set_id:e.scope.signer_set_id,signing_worker_id:e.scope.signing_worker_id,material_activation:e.scope.material_activation},applicationBinding:{wallet_id:e.applicationBinding.wallet_id,near_ed25519_signing_key_id:e.applicationBinding.near_ed25519_signing_key_id,signing_root_id:e.applicationBinding.signing_root_id,key_creation_signer_slot:e.applicationBinding.key_creation_signer_slot},participantIds:[e.participantIds[0],e.participantIds[1]],registeredPublicKey:e.registeredPublicKey.slice(),signingWorkerVerifyingShare:e.signingWorkerVerifyingShare.slice(),stateEpoch:e.stateEpoch,transcript:e.transcript.slice(),activeCapabilityBinding:[...e.activeCapabilityBinding],materialActivation:e.materialActivation}}function Jv(e){if(e.kind===`active`)return e.handle;throw Error(`Wallet custody Ed25519 active client is disposed`)}function Yv(e){e.workerContext.requestWorkerOperation({kind:`emailOtp`,request:{type:`disposeEmailOtpEd25519YaoActiveClient`,payload:{activeClientHandle:e.handle}}}).catch(()=>void 0)}async function Xv(e){return(await e.workerContext.requestWorkerOperation({kind:`emailOtp`,request:{type:`disposeEmailOtpEd25519YaoActiveClient`,payload:{activeClientHandle:Kv(e.activeClientHandle,`activeClientHandle`)}}})).removed}var Zv=class{constructor(e,t,n){this.workerContext=e,this.lifecycle={kind:`active`,handle:Kv(t,`activeClientHandle`)},this.activeMetadata=qv(n)}async createSigningShare(e){return await this.workerContext.requestWorkerOperation({kind:`emailOtp`,request:{type:`createEmailOtpEd25519YaoSigningShare`,payload:{activeClientHandle:Jv(this.lifecycle),input:e}}})}metadata(){return qv(this.activeMetadata)}status(){return this.lifecycle.kind===`active`?{kind:`active`}:{kind:`disposed`}}dispose(){if(this.lifecycle.kind!==`active`)return;let e=this.lifecycle.handle;this.lifecycle={kind:`disposed`},Yv({workerContext:this.workerContext,handle:e})}};function Qv(e){switch(e.mode){case`ed25519_only`:return!1;case`ecdsa_only`:case`ed25519_and_ecdsa`:return!0}return!1}function $v(e){switch(e.reason){case`missing_chain_target`:case`missing_key_handle`:case`invalid_key_handle`:case`duplicate_key_handles`:return e.reason;case`invalid_chain_target`:return`invalid_signer_record`}return e.reason,`invalid_signer_record`}function ey(e){let t=e.signer,n=vc({walletId:e.walletId,configuredTargets:e.configuredTargets,signer:e.signer}),r=typeof t.signerId==`string`&&t.signerId.trim()?t.signerId.trim():void 0;switch(n.kind){case`active_wallet_key`:return{kind:`active_ecdsa_signer_record`,targetKey:n.targetKey,chainTarget:n.chainTarget,walletKey:n.walletKey,publicCapability:n.publicCapability,source:`profile_continuity`,...r?{signerId:r}:{}};case`key_facts_inventory_required`:return{kind:`key_facts_inventory_required`,targetKey:n.targetKey,chainTarget:n.chainTarget,keyHandle:n.keyHandle,reason:n.reason,...r?{signerId:r}:{}};case`blocked`:return{kind:`blocked`,targetKey:n.targetKey,reason:$v(n),...r?{signerId:r}:{}};case`skipped`:return{kind:`skipped`}}return{kind:`skipped`}}function ty(e){let t=new Map;for(let n of e){let e=t.get(n.targetKey);if(!e){t.set(n.targetKey,n);continue}if(e.kind!==`active_ecdsa_signer_record`)continue;let r=$a(mo(e.walletKey)),i=$a(mo(n.walletKey));(String(e.walletKey.keyHandle)!==String(n.walletKey.keyHandle)||r!==i)&&t.set(n.targetKey,{kind:`blocked`,targetKey:n.targetKey,reason:`duplicate_key_handles`,...n.signerId?{signerId:n.signerId}:{}})}return t}function ny(e){let t=String(e.keyHandle||``).trim();if(!t)throw Error(`[login] configured-target ECDSA warm key requires keyHandle`);let n=String(e.passkeyCredentialIdB64u||``).trim();if(e.key&&e.publicCapability&&String(e.publicCapability.client_id)!==String(e.key.walletId))throw Error(`[login] configured-target ECDSA public capability wallet mismatch`);return{chainTarget:e.chainTarget,targetKey:B(e.chainTarget),keyHandle:t,...e.key?{key:e.key}:{},...n?{passkeyCredentialIdB64u:n}:{},...e.existingRoleLocalMaterial?{existingRoleLocalMaterial:e.existingRoleLocalMaterial}:{},publicCapability:e.publicCapability?{kind:`persisted_public_capability`,value:e.publicCapability}:{kind:`missing_public_capability`}}}function ry(e){let t=new Map;for(let n of e.keys){let r=B(n.chainTarget),i=String(n.keyHandle||``).trim();if(!i)continue;let a=t.get(r),o=String(a?.keyHandle||``).trim();if(o&&i&&o!==i)throw Error(`[login] threshold ECDSA warm-up received ambiguous ${e.source} key handles for ${r}`);if(a?.key&&n.key&&$a(a.key)!==$a(n.key))throw Error(`[login] threshold ECDSA warm-up received ambiguous ${e.source} key fingerprints for ${r}`);let s=a?.publicCapability.kind===`persisted_public_capability`?a.publicCapability.value:null,c=n.publicCapability.kind===`persisted_public_capability`?n.publicCapability.value:null;if(s&&c&&!Qa(s,c))throw Error(`[login] threshold ECDSA warm-up received ambiguous ${e.source} public capabilities for ${r}`);let l=c||s,u=String(n.passkeyCredentialIdB64u||a?.passkeyCredentialIdB64u||``).trim(),d=n.existingRoleLocalMaterial||a?.existingRoleLocalMaterial;if(n.existingRoleLocalMaterial&&a?.existingRoleLocalMaterial&&!b(n.existingRoleLocalMaterial.materialActivation,a.existingRoleLocalMaterial.materialActivation))throw Error(`[login] threshold ECDSA warm-up received ambiguous ${e.source} role-local material for ${r}`);t.set(r,{chainTarget:n.chainTarget,targetKey:r,keyHandle:i||o,...n.key||a?.key?{key:n.key||a?.key}:{},...u?{passkeyCredentialIdB64u:u}:{},...d?{existingRoleLocalMaterial:d}:{},publicCapability:l?{kind:`persisted_public_capability`,value:l}:{kind:`missing_public_capability`}})}return[...t.values()]}function iy(e,t){return{ecdsaKeys:ry({source:`stored/relay`,keys:[...e.ecdsaKeys,...t?.ecdsaKeys||[]]}),...t?.runtimePolicyScope?{runtimePolicyScope:t.runtimePolicyScope}:e.runtimePolicyScope?{runtimePolicyScope:e.runtimePolicyScope}:{}}}function ay(e){if(!e.configuredTargets.length)return{kind:`complete_configured_target_keys`,context:e.context};let t=new Map;for(let n of e.context.ecdsaKeys)t.set(n.targetKey,n);let n=e.configuredTargets.map(e=>B(e.chainTarget)).filter(e=>!t.has(e));if(n.length)return{kind:`missing_configured_target_keys`,missingTargets:n};let r={ecdsaKeys:ry({source:`configured ECDSA target completion`,keys:[...t.values()]}),...e.context.runtimePolicyScope?{runtimePolicyScope:e.context.runtimePolicyScope}:{}},i=e.configuredTargets.filter(e=>!r.ecdsaKeys.some(t=>t.targetKey===B(e.chainTarget)));return i.length?{kind:`missing_configured_target_keys`,missingTargets:i.map(e=>B(e.chainTarget))}:{kind:`complete_configured_target_keys`,context:r}}function oy(e){switch(e.completion.kind){case`complete_configured_target_keys`:return e.completion.context;case`missing_configured_target_keys`:throw Error(`[login] threshold ECDSA warm-up could not resolve configured target key facts from ${e.source} for ${e.completion.missingTargets.join(`, `)}`)}throw e.completion,Error(`[login] unsupported ECDSA warm-up key completion state`)}function sy(e){let t=new Map;for(let n of e){let e=`${n.targetKey}:${n.keyHandle}`;t.set(e,{keyHandle:n.keyHandle,chainTarget:n.chainTarget})}return[...t.values()]}function cy(e){if(!Qv(e.selection)||e.configuredTargets.length===0)return{kind:`no_configured_ecdsa_targets`};let t=[...e.blockedRecords||[]],n=ty(e.activeSignerRecords);for(let e of n.values())e.kind===`blocked`&&t.push(e);if(t.length)return{kind:`blocked`,blockedRecords:t};let r=new Map;for(let t of e.keyFactsInventoryRequiredRecords||[])r.set(t.targetKey,t);let i=[],a=[];for(let t of e.configuredTargets){let e=B(t),o=n.get(e);if(o?.kind===`active_ecdsa_signer_record`){a.push({targetKey:e,chainTarget:t,walletKey:o.walletKey,publicCapability:o.publicCapability});continue}let s=r.get(e);if(s){i.push(s);continue}i.push({kind:`key_facts_inventory_required`,targetKey:e,chainTarget:t,keyHandle:``,reason:`missing_key_facts`})}if(i.length===0)return{kind:`ready`,readyTargets:a};let o=i.filter(e=>String(e.keyHandle||``).trim()),s=e.runtimeConfig?.explicitKeyFactsInventoryMode??e.explicitKeyFactsInventoryMode,c=e.runtimeConfig?.allowAuthenticatedKeyFactsInventory??e.allowAuthenticatedKeyFactsInventory;return s===!0&&c===!0&&o.length===i.length?{kind:`awaiting_authenticated_key_facts_inventory`,keyFactsInventoryRequiredRecords:o,keyTargets:sy(o)}:{kind:`key_facts_inventory_required`,keyFactsInventoryRequiredRecords:i}}async function ly(e){let t=e.authenticators.map(e=>{let t=String(e.credentialId||``).trim();return t?{id:t,type:`public-key`,transports:Array.isArray(e.transports)?e.transports:[]}:null}).filter(e=>!!e);e.onPromptStarted();let n=await e.signingEngine.getAuthenticationCredentialsSerialized({subjectId:e.subjectId,challengeB64u:e.challengeB64u,allowCredentials:t,includeSecondPrfOutput:!1});return e.onPromptSucceeded(),n}function uy(){if(typeof crypto>`u`||typeof crypto.getRandomValues!=`function`)throw Error(`Secure random is unavailable for passkey wallet unlock`);let e=new Uint8Array(32);return crypto.getRandomValues(e),P(e)}async function dy(e){if(!e.currentCredential)return await e.collectCredentialForChallenge(uy())}const fy=new js;async function py(e){let t=await fy.listActiveWalletCapabilitySubjects(e);if(t.kind===`persistence_unavailable`)return{kind:`failed`,reason:`capability_subject_lookup_failed`};if(t.kind===`invalid_current_state`)return{kind:`failed`,reason:`invalid_capability_subject`};let n=[];for(let r of t.subjects)n.push({kind:`evm_family_ecdsa_wallet`,walletId:e,capability:r.capability,authority:r.authority,ecdsaThresholdKeyId:r.ecdsaThresholdKeyId});return{kind:`resolved`,subjects:n}}async function my(e){return await fy.listWalletActivationJournalSelectors(e)}function hy(e,t){let n=e?.[t];if(typeof n!=`string`||!n.trim())throw Error(`wallet unlock signer metadata requires ${t}`);return n.trim()}function gy(e,t){try{let n=String(t.metadata?.walletId||``).trim();if(n&&n!==String(e))return{kind:`invalid`};let r=Vs(t.signerSlot);return r?{kind:`valid`,subject:{kind:`near_ed25519_wallet`,walletId:e,nearAccountId:kr(hy(t.metadata,`nearAccountId`)),nearEd25519SigningKeyId:Ko(hy(t.metadata,`nearEd25519SigningKeyId`)),signerSlot:r}}:{kind:`invalid`}}catch{return{kind:`invalid`}}}async function _y(e){let t=[],n;try{n=await K.listActiveWalletSigners({walletId:e,signerFamily:`ed25519`})}catch{return{kind:`failed`,reason:`capability_subject_lookup_failed`}}for(let r of n){let n=gy(e,r);if(n.kind!==`valid`)return{kind:`failed`,reason:`invalid_capability_subject`};t.push(n.subject)}return{kind:`resolved`,subjects:t}}function vy(e){switch(e.kind){case`near_ed25519_wallet`:return[e.kind,e.walletId,e.nearAccountId,e.nearEd25519SigningKeyId,e.signerSlot].join(`\0`);case`evm_family_ecdsa_wallet`:return[e.kind,e.walletId,e.capability,e.authority.authorityDigest,e.ecdsaThresholdKeyId].join(`\0`)}return``}function yy(e,t){for(let n of e)if(vy(n)===t)return!0;return!1}function by(e,t){yy(e,vy(t))||e.push(t)}function xy(e){return e.kind===`near_ed25519_wallet`}function Sy(e){let t=String(e||``).trim();if(!t)return null;try{return z(t)}catch{return null}}function Cy(e){return String(e||``).trim()||null}function wy(e){let t=Cy(e?.profileId);return t?{kind:`last_used_profile`,profileId:t}:{kind:`none`}}async function Ty(){return wy(await K.getLastProfileState().catch(()=>null))}async function Ey(e){let t=Sy(e);return t?{kind:`explicit_wallet`,walletId:t}:e?{kind:`none`}:await Ty()}function Dy(e){let t=String(e.metadata?.walletId||``).trim();if(!t)return null;try{return z(t)}catch{return null}}function Oy(e){let t=[],n=new Set;for(let r of e){let e=Dy(r);if(!e)return{kind:`invalid`};let i=String(e);n.has(i)||(n.add(i),t.push(e))}return{kind:`resolved`,walletIds:t}}async function ky(e){let t;try{t=await K.getProfile(e)}catch{return{kind:`unresolvable_profile`,reason:`capability_subject_lookup_failed`}}if(!t)return{kind:`unresolvable_profile`,reason:`missing_wallet_profile`};let n;try{n=await K.listAccountSignersByProfile({profileId:e,status:`active`})}catch{return{kind:`unresolvable_profile`,reason:`capability_subject_lookup_failed`}}if(n.length===0)return{kind:`unresolvable_profile`,reason:`missing_requested_capability_subject`};let r=Oy(n);if(r.kind===`invalid`)return{kind:`unresolvable_profile`,reason:`invalid_wallet_profile`};let i=r.walletIds;return i.length===0?{kind:`unresolvable_profile`,reason:`invalid_wallet_profile`}:i.length>1?{kind:`unresolvable_profile`,reason:`ambiguous_wallet_profile`}:{kind:`resolved_wallet`,walletId:i[0]}}function Ay(e,t){let n=t[0];return n?{kind:`resolved`,subjectSet:{kind:`wallet_unlock_subject_set`,walletId:e,subjects:[n,...t.slice(1)]}}:{kind:`missing_requested_capability_subject`}}function jy(e){return e.subjects.filter(xy).length>1?`ambiguous_wallet_profile`:null}async function My(e){let t=z(e.walletId),n=[];switch(e.requestedCapabilityFamilies.kind){case`near_ed25519_only`:case`all_registered_mpc`:{let r=await _y(t);if(r.kind===`failed`)return{kind:`capability_subject_resolution_failed`,reason:r.reason};for(let e of r.subjects)by(n,e);if(e.requestedCapabilityFamilies.kind===`near_ed25519_only`)return Ay(t,n);break}case`evm_family_ecdsa_only`:break;default:e.requestedCapabilityFamilies}let r=await py(t);if(r.kind===`failed`)return{kind:`capability_subject_resolution_failed`,reason:r.reason};for(let e of r.subjects)by(n,e);return Ay(t,n)}async function Ny(e){let t=await Ey(e);if(t.kind===`none`)return{kind:`no_session_request`};let n,r;if(t.kind===`last_used_profile`){let e=await ky(t.profileId);if(e.kind===`unresolvable_profile`)return{kind:`unresolvable_profile`,profileId:t.profileId,reason:e.reason};n=e.walletId,r=`host_last_used_profile`}else n=t.walletId,r=`profile_projection`;let i=await My({walletId:String(n),requestedCapabilityFamilies:{kind:`all_registered_mpc`}});if(i.kind===`missing_requested_capability_subject`)return{kind:`no_session_for_wallet`,walletId:n,reason:`missing_requested_capability_subject`};if(i.kind===`capability_subject_resolution_failed`)return{kind:`unresolvable`,walletId:n,reason:i.reason};let a=i.subjectSet,o=jy(a);return o?{kind:`unresolvable`,walletId:n,reason:o}:{kind:`resolved`,walletId:n,subjectSet:a,source:r}}function Py(e,t){return globalThis.fetch(e,t)}function Fy(e){switch(e?.mode){case`ed25519_only`:return{mode:`ed25519_only`,ed25519:!0};case`ecdsa_only`:return{mode:`ecdsa_only`,ecdsa:!0};case`ed25519_and_ecdsa`:case void 0:return{mode:`ed25519_and_ecdsa`,ed25519:!0,ecdsa:!0}}return Q(e)}function Iy(e){if(e.selection)return Fy(e.selection);let t=!1,n=!1;for(let r of e.subjectSet.subjects)switch(r.kind){case`near_ed25519_wallet`:t=!0;break;case`evm_family_ecdsa_wallet`:n=!0;break;default:return Q(r)}if(t&&n)return{mode:`ed25519_and_ecdsa`,ed25519:!0,ecdsa:!0};if(t)return{mode:`ed25519_only`,ed25519:!0};if(n)return{mode:`ecdsa_only`,ecdsa:!0};throw Error(`[login] wallet unlock subject set has no supported capability`)}function Ly(e){return e.kind===`near_ed25519_wallet`}function Ry(e){return e.kind===`evm_family_ecdsa_wallet`}function zy(e){let t=e.subjects.filter(Ly);if(t.length===0)return null;if(t.length>1)throw Error(`[WalletSession] multiple NEAR Ed25519 subjects found for wallet session`);return t[0]||null}function By(e){let t=zy(e.subjectSet),n=e.subjectSet.subjects.filter(Ry);for(let t of e.subjectSet.subjects)if(String(t.walletId)!==String(e.subjectSet.walletId))throw Error(`[login] wallet unlock subject belongs to a different wallet`);switch(e.selection.mode){case`ed25519_only`:if(!t||n.length!==0)throw Error(`[login] NEAR Ed25519 unlock requires one exact NEAR subject set`);return{kind:`near_ed25519_capable_wallet`,walletId:e.subjectSet.walletId,subjectSet:e.subjectSet,nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,signerSlot:t.signerSlot};case`ecdsa_only`:{let[r,...i]=n;if(t||!r)throw Error(`[login] ECDSA-only unlock requires exact ECDSA subjects`);return{kind:`evm_family_ecdsa_only_wallet`,walletId:e.subjectSet.walletId,subjectSet:e.subjectSet,ecdsaSubjects:[r,...i]}}case`ed25519_and_ecdsa`:if(!t||n.length===0)throw Error(`[login] combined unlock requires exact NEAR and ECDSA subjects`);return{kind:`near_ed25519_capable_wallet`,walletId:e.subjectSet.walletId,subjectSet:e.subjectSet,nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,signerSlot:t.signerSlot}}return Q(e.selection)}function Vy(e){if(e.kind===`near_ed25519_capable_wallet`)return e;throw Error(`[login] NEAR Ed25519 warm-up requires an exact NEAR subject`)}function Hy(e){let t=new Set;for(let n of e.identity.subjectSet.subjects)n.kind===`evm_family_ecdsa_wallet`&&t.add(String(n.ecdsaThresholdKeyId));if(t.size===0)throw Error(`[login] ECDSA warm-up requires an exact ECDSA unlock subject`);for(let n of e.context.ecdsaKeys){let e=String(n.key?.ecdsaThresholdKeyId||``).trim();if(e&&!t.has(e))throw Error(`[login] ECDSA warm-up key does not match the unlock subject set`)}}function Uy(e){let t=[];for(let n of e.subjects)n.kind===`evm_family_ecdsa_wallet`&&t.push({capability:n.capability,authority:n.authority});return t}async function Wy(e){let t=!1,n=!1;for(let r of e.selectors){let i=await vu({workerCtx:e.workerCtx,command:{kind:`reconcile_canonical_ecdsa_activation_v1`,capability:r.capability,authority:r.authority}});switch(i.kind){case`canonical_ecdsa_activation_reconciliation_absent_v1`:break;case`canonical_ecdsa_activation_reconciliation_finalized_v1`:t=!0;break;case`canonical_ecdsa_activation_reconciliation_pending_v1`:n=!0;break;case`canonical_ecdsa_activation_reconciliation_failed_v1`:return{kind:`failed`,didFinalize:t,code:i.code};default:Q(i)}}return n?{kind:`pending`,didFinalize:t}:{kind:`settled`,didFinalize:t}}function Gy(e){switch(e.kind){case`settled`:return;case`pending`:console.warn(`[login] ECDSA activation remains prepared and requires confirmation`);return;case`failed`:console.warn(`[login] ECDSA activation reconciliation failed without changing active state`,{code:e.code});return}Q(e)}function Ky(e){let t=No({walletId:e.walletId});switch(e.kind){case`passkey`:{let n=ko(e.rpId);return n.ok?Oo({walletAuthMethodId:e.walletAuthMethodId,scope:Lo({wallet:t,rpId:n.value}),credentialIdB64u:e.credentialIdB64u}):null}case`email_otp`:return Io({walletAuthMethodId:e.walletAuthMethodId,wallet:t,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId});default:return null}}function qy(e){return{walletId:e.walletId,factor:{kind:`passkey`,credentialIdB64u:e.credentialIdB64u},verifier:{kind:`webauthn`,rpId:e.rpId},bindingId:e.walletAuthMethodId}}async function Jy(e){return await U({authority:qy(e)})}async function Yy(e){let t=za({walletId:e.authMethod.walletId,factor:{kind:`email_otp`,provider:e.provider,providerUserId:e.providerSubjectId},verifier:{kind:`email_otp_wallet_auth_method`,emailHashHex:e.authMethod.emailHashHex},bindingId:e.authMethod.walletAuthMethodId});if(!t)throw Error(`[login] linked Email OTP provider identity does not match selected authority`);return t}async function Xy(e){if(e.selection.authMethod.kind===`passkey`)return qy(e.selection.authMethod);let t=e.providerIdentity;if(!t)throw Error(`[login] linked Email OTP authority provider identity is missing`);return await Yy({authMethod:e.selection.authMethod,provider:t.provider,providerSubjectId:t.providerSubjectId})}async function Zy(e){return await U({authority:await Xy(e)})}function Qy(e,t,n,r){let i=null;for(let a of e)if(!(a.authorityId!==t||a.walletAuthMethodId!==n||a.activationId!==r.activationId)){if(i)return null;i=a}return i}function $y(e){let t=[];return e.selection.walletId!==e.walletId&&t.push(`selection_wallet_id`),!e.allowUnselectedSibling&&e.selection.walletAuthMethodId!==e.authMethod.walletAuthMethodId&&t.push(`selection_auth_method_id`),e.authMethod.walletId!==e.walletId&&t.push(`auth_method_wallet_id`),e.authMethod.status!==`active`&&t.push(`auth_method_inactive`),e.expectedKind&&e.authMethod.kind!==e.expectedKind&&t.push(`auth_method_not_${e.expectedKind}`),e.authority.walletId!==e.walletId&&t.push(`authority_wallet_id`),e.authority.state!==`active`&&t.push(`authority_inactive`),e.authority.authorityId!==e.authMethod.walletAuthorityId&&t.push(`authority_auth_method_id`),t}async function eb(e){let t=o(e);if(!t.ok)return null;let n=t.value;try{let e=await K.resolveSelectedWalletAuthority(String(n));if(e.kind!==`resolved`)return null;let{selection:t,authMethod:r,authority:i}=e;return $y({walletId:n,selection:t,authMethod:r,authority:i,expectedKind:`passkey`}).length>0||r.status!==`active`||r.kind!==`passkey`||i.state!==`active`||i.provenance.kind!==`device_link`?null:{kind:`linked_device_passkey_authority_selection_v1`,walletId:n,selection:t,authMethod:r,authority:i,signerMaterials:e.signerMaterials,exportRoot:e.exportRoot}}catch{return null}}async function tb(e){let t=o(e.walletIdInput),n=String(e.emailHashHex||``).trim().toLowerCase(),r=String(e.providerSubjectId||``).trim();if(!t.ok||!n||!r)return{kind:`none`};let i=t.value,a;try{a=e.walletAuthMethodId?await K.resolveWalletAuthorityForMethod(String(i),e.walletAuthMethodId):await K.resolveSelectedWalletAuthority(String(i))}catch(e){return{kind:`rejected`,message:e instanceof Error?e.message:`Selected Email OTP authority is unavailable`}}if(a.kind===`missing_selection`)return{kind:`none`};if(a.kind!==`resolved`)return{kind:`rejected`,message:`Selected Email OTP authority is unavailable`};let{selection:s,authMethod:c,authority:l}=a;if(c.kind!==`email_otp`)return{kind:`none`};if($y({walletId:i,selection:s,authMethod:c,authority:l,expectedKind:`email_otp`,allowUnselectedSibling:!!e.walletAuthMethodId}).length>0||c.emailHashHex.toLowerCase()!==n)return{kind:`rejected`,message:`Selected Email OTP authority is inactive or does not match the verified email`};if(c.status!==`active`||l.state!==`active`)return{kind:`rejected`,message:`Selected Email OTP authority is inactive`};try{await Yy({authMethod:c,provider:e.provider,providerSubjectId:r})}catch(e){return{kind:`rejected`,message:e instanceof Error?e.message:`Selected Email OTP provider identity does not match the local authority`}}return l.provenance.kind===`device_link`&&a.signerMaterials.length===0?{kind:`rejected`,message:`Selected linked Email OTP authority has no signer material`}:a.signerMaterials.some(e=>e.kind!==`wallet_authority_linked_signer_material_v1`)?{kind:`rejected`,message:`Selected Email OTP authority has an invalid linked signer material set`}:{kind:`selected`,selection:{kind:`linked_device_email_otp_authority_selection_v1`,walletId:i,selection:s,authMethod:c,authority:l,signerMaterials:a.signerMaterials,exportRoot:a.exportRoot}}}function nb(e,t){let n=t.keyFamily===`ed25519`?e.signerActivations.ed25519:e.signerActivations.ecdsa;if(!n)throw Error(`[login] linked Wallet Session requested unavailable ${t.keyFamily} material`);if(!b(n.materialActivation,t.materialActivation))throw Error(`[login] linked Wallet Session material activation does not match authority`);return n.materialActivation}function rb(e,t){if(t.walletId!==e.walletId||t.authorityId!==e.authority.authorityId||t.authMethodId!==e.authMethod.walletAuthMethodId||t.authorityDigestB64u!==e.authority.authorityDigestB64u||t.authorityRevocationEpoch!==e.authority.revocationEpoch)throw Error(`[login] linked Wallet Session identity does not match selected authority`);for(let n of t.capabilitySubjects)switch(n.kind){case`sign`:case`export_keys`:{let t=nb(e.authority,n),r=Qy(e.signerMaterials,e.authority.authorityId,e.authMethod.walletAuthMethodId,t);if(!r||r.keyFamily!==n.keyFamily)throw Error(`[login] linked Wallet Session signer material is unavailable`);if(!b(r.materialActivation,n.materialActivation))throw Error(`[login] linked Wallet Session signer material activation is invalid`);break}case`link_devices`:case`revoke_devices`:break;default:return Q(n)}}function ib(e,t){let n=e.targetFactor;if(n.kind!==`passkey`||n.walletAuthMethodId!==t.authMethod.walletAuthMethodId||n.rpId!==t.authMethod.rpId||n.credentialIdB64u!==t.authMethod.credentialIdB64u)throw Error(`[login] linked passkey signer material target factor does not match V2 auth`)}async function ab(e){let t=tr(e.credential);if(!t)throw Error(`[login] linked passkey unlock requires WebAuthn PRF.first output`);let n;try{n=F(t)}catch{throw Error(`[login] linked passkey unlock returned an invalid PRF.first output`)}try{if(n.byteLength!==32)throw Error(`[login] linked passkey unlock requires a 32-byte PRF.first output`);return await ob({selection:e.selection,factorSecret32:n})}finally{n.fill(0)}}async function ob(e){if(e.factorSecret32.byteLength!==32)throw Error(`[login] linked signer material requires a 32-byte factor secret`);let t=e.factorSecret32.slice();try{let n=[];for(let r of e.selection.signerMaterials){if(r.kind!==`wallet_authority_linked_signer_material_v1`)throw Error(`[login] linked signer material is not a linked sealed record`);e.selection.kind===`linked_device_passkey_authority_selection_v1`?ib(r,e.selection):sb(r,e.selection);let i=await Ts({record:r,factorSecret:t,expected:{authorityId:e.selection.authority.authorityId,walletId:e.selection.walletId,walletAuthMethodId:e.selection.authMethod.walletAuthMethodId,packageSetDigestB64u:r.packageSetDigestB64u,targetFactor:r.targetFactor,materialActivation:r.materialActivation,keyFamily:r.keyFamily}});if(i.kind!==`opened_wallet_authority_linked_signer_material_v1`)throw Error(`[login] linked signer material open failed: ${i.reason}`);n.push(i)}let[r,...i]=n;if(!r)throw Error(`[login] linked signer material set is empty`);return[r,...i]}finally{t.fill(0)}}function sb(e,t){let n=e.targetFactor;if(n.kind!==`email_otp`||n.walletAuthMethodId!==t.authMethod.walletAuthMethodId||n.emailHashHex.toLowerCase()!==t.authMethod.emailHashHex.toLowerCase()||n.registrationAuthorityId!==t.authMethod.registrationAuthorityId)throw Error(`[login] linked Email OTP signer material target factor does not match V2 auth`)}async function cb(e){if(e.factorSecret32.byteLength!==32)throw Error(`[login] linked Email OTP unlock requires a 32-byte factor secret`);return await ob({selection:e.selection,factorSecret32:e.factorSecret32})}function lb(e){let t=String(e.walletId||``).trim();if(!t)throw Error(`[login] recent unlock account is missing walletId`);let n=String(e.loginDisplayName||``).trim()||t;return{walletId:t,nearAccountId:e.nearAccountId,displayName:n,signerSlot:e.signerSlot,...typeof e.lastLogin==`number`?{lastLogin:e.lastLogin}:{},authMethod:e.authMethod||null}}async function ub(e){let t=await K.resolveSelectedWalletAuthority(String(e.walletId)).catch(()=>null);if(!t||t.kind!==`resolved`||t.selection.walletAuthMethodId!==e.walletAuthMethodId||t.authMethod.status!==`active`||t.authority.state!==`active`||t.authority.provenance.kind!==`device_link`)return null;let n=await Jb({walletId:e.walletId,authMethod:t.authMethod,authority:t.authority,signerMaterials:t.signerMaterials});if(n.kind!==`resolved`)return null;let r;switch(t.authMethod.kind){case H.passkey:r=H.passkey;break;case H.emailOtp:r=H.emailOtp;break;default:return Q(t.authMethod)}return{walletId:String(e.walletId),nearAccountId:n.subject.nearAccountId,displayName:String(e.walletId),signerSlot:n.subject.signerSlot,lastLogin:e.updatedAtMs,authMethod:r}}function db(e){return`${e.walletId}:${e.authMethod??``}`}function fb(e){let t=null;for(let n of e)(!t||(n.lastLogin??0)>(t.lastLogin??0))&&(t=n);return t}async function pb(e){return e?(await K.listWalletAuthMethodsV2ForWallet(String(e)).catch(()=>[])).filter(e=>e.status===`active`).map(Ky).filter(e=>!!e):[]}function mb(e){if(e.authMethod===H.passkey)return null;if(e.authMethod!==H.emailOtp)throw Error(`[login] unsupported wallet auth method for warm-up: ${e.authMethod}`);let t=e.authMethods.filter(e=>e.kind===`email_otp`);if(t.length!==1)throw Error(`[login] Email OTP warm-up requires one active wallet auth-method binding`);let n=t[0];if(String(n.wallet.walletId)!==String(e.walletId))throw Error(`[login] Email OTP warm-up auth-method binding wallet mismatch`);return n}async function hb(e){return mb({authMethods:await pb(e.walletId),authMethod:e.authMethod,walletId:e.walletId})}async function gb(e){let[t,n]=await Promise.all([K.listWalletPasskeyAuthenticators(String(e)),K.listWalletAuthMethodsV2ForWallet(String(e)).catch(()=>[])]),r=new Set;for(let e of n)e.kind===`passkey`&&e.status===`active`&&r.add(e.credentialIdB64u);return t.filter(e=>r.has(e.credentialId))}function _b(e){return e?.status===`active`}function vb(e){if(!e.request)return null;switch(e.request.mode){case`wallet_session_operation_credential_v1`:try{return{kind:`wallet_session_operation_credential_v1`,operationCredential:yb(e.request.operationCredential)}}catch{return null}case`webauthn`:return{kind:`webauthn`}}return null}function yb(e){if(e.kind===`opaque_wallet_session_operation_credential_v1`)return st(e);if(e.kind!==`opaque_hosted_wallet_session_operation_credential_v1`||!/^wsh_[A-Za-z0-9_-]{43}$/.test(e.token))throw Error(`Hosted Wallet Session operation credential is invalid`);let t=pt(e.walletSessionId);if(!t.ok)throw Error(`Hosted Wallet Session ID is invalid: ${t.error.message}`);return{kind:e.kind,home:ct(e.home),token:e.token,walletSessionId:t.value}}function bb(){return{kind:`none`}}function xb(e){return String(e.authenticators.find(t=>t.signerSlot===e.signerSlot)?.credentialId||e.authenticators[0]?.credentialId||``).trim()}function Sb(e){return Va({walletId:e.walletId,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u})}function Cb(e){if(!e.wantsEd25519Warmup)return{kind:`not_requested`};if(e.authMethod===H.passkey)return{kind:`passkey`,authority:{kind:`wallet_auth_authority`,authority:Sb({walletId:e.walletId,rpId:e.rpId,credentialIdB64u:e.passkeyCredentialIdB64u})},source:`login`};throw e.authMethod===H.emailOtp?Error(`[login] Email OTP warm-up requires its proof-bound unlock flow`):Error(`[login] unsupported wallet auth method for Ed25519 warm-up: ${e.authMethod}`)}function wb(e){if(e.kind===`not_requested`)throw Error(`[login] threshold Ed25519 warm-up authority is missing`);return e}function Tb(e){return e.authority.kind===`email_otp`?e.authority:{kind:`passkey`,authority:{kind:`wallet_auth_authority`,authority:Sb({walletId:e.walletId,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u})},source:`login`}}function Eb(e){switch(e.kind){case`passkey`:return{kind:`passkey`,rpId:Ha(e.authority.authority.verifier.rpId),credentialIdB64u:String(e.authority.authority.factor.credentialIdB64u||``).trim()};case`email_otp`:return{kind:`email_otp`,providerSubjectId:String(e.authority.authority.factor.providerUserId||``).trim()}}throw Error(`[login] unsupported Ed25519 exact provision authority`)}function Db(e){return Qc({signer:Vc({walletId:e.walletBinding.walletId,nearAccountId:e.walletBinding.nearAccountId,nearEd25519SigningKeyId:e.walletBinding.nearEd25519SigningKeyId,signerSlot:e.signerSlot}),auth:Eb(e.authority),walletSessionId:e.walletSessionId,quotaId:e.quotaId,thresholdSessionId:e.thresholdSessionId})}function Ob(e){switch(e.mintPlan.kind){case`not_requested`:throw Error(`[login] threshold Ed25519 mint plan is missing`);case`wallet_custody`:return e.ecdsaMint?{kind:`exact_ed25519_provisioning`,operationCredential:e.ecdsaMint.operationCredential,laneIdentity:Db({walletBinding:e.walletBinding,signerSlot:e.signerSlot,thresholdSessionId:e.mintPlan.thresholdSessionId,walletSessionId:e.ecdsaMint.operationCredential.walletSessionId,quotaId:e.ecdsaMint.quotaId,authority:e.authority})}:{kind:`fresh_ed25519_provisioning`,materialActivation:e.mintPlan.custody.ed25519.capability.materialActivation};case`fresh`:throw Error(`[login] fresh Ed25519 passkey provisioning requires canonical material activation`);case`ecdsa_authorized`:if(!e.ecdsaMint)throw Error(`[login] threshold Ed25519 warm-up requires the ECDSA bootstrap session minted during unlock`);return{kind:`exact_ed25519_provisioning`,operationCredential:e.ecdsaMint.operationCredential,laneIdentity:Db({walletBinding:e.walletBinding,signerSlot:e.signerSlot,thresholdSessionId:e.mintPlan.thresholdSessionId,walletSessionId:e.ecdsaMint.operationCredential.walletSessionId,quotaId:e.ecdsaMint.quotaId,authority:e.authority})}}return Q(e.mintPlan)}function kb(e,t){if(e.kind===`fresh_ed25519_provisioning`&&e.materialActivation)return e.materialActivation;if(t.kind===`wallet_custody`)return t.custody.ed25519.capability.materialActivation;throw Error(`[login] passkey Ed25519 warm-up requires a canonical material activation`)}function Ab(e){return e.mintPlan.kind===`wallet_custody`?{relayerKeyId:e.mintPlan.custody.ed25519.relayerKeyId,participantIds:e.mintPlan.custody.ed25519.participantIds,runtimePolicyScope:e.mintPlan.custody.ed25519.capability.runtimePolicyScope,routerAbNormalSigning:e.fallback.routerAbNormalSigning}:e.fallback}function jb(e){let t=e.session,n=e.custody.ed25519,r=e.credential?tr(e.credential):``;if(t.walletId!==String(e.walletBinding.walletId)||t.nearAccountId!==String(e.walletBinding.nearAccountId)||t.nearEd25519SigningKeyId!==String(e.walletBinding.nearEd25519SigningKeyId)||n.signerSlot!==e.signerSlot||t.relayerKeyId!==e.provisionScope.relayerKeyId||t.thresholdSessionId!==n.capability.lifecycle.thresholdSessionId||t.remainingUses!==e.remainingUses||!Ux(t.participantIds,e.provisionScope.participantIds)||!e.provisionScope.runtimePolicyScope||!Gx(t.runtimePolicyScope,e.provisionScope.runtimePolicyScope)||!Wx(t.routerAbNormalSigning,e.provisionScope.routerAbNormalSigning)||!r)throw Error(`[login] verified unlock returned an invalid Ed25519 Wallet Session`);switch(t.sessionKind){case`issued_exact_wallet_session`:if(t.operationCredential.walletSessionId!==t.walletSessionId)throw Error(`[login] verified unlock returned a mismatched Ed25519 credential`);return{ok:!0,...t,passkeyPrfFirstB64u:r};case`already_committed_exact_wallet_session`:{let n=e.unlockAuthorization;if(!n)throw Error(`[login] verified unlock reused an Ed25519 Wallet Session without its authorization`);if(n.operationCredential.walletSessionId!==t.walletSessionId||n.record.walletId!==t.walletId||n.record.authorizationId!==t.authorizationId||n.record.quotaId!==t.quotaId||n.record.expiresAtMs!==t.expiresAtMs)throw Error(`[login] verified unlock reused a mismatched Ed25519 Wallet Session`);return{ok:!0,...t,operationCredential:n.operationCredential,passkeyPrfFirstB64u:r}}default:return Q(t)}}function Mb(e){return e.hasLoginCredential?{kind:`passkey_credential_already_collected`}:e.requiresLocalPasskeyUnlock?e.requireThresholdWarmup?{kind:`wallet_unlock_owns_passkey_credential`}:{kind:`local_unlock_passkey_assertion`}:{kind:`no_local_passkey_required`}}function Nb(e){if(e.warmupPlan.signersToWarm.includes(`ed25519`)&&e.requiresLocalPasskeyUnlock)return{kind:`wallet_custody`};if(e.hasLoginCredential)return{kind:`existing_passkey_credential`};if(e.routeAuthorization.kind,e.requiresLocalPasskeyUnlock)throw Error(`[login] passkey warm-up requires the verified wallet-unlock credential`);return{kind:`no_passkey_credential_required`}}function Pb(e){if(!e.credentialIds)return e.authenticators;let t=new Set;for(let n of e.credentialIds)t.add(n.trim());let n=[];for(let r of e.authenticators)t.has(String(r.credentialId||``).trim())&&n.push(r);if(!n.length)throw Error(`[login] no local authenticator matches the required credential`);return n}function Fb(e){let t=[],n=new Set;for(let r of e){let e=String(r.credentialId||``).trim();!e||n.has(e)||(n.add(e),t.push(e))}return t}function Ib(e){if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){let e=typeof r==`string`?r.trim():``;!e||n.has(e)||(n.add(e),t.push(e))}return t}function Lb(e){let t=[];for(let n of e.authenticators)n.signerSlot===e.signerSlot&&t.push(n);let n=Fb(t.length>0?t:e.authenticators);if(n.length===0)throw Error(`[login] selected wallet has no local passkey credential ID`);if(e.serverCredentialIds.length===0)return n;let r=new Set(e.serverCredentialIds),i=[];for(let e of n)r.has(e)&&i.push(e);if(i.length===0)throw Error(`[login] server passkey allow-list does not match local wallet credentials`);return i}function Rb(e){let t=By({subjectSet:e.subjectSet,selection:e.selection});switch(e.selection.mode){case`ed25519_only`:return{kind:`near_ed25519_only`,wantsEd25519Warmup:!0,wantsEcdsaWarmup:!1};case`ecdsa_only`:if(t.kind!==`evm_family_ecdsa_only_wallet`)throw Error(`[login] ECDSA-only warm-up requires exact ECDSA subjects`);return{kind:`evm_family_ecdsa_only`,wantsEd25519Warmup:!1,wantsEcdsaWarmup:e.hasConfiguredEcdsaTargets};case`ed25519_and_ecdsa`:return{kind:`near_ed25519_and_evm_family_ecdsa`,wantsEd25519Warmup:!0,wantsEcdsaWarmup:e.hasConfiguredEcdsaTargets}}return Q(e.selection)}function zb(e){let t=String(e.context.configs?.network.relayer?.url||``).trim();if(!t)throw Error(`[login] threshold warm session requires relayer.url to be configured`);let n=cr(e.context.configs.network.chains),r=Rb({subjectSet:e.subjectSet,selection:e.selection,hasConfiguredEcdsaTargets:n.length>0}),i=r.wantsEcdsaWarmup,a=r.wantsEd25519Warmup,o=String(e.context.signingEngine.getRpId()||``).trim();return{kind:`threshold_login_warmup_phase_input`,signerSlot:e.signerSlot,selection:e.selection,relayerUrl:t,rpId:o,configuredEcdsaTargets:n,selectedEcdsaTargets:i?n:[],wantsEd25519Warmup:a,wantsEcdsaWarmup:i,ed25519SessionAuthority:Cb({wantsEd25519Warmup:a,authMethod:e.authMethod,walletId:e.subjectSet.walletId,rpId:o,passkeyCredentialIdB64u:xb({authenticators:e.authenticators,signerSlot:e.signerSlot}),routeAuthorization:e.routeAuthorization}),keyFactsInventoryAuthority:e.keyFactsInventoryAuthority,routeAuthorization:e.routeAuthorization}}async function Bb(e){let t=[...e.signersWarmed.includes(`ed25519`)?[{curve:`ed25519`}]:[],...e.signersWarmed.includes(`ecdsa`)?cr(e.context.configs.network.chains).map(e=>({curve:`ecdsa`,chainTarget:e.chainTarget})):[]],n=ar(e.credential);if(!n)throw Error(`[login] runtime lane selection requires the authenticated credential`);let r=String(e.walletIdentity.walletId),i=await K.getWalletPasskeyAuthenticator({walletId:r,credentialId:n}),a=Vs(i?.signerSlot,{min:1});if(!i||a===null)throw Error(`[login] authenticated credential resolves no exact local authenticator for its signer slot`);let o={auth:{kind:`passkey`,rpId:Ha(e.context.signingEngine.getRpId()),credentialIdB64u:n},signerSlot:a};t.length!==0&&await Hv({source:`wallet_unlock`,walletId:String(e.walletIdentity.walletId),ownerScope:o,requiredTargets:t,readOwnerScopedSigningLanes:async t=>await e.context.signingEngine.readOwnerScopedSigningLanes(t,e.statusReads)})}async function Vb(e){let t=ar(e.credential);if(!t)throw Error(`[login] successful Passkey unlock omitted its credential identity`);let n=await kt({walletId:e.walletIdentity.walletId,rpId:e.context.signingEngine.getRpId(),credentialIdB64u:t});await e.context.signingEngine.markWalletSelectionUnlocked({walletId:e.walletIdentity.walletId,walletAuthMethodId:n.walletAuthMethodId})}function Hb(e){if(e.userData&&String(e.userData.walletId)!==String(e.walletId))throw Error(`[login] NEAR account projection belongs to a different wallet`);let t=typeof e.userData?.operationalPublicKey==`string`?e.userData.operationalPublicKey.trim():``;return{kind:`near_wallet`,walletId:e.walletId,operationalPublicKey:t||null}}async function Ub(e){R(e.onEvent,String(e.identity.nearAccountId),{phase:G.STEP_02_ACCOUNT_LOOKUP_STARTED,status:`running`,authMethod:`passkey`});let t=e.signerSlotHint===null?Promise.resolve(null):e.signingEngine.getUserBySignerSlot(e.identity.nearAccountId,e.signerSlotHint).catch(()=>null),[n,r,i,a]=await Promise.all([t,e.signingEngine.getLastUser().catch(()=>null),ea(K,e.identity.nearAccountId).catch(()=>null),gb(e.identity.walletId)]);if(a.length===0)throw Error(`No authenticators found for account ${e.identity.nearAccountId}. Please register an account.`);let o=null;o=n&&n.nearAccountId===e.identity.nearAccountId?n:i&&i.nearAccountId===e.identity.nearAccountId?i:r&&r.nearAccountId===e.identity.nearAccountId?r:await e.signingEngine.getUserBySignerSlot(e.identity.nearAccountId,Number(e.identity.signerSlot)).catch(()=>null);let s=Hb({userData:o,walletId:e.identity.walletId});return R(e.onEvent,String(e.identity.nearAccountId),{phase:G.STEP_02_ACCOUNT_LOOKUP_SUCCEEDED,status:`succeeded`,authMethod:`passkey`,data:{signerSlot:Number(e.identity.signerSlot),...s.operationalPublicKey?{operationalPublicKey:s.operationalPublicKey}:{walletKind:s.kind}}}),{kind:`login_unlock_account_phase_ready`,accountSubject:s,authenticators:a,baseSignerSlot:e.signerSlotHint??Number(e.identity.signerSlot),localUnlockAuthMethod:H.passkey,requiresLocalPasskeyUnlock:!0}}async function Wb(e){let t=String(e.identity.walletId);R(e.onEvent,t,{phase:G.STEP_02_ACCOUNT_LOOKUP_STARTED,status:`running`,authMethod:`passkey`});let[n,r]=await Promise.all([K.getProfile(t),gb(e.identity.walletId)]);if(!n||r.length===0)throw Error(`[login] ECDSA wallet ${t} has no local passkey profile`);let i=Vs(n.defaultSignerSlot,{min:1}),a=e.signerSlotHint??i;if(a===null)throw Error(`[login] ECDSA wallet profile is missing its exact signerSlot`);return R(e.onEvent,t,{phase:G.STEP_02_ACCOUNT_LOOKUP_SUCCEEDED,status:`succeeded`,authMethod:`passkey`,data:{signerSlot:a,walletKind:`ecdsa_wallet_only`}}),{kind:`login_unlock_account_phase_ready`,accountSubject:{kind:`ecdsa_wallet_only`,walletId:e.identity.walletId,operationalPublicKey:null},authenticators:r,baseSignerSlot:a,localUnlockAuthMethod:H.passkey,requiresLocalPasskeyUnlock:!0}}async function Gb(e){switch(e.identity.kind){case`near_ed25519_capable_wallet`:return await Ub({signingEngine:e.signingEngine,identity:e.identity,signerSlotHint:e.signerSlotHint,onEvent:e.onEvent});case`evm_family_ecdsa_only_wallet`:return await Wb({identity:e.identity,signerSlotHint:e.signerSlotHint,onEvent:e.onEvent})}return Q(e.identity)}function Kb(e){switch(e.identity.kind){case`near_ed25519_capable_wallet`:if(e.accountSubject.kind!==`near_wallet`)throw Error(`[login] NEAR unlock returned an ECDSA-only account subject`);return{success:!0,kind:`near_wallet_unlocked`,walletId:e.identity.walletId,loggedInNearAccountId:String(e.identity.nearAccountId),operationalPublicKey:e.accountSubject.operationalPublicKey,nearAccountId:e.identity.nearAccountId};case`evm_family_ecdsa_only_wallet`:if(e.accountSubject.kind!==`ecdsa_wallet_only`)throw Error(`[login] ECDSA-only unlock returned a NEAR account subject`);return{success:!0,kind:`ecdsa_wallet_unlocked`,walletId:e.identity.walletId}}return Q(e.identity)}async function qb(e,t,n){return await bx(e,t,n,{kind:`wallet_only`})}async function Jb(e){let t=e.authority.signerActivations.ed25519;if(!t)return{kind:`absent`};let n=Qy(e.signerMaterials,e.authority.authorityId,e.authMethod.walletAuthMethodId,t.materialActivation);if(!n||n.kind!==`wallet_authority_linked_signer_material_v1`||n.keyFamily!==`ed25519`||!b(n.materialActivation,t.materialActivation))return{kind:`invalid`};let r=n.publicFacts.applicationBinding;if(r.wallet_id!==String(e.walletId))return{kind:`invalid`};let i=null,a=await new Rs(K).listLanes();for(let o of a){let a;switch(e.authMethod.kind){case H.passkey:a=o.auth.kind===H.passkey&&String(o.auth.rpId)===String(e.authMethod.rpId)&&String(o.auth.credentialIdB64u)===String(e.authMethod.credentialIdB64u);break;case H.emailOtp:a=o.auth.kind===H.emailOtp;break;default:return Q(e.authMethod)}if(!(!a||String(o.walletId)!==String(e.walletId)||o.signerSlot!==r.key_creation_signer_slot||String(o.nearEd25519SigningKeyId)!==r.near_ed25519_signing_key_id||String(o.thresholdSessionId)!==n.publicFacts.targetBinding.lifecycle.session_id||!b(o.materialActivation,t.materialActivation))){if(i)return{kind:`invalid`};i=o}}if(!i)return{kind:`invalid`};let o=Vs(i.signerSlot,{min:1});return o?{kind:`resolved`,subject:{kind:`near_ed25519_wallet`,walletId:e.walletId,nearAccountId:i.nearAccountId,nearEd25519SigningKeyId:i.nearEd25519SigningKeyId,signerSlot:o}}:{kind:`invalid`}}function Yb(e){let t=no({kind:`wallet_auth_authority_ref`,walletId:e.authority.walletId,authorityDigest:e.authority.authorityDigestB64u,walletAuthMethodId:e.authMethod.walletAuthMethodId});if(!t)throw Error(`[login] linked device wallet authority reference is invalid`);return t}async function Xb(e){let t=o(e);if(!t.ok)return null;let n=t.value;try{let e=await K.resolveSelectedWalletAuthority(String(n));if(e.kind!==`resolved`)return null;let{selection:t,authMethod:r,authority:i}=e;if($y({walletId:n,selection:t,authMethod:r,authority:i}).length>0||r.status!==`active`||i.state!==`active`)return null;let a=[],o=await Jb({walletId:n,authMethod:r,authority:i,signerMaterials:e.signerMaterials});if(o.kind===`invalid`)return null;o.kind===`resolved`&&a.push(o.subject);let s=i.signerActivations.ecdsa;if(s){let t=Qy(e.signerMaterials,i.authorityId,r.walletAuthMethodId,s.materialActivation);if(!t||t.keyFamily!==`ecdsa_secp256k1`||!b(t.materialActivation,s.materialActivation))return null;let o;try{o=r.kind===H.passkey?await Jy(r):Yb({authority:i,authMethod:r})}catch{return null}a.push({kind:`evm_family_ecdsa_wallet`,walletId:n,capability:s.materialActivation.capability,authority:o,ecdsaThresholdKeyId:t.ecdsaThresholdKeyId})}let c=a[0];return c?{kind:`wallet_unlock_subject_set`,walletId:n,subjects:[c,...a.slice(1)]}:null}catch{return null}}async function Zb(e){let t=await Py(a(e.relayUrl,`/wallet/unlock/challenge`),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({unlockBackend:`passkey`,userId:String(e.walletId),rpId:e.rpId})}),n=await t.json().catch(()=>({})),r=O(n)?n:{};if(!t.ok||r.ok!==!0)throw Error(typeof r.message==`string`?r.message:`wallet/unlock/challenge failed (HTTP ${t.status})`);let i=String(r.challengeId||``).trim(),o=String(r.challengeB64u||``).trim();if(!i||!o)throw Error(`[login] linked passkey challenge is incomplete`);return{challengeId:i,challengeB64u:o}}function Qb(e){return{id:e,type:`public-key`,transports:[]}}function $b(e,t){return e.capabilitySubjects.some(e=>(e.kind===`sign`||e.kind===`export_keys`)&&e.keyFamily===(t===`ed25519`?`ed25519`:`ecdsa_secp256k1`))}function ex(e){let t=e.filter(e=>e.keyFamily===`ed25519`);if(t.length>1)throw Error(`[login] linked passkey has multiple active Ed25519 materials`);return t[0]??null}function tx(e){let t=e.filter(e=>e.keyFamily===`ecdsa_secp256k1`);if(t.length>1)throw Error(`[login] linked passkey has multiple active ECDSA materials`);return t[0]??null}async function nx(e){let t=fd({walletId:e.selection.walletId,materialActivation:e.material.materialActivation});if(t){let[n,r]=await Promise.all([U({authority:t.factorAuthority}),U({authority:e.factorAuthority})]);if(t.authorityId!==e.selection.authority.authorityId||t.walletAuthMethodId!==e.selection.authMethod.walletAuthMethodId||t.ecdsaThresholdKeyId!==e.material.publicFacts.ecdsaThresholdKeyId||n.authorityDigest!==r.authorityDigest)throw Error(`[login] linked ECDSA holder runtime conflicts with the selected authority`);return{runtime:t,installed:!1}}let n=Pe(`linked-ecdsa-holder`);try{let t=await yu({holderHandleId:n,ownedSigningShare32:e.material.material.slice(),activationReceiptJson:JSON.stringify(e.material.publicFacts.activationReceipt),workerCtx:e.context.signingEngine.getSignerWorkerContext()}),r={kind:`linked_ecdsa_holder_runtime_v1`,walletId:e.selection.walletId,authorityId:e.selection.authority.authorityId,walletAuthMethodId:e.selection.authMethod.walletAuthMethodId,factorAuthority:e.factorAuthority,materialActivation:e.material.materialActivation,holderHandleId:t.holderHandleId,ecdsaThresholdKeyId:e.material.publicFacts.ecdsaThresholdKeyId,activationReceipt:e.material.publicFacts.activationReceipt};return md(r),{runtime:r,installed:!0}}catch(t){throw await ju({holderHandleId:n,workerCtx:e.context.signingEngine.getSignerWorkerContext()}).catch(()=>void 0),t}}async function rx(e){if(e.kind===`passkey`){let t=await eb(String(e.walletId));if(!t)throw Error(`[login] linked Passkey authority is unavailable after link`);return t}let t=await tb({walletIdInput:String(e.walletId),walletAuthMethodId:String(e.walletAuthMethodId),emailHashHex:e.emailHashHex,provider:e.providerIdentity.provider,providerSubjectId:e.providerIdentity.providerSubjectId});if(t.kind!==`selected`)throw Error(t.kind===`rejected`?t.message:`[login] linked Email OTP authority is unavailable after link`);return t.selection}async function ix(e){let t=ox(e.material),n=Or(`ed25519:${Er(t.registeredPublicKey)}`),r=Fo({kind:`router_ab_ed25519_yao_warm_recovery_bootstrap_request_v1`,walletId:String(e.selection.walletId),nearAccountId:n,nearEd25519SigningKeyId:t.applicationBinding.near_ed25519_signing_key_id,signerSlot:t.applicationBinding.key_creation_signer_slot,thresholdSessionId:t.scope.threshold_session_id,signingWorkerId:t.scope.signing_worker_id,participantIds:t.participantIds});if(!r.ok)throw Error(r.message);let i=await fetch(`${new URL(e.relayerUrl).origin}${Mo}`,{method:`POST`,headers:{Authorization:`Bearer ${e.operationCredential.token}`,"Content-Type":`application/json`},body:JSON.stringify(r.value)}),a=await i.json().catch(()=>null);if(!i.ok||!O(a)){let e=O(a)?String(a.message||``).trim():``;throw Error(`[login] linked Ed25519 post-link bootstrap failed (HTTP ${i.status}): ${e||`invalid response`}`)}let o=s(a.thresholdSessionId),c=pt(a.walletSessionId),l=dt(a.quotaId),u=Ae(a.runtimePolicyScope),d=Ke(a.routerAbNormalSigning),f=Array.isArray(a.participantIds)?a.participantIds:[];if(a.kind!==`router_ab_ed25519_yao_warm_recovery_bootstrap_v1`&&a.kind!==`router_ab_ed25519_yao_v2_session_bootstrap_v1`||String(a.walletId)!==String(e.selection.walletId)||String(a.nearAccountId)!==r.value.nearAccountId||String(a.nearEd25519SigningKeyId)!==r.value.nearEd25519SigningKeyId||String(a.signingWorkerId)!==r.value.signingWorkerId||!o.ok||!c.ok||!l.ok||!u||!d||f.length!==2||!Number.isSafeInteger(f[0])||!Number.isSafeInteger(f[1])||String(c.value)!==String(e.operationCredential.walletSessionId)||String(o.value)!==r.value.thresholdSessionId)throw Error(`[login] linked Ed25519 post-link bootstrap identity is invalid`);let p=Number(a.thresholdExpiresAtMs);if(!Number.isSafeInteger(p)||p<=Date.now())throw Error(`[login] linked Ed25519 post-link bootstrap is expired`);return{walletId:String(e.selection.walletId),nearAccountId:r.value.nearAccountId,nearEd25519SigningKeyId:r.value.nearEd25519SigningKeyId,relayerKeyId:r.value.signingWorkerId,participantIds:[f[0],f[1]],thresholdSessionId:o.value,authorizationId:e.walletSession.authorizationId,walletSessionId:c.value,quotaId:l.value,expiresAtMs:p,remainingUses:Re,runtimePolicyScope:u,routerAbNormalSigning:d,operationCredential:e.operationCredential}}async function ax(e){let t=await rx(e.factor);rb(t,e.walletSession);let n=String(e.context.configs.network.relayer?.url||``).trim();if(!n)throw Error(`[login] linked post-link activation requires relayer.url`);await q.writeExactWithOperationCredential({record:e.walletSession,operationCredential:e.operationCredential});let r=await ob({selection:t,factorSecret32:e.factorSecret32});try{let i=e.factor.kind===`email_otp`?e.factor.providerIdentity:void 0,a=await Xy({selection:t,...i?{providerIdentity:i}:{}}),o=tx(r);if(o){let{runtime:r}=await nx({context:e.context,selection:t,factorAuthority:a,material:o});np({runtime:r,operationCredential:e.operationCredential,expiresAtMs:e.walletSession.expiresAtMs,relayerUrl:n,workerCtx:e.context.signingEngine.getSignerWorkerContext()})}let s=ex(r);if(s){let r=await ix({relayerUrl:n,selection:t,walletSession:e.walletSession,operationCredential:e.operationCredential,material:s});await dx({context:e.context,selection:t,session:r,material:s,relayerUrl:n,...i?{providerIdentity:i}:{}})}t.exportRoot&&(e.factor.kind===`passkey`?await e.context.signingEngine.establishUnlockedWalletEd25519ExportRootCapabilityV1({existingEnvelope:t.exportRoot.envelope,passkeyPrfFirstB64u:P(e.factorSecret32),walletId:String(t.walletId),walletAuthMethodId:String(t.authMethod.walletAuthMethodId),walletSessionId:String(e.operationCredential.walletSessionId),expiresAtMs:e.walletSession.expiresAtMs}):(Zo(t.exportRoot.envelope.binding)||t.exportRoot.envelope.binding.kind===`ed25519_yao_client_root_v1`)&&await mr(er(e.context.signingEngine.getSignerWorkerContext()),{existingEnvelope:t.exportRoot.envelope,existingFactorSecret:e.factorSecret32,walletId:String(t.walletId),walletAuthMethodId:String(t.authMethod.walletAuthMethodId),walletSessionId:String(e.operationCredential.walletSessionId),expiresAtMs:e.walletSession.expiresAtMs})),await e.context.signingEngine.markWalletSelectionUnlocked({walletId:t.walletId,walletAuthMethodId:t.authMethod.walletAuthMethodId})}finally{for(let e of r)e.material.fill(0)}}function ox(e){let t=e.publicFacts.targetBinding,n=e.publicFacts.activationReceipt;return{kind:Cn,scope:{lifecycle_id:t.lifecycle.lifecycle_id,root_share_epoch:t.lifecycle.root_share_epoch,account_id:t.lifecycle.account_id,threshold_session_id:t.lifecycle.session_id,signer_set_id:t.lifecycle.signer_set_id,signing_worker_id:t.lifecycle.selected_server_id,material_activation:t.material_activation},applicationBinding:e.publicFacts.applicationBinding,participantIds:e.publicFacts.participantIds,registeredPublicKey:Uint8Array.from(n.registered_public_key),signingWorkerVerifyingShare:Uint8Array.from(n.signing_worker_verifying_share),stateEpoch:BigInt(n.state_epoch),transcript:Uint8Array.from(n.transcript),activeCapabilityBinding:t.session_id,materialActivation:e.materialActivation}}function sx(e){let t=String(e?.providerSubjectId||``).trim();if(!t)throw Error(`[login] linked Email OTP lane provider identity is missing`);return t}function cx(e){let t=e.session;if(t.walletSessionId!==e.operationCredential.walletSessionId||t.sessionKind===`issued_exact_wallet_session`&&t.operationCredential.walletSessionId!==e.operationCredential.walletSessionId)throw Error(`[login] linked Passkey Ed25519 credentials identify different sessions`);return{walletId:t.walletId,nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,relayerKeyId:t.relayerKeyId,participantIds:t.participantIds,thresholdSessionId:t.thresholdSessionId,authorizationId:t.authorizationId,walletSessionId:t.walletSessionId,quotaId:t.quotaId,expiresAtMs:t.expiresAtMs,remainingUses:t.remainingUses,runtimePolicyScope:t.runtimePolicyScope,routerAbNormalSigning:t.routerAbNormalSigning,operationCredential:e.operationCredential}}function lx(e){let t=e.session;if(t.authorityScope.kind!==`email_otp`||String(t.authorityScope.providerUserId)!==String(e.providerIdentity.providerSubjectId)){let n=[...t.authorityScope.kind===`email_otp`?[]:[`scope.kind`],...t.authorityScope.kind===`email_otp`&&String(t.authorityScope.providerUserId)!==String(e.providerIdentity.providerSubjectId)?[`scope.providerUserId`]:[]];throw Error(`[login] linked Email OTP Ed25519 session authority mismatch: ${n.join(`, `)}`)}let n=s(t.thresholdSessionId),r=gt(t.authorizationId),i=pt(t.walletSessionId),a=dt(t.quotaId);if(!n.ok||!r.ok||!i.ok||!a.ok)throw Error(`[login] linked Email OTP Ed25519 session identity is invalid`);if(e.operationCredential.walletSessionId!==i.value)throw Error(`[login] linked Email OTP Ed25519 credential identifies another session`);return{walletId:String(t.walletId),nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,relayerKeyId:t.routerAbNormalSigning.signingWorkerId,participantIds:t.participantIds,thresholdSessionId:n.value,authorizationId:r.value,walletSessionId:i.value,quotaId:a.value,expiresAtMs:t.expiresAtMs,remainingUses:t.remainingUses,runtimePolicyScope:t.runtimePolicyScope,routerAbNormalSigning:t.routerAbNormalSigning,operationCredential:e.operationCredential}}function ux(e){let t=kr(e.session.nearAccountId),n={walletId:e.selection.walletId,nearAccountId:t,thresholdSessionId:e.session.thresholdSessionId,runtimePolicyScope:e.session.runtimePolicyScope,materialActivation:e.material.materialActivation,nearEd25519SigningKeyId:qo(e.session.nearEd25519SigningKeyId),signerSlot:e.material.publicFacts.applicationBinding.key_creation_signer_slot};return e.selection.authMethod.kind===`passkey`?{...n,auth:{kind:`passkey`,rpId:Ha(e.selection.authMethod.rpId),credentialIdB64u:e.selection.authMethod.credentialIdB64u}}:{...n,auth:{kind:`email_otp`,providerSubjectId:sx(e.providerIdentity)},remainingUses:e.session.remainingUses,expiresAtMs:e.session.expiresAtMs}}async function dx(e){let t=ox(e.material),n=t.applicationBinding,r=[];if(e.session.walletId!==String(e.selection.walletId)&&r.push(`walletId`),n.wallet_id!==String(e.selection.walletId)&&r.push(`application.walletId`),t.scope.account_id!==String(e.selection.walletId)&&r.push(`material.walletId`),e.session.nearEd25519SigningKeyId!==n.near_ed25519_signing_key_id&&r.push(`nearEd25519SigningKeyId`),e.session.thresholdSessionId!==t.scope.threshold_session_id&&r.push(`thresholdSessionId`),e.session.relayerKeyId!==t.scope.signing_worker_id&&r.push(`signingWorkerId`),r.length>0)throw Error(`[login] linked Ed25519 Wallet Session does not match local material: ${r.join(`, `)}`);let i=(await Dn.initializeBundled()).importLinkedMaterial({ownedClientScalarShare:e.material.material,publicReceipt:e.material.publicFacts.activationReceipt,metadata:t}),a=!1;try{let r=await e.context.signingEngine.activateVerifiedNearEd25519YaoMaterial({activeClient:i,facts:{thresholdSessionId:e.session.thresholdSessionId,signer:Vc({walletId:e.selection.walletId,nearAccountId:kr(e.session.nearAccountId),nearEd25519SigningKeyId:qo(e.session.nearEd25519SigningKeyId),signerSlot:n.key_creation_signer_slot}),signingRootId:n.signing_root_id,signingRootVersion:t.scope.root_share_epoch,routerAbNormalSigning:e.session.routerAbNormalSigning,runtimePolicyScope:e.session.runtimePolicyScope,relayerUrl:e.relayerUrl}}),o=kr(e.session.nearAccountId);if(String(r.walletId)!==String(e.selection.walletId)||String(r.nearAccountId)!==String(o)||!b(r.materialActivation,e.material.materialActivation))throw Error(`[login] linked Ed25519 activation identity does not match the V2 session`);await Fs(new Rs(K),ux({selection:e.selection,session:e.session,material:e.material,...e.providerIdentity?{providerIdentity:e.providerIdentity}:{}})),a=!0}finally{a||i.dispose()}let o=kr(e.session.nearAccountId);return{success:!0,kind:`near_wallet_unlocked`,walletId:e.selection.walletId,loggedInNearAccountId:String(o),operationalPublicKey:`ed25519:${Er(t.registeredPublicKey)}`,nearAccountId:o}}function fx(e){let[t,...n]=e.signerMaterials;if(e.authority.provenance.kind===`device_link`){if(!t)throw Error(`[login] linked Email OTP authority has no signer material`);return{kind:`linked_device`,selection:e,signerMaterials:[t,...n]}}if(t)throw Error(`[login] owner Email OTP authority must not carry linked signer material`);return{kind:`owner_authority`,selection:e}}async function px(e){let{source:t}=e;if(t.kind===`linked_device`){let e=t.signerMaterials.find(e=>e.kind===`wallet_authority_linked_signer_material_v1`&&e.keyFamily===`ed25519`);return e?{kind:`linked_device`,signerSlot:e.publicFacts.applicationBinding.key_creation_signer_slot,remainingUses:Re}:{kind:`no_ed25519`}}return!t.selection.authority.signerActivations.ed25519||await mx(t.selection)?{kind:`no_ed25519`}:await e.context.signingEngine.resolveOwnerAuthorityEd25519UnlockRequestInternal({walletSession:{walletId:t.selection.walletId,walletSessionUserId:String(t.selection.walletId)},providerSubjectId:e.providerIdentity.providerSubjectId,walletAuthMethodId:String(t.selection.authMethod.walletAuthMethodId),remainingUses:Re})??{kind:`no_ed25519`}}async function mx(e){let t=e.authority.signerActivations.ed25519?.materialActivation;return t?(await K.listPendingWalletRegistrationCommits()).some(hx.bind(void 0,e,t)):!1}function hx(e,t,n){return n.operation===`near_provisioning`&&n.phase===`joined`&&n.signerPlanKind===`near_ed25519_and_evm_family_ecdsa`&&n.walletId===e.walletId&&n.walletAuthMethodId===e.authMethod.walletAuthMethodId&&b(n.localMaterial.ed25519.metadata.materialActivation,t)}async function gx(e){let{selection:t,unlocked:n}=e,r=n.walletSession;if(r.walletId!==t.walletId||r.authorityId!==t.authority.authorityId||r.authMethodId!==t.authMethod.walletAuthMethodId||r.authorityDigestB64u!==t.authority.authorityDigestB64u||r.authorityRevocationEpoch!==t.authority.revocationEpoch)throw Error(`[login] owner Email OTP Wallet Session does not match the selected authority`);let i=t.authority.signerActivations.ed25519?.materialActivation;if(!i)return;if(n.ed25519Activation.kind!==`ed25519_activation_ready`){if(await mx(t))return;throw Error(`[login] owner Email OTP unlock built no Ed25519 runtime to install`)}let a=n.ed25519Activation;if(!b(a.bootstrap.capability.materialActivation,i))throw Error(`[login] owner Email OTP Ed25519 capability names another activation`);if(!b(a.metadata.materialActivation,i))throw Error(`[login] owner Email OTP Ed25519 runtime names another activation`);if(a.bootstrap.session.walletSessionId!==n.operationCredential.walletSessionId)throw Error(`[login] owner Email OTP Ed25519 session credential mismatch`);let o=await Zy({selection:t,providerIdentity:e.providerIdentity});await e.context.signingEngine.activateOwnerAuthorityEd25519RuntimeInternal({walletSession:{walletId:t.walletId,walletSessionUserId:String(t.walletId)},providerSubjectId:e.providerIdentity.providerSubjectId,walletAuthMethodId:String(t.authMethod.walletAuthMethodId),emailHashHex:e.emailHashHex,authority:o,activeClientHandle:a.activeClientHandle,metadata:a.metadata,bootstrap:a.bootstrap})}function _x(e){switch(e.walletCustodySeed.kind){case`owner_authority_seed_envelope`:return e.walletCustodySeed.existingEnvelope;case`linked_device_seed_unavailable`:throw Error(`[login] owner Email OTP unlock returned linked-device custody state`);default:return Q(e.walletCustodySeed)}}async function vx(e){let t={provider:e.providerSubjectId.startsWith(`google:`)?`google`:`email`,providerSubjectId:e.providerSubjectId},n=await tb({walletIdInput:e.walletIdInput,emailHashHex:e.emailHashHex,provider:t.provider,providerSubjectId:t.providerSubjectId,walletAuthMethodId:e.walletAuthMethodId});if(n.kind===`none`)throw Error(`[login] linked Email OTP authority is unavailable`);if(n.kind===`rejected`)throw Error(n.message);let r=n.selection;if(String(r.authMethod.walletAuthMethodId)!==String(e.walletAuthMethodId))throw Error(`[login] linked Email OTP selected auth method changed during unlock`);let i=String(e.relayUrl||``).trim();if(!i)throw Error(`[login] linked Email OTP unlock requires relayer.url`);let a=fx(r),o=await px({context:e.context,source:a,providerIdentity:t}),s=await Yt({relayUrl:i,walletId:String(r.walletId),walletAuthMethodId:String(r.authMethod.walletAuthMethodId),challengeId:e.challengeId,otpCode:e.otpCode,ed25519:o,workerCtx:e.context.signingEngine.getSignerWorkerContext()}),c=s.factorSecret32,l=t,u=null,d=null,f=s.ed25519Activation.kind===`ed25519_activation_ready`?s.ed25519Activation.activeClientHandle:null;try{if(a.kind===`owner_authority`){if(await q.writeExactWithOperationCredential({record:s.walletSession,operationCredential:s.operationCredential}),await gx({context:e.context,selection:r,unlocked:s,providerIdentity:l,emailHashHex:e.emailHashHex}),f=null,!c)throw Error(`[login] owner Email OTP factor secret ownership was lost`);await mr(er(e.context.signingEngine.getSignerWorkerContext()),{existingEnvelope:_x(s),existingFactorSecret:c,walletId:String(r.walletId),walletAuthMethodId:String(r.authMethod.walletAuthMethodId),walletSessionId:String(s.operationCredential.walletSessionId),expiresAtMs:s.walletSession.expiresAtMs}),await e.context.signingEngine.markWalletSelectionUnlocked({walletId:r.walletId,walletAuthMethodId:r.authMethod.walletAuthMethodId}),e.context.signingEngine.setWalletAuthenticated({kind:`authenticated`,walletId:r.walletId,authMethod:H.emailOtp}),uC({context:e.context,sessionAuthority:{record:s.walletSession,operationCredential:s.operationCredential},factor:{kind:`email_otp`,provider:t.provider,providerSubject:t.providerSubjectId,emailHashHex:e.emailHashHex},ownedFactorSecret:c.slice().buffer,custodyEnvelope:_x(s)});return}if(rb(r,s.walletSession),!c)throw Error(`[login] linked Email OTP factor secret ownership was lost`);u=await cb({selection:r,factorSecret32:c});let n=ex(u),o=tx(u);if($b(s.walletSession,`ed25519`)){if(!n||!s.ed25519Activation.bootstrap)throw Error(`[login] linked Email OTP Ed25519 runtime material or capability is missing`);if(!b(s.ed25519Activation.bootstrap.capability.materialActivation,n.materialActivation))throw Error(`[login] linked Email OTP Ed25519 capability activation is invalid`)}if($b(s.walletSession,`ecdsa`)){if(!o)throw Error(`[login] linked Email OTP ECDSA runtime material is missing`);let t=await nx({context:e.context,selection:r,factorAuthority:await Xy({selection:r,providerIdentity:l}),material:o});t.installed&&(d=t.runtime)}let p;if(n&&s.ed25519Activation.bootstrap){let t=lx({session:s.ed25519Activation.bootstrap.session,operationCredential:s.operationCredential,providerIdentity:l});if(t.walletSessionId!==s.operationCredential.walletSessionId)throw Error(`[login] linked Email OTP Ed25519 session credential mismatch`);p=await dx({context:e.context,selection:r,session:t,material:n,relayerUrl:i,providerIdentity:l})}else if(o)p={success:!0,kind:`ecdsa_wallet_unlocked`,walletId:r.walletId};else throw Error(`[login] linked Email OTP has no unlockable signing runtime`);await q.writeExactWithOperationCredential({record:s.walletSession,operationCredential:s.operationCredential}),r.exportRoot&&Zo(r.exportRoot.envelope.binding)&&await mr(er(e.context.signingEngine.getSignerWorkerContext()),{existingEnvelope:r.exportRoot.envelope,existingFactorSecret:c,walletId:String(r.walletId),walletAuthMethodId:String(r.authMethod.walletAuthMethodId),walletSessionId:String(s.operationCredential.walletSessionId),expiresAtMs:s.walletSession.expiresAtMs}),await e.context.signingEngine.markWalletSelectionUnlocked({walletId:r.walletId,walletAuthMethodId:r.authMethod.walletAuthMethodId}),e.context.signingEngine.setWalletAuthenticated({kind:`authenticated`,walletId:p.walletId,authMethod:H.emailOtp})}catch(t){d&&(dd({walletId:d.walletId,materialActivation:d.materialActivation,holderHandleId:d.holderHandleId}),await ju({holderHandleId:d.holderHandleId,workerCtx:e.context.signingEngine.getSignerWorkerContext()}).catch(()=>void 0));let n=e.context.signingEngine.getSignerWorkerContext();throw n&&await Pn(er(n),{kind:`wallet_session`,walletSessionId:String(s.operationCredential.walletSessionId)}),await Promise.allSettled([e.context.signingEngine.clearVolatileWarmSigningMaterial(r.walletId),q.clearWallet(r.walletId)]),t}finally{if(f){let t=e.context.signingEngine.getSignerWorkerContext();t&&await Xv({workerContext:t,activeClientHandle:f}).catch(()=>void 0),f=null}for(let e of u||[])e.material.fill(0);c?.fill(0)}}async function yx(e,t,n){let r=String(t).trim()||`linked-passkey`,{onEvent:i,onError:a,afterCall:o}=n||{};R(i,r,{phase:G.STEP_01_STARTED,status:`started`,authMethod:`passkey`});try{let n=await eb(t);if(!n)throw Error(`[login] linked passkey authority is unavailable`);let a=String(e.configs.network.relayer?.url||``).trim();if(!a)throw Error(`[login] linked passkey unlock requires relayer.url`);R(i,r,{phase:G.STEP_03_PASSKEY_CHALLENGE_STARTED,status:`running`,authMethod:`passkey`});let s=await Zb({relayUrl:a,walletId:n.walletId,rpId:n.authMethod.rpId});R(i,r,{phase:G.STEP_03_PASSKEY_PROMPT_STARTED,status:`running`,authMethod:`passkey`,interaction:{kind:`passkey_assert`,overlay:`show`}});let c=await e.signingEngine.getAuthenticationCredentialsSerialized({subjectId:String(n.walletId),challengeB64u:s.challengeB64u,allowCredentials:[Qb(n.authMethod.credentialIdB64u)],includeSecondPrfOutput:!0});R(i,r,{phase:G.STEP_03_PASSKEY_PROMPT_SUCCEEDED,status:`succeeded`,authMethod:`passkey`,interaction:{kind:`passkey_assert`,overlay:`hide`}});let l=String(typeof window<`u`?window.location.origin:``).trim(),u={challengeId:s.challengeId,webauthn_authentication:c,ed25519SessionRequest:n.signerMaterials.some(e=>e.keyFamily===`ed25519`)?{kind:`requested`,remainingUses:Re}:{kind:`not_requested`},...l?{expected_origin:l}:{}};R(i,r,{phase:G.STEP_04_WALLET_UNLOCK_EXCHANGE_STARTED,status:`running`,authMethod:`passkey`});let d=await jt(a,u);if(!d.success)throw Error(d.error);rb(n,d.walletSession);let f=await ab({selection:n,credential:c}),p;try{let t=ex(f),r=tx(f);if($b(d.walletSession,`ed25519`)&&(!t||!d.ed25519Session))throw Error(`[login] linked Ed25519 runtime material or Wallet Session is missing`);if($b(d.walletSession,`ecdsa`)){if(!r)throw Error(`[login] linked ECDSA runtime material is missing`);await nx({context:e,selection:n,factorAuthority:await Xy({selection:n}),material:r})}if(t&&d.ed25519Session)p=await dx({context:e,selection:n,session:cx({session:d.ed25519Session,operationCredential:d.operationCredential}),material:t,relayerUrl:a});else if(r)p={success:!0,kind:`ecdsa_wallet_unlocked`,walletId:n.walletId};else throw Error(`[login] linked passkey has no unlockable signing runtime`);if(await q.writeExactWithOperationCredential({record:d.walletSession,operationCredential:d.operationCredential}),n.exportRoot){let t=tr(c);if(!t)throw Error(`[login] linked export-root unlock requires WebAuthn PRF.first output`);await e.signingEngine.establishUnlockedWalletEd25519ExportRootCapabilityV1({existingEnvelope:n.exportRoot.envelope,passkeyPrfFirstB64u:t,walletId:String(n.walletId),walletAuthMethodId:String(n.authMethod.walletAuthMethodId),walletSessionId:String(d.operationCredential.walletSessionId),expiresAtMs:d.walletSession.expiresAtMs})}await e.signingEngine.markWalletSelectionUnlocked({walletId:n.walletId,walletAuthMethodId:n.authMethod.walletAuthMethodId})}catch(t){throw await Promise.allSettled([e.signingEngine.clearVolatileWarmSigningMaterial(n.walletId),q.clearWallet(n.walletId)]),t}finally{for(let e of f)e.material.fill(0)}return R(i,r,{phase:G.STEP_04_WALLET_UNLOCK_EXCHANGE_SUCCEEDED,status:`succeeded`,authMethod:`passkey`}),await Vn({context:e,authMethod:H.passkey,unlockSubjectId:r,loginResult:p,onEvent:i,afterCall:o})}catch(e){let t=I(e);return await Ln({unlockSubjectId:r,message:t.message,error:t,onEvent:i,onError:a,afterCall:o,cancelled:wt(t)})}}async function bx(e,t,n,r){let{onEvent:i,onError:a,afterCall:o}=n||{},{signingEngine:s}=e,c=Iy({selection:n?.unlockSelection,subjectSet:t}),l=By({subjectSet:t,selection:c}),u=l.kind===`near_ed25519_capable_wallet`?String(l.nearAccountId):String(l.walletId),d;R(i,u,{phase:G.STEP_01_STARTED,status:`started`,authMethod:`passkey`});try{if(s.assertSealedRefreshStartupParity().catch(e=>{console.warn(`[login] sealed refresh startup parity check failed during unlock; continuing to local passkey prompt`,e instanceof Error?e.message:String(e||`unknown error`))}),typeof window<`u`&&!window.isSecureContext){let e=`Passkey operations require a secure context (HTTPS or localhost).`;return await Ln({unlockSubjectId:u,message:e,error:Error(e),onEvent:i,onError:a,afterCall:o,callAfterCall:!1})}let{accountSubject:t,authenticators:r,baseSignerSlot:f,localUnlockAuthMethod:p,requiresLocalPasskeyUnlock:m}=await Gb({signingEngine:s,identity:l,signerSlotHint:Vs(n?.signerSlot,{min:1}),onEvent:i}),h=async e=>{let t=Pb({authenticators:r,credentialIds:e.credentialIds}),n=await ly({signingEngine:s,subjectId:u,challengeB64u:e.challengeB64u,authenticators:t,onPromptStarted:()=>{R(i,u,{phase:G.STEP_03_PASSKEY_PROMPT_STARTED,status:`waiting_for_user`,authMethod:`passkey`,interaction:{kind:`passkey_assert`,overlay:`show`}})},onPromptSucceeded:()=>{R(i,u,{phase:G.STEP_03_PASSKEY_PROMPT_SUCCEEDED,status:`succeeded`,authMethod:`passkey`,interaction:{kind:`passkey_assert`,overlay:`hide`}})}});return e.saveAsLoginCredential&&(d=n),n},g=async()=>{let e=await dy({currentCredential:d,collectCredentialForChallenge:async e=>await h({challengeB64u:e,saveAsLoginCredential:!0,credentialIds:Lb({authenticators:r,signerSlot:f,serverCredentialIds:[]})})});e&&(d=e)},_=tp({defaults:e.configs.signing.sessionDefaults,override:n?.signingSession}),v=_.kind===`enabled`,y=v&&l.kind===`near_ed25519_capable_wallet`?sg({clientDB:K,keyMaterialStore:K},l.nearAccountId,f).catch(()=>null):Promise.resolve(null),b=null,x=null,S=null,C=null,w=bb(),T=null,E=(e,t)=>{if(_b(t))return t;let n=String(t?.status||`not_found`);throw Error(`[login] ${e} did not produce an active warm signing session (status=${n})`)},D=async t=>{R(i,u,{phase:G.STEP_05_SIGNING_SESSION_WARMUP_STARTED,status:`running`,authMethod:d?`passkey`:`warm_session`});let a=t.wantsEd25519Warmup?Vy(l):null,o=$t(e.configs),c=!1,h=async()=>{c||(c=!0,await s.clearVolatileWarmSigningMaterial(l.walletId))};t.wantsEcdsaWarmup&&Gy(await Wy({workerCtx:s.getSignerWorkerContext(),selectors:Uy(l.subjectSet)}));let g=t.wantsEcdsaWarmup?await FS(e,l.walletId,{keyFactsInventoryAuthority:t.keyFactsInventoryAuthority,keyFactsInventoryRequested:!!n?.ecdsaKeyFactsInventory,relayerUrl:t.relayerUrl,rpId:t.rpId},p):{ecdsaKeys:[]},v=await y,w=v?.participants.map(e=>e.id)||[];t.wantsEcdsaWarmup&&Hy({identity:l,context:g});let T=yS({selection:t.selection,selectedEcdsaTargets:t.selectedEcdsaTargets,storedCanonicalEcdsaContext:g,wantsEd25519Warmup:t.wantsEd25519Warmup}),D=b,O=!!(D&&T.signersToWarm.includes(`ecdsa`)),ee=O?T.signersToWarm.includes(`ed25519`):T.ed25519DependsOnEcdsa,k=O?!1:T.ecdsaDependsOnEd25519,j=Nb({requiresLocalPasskeyUnlock:m,hasLoginCredential:!!d,routeAuthorization:t.routeAuthorization,warmupPlan:T});await h();let M=bS(`threshold-login`),te=T.signersToWarm.includes(`ed25519`)?ee?{kind:`ecdsa_authorized`,thresholdSessionId:M}:{kind:`fresh`}:{kind:`not_requested`};switch(j.kind){case`existing_passkey_credential`:case`no_passkey_credential_required`:break;case`wallet_custody`:if(t.ed25519SessionAuthority.kind!==`passkey`)throw Error(`[login] wallet custody requires passkey wallet authority`);if(!C||C.ed25519.kind!==`active`)throw TS();te={kind:`wallet_custody`,thresholdSessionId:M,custody:{...C,ed25519:C.ed25519}};break;default:return Q(j)}if(a&&!v&&te.kind!==`wallet_custody`)throw Error(`[login] threshold warm-up requires threshold key material for ${a.nearAccountId} signer slot ${t.signerSlot}`);let ne=d?ar(d):``,re=String(ne||r.find(e=>e.signerSlot===f)?.credentialId||r[0]?.credentialId||``).trim(),N=d?{kind:`available`,credential:d,localPasskeyCredentialIdB64u:re}:re?{kind:`credential_id_only`,localPasskeyCredentialIdB64u:re}:{kind:`unavailable`,localPasskeyCredentialIdB64u:``},ie=o?{kind:`available`,runtimeScopeBootstrap:o}:{kind:`unavailable`},ae=await cS({statusReads:A,context:e,signingEngine:s,walletIdentity:l,signerSlot:t.signerSlot,thresholdKeyMaterial:v,relayerUrl:t.relayerUrl,relayerKeyId:v?.relayerKeyId||``,participantIds:w,ttlMs:_.ttlMs,unlockRemainingUses:CS(_.unlockRemainingUses),ecdsaContext:T.ecdsaContext,credentialState:N,runtimeScopeBootstrapState:ie,signersToWarm:T.signersToWarm,ed25519DependsOnEcdsa:ee,ecdsaDependency:k?{kind:`ed25519_wallet_session_authority`}:{kind:`none`},ed25519MintPlan:te,ed25519SessionAuthority:t.ed25519SessionAuthority,routeAuthorization:t.routeAuthorization,passkeyExchangeEcdsaActivation:D,passkeyUnlockEd25519Session:x,passkeyUnlockWalletSessionAuthorization:S});if(T.signersToWarm.includes(`ed25519`)){let e=ae.ed25519Session;if(!e)throw Error(`[login] threshold warm-up omitted the Ed25519 session result`);let t=E(`threshold warm-up`,Rx({session:e,authMethod:p}));return R(i,u,{phase:G.STEP_05_ED25519_SIGNING_SESSION_READY,status:`succeeded`,authMethod:`warm_session`}),T.signersToWarm.includes(`ecdsa`)&&R(i,u,{phase:G.STEP_05_ECDSA_SIGNING_SESSION_READY,status:`succeeded`,authMethod:`warm_session`}),{kind:`threshold_login_warmup_ready`,signingSession:t,signersWarmed:T.signersToWarm}}if(T.signersToWarm.length!==1||T.signersToWarm[0]!==`ecdsa`)throw Error(`[login] threshold warm-up signer selection is invalid`);return R(i,u,{phase:G.STEP_05_ECDSA_SIGNING_SESSION_READY,status:`succeeded`,authMethod:`warm_session`}),{kind:`threshold_login_ecdsa_only_warmup_ready`,signersWarmed:[`ecdsa`]}},O=async n=>{await s.setLastUser(l.walletId,n),l.kind===`near_ed25519_capable_wallet`&&(t.kind===`near_wallet`&&t.operationalPublicKey===null||await s.activateAuthenticatedWalletState({walletId:l.walletId,nearAccountId:kr(l.nearAccountId),signerSlot:n,nearClient:e.nearClient}))},ee=async()=>{await s.getNonceCoordinator().recoverDurableLeases({walletId:l.walletId}).catch(e=>{console.warn(`[login] nonce lane durable recovery after unlock failed`,e)})},k=Mb({requiresLocalPasskeyUnlock:m,requireThresholdWarmup:v,hasLoginCredential:!!d});switch(k.kind){case`wallet_unlock_owns_passkey_credential`:case`passkey_credential_already_collected`:case`no_local_passkey_required`:break;case`local_unlock_passkey_assertion`:await g();break;default:return Q(k)}let A=new el;if(v&&p===H.passkey){let t=await Ox({context:e,walletIdentity:l,selection:c,ttlMs:_.ttlMs,remainingUses:CS(_.unlockRemainingUses)}),n=String(e.configs.network.relayer.url||``).trim(),a=String(s.getRpId()||``).trim();if(!n||!a)throw Error(`[login] passkey wallet unlock requires relayer URL and rpId`);let o=await Px({context:e,walletIdentity:l,unlockSubjectId:u,onEvent:i,authenticators:r,signerSlot:f,remainingUses:CS(_.unlockRemainingUses),relayUrl:n,rpId:a,expectedOrigin:void 0,activation:t,collectCredentialForChallenge:async e=>await h({challengeB64u:e.challengeB64u,saveAsLoginCredential:!0,credentialIds:e.credentialIds})},A);d=o.credential,b=o.activation,x=o.result.ed25519Session,S=o.result.walletSessionAuthorization??(o.activation?Cx(o.activation.sessionActivation):null),C=o.custody,await Dx({walletId:String(l.walletId),unlock:o}),w=bb()}if(!d)throw Error(`[login] successful Passkey unlock omitted its credential`);if(await Vb({context:e,walletIdentity:l,credential:d}),v){let t=await hb({walletId:l.walletId,authMethod:p}),i=wx({completedActivation:b,request:n?.ecdsaKeyFactsInventory,routeAuthorization:w,wantsEcdsaWarmup:Rb({subjectSet:l.subjectSet,selection:c,hasConfiguredEcdsaTargets:cr(e.configs.network.chains).length>0}).wantsEcdsaWarmup});if(T=await D(zb({context:e,signerSlot:f,authenticators:r,selection:c,subjectSet:l.subjectSet,authMethod:p,authMethodBinding:t,keyFactsInventoryAuthority:i,routeAuthorization:w})),p===H.passkey){let t=d;if(!t)throw Error(`[login] passkey threshold warm-up completed without a credential`);await Bb({context:e,statusReads:A,walletIdentity:l,signersWarmed:T.signersWarmed,credential:t})}}if(await O(f),ee(),S&&d&&C){let t=tr(d);t&&uC({context:e,sessionAuthority:S,factor:{kind:`passkey`,rpId:s.getRpId(),credentialIdB64u:ar(d),prfFirstB64u:t},ownedFactorSecret:F(t).slice().buffer,custodyEnvelope:C.envelope})}let j=Kb({identity:l,accountSubject:t}),M=T?{...j,...T.kind===`threshold_login_warmup_ready`?{signingSession:T.signingSession}:{}}:j;return R(i,u,{phase:G.STEP_06_SESSION_READY,status:`succeeded`,authMethod:d?`passkey`:void 0}),await Vn({context:e,authMethod:p,unlockSubjectId:u,loginResult:M,onEvent:i,afterCall:o})}catch(t){return console.warn(`[login] unlock failed before active session commit`,{unlockSubjectId:u,message:t&&typeof t==`object`&&`message`in t?String(t.message||``):String(t||``)}),await xx({context:e,walletId:l.walletId}),await Ln({unlockSubjectId:u,message:Tt(t,`login`)||`Login failed`,error:t,cancelled:wt(t),onEvent:i,onError:a,afterCall:o})}}async function xx(e){await K.clearLastProfileSelection().catch(()=>void 0);try{e.context.signingEngine.getNonceCoordinator().clearAll()}catch{}try{await e.context.signingEngine.clearVolatileWarmSigningMaterial(e.walletId)}catch{}}function Sx(e){return Fl(e)?e.activation.session.threshold_session_id:e.session.threshold_session_id}function Cx(e){return Fl(e)?e.authorization:{record:e.session.wallet_session,operationCredential:e.session.operation_credential}}function wx(e){if(!e.wantsEcdsaWarmup)return null;if(e.completedActivation){let t;try{let n=e.completedActivation.sessionActivation;if(Fl(n))t=st(n.authorization.operationCredential);else{let n=e.completedActivation.response;if(n.kind!==`router_ab_ecdsa_post_registration_session_activated_v1`)throw Error(`completed ECDSA unlock activation branch is invalid`);t=st(n.session.operation_credential)}}catch{throw Error(`[login] completed ECDSA unlock omitted a valid Wallet Session operation credential`)}return{kind:`wallet_session_operation_credential_v1`,operationCredential:t}}let t=vb({request:e.request??null,routeAuthorization:e.routeAuthorization});if(t?.kind===`webauthn`)throw Error(`[login] ECDSA warm-up requires the Wallet Session minted by the unlock assertion`);return t}function Tx(e){let t=e.continuity.signers.find(t=>B(t.chainTarget)===e.prepared.targetKey);if(!t)throw Error(`Passkey ECDSA custody continuity omitted the requested chain target`);let n=t.walletKey.publicCapability,r=t.activationReceipt,i=r.ecdsa_activation,a=e.response.normal_signing.scope;if(t.walletKey.walletId!==e.walletId||t.walletKey.keyHandle!==e.prepared.policy.key_handle||e.response.session.threshold_session_id!==e.prepared.policy.session_policy.threshold_session_id||!Gx(t.runtimePolicyScope,e.prepared.policy.session_policy.runtime_policy_scope)||!Qa(e.response.public_capability,n)||!ho(e.activationReceipt,r)||n.context.application_binding_digest_b64u!==i.context.application_binding_digest_b64u||!Ka(n.public_identity,i.public_identity)||!oo(n.material_activation,i.material_activation)||!qa(n.signer_set.selected_server,i.signing_worker)||n.activation_epoch!==i.activation_epoch||a.context.application_binding_digest_b64u!==i.context.application_binding_digest_b64u||!Ka(a.public_identity,i.public_identity)||!oo(a.material_activation,i.material_activation)||!qa(a.signing_worker,i.signing_worker)||a.activation_epoch!==i.activation_epoch||a.wallet_id!==e.walletId||a.ecdsa_threshold_key_id!==t.walletKey.ecdsaThresholdKeyId||a.signing_root_id!==t.walletKey.signingRootId||a.signing_root_version!==t.walletKey.signingRootVersion)throw Error(`Passkey ECDSA session activation changed custody continuity`)}function Ex(e){let t=e.signer.walletKey.publicCapability.public_identity;if(e.publicFacts.contextBinding32B64u!==t.context_binding_b64u||e.publicFacts.derivationClientSharePublicKey33B64u!==t.derivation_client_share_public_key33_b64u||e.publicFacts.relayerPublicKey33B64u!==t.server_public_key33_b64u||e.publicFacts.groupPublicKey33B64u!==t.threshold_public_key33_b64u||e.publicFacts.ethereumAddress!==aS(t.ethereum_address20_b64u)||e.publicFacts.clientShareRetryCounter!==t.client_share_retry_counter||e.publicFacts.relayerShareRetryCounter!==t.server_share_retry_counter)throw Error(`Passkey ECDSA custody rejoin changed registered public identity`)}async function Dx(e){let t=String(e.unlock.credential.rawId||e.unlock.credential.id||``).trim();if(!t)throw Error(`[login] passkey assertion credential id is missing`);await rn({walletId:e.walletId,credentialIdB64u:t,envelope:e.unlock.custody.envelope})}async function Ox(e){let t=cr(e.context.configs.network.chains);if(!Rb({subjectSet:e.walletIdentity.subjectSet,selection:e.selection,hasConfiguredEcdsaTargets:t.length>0}).wantsEcdsaWarmup)return null;let n=t[0];if(!n)return null;let r=await FS(e.context,e.walletIdentity.walletId,void 0,`passkey`),i=B(n.chainTarget),a=r.ecdsaKeys.find(e=>e.targetKey===i);if(!a)throw wS(i);let o=r.runtimePolicyScope;if(!o)throw Error(`[login] passkey ECDSA activation requires runtime policy scope`);let s=xS(bS(`threshold-ecdsa-login`)),c=SS(bS(`wallet-session-mint`));return{targetKey:i,requiresCustodyRejoin:!a.existingRoleLocalMaterial,policy:{kind:`router_ab_ecdsa_post_registration_session_activation_policy_v1`,key_handle:a.keyHandle,session_policy:{threshold_session_id:s,wallet_session_mint_id:c,ttl_ms:e.ttlMs,remaining_uses:e.remainingUses,runtime_policy_scope:o}}}}function kx(e){switch(e.walletIdentity.kind){case`near_ed25519_capable_wallet`:return{kind:`requested`,remainingUses:e.remainingUses};case`evm_family_ecdsa_only_wallet`:return{kind:`not_requested`};default:return Q(e.walletIdentity)}}function Ax(e){return e.activation?{type:`passkey_assertion`,challengeId:e.challengeId,walletId:String(e.walletIdentity.walletId),webauthn_authentication:e.credential,ed25519SessionRequest:e.ed25519SessionRequest,expected_origin:e.expectedOrigin,ecdsaSessionPolicy:e.activation.policy}:{type:`passkey_assertion`,challengeId:e.challengeId,webauthn_authentication:e.credential,ed25519SessionRequest:e.ed25519SessionRequest,expected_origin:e.expectedOrigin}}async function jx(e){let t=await K.getWalletAuthMethodV2(e.authorization.record.authMethodId);if(!t||t.kind!==`passkey`||t.status!==`active`||t.walletId!==e.walletId||t.walletAuthorityId!==e.authorization.record.authorityId)throw Error(`Passkey Wallet Session authorization changed auth-method identity`);let n=await K.getWalletAuthority(t.walletAuthorityId);if(!n||n.state!==`active`||n.walletId!==e.walletId||n.authorityId!==e.authorization.record.authorityId||n.authorityDigestB64u!==e.authorization.record.authorityDigestB64u||n.revocationEpoch!==e.authorization.record.authorityRevocationEpoch)throw Error(`Passkey Wallet Session authorization changed authority identity`);return{reference:await Jy(t),identity:eu({authority:n,walletAuthMethodId:t.walletAuthMethodId})}}async function Mx(e){let t=ar(e.credential);if(!t)throw Error(`Passkey Wallet Session adoption requires WebAuthn credential identity`);let n=await Jn({walletId:e.walletIdentity.walletId,rpId:e.rpId,credentialIdB64u:t}),r=await jx({walletId:e.walletIdentity.walletId,authorization:e.authorization});if(e.authorization.record.walletId!==e.walletIdentity.walletId||e.authorization.record.authMethodId!==n.walletAuthMethodId||e.authorization.record.authorityId!==n.walletAuthorityId||r.reference.walletId!==e.walletIdentity.walletId)throw Error(`Passkey Wallet Session authorization changed auth-method identity`);return r}function Nx(e,t){return{...e,session_policy:{...e.session_policy,wallet_session_mint_id:SS(t)}}}async function Px(e,t){R(e.onEvent,e.unlockSubjectId,{phase:G.STEP_03_PASSKEY_CHALLENGE_STARTED,status:`running`,authMethod:`passkey`});let n=await fetch(a(e.relayUrl,`/wallet/unlock/challenge`),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({unlockBackend:`passkey`,userId:String(e.walletIdentity.walletId),rpId:e.rpId})}),r=await n.json().catch(()=>({})),i=O(r)?r:{},o=typeof i.message==`string`?i.message:``;if(!n.ok||i.ok!==!0)throw Error(o||`wallet/unlock/challenge failed (HTTP ${n.status})`);let s=String(i.challengeId||``).trim(),c=String(i.challengeB64u||``).trim();if(!s||!c)throw Error(`wallet/unlock/challenge returned invalid challenge`);let l=e.activation?{...e.activation,policy:Nx(e.activation.policy,s)}:null,u=Lb({authenticators:e.authenticators,signerSlot:e.signerSlot,serverCredentialIds:Ib(i.credentialIds)}),d=await e.collectCredentialForChallenge({challengeB64u:c,credentialIds:u}),f=String(e.expectedOrigin??(typeof window<`u`?window.location.origin:``)).trim();if(!f)throw Error(`[login] passkey wallet unlock requires an expected origin`);let p=Ax({challengeId:s,credential:d,ed25519SessionRequest:kx({walletIdentity:e.walletIdentity,remainingUses:e.remainingUses}),expectedOrigin:f,walletIdentity:e.walletIdentity,activation:l}),m=await vn(e.relayUrl,p,t);if(!m.success)throw Error(m.error||`Passkey wallet unlock failed`);if(!m.walletCustody)throw Error(`Passkey wallet unlock omitted wallet custody continuity`);if(l&&(!m.ecdsaSession||!m.ecdsaActivationReceipt||!m.ecdsaCustody))throw Error(`Passkey wallet unlock omitted the requested ECDSA activation`);let h=m.walletSessionAuthorization??null,g=h?await Mx({walletIdentity:e.walletIdentity,rpId:e.rpId,credential:d,authorization:h}):null,_=null;if(l&&m.ecdsaSession&&m.ecdsaActivationReceipt&&m.ecdsaCustody&&m.ecdsaSession.kind===`router_ab_ecdsa_credential_free_session_activated_v1`){let e=m.walletSessionAuthorization;if(!e)throw Error(`Passkey credential-free activation omitted exact Wallet Session authority`);if(!g)throw Error(`Passkey credential-free activation omitted exact Passkey authority`);_={kind:`credential_free_ecdsa_session_activation_authorization_v1`,activation:m.ecdsaSession,authorization:e}}l&&m.ecdsaSession&&m.ecdsaActivationReceipt&&m.ecdsaCustody&&(Tx({walletId:String(e.walletIdentity.walletId),prepared:l,response:m.ecdsaSession,activationReceipt:m.ecdsaActivationReceipt,continuity:m.ecdsaCustody}),m.ecdsaSession.kind===`router_ab_ecdsa_post_registration_session_activated_v1`&&(_=m.ecdsaSession));let v=_?await Mx({walletIdentity:e.walletIdentity,rpId:e.rpId,credential:d,authorization:Cx(_)}):null;if(h&&await q.writeExactWithOperationCredential(h),l?.requiresCustodyRejoin){if(!(`ecdsaCustody`in m)||!m.ecdsaCustody)throw Error(`Passkey wallet unlock omitted ECDSA custody rejoin continuity`);let t=tr(d);if(!t)throw Error(`Passkey ECDSA custody rejoin requires WebAuthn PRF.first`);let n=ar(d),r=v?.reference??g?.reference??await kt({walletId:e.walletIdentity.walletId,rpId:e.rpId,credentialIdB64u:n});await sS({signingEngine:e.context.signingEngine,walletId:String(e.walletIdentity.walletId),custody:m.walletCustody,continuity:m.ecdsaCustody,authority:r,passkeyPrfFirstB64u:t})}return{credential:d,activation:l&&m.ecdsaSession&&_&&v?{...l,response:m.ecdsaSession,sessionActivation:_,authorizationIdentity:v.identity,activationReceipt:m.ecdsaActivationReceipt,continuity:m.ecdsaCustody}:null,custody:m.walletCustody,result:m}}var Fx=class{constructor(){this.settled=!1,this.promise=new Promise(this.capturePromise.bind(this))}resolve(e){this.settled||(this.settled=!0,this.resolvePromise(e))}reject(e){this.settled||(this.settled=!0,this.rejectPromise(I(e)))}async wait(){return await this.promise}capturePromise(e,t){this.resolvePromise=e,this.rejectPromise=t}};async function Ix(e,t){e.sharedState.ed25519.thresholdSessionId=String(t.thresholdSessionId),e.sharedState.ed25519.authorizationId=t.authorizationId,e.sharedState.ed25519.walletSessionId=t.walletSessionId,e.sharedState.ed25519.quotaId=t.quotaId,e.sharedState.ed25519.operationCredential=t.operationCredential,e.sharedState.ed25519.expiresAtMs=t.expiresAtMs,e.sharedState.ed25519.remainingUses=t.remainingUses,e.sharedState.ed25519.runtimePolicyScope=t.runtimePolicyScope,e.authorityDeferred?.resolve(t)}function Lx(e,t){e?.reject(t)}function Rx(e){return{sessionId:String(e.session.thresholdSessionId),status:`active`,authMethod:e.authMethod,...e.authMethod===H.emailOtp?{retention:`session`}:{},remainingUses:e.session.remainingUses,expiresAtMs:e.session.expiresAtMs}}function zx(e){return e?.kind===`opaque_wallet_session_operation_credential_v1`}function Bx(e){let t=e.thresholdEcdsaKeyRef.backendBinding;if(t)switch(t.materialKind){case`role_local_worker_handle`:case`role_local_durable_sealed_ref`:case`role_local_durable_public_anchor`:return t.publicFacts.publicCapability;case`role_local_ready_state_blob`:return t.ecdsaRoleLocalReadyRecord.publicFacts.publicCapability;case`metadata_only`:return}}function Vx(e){return JSON.stringify(e)}function Hx(e){let t=Bx(e);if(!t)throw Error(`[login] ECDSA bootstrap is missing its public capability`);let n=e.session,r=e.thresholdEcdsaKeyRef.routerAbEcdsaDerivationNormalSigning;if(!r)throw Error(`[login] ECDSA bootstrap is missing normal-signing state`);return{kind:`router_ab_ecdsa_post_registration_session_activated_v1`,public_capability:t,session:{authorization_session_id:n.authorizationSessionId,authorization_id:n.authorizationId,threshold_session_id:xS(n.thresholdSessionId),wallet_session_id:n.walletSessionId,quota_id:n.quotaId,expires_at_ms:n.expiresAtMs,remaining_uses:n.remainingUses,wallet_session:n.walletSession,operation_credential:n.operationCredential},normal_signing:r}}function Ux(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function Wx(e,t){return e.kind===t.kind&&e.signingWorkerId===t.signingWorkerId}function Gx(e,t){return e.orgId===t.orgId&&e.projectId===t.projectId&&e.envId===t.envId&&e.signingRootVersion===t.signingRootVersion}function Kx(e){if(e.current.runtimePolicyScope&&e.incoming.runtimePolicyScope&&!Gx(e.current.runtimePolicyScope,e.incoming.runtimePolicyScope))throw Error(`[login] threshold ECDSA ${e.source} has a conflicting runtime policy scope`);return iy(e.current,e.incoming)}async function qx(e){if(e.targetEcdsaKey.publicCapability.kind===`persisted_public_capability`){let t=e.targetEcdsaKey.publicCapability.value;if(String(t.client_id)!==String(e.walletId))throw Error(`[login] threshold ECDSA persisted public capability wallet mismatch for ${B(e.chainTarget)}`);return t}let t=await Ev({walletId:e.walletId,chainTarget:e.chainTarget});if(t.kind!==`resolved`)throw wS(B(e.chainTarget));let n=t.manifest.durableMaterial.roleLocalPublicFacts;if(String(n.keyHandle)!==String(e.targetEcdsaKey.keyHandle)||String(n.walletId)!==String(e.walletId))throw wS(B(e.chainTarget));return n.publicCapability}function Jx(e){let t=[];for(let n of e)n!==`ed25519`&&n!==`ecdsa`||t.includes(n)||t.push(n);return t}async function Yx(e){try{return await e.run(),{kind:`succeeded`,task:e}}catch(t){return e.onFailure?.(t),{kind:`failed`,task:e,error:I(t)}}}async function Xx(e){let t=new Map;for(let n of e)t.set(n.signer,n);let n=new Set;for(;t.size>0;){let e=[];for(let r of t.values())r.dependencies.every(e=>n.has(e))&&e.push(r);if(e.length===0)throw Error(`[login] threshold warm-up task dependency graph is unsatisfied`);let r=await Promise.all(e.map(Yx)),i=null;for(let e of r)switch(e.kind){case`succeeded`:n.add(e.task.signer),t.delete(e.task.signer);break;case`failed`:i??=e.error;break;default:return Q(e)}if(i)throw i}}function Zx(e){if(e.routeAuthorization.kind,e.credentialState.kind===`available`)return{};throw Error(`[login] threshold ECDSA warm-up requires route authorization`)}function Qx(e){return String((e&&typeof e==`object`&&`message`in e?e.message:e)||``)}function Q(e){throw Error(`[login] unexpected state: ${String(e)}`)}async function $x(e){switch(e.runtimeScopeBootstrapState.kind){case`available`:return await e.signingEngine.bootstrapEcdsaSession({...e.request,runtimeScopeBootstrap:e.runtimeScopeBootstrapState.runtimeScopeBootstrap});case`unavailable`:return await e.signingEngine.bootstrapEcdsaSession(e.request);default:return Q(e.runtimeScopeBootstrapState)}}function eS(e){if(`operationCredential`in e)return e.operationCredential;throw Error(`[login] wallet custody Ed25519 activation requires the exact issued operation credential`)}async function tS(e){let t=await e.signingEngine.getUserBySignerSlot(e.walletBinding.nearAccountId,e.signerSlot).catch(()=>null);if(t){if(t.walletId!==String(e.walletBinding.walletId)||t.nearEd25519SigningKeyId!==String(e.walletBinding.nearEd25519SigningKeyId)||t.signerSlot!==e.signerSlot)throw Error(`[login] local Ed25519 owner profile identity is invalid`);return}await e.signingEngine.storeUserData({walletId:String(e.walletBinding.walletId),nearAccountId:e.walletBinding.nearAccountId,nearEd25519SigningKeyId:String(e.walletBinding.nearEd25519SigningKeyId),signerSlot:e.signerSlot,operationalPublicKey:`ed25519:${Er(e.registeredPublicKey)}`,passkeyCredential:{id:e.credentialIdB64u,rawId:e.credentialIdB64u},lastUpdated:Date.now(),version:2})}function nS(e,t){let n=e.ed25519.capability,r=n.registrationContinuity;return{materialActivation:n.materialActivation,lifecycleId:n.lifecycle.lifecycleId,signingRootVersion:n.lifecycle.rootShareEpoch,signingRootId:n.applicationBinding.signing_root_id,signerSetId:n.lifecycle.signerSetId,thresholdSessionId:t,activationTranscriptB64u:P(Uint8Array.from(r.activationTranscript)),activationCapabilityBindingB64u:P(Uint8Array.from(n.activeCapabilityBinding))}}function rS(e){let t=e.custody.ed25519,n=t.capability;if(t.nearAccountId!==String(e.walletBinding.nearAccountId)||t.nearEd25519SigningKeyId!==String(e.walletBinding.nearEd25519SigningKeyId)||t.signerSlot!==e.signerSlot||n.applicationBinding.wallet_id!==String(e.walletBinding.walletId)||n.applicationBinding.near_ed25519_signing_key_id!==String(e.walletBinding.nearEd25519SigningKeyId)||n.applicationBinding.key_creation_signer_slot!==e.signerSlot||n.nearAccountId!==e.walletBinding.nearAccountId||n.lifecycle.accountId!==String(e.walletBinding.walletId)||n.lifecycle.signingWorkerId!==t.relayerKeyId)throw Error(`[login] wallet custody identity does not match the selected signing lane`)}async function iS(e){rS(e);let t=e.custody.ed25519.capability,n=await e.signingEngine.loadWalletCustodyEd25519Material({nearAccountId:String(e.walletBinding.nearAccountId),signerSlot:e.signerSlot,expectedRegisteredPublicKeyB64u:P(Uint8Array.from(t.registeredPublicKey))}),r=s(e.walletSession.thresholdSessionId);if(!r.ok)throw Error(`[login] wallet custody returned an invalid threshold session identity`);let i=nS(e.custody,r.value),a=Tn(e.custody.envelope),o=null,c=null,l=null;try{if(n.kind===`found`)l=F(e.passkeyPrfFirstB64u),o=await sr({material:n.material,activation:i,envelope:a,ownedFactorSecret:l});else{let n=kn(e.custody.envelope);if(!n.ok)throw Error(n.reason);c=F(e.passkeyPrfFirstB64u),l=F(e.passkeyPrfFirstB64u);let r=await e.signingEngine.rejoinWalletCustodyNearEd25519KeySet({walletId:String(e.walletBinding.walletId),custodyJson:n.custodyJson,factorSecret:c.buffer,nearEd25519SigningKeyId:String(e.walletBinding.nearEd25519SigningKeyId),recoveryBasis:t,routerOrigin:new URL(e.relayerUrl).origin,walletSessionToken:eS(e.walletSession).token}),i={kind:ta,applicationBindingDigestB64u:r.localMaterial.applicationBindingDigestB64u,registeredPublicKeyB64u:P(r.metadata.registeredPublicKey),participantIds:r.metadata.participantIds,stateEpoch:String(r.metadata.stateEpoch),walletId:String(e.walletBinding.walletId),nearAccountId:String(e.walletBinding.nearAccountId),nearEd25519SigningKeyId:String(e.walletBinding.nearEd25519SigningKeyId),signerSlot:e.signerSlot,signingWorkerId:e.custody.ed25519.relayerKeyId,signingWorkerVerifyingShareB64u:P(r.metadata.signingWorkerVerifyingShare)},s={ciphertextB64u:r.localMaterial.b64u,nonceB64u:r.localMaterial.nonceB64u};try{await e.signingEngine.persistWalletCustodyEd25519Material({binding:i,sealed:s})}catch(e){console.warn(`[login] wallet custody cache write failed; continuing with verified material`,{error:e})}o=await sr({material:{binding:i,sealed:s},activation:Jt(r.metadata),envelope:a,ownedFactorSecret:l})}if(!o)throw Error(`[login] wallet custody produced no active client`);let r=s(o.metadata().scope.threshold_session_id);if(!r.ok)throw Error(`[login] wallet custody returned an invalid threshold session identity`);if(r.value!==e.walletSession.thresholdSessionId)throw Error(`[login] wallet custody changed the threshold session identity`);let u=e.custody.envelope.factor;if(u.kind!==`passkey`)throw Error(`[login] wallet custody returned a different factor authority`);await tS({signingEngine:e.signingEngine,walletBinding:e.walletBinding,signerSlot:e.signerSlot,credentialIdB64u:u.credentialIdB64u,registeredPublicKey:o.metadata().registeredPublicKey}),await xr({store:K,activeClient:o,identity:{walletId:String(e.walletBinding.walletId),nearAccountId:String(e.walletBinding.nearAccountId),nearEd25519SigningKeyId:String(e.walletBinding.nearEd25519SigningKeyId),thresholdSessionId:r.value,signerSlot:e.signerSlot,rpId:u.rpId,credentialIdB64u:u.credentialIdB64u,signingRootId:t.applicationBinding.signing_root_id,signingRootVersion:t.lifecycle.rootShareEpoch,signingWorkerId:e.custody.ed25519.relayerKeyId},stableServerScope:{relayerKeyId:e.custody.ed25519.relayerKeyId,participantIds:e.custody.ed25519.participantIds,runtimePolicyScope:t.runtimePolicyScope,routerAbNormalSigning:e.routerAbNormalSigning},passkeyPrfFirstB64u:e.passkeyPrfFirstB64u});let d=await e.signingEngine.activateVerifiedNearEd25519YaoMaterial({activeClient:o,facts:{thresholdSessionId:r.value,signer:Vc({walletId:e.walletBinding.walletId,nearAccountId:e.walletBinding.nearAccountId,nearEd25519SigningKeyId:e.walletBinding.nearEd25519SigningKeyId,signerSlot:e.signerSlot}),signingRootId:t.applicationBinding.signing_root_id,signingRootVersion:t.lifecycle.rootShareEpoch,routerAbNormalSigning:e.routerAbNormalSigning,runtimePolicyScope:t.runtimePolicyScope,relayerUrl:e.relayerUrl}}),f=yn({walletId:String(e.walletBinding.walletId),nearAccountId:String(e.walletBinding.nearAccountId),nearEd25519SigningKeyId:String(e.walletBinding.nearEd25519SigningKeyId),walletSessionId:e.walletSession.walletSessionId,authorizationId:e.walletSession.authorizationId,quotaId:e.walletSession.quotaId,thresholdSessionId:r.value,remainingUses:e.walletSession.remainingUses,expiresAtMs:e.walletSession.expiresAtMs,runtimePolicyScope:e.walletSession.runtimePolicyScope,signingRootId:t.applicationBinding.signing_root_id,signingRootVersion:t.lifecycle.rootShareEpoch,routerAbNormalSigning:e.routerAbNormalSigning,walletSessionToken:eS(e.walletSession).token,home:eS(e.walletSession).home,nowMs:Math.min(Date.now(),e.walletSession.expiresAtMs-1)});if(!f.ok)throw Error(`[login] wallet custody returned an unusable Ed25519 Wallet Session: ${f.reason}`);let p=Sr({walletId:e.walletBinding.walletId,nearAccountId:e.walletBinding.nearAccountId,nearEd25519SigningKeyId:e.walletBinding.nearEd25519SigningKeyId,signerSlot:e.signerSlot,rpId:Ha(u.rpId),credentialIdB64u:u.credentialIdB64u,relayerUrl:e.relayerUrl,authority:e.authority,signingWalletSession:f.value});await Ht({persistence:e.signingEngine,session:p,prfFirstB64u:e.passkeyPrfFirstB64u,ed25519Restore:xn({rpId:u.rpId,nearAccountId:String(e.walletBinding.nearAccountId),nearEd25519SigningKeyId:String(e.walletBinding.nearEd25519SigningKeyId),relayerKeyId:e.custody.ed25519.relayerKeyId,participantIds:e.custody.ed25519.participantIds,runtimePolicyScope:e.walletSession.runtimePolicyScope,signerSlot:e.signerSlot,routerAbNormalSigning:e.routerAbNormalSigning,credentialIdB64u:u.credentialIdB64u,materialActivation:d.materialActivation}),materialActivation:d.materialActivation}),await e.signingEngine.establishUnlockedWalletEd25519ExportRootCapabilityV1({existingEnvelope:e.custody.envelope,passkeyPrfFirstB64u:e.passkeyPrfFirstB64u,walletId:String(e.walletBinding.walletId),walletAuthMethodId:String(e.authority.walletAuthMethodId),walletSessionId:String(e.walletSession.walletSessionId),expiresAtMs:e.walletSession.expiresAtMs})}catch(e){throw o?.dispose(),e}finally{c?.fill(0),l?.fill(0)}}function aS(e){let t=F(e);if(t.length!==20)throw Error(`[login] ECDSA custody address is invalid`);let n=`0x`;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n}function oS(e){let[t,...n]=e;if(!t)throw Error(`[login] passkey ECDSA custody continuity is empty`);return[t.chainTarget,...n.map(e=>e.chainTarget)]}async function sS(e){let t=e.continuity.signers[0];if(!t)throw Error(`[login] passkey ECDSA custody continuity is empty`);if(t.walletKey.walletId!==e.walletId)throw Error(`[login] passkey ECDSA custody continuity changed wallet identity`);for(let n of e.continuity.signers)if(n.walletKey.walletId!==t.walletKey.walletId||n.walletKey.keyHandle!==t.walletKey.keyHandle||n.walletKey.ecdsaThresholdKeyId!==t.walletKey.ecdsaThresholdKeyId||n.walletKey.signingRootId!==t.walletKey.signingRootId||n.walletKey.signingRootVersion!==t.walletKey.signingRootVersion||n.walletKey.relayerKeyId!==t.walletKey.relayerKeyId||!Qa(n.walletKey.publicCapability,t.walletKey.publicCapability)||!ho(n.activationReceipt,t.activationReceipt)||!Gx(n.runtimePolicyScope,t.runtimePolicyScope))throw Error(`[login] passkey ECDSA custody continuity conflicts across targets`);let n=kn(e.custody.envelope);if(!n.ok)throw Error(n.reason);let r=F(e.passkeyPrfFirstB64u);try{let i=await e.signingEngine.rejoinWalletCustodyEvmFamilyKeySet({walletId:e.walletId,custodyJson:n.custodyJson,factorSecret:r.buffer,evmFamilySigningKeySlotId:Ga({walletId:e.walletId,signingRootId:t.walletKey.signingRootId,signingRootVersion:t.walletKey.signingRootVersion}),applicationBindingDigestB64u:t.walletKey.publicCapability.context.application_binding_digest_b64u,registeredClientRootPublicKey33B64u:t.walletKey.derivationClientSharePublicKey33B64u,relayerPublicIdentityJson:JSON.stringify({relayerKeyId:t.walletKey.relayerKeyId,relayerPublicKey33B64u:t.activationReceipt.ecdsa_activation.public_identity.server_public_key33_b64u,groupPublicKey33B64u:t.activationReceipt.ecdsa_activation.public_identity.threshold_public_key33_b64u,ethereumAddress:aS(t.activationReceipt.ecdsa_activation.public_identity.ethereum_address20_b64u),relayerShareRetryCounter:t.activationReceipt.ecdsa_activation.public_identity.server_share_retry_counter})});Ex({publicFacts:i.publicFacts,signer:t}),await e.signingEngine.restoreWalletCustodyEcdsaContinuity({authority:e.authority,chainTargets:oS(e.continuity.signers),walletId:t.walletKey.walletId,keyHandle:t.walletKey.keyHandle,ecdsaThresholdKeyId:t.walletKey.ecdsaThresholdKeyId,signingRootId:t.walletKey.signingRootId,signingRootVersion:t.walletKey.signingRootVersion,relayerKeyId:t.walletKey.relayerKeyId,participantIds:t.walletKey.participantIds,publicCapability:t.walletKey.publicCapability,activationReceipt:t.activationReceipt,runtimePolicyScope:t.runtimePolicyScope,readyStateBlobB64u:i.readyStateBlobB64u,publicFacts:i.publicFacts})}finally{r.fill(0)}}async function cS(e){let t=Jx(e.signersToWarm),n=e.credentialState.kind===`available`?e.credentialState.credential:void 0,r=e.credentialState.localPasskeyCredentialIdB64u,i=e.runtimeScopeBootstrapState.kind===`available`?e.runtimeScopeBootstrapState.runtimeScopeBootstrap:null,a=e.ecdsaContext,o={activeCanonicalEcdsaContext:a,ed25519:{thresholdSessionId:``,authorizationId:null,walletSessionId:null,quotaId:null,operationCredential:null,expiresAtMs:0,remainingUses:0,runtimePolicyScope:null}},s=e.ecdsaDependency.kind===`ed25519_wallet_session_authority`?new Fx:null,c={generatedThresholdSessionId:e.passkeyExchangeEcdsaActivation?.policy.session_policy.threshold_session_id||``},l=e.unlockRemainingUses,u=[],d=null,f=null,p=[];return t.includes(`ed25519`)&&p.push({signer:`ed25519`,dependencies:e.ed25519DependsOnEcdsa?[`ecdsa`]:[],onFailure:s?Lx.bind(void 0,s):null,run:async()=>{let t=Vy(e.walletIdentity),c=f,u=Tb({authority:wb(e.ed25519SessionAuthority),walletId:t.walletId,rpId:e.context.signingEngine.getRpId(),credentialIdB64u:r}),p=Ob({mintPlan:e.ed25519MintPlan,ecdsaMint:c,walletBinding:t,signerSlot:e.signerSlot,authority:u}),m=Ab({mintPlan:e.ed25519MintPlan,fallback:{relayerKeyId:e.relayerKeyId,participantIds:e.participantIds,runtimePolicyScope:a.runtimePolicyScope??null,routerAbNormalSigning:Mv(e.context.configs)}}),h={relayerUrl:e.relayerUrl,relayerKeyId:m.relayerKeyId,runtimePolicyScope:m.runtimePolicyScope||void 0,routerAbNormalSigning:m.routerAbNormalSigning,runtimeScopeBootstrap:i||void 0,participantIds:m.participantIds,ttlMs:e.ttlMs,remainingUses:l,onWalletSessionAuthorityReady:Ix.bind(void 0,{sharedState:o,authorityDeferred:s})},g=p.kind===`fresh_ed25519_provisioning`?{...p,walletId:String(t.walletId),nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,signerSlot:e.signerSlot,...h}:{...p,...h},_;switch(u.kind){case`email_otp`:_=await e.signingEngine.connectEd25519Session({...g,source:`email_otp`,authority:u.authority,emailOtpAuthContext:u.emailOtpAuthContext,materialActivation:void 0});break;case`passkey`:if(!e.passkeyUnlockEd25519Session)throw Error(`[login] verified wallet unlock omitted its Ed25519 Wallet Session`);if(e.ed25519MintPlan.kind!==`wallet_custody`)throw Error(`[login] verified unlock Ed25519 session requires wallet custody`);_=jb({session:e.passkeyUnlockEd25519Session,walletBinding:t,signerSlot:e.signerSlot,custody:e.ed25519MintPlan.custody,provisionScope:m,credential:n,remainingUses:l,unlockAuthorization:e.passkeyUnlockWalletSessionAuthorization});break;default:return Q(u)}if(!_.ok){let e=String(_.message||_.code||`Failed to connect threshold Ed25519 session`);throw Error(`[login] threshold Ed25519 warm-up failed: ${e}`)}if(d=_,!_.thresholdSessionId)throw Error(`[login] threshold Ed25519 warm-up did not return a thresholdSessionId`);let v=u.kind===`passkey`?await kt({walletId:t.walletId,rpId:e.context.signingEngine.getRpId(),credentialIdB64u:ar(n||void 0)||r}):await U({authority:u.authority.authority});if(e.ed25519MintPlan.kind===`wallet_custody`){if(u.kind!==`passkey`)throw Error(`[login] wallet custody requires passkey authority`);let r=kb(p,e.ed25519MintPlan),i=n?tr(n):``;if(!i)throw Error(`[login] wallet custody requires WebAuthn PRF.first`);await e.signingEngine.withExactEd25519MaterialOwner({materialActivation:r,nearAccountId:t.nearAccountId,task:iS.bind(void 0,{signingEngine:e.signingEngine,custody:e.ed25519MintPlan.custody,walletBinding:t,signerSlot:e.signerSlot,passkeyPrfFirstB64u:i,walletSession:_,authority:v,routerAbNormalSigning:m.routerAbNormalSigning,relayerUrl:e.relayerUrl})})}}}),t.includes(`ecdsa`)&&p.push({signer:`ecdsa`,dependencies:[],onFailure:null,run:async()=>{await s?.promise;let t=null,i=!1,a=new Map,d=cr(e.context.configs.network.chains),p=e=>{let t=ay({context:o.activeCanonicalEcdsaContext,configuredTargets:d});if(t.kind===`complete_configured_target_keys`){o.activeCanonicalEcdsaContext=t.context;return}t.kind!==`missing_configured_target_keys`&&oy({completion:t,source:e})},m=e=>{if(f)return;let t=e.session.operationCredential,i=n?tr(n):``,a=ar(n||void 0)||r;!t.token||!i||!a||(f={operationCredential:t,passkeyPrfFirstB64u:i,passkeyCredentialIdB64u:a,quotaId:e.session.quotaId})},h=()=>{if(o.ed25519.operationCredential)return{routeAuth:o.ed25519.operationCredential};let n=f?.operationCredential;return n?{routeAuth:n}:t||(t=Zx({credentialState:e.credentialState,routeAuthorization:e.routeAuthorization}),t)},g=async(t,n)=>{if(!n.key)throw Error(`[login] threshold ECDSA warm-up requires configured target key identity`);let s=await qx({walletId:e.walletIdentity.walletId,chainTarget:t.chainTarget,targetEcdsaKey:n}),u=a.get(Vx(s)),d=e.passkeyExchangeEcdsaActivation,f=d&&!i&&d.targetKey===B(t.chainTarget)?d:null,p=f?{sessionActivation:f.sessionActivation,authorizationIdentity:f.authorizationIdentity}:u??null,m=p?Sx(p.sessionActivation):ES({sharedState:c}),g=o.activeCanonicalEcdsaContext.runtimePolicyScope;if(!g)throw Error(`[login] ECDSA session lane requires runtimePolicyScope`);let _=Ja({chainTarget:t.chainTarget,thresholdSessionId:m,ttlMs:e.ttlMs,remainingUses:l,runtimePolicyScope:g}),v=n.existingRoleLocalMaterial;if(!v)throw wS(B(t.chainTarget));if(!r)throw Error(`[login] ECDSA role-local activation requires passkey identity`);let y=v.authority;if(p)return f&&(i=!0),await $x({signingEngine:e.signingEngine,runtimeScopeBootstrapState:e.runtimeScopeBootstrapState,request:{kind:`passkey_preauthorized_ecdsa_bootstrap`,source:`login`,relayerUrl:e.relayerUrl,keyHandle:ja(n.keyHandle),key:n.key,lanePolicy:_,publicCapability:s,existingRoleLocalMaterial:v,authorizationAuthority:y,authorizationIdentity:p.authorizationIdentity,passkeyCredentialIdB64u:r,sessionActivation:p.sessionActivation}});let b=h().routeAuth;if(!zx(b))throw Error(`[login] ECDSA role-local activation requires a verified Wallet Session`);return await $x({signingEngine:e.signingEngine,runtimeScopeBootstrapState:e.runtimeScopeBootstrapState,request:{kind:`wallet_session_reconnect_ecdsa_bootstrap`,source:`login`,relayerUrl:e.relayerUrl,keyHandle:ja(n.keyHandle),key:n.key,lanePolicy:_,publicCapability:s,existingRoleLocalMaterial:v,authorizationAuthority:y,passkeyCredentialIdB64u:r,routeAuth:b}})},_=async()=>{p(`login ECDSA warm-up preflight`);let t=[],n=e.passkeyExchangeEcdsaActivation?.targetKey||null;if(n)for(let e of d)B(e.chainTarget)===n&&t.push(e);for(let e of d)B(e.chainTarget)!==n&&t.push(e);for(let n of t){let t=B(n.chainTarget),r=o.activeCanonicalEcdsaContext.ecdsaKeys.find(e=>e.targetKey===t),i=String(r?.keyHandle||``).trim();if(!r?.key||!i)throw wS(t);let s=await g(n,r);u.push(s),Gt({statusReads:e.statusReads,trigger:`unlock`,signingEngine:e.signingEngine,walletId:e.walletIdentity.walletId,chainTarget:n.chainTarget}),m(s);let c=Hx(s),l=Vx(c.public_capability);if(!a.has(l)){let t=await jx({walletId:e.walletIdentity.walletId,authorization:{record:s.session.walletSession,operationCredential:s.session.operationCredential}});a.set(l,{sessionActivation:c,authorizationIdentity:t.identity})}if(String(s.thresholdEcdsaKeyRef?.keyHandle||``).trim()!==r.keyHandle)throw Error(`[login] threshold ECDSA warm-up returned a different keyHandle for ${t}`)}if(e.passkeyExchangeEcdsaActivation&&!i)throw Error(`[login] passkey exchange ECDSA activation did not match a configured target`)};try{await _()}catch(e){let t=Qx(e)||`Failed to bootstrap threshold ECDSA session`;throw Error(`[login] threshold ECDSA warm-up failed: ${t}`)}}}),await Xx(p),{ecdsaBootstraps:u,ed25519Session:d}}async function lS(e,t,n){let r=e.signingEngine.readWalletAuthenticationState(),i=t??(r.kind===`signed_out`?void 0:r.walletId),a=null,s=null;if(i!==void 0){let e=o(String(i));if(e.ok){if(a=e.value,s=await Wv({walletId:e.value,ports:Bh}),s.kind===`upgrade_required`)throw new ic(`[WalletSession] Wallet Session authorization requires a newer client`);s.kind===`missing`&&(r={kind:`signed_out`})}}let c=await Ny(i);if(c.kind===`no_session_for_wallet`){let e=await Xb(String(c.walletId));e&&(c={kind:`resolved`,walletId:c.walletId,subjectSet:e,source:`local_wallet_authority`})}let l=!1;if(c.kind===`no_session_request`)return tt();if(c.kind===`no_session_for_wallet`){let t=await my(c.walletId);if(t.kind!==`resolved`)return await fS({context:e,walletId:c.walletId,reason:`activation_reconciliation_failed`});if(t.selectors.length>0){l=!0;let n=await Wy({workerCtx:e.signingEngine.getSignerWorkerContext(),selectors:t.selectors});if(n.didFinalize&&(c=await Ny(c.walletId)),c.kind===`no_session_for_wallet`&&n.kind!==`settled`)return await fS({context:e,walletId:c.walletId,reason:n.kind===`pending`?`activation_reconciliation_pending`:`activation_reconciliation_failed`})}}if(c.kind===`no_session_for_wallet`)return await fS({context:e,walletId:c.walletId,reason:c.reason});if(c.kind===`no_session_request`)return tt();if(c.kind===`unresolvable_profile`)return console.warn(`[WalletSession] wallet session profile is unresolvable`,{profileId:c.profileId,reason:c.reason}),tt();if(c.kind===`unresolvable`)return console.warn(`[WalletSession] wallet session identity is unresolvable`,{walletId:String(c.walletId),reason:c.reason}),await fS({context:e,walletId:c.walletId,reason:c.reason});let u=Uy(c.subjectSet);!l&&u.length>0&&Gy(await Wy({workerCtx:e.signingEngine.getSignerWorkerContext(),selectors:u})),e.signingEngine.assertSealedRefreshStartupParity().catch(e=>{console.warn(`[WalletSession] sealed refresh startup parity check failed during session read; continuing with cached login state`,e instanceof Error?e.message:String(e||`unknown error`))});let[d,f]=await Promise.all([tC(e,c),pS(e,c.walletId,n)]),p=s&&a&&String(a)===String(c.walletId)?s:await Wv({walletId:c.walletId,ports:Bh}),m={kind:`signed_out`};switch(p.kind){case`authenticated`:await dS(e,p.state)&&(m=p.state);break;case`missing`:break;case`upgrade_required`:throw new ic(`[WalletSession] Wallet Session authorization requires a newer client`)}let h=JS({subjectSet:m.kind===`authenticated`&&p.kind===`authenticated`?uS(c.subjectSet,p.walletAuthMethodId):c.subjectSet,availableLanes:f,configuredEcdsaTargets:cr(e.configs.network.chains).map(e=>e.chainTarget)});return{appIdentity:d,authentication:m,capabilityProjection:h,nonceDiagnostics:mS(e,d.nearAccountId)}}function uS(e,t){let[n,...r]=e.subjects.filter(e=>e.kind!==`evm_family_ecdsa_wallet`||String(e.authority.walletAuthMethodId)===String(t));return n?{...e,subjects:[n,...r]}:e}async function dS(e,t){let n=!1;try{let e=await K.resolveSelectedWalletAuthority(String(t.walletId));n=e.kind!==`resolved`||e.selection.lockState!==`unlocked`}catch{n=!0}return n?!1:(e.signingEngine.setWalletAuthenticated(t),!0)}async function fS(e){let[t,n]=await Promise.all([eC(e.context,e.walletId),Wv({walletId:e.walletId,ports:Bh})]),r={kind:`signed_out`};switch(n.kind){case`authenticated`:await dS(e.context,n.state)&&(r=n.state);break;case`missing`:break;case`upgrade_required`:throw new ic(`[WalletSession] Wallet Session authorization requires a newer client`)}return{appIdentity:t,authentication:r,capabilityProjection:{kind:`unresolvable`,reason:e.reason},nonceDiagnostics:mS(e.context,t.nearAccountId)}}function pS(e,t,n){return e.signingEngine.readPersistedAvailableSigningLanes({walletId:t},n).then(e=>({kind:`available`,lanes:e})).catch(()=>({kind:`unavailable`}))}function mS(e,t){let n=String(t||``).trim();if(!n)return null;try{return e.signingEngine.getNonceCoordinator().getDiagnostics({accountId:n,emitMetrics:!0})}catch{return null}}function hS(e){let t=String(e||``).trim().toLowerCase();return/^0x[0-9a-f]{40}$/.test(t)?t:``}async function gS(e,t){let n=cr(e.configs.network.chains).map(e=>e.chainTarget);if(!n.length)return[];let r=await K.listAccountSignersByProfile({profileId:String(t),status:`active`}).catch(()=>[]),i=[];for(let e of r){let r=ey({walletId:t,configuredTargets:n,signer:e});r.kind===`active_ecdsa_signer_record`&&i.push(r.walletKey)}return i}async function _S(e,t){let n=[...new Set((await gS(e,t)).map(e=>hS(e.keyFacts.thresholdOwnerAddress)).filter(Boolean))];return n.length===1?n[0]:(n.length>1&&console.warn(`[WalletSession] conflicting profile threshold ECDSA addresses`,{walletId:String(t),addresses:n}),null)}function vS(e){if(e.selection.mode===`ed25519_only`)return[`ed25519`];if(!e.configuredEcdsaTargets.length)return e.selection.mode===`ecdsa_only`?[]:[`ed25519`];let t=new Set((e.canonicalEcdsaContext?.ecdsaKeys||[]).map(e=>e.targetKey));if(t.size===0)throw Error(`[login] threshold ECDSA warm-up missing canonical key identity`);let n=e.configuredEcdsaTargets.map(e=>B(e.chainTarget)).filter(e=>!t.has(e));if(n.length)throw Error(`[login] threshold ECDSA warm-up missing configured-target key ids for ${n.join(`, `)}`);return e.selection.mode===`ecdsa_only`?[`ecdsa`]:[`ed25519`,`ecdsa`]}function yS(e){let t=ay({context:e.storedCanonicalEcdsaContext,configuredTargets:e.selectedEcdsaTargets}),n=oy({completion:t,source:`stored ECDSA key facts`}),r=vS({selection:e.selection,configuredEcdsaTargets:e.selectedEcdsaTargets,canonicalEcdsaContext:n});e.wantsEd25519Warmup&&!r.includes(`ed25519`)&&(r=[`ed25519`,...r]);let i=r.includes(`ed25519`)&&r.includes(`ecdsa`);if(!r.length)throw Error(`[login] ECDSA unlock requested with no configured ECDSA targets`);return{kind:`threshold_login_warmup_plan_ready`,storedCanonicalEcdsaContext:e.storedCanonicalEcdsaContext,configuredTargetKeyCompletion:t,ecdsaContext:n,signersToWarm:r,ed25519DependsOnEcdsa:!1,ecdsaDependsOnEd25519:i}}function bS(e){return Pe(e,32,`threshold login warm session IDs`)}function xS(e){let t=T(e);if(!t.ok)throw Error(`[login] failed to create threshold ECDSA session identity`);return t.value}function SS(e){let t=ft(e);if(!t.ok)throw Error(`[login] failed to create Wallet Session mint identity`);return t.value}function CS(e){if(e==null||e<=0)throw Error(`[login] unlock warm-up requires positive unlock session uses`);return e}function wS(e){let t=Error(`[login] device_link_required: local threshold ECDSA material is unavailable for ${e}`);return t.code=`device_link_required`,t}function TS(){let e=Error(`[login] device_link_required: local threshold Ed25519 material is unavailable`);return e.code=`device_link_required`,e}function ES(e){let t=String(e.sharedState.generatedThresholdSessionId||``).trim();if(t)return t;let n=bS(`threshold-ecdsa-login`);return e.sharedState.generatedThresholdSessionId=n,n}async function DS(e){if(!e.collectCredential)throw Error(`[login] WebAuthn ECDSA key-facts inventory requires a credential collector`);let t=uy(),n=await Ds({walletId:e.walletId,rpId:e.rpId,keyTargets:e.keyTargets,serverNonceB64u:t,...e.runtimePolicyScope?{runtimePolicyScope:e.runtimePolicyScope}:{}}),r=await e.collectCredential(n);return await mc({relayerUrl:e.relayerUrl,walletId:e.walletId,rpId:e.rpId,credential:r,keyTargets:e.keyTargets,serverNonceB64u:t,expectedChallengeDigestB64u:n,...e.runtimePolicyScope?{runtimePolicyScope:e.runtimePolicyScope}:{}})}async function OS(e){let t=String(e.relayerUrl||``).trim(),n=String(e.rpId||``).trim();if(!t||!n)throw Error(`[login] threshold ECDSA key-facts inventory requires relayerUrl and rpId`);return e.authority?.kind===`wallet_session_operation_credential_v1`?await gc({relayerUrl:t,walletId:e.walletId,rpId:n,operationCredential:e.authority.operationCredential,keyTargets:e.keyTargets}):await DS({walletId:e.walletId,relayerUrl:t,rpId:n,keyTargets:e.keyTargets,...e.runtimePolicyScope?{runtimePolicyScope:e.runtimePolicyScope}:{},collectCredential:e.collectWebAuthnInventoryCredential})}function kS(e){let t=ey({walletId:e.walletId,configuredTargets:e.configuredTargets,signer:e.signer});switch(t.kind){case`active_ecdsa_signer_record`:return t.targetKey===B(e.record.walletKey.chainTarget)&&String(t.walletKey.keyHandle)===String(e.record.walletKey.keyHandle);case`key_facts_inventory_required`:return t.targetKey===B(e.record.walletKey.chainTarget)&&t.keyHandle===String(e.record.walletKey.keyHandle);case`blocked`:case`skipped`:return!1}return!1}function AS(e){let t=e.record.walletKey,n=t.keyFacts,r=B(t.chainTarget);return{...e.signer.metadata||{},accountModel:`threshold-ecdsa`,accountAddress:e.record.accountAddress,ownerAddress:e.record.ownerAddress,thresholdOwnerAddress:n.thresholdOwnerAddress,keyScope:n.keyScope,keyHandle:t.keyHandle,walletId:t.walletId,ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,signingRootId:n.signingRootId,signingRootVersion:n.signingRootVersion,publicCapability:e.record.publicCapability,thresholdEcdsaPublicKeyB64u:n.thresholdEcdsaPublicKeyB64u,participantIds:[...n.participantIds],chainTarget:t.chainTarget,targetMembership:{targetKey:r,chainTarget:t.chainTarget},sharedEvmFamilyKey:{walletId:t.walletId,keyScope:n.keyScope,keyHandle:t.keyHandle,ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,signingRootId:n.signingRootId,signingRootVersion:n.signingRootVersion,participantIds:[...n.participantIds],thresholdOwnerAddress:n.thresholdOwnerAddress,thresholdEcdsaPublicKeyB64u:n.thresholdEcdsaPublicKeyB64u},chainId:t.chainTarget.chainId}}async function jS(e){for(let t of e.records){let n=e.walletSigners.filter(n=>kS({walletId:e.walletId,configuredTargets:e.configuredTargets,signer:n,record:t}));if(n.length!==1)throw Error(`[login] authenticated ECDSA key inventory could not identify one profile signer for ${B(t.walletKey.chainTarget)}`);let r=n[0];if(String(t.walletKey.walletId)!==String(e.walletId)||t.accountAddress!==r.accountAddress||t.ownerAddress!==r.accountAddress||String(t.walletKey.keyFacts.thresholdOwnerAddress)!==r.accountAddress)throw Error(`[login] authenticated ECDSA key inventory profile identity mismatch for ${B(t.walletKey.chainTarget)}`);await e.store.activateAccountSigner({account:{profileId:r.profileId,chainIdKey:r.chainIdKey,accountAddress:r.accountAddress,accountModel:`threshold-ecdsa`},signer:{signerId:r.signerId,signerType:r.signerType,signerKind:r.signerKind,signerAuthMethod:r.signerAuthMethod,signerSource:r.signerSource,metadata:AS({signer:r,record:t})},activationPolicy:{mode:`allocate_next_free`},preferredSlot:r.signerSlot,selectAsActive:!1,mutation:{routeThroughOutbox:!1}})}}function MS(e,t){return t?{ecdsaKeys:e,runtimePolicyScope:t}:{ecdsaKeys:e}}function NS(e){let t=e.input?.keyFactsInventoryAuthority||null,n=e.input?.keyFactsInventoryRequested===!0,r=e.input?.relayerUrl||``,i=e.input?.rpId||``,a=e.input?.collectWebAuthnInventoryCredential;return e.runtimePolicyScope?{kind:`runtime_policy_scoped`,keyFactsInventoryAuthority:t,keyFactsInventoryRequested:n,relayerUrl:r,rpId:i,runtimePolicyScope:e.runtimePolicyScope,collectWebAuthnInventoryCredential:a}:{kind:`runtime_policy_unscoped`,keyFactsInventoryAuthority:t,keyFactsInventoryRequested:n,relayerUrl:r,rpId:i,collectWebAuthnInventoryCredential:a}}async function PS(e,t,n){let r=t.map(e=>e.chainTarget),i=await K.listAccountSignersByProfile({profileId:String(e),status:`active`}).catch(()=>[]),a=[],o=[],s=[];for(let t of i){let n=ey({walletId:e,configuredTargets:r,signer:t});switch(n.kind){case`active_ecdsa_signer_record`:a.push(n);break;case`key_facts_inventory_required`:o.push(n);break;case`blocked`:s.push(n);break;case`skipped`:break;default:}}if(!a.length&&!o.length&&!s.length)return[];let c=cy({selection:{mode:`ecdsa_only`,ecdsa:!0},configuredTargets:r,activeSignerRecords:a,keyFactsInventoryRequiredRecords:o,blockedRecords:s,runtimeConfig:{explicitKeyFactsInventoryMode:n?.keyFactsInventoryRequested===!0,allowAuthenticatedKeyFactsInventory:!!n?.keyFactsInventoryAuthority}});switch(c.kind){case`ready`:{let t=c.readyTargets.filter(e=>e.publicCapability.kind===`missing_public_capability`),a=new Map,o=[];if(t.length){let r=await OS({walletId:e,relayerUrl:n?.relayerUrl||``,rpId:n?.rpId||``,keyTargets:t.map(e=>({keyHandle:e.walletKey.keyHandle,chainTarget:e.chainTarget})),authority:n?.keyFactsInventoryAuthority||null,...n?.runtimePolicyScope?{runtimePolicyScope:n.runtimePolicyScope}:{},collectWebAuthnInventoryCredential:n?.collectWebAuthnInventoryCredential});o=r.records;for(let e of r.records)a.set(B(e.walletKey.chainTarget),e.publicCapability)}let s=ry({source:`profile continuity`,keys:c.readyTargets.map(e=>ny({chainTarget:e.chainTarget,keyHandle:e.walletKey.keyHandle,key:mo(e.walletKey),publicCapability:e.publicCapability.kind===`persisted_public_capability`?e.publicCapability.value:a.get(e.targetKey)}))}),l=s.filter(e=>e.publicCapability.kind===`missing_public_capability`).map(e=>e.targetKey);if(l.length)throw Error(`[login] authenticated ECDSA key inventory did not return public capabilities for ${l.join(`, `)}`);return await jS({store:K,walletId:e,configuredTargets:r,walletSigners:i,records:o}),s}case`no_configured_ecdsa_targets`:return[];case`awaiting_authenticated_key_facts_inventory`:{let a=n?.keyFactsInventoryAuthority;if(!a)throw Error(`[login] threshold ECDSA key-facts inventory requires authenticated inventory authority`);let o=await OS({walletId:e,relayerUrl:n.relayerUrl,rpId:n.rpId,keyTargets:c.keyTargets,authority:a,...n.runtimePolicyScope?{runtimePolicyScope:n.runtimePolicyScope}:{},collectWebAuthnInventoryCredential:n.collectWebAuthnInventoryCredential}),s=ay({context:{ecdsaKeys:ry({source:`profile continuity inventory`,keys:o.records.map(e=>ny({chainTarget:e.walletKey.chainTarget,keyHandle:e.walletKey.keyHandle,key:mo(e.walletKey),publicCapability:e.publicCapability}))})},configuredTargets:t});if(s.kind!==`complete_configured_target_keys`)throw Error(`[login] threshold ECDSA key-facts inventory returned incomplete key facts`);return await jS({store:K,walletId:e,configuredTargets:r,walletSigners:i,records:o.records}),s.context.ecdsaKeys}case`key_facts_inventory_required`:{let e=c.keyFactsInventoryRequiredRecords.map(e=>e.targetKey).join(`, `);throw n?.keyFactsInventoryRequested?Error(`[login] threshold ECDSA key-facts inventory requires authenticated inventory authority for ${e}`):Error(`[login] threshold ECDSA warm-up requires complete local key facts for ${e}; run explicit authenticated ECDSA key-facts inventory before unlock`)}case`blocked`:{let e=c.blockedRecords.map(e=>`${e.targetKey||`unknown`}:${e.reason}`).join(`, `);throw Error(`[login] threshold ECDSA warm-up requires complete local key facts before unlock; run explicit authenticated ECDSA key-facts inventory before unlock; blocked profile signer records: ${e}`)}}return[]}async function FS(e,t,n,r){let i=cr(e.configs.network.chains),a=MS(ry({source:`stored`,keys:[]}),void 0),o=await Cv({walletId:t,chainTargets:i.map(e=>e.chainTarget),...r?{authMethod:r}:{}}),s=[],c;for(let e of o){let t=e.manifest;for(let{chainTarget:n}of i){if(!t.signer.scope.targetMemberships.some(e=>B(e)===B(n)))continue;let r=t.durableMaterial.roleLocalPublicFacts,i=String(r.keyHandle),a=r.publicCapability,o=e.material,l=t.durableMaterial.runtimePolicyScope,u=Ba({runtimePolicyScope:l});if(String(u.signingRootId)!==String(t.signer.signingRootId)||String(u.signingRootVersion)!==String(t.signer.signingRootVersion))throw Error(`[login] threshold ECDSA canonical runtime policy scope mismatch for ${B(n)}`);if(c&&l&&!Gx(c,l))throw Error(`[login] threshold ECDSA durable lanes have conflicting runtime policy scopes`);!c&&l&&(c=l),s.push(ny({chainTarget:n,keyHandle:i,key:so({walletId:t.signer.walletId,ecdsaThresholdKeyId:t.durableMaterial.roleLocalBinding.ecdsaThresholdKeyId,signingRootId:t.signer.signingRootId,signingRootVersion:t.signer.signingRootVersion,participantIds:t.signer.registeredPublicFacts.participantIds,thresholdOwnerAddress:t.signer.registeredPublicFacts.thresholdOwnerAddress}),publicCapability:a,existingRoleLocalMaterial:o}))}}let l=ry({source:`available lane`,keys:s});a=Kx({current:a,incoming:MS(l,c),source:`durable lanes`});let u=ay({context:a,configuredTargets:i});if(u.kind===`complete_configured_target_keys`)return u.context;let d=new Set(u.missingTargets),f=await PS(t,i.filter(e=>d.has(B(e.chainTarget))),NS({input:n,runtimePolicyScope:a.runtimePolicyScope}));return a=Kx({current:a,incoming:{ecdsaKeys:f},source:`profile continuity`}),a}async function IS(e,t){let n=[...new Set((await gS(e,t)).map(e=>String(e.keyFacts.thresholdEcdsaPublicKeyB64u||``).trim()).filter(Boolean))];return n.length===1?n[0]:(n.length>1&&console.warn(`[WalletSession] conflicting profile threshold ECDSA public keys`,{walletId:String(t),publicKeyCount:n.length}),null)}async function LS(e,t){let[n,r]=await Promise.all([_S(e,t),IS(e,t)]);if(n&&r)return{ethereumAddress:n,thresholdEcdsaPublicKeyB64u:r};let i=await Cv({walletId:t,chainTargets:cr(e.configs.network.chains).map(e=>e.chainTarget)}),a=new Set,o=new Set;for(let e of i){let t=e.manifest.signer.registeredPublicFacts;a.add(hS(t.thresholdOwnerAddress)),o.add(t.publicKeyB64u)}return{ethereumAddress:n??(a.size===1?[...a][0]:null),thresholdEcdsaPublicKeyB64u:r??(o.size===1?[...o][0]:null)}}function RS(e){return{kind:`failed`,reason:e}}function zS(){return{kind:`failed`,reason:`persistence_unavailable`}}function BS(e){switch(e.state){case`ready`:return{kind:`ready`};case`restorable`:return{kind:`pending`,resume:`restore_material`};case`deferred`:return{kind:`pending`,resume:`resolve_deferred_state`};case`expired`:return{kind:`authorization_required`,requirement:`wallet_session_expired`};case`exhausted`:return{kind:`authorization_required`,requirement:`wallet_session_exhausted`}}throw Error(`[SeamsWeb] unsupported capability lane readiness`)}function VS(e,t){let n=e.diagnostics?.invalidLanes.find(e=>e.curve===t);return n?n.reason===`ambiguous_material`||n.reason===`conflicting_key_material`?`ambiguous_lane`:`malformed`:null}function HS(e,t){let n=B(t),r=e.diagnostics?.invalidLanes.find(e=>e.curve===`ecdsa`&&(e.targetKey===void 0||e.targetKey===n));return r?r.reason===`ambiguous_material`||r.reason===`conflicting_key_material`?`ambiguous_lane`:`malformed`:null}function US(e,t){return String(t.walletId)===String(e.walletId)&&String(t.nearAccountId)===String(e.nearAccountId)&&String(t.nearEd25519SigningKeyId)===String(e.nearEd25519SigningKeyId)&&t.signerSlot===e.signerSlot}function WS(e,t){return String(t.key.walletId)===String(e.walletId)&&String(t.key.ecdsaThresholdKeyId)===String(e.ecdsaThresholdKeyId)}function GS(e){if(e.availableLanes.kind===`unavailable`)return{kind:`near_ed25519`,subject:e.subject,lane:zS()};let t=e.availableLanes.lanes;if(String(t.walletId)!==String(e.subject.walletId))return{kind:`near_ed25519`,subject:e.subject,lane:RS(`identity_mismatch`)};let n=VS(t,`ed25519`);if(n)return{kind:`near_ed25519`,subject:e.subject,lane:RS(n)};let r=t.lanes.ed25519.near;return Cd(r)?{kind:`near_ed25519`,subject:e.subject,lane:US(e.subject,r)?BS(r):RS(`identity_mismatch`)}:{kind:`near_ed25519`,subject:e.subject,lane:RS(`missing`)}}function KS(e){if(e.availableLanes.kind===`unavailable`)return zS();let t=e.availableLanes.lanes;if(String(t.walletId)!==String(e.subject.walletId))return RS(`identity_mismatch`);let n=HS(t,e.chainTarget);if(n)return RS(n);let r=kd(t,e.chainTarget);return Cd(r)?WS(e.subject,r)?r.source===`canonical_capability`&&!r.authorization?{kind:`authorization_required`,requirement:`same_method_step_up`}:BS(r):RS(`identity_mismatch`):RS(`missing`)}function qS(e){let[t,...n]=e.configuredTargets;return t?{kind:`evm_family_ecdsa`,subject:e.subject,targets:{kind:`configured_targets`,lanes:[{chainTarget:t,readiness:KS({subject:e.subject,availableLanes:e.availableLanes,chainTarget:t})},...n.map(t=>({chainTarget:t,readiness:KS({subject:e.subject,availableLanes:e.availableLanes,chainTarget:t})}))]}}:{kind:`evm_family_ecdsa`,subject:e.subject,targets:{kind:`no_configured_target`}}}function JS(e){let t=e.subjectSet.subjects.map(t=>{switch(t.kind){case`near_ed25519_wallet`:return GS({subject:t,availableLanes:e.availableLanes});case`evm_family_ecdsa_wallet`:return qS({subject:t,availableLanes:e.availableLanes,configuredTargets:e.configuredEcdsaTargets})}return Q(t)}),n=t[0];if(!n)throw Error(`[WalletSession] resolved capability subjects must be non-empty`);return{kind:`resolved`,subjectSet:e.subjectSet,capabilities:[n,...t.slice(1)]}}function YS(e){return e?e.operationalPublicKey:null}function XS(e,t){return!!(e&&String(e.walletId)===String(t.walletId)&&String(e.nearAccountId)===String(t.nearAccountId)&&e.signerSlot===t.signerSlot)}async function ZS(e,t){let n=await e.getLastUser().catch(()=>null);if(XS(n,t))return n;let r=await ea(K,t.nearAccountId,t.signerSlot).catch(()=>null);if(XS(r,t))return r;let i=await e.getUserBySignerSlot(t.nearAccountId,t.signerSlot).catch(()=>null);return XS(i,t)?i:null}function QS(e,t){return e.walletId===t.walletId&&e.nearAccountId===t.nearAccountId&&e.nearEd25519SigningKeyId===t.nearEd25519SigningKeyId&&e.signerSlot===t.signerSlot}async function $S(e){let t=o(String(e.walletId));if(!t.ok)return null;let n=t.value,r;try{r=await K.resolveSelectedWalletAuthority(String(n))}catch{return null}if(r.kind!==`resolved`)return null;let{selection:i,authMethod:a,authority:s}=r;if($y({walletId:n,selection:i,authMethod:a,authority:s}).length>0||a.status!==`active`||s.state!==`active`||s.provenance.kind!==`device_link`)return null;let c=await Jb({walletId:n,authMethod:a,authority:s,signerMaterials:r.signerMaterials});if(c.kind!==`resolved`||!QS(c.subject,e))return null;let l=s.signerActivations.ed25519;return l?`ed25519:${Er(F(l.signer.registeredPublicKeyB64u))}`:null}async function eC(e,t){let[n,r]=await Promise.all([pb(t),LS(e,t).catch(()=>({ethereumAddress:null,thresholdEcdsaPublicKeyB64u:null}))]);return{kind:`resolved`,walletId:t,nearAccountId:null,nearOperationalPublicKey:null,userData:null,authMethods:n,thresholdEcdsaEthereumAddress:r.ethereumAddress,thresholdEcdsaPublicKeyB64u:r.thresholdEcdsaPublicKeyB64u}}async function tC(e,t){let n=t.walletId,r=zy(t.subjectSet),i=r?.nearAccountId||null,[a,o]=await Promise.all([r?ZS(e.signingEngine,r):null,eC(e,n)]),s=YS(a)||(r?await $S(r):null);return{...o,nearAccountId:i,nearOperationalPublicKey:s,userData:a}}async function nC(e){let[t,n,r]=await Promise.all([e.signingEngine.getAllUsers(),K.listWalletSelections(),e.signingEngine.getLastUser()]),i=(await Promise.all(n.map(ub))).filter(e=>e!==null),a=new Map;for(let e of t){let t=lb(e);a.set(db(t),t)}for(let e of i)a.set(db(e),e);let o=[...a.values()],s=[...new Set([...o.map(e=>e.walletId),...n.map(e=>String(e.walletId))])],c=[...new Set(o.map(e=>e.nearAccountId))],l=r?lb(r):null;return{walletIds:s,accountIds:c,accounts:o,lastUsedAccount:fb([...i,...l?[l]:[]])}}function rC(e){if(e.record.status!==`active`)return null;switch(e.kind){case`passkey`:return{walletId:e.record.walletId,authMethod:`passkey`};case`email_otp`:{let t=e.presentation.email.kind===`verified`?String(e.presentation.email.address):null;return{walletId:e.record.walletId,authMethod:`email_otp`,emailAddress:t}}default:return Q(e)}}function iC(e){let t=[];for(let n of e){let e=rC(n);e&&t.push(e)}return t}async function aC(e){return iC(await sC(e,await K.listLocalWalletAuthMethodProjectionsV2ForWallet(e)))}function oC(e){return e.kind===`email_otp`&&e.record.status===`active`&&e.presentation.email.kind===`unavailable`}async function sC(e,t){let n=[];for(let e of t)oC(e)&&n.push(e);if(n.length===0)return[...t];let r=w(await Ms(K,e));if(!r.ok)return[...t];let i=!1;for(let t of n){let n=await K.retainVerifiedEmailOtpLocalPresentation({walletId:e,walletAuthMethodId:t.record.walletAuthMethodId,emailAddress:r.value});switch(n.kind){case`retained`:i=!0;break;case`not_retained`:break;default:Q(n)}}return i?await K.listLocalWalletAuthMethodProjectionsV2ForWallet(e):[...t]}async function cC(){let e=await K.listWalletSelectionWalletIds();return(await Promise.all([...new Set(e)].map(aC))).flat()}async function lC(e){let{signingEngine:t}=e,n=t.readWalletAuthenticationState(),r,i=!1,a=!1;if(n.kind===`authenticated`){try{await t.advanceWalletLockGeneration(n.walletId)}catch(e){r=e,i=!0}try{await t.retireActiveWalletSessionAuthorizationForLock(n.walletId)}catch(e){i||=(r=e,!0)}}try{a=t.clearWalletAuthenticationIfCurrent(n)}catch(e){i||=(r=e,!0)}if(a){try{t.getNonceCoordinator().clearAll()}catch{}try{t.clearThresholdEcdsaSigningQueue()}catch{}}try{await t.clearVolatileWarmSigningMaterial(n.kind===`authenticated`?n.walletId:void 0)}catch(e){i||=(r=e,!0)}if(i)throw r}async function uC(e){try{await(await import(`./registration-DEGZR8kA.js`).then(e=>e.o)).resumeNearRegistrationAfterUnlock(e)}catch(e){console.warn(`[login] NEAR continuation could not start`,e instanceof Error?e.message:`module unavailable`)}finally{new Uint8Array(e.ownedFactorSecret).fill(0)}}let dC=null,fC=null;function pC(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function mC(e,t){let n=e[t];if(typeof n!=`string`||n.length===0||n.trim()!==n)throw Error(`${t} must be a non-empty canonical string`);return n}function hC(e,t,n){if(Object.keys(e).length!==t.size)throw Error(`${n} fields are invalid`);for(let r of t)if(!Object.hasOwn(e,r))throw Error(`Missing ${n} field: ${r}`)}function gC(e,t){if(typeof e!=`string`||e.length===0||e.trim()!==e)throw Error(`${t} must be a canonical HTTP origin`);let n;try{n=new URL(e)}catch{throw Error(`${t} must be a canonical HTTP origin`)}if(n.protocol!==`https:`&&n.protocol!==`http:`||n.origin!==e||n.pathname!==`/`||n.search!==``||n.hash!==``)throw Error(`${t} must be a canonical HTTP origin`);return n.origin}function _C(e){if(typeof e!=`string`||e.length===0||e.trim()!==e)throw Error(`relayUrl must be a non-empty canonical string`);return l(e)}function vC(e){if(!Number.isSafeInteger(e)||Number(e)<=Date.now())throw Error(`hosted-wallet Wallet Session is expired or invalid`);return Number(e)}function yC(e,t){let n=pC(e);if(hC(n,new Set([`ok`,`code`,`message`]),`hosted-wallet exchange failure`),n.ok!==!1)throw Error(`hosted-wallet exchange failure is invalid`);let r=mC(n,`code`),i=mC(n,`message`),a=Error(i);return a.code=r,a.status=t,a}function bC(e){if(typeof e!=`string`||!/^wsh_[A-Za-z0-9_-]{43}$/.test(e))throw Error(`hosted-wallet operationCredential.token is invalid`);return e}function xC(e){let t=pt(e);if(!t.ok)throw Error(`walletSessionId is invalid: ${t.error.message}`);return t.value}function SC(e){let t=pC(e);if(hC(t,new Set([`kind`,`home`,`token`,`walletSessionId`]),`hosted-wallet operationCredential`),t.kind!==`opaque_hosted_wallet_session_operation_credential_v1`)throw Error(`hosted-wallet operationCredential.kind is invalid`);return{kind:t.kind,home:ct(t.home),token:bC(t.token),walletSessionId:xC(t.walletSessionId)}}function CC(e){let t=pC(e);if(t.ok!==!0)throw yC(t,400);hC(t,new Set([`ok`,`walletSessionId`,`operationCredential`,`expiresAtMs`]),`hosted-wallet session redemption response`);let n=xC(t.walletSessionId),r=SC(t.operationCredential);if(r.walletSessionId!==n)throw Error(`hosted-wallet operationCredential does not identify its parent Wallet Session`);return{operationCredential:r,expiresAtMs:vC(t.expiresAtMs)}}async function wC(e){try{return await e.json()}catch{return null}}function TC(e){fC=gC(e,`adopted parent origin`)}function EC(e){let t=dC;if(t){if(t.expiresAtMs<=Date.now()||t.appOrigin!==fC||t.walletOrigin!==window.location.origin||e!==void 0&&t.relayUrl!==_C(e)){dC=null;return}return t.operationCredential}}function DC(){dC=null,fC=null}function OC(e){return JSON.stringify({exchangeCode:e.exchangeCode,nonce:e.nonce,appOrigin:e.appOrigin,walletOrigin:e.walletOrigin})}async function kC(e,t){let n=Qe(e),r=_C(t);if(_C(n.relayUrl)!==r)throw Error(`Hosted-wallet redemption relayUrl does not match its request boundary`);if(n.walletOrigin!==window.location.origin)throw Error(`Hosted-wallet redemption walletOrigin does not match the wallet host`);if(fC===null||n.appOrigin!==fC)throw Error(`Hosted-wallet redemption appOrigin does not match the adopted iframe parent`);let i=await fetch(a(r,`/wallet/session/exchange/redeem`),{method:`POST`,headers:{"Content-Type":`application/json`,...n.home.kind===`regional`?{"X-Seams-Wallet-Region":n.home.region}:{}},body:OC(n)}),o=await wC(i);if(!i.ok)throw yC(o,i.status);let s=CC(o),c={kind:`active_hosted_wallet_seams_session`,operationCredential:s.operationCredential,expiresAtMs:s.expiresAtMs,relayUrl:r,appOrigin:n.appOrigin,walletOrigin:n.walletOrigin};return dC=c,c}async function AC(e,t){switch(t.state){case`unavailable`:return;case`settled`:await Zs(e,t.generation);return;case`moving`:await Zs(e,t.move.destinationGeneration);return;case`completed`:await Zs(e,t.destinationGeneration);return;default:throw Error(`Unsupported wallet placement observation`)}}async function jC(e,t,n){let r=e.readAuthentication();if(await AC(t,n),r.kind!==`authenticated`||r.walletId!==t)return;let i=MC(n);if(i===null)return;let a=await K.resolveSelectedWalletAuthority(t);if(a.kind!==`resolved`)return;let o=await q.readExactWithOperationCredential({walletId:t,authorityId:a.authority.authorityId,authMethodId:a.authMethod.walletAuthMethodId});o.kind===`found`&&o.operationCredential.ownershipGeneration<i&&e.readAuthentication()===r&&await e.lockWallet()}function MC(e){switch(e.state){case`unavailable`:return null;case`settled`:return e.generation;case`completed`:return e.destinationGeneration;case`moving`:return e.move.progress.availability===`active`?e.move.destinationGeneration:null;default:throw Error(`Unsupported wallet activation observation`)}}function NC(e){if(!PC(e))throw Error(`Wallet move identity is invalid`);return e}function PC(e){return typeof e==`string`&&/^wmove_[A-Za-z0-9_-]{43}$/u.test(e)}function FC(e){let t=M(e,`Wallet move request`),n=o(t.walletId);if(!n.ok||Object.keys(t).length!==4)throw Error(`Wallet move request is invalid`);return{walletId:n.value,moveId:NC(t.moveId),destinationRegion:LC(t.destinationRegion),expectedGeneration:RC(t.expectedGeneration)}}function IC(e){let t=M(e,`Wallet placement`);switch(t.state){case`settled`:if(Object.keys(t).length!==4)break;return{state:`settled`,region:LC(t.region),generation:RC(t.generation),nextMoveAtMs:ot(t.nextMoveAtMs,`Next relocation time`)};case`unavailable`:if(Object.keys(t).length!==2||t.code!==`not_found`&&t.code!==`wallet_not_established`)break;return{state:`unavailable`,code:t.code};case`moving`:{if(Object.keys(t).length!==2)break;let e=M(t.move,`Wallet relocation`);if(Object.keys(e).length!==8)break;let{moveId:n,sourceRegion:r,destinationRegion:i,sourceGeneration:a,destinationGeneration:o,admittedAtMs:s}=HC(e),c=ot(e.nextMoveAtMs,`Next relocation time`);if(c<s)break;return{state:`moving`,move:{moveId:n,sourceRegion:r,destinationRegion:i,sourceGeneration:a,destinationGeneration:o,admittedAtMs:s,nextMoveAtMs:c,progress:zC(e.progress)}}}}throw Error(`Wallet placement response is invalid`)}function LC(e){switch(e){case`US`:case`WEUR`:case`APAC`:case`OC`:return e;default:throw Error(`Wallet region is invalid`)}}function RC(e){let t=ot(e,`Wallet placement generation or time`);if(t===0)throw Error(`Wallet placement generation or time must be positive`);return t}function zC(e){let t=M(e,`Wallet relocation progress`);if(Object.keys(t).length!==3)throw Error(`Wallet relocation progress fields are invalid`);let n=BC(t.execution);switch(t.state){case`freezing`:case`copying`:case`verified`:case`activating`:if(t.availability===`paused`)return{state:t.state,availability:`paused`,execution:n};break;case`cleanup`:if(t.availability===`active`)return{state:`cleanup`,availability:`active`,execution:n};break}throw Error(`Wallet relocation availability is invalid`)}function BC(e){let t=M(e,`Wallet relocation execution`);switch(t.state){case`ready`:case`running`:if(Object.keys(t).length===1)return{state:t.state};break;case`retry_wait`:if(Object.keys(t).length!==3)break;if(t.code===`transport_unavailable`||t.code===`authority_unavailable`)return{state:`retry_wait`,code:t.code,retryAtMs:RC(t.retryAtMs)};break;case`blocked`:if(Object.keys(t).length!==2)break;switch(t.code){case`transport_unavailable`:case`authority_unavailable`:case`identity_conflict`:case`receipt_conflict`:case`content_conflict`:return{state:`blocked`,code:t.code}}}throw Error(`Wallet relocation execution is invalid`)}function VC(e,t){let n=M(e,`Wallet move status`);if(n.state===`moving`){let e=IC(n);if(e.state!==`moving`||e.move.moveId!==t)throw Error(`Wallet move identity changed`);return e}if(n.state!==`completed`||Object.keys(n).length!==8)throw Error(`Wallet move status is invalid`);let{moveId:r,sourceRegion:i,destinationRegion:a,sourceGeneration:o,destinationGeneration:s,admittedAtMs:c}=HC(n),l=RC(n.completedAtMs);if(r!==t||l<c)throw Error(`Wallet move completion is invalid`);return{state:`completed`,moveId:r,sourceRegion:i,destinationRegion:a,sourceGeneration:o,destinationGeneration:s,admittedAtMs:c,completedAtMs:l}}function HC(e){let t=NC(e.moveId),n=LC(e.sourceRegion),r=LC(e.destinationRegion),i=RC(e.sourceGeneration),a=RC(e.destinationGeneration),o=RC(e.admittedAtMs);if(n===r||a!==i+1)throw Error(`Wallet move generations or regions are invalid`);return{moveId:t,sourceRegion:n,destinationRegion:r,sourceGeneration:i,destinationGeneration:a,admittedAtMs:o}}function UC(e){return`wallet_move_request:${e}`}async function WC(e){let t=await K.getAppState(UC(e));if(t===void 0)return null;let n=FC(t);if(n.walletId!==e)throw Error(`Stored wallet move identity is invalid`);return n}async function GC(e){await K.setAppState(UC(e.walletId),{walletId:e.walletId,moveId:e.moveId,destinationRegion:e.destinationRegion,expectedGeneration:e.expectedGeneration})}var KC=class extends Error{constructor(e,t){super(`Owner Router request failed: ${t}`),this.code=e,this.name=`WalletHostOwnerRequestTransportError`}};function qC(e){let t=JC(e);return{ownerAuthorization:{authenticateOwnerForLinkingV1:async e=>await XC(t,e)},ownerRequest:{requestOwnerV1:async e=>await ZC(t,e)},managementRequest:{request:async e=>await QC(t,e)}}}function JC(e){let t=String(e.relayerUrl||``).trim().replace(/\/+$/,``);if(!t)throw Error(`Wallet-host device linking requires a Router URL`);return{...e,baseUrl:t}}function YC(){return new X(`wallet_unlock_required`,Z.WALLET_UNLOCK_REQUIRED,`authorization`)}async function XC(e,t){let n=e.readWalletAuthenticationState();if(n.kind!==`authenticated`)throw YC();await tn(n.walletId);let r=await $C(e,n.walletId),i=await ew(e,r,{method:`POST`,canonicalPath:`/wallet/device-linking/v1/owner-authorization`,body:wi({payload:t.payload,requestedAtMs:t.requestedAtMs})});if(i.status<200||i.status>=300)throw Error(lw(i));let a=nw(i.body,r),o=_e(t.payload.requestedPermission,`export_keys`)&&a.sourceSignerManifest.keyFamilies.some(e=>e===`ed25519`),s=o?e.readUnlockedEd25519ExportRootCapabilityV1(n.walletId):void 0;if(o&&(!s||s.walletId!==String(n.walletId)||s.walletSessionId!==String(r.operationCredential.walletSessionId)||s.expiresAtMs<=Date.now()))throw YC();if(o){if(!s)throw YC();return{...a,exportRootRequirement:`required`,ed25519ExportRootCapability:s}}return{...a,exportRootRequirement:`not_required`}}async function ZC(e,t){if(t.authentication.source.kind!==`wallet_session`)throw Error(`Wallet-host device linking requires a reusable owner Wallet Session`);let n=e.readWalletAuthenticationState();if(n.kind!==`authenticated`)throw YC();let r=await $C(e,n.walletId);if(t.authentication.source.walletSessionId!==r.operationCredential.walletSessionId||t.authentication.source.authorizationId!==r.record.authorizationId)throw Error(`Owner Wallet Session identity changed after authorization`);return await ew(e,r,t)}async function QC(e,t){return await ew(e,await $C(e,t.walletId),t)}async function $C(e,t){let n=await e.resolveSelectedWalletAuthority(t);if(n.kind!==`resolved`)throw YC();let{selection:r,authMethod:i,authority:a}=n;if(r.lockState!==`unlocked`||r.walletId!==t||r.walletAuthMethodId!==i.walletAuthMethodId||i.walletId!==t||i.walletAuthorityId!==a.authorityId||i.status!==`active`||a.walletId!==t||a.state!==`active`)throw YC();let o=await e.walletSessions.readExactWithOperationCredential({walletId:t,authorityId:a.authorityId,authMethodId:i.walletAuthMethodId});switch(o.kind){case`found`:break;case`missing`:throw YC();case`upgrade_required`:throw new ic(`Stored owner Wallet Session requires a newer client`);default:throw Error(`Unsupported owner Wallet Session read result`)}if(o.record.authorityDigestB64u!==a.authorityDigestB64u||o.record.authorityRevocationEpoch!==a.revocationEpoch||o.record.expiresAtMs<=Date.now())throw YC();return o}async function ew(e,t,n){return await tw(e,t.operationCredential.token,n)}async function tw(e,t,n){let r=await e.http.request({method:n.method,url:`${e.baseUrl}${n.canonicalPath}`,headers:{authorization:`Bearer ${t}`},...n.body===void 0?{}:{body:n.body}});if(!r.ok)throw new KC(r.code,r.message);return r.value}function nw(e,t){let n=aw(e),r=sw(n.authentication);if(r.kind!==`link_session_authenticated_request_v1`)throw Error(`Owner authorization authentication kind is invalid`);let i=zi(r.source),a=zi(n.ownerAuthorization);rw(i,t),iw(i,a);let s={kind:`link_session_authenticated_request_v1`,source:i,proofDigestB64u:St(r.proofDigestB64u)},c=o(n.walletId);if(!c.ok||c.value!==t.record.walletId)throw Error(`Owner authorization wallet identity changed`);return{authentication:s,walletId:c.value,ownerAuthorization:a,sourceSignerManifest:Ca(n.sourceSignerManifest),expiresAtMs:fw(n.expiresAtMs,`expiresAtMs`)}}function rw(e,t){if(e.kind!==`wallet_session`)throw Error(`Owner authorization did not return a Wallet Session source`);if(e.walletSessionId!==t.operationCredential.walletSessionId)throw Error(`Owner authorization Wallet Session id changed`);if(e.authorizationId!==t.record.authorizationId)throw Error(`Owner authorization id changed`)}function iw(e,t){if(e.kind!==`wallet_session`||t.kind!==`wallet_session`||e.walletSessionId!==t.walletSessionId||e.authorizationId!==t.authorizationId)throw Error(`Owner authorization source changed`)}function aw(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Owner authorization response must be an object`);if(!ow(e))throw Error(`Owner authorization response has unexpected fields`);return e}function ow(e){return Object.keys(e).sort().join(`|`)===`authentication|expiresAtMs|ownerAuthorization|sourceSignerManifest|walletId`}function sw(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Owner authorization response must be an object`);if(!cw(e))throw Error(`Owner authorization response has unexpected fields`);return e}function cw(e){return Object.keys(e).sort().join(`|`)===`kind|proofDigestB64u|source`}function lw(e){let t=uw(e.body);return t?`Owner authorization failed: ${t}`:`Owner authorization failed with HTTP ${e.status}`}function uw(e){return typeof e!=`object`||!e||Array.isArray(e)||!dw(e)||e.ok!==!1||typeof e.code!=`string`?null:typeof e.message==`string`&&e.message.trim()?e.message:null}function dw(e){return Object.keys(e).sort().join(`|`)===`code|message|ok`}function fw(e,t){if(!Number.isSafeInteger(e)||Number(e)<=0)throw Error(`${t} must be a positive safe integer`);return Number(e)}const pw=`/wallet/placement/v1/relocations`;function mw(e){if(e.host.readAuthentication()!==e.authentication)throw Error(`Wallet authentication changed during relocation approval`)}function hw(e,t){let n=M(e,`Wallet relocation challenge`);if(n.kind!==`challenge`||n.walletId!==t.walletId||n.moveId!==t.moveId||n.destinationRegion!==t.destinationRegion||n.expectedGeneration!==t.expectedGeneration||typeof n.requestDigest!=`string`||!/^[a-f0-9]{64}$/u.test(n.requestDigest)||typeof n.expiresAtMs!=`number`||!Number.isSafeInteger(n.expiresAtMs)||n.expiresAtMs<=Date.now())throw Error(`Wallet relocation challenge does not match the requested move`);let r=St(n.challengeB64u),i=M(n.factor,`Wallet relocation factor`);if(i.kind===`passkey`)return{challengeB64u:r,expiresAtMs:n.expiresAtMs,factor:{kind:`passkey`}};if(i.kind!==`email_otp`)throw Error(`Wallet relocation factor is unsupported`);let a=M(i.delivery,`Wallet relocation email delivery`);return{challengeB64u:r,expiresAtMs:n.expiresAtMs,factor:{kind:`email_otp`,challengeId:D(i.challengeId,`OTP challenge`),emailHint:D(a.emailHint,`Email hint`)}}}async function gw(e){mw(e);let t=await e.host.managementRequest.request({walletId:e.request.walletId,method:`POST`,canonicalPath:`${pw}/challenge`,body:e.request});if(mw(e),t.status!==200)throw Error(`Wallet relocation challenge failed (${t.status})`);return hw(t.body,e.request)}async function _w(e){let t=await gw(e);if(t.factor.kind!==`email_otp`)throw Error(`Wallet relocation factor changed`);return{challengeId:t.factor.challengeId,emailHint:t.factor.emailHint}}async function vw(e,t){switch(t.factor.kind){case`passkey`:{let n=await K.resolveSelectedWalletAuthority(e.request.walletId);if(mw(e),n.kind!==`resolved`||n.authMethod.kind!==`passkey`)throw Error(`Wallet relocation requires the selected owner passkey`);return{kind:`passkey`,credential:dc(await e.host.signingEngine.getAuthenticationCredentialsSerialized({subjectId:e.request.walletId,challengeB64u:t.challengeB64u,allowCredentials:[{id:n.authMethod.credentialIdB64u,type:`public-key`,transports:[]}],includeSecondPrfOutput:!1}))}}case`email_otp`:{let n=await e.host.signingEngine.requestEmailOtpEnrollmentConfirmation({walletId:e.request.walletId,emailAddress:t.factor.emailHint,emailHint:t.factor.emailHint,challengeId:t.factor.challengeId,confirmerText:{title:`Move wallet region`,body:`Enter the code to move this wallet to ${e.request.destinationRegion}.`},onResend:_w.bind(null,e)});return{kind:`email_otp`,challengeId:n.challengeId,otpCode:n.otpCode}}default:return yw(t.factor)}}function yw(e){throw Error(`Unsupported wallet relocation factor: ${String(e)}`)}async function bw(e,t){return mw(e),e.host.managementRequest.request({walletId:e.request.walletId,method:`POST`,canonicalPath:pw,body:t})}async function xw(e,t){let n=FC(t),r=e.readAuthentication();if(r.kind!==`authenticated`||r.walletId!==n.walletId)return{ok:!1,code:`wallet_unlock_required`};let i={host:e,request:n,authentication:r},a=await e.managementRequest.request({walletId:n.walletId,method:`GET`,canonicalPath:`${pw}/${encodeURIComponent(n.moveId)}?walletId=${encodeURIComponent(n.walletId)}`});if(mw(i),a.status===200)return Sw(a.body,i);if(a.status===401||a.status===403)return{ok:!1,code:`unauthorized`};if(a.status!==404)return{ok:!1,code:`transport_unavailable`};await GC(n),mw(i);let o=await bw(i,{walletId:n.walletId,moveId:n.moveId,destinationRegion:n.destinationRegion,expectedGeneration:n.expectedGeneration,sourceProof:null});if(mw(i),o.status===200)return Sw(o.body,i);if(o.status===401||o.status===403)return{ok:!1,code:`unauthorized`};if(!Cw(o))return{ok:!1,code:`transport_unavailable`};let s=await gw(i),c=await vw(i,s);if(mw(i),s.expiresAtMs<=Date.now())throw Error(`Wallet relocation approval expired`);let l={walletId:n.walletId,moveId:n.moveId,destinationRegion:n.destinationRegion,expectedGeneration:n.expectedGeneration,sourceProof:c},u;try{u=await bw(i,l)}catch(e){if(!(e instanceof KC)||e.code!==`network_error`)throw e;u=await bw(i,l)}return mw(i),u.status===401||u.status===403?{ok:!1,code:`unauthorized`}:u.status===200?Sw(u.body,i):{ok:!1,code:`transport_unavailable`}}async function Sw(e,t){let n=t.request,r;try{r=VC(e,n.moveId);let t=r.state===`moving`?r.move:r;if(t.destinationRegion!==n.destinationRegion||t.sourceGeneration!==n.expectedGeneration)throw Error(`Wallet relocation conflicts with the request`)}catch{return{ok:!1,code:`invalid_response`}}return await jC(t.host,n.walletId,r),t.host.readAuthentication()===t.authentication?{ok:!0,status:r}:{ok:!1,code:`wallet_unlock_required`}}function Cw(e){if(e.status!==409)return!1;try{let t=M(e.body,`Wallet relocation approval result`);return t.ok===!1&&t.code===`owner_approval_required`}catch{return!1}}function ww(e){return{getLastMoveRequest:WC,move:xw.bind(null,e),get:Tw.bind(null,e),getMove:Ow.bind(null,e)}}async function Tw(e,t){let n=e.readAuthentication(),r=await kw(e,t,`/wallet/placement/v1?walletId=${encodeURIComponent(t)}`,Ew);return r.ok&&await jC(e,t,r.placement),e.readAuthentication()===n?r:{ok:!1,code:`wallet_unlock_required`}}function Ew(e){return{ok:!0,placement:IC(e)}}function Dw(e,t){return{ok:!0,status:VC(t,e)}}async function Ow(e,t,n){let r=e.readAuthentication(),i=await kw(e,t,`/wallet/placement/v1/relocations/${encodeURIComponent(n)}?walletId=${encodeURIComponent(t)}`,Dw.bind(null,n));return i.ok&&await jC(e,t,i.status),e.readAuthentication()===r?i:{ok:!1,code:`wallet_unlock_required`}}async function kw(e,t,n,r){let i=e.readAuthentication();if(i.kind!==`authenticated`||i.walletId!==t)return{ok:!1,code:`wallet_unlock_required`};let a;try{a=await e.managementRequest.request({walletId:t,method:`GET`,canonicalPath:n})}catch(t){return t instanceof X&&t.code===Z.WALLET_UNLOCK_REQUIRED||e.readAuthentication()!==i?{ok:!1,code:`wallet_unlock_required`}:{ok:!1,code:`transport_unavailable`}}if(e.readAuthentication()!==i)return{ok:!1,code:`wallet_unlock_required`};if(a.status===401||a.status===403)return{ok:!1,code:`unauthorized`};if(a.status!==200)return{ok:!1,code:`transport_unavailable`};try{return r(a.body)}catch{return{ok:!1,code:`invalid_response`}}}function Aw(e){let t;return()=>(t??=e().catch(e=>{throw t=void 0,e}),t)}function jw(){return{ecdsaSessions:{exportArtifactsByLane:new Map}}}function Mw(e){let t=Aw(async()=>{let{createWarmSessionHydrationService:t}=await import(`./warmSessionHydration-CsQpQVuy.js`);return t({getWarmSessionMaterialWriter:e.ui.warmSessions.getWarmSessionMaterialWriter})}),n={hydrateSigningSession:async e=>(await t()).hydrateSigningSession(e)},r=Aw(async()=>{let{createRegistrationAccountsService:t}=await import(`./registrationAccounts-BQMUusdD.js`);return t(e.registration.accountLifecycle)}),i={storeUserData:async e=>(await r()).storeUserData(e),getAllUsers:async()=>(await r()).getAllUsers(),getUserBySignerSlot:async(e,t)=>(await r()).getUserBySignerSlot(e,t),getLastUser:async()=>(await r()).getLastUser(),nearAuthenticatorsByAccount:async e=>(await r()).nearAuthenticatorsByAccount(e),setLastUser:async(e,t)=>(await r()).setLastUser(e,t),activateAuthenticatedWalletState:async e=>(await r()).activateAuthenticatedWalletState(e),setWalletNearProvisioningState:async e=>(await r()).setWalletNearProvisioningState(e),getWalletNearProvisioningState:async e=>(await r()).getWalletNearProvisioningState(e),storeAuthenticator:async e=>(await r()).storeAuthenticator(e),rollbackUserRegistration:async e=>(await r()).rollbackUserRegistration(e),hasPasskeyCredential:async e=>(await r()).hasPasskeyCredential(e),storeWalletEd25519RegistrationData:async e=>(await r()).storeWalletEd25519RegistrationData(e),storeWalletEd25519RecoveryRegistrationData:async e=>(await r()).storeWalletEd25519RecoveryRegistrationData(e),storeWalletEmailOtpEd25519RegistrationData:async e=>(await r()).storeWalletEmailOtpEd25519RegistrationData(e),storeWalletEmailOtpMixedRegistrationData:async e=>(await r()).storeWalletEmailOtpMixedRegistrationData(e),finalizeWalletEd25519SignerRegistration:async e=>(await r()).finalizeWalletEd25519SignerRegistration(e),rollbackWalletEd25519SignerRegistration:async e=>(await r()).rollbackWalletEd25519SignerRegistration(e)},a=Aw(async()=>{let{createEcdsaWalletRecordsService:t}=await import(`./ecdsaWalletRecords-CHfrYvKr.js`);return t({accountLifecycle:e.registration.accountLifecycle})}),o={storeWalletEcdsaSignerRecords:async e=>(await a()).storeWalletEcdsaSignerRecords(e),storeWalletEmailOtpEcdsaSignerRecords:async e=>(await a()).storeWalletEmailOtpEcdsaSignerRecords(e),storeWalletEcdsaRecoverySignerRecords:async e=>(await a()).storeWalletEcdsaRecoverySignerRecords(e),finalizeWalletEcdsaRegistration:async e=>(await a()).finalizeWalletEcdsaRegistration(e),storeWalletEmailOtpEcdsaRegistrationData:async e=>(await a()).storeWalletEmailOtpEcdsaRegistrationData(e)},s={signNear:async t=>{let{signNear:n}=await import(`./signNear-XGZBxc_g.js`).then(e=>e.n);return n(e.signing.near.getDeps(),t)}},c={signEvmFamily:async t=>{let{signEvmFamily:n}=await import(`./signEvmFamily-Cpm3e6Zs.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)},reportTempoBroadcastAccepted:async t=>{let{reportTempoBroadcastAccepted:n}=await import(`./signEvmFamily-Cpm3e6Zs.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)},reportTempoBroadcastRejected:async t=>{let{reportTempoBroadcastRejected:n}=await import(`./signEvmFamily-Cpm3e6Zs.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)},reportTempoFinalized:async t=>{let{reportTempoFinalized:n}=await import(`./signEvmFamily-Cpm3e6Zs.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)},reportTempoDroppedOrReplaced:async t=>{let{reportTempoDroppedOrReplaced:n}=await import(`./signEvmFamily-Cpm3e6Zs.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)},reconcileTempoNonceLane:async t=>{let{reconcileTempoNonceLane:n}=await import(`./signEvmFamily-Cpm3e6Zs.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)}};return{...e,services:{warmSessions:n,registrationAccounts:i,nearSigning:s,evmFamilySigning:c,ecdsaWalletRecords:o}}}function Nw(e){return{network:e.network,registration:e.registration,signing:e.signing}}function Pw(e){return vm({indexedDB:K,workerCtx:e})}function Fw(e){let t=jw(),n=Nw(e.config);return Mw({runtimePorts:Pw(e.workerCtx),workers:{emailOtp:e.workerCtx},signing:{near:{getDeps:e.getNearSigningDeps},evmFamily:{getDeps:e.getEvmFamilySigningDeps}},registration:{accountLifecycle:e.accountLifecycle,ecdsaBootstrapStore:e.ecdsaBootstrapStore},ui:{warmSessions:{getWarmSessionMaterialWriter:e.getWarmSessionMaterialWriter}},config:n,state:t})}var Iw=class extends Error{constructor(e){super(`Browser capability ${e.operation.capabilityKind} is unavailable for ${e.operation.operationKind}: ${e.reason}`),this.code=`browser_capability_unavailable`,this.name=`BrowserCapabilityUnavailableError`,this.selection=e}};function Lw(e){return{kind:`selected`,operation:e}}function Rw(e,t){return{kind:`disabled`,operation:e,reason:t}}function zw(e,t){switch(t.operationKind){case yt.signTransaction:case yt.signDelegateAction:case yt.signNep413Message:{let n=ut(t.operationKind);return e.signing.routerAb.normalSigning.mode===`enabled`?Lw(n):Rw(n,`router_ab_normal_signing_disabled`)}case yt.exportKey:return Lw(ut(t.operationKind))}}function Bw(e,t){let n=Ir(e.network.chains).some(e=>Fr(e,t.chainTarget));switch(t.operationKind){case _t.signTransaction:case _t.exportKey:{let e=mt(t.operationKind);return n?Lw(e):Rw(e,`ecdsa_target_not_configured`)}}}function Vw(e,t){switch(t.capabilityKind){case bt.vaultAccess:return Rw(vt(t.operationKind),`capability_not_deployed`);case bt.nearEd25519MpcSigning:return zw(e,t);case bt.evmEcdsaMpcSigning:return Bw(e,t)}}function Hw(e,t){let n=Vw(e,t);switch(n.kind){case`selected`:return n.operation;case`disabled`:throw new Iw(n)}}function Uw(e){return typeof e==`object`&&!!e&&`kind`in e}function Ww(e,t){return typeof t==`string`?e.networkSlug===t:`chainId`in t?e.chainId===t.chainId:e.kind===t.family}function Gw(e){return typeof e==`string`?e:Uw(e)?B(e):`chainId`in e?`chainId ${e.chainId}`:`family ${e.family}`}function Kw(e,t){if(Uw(t))return Mr(t);let n=Ir(e),r=n.filter(e=>Ww(e,t)),i=r[0];if(r.length===1&&i)return i;if(r.length>1)throw Error(`[threshold-ecdsa] ambiguous chain selector "${Gw(t)}": matched ${r.map(B).join(`, `)}. Name one exact network slug instead.`);let a=n.map(e=>e.networkSlug).join(`, `);throw Error(`[threshold-ecdsa] no configured ECDSA chain matches "${Gw(t)}". Configured chains: ${a||`(none)`}.`)}function qw(e,t){let n=Kw(e,t);if(n.kind!==`tempo`)throw Error(`[threshold-ecdsa] expected a Tempo chain target, resolved ${B(n)}`);return n}function Jw(e,t){let n=Kw(e,t);if(n.kind!==`evm`)throw Error(`[threshold-ecdsa] expected an EVM chain target, resolved ${B(n)}`);return n}function Yw(e,t){switch(t.kind){case`ed25519`:Hw(e,{capabilityKind:bt.nearEd25519MpcSigning,operationKind:yt.exportKey});return;case`ecdsa`:Hw(e,{capabilityKind:bt.evmEcdsaMpcSigning,operationKind:_t.exportKey,chainTarget:t.chainTarget});return}}function Xw(e){return{exportKey:Zw.bind(null,e)}}async function Zw(e,t){let n=t.options??{};if(t.kind===`ed25519`){let r={kind:`ed25519`,...await e.currentWallet.nearSubject(t)};Yw(e.configs,r);let i=await e.domain.resolveExactKeyExportLane(r);if(i.kind!==`ed25519`)throw Error(`[key-export] expected an Ed25519 lane, received ${i.kind}`);return await e.domain.exportKeypairWithUI({...r,laneIdentity:i.laneIdentity,materialActivation:i.materialActivation,options:n}),{kind:`exported`}}let r={kind:`ecdsa`,walletSession:await e.currentWallet.walletSession(t.walletSession),chainTarget:Kw(e.configs.network.chains,t.chainTarget)};Yw(e.configs,r);let i=await e.domain.resolveExactKeyExportLane(r);if(i.kind!==`ecdsa`)throw Error(`[key-export] expected an ECDSA lane, received ${i.kind}`);return await e.domain.exportKeypairWithUI({...r,laneIdentity:i.laneIdentity,options:n}),{kind:`exported`}}function Qw(e,t,n){let r=String(e[t]||``).trim();if(!r)throw Error(`${n} returned missing ${t}`);return r}function $w(e,t){let n=typeof e==`number`?e:Number(e);if(!Number.isSafeInteger(n)||n<=0)throw Error(`${t} returned invalid signerSlot`);return Math.floor(n)}function eT(e,t){if(!O(e))throw Error(`${t} returned missing walletBinding`);let n=Go(Qw(e,`walletId`,t)),r=kr(Qw(e,`nearAccountId`,t)),i=qo(Qw(e,`nearEd25519SigningKeyId`,t)),a=Qw(e,`rpId`,t),o=m(Qw(e,`credentialIdB64u`,t));if(!o.ok)throw Error(`${t} returned invalid credentialIdB64u`);let s=$w(e.signerSlot,t);return{walletId:n,nearAccountId:r,nearEd25519SigningKeyId:i,rpId:a,credentialIdB64u:o.value,signerSlot:s}}function tT(e,t){return eT(O(e.walletBinding)?e.walletBinding:e,t)}function nT(e,t,n){if(String(e.walletId)!==String(t.walletId)||String(e.nearAccountId)!==String(t.nearAccountId)||String(e.nearEd25519SigningKeyId)!==String(t.nearEd25519SigningKeyId)||e.rpId!==t.rpId||e.signerSlot!==t.signerSlot)throw Error(`${n} returned mismatched wallet binding`)}function rT(e){return{success:!1,error:e}}function iT(e,t){return globalThis.fetch(e,t)}function aT(e){try{e.onEvent?.(xs({flowId:e.flowId,...e.event}))}catch{}}function oT(e){let t=String(e.configs.network.relayer?.url||``).trim();if(!t)throw Error(`missing_relayer_url`);return t}function sT(e){let t=i(e.signingEngine.getRpId());if(!t.ok)throw Error(`missing_rp_id`);return t.value}function cT(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=typeof n==`string`?n.trim():``;e&&t.push(e)}return t}function lT(e,t){let n=String(e[t]||``).trim();if(!n)throw Error(`sync-account ${t} is required`);return n}function uT(e){if(!E(e))throw Error(`sync-account ECDSA chain target is invalid`);let t=Number(e.chainId);if(!Number.isSafeInteger(t)||t<=0)throw Error(`sync-account ECDSA chain id is invalid`);if(e.kind===`evm`&&e.namespace===`eip155`)return{kind:`evm`,namespace:`eip155`,chainId:t,networkSlug:String(e.networkSlug||``).trim()||`evm-${t}`};if(e.kind===`tempo`)return{kind:`tempo`,chainId:t,networkSlug:String(e.networkSlug||``).trim()||`tempo-${t}`};throw Error(`sync-account ECDSA chain family is invalid`)}function dT(e){if(!Array.isArray(e)||e.length!==2||e[0]!==1||e[1]!==2)throw Error(`sync-account ECDSA participant ids are invalid`);return[1,2]}function fT(e){return e.kind===`sign`&&e.keyFamily===`ecdsa_secp256k1`}function pT(e){for(let t of e)if(fT(t))return t;return null}function mT(e,t){let n=E(e)?e:{},r=n.ecdsaCustody;if(!E(r)||r.kind!==`wallet_custody_ecdsa_sync_continuity_v1`)throw Error(`sync-account ECDSA custody continuity is invalid`);if(!Array.isArray(r.signers))throw Error(`sync-account ECDSA custody signer list is invalid`);let i=[];for(let e of r.signers){if(!E(e)||!E(e.walletKey))throw Error(`sync-account ECDSA custody signer is invalid`);let n=e.walletKey,r=lT(n,`walletId`);if(r!==String(t.walletId))throw Error(`sync-account ECDSA custody signer changed the wallet identity`);i.push({chainTarget:uT(e.chainTarget),walletKey:{walletId:r,keyHandle:lT(n,`keyHandle`),ecdsaThresholdKeyId:lT(n,`ecdsaThresholdKeyId`),signingRootId:lT(n,`signingRootId`),signingRootVersion:lT(n,`signingRootVersion`),relayerKeyId:lT(n,`relayerKeyId`),contextBinding32B64u:lT(n,`contextBinding32B64u`),derivationClientSharePublicKey33B64u:lT(n,`derivationClientSharePublicKey33B64u`),participantIds:dT(n.participantIds),publicCapability:co(n.publicCapability)},activationReceipt:po(e.activationReceipt),runtimePolicyScope:Ae(e.runtimePolicyScope)})}let a=i[0];if(!a){if(n.ecdsaSession!==void 0||n.ecdsaActivationReceipt!==void 0)throw Error(`sync-account returned an ECDSA session without custody continuity`);return{kind:`wallet_custody_ecdsa_sync_continuity_v1`,state:`absent`,signers:[]}}let o=Pa(n.ecdsaSession),s=po(n.ecdsaActivationReceipt),c=pT(t.walletSession.capabilitySubjects);if(!c||o.session.authorization_id!==t.walletSession.authorizationId||!Qa(o.public_capability,a.walletKey.publicCapability)||!ho(s,a.activationReceipt)||!b(c.materialActivation,Xa(o.public_capability.material_activation))||o.session.wallet_session_id!==t.session.walletSessionId||o.session.quota_id!==t.session.quotaId||o.session.expires_at_ms!==t.session.expiresAtMs||o.session.remaining_uses!==t.session.remainingUses)throw Error(`sync-account ECDSA session changed the Wallet Session or custody identity`);return{kind:`wallet_custody_ecdsa_sync_continuity_v1`,state:`activated`,signers:[a,...i.slice(1)],sessionActivation:o}}async function hT(e){try{return await e.json()}catch{return null}}async function gT(e){let t=await e.fetch(`${e.relayerUrl}/sync-account/options`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({rp_id:e.rpId,...e.walletId?{account_id:e.walletId}:{}})}),n=await hT(t);if(!t.ok||!E(n)||n.ok!==!0){let e=E(n)?String(n.message||n.code||``):``;throw Error(e||`sync-account/options failed (HTTP ${t.status})`)}let r=String(n.challengeId||``).trim(),i=String(n.challengeB64u||``).trim();if(!r||!i)throw Error(`sync-account/options returned an invalid challenge`);let a=E(n.walletBinding)?tT(n,`sync-account/options`):null,o=cT(n.credentialIds);if(e.walletId&&(!a||o.length===0))throw Error(`No passkey recovery capability found for wallet ${e.walletId}`);return{challengeId:r,challengeB64u:i,credentialIds:o,walletBinding:a}}async function _T(e,t){let n=t?Go(String(t)):null,r=oT(e),i=sT(e),a=await gT({relayerUrl:r,rpId:i,walletId:n?String(n):null,fetch:iT});return Object.freeze({walletId:n?String(n):null,relayerUrl:r,rpId:i,syncOptions:a})}function vT(e){let t=String(e.id||``).trim(),n=String(e.rawId||``).trim();if(!t||!n||t!==n)throw Error(`selected passkey credential identity is invalid`);let r=m(n);if(!r.ok)throw Error(`selected passkey credential identity is invalid`);return r.value}function yT(e,t){if(t===null)return e.credentialIds;if(!e.credentialIds.includes(t))throw Error(`replacement account-sync challenge changed the selected passkey`);return[t]}function bT(e,t){if(typeof e!=`string`||e.trim()!==e||!e)return null;let n=t(e);return n.ok?n.value:null}function xT(e){if(e.response.status!==409||!E(e.raw))return null;let t=e.raw;if(t.ok!==!1||t.code!==`already_committed`||t.kind!==`already_committed`||t.next!==`unlock_exact_method`||[`walletId`,`authorityId`,`walletAuthMethodId`,`mintId`,`authorizationId`,`walletSessionId`,`quotaId`].some(e=>{let n=t[e];return typeof n!=`string`||!n.trim()})||`walletSessionToken`in t||`walletSessionJwt`in t||`sessionKind`in t||`walletSession`in t||`operationCredential`in t||`credential`in t)return null;let n=bT(t.walletId,o),i=bT(t.authorityId,r),a=bT(t.walletAuthMethodId,c),s=bT(t.mintId,ft),l=bT(t.authorizationId,gt),u=bT(t.walletSessionId,pt),d=bT(t.quotaId,dt);return!n||!i||!a||!s||!l||!u||!d||e.expectedWalletId!==null&&n!==e.expectedWalletId?null:{walletId:n,walletAuthMethodId:a}}async function ST(e){let t=await e.fetch(`${e.relayerUrl}/sync-account/verify`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({challengeId:e.challengeId,webauthn_authentication:dc(e.credential)})}),n=await hT(t);if(!t.ok||!E(n)||n.ok!==!0||n.verified!==!0){let r=xT({response:t,raw:n,expectedWalletId:e.expectedWalletId});if(r)return{kind:`already_committed`,walletId:r.walletId,walletAuthMethodId:r.walletAuthMethodId,credentialIdB64u:e.selectedCredentialId};let i=E(n)?String(n.message||n.code||``):``;throw Error(i||`sync-account/verify failed (HTTP ${t.status})`)}let r=tT(n,`sync-account/verify`);e.onRelayVerifySucceeded?.(r);let i=bn(n);return{kind:`verified`,response:{verifiedBinding:r,parsedYaoResponse:i,ecdsaContinuity:mT(n,i)}}}function CT(e){throw Error(`Unexpected recovered capability ownership: ${String(e)}`)}async function wT(e){let t=e.ownership;switch(t.kind){case`caller_owned`:t.recovery.activeClient.dispose(),await e.context.signingEngine.clearVolatileWarmSigningMaterial(t.recovery.parsed.walletId);return;case`registry_owned`:await e.context.signingEngine.clearVolatileWarmSigningMaterial(t.recovery.parsed.walletId);return;case`empty`:case`committed`:return;default:return CT(t)}}function TT(e){e.optionsBinding&&nT(e.optionsBinding,e.verifiedBinding,`sync-account/verify`);let t=e.parsed;if(e.verifiedBinding.rpId!==e.rpId||e.requestedWalletId!==null&&e.requestedWalletId!==e.verifiedBinding.walletId||String(t.walletId)!==String(e.verifiedBinding.walletId)||String(t.nearAccountId)!==String(e.verifiedBinding.nearAccountId)||t.nearEd25519SigningKeyId!==String(e.verifiedBinding.nearEd25519SigningKeyId)||t.credentialIdB64u!==e.verifiedBinding.credentialIdB64u||t.credentialIdB64u!==e.selectedCredentialId||e.expectedWalletAuthMethodId!==null&&String(t.walletAuthMethodId)!==e.expectedWalletAuthMethodId||t.signerSlot!==e.verifiedBinding.signerSlot)throw Error(`recovered Yao capability does not match the verified wallet binding`)}function ET(e){let t=e.capability.registrationContinuity;return{materialActivation:e.capability.materialActivation,lifecycleId:e.capability.lifecycle.lifecycleId,signingRootVersion:e.capability.lifecycle.rootShareEpoch,signingRootId:e.capability.applicationBinding.signing_root_id,signerSetId:e.capability.lifecycle.signerSetId,thresholdSessionId:e.capability.lifecycle.thresholdSessionId,activationTranscriptB64u:P(Uint8Array.from(t.activationTranscript)),activationCapabilityBindingB64u:P(Uint8Array.from(e.capability.activeCapabilityBinding))}}async function DT(e){return await e.load({nearAccountId:String(e.parsed.nearAccountId),signerSlot:e.parsed.signerSlot,expectedRegisteredPublicKeyB64u:P(Uint8Array.from(e.parsed.capability.registeredPublicKey))})}function OT(e){return{kind:ta,applicationBindingDigestB64u:e.applicationBindingDigestB64u,registeredPublicKeyB64u:P(e.metadata.registeredPublicKey),participantIds:e.metadata.participantIds,stateEpoch:String(e.metadata.stateEpoch),walletId:String(e.parsed.walletId),nearAccountId:String(e.parsed.nearAccountId),nearEd25519SigningKeyId:e.parsed.nearEd25519SigningKeyId,signerSlot:e.parsed.signerSlot,signingWorkerId:e.parsed.relayerKeyId,signingWorkerVerifyingShareB64u:P(e.metadata.signingWorkerVerifyingShare)}}function kT(e){return`sealLocalMaterial`in e&&typeof e.sealLocalMaterial==`function`}async function AT(e){let t=kn(e.parsed.walletCustody.envelope);if(!t.ok)throw Error(t.reason);let n=e.ownedFactorSecret.slice(),r=null,i=null,a=null;try{let o=Tn(e.parsed.walletCustody.envelope),c=ET(e.parsed),l=await Xt({loadCachedMaterial:DT.bind(void 0,{load:e.loadWalletCustodyEd25519Material,parsed:e.parsed}),activation:c,envelope:o,ownedFactorSecret:n});if(l.kind===`opened`)a=l.activeClient;else{r=e.ownedFactorSecret.slice(),i=e.ownedFactorSecret.slice();let n=await e.rejoinWalletCustodyNearEd25519KeySet({walletId:String(e.parsed.walletId),custodyJson:t.custodyJson,factorSecret:r.buffer,nearEd25519SigningKeyId:e.parsed.nearEd25519SigningKeyId,recoveryBasis:e.parsed.capability,routerOrigin:new URL(e.relayerUrl).origin,walletSessionToken:e.parsed.operationCredential.token}),s=OT({parsed:e.parsed,applicationBindingDigestB64u:n.localMaterial.applicationBindingDigestB64u,metadata:n.metadata});await e.persistWalletCustodyEd25519Material({binding:s,sealed:{ciphertextB64u:n.localMaterial.b64u,nonceB64u:n.localMaterial.nonceB64u}}),a=await sr({material:{binding:s,sealed:{ciphertextB64u:n.localMaterial.b64u,nonceB64u:n.localMaterial.nonceB64u}},activation:Jt(n.metadata),envelope:o,ownedFactorSecret:i})}if(!a)throw Error(`Wallet custody recovery produced no active Ed25519 client`);if(!kT(a))throw Error(`Wallet custody recovery produced an unsealable Ed25519 client`);let u=s(a.metadata().scope.threshold_session_id);if(!u.ok)throw Error(`Wallet custody recovery returned an invalid threshold session identity`);let d=e.parsed.walletCustody.envelope.factor;if(d.kind!==`passkey`)throw Error(`Wallet custody recovery returned a different factor authority`);await xr({store:K,activeClient:a,identity:{walletId:String(e.parsed.walletId),nearAccountId:String(e.parsed.nearAccountId),nearEd25519SigningKeyId:String(e.parsed.nearEd25519SigningKeyId),thresholdSessionId:u.value,signerSlot:e.parsed.signerSlot,rpId:d.rpId,credentialIdB64u:d.credentialIdB64u,signingRootId:e.parsed.capability.applicationBinding.signing_root_id,signingRootVersion:e.parsed.capability.lifecycle.rootShareEpoch,signingWorkerId:e.parsed.relayerKeyId},stableServerScope:{relayerKeyId:e.parsed.relayerKeyId,participantIds:e.parsed.session.participantIds,runtimePolicyScope:e.parsed.capability.runtimePolicyScope,routerAbNormalSigning:e.parsed.session.routerAbNormalSigning},passkeyPrfFirstB64u:P(e.ownedFactorSecret)});let f=gn({parsed:e.parsed,relayerUrl:e.relayerUrl,rpId:e.rpId,thresholdSessionId:u.value}),p={activeClient:a,walletSessionState:f,parsed:e.parsed},m=wc(p.activeClient.metadata());await Ht({persistence:e.sessionPersistence,session:p.walletSessionState,prfFirstB64u:P(e.ownedFactorSecret),ed25519Restore:xn({rpId:d.rpId,nearAccountId:String(e.parsed.nearAccountId),nearEd25519SigningKeyId:String(e.parsed.nearEd25519SigningKeyId),relayerKeyId:e.parsed.relayerKeyId,participantIds:e.parsed.session.participantIds,runtimePolicyScope:e.parsed.session.runtimePolicyScope,signerSlot:e.parsed.signerSlot,routerAbNormalSigning:e.parsed.session.routerAbNormalSigning,credentialIdB64u:d.credentialIdB64u,materialActivation:m}),materialActivation:m});let h=await e.activateCapability({activeClient:p.activeClient,facts:{thresholdSessionId:p.walletSessionState.thresholdSessionId,signer:p.walletSessionState.signingLane.identity.signer,signingRootId:p.walletSessionState.signingRootId,signingRootVersion:p.walletSessionState.signingRootVersion,routerAbNormalSigning:p.walletSessionState.routerAbNormalSigning,runtimePolicyScope:p.walletSessionState.runtimePolicyScope,relayerUrl:p.walletSessionState.relayerUrl}});if(!b(h.materialActivation,m))throw Error(`Passkey Ed25519 registry activation changed during recovery commit`);let g=await Ea({authority:e.parsed.foundingAuthority,materialActivation:h.materialActivation,updatedAtMs:Date.now()});return await K.persistFoundingWalletAuthority({authority:g,authMethod:e.parsed.foundingAuthMethod}),await e.sessionPersistence.upsertEd25519YaoPublicCapabilityLaneReference(Vt({walletSessionState:p.walletSessionState,materialActivation:h.materialActivation})),p}catch(e){throw a?.dispose(),e}finally{n.fill(0),r?.fill(0),i?.fill(0)}}function jT(e){let t=F(e);if(t.length!==20)throw Error(`ECDSA custody address must contain 20 bytes`);let n=`0x`;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n}function MT(e){if(e.state===`absent`)return null;let t=e.signers[0],n=new Set;for(let n of e.signers.slice(1))if(n.walletKey.keyHandle!==t.walletKey.keyHandle||!Qa(n.walletKey.publicCapability,t.walletKey.publicCapability)||!ho(n.activationReceipt,t.activationReceipt)||!Un(n.runtimePolicyScope,t.runtimePolicyScope))throw Error(`sync-account returned conflicting ECDSA custody identities`);for(let t of e.signers){let e=B(t.chainTarget);if(n.has(e))throw Error(`sync-account returned duplicate ECDSA custody chain targets`);n.add(e)}return t}async function NT(e){let t=MT(e.continuity);if(!t)return;let n=kn(e.parsed.walletCustody.envelope);if(!n.ok)throw Error(n.reason);let r=t.walletKey,i=t.activationReceipt.ecdsa_activation.public_identity,a=e.ownedFactorSecret.slice(),[o,...s]=e.continuity.signers.map(e=>e.chainTarget);if(o)try{let c=await e.signingSurface.rejoinWalletCustodyEvmFamilyKeySet({walletId:r.walletId,custodyJson:n.custodyJson,factorSecret:a.buffer,evmFamilySigningKeySlotId:Bo({walletId:r.walletId,signingRootId:r.signingRootId,signingRootVersion:r.signingRootVersion}),applicationBindingDigestB64u:r.publicCapability.context.application_binding_digest_b64u,registeredClientRootPublicKey33B64u:r.derivationClientSharePublicKey33B64u,relayerPublicIdentityJson:JSON.stringify({relayerKeyId:r.relayerKeyId,relayerPublicKey33B64u:i.server_public_key33_b64u,groupPublicKey33B64u:i.threshold_public_key33_b64u,ethereumAddress:jT(i.ethereum_address20_b64u),relayerShareRetryCounter:i.server_share_retry_counter})});await e.signingSurface.restoreWalletCustodyEcdsaContinuity({authority:e.parsed.authority,chainTargets:[o,...s],walletId:r.walletId,keyHandle:r.keyHandle,ecdsaThresholdKeyId:r.ecdsaThresholdKeyId,signingRootId:r.signingRootId,signingRootVersion:r.signingRootVersion,relayerKeyId:r.relayerKeyId,participantIds:r.participantIds,publicCapability:r.publicCapability,activationReceipt:t.activationReceipt,runtimePolicyScope:t.runtimePolicyScope,readyStateBlobB64u:c.readyStateBlobB64u,publicFacts:c.publicFacts})}finally{a.fill(0)}}async function PT(e){let t=e.walletId===null?null:String(e.walletId).trim();if(e.walletId!==null&&!t)throw Error(`passkey Yao unlock recovery requires a valid walletId`);let n=t?Go(t):null,r=e.prepared??await gT({relayerUrl:e.relayerUrl,rpId:e.rpId,walletId:n?String(n):null,fetch:e.fetch});if(e.prepared&&!e.credential)throw Error(`prepared account-sync challenge requires a CTA credential`);let i=yT(r,e.expectedCredentialIdB64u);e.onPromptStarted?.();let a=e.credential?e.credential:await e.collectCredential({challengeB64u:r.challengeB64u,credentialIds:i});e.onPromptSucceeded?.();let o=vT(a);if(e.expectedCredentialIdB64u!==null&&o!==e.expectedCredentialIdB64u)throw Error(`replacement account-sync assertion changed the selected passkey`);let s=oc(a);if(!s)throw Error(`selected passkey did not return PRF.first`);e.onRelayVerifyStarted?.();let c=await ST({relayerUrl:e.relayerUrl,challengeId:r.challengeId,expectedWalletId:n,selectedCredentialId:o,credential:a,fetch:e.fetch,onRelayVerifySucceeded:e.onRelayVerifySucceeded});if(c.kind===`already_committed`)return c;let{verifiedBinding:l,parsedYaoResponse:u,ecdsaContinuity:d}=c.response,f=F(s);try{TT({requestedWalletId:n,expectedWalletAuthMethodId:e.expectedWalletAuthMethodId,rpId:e.rpId,optionsBinding:r.walletBinding,verifiedBinding:l,parsed:u,selectedCredentialId:o}),await e.prepareLocalProfile(u,a);let t=await e.withExactEd25519MaterialOwner({materialActivation:u.capability.materialActivation,nearAccountId:u.nearAccountId,task:AT.bind(void 0,{parsed:u,ownedFactorSecret:f,relayerUrl:e.relayerUrl,rpId:e.rpId,sessionPersistence:e.sessionPersistence,activateCapability:e.activateCapability,rejoinWalletCustodyNearEd25519KeySet:e.rejoinWalletCustodyNearEd25519KeySet,loadWalletCustodyEd25519Material:e.loadWalletCustodyEd25519Material,persistWalletCustodyEd25519Material:e.persistWalletCustodyEd25519Material})});return await rn({walletId:String(u.walletId),credentialIdB64u:u.credentialIdB64u,envelope:u.walletCustody.envelope}),await NT({signingSurface:{rejoinWalletCustodyEvmFamilyKeySet:e.rejoinWalletCustodyEvmFamilyKeySet,restoreWalletCustodyEcdsaContinuity:e.restoreWalletCustodyEcdsaContinuity},parsed:u,continuity:d,ownedFactorSecret:f}),{kind:`recovered`,recovery:t,verifiedBinding:l}}finally{f.fill(0)}}async function FT(e){let t=e.parsed,n=F(t.credentialPublicKeyB64u);await e.context.signingEngine.storeUserData({walletId:String(t.walletId),nearAccountId:t.nearAccountId,signerSlot:t.signerSlot,operationalPublicKey:t.operationalPublicKey,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,lastUpdated:Date.now(),passkeyCredential:{id:String(e.credential.id||``),rawId:String(e.credential.rawId||``)},version:2}),await e.context.signingEngine.setWalletNearProvisioningState({walletId:t.walletId,status:`near_ready`,nearAccountId:t.nearAccountId});let r=(await K.listWalletPasskeyAuthenticators(String(t.walletId))).find(e=>e.credentialId===t.credentialIdB64u);if(r){if(r.signerSlot!==t.signerSlot||P(r.credentialPublicKey)!==t.credentialPublicKeyB64u)throw Error(`Stored linked passkey authenticator does not match account sync`)}else await e.context.signingEngine.storeAuthenticator({nearAccountId:t.nearAccountId,credentialId:t.credentialIdB64u,credentialPublicKey:n,transports:[],name:`Passkey for ${String(t.walletId)}`,registered:new Date().toISOString(),syncedAt:new Date().toISOString(),signerSlot:t.signerSlot});await K.persistFoundingWalletAuthority({authority:t.foundingAuthority,authMethod:t.foundingAuthMethod})}async function IT(e,t){await e.storeNearThresholdKeyMaterial({nearAccountId:t.nearAccountId,signerSlot:t.signerSlot,publicKey:t.operationalPublicKey,relayerKeyId:t.relayerKeyId,keyVersion:t.keyVersion,participants:ce({clientParticipantId:t.session.participantIds[0],relayerParticipantId:t.session.participantIds[1],relayerKeyId:t.relayerKeyId,clientShareDerivation:`prf_first_v1`}),signerId:t.operationalPublicKey})}async function LT(e){await q.writeExactWithOperationCredential({record:e.walletSession,operationCredential:e.operationCredential})}async function RT(e,t,n){await FT({context:e,parsed:t,credential:n})}function zT(e){return{id:e,type:`public-key`,transports:[]}}async function BT(e,t){return await e.signingSurface.getAuthenticationCredentialsSerialized({subjectId:e.requestedWalletId||`account-sync`,challengeB64u:t.challengeB64u,allowCredentials:t.credentialIds.map(zT),includeSecondPrfOutput:!1})}function VT(e){aT({onEvent:e.onEvent,flowId:e.flowId,event:{phase:ws.STEP_02_PASSKEY_PROMPT_STARTED,status:`waiting_for_user`,...e.requestedWalletId?{accountId:e.requestedWalletId}:{},interaction:{kind:`passkey_assert`,overlay:`show`}}})}function HT(e){aT({onEvent:e.onEvent,flowId:e.flowId,event:{phase:ws.STEP_02_PASSKEY_PROMPT_SUCCEEDED,status:`succeeded`,...e.requestedWalletId?{accountId:e.requestedWalletId}:{},interaction:{kind:`passkey_assert`,overlay:`hide`}}})}function UT(e){aT({onEvent:e.onEvent,flowId:e.flowId,event:{phase:ws.STEP_03_RELAY_VERIFY_STARTED,status:`started`,...e.requestedWalletId?{accountId:e.requestedWalletId}:{}}})}function WT(e,t){aT({onEvent:e.onEvent,flowId:e.flowId,event:{phase:ws.STEP_03_RELAY_VERIFY_SUCCEEDED,status:`succeeded`,accountId:String(t.walletId)}})}async function GT(e,t,n,r,i,a){let o=t?Go(String(t)):null;if(n.kind===`replacement_after_committed`&&o!==n.walletId)throw Error(`replacement account-sync attempt changed the committed wallet`);if(i&&i.walletId!==(o?String(o):null))throw Error(`prepared account-sync challenge wallet binding changed`);let s=`account-sync:${String(o||`discovery`)}`,c={kind:`empty`};try{let t=i?.relayerUrl??oT(e),l=i?.rpId??sT(e);if(i&&(oT(e)!==t||sT(e)!==l))throw Error(`prepared account-sync challenge runtime binding changed`);aT({onEvent:r?.onEvent,flowId:s,event:{phase:ws.STEP_01_STARTED,status:`started`,...o?{accountId:String(o)}:{}}});let u={signingSurface:e.signingEngine,requestedWalletId:o?String(o):null,onEvent:r?.onEvent,flowId:s},d=await PT({walletId:o?String(o):null,relayerUrl:t,rpId:l,fetch:iT,expectedCredentialIdB64u:n.kind===`replacement_after_committed`?n.credentialIdB64u:null,expectedWalletAuthMethodId:n.kind===`replacement_after_committed`?n.walletAuthMethodId:null,...i?{prepared:i.syncOptions,credential:a}:{},collectCredential:BT.bind(void 0,u),activateCapability:e.signingEngine.activateVerifiedNearEd25519YaoMaterial.bind(e.signingEngine),withExactEd25519MaterialOwner:e.signingEngine.withExactEd25519MaterialOwner.bind(e.signingEngine),sessionPersistence:e.signingEngine,rejoinWalletCustodyNearEd25519KeySet:e.signingEngine.rejoinWalletCustodyNearEd25519KeySet.bind(e.signingEngine),rejoinWalletCustodyEvmFamilyKeySet:e.signingEngine.rejoinWalletCustodyEvmFamilyKeySet.bind(e.signingEngine),restoreWalletCustodyEcdsaContinuity:e.signingEngine.restoreWalletCustodyEcdsaContinuity.bind(e.signingEngine),loadWalletCustodyEd25519Material:e.signingEngine.loadWalletCustodyEd25519Material.bind(e.signingEngine),persistWalletCustodyEd25519Material:e.signingEngine.persistWalletCustodyEd25519Material.bind(e.signingEngine),prepareLocalProfile:RT.bind(void 0,e),onPromptStarted:VT.bind(void 0,u),onPromptSucceeded:HT.bind(void 0,u),onRelayVerifyStarted:UT.bind(void 0,u),onRelayVerifySucceeded:WT.bind(void 0,u)});if(d.kind===`already_committed`){if(n.kind===`initial`)return await GT(e,d.walletId,{kind:`replacement_after_committed`,walletId:d.walletId,walletAuthMethodId:d.walletAuthMethodId,credentialIdB64u:d.credentialIdB64u},r);throw Error(`sync-account/verify remained already committed after one replacement attempt`)}let{recovery:f,verifiedBinding:p}=d;return c={kind:`registry_owned`,recovery:f},await LT(f.parsed),await IT(e.signingEngine,f.parsed),aT({onEvent:r?.onEvent,flowId:s,event:{phase:ws.STEP_04_AUTHENTICATOR_SAVED,status:`succeeded`,accountId:String(p.walletId)}}),aT({onEvent:r?.onEvent,flowId:s,event:{phase:ws.STEP_05_THRESHOLD_SESSION_READY,status:`succeeded`,accountId:String(p.walletId)}}),await e.signingEngine.activateAuthenticatedWalletState({walletId:p.walletId,nearAccountId:p.nearAccountId,signerSlot:p.signerSlot,nearClient:e.nearClient}),c={kind:`committed`},aT({onEvent:r?.onEvent,flowId:s,event:{phase:ws.STEP_06_COMPLETED,status:`succeeded`,accountId:String(p.walletId)}}),{success:!0,accountId:String(p.walletId),walletId:String(p.walletId),nearAccountId:String(p.nearAccountId),nearEd25519SigningKeyId:String(p.nearEd25519SigningKeyId),publicKey:f.parsed.operationalPublicKey,message:`Account synced successfully`,loginState:{isLoggedIn:!0}}}catch(t){let n=L(t)||`syncAccount failed`;try{await wT({context:e,ownership:c})}catch(e){let t=L(e)||`recovered capability cleanup failed`;n=`${n}; ${t}`}return aT({onEvent:r?.onEvent,flowId:s,event:{phase:ws.FAILED,status:`failed`,...o?{accountId:String(o)}:{},error:{message:n}}}),rT(n)}}async function KT(e,t,n){return await GT(e,t,{kind:`initial`},n)}async function qT(e,t,n,r){return await GT(e,t.walletId,{kind:`initial`},r,t,n)}function JT(e,t,n){try{e?.(Ss({...n,flowId:`signing:near:${String(t)}:${n.phase}`,accountId:String(t)}))}catch{}}function YT(e){let t=Pr(kr(e.nearAccountId));return{walletSession:Lr(e.walletSession),nearAccount:t}}function XT(e){let t=e.transaction,n=String(t.signerId||``).trim();if(!n)throw Error(`Signed transaction is missing signerId`);return n}function ZT(e){let t=XT(e.signedTransaction);if(t!==String(e.nearAccountId))throw Error(`Signed transaction signerId ${t} does not match NEAR account ${String(e.nearAccountId)}`)}function QT(e){if(!(e.serverDispatch||e.nonceLease))throw Error(`near.sendTransaction requires an SDK-produced signed transaction with nonce readiness`)}function $T(e){let t=String(e||``).trim();if(!t)throw Error(`NEAR broadcast response is missing transaction hash`);return t}function eE(e){return!e.signedTransaction.serverDispatch&&!e.signedTransaction.nonceLease&&e.signingResult.nonceLease&&(e.signedTransaction.nonceLease=e.signingResult.nonceLease),e.signedTransaction}async function tE(){if(typeof window<`u`&&typeof window.requestAnimationFrame==`function`){await new Promise(e=>{window.requestAnimationFrame(()=>e())});return}await Promise.resolve()}async function nE(e){return aE({context:e.context,nearAccountId:e.nearAccountId,walletSession:e.walletSession,transactionInput:e.transactionInput,options:e.options,confirmationConfigOverride:e.options.confirmationConfig})}async function rE(e){try{return oE({context:e.context,nearAccountId:e.nearAccountId,walletSession:e.walletSession,transactionInput:e.transactionInput,options:e.options,confirmationConfigOverride:e.options.confirmationConfig})}catch(e){throw I(e)}}async function iE({context:e,nearAccountId:t,walletSession:n,signedTransaction:r,options:i}){let a=YT({nearAccountId:t,walletSession:n}).nearAccount.accountId;ZT({signedTransaction:r,nearAccountId:a}),QT(r);let o=r.nonceLease;JT(i?.onEvent,a,{phase:W.STEP_12_BROADCAST_STARTED,status:`running`,interaction:{kind:`none`,overlay:`none`}});let s,c;try{if(r.serverDispatch)return s=r.serverDispatch.rpcResult,c=$T(r.serverDispatch.transactionHash),o&&(await e.signingEngine.getNonceCoordinator().markBroadcastAccepted({leaseId:o.leaseId,operationId:o.operationId,operationFingerprint:o.operationFingerprint,txHash:c}),await e.signingEngine.getNonceCoordinator().markFinalized({leaseId:o.leaseId,operationId:o.operationId,operationFingerprint:o.operationFingerprint,txHash:c})),JT(i?.onEvent,a,{phase:W.STEP_12_BROADCAST_ACCEPTED,status:`succeeded`,message:`Transaction ${c} sent successfully`,interaction:{kind:`none`,overlay:`none`},data:{txId:c}}),JT(i?.onEvent,a,{phase:W.STEP_15_COMPLETED,status:`succeeded`,message:`Transaction ${c} completed`,interaction:{kind:`none`,overlay:`none`},data:{txId:c}}),{success:!0,transactionId:c,result:s};s=await e.nearClient.sendTransaction(r,i?.waitUntil),c=$T(s.transaction.hash),o&&(await e.signingEngine.getNonceCoordinator().markBroadcastAccepted({leaseId:o.leaseId,operationId:o.operationId,operationFingerprint:o.operationFingerprint,txHash:c}),await e.signingEngine.getNonceCoordinator().markFinalized({leaseId:o.leaseId,operationId:o.operationId,operationFingerprint:o.operationFingerprint,...c?{txHash:c}:{}})),JT(i?.onEvent,a,{phase:W.STEP_12_BROADCAST_ACCEPTED,status:`succeeded`,message:`Transaction ${c} sent successfully`,interaction:{kind:`none`,overlay:`none`},...c?{data:{txId:c}}:{}}),JT(i?.onEvent,a,{phase:W.STEP_15_COMPLETED,status:`succeeded`,message:`Transaction ${c} completed`,interaction:{kind:`none`,overlay:`none`},...c?{data:{txId:c}}:{}})}catch(t){let n=I(t);console.error(`[sendTransaction] failed:`,n);let r=n.details;r&&console.error(`[sendTransaction] RPC error details:`,r);try{o&&await e.signingEngine.getNonceCoordinator().markBroadcastRejected({leaseId:o.leaseId,operationId:o.operationId,operationFingerprint:o.operationFingerprint,error:n})}catch(e){console.warn(`[sendTransaction]: Failed to release nonce after failure:`,e)}throw JT(i?.onEvent,a,{phase:W.FAILED,status:`failed`,interaction:{kind:`none`,overlay:`hide`},error:{message:n.message}}),n}return{success:!0,transactionId:c,result:s}}async function aE({context:e,nearAccountId:t,walletSession:n,transactionInput:r,options:i,confirmationConfigOverride:a}){try{let o=await oE({context:e,nearAccountId:t,walletSession:n,transactionInput:r,options:i,confirmationConfigOverride:a});return await iE({context:e,nearAccountId:t,walletSession:n,signedTransaction:eE({signedTransaction:o.signedTransaction,signingResult:o}),options:{onEvent:i?.onEvent,waitUntil:i?.waitUntil}})}catch(e){let n=I(e),r=n.short||Tr(n)||n.message;throw JT(i?.onEvent,t,{phase:W.FAILED,status:`failed`,message:`Action failed: ${r}`,interaction:{kind:`none`,overlay:`hide`},error:{message:r}}),i?.onError?.(n),n}}async function oE({context:e,nearAccountId:t,walletSession:n,transactionInput:r,options:i,confirmationConfigOverride:a}){let{onEvent:o,onError:s,waitUntil:c,confirmerText:l,signerSlot:u}=i||{};try{JT(o,t,{phase:W.STEP_01_STARTED,status:`started`,message:`Starting ${r.actions[0].type} action`,interaction:{kind:`none`,overlay:`none`}}),await sE(t,[r],{onEvent:o,onError:s,waitUntil:c}),await tE();let i={receiverId:r.receiverId,actions:r.actions.map(e=>ll(e))},d=await e.signingEngine.signNear({chain:`near`,kind:`transactionWithActions`,args:{commandSubject:YT({nearAccountId:t,walletSession:n}),transaction:i,rpcCall:{nearRpcUrl:N(e.configs.network.chains),nearAccountId:t},signerSlot:u,confirmationConfigOverride:a,title:l?.title,body:l?.body,onEvent:o}});if(!d?.signedTransaction)throw Error(`NEAR signing returned no signed transaction`);return d}catch(e){console.error(`[signTransaction] Error during execution:`,e);let n=I(e),r=n.short||Tr(n)||n.message;throw s?.(n),JT(o,t,{phase:W.FAILED,status:`failed`,message:`Action failed: ${r}`,interaction:{kind:`none`,overlay:`hide`},error:{message:r}}),n}}async function sE(e,t,n){let{onEvent:r}=n||{};if(!e)throw Error(`User not logged in or NEAR account ID not set for direct action.`);if(JT(r,e,{phase:W.STEP_02_REQUEST_PREPARED,status:`running`,message:`Validating inputs`,interaction:{kind:`none`,overlay:`none`}}),t.length===0)throw Error(`No payloads provided for signing`);if(t.length!==1)throw Error(`NEAR signing supports exactly one transaction per operation; received ${t.length}`);for(let e of t){if(!e.receiverId)throw Error(`Missing required parameter: receiverId`);for(let t of e.actions){if(t.type===sl.FunctionCall&&(!t.methodName||t.args===void 0))throw Error(`Missing required parameters for function call: methodName or args`);if(t.type===sl.Transfer&&!t.amount)throw Error(`Missing required parameter for transfer: amount`)}}}async function cE(){if(typeof window<`u`&&typeof window.requestAnimationFrame==`function`){await new Promise(uE);return}await Promise.resolve()}async function lE(e){let{context:t,delegate:n,options:r}=e,i=kr(String(e.nearAccountId)),a=r?.confirmerText?.title,o=r?.confirmerText?.body,s={...n,senderId:n.senderId||String(i)};JT(r?.onEvent,i,{phase:W.STEP_01_STARTED,status:`started`,message:`Preparing delegate action inputs`,interaction:{kind:`none`,overlay:`none`}}),await cE();try{let n=await t.signingEngine.signNear({chain:`near`,kind:`delegateAction`,args:{commandSubject:YT({nearAccountId:i,walletSession:e.walletSession}),delegate:s,rpcCall:{nearRpcUrl:N(t.configs.network.chains),nearAccountId:String(i)},signerSlot:r?.signerSlot,confirmationConfigOverride:r?.confirmationConfig,title:a,body:o,onEvent:r?.onEvent}}),c={hash:n.hash,signedDelegate:n.signedDelegate,nearAccountId:String(i),logs:n.logs};return JT(r?.onEvent,i,{phase:W.STEP_15_COMPLETED,status:`succeeded`,message:`Delegate action signed`,interaction:{kind:`none`,overlay:`none`},data:{hash:c.hash}}),await r?.afterCall?.(!0,c),c}catch(e){let t=I(e);throw r?.onError?.(t),await r?.afterCall?.(!1),JT(r?.onEvent,i,{phase:W.FAILED,status:`failed`,message:t.message,interaction:{kind:`none`,overlay:`hide`},error:{message:t.message}}),t}}function uE(e){window.requestAnimationFrame(e)}async function dE(e){let{context:t,nearAccountId:n,params:r,options:i}=e,a=i?.confirmerText,o=i?.confirmationConfig,{signingEngine:s}=t,c=i?.signerSlot,l=typeof c==`number`&&Number.isSafeInteger(c)&&c>=1;try{let u=r.callbackUrl===void 0?null:D(r.callbackUrl,`callbackUrl`),d=r.state===void 0?null:te(r.state,`state`);if(JT(i?.onEvent,n,{phase:W.STEP_01_STARTED,status:`started`,message:`Preparing NEP-413 message signing`,interaction:{kind:`none`,overlay:`none`}}),c!==void 0&&!l)throw Error(`Invalid signerSlot for NEP-413 signing: ${c}`);let f=l?await s.getUserBySignerSlot(n,c):await s.getLastUser();if(!f||!f.operationalPublicKey)throw Error(`Operational NEAR key data not found for ${n}`);let p=new Uint8Array(32);if(typeof crypto>`u`||typeof crypto.getRandomValues!=`function`)throw Error(`Secure random not available to generate NEP-413 nonce`);crypto.getRandomValues(p);let m=Me(p);JT(i?.onEvent,n,{phase:W.STEP_10_COMMIT_STARTED,status:`running`,message:`Signing NEP-413 message`,interaction:{kind:`none`,overlay:`none`}});let h=await t.signingEngine.signNear({chain:`near`,kind:`nep413`,args:{commandSubject:YT({nearAccountId:n,walletSession:e.walletSession}),onEvent:i?.onEvent,message:r.message,recipient:r.recipient,nonce:m,callbackUrl:u,state:d,signerSlot:l?c:void 0,title:a?.title,body:a?.body,confirmationConfigOverride:o}});if(h.success)return JT(i?.onEvent,n,{phase:W.STEP_15_COMPLETED,status:`succeeded`,message:`NEP-413 message signed successfully`,interaction:{kind:`none`,overlay:`none`}}),{success:!0,accountId:h.accountId,publicKey:h.publicKey,signature:h.signature,nonce:m,...h.state===void 0?{}:{state:h.state}};throw Error(`NEP-413 signing failed: ${h.error||`Unknown error`}`)}catch(e){let t=e instanceof Error?e.message:`Unknown error`;return JT(i?.onEvent,n,{phase:W.FAILED,status:`failed`,message:`NEP-413 signing failed: ${t}`,interaction:{kind:`none`,overlay:`hide`},error:{message:t}}),i?.onError?.(e instanceof Error?e:Error(t)),{success:!1,error:t}}}function fE(e){let t=new pE(e);return{signAndSendTransaction:t.signAndSendTransaction.bind(t),signTransaction:t.signTransaction.bind(t),sendTransaction:t.sendTransaction.bind(t),signDelegateAction:t.signDelegateAction.bind(t),signMessage:t.signMessage.bind(t)}}var pE=class{constructor(e){this.getContext=e}async signAndSendTransaction(e){let t=e.nearAccount.accountId,n={receiverId:e.receiverId,actions:e.actions};try{return await nE({context:this.getContext(),nearAccountId:t,walletSession:e.walletSession,transactionInput:n,options:e.options})}catch(t){let n=I(t);throw await e.options?.afterCall?.(!1,void 0,n),n}}async signTransaction(e){let t=e.nearAccount.accountId,{transaction:n,options:r}=e;try{return await rE({context:this.getContext(),nearAccountId:t,walletSession:e.walletSession,transactionInput:n,options:r})}catch(e){let t=I(e);throw await r?.afterCall?.(!1,void 0,t),t}}async sendTransaction(e){let t=e.nearAccount.accountId;return await iE({context:this.getContext(),nearAccountId:t,walletSession:e.walletSession,signedTransaction:e.signedTransaction,options:e.options})}async signDelegateAction(e){let t=e.nearAccount.accountId,{delegate:n,options:r}=e;return await lE({context:this.getContext(),nearAccountId:t,walletSession:e.walletSession,delegate:n,options:r})}async signMessage(e){let t=e.nearAccount.accountId,n=await dE({context:this.getContext(),nearAccountId:t,walletSession:e.walletSession,params:e.params,options:e.options});if(n?.success)await e.options?.afterCall?.(!0,n);else{let t=I(n?.error||`NEP-413 signing failed`);await e.options?.afterCall?.(!1,void 0,t)}return n}};function mE(e){let t=new hE(e);return{signEvmFamily:t.signEvmFamily.bind(t),reportBroadcastAccepted:t.reportBroadcastAccepted.bind(t),reportBroadcastRejected:t.reportBroadcastRejected.bind(t),reportFinalized:t.reportFinalized.bind(t),reportDroppedOrReplaced:t.reportDroppedOrReplaced.bind(t),reconcileNonceLane:t.reconcileNonceLane.bind(t),onBroadcastStarted:t.onBroadcastStarted.bind(t)}}var hE=class{constructor(e){this.getContext=e}async signEvmFamily(e){let{chainTarget:t,walletSession:n}=e;return await this.getContext().signingEngine.signEvmFamily({walletSession:n,request:e.request,chainTarget:t,confirmationConfigOverride:e.options?.confirmationConfig,shouldAbort:e.options?.shouldAbort,onEvent:e.options?.onEvent})}async reportBroadcastAccepted(e){let t=z(e.walletSession.walletId);await this.getContext().signingEngine.reportTempoBroadcastAccepted({walletId:t,signedResult:e.signedResult,txHash:e.txHash,onEvent:e.options?.onEvent})}async reportBroadcastRejected(e){let t=z(e.walletSession.walletId);await this.getContext().signingEngine.reportTempoBroadcastRejected({walletId:t,signedResult:e.signedResult,...e.error===void 0?{}:{error:e.error},onEvent:e.options?.onEvent})}async reportFinalized(e){let t=z(e.walletSession.walletId);await this.getContext().signingEngine.reportTempoFinalized({walletId:t,signedResult:e.signedResult,...e.txHash?{txHash:e.txHash}:{},...e.receiptStatus?{receiptStatus:e.receiptStatus}:{},onEvent:e.options?.onEvent})}async reportDroppedOrReplaced(e){let t=z(e.walletSession.walletId);await this.getContext().signingEngine.reportTempoDroppedOrReplaced({walletId:t,signedResult:e.signedResult,reason:e.reason,...e.txHash?{txHash:e.txHash}:{},onEvent:e.options?.onEvent})}async reconcileNonceLane(e){let t=z(e.walletSession.walletId);return await this.getContext().signingEngine.reconcileTempoNonceLane({walletId:t,signedResult:e.signedResult,onEvent:e.options?.onEvent})}onBroadcastStarted(e){}};const gE=/^0x[0-9a-fA-F]{40}$/,_E=`0xfeec000000000000000000000000000000000000`,vE=[{type:`function`,name:`setUserToken`,inputs:[{name:`token`,type:`address`}]}];function yE(e,t){let n=String(t||``).trim();if(!gE.test(n))throw Error(`[tempo] invalid ${e}: expected 20-byte 0x-prefixed address`);return n.toLowerCase()}function bE(e){return`0xe7897444${yE(`fee token address`,e).slice(2).toLowerCase().padStart(64,`0`)}`}function xE(e){let{request:t,chainTarget:n}=e;if(t.chain!==`evm`||t.kind!==`eip1559`||t.senderSignatureAlgorithm!==`secp256k1`)throw Error(`[tempo] fee-token request must use the EIP-1559 secp256k1 envelope`);if(t.tx.chainId!==n.chainId)throw Error(`[tempo] fee-token request chain id does not match the Tempo target`);if(t.tx.to?.toLowerCase()!==`0xfeec000000000000000000000000000000000000`)throw Error(`[tempo] fee-token request must call the Tempo FeeManager`);if(t.tx.value!==0n)throw Error(`[tempo] fee-token request must not transfer value`);let r=String(t.tx.data??``).toLowerCase(),i=r.slice(10);if(!r.startsWith(`0xe7897444`)||!/^0{24}[0-9a-f]{40}$/.test(i))throw Error(`[tempo] fee-token request must call FeeManager.setUserToken(address)`);if(t.tx.accessList&&t.tx.accessList.length!==0)throw Error(`[tempo] fee-token request must not carry an access list`);let a=yE(`fee token address`,`0x${i.slice(24)}`);return{...t,tx:{...t.tx,to:_E,value:0n,data:bE(a)}}}function SE(e){return`0xed498fa8${yE(`user address`,e).slice(2).toLowerCase().padStart(64,`0`)}`}function CE(e){let t=String(e||``).trim().toLowerCase();if(!/^0x[0-9a-f]*$/.test(t))throw Error(`[tempo] invalid userTokens(address) result: expected 0x-prefixed hex`);let n=t.slice(2);if(n.length<64)throw Error(`[tempo] invalid userTokens(address) result: expected at least 32 bytes`);let r=n.slice(0,64).slice(24);if(!/^[0-9a-f]{40}$/.test(r))throw Error(`[tempo] invalid userTokens(address) result: malformed address word`);return/^0+$/.test(r)?null:`0x${r}`}function wE(e){let t=yE(`fee token address`,e.token);return{to:yE(`fee manager contract address`,e.feeManager??`0xfeec000000000000000000000000000000000000`),value:0n,input:bE(t),abi:vE}}function TE(e,t){let n=String(e||``).trim().toLowerCase();if(!/^0x[0-9a-f]+$/.test(n))throw Error(`[tempo] invalid ${t} result: expected 0x-prefixed hex`);let r=n.slice(2);if(r.length<128)throw Error(`[tempo] invalid ${t} result: missing ABI string header`);let i=Number(BigInt(`0x${r.slice(0,64)}`));if(!Number.isSafeInteger(i))throw Error(`[tempo] invalid ${t} result: unsafe ABI offset`);let a=i*2,o=a+64;if(o>r.length)throw Error(`[tempo] invalid ${t} result: ABI offset out of bounds`);let s=Number(BigInt(`0x${r.slice(a,o)}`));if(!Number.isSafeInteger(s))throw Error(`[tempo] invalid ${t} result: unsafe ABI string length`);let c=o;if(c+s*2>r.length)throw Error(`[tempo] invalid ${t} result: ABI string out of bounds`);let l=new Uint8Array(s);for(let e=0;e<s;e+=1)l[e]=Number.parseInt(r.slice(c+e*2,c+e*2+2),16);return new TextDecoder().decode(l)}function EE(e,t){let n=String(e||``).trim().toLowerCase();if(!/^0x[0-9a-f]{64}$/.test(n))throw Error(`[tempo] invalid ${t} result: expected one ABI word`);let r=BigInt(n);if(r!==0n&&r!==1n)throw Error(`[tempo] invalid ${t} result: expected boolean`);return r===1n}async function DE(e){let t=await qd({rpcUrl:e.rpcUrl,...e.timeoutMs===void 0?{}:{requestTimeoutMs:e.timeoutMs}}).request({method:`eth_call`,params:[{to:e.to,data:e.data},`latest`],...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs}});if(typeof t!=`string`)throw Error(`[tempo] invalid eth_call response: expected a hex string`);return t}async function OE(e){let t=yE(`account address`,e.account);return CE(await DE({rpcUrl:e.rpcUrl,to:_E,data:SE(t),...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs}}))}async function kE(e){let t=yE(`fee token address`,e.feeToken),n={rpcUrl:e.rpcUrl,to:t,...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs}},r=TE(await DE({...n,data:`0xe5a6b10f`}),`currency()`);return r===`USD`?EE(await DE({...n,data:`0x5c975abb`}),`paused()`)?{kind:`invalid`,feeToken:t,reason:`paused`,currency:`USD`}:{kind:`valid`,feeToken:t,currency:`USD`,paused:!1}:{kind:`invalid`,feeToken:t,reason:`unsupported_currency`,currency:r}}function AE(e){if(!Number.isSafeInteger(e.chainId)||e.chainId<=0)throw Error(`[tempo] chainId must be a positive safe integer`);if(e.maxPriorityFeePerGas<0n)throw Error(`[tempo] maxPriorityFeePerGas must be non-negative`);if(e.maxFeePerGas<e.maxPriorityFeePerGas)throw Error(`[tempo] maxFeePerGas must be at least maxPriorityFeePerGas`);if(e.gasLimit<=0n)throw Error(`[tempo] gasLimit must be positive`);let t=wE({token:e.feeToken});return{chain:`evm`,kind:`eip1559`,senderSignatureAlgorithm:`secp256k1`,tx:{chainId:e.chainId,maxPriorityFeePerGas:e.maxPriorityFeePerGas,maxFeePerGas:e.maxFeePerGas,gasLimit:e.gasLimit,to:t.to,value:0n,data:t.input??`0x`,abi:t.abi,accessList:[]}}}function jE(e){return{managerStores:{userPreferencesStore:e,nonceLaneCoordinationStore:As({indexedDB:e}),webauthnCredentialStore:e,passkeyAuthenticatorStore:e,nearKeyMaterialStore:e},signingEngineStores:{walletProfileAndSignerRecords:{accountStore:e,walletSignerStore:e,passkeyAuthenticatorStore:e,ecdsaBootstrapStore:e},recoveryAndDeviceLinking:{credentialStore:e},warmup:{store:e}},sealedSigningSessionStore:{writeExactSealedSession:dn,readExactSealedSession:sn,listExactSealedSessionsForWallet:en,listEcdsaSealedSessionsForWallet:Yn,acquireSigningSessionRestoreLease:Zn,releaseSigningSessionRestoreLease:Bt,updateExactSealedSessionPolicy:Qt},ed25519YaoPublicCapabilityReferences:new Rs(e)}}function ME(){return yf()||(typeof window<`u`?window.location.origin:``)}function NE(e){e.setWorkerBaseOrigin(ME()),typeof window<`u`&&$e(()=>{let t=ME();t!==e.getWorkerBaseOrigin()&&e.setWorkerBaseOrigin(t)}),e.userPreferencesManager.initFromIndexedDB().catch(()=>void 0)}async function PE(e){let t=Js(),n=new Uint8Array(e.factorSecret.slice(0));try{return await IE(e,t,t=>{let r=kn(e.custodyEnvelope);if(!r.ok)throw Error(r.reason);return e.worker.rotateRecoverySet({custodyJson:r.custodyJson,factorSecret:n.buffer.slice(0),recoveryCodesJson:LE(t)})})}finally{n.fill(0),t&&Hs(t),t=null}}async function FE(e){let t=Js();try{return await IE(e,t,t=>e.worker.rotateRecoverySet({recoveryCodesJson:LE(t)}))}finally{t&&Hs(t),t=null}}async function IE(e,t,n){let r=await cf({relayUrl:e.relayUrl,walletId:e.walletId,...e.fetchImpl?{fetchImpl:e.fetchImpl}:{}});if(r.kind!==`ready`)return r.kind===`unauthorized`?{kind:`transport_failed`,message:r.message}:r;let i=Gs(await n(t.codeBytes));if(i.walletId!==e.walletId)throw Error(`Recovery rotation worker returned a different wallet`);let a=await RE(t.codeBytes,i.manifestKekWraps),o=await sf({relayUrl:e.relayUrl,walletId:e.walletId,factorProof:await e.factorProof({operation:`recovery_rotate`,payload:{walletId:e.walletId,expectedStoreVersion:r.storeVersion,manifestKekWraps:i.manifestKekWraps,entries:[i.entry],recoveryCodeLocators:a}}),expectedStoreVersion:r.storeVersion,replacement:i,recoveryCodeLocators:a,...e.fetchImpl?{fetchImpl:e.fetchImpl}:{}});return o.kind===`rotated`?{kind:`rotated`,walletId:e.walletId,recoveryCodes:t.codes,issuedAtMs:o.issuedAtMs,storeVersion:o.storeVersion}:o}function LE(e){return JSON.stringify(e.map(e=>({codeBytesB64u:P(e)})))}async function RE(e,t){if(e.length!==t.length)throw Error(`Recovery code locators do not match the replacement wraps`);let n=await Promise.all(e.map(async(e,n)=>{let r=t[n];if(!r)throw Error(`Recovery code locators do not match the replacement wraps`);return{locatorB64u:await Ks(e),recoveryKeyId:r.recoveryKeyId}}));if(new Set(n.map(e=>e.locatorB64u)).size!==n.length)throw Error(`Recovery code locators must be unique`);return n}async function zE(e){let t=`${ye(e.relayUrl)}/wallets/custody/envelope`,n=e.fetchImpl||fetch,r;try{r=await n(t,le({body:{locator:e.locator,challengeId:e.challengeId,expectedOrigin:e.expectedOrigin,webauthnAuthentication:e.webauthnAuthentication}}))}catch(e){return{kind:`transport_failed`,message:e instanceof Error?e.message:`custody envelope request failed`}}let i=await r.json().catch(()=>void 0);if(r.status===200&&WE(i))try{return{kind:`active`,envelope:VE(i).envelope}}catch{return{kind:`corrupt`,message:`custody envelope response was incomplete`}}let a=UE(i,`custody envelope response`),o=a.code??``,s=a.message??``;switch(r.status){case 404:return{kind:`missing`,message:s||`no custody envelope for this credential`};case 409:return{kind:`retired`,message:s||`this envelope was superseded`};case 401:case 403:return{kind:`credential_rejected`,message:s||`this credential does not open the wallet`};case 500:return o===`envelope_digest_mismatch`?{kind:`corrupt`,message:s||`stored custody envelope failed its digest`}:{kind:`transport_failed`,message:s||`custody envelope request failed (HTTP ${r.status})`};default:return{kind:`request_rejected`,message:s||`custody envelope request rejected (HTTP ${r.status})`}}}async function BE(e){let t=`${ye(e.relayUrl)}/wallets/${encodeURIComponent(e.walletId)}/custody/envelope/ownership`,n=e.fetchImpl||fetch,r;try{r=await n(t,le({body:{envelope:e.envelope},headers:ue({token:e.walletSessionToken,missingMessage:`custody envelope upgrade needs an active Wallet Session`})}))}catch(e){return{kind:`transport_failed`,message:e instanceof Error?e.message:`custody envelope upgrade failed`}}let i=await r.json().catch(()=>void 0);if(r.status===200)try{let e=HE(i);if(e.kind===`already_owned`)return e;let t=Number(e.envelopeRevision);if(!Number.isSafeInteger(t)||t<=0)throw Error(`invalid envelope revision`);return{kind:`upgraded`}}catch{return{kind:`rejected`,message:`custody envelope upgrade returned an invalid response`}}return{kind:`rejected`,message:UE(i,`custody envelope upgrade response`).message||`custody envelope upgrade rejected (HTTP ${r.status})`}}function VE(e){let t=KE(e,[`ok`,`envelope`,`storeVersion`],`custody envelope response`);if(YE(t,`ok`)!==!0)throw Error(`custody envelope response did not succeed`);let n=XE(t,`storeVersion`);if(!n)throw Error(`custody envelope response is missing its store version`);return{envelope:Xo(YE(t,`envelope`),`custody envelope response.envelope`),storeVersion:n}}function HE(e){let t=GE(e,`custody envelope upgrade response`),n=YE(t,`upgraded`);if(n===!0){if(KE(t,[`ok`,`upgraded`,`envelopeRevision`],`custody envelope upgrade response`),YE(t,`ok`)!==!0)throw Error(`custody envelope upgrade response did not succeed`);return{kind:`upgraded`,envelopeRevision:YE(t,`envelopeRevision`)}}if(n===!1){if(KE(t,[`ok`,`upgraded`],`custody envelope upgrade response`),YE(t,`ok`)!==!0)throw Error(`custody envelope upgrade response did not succeed`);return{kind:`already_owned`}}throw Error(`custody envelope upgrade response has an invalid branch`)}function UE(e,t){try{let n=GE(e,t),r=Object.keys(n);if(!r.includes(`ok`)||!JE(r,[`ok`,`code`,`message`]))throw Error(`${t} has an unexpected response shape`);if(YE(n,`ok`)!==!1)throw Error(`${t} is not a failure`);return{code:ZE(n,`code`),message:ZE(n,`message`)}}catch{return{code:null,message:null}}}function WE(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)return!1;let n=Object.getOwnPropertyDescriptor(e,`ok`);return!!(n&&`value`in n&&n.value===!0)}function GE(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`${t} must be a JSON object`);let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==null)throw Error(`${t} must be a plain JSON object`);return e}function KE(e,t,n){let r=GE(e,n),i=Object.keys(r);if(i.length!==t.length||!qE(i,t))throw Error(`${n} has an unexpected response shape`);return r}function qE(e,t){for(let n of t)if(!e.includes(n))return!1;return!0}function JE(e,t){for(let n of e)if(!t.includes(n))return!1;return!0}function YE(e,t){let n=Object.getOwnPropertyDescriptor(e,t);if(!n||!(`value`in n))throw Error(`response field ${t} is missing`);return n.value}function XE(e,t){let n=YE(e,t);return typeof n==`string`?n.trim():``}function ZE(e,t){let n=Object.getOwnPropertyDescriptor(e,t);return!n||!(`value`in n)?null:(typeof n.value==`string`?n.value.trim():``)||null}function QE(e){return Array.isArray(e)?e.filter(e=>{switch(e){case`ble`:case`hybrid`:case`internal`:case`nfc`:case`smart-card`:case`usb`:return!0;default:return!1}}):[]}function $E(e){let t=e.flatMap(e=>{let t=String(e.credentialId||``).trim();return t?[{id:t,type:`public-key`,transports:QE(e.transports)}]:[]});if(t.length===0)throw Error(`Wallet recovery-code rotation requires an active passkey`);return t}async function eD(e){let t=await fetch(a(e.relayUrl,`/wallet/unlock/challenge`),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({unlockBackend:`passkey`,userId:e.walletId,rpId:e.rpId})}),n=await t.json().catch(()=>({})),r=n&&typeof n==`object`&&!Array.isArray(n)?n:{};if(!t.ok||r.ok!==!0)throw Error(typeof r.message==`string`?r.message:`passkey envelope challenge failed`);let i=typeof r.challengeId==`string`?r.challengeId.trim():``,o=typeof r.challengeB64u==`string`?r.challengeB64u.trim():``;if(!i||!o)throw Error(`passkey envelope challenge is invalid`);return{challengeId:i,challengeB64u:o}}async function tD(e){let t=String(e.context.signingEngine.getRpId()||``).trim();if(!t)throw Error(`Wallet recovery-code rotation requires an RP ID`);let n=typeof window>`u`?``:window.location.origin;if(!n)throw Error(`Wallet recovery-code rotation requires a browser Origin`);let r=$E(await K.listProfileAuthenticators(e.walletId)),i=await eD({relayUrl:e.relayUrl,walletId:e.walletId,rpId:t}),a=await e.context.signingEngine.getAuthenticationCredentialsSerialized({subjectId:e.walletId,challengeB64u:i.challengeB64u,allowCredentials:r,includeSecondPrfOutput:!0}),o=ar(a);if(!o)throw Error(`Wallet recovery-code rotation did not receive a passkey credential`);let s=await zE({relayUrl:e.relayUrl,locator:{walletId:e.walletId,factor:{kind:`passkey`,rpId:t,credentialIdB64u:o}},challengeId:i.challengeId,expectedOrigin:n,webauthnAuthentication:dc(a)});if(s.kind!==`active`)throw Error(s.message);let c=s.envelope,l=F(Gn(a,`Wallet recovery-code rotation`));try{let i=e.context.signingEngine.getSignerWorkerContext();return await PE({relayUrl:e.relayUrl,walletId:e.walletId,factorProof:async({operation:i,payload:a})=>{let s=await Tc({walletId:e.walletId,operation:i,payload:a,requestOrigin:n}),c=await e.context.signingEngine.getAuthenticationCredentialsSerialized({subjectId:e.walletId,challengeB64u:s,allowCredentials:r,includeSecondPrfOutput:!1}),l=ar(c);if(!l||l!==o)throw Error(`Wallet recovery-code rotation selected an unrelated passkey`);return{kind:`passkey`,walletId:e.walletId,rpId:t,credentialIdB64u:o,challenge_digest:s,webauthn_authentication:c}},custodyEnvelope:c,factorSecret:l.buffer,worker:{rotateRecoverySet:async e=>await i.requestWorkerOperation({kind:`walletCustodyCeremony`,request:{type:`rotateWalletRecoverySet`,timeoutMs:3e4,payload:e,transfer:[e.factorSecret]}})}})}finally{l.fill(0)}}async function nD(e){let t=e.context.signingEngine.getSignerWorkerContext(),n=pr({routeFamily:`login`,operation:Hr});return await FE({relayUrl:e.relayUrl,walletId:e.walletId,factorProof:async({operation:t,payload:n})=>{let r=typeof window>`u`?``:window.location.origin,i=await lf({relayUrl:e.relayUrl,walletId:e.walletId,providerSubjectId:e.authorization.providerSubjectId,operation:t,payload:n,...r?{requestOrigin:r}:{}});if(i.kind!==`ready`)throw Error(i.message);let a=await Tc({walletId:e.walletId,operation:t,payload:n,requestOrigin:r});if(i.challengeId!==e.authorization.challengeId||i.challenge_digest!==e.authorization.challenge_digest||a!==e.authorization.challenge_digest)throw Error(`Wallet recovery Email OTP challenge is bound to a different operation`);return{kind:`email_otp`,provider_subject_id:e.authorization.providerSubjectId,challenge_id:e.authorization.challengeId,otp_code:e.authorization.otpCode,challenge_digest:a}},worker:{rotateRecoverySet:async({recoveryCodesJson:r})=>await t.requestWorkerOperation({kind:`emailOtp`,request:{type:`rotateEmailOtpWalletRecoverySet`,timeoutMs:6e4,payload:{relayUrl:e.relayUrl,walletId:e.walletId,userId:e.walletId,groupId:Ge,routePlan:n,verification:{kind:`otp`,challengeId:e.authorization.challengeId,otpCode:e.authorization.otpCode},recoveryCodesJson:r}}})}})}async function rD(e){switch(e.authorization.kind){case`existing_passkey`:return await tD(e);case`email_otp`:return await nD({...e,authorization:e.authorization})}}function iD(e){return e?e.status===`near_ready`?{kind:`near_ready`,nearAccountId:e.nearAccountId}:e.status===`near_failed_retryable`?{kind:`near_failed_retryable`,reason:e.error}:null:null}async function aD(e,t){let n=String(t.walletId||``).trim();if(!n)throw Error(`[seams] waitForNearAccount requires a walletId`);let r=Math.max(1,Math.floor(t.timeoutMs??12e4)),i=null,a=null,o=null;try{return await new Promise((s,c)=>{let l=!1,u=e=>{l||(l=!0,s(e))};if(t.signal?.aborted){c(t.signal.reason??Error(`[seams] waitForNearAccount aborted`));return}t.signal&&(o=()=>{l||(l=!0,c(t.signal?.reason??Error(`[seams] waitForNearAccount aborted`)))},t.signal.addEventListener(`abort`,o,{once:!0})),i=e.onNearAccountChange(e=>{if(String(e.walletId)!==n)return;let t=iD(e.state);t&&u(t)}),a=setTimeout(()=>u({kind:`timed_out`}),r),e.getNearAccountState({walletId:n}).then(e=>{let t=iD(e);t&&u(t)}).catch(()=>{})})}finally{a&&clearTimeout(a),o&&t.signal&&t.signal.removeEventListener(`abort`,o);try{i?.()}catch{}}}function oD(e){return typeof e==`string`?Lr({walletId:e}):e}function sD(e){return typeof e==`string`?Pr(e):e}function cD(e){let t=async()=>{let t=await e.getWalletSession();if(t.authentication.kind!==`authenticated`)throw Error("[seams] no authenticated wallet: unlock a wallet first, or pass an explicit `walletSession`.");return t};return{walletSession:async e=>e?oD(e):Lr({walletId:(await t()).authentication.walletId}),nearSubject:async e=>{if(e.walletSession&&e.nearAccount)return{walletSession:oD(e.walletSession),nearAccount:sD(e.nearAccount)};let n=await t(),r=n.authentication.walletId,i=e.walletSession?oD(e.walletSession):Lr({walletId:r});if(e.nearAccount)return{walletSession:i,nearAccount:sD(e.nearAccount)};let a=n.appIdentity;if(a.kind!==`resolved`||String(a.walletId)!==String(r))throw Error("[seams] the authenticated wallet has no resolved NEAR account: pass an explicit `nearAccount`.");if(!a.nearAccountId)throw Error("[seams] this wallet has no NEAR account yet (NEAR provisioning may still be pending): pass an explicit `nearAccount`, or await `seams.registration.waitForNearAccount`.");return{walletSession:i,nearAccount:Pr(a.nearAccountId)}}}}function lD(e){let t=new uD(e.linkedDeviceManagement);return{startLinking:e.startLinking,cancelLinking:e.cancelLinking,approveLinking:e.approveLinking,list:t.list.bind(t),remove:t.remove.bind(t)}}var uD=class{constructor(e){this.management=e}async list(e){let t=Yr({kind:`linked_device_list_request_v1`,walletId:dD(e.walletId),limit:e.limit,cursor:e.cursor});return ki(await this.management.listLinkedDevices({walletId:t.walletId,limit:t.limit,cursor:t.cursor}))}async remove(e){return ci(await this.management.revokeLinkedDevice({walletId:dD(e.walletId),walletAuthMethodId:fD(e.walletAuthMethodId)}))}};function dD(e){let t=o(e);if(!t.ok)throw Error(t.error.message);return t.value}function fD(e){let t=c(e);if(!t.ok)throw Error(t.error.message);return t.value}function pD(e){return/UNKNOWN_ACCOUNT|unknown\s+account|account\b[^\n]*\bdoes not exist/iu.test(L(e))}function mD(e){return/server error|internal|temporar|timeout|throttl|too many requests|429|empty response|rpc request failed|failed to fetch/iu.test(L(e))}function hD(e){setTimeout(e,150)}async function gD(e,t){let n=kr(t);try{return await e.viewAccount(n),!0}catch(e){if(pD(e))return!1;if(!mD(e))throw e}await new Promise(hD);try{return await e.viewAccount(n),!0}catch(e){if(pD(e))return!1;throw e}}function _D(e){let t={"content-type":`application/json`},n=String(e?.publishableKey??``).trim();n&&(t.Authorization=`Bearer ${n}`);let r=String(e?.environmentId??``).trim();return r&&(t[`X-Seams-Environment-Id`]=r),t}function vD(e,t){if(!O(e))return{ok:!1,error:`Relayer HTTP ${t}`};let n=typeof e.code==`string`?e.code.trim():``,r=(typeof e.message==`string`?e.message.trim():typeof e.error==`string`?e.error.trim():``)||`Relayer HTTP ${t}`;return{ok:!1,error:n?`${r} (${n})`:r}}function yD(e){let t=e?.registration;if(!t||typeof t!=`object`||t.mode!==`managed`)return{};let n=String(t.publishableKey??``).trim(),r=String(t.projectEnvironmentId??``).trim();return{...n?{publishableKey:n}:{},...r?{environmentId:r}:{}}}const bD=e=>Array.isArray(e)?e:Array.from(e),xD=e=>{let t=e.delegateAction,n=e.signature;return{delegateAction:{...t,publicKey:{...t.publicKey,keyData:bD(t.publicKey.keyData)}},signature:{...n,signatureData:bD(n.signatureData)}}};async function SD(e){let{url:t,payload:n,auth:r,signal:i,options:a}=e,o={...n,signedDelegate:xD(n.signedDelegate)};JT(a?.onEvent,`delegate`,{phase:W.STEP_12_BROADCAST_STARTED,status:`running`,message:`Submitting delegate to relayer`,interaction:{kind:`none`,overlay:`none`}});let s;try{s=await fetch(t,{method:`POST`,headers:_D(r),body:JSON.stringify(o),signal:i||AbortSignal.timeout(3e4)})}catch(e){let t=e instanceof DOMException&&e.name===`TimeoutError`?Error(`Relayer request timed out after 30 seconds`):e instanceof Error?e:Error(String(e));throw a?.onError?.(t),CD(a,t.message),await a?.afterCall?.(!1),t}if(!s.ok){let e=null;try{e=await s.json()}catch{}let t=vD(e,s.status);return a?.onError?.(Error(t.error)),CD(a,t.error),await a?.afterCall?.(!1),t}let c;try{let e=await s.json();c=O(e)?e:{}}catch(e){let t={ok:!1,error:`Relayer returned non-JSON response`},n=e instanceof Error?e:Error(String(e));return a?.onError?.(n),CD(a,t.error),await a?.afterCall?.(!1),t}let l={ok:!!(c.ok??!0),relayerTxHash:typeof c.relayerTxHash==`string`?c.relayerTxHash:typeof c.transactionId==`string`?c.transactionId:typeof c.txHash==`string`?c.txHash:void 0,status:typeof c.status==`string`?c.status:void 0,outcome:c.outcome,error:typeof c.error==`string`?c.error:void 0};if(l.ok!==!1)JT(a?.onEvent,`delegate`,{phase:W.STEP_15_COMPLETED,status:`succeeded`,message:`Delegate relayed successfully`,interaction:{kind:`none`,overlay:`none`}}),await a?.afterCall?.(!0,l);else{let e=l.error||`Relayer execution failed`;a?.onError?.(Error(e)),CD(a,e),await a?.afterCall?.(!1)}return l}function CD(e,t){JT(e?.onEvent,`delegate`,{phase:W.FAILED,status:`failed`,message:t,interaction:{kind:`none`,overlay:`hide`},error:{message:t}})}function wD(e){let t=new ED(e);return{accountExists:gD.bind(null,e.nearClient),signAndSendTransaction:t.signAndSendTransaction.bind(t),signTransaction:t.signTransaction.bind(t),sendTransaction:t.sendTransaction.bind(t),signDelegateAction:t.signDelegateAction.bind(t),signMessage:t.signMessage.bind(t),sendDelegateAction:t.sendDelegateAction.bind(t),signAndSendDelegateAction:t.signAndSendDelegateAction.bind(t)}}function TD(){}var ED=class{constructor(e){this.deps=e}async signAndSendTransaction(e){let t={...e,...await this.deps.currentWallet.nearSubject(e),options:e.options??{}};return Hw(this.deps.configs,{capabilityKind:bt.nearEd25519MpcSigning,operationKind:yt.signTransaction}),await this.deps.commands.signAndSendTransaction(t)}async signTransaction(e){let t={...e,...await this.deps.currentWallet.nearSubject(e),options:e.options??{}};return Hw(this.deps.configs,{capabilityKind:bt.nearEd25519MpcSigning,operationKind:yt.signTransaction}),await this.deps.commands.signTransaction(t)}async sendTransaction(e){let t={...e,...await this.deps.currentWallet.nearSubject(e),options:e.options??{}};return await this.deps.commands.sendTransaction(t)}async signDelegateAction(e){let t={...e,...await this.deps.currentWallet.nearSubject(e),options:e.options??{}};return Hw(this.deps.configs,{capabilityKind:bt.nearEd25519MpcSigning,operationKind:yt.signDelegateAction}),await this.deps.commands.signDelegateAction(t)}async signMessage(e){let t={...e,...await this.deps.currentWallet.nearSubject(e),options:e.options??{}};return Hw(this.deps.configs,{capabilityKind:bt.nearEd25519MpcSigning,operationKind:yt.signNep413Message}),await this.deps.commands.signMessage(t)}async sendDelegateAction(e){return await SD({url:`${e.relayerUrl.replace(/\/+$/,``)}${(this.deps.configs.network.relayer?.routes?.delegateAction||`/signed-delegate`).replace(/^\/?/,`/`)}`,payload:{hash:e.hash,signedDelegate:e.signedDelegate},auth:yD(this.deps.configs),signal:e.signal,options:e.options})}async signAndSendDelegateAction(e){let t={...e,...await this.deps.currentWallet.nearSubject(e),options:e.options??{}},n={signerSlot:t.options.signerSlot,onEvent:t.options.onEvent,onError:t.options.onError,waitUntil:t.options.waitUntil,confirmationConfig:t.options.confirmationConfig,confirmerText:t.options.confirmerText,afterCall:TD},r;try{r=await this.signDelegateAction({walletSession:t.walletSession,nearAccount:t.nearAccount,delegate:t.delegate,options:n})}catch(e){let n=I(e);throw await t.options?.afterCall?.(!1,void 0,n),n}let i={onEvent:t.options.onEvent,onError:t.options.onError},a;try{a=await this.sendDelegateAction({relayerUrl:t.relayerUrl,hash:r.hash,signedDelegate:r.signedDelegate,signal:t.signal,options:i})}catch(e){let n=I(e);throw await t.options?.afterCall?.(!1,void 0,n),n}let o={signResult:r,relayResult:a};if(a.ok!==!1)await t.options?.afterCall?.(!0,o);else{let e=I(a.error||`Delegate relay failed`);await t.options?.afterCall?.(!1,void 0,e)}return o}};function DD(e){let t=new OD(e);return{signAndSendTransaction:e.signAndSendTransaction,advanced:e.advanced,signTransaction:t.signTransaction.bind(t)}}var OD=class{constructor(e){this.deps=e}async signTransaction(e){let t=Jw(this.deps.configs.network.chains,e.chainTarget),n=await this.deps.currentWallet.walletSession(e.walletSession);Hw(this.deps.configs,{capabilityKind:bt.evmEcdsaMpcSigning,operationKind:_t.signTransaction,chainTarget:t});let r=await this.deps.commands.signEvmFamily({walletSession:n,request:e.request,chainTarget:t,options:e.options});if(r.chain!==`evm`||r.kind!==`eip1559`)throw Error(`[EVM capability] expected EVM result, received ${r.chain}`);return r}};function kD(e,t){let n=e.tx.chainId;if(n!==void 0&&Number(n)!==t.chainId)throw Error(`[evm-family] request tx.chainId ${n} does not match chain target ${B(t)}`);return{...e,tx:{...e.tx,chainId:t.chainId}}}const AD=5e3;function jD(e,t,n){try{e?.(Ss({...n,flowId:`signing:evm_family:${t}:${n.phase}`,accountId:t}))}catch{}}function MD(){let e=Error(`Request cancelled`);return e.code=`cancelled`,e}function ND(e){let t=Error(e);return t.code=`timeout`,t}async function PD(e){let t=Math.max(1,Math.floor(Number(e.timeoutMs)||0)),n=null,r=!1;try{return await new Promise((i,a)=>{n=setTimeout(()=>{if(!r){r=!0;try{e.onTimeout?.()}catch{}a(ND(e.message))}},t),e.promise.then(e=>{r||(r=!0,n&&clearTimeout(n),i(e))},e=>{r||(r=!0,n&&clearTimeout(n),a(e))})})}finally{n&&clearTimeout(n)}}function FD(e){let t=Math.floor(Number(e));return!Number.isFinite(t)||t<=0?AD:Math.min(AD,Math.max(250,t))}function ID(e){if(typeof e==`function`&&e())throw MD()}function LD(e){return String(e||``).trim().toLowerCase().replace(/[\s-]+/g,`_`)}function RD(e,t){return!e||typeof e!=`object`?!1:LD(e.code)===LD(t)}function zD(e){if(e instanceof Error){let t=String(e.code||``).trim(),n=`details`in e?e.details:void 0;return{...t?{code:t}:{},message:e.message,...n===void 0?{}:{details:n}}}if(e&&typeof e==`object`){let t=e,n=String(t.code||``).trim(),r=String(t.message||``).trim();return{...n?{code:n}:{},message:r||String(e),...t.details===void 0?{}:{details:t.details}}}return{message:String(e||`unknown error`)}}function BD(e){let t=LD(e instanceof Error||e&&typeof e==`object`&&`message`in e?e.message:e);return t.includes(`nonce_lane_blocked`)||t.includes(`nonce lane blocked`)}function VD(e){return!e||typeof e!=`object`||!RD(e,`tx_dropped_or_replaced`)?null:LD(e.reason)===`replaced`?`replaced`:`dropped`}function HD(e){let t=String(e||``).trim().toLowerCase();return/^0x[0-9a-f]*$/.test(t)?t:null}function UD(e){return String(e??``).trim()||null}function WD(e){let t=UD(e);return t?t.toLowerCase():null}function GD(e){throw Error(`[Tempo capability] unhandled finalized payload branch: ${String(e)}`)}function KD(e,t){let n=HD(e);if(!n)throw Error(`[Tempo capability] invalid ${t} payload input`);return n}function qD(e){return{kind:`evm_eip1559`,to:e.tx.to??null,input:KD(e.tx.data||`0x`,`EVM`)}}function JD(e){return{to:e.to,input:KD(e.input||`0x`,`Tempo call`)}}function YD(e){let[t,...n]=e.tx.calls;if(!t)throw Error(`[Tempo capability] Tempo transaction has no calls`);return{kind:`tempo_eip2718_calls`,calls:[JD(t),...n.map(JD)]}}function XD(e){switch(e.chain){case`evm`:return qD(e);case`tempo`:return YD(e);default:return GD(e)}}function ZD(e){return e.input??e.data??null}function QD(e){return Array.isArray(e.calls)?{kind:`tempo_eip2718_calls`,calls:e.calls.map(e=>({to:e?.to??null,input:e?ZD(e):null,data:e?.data??null}))}:{kind:`evm_eip1559`,to:e.to??null,input:e.input??null}}function $D(e){return WD(e.observed.to)===WD(e.expected.to)&&HD(e.observed.input)===HD(e.expected.input)}function eO(e){return WD(e.observed.to)===WD(e.expected.to)&&HD(ZD(e.observed))===HD(e.expected.input)}function tO(e){return e.observed.calls.length===e.expected.calls.length?e.expected.calls.every((t,n)=>{let r=e.observed.calls[n];return r?eO({expected:t,observed:r}):!1}):!1}function nO(e){switch(e.expected.kind){case`evm_eip1559`:return e.observed.kind===`evm_eip1559`?$D({expected:e.expected,observed:e.observed}):!1;case`tempo_eip2718_calls`:return e.observed.kind===`tempo_eip2718_calls`?tO({expected:e.expected,observed:e.observed}):!1;default:return GD(e.expected)}}function rO(e){let t=B(e.chainTarget),n=e.chains.filter(e=>{let n=ie(e.network);return n!==`evm`&&n!==`tempo`?!1:B(Nr(e))===t});if(n.length===1){let e=String(n[0].rpcUrl||``).trim();if(!e)throw Error(`[Tempo capability] missing rpcUrl for ${n[0].network} ${t}`);return e}if(n.length>1){let e=n.map(e=>e.network).join(`, `);throw Error(`[Tempo capability] ambiguous RPC routing for ${t} across [${e}]`)}throw Error(`[Tempo capability] unable to resolve RPC URL for ${t}`)}function iO(e){let t=String(e?.managedNonce?.sender||``).trim(),n=/^0x[0-9a-fA-F]{40}$/.test(t)?t:void 0,r;try{let t=String(e?.managedNonce?.nonce||``).trim();if(t){let e=BigInt(t);e>=0n&&(r=e)}}catch{}return{...n?{managedNonceSenderAddress:n}:{},...typeof r==`bigint`?{nonceHint:r}:{}}}async function aO(e){let t=await qd({rpcUrl:e.rpcUrl}).getTransactionByHash({txHash:e.txHash}).catch(()=>null);if(!t)return{kind:`tx_unavailable`,expected:e.expected};let n=QD(t);return nO({expected:e.expected,observed:n})?{kind:`matched`,expected:e.expected,observed:n}:{kind:`mismatch`,expected:e.expected,observed:n}}async function oO(e){if(!e.broadcastAccepted){await e.lifecycle.reportBroadcastRejected({walletSession:e.walletSession,signedResult:e.signedResult,error:e.error,options:{onEvent:e.onEvent}});return}let t=VD(e.error);if(t){await e.lifecycle.reportDroppedOrReplaced({walletSession:e.walletSession,signedResult:e.signedResult,reason:t,...e.txHash?{txHash:e.txHash}:{},options:{onEvent:e.onEvent}});return}try{await e.lifecycle.reconcileNonceLane({walletSession:e.walletSession,signedResult:e.signedResult,options:{onEvent:e.onEvent}})}catch(t){if(RD(t,`nonce_lane_blocked`)||BD(t)){await e.lifecycle.reportDroppedOrReplaced({walletSession:e.walletSession,signedResult:e.signedResult,reason:`dropped`,...e.txHash?{txHash:e.txHash}:{},options:{onEvent:e.onEvent}});return}throw t}}function sO(e){let t=String(e||``).trim();if(!/^0x[0-9a-fA-F]{64}$/.test(t))throw Error(`[Tempo capability] invalid transaction hash from broadcast: ${t||`empty`}`);return t}function cO(e){let t=String(e||``).trim();if(!/^0x[0-9a-fA-F]+$/.test(t))throw Error(`[Tempo capability] signed rawTxHex is missing or invalid`);return t}function lO(e){return e.payloadExpectation??XD(e.request)}async function uO(e){let t=e.input.options?.onEvent,n=z(e.input.walletSession.walletId);ID(e.input.options?.shouldAbort);let r=null,i,a=!1,o=!1,s=e=>jD(t,n,e),c=e=>{if(e.phase!==W.STEP_15_COMPLETED)try{t?.(e)}catch{}};try{let n=e.input.request,l=rO({chains:e.chains,chainTarget:e.input.chainTarget}),u=qd({rpcUrl:l});r=await e.lifecycle.signEvmFamily({walletSession:e.input.walletSession,request:n,chainTarget:e.input.chainTarget,options:e.input.options?{...e.input.options.confirmationConfig?{confirmationConfig:e.input.options.confirmationConfig}:{},...e.input.options.shouldAbort?{shouldAbort:e.input.options.shouldAbort}:{},...t?{onEvent:c}:{}}:void 0}),ID(e.input.options?.shouldAbort),s({phase:W.STEP_12_BROADCAST_STARTED,status:`running`,interaction:{kind:`none`,overlay:`none`}});let d=cO(r.rawTxHex);e.lifecycle.onBroadcastStarted({walletSession:e.input.walletSession,signedResult:r}),i=sO(await u.request({method:`eth_sendRawTransaction`,params:[d]})),await e.lifecycle.reportBroadcastAccepted({walletSession:e.input.walletSession,signedResult:r,txHash:i,options:{...t?{onEvent:t}:{}}}),a=!0,s({phase:W.STEP_13_NONCE_RECONCILE_STARTED,status:`running`,message:`Waiting for transaction finalization`,interaction:{kind:`none`,overlay:`none`},data:{txHash:i}});let f=new AbortController,p=null;typeof e.input.options?.shouldAbort==`function`&&(p=setInterval(()=>{e.input.options?.shouldAbort?.()&&f.abort(MD())},100));let m=Math.max(1,Math.floor(Number(e.input.finalization?.timeoutMs??9e4)||0)),h=Math.max(1,Math.floor(Number(e.input.finalization?.pollIntervalMs??1250)||0)),g=Math.max(1,Math.floor(Number(e.input.finalization?.confirmations??1)||0)),_=iO(r),v=await PD({promise:u.waitForTransactionReceipt({txHash:i,timeoutMs:m,pollIntervalMs:h,confirmations:g,maxFeePerGasHint:n.tx.maxFeePerGas,signal:f.signal,..._.managedNonceSenderAddress?{transactionSenderAddress:_.managedNonceSenderAddress}:{},...typeof _.nonceHint==`bigint`?{nonceHint:_.nonceHint}:{}}).finally(()=>{p&&=(clearInterval(p),null),f.abort(Error(`finalization wait settled`))}),timeoutMs:m+2e3,message:`Timed out waiting for transaction finalization after ${m.toString()}ms`,onTimeout:()=>{f.abort(ND(`Transaction finalization watchdog timed out`))}}),y=LD(v.status);if(y&&y!==`0x1`&&y!==`0x01`){await e.lifecycle.reportFinalized({walletSession:e.input.walletSession,signedResult:r,txHash:i,receiptStatus:`reverted`,options:{...t?{onEvent:t}:{}}}),o=!0;let n=Error(`Transaction reverted with receipt status ${String(v.status||`unknown`)}`);throw n.code=`tx_reverted`,n.txHash=i,n}let b=lO(e.input),x=await aO({rpcUrl:l,txHash:i,expected:b});if(x.kind===`mismatch`){let e=Error(`Finalized transaction payload mismatch for ${i}.`);throw e.code=`tx_payload_mismatch`,e.details=x,e}if(await e.lifecycle.reportFinalized({walletSession:e.input.walletSession,signedResult:r,txHash:i,receiptStatus:`success`,options:{...t?{onEvent:t}:{}}}),o=!0,s({phase:W.STEP_13_RECEIPT_FINALIZED,status:`succeeded`,interaction:{kind:`none`,overlay:`none`},data:{txHash:i}}),typeof e.input.postFinalizationCheck==`function`){s({phase:W.STEP_14_APP_STATE_SYNC_STARTED,status:`running`,interaction:{kind:`none`,overlay:`none`},data:{txHash:i}});try{await e.input.postFinalizationCheck()}catch(e){let t=e instanceof Error?e.message:String(e||``),n=Error(`Post-finalization state verification failed for ${i}: ${t||`unknown error`}`);throw n.code=`post_finalization_state_mismatch`,n.txHash=i,n.details={...e instanceof Error&&e.message?{message:e.message}:{},originalError:e},n}s({phase:W.STEP_14_APP_STATE_SYNC_SUCCEEDED,status:`succeeded`,interaction:{kind:`none`,overlay:`none`},data:{txHash:i}})}return s({phase:W.STEP_15_COMPLETED,status:`succeeded`,interaction:{kind:`none`,overlay:`none`},data:{operation:`execute`,txHash:i}}),{txHash:i,signedResult:r,payloadVerification:x}}catch(s){try{let t=r?a?o?`post_finalization`:`finalization`:`broadcast`:`sign`;console.warn(`[EvmFamilyLifecycle][failure]`,{stage:t,walletId:n,requestChain:e.input.request.chain,requestKind:e.input.request.kind,requestChainId:e.input.request.tx.chainId,chainTarget:e.input.chainTarget,signed:!!r,...r?.managedNonce?{managedNonce:{chain:r.managedNonce.chainTarget.kind,networkKey:r.managedNonce.chainTarget.networkSlug,chainId:r.managedNonce.chainTarget.chainId,sender:r.managedNonce.sender,nonce:r.managedNonce.nonce.toString(),...r.managedNonce.nonceKey==null?{}:{nonceKey:r.managedNonce.nonceKey.toString()}}}:{},broadcastAccepted:a,finalizedReported:o,...i?{txHash:i}:{},error:zD(s)})}catch{}throw!o&&r&&await PD({promise:oO({lifecycle:e.lifecycle,walletSession:e.input.walletSession,signedResult:r,error:s,broadcastAccepted:a,...i?{txHash:i}:{},...t?{onEvent:t}:{}}),timeoutMs:FD(e.input.finalization?.timeoutMs),message:`Timed out during best-effort nonce cleanup after EVM-family signing failure`}).catch(()=>null),s}}function dO(e,t){return rO({chains:e,chainTarget:t})}async function fO(e,t){return await OE({rpcUrl:dO(e,t.chainTarget),account:yE(`account address`,t.account),...t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs}})}async function pO(e,t){return await kE({rpcUrl:dO(e,t.chainTarget),feeToken:yE(`fee token address`,t.feeToken),...t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs}})}async function mO(e){let t=await OE(e);if(t?.toLowerCase()!==e.feeToken.toLowerCase())throw Error(`[Tempo capability] fee-token preference mismatch: expected ${e.feeToken}, received ${t??`unset`}`)}async function hO(e,t){let n=dO(e.chains,t.chainTarget),r=yE(`account address`,t.account),i=yE(`fee token address`,t.feeToken),a=await kE({rpcUrl:n,feeToken:i});if(a.kind===`invalid`)throw Error(`[Tempo capability] invalid fee token: ${a.reason}`);let o=AE({chainId:t.chainTarget.chainId,feeToken:i,maxPriorityFeePerGas:t.feeCaps.maxPriorityFeePerGas,maxFeePerGas:t.feeCaps.maxFeePerGas,gasLimit:t.gasLimit??1000000n});return await e.execute({walletSession:t.walletSession,chainTarget:t.chainTarget,request:o,payloadExpectation:{kind:`evm_eip1559`,to:o.tx.to??null,input:o.tx.data??`0x`},...t.finalization?{finalization:t.finalization}:{},...t.options?{options:t.options}:{},postFinalizationCheck:mO.bind(null,{rpcUrl:n,account:r,feeToken:i})})}function gO(e){let t=new _O(e),n=e.commands,r={reportBroadcastAccepted:n.reportBroadcastAccepted,reportBroadcastRejected:n.reportBroadcastRejected,reportFinalized:n.reportFinalized,reportDroppedOrReplaced:n.reportDroppedOrReplaced,reconcileNonceLane:n.reconcileNonceLane},i=t.signTempo.bind(t),a=t.executeEvmFamilyTransaction.bind(t);return{tempo:{signTransaction:i,signAndSendTransaction:a,advanced:r,getFeeToken:fO.bind(null,e.configs.network.chains),validateFeeToken:pO.bind(null,e.configs.network.chains),setFeeToken:hO.bind(null,{chains:e.configs.network.chains,execute:a})},evm:DD({...e,advanced:r,signAndSendTransaction:a})}}var _O=class{constructor(e){this.deps=e}async signEvmFamily(e){let t=Kw(this.deps.configs.network.chains,e.chainTarget),n=await this.deps.currentWallet.walletSession(e.walletSession);return Hw(this.deps.configs,{capabilityKind:bt.evmEcdsaMpcSigning,operationKind:_t.signTransaction,chainTarget:t}),await this.deps.commands.signEvmFamily({walletSession:n,chainTarget:t,request:e.request,options:e.options})}async signTempo(e){let t=await this.signEvmFamily({...e,chainTarget:qw(this.deps.configs.network.chains,e.chainTarget)});if(t.chain!==`tempo`||t.kind!==`tempoTransaction`)throw Error(`[Tempo capability] expected Tempo result, received ${t.chain}`);return t}async executeEvmFamilyTransaction(e){let t=Kw(this.deps.configs.network.chains,e.chainTarget),n=await this.deps.currentWallet.walletSession(e.walletSession);return await uO({lifecycle:{...this.deps.commands,signEvmFamily:this.signEvmFamily.bind(this)},chains:this.deps.configs.network.chains,input:{...e,chainTarget:t,walletSession:n,request:kD(e.request,t)}})}};function vO(e){let t=e.auth,n=lD(e.devices),r=cD({getWalletSession:t.getSession}),i={createNearCommands:e.createNearCommands,createEvmFamilyCommands:e.createEvmFamilyCommands,nearClient:e.nearClient,configs:e.configs,currentWallet:r},a=wD({...i,commands:e.createNearCommands({kind:`ordinary`})}),o=e.createEvmFamilyCommands({kind:`ordinary`}),s=gO({...i,commands:o});return{preferences:e.preferences,auth:t,registration:{getNearAccountState:e.registration.getNearAccountState,onNearAccountChange:e.registration.onNearAccountChange,waitForNearAccount:aD.bind(null,e.registration),addSigner:e.registration.addSigner,addPasskey:e.registration.addPasskey,addEmail:e.registration.addEmail,removeAuthMethod:e.registration.removeAuthMethod,registerWallet:e.registration.registerWallet},recovery:e.recovery,devices:n,keys:Xw({configs:e.configs,currentWallet:r,domain:e.keys}),near:a,tempo:s.tempo,evm:s.evm}}var yO=class{constructor(e,t){this.eventTarget=e,this.clientOwner=t,this.state={kind:`active`},this.handlePageHideBound=this.handlePageHide.bind(this),this.eventTarget?.addEventListener(`pagehide`,this.handlePageHideBound)}handlePageHide(){this.dispose()}dispose(){this.state.kind!==`disposed`&&(this.state={kind:`disposed`},this.eventTarget?.removeEventListener(`pagehide`,this.handlePageHideBound),this.clientOwner.dispose())}};function bO(e){let t;try{t=JSON.parse(e.activationResultJson)}catch{throw Error(`the Router activation result is not JSON`)}let n=xo(t);if(!n.ok)throw Error(`Router activation result is invalid: ${n.message}`);let r=n.value,i=r.public_receipt;if(r.binding.lifecycle.lifecycle_id!==e.admissionRequest.scope.lifecycle_id)throw Error(`the Router activation result belongs to another lifecycle`);let a=i.material_activation,o=p({kind:a.kind,activationId:a.activation_id,capability:a.capability,materialOwner:a.material_owner,keyBinding:a.key_binding,lifecycleBinding:a.lifecycle_binding,signingWorker:a.signing_worker});if(!o.ok)throw Error(`Invalid activation material reference: ${o.error.message}`);let s=e.admissionRequest.participant_ids;if(s.length!==2)throw Error(`an Ed25519 Yao registration has exactly two participants`);return{kind:Cn,scope:e.admissionRequest.scope,applicationBinding:e.admissionRequest.application_binding,participantIds:[s[0],s[1]],registeredPublicKey:Uint8Array.from(i.registered_public_key),signingWorkerVerifyingShare:Uint8Array.from(i.signing_worker_verifying_share),stateEpoch:BigInt(i.state_epoch),transcript:Uint8Array.from(i.transcript),activeCapabilityBinding:r.binding.session_id,materialActivation:o.value}}function xO(e){let t;try{t=JSON.parse(e.activationResultJson)}catch{throw Error(`the Router recovery result is not JSON`)}let n=To(t);if(!n.ok)throw Error(`Router recovery result is invalid: ${n.message}`);if(n.value.binding.lifecycle.lifecycle_id!==e.admissionRequest.scope.lifecycle_id)throw Error(`the Router recovery result belongs to another lifecycle`);if(e.activationReceipt.binding.lifecycle.lifecycle_id!==e.admissionRequest.scope.lifecycle_id)throw Error(`the Router recovery activation belongs to another lifecycle`);let r=e.activationReceipt.public_receipt,i=p({kind:r.material_activation.kind,activationId:r.material_activation.activation_id,capability:r.material_activation.capability,materialOwner:r.material_activation.material_owner,keyBinding:r.material_activation.key_binding,lifecycleBinding:r.material_activation.lifecycle_binding,signingWorker:r.material_activation.signing_worker});if(!i.ok)throw Error(`Invalid recovery material reference: ${i.error.message}`);return{kind:Cn,scope:e.admissionRequest.scope,applicationBinding:e.admissionRequest.application_binding,participantIds:[e.admissionRequest.participant_ids[0],e.admissionRequest.participant_ids[1]],registeredPublicKey:Uint8Array.from(r.registered_public_key),signingWorkerVerifyingShare:Uint8Array.from(r.signing_worker_verifying_share),stateEpoch:BigInt(r.state_epoch),transcript:Uint8Array.from(r.transcript),activeCapabilityBinding:[...e.activationReceipt.active_capability_binding],materialActivation:i.value}}async function SO(e){let t=Xa(e.currentScope.material_activation),n=_(Pe(`wallet-recovery-ed25519-material-activation`,32,`wallet recovery Ed25519 activation identities`)),r=y(`${e.lifecycleId}:material-activation`);if(!n.ok||!r.ok)throw Error(`wallet recovery Ed25519 material activation identity is invalid`);let i=x({activationId:n.value,capability:t.capability,materialOwner:t.materialOwner,keyBinding:t.keyBinding,lifecycleBinding:r.value,signingWorker:t.signingWorker}),a=new Uint8Array(32);globalThis.crypto.getRandomValues(a);try{return wO(So({scope:{lifecycle_id:e.lifecycleId,root_share_epoch:e.currentScope.root_share_epoch,account_id:e.currentScope.account_id,threshold_session_id:e.thresholdSessionId,signer_set_id:e.currentScope.signer_set_id,signing_worker_id:e.currentScope.signing_worker_id,material_activation:fo(i)},active_material_activation:e.currentScope.material_activation,application_binding:e.applicationBinding,participant_ids:e.participantIds,active_capability_binding:e.activeCapabilityBinding,replacement_capability_binding:[...a],registered_public_key:e.registeredPublicKey}),`wallet recovery Ed25519 admission request is invalid`)}finally{a.fill(0)}}function CO(e,t){if(e.length!==t.length)return!1;let n=0;for(let r=0;r<e.length;r+=1)n|=(e[r]??0)^(t[r]??0);return n===0}function wO(e,t){if(!e.ok)throw Error(`${t}: ${e.message}`);return e.value}async function TO(e){let t=await Us({reservationId:Ws(e.reservationId),keySetId:e.entry.keySetId});return await SO({lifecycleId:t,thresholdSessionId:`${t}:threshold-session`,currentScope:e.entry.recoveryBasis.scope,applicationBinding:e.entry.recoveryBasis.applicationBinding,participantIds:e.entry.recoveryBasis.participantIds,activeCapabilityBinding:e.entry.recoveryBasis.activeCapabilityBinding,registeredPublicKey:e.entry.recoveryBasis.registeredPublicKey})}async function EO(e){return await SO({lifecycleId:Pe(`wallet-session-ed25519-recovery`,32,`wallet-session Ed25519 recovery lifecycles`),thresholdSessionId:e.basis.lifecycle.thresholdSessionId,currentScope:{root_share_epoch:e.basis.lifecycle.rootShareEpoch,account_id:e.basis.lifecycle.accountId,signer_set_id:e.basis.lifecycle.signerSetId,signing_worker_id:e.basis.lifecycle.signingWorkerId,material_activation:fo(e.basis.materialActivation)},applicationBinding:e.basis.applicationBinding,participantIds:e.basis.participantIds,activeCapabilityBinding:e.basis.activeCapabilityBinding,registeredPublicKey:e.basis.registeredPublicKey})}async function DO(e){let t=await e.transport.send({kind:`recovery_admit`,path:Ro,body:e.request});if(!t.ok)throw Error(`Router Ed25519 recovery admission failed: ${t.message}`);let n=wO(wo(t.value),`Router Ed25519 recovery admission is invalid`);if(n.binding.lifecycle.lifecycle_id!==e.request.scope.lifecycle_id||!oo(n.binding.material_activation,e.request.scope.material_activation))throw Error(`Router Ed25519 recovery admission changed the requested lifecycle`);return{request:e.request,receipt:n}}async function OO(e){let t=wO(zo(JSON.parse(e.executeRequestJson)),`wallet recovery Ed25519 execute request is invalid`),n=await e.transport.send({kind:`recovery_execute`,path:bo,body:t});if(!n.ok)throw Error(`Router Ed25519 recovery execute failed: ${n.message}`);let r=wO(To(n.value),`Router Ed25519 recovery result is invalid`);return JSON.stringify(r)}async function kO(e){let t=wO(To(JSON.parse(e.protocolResultJson)),`Router Ed25519 recovery result is invalid`),n=await e.transport.send({kind:`recovery_activate`,path:yo,body:{binding:t.binding,public_receipt:t.public_receipt}});if(!n.ok)throw Error(`Router Ed25519 recovery activation failed: ${n.message}`);let r=wO(vo(n.value),`Router Ed25519 recovery activation is invalid`);if(!CO(r.active_capability_binding,e.request.replacement_capability_binding)||!CO(r.retired_capability_binding,e.request.active_capability_binding)||!CO(r.public_receipt.transcript,t.public_receipt.transcript)||!CO(r.public_receipt.registered_public_key,t.public_receipt.registered_public_key)||!CO(r.public_receipt.signing_worker_verifying_share,t.public_receipt.signing_worker_verifying_share)||r.public_receipt.state_epoch!==t.public_receipt.state_epoch||!oo(r.public_receipt.material_activation,e.request.scope.material_activation))throw Error(`Router Ed25519 recovery activation changed the requested identity`);return r}const AO=[250,500,1e3];function jO(e){return new Promise(t=>setTimeout(t,e))}async function MO(e){let t=e.wait??jO,n=JSON.parse(e.executeRequestJson),r=0;for(let i=0;;i+=1){let a=await e.transport.send({kind:`execute`,path:Co,body:n});if(a.ok)return JSON.stringify(a.value);if(a.code!==`execution_in_progress`||r>=15e3)throw Error(`Router Ed25519 Yao execute failed: ${a.message}`);let o=AO[Math.min(i,AO.length-1)];await t(o),r+=o}}function NO(e){let t=F(e);if(t.length!==20)throw Error(`wallet recovery ECDSA identity has an invalid address`);return`0x${Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``)}`}function PO(e){let t=e.activationReceipt.ecdsa_activation;if(t.context.application_binding_digest_b64u!==e.publicCapability.context.application_binding_digest_b64u||!Ka(t.public_identity,e.publicCapability.public_identity)||!qa(t.signing_worker,e.publicCapability.signer_set.selected_server)||!oo(t.material_activation,e.publicCapability.material_activation)||t.activation_epoch!==e.publicCapability.activation_epoch||e.activationReceipt.server_generation!==e.serverGeneration)throw Error(`wallet recovery ECDSA activation changed its registered capability`)}function FO(e){let t=e.publicCapability.public_identity;if(e.challenge.walletId!==e.walletId||e.challenge.reservationId!==e.reservationId||e.challenge.replacementId!==e.replacementId||e.challenge.keySetId!==e.entry.keySetId||e.challenge.keyHandle!==e.entry.keyHandle||e.challenge.recordedKeyManifestDigestB64u!==e.entry.recordedKeyManifestDigestB64u||e.challenge.expectedServerGeneration!==String(e.entry.recoveryBasis.serverGeneration)||e.challenge.derivationClientSharePublicKey33B64u!==t.derivation_client_share_public_key33_b64u)throw Error(`wallet recovery ECDSA possession challenge changed its registered identity`)}function IO(e){let t=e.publicCapability.public_identity;if(e.publicFacts.contextBinding32B64u!==t.context_binding_b64u||e.publicFacts.derivationClientSharePublicKey33B64u!==t.derivation_client_share_public_key33_b64u||e.publicFacts.clientVerifyingShare33B64u!==t.derivation_client_share_public_key33_b64u||e.publicFacts.relayerPublicKey33B64u!==t.server_public_key33_b64u||e.publicFacts.groupPublicKey33B64u!==t.threshold_public_key33_b64u||e.publicFacts.clientShareRetryCounter!==t.client_share_retry_counter||e.publicFacts.relayerShareRetryCounter!==t.server_share_retry_counter||e.publicFacts.ethereumAddress!==NO(t.ethereum_address20_b64u))throw Error(`wallet recovery ECDSA custody public facts changed the capability`)}function LO(e){let t=e.trim();if(!t)throw Error(`wallet recovery ECDSA returned no ready state blob`);return{kind:`ecdsa_role_local_state_blob_v1`,curve:`secp256k1`,encoding:`base64url`,producer:`signer_core`,stateBlobB64u:t}}async function RO(e){let t=co(e.entry.recoveryBasis.publicCapability),n=po(e.entry.recoveryBasis.activationReceipt);PO({activationReceipt:n,publicCapability:t,serverGeneration:String(e.entry.recoveryBasis.serverGeneration)});let r=Ys(e.entry.recoveryBasis.possessionChallenge);FO({challenge:r,entry:e.entry,walletId:e.walletId,reservationId:e.reservationId,replacementId:e.replacementId,publicCapability:t});let i=P(await ae(k(t)));if(r.publicCapabilityDigestB64u!==i)throw Error(`wallet recovery ECDSA possession challenge changed the capability digest`);IO({publicFacts:e.publicFacts,publicCapability:t});let a=await Nu({workerCtx:e.workerCtx,challenge:r,stateBlob:LO(e.readyStateBlobB64u)}),o=await qs(r);if(a.challengeDigestB64u!==o||a.derivationClientSharePublicKey33B64u!==r.derivationClientSharePublicKey33B64u)throw Error(`wallet recovery ECDSA possession proof changed its challenge binding`);return{activationReceipt:n,publicCapability:t,possessionProof:a.proof}}function zO(e){return e.entryIndex===0?{kind:`reseal_replacement_factor`,factorJson:JSON.stringify({envelopeId:e.replacementFactor.replacementId,walletAuthMethodId:e.replacementFactor.walletAuthMethodId,factor:e.replacementFactor.factor}),factorSecret:e.replacementFactor.factorSecret.slice(0)}:{kind:`preserve_existing`}}function BO(e){return Uint8Array.from(e).buffer}function VO(e){e.kind===`reseal_replacement_factor`&&new Uint8Array(e.factorSecret).fill(0)}function HO(e){let t=F(e);if(t.length!==20)throw Error(`wallet recovery ECDSA identity has an invalid address`);return`0x${Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``)}`}function UO(e){let t=e.entry.recoveryBasis.publicCapability.public_identity;if(e.bootstrap.contextBinding32B64u!==t.context_binding_b64u||e.bootstrap.clientSharePublicKey33B64u!==t.derivation_client_share_public_key33_b64u||e.bootstrap.clientShareRetryCounter!==t.client_share_retry_counter)throw Error(`wallet recovery changed ECDSA identity for ${e.entry.keySetId}`)}function WO(e){if(!e.candidate)return e.current;if(e.current)throw Error(`wallet recovery produced more than one replacement envelope`);return e.candidate}async function GO(e){let t=[],n=[],r=null;for(let[i,a]of e.prepared.keyManifest.entries.entries()){let o=null,s=null;try{let c=BO(e.recoveryCodeBytes);o=c;let l=zO({entryIndex:i,replacementFactor:e.replacementFactor});switch(s=l,a.kind){case`near_ed25519`:{let n=new ln({routing:{kind:`discovery`},routerOrigin:new URL(e.relayUrl).origin,authorization:{kind:`recovery_challenge`,challengeId:e.recoveryChallengeId},fetch:globalThis.fetch}),i=await TO({reservationId:e.prepared.reservationId,entry:a}),o=await DO({request:i,transport:n}),s=await ur({runStep:e.runStep,walletId:e.walletId,custodyJson:e.custodyJson,recoveryCode:c,recordedKeyManifestDigestB64u:a.recordedKeyManifestDigestB64u,factorReplacement:l,nearEd25519SigningKeyId:a.recoveryBasis.applicationBinding.near_ed25519_signing_key_id,yaoAdmission:o.receipt,yaoApplication:o.request.application_binding,participantIds:o.request.participant_ids,registeredPublicKeyB64u:P(Uint8Array.from(a.recoveryBasis.registeredPublicKey)),runRouterRound:e=>OO({executeRequestJson:e,transport:n}),activateRouterRecovery:e=>kO({request:i,protocolResultJson:e,transport:n})});if(!s.localMaterial)throw Error(`wallet recovery produced no NEAR local material`);r=WO({current:r,candidate:s.recoveryReplacementEnvelope}),t.push({entry:a,metadata:xO({admissionRequest:i,activationResultJson:s.activationResultJson,activationReceipt:s.activationReceipt}),localMaterial:s.localMaterial});break}case`evm_family_ecdsa`:{let t=await rr({runStep:e.runStep,walletId:e.walletId,custodyJson:e.custodyJson,recoveryCode:c,recordedKeyManifestDigestB64u:a.recordedKeyManifestDigestB64u,factorReplacement:l,evmFamilySigningKeySlotId:a.evmFamilySigningKeySlotId,applicationBindingDigestB64u:a.recoveryBasis.publicCapability.context.application_binding_digest_b64u,registeredClientRootPublicKey33B64u:a.recoveryBasis.clientRootPublicKey33B64u,resolveRelayerPublicIdentity:async e=>(UO({entry:a,bootstrap:e}),JSON.stringify({relayerKeyId:a.recoveryBasis.publicCapability.signer_set.selected_server.server_id,relayerPublicKey33B64u:a.recoveryBasis.publicCapability.public_identity.server_public_key33_b64u,groupPublicKey33B64u:a.recoveryBasis.publicCapability.public_identity.threshold_public_key33_b64u,ethereumAddress:HO(a.recoveryBasis.publicCapability.public_identity.ethereum_address20_b64u),relayerShareRetryCounter:a.recoveryBasis.publicCapability.public_identity.server_share_retry_counter}))}),i=await RO({entry:a,walletId:e.walletId,reservationId:e.prepared.reservationId,replacementId:e.replacementFactor.replacementId,readyStateBlobB64u:t.readyStateBlobB64u,publicFacts:t.publicFacts,workerCtx:e.workerCtx});r=WO({current:r,candidate:t.recoveryReplacementEnvelope}),n.push({entry:a,activation:i,readyStateBlobB64u:t.readyStateBlobB64u,publicFacts:t.publicFacts});break}}}finally{s&&VO(s),o&&new Uint8Array(o).fill(0)}}if(!r)throw Error(`wallet recovery produced no replacement custody envelope`);return{replacementEnvelope:Xn({expectedWalletId:e.walletId,replacement:r,activatedAtMs:(e.nowMs??Date.now)()}),nearKeySets:t,ecdsaKeySets:n}}function KO(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<1)throw Error(`${t} must be a positive integer`);return e}function qO(e){if(!Array.isArray(e)||e.length!==2||!Number.isSafeInteger(e[0])||!Number.isSafeInteger(e[1])||e[0]<1||e[1]<1||e[0]===e[1])throw Error(`warm recovery participantIds must contain two distinct positive integers`);return[Number(e[0]),Number(e[1])]}const JO=[`capability`,`kind`,`nearAccountId`,`nearEd25519SigningKeyId`,`participantIds`,`quotaId`,`routerAbNormalSigning`,`runtimePolicyScope`,`signerSlot`,`signingWorkerId`,`thresholdExpiresAtMs`,`thresholdSessionId`,`walletId`,`walletSessionId`];function YO(e,t){let n=[...t].sort(),r=Object.keys(e).sort();if(r.length!==n.length)throw Error(`warm recovery bootstrap response fields are invalid`);for(let e=0;e<r.length;e+=1)if(r[e]!==n[e])throw Error(`warm recovery bootstrap response fields are invalid`)}function XO(e,t){if(e.authMethod!==`passkey`)return!1;let n=e.ed25519Restore;return n.credentialIdB64u?e.walletId===t.walletId&&n.nearAccountId===t.nearAccountId&&n.nearEd25519SigningKeyId===t.nearEd25519SigningKeyId&&n.signerSlot===t.signerSlot&&e.thresholdSessionIds.ed25519===t.thresholdSessionId:!1}async function ZO(e,t){let n=await t.readExactEd25519SealedSession(yd({authMethod:`passkey`,materialActivation:e.materialActivation}));return n&&(n.curve!==`ed25519`||!XO(n,e)||!b(n.ed25519Restore.materialActivation,e.materialActivation))||!n||n.expiresAtMs<=t.nowMs()||n.remainingUses<1?{kind:`unavailable`}:{kind:`ready`,record:n}}async function QO(e){let t;try{t=await e.runtime.resolveSelectedWalletAuthority(String(e.walletId))}catch{return null}if(t.kind!==`resolved`)return null;let{selection:n,authMethod:r,authority:i}=t;if(n.lockState!==`unlocked`||n.walletId!==e.walletId||e.expectedAuthorityRef.walletId!==e.walletId||n.walletAuthMethodId!==e.expectedAuthorityRef.walletAuthMethodId||r.kind!==`passkey`||r.status!==`active`||r.walletId!==e.walletId||r.walletAuthMethodId!==e.expectedAuthorityRef.walletAuthMethodId||r.walletAuthorityId!==i.authorityId||String(r.rpId)!==e.rpId||String(r.credentialIdB64u)!==e.credentialIdB64u||i.state!==`active`||i.walletId!==e.walletId)return null;try{return{authorizationRead:await e.runtime.readExactWalletSessionAuthorization({walletId:e.walletId,authorityId:i.authorityId,authMethodId:r.walletAuthMethodId}),authorityId:i.authorityId,authorityDigestB64u:i.authorityDigestB64u,authorityRevocationEpoch:i.revocationEpoch}}catch{return null}}async function $O(e){if(e.authorizationRead.kind!==`found`)return null;let t=e.authorizationRead,n=t.record,r=n.capabilitySubjects.filter(t=>t.kind===`sign`&&t.keyFamily===`ed25519`&&b(t.materialActivation,e.record.ed25519Restore.materialActivation));return n.walletId!==e.expectedAuthorityRef.walletId||n.walletId!==e.record.walletId||n.authorityId!==e.expectedAuthorityId||n.authMethodId!==e.expectedAuthorityRef.walletAuthMethodId||String(n.authorityDigestB64u)!==String(e.expectedAuthorityDigestB64u)||n.authorityRevocationEpoch!==e.expectedAuthorityRevocationEpoch||n.expiresAtMs<=e.nowMs||t.operationCredential.walletSessionId.trim().length===0||t.operationCredential.token.trim().length===0||r.length!==1?null:t}function ek(e,t){let n=e.ed25519Restore,r=Fo({kind:`router_ab_ed25519_yao_warm_recovery_bootstrap_request_v1`,walletId:e.walletId,nearAccountId:n.nearAccountId,nearEd25519SigningKeyId:n.nearEd25519SigningKeyId,signerSlot:n.signerSlot,thresholdSessionId:t,signingWorkerId:n.routerAbNormalSigning.signingWorkerId,participantIds:n.participantIds});if(!r.ok)throw Error(r.message);return r.value}async function tk(e){let t=e.authorization.operationCredential.token;if(e.authorization.record.walletId!==e.request.walletId||!e.authorization.operationCredential.walletSessionId||!t.trim())throw Error(`[SigningEngine][near] active Wallet Session authorization does not match sealed material`);let n=await e.fetch(`${new URL(e.relayerUrl).origin}${Mo}`,{method:`POST`,headers:{Authorization:`Bearer ${t}`,"Content-Type":`application/json`},body:JSON.stringify(e.request)}),r=await nk(n),i=E(r)?r:null;if(!n.ok){let e=i?String(i.code||``).trim():``;if(n.status===401&&e===`wallet_session_expired`)return{kind:`unavailable`,reason:`wallet_session_expired`};let t=i?String(i.message||``).trim():``;throw Error(`[SigningEngine][near] Ed25519 warm recovery bootstrap failed (HTTP ${n.status}${e?`, ${e}`:``}): ${t||`invalid response`}`)}if(!i)throw Error(`Ed25519 warm recovery bootstrap returned invalid JSON`);return{kind:`ready`,descriptor:await rk({record:e.record,authorization:e.authorization,expectedAuthorityRef:e.expectedAuthorityRef,expectedThresholdSessionId:e.expectedThresholdSessionId,response:i})}}async function nk(e){try{return await e.json()}catch{return null}}async function rk(e){let t=e.record,n=e.response;if(YO(n,JO),n.kind!==`router_ab_ed25519_yao_v2_session_bootstrap_v1`)throw Error(`warm recovery bootstrap response kind is invalid`);let r=t.ed25519Restore,i=j(n.walletId,`response.walletId`),a=j(n.nearAccountId,`response.nearAccountId`),o=j(n.nearEd25519SigningKeyId,`response.nearEd25519SigningKeyId`),s=KO(n.signerSlot,`response.signerSlot`),c=j(n.thresholdSessionId,`response.thresholdSessionId`),l=j(n.signingWorkerId,`response.signingWorkerId`),u=KO(n.thresholdExpiresAtMs,`response.thresholdExpiresAtMs`),d=qO(n.participantIds),f=Ae(M(n.runtimePolicyScope,`response.runtimePolicyScope`)),p=Ae(M(r.runtimePolicyScope,`ed25519Restore.runtimePolicyScope`)),m=Ke(n.routerAbNormalSigning),h=pt(n.walletSessionId),g=dt(n.quotaId),_=Ot(n.capability),v=e.authorization.operationCredential.token;if(!h.ok||!g.ok||e.expectedAuthorityRef.walletId!==t.walletId||String(h.value)!==String(e.authorization.operationCredential.walletSessionId)||String(g.value)!==String(e.authorization.record.quotaId)||!m||i!==t.walletId||a!==r.nearAccountId||o!==r.nearEd25519SigningKeyId||s!==r.signerSlot||c!==String(e.expectedThresholdSessionId)||!v||l!==r.relayerKeyId||l!==r.routerAbNormalSigning.signingWorkerId||m.signingWorkerId!==l||t.expiresAtMs>u||d[0]!==r.participantIds[0]||d[1]!==r.participantIds[1]||!he(f,p))throw Error(`warm recovery bootstrap does not match the exact sealed Ed25519 lane`);if(!ke(f))throw Error(`warm recovery bootstrap signing-root scope is invalid`);if(!v)throw Error(`[SigningEngine][near] active Wallet Session authorization is unavailable`);let y={authority:e.expectedAuthorityRef,walletId:Go(i),nearAccountId:kr(a),nearEd25519SigningKeyId:o,signerSlot:s,operationalPublicKey:`ed25519:${Er(Uint8Array.from(_.registeredPublicKey))}`,relayerKeyId:l,credentialIdB64u:j(r.credentialIdB64u,`ed25519Restore.credentialIdB64u`),session:{sessionKind:`opaque`,home:e.authorization.operationCredential.home,walletSessionToken:v,thresholdSessionId:c,walletSessionId:h.value,authorizationId:e.authorization.record.authorizationId,quotaId:g.value,expiresAtMs:u,remainingUses:t.remainingUses,runtimePolicyScope:f,participantIds:d,routerAbNormalSigning:m},capability:_};return Ut(y,r.materialActivation),y}async function ik(e,t){let n=await ZO(e.subject,t);if(n.kind===`unavailable`)return{kind:`capability_recovery_required`};let r=o(n.record.walletId);if(!r.ok)throw Error(`[SigningEngine][near] sealed Ed25519 wallet identity is invalid`);let i=j(n.record.ed25519Restore.credentialIdB64u,`ed25519Restore.credentialIdB64u`),a;try{a=await t.resolveExactPasskeyWalletAuthAuthorityRef({walletId:r.value,rpId:n.record.ed25519Restore.rpId,credentialIdB64u:i})}catch{return{kind:`capability_recovery_required`}}if(!a)return{kind:`capability_recovery_required`};let s=await QO({walletId:r.value,rpId:n.record.ed25519Restore.rpId,credentialIdB64u:i,expectedAuthorityRef:a,runtime:t});if(!s)return{kind:`capability_recovery_required`};let c=await $O({record:n.record,authorizationRead:s.authorizationRead,expectedAuthorityRef:a,expectedAuthorityId:s.authorityId,expectedAuthorityDigestB64u:s.authorityDigestB64u,expectedAuthorityRevocationEpoch:s.authorityRevocationEpoch,nowMs:t.nowMs()});if(!c)return{kind:`capability_recovery_required`};let l=await tk({request:ek(n.record,e.subject.thresholdSessionId),authorization:c,record:n.record,expectedAuthorityRef:a,expectedThresholdSessionId:e.subject.thresholdSessionId,relayerUrl:e.relayerUrl,fetch:e.fetch});if(l.kind===`unavailable`)return{kind:`capability_recovery_required`};let u=l.descriptor,d=await t.readPasskeyCustodySessionEnvelope({walletId:String(u.walletId),credentialIdB64u:u.credentialIdB64u});return!d||d.binding.kind!==`wallet_custody_seed_v1`?{kind:`capability_recovery_required`}:{kind:`ready`,context:{kind:`passkey_ed25519_yao_export_context_v1`,selectedLaneMaterialActivation:u.capability.materialActivation,material:{authority:u.authority,walletId:u.walletId,nearAccountId:u.nearAccountId,nearEd25519SigningKeyId:u.nearEd25519SigningKeyId,signerSlot:u.signerSlot,operationalPublicKey:u.operationalPublicKey,relayerKeyId:u.relayerKeyId,credentialIdB64u:u.credentialIdB64u,capability:u.capability},authorization:c,relayerUrl:e.relayerUrl,rpId:n.record.ed25519Restore.rpId,walletCustodyEnvelope:d}}}async function ak(e){let{authority:t,authMethod:n}=e.projection;if(String(t.walletId)!==e.walletId||String(n.walletId)!==e.walletId||String(n.walletAuthMethodId)!==e.walletAuthMethodId||String(n.walletAuthorityId)!==String(t.authorityId))throw Error(`Verified Email OTP authority changed during wallet unlock`);switch(t.provenance.kind){case`wallet_registration`:await K.persistFoundingWalletAuthority({authority:t,authMethod:n});return;case`wallet_recovery`:{if(!Oa(t))throw Error(`Recovered Email OTP authority provenance is invalid`);let r=await K.resolveWalletAuthorityForMethod(e.walletId,e.walletAuthMethodId),i=r.kind===`resolved`?[...String(r.authority.authorityId)===String(t.authorityId)?[]:[`authorityId`],...String(r.authority.authorityDigestB64u)===String(t.authorityDigestB64u)?[]:[`authorityDigest`],...r.authMethod.kind===`email_otp`?[]:[`method.kind`],...r.authMethod.status===`active`?[]:[`method.status`],...String(r.authMethod.walletAuthMethodId)===String(n.walletAuthMethodId)?[]:[`method.id`],...String(r.authMethod.walletAuthorityId)===String(n.walletAuthorityId)?[]:[`method.authorityId`],...r.authMethod.kind===`email_otp`&&r.authMethod.emailHashHex!==n.emailHashHex?[`method.emailHash`]:[]]:[`resolution:${r.kind}`];if(i.length>0)throw Error(`Verified recovered Email OTP authority is not installed on this device: ${i.join(`, `)}`);return}case`device_link`:{let n=await K.resolveWalletAuthorityForMethod(e.walletId,e.walletAuthMethodId);if(n.kind!==`resolved`||String(n.authority.authorityId)!==String(t.authorityId)||String(n.authority.authorityDigestB64u)!==String(t.authorityDigestB64u))throw Error(`Verified linked Email OTP authority is not installed on this device`);return}}t.provenance}async function ok(e){let{authority:t,authMethod:n}=e.projection;if(String(t.walletId)!==e.walletId||String(n.walletId)!==e.walletId||String(n.walletAuthMethodId)!==e.walletAuthMethodId||String(n.walletAuthorityId)!==String(t.authorityId)||n.emailHashHex!==e.emailHashHex)throw Error(`Verified Email OTP authority does not match the wallet unlock factor`);let r=_o({walletId:e.walletId,provider:e.providerSubject.startsWith(`google:`)?`google`:`email`,providerUserId:e.providerSubject,emailHashHex:e.emailHashHex});return await U({authority:{walletId:r.walletId,factor:r.factor,verifier:r.verifier,bindingId:n.walletAuthMethodId}})}function sk(){}async function ck(e,t){switch(t.kind){case`near_ed25519_wallet`:await e.signingEngine.activateAuthenticatedWalletState({walletId:t.signer.account.wallet.walletId,nearAccountId:kr(t.signer.account.nearAccountId),signerSlot:t.signer.signerSlot,...e.nearClient?{nearClient:e.nearClient}:{}}),await e.signingEngine.markSelectedEmailOtpWalletAuthorityUnlocked({walletId:t.signer.account.wallet.walletId,walletAuthMethodId:t.walletAuthMethodId}),e.signingEngine.setWalletAuthenticated({kind:`authenticated`,walletId:t.signer.account.wallet.walletId,authMethod:`email_otp`});return;case`evm_family_ecdsa_wallet`:{let n=e.signingEngine.getUserPreferences();n.setCurrentWallet(t.walletId),await n.reloadUserSettings().catch(sk),await e.signingEngine.markSelectedEmailOtpWalletAuthorityUnlocked({walletId:t.walletId,walletAuthMethodId:t.walletAuthMethodId}),e.signingEngine.setWalletAuthenticated({kind:`authenticated`,walletId:t.walletId,authMethod:`email_otp`});return}}}function lk(e){return{laneSelection:e.laneSelection,sessionLifecycle:e.sessionLifecycle,ecdsa:{...e.ecdsa,theme:e.getTheme()},ed25519Yao:{...e.ed25519Yao,theme:e.getTheme()}}}async function uk(e,t){let{exportKeypairWithUI:n}=await import(`./exportKeypairOperation-DzbjKbnk.js`);return await n(lk(e),t)}async function dk(e,t){let{resolveExactKeyExportLane:n}=await import(`./exportKeypairOperation-DzbjKbnk.js`);return await n(lk(e),t)}async function fk(e,t){return await e.touchConfirm.requestRegistrationCredentialConfirmation({walletId:t.walletId,nearAccountId:t.nearAccountId,signerSlot:t.signerSlot,confirmerText:t.confirmerText,confirmationConfigOverride:t.confirmationConfigOverride,challengeB64u:t.challengeB64u,registrationOptions:t.registrationOptions})}async function pk(e,t){return await e.touchIdPrompt.getAuthenticationCredentialsSerializedForChallengeB64u({subjectId:t.subjectId,challengeB64u:t.challengeB64u,allowCredentials:t.allowCredentials,includeSecondPrfOutput:t.includeSecondPrfOutput??!1})}function mk(e){e instanceof Uint8Array&&e.fill(0)}function hk(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} returned invalid JSON`);return e}function gk(e,t){return j(e,t)}function _k(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}function vk(e){if(!e||typeof e.requestWorkerOperation!=`function`)throw Error(`Email OTP secret-bearing operations require the dedicated emailOtp worker`);return e}function yk(e,t){if(!(e instanceof Uint8Array))throw Error(`${t} must be a Uint8Array`);if(e.length!==32)throw Error(`${t} must contain 32 bytes`);return Uint8Array.from(e)}function bk(e){return e.routeFamily===`registration`?pr({routeFamily:`registration`,operation:Rr}):pr({routeFamily:`login`,operation:Hr})}function xk(e){let t=hk(e,`Email OTP registration ECDSA handle`),n=gk(t.kind,`emailOtpSessionHandle.handle.kind`);if(n!==`email_otp_worker_session_handle_v1`)throw Error(`Unsupported Email OTP worker handle kind: ${n}`);let r=gk(t.action,`emailOtpSessionHandle.handle.action`);if(r!==`wallet_registration_ecdsa_prepare`)throw Error(`Unsupported Email OTP worker handle action: ${r}`);if(gk(t.operation,`emailOtpSessionHandle.handle.operation`)!==`registration`)throw Error(`Email OTP registration ECDSA handle requires registration operation`);if(gk(t.keyScope,`emailOtpSessionHandle.handle.keyScope`)!==`evm-family`)throw Error(`Email OTP registration ECDSA handle requires evm-family keyScope`);return{kind:`email_otp_worker_session_handle_v1`,sessionId:gk(t.sessionId,`emailOtpSessionHandle.handle.sessionId`),walletId:gk(t.walletId,`emailOtpSessionHandle.handle.walletId`),evmFamilySigningKeySlotId:gk(t.evmFamilySigningKeySlotId,`emailOtpSessionHandle.handle.evmFamilySigningKeySlotId`),authSubjectId:gk(t.authSubjectId,`emailOtpSessionHandle.handle.authSubjectId`),action:`wallet_registration_ecdsa_prepare`,operation:`registration`,keyScope:`evm-family`,chainTarget:Sk(t.chainTarget)}}function Sk(e){let t=e&&typeof e==`object`?e:null;if(!t)throw Error(`Email OTP registration ECDSA handle requires chainTarget`);return Mr(t)}function Ck(e){let t=hk(e,`Email OTP registration ECDSA handle result`),n=gk(t.kind,`emailOtpSessionHandle.kind`);switch(n){case`available`:if(!Array.isArray(t.handles)||t.handles.length===0)throw Error(`Email OTP registration ECDSA handle result requires handles`);{let e=[];for(let n of t.handles)e.push(xk(n));let n=e[0];if(!n)throw Error(`Email OTP registration ECDSA handle result requires handles`);return{kind:`available`,handles:[n,...e.slice(1)]}}case`not_requested`:if(`handles`in t)throw Error(`Email OTP unrequested registration ECDSA handle result forbids handles`);return{kind:`not_requested`};default:throw Error(`Unsupported Email OTP registration ECDSA handle result kind: ${n}`)}}async function wk(e){let t=vk(e.workerCtx),n=null;try{n=e.clientSecret32?yk(e.clientSecret32,`clientSecret32`):null;let r=await t.requestWorkerOperation({kind:`emailOtp`,request:{type:`prepareEmailOtpRegistrationEnrollmentMaterial`,payload:{relayUrl:gk(e.relayUrl,`relayUrl`),walletId:gk(e.walletId,`walletId`),userId:gk(e.userId,`userId`),groupId:gk(e.groupId,`groupId`),routePlan:bk({routeFamily:`registration`}),otpChannel:e.otpChannel||`email_otp`,ecdsaSessionHandle:e.ecdsaSessionHandle,...n?{clientSecret32:_k(n)}:{}}}});return{...r,emailOtpSessionHandle:Ck(r.emailOtpSessionHandle),emailOtpEnrollment:r.emailOtpEnrollment}}finally{mk(n)}}function Tk(e,t){return cn({freshRouteFamily:t,operation:e.operation})}function Ek(e){return{walletSession:e.walletSession,authoritySelector:e.authoritySelector,chainTarget:e.chainTarget,otpCode:e.otpCode,routePlan:Tk(e,`login`),ecdsaBootstrapAuthorization:e.ecdsaBootstrapAuthorization,emailHashHex:e.emailHashHex,providerIdentity:e.providerIdentity,ed25519YaoRecovery:e.ed25519YaoRecovery??{kind:`not_requested`},...e.emailOtpAuthPolicy?{emailOtpAuthPolicy:e.emailOtpAuthPolicy}:{},...e.emailOtpAuthReason?{emailOtpAuthReason:e.emailOtpAuthReason}:{},...e.relayUrl?{relayUrl:e.relayUrl}:{},...e.challengeId?{challengeId:e.challengeId}:{},...e.operation?{operation:e.operation}:{},...e.groupId?{groupId:e.groupId}:{},...e.keyHandle?{keyHandle:e.keyHandle}:{},...e.participantIds?{participantIds:e.participantIds}:{},...e.publicationChainTargets?{publicationChainTargets:e.publicationChainTargets}:{},...typeof e.ttlMs==`number`?{ttlMs:e.ttlMs}:{},...typeof e.remainingUses==`number`?{remainingUses:e.remainingUses}:{},...e.runtimePolicyScope?{runtimePolicyScope:e.runtimePolicyScope}:{},...e.onProgress?{onProgress:e.onProgress}:{}}}async function Dk(e,t){return await e.emailOtpSessions.loginWithEcdsaCapabilityInternal(Ek(t))}async function Ok(e,t){let n=z(t.walletId),r=String(t.relayUrl||e.relayerUrl||``).trim();if(!r)throw Error(`Missing relayer url (configs.network.relayer.url)`);let i=String(t.groupId||e.groupId||``).trim();if(!i)throw Error(`Missing shamir prime for Email OTP runtime`);let a=String(t.userId).trim();if(!a)throw Error(`Email OTP registration enrollment material requires userId`);return await wk({relayUrl:r,walletId:String(n),userId:a,groupId:i,workerCtx:e.getSignerWorkerContext(),otpChannel:t.otpChannel,ecdsaSessionHandle:{kind:`not_requested`},...t.clientSecret32?{clientSecret32:t.clientSecret32}:{}})}const kk={BUILD:{ROOT:`dist`,WORKERS:`dist/workers`,ESM:`dist/esm`,TYPES:`dist/types`},SOURCE:{ROOT:`src`,CORE:`src/core`,STATIC:`src/static`,SIGNING_WORKERS:`src/core/signingEngine/workerManager/workers`,WASM_SIGNER:`../../wasm/near_signer`,ED25519_YAO_CLIENT:`../../crates/router-ab-ed25519-yao-client`,WASM_ECDSA_CLIENT:`../../wasm/router_ab_ecdsa_client`,WASM_EVM_CRYPTO:`../../wasm/evm_crypto`,WASM_TEMPO_SIGNER:`../../wasm/tempo_signer`,WASM_SHAMIR3PASS_RUNTIME:`../../wasm/shamir3pass_runtime`,WASM_EMAIL_OTP_RUNTIME:`../../wasm/email_otp_runtime`,WASM_WALLET_CUSTODY_CEREMONY:`../../wasm/wallet_custody_ceremony`,CRITICAL_DIRS:[`src/core`,`src/react`,`src/static`,`src/utils`,`../wallet-server/src`,`../shared-ts/src`,`../../crates/router-ab-ed25519-yao-client`,`../../wasm/near_signer`,`../../wasm/router_ab_ecdsa_client`,`../../wasm/evm_crypto`,`../../wasm/tempo_signer`,`../../wasm/shamir3pass_runtime`,`../../wasm/email_otp_runtime`,`../../wasm/wallet_custody_ceremony`]},RUNTIME:{SDK_BASE:`/sdk`,WORKERS_BASE:`/sdk/workers`,TOUCH_CONFIRM_WORKER:`/sdk/workers/passkey-confirm.worker.js`,PASSKEY_MPC_SESSION_WORKER:`/sdk/workers/passkey-mpc-session.worker.js`,PASSKEY_MPC_EXPORT_WORKER:`/sdk/workers/passkey-mpc-export.worker.js`,SIGNER_WORKER:`/sdk/workers/near-signer.worker.js`,ECDSA_DERIVATION_CLIENT_WORKER:`/sdk/workers/ecdsa-derivation-client.worker.js`,ECDSA_PRESIGN_CLIENT_WORKER:`/sdk/workers/ecdsa-presign-client.worker.js`,ECDSA_ONLINE_CLIENT_WORKER:`/sdk/workers/ecdsa-online-client.worker.js`,EMAIL_OTP_WORKER:`/sdk/workers/email-otp.worker.js`,WALLET_CUSTODY_CEREMONY_WORKER:`/sdk/workers/wallet-custody-ceremony.worker.js`,DEVICE_LINKING_KEY_WORKER:`/sdk/workers/device-linking-key.worker.js`},WORKERS:{TOUCH_CONFIRM:`passkey-confirm.worker.js`,PASSKEY_MPC_SESSION:`passkey-mpc-session.worker.js`,PASSKEY_MPC_EXPORT:`passkey-mpc-export.worker.js`,SIGNER:`near-signer.worker.js`,ECDSA_DERIVATION_CLIENT:`ecdsa-derivation-client.worker.js`,ECDSA_PRESIGN_CLIENT:`ecdsa-presign-client.worker.js`,ECDSA_ONLINE_CLIENT:`ecdsa-online-client.worker.js`,EMAIL_OTP:`email-otp.worker.js`,WALLET_CUSTODY_CEREMONY:`wallet-custody-ceremony.worker.js`,DEVICE_LINKING_KEY:`device-linking-key.worker.js`,SHAMIR3PASS:`shamir3pass.worker.js`,WASM_SIGNER_JS:`wasm_signer_worker.js`,WASM_SIGNER_WASM:`wasm_signer_worker_bg.wasm`,ED25519_YAO_CLIENT_JS:`router_ab_ed25519_yao_client.js`,ED25519_YAO_CLIENT_WASM:`router_ab_ed25519_yao_client_bg.wasm`,ECDSA_CLIENT_JS:`router_ab_ecdsa_client.js`,ECDSA_CLIENT_WASM:`router_ab_ecdsa_client_bg.wasm`,WASM_EVM_CRYPTO_BG_WASM:`evm_crypto_bg.wasm`,WASM_TEMPO_SIGNER_BG_WASM:`tempo_signer_bg.wasm`,EMAIL_OTP_RUNTIME_JS:`email_otp_runtime.js`,EMAIL_OTP_RUNTIME_WASM:`email_otp_runtime_bg.wasm`,WALLET_CUSTODY_CEREMONY_WASM:`wallet_custody_ceremony_bg.wasm`},TEST_WORKERS:{TOUCH_CONFIRM:`/sdk/workers/passkey-confirm.worker.js`,PASSKEY_MPC_SESSION:`/sdk/workers/passkey-mpc-session.worker.js`,PASSKEY_MPC_EXPORT:`/sdk/workers/passkey-mpc-export.worker.js`,SIGNER:`/sdk/workers/near-signer.worker.js`,ECDSA_DERIVATION_CLIENT:`/sdk/workers/ecdsa-derivation-client.worker.js`,ECDSA_PRESIGN_CLIENT:`/sdk/workers/ecdsa-presign-client.worker.js`,ECDSA_ONLINE_CLIENT:`/sdk/workers/ecdsa-online-client.worker.js`,EMAIL_OTP:`/sdk/workers/email-otp.worker.js`,WALLET_CUSTODY_CEREMONY:`/sdk/workers/wallet-custody-ceremony.worker.js`,DEVICE_LINKING_KEY:`/sdk/workers/device-linking-key.worker.js`,SHAMIR3PASS:`/sdk/workers/shamir3pass.worker.js`,WASM_SIGNER_JS:`/sdk/workers/wasm_signer_worker.js`,WASM_SIGNER_WASM:`/sdk/workers/wasm_signer_worker_bg.wasm`,ED25519_YAO_CLIENT_JS:`/sdk/workers/router_ab_ed25519_yao_client.js`,ED25519_YAO_CLIENT_WASM:`/sdk/workers/router_ab_ed25519_yao_client_bg.wasm`,ECDSA_CLIENT_JS:`/sdk/workers/router_ab_ecdsa_client.js`,ECDSA_CLIENT_WASM:`/sdk/workers/router_ab_ecdsa_client_bg.wasm`,WASM_EVM_CRYPTO_BG_WASM:`/sdk/workers/evm_crypto_bg.wasm`,WASM_TEMPO_SIGNER_BG_WASM:`/sdk/workers/tempo_signer_bg.wasm`,EMAIL_OTP_RUNTIME_JS:`/sdk/workers/email_otp_runtime.js`,EMAIL_OTP_RUNTIME_WASM:`/sdk/workers/email_otp_runtime_bg.wasm`,WALLET_CUSTODY_CEREMONY_WASM:`/sdk/workers/wallet_custody_ceremony_bg.wasm`}},Ak=()=>{let e=navigator.userAgent.toLowerCase(),t=/android|iphone|ipod|blackberry|iemobile|opera mini/i.test(e),n=/ipad|tablet|kindle|playbook|silk/i.test(e),r=navigator.maxTouchPoints>0,i=window.screen.width,a=i<=480,o=i<=1024,s=`orientation`in window;return t||r&&a?`mobile`:n||r&&o&&s?`tablet`:`desktop`},jk=()=>{try{let e=navigator.userAgent;return/safari/i.test(e)&&!/chrome|crios|crmo|chromium|edg|edge|opr|opera|brave/i.test(e)}catch{return!1}},Mk=()=>{try{let e=navigator.userAgent,t=navigator.platform||``,n=Number(navigator.maxTouchPoints||0),r=/iPad|iPhone|iPod/.test(e),i=/Macintosh/.test(e)&&n>1,a=/iPad|iPhone|iPod/.test(t);return r||i||a}catch{return!1}},Nk=()=>{try{let e=navigator.userActivation;return!!(e&&typeof e.isActive==`boolean`&&e.isActive)}catch{return!1}},Pk=()=>{try{return Nk()?!1:Mk()||Fk()||jk()}catch{return!1}},Fk=()=>Ak()===`mobile`;function Ik(e){try{return dl(e)===`emailOtp`}catch{return!1}}function Lk(e,t){let n=e.userPreferencesManager.getConfirmationConfig(),r=t?.confirmationConfig||{},i=Object.fromEntries(Object.entries(r).filter(([,e])=>e!=null)),a={...n,...i};if(t?.type===Y.AUTHORIZE_KEY_EXPORT)return ul({uiMode:`none`,behavior:a.behavior,autoProceedDelay:a.autoProceedDelay});t&&Ik(t)&&(a={...a,uiMode:a.uiMode===`none`?`modal`:a.uiMode,behavior:`requireClick`});let o=window.self!==window.top;if(Pk()){let e=a.uiMode===`none`?`drawer`:a.uiMode;a={...a,uiMode:e,behavior:`requireClick`}}return o&&t?.type&&(t.type===Y.REGISTER_ACCOUNT||t.type===Y.LINK_DEVICE)?ul({uiMode:`modal`,behavior:`requireClick`,autoProceedDelay:a.autoProceedDelay}):ul(a)}const Rk=new Map;function zk(e){e?.cleanupTimer&&(clearTimeout(e.cleanupTimer),e.cleanupTimer=null)}function Bk(e){let t=String(e.requestId||``).trim();if(!t)return;zk(Rk.get(t));let n=Number.isFinite(e.ttlMs)&&Number(e.ttlMs)>0?Number(e.ttlMs):12e4,r={readiness:e.readiness,cleanupTimer:null};r.cleanupTimer=setTimeout(()=>{Rk.get(t)===r&&Rk.delete(t)},n),Rk.set(t,r)}function Vk(e){let t=String(e||``).trim();if(!t)return;let n=Rk.get(t);return Rk.delete(t),zk(n),n?.readiness}function Hk(e){let t=String(e||``).trim();t&&(zk(Rk.get(t)),Rk.delete(t))}const Uk={CONFIRMATION_COMPLETE:`confirmation.complete`,PASSKEY_PROMPT_STARTED:`auth.passkey.prompt.started`,PASSKEY_PROMPT_SUCCEEDED:`auth.passkey.prompt.succeeded`};function Wk(e,t,n){bl(e,{requestId:t,step:2,phase:Uk.CONFIRMATION_COMPLETE,status:`failed`,message:n||Al.cancelled})}function Gk(e){return e.type===Y.SIGN_TRANSACTION||e.type===Y.SIGN_NEP413_MESSAGE?dl(e)??`webauthn`:`webauthn`}function Kk(e){return!$d(e.signingOperationStateKind)||e.signingAuthMode===`emailOtp`}function qk(e){if(!e)throw Error(`NEAR transaction signing lifecycle callback is required`);return e}function Jk(){}function Yk(){return new Promise(Jk)}function Xk(){return Yk()}function Zk(e){let t=Hu(e);return t?.kind===`expired`?{kind:`wallet_session_expired`,failure:t}:Yk()}function Qk(e){return e.then(Xk,Zk)}function $k(e){return`kind`in e&&e.kind===`wallet_session_expired`}function eA(e){return e.request.type===Y.SIGN_NEP413_MESSAGE||e.request.type===Y.SIGN_TRANSACTION&&e.transactionSummary.type===`delegateAction`?{kind:`signature_only`}:{kind:`transaction_access_key`}}function tA(e){return e.error===`NEAR_ACCOUNT_LOOKUP_FAILED`?e.details||`NEAR account access-key lookup failed.`:e.details?`${Al.nearRpcFailed}: ${e.details}`:Al.nearRpcFailed}function nA(e){if(e.readinessMode.kind!==`transaction_access_key`)return;if(e.request.type!==Y.SIGN_TRANSACTION)throw Error(`NEAR transaction readiness requires a transaction confirmation request`);let t=pl(e.request);if(t.signingKind!==`transaction`)throw Error(`NEAR transaction readiness cannot use a delegate confirmation payload`);let n=t.nearFundingRequest;if(n.signatureUses!==e.usesNeeded)throw Error(`NEAR funding request signature use count does not match confirmation request`);return n}function rA(e){return e?{nearTransactionReadiness:e}:{}}function iA(e){let t=String(e||``).replace(/\D/g,``).slice(0,6);if(!/^\d{6}$/.test(t))throw Error(`Enter the 6-digit Email OTP code to continue`);return t}function aA(e){if(e.signingAuthPlanKind===Qd.EmailOtpReauth)throw console.warn(`[SigningEngine][ui-confirm] Email OTP auth plan reached passkey credential lookup`,{stage:e.stage,subjectId:e.subjectId,requestId:e.requestId,signingAuthPlanKind:e.signingAuthPlanKind}),Error(`[SigningEngine] passkey_lookup_for_email_otp`)}function oA(e){throw Error(`Unsupported WebAuthn challenge branch: ${JSON.stringify(e)}`)}function sA(e){e.ctx.operationStepUpPreparation.cancel({requestId:e.requestId,...e.preparation?{handle:e.preparation.handle}:{}})}function cA(e){let t=String(e||``).trim();return!t||t===`AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA`?``:t}function lA(e){let t=cA(e.defaultChallengeB64u);if(!e.webauthnChallenge){if(e.requireTypedChallenge)throw Error(`Missing typed WebAuthn challenge for passkey signing flow`);return t}switch(e.webauthnChallenge.kind){case`intent_digest`:return cA(e.webauthnChallenge.challengeB64u)||t;case`threshold_session_policy`:return String(e.webauthnChallenge.digest32B64u||``).trim();case`ecdsa_role_local_bootstrap`:return String(e.webauthnChallenge.digest32B64u||``).trim()}return oA(e.webauthnChallenge)}async function uA(e,t,n,r){let i=it(e.surfaceMeasurementBinding),{confirmationConfig:a,transactionSummary:o,theme:s,surface:c}=r,l=wl(e),u=kl({adapters:l,worker:n,request:t,confirmationConfig:a,transactionSummary:o,theme:s,surface:c}),d=hl(t),f,p=String(Pl(t)||``).trim()||void 0;p===`pending-intent-digest`&&(p=void 0);try{let a=Gk(t),s=t.type===Y.SIGN_TRANSACTION?pl(t):null,c=s?.signingKind===`transaction`?s:null,m=c?qk(r.onSigningOperationInteractionEvent):null,h=c?$d(c.signingOperationStateKind):!1,g=c?Kk({signingOperationStateKind:c.signingOperationStateKind,signingAuthMode:a}):!0,_=Ml(t),v=t.type===Y.SIGN_TRANSACTION?Xd(t.requestId):void 0,y=t.type===Y.SIGN_TRANSACTION?String(Pl(t)||``).trim()||void 0:t.type===Y.SIGN_NEP413_MESSAGE&&String(await ol({nearAccountId:d,recipient:t.payload.recipient,message:t.payload.message})).trim()||void 0;y===`pending-intent-digest`&&(y=void 0);let b=y;p=y;let x=eA({request:t,transactionSummary:o}),S=nA({request:t,usesNeeded:_,readinessMode:x}),C=S?l.near.fetchNearContext(S):void 0,w=l.security.getRpId(),T=w?{rpId:w}:void 0,E,D=new Promise(e=>{E=e}),O=!1,ee=!1,k=Vk(t.requestId),A=!!k,j=k?Promise.resolve(k.promise):void 0,M=j?Qk(j):void 0,te=()=>{E?.(),E=void 0};a===`emailOtp`&&m?.({kind:ef.AuthenticationStarted});let ne=g?u.promptUser({securityContext:T,loading:!1,onMounted:()=>{te(),A&&u.updateUI({preparing:!0})}}):Promise.resolve({confirmed:!0});g?ne.finally(te):te();let re,N=e=>{let t=String(e.intentDigest||``).trim(),n=String(e.challengeB64u||``).trim();t&&(y=t,p=t),n&&(b=n)},ie=e=>{N(e),u.updateUI({...e.displayModel?{model:e.displayModel}:{},...e.title?{title:e.title}:{},...e.body?{body:e.body}:{},loading:!1})},ae=v?(async()=>(await D,await v))():void 0;ae&&ae.then(e=>{O||ie(e)}).catch(e=>{O||u.updateUI({loading:!1,errorMessage:String(I(e)?.message||e||`Failed to prepare intent`)})}),j&&j.then(async()=>{A=!1,await D,!O&&u.updateUI({preparing:!1})}).catch(async e=>{if(A=!1,await D,O)return;if(ee){u.updateUI({preparing:!1});return}let t=String(I(e)?.message||`NEAR signing session could not be finalized`);u.updateUI({preparing:!1,errorMessage:`NEAR signing session could not be finalized: ${t}`})}),C&&C.then(async e=>{if(re=e,await D,e.kind===`failed`){if(ee=!0,O)return;u.updateUI({loading:!1,errorMessage:tA(e)});return}if(ee=!1,e.readiness.kind===`funding_required`){if(O)return;u.updateUI({loading:!1,body:Tl(String(e.readiness.request.subject.nearAccountId)),errorMessage:``,confirmText:`Fund account`});return}u.setNonceLeases(e.reservedNonceLeases),O||r.onNearTransactionContextReady?.(e.readiness);let t=e.readiness.transactionContext,n=w?{rpId:w,blockHeight:t.txBlockHeight,blockHash:t.txBlockHash}:void 0;O||u.updateUI({securityContext:n,loading:!1})});let oe=M?await Promise.race([ne,M]):await ne;if(O=!0,$k(oe))return sA({ctx:e,requestId:t.requestId,preparation:f}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!1,walletSessionFailure:oe.failure});let{confirmed:se,error:ce,otpCode:le,emailOtpChallengeId:ue}=oe;if(!se)return Wk(n,t.requestId,ce),sA({ctx:e,requestId:t.requestId,preparation:f}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!1,error:ce});m&&!h&&(m({kind:ef.ReviewApproved}),u.dismissReviewSurface());let de=C?re||await C:void 0,fe;if(C){if(!de||de.kind===`failed`){let n=de||{kind:`failed`,error:`NEAR_CONTEXT_UNAVAILABLE`,details:`NEAR transaction readiness did not resolve`};return console.error(`[SigningFlow] fetchNearContext failed`,n),sA({ctx:e,requestId:t.requestId,preparation:f}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!1,error:tA(n)})}fe=de.readiness,de.readiness.kind===`context_ready`&&u.setNonceLeases(de.reservedNonceLeases)}if(ae&&N(await ae),j)try{await j}catch(n){let r=String(I(n)?.message||`NEAR signing session could not be finalized`);return sA({ctx:e,requestId:t.requestId,preparation:f}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!1,error:`NEAR signing session could not be finalized: ${r}`})}if(a!==`warmSession`&&fe?.kind===`funding_required`&&S){u.updateUI({body:Ol(String(fe.request.subject.nearAccountId)),errorMessage:``,loading:!0});let n;try{n=await e.nearImplicitAccountFunding.fund({requestId:t.requestId,request:fe.request})}catch(n){return sA({ctx:e,requestId:t.requestId,preparation:f}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!1,error:`NEAR account funding failed: ${String(I(n)?.message||n)}`})}fe=n.readiness,u.setNonceLeases(n.reservedNonceLeases)}if(a!==`warmSession`&&fe?.kind===`context_ready`){let n=nA({request:t,usesNeeded:_,readinessMode:x});if(!n)throw Error(`Operation step-up requires exact NEAR operation facts`);f=await e.operationStepUpPreparation.prepare({kind:`near_transaction`,requestId:t.requestId,transactionContext:fe.transactionContext,operationId:n.operation.operationId,operationFingerprint:n.operation.operationFingerprint,displayDigest:String(p||``).trim()})}else a!==`warmSession`&&x.kind===`signature_only`&&(f=await e.operationStepUpPreparation.prepare({kind:`near_signature_only`,requestId:t.requestId,displayDigest:String(p||``).trim()}));if(a===`emailOtp`){m?.({kind:ef.AuthenticationCompleted}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!0,otpCode:iA(le),...ue?{emailOtpChallengeId:ue}:{},...f?{operationStepUpPreparation:f}:{},...rA(fe)});return}if(a===`warmSession`){u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!0,...rA(fe)});return}aA({stage:`transaction_prompt`,subjectId:d,requestId:t.requestId,signingAuthPlanKind:t.payload.signingAuthPlan.kind});let pe=f?.challengeB64u||lA({webauthnChallenge:t.payload.webauthnChallenge,defaultChallengeB64u:String(b||``).trim(),requireTypedChallenge:t.payload.signingAuthPlan.kind===Qd.PasskeyReauth&&!!t.payload.webauthnChallenge});if(!pe)throw Error(`Missing WebAuthn challenge digest for signing flow`);m?.({kind:ef.AuthenticationStarted});let me=await xl({credentialStore:e.webauthnCredentialStore,touchIdPrompt:e.touchIdPrompt,onBeforePrompt:i?.beforeCredential,cancellation:i?{kind:`abort_signal`,signal:i.abortController.signal}:{kind:`none`},walletId:t.payload.walletId,challengeB64u:pe});i?.afterCredential(),m?.({kind:ef.AuthenticationCompleted}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!0,credential:me,...f?{operationStepUpPreparation:f}:{},...rA(fe)})}catch(n){sA({ctx:e,requestId:t.requestId,preparation:f});let r=vl(n),i=String(I(n)?.message||n||``);r&&window.parent?.postMessage({type:`WALLET_UI_CLOSED`},`*`);let a=/multiple passkeys \\(devicenumbers\\) for account/i.test(i);return u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!1,error:r?Al.cancelled:a?i:i||Al.collectCredentialsFailed})}}function dA(e){return dl(e)??`webauthn`}async function fA(e,t,n,r){let i=it(e.surfaceMeasurementBinding),{confirmationConfig:a,transactionSummary:o,theme:s,surface:c}=r,l=wl(e),u=kl({adapters:l,worker:n,request:t,confirmationConfig:a,transactionSummary:o,theme:s,surface:c}),d=Nl(t),f=d.kind===`near_wallet`?d.nearAccountId:d.walletId,p=d.kind===`near_wallet`?d.nearAccountId:``,m=Xd(t.requestId);try{let r=dA(t),o=String(Pl(t)||``).trim()||void 0,s=String(t.payload.challengeB64u||``).trim(),c=a.kind===`interactive`,h=l.security.getRpId(),g=h?{rpId:h}:void 0;c&&bl(n,{requestId:t.requestId,step:2,phase:`intent-confirmation-required`,status:`running`,message:`Awaiting confirmation click`});let _,v=new Promise(e=>{_=e}),y=()=>{_?.(),_=void 0},b=u.promptUser({securityContext:g,loading:!1,onMounted:()=>{y()}});b.finally(y);let x=!1,S=!1,C=e=>{o=String(e.intentDigest||``).trim()||o,s=String(e.challengeB64u||``).trim()||s,u.updateUI({...e.displayModel?{model:e.displayModel}:{},...e.title?{title:e.title}:{},...e.body?{body:e.body}:{},loading:!1}),S=!0},w=m?(async()=>(await v,await m))():void 0;w&&w.then(e=>{x||S||C(e)}).catch(e=>{x||u.updateUI({loading:!1,errorMessage:String(I(e)?.message||e||`Failed to prepare intent`)})});let{confirmed:T,error:E,otpCode:D,emailOtpChallengeId:O}=await b;if(x=!0,!T)return c&&Wk(n,t.requestId,E),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:o,confirmed:!1,error:E});if(w){let e=await w;S||C(e)}if(r===`emailOtp`)return c&&bl(n,{requestId:t.requestId,step:2,phase:Uk.CONFIRMATION_COMPLETE,status:`succeeded`,message:`Email OTP submitted`}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:o,confirmed:!0,otpCode:iA(D),...O?{emailOtpChallengeId:O}:{}});if(r===`warmSession`)return c&&bl(n,{requestId:t.requestId,step:2,phase:Uk.CONFIRMATION_COMPLETE,status:`succeeded`,message:`Confirmation complete`}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:o,confirmed:!0});aA({stage:`intent_digest_prompt`,subjectId:f,requestId:t.requestId,signingAuthPlanKind:t.payload.signingAuthPlan.kind});let ee=lA({webauthnChallenge:t.payload.webauthnChallenge,defaultChallengeB64u:String(s||``).trim(),requireTypedChallenge:t.payload.signingAuthPlan.kind===Qd.PasskeyReauth});if(!ee)throw Error(`Missing WebAuthn challenge digest for intent signing flow`);bl(n,{requestId:t.requestId,step:3,phase:Uk.PASSKEY_PROMPT_STARTED,status:`running`,message:`Authenticating with passkey...`});let k=d.kind===`near_wallet`?await fl({credentialStore:e.webauthnCredentialStore,touchIdPrompt:e.touchIdPrompt,onBeforePrompt:i?.beforeCredential,cancellation:i?{kind:`abort_signal`,signal:i.abortController.signal}:{kind:`none`},nearAccountId:p,challengeB64u:ee}):await xl({credentialStore:e.webauthnCredentialStore,touchIdPrompt:e.touchIdPrompt,onBeforePrompt:i?.beforeCredential,cancellation:i?{kind:`abort_signal`,signal:i.abortController.signal}:{kind:`none`},walletId:d.walletId,challengeB64u:ee});return i?.afterCredential(),bl(n,{requestId:t.requestId,step:4,phase:Uk.PASSKEY_PROMPT_SUCCEEDED,status:`succeeded`,message:`Authentication complete`}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:o,confirmed:!0,credential:k})}catch(e){Yd(t.requestId),bl(n,{requestId:t.requestId,step:4,phase:Uk.PASSKEY_PROMPT_SUCCEEDED,status:`failed`,message:String(I(e)?.message||e||Al.collectCredentialsFailed)});let r=vl(e),i=String(I(e)?.message||e||``);return r&&window.parent?.postMessage({type:`WALLET_UI_CLOSED`},`*`),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:String(Pl(t)||``).trim()||void 0,confirmed:!1,error:r?Al.cancelled:i||Al.collectCredentialsFailed})}}async function pA(e,t,n,r){let i=_l(n,{channelToken:t.channelToken,onDecision:r?.onDecision}),a=t.data,o,s,c;try{jl(a),ml(a),o=Lk(e,a),c=je(e.getTheme?.())??`dark`;let t=Pl(a);s=Cl({...a.summary,...t?{intentDigest:t}:{}})}catch(e){console.error(`[UserConfirm][Host] validateAndParseRequest failed`,e),yl(i,{requestId:a.requestId,confirmed:!1,error:L(e)||`Invalid secure confirm request`});return}try{let t={confirmationConfig:o,transactionSummary:s,theme:c,surface:r?.signingSurface??{kind:`mount_new`}};switch(a.type){case Y.AUTHORIZE_KEY_EXPORT:case Y.SHOW_SECURE_PRIVATE_KEY_UI:{let{handleLocalOnlyFlow:n}=await import(`./localOnly-C5mSXb_D.js`);await n(e,a,i,t);break}case Y.REGISTER_ACCOUNT:case Y.LINK_DEVICE:{let{handleRegistrationFlow:n}=await import(`./registration-CyF7nOXs.js`).then(e=>e.n);await n(e,a,i,t);break}case Y.SIGN_TRANSACTION:case Y.SIGN_NEP413_MESSAGE:await uA(e,a,i,{...t,...r?.onSigningOperationInteractionEvent?{onSigningOperationInteractionEvent:r.onSigningOperationInteractionEvent}:{},...r?.onNearTransactionContextReady?{onNearTransactionContextReady:r.onNearTransactionContextReady}:{}});break;case Y.SIGN_INTENT_DIGEST:await fA(e,a,i,t);break;default:mA(a)}}catch(e){console.error(`[UserConfirm][Host] handler failed`,e),yl(i,{requestId:a.requestId,intentDigest:Pl(a),confirmed:!1,error:L(e)||`Secure confirmation failed`})}}function mA(e){throw Error(`Unsupported secure confirmation request`)}function hA(e){let t={signingKind:`transaction`,walletId:e.params.walletId,txSigningRequests:e.txSigningRequests,intentDigest:e.intentDigest,displayModel:e.displayModel,rpcCall:e.params.rpcCall,nearPublicKeyStr:e.params.nearPublicKeyStr,nearFundingRequest:e.params.nearFundingRequest,signingOperationStateKind:e.params.signingOperationStateKind};switch(e.params.signingAuthPlan.kind){case Qd.WarmSession:return{...t,signingAuthPlan:e.params.signingAuthPlan};case Qd.ActiveWalletAuthority:return{...t,signingAuthPlan:e.params.signingAuthPlan};case Qd.PasskeyReauth:return{...t,signingAuthPlan:e.params.signingAuthPlan,...e.params.webauthnChallenge?{webauthnChallenge:e.params.webauthnChallenge}:{}};case Qd.EmailOtpReauth:if(!e.params.emailOtpPrompt)throw Error(`Email OTP NEAR confirmation requires a prompt`);return{...t,signingAuthPlan:e.params.signingAuthPlan,emailOtpPrompt:e.params.emailOtpPrompt};default:return gA(e.params.signingAuthPlan)}}function gA(e){throw Error(`Unsupported transaction signing auth params: ${String(e)}`)}function _A(e){let t={signingKind:`delegate`,walletId:e.params.walletId,txSigningRequests:e.txSigningRequests,intentDigest:e.intentDigest,displayModel:e.displayModel,rpcCall:e.params.rpcCall,...e.params.nearPublicKeyStr?{nearPublicKeyStr:e.params.nearPublicKeyStr}:{}};switch(e.params.signingAuthPlan.kind){case Qd.WarmSession:return{...t,signingAuthPlan:e.params.signingAuthPlan};case Qd.ActiveWalletAuthority:return{...t,signingAuthPlan:e.params.signingAuthPlan};case Qd.PasskeyReauth:return{...t,signingAuthPlan:e.params.signingAuthPlan,...e.params.webauthnChallenge?{webauthnChallenge:e.params.webauthnChallenge}:{}};case Qd.EmailOtpReauth:{let n=e.params.signingAuthPlan.emailOtpPrompt;if(!n)throw Error(`Email OTP delegate confirmation requires a prompt`);return{...t,signingAuthPlan:e.params.signingAuthPlan,emailOtpPrompt:n}}default:return gA(e.params.signingAuthPlan)}}function vA(e){let t=String(e||``).trim();return!t||t===`pending-intent-digest`?``:t}function yA(e){return String(e||``).trim()||Jd}function bA(e){if(!e)throw Error(`[SigningConfirmation] passkey intent signing requires webauthnChallenge`);return e}function xA(e){return e.signingAuthPlan.kind===Qd.PasskeyReauth?{signingSubject:e.signingSubject,challengeB64u:e.challengeB64u,...e.displayModel?{displayModel:e.displayModel}:{},webauthnChallenge:bA(e.webauthnChallenge),signingAuthPlan:e.signingAuthPlan}:{signingSubject:e.signingSubject,challengeB64u:e.challengeB64u,...e.displayModel?{displayModel:e.displayModel}:{},signingAuthPlan:e.signingAuthPlan,...e.webauthnChallenge?{webauthnChallenge:e.webauthnChallenge}:{},...e.emailOtpPrompt?{emailOtpPrompt:e.emailOtpPrompt}:{}}}function SA(e){try{return Bd({txSigningRequests:e.txSigningRequests,intentDigest:e.intentDigest||``,signerAccount:e.signerAccountId,title:e.title,subtitle:e.body})}catch{return{chain:`near`,...e.intentDigest?{intentDigest:e.intentDigest}:{},signerAccount:e.signerAccountId,...e.title==null?{}:{title:e.title},...e.body==null?{}:{subtitle:e.body},operations:[]}}}async function CA(e){let{sessionId:t}=e,n=wA(e.ctx),r,i;switch(e.kind){case`transaction`:{let n=e.txSigningRequests,a=n.map(e=>({receiverId:e.receiverId,actions:e.actions.map(al)})),o={receiverId:n[0]?.receiverId,totalAmount:TA(n),type:`transaction`,...e.title==null?{}:{title:e.title},...e.body==null?{}:{body:e.body}};r=await cl(a);let s={...o,intentDigest:r},c=SA({txSigningRequests:n,intentDigest:r,signerAccountId:e.rpcCall.nearAccountId,title:s.title,body:s.body});i={requestId:t,type:Y.SIGN_TRANSACTION,summary:s,payload:hA({params:e,txSigningRequests:n,intentDigest:r,displayModel:c}),confirmationConfig:e.confirmationConfigOverride,intentDigest:r};break}case`delegate`:{let n=[{receiverId:e.delegate.receiverId,actions:e.delegate.actions}];r=await cl(n.map(e=>({receiverId:e.receiverId,actions:e.actions.map(al)})));let a={intentDigest:r,receiverId:n[0]?.receiverId,totalAmount:TA(n),type:`delegateAction`,...e.title==null?{}:{title:e.title},...e.body==null?{}:{body:e.body},delegate:{senderId:e.delegate.senderId,receiverId:e.delegate.receiverId,nonce:String(e.delegate.nonce),maxBlockHeight:String(e.delegate.maxBlockHeight)}},o=SA({txSigningRequests:n,intentDigest:r,signerAccountId:e.nearAccountId,title:a.title,body:a.body});i={requestId:t,type:Y.SIGN_TRANSACTION,summary:a,payload:_A({params:e,txSigningRequests:n,intentDigest:r,displayModel:o}),confirmationConfig:e.confirmationConfigOverride,intentDigest:r};break}case`nep413`:{r=`${e.nearAccountId}:${e.recipient}:${e.message}`;let n=Ud({signerAccount:e.nearAccountId,recipient:e.recipient,message:e.message,intentDigest:r,title:e.title,subtitle:e.body}),a={intentDigest:r,method:`NEP-413`,receiverId:e.recipient,...e.title==null?{}:{title:e.title},...e.body==null?{}:{body:e.body}};i={requestId:t,type:Y.SIGN_NEP413_MESSAGE,summary:a,payload:{walletId:e.walletId,nearAccountId:e.nearAccountId,...e.nearPublicKeyStr?{nearPublicKeyStr:e.nearPublicKeyStr}:{},message:e.message,recipient:e.recipient,displayModel:n,...e.webauthnChallenge?{webauthnChallenge:e.webauthnChallenge}:{},signingAuthPlan:e.signingAuthPlan,...e.emailOtpPrompt?{emailOtpPrompt:e.emailOtpPrompt}:{}},confirmationConfig:e.confirmationConfigOverride,intentDigest:r};break}case`intentDigest`:{let n=vA(e.intentDigest);r=n;let a=yA(e.challengeB64u),o=e.signingSubject,s=e.displayModel,c={...n?{intentDigest:n}:{},...e.title==null?{}:{title:e.title},...e.body==null?{}:{body:e.body}};i={requestId:t,type:Y.SIGN_INTENT_DIGEST,summary:c,payload:xA({signingSubject:o,challengeB64u:a,displayModel:s,webauthnChallenge:e.webauthnChallenge,signingAuthPlan:e.signingAuthPlan,...e.emailOtpPrompt?{emailOtpPrompt:e.emailOtpPrompt}:{}}),confirmationConfig:e.confirmationConfigOverride,...n?{intentDigest:n}:{}};break}default:throw Error(`Unsupported signing confirmation kind`)}e.confirmationReadiness&&Bk({requestId:t,readiness:e.confirmationReadiness});let a=await n(i,{onProgress:e.onProgress,...e.kind===`transaction`?{onSigningOperationInteractionEvent:e.onSigningOperationInteractionEvent}:{},...e.chain===`near`&&e.kind===`transaction`&&e.onNearTransactionContextReady?{onNearTransactionContextReady:e.onNearTransactionContextReady}:{}}).finally(()=>{Hk(t)});if(!a?.confirmed)throw a?.walletSessionFailure?new Uu({failure:a.walletSessionFailure,message:`Wallet Session expired while signing confirmation was open`}):Error(a?.error||`User rejected signing request`);if(e.kind===`intentDigest`)return{sessionId:t,intentDigest:a.intentDigest||r,credential:a.credential,otpCode:a.otpCode,emailOtpChallengeId:a.emailOtpChallengeId};if(e.kind===`delegate`||e.kind===`nep413`)return{sessionId:t,intentDigest:a.intentDigest||r,credential:a.credential,operationStepUpPreparation:a.operationStepUpPreparation,otpCode:a.otpCode,emailOtpChallengeId:a.emailOtpChallengeId};if(!a.nearTransactionReadiness)throw Error(`Missing explicit NEAR transaction readiness from confirmation flow`);return{sessionId:t,readiness:a.nearTransactionReadiness,intentDigest:a.intentDigest||r,credential:a.credential,operationStepUpPreparation:a.operationStepUpPreparation,otpCode:a.otpCode,emailOtpChallengeId:a.emailOtpChallengeId}}function wA(e){return e.touchConfirm.requestUserConfirmation.bind(e.touchConfirm)}function TA(e){try{let t=BigInt(0);for(let n of e)for(let e of n.actions)switch(e.action_type){case sl.Transfer:t+=BigInt(e.deposit||`0`);break;case sl.FunctionCall:t+=BigInt(e.deposit||`0`);break;case sl.Stake:t+=BigInt(e.stake||`0`);break;default:break}return t>BigInt(0)?t.toString():void 0}catch{return}}async function EA({ctx:e,surface:t,walletId:n,nearAccountId:r,signerSlot:i,confirmerText:a,confirmationConfig:o,challengeB64u:s,registrationOptions:c}){let l=DA({walletId:n,nearAccountId:r,signerSlot:i,confirmerText:a,confirmationConfig:o,challengeB64u:s,registrationOptions:c});ml(l);let u=await kA({ctx:e,surface:t,request:l,confirmationConfig:Lk(e,l),transactionSummary:OA(l),theme:je(e.getTheme?.())??`dark`});return jA({requestId:l.requestId,decision:u})}function DA({walletId:e,nearAccountId:t,signerSlot:n,confirmerText:r,confirmationConfig:i,challengeB64u:a,registrationOptions:o}){let s=Pe(`register`,32,`registration credential confirmation IDs`),c=r?.title,l=r?.body,u=String(e||``).trim(),d=String(t||``).trim();if(!u)throw Error(`Registration credential confirmation requires walletId`);return o?{requestId:s,type:Y.REGISTER_ACCOUNT,summary:{walletId:u,signerSlot:n,...c==null?{}:{title:c},...l==null?{}:{body:l}},payload:{walletId:u,walletAddAuthMethodRegistration:o},confirmationConfig:i,intentDigest:`register:${u}:${o.challengeId}`}:{requestId:s,type:Y.REGISTER_ACCOUNT,summary:{walletId:u,...d?{nearAccountId:d}:{},signerSlot:n,...c==null?{}:{title:c},...l==null?{}:{body:l}},payload:{walletId:u,...d?{nearAccountId:d}:{},signerSlot:n,...a?{webauthnChallenge:{kind:`intent_digest`,challengeB64u:a}}:{}},confirmationConfig:i,intentDigest:`register:${u}:${n}`}}function OA(e){let t=El(e.summary),n=Pl(e);return{...t,...n?{intentDigest:n}:{}}}async function kA({ctx:e,surface:t,request:n,confirmationConfig:r,transactionSummary:i,theme:a}){let o,s,c=!1,l=new Promise((e,t)=>{o=e,s=t}),u=vf(e,n,{postMessage:e=>{let t=AA(e,n.requestId);if(t.ok){o(t.value);return}s(Error(t.message))}},{confirmationConfig:r,transactionSummary:i,theme:a,surface:t}).then(()=>{c||s(Error(`Registration confirmation completed without a decision`))},e=>{s(Error(L(e)||`Registration confirmation failed`))}),d=await l;return c=!0,await u,d}function AA(e,t){if(!O(e))return{ok:!1,message:`Registration confirmation returned a malformed response`};let n=e;if(n.type!==df.USER_PASSKEY_CONFIRM_RESPONSE)return{ok:!1,message:`Registration confirmation returned an unexpected response type`};if((ee(n.requestId)?n.requestId.trim():``)!==t)return{ok:!1,message:`Registration confirmation response requestId mismatch`};if(!O(n.data))return{ok:!1,message:`Registration confirmation returned missing decision data`};let r=n.data,i=ee(r.requestId)?r.requestId.trim():``;return i===t?oe(r.confirmed)?{ok:!0,value:{requestId:i,confirmed:r.confirmed,...ee(r.intentDigest)?{intentDigest:r.intentDigest}:{},...r.credential?{credential:r.credential}:{},...r.transactionContext?{transactionContext:r.transactionContext}:{},...r.registrationDiagnostics?{registrationDiagnostics:r.registrationDiagnostics}:{},...ee(r.error)?{error:r.error}:{}}}:{ok:!1,message:`Registration confirmation returned invalid decision state`}:{ok:!1,message:`Registration confirmation decision requestId mismatch`}}function jA({requestId:e,decision:t}){if(!t.confirmed)throw Error(t.error||`User rejected registration request`);if(!t.credential)throw Error(`Missing credential from registration confirmation`);return Hd({confirmed:t.confirmed,requestId:e,intentDigest:t.intentDigest||``,credential:t.credential,transactionContext:t.transactionContext,registrationDiagnostics:t.registrationDiagnostics,error:t.error})}function MA(e){return Math.max(0,Math.round(performance.now()-e))}function NA(e){throw Error(`Unexpected UI confirmation state: ${String(e)}`)}function PA(e){return typeof e==`object`&&!!e}function FA(e){if(!PA(e)||e.type!==df.PROMPT_USER_CONFIRM_IN_JS_MAIN_THREAD)return null;let t=typeof e.requestId==`string`?e.requestId.trim():``,n=typeof e.channelToken==`string`?e.channelToken.trim():``;if(!t||!n||!PA(e.data)||e.data.kind!==`pending_request`||`request`in e.data)return null;let r=typeof e.data.requestId==`string`?e.data.requestId.trim():``,i=typeof e.data.requestToken==`string`?e.data.requestToken.trim():``;return!r||r!==t||!i?null:{type:df.PROMPT_USER_CONFIRM_IN_JS_MAIN_THREAD,requestId:t,channelToken:n,data:{kind:`pending_request`,requestId:t,requestToken:i}}}function IA(e){if(!PA(e))return null;let t=typeof e.requestId==`string`?e.requestId.trim():``,n=typeof e.step==`number`?e.step:NaN,r=typeof e.phase==`string`?e.phase:``,i=e.status;return!t||!Number.isFinite(n)||!r||i!==`running`&&i!==`succeeded`&&i!==`failed`?null:{requestId:t,step:n,phase:r,status:i,...typeof e.message==`string`?{message:e.message}:{},...`data`in e?{data:e.data}:{}}}var LA=class{constructor(e,t){this.worker=null,this.initializationPromise=null,this.messageId=0,this.pendingWorkerRequests=new Map,this.userConfirmProgressListeners=new Map,this.pendingConfirmRequests=new Map,this.boundHandleWorkerMessage=this.handleWorkerMessage.bind(this),this.boundHandleWorkerError=this.handleWorkerError.bind(this),this.registrationPreparationModalState={kind:`closed`,generation:0},this.transactionPreparationModalState={kind:`closed`,generation:0},this.config={workerUrl:kk.RUNTIME.TOUCH_CONFIRM_WORKER,workerTimeout:6e4,debug:!1,...e},this.context={...t}}getContext(){return this.context}async requestUserConfirmation(e,t){let n=typeof e?.requestId==`string`?e.requestId.trim():``;if(!n)throw Error(`Invalid secure confirmation request: missing requestId`);if(this.pendingConfirmRequests.has(n))throw Error(`Duplicate secure confirmation request id: ${n}`);let r=this.generateMessageId();this.pendingConfirmRequests.set(n,{kind:`awaiting_decision`,context:{...this.context},request:e,requestToken:r,...t?.onSigningOperationInteractionEvent?{onSigningOperationInteractionEvent:t.onSigningOperationInteractionEvent}:{},...t?.onNearTransactionContextReady?{onNearTransactionContextReady:t.onNearTransactionContextReady}:{}});try{let e=performance.now();await this.ensureWorkerReady(!1);let i=MA(e);t?.onProgress&&this.userConfirmProgressListeners.set(n,t.onProgress);let a=performance.now(),o=await this.sendMessage({type:`SECURE_CONFIRM_REQUEST`,id:r,payload:{requestId:n}}),s=MA(a),c=performance.now();if(!o?.success)throw Error(String(o?.error||`Secure confirmation request failed`));let l=this.pendingConfirmRequests.get(n);if(!l||l.kind!==`decided`)throw Error(`Secure confirmation failed: missing host decision`);let u=l.decision,d=MA(c);return u.registrationDiagnostics?.kind===`registration_confirmation_diagnostics_v1`?{...u,registrationDiagnostics:{...u.registrationDiagnostics,workerReadyMs:i,workerRequestRoundTripMs:s,workerResponseValidationMs:d}}:u}finally{this.userConfirmProgressListeners.delete(n),this.pendingConfirmRequests.delete(n)}}async orchestrateSigningConfirmation(e){return CA(e)}async openTransactionPreparationModal(e){if(!String(e.walletLabel||``).trim())throw Error(`Transaction preparation modal requires a wallet label`);this.closeTransactionPreparationModal();let t=this.context.userPreferencesManager.getConfirmationConfig(),n=Object.fromEntries(Object.entries(e.confirmationConfigOverride||{}).filter(([,e])=>e!=null)),r=ul({...t,...n});if(r.kind===`silent`)return;let i=String(this.context.touchIdPrompt.getRpId()||``).trim(),a=this.transactionPreparationModalState.generation+1;this.transactionPreparationModalState={kind:`opening`,generation:a};let o=await Dl({ctx:this.getContext(),summary:{title:`Review transaction`},...e.chain===`near`?{txSigningRequests:e.txSigningRequests}:{},model:e.model,securityContext:i?{rpId:i}:void 0,loading:!1,theme:this.context.getTheme?.()??`dark`,uiMode:r.uiMode}),s=this.transactionPreparationModalState;if(s.kind!==`opening`||s.generation!==a){o.close(!1);return}this.transactionPreparationModalState={kind:`open`,generation:a,handle:o},o.onCancel?.(this.handleTransactionPreparationCancel.bind(this,a,o))}handleTransactionPreparationCancel(e,t){let n=this.transactionPreparationModalState;n.kind!==`open`||n.generation!==e||n.handle!==t||(this.transactionPreparationModalState={kind:`cancelled`,generation:e},t.close(!1))}closeTransactionPreparationModal(){let e=this.transactionPreparationModalState;this.transactionPreparationModalState={kind:`closed`,generation:e.generation},e.kind===`open`&&e.handle.close(!1)}takeTransactionConfirmationSurface(){let e=this.transactionPreparationModalState;switch(e.kind){case`closed`:return{kind:`mount_new`};case`opening`:throw Error(`Transaction confirmation started before its preparation modal opened`);case`cancelled`:return this.transactionPreparationModalState={kind:`closed`,generation:e.generation},{kind:`preparation_cancelled`};case`open`:return this.transactionPreparationModalState={kind:`closed`,generation:e.generation},{kind:`reuse_mounted`,handle:e.handle};default:return NA(e)}}async requestRegistrationCredentialConfirmation(e){let t=this.takeRegistrationConfirmationSurface();try{return await EA({ctx:this.getContext(),surface:t,walletId:e.walletId,nearAccountId:e.nearAccountId,signerSlot:e.signerSlot,confirmerText:e.confirmerText,confirmationConfig:e.confirmationConfigOverride,challengeB64u:e.challengeB64u,registrationOptions:e.registrationOptions})}catch(e){throw t.kind===`reuse_mounted`&&t.handle.close(!1),e}}takeRegistrationConfirmationSurface(){let e=this.registrationPreparationModalState;switch(e.kind){case`closed`:return{kind:`mount_new`};case`opening`:throw Error(`Registration confirmation started before its preparation modal opened`);case`open`:return this.registrationPreparationModalState={kind:`closed`,generation:e.generation},{kind:`reuse_mounted`,handle:e.handle};default:return NA(e)}}async openRegistrationPreparationModal(e){let t=String(e.walletLabel||``).trim();if(!t)throw Error(`Registration preparation modal requires a wallet label`);if(!Number.isInteger(e.signerSlot)||e.signerSlot<1)throw Error(`Registration preparation modal requires a positive signer slot`);let n=String(this.context.touchIdPrompt.getRpId()||``).trim();if(!n)throw Error(`Registration preparation modal requires an RP ID`);this.closeRegistrationPreparationModal();let r=this.registrationPreparationModalState.generation+1;this.registrationPreparationModalState={kind:`opening`,generation:r};let i=await Dl({ctx:this.getContext(),summary:{title:`Create your passkey`,body:`Preparing secure registration…`},securityContext:{rpId:n,passkeyRegistration:{kind:`passkey_registration_confirm_display_v1`,intendedUserName:t,accountId:t,rpId:n,signerSlot:e.signerSlot}},loading:!0,theme:this.context.getTheme?.()??`dark`,uiMode:`modal`}),a=this.registrationPreparationModalState;if(a.kind!==`opening`||a.generation!==r){i.close(!1);return}this.registrationPreparationModalState={kind:`open`,generation:r,handle:i}}closeRegistrationPreparationModal(){let e=this.registrationPreparationModalState;this.registrationPreparationModalState={kind:`closed`,generation:e.generation},e.kind===`open`&&e.handle.close(!1)}setWorkerBaseOrigin(e){this.workerBaseOrigin=e}async ensureWorkerReady(e=!1){if(this.initializationPromise?await this.initializationPromise:this.worker||await this.initialize(),!this.worker)throw Error(`UserConfirm worker failed to initialize`);if(e)try{if(!(await this.sendMessage({type:`PING`,id:this.generateMessageId()},3e3)).success)throw Error(`UserConfirm worker failed health check`)}catch(e){throw console.error(`[UserConfirmWorker] health check failed:`,e),Error(`UserConfirm worker failed health check`)}}async initialize(){if(this.initializationPromise)return this.initializationPromise;if(!this.worker)return this.initializationPromise=this.createUserConfirmWorker().catch(e=>{throw console.error(`[UserConfirmWorker] initialization failed:`,e),console.error(`[UserConfirmWorker] error details:`,{message:e.message,stack:e.stack,name:e.name}),this.initializationPromise=null,e}),await this.initializationPromise}async createUserConfirmWorker(){try{if(this.worker){let e=this.worker;this.detachWorkerRouter(e),e.terminate(),this.worker=null,this.rejectPendingWorkerRequestsForWorker(e,Error(`UserConfirm worker was restarted`))}let e=bf(this.config.workerUrl||kk.RUNTIME.TOUCH_CONFIRM_WORKER,{worker:`touchConfirm`,baseOrigin:this.workerBaseOrigin});this.config.debug&&console.debug(`[UserConfirmWorker] Worker URL:`,e);let t=new Worker(e,{type:`module`,name:`Web3AuthnSecureConfirmWorker`});this.attachWorkerRouter(t),this.worker=t,await this.testWebWorkerCommunication()}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`UserConfirm worker initialization failed: ${t}`)}}attachWorkerRouter(e){e.addEventListener(`message`,this.boundHandleWorkerMessage),e.addEventListener(`error`,this.boundHandleWorkerError)}detachWorkerRouter(e){e.removeEventListener(`message`,this.boundHandleWorkerMessage),e.removeEventListener(`error`,this.boundHandleWorkerError)}isFromActiveWorker(e){return e.currentTarget===this.worker&&e.target===this.worker}normalizePromptEnvelope(e){let t=FA(e);if(!t)return null;let n=this.pendingConfirmRequests.get(t.requestId);return!n||n.kind!==`awaiting_decision`||n.requestToken!==t.data.requestToken?null:{type:t.type,requestId:t.requestId,channelToken:t.channelToken,data:n.request}}capturePendingConfirmationDecision(e,t){let n=e.request.requestId.trim();if(!n||t.requestId.trim()!==n)return;let r=this.pendingConfirmRequests.get(n);r!==e||r.kind!==`awaiting_decision`||this.pendingConfirmRequests.set(n,{kind:`decided`,request:r.request,requestToken:r.requestToken,decision:t})}postPromptEnvelopeError(e,t,n,r){e.postMessage({type:df.USER_PASSKEY_CONFIRM_RESPONSE,requestId:t,channelToken:n,data:{requestId:t,confirmed:!1,error:r}})}dispatchUserConfirmProgress(e){let t=IA(e.data),n=typeof e.requestId==`string`&&e.requestId.trim()?e.requestId.trim():typeof t?.requestId==`string`?t.requestId.trim():``;if(!n||!t)return;let r=this.userConfirmProgressListeners.get(n);if(r)try{r(t)}catch(e){console.error(`[UserConfirmWorker] progress listener failed:`,e)}}handleWorkerMessage(e){if(!this.isFromActiveWorker(e))return;let t=e.data;if(PA(t)&&t.type===df.USER_PASSKEY_CONFIRM_PROGRESS){this.dispatchUserConfirmProgress(t);return}let n=this.normalizePromptEnvelope(t);if(n){let t=this.pendingConfirmRequests.get(n.requestId);if(!t||t.kind!==`awaiting_decision`)return;let r=t.context,i=e.currentTarget;pA(r,n,i,{signingSurface:n.data.type===Y.SIGN_TRANSACTION||n.data.type===Y.SIGN_NEP413_MESSAGE||n.data.type===Y.SIGN_INTENT_DIGEST?this.takeTransactionConfirmationSurface():{kind:`mount_new`},onDecision:this.capturePendingConfirmationDecision.bind(this,t),...t.onSigningOperationInteractionEvent?{onSigningOperationInteractionEvent:t.onSigningOperationInteractionEvent}:{},...t.onNearTransactionContextReady?{onNearTransactionContextReady:t.onNearTransactionContextReady}:{}}).catch(e=>{console.error(`[UserConfirmWorker] failed to handle confirmation prompt:`,e),this.postPromptEnvelopeError(i,n.requestId,n.channelToken,`Secure confirmation failed`)});return}if(PA(t)&&t.type===df.PROMPT_USER_CONFIRM_IN_JS_MAIN_THREAD){console.error(`[UserConfirmWorker] rejected malformed prompt envelope`);return}let r=Xl(t);if(!r)return;let i=r.id||``;if(!i)return;let a=e.currentTarget;this.resolvePendingWorkerRequest(a,i,r)}handleWorkerError(e){if(!this.isFromActiveWorker(e))return;let t=e,n=String(t?.message||`UserConfirm worker encountered an unknown error`),r=Error(`UserConfirm worker failed: ${n}`);console.error(`[UserConfirmWorker] error:`,t);let i=e.currentTarget;i===this.worker&&this.worker&&(this.detachWorkerRouter(this.worker),this.worker.terminate(),this.worker=null,this.initializationPromise=null),this.rejectPendingWorkerRequestsForWorker(i,r)}resolvePendingWorkerRequest(e,t,n){let r=this.pendingWorkerRequests.get(t);!r||r.worker!==e||(clearTimeout(r.timeoutId),r.settle?.(),this.pendingWorkerRequests.delete(t),r.resolve(n))}rejectPendingWorkerRequest(e,t){let n=this.pendingWorkerRequests.get(e);n&&(clearTimeout(n.timeoutId),n.settle?.(),this.pendingWorkerRequests.delete(e),n.reject(t))}rejectPendingWorkerRequestsForWorker(e,t){for(let n of this.pendingWorkerRequests.values())n.worker===e&&(this.pendingWorkerRequests.delete(n.id),clearTimeout(n.timeoutId),n.settle?.(),n.reject(t))}async sendMessage(e,t,n){return new Promise((r,i)=>{let a=this.worker;if(!a){i(Error(`UserConfirm worker not available`));return}let o=()=>Error(`UserConfirm worker request aborted for message type: ${e.type}`);if(n?.aborted){i(o());return}let s=typeof e.id==`string`&&e.id.trim().length?e.id.trim():this.generateMessageId();if(this.pendingWorkerRequests.has(s)){i(Error(`Duplicate UserConfirm worker request id: ${s}`));return}let c=t??this.config.workerTimeout??6e4,l=setTimeout(()=>{this.rejectPendingWorkerRequest(s,Error(`UserConfirm worker communication timeout (${c}ms) for message type: ${e.type}`))},c),u;if(n){let e=()=>{this.rejectPendingWorkerRequest(s,o())};n.addEventListener(`abort`,e,{once:!0}),u=()=>{n.removeEventListener(`abort`,e)}}this.pendingWorkerRequests.set(s,{id:s,messageType:e.type,worker:a,timeoutId:l,settle:u,resolve:r,reject:i});try{a.postMessage({...e,id:s})}catch(e){let t=e instanceof Error?e:Error(String(e));this.rejectPendingWorkerRequest(s,t)}})}generateMessageId(){return`sc_${Date.now()}_${++this.messageId}`}async testWebWorkerCommunication(){try{let e=await this.sendMessage({type:`PING`,id:this.generateMessageId()},15e3);if(!e.success)throw Error(`UserConfirm worker PING failed: ${e.error}`);return}catch(e){let t=e instanceof Error?e.message:String(e);throw console.warn(`[UserConfirmWorker] testWebWorkerCommunication failed:`,t),this.worker&&=(this.detachWorkerRouter(this.worker),this.worker.terminate(),null),e}}};function RA(e,t){return new LA(e,t)}function zA(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Invalid export confirmation: ${t} must be an object`);return e}function BA(e,t){if(typeof e!=`string`)throw Error(`Invalid export confirmation: ${t} must be a string`);return e}function VA(e,t){let n=BA(e,t);if(!n.trim()||n!==n.trim())throw Error(`Invalid export confirmation: ${t} must be a nonempty identity`);return n}function HA(e,t){return e===void 0?void 0:BA(e,t)}function UA(e,t){if(e===void 0||typeof e==`boolean`)return e;throw Error(`Invalid export confirmation: ${t} must be a boolean`)}function WA(e){let t=zA(e,`subject`);switch(t.kind){case`near_wallet`:if(t.walletId!==void 0)throw Error(`Invalid NEAR export subject`);return{kind:`near_wallet`,nearAccountId:VA(t.nearAccountId,`nearAccountId`)};case`evm_wallet`:if(t.nearAccountId!==void 0)throw Error(`Invalid EVM export subject`);return{kind:`evm_wallet`,walletId:VA(t.walletId,`walletId`)};default:throw Error(`Invalid export confirmation: unsupported subject`)}}function GA(e){let t=zA(e,`summary`),n=t.operation;if(n!==`Export Private Key`&&n!==`Export Recovery Key`)throw Error(`Invalid export confirmation: unsupported operation`);return{operation:n,accountId:VA(t.accountId,`summary.accountId`),publicKey:BA(t.publicKey,`summary.publicKey`),warning:BA(t.warning,`summary.warning`)}}function KA(e){let t=zA(e,`key`),n=t.scheme;if(n!==`ed25519`&&n!==`secp256k1`)throw Error(`Invalid export confirmation: unsupported key scheme`);return{scheme:n,label:BA(t.label,`key.label`),publicKey:BA(t.publicKey,`key.publicKey`),privateKey:BA(t.privateKey,`key.privateKey`),address:HA(t.address,`key.address`)}}function qA(e){if(e!==void 0){if(!Array.isArray(e))throw Error(`Invalid export confirmation: keys must be an array`);return e.map(KA)}}function JA(e){return BA(e,`guidance step`)}function YA(e){if(e===void 0)return;let t=zA(e,`guidance`);if(t.steps!==void 0&&!Array.isArray(t.steps))throw Error(`Invalid export confirmation: guidance steps must be an array`);return{title:BA(t.title,`guidance.title`),body:HA(t.body,`guidance.body`),steps:t.steps?.map(JA)}}function XA(e){if(e===void 0)return;let{uiMode:t,behavior:n,autoProceedDelay:r}=zA(e,`confirmationConfig`);if(t!==void 0&&t!==`none`&&t!==`modal`&&t!==`drawer`)throw Error(`Invalid export confirmation: unsupported UI mode`);if(n!==void 0&&n!==`skipClick`&&n!==`requireClick`)throw Error(`Invalid export confirmation: unsupported behavior`);if(r!==void 0&&(typeof r!=`number`||!Number.isFinite(r)))throw Error(`Invalid export confirmation: invalid autoProceedDelay`);return{uiMode:t,behavior:n,autoProceedDelay:r}}function ZA(e){let t=zA(e,`request`),n=zA(t.payload,`payload`);if(n.prfOutput!==void 0||n.prf_output!==void 0||n.wrapKeySeed!==void 0||n.wrapKeySalt!==void 0||n.prfKey!==void 0)throw Error(`Invalid export confirmation: forbidden signing secret`);let r=VA(t.requestId,`requestId`),i=GA(t.summary),a=WA(n.subject),o=BA(n.publicKey,`publicKey`),s=HA(t.intentDigest,`intentDigest`),c=XA(t.confirmationConfig);if(n.onLifecycle!==void 0)throw Error(`Invalid export confirmation: callbacks belong to the host`);switch(t.type){case Y.AUTHORIZE_KEY_EXPORT:return{type:Y.AUTHORIZE_KEY_EXPORT,requestId:r,summary:i,intentDigest:s,confirmationConfig:c,payload:{subject:a,publicKey:o,credentialIdB64u:VA(n.credentialIdB64u,`credentialIdB64u`),challengeB64u:HA(n.challengeB64u,`challengeB64u`)}};case Y.SHOW_SECURE_PRIVATE_KEY_UI:{let{variant:e,theme:t}=n;if(e!==void 0&&e!==`drawer`&&e!==`modal`)throw Error(`Invalid export confirmation: unsupported variant`);if(t!==void 0&&t!==`dark`&&t!==`light`)throw Error(`Invalid export confirmation: unsupported theme`);return{type:Y.SHOW_SECURE_PRIVATE_KEY_UI,requestId:r,summary:i,intentDigest:s,confirmationConfig:c,payload:{subject:a,publicKey:o,viewerSessionId:HA(n.viewerSessionId,`viewerSessionId`),privateKey:HA(n.privateKey,`privateKey`),keys:qA(n.keys),guidance:YA(n.guidance),variant:e,theme:t,loading:UA(n.loading,`loading`),errorMessage:HA(n.errorMessage,`errorMessage`)}}}default:throw Error(`Invalid export confirmation: unsupported request type`)}}const QA=6e4;function $A(e){return typeof e==`object`&&!!e}function ej(e){if(!$A(e))return null;let t=e.kind;if(typeof e.accountId!=`string`)return null;let n=Array.isArray(e.exportedSchemes)?e.exportedSchemes:null;if(!n)return null;let r=n.filter(e=>e===`ed25519`||e===`secp256k1`);return r.length===n.length?t===`completed`?`error`in e?null:{kind:t,accountId:e.accountId,exportedSchemes:r}:t!==`cancelled`&&t!==`failed`||r.length!==0||typeof e.error!=`string`?null:{kind:t,accountId:e.accountId,exportedSchemes:[],error:e.error}:null}var tj=class{constructor(e){this.context=e,this.worker=null,this.initializationPromise=null,this.messageId=0,this.pendingRequests=new Map,this.viewerLifecycleBySessionId=new Map,this.boundHandleWorkerMessage=this.handleWorkerMessage.bind(this),this.boundHandleWorkerError=this.handleWorkerError.bind(this)}setWorkerBaseOrigin(e){this.workerBaseOrigin=e}async exportPrivateKeysWithUi(e,t){await this.ensureWorkerReady();let n=`viewerSessionId`in e?String(e.viewerSessionId||``).trim():``;n&&t?.onViewerLifecycle&&this.viewerLifecycleBySessionId.set(n,t.onViewerLifecycle);try{let t=await this.sendMessage({type:`EXPORT_PRIVATE_KEYS_WITH_UI`,id:this.generateMessageId(),payload:e});if(!t.success)throw Error(String(t.error||`Export private keys request failed`));let n=ej(t.data);if(!n)throw Error(`Export private keys request failed: invalid worker response payload`);return n}finally{n&&this.viewerLifecycleBySessionId.delete(n)}}async ensureWorkerReady(){if(!this.worker&&(this.initializationPromise||=this.createWorker().catch(e=>{throw this.initializationPromise=null,e}),await this.initializationPromise,!this.worker))throw Error(`Passkey MPC export worker failed to initialize`)}async createWorker(){let e=bf(kk.RUNTIME.PASSKEY_MPC_EXPORT_WORKER,{worker:`passkeyMpcExport`,baseOrigin:this.workerBaseOrigin}),t=new Worker(e,{type:`module`,name:`PasskeyMpcExportWorker`});t.addEventListener(`message`,this.boundHandleWorkerMessage),t.addEventListener(`error`,this.boundHandleWorkerError),this.worker=t}normalizePromptEnvelope(e){if(!$A(e)||e.type!==df.PROMPT_USER_CONFIRM_IN_JS_MAIN_THREAD||!$A(e.data)||e.data.kind!==`export_request`)return null;let t;try{t=ZA(e.data.request)}catch{return null}let n=typeof e.requestId==`string`?e.requestId.trim():``,r=typeof t.requestId==`string`?t.requestId.trim():``,i=typeof e.channelToken==`string`?e.channelToken.trim():``;return!n||n!==r||!i?null:{type:df.PROMPT_USER_CONFIRM_IN_JS_MAIN_THREAD,requestId:n,channelToken:i,data:this.restoreViewerLifecycle(t)}}restoreViewerLifecycle(e){if(e.type!==Y.SHOW_SECURE_PRIVATE_KEY_UI)return e;let t=e.payload.viewerSessionId;if(!t)return e;let n=this.viewerLifecycleBySessionId.get(t);return n?{type:e.type,requestId:e.requestId,summary:e.summary,intentDigest:e.intentDigest,confirmationConfig:e.confirmationConfig,payload:{...e.payload,onLifecycle:n}}:e}postPromptEnvelopeError(e,t,n){e.postMessage({type:df.USER_PASSKEY_CONFIRM_RESPONSE,requestId:t,channelToken:n,data:{requestId:t,confirmed:!1,error:`Secure confirmation failed`}})}handleWorkerMessage(e){if(e.currentTarget!==this.worker||e.target!==this.worker)return;let t=this.normalizePromptEnvelope(e.data);if(t){let n=e.currentTarget;pA(this.context,t,n).catch(e=>{console.error(`[PasskeyMpcExportWorker] failed to handle export prompt:`,e),this.postPromptEnvelopeError(n,t.requestId,t.channelToken||``)});return}if($A(e.data)&&e.data.type===df.PROMPT_USER_CONFIRM_IN_JS_MAIN_THREAD){console.error(`[PasskeyMpcExportWorker] rejected malformed prompt envelope`);return}let n=Xl(e.data);if(!n)return;let r=n.id||``;if(!r)return;let i=this.pendingRequests.get(r);i&&(clearTimeout(i.timeoutId),this.pendingRequests.delete(r),i.resolve(n))}handleWorkerError(e){if(e.currentTarget!==this.worker||e.target!==this.worker)return;let t=e,n=Error(`Passkey MPC export worker failed: ${String(t.message||`unknown worker error`)}`),r=this.worker;r&&(r.removeEventListener(`message`,this.boundHandleWorkerMessage),r.removeEventListener(`error`,this.boundHandleWorkerError),r.terminate()),this.worker=null,this.initializationPromise=null;for(let e of this.pendingRequests.values())clearTimeout(e.timeoutId),e.reject(n);this.pendingRequests.clear()}sendMessage(e){return new Promise((t,n)=>{let r=this.worker;if(!r){n(Error(`Passkey MPC export worker not available`));return}let i=typeof e.id==`string`&&e.id.trim()?e.id.trim():this.generateMessageId();if(this.pendingRequests.has(i)){n(Error(`Duplicate Passkey MPC export request id: ${i}`));return}let a=setTimeout(()=>{let e=this.pendingRequests.get(i);e&&(this.pendingRequests.delete(i),e.reject(Error(`Passkey MPC export request timed out (${QA}ms)`)))},QA);this.pendingRequests.set(i,{id:i,timeoutId:a,resolve:t,reject:n});try{r.postMessage({...e,id:i})}catch(e){clearTimeout(a),this.pendingRequests.delete(i),n(e instanceof Error?e:Error(String(e)))}})}generateMessageId(){return`mpc_export_${Date.now()}_${++this.messageId}`}};function nj(e){return new tj(e)}function rj(e){if(e.purpose.curve===`ecdsa`)return e.purpose.thresholdSessionId;if(e.thresholdSessionId===void 0)throw Error(`Ed25519 warm material operation requires its protocol session id`);return e.thresholdSessionId}function ij(e){return e.curve===`ecdsa`?{thresholdSessionId:e.thresholdSessionId,chainTarget:e.chainTarget}:null}function $(e){return String(e??``).trim()||null}function aj(e){return Array.isArray(e)?e.map(e=>Math.floor(Number(e))).filter(e=>Number.isFinite(e)&&e>0):[]}function oj(e){try{return Ia(e)}catch{return null}}function sj(e){try{return co(e)}catch{return null}}function cj(e){switch(e){case`login`:case`registration`:case`manual-bootstrap`:case`email_otp`:return e;default:return null}}function lj(e){let t=cj(e);return t&&t!==`email_otp`?t:null}function uj(e){return e&&typeof e==`object`?e:null}function dj(e){return uj(e.thresholdSessionIds)||{}}function fj(e){let t=String(e||``).trim().toLowerCase();return/^0x[0-9a-f]{40}$/.test(t)?t:null}function pj(e){try{return Va(e)}catch{return null}}function mj(e){let t=$(e.rawSigningRootId),n=$(e.rawSigningRootVersion),r=null,i=null;if(e.runtimePolicyScope)try{let t=ke(e.runtimePolicyScope);r=$(t.signingRootId),i=$(t.signingRootVersion)}catch{}if(t&&r&&t!==r||n&&i&&n!==i)return null;let a=t||r,o=n||i;return a&&o?{signingRootId:a,signingRootVersion:o}:null}function hj(e){return!!($(e.signingRootId)||$(e.signingRootVersion))}function gj(e){return!!($(e.subjectId)||$(e.userId))}function _j(e){let t=dj(e);return{authMethod:e.authMethod,curve:e.curve,storeKey:e.storeKey,walletId:e.walletId||null,thresholdSessionIds:t,issuedAtMs:e.issuedAtMs,expiresAtMs:e.expiresAtMs,remainingUses:e.remainingUses,updatedAtMs:e.updatedAtMs,hasEcdsaRestore:!!e.ecdsaRestore}}function vj(e,t){return{kind:`rejected`,rejection:{kind:`rejected_sealed_recovery_record`,storeKey:$(e.storeKey),walletId:$(e.walletId),reason:t,safeSummary:_j(e)}}}function yj(e,t={}){let n=dj(e),r=uj(e.ecdsaRestore),i=$(e.storeKey),a=$(e.walletId),o=$(e.sealedSecretB64u),s=Math.floor(Number(e.issuedAtMs)||0),c=Math.floor(Number(e.expiresAtMs)||0),l=Math.floor(Number(e.remainingUses)||0),u=Math.floor(Number(e.updatedAtMs)||0);if(e.authMethod!==`passkey`&&e.authMethod!==`email_otp`||e.curve!==`ecdsa`)return vj(e,`unsupported_record`);if(!i||!a||!o)return vj(e,`missing_identity`);if(c<=0||u<=0||s<=0)return vj(e,`missing_restore_metadata`);if(gj(e))return vj(e,`invalid_identity`);if(!t.allowExpired&&c<=Date.now())return vj(e,`expired`);if(!t.allowExhausted&&e.authMethod!==`passkey`&&l<=0)return vj(e,`exhausted`);let d=$(n.ecdsa),f=r,p=Ve(f?.runtimePolicyScope),m=mj({runtimePolicyScope:p,rawSigningRootId:f?.signingRootId,rawSigningRootVersion:f?.signingRootVersion}),h=$(e.relayerUrl),g=e.authMethod===`passkey`?$(f?.rpId):null,_=e.authMethod===`passkey`?lj(f?.source):null,v=e.authMethod===`email_otp`&&cj(f?.source)===`email_otp`?`email_otp`:null,y=$(f?.credentialIdB64u),b=$(f?.providerSubjectId),x=$(f?.emailHashHex),S=$(f?.relayerKeyId),C=$(f?.keyHandle),w=$(f?.ecdsaThresholdKeyId),T=fj(f?.ethereumAddress),E=$(f?.thresholdEcdsaPublicKeyB64u),D=aj(f?.participantIds),O=oj(f?.routerAbEcdsaDerivationNormalSigning),ee=sj(f?.publicCapability),k=null;try{k=ls(f?.roleLocalMaterialRef)}catch{k=null}let A=$(f?.clientVerifyingShareB64u),j=e.authMethod===`passkey`?A:null;if(f?.sessionKind!=null||hj(e))return vj(e,`invalid_identity`);if(!d||!m)return vj(e,`missing_identity`);if(!f?.chainTarget)return vj(e,`wrong_chain_target`);let M;try{M=Mr(f.chainTarget)}catch{return vj(e,`wrong_chain_target`)}if(!h||e.authMethod===`passkey`&&!_||e.authMethod===`email_otp`&&!v||e.authMethod===`passkey`&&!g||e.authMethod===`passkey`&&!y||e.authMethod===`email_otp`&&(!b||!x)||!w||!S||!C||!T||!E||!p||!O||!ee||!D.length||!k||e.authMethod===`passkey`&&!j)return vj(e,`missing_restore_metadata`);let te=e.authMethod===`passkey`?pj({walletId:a,rpId:g,credentialIdB64u:y}):null,ne=no(f.authority),re=za(f.emailOtpAuthority),N=e.authMethod===`email_otp`&&ne&&re&&re.walletId===a&&re.factor.provider===f.provider&&re.factor.providerUserId===b&&re.verifier.emailHashHex===x?re:null;return e.authMethod===`passkey`&&!te||e.authMethod===`email_otp`&&!N?vj(e,`invalid_identity`):{kind:`accepted`,record:e.authMethod===`passkey`?{storeKey:i,walletId:a,authMethod:`passkey`,curve:`ecdsa`,thresholdSessionId:d,sealedSecretB64u:o,issuedAtMs:s,expiresAtMs:c,remainingUses:l,updatedAtMs:u,...$(e.keyVersion)?{keyVersion:$(e.keyVersion)}:{},...$(e.groupId)?{groupId:$(e.groupId)}:{},chainTarget:M,source:_,authority:te,signingRootId:m.signingRootId,signingRootVersion:m.signingRootVersion,keyHandle:C,ecdsaThresholdKeyId:w,ethereumAddress:T,thresholdEcdsaPublicKeyB64u:E,participantIds:D,relayerUrl:h,relayerKeyId:S,runtimePolicyScope:p,routerAbEcdsaDerivationNormalSigning:O,publicCapability:ee,clientVerifyingShareB64u:j,roleLocalMaterialRef:k}:{storeKey:i,walletId:a,authMethod:`email_otp`,curve:`ecdsa`,thresholdSessionId:d,sealedSecretB64u:o,issuedAtMs:s,expiresAtMs:c,remainingUses:l,updatedAtMs:u,...$(e.keyVersion)?{keyVersion:$(e.keyVersion)}:{},...$(e.groupId)?{groupId:$(e.groupId)}:{},chainTarget:M,source:`email_otp`,authority:ne,emailOtpAuthority:N,signingRootId:m.signingRootId,signingRootVersion:m.signingRootVersion,keyHandle:C,ecdsaThresholdKeyId:w,ethereumAddress:T,thresholdEcdsaPublicKeyB64u:E,participantIds:D,relayerUrl:h,relayerKeyId:S,runtimePolicyScope:p,routerAbEcdsaDerivationNormalSigning:O,publicCapability:ee,...A?{clientVerifyingShareB64u:A}:{},roleLocalMaterialRef:k}}}function bj(e,t){return String(e??``).trim()===String(t??``).trim()}function xj(e,t){return String(e??``).trim().toLowerCase()===String(t??``).trim().toLowerCase()}function Sj(e,t){return e.length===t.length?e.every((e,n)=>Number(e)===Number(t[n])):!1}function Cj(e,t){let n=[],r=t.signer;return bj(e.walletId,r.walletId)||n.push(`wallet_id`),Fr(e.chainTarget,r.chainTarget)||n.push(`chain_target`),bj(e.keyHandle,r.keyHandle)||n.push(`key_handle`),bj(e.ecdsaThresholdKeyId,r.key.ecdsaThresholdKeyId)||n.push(`ecdsa_threshold_key_id`),bj(e.signingRootId,r.key.signingRootId)||n.push(`signing_root_id`),bj(e.signingRootVersion,r.key.signingRootVersion)||n.push(`signing_root_version`),xj(e.ethereumAddress,r.key.thresholdOwnerAddress)||n.push(`threshold_owner_address`),Sj(e.participantIds,r.key.participantIds)||n.push(`participant_ids`),e.authMethod!==t.auth.kind&&n.push(`auth_method`),e.authMethod===`passkey`?t.auth.kind===`passkey`?(bj(e.authority.verifier.rpId,t.auth.rpId)||n.push(`rp_id`),bj(e.authority.factor.credentialIdB64u,t.auth.credentialIdB64u)||n.push(`credential_id`),n):(n.push(`passkey_auth_branch`),n):t.auth.kind===`email_otp`?(bj(e.emailOtpAuthority.factor.providerUserId,t.auth.providerSubjectId)||n.push(`provider_subject_id`),n):(n.push(`email_otp_auth_branch`),n)}function wj(e){console.warn(`[SigningSessionRestore] ECDSA restore identity mismatch`,JSON.stringify({reasons:e.reasons,record:{authMethod:e.record.authMethod,walletId:e.record.walletId,source:e.record.source,chainTarget:B(e.record.chainTarget),keyHandle:e.record.keyHandle,ecdsaThresholdKeyId:e.record.ecdsaThresholdKeyId,signingRootId:e.record.signingRootId,signingRootVersion:e.record.signingRootVersion,ethereumAddress:e.record.ethereumAddress,participantIds:e.record.participantIds},lane:{authMethod:e.lane.auth.kind,walletId:e.lane.signer.walletId,chainTarget:B(e.lane.signer.chainTarget),keyHandle:e.lane.signer.keyHandle,ecdsaThresholdKeyId:e.lane.signer.key.ecdsaThresholdKeyId,signingRootId:e.lane.signer.key.signingRootId,signingRootVersion:e.lane.signer.key.signingRootVersion,thresholdOwnerAddress:e.lane.signer.key.thresholdOwnerAddress,participantIds:e.lane.signer.key.participantIds}},null,2))}function Tj(e,t){if(t.authMethod!==e.authMethod||!Fr(t.chainTarget,e.chainTarget)||t.thresholdSessionId!==e.thresholdSessionId)return null;let n=e.materialRestoreIdentity.lane,r=Cj(t,n);return r.length>0?(wj({record:t,lane:n,reasons:r}),null):!bj(t.ecdsaThresholdKeyId,e.materialRestoreIdentity.ecdsaThresholdKeyId)||!bj(t.walletId,n.signer.walletId)||!bj(t.keyHandle,n.signer.keyHandle)||!b(t.roleLocalMaterialRef.materialActivation,n.signer.materialActivation)?null:{record:t,purpose:{walletId:e.walletId,authMethod:e.authMethod,curve:`ecdsa`,chainTarget:e.chainTarget,materialActivation:t.roleLocalMaterialRef.materialActivation,thresholdSessionId:t.thresholdSessionId,reason:e.reason}}}function Ej(e,t){let n=yj(t,{allowExpired:!1,allowExhausted:!1});if(n.kind===`rejected`)return{kind:`rejected`,rejection:n.rejection};let r=Tj(e,n.record);return r?{kind:`matched`,workItem:r}:{kind:`not_applicable`}}function Dj(e){return Fr(e.record.chainTarget,e.requestedChainTarget)?[{record:e.record,purpose:{walletId:e.walletId,authMethod:e.record.authMethod,curve:`ecdsa`,chainTarget:e.requestedChainTarget,materialActivation:e.record.roleLocalMaterialRef.materialActivation,thresholdSessionId:e.record.thresholdSessionId,reason:e.reason}}]:[]}function Oj(e){let t=yj(e.record);if(t.kind===`rejected`)return[{kind:`rejected`,rejection:t.rejection}];let n=Dj({walletId:e.walletId,record:t.record,reason:e.reason,requestedChainTarget:e.requestedChainTarget});return n.length?n.map(e=>({kind:`matched`,workItem:e})):[{kind:`not_applicable`}]}function kj(e){return e.kind===`matched`}function Aj(e,t){let n=B(e.chainTarget),r=`materialRestoreIdentity`in e?e.materialRestoreIdentity.lane.signer.materialActivation:e.materialActivation;return[e.walletId,e.authMethod,e.curve,n,e.reason,Ad(r),e.thresholdSessionId,t.thresholdSessionId,t.updatedAtMs,`restored`].join(`|`)}function jj(e,t){let n=B(e.chainTarget);return[e.walletId,e.authMethod,e.curve,n,Ad(e.materialActivation),e.thresholdSessionId,t.updatedAtMs].join(`|`)}function Mj(e){return{kind:`completed`,attempted:e.attempted,restored:e.restored,deferred:e.deferred}}function Nj(e){return e.map(({record:e,purpose:t})=>({authMethod:t.authMethod,curve:t.curve,chain:B(t.chainTarget),thresholdSessionId:t.thresholdSessionId,recordThresholdSessionId:e.thresholdSessionId,updatedAtMs:e.updatedAtMs}))}function Pj(){let e=new Set;return{hasSuccessfulRestore:(t,n)=>e.has(Aj(t,n)),rememberSuccessfulRestore:(t,n)=>{e.add(Aj(t,n))},clear:()=>{e.clear()}}}function Fj(){let e=new Set,t=new Map;return{hasCompleted:t=>e.has(String(t||``).trim()),rememberCompleted:t=>{let n=String(t||``).trim();n&&e.add(n)},getInFlight:e=>{let n=String(e||``).trim();return n?t.get(n):void 0},setInFlight:(e,n)=>{let r=String(e||``).trim();r&&t.set(r,n)},clearInFlight:e=>{let n=String(e||``).trim();n&&t.delete(n)},clear:()=>{e.clear(),t.clear()}}}async function Ij(e,t){let n=String(e.walletId||``).trim();if(!n)return Mj({attempted:0,restored:0,deferred:0});let r={...e,walletId:n},i;try{i=await t.listExactSealedSessionsForWallet({walletId:n,authMethod:r.authMethod,curve:`ecdsa`,chainTarget:r.chainTarget})}catch(e){return t.onListError?.({walletId:n,target:B(r.chainTarget),reason:r.reason,error:e}),Mj({attempted:0,restored:0,deferred:0})}let a=i.map(e=>Ej(r,e));for(let e of a)e.kind===`rejected`&&t.onRejectedRecord?.({walletId:n,rejection:e.rejection});let o=a.filter(kj).map(e=>e.workItem);if(!o.length)return Mj({attempted:0,restored:0,deferred:0});if(o.length>1)return{kind:`duplicate_records`,attempted:0,restored:0,deferred:0,duplicateCount:o.length,duplicateRecordSummaries:Nj(o)};let s=0,c=0,l=0;return await Promise.all(o.map(async({record:e,purpose:i})=>{if(t.cache?.hasSuccessfulRestore(r,e))return;s+=1;let a=await t.restoreSealedRecordForWallet({walletId:n,record:e,purpose:i});a===`restored`&&(c+=1,t.cache?.rememberSuccessfulRestore(r,e)),a===`ready`&&t.cache?.rememberSuccessfulRestore(r,e),a===`deferred`&&(l+=1)})),Mj({attempted:s,restored:c,deferred:l})}async function Lj(e,t){let n=String(e.walletId||``).trim(),r=Math.max(0,Math.floor(e.maxRecords??10)),i={listed:0,discovered:0,truncated:0};if(!n||r<=0)return i;let a;try{a=(await Promise.all(e.ecdsaChainTargets.map(r=>t.listExactSealedSessionsForWallet({walletId:n,authMethod:e.authMethod,curve:`ecdsa`,chainTarget:r})))).flat()}catch(e){return t.onListError?.({walletId:n,error:e}),i}let o=new Set,s=a.flatMap(t=>e.ecdsaChainTargets.flatMap(e=>Oj({walletId:n,record:t,reason:`session_status`,requestedChainTarget:e}))).filter(e=>e.kind===`rejected`?(t.onRejectedRecord?.({walletId:n,rejection:e.rejection}),!1):!0).filter(kj).map(e=>e.workItem).filter(e=>{let t=jj(e.purpose,e.record);return o.has(t)?!1:(o.add(t),!0)}),c=s.slice(0,r);return{listed:a.length,discovered:c.length,truncated:Math.max(0,s.length-c.length)}}function Rj(e){if(e.ok)return!1;switch(e.code){case`expired`:case`exhausted`:return!1;case`not_found`:case`invalid_args`:case`invalid_response`:return!0;default:return!1}}async function zj(e){let t=await e.resolveCurrentEcdsaCapabilityRuntime({walletId:z(e.record.walletId),chainTarget:e.record.chainTarget});return t.kind===`resolved`&&b(t.runtime.materialActivation,e.record.roleLocalMaterialRef.materialActivation)?{kind:`current`}:{kind:`superseded`,status:{ok:!1,code:`superseded`,message:`Passkey ECDSA sealed recovery was superseded (${t.kind===`blocked`?t.reason:`material_activation_mismatch`})`}}}async function Bj(e){if(!Fr(e.record.chainTarget,e.purpose.chainTarget))return null;let t=String(e.purpose.thresholdSessionId||``).trim();if(!t||!e.groupId)return null;let n=await zj({record:e.record,resolveCurrentEcdsaCapabilityRuntime:e.resolveCurrentEcdsaCapabilityRuntime});if(n.kind===`superseded`)return n.status;let r=await e.rehydrateWarmSessionMaterial({thresholdSessionId:t,sealedSecretB64u:e.record.sealedSecretB64u,signingSessionSealKeyVersion:fs(e.record.keyVersion),expiresAtMs:e.record.expiresAtMs,remainingUses:e.record.remainingUses,transport:{...e.transport,groupId:e.groupId}});if(!r.ok){let t=await zj({record:e.record,resolveCurrentEcdsaCapabilityRuntime:e.resolveCurrentEcdsaCapabilityRuntime});return t.kind===`superseded`?t.status:(Rj(r)&&await e.deletePersistedRecord().catch(()=>void 0),await e.recordSessionMaterialRestored(r),r)}let i=await e.readWarmSessionStatusFromWorker(t);if(!i)return{ok:!1,code:`worker_error`,message:`Warm-session status read failed after rehydrate`};let a=await zj({record:e.record,resolveCurrentEcdsaCapabilityRuntime:e.resolveCurrentEcdsaCapabilityRuntime});return a.kind===`superseded`?a.status:(i.ok?await e.updatePersistedPolicy({expiresAtMs:i.expiresAtMs,remainingUses:i.remainingUses,updatedAtMs:Date.now()}).catch(()=>void 0):Rj(i)&&await e.deletePersistedRecord().catch(()=>void 0),await e.recordSessionMaterialRestored(i),i)}const Vj=new Map;function Hj(e){return Math.max(0,Math.round(performance.now()-e))}function Uj(e){e.diagnostics?.recordDuration(e.bucket,Hj(e.startedAt))}function Wj(e){!e.diagnostics||!e.resultDiagnostics||(e.diagnostics.recordDuration(`sealed_record_apply_runtime_setup`,e.resultDiagnostics.runtimeSetupMs),e.diagnostics.recordDuration(`sealed_record_apply_client_seal`,e.resultDiagnostics.clientSealMs),e.diagnostics.recordDuration(`sealed_record_apply_server_route`,e.resultDiagnostics.serverSealRouteMs),e.diagnostics.recordDuration(`sealed_record_apply_client_unseal`,e.resultDiagnostics.clientUnsealMs),e.diagnostics.recordDuration(`sealed_record_apply_policy_update`,e.resultDiagnostics.policyUpdateMs))}function Gj(e){if(e.transport.curve===`ecdsa`){let t=String(e.transport.walletId).trim(),n=String(e.transport.ecdsaRestore.authority.walletId).trim();if(!t||!n||t!==n)throw Error(`Passkey ECDSA seal transport wallet does not match restore metadata`);return{walletId:t,ecdsaRestore:e.transport.ecdsaRestore}}let t=ke(Ae(e.transport.ed25519Restore.runtimePolicyScope));return{walletId:e.transport.walletId,signingRootId:t.signingRootId,...t.signingRootVersion?{signingRootVersion:t.signingRootVersion}:{},ed25519Restore:e.transport.ed25519Restore}}function Kj(e){return e.transport.curve===`ed25519`?{authMethod:`passkey`,curve:`ed25519`}:{authMethod:`passkey`,curve:`ecdsa`,chainTarget:e.transport.chainTarget}}function qj(e){if(e.transport.curve===`ecdsa`){let t=e.transport.ecdsaRestore?.roleLocalMaterialRef;if(!t)throw Error(`Passkey ECDSA persistence requires exact restore metadata`);return[`persist`,`passkey`,`ecdsa`,B(e.transport.chainTarget),t.materialActivation.activationId,t.materialActivation.capability,t.materialActivation.materialOwner,t.materialActivation.keyBinding,t.materialActivation.lifecycleBinding,t.materialActivation.signingWorker,t.durableMaterialRef,t.bindingDigest].join(`|`)}let t=yd({authMethod:`passkey`,materialActivation:e.transport.ed25519Restore.materialActivation});return[`persist`,t.kind,t.authMethod,Ad(t.materialActivation)].join(`|`)}function Jj(e){return e.transport.curve===`ed25519`}function Yj(e){if(!Jj(e)){let t=String(e.metadata.walletId||``).trim();if(!t||!e.metadata.ecdsaRestore)throw Error(`[SigningSessionSealedStore] missing Passkey ECDSA seal metadata`);let n={...e.existing?.thresholdSessionIds,ecdsa:e.thresholdSessionId};return{thresholdSessionId:e.thresholdSessionId,sealedSecretB64u:e.sealedSecretB64u,curve:`ecdsa`,authMethod:`passkey`,thresholdSessionIds:n,walletId:t,relayerUrl:e.relayerUrl,keyVersion:e.keyVersion,groupId:e.groupId,ecdsaRestore:e.metadata.ecdsaRestore,...e.metadata.ed25519Restore?{ed25519Restore:e.metadata.ed25519Restore}:{},issuedAtMs:e.issuedAtMs,expiresAtMs:e.expiresAtMs,remainingUses:e.remainingUses,updatedAtMs:e.updatedAtMs}}let t=String(e.metadata.walletId||``).trim();if(!t||!e.metadata.ed25519Restore)throw Error(`[SigningSessionSealedStore] missing Passkey Ed25519 seal metadata`);let n={...e.existing?.thresholdSessionIds,ed25519:e.thresholdSessionId};return{thresholdSessionId:e.thresholdSessionId,sealedSecretB64u:e.sealedSecretB64u,curve:`ed25519`,authMethod:`passkey`,thresholdSessionIds:n,walletId:t,...e.metadata.signingRootId?{signingRootId:e.metadata.signingRootId}:{},...e.metadata.signingRootVersion?{signingRootVersion:e.metadata.signingRootVersion}:{},relayerUrl:e.relayerUrl,keyVersion:e.keyVersion,groupId:e.groupId,...e.metadata.ecdsaRestore?{ecdsaRestore:e.metadata.ecdsaRestore}:{},ed25519Restore:e.metadata.ed25519Restore,issuedAtMs:e.issuedAtMs,expiresAtMs:e.expiresAtMs,remainingUses:e.remainingUses,updatedAtMs:e.updatedAtMs}}function Xj(e){return e.transport.curve===`ed25519`}async function Zj(e){let t=wr(e);if(!t)throw Error(`[SigningSessionSealedStore] invalid sealed session record write input`);await dn(t)}function Qj(e,t){return e.source===t.source&&Fr(e.chainTarget,t.chainTarget)&&e.keyHandle===t.keyHandle&&e.ecdsaThresholdKeyId===t.ecdsaThresholdKeyId&&e.ethereumAddress===t.ethereumAddress&&e.relayerKeyId===t.relayerKeyId&&e.clientVerifyingShareB64u===t.clientVerifyingShareB64u&&e.thresholdEcdsaPublicKeyB64u===t.thresholdEcdsaPublicKeyB64u&&b(e.roleLocalMaterialRef.materialActivation,t.roleLocalMaterialRef.materialActivation)&&e.roleLocalMaterialRef.durableMaterialRef===t.roleLocalMaterialRef.durableMaterialRef&&e.roleLocalMaterialRef.bindingDigest===t.roleLocalMaterialRef.bindingDigest&&e.participantIds.length===t.participantIds.length&&e.participantIds.every((e,n)=>e===t.participantIds[n])&&e.authority.kind===t.authority.kind&&e.authority.walletId===t.authority.walletId&&e.authority.authorityDigest===t.authority.authorityDigest&&e.authority.walletAuthMethodId===t.authority.walletAuthMethodId&&Qa(e.publicCapability,t.publicCapability)&&eo(e.routerAbEcdsaDerivationNormalSigning,t.routerAbEcdsaDerivationNormalSigning)}function $j(e){if(e.existing.curve!==e.transport.curve)return!1;let t=String(e.transport.walletId).trim();if(!t||t!==e.existing.walletId)return!1;if(e.existing.curve===`ed25519`&&e.transport.curve===`ed25519`)return b(e.existing.ed25519Restore.materialActivation,e.transport.ed25519Restore.materialActivation);if(e.existing.curve!==`ecdsa`||e.transport.curve!==`ecdsa`||!Fr(e.existing.ecdsaRestore.chainTarget,e.transport.chainTarget))return!1;let n=e.metadata.ecdsaRestore;return n?Qj(e.existing.ecdsaRestore,n):!0}function eM(e){return e.curve===`ecdsa`?{walletId:e.walletId,ecdsaRestore:e.ecdsaRestore,...e.ed25519Restore?{ed25519Restore:e.ed25519Restore}:{}}:{walletId:e.walletId,...e.signingRootId?{signingRootId:e.signingRootId}:{},...e.signingRootVersion?{signingRootVersion:e.signingRootVersion}:{},...e.ecdsaRestore?{ecdsaRestore:e.ecdsaRestore}:{},ed25519Restore:e.ed25519Restore}}function tM(e,t){return e.curve,{...e,authMethod:`passkey`,groupId:t}}async function nM(e){return e.transport.curve===`ed25519`?await nn(yd({authMethod:`passkey`,materialActivation:e.transport.ed25519Restore.materialActivation})):await sn(e.thresholdSessionId,e.purpose)}var rM=class{constructor(e){this.deps=e}async persistSigningSessionSealForThresholdSession(e){if(this.deps.signingSessionPersistenceMode!==`sealed_refresh_v1`)return{ok:!1,code:`not_enabled`,message:`Passkey signing-session seal persistence requires signingSessionPersistenceMode="sealed_refresh_v1"`};let t=String(e.thresholdSessionId||``).trim();if(!t)return{ok:!1,code:`invalid_args`,message:`Missing threshold sessionId`};let n=String(e.transport.relayerUrl||``).trim();if(!n)return{ok:!1,code:`invalid_args`,message:`Passkey seal persistence requires relayerUrl`};let r=Gj({transport:e.transport}),i=Kj({transport:e.transport});if(!i)return{ok:!1,code:`invalid_args`,message:`Passkey seal persistence requires one exact record purpose`};let a=qj({transport:e.transport}),o=Vj.get(a);if(o)return await o;let s;s=(e.transport.curve,this.persistExactRecord({thresholdSessionId:t,transport:e.transport,metadata:r,purpose:i,relayerUrl:n,diagnostics:e.diagnostics,completedSeal:e.completedSeal}));let c=s.finally(()=>{Vj.delete(a)});return Vj.set(a,c),await c}async recordPolicyResult(e,t,n){let r=await this.readRecordForPurpose(e,t);if(r){if(n.ok){await this.writePolicy(r,n.expiresAtMs,Math.max(0,n.remainingUses));return}if(n.code===`exhausted`){await this.writePolicy(r,r.expiresAtMs,0);return}n.code===`expired`&&await this.writePolicy(r,Math.min(r.expiresAtMs,Date.now()),Math.max(0,r.remainingUses))}}async updatePersistedPolicy(e){let t=await this.readRecordForPurpose(e.purpose,e.thresholdSessionId);!t||t.curve!==`ecdsa`||t.thresholdSessionIds.ecdsa!==e.thresholdSessionId||await this.writePolicy(t,e.expiresAtMs,e.remainingUses)}async persistExactRecord(e){let t=performance.now(),n;try{n=await nM(e)}catch(n){return Uj({diagnostics:e.diagnostics,bucket:`sealed_record_existing_read`,startedAt:t}),{ok:!1,code:`local_persist_failed`,message:n instanceof Error?`Failed to read the existing sealed session: ${n.message}`:`Failed to read the existing sealed session`}}if(Uj({diagnostics:e.diagnostics,bucket:`sealed_record_existing_read`,startedAt:t}),n){if(!$j({existing:n,transport:e.transport,metadata:e.metadata}))return{ok:!1,code:`binding_mismatch`,message:`Existing sealed session names different material`};let t=performance.now(),r;try{r=await this.deps.readWarmSessionStatus({thresholdSessionId:e.thresholdSessionId})}catch(e){return{ok:!1,code:`worker_error`,message:e instanceof Error?`Failed to read warm-session policy: ${e.message}`:`Failed to read warm-session policy`}}Uj({diagnostics:e.diagnostics,bucket:`sealed_record_policy_read`,startedAt:t});let i=eM(n),a=r.ok?r.expiresAtMs:r.code===`expired`?Math.min(n.expiresAtMs,Date.now()):n.expiresAtMs,o=r.ok?r.remainingUses:r.code===`exhausted`?0:n.remainingUses;if(!r.ok&&r.code!==`expired`&&r.code!==`exhausted`)return r;let s=performance.now();return await Zj((Xj(e),Yj({thresholdSessionId:e.thresholdSessionId,transport:e.transport,metadata:i,sealedSecretB64u:n.sealedSecretB64u,relayerUrl:n.relayerUrl,keyVersion:n.keyVersion,groupId:n.groupId,issuedAtMs:n.issuedAtMs,expiresAtMs:a,remainingUses:o,updatedAtMs:Date.now(),existing:n}))),Uj({diagnostics:e.diagnostics,bucket:`sealed_record_register`,startedAt:s}),{ok:!0,sealedSecretB64u:n.sealedSecretB64u,keyVersion:n.keyVersion,remainingUses:o,expiresAtMs:a}}if(e.transport.curve===`ecdsa`&&!e.metadata.ecdsaRestore)return{ok:!1,code:`missing_restore_metadata`,message:`Passkey ECDSA seal persistence requires exact restore metadata`};if(e.transport.curve===`ecdsa`&&e.metadata.ecdsaRestore&&!Fr(e.transport.chainTarget,e.metadata.ecdsaRestore.chainTarget))return{ok:!1,code:`binding_mismatch`,message:`Passkey ECDSA seal transport and restore metadata name different material`};if(e.transport.curve===`ed25519`&&!e.metadata.ed25519Restore)return{ok:!1,code:`missing_restore_metadata`,message:`Passkey Ed25519 seal persistence requires exact restore metadata`};if(String(e.transport.groupId||`rfc2409-group2`).trim()!==`rfc2409-group2`)return{ok:!1,code:`invalid_args`,message:`Unsupported groupId for Passkey signing-session seal persistence`};let r=Ge,i=performance.now(),a=e.completedSeal??await this.deps.sealAndPersistWarmSessionMaterial({thresholdSessionId:e.thresholdSessionId,transport:tM(e.transport,r)});if(Uj({diagnostics:e.diagnostics,bucket:`sealed_record_apply_server_seal`,startedAt:i}),Wj({diagnostics:e.diagnostics,resultDiagnostics:a.ok?a.diagnostics:void 0}),!a.ok)return a;let o=String(a.keyVersion||``).trim();if(!o)return{ok:!1,code:`invalid_key_version`,message:`Signing-session seal response did not include a key version`};let s=Date.now(),c=performance.now();await Zj((Xj(e),Yj({thresholdSessionId:e.thresholdSessionId,transport:e.transport,metadata:e.metadata,sealedSecretB64u:a.sealedSecretB64u,relayerUrl:e.relayerUrl,keyVersion:o,groupId:r,issuedAtMs:s,expiresAtMs:a.expiresAtMs,remainingUses:a.remainingUses,updatedAtMs:s}))),Uj({diagnostics:e.diagnostics,bucket:`sealed_record_register`,startedAt:c});let l=performance.now(),u;try{u=await nM(e)}catch{u=null}return Uj({diagnostics:e.diagnostics,bucket:`sealed_record_verify_read`,startedAt:l}),u?a:{ok:!1,code:`local_persist_failed`,message:`Failed to persist sealed signing-session record locally`}}async readRecordForPurpose(e,t){return e.curve===`ed25519`?await nn(yd({authMethod:`passkey`,materialActivation:e.materialActivation})):await sn(t,{authMethod:`passkey`,curve:`ecdsa`,chainTarget:e.chainTarget})}async writePolicy(e,t,n){if(e.curve===`ed25519`){await Kt({locator:yd({authMethod:`passkey`,materialActivation:e.ed25519Restore.materialActivation}),expiresAtMs:Math.max(1,Math.floor(t)),remainingUses:Math.max(0,Math.floor(n)),updatedAtMs:Date.now()});return}await Qt({thresholdSessionId:e.thresholdSessionIds.ecdsa,filter:{authMethod:`passkey`,curve:`ecdsa`,chainTarget:e.ecdsaRestore.chainTarget},expiresAtMs:Math.max(1,Math.floor(t)),remainingUses:Math.max(0,Math.floor(n)),updatedAtMs:Date.now()})}};const iM=new Map,aM=new Map;function oM(e){return[`rehydrate`,`passkey`,`ecdsa`,B(e.chainTarget),Ad(e.materialActivation),String(e.thresholdSessionId||``).trim()].join(`|`)}function sM(e,t){if(!e)return`deferred`;if(e.ok)return t;if(e.code===`exhausted`)return`ready`;if(e.code===`expired`)return`deferred`;throw Error(`[PasskeyMpcSession] sealed-session restore failed (${e.code}): ${e.message}`)}async function cM(e){return{chainTarget:e.chainTarget,signingRootId:e.signingRootId,signingRootVersion:e.signingRootVersion,source:e.source,authority:await U({authority:e.authority}),roleLocalMaterialRef:e.roleLocalMaterialRef,rpId:e.authority.verifier.rpId,credentialIdB64u:e.authority.factor.credentialIdB64u,keyHandle:e.keyHandle,ecdsaThresholdKeyId:e.ecdsaThresholdKeyId,ethereumAddress:e.ethereumAddress,relayerKeyId:e.relayerKeyId,clientVerifyingShareB64u:e.clientVerifyingShareB64u,thresholdEcdsaPublicKeyB64u:e.thresholdEcdsaPublicKeyB64u,participantIds:[...e.participantIds],...e.runtimePolicyScope?{runtimePolicyScope:e.runtimePolicyScope}:{},routerAbEcdsaDerivationNormalSigning:e.routerAbEcdsaDerivationNormalSigning,publicCapability:e.publicCapability}}function lM(e){return e.session.capabilitySubjects.some(t=>t.kind===`sign`&&t.keyFamily===`ecdsa_secp256k1`&&b(t.materialActivation,e.materialActivation))}async function uM(e){let t=z(e.walletId),n;try{n=await K.resolveSelectedWalletAuthority(String(t))}catch{return null}if(n.kind!==`resolved`)return null;let{selection:r,authMethod:i,authority:a}=n;if(r.lockState!==`unlocked`||r.walletId!==t||r.walletAuthMethodId!==i.walletAuthMethodId||i.kind!==`passkey`||i.status!==`active`||i.walletId!==t||i.walletAuthorityId!==a.authorityId||i.walletAuthMethodId!==e.factorAuthority.bindingId||i.rpId!==e.factorAuthority.verifier.rpId||i.credentialIdB64u!==e.factorAuthority.factor.credentialIdB64u||a.state!==`active`||a.walletId!==t)return null;let o;try{o=await q.readExactWithOperationCredential({walletId:t,authorityId:a.authorityId,authMethodId:i.walletAuthMethodId})}catch{return null}return o.kind!==`found`||o.record.walletId!==t||o.record.authorityId!==a.authorityId||o.record.authMethodId!==i.walletAuthMethodId||o.record.authorityDigestB64u!==a.authorityDigestB64u||o.record.authorityRevocationEpoch!==a.revocationEpoch||o.record.expiresAtMs<=e.nowMs||!lM({session:o.record,materialActivation:e.materialActivation})?null:o.operationCredential}async function dM(e){let t=Mt({durableRecord:{authMethod:`passkey`,curve:`ecdsa`,thresholdSessionId:e.thresholdSessionId,chainTarget:e.chainTarget},deleteReason:`invalid_persisted_record`,preserveResolvedIdentity:!1}),n=[`delete`,`passkey`,`ecdsa`,B(e.chainTarget),e.thresholdSessionId].join(`|`),r=aM.get(n);if(r)return await r;let i=At(t).finally(()=>{aM.delete(n)});aM.set(n,i),await i}async function fM(e){return await en({walletId:e.walletId,filter:{authMethod:`passkey`,curve:`ecdsa`,chainTarget:e.chainTarget}})}function pM(e){console.warn(`[PasskeyMpcSession] signing-session restore list failed`,{walletId:e.walletId,target:e.target,reason:e.reason,error:e.error instanceof Error?e.error.message:String(e.error||`unknown error`)})}function mM(e){console.warn(`[PasskeyMpcSession] signing-session restore rejected record`,e)}function hM(e){return typeof e==`object`&&!!e}function gM(e){let t=Math.floor(Number(e));return Number.isFinite(t)&&t>0?t:0}function _M(e){return Number.isSafeInteger(e)&&Number(e)>=0}function vM(e){return Number.isSafeInteger(e)&&Number(e)>0}function yM(e){return!hM(e)||typeof e.ok!=`boolean`?null:e.ok?!_M(e.remainingUses)||!vM(e.expiresAtMs)?null:{ok:!0,remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs}:{ok:!1,code:typeof e.code==`string`?e.code:`worker_error`,message:typeof e.message==`string`?e.message:`Warm-session status read failed`}}function bM(e){if(!hM(e)||!Array.isArray(e.results))return null;let t=[];for(let n of e.results){if(!hM(n)||typeof n.thresholdSessionId!=`string`||!n.thresholdSessionId.trim())return null;let e=yM(n.result);if(!e)return null;t.push({thresholdSessionId:n.thresholdSessionId,result:e})}return{results:t}}function xM(e){return!hM(e)||typeof e.ok!=`boolean`?null:e.ok?typeof e.prfFirstB64u!=`string`||!e.prfFirstB64u.trim()||!_M(e.remainingUses)||!vM(e.expiresAtMs)?null:{ok:!0,prfFirstB64u:e.prfFirstB64u,remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs}:{ok:!1,code:typeof e.code==`string`?e.code:`worker_error`,message:typeof e.message==`string`?e.message:`Warm-session claim failed`}}function SM(e){if(!hM(e)||typeof e.ok!=`boolean`)return null;if(!e.ok)return{ok:!1,code:typeof e.code==`string`?e.code:`worker_error`,message:typeof e.message==`string`?e.message:`Signing-session seal and persist failed`};if(typeof e.sealedSecretB64u!=`string`||!e.sealedSecretB64u.trim()||typeof e.keyVersion!=`string`||!e.keyVersion.trim()||!_M(e.remainingUses)||!vM(e.expiresAtMs))return null;let t=hM(e.diagnostics)?{runtimeSetupMs:gM(e.diagnostics.runtimeSetupMs),clientSealMs:gM(e.diagnostics.clientSealMs),serverSealRouteMs:gM(e.diagnostics.serverSealRouteMs),clientUnsealMs:gM(e.diagnostics.clientUnsealMs),policyUpdateMs:gM(e.diagnostics.policyUpdateMs)}:void 0;return{ok:!0,sealedSecretB64u:e.sealedSecretB64u,keyVersion:e.keyVersion.trim(),remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs,...t?{diagnostics:t}:{}}}function CM(e){if(e.authMethod===`email_otp`||e.curve===`linked_device`)throw Error(`Passkey MPC durable owner requires an owner signing-lane transport`);return e}function wM(e){return Math.max(0,Math.round(performance.now()-e))}function TM(e){e.diagnostics?.recordDuration(e.bucket,wM(e.startedAt))}var EM=class{constructor(e){this.deps=e,this.worker=null,this.initializationPromise=null,this.messageId=0,this.pendingRequests=new Map,this.boundHandleWorkerMessage=this.handleWorkerMessage.bind(this),this.boundHandleWorkerError=this.handleWorkerError.bind(this),this.putWarmSessionMaterial=async e=>{let{diagnostics:t,preparedServerSeal:n,...r}=e;if(n&&!e.transport)throw Error(`Prepared server seal requires exact persistence transport`);let i=performance.now();await this.ensureWorkerReady(),TM({diagnostics:t,bucket:`worker_ready`,startedAt:i});let a=performance.now(),o=await this.sendMessage({type:`WARM_SESSION_MATERIAL_PUT`,id:this.generateMessageId(),payload:r});if(!o.success)throw Error(String(o.error||`Failed to cache warm-session material`));let s=yM(o.data);if(!s)throw Error(`Warm-session cache returned an invalid response`);if(!s.ok)throw Error(`Warm-session cache failed (${s.code}): ${s.message}`);TM({diagnostics:t,bucket:`worker_put`,startedAt:a});let c;if(n&&e.transport){let t=await this.sendMessage({type:`COMPLETE_SESSION_CLIENT_SEAL`,id:this.generateMessageId(),payload:{preparationId:n.preparationId,thresholdSessionId:e.thresholdSessionId,transport:CM(e.transport),serverSeal:{ok:!0,ciphertext:n.ciphertext,keyVersion:n.keyVersion,expiresAtMs:n.expiresAtMs,remainingUses:n.remainingUses}}}),r=t.success?SM(t.data):null;if(!r){let e=t.success?`Prepared signing-session seal returned an invalid response`:t.error||`Prepared signing-session seal failed`;throw Error(e)}if(!r.ok)throw Error(`Prepared signing-session seal failed (${r.code}): ${r.message}`);c=r}let l=performance.now(),u=e.transport?await this.durableState.persistSigningSessionSealForThresholdSession({thresholdSessionId:e.thresholdSessionId,transport:CM(e.transport),...t?{diagnostics:t}:{},...c?{completedSeal:c}:{}}):null;if(TM({diagnostics:t,bucket:`sealed_record_persist`,startedAt:l}),u&&!u.ok)throw Error(`Warm-session cache could not persist sealed refresh material (${u.code}): ${u.message}`)},this.getWarmSessionStatus=async e=>await this.readWarmSessionStatus(e),this.discoverPersistedSessionsForWallet=async e=>this.deps.signingSessionPersistenceMode===`sealed_refresh_v1`?await Lj({...e,authMethod:`passkey`},{listExactSealedSessionsForWallet:async e=>await en({walletId:e.walletId,filter:e.curve===`ecdsa`?{authMethod:`passkey`,curve:`ecdsa`,chainTarget:e.chainTarget}:{authMethod:`passkey`,curve:`ed25519`}}),onListError:({walletId:e,error:t})=>{console.warn(`[PasskeyMpcSession] persisted-session discovery list failed`,{walletId:e,error:t instanceof Error?t.message:String(t||`unknown error`)})},onRejectedRecord:({walletId:e,rejection:t})=>{console.warn(`[PasskeyMpcSession] persisted-session discovery rejected record`,{walletId:e,rejection:t})}}):{listed:0,discovered:0,truncated:0},this.restorePersistedSessionForSigning=async e=>this.deps.signingSessionPersistenceMode===`sealed_refresh_v1`?await Ij({...e,authMethod:`passkey`},{listExactSealedSessionsForWallet:fM,restoreSealedRecordForWallet:this.restorePasskeySealedRecordForWallet,onListError:pM,onRejectedRecord:mM}):{kind:`completed`,attempted:0,restored:0,deferred:0},this.restorePasskeySealedRecordForWallet=async e=>{let{record:t,purpose:n}=e;if(n.authMethod!==`passkey`||t.authMethod!==`passkey`)return`deferred`;let r=String(n.thresholdSessionId||``).trim(),i=n.chainTarget;if(!r||t.curve!==`ecdsa`||!Fr(t.chainTarget,i)||!b(t.roleLocalMaterialRef.materialActivation,n.materialActivation))return`deferred`;let a=oM({thresholdSessionId:r,chainTarget:i,materialActivation:n.materialActivation}),o=iM.get(a);if(o)return sM(await o,`ready`);let s=_d({queueByKey:this.deps.thresholdEcdsaSigningQueueByKey,queueKey:wd({materialActivation:t.roleLocalMaterialRef.materialActivation}),walletId:z(e.walletId),enabled:!0,task:async()=>await this.restorePasskeyEcdsaRecord({walletId:e.walletId,record:t,purpose:{...n,authMethod:`passkey`}})}).finally(()=>{iM.delete(a)});return iM.set(a,s),sM(await s,`restored`)},this.getWarmSessionStatuses=async e=>{let t=Array.from(new Set(e.thresholdSessionIds.map(e=>String(e||``).trim()).filter(Boolean)));if(!t.length)return{results:[]};let n=await this.sendMessage({type:`WARM_SESSION_STATUS_BATCH_READ`,id:this.generateMessageId(),payload:{thresholdSessionIds:t}});if(n.success){let e=bM(n.data);if(e)return e}return{results:t.map(e=>({thresholdSessionId:e,result:{ok:!1,code:`worker_error`,message:String(n.success?`Warm-session batch status read failed`:n.error)}}))}},this.claimWarmSessionMaterial=async e=>{let t=rj(e),n=await this.sendMessage({type:`WARM_SESSION_MATERIAL_CLAIM`,id:this.generateMessageId(),payload:{thresholdSessionId:t,...typeof e.uses==`number`?{uses:e.uses}:{},...typeof e.consume==`boolean`?{consume:e.consume}:{},curve:e.purpose.curve}});if(!n.success)return{ok:!1,code:`worker_error`,message:n.error};let r=xM(n.data);return r?(await this.recordWarmSessionPolicyResult(e.purpose,t,r),r):{ok:!1,code:`worker_error`,message:`Warm-session claim failed`}},this.consumeWarmSessionUses=async e=>{let t=rj(e),n=await this.sendMessage({type:`WARM_SESSION_MATERIAL_CONSUME`,id:this.generateMessageId(),payload:{thresholdSessionId:t,...typeof e.uses==`number`?{uses:e.uses}:{},curve:e.purpose.curve}});if(!n.success)return{ok:!1,code:`worker_error`,message:n.error};let r=yM(n.data);return r?(await this.recordWarmSessionPolicyResult(e.purpose,t,r),r):{ok:!1,code:`worker_error`,message:`Warm-session consume failed`}},this.clearVolatileWarmSessionMaterial=async e=>{let t=Lm(e);if(t?.scope.kind!==`session`||!this.worker&&!this.initializationPromise)return;let n=await this.sendMessage({type:`WARM_SESSION_VOLATILE_MATERIAL_CLEAR`,id:this.generateMessageId(),payload:t});if(!n.success)throw Error(String(n.error||`Failed to clear volatile warm-session material`))},this.clearAllVolatileWarmSessionMaterial=async e=>{let t=Lm(e);if(t?.scope.kind!==`all`||!this.worker&&!this.initializationPromise)return;let n=await this.sendMessage({type:`WARM_SESSION_VOLATILE_MATERIAL_CLEAR_ALL`,id:this.generateMessageId(),payload:t});if(!n.success)throw Error(String(n.error||`Failed to clear all volatile warm-session material entries`))},this.persistSigningSessionSealForThresholdSession=async e=>await this.durableState.persistSigningSessionSealForThresholdSession(e),this.recordWarmSessionPolicyResult=async(e,t,n)=>await this.durableState.recordPolicyResult(e,t,n),this.durableState=new rM({signingSessionPersistenceMode:e.signingSessionPersistenceMode,sealAndPersistWarmSessionMaterial:this.sealAndPersistWarmSessionMaterial.bind(this),readWarmSessionStatus:this.readWarmSessionStatus.bind(this)})}setWorkerBaseOrigin(e){this.workerBaseOrigin=e}async prewarmShamir3Pass(){try{await this.sendMessage({type:`PREWARM_SHAMIR3PASS`,id:this.generateMessageId(),payload:{}},15e3)}catch{}}async prepareSigningSessionHydration(e){let t=await this.sendMessage({type:`PREPARE_SESSION_CLIENT_SEAL`,id:this.generateMessageId(),payload:e});if(!t.success)throw Error(t.error||`Client seal preparation failed`)}async discardSigningSessionHydration(e){let t=await this.sendMessage({type:`DISCARD_SESSION_CLIENT_SEAL`,id:this.generateMessageId(),payload:e});if(!t.success)throw Error(t.error||`Client seal cleanup failed`)}async readPreparedSigningSessionHydration(e){let t=await this.sendMessage({type:`READ_SESSION_CLIENT_SEAL`,id:this.generateMessageId(),payload:e});if(!t.success||!hM(t.data)||t.data.ok!==!0||typeof t.data.ciphertext!=`string`||!t.data.ciphertext.trim())throw Error(t.success?`Prepared client seal is invalid`:t.error||`Client seal read failed`);return{ciphertext:t.data.ciphertext}}async restorePasskeyEcdsaRecord(e){let t=e.purpose.thresholdSessionId,n=e.purpose.chainTarget,r=await Zn({thresholdSessionId:t,authMethod:`passkey`,curve:`ecdsa`,chainTarget:n});if(!r)return null;try{let r=await uM({walletId:e.walletId,factorAuthority:e.record.authority,materialActivation:e.purpose.materialActivation,nowMs:Date.now()});if(!r)return null;let i=await cM(e.record),a=r.token,o=String(i.authority.walletId).trim();if(!o||o!==String(e.walletId).trim())return null;let s=String(e.record.groupId||``).trim();if(!s)return null;let c={curve:`ecdsa`,authMethod:`passkey`,walletId:o,chainTarget:n,relayerUrl:e.record.relayerUrl,signingSessionSealKeyVersion:fs(e.record.keyVersion),groupId:s,walletSessionToken:a,ecdsaRestore:i};return await Bj({record:e.record,purpose:e.purpose,transport:c,groupId:s,rehydrateWarmSessionMaterial:this.rehydrateWarmSessionMaterial.bind(this),deletePersistedRecord:async()=>await dM({thresholdSessionId:t,chainTarget:n}),recordSessionMaterialRestored:async e=>await this.recordWarmSessionPolicyResult({curve:`ecdsa`,thresholdSessionId:t,chainTarget:n},t,e),readWarmSessionStatusFromWorker:async e=>await this.readWarmSessionStatus({thresholdSessionId:e}),resolveCurrentEcdsaCapabilityRuntime:this.deps.resolveCurrentEcdsaCapabilityRuntime,updatePersistedPolicy:async e=>await this.durableState.updatePersistedPolicy({thresholdSessionId:t,purpose:{curve:`ecdsa`,thresholdSessionId:t,chainTarget:n},...e})})}finally{await Bt(r)}}async sealAndPersistWarmSessionMaterial(e){if(this.deps.signingSessionPersistenceMode!==`sealed_refresh_v1`)return{ok:!1,code:`not_enabled`,message:`Passkey MPC session sealing requires sealed refresh mode`};let t=await this.sendMessage({type:`WARM_SESSION_SEAL_AND_PERSIST`,id:this.generateMessageId(),payload:e});if(t.success){let e=SM(t.data);if(e)return e}return{ok:!1,code:`worker_error`,message:String(t.success?`Signing-session seal and persist failed`:t.error)}}async rehydrateWarmSessionMaterial(e){if(this.deps.signingSessionPersistenceMode!==`sealed_refresh_v1`)return{ok:!1,code:`not_enabled`,message:`Passkey MPC session rehydration requires sealed refresh mode`};let t=await this.sendMessage({type:`WARM_SESSION_REHYDRATE`,id:this.generateMessageId(),payload:e});if(t.success){let e=yM(t.data);if(e)return e}return{ok:!1,code:`worker_error`,message:String(t.success?`Warm-session rehydrate failed`:t.error)}}async readWarmSessionStatus(e){let t=await this.sendMessage({type:`WARM_SESSION_STATUS_READ`,id:this.generateMessageId(),payload:e});if(t.success){let e=yM(t.data);if(e)return e}return{ok:!1,code:`worker_error`,message:String(t.success?`Warm-session status read failed`:t.error)}}async ensureWorkerReady(){if(!this.worker&&(this.initializationPromise||=this.createWorker().catch(e=>{throw this.initializationPromise=null,e}),await this.initializationPromise,!this.worker))throw Error(`Passkey MPC session worker failed to initialize`)}async createWorker(){let e=bf(kk.RUNTIME.PASSKEY_MPC_SESSION_WORKER,{worker:`passkeyMpcSession`,baseOrigin:this.workerBaseOrigin}),t=new Worker(e,{type:`module`,name:`PasskeyMpcSessionWorker`});t.addEventListener(`message`,this.boundHandleWorkerMessage),t.addEventListener(`error`,this.boundHandleWorkerError),this.worker=t}async sendMessage(e,t=6e4){await this.ensureWorkerReady();let n=this.worker;if(!n)throw Error(`Passkey MPC session worker not available`);let r=String(e.id||this.generateMessageId());if(this.pendingRequests.has(r))throw Error(`Duplicate Passkey MPC session worker request id: ${r}`);return await new Promise((i,a)=>{let o=setTimeout(()=>{this.rejectPendingRequest(r,Error(`Passkey MPC session worker communication timeout (${t}ms) for ${e.type}`))},t);this.pendingRequests.set(r,{id:r,timeoutId:o,resolve:i,reject:a});try{n.postMessage({...e,id:r})}catch(e){this.rejectPendingRequest(r,e instanceof Error?e:Error(String(e)))}})}handleWorkerMessage(e){if(e.currentTarget!==this.worker||e.target!==this.worker)return;let t=Xl(e.data);if(!t)return;let n=t.id||``;if(!n)return;let r=this.pendingRequests.get(n);r&&(clearTimeout(r.timeoutId),this.pendingRequests.delete(n),r.resolve(t))}handleWorkerError(e){if(e.currentTarget!==this.worker||e.target!==this.worker)return;let t=this.worker;this.worker=null,this.initializationPromise=null,t?.removeEventListener(`message`,this.boundHandleWorkerMessage),t?.removeEventListener(`error`,this.boundHandleWorkerError),t?.terminate();let n=e,r=Error(`Passkey MPC session worker failed: ${String(n.message||`unknown error`)}`);for(let e of this.pendingRequests.values())clearTimeout(e.timeoutId),e.reject(r);this.pendingRequests.clear()}rejectPendingRequest(e,t){let n=this.pendingRequests.get(e);n&&(clearTimeout(n.timeoutId),this.pendingRequests.delete(e),n.reject(t))}generateMessageId(){return`passkey_mpc_session_${Date.now()}_${++this.messageId}`}};function DM(e){return new EM(e)}var OM=class extends Error{constructor(e){super(e),this.code=`wallet_origin_webauthn_unavailable`,this.name=`WalletOriginWebAuthnUnavailableError`}};async function kM(e,t,n){let r=AM(e,t);try{return e===`create`?await navigator.credentials.create({publicKey:r,...n.abortSignal?{signal:n.abortSignal}:{}}):await navigator.credentials.get({publicKey:r,...n.abortSignal?{signal:n.abortSignal}:{}})}catch(t){throw e===`create`&&(RM(t)||zM(t))?new OM(`Wallet-origin WebAuthn registration is unavailable: ${BM(t)}`):t}}function AM(e,t){return e===`create`?jM(t):MM(t)}function jM(e){return{...e,challenge:LM(e.challenge),user:{...e.user,id:LM(e.user.id)},excludeCredentials:e.excludeCredentials?.map(NM),extensions:PM(e.extensions)}}function MM(e){return{...e,challenge:LM(e.challenge),allowCredentials:e.allowCredentials?.map(NM),extensions:PM(e.extensions)}}function NM(e){return{...e,id:LM(e.id)}}function PM(e){if(!e)return e;let t={...e},n=t.prf;if(n&&typeof n==`object`){let e={...n};if(e.eval&&typeof e.eval==`object`&&(e.eval=FM(e.eval)),e.evalByCredential&&typeof e.evalByCredential==`object`){let t={};for(let[n,r]of Object.entries(e.evalByCredential))t[n]=r&&typeof r==`object`?FM(r):r;e.evalByCredential=t}t.prf=e}return t}function FM(e){return{...e,...IM(e.first)?{first:LM(e.first)}:{},...IM(e.second)?{second:LM(e.second)}:{}}}function IM(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)}function LM(e){if(e instanceof ArrayBuffer)return e.slice(0);let t=e,n=new Uint8Array(t.buffer,t.byteOffset,t.byteLength).slice();if(e instanceof DataView)return new DataView(n.buffer);let r=Object.getPrototypeOf(e).constructor;return new r(n.buffer)}function RM(e){let t=BM(e);return/origin of the document is not the same as its ancestors/i.test(t)}function zM(e){let t=VM(e),n=BM(e),r=t===`NotAllowedError`,i=/document is not focused|not focused|focus/i.test(n);return!!(r&&i)}function BM(e){return String(e?.message||``)}function VM(e){let t=e?.name;return typeof t==`string`?t:``}function HM(e,t){return(e||t||``).toLowerCase()}function UM(e){let t=F(String(e||``));if(t.length!==32)throw Error(`Invalid WebAuthn challenge: expected 32 bytes, got ${t.length}`);return t}function WM(e){if(e.kind!==`wallet_registration`)throw Error(`Wallet registration challenge is unavailable`);return e.challengeB64u}function GM(e){let t=Go(String(e.walletId||``).trim());if(String(e.intendedUserName||``).trim()!==String(t))throw Error(`WebAuthn registration user.name must match walletId`);return{walletId:t}}var KM=class{constructor(e){this.rpIdOverride=e}getRpId(){try{return HM(this.rpIdOverride,window?.location?.hostname)}catch{return this.rpIdOverride||``}}getAuthenticationCredentialsSerializedForChallengeB64u(e){let t=`webauthn-get-${Fe(12,`WebAuthn get request IDs`)}`;return il.runImmediate({owner:{kind:`wallet_request`,requestId:t,operation:`authentication`},operation:this.executeAuthenticationCredential.bind(this,e)})}async executeAuthenticationCredential({subjectId:e,challengeB64u:t,allowCredentials:n=[],includeSecondPrfOutput:r=!1,cancellation:i={kind:`none`}}){this.abortController=new AbortController,this.removePageAbortHandlers=QM(this.abortController),this.removeExternalAbortListener=qM(this.abortController,i);let a=this.getRpId(),o={challenge:UM(t),rpId:a,userVerification:`preferred`,timeout:6e4,extensions:{prf:{eval:{first:uc(),second:sc()}}}};n.length>0&&(o.allowCredentials=n.map(e=>({id:F(e.id),type:`public-key`,transports:e.transports})));try{let e=lc({credential:await kM(`get`,o,{abortSignal:this.abortController.signal}),firstPrfOutput:!0,secondPrfOutput:r});return XM(e,t),e}finally{this.removePageAbortHandlers?.(),this.removePageAbortHandlers=void 0,this.removeExternalAbortListener?.(),this.removeExternalAbortListener=void 0,this.abortController=void 0}}generateRegistrationCredentialsInternal(e){switch(e.prompt.kind){case`reserved`:return il.runReserved({reservation:e.prompt.reservation,owner:e.prompt.owner,operation:this.executeRegistrationCredential.bind(this,e)});case`immediate`:return il.runImmediate({owner:{kind:`wallet_request`,requestId:e.prompt.requestId,operation:`registration`},operation:this.executeRegistrationCredential.bind(this,e)})}}async executeRegistrationCredential(e){this.abortController=new AbortController,this.removePageAbortHandlers=QM(this.abortController),this.removeExternalAbortListener=qM(this.abortController,e.prompt.cancellation);let t=this.getRpId(),n=GM({walletId:e.walletId,intendedUserName:e.intendedUserName}),r=e.kind===`wallet_recovery`?e.recoveryRegistration:null,i=e.kind===`wallet_add_auth_method`?e.registration:null,a=r??i,o=a?.rpId??t;if(a&&o!==t)throw Error(`Wallet recovery RP ID does not match the wallet origin`);let s=a?{challenge:UM(a.challengeB64u),rp:{name:`Seams Wallet`,id:o},user:{id:F(a.user.idB64u),name:a.user.name,displayName:a.user.displayName},pubKeyCredParams:a.pubKeyCredParams.map(e=>({...e})),authenticatorSelection:{...a.authenticatorSelection},timeout:a.timeoutMs,attestation:a.attestation,extensions:{prf:{eval:{first:F(a.extensions.prf.eval.firstB64u),second:F(a.extensions.prf.eval.secondB64u)}}},excludeCredentials:a.excludeCredentials.map(e=>({type:e.type,id:F(e.id)}))}:{challenge:UM(WM(e)),rp:{name:`WebAuthn Passkey`,id:o},user:{id:new TextEncoder().encode(ZM(e.walletId,e.signerSlot)),name:n.walletId,displayName:n.walletId},pubKeyCredParams:[{alg:-7,type:`public-key`},{alg:-257,type:`public-key`}],authenticatorSelection:{residentKey:`required`,userVerification:`preferred`},timeout:6e4,attestation:`none`,extensions:{prf:{eval:{first:uc(),second:sc()}}}};try{return await kM(`create`,s,{abortSignal:this.abortController.signal})}finally{this.removePageAbortHandlers?.(),this.removePageAbortHandlers=void 0,this.removeExternalAbortListener?.(),this.removeExternalAbortListener=void 0,this.abortController=void 0}}};function qM(e,t){if(t.kind===`none`)return;let n=t.signal,r=e.abort.bind(e);if(n.aborted){r();return}return n.addEventListener(`abort`,r,{once:!0}),n.removeEventListener.bind(n,`abort`,r)}function JM(e){return String(e||``).trim().replace(/=+$/g,``)}function YM(e){let t=String(e.response?.clientDataJSON||``).trim();if(!t)throw Error(`WebAuthn authentication response missing clientDataJSON`);let n=``;try{n=new TextDecoder().decode(F(t))}catch(e){throw Error(`WebAuthn authentication response has invalid clientDataJSON encoding: ${e instanceof Error?e.message:String(e)}`)}let r;try{r=JSON.parse(n)}catch(e){throw Error(`WebAuthn authentication response has invalid clientDataJSON JSON: ${e instanceof Error?e.message:String(e)}`)}let i=r&&typeof r==`object`?r.challenge:void 0;if(typeof i!=`string`||!i.trim())throw Error(`WebAuthn authentication response clientDataJSON missing challenge`);return i}function XM(e,t){let n=JM(YM(e)),r=JM(t);if(n!==r)throw Error(`Unexpected authentication response challenge "${n}", expected "${r}"`)}function ZM(e,t){return t===void 0||t===1?e:`${e} (${t})`}function QM(e){let t=()=>{document.hidden&&e.abort()},n=()=>{e.abort()},r=()=>{e.abort()};return document.addEventListener(`visibilitychange`,t,{passive:!0}),window.addEventListener(`pagehide`,n,{passive:!0}),window.addEventListener(`beforeunload`,r,{passive:!0}),()=>{document.removeEventListener(`visibilitychange`,t),window.removeEventListener(`pagehide`,n),window.removeEventListener(`beforeunload`,r)}}var $M=class{constructor(e){this.resolveOperationStepUpCredential=e.resolveOperationStepUpCredential,this.nearKeyMaterialStore=e.nearKeyMaterialStore,this.touchIdPrompt=e.touchIdPrompt,this.touchConfirm=e.touchConfirm,this.passkeyMpcSession=e.passkeyMpcSession,this.nearClient=e.nearClient,this.userPreferencesManager=e.userPreferencesManager,this.nonceCoordinator=e.nonceCoordinator,this.relayerUrl=e.relayerUrl,this.chains=e.chains,this.nearExplorerUrl=e.nearExplorerUrl,this.tempoExplorerUrl=e.tempoExplorerUrl,this.evmExplorerUrl=e.evmExplorerUrl,this.getTheme=e.getTheme,this.workerTransport=e.workerTransport}setWorkerBaseOrigin(e){this.workerTransport.setWorkerBaseOrigin(e)}getContext(){return{resolveOperationStepUpCredential:this.resolveOperationStepUpCredential,requestWorkerOperation:this.requestWorkerOperation.bind(this),nearKeyMaterialStore:this.nearKeyMaterialStore,touchIdPrompt:this.touchIdPrompt,touchConfirm:this.touchConfirm,passkeyMpcSession:this.passkeyMpcSession,nearClient:this.nearClient,userPreferencesManager:this.userPreferencesManager,nonceCoordinator:this.nonceCoordinator,chains:this.chains,getTheme:this.getTheme,rpIdOverride:this.touchIdPrompt.getRpId(),nearExplorerUrl:this.nearExplorerUrl,tempoExplorerUrl:this.tempoExplorerUrl,evmExplorerUrl:this.evmExplorerUrl,relayerUrl:this.relayerUrl}}async clearEcdsaClientWorkerState(e){await this.workerTransport.clearEcdsaClientWorkerState(e)}async prewarmEcdsaRegistrationCrypto(){return await this.workerTransport.prewarmEcdsaRegistrationCrypto()}async prewarmEmailOtpYao(e){return await this.workerTransport.prewarmEmailOtpYao(e)}requestWorkerOperation(e){return this.workerTransport.requestOperation(e)}};const eN={TIMEOUTS:{DEFAULT:6e4,TRANSACTION:6e4,REGISTRATION:6e4},WORKER:{URL:kk.RUNTIME.SIGNER_WORKER,TYPE:`module`,NAME:`Web3AuthnSignerWorker`},ECDSA_DERIVATION_CLIENT_WORKER:{URL:kk.RUNTIME.ECDSA_DERIVATION_CLIENT_WORKER,TYPE:`module`,NAME:`Web3AuthnEcdsaDerivationClientWorker`},ECDSA_PRESIGN_CLIENT_WORKER:{URL:kk.RUNTIME.ECDSA_PRESIGN_CLIENT_WORKER,TYPE:`module`,NAME:`Web3AuthnEcdsaPresignClientWorker`},ECDSA_ONLINE_CLIENT_WORKER:{URL:kk.RUNTIME.ECDSA_ONLINE_CLIENT_WORKER,TYPE:`module`,NAME:`Web3AuthnEcdsaOnlineClientWorker`},RETRY:{MAX_ATTEMPTS:3,BACKOFF_MS:1e3}};function tN(e){switch(e){case`evmCrypto`:return`/sdk/workers/evm-crypto.worker.js`;case`tempoSigner`:return`/sdk/workers/tempo-signer.worker.js`}}function nN(e){let t=typeof window<`u`?window:{};switch(e){case`evmCrypto`:return typeof t.__SEAMS_EVM_CRYPTO_WORKER_URL__==`string`?t.__SEAMS_EVM_CRYPTO_WORKER_URL__:void 0;case`tempoSigner`:return typeof t.__SEAMS_TEMPO_SIGNER_WORKER_URL__==`string`?t.__SEAMS_TEMPO_SIGNER_WORKER_URL__:void 0}}function rN(e,t){let n=t?.baseOrigin||yf()||(typeof window<`u`?window.location.origin:``)||`https://invalid.local`,r=nN(e)||tN(e);return/^https?:\/\//i.test(r)?r:new URL(r,n).toString()}function iN(e){let t=e?.baseOrigin||yf()||(typeof window<`u`?window.location.origin:``)||`https://invalid.local`,n=(typeof window<`u`&&typeof window.__SEAMS_EMAIL_OTP_WORKER_URL__==`string`?String(window.__SEAMS_EMAIL_OTP_WORKER_URL__):``)||`/sdk/workers/email-otp.worker.js`;return/^https?:\/\//i.test(n)?n:new URL(n,t).toString()}function aN(e){let t=e?.baseOrigin||yf()||(typeof window<`u`?window.location.origin:``)||`https://invalid.local`,n=(typeof window<`u`&&typeof window.__SEAMS_WALLET_CUSTODY_CEREMONY_WORKER_URL__==`string`?String(window.__SEAMS_WALLET_CUSTODY_CEREMONY_WORKER_URL__):``)||`/sdk/workers/wallet-custody-ceremony.worker.js`;return/^https?:\/\//i.test(n)?n:new URL(n,t).toString()}const oN={AttachDerivationToPresign:`attach_ecdsa_derivation_to_presign_v1`,AttachLinkedHolderToPresign:`attach_linked_holder_to_ecdsa_presign_v1`,AttachPresignToOnline:`attach_ecdsa_presign_to_online_v1`};`A`.repeat(43);function sN(e){return Math.max(0,Math.round(performance.now()-e))}function cN(e){throw Error(`Unsupported Email OTP Yao prewarm result: ${String(e)}`)}function lN(e){throw Error(`Unsupported Email OTP Yao prewarm request: ${String(e)}`)}function uN(e,t,n){console.warn(`[WorkerTransport] operation timed out; resetting worker`,{kind:e,type:String(t),timeoutMs:n})}function dN(e){return Pe(e,32,`signer worker request IDs`)}function fN(e){return e?.type===lu.WORKER_READY||e?.ready===!0}function pN(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.progress===!0}function mN(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.ok===!0&&`result`in e}function hN(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.ok===!1&&typeof e.error==`string`}function gN(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.ok===!0&&`result`in e}function _N(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.ok===!1&&typeof e.error==`string`}function vN(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.progress===!0&&`payload`in e}const yN=new class{constructor(){this.workers=new Map,this.pendingByKind=new Map,this.messageHandlers=new Map,this.errorHandlers=new Map,this.presignAuthorityKind=null,this.presignOnlineConnected=!1,this.ecdsaRegistrationCryptoPrewarmPromise=null,this.emailOtpYaoPrewarmPromise=null}setWorkerBaseOrigin(e){if(this.workerBaseOrigin!==e){this.workerBaseOrigin=e,this.emailOtpYaoPrewarmPromise=null;for(let e of Array.from(this.workers.keys()))this.resetWorker(e)}}async clearEcdsaClientWorkerState(e){switch(e.kind){case`all`:this.resetWorker(`ecdsaPresignClient`);return;case`wallet`:if(Lu(e.walletId),!this.workers.has(`ecdsaPresignClient`))return;await this.requestOperation({kind:`ecdsaPresignClient`,request:{type:mu.ClearWallet,timeoutMs:2e4,payload:{walletId:e.walletId}}});return}}async prewarmEcdsaRegistrationCrypto(){let e=this.ecdsaRegistrationCryptoPrewarmPromise;if(e)return await e;let t=this.requestEcdsaRegistrationCryptoPrewarm();this.ecdsaRegistrationCryptoPrewarmPromise=t;let n=await t;return n.kind===`failed`&&this.ecdsaRegistrationCryptoPrewarmPromise===t&&(this.ecdsaRegistrationCryptoPrewarmPromise=null),n}async requestEcdsaRegistrationCryptoPrewarm(){let e=performance.now();try{return await this.requestDerivationOperation({type:du.PrewarmEcdsaRegistrationCrypto,payload:{}}),{kind:`succeeded`,wasmInitMs:sN(e)}}catch{return{kind:`failed`,wasmInitMs:sN(e)}}}async prewarmEmailOtpYao(e={kind:`requested`}){switch(e.kind){case`not_requested`:return{kind:`not_requested`,elapsedMs:0,workerPrewarmMs:0,yaoWasmInitMs:0};case`requested`:break;default:return lN(e)}let t=this.emailOtpYaoPrewarmPromise;if(t)return await t;let n=this.requestEmailOtpYaoPrewarm();this.emailOtpYaoPrewarmPromise=n;let r=await n;return r.kind===`failed`&&this.emailOtpYaoPrewarmPromise===n&&(this.emailOtpYaoPrewarmPromise=null),r}async requestEmailOtpYaoPrewarm(){let e=performance.now();try{let t=await this.requestOperation({kind:`emailOtp`,request:{type:`prewarmEmailOtpRegistrationCrypto`,payload:{}}}),n=sN(e);switch(t.kind){case`succeeded`:return{kind:`succeeded`,elapsedMs:n,workerPrewarmMs:n,yaoWasmInitMs:t.elapsedMs};case`failed`:return{kind:`failed`,elapsedMs:n,workerPrewarmMs:n,yaoWasmInitMs:t.elapsedMs,failureStage:t.failureStage};default:return cN(t)}}catch{let t=sN(e);return{kind:`failed`,elapsedMs:t,workerPrewarmMs:t,yaoWasmInitMs:0,failureStage:`worker_ready`}}}async requestOperation(e){return e.kind===`nearSigner`?await this.requestNearOperation(e.request):e.kind===`ecdsaDerivationClient`?e.request.type===du.DisposeLinkedDeviceEcdsaHolderMaterials&&!this.workers.has(`ecdsaDerivationClient`)?{type:fu.DisposeLinkedDeviceEcdsaHolderMaterialsSuccess,payload:e.request.payload}:await this.requestDerivationOperation(e.request):e.kind===`ecdsaPresignClient`?(this.connectPresignAuthorityChannel(e.request),await this.requestRpcOperation(`ecdsaPresignClient`,e.request)):e.kind===`ecdsaOnlineClient`?(this.connectPresignOnlineChannel(),await this.requestRpcOperation(`ecdsaOnlineClient`,e.request)):e.kind===`evmCrypto`?await this.requestRpcOperation(`evmCrypto`,e.request):e.kind===`tempoSigner`?await this.requestRpcOperation(`tempoSigner`,e.request):e.kind===`walletCustodyCeremony`?await this.requestRpcOperation(`walletCustodyCeremony`,e.request):e.request.type===`clearEmailOtpWarmSessionMaterial`&&!this.workers.has(`emailOtp`)?{ok:!0,cleared:!0}:await this.requestRpcOperation(e.kind,e.request)}async requestNearOperation({type:e,payload:t,onEvent:n,timeoutMs:r=eN.TIMEOUTS.DEFAULT,transfer:i}){let a=this.getOrCreateWorker(`nearSigner`),o=dN(`nearSigner`);return await new Promise((s,c)=>{let l=setTimeout(()=>{this.rejectRequest(`nearSigner`,o,new cu({message:`Worker operation timed out after ${r}ms`,code:`TIMEOUT`,workerKind:`nearSigner`})),uN(`nearSigner`,e,r),this.resetWorker(`nearSigner`);try{let e=Math.round(r/1e3);window.postMessage({type:`MODAL_TIMEOUT`,payload:`Timed out after ${e}s, try again`},`*`)}catch{}},r);this.getPendingMap(`nearSigner`).set(o,{resolve:e=>s(e),reject:c,onEvent:n?e=>n(e):void 0,timeoutId:l});try{a.postMessage({id:o,type:e,payload:t},i||[])}catch(e){this.rejectRequest(`nearSigner`,o,new cu({message:`[nearSigner] failed to postMessage: ${L(e)}`,code:`WORKER_POSTMESSAGE_ERROR`,workerKind:`nearSigner`}))}})}async requestDerivationOperation({type:e,payload:t,timeoutMs:n=eN.TIMEOUTS.DEFAULT,transfer:r}){let i=this.getOrCreateWorker(`ecdsaDerivationClient`),a=dN(`ecdsaDerivationClient`);return await new Promise((o,s)=>{let c=setTimeout(()=>{this.rejectRequest(`ecdsaDerivationClient`,a,new cu({message:`Worker operation timed out after ${n}ms`,code:`TIMEOUT`,workerKind:`ecdsaDerivationClient`})),uN(`ecdsaDerivationClient`,e,n),this.resetWorker(`ecdsaDerivationClient`)},n);this.getPendingMap(`ecdsaDerivationClient`).set(a,{resolve:e=>o(e),reject:s,timeoutId:c});try{i.postMessage({id:a,type:e,payload:t},r||[])}catch(e){this.rejectRequest(`ecdsaDerivationClient`,a,new cu({message:`[ecdsaDerivationClient] failed to postMessage: ${L(e)}`,code:`WORKER_POSTMESSAGE_ERROR`,workerKind:`ecdsaDerivationClient`}))}})}async requestRpcOperation(e,t){let n=this.getOrCreateWorker(e),r=dN(e),i=Math.floor(Number(t.timeoutMs)),a=Number.isFinite(i)&&i>0?i:2e4;return await new Promise((i,o)=>{let s=setTimeout(()=>{this.rejectRequest(e,r,new cu({message:`Worker operation timed out after ${a}ms`,code:`TIMEOUT`,workerKind:e})),uN(e,t.type,a),this.resetWorker(e)},a);this.getPendingMap(e).set(r,{resolve:e=>i(e),reject:o,onEvent:t.onEvent,timeoutId:s});try{n.postMessage({id:r,type:t.type,payload:t.payload},t.transfer||[])}catch(t){this.rejectRequest(e,r,new cu({message:`[${e}] failed to postMessage: ${L(t)}`,code:`WORKER_POSTMESSAGE_ERROR`,workerKind:e}))}})}getOrCreateWorker(e){let t=this.workers.get(e);if(t)return t;let n=this.createWorker(e),r=t=>{this.handleWorkerMessage(e,t)},i=t=>{this.handleWorkerError(e,t)};return n.addEventListener(`message`,r),n.addEventListener(`error`,i),this.workers.set(e,n),this.messageHandlers.set(e,r),this.errorHandlers.set(e,i),n}connectPresignAuthorityChannel(e){if(e.type!==mu.ListAvailable&&e.type!==mu.SessionInit)return;let t=this.getOrCreateWorker(`ecdsaPresignClient`),n=this.parsePresignAuthorityKind(e.payload);switch(n){case`role_local_derivation_handle`:this.connectDerivationPresignChannel(t,n);return;case`linked_holder_signing_material`:this.connectDerivationPresignChannel(t,n);return;default:}}parsePresignAuthorityKind(e){if(!O(e)||!O(e.authority))throw Error(`ECDSA presign init authority is required`);switch(e.authority.kind){case`role_local_derivation_handle`:case`linked_holder_signing_material`:return e.authority.kind;default:throw Error(`ECDSA presign init authority kind is invalid`)}}createLinkedHolderPresignAuthorityPortV1(){let e=this.getOrCreateWorker(`ecdsaPresignClient`);Vu();let t=new MessageChannel;return e.postMessage({kind:oN.AttachLinkedHolderToPresign,port:t.port1},[t.port1]),t.port2}connectDerivationPresignChannel(e,t){if(this.presignAuthorityKind===t)return;this.presignAuthorityKind!==null&&Vu();let n=this.getOrCreateWorker(`ecdsaDerivationClient`),r=new MessageChannel,i=t===`role_local_derivation_handle`?oN.AttachDerivationToPresign:oN.AttachLinkedHolderToPresign;n.postMessage({kind:i,port:r.port1},[r.port1]),e.postMessage({kind:i,port:r.port2},[r.port2]),this.presignAuthorityKind=t}connectPresignOnlineChannel(){if(this.presignOnlineConnected)return;let e=this.getOrCreateWorker(`ecdsaPresignClient`),t=this.getOrCreateWorker(`ecdsaOnlineClient`),n=new MessageChannel;e.postMessage({kind:oN.AttachPresignToOnline,port:n.port1},[n.port1]),t.postMessage({kind:oN.AttachPresignToOnline,port:n.port2},[n.port2]),this.presignOnlineConnected=!0}createWorker(e){try{if(e===`nearSigner`){let e=bf(eN.WORKER.URL,{worker:`signer`,baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:eN.WORKER.TYPE,name:eN.WORKER.NAME})}if(e===`ecdsaDerivationClient`){let e=bf(eN.ECDSA_DERIVATION_CLIENT_WORKER.URL,{worker:`ecdsaDerivationClient`,baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:eN.ECDSA_DERIVATION_CLIENT_WORKER.TYPE,name:eN.ECDSA_DERIVATION_CLIENT_WORKER.NAME})}if(e===`ecdsaPresignClient`){let e=bf(eN.ECDSA_PRESIGN_CLIENT_WORKER.URL,{worker:`ecdsaPresignClient`,baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:eN.ECDSA_PRESIGN_CLIENT_WORKER.TYPE,name:eN.ECDSA_PRESIGN_CLIENT_WORKER.NAME})}if(e===`ecdsaOnlineClient`){let e=bf(eN.ECDSA_ONLINE_CLIENT_WORKER.URL,{worker:`ecdsaOnlineClient`,baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:eN.ECDSA_ONLINE_CLIENT_WORKER.TYPE,name:eN.ECDSA_ONLINE_CLIENT_WORKER.NAME})}if(e===`emailOtp`){let e=iN({baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:`module`,name:`email-otp-worker`})}if(e===`walletCustodyCeremony`){let e=aN({baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:`module`,name:`wallet-custody-ceremony-worker`})}let t=rN(e,{baseOrigin:this.workerBaseOrigin});return new Worker(t,{type:`module`,name:`${e}-worker`})}catch(t){let n=t instanceof Error?t.message:String(t);throw Error(`Failed to create ${e} worker: ${n}`)}}handleWorkerMessage(e,t){let n=t.data;if(fN(n))return;if(e===`nearSigner`){this.handleNearWorkerMessage(n);return}if(e===`ecdsaDerivationClient`){this.handleEcdsaDerivationWorkerMessage(n);return}if(vN(n)){let t=this.getPendingMap(e).get(n.id);if(!t)return;t.onEvent?.(n.payload);return}if(gN(n)){this.resolveRequest(e,n.id,n.result);return}if(_N(n)){this.rejectRequest(e,n.id,new cu({message:n.error||`[${e}] worker error`,code:n.code,coreCode:n.coreCode,workerKind:e}));return}let r=O(n)&&typeof n.id==`string`?n.id:void 0;if(r&&this.getPendingMap(e).has(r)){this.rejectRequest(e,r,new cu({message:`Malformed worker response frame for request ${r}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:e}));return}this.getPendingMap(e).size!==0&&(this.rejectAllPending(e,new cu({message:`Unknown worker response frame: ${JSON.stringify(n)}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:e})),this.resetWorker(e))}handleNearWorkerMessage(e){if(pN(e)){let t=this.getPendingMap(`nearSigner`).get(e.id);if(!t)return;t.onEvent?.(e.payload);return}if(mN(e)){this.resolveNearResponse(e.id,e.result);return}if(hN(e)){this.rejectRequest(`nearSigner`,e.id,new cu({message:e.error,code:e.code,coreCode:e.coreCode,workerKind:`nearSigner`}));return}let t=O(e)&&typeof e.id==`string`?e.id:void 0;if(t&&this.getPendingMap(`nearSigner`).has(t)){this.rejectRequest(`nearSigner`,t,new cu({message:`Malformed worker response frame for request ${t}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:`nearSigner`}));return}this.getPendingMap(`nearSigner`).size!==0&&(this.rejectAllPending(`nearSigner`,new cu({message:`Unknown worker response frame: ${JSON.stringify(e)}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:`nearSigner`})),this.resetWorker(`nearSigner`))}handleEcdsaDerivationWorkerMessage(e){if(gN(e)){this.resolveRequest(`ecdsaDerivationClient`,e.id,e.result);return}if(_N(e)){this.rejectRequest(`ecdsaDerivationClient`,e.id,new cu({message:e.error||`[ecdsaDerivationClient] worker error`,code:e.code,coreCode:e.coreCode,workerKind:`ecdsaDerivationClient`}));return}let t=O(e)&&typeof e.id==`string`?e.id:void 0;if(t&&this.getPendingMap(`ecdsaDerivationClient`).has(t)){this.rejectRequest(`ecdsaDerivationClient`,t,new cu({message:`Malformed worker response frame for request ${t}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:`ecdsaDerivationClient`}));return}this.getPendingMap(`ecdsaDerivationClient`).size!==0&&(this.rejectAllPending(`ecdsaDerivationClient`,new cu({message:`Unknown worker response frame: ${JSON.stringify(e)}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:`ecdsaDerivationClient`})),this.resetWorker(`ecdsaDerivationClient`))}resolveNearResponse(e,t){this.getPendingMap(`nearSigner`).get(e)&&this.resolveRequest(`nearSigner`,e,t)}handleWorkerError(e,t){let n=new cu({message:`[${e}] worker runtime error: ${t.message||`unknown error`}`,code:`WORKER_RUNTIME_ERROR`,workerKind:e});this.rejectAllPending(e,n),this.resetWorker(e)}getPendingMap(e){let t=this.pendingByKind.get(e);if(t)return t;let n=new Map;return this.pendingByKind.set(e,n),n}resolveRequest(e,t,n){let r=this.getPendingMap(e).get(t);r&&(this.clearRequest(e,t),r.resolve(n))}rejectRequest(e,t,n){let r=this.getPendingMap(e).get(t);r&&(this.clearRequest(e,t),r.reject(n))}rejectAllPending(e,t){let n=Array.from(this.getPendingMap(e).keys());for(let r of n)this.rejectRequest(e,r,t)}clearRequest(e,t){let n=this.getPendingMap(e).get(t);n&&(n.timeoutId&&clearTimeout(n.timeoutId),this.getPendingMap(e).delete(t))}resetWorker(e){e===`ecdsaDerivationClient`?(this.presignAuthorityKind=null,this.resetWorker(`ecdsaPresignClient`)):e===`ecdsaPresignClient`?(this.presignAuthorityKind=null,this.presignOnlineConnected=!1,this.resetWorker(`ecdsaOnlineClient`),this.terminateWorkerOnly(`ecdsaDerivationClient`)):e===`ecdsaOnlineClient`&&(this.presignOnlineConnected=!1),(e===`ecdsaDerivationClient`||e===`ecdsaPresignClient`||e===`ecdsaOnlineClient`)&&Vu(),this.terminateWorkerOnly(e)}terminateWorkerOnly(e){let t=this.workers.get(e);if(!t)return;this.rejectAllPending(e,Error(`${e} worker was reset`));let n=this.messageHandlers.get(e),r=this.errorHandlers.get(e);n&&t.removeEventListener(`message`,n),r&&t.removeEventListener(`error`,r),t.terminate(),this.workers.delete(e),this.messageHandlers.delete(e),this.errorHandlers.delete(e),e===`walletCustodyCeremony`&&Qn()}};function bN(){return yN}function xN(e){let t=String(e.metadata?.walletId||``).trim();if(!t)return null;try{return z(t)}catch{return null}}function SN(e){let t=[],n=new Set;for(let r of e){let e=xN(r);if(!e)continue;let i=String(e);n.has(i)||(n.add(i),t.push(e))}return t}async function CN(e){let t=SN(await e.store.listAccountSignersByProfile({profileId:e.profileId,status:`active`}).catch(()=>[]));return t.length===1?t[0]:null}var wN=class{constructor(e){this.deps=e,this.confirmationConfigChangeListeners=new Set,this.currentWalletChangeListeners=new Set,this.currentWalletId=null,this.lifecycle={kind:`active`,revision:0},this.writeQueue=Promise.resolve(),this.confirmationConfig=Et,this.subscribeToIndexedDBChanges()}onConfirmationConfigChange(e){return this.confirmationConfigChangeListeners.add(e),()=>{this.confirmationConfigChangeListeners.delete(e)}}onCurrentWalletChange(e){return this.currentWalletChangeListeners.add(e),()=>{this.currentWalletChangeListeners.delete(e)}}notifyConfirmationConfigChange(e){if(this.confirmationConfigChangeListeners.size!==0)for(let t of this.confirmationConfigChangeListeners)try{t(e)}catch{}}notifyCurrentWalletChange(e){if(this.currentWalletChangeListeners.size!==0)for(let t of this.currentWalletChangeListeners)try{t(e)}catch{}}sanitizeConfirmationConfig(e){if(!e)return{};let{uiMode:t,behavior:n,autoProceedDelay:r}=e,i={};return t!=null&&(i.uiMode=t),n!=null&&(i.behavior=n),r!=null&&(i.autoProceedDelay=r),i}mergeConfirmationConfig(e,t){let n={...e,...t};return{uiMode:n.uiMode??Et.uiMode,behavior:n.behavior??Et.behavior,autoProceedDelay:n.autoProceedDelay??Et.autoProceedDelay}}async initFromIndexedDB(){await this.loadUserSettings().catch(e=>{console.warn(`[SigningEngine]: Failed to initialize user settings:`,e)})}subscribeToIndexedDBChanges(){this.unsubscribeFromIndexedDB=this.deps.store.onChange(e=>{this.handleIndexedDBEvent(e).catch(e=>{console.warn(`[SigningEngine]: Error handling IndexedDB event:`,e)})})}async handleIndexedDBEvent(e){switch(e.type){case`preferences-updated`:case`user-updated`:this.currentWalletId&&String(e.accountId)===String(this.currentWalletId)&&await this.reloadUserSettings();break;case`user-deleted`:this.currentWalletId&&String(e.accountId)===String(this.currentWalletId)&&(this.invalidateReads(),this.currentWalletId=null,this.confirmationConfig=Et,this.notifyCurrentWalletChange(null),this.notifyConfirmationConfigChange(this.confirmationConfig));break}}destroy(){this.lifecycle={kind:`disposed`},this.unsubscribeFromIndexedDB&&=(this.unsubscribeFromIndexedDB(),void 0),this.confirmationConfigChangeListeners.clear(),this.currentWalletChangeListeners.clear()}getCurrentWalletId(){return this.currentWalletId}getConfirmationConfig(){return this.confirmationConfig}setCurrentWallet(e){this.invalidateReads();let t=this.currentWalletId;this.currentWalletId=e,t!==e&&(this.confirmationConfig=Et,this.notifyCurrentWalletChange(e),this.notifyConfirmationConfigChange(this.confirmationConfig)),this.deps.store.isDisabled()||this.loadSettingsForWallet(e).catch(()=>void 0)}projectCurrentWallet(e){let t=this.currentWalletId;this.setCurrentWallet(e),t&&String(t)===String(e)&&this.notifyCurrentWalletChange(e)}assertActive(){if(this.lifecycle.kind===`disposed`)throw Error(`Wallet preferences are disposed`)}invalidateReads(){if(this.lifecycle.kind===`disposed`)throw Error(`Wallet preferences are disposed`);return++this.lifecycle.revision}async loadSettingsForWallet(e){if(this.deps.store.isDisabled())return;let t=this.invalidateReads(),n=await this.deps.store.getWalletPreferences(e);this.lifecycle.kind!==`active`||this.lifecycle.revision!==t||this.currentWalletId!==e||(this.confirmationConfig=this.mergeConfirmationConfig(Et,this.sanitizeConfirmationConfig(n.confirmationConfig)),this.notifyConfirmationConfigChange(this.confirmationConfig))}async reloadUserSettings(){let e=this.getCurrentWalletId();e&&await this.loadSettingsForWallet(e)}setConfirmationBehavior(e){return this.setConfirmationConfig({behavior:e})}setConfirmationConfig(e){this.invalidateReads();let t=this.currentWalletId,n=this.sanitizeConfirmationConfig(e),r=this.writeQueue.then(this.commitConfirmationConfig.bind(this,t,n));return this.writeQueue=r.then(TN,TN),r}async commitConfirmationConfig(e,t){this.assertActive();let n=this.confirmationConfig;if(e!==null){if(this.deps.store.isDisabled())throw Error(`Wallet preference storage is unavailable`);let t=await this.deps.store.getWalletPreferences(e);n=this.mergeConfirmationConfig(Et,this.sanitizeConfirmationConfig(t.confirmationConfig))}let r=this.mergeConfirmationConfig(n,t);if(e!==null&&(this.assertActive(),await this.deps.store.updateWalletPreferences({walletId:e,preferences:{confirmationConfig:r}})===null))throw Error(`Wallet preference target does not exist`);this.lifecycle.kind===`active`&&this.currentWalletId===e&&(this.invalidateReads(),this.confirmationConfig=r,this.notifyConfirmationConfigChange(r))}async loadUserSettings(){if(this.deps.store.isDisabled())return;let e=this.invalidateReads(),t=await $i(this.deps.store).catch(()=>null);if(!t){console.debug(`[SigningEngine]: No last user found, using default settings`);return}let n=await CN({store:this.deps.store,profileId:t.profileId});if(!n){console.debug(`[SigningEngine]: Last profile has no wallet-bound signer metadata`);return}this.lifecycle.kind!==`active`||this.lifecycle.revision!==e||(this.currentWalletId=n,this.confirmationConfig=Et,this.notifyCurrentWalletChange(n),this.notifyConfirmationConfigChange(this.confirmationConfig),await this.loadSettingsForWallet(n))}};function TN(){}function EN(e){let t=e.seamsWebConfigs.wallet,n=new KM(t.mode===`direct`?t.rpId:t.iframe.rpIdOverride),r=new wN({store:e.stores.userPreferencesStore}),i=e.seamsWebConfigs.network.chains,a=nu({evmNonceBackend:Kd({chains:i}),nearClient:e.nearClient,nonceLaneCoordinationStore:e.stores.nonceLaneCoordinationStore}),o=ne(i,`near`),s=ne(i,`tempo`),c=ne(i,`evm`),l=DM({signingSessionPersistenceMode:e.seamsWebConfigs.signing.sessionPersistenceMode,thresholdEcdsaSigningQueueByKey:e.thresholdEcdsaSigningQueueByKey,resolveCurrentEcdsaCapabilityRuntime:e.resolveActiveEcdsaCapabilityRuntime}),u=RA({},{touchIdPrompt:n,nearClient:e.nearClient,webauthnCredentialStore:e.stores.webauthnCredentialStore,passkeyAuthenticatorStore:e.stores.passkeyAuthenticatorStore,userPreferencesManager:r,nonceCoordinator:a,operationStepUpPreparation:Md,nearImplicitAccountFunding:Rd,relayerUrl:e.seamsWebConfigs.network.relayer.url,chains:i,rpIdOverride:n.getRpId(),nearExplorerUrl:o,tempoExplorerUrl:s,evmExplorerUrl:c,getTheme:e.getTheme,getAppearance:e.getAppearance,loadEcdsaRoleLocalReadyRecord:e.loadEcdsaRoleLocalReadyRecord,surfaceMeasurementBinding:{kind:`disabled`}});return{touchIdPrompt:n,userPreferencesManager:r,nonceCoordinator:a,touchConfirm:u,passkeyMpcExport:nj(u.getContext()),passkeyMpcSession:l,signerWorkerManager:new $M({resolveOperationStepUpCredential:e.resolveOperationStepUpCredential,nearKeyMaterialStore:e.stores.nearKeyMaterialStore,touchIdPrompt:n,touchConfirm:u,passkeyMpcSession:l,nearClient:e.nearClient,userPreferencesManager:r,nonceCoordinator:a,relayerUrl:e.seamsWebConfigs.network.relayer.url,workerTransport:bN(),chains:i,nearExplorerUrl:o,tempoExplorerUrl:s,evmExplorerUrl:c,getTheme:e.getTheme})}}const DN=new Map;function ON(e){return typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null?null:new Map(Object.entries(e))}function kN(e,t){let n=e.get(t);if(typeof n==`string`)return n.trim()||void 0}function AN(e){if(typeof e!=`string`)return null;let t=e.trim().toLowerCase();return t===`none`?`none`:t===`sealed_refresh_v1`?`sealed_refresh_v1`:null}function jN(e){let t=ON(e);if(!t)return null;let n=AN(t.get(`mode`));if(!n)return null;if(n===`none`)return{mode:`none`};let r=ON(t.get(`protocol`)),i=r?kN(r,`algorithm`):void 0,a=r?kN(r,`groupId`):void 0,o=kN(t,`currentKeyVersion`);return i!==`shamir3pass-v2`||a!==`rfc2409-group2`||!o?null:{mode:`sealed_refresh_v1`,protocol:{algorithm:Je,groupId:Ge},currentKeyVersion:o}}function MN(e){let t=ON(e);return t&&jN(ON(t.get(`capabilities`))?.get(`signingSessionSeal`))||{mode:`none`}}function NN(e){return e.signing.sessionPersistenceMode===`sealed_refresh_v1`?!(e.wallet.mode===`iframe`&&!gl()):!1}function PN(e){return[String(e.network.relayer.url||``).trim(),String(e.signing.sessionPersistenceMode||``).trim().toLowerCase(),Je,Ge,gl()?`wallet-host`:`app`,e.wallet.mode].join(`|`)}function FN(e,t){let n=Number(e);return!Number.isFinite(n)||n<=0?t:Math.max(250,Math.floor(n))}function IN(e,t){let n=Error(e);return n.code=t,n}function LN(e){if(e.signal?.aborted)throw IN(`Parity check aborted`,`sealed_refresh_parity_aborted`);let t=new AbortController,n=setTimeout(()=>t.abort(`timeout`),e.timeoutMs),r=()=>{try{t.abort(e.signal?.reason)}catch{}};return e.signal?.addEventListener(`abort`,r,{once:!0}),e.task(t.signal).finally(()=>{clearTimeout(n),e.signal?.removeEventListener(`abort`,r)}).catch(e=>{let n=e instanceof Error?e.message:String(e||`Unknown error`);throw t.signal.aborted?IN(`[sealed-refresh-parity] Failed to fetch relayer well-known capabilities: ${n}`,`sealed_refresh_parity_fetch_failed`):e})}async function RN(e){let t=String(e.relayerUrl||``).trim();if(!t)throw IN(`[sealed-refresh-parity] Missing relayer URL for capability check`,`sealed_refresh_parity_invalid_config`);let n=e.fetchImpl||fetch.bind(globalThis),r=FN(e.timeoutMs,8e3),i=`${t.replace(/\/+$/,``)}/.well-known/webauthn`;return await LN({timeoutMs:r,task:async e=>{let t=await n(i,{method:`GET`,headers:{Accept:`application/json`},signal:e});if(!t.ok)throw IN(`[sealed-refresh-parity] Well-known endpoint returned HTTP ${t.status}`,`sealed_refresh_parity_http_error`);let r={};try{r=await t.json()}catch{throw IN(`[sealed-refresh-parity] Well-known response is not valid JSON`,`sealed_refresh_parity_invalid_payload`)}return MN(r)}})}async function zN(e){if(!NN(e.configs))return;let t=PN(e.configs),n=DN.get(t);if(n){await n;return}let r=(async()=>{let t=String(e.configs.network.relayer.url||``).trim(),n=e.configs.signing.sessionPersistenceMode,r=await RN({relayerUrl:t,fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs}),i=[];if(r.mode!==n&&i.push(`mode`),r.mode===`sealed_refresh_v1`&&r.protocol.algorithm!==`shamir3pass-v2`&&i.push(`algorithm`),r.mode===`sealed_refresh_v1`&&r.protocol.groupId!==`rfc2409-group2`&&i.push(`groupId`),i.length>0)throw IN(`[sealed-refresh-parity] Client/server mismatch for fields: ${i.join(`, `)}. client={mode:${n},algorithm:${Je},groupId:${Ge}} server={mode:${r.mode}${r.mode===`sealed_refresh_v1`?`,algorithm:${r.protocol.algorithm},groupId:${r.protocol.groupId}`:``}}`,`sealed_refresh_parity_mismatch`)})().catch(e=>{throw DN.delete(t),e});DN.set(t,r),await r}function BN(e,t){let n=String(e??``).trim();if(!n)throw Error(`${t} is required`);return n}function VN(e,t){let n=Number(e);if(!Number.isSafeInteger(n)||n<1)throw Error(`${t} must be a positive integer`);return n}function HN(e){let t=s(e);if(!t.ok)throw Error(`thresholdSessionId is invalid`);return t.value}function UN(e){let t=e.bootstrap.session,n=e.bootstrap.capability;if(!t.walletId||!t.walletSessionId||!t.quotaId||!t.thresholdSessionId)throw Error(`Wallet custody Ed25519 bootstrap Wallet Session binding is invalid`);if(e.operationCredential.walletSessionId!==t.walletSessionId)throw Error(`Wallet custody Ed25519 operation credential does not identify the bootstrap session`);let r=String(e.identity.walletId);if(String(t.walletId)!==r||t.nearAccountId!==String(e.identity.nearAccountId)||t.thresholdSessionId!==e.identity.expectedThresholdSessionId||n.applicationBinding.wallet_id!==r||n.applicationBinding.key_creation_signer_slot!==e.identity.signerSlot||n.nearAccountId!==String(e.identity.nearAccountId)||n.lifecycle.accountId!==r||n.lifecycle.thresholdSessionId!==e.identity.expectedThresholdSessionId||n.lifecycle.signerSetId!==String(Ar(e.identity.signerSlot))||`ed25519:${Er(Uint8Array.from(n.registeredPublicKey))}`!==e.identity.expectedOperationalPublicKey)throw Error(`Wallet custody Ed25519 bootstrap identity changed`)}async function WN(e){let t=e.bootstrap.session,n=t.authorityScope;if(n.kind!==`email_otp`)throw Error(`Wallet custody Ed25519 bootstrap returned another authority kind`);let r=BN(e.providerSubject,`providerSubject`);if(n.providerUserId!==r)throw Error(`Wallet custody Ed25519 bootstrap provider subject changed`);if(e.authority.walletId!==t.walletId)throw Error(`Wallet custody Ed25519 Wallet Session authority changed wallets`);let i=yn({walletId:String(t.walletId),nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,walletSessionId:t.walletSessionId,authorizationId:t.authorizationId,quotaId:t.quotaId,thresholdSessionId:t.thresholdSessionId,remainingUses:t.remainingUses,expiresAtMs:t.expiresAtMs,runtimePolicyScope:t.runtimePolicyScope,signingRootId:t.signingRootId,signingRootVersion:t.signingRootVersion,routerAbNormalSigning:t.routerAbNormalSigning,walletSessionToken:e.operationCredential.token,home:e.operationCredential.home,nowMs:Date.now()});if(!i.ok)throw Error(`Wallet custody Ed25519 Wallet Session is unusable (${i.reason})`);return gr({walletId:t.walletId,nearAccountId:kr(t.nearAccountId),nearEd25519SigningKeyId:qo(t.nearEd25519SigningKeyId),providerSubjectId:r,signerSlot:VN(e.bootstrap.capability.applicationBinding.key_creation_signer_slot,`server capability signerSlot`),relayerUrl:BN(e.relayerUrl,`relayerUrl`),authority:e.authority,signingWalletSession:i.value})}function GN(e,t){return{activeClient:t,facts:{thresholdSessionId:e.thresholdSessionId,signer:e.signingLane.identity.signer,signingRootId:e.signingRootId,signingRootVersion:e.signingRootVersion,routerAbNormalSigning:e.routerAbNormalSigning,runtimePolicyScope:e.runtimePolicyScope,relayerUrl:e.relayerUrl}}}async function KN(e){let t={walletId:e.walletSession.walletId,nearAccountId:BN(e.nearAccountId,`nearAccountId`),signerSlot:VN(e.signerSlot,`signerSlot`),expectedOperationalPublicKey:BN(e.expectedOperationalPublicKey,`expectedOperationalPublicKey`),expectedThresholdSessionId:BN(e.expectedThresholdSessionId,`expectedThresholdSessionId`)};if(UN({bootstrap:e.bootstrap,identity:t,operationCredential:e.operationCredential}),e.metadata.applicationBinding.wallet_id!==String(e.walletSession.walletId)||e.metadata.applicationBinding.key_creation_signer_slot!==t.signerSlot||e.metadata.scope.threshold_session_id!==t.expectedThresholdSessionId||!b(e.metadata.materialActivation,e.bootstrap.capability.materialActivation))throw Error(`Wallet custody Ed25519 active client metadata changed`);let n=await WN({bootstrap:e.bootstrap,operationCredential:e.operationCredential,providerSubject:e.providerSubject,relayerUrl:e.relayerUrl,authority:e.authority}),r=new Zv(e.workerContext,e.activeClientHandle,e.metadata);try{let i=GN(n,r),a=await e.activateCapability(i);if(String(a.walletId)!==String(t.walletId)||String(a.nearAccountId)!==t.nearAccountId||!b(a.materialActivation,e.metadata.materialActivation))throw Error(`Wallet custody Ed25519 active client identity changed during activation`);return r=null,{thresholdSessionId:HN(n.thresholdSessionId),material:i,walletSessionState:n}}finally{r?.dispose()}}function qN(e,t){let n=e.trim();if(!n)throw Error(`Wallet custody Ed25519 projection requires ${t}`);return n}async function JN(e,t,n,r){let i=String(t.walletId),a=qN(String(n),`providerSubject`),o=(await e.listPublicCapabilityReferences()).filter(e=>String(e.walletId)===i&&b(e.materialActivation,r));if(o.length===0)return null;if(o.length!==1||!o[0])throw Error(`Wallet custody Ed25519 requires one exact public capability reference`);let s=o[0],c=(await e.listUsers()).filter(e=>String(e.walletId)===i&&String(e.nearAccountId)===String(s.nearAccountId));if(c.length!==1||!c[0])throw Error(`Wallet custody Ed25519 requires one exact persisted signer projection`);return{identity:s,user:c[0],providerSubject:a}}function YN(e){if(!e.authorization)throw Error(`Available Ed25519 lane requires Wallet Session authorization`);return Qc({signer:Vc({walletId:e.walletId,nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,signerSlot:e.signerSlot}),auth:e.auth,walletSessionId:e.authorization.operationCredential.walletSessionId,quotaId:e.authorization.session.quotaId,thresholdSessionId:e.thresholdSessionId})}function XN(e){let t=e.signer;return JSON.stringify([String(t.account.wallet.walletId),String(t.account.nearAccountId),String(t.nearEd25519SigningKeyId),t.signerSlot,rc(e.auth),String(e.thresholdSessionId)])}function ZN(e){return{kind:`near_ed25519_material_identity`,signer:Vc({walletId:e.walletId,nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,signerSlot:e.signerSlot}),auth:e.auth,thresholdSessionId:nc.thresholdEd25519Session(e.thresholdSessionId)}}function QN(e){return{kind:`near_ed25519_material_identity`,signer:e.signer,auth:e.auth,thresholdSessionId:e.thresholdSessionId}}function $N(e){switch(e.kind){case`exact_lane`:return{kind:`near_ed25519_material_identity`,signer:e.laneIdentity.signer,auth:e.laneIdentity.auth,thresholdSessionId:e.laneIdentity.thresholdSessionId};case`export_exact_lane`:return QN(e.laneIdentity);case`material_identity`:return e.materialIdentity;default:return nP(e)}}function eP(e,t){if(!Cd(e)||e.curve!==`ed25519`)return!1;let n=$N(t),r=n.signer;if(String(e.walletId)!==String(r.account.wallet.walletId)||String(e.nearAccountId)!==String(r.account.nearAccountId)||e.signerSlot!==r.signerSlot||String(e.thresholdSessionId)!==n.thresholdSessionId)return!1;switch(t.kind){case`exact_lane`:return e.authorizationState===`authorized`&&Mc(YN(e),t.laneIdentity);case`export_exact_lane`:return XN(ZN(e))===XN(n)&&b(e.materialActivation,t.materialActivation);case`material_identity`:return XN(ZN(e))===XN(n);default:return nP(t)}}function tP(e){switch(e.kind){case`exact_lane`:return JSON.stringify([e.kind,kc(e.laneIdentity)]);case`export_exact_lane`:return JSON.stringify([e.kind,XN(QN(e.laneIdentity)),Ad(e.materialActivation)]);case`material_identity`:return JSON.stringify([e.kind,XN(e.materialIdentity)]);default:return nP(e)}}function nP(e){throw Error(`Unknown Ed25519 capability rehydration subject: ${String(e)}`)}function rP(e){return e.binding.kind===`ed25519_yao_client_root_v1`}function iP(e){if(!rP(e))throw Error(`[SigningEngine][ed25519-export] export envelope has the wrong secret kind`);return e}function aP(e,t,n){let r=Object.keys(e).sort(),i=[...t].sort();if(r.length!==i.length||r.some((e,t)=>e!==i[t]))throw Error(`${n} fields are invalid`)}function oP(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<1)throw Error(`${t} is invalid`);return e}function sP(e){if(!Array.isArray(e)||e.length!==2||!Number.isSafeInteger(e[0])||!Number.isSafeInteger(e[1])||Number(e[0])<1||Number(e[1])<1||e[0]===e[1])throw Error(`Ed25519 export bootstrap participantIds are invalid`);return[Number(e[0]),Number(e[1])]}async function cP(e){let t=e.authorization.operationCredential,n=e.authorization.status,r=e.authorization.record.authorizationId,i=e.subject.signer,a=e.source;if(e.authorization.record.walletId!==i.account.wallet.walletId||e.authorization.record.authMethodId!==e.authorization.selectedAuthMethod.walletAuthMethodId||e.authorization.factorAuthority.factor.providerUserId!==e.subject.auth.providerSubjectId||!a.signingWorkerId||a.participantIds.length!==2||!a.registeredPublicKeyB64u)throw Error(`[SigningEngine][ed25519-export] sealed custody identity mismatch`);let o=Fo({kind:`router_ab_ed25519_yao_warm_recovery_bootstrap_request_v1`,walletId:String(i.account.wallet.walletId),nearAccountId:String(i.account.nearAccountId),nearEd25519SigningKeyId:String(i.nearEd25519SigningKeyId),signerSlot:i.signerSlot,thresholdSessionId:e.subject.thresholdSessionId,signingWorkerId:a.signingWorkerId,participantIds:a.participantIds});if(!o.ok)throw Error(o.message);let c=await e.fetch(`${new URL(e.relayerUrl).origin}${Mo}`,{method:`POST`,headers:{Authorization:`Bearer ${t.token}`,"Content-Type":`application/json`},body:JSON.stringify(o.value)}),l=await c.json().catch(()=>null);if(!c.ok){let e=l&&typeof l==`object`?l:null;throw Error(`[SigningEngine][ed25519-export] capability bootstrap failed (HTTP ${c.status}): ${String(e?.message||`invalid response`)}`)}let u=M(l,`Ed25519 export bootstrap`);if(aP(u,[`kind`,`walletId`,`nearAccountId`,`nearEd25519SigningKeyId`,`signerSlot`,`thresholdSessionId`,`walletSessionId`,`quotaId`,`signingWorkerId`,`thresholdExpiresAtMs`,`participantIds`,`runtimePolicyScope`,`routerAbNormalSigning`,`capability`],`Ed25519 export bootstrap`),u.kind!==`router_ab_ed25519_yao_v2_session_bootstrap_v1`)throw Error(`Ed25519 export bootstrap kind is invalid`);let d=D(u.walletId,`bootstrap.walletId`),f=D(u.nearAccountId,`bootstrap.nearAccountId`),p=D(u.nearEd25519SigningKeyId,`bootstrap.nearEd25519SigningKeyId`),m=s(u.thresholdSessionId),h=pt(u.walletSessionId),g=dt(u.quotaId),_=e.authorization.factorAuthority,v=Ae(u.runtimePolicyScope),y=ke(v),x=Ke(u.routerAbNormalSigning),S={kind:`router_ab_ed25519_yao_active_capability_v1`,...Ot(u.capability)},C=sP(u.participantIds),w=P(Uint8Array.from(S.registeredPublicKey));if(!m.ok||!h.ok||!g.ok||!y||!x||d!==String(i.account.wallet.walletId)||f!==String(i.account.nearAccountId)||p!==String(i.nearEd25519SigningKeyId)||m.value!==S.lifecycle.thresholdSessionId||h.value!==t.walletSessionId||g.value!==e.authorization.record.quotaId||oP(u.signerSlot,`bootstrap.signerSlot`)!==i.signerSlot||D(u.signingWorkerId,`bootstrap.signingWorkerId`)!==a.signingWorkerId||C[0]!==a.participantIds[0]||C[1]!==a.participantIds[1]||_.factor.providerUserId!==e.subject.auth.providerSubjectId||w!==a.registeredPublicKeyB64u||!b(S.materialActivation,e.expectedMaterialActivation))throw Error(`[SigningEngine][ed25519-export] capability bootstrap identity mismatch`);return{emailHashHex:_.verifier.emailHashHex,bootstrap:{kind:`router_ab_ed25519_yao_email_otp_recovery_v1`,session:{walletId:i.account.wallet.walletId,nearAccountId:f,nearEd25519SigningKeyId:p,authorityScope:{kind:`email_otp`,provider:_.factor.provider,providerUserId:_.factor.providerUserId},thresholdSessionId:m.value,authorizationId:r,walletSessionId:h.value,quotaId:g.value,expiresAtMs:Math.min(oP(u.thresholdExpiresAtMs,`bootstrap.thresholdExpiresAtMs`),n.expiresAtMs),participantIds:C,remainingUses:n.remainingUses,signingRootId:y.signingRootId,signingRootVersion:v.signingRootVersion,runtimePolicyScope:v,routerAbNormalSigning:x},capability:S}}}async function lP(e){let t=pP({subject:e.subject,expectedMaterialActivation:e.expectedMaterialActivation,result:e.authorization});return(await cP({subject:e.subject,authorization:t,source:e.source,expectedMaterialActivation:e.expectedMaterialActivation,relayerUrl:e.relayerUrl,fetch:e.fetch})).bootstrap}async function uP(e){let t=e.authorization.operationCredential,n=e.subject.signer;if(e.authorization.record.walletId!==n.account.wallet.walletId||e.authorization.record.authMethodId!==e.authorization.selectedAuthMethod.walletAuthMethodId||e.authorization.factorAuthority.factor.providerUserId!==e.subject.auth.providerSubjectId)throw Error(`[SigningEngine][ed25519-export] linked Wallet Session is unavailable`);let r=Fo({kind:`router_ab_ed25519_yao_warm_recovery_bootstrap_request_v1`,walletId:String(n.account.wallet.walletId),nearAccountId:String(n.account.nearAccountId),nearEd25519SigningKeyId:String(n.nearEd25519SigningKeyId),signerSlot:n.signerSlot,thresholdSessionId:e.subject.thresholdSessionId,signingWorkerId:e.source.signingWorkerId,participantIds:e.source.participantIds});if(!r.ok)throw Error(r.message);let i=await e.fetch(`${new URL(e.relayerUrl).origin}${Mo}`,{method:`POST`,headers:{Authorization:`Bearer ${t.token}`,"Content-Type":`application/json`},body:JSON.stringify(r.value)}),a=await i.json().catch(()=>null);if(!i.ok){let e=a&&typeof a==`object`?a:null;throw Error(`[SigningEngine][ed25519-export] linked capability bootstrap failed (HTTP ${i.status}): ${String(e?.message||`invalid response`)}`)}let o=M(a,`linked Ed25519 export bootstrap`);if(aP(o,[`kind`,`walletId`,`nearAccountId`,`nearEd25519SigningKeyId`,`signerSlot`,`thresholdSessionId`,`walletSessionId`,`quotaId`,`signingWorkerId`,`thresholdExpiresAtMs`,`participantIds`,`runtimePolicyScope`,`routerAbNormalSigning`,`capability`],`linked Ed25519 export bootstrap`),o.kind!==`router_ab_ed25519_yao_v2_session_bootstrap_v1`)throw Error(`linked Ed25519 export bootstrap kind is invalid`);let c=s(o.thresholdSessionId),l=pt(o.walletSessionId),u=dt(o.quotaId),d=Ae(o.runtimePolicyScope),f=Ke(o.routerAbNormalSigning),p={kind:`router_ab_ed25519_yao_active_capability_v1`,...Ot(o.capability)},m=sP(o.participantIds),h=P(Uint8Array.from(p.registeredPublicKey));if(!c.ok||!l.ok||!u.ok||!d||!f||D(o.walletId,`bootstrap.walletId`)!==String(n.account.wallet.walletId)||D(o.nearAccountId,`bootstrap.nearAccountId`)!==String(n.account.nearAccountId)||D(o.nearEd25519SigningKeyId,`bootstrap.nearEd25519SigningKeyId`)!==String(n.nearEd25519SigningKeyId)||oP(o.signerSlot,`bootstrap.signerSlot`)!==n.signerSlot||c.value!==p.lifecycle.thresholdSessionId||l.value!==t.walletSessionId||u.value!==e.authorization.record.quotaId||D(o.signingWorkerId,`bootstrap.signingWorkerId`)!==e.source.signingWorkerId||m[0]!==e.source.participantIds[0]||m[1]!==e.source.participantIds[1]||h!==e.source.registeredPublicKeyB64u||!b(p.materialActivation,e.expectedMaterialActivation))throw Error(`[SigningEngine][ed25519-export] linked capability identity mismatch`);return p}function dP(e,t){let n=0;for(let r of e)switch(r.kind){case`export_keys`:r.keyFamily===`ed25519`&&b(r.materialActivation,t)&&(n+=1);break;case`sign`:case`link_devices`:case`revoke_devices`:break;default:break}return n}function fP(e){let{authorization:t}=e,n=t.selectedAuthority,r=t.selectedAuthMethod,i=t.factorAuthority,a=t.record,o=t.operationCredential,s=t.status,c=s.status===`active`&&s.quotaLifecycle===`active`&&s.remainingUses>0||s.status===`exhausted`&&s.quotaLifecycle===`exhausted`&&s.remainingUses===0;if(n.state!==`active`||n.walletId!==e.subject.signer.account.wallet.walletId||r.status!==`active`||r.walletId!==e.subject.signer.account.wallet.walletId||r.walletAuthorityId!==n.authorityId||i.walletId!==e.subject.signer.account.wallet.walletId||i.bindingId!==r.walletAuthMethodId||i.verifier.emailHashHex!==r.emailHashHex||i.factor.providerUserId!==e.subject.auth.providerSubjectId||a.walletId!==e.subject.signer.account.wallet.walletId||a.authorityId!==n.authorityId||a.authMethodId!==r.walletAuthMethodId||String(a.authorityDigestB64u)!==String(n.authorityDigestB64u)||a.authorityRevocationEpoch!==n.revocationEpoch||!c||s.walletSessionId!==o.walletSessionId||s.quotaId!==a.quotaId||!lt(s.authorization,a)||o.walletSessionId.trim().length===0||o.token.trim().length===0||s.expiresAtMs<=Date.now()||dP(a.capabilitySubjects,e.expectedMaterialActivation)!==1)throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization identity mismatch`)}function pP(e){switch(e.result.kind){case`found`:return fP({subject:e.subject,expectedMaterialActivation:e.expectedMaterialActivation,authorization:e.result.authorization}),e.result.authorization;case`missing`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization is missing`);case`upgrade_required`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization requires an upgrade`);case`corrupt`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization is corrupt`);case`persistence_unavailable`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization persistence is unavailable`);case`exhausted`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization is exhausted`);case`expired`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization is expired`);case`superseded`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization is superseded`);case`authority_unavailable`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP authority is unavailable`);case`method_unavailable`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP method is unavailable`);case`capability_unavailable`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP export capability is unavailable`);default:return e.result}}function mP(e){if(e.material.activeClient.status().kind!==`active`)throw Error(`[SigningEngine][ed25519-export] wallet custody client is inactive`);let t=e.material.activeClient.metadata(),n=e.subject.signer;if(!b(t.materialActivation,e.expectedMaterialActivation)||e.material.facts.signer.account.wallet.walletId!==n.account.wallet.walletId||String(e.material.facts.signer.account.nearAccountId)!==String(n.account.nearAccountId)||e.material.facts.signer.nearEd25519SigningKeyId!==n.nearEd25519SigningKeyId||e.material.facts.signer.signerSlot!==n.signerSlot||t.applicationBinding.wallet_id!==n.account.wallet.walletId||t.applicationBinding.near_ed25519_signing_key_id!==n.nearEd25519SigningKeyId||t.applicationBinding.key_creation_signer_slot!==n.signerSlot)throw Error(`[SigningEngine][ed25519-export] wallet custody client changed the exact lane`);let r=s(t.scope.threshold_session_id);if(!r.ok)throw Error(`[SigningEngine][ed25519-export] threshold session id is invalid: ${r.error.message}`);return{kind:`router_ab_ed25519_yao_active_capability_v1`,materialActivation:t.materialActivation,activeCapabilityBinding:t.activeCapabilityBinding,registeredPublicKey:[...t.registeredPublicKey],nearAccountId:String(n.account.nearAccountId),applicationBinding:t.applicationBinding,runtimePolicyScope:e.material.facts.runtimePolicyScope,participantIds:t.participantIds,lifecycle:{lifecycleId:t.scope.lifecycle_id,rootShareEpoch:t.scope.root_share_epoch,accountId:t.scope.account_id,thresholdSessionId:r.value,signerSetId:t.scope.signer_set_id,signingWorkerId:t.scope.signing_worker_id},stateEpoch:Number(t.stateEpoch),registrationContinuity:{kind:`recovery`,activationTranscript:[...t.transcript]}}}async function hP(e){let t=e.subject.signer.account.wallet.walletId,n=pP({subject:e.subject,expectedMaterialActivation:e.expectedMaterialActivation,result:await e.readExactWalletSessionAuthorization({subject:e.subject,expectedMaterialActivation:e.expectedMaterialActivation})}),r=e.resolveActiveCapability(t,e.subject.signer.account.nearAccountId,e.expectedMaterialActivation),i=r?mP({subject:e.subject,expectedMaterialActivation:e.expectedMaterialActivation,material:r}):null,a=e.resolveEd25519YaoClientRootEnvelope?await e.resolveEd25519YaoClientRootEnvelope({subject:e.subject,capability:i,selectedMaterialActivation:e.expectedMaterialActivation}):null,o=a&&`envelope`in a?a.envelope:a,s=i;if(a&&`envelope`in a&&(s=await uP({subject:e.subject,authorization:n,source:a.source,expectedMaterialActivation:a.source.materialActivation,relayerUrl:e.relayerUrl,fetch:e.fetch})),o){if(!s)throw Error(`[SigningEngine][ed25519-export] Ed25519 export-root capability is unavailable`);return{kind:`wallet_custody_ed25519_export_context_v1`,lane:e.subject,authorization:n,material:{kind:`sealed_export_root`,materialActivation:s.materialActivation,capability:s,exportRootEnvelope:iP(o)}}}if(r){if(!i)throw Error(`[SigningEngine][ed25519-export] active Email OTP capability is unavailable`);return{kind:`wallet_custody_ed25519_export_context_v1`,lane:e.subject,authorization:n,material:{kind:`active_capability`,materialActivation:e.expectedMaterialActivation,capability:i}}}let c=await e.loadWalletCustodyMaterial();if(c.kind!==`found`)throw Error(`[SigningEngine][ed25519-export] sealed wallet custody material is unavailable`);let l=await cP({subject:e.subject,authorization:n,source:c.material.binding,expectedMaterialActivation:e.expectedMaterialActivation,relayerUrl:e.relayerUrl,fetch:e.fetch});return{kind:`wallet_custody_ed25519_export_context_v1`,lane:e.subject,authorization:n,material:{kind:`sealed_custody`,materialActivation:e.expectedMaterialActivation,capability:l.bootstrap.capability,walletCustodyEd25519Material:c.material,bootstrap:l.bootstrap,activateRecoveredCapability:t=>{if(t.operationCredential.walletSessionId!==n.operationCredential.walletSessionId||t.operationCredential.token!==n.operationCredential.token)throw Error(`[SigningEngine][ed25519-export] recovered capability credential does not match authorization`);return e.activateRecoveredCapability({activation:{...t.activation,bootstrap:l.bootstrap,emailHashHex:l.emailHashHex},operationCredential:t.operationCredential})}}}}async function gP(e){return await e.workerCtx.requestWorkerOperation({kind:`emailOtp`,request:{type:`sealEmailOtpWarmSessionMaterial`,timeoutMs:3e4,payload:{target:e.target,transport:{...e.transport,authorizationThresholdSessionId:e.authorizationThresholdSessionId}}}})}async function _P(e){return await e.worker.requestWorkerOperation({kind:`emailOtp`,request:{type:`getEmailOtpWarmSessionStatus`,timeoutMs:5e3,payload:{target:e.target}}})}async function vP(e){return await e.worker.requestWorkerOperation({kind:`emailOtp`,request:{type:`consumeEmailOtpWarmSessionUses`,timeoutMs:5e3,payload:{target:e.target,...typeof e.uses==`number`?{uses:e.uses}:{}}}})}async function yP(e){return await e.worker.requestWorkerOperation({kind:`emailOtp`,request:{type:`clearEmailOtpWarmSessionMaterial`,timeoutMs:5e3,payload:{target:e.target}}})}async function bP(e){return await e.workerCtx.requestWorkerOperation({kind:`emailOtp`,request:{type:`rehydrateEmailOtpEcdsaWarmSessionMaterial`,timeoutMs:6e4,payload:{target:e.target,sealedSecretB64u:e.sealedSecretB64u,remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs,transport:{...e.transport,authorizationThresholdSessionId:e.authorizationThresholdSessionId},restore:e.restore}}})}async function xP(e){return await e.workerCtx.requestWorkerOperation({kind:`emailOtp`,request:{type:`rehydrateEmailOtpEd25519YaoOperationMaterial`,timeoutMs:12e4,payload:e.payload}})}function SP(e){let{capability:t}=e;if(!t.auth||!e.hasWalletSessionAuthorization)return t.capability===`ed25519`?`authorization_required`:`auth_missing`;if(e.emailOtpSingleUseConsumed)return`prf_missing`;let n=t.prfClaim;if(t.capability===`ed25519`){let e=Pc({remainingUses:t.runtime.remainingUses,expiresAtMs:t.runtime.expiresAtMs});return e===`expired`||e===`exhausted`?`authorization_required`:n?.state===`unavailable`?`prf_unavailable`:n?.state===`warm`?`ready`:`prf_missing`}let r=Pc({remainingUses:t.runtime.remainingUses,expiresAtMs:t.runtime.expiresAtMs});return r===`expired`||r===`exhausted`?`authorization_required`:n?n.state===`unavailable`?`prf_unavailable`:n.state===`warm`?`ready`:`prf_missing`:`prf_missing`}function CP(e){let{capability:t}=e,n=t.runtime,r=t.auth,i=t.prfClaim,a=String(n?.thresholdSessionId||``).trim();if(!n){if(t.state!==`missing`&&t.state!==`invalid`)throw Error(`[WarmSessionStore] invalid ${e.label} capability: missing runtime must be missing or invalid`);if(r)throw Error(`[WarmSessionStore] invalid ${e.label} capability: missing runtime cannot have auth`);if(i)throw Error(`[WarmSessionStore] invalid ${e.label} capability: missing runtime cannot have warm-session status`);return}if(String(n.walletId)!==String(e.walletId))throw Error(`[WarmSessionStore] invalid ${e.label} capability: runtime wallet does not match envelope wallet`);if(!a)throw Error(`[WarmSessionStore] invalid ${e.label} capability: runtime is missing thresholdSessionId`);if(r){if(String(r.session.walletId)!==String(n.walletId))throw Error(`[WarmSessionStore] invalid ${e.label} capability: authorization wallet does not match runtime`);if(r.selectedAuthMethod.kind!==n.factor.kind)throw Error(`[WarmSessionStore] invalid ${e.label} capability: authorization factor does not match runtime`)}if(i){if(String(i.thresholdSessionId||``).trim()!==a)throw Error(`[WarmSessionStore] invalid ${e.label} capability: warm-session status thresholdSessionId does not match record thresholdSessionId`);switch(i.state){case`warm`:if(i.remainingUses<=0||i.expiresAtMs<=0)throw Error(`[WarmSessionStore] invalid ${e.label} capability: warm warm-session status requires positive remainingUses and expiresAtMs`);break;case`unavailable`:if(!String(i.code||``).trim())throw Error(`[WarmSessionStore] invalid ${e.label} capability: unavailable warm-session status requires a code`);break;case`missing`:case`expired`:case`exhausted`:break;default:throw Error(`[WarmSessionStore] unsupported warm-session claim state`)}}let o=SP({capability:t,hasWalletSessionAuthorization:!!r,emailOtpSingleUseConsumed:!1});if(t.state!==o)throw Error(`[WarmSessionStore] invalid ${e.label} capability: state=${t.state} does not match derived state=${o}`)}function wP(e){let{capability:t}=e,n=t.runtime,r=t.manifest.durableMaterial.roleLocalPublicFacts;if(String(n.walletId)!==String(e.walletId))throw Error(`[WarmSessionStore] invalid ${e.label} capability: runtime wallet does not match envelope wallet`);if(String(t.key.walletId)!==String(e.walletId))throw Error(`[WarmSessionStore] invalid ${e.label} capability: key wallet does not match envelope wallet`);if(String(t.key.thresholdOwnerAddress).toLowerCase()!==String(r.ethereumAddress).toLowerCase())throw Error(`[WarmSessionStore] invalid ${e.label} capability: key owner address does not match manifest public facts`);if(t.state===`authorization_required`){if(t.lane)throw Error(`[WarmSessionStore] invalid ${e.label} capability: authorization_required cannot carry a lane`);return}if(!t.lane)throw Error(`[WarmSessionStore] invalid ${e.label} capability: authorized ECDSA capability requires a lane`);if(!Fr(t.lane.identity.signer.chainTarget,n.chainTarget))throw Error(`[WarmSessionStore] invalid ${e.label} capability: lane chain target does not match runtime chain target`);if(String(t.lane.materialActivation.activationId)!==String(n.materialActivation.activationId))throw Error(`[WarmSessionStore] invalid ${e.label} capability: lane material activation does not match runtime`);if(ec(t.lane.auth)!==n.authBinding.kind)throw Error(`[WarmSessionStore] invalid ${e.label} capability: lane authMethod does not match sealed auth binding`);if(t.emailOtpAuthContext&&n.authBinding.kind!==`email_otp`)throw Error(`[WarmSessionStore] invalid ${e.label} capability: non-email_otp binding cannot carry email-otp auth context`)}function TP(e){let{capability:t}=e;if(t.state!==`missing`){if(t.capability===`ecdsa`){if(t.state===`invalid`)return;wP({walletId:e.walletId,label:e.label,capability:t});return}CP(e)}}function EP(e){return TP({walletId:e.walletId,label:`ed25519`,capability:e.capabilities.ed25519}),TP({walletId:e.walletId,label:`ecdsa.evm`,capability:e.capabilities.ecdsa.evm}),TP({walletId:e.walletId,label:`ecdsa.tempo`,capability:e.capabilities.ecdsa.tempo}),e}function DP(e){switch(e.kind){case`passkey`:return{kind:`passkey`,rpId:Ha(e.rpId),credentialIdB64u:e.credentialIdB64u};case`email_otp`:return{kind:`email_otp`,providerSubjectId:e.providerSubjectId};default:throw Error(`[WarmSessionStore] unsupported ECDSA runtime auth binding`)}}async function OP(e){if(!e.resolve||e.resolution.kind!==`resolved`)return null;try{return await e.resolve({walletId:e.walletId,chainTarget:e.resolution.runtime.chainTarget,materialActivation:e.resolution.manifest.activation.materialActivation},e.statusReads)}catch{return null}}function kP(e){return e.kind===`resolved`?oh({thresholdSessionId:e.runtime.sealedRecord.thresholdSessionId,remainingUses:e.runtime.remainingUses,expiresAtMs:e.runtime.expiresAtMs}):null}function AP(e){async function t(t,n){let r=e.resolveActiveEd25519WalletSessionAuthorization;if(!r)return null;try{return await r(t,n)}catch{return null}}function n(e){if(e.resolution.kind===`missing`)return{capability:`ed25519`,runtime:null,auth:null,prfClaim:null,state:`missing`};if(e.resolution.kind===`conflict`||e.resolution.kind===`corrupt`)return{capability:`ed25519`,runtime:null,auth:null,prfClaim:null,invalidReason:e.resolution.kind===`conflict`?`exact_record_conflict`:`corrupt`,state:`invalid`};let t=e.resolution.runtime,n=th({runtime:t,auth:e.auth,prfClaim:e.prfClaim});if(n===`authorization_required`)return{capability:`ed25519`,runtime:t,auth:null,prfClaim:e.prfClaim,state:n};if(n===`missing`||n===`invalid`)throw Error(`[WarmSessionStore] Ed25519 capability state=${n} with resolved material`);if(!e.auth)throw Error(`[WarmSessionStore] Ed25519 capability state=${n} requires active authorization`);return{capability:`ed25519`,runtime:t,auth:e.auth,prfClaim:e.prfClaim,state:n}}function r(e){if(e.resolution.kind===`blocked`){let t=e.resolution.reason;return t===`missing_capability`||t===`missing_material`?{capability:`ecdsa`,manifest:null,runtime:null,key:null,lane:null,auth:null,prfClaim:null,state:`missing`}:{capability:`ecdsa`,manifest:null,runtime:null,key:null,lane:null,auth:null,prfClaim:null,invalidReason:t,state:`invalid`}}let{manifest:t,runtime:n}=e.resolution,r=t.durableMaterial.roleLocalPublicFacts,i=so({walletId:n.walletId,ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,signingRootId:String(r.signingRootId),signingRootVersion:String(r.signingRootVersion),participantIds:[...n.participantIds],thresholdOwnerAddress:String(r.ethereumAddress)}),a=n.authBinding,o=nh({runtime:n,auth:e.authorization,prfClaim:e.prfClaim,emailOtpAuthContext:null});if(o===`authorization_required`)return{capability:`ecdsa`,manifest:t,runtime:n,key:i,lane:null,auth:null,prfClaim:e.prfClaim,emailOtpAuthContext:null,state:o};if(!e.authorization)throw Error(`[WarmSessionStore] ECDSA capability without authorization must be authorization_required`);if(o===`missing`||o===`invalid`)throw Error(`[WarmSessionStore] ECDSA capability state=${o} with resolved material`);let s=Zc({key:i,materialActivation:n.materialActivation,keyHandle:n.keyHandle,walletId:n.walletId,auth:DP(a),authorization:e.authorization,chainTarget:n.chainTarget});if(o===`ready`||o===`material_pending`){if(!e.prfClaim||e.prfClaim.state!==`warm`)throw Error(`[WarmSessionStore] ECDSA capability state=${o} requires a warm PRF claim`);return{capability:`ecdsa`,manifest:t,runtime:n,key:i,lane:s,auth:e.authorization,prfClaim:e.prfClaim,state:o}}return o===`auth_missing`?{capability:`ecdsa`,manifest:t,runtime:n,key:i,lane:s,auth:null,prfClaim:e.prfClaim,state:o}:{capability:`ecdsa`,manifest:t,runtime:n,key:i,lane:s,auth:e.authorization,prfClaim:e.prfClaim,state:o}}async function i(i){let a=z(i),o=new el,[s,c,l,u]=await Promise.all([It(a),t(a,o),e.resolveActiveEcdsaCapabilityRuntimeForChain({walletId:a,chain:`evm`}),e.resolveActiveEcdsaCapabilityRuntimeForChain({walletId:a,chain:`tempo`})]),[d,f]=await Promise.all([OP({resolve:e.resolveActiveEcdsaWalletSessionAuthorization,walletId:a,resolution:l,statusReads:o}),OP({resolve:e.resolveActiveEcdsaWalletSessionAuthorization,walletId:a,resolution:u,statusReads:o})]);return EP({walletId:a,capabilities:{ed25519:n({resolution:s,auth:c,prfClaim:s.kind===`resolved`?await e.statusReader.readEd25519WarmSessionClaim(s.runtime):null}),ecdsa:{evm:r({resolution:l,prfClaim:kP(l),authorization:d}),tempo:r({resolution:u,prfClaim:kP(u),authorization:f})}},updatedAtMs:Date.now()})}async function a(t){let n=await e.resolveActiveEcdsaCapabilityRuntime({walletId:t.lane.signer.walletId,chainTarget:t.lane.signer.chainTarget});return r({resolution:n,prfClaim:kP(n),authorization:t.authorization})}function o(){return e.signingSessionSeal.seal===`configured`?{groupId:String(e.signingSessionSeal.groupId||``).trim()}:{groupId:``}}async function s(t){let n=await e.resolveActiveEcdsaCapabilityRuntime({walletId:t.lane.signer.walletId,chainTarget:t.lane.signer.chainTarget});if(n.kind!==`resolved`)return null;let r=o();return ih({runtime:n.runtime,auth:t.authorization,groupId:r.groupId})}return{getWarmSession:i,getEcdsaCapabilityForLane:a,resolveEcdsaSealTransportForLane:s}}function jP(e){switch(e.factor.kind){case H.passkey:return{authMethod:H.passkey};case H.emailOtp:return{authMethod:H.emailOtp,retention:`session`};default:throw e.factor,Error(`[WarmSessionStore] unsupported Ed25519 runtime factor`)}}async function MP(e){return Pt({runtime:e.runtime,authorization:e.authorization})}function NP(e){let t=Zm(e.touchConfirm);async function n(e){let t=String(e.thresholdSessionId);return await r({authMethod:e.factor.kind,thresholdSessionId:t,materialActivation:e.sealedRecord.ed25519Restore.materialActivation})}async function r(n){if(n.authMethod===H.emailOtp){let t=await e.getEmailOtpWarmSessionStatus({kind:`ed25519_yao`,thresholdSessionId:n.thresholdSessionId,materialActivation:n.materialActivation}).catch(()=>({ok:!1,code:`worker_error`,message:`worker_error`}));return eh({thresholdSessionId:n.thresholdSessionId,status:t})}return await $m(t,n.thresholdSessionId)}async function i(e){let t=e.runtime,r=String(t.thresholdSessionId),i=jP(t);if(!e.authorization||!await MP({runtime:t,authorization:e.authorization}))return{sessionId:r,status:`unavailable`,statusCode:`auth_missing`,...i};if(e.authorization.status.expiresAtMs<=e.nowMs||t.expiresAtMs<=e.nowMs)return{sessionId:r,status:`expired`,expiresAtMs:Math.min(e.authorization.status.expiresAtMs,t.expiresAtMs),...i};if(t.remainingUses<=0)return{sessionId:r,status:`exhausted`,remainingUses:0,expiresAtMs:t.expiresAtMs,...i};let a=rh({sessionId:r,claim:await n(t),authMethod:i.authMethod,retention:i.retention??null});return a.status===`not_found`?{sessionId:r,status:`active`,remainingUses:t.remainingUses,expiresAtMs:t.expiresAtMs,...i}:a}return{getEd25519SigningSessionStatus:i,readEd25519WarmSessionClaim:n}}function PP(){return{ok:!1,code:`not_found`,message:`Email OTP warm-session status reader is unavailable`}}function FP(e){let t=Zm(e.touchConfirm),n=e.getEmailOtpWarmSessionStatus;return n?{runtimeStatus:`configured`,touchConfirm:t,getEmailOtpWarmSessionStatus:n}:t?.statusPort===`single`||t?.statusPort===`single_and_batch`?{runtimeStatus:`configured`,touchConfirm:t,getEmailOtpWarmSessionStatus:async e=>await t.getWarmSessionStatus({thresholdSessionId:e.thresholdSessionId})}:t?{runtimeStatus:`configured`,touchConfirm:t,getEmailOtpWarmSessionStatus:async()=>PP()}:{runtimeStatus:`no_runtime_status`,touchConfirm:null,getEmailOtpWarmSessionStatus:async()=>PP()}}function IP(e){let t=String(e?.groupId||``).trim();return t?{seal:`configured`,groupId:t}:{seal:`unconfigured`}}function LP(e){let t=FP(e),n=NP({touchConfirm:t.touchConfirm,getEmailOtpWarmSessionStatus:t.getEmailOtpWarmSessionStatus});return AP({resolveActiveEcdsaCapabilityRuntime:e.resolveActiveEcdsaCapabilityRuntime,resolveActiveEcdsaCapabilityRuntimeForChain:e.resolveActiveEcdsaCapabilityRuntimeForChain,statusReader:n,signingSessionSeal:IP(e.signingSessionSeal),...e.resolveActiveEcdsaWalletSessionAuthorization?{resolveActiveEcdsaWalletSessionAuthorization:e.resolveActiveEcdsaWalletSessionAuthorization}:{},...e.resolveActiveEd25519WalletSessionAuthorization?{resolveActiveEd25519WalletSessionAuthorization:e.resolveActiveEd25519WalletSessionAuthorization}:{}})}function RP(e){return!e.ok&&(e.code===`not_found`||e.code===`worker_error`)}function zP(e){let{base:t,secondary:n}=e,r=async e=>{let r=await n.readWarmSessionStatusOnly(e.thresholdSessionId);return RP(r)?await t.getWarmSessionStatus(e):r},i=async e=>{let r=await Promise.all(e.thresholdSessionIds.map(async e=>({thresholdSessionId:e,result:await n.readWarmSessionStatusOnly(e)}))),i=r.filter(e=>RP(e.result)).map(e=>e.thresholdSessionId),a=i.length===0?{results:[]}:typeof t.getWarmSessionStatuses==`function`?await t.getWarmSessionStatuses({thresholdSessionIds:i}):{results:await Promise.all(i.map(async e=>({thresholdSessionId:e,result:await t.getWarmSessionStatus({thresholdSessionId:e})})))},o=new Map(a.results.map(e=>[e.thresholdSessionId,e]));return{results:r.map(e=>RP(e.result)&&o.get(e.thresholdSessionId)||e)}},a=async e=>{await Promise.all([t.clearVolatileWarmSessionMaterial(e).catch(()=>void 0),n.clearVolatileWarmSessionMaterial(e).catch(()=>void 0)])};return new Proxy(t,{get:(e,t,n)=>{if(t===`getWarmSessionStatus`)return r;if(t===`getWarmSessionStatuses`)return i;if(t===`clearVolatileWarmSessionMaterial`)return a;let o=Reflect.get(e,t,n);return typeof o==`function`?o.bind(e):o}})}function BP(e){let{base:t,secondary:n}=e;return{getWarmSessionStatus:async e=>{let r=await n.readWarmSessionStatusOnly(e.thresholdSessionId);return RP(r)?await t.getWarmSessionStatus(e):r},getWarmSessionStatuses:async e=>{let r=Array.from(new Set((Array.isArray(e.thresholdSessionIds)?e.thresholdSessionIds:[]).map(e=>String(e||``).trim()).filter(Boolean))),i=await Promise.all(r.map(async e=>({thresholdSessionId:e,result:await n.readWarmSessionStatusOnly(e)}))),a=i.filter(e=>RP(e.result)).map(e=>e.thresholdSessionId),o=a.length===0?{results:[]}:await t.getWarmSessionStatuses({thresholdSessionIds:a}),s=new Map(o.results.map(e=>[e.thresholdSessionId,e.result]));return{results:i.map(e=>RP(e.result)?{thresholdSessionId:e.thresholdSessionId,result:s.get(e.thresholdSessionId)||e.result}:e)}}}}function VP(e){return{queueByWallet:e.queueByWallet,activationDeps:e.activationDeps,persistEcdsaRoleLocalReadyRecord:e.persistEcdsaRoleLocalReadyRecord}}function HP(e){return{getWarmSession:t=>e.capabilityReader.getWarmSession(t),discoverPersistedSessionsForWallet:e.passkeyMpcSession.discoverPersistedSessionsForWallet.bind(e.passkeyMpcSession)}}function UP(e){let t=Vl(e),n=Wl(e);return e.source===`registration`?{kind:`key_enrollment_bootstrap_parity`,walletId:t,chainTarget:n}:e.operationIntent===tc.TransactionSign?{kind:`transaction_bootstrap_parity`,walletId:t,chainTarget:n,operationIntent:tc.TransactionSign}:e.kind===`email_otp_ecdsa_bootstrap`?{kind:`email_otp_bootstrap_parity`,walletId:t,chainTarget:n,authMethod:`email_otp`}:{kind:`default_bootstrap_parity`,walletId:t,chainTarget:n}}async function WP(e,t){return await zl(VP(e),t)}function GP(e){let t=e.error instanceof Error?e.error.message:String(e.error||`unknown error`);return{ok:!1,code:KP(e.error),chainTargetKey:e.chainTargetKey,errorMessage:t}}function KP(e){let t=Hu(e);if(t)switch(t.kind){case`expired`:return`sealed_record_expired`;case`exhausted`:return`sealed_record_exhausted`;case`missing`:case`invalid`:case`unavailable`:return`sealed_restore_failed`}switch(e&&typeof e==`object`?Reflect.get(e,`code`):void 0){case`expired`:return`sealed_record_expired`;case`exhausted`:return`sealed_record_exhausted`;default:return`sealed_restore_failed`}}async function qP(e,t,n){let r=n.chainTarget,i=B(r);if((await e.getWarmSession(t)).capabilities.ed25519.state!==`ready`)return{ok:!1,code:`missing_exact_material`,chainTargetKey:i};try{await e.discoverPersistedSessionsForWallet({kind:`discover_wallet_ecdsa_signing_sessions`,walletId:t,ecdsaChainTargets:[r],maxRecords:1})}catch(e){return console.warn(`[SigningEngine][ecdsa] reuse warm sealed discovery failed`,{walletId:t,chainTarget:r,error:e instanceof Error?e.message:String(e||`unknown error`)}),GP({chainTargetKey:i,error:e})}return{ok:!1,code:`missing_exact_material`,chainTargetKey:i}}function JP(e){switch(e.code){case`missing_exact_material`:return`[SigningEngine][ecdsa] reuse_warm_ecdsa_bootstrap requires restored passkey ECDSA material for ${e.chainTargetKey}`;case`sealed_restore_failed`:return`[SigningEngine][ecdsa] reuse_warm_ecdsa_bootstrap sealed restore failed for ${e.chainTargetKey}: ${e.errorMessage||`unknown error`}`;case`sealed_record_expired`:return`[SigningEngine][ecdsa] reuse_warm_ecdsa_bootstrap sealed record expired for ${e.chainTargetKey}`;case`sealed_record_exhausted`:return`[SigningEngine][ecdsa] reuse_warm_ecdsa_bootstrap sealed record exhausted for ${e.chainTargetKey}`}return`[SigningEngine][ecdsa] reuse_warm_ecdsa_bootstrap failed`}function YP(e){return Error(JP(e))}async function XP(e,t){await Yu(e.ensureSealedRefreshStartupParity,UP(t));let n=z(Vl(t));switch(t.kind){case`reuse_warm_ecdsa_bootstrap`:{let r=await qP(HP(e),n,t);return r.ok?{ok:!0,bootstrap:r.bootstrap}:{ok:!1,kind:`reuse_failed`,failure:r}}case`passkey_fresh_ecdsa_bootstrap`:case`passkey_preauthorized_ecdsa_bootstrap`:case`wallet_session_reconnect_ecdsa_bootstrap`:case`email_otp_ecdsa_bootstrap`:return{ok:!0,bootstrap:await WP(e,t)}}throw Error(`[SigningEngine][ecdsa] unsupported warm bootstrap request`)}function ZP(e){return typeof e?.clearAllVolatileWarmSessionMaterial==`function`}function QP(e){return typeof e?.clearVolatileWarmSessionMaterial==`function`}async function $P(e){let t=new Set,n=await Promise.all([en({walletId:e,filter:{authMethod:`passkey`,curve:`ed25519`}}),en({walletId:e,filter:{authMethod:`email_otp`,curve:`ed25519`}})]);for(let e of n.flat()){let n=s(e.thresholdSessionIds.ed25519);n.ok&&t.add(n.value)}return[...t]}async function eF(e,t){if(t==null&&ZP(e.touchConfirm)){await e.touchConfirm.clearAllVolatileWarmSessionMaterial(zm()).catch(()=>void 0);return}let n=t==null?[]:await $P(t);QP(e.touchConfirm)&&await Promise.all(n.map(t=>e.clearVolatileThresholdSessionMaterial(Rm(t)).catch(()=>void 0)))}function tF(e){switch(e.kind){case`rehydrated`:return e;case`device_link_required`:throw Error(`ECDSA login prefill requires local role-local material`);case`corrupt`:throw Error(`ECDSA login prefill role-local material is corrupt (${e.reason}): ${e.message}`);default:{let t=e;throw Error(`Unsupported ECDSA login prefill material state: ${String(t)}`)}}}function nF(e){return{kind:`router_ab_ecdsa_derivation_client_signing_material_source_v1`,initClientPresignSession:async t=>{let n=tF(await hd({purpose:`wallet_unlock`,source:ld({authority:e.manifest.signer.authority,materialActivation:e.manifest.durableMaterial.materialActivation,publicFacts:e.manifest.durableMaterial.roleLocalPublicFacts}),workerCtx:t.workerCtx}));return await pu({materialHandle:n.liveHandle.materialHandle,material:{kind:`persisted`,materialRef:n.materialRef},...t})},stepClientPresignSession:Tu,abortClientPresignSession:ou,admitClientPresignature:au,destroyClientPresignature:su,reserveClientPresignature:iu,commitClientPresignature:Pu,listAvailableClientPresignatures:gu.bind(void 0,`role_local_derivation_handle`),computeSignatureShareFromPresignatureHandle:_u}}function rF(e){let t={exportArtifactsByLane:e.ecdsaExportArtifacts.exportArtifactsByLane},n=BP({base:e.passkeyMpcSession,secondary:{readWarmSessionStatusOnly:t=>e.getEmailOtpWarmSessionStatus({kind:`ecdsa`,thresholdSessionId:t})}}),r=NP({touchConfirm:n,getEmailOtpWarmSessionStatus:e.getEmailOtpWarmSessionStatus});return{ecdsaSessions:t,statusUiConfirm:n,capabilityReader:LP({resolveActiveEcdsaCapabilityRuntime:e.resolveActiveEcdsaCapabilityRuntime,resolveActiveEcdsaCapabilityRuntimeForChain:e.resolveActiveEcdsaCapabilityRuntimeForChain,touchConfirm:e.passkeyMpcSession,signingSessionSeal:e.signingSessionSeal.mode===`sealed_refresh_v1`?{groupId:Ge}:null,getEmailOtpWarmSessionStatus:e.getEmailOtpWarmSessionStatus,...e.resolveActiveEcdsaWalletSessionAuthorization?{resolveActiveEcdsaWalletSessionAuthorization:e.resolveActiveEcdsaWalletSessionAuthorization}:{},...e.resolveActiveEd25519WalletSessionAuthorization?{resolveActiveEd25519WalletSessionAuthorization:e.resolveActiveEd25519WalletSessionAuthorization}:{}}),statusReader:r}}function iF(e){return{getWarmSession:t=>e.warmSigning.capabilityReader.getWarmSession(z(t)),provisionThresholdEd25519Session:async t=>await km({credentialStore:e.credentialStore,touchIdPrompt:e.touchIdPrompt,touchConfirm:e.passkeyMpcSession,defaultRelayerUrl:e.seamsWebConfigs.network.relayer?.url||``,getSignerWorkerContext:()=>e.walletSessionActivationDeps.getSignerWorkerContext()},t),bootstrapEcdsaSession:async t=>{let n=await XP({ensureSealedRefreshStartupParity:e.ensureSealedRefreshStartupParity,queueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,activationDeps:e.walletSessionActivationDeps,passkeyMpcSession:e.passkeyMpcSession,persistEcdsaRoleLocalReadyRecord:e.persistEcdsaRoleLocalReadyRecord,capabilityReader:e.warmSigning.capabilityReader},t);if(n.ok)return n.bootstrap;switch(n.kind){case`reuse_failed`:throw YP(n.failure)}throw Error(`[SigningEngine][ecdsa] unsupported warm bootstrap result`)}}}function aF(e){return{statusReader:e.warmSigning.statusReader,persistThresholdEcdsaBootstrapForWalletTarget:async t=>await Mm({bootstrapStore:e.bootstrapStore,walletId:t.walletId,chainTarget:t.chainTarget,bootstrap:t.bootstrap,signerAuth:t.signerAuth}),hydrateSigningSession:async t=>await nl(e.passkeyMpcSession,t),clearVolatileWarmSigningMaterial:async t=>await eF({touchConfirm:e.passkeyMpcSession,clearVolatileThresholdSessionMaterial:async t=>await e.passkeyMpcSession.clearVolatileWarmSessionMaterial(t)},t),getWalletSessionStatus:t=>e.signingSessionCoordinator.getAvailableStatus(t),routerAbEcdsaDerivationPresignaturePoolPolicy:e.seamsWebConfigs.signing.routerAbEcdsaDerivation.presignaturePool,getSignerWorkerContext:()=>e.walletSessionActivationDeps.getSignerWorkerContext(),resolveClientSigningMaterialSource:nF}}function oF(e){return{availableLanes:{activeWalletAuthorityEcdsaRuntimeReadPorts:Bh,ed25519YaoPublicCapabilityLanes:e.ed25519YaoPublicCapabilityLanes,isEd25519YaoPublicCapabilityActive:e.isEd25519YaoPublicCapabilityActive,readActiveWalletSessionAuthorization:e.readActiveWalletSessionAuthorization,listEcdsaSigningCapabilitiesForWallet:e.listEcdsaSigningCapabilitiesForWallet},signingSessionSeal:e.seamsWebConfigs.signing.sessionSeal.mode===`sealed_refresh_v1`?{groupId:Ge}:void 0,getConfiguredEcdsaChainTargets:()=>Ir(e.seamsWebConfigs.network.chains),discovery:{emailOtp:t=>e.emailOtpSessions.discoverPersistedSessionsForWallet(t),passkey:t=>e.passkeyMpcSession.discoverPersistedSessionsForWallet(t)}}}async function sF(e,t){let{runtime:n,session:r,operationCredential:i}=t.capability.authorization,a=i.walletSessionId;try{let o=n.relayerUrl,s=n.clientVerifyingPublicKey33B64u,c=Date.now(),l=Math.min(n.expiresAtMs,r.expiresAtMs);if(l<=c)return{status:`skipped`,reason:`session_expired`,walletSessionId:a};let u=Ru(e.routerAbEcdsaDerivationPresignaturePoolPolicy);if(!u.enabled)return{status:`skipped`,reason:`pool_disabled`,walletSessionId:a};let d=n.remainingUses,f={kind:`router_ab_ecdsa_derivation_signing_worker_pool`,scope:n.normalSigning.scope,ceremonyExpiresAtMs:l,materialExpiresAtMs:c+$s},p=e.resolveClientSigningMaterialSource({manifest:t.capability.capability.manifest}),m=zu({relayerUrl:o,keyHandle:gs(n.keyHandle),ecdsaThresholdKeyId:os(n.ecdsaThresholdKeyId),clientVerifyingShareB64u:us(s),clientSigningMaterial:p,thresholdEcdsaPublicKeyB64u:n.thresholdEcdsaPublicKeyB64u,relayerVerifyingShareB64u:n.normalSigning.scope.public_identity.server_public_key33_b64u,credential:{kind:`wallet_session_opaque`,walletSessionToken:i.token,home:i.home,ownershipGeneration:i.ownershipGeneration},authorization:{kind:`reusable_wallet_session`,wallet_session_id:i.walletSessionId},materialActivation:fo(n.materialActivation),routerAbEcdsaDerivationPoolFill:f,workerCtx:e.getSignerWorkerContext(),poolPolicy:u});return m.scheduled?(t.waitForPoolReady&&await Iu({ownershipGeneration:i.ownershipGeneration,relayerUrl:o,scope:n.normalSigning.scope,materialActivation:fo(n.materialActivation)}),{status:`scheduled`,reason:`scheduled`,walletSessionId:a,remainingUses:d,schedule:m}):(t.waitForPoolReady&&m.reason===`in_flight_for_pool_key`&&await Iu({ownershipGeneration:i.ownershipGeneration,relayerUrl:o,scope:n.normalSigning.scope,materialActivation:fo(n.materialActivation)}),{status:`skipped`,reason:`refill_not_scheduled`,walletSessionId:a,remainingUses:d,schedule:m})}catch(e){return{status:`failed`,reason:`unexpected_error`,walletSessionId:a,error:e instanceof Error?e.message:`unexpected error`}}}async function cF(e,t){let n=await e.statusReader.getEd25519SigningSessionStatus(t),r=t.authorization?Pp({owner:Dp(t.runtime.walletId),authorization:{walletSessionId:t.authorization.operationCredential.walletSessionId,quotaId:t.authorization.session.quotaId}}):null;return Np(n,r?await Mp({getAvailableStatus:e.getWalletSessionStatus},r):null)}async function lF(e,t){return await sF({getSignerWorkerContext:e.getSignerWorkerContext,resolveClientSigningMaterialSource:e.resolveClientSigningMaterialSource,routerAbEcdsaDerivationPresignaturePoolPolicy:e.routerAbEcdsaDerivationPresignaturePoolPolicy},t)}async function uF(e,t){await e.hydrateSigningSession(t)}async function dF(e,t){await e.clearVolatileWarmSigningMaterial(t)}function fF(e){let t=e.capability===`ecdsa`?e.runtime?.sealedRecord.thresholdSessionId:e.runtime?.thresholdSessionId,n=t?String(t).trim():null;return{state:e.state,thresholdSessionId:n||null,authState:e.auth?`present`:`missing`,prfClaimState:e.prfClaim?.state||null,...e.prfClaim?.state===`warm`?{remainingUses:e.prfClaim.remainingUses,expiresAtMs:e.prfClaim.expiresAtMs}:{}}}function pF(e){return{capabilities:{ed25519:fF(e.capabilities.ed25519),ecdsa:{evm:fF(e.capabilities.ecdsa.evm),tempo:fF(e.capabilities.ecdsa.tempo)}}}}function mF(e){if(typeof e.onTransition==`function`)try{let t=e.onTransition(e.event);t&&typeof t.then==`function`&&Promise.resolve(t).catch(t=>{console.warn(`[WarmSessionStore] warm-session transition callback failed`,{type:e.event.type,walletId:e.event.walletId,error:t})})}catch(t){console.warn(`[WarmSessionStore] warm-session transition callback failed`,{type:e.event.type,walletId:e.event.walletId,error:t})}}function hF(e){return String(e||``).trim()||void 0}function gF(e){let t=String(e.persistedSessionIdRaw||``).trim();if(t!==e.expectedThresholdSessionId)throw Error(`[WarmSessionStore] provisioned Ed25519 capability was not persisted for ${e.walletId} (expected thresholdSessionId=${e.expectedThresholdSessionId}, found=${t||`missing`})`)}function _F(e){return e.kind===`exact_ed25519_provisioning`?z(Ac(e.laneIdentity,`exact Ed25519 capability provisioning`).walletId):z(e.walletId)}function vF(e){return kr(e.kind===`exact_ed25519_provisioning`?Ac(e.laneIdentity,`exact Ed25519 capability provisioning`).nearAccountId:e.nearAccountId)}async function yF(e,t){let n=vF(t),r=_F(t);if(!r)throw Error(`[WarmSessionStore] walletId is required to provision Ed25519 capability`);if(typeof e.provisionThresholdEd25519Session!=`function`)throw Error(`[WarmSessionStore] provisionThresholdEd25519Session is required to provision Ed25519 capability`);let i=await e.getWarmSession(r);await t.beforeProvision?.(),t.assertNotCancelled?.();let a=await e.provisionThresholdEd25519Session(t);if(t.assertNotCancelled?.(),!a.ok)return a;let o=hF(a.thresholdSessionId);if(!o)throw Error(`[WarmSessionStore] provisioned Ed25519 capability is missing thresholdSessionId for ${n}`);let s=await e.getWarmSession(r);return gF({walletId:r,expectedThresholdSessionId:o,persistedSessionIdRaw:s.capabilities.ed25519.runtime?.thresholdSessionId}),mF({onTransition:e.onTransition,event:{type:`ed25519_capability_provisioned`,walletId:r,thresholdSessionId:o,before:pF(i),after:pF(s)}}),a}async function bF(e,t){return await yF({getWarmSession:t=>e.getWarmSession(t),provisionThresholdEd25519Session:async t=>await e.provisionThresholdEd25519Session(t)},t)}async function xF(e,t){return await e.bootstrapEcdsaSession(t)}function SF(e){switch(e){case`email_otp`:return{authMethod:H.emailOtp,signerSource:Br.emailOtpRegistration};case`login`:case`registration`:case`manual-bootstrap`:return{authMethod:H.passkey,signerSource:Br.passkeyRegistration};default:throw Error(`[SigningEngine] unsupported threshold ECDSA session source`)}}function CF(e){throw Error(`[SigningEngine] unsupported threshold ECDSA bootstrap backend binding: ${JSON.stringify(e)}`)}async function wF(e){let t=e.bootstrap.thresholdEcdsaKeyRef.backendBinding;if(!t)throw Error(`[SigningEngine] ECDSA bootstrap is missing its backend binding`);let n=TF(t);if(!n)return;let r=await e.deps.persistEcdsaRoleLocalReadyRecord({record:n,storageKeyFacts:as(n)});if(!r.ok)throw Error(`[SigningEngine] ECDSA role-local ready record persistence failed (${r.code}): ${r.message}`)}function TF(e){switch(e.materialKind){case`role_local_ready_state_blob`:return e.ecdsaRoleLocalReadyRecord;case`role_local_worker_handle`:case`role_local_durable_public_anchor`:case`role_local_durable_sealed_ref`:case`metadata_only`:return null;default:return CF(e)}}async function EF(e,t){return t.source===`email_otp`?await e.ensureSealedRefreshStartupParityForThresholdEcdsaBootstrap({kind:`email_otp_bootstrap_parity`,walletId:t.walletId,chainTarget:t.chainTarget,authMethod:H.emailOtp}):await e.ensureSealedRefreshStartupParityForThresholdEcdsaBootstrap({kind:`default_bootstrap_parity`,walletId:t.walletId,chainTarget:t.chainTarget}),await ql(e.queueByWallet,t.walletId,async()=>{let n=t.bootstrap;if(!String(n.thresholdEcdsaKeyRef.ecdsaThresholdKeyId||``).trim())throw Error(`[SigningEngine] threshold-ecdsa bootstrap did not provide canonical ecdsaThresholdKeyId`);return await Mm({bootstrapStore:e.bootstrapStore,walletId:t.walletId,chainTarget:t.chainTarget,bootstrap:n,signerAuth:SF(t.source)}),await wF({deps:e,bootstrap:n}),{bootstrap:n,authorization:await $l(q,{walletId:t.walletId,authority:t.authority,bootstrap:n})}})}async function DF(e,t){let n=t.source===`email_otp`?await EF(e,{walletId:t.walletId,chainTarget:t.chainTarget,bootstrap:t.bootstrap,source:`email_otp`,authority:t.authority,emailOtpAuthContext:t.emailOtpAuthContext}):await EF(e,{walletId:t.walletId,chainTarget:t.chainTarget,bootstrap:t.bootstrap,source:t.source,authority:t.authority});return{bootstrap:n.bootstrap,authorization:n.authorization}}function OF(e){let t=[],n=new Set;for(let r of e.network.chains){let e=ie(r.network);if(e!==`evm`&&e!==`tempo`)continue;let i=Nr(r),a=B(i);n.has(a)||(n.add(a),t.push(i))}if(!t.length)throw Error(`[EmailOtpSession] exact ECDSA snapshot requires configured ECDSA targets`);return t}function kF(){return typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now()}function AF(){return{signingSessionSealApplyMs:0,warmCapabilityPersistenceMs:0}}function jF(e,t,n){e[t]+=Math.max(0,Math.round(kF()-n))}function MF(e,t){e.signingSessionSealApplyMs+=t.signingSessionSealApplyMs,e.warmCapabilityPersistenceMs+=t.warmCapabilityPersistenceMs}function NF(e){let t=String(e||``).trim().toLowerCase();return/^0x[0-9a-f]{40}$/.test(t)?t:null}function PF(e){let t=[],n=new Set,r=e=>{let r=B(e);n.has(r)||(n.add(r),t.push(e))};r(e.chainTarget);let i=e.additionalChainTargets!==void 0;for(let t of e.additionalChainTargets||[])r(t);if(!i&&Kc(e.emailOtpAuthContext)===`session`)for(let t of OF(e.configs))r(t);return t}function FF(e){let t=ke(e.runtimePolicyScope),n=String(t.signingRootId).trim(),r=String(t.signingRootVersion||`default`).trim();if(!n||!r)throw Error(`Email OTP ECDSA persisted identity is incomplete`);return{signingRootId:n,signingRootVersion:r}}function IF(e){let t=e.existingKey.persistedRoleLocalMaterial.publicFacts,n=rs({walletId:t.walletId,chainTarget:e.chainTarget,keyHandle:t.keyHandle,ecdsaThresholdKeyId:t.ecdsaThresholdKeyId,signingRootId:t.signingRootId,signingRootVersion:t.signingRootVersion,applicationBindingDigestB64u:t.applicationBindingDigestB64u,clientParticipantId:t.clientParticipantId,relayerParticipantId:t.relayerParticipantId,participantIds:t.participantIds,contextBinding32B64u:t.contextBinding32B64u,derivationClientSharePublicKey33B64u:t.derivationClientSharePublicKey33B64u,relayerPublicKey33B64u:t.relayerPublicKey33B64u,groupPublicKey33B64u:t.groupPublicKey33B64u,ethereumAddress:t.ethereumAddress,publicCapability:t.publicCapability});return{keyHandle:e.existingKey.keyHandle,publicCapability:n.publicCapability,walletKey:io({walletId:n.walletId,keyHandle:n.keyHandle,chainTarget:e.chainTarget,ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,signingRootId:n.signingRootId,signingRootVersion:n.signingRootVersion,participantIds:n.participantIds,thresholdOwnerAddress:n.ethereumAddress,thresholdEcdsaPublicKeyB64u:n.groupPublicKey33B64u}),persistedRoleLocalMaterial:pd({authority:e.existingKey.persistedRoleLocalMaterial.authority,materialActivation:e.existingKey.persistedRoleLocalMaterial.materialActivation,publicFacts:n}),runtimePolicyScope:e.existingKey.runtimePolicyScope}}function LF(e){let t=e.durableMaterial.roleLocalPublicFacts,n=io({walletId:t.walletId,keyHandle:t.keyHandle,chainTarget:t.chainTarget,ecdsaThresholdKeyId:t.ecdsaThresholdKeyId,signingRootId:t.signingRootId,signingRootVersion:t.signingRootVersion,participantIds:t.participantIds,thresholdOwnerAddress:t.ethereumAddress,thresholdEcdsaPublicKeyB64u:t.groupPublicKey33B64u});return{keyHandle:String(n.keyHandle),publicCapability:t.publicCapability,walletKey:n,persistedRoleLocalMaterial:pd({authority:e.signer.authority,materialActivation:e.activation.materialActivation,publicFacts:t}),runtimePolicyScope:e.durableMaterial.runtimePolicyScope}}async function RF(e){let t=e.scope.kind===`exact`?FF({runtimePolicyScope:e.scope.runtimePolicyScope}):null,n=String(e.keyHandle||``).trim(),r=e.scope.kind===`durable_manifest`?null:e.scope.authorityRef,i=(await e.listActiveEcdsaCapabilityManifestsForWallet(e.walletId)).filter(i=>{let a=i.durableMaterial.roleLocalPublicFacts;return i.signer.walletId===e.walletId&&(!r||i.signer.authority.walletAuthMethodId===r.walletAuthMethodId&&String(i.signer.authority.authorityDigest)===String(r.authorityDigest))&&i.signer.scope.targetMemberships.some(t=>Fr(t,e.chainTarget))&&(!n||String(a.keyHandle).trim()===n)&&(!t||String(a.signingRootId).trim()===t.signingRootId)&&(!t||String(a.signingRootVersion||`default`).trim()===t.signingRootVersion)}).map(LF).reduce((t,n)=>{let r=t.find(e=>e.keyHandle===n.keyHandle);if(!r)return t.push(n),t;if(!Qa(r.publicCapability,n.publicCapability)||!b(r.persistedRoleLocalMaterial.materialActivation,n.persistedRoleLocalMaterial.materialActivation))throw Error(`Email OTP ECDSA has conflicting persisted role-local material for ${B(e.chainTarget)}`);return t},[]);if(i.length===0)return null;if(i.length!==1)throw Error(`Email OTP ECDSA has multiple persisted public capabilities for ${B(e.chainTarget)}`);return IF({existingKey:i[0],chainTarget:e.chainTarget})}function zF(e){return{authMethod:`email_otp`,curve:`ecdsa`,walletId:e.walletId,chainTarget:e.chainTarget,walletSessionId:e.walletSessionId,quotaId:e.quotaId,thresholdSessionId:nc.thresholdEcdsaSession(e.thresholdSessionId),emailOtpAuthContext:e.emailOtpAuthContext,material:{kind:`worker_handle`,workerSessionId:e.thresholdSessionId}}}function BF(e){let t=String(e.warmThresholdSessionId).trim();if(!t)throw Error(`Email OTP sealed refresh requires a warm threshold session`);return{warmMaterialTarget:{kind:`ecdsa`,thresholdSessionId:t},authorizationThresholdSessionId:VF(e.normalSigning)}}function VF(e){return uo(e)}async function HF(e,t){if(e.bootstraps.length!==e.publicationChainTargets.length)throw Error(`Email OTP ECDSA publication returned an unexpected lane count`);let n=AF(),r=[],i=e.bootstraps[0]?.session;if(!i)throw Error(`Email OTP ECDSA publication has no primary session`);for(let[t,n]of e.bootstraps.entries()){let a=e.publicationChainTargets[t],o=n.thresholdEcdsaKeyRef.chainTarget;if(!Fr(o,a))throw Error(`Email OTP ECDSA publication returned ${B(o)} for ${B(a)}`);if(n.session.walletSessionId!==i.walletSessionId||n.session.quotaId!==i.quotaId)throw Error(`Email OTP ECDSA publication returned mismatched Wallet Session authority`);r.push({chainTarget:a,bootstrap:n})}let a={args:e,ports:t},o=await Promise.all(r.map(WF.bind(null,a))),s=o.map(UF);for(let e of o)MF(n,e.timings);let[c,...l]=s;if(!c)throw Error(`Email OTP ECDSA publication did not commit a primary lane`);return{bootstrap:c.bootstrap,authorization:c.authorization,authorizations:[c.authorization,...l.map(e=>e.authorization)],timings:n}}function UF(e){return e.result}async function WF(e,t){let n=AF(),r=t.bootstrap,i=kF(),a=await e.ports.commitEvmFamilyThresholdEcdsaSessions({walletId:e.args.walletId,chainTarget:t.chainTarget,bootstrap:r,source:`email_otp`,authority:e.args.authority,emailOtpAuthContext:e.args.emailOtpAuthContext});return jF(n,`warmCapabilityPersistenceMs`,i),MF(n,await GF({walletId:e.args.walletId,chainTarget:t.chainTarget,bootstrap:a.bootstrap,runtimePolicyScope:e.args.runtimePolicyScope,emailOtpAuthContext:e.args.emailOtpAuthContext,relayerUrl:e.args.relayerUrl,groupId:e.args.groupId},e.ports)),{result:a,timings:n}}async function GF(e,t){let n=AF();if(t.configs.signing.sessionPersistenceMode!==`sealed_refresh_v1`||Kc(e.emailOtpAuthContext)!==`session`)return n;let r=t.getSignerWorkerContext();if(!r)throw Error(`Email OTP sealed refresh requires the dedicated emailOtp worker`);let i=e.bootstrap.thresholdEcdsaKeyRef,a=e.bootstrap.session,o=String(a.thresholdSessionId||``).trim(),s=String(e.relayerUrl||i.relayerUrl||``).trim();if(e.groupId&&e.groupId!==`rfc2409-group2`)throw Error(`Email OTP sealed refresh received an unsupported Shamir group`);let c=Ge;if(!o||!s)throw Error(`Email OTP sealed refresh is missing threshold-session persistence metadata`);let l=zF({walletId:e.walletId,chainTarget:e.chainTarget,walletSessionId:a.walletSessionId,quotaId:a.quotaId,thresholdSessionId:o,emailOtpAuthContext:e.emailOtpAuthContext}),u=a.operationCredential,d=e.runtimePolicyScope,f=ke(d),p=String(f?.signingRootId||``).trim(),m=String(f?.signingRootVersion||``).trim(),h=String(i.ecdsaThresholdKeyId||``).trim(),g=String(i.userId||``).trim(),_=String(Rc(e.emailOtpAuthContext)||g).trim(),v=String(Xc(e.emailOtpAuthContext)).trim(),y=NF(i.ethereumAddress),x=String(i.backendBinding?.clientVerifyingShareB64u||``).trim(),S=String(i.thresholdEcdsaPublicKeyB64u||``).trim(),C=String(i.backendBinding?.relayerKeyId||``).trim(),w=i.routerAbEcdsaDerivationNormalSigning,T=i.backendBinding,E=null,D=null;(T?.materialKind===`role_local_worker_handle`||T?.materialKind===`role_local_durable_sealed_ref`)&&(E=T.roleLocalMaterialRef,D=T.publicFacts.publicCapability);let O=Array.isArray(i.participantIds)?i.participantIds.map(e=>Math.floor(Number(e))).filter(e=>Number.isFinite(e)&&e>0):[];if(!h||!g||!_||!v||!y||!x||!C||!w||!D||!E||!O.length||!u.token||!p||!m)throw Error(`Email OTP sealed refresh is missing ECDSA restore metadata`);if(l.material.kind!==`worker_handle`)throw Error(`Email OTP sealed refresh requires worker-owned warm material`);let ee=l.material.workerSessionId,k=i.chainTarget;if(!k)throw Error(`Email OTP sealed refresh requires exact ECDSA chain target`);if(!Fr(k,l.chainTarget))throw Error(`Email OTP sealed refresh chain target drifted from ${B(l.chainTarget)} to ${B(k)}`);let A=String(i.keyHandle||``).trim();if(!A)throw Error(`Email OTP sealed refresh requires exact ECDSA key handle`);let j=E.materialActivation,M=BF({warmThresholdSessionId:ee,normalSigning:w}),te=await U({authority:e.emailOtpAuthContext.authority}),ne=await RF({walletId:e.walletId,chainTarget:e.chainTarget,scope:{kind:`exact`,runtimePolicyScope:d,authorityRef:te},keyHandle:A,listActiveEcdsaCapabilityManifestsForWallet:t.listActiveEcdsaCapabilityManifestsForWallet});if(!ne||!b(ne.persistedRoleLocalMaterial.materialActivation,j))throw Error(`Email OTP sealed refresh material activation was superseded`);let re=kF(),N=await gP({workerCtx:r,target:M.warmMaterialTarget,authorizationThresholdSessionId:M.authorizationThresholdSessionId,transport:{relayerUrl:s,operationCredential:u,groupId:c}}).catch(e=>{let t=e instanceof Error?e.message:String(e||`unknown error`);throw Error(`Email OTP sealed refresh seal failed: ${t}`)});if(jF(n,`signingSessionSealApplyMs`,re),!N?.ok){let e=String(N?.message||N?.code||`unknown error`).trim();throw Error(`Email OTP sealed refresh seal failed: ${e}`)}let ie=String(N.sealedSecretB64u||``).trim(),ae=Math.floor(Number(N.expiresAtMs)||Number(a?.expiresAtMs)||0),oe=Math.floor(Number(N.remainingUses)||Number(a?.remainingUses)||0);if(!ie||ae<=0||oe<0)throw Error(`Email OTP sealed refresh seal returned invalid persistence metadata`);let se=String(N.keyVersion||``).trim();if(!se)throw Error(`Email OTP sealed refresh seal returned no key version`);let ce=Date.now(),le={thresholdSessionId:l.thresholdSessionId,sealedSecretB64u:ie,curve:`ecdsa`,authMethod:`email_otp`,thresholdSessionIds:{ecdsa:l.thresholdSessionId},walletId:String(e.walletId||``).trim(),relayerUrl:s,keyVersion:se,groupId:c,issuedAtMs:ce,expiresAtMs:ae,remainingUses:oe},ue=kF(),de=await RF({walletId:e.walletId,chainTarget:k,scope:{kind:`exact`,runtimePolicyScope:d,authorityRef:te},keyHandle:A,listActiveEcdsaCapabilityManifestsForWallet:t.listActiveEcdsaCapabilityManifestsForWallet});if(!de||!b(de.persistedRoleLocalMaterial.materialActivation,j))throw Error(`Email OTP sealed refresh material activation was superseded`);let fe=de.persistedRoleLocalMaterial.authority;await t.registerSigningSession({...le,ecdsaRestore:{chainTarget:k,source:`email_otp`,signingRootId:p,signingRootVersion:m,provider:Lc(e.emailOtpAuthContext),providerSubjectId:_,emailHashHex:v,authority:fe,emailOtpAuthority:e.emailOtpAuthContext.authority,...d?{runtimePolicyScope:d}:{},keyHandle:A,ecdsaThresholdKeyId:h,ethereumAddress:y,relayerKeyId:C,clientVerifyingShareB64u:x,...S?{thresholdEcdsaPublicKeyB64u:S}:{},participantIds:O,routerAbEcdsaDerivationNormalSigning:w,publicCapability:D,roleLocalMaterialRef:E},updatedAtMs:ce});let pe=await t.readExactSealedSession(o,{authMethod:`email_otp`,curve:`ecdsa`,chainTarget:k}).catch(e=>{let t=e instanceof Error?e.message:String(e||`unknown error`);throw Error(`Email OTP sealed refresh read-back failed: ${t}`)});if(jF(n,`warmCapabilityPersistenceMs`,ue),!pe)throw Error(`Email OTP sealed refresh ${B(k)} record was not durably persisted`);let me=pe.ecdsaRestore?.roleLocalMaterialRef;if(pe.authMethod!==`email_otp`||pe.secretKind!==`signing_session_secret32`||pe.thresholdSessionIds.ecdsa!==o||pe.sealedSecretB64u!==ie||!me||!KF(me,E)||!pe.ecdsaRestore?.chainTarget||!Fr(pe.ecdsaRestore.chainTarget,k))throw Error(`Email OTP sealed refresh read-back record does not match ${B(k)} unlock session`);return n}function KF(e,t){return e.kind===t.kind&&e.durableMaterialRef===t.durableMaterialRef&&e.bindingDigest===t.bindingDigest&&b(e.materialActivation,t.materialActivation)}function qF(e){return{thresholdSessionId:nc.thresholdEcdsaSession(e.thresholdSessionId)}}function JF(e){if(!e)return{kind:`not_requested`};switch(e.kind){case`wallet_custody_cache_absent`:return{kind:`cache_absent`,bootstrap:e.ed25519YaoRecovery};case`ed25519_yao_capability`:return{kind:`capability`,activeClientHandle:e.activeClientHandle,metadata:e.metadata,bootstrap:e.ed25519YaoCapability}}throw Error(`Unsupported Email OTP Ed25519 unlock material`)}async function YF(e){if(e.workerResult){switch(e.workerResult.kind){case`wallet_custody_cache_absent`:return;case`ed25519_yao_capability`:if(!await Xv({workerContext:e.workerContext,activeClientHandle:e.workerResult.activeClientHandle}))throw Error(`Email OTP capability unlock local Ed25519 client was unavailable`);return}e.workerResult}}function XF(){return typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now()}async function ZF(e){try{await mr(er(e.workerContext),{existingEnvelope:e.unlock.ed25519ExportRootCustody.existingEnvelope,existingFactorSecret:e.unlock.ed25519ExportRootCustody.factorSecret32,walletId:String(e.authorization.record.walletId),walletAuthMethodId:e.walletAuthMethodId,walletSessionId:String(e.authorization.operationCredential.walletSessionId),expiresAtMs:e.authorization.record.expiresAtMs})}catch(e){console.warn(`[SigningEngine][email-otp] unlocked Ed25519 export-root capability was not established:`,e instanceof Error?e.message:String(e||`unknown error`))}}function QF(){return{emailOtpProofVerificationMs:0,ecdsaMaterialRestoreMs:0,signingSessionSealApplyMs:0,warmCapabilityPersistenceMs:0}}function $F(e,t,n){e[t]+=Math.max(0,Math.round(XF()-n))}function eI(e,t){e.signingSessionSealApplyMs+=t.signingSessionSealApplyMs,e.warmCapabilityPersistenceMs+=t.warmCapabilityPersistenceMs}function tI(e,t){let n=String(e||``).trim();if(!n)throw Error(`[SigningEngine][email-otp] ${t} is required`);return n}function nI(e){return{provider:e.identity.provider,providerUserId:tI(e.identity.providerUserId,`Email OTP provider user id`)}}async function rI(e){let t=await e.ownerLaneScopeStores.listWalletAuthMethodsForWallet(String(e.walletId)),n=[];for(let r of t){if(r.kind!==`email_otp`||r.status!==`active`||String(r.walletId)!==String(e.walletId)||String(r.emailHashHex)!==String(e.emailHashHex))continue;let t=r.authority;String(t.walletId)!==String(e.walletId)||t.factor.provider!==e.provider||String(t.factor.providerUserId)!==String(e.providerUserId)||String(t.verifier.emailHashHex)!==String(e.emailHashHex)||n.push(t)}let[r,...i]=n;if(!r)return{kind:`canonical_boundary`};if(i.length>0)throw Error(`Email OTP identity matches more than one active wallet auth method`);return{kind:`selected_v2`,authority:r}}function iI(e){let t=c(e.walletAuthMethodId);if(!t.ok)throw Error(`Selected Email OTP wallet auth method is invalid`);let n=_o({walletId:e.walletId,provider:e.provider,providerUserId:e.providerUserId,emailHashHex:e.emailHashHex});return{kind:`selected_v2`,authority:{walletId:n.walletId,factor:n.factor,verifier:n.verifier,bindingId:t.value}}}async function aI(e){if(e.authoritySelector.kind===`wallet_auth_method`)return await iI({walletId:e.walletId,walletAuthMethodId:e.authoritySelector.walletAuthMethodId,emailHashHex:e.emailHashHex,provider:e.provider,providerUserId:e.providerUserId});let t=await e.authorityPorts.resolveSelectedWalletAuthority(String(e.walletId));if(t.kind===`missing_selection`)return{kind:`canonical_boundary`};if(t.kind!==`resolved`)throw Error(`Email OTP authority selection is unavailable: ${t.kind}`);if(t.authMethod.kind!==`email_otp`)return await rI({walletId:e.walletId,emailHashHex:e.emailHashHex,provider:e.provider,providerUserId:e.providerUserId,ownerLaneScopeStores:e.authorityPorts.ownerLaneScopeStores});if(t.authMethod.status!==`active`||t.authority.state!==`active`||String(t.authMethod.walletId)!==String(e.walletId)||String(t.authority.walletId)!==String(e.walletId)||String(t.authMethod.walletAuthorityId)!==String(t.authority.authorityId))throw Error(`Email OTP authority selected by the wallet is not active`);let n=t.authMethod,r=String(n.walletAuthMethodId),i=await lp({authMethod:n,stores:e.authorityPorts.ownerLaneScopeStores});if(!Na(i))throw Error(`Email OTP authority selected by the wallet session has the wrong factor`);let a=await U({authority:i});if(String(a.walletId)!==String(t.authority.walletId)||String(a.walletAuthMethodId)!==r||String(i.verifier.emailHashHex)!==String(e.emailHashHex)||i.factor.provider!==e.provider||String(i.factor.providerUserId)!==String(e.providerUserId))throw Error(`Email OTP authority selected by the wallet session does not match the request`);return{kind:`selected_v2`,authority:i}}function oI(e){return e.source.kind===`selected_v2`&&!e.runtimePolicyScope?{kind:`exact_authority`,authorityRef:e.authorityRef}:e.runtimePolicyScope?{kind:`exact`,runtimePolicyScope:e.runtimePolicyScope,authorityRef:e.authorityRef}:{kind:`durable_manifest`}}function sI(e){if(`persistedExportMaterial`in e&&`explicitExportAuthorization`in e&&e.operation===`export_key`)return e;throw Error(`Email OTP ECDSA export requires prepared operation authorization`)}function cI(e){switch(e.unseal.kind){case`email_otp_grant`:return{kind:`email_otp_unseal_grant`,grant:e.unseal.grant,challengeId:e.unseal.challenge_id};case`not_requested`:throw Error(`Email OTP ECDSA export requires its verified unseal grant`);default:{let t=e.unseal;throw Error(`Unsupported Email OTP ECDSA export unseal state: ${String(t)}`)}}}function lI(e){if(e.operation!==e.routePlan.operation)throw Error(`Email OTP operation does not match its route plan`)}function uI(e){let t=e.existingKey.walletKey;if(String(e.handle.walletId)!==String(t.walletId)||String(e.handle.keyHandle)!==String(t.keyHandle)||e.handle.authSubjectId!==Rc(e.emailOtpAuthContext)||!Fr(e.handle.chainTarget,t.chainTarget)||!Fr(e.handle.chainTarget,e.chainTarget))throw Error(`Email OTP ECDSA export worker handle does not match the resolved lane`)}function dI(e){if(!Wc(e))throw Error(`Email OTP ECDSA export requires single-use authorization`);return e}function fI(e){let t=Be({ttlMs:e.ttlMs??ze.ttlMs,remainingUses:e.remainingUses});return{ttlMs:t.ttlMs,remainingUses:t.remainingUses}}function pI(e){let t=e.bootstrap.session,n=Math.floor(Number(t.expiresAtMs)),r=Math.floor(Number(t.remainingUses)),i=n-Date.now();if(!Number.isSafeInteger(n)||i<1)throw Error(`Email OTP capability unlock returned an invalid server signing budget`);if(r!==e.expectedRemainingUses)throw Error(`Email OTP capability unlock changed the requested signing budget uses`);return{ttlMs:i,remainingUses:r}}function mI(e){return e.ed25519YaoResult?pI({bootstrap:e.ed25519YaoResult.kind===`wallet_custody_cache_absent`?e.ed25519YaoResult.ed25519YaoRecovery:e.ed25519YaoResult.ed25519YaoCapability,expectedRemainingUses:e.requestedRemainingUses}):fI({ttlMs:e.requestedTtlMs,remainingUses:e.requestedRemainingUses})}function hI(e){if(!e)throw Error(`Email OTP capability recovery requires explicit wallet unlock`);return e}function gI(e){return{kind:`router_ab_ecdsa_post_registration_session_activation_policy_v1`,key_handle:String(e.keyHandle),session_policy:e.request.session_policy}}function _I(e){return{kind:`router_ab_ecdsa_post_registration_session_activation_policy_v1`,key_handle:String(e.keyHandle),session_policy:{threshold_session_id:CI(e.thresholdSessionId),wallet_session_mint_id:wI(e.walletSessionMintId),ttl_ms:e.ttlMs,remaining_uses:e.remainingUses,runtime_policy_scope:e.runtimePolicyScope}}}function vI(e,t){if(e.operation!==`wallet_unlock`||!e.ecdsaSession)throw Error(`Email OTP unlock did not return its ECDSA Wallet Session`);if(e.ecdsaSession.kind===`router_ab_ecdsa_credential_free_session_activated_v1`){if(!t)throw Error(`Email OTP combined unlock did not return its exact Wallet Session`);return{kind:`credential_free_ecdsa_session_activation_authorization_v1`,activation:e.ecdsaSession,authorization:t}}return e.ecdsaSession}function yI(e){if(!e)throw Error(`Email OTP unlock did not return its prepared ECDSA Wallet Session`);return e}function bI(e,t,n){let r=e.signers[0];if(!r)throw Error(`Email OTP ECDSA custody continuity is empty`);if(r.walletKey.walletId!==t||r.walletKey.keyHandle!==n)throw Error(`Email OTP ECDSA custody continuity changed the requested wallet key`);for(let t of e.signers)if(t.walletKey.walletId!==r.walletKey.walletId||t.walletKey.keyHandle!==r.walletKey.keyHandle||t.walletKey.ecdsaThresholdKeyId!==r.walletKey.ecdsaThresholdKeyId||t.walletKey.signingRootId!==r.walletKey.signingRootId||t.walletKey.signingRootVersion!==r.walletKey.signingRootVersion||t.walletKey.relayerKeyId!==r.walletKey.relayerKeyId||!Qa(t.walletKey.publicCapability,r.walletKey.publicCapability)||!ho(t.activationReceipt,r.activationReceipt)||!he(t.runtimePolicyScope,r.runtimePolicyScope))throw Error(`Email OTP ECDSA custody continuity conflicts across targets`);return r}function xI(e){let[t,...n]=e.signers;if(!t)throw Error(`Email OTP ECDSA custody continuity is empty`);return[t.chainTarget,...n.map(e=>e.chainTarget)]}async function SI(e){let t=e.restore.ecdsaCustody,n=bI(t.continuity,e.walletId,e.keyHandle);await e.restoreWalletCustodyEcdsaContinuity({authority:e.authority,chainTargets:xI(t.continuity),walletId:n.walletKey.walletId,keyHandle:n.walletKey.keyHandle,ecdsaThresholdKeyId:n.walletKey.ecdsaThresholdKeyId,signingRootId:n.walletKey.signingRootId,signingRootVersion:n.walletKey.signingRootVersion,relayerKeyId:n.walletKey.relayerKeyId,participantIds:n.walletKey.participantIds,publicCapability:n.walletKey.publicCapability,activationReceipt:n.activationReceipt,runtimePolicyScope:n.runtimePolicyScope,readyStateBlobB64u:t.readyStateBlobB64u,publicFacts:t.publicFacts})}function CI(e){let t=T(e);if(!t.ok)throw Error(`Failed to create Email OTP threshold session identity`);return t.value}function wI(e){let t=ft(e);if(!t.ok)throw Error(`Failed to create Email OTP Wallet Session mint identity`);return t.value}function TI(e){if(!e)throw Error(`Email OTP ECDSA bootstrap requires route auth`);return e}function EI(e){switch(e){case Wr:return`sign`;case qr:return`export`;case Hr:throw Error(`Email OTP wallet unlock requires first-session activation`);case zr:throw Error(`Email OTP relocation approval cannot create a signing session`);case Vr:throw Error(`Email OTP device linking requires linked-device activation`);case`registration`:throw Error(`Email OTP ECDSA registration requires wallet-registration prepare`)}throw Error(`Unsupported Email OTP non-unlock operation`)}function DI(e){switch(e.operation){case`sign`:return{keyHandle:e.keyHandle,authSubjectId:e.authSubjectId,operation:`sign`,chainTarget:e.chainTarget};case`export`:return{keyHandle:e.keyHandle,authSubjectId:e.authSubjectId,operation:`export`,chainTarget:e.chainTarget}}throw e.operation,Error(`Unsupported Email OTP non-unlock handle operation`)}function OI(e){if(e.emailOtpWorkerSessionHandle.action!==`threshold_ecdsa_bootstrap`)throw Error(`Email OTP ECDSA activation requires a threshold ECDSA worker handle`);let t=qF({thresholdSessionId:e.thresholdSessionId}),n=Ja({chainTarget:e.chainTarget,thresholdSessionId:t.thresholdSessionId,ttlMs:e.ttlMs,remainingUses:e.remainingUses,runtimePolicyScope:e.runtimePolicyScope});if(zc(e.emailOtpAuthContext)){let r={source:`email_otp`,relayerUrl:e.relayerUrl,sessionIdentity:t,sessionKind:`opaque`,sessionBudgetUses:e.remainingUses,runtimePolicy:{kind:`scoped_policy`,scope:e.runtimePolicyScope},emailOtpWorkerSessionHandle:e.emailOtpWorkerSessionHandle,emailOtpAuthContext:e.emailOtpAuthContext,walletKey:e.existingKey.walletKey,lanePolicy:n,publicCapability:e.existingKey.publicCapability,existingRoleLocalMaterial:e.existingKey.persistedRoleLocalMaterial};return e.authorization.kind===`preauthorized_wallet_unlock`?Kl({...r,preauthorizedSessionActivation:e.authorization.sessionActivation}):Ll({...r,walletSessionRouteAuth:e.authorization.routeAuth})}if(Wc(e.emailOtpAuthContext)){if(e.authorization.kind===`preauthorized_wallet_unlock`)throw Error(`Email OTP operation step-up cannot adopt a reusable Wallet Session`);return Il({source:`email_otp`,relayerUrl:e.relayerUrl,sessionIdentity:t,sessionKind:`opaque`,sessionBudgetUses:e.remainingUses,runtimePolicy:{kind:`scoped_policy`,scope:e.runtimePolicyScope},emailOtpWorkerSessionHandle:e.emailOtpWorkerSessionHandle,emailOtpAuthContext:e.emailOtpAuthContext,walletSessionRouteAuth:e.authorization.routeAuth,walletKey:e.existingKey.walletKey,lanePolicy:n,publicCapability:e.existingKey.publicCapability,existingRoleLocalMaterial:e.existingKey.persistedRoleLocalMaterial})}throw Error(`Email OTP ECDSA activation cannot use a consumed single-use context`)}function kI(e){if(e.emailOtpWorkerSessionHandle.action!==`threshold_ecdsa_bootstrap`)throw Error(`Email OTP ECDSA recovery requires a threshold ECDSA worker handle`);let t=nc.thresholdEcdsaSession(e.thresholdSessionId);return Jl({source:`email_otp`,relayerUrl:e.relayerUrl,sessionIdentity:{kind:`recovered_material_session`,thresholdSessionId:t,materialActivation:e.existingKey.persistedRoleLocalMaterial.materialActivation},sessionKind:`opaque`,sessionBudgetUses:e.remainingUses,runtimePolicy:{kind:`scoped_policy`,scope:e.runtimePolicyScope},emailOtpWorkerSessionHandle:e.emailOtpWorkerSessionHandle,emailOtpAuthContext:e.emailOtpAuthContext,walletSessionRouteAuth:e.routeAuth,walletKey:e.existingKey.walletKey,lanePolicy:lo({chainTarget:e.chainTarget,thresholdSessionId:t,ttlMs:e.ttlMs,remainingUses:e.remainingUses,runtimePolicyScope:e.runtimePolicyScope}),publicCapability:e.existingKey.publicCapability,existingRoleLocalMaterial:e.existingKey.persistedRoleLocalMaterial})}function AI(e){switch(e.kind){case`route_authorized`:return{sessionIdentity:e.sessionIdentity,authorization:{kind:`route_authorized`,routeAuth:e.routeAuth}};case`preauthorized_wallet_unlock`:{let t=e.request.session_policy,n=Fl(e.response)?e.response.activation.session:e.response.session;if(t.threshold_session_id!==n.threshold_session_id)throw Error(`Email OTP unlock returned a different prepared ECDSA session identity`);return{sessionIdentity:qF({thresholdSessionId:n.threshold_session_id}),authorization:{kind:`preauthorized_wallet_unlock`,sessionActivation:e.response}}}}}async function jI(e){let t=jd(e.emailOtpSessionHandle);if(t.action!==`threshold_ecdsa_bootstrap`)throw Error(`Email OTP wallet unlock returned an invalid ECDSA worker handle`);let n=AI(e.primarySession),r={args:e,sessionIdentity:n.sessionIdentity,authorization:n.authorization,emailOtpWorkerSessionHandle:t},i=e.publicationChainTargets[0];if(!i)throw Error(`Email OTP ECDSA activation requires a primary target`);let a=await MI(r,i),o=e.primarySession.kind===`preauthorized_wallet_unlock`?n.authorization:{kind:`route_authorized`,routeAuth:a.session.operationCredential},s={...r,args:{...e,primarySession:{kind:`route_authorized`,sessionIdentity:n.sessionIdentity,routeAuth:a.session.operationCredential}},authorization:o},c=[a,...await Promise.all(e.publicationChainTargets.slice(1).map(MI.bind(null,s)))];if(!a)throw Error(`Email OTP ECDSA activation did not return a primary warm session`);return c}async function MI(e,t){let n=IF({existingKey:e.args.primaryExistingKey,chainTarget:t});return await e.args.ports.provisionThresholdEcdsaSession(OI({existingKey:n,chainTarget:t,thresholdSessionId:e.sessionIdentity.thresholdSessionId,ttlMs:e.args.ttlMs,remainingUses:e.args.remainingUses,runtimePolicyScope:e.args.runtimePolicyScope,relayerUrl:e.args.relayerUrl,emailOtpAuthContext:e.args.emailOtpAuthContext,emailOtpWorkerSessionHandle:e.emailOtpWorkerSessionHandle,authorization:e.authorization}))}async function NI(e){return await e.ports.provisionEmailOtpEcdsaExplicitExportSession(Hl({relayerUrl:e.relayerUrl,existingRoleLocalMaterial:e.persistedMaterial,authorization:e.authorization}))}function PI(e){let t=Math.floor(Number(e)||0);if(!Number.isFinite(t)||t<=0)throw Error(`[SigningEngine][email-otp][ecdsa] signing remainingUses is required`);return t}function FI(e){let t=e.runtimePolicyScope;if(!t)throw Error(`Email OTP ECDSA signing refresh requires runtimePolicyScope`);return t}function II(e){if(e.authority.factor.kind!==`email_otp`||!e.authLane)throw Error(`[SigningEngine][email-otp][ecdsa] committed lane requires Email OTP authority`);return{keyHandle:String(ja(e.lane.identity.signer.keyHandle)),participantIds:e.lane.identity.signer.key.participantIds.map(Number),emailHashHex:e.authority.verifier.emailHashHex,providerIdentity:{kind:`explicit_provider_user`,provider:e.authority.factor.provider,providerUserId:e.authority.factor.providerUserId}}}async function LI(e){let t=await e.resolveCurrentEcdsaCapabilityRuntime({walletId:z(e.committedLane.lane.identity.signer.walletId),chainTarget:e.chainTarget});if(t.kind!==`resolved`)throw Error(`[SigningEngine][email-otp][ecdsa] signing refresh runtime unavailable: ${t.reason}`);if(!b(t.runtime.materialActivation,e.committedLane.lane.materialActivation))throw Error(`[SigningEngine][email-otp][ecdsa] signing refresh runtime material activation mismatch`);return{...II(e.committedLane),runtimePolicyScope:FI({runtimePolicyScope:t.runtime.runtimePolicyScope})}}async function RI(e,t){let n=Wr,r=PI(e.remainingUses),i=e.committedLane,a=await LI({committedLane:i,chainTarget:e.chainTarget,resolveCurrentEcdsaCapabilityRuntime:t.resolveCurrentEcdsaCapabilityRuntime}),o=En({authLane:Sn(i.authLane),operation:n});return await t.loginWithEcdsaCapabilityInternal({walletSession:e.walletSession,authoritySelector:{kind:`wallet_auth_method`,walletAuthMethodId:String((await U({authority:i.authority})).walletAuthMethodId)},chainTarget:e.chainTarget,emailOtpAuthPolicy:`session`,emailOtpAuthReason:`sign`,challengeId:e.challengeId,otpCode:e.otpCode,operation:n,keyHandle:a.keyHandle,participantIds:a.participantIds,routePlan:o,emailHashHex:a.emailHashHex,providerIdentity:a.providerIdentity,ecdsaBootstrapAuthorization:{kind:`route_plan_auth`},remainingUses:r,runtimePolicyScope:a.runtimePolicyScope,ed25519YaoRecovery:{kind:`not_requested`}})}async function zI(e,t){let n=e.operation??e.routePlan.operation;lI({operation:n,routePlan:e.routePlan});let r=QF(),i=e.chainTarget,a=e.emailOtpAuthPolicy||t.configs.signing.emailOtp.authPolicy,o=e.emailOtpAuthReason||`login`,s=o===`sign`,c=s&&a===`per_operation`?`single_use`:`session`,l=c===`session`?`session`:a,u=String(e.relayUrl||t.requireRelayUrl()).trim(),d=String(e.groupId||t.requireSigningSessionSealGroupId()).trim(),f=e.remainingUses,p=t.configs.signing.sessionDefaults?.remainingUses,m=Math.min(Math.max(1,Math.floor(Number(f??p??Re)||1)),Re),h=Math.max(1,Math.floor(Number(f)||1)),g=Le({requestedRemainingUses:m})||(()=>{throw Error(`[SigningEngine][email-otp] unlock session uses are required`)})(),_=s?h:g,v=t.getSignerWorkerContext(),y=e.routePlan,b=e.ecdsaBootstrapAuthorization.kind===`route_plan_auth`?Dt(y):e.ecdsaBootstrapAuthorization.routeAuth,x=b?b.operationCredential:void 0,S=e.runtimePolicyScope;if(!v)throw Error(`Email OTP login requires the dedicated emailOtp worker`);let C=nI({identity:e.providerIdentity}),w=await aI({walletId:e.walletSession.walletId,authoritySelector:e.authoritySelector,emailHashHex:e.emailHashHex,provider:C.provider,providerUserId:C.providerUserId,authorityPorts:t}),T=c===`single_use`?w.kind===`selected_v2`?Ic({policy:l,authority:w.authority,retention:`single_use`}):Jc({policy:l,walletId:z(e.walletSession.walletId),emailHashHex:e.emailHashHex,retention:`single_use`,provider:C.provider,providerUserId:C.providerUserId}):w.kind===`selected_v2`?Ic({policy:l,authority:w.authority,retention:`session`,reason:o}):Jc({policy:l,walletId:z(e.walletSession.walletId),emailHashHex:e.emailHashHex,retention:`session`,reason:o,provider:C.provider,providerUserId:C.providerUserId}),E=oI({source:w,runtimePolicyScope:S,authorityRef:await U({authority:T.authority})}),D=PF({configs:t.configs,chainTarget:i,emailOtpAuthContext:T,...e.publicationChainTargets?{additionalChainTargets:e.publicationChainTargets}:{}}),O=t.publicationPorts,ee=n===Hr,k=String(e.keyHandle||``).trim(),A=await RF({walletId:z(e.walletSession.walletId),chainTarget:i,scope:E,keyHandle:e.keyHandle,listActiveEcdsaCapabilityManifestsForWallet:O.listActiveEcdsaCapabilityManifestsForWallet});if(!A&&!ee)throw Error(`device_link_required: local threshold ECDSA material is unavailable for ${i.kind}:${i.chainId}`);let j=String(A?.keyHandle||k).trim();if(!j)throw Error(`Email OTP ECDSA wallet unlock requires an exact key handle`);let M=A?.runtimePolicyScope||S;if(!M)throw Error(`Email OTP ECDSA wallet unlock requires runtime policy scope`);let te=e.ed25519YaoRecovery.kind===`requested`?await t.loadWalletCustodyEd25519Material({nearAccountId:e.ed25519YaoRecovery.nearAccountId,signerSlot:e.ed25519YaoRecovery.signerSlot}):null,ne=ee?Be({ttlMs:e.ttlMs??ze.ttlMs,remainingUses:_}):null,re=ne?CI(tl(`threshold-ecdsa-login`)):null,N=ne&&re&&A?Bl({publicCapability:A.publicCapability,thresholdSessionId:re,walletSessionMintId:wI(tl(`wallet-session-mint`)),ttlMs:ne.ttlMs,remainingUses:ne.remainingUses,runtimePolicyScope:M}):null,ie=ne&&re?_I({keyHandle:j,thresholdSessionId:re,walletSessionMintId:wI(tl(`wallet-session-mint`)),ttlMs:ne.ttlMs,remainingUses:ne.remainingUses,runtimePolicyScope:M}):null,ae=XF(),oe=n===`export_key`?sI(e):null,se=oe?{walletSession:e.walletSession,authoritySelector:e.authoritySelector,relayUrl:u,groupId:d,verification:cI(oe.explicitExportAuthorization),routePlan:y,workerCtx:v,runtimePolicyScope:M,...e.onProgress?{onProgress:e.onProgress}:{}}:{walletSession:e.walletSession,authoritySelector:e.authoritySelector,relayUrl:u,groupId:d,verification:{kind:`otp`,...e.challengeId?{challengeId:e.challengeId}:{},otpCode:e.otpCode},routePlan:y,workerCtx:v,runtimePolicyScope:M,...e.onProgress?{onProgress:e.onProgress}:{}},ce=e.ed25519YaoRecovery.kind===`not_requested`?await qt({...se,...ie?{ecdsaSessionHandleBinding:{keyHandle:j,authSubjectId:C.providerUserId,operation:`wallet_unlock`,chainTarget:i},ecdsaSessionPolicy:N?gI({request:N,keyHandle:j}):ie}:{ecdsaSessionHandleBinding:DI({keyHandle:j,authSubjectId:C.providerUserId,operation:EI(y.operation),chainTarget:i})}}):await wn({...se,ecdsaSessionHandleBinding:{keyHandle:j,authSubjectId:C.providerUserId,operation:`wallet_unlock`,chainTarget:i},providerSubject:e.ed25519YaoRecovery.providerSubject,signerSlot:e.ed25519YaoRecovery.signerSlot,nearAccountId:e.ed25519YaoRecovery.nearAccountId,expectedOperationalPublicKey:e.ed25519YaoRecovery.expectedOperationalPublicKey,expectedThresholdSessionId:e.ed25519YaoRecovery.expectedThresholdSessionId,walletCustodyEd25519Material:te||{kind:`absent`},remainingUses:_,ecdsaSessionPolicy:N?gI({request:N,keyHandle:j}):hI(ie)}),le=ce.kind===`wallet_unlock_capabilities`?ce.ecdsa:ce,ue=ce.kind===`wallet_unlock_capabilities`?ce.ed25519Yao:null,de=ce.kind===`wallet_unlock_capabilities`?ce.walletSessionAuthorization:void 0;try{if(le.operation===`wallet_unlock`&&!A){let n=await U({authority:T.authority});await SI({restore:le,walletId:String(e.walletSession.walletId),keyHandle:j,authority:n,restoreWalletCustodyEcdsaContinuity:t.restoreWalletCustodyEcdsaContinuity})}if(!A&&(A=await RF({walletId:z(e.walletSession.walletId),chainTarget:i,scope:E,keyHandle:j,listActiveEcdsaCapabilityManifestsForWallet:O.listActiveEcdsaCapabilityManifestsForWallet}),!A))throw Error(`Email OTP ECDSA custody restore did not publish the canonical key`);let a=N||(ie?Bl({publicCapability:A.publicCapability,thresholdSessionId:ie.session_policy.threshold_session_id,walletSessionMintId:ie.session_policy.wallet_session_mint_id,ttlMs:ie.session_policy.ttl_ms,remainingUses:ie.session_policy.remaining_uses,runtimePolicyScope:M}):null),o=n===`export_key`?dI(T):null,s=n===`export_key`?Id(le.emailOtpSessionHandle):null;s&&o&&uI({handle:s,existingKey:A,chainTarget:i,emailOtpAuthContext:o}),$F(r,`emailOtpProofVerificationMs`,ae);let c=a?vI(le,de):null,l=c?fI({ttlMs:e.ttlMs,remainingUses:_}):mI({ed25519YaoResult:ue,requestedTtlMs:e.ttlMs,requestedRemainingUses:_});if(ae=XF(),n===`export_key`){if(!s||!o)throw Error(`Email OTP ECDSA export worker handle is unavailable`);let n=sI(e),i=await NI({relayerUrl:u,persistedMaterial:n.persistedExportMaterial,authorization:n.explicitExportAuthorization,ports:t});return $F(r,`ecdsaMaterialRestoreMs`,ae),{kind:`transient_export`,value:{bootstrap:i}}}let f=await jI({primaryExistingKey:A,publicationChainTargets:D,runtimePolicyScope:M,relayerUrl:u,ttlMs:l.ttlMs,remainingUses:l.remainingUses,emailOtpAuthContext:T,emailOtpSessionHandle:le.emailOtpSessionHandle,primarySession:a?{kind:`preauthorized_wallet_unlock`,request:a,response:yI(c)}:{kind:`route_authorized`,sessionIdentity:qF({thresholdSessionId:tl(`threshold-ecdsa-login`)}),routeAuth:TI(x)},ports:t});$F(r,`ecdsaMaterialRestoreMs`,ae);let{bootstrap:p,authorization:m,authorizations:h,timings:g}=await HF({walletId:z(e.walletSession.walletId),publicationChainTargets:D,bootstraps:f,runtimePolicyScope:M,authority:A.persistedRoleLocalMaterial.authority,emailOtpAuthContext:T,relayerUrl:u,groupId:d},O);return ce.kind===`wallet_unlock_capabilities`&&await ZF({workerContext:v,unlock:ce,authorization:m,walletAuthMethodId:String(T.authority.bindingId)}),eI(r,g),{kind:`published_signing_session`,value:{recovery:ce.recovery,bootstrap:p,authorization:m,authorizations:h,emailOtpSessionHandle:le.emailOtpSessionHandle,ed25519YaoRecovery:JF(ue),timings:r}}}catch(e){try{await YF({workerResult:ue,workerContext:v})}catch(t){throw AggregateError([e,t],`Email OTP unlock failed and Ed25519 material disposal failed`)}throw e}finally{ce.kind===`wallet_unlock_capabilities`&&ce.ed25519ExportRootCustody.factorSecret32.fill(0)}}async function BI(e,t){if((e.operation??e.routePlan.operation)===`export_key`)throw Error(`Email OTP ECDSA export must use transient export preparation`);let n=await zI(e,t);if(n.kind!==`published_signing_session`)throw Error(`Email OTP ECDSA login did not publish a signing session`);return n.value}async function VI(e,t){let n=await zI(e,t);if(n.kind!==`transient_export`)throw Error(`Email OTP ECDSA export preparation published a signing session`);return n.value}var HI=class extends Error{constructor(e){super(`Email OTP sealed refresh material activation was superseded ${e.replace(`_`,` `)}`),this.phase=e,this.code=`material_activation_superseded`,this.name=`EmailOtpEcdsaSealedRestoreSupersededError`}};function UI(e){return Ic({policy:`session`,authority:e,retention:`session`,reason:`login`})}function WI(e){if(e.length!==2||e[0]!==1||e[1]!==2)throw Error(`Email OTP sealed refresh requires participantIds [1, 2]`);return[1,2]}async function GI(e){if((await U({authority:e.emailOtpAuthority})).walletId!==e.authority.walletId)throw Error(`Email OTP sealed refresh route authority wallet mismatch`);let t=e.publicCapability,n=t.public_identity,r=rs({walletId:z(e.walletId),chainTarget:e.chainTarget,keyHandle:e.keyHandle,ecdsaThresholdKeyId:Ua(e.ecdsaThresholdKeyId),signingRootId:Fa(e.signingRootId),signingRootVersion:Wa(e.signingRootVersion),applicationBindingDigestB64u:t.context.application_binding_digest_b64u,participantIds:WI(e.participantIds),clientParticipantId:1,relayerParticipantId:2,contextBinding32B64u:n.context_binding_b64u,derivationClientSharePublicKey33B64u:n.derivation_client_share_public_key33_b64u,relayerPublicKey33B64u:n.server_public_key33_b64u,groupPublicKey33B64u:n.threshold_public_key33_b64u,ethereumAddress:e.ethereumAddress,publicCapability:t}),i=io({walletId:r.walletId,keyHandle:r.keyHandle,chainTarget:r.chainTarget,ecdsaThresholdKeyId:r.ecdsaThresholdKeyId,signingRootId:r.signingRootId,signingRootVersion:r.signingRootVersion,participantIds:r.participantIds,thresholdOwnerAddress:r.ethereumAddress,thresholdEcdsaPublicKeyB64u:r.groupPublicKey33B64u});return{keyHandle:String(i.keyHandle),publicCapability:t,walletKey:i,runtimePolicyScope:e.runtimePolicyScope,persistedRoleLocalMaterial:pd({authority:e.authority,materialActivation:e.roleLocalMaterialRef.materialActivation,publicFacts:r})}}function KI(e){let t=String(e.keyVersion||``).trim(),n=String(e.groupId||``).trim();if(!t||!n)throw Error(`Email OTP sealed refresh is missing normalized seal transport metadata`);return{signingSessionSealKeyVersion:t,signingSessionSealGroupId:n}}function qI(e){let{sealedRecord:t}=e,n=KI(t);if(!t.thresholdSessionId||!t.relayerUrl||!t.keyHandle||!t.relayerKeyId||!t.participantIds.length)throw Error(`Email OTP sealed refresh is missing durable ECDSA restore metadata`);return{kind:`sealed_record_restore`,sealedRecord:t,emailOtpAuthContext:UI(t.emailOtpAuthority),authorization:e.authorization,relayerUrl:t.relayerUrl,chainTarget:t.chainTarget,keyHandle:t.keyHandle,...n,...t.runtimePolicyScope?{runtimePolicyScope:t.runtimePolicyScope}:{}}}async function JI(e,t){let n=await e(String(t));if(n.kind!==`resolved`||n.selection.lockState!==`unlocked`||n.selection.walletId!==t||n.selection.walletAuthMethodId!==n.authMethod.walletAuthMethodId||n.authMethod.kind!==`email_otp`||n.authMethod.status!==`active`||n.authMethod.walletId!==t||n.authMethod.walletAuthorityId!==n.authority.authorityId||n.authority.state!==`active`||n.authority.walletId!==t)throw Error(`Email OTP sealed refresh selected authority is invalid`);return{kind:`resolved`,selection:n.selection,authMethod:n.authMethod,authority:n.authority,signerMaterials:n.signerMaterials,exportRoot:n.exportRoot}}function YI(e){if(e.authBinding.kind!==`email_otp`)throw Error(`Email OTP sealed refresh runtime is not Email OTP bound`);return e.authBinding.emailOtpAuthority}function XI(e){if(e.authorizationRead.kind!==`found`)throw Error(`Email OTP sealed refresh requires active Wallet Session authorization: ${e.authorizationRead.kind}`);let{record:t,operationCredential:n}=e.authorizationRead;if(e.runtime.kind!==`exact_ecdsa_sealed_runtime_v1`)throw Error(`Email OTP sealed refresh ECDSA runtime is unavailable`);if(e.sealedRecord.authMethod!==`email_otp`||t.walletId!==z(e.sealedRecord.walletId)||t.authorityId!==e.selected.authority.authorityId||t.authMethodId!==e.selected.authMethod.walletAuthMethodId||t.authorityDigestB64u!==e.selected.authority.authorityDigestB64u||t.authorityRevocationEpoch!==e.selected.authority.revocationEpoch||t.expiresAtMs<=e.nowMs||n.walletSessionId.trim().length===0||n.token.trim().length===0||e.runtime.walletId!==t.walletId||!Fr(e.runtime.chainTarget,e.sealedRecord.chainTarget)||e.runtime.sealedRecord.thresholdSessionId!==e.sealedRecord.thresholdSessionId||e.runtime.sealedRecord.authMethod!==e.selected.authMethod.kind||e.runtime.authBinding.kind!==`email_otp`||e.runtime.authBinding.emailOtpAuthority.bindingId!==e.selected.authMethod.walletAuthMethodId||e.runtime.authBinding.emailOtpAuthority.walletId!==t.walletId)throw Error(`Email OTP sealed refresh Wallet Session authorization mismatch`);return sd({capability:e.capability,selected:e.selected,session:t,operationCredential:n,runtime:e.runtime,nowMs:e.nowMs})}function ZI(e){return async t=>await QI({...e,...t})}async function QI(e){let t=e.sealedRecord;if(t.authMethod!==`email_otp`||t.curve!==`ecdsa`)return null;let n=t.roleLocalMaterialRef.materialActivation;return await e.withThresholdEcdsaSigningQueue({queueKey:wd({materialActivation:n}),walletId:z(t.walletId),enabled:!0,task:async()=>await $I(e)})}async function $I(e){let t=e.sealedRecord,n=t.roleLocalMaterialRef.materialActivation,r=z(t.walletId),i=await e.resolveCurrentEcdsaCapabilityRuntime({walletId:r,chainTarget:t.chainTarget});if(i.kind!==`resolved`||!b(i.runtime.materialActivation,n))throw new HI(`before_rehydrate`);let a=await JI(e.resolveSelectedWalletAuthority,r),o=await e.readExactWalletSessionAuthorization({walletId:r,authorityId:a.authority.authorityId,authMethodId:a.authMethod.walletAuthMethodId}),s=await GI(t),c=await Zu({authority:YI(i.runtime),manifest:i.manifest,material:s.persistedRoleLocalMaterial}),l=qI({sealedRecord:t,authorization:XI({sealedRecord:t,authorizationRead:o,selected:a,runtime:i.runtime,capability:c,nowMs:Date.now()})});if(l.authorization.runtime.kind!==`exact_ecdsa_sealed_runtime_v1`)throw Error(`Email OTP sealed refresh requires a sealed ECDSA runtime`);let u=l.authorization.operationCredential;if(Kc(l.emailOtpAuthContext)!==`session`)return null;let d=e.getSignerWorkerContext();if(!d)throw Error(`Email OTP sealed refresh requires the dedicated emailOtp worker`);if(t.expiresAtMs<=Date.now())throw Error(`Email OTP sealed refresh expired sealed record`);if(t.remainingUses<=0)throw Error(`Email OTP sealed refresh exhausted sealed record`);let f=n,p=l.authorization.runtime.sealedRecord.thresholdSessionId,m=VF(t.routerAbEcdsaDerivationNormalSigning),h=await bP({workerCtx:d,target:{kind:`ecdsa`,thresholdSessionId:p},authorizationThresholdSessionId:m,sealedSecretB64u:t.sealedSecretB64u,remainingUses:t.remainingUses,expiresAtMs:t.expiresAtMs,transport:{relayerUrl:l.relayerUrl,operationCredential:u,signingSessionSealKeyVersion:fs(l.signingSessionSealKeyVersion),groupId:l.signingSessionSealGroupId},restore:{thresholdSessionId:p,walletId:t.walletId,keyHandle:l.keyHandle,chainTarget:l.chainTarget,authSubjectId:Rc(l.emailOtpAuthContext)}});if(!h.ok)throw Error(h.message||h.code||`Email OTP sealed refresh failed`);if(!l.runtimePolicyScope)throw Error(`Email OTP sealed refresh requires runtime policy scope`);let g=jd(h.emailOtpSessionHandle),_=await e.provisionThresholdEcdsaSession(kI({existingKey:s,chainTarget:l.chainTarget,thresholdSessionId:p,ttlMs:Math.max(1,h.expiresAtMs-Date.now()),remainingUses:h.remainingUses,runtimePolicyScope:l.runtimePolicyScope,relayerUrl:l.relayerUrl,emailOtpAuthContext:l.emailOtpAuthContext,emailOtpWorkerSessionHandle:g,routeAuth:u})),v=await e.resolveCurrentEcdsaCapabilityRuntime({walletId:z(t.walletId),chainTarget:l.chainTarget});if(v.kind!==`resolved`||!b(v.runtime.materialActivation,f))throw new HI(`before_commit`);let y=await e.commitEvmFamilyThresholdEcdsaSessions({walletId:r,chainTarget:l.chainTarget,bootstrap:_,source:`email_otp`,authority:s.persistedRoleLocalMaterial.authority,emailOtpAuthContext:l.emailOtpAuthContext});return{authorization:sd({capability:c,selected:a,session:y.bootstrap.session.walletSession,operationCredential:y.bootstrap.session.operationCredential,runtime:v.runtime,nowMs:Date.now()}),remainingUses:y.bootstrap.session.remainingUses,expiresAtMs:y.bootstrap.session.expiresAtMs}}var eL=class{constructor(e){this.ports=e}async loginWithEcdsaCapabilityForSigning(e){return await RI(e,{resolveCurrentEcdsaCapabilityRuntime:this.ports.resolveCurrentEcdsaCapabilityRuntime,loginWithEcdsaCapabilityInternal:e=>this.loginWithEcdsaCapabilityInternal(e)})}async loginWithEcdsaCapabilityInternal(e){return await BI(e,{configs:this.ports.configs,getSignerWorkerContext:this.ports.getSignerWorkerContext,loadWalletCustodyEd25519Material:this.ports.loadWalletCustodyEd25519Material,restoreWalletCustodyEcdsaContinuity:this.ports.restoreWalletCustodyEcdsaContinuity,provisionThresholdEcdsaSession:this.ports.provisionThresholdEcdsaSession,provisionEmailOtpEcdsaExplicitExportSession:this.ports.provisionEmailOtpEcdsaExplicitExportSession,requireRelayUrl:()=>this.ports.runtimeConfig.requireRelayUrl(),requireSigningSessionSealGroupId:()=>this.ports.runtimeConfig.requireSigningSessionSealGroupId(),ownerLaneScopeStores:this.ports.ownerLaneScopeStores,resolveSelectedWalletAuthority:this.ports.resolveSelectedWalletAuthority,publicationPorts:this.ports.publicationPorts()})}async prepareEcdsaExportCapability(e){return await VI(e,{configs:this.ports.configs,getSignerWorkerContext:this.ports.getSignerWorkerContext,loadWalletCustodyEd25519Material:this.ports.loadWalletCustodyEd25519Material,restoreWalletCustodyEcdsaContinuity:this.ports.restoreWalletCustodyEcdsaContinuity,provisionThresholdEcdsaSession:this.ports.provisionThresholdEcdsaSession,provisionEmailOtpEcdsaExplicitExportSession:this.ports.provisionEmailOtpEcdsaExplicitExportSession,requireRelayUrl:()=>this.ports.runtimeConfig.requireRelayUrl(),requireSigningSessionSealGroupId:()=>this.ports.runtimeConfig.requireSigningSessionSealGroupId(),ownerLaneScopeStores:this.ports.ownerLaneScopeStores,resolveSelectedWalletAuthority:this.ports.resolveSelectedWalletAuthority,publicationPorts:this.ports.publicationPorts()})}};async function tL(e,t){let n=await e.resolveSelectedWalletAuthority(String(t));if(n.kind===`missing_selection`)return{kind:`canonical`};if(n.kind!==`resolved`)throw Error(`Email OTP challenge authority selection is unavailable: ${n.kind}`);if(n.authMethod.kind!==`email_otp`)return{kind:`canonical`};if(n.authMethod.status!==`active`||n.authority.state!==`active`||String(n.authMethod.walletId)!==String(t)||String(n.authority.walletId)!==String(t)||String(n.authMethod.walletAuthorityId)!==String(n.authority.authorityId))throw Error(`Email OTP challenge selected authority is not active`);return{kind:`exact`,walletAuthMethodId:String(n.authMethod.walletAuthMethodId)}}function nL(e){return e===`near`?`ed25519`:`ecdsa`}function rL(e){let t=e.authLane;return t?.kind!==`signing_session`&&zn({kind:`auth_lane_missing`,source:`provided_route_auth`,expectedCurve:nL(e.chain)}),t}async function iL(e,t){let n=t.kind===`wallet_session`?t.walletId:t.walletSession.walletId,r=e.requireRelayUrl(),i=e.getSignerWorkerContext();if(!i)throw Error(`Email OTP signing requires the dedicated emailOtp worker`);let a=await tL(e,n),o=await i.requestWorkerOperation({kind:`emailOtp`,request:{type:`requestEmailOtpChallenge`,timeoutMs:3e4,payload:{relayUrl:r,walletId:String(n),...a.kind===`exact`?{walletAuthMethodId:a.walletAuthMethodId}:{},routePlan:t.routePlan,otpChannel:Kr,...t.operationFingerprintDigest?{operationFingerprintDigest:t.operationFingerprintDigest}:{}}}}),s=String(o.challengeId||``).trim();if(!s)throw Error(`Email OTP signing challenge response did not include challengeId`);let c=o.delivery;return{challengeId:s,emailHint:c.emailHint,delivery:c}}async function aL(e,t){let n=oL(e,t);return t.kind===`near_account_challenge`?await iL(e,{kind:`near_account`,walletSession:t.walletSession,routePlan:n,...t.operationFingerprintDigest?{operationFingerprintDigest:t.operationFingerprintDigest}:{}}):await iL(e,{kind:`wallet_session`,walletId:t.walletSession.walletId,routePlan:n,...t.operationFingerprintDigest?{operationFingerprintDigest:t.operationFingerprintDigest}:{}})}function oL(e,t){switch(t.kind){case`wallet_operation_challenge`:return pr({routeFamily:`operation_step_up`,operation:Wr,operationCredential:t.operationCredential});case`wallet_session_challenge`:case`near_account_challenge`:return e.buildSigningSessionRoutePlan({authLane:rL({authLane:t.authLane,chain:t.chain}),operation:Wr})}}async function sL(e,t){let n=cL(e,t);return t.kind===`near_account_challenge`?await iL(e,{kind:`near_account`,walletSession:t.walletSession,routePlan:n}):t.kind===`wallet_export_challenge`?await iL(e,{kind:`wallet_session`,walletId:t.walletId,routePlan:n}):await iL(e,{kind:`wallet_session`,walletId:t.walletSession.walletId,routePlan:n})}function cL(e,t){switch(t.kind){case`wallet_login_challenge`:return pr({routeFamily:`login`,operation:qr});case`wallet_session_challenge`:case`near_account_challenge`:return e.buildSigningSessionRoutePlan({authLane:rL({authLane:t.authLane,chain:t.chain}),operation:qr});case`wallet_export_challenge`:return pr({routeFamily:`login`,operation:qr})}}function lL(e){return pr({routeFamily:`login`,operation:qr})}function uL(e){switch(e.material.kind){case`active_capability`:return e.material;case`sealed_custody`:return{kind:`sealed_custody`,materialActivation:e.material.materialActivation,walletCustodyEd25519Material:e.material.walletCustodyEd25519Material,bootstrap:e.material.bootstrap};case`sealed_export_root`:return{kind:`sealed_export_root`,materialActivation:e.material.materialActivation,capability:e.material.capability,exportRootEnvelope:e.material.exportRootEnvelope};default:throw e.material,Error(`Email OTP Ed25519 export material is invalid`)}}async function dL(e,t){let n=e.getSignerWorkerContext();if(!n)throw Error(`Email OTP Ed25519 Yao export requires the dedicated emailOtp worker`);let r=e.requireRelayUrl(),i=t.exportContext.lane.signer.account.wallet.walletId,a=await n.requestWorkerOperation({kind:`emailOtp`,request:{type:`exportEmailOtpEd25519YaoSeed`,timeoutMs:6e4,payload:{relayUrl:r,challengeId:t.challengeId,otpCode:t.otpCode,lane:{walletId:String(i),providerSubjectId:t.exportContext.lane.auth.providerSubjectId,walletAuthMethodId:String(t.exportContext.authorization.record.authMethodId),nearAccountId:String(t.exportContext.lane.signer.account.nearAccountId),nearEd25519SigningKeyId:String(t.exportContext.lane.signer.nearEd25519SigningKeyId),signerSlot:t.exportContext.lane.signer.signerSlot},material:uL(t.exportContext)}}});switch(a.kind){case`exported`:return a;case`exported_and_rehydrated`:if(t.exportContext.material.kind!==`sealed_custody`)throw await Xv({workerContext:n,activeClientHandle:a.activeClientHandle}).catch(()=>void 0),Error(`Email OTP Ed25519 export returned unexpected recovered material`);if(t.exportContext.authorization.status.status===`exhausted`)return await Xv({workerContext:n,activeClientHandle:a.activeClientHandle}),a;try{await t.exportContext.material.activateRecoveredCapability({activation:{activeClientHandle:a.activeClientHandle,metadata:a.metadata,bootstrap:a.bootstrap},operationCredential:t.exportContext.authorization.operationCredential})}catch(e){throw await Xv({workerContext:n,activeClientHandle:a.activeClientHandle}).catch(()=>void 0),e}return a;default:throw Error(`Email OTP Ed25519 export returned an invalid result`)}}async function fL(e,t){let n=lL(t.explicitExportAuthorization);return await pL({walletSession:t.walletSession,authority:await U({authority:t.authority}),chainTarget:t.chainTarget,challengeId:t.challengeId,otpCode:t.otpCode,routePlan:n,keyHandle:String(t.publicFacts.keyHandle),participantIds:t.publicFacts.participantIds.map(Number),emailHashHex:t.authority.verifier.emailHashHex,provider:t.authority.factor.provider,providerUserId:t.authority.factor.providerUserId,runtimePolicyScope:t.runtimePolicyScope,relayUrl:e.requireRelayUrl(),getSignerWorkerContext:e.getSignerWorkerContext,prepareEcdsaExportCapability:t.prepareEcdsaExportCapability,persistedMaterial:t.persistedMaterial,explicitExportAuthorization:t.explicitExportAuthorization})}async function pL(e){let t=await e.prepareEcdsaExportCapability({walletSession:e.walletSession,authoritySelector:{kind:`wallet_auth_method`,walletAuthMethodId:String(e.authority.walletAuthMethodId)},chainTarget:e.chainTarget,relayUrl:e.relayUrl,emailOtpAuthPolicy:`per_operation`,emailOtpAuthReason:`sign`,challengeId:e.challengeId,otpCode:e.otpCode,operation:qr,routePlan:e.routePlan,ecdsaBootstrapAuthorization:{kind:`route_plan_auth`},keyHandle:e.keyHandle,participantIds:e.participantIds,remainingUses:1,emailHashHex:e.emailHashHex,providerIdentity:{kind:`explicit_provider_user`,provider:e.provider,providerUserId:e.providerUserId},runtimePolicyScope:e.runtimePolicyScope,ed25519YaoRecovery:{kind:`not_requested`},persistedExportMaterial:e.persistedMaterial,explicitExportAuthorization:e.explicitExportAuthorization}),n=e.getSignerWorkerContext();if(!n)throw Error(`Email OTP ECDSA export requires the dedicated signer worker`);return await Gl({getSignerWorkerContext:()=>n},{walletSessionUserId:e.walletSession.walletSessionUserId,exportProvision:t.bootstrap,factorAuthorization:{kind:`email_otp_verified`}})}var mL=class{constructor(e){this.ports=e}async requestTransactionSigningChallenge(e){return await aL(this.workerPorts(),e)}async requestExportChallenge(e){return await sL(this.workerPorts(),e)}async exportEcdsaKeyWithDurableAuthorization(e){return await fL({getSignerWorkerContext:this.ports.getSignerWorkerContext,requireRelayUrl:this.ports.requireRelayUrl},{walletSession:e.walletSession,chainTarget:e.chainTarget,challengeId:e.challengeId,otpCode:e.otpCode,publicFacts:e.publicFacts,runtimePolicyScope:e.runtimePolicyScope,authority:e.authority,persistedMaterial:e.persistedMaterial,explicitExportAuthorization:e.explicitExportAuthorization,prepareEcdsaExportCapability:this.ports.prepareEcdsaExportCapability})}async exportEd25519YaoSeedWithFreshEmailOtpLane(e){return await dL({getSignerWorkerContext:this.ports.getSignerWorkerContext,requireRelayUrl:this.ports.requireRelayUrl},e)}workerPorts(){return{getSignerWorkerContext:this.ports.getSignerWorkerContext,requireRelayUrl:this.ports.requireRelayUrl,requireSigningSessionSealGroupId:this.ports.requireSigningSessionSealGroupId,resolveSelectedWalletAuthority:this.ports.resolveSelectedWalletAuthority,buildSigningSessionRoutePlan:En}}},hL=class{constructor(e){this.ports=e}requireRelayUrl(){let e=String(this.ports.configs.network.relayer?.url||``).trim();if(!e)throw Error(`Missing relayer url (configs.network.relayer.url)`);return e}requireSigningSessionSealGroupId(){return Ge}requireRpId(e){let t=String(this.ports.getRpId()||``).trim();if(!t)throw Error(`${e} requires an RP ID for ECDSA bootstrap`);return t}},gL=class{constructor(e){this.ports=e}async registerSigningSession(e){let t=wr(e);if(!t)throw Error(`[SigningSessionSealedStore] invalid sealed session record write input`);await this.ports.writeExactSealedSession(t),this.ports.clearEcdsaRestoreCaches()}ecdsaPublicationPorts(){return{configs:this.ports.configs,getSignerWorkerContext:this.ports.getSignerWorkerContext,commitEvmFamilyThresholdEcdsaSessions:this.ports.commitEvmFamilyThresholdEcdsaSessions,registerSigningSession:e=>this.registerSigningSession(e),readExactSealedSession:this.ports.readExactSealedSession,listActiveEcdsaCapabilityManifestsForWallet:this.ports.listActiveEcdsaCapabilityManifestsForWallet}}async persistEcdsaSessionForRefresh(e){await GF({walletId:e.walletId,chainTarget:e.chainTarget,bootstrap:e.bootstrap,runtimePolicyScope:e.runtimePolicyScope,emailOtpAuthContext:e.emailOtpAuthContext,relayerUrl:this.ports.configs.network.relayer?.url||``,groupId:Ge},this.ecdsaPublicationPorts())}},_L=class{constructor(e){this.ports=e}sealedRecordFilter(e){return{authMethod:`email_otp`,curve:`ecdsa`,chainTarget:e.chainTarget}}async recordSessionUseConsumed(e,t){await this.recordSessionPolicyResult({purpose:e,result:t})}async recordSessionMaterialRestored(e,t){await this.recordSessionPolicyResult({purpose:e,result:t})}async recordSessionPolicyResult(e){let t=String(e.purpose.thresholdSessionId||``).trim();if(t){if(!e.result.ok){this.ports.clearEcdsaRestoreCaches();return}await this.ports.updateExactSealedSessionPolicy({thresholdSessionId:t,filter:this.sealedRecordFilter(e.purpose),expiresAtMs:e.result.expiresAtMs,remainingUses:e.result.remainingUses,updatedAtMs:Date.now()}).catch(()=>void 0),this.ports.clearEcdsaRestoreCaches()}}};const vL={listed:0,discovered:0,truncated:0},yL={kind:`completed`,attempted:0,restored:0,deferred:0};var bL=class{constructor(e){this.ports=e,this.restoreCache=Pj(),this.restoreAttempts=Fj(),this.requestedChainTarget=null}clearCache(){this.restoreCache.clear(),this.restoreAttempts.clear()}async tryRestoreEcdsaWarmSessionStatusFromSealedRecord(e){if(this.ports.sessionPersistenceMode!==`sealed_refresh_v1`)return null;let t=String(e.thresholdSessionId||``).trim();if(!t)return null;this.requestedChainTarget=e.chainTarget;let n=t,r=await this.readEcdsaSealedRecord(t);if(!r)return null;if(r.remainingUses<=0||Date.now()>=r.expiresAtMs)return console.debug(`[EmailOtpSession] sealed refresh restore deferred by durable policy hint`,{thresholdSessionId:n,remainingUses:r.remainingUses,expiresAtMs:r.expiresAtMs}),null;if(r.authMethod!==`email_otp`||r.thresholdSessionId!==n)return console.warn(`[EmailOtpSession] sealed refresh restore deferred by store metadata mismatch`,{thresholdSessionId:n,authMethod:r.authMethod,ecdsaThresholdSessionId:r.thresholdSessionId}),null;let i=await this.ports.acquireSigningSessionRestoreLease({thresholdSessionId:n,authMethod:`email_otp`,curve:`ecdsa`,chainTarget:r.chainTarget}).catch(()=>null);if(!i){let e=`lease-unavailable:${n}`;return this.ports.shouldLogDiagnostic(e)&&console.debug(`[EmailOtpSession] sealed refresh restore deferred; lease unavailable`,{thresholdSessionId:n}),null}try{console.debug(`[EmailOtpSession] sealed refresh restore started`,{thresholdSessionId:n});let e=await this.ports.restoreEcdsaSigningSessionMaterialFromSealedRecord({sealedRecord:r}).catch(e=>(console.warn(`[EmailOtpSession] sealed refresh restore failed`,{thresholdSessionId:n,error:e instanceof Error?e.message:String(e||`unknown error`)}),null));if(!e)return null;console.debug(`[EmailOtpSession] sealed refresh restore succeeded`,{thresholdSessionId:n,remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs});let t={ok:!0,remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs};return await this.ports.recordSessionMaterialRestored({thresholdSessionId:n,chainTarget:r.chainTarget},t),t}finally{await this.ports.releaseSigningSessionRestoreLease(i).catch(()=>void 0)}}async discoverPersistedSessionsForWallet(e){if(this.ports.sessionPersistenceMode!==`sealed_refresh_v1`)return{...vL};let t=String(z(e.walletId)||``).trim();if(!t)return{...vL};let n=await Lj({...e,walletId:t},{listExactSealedSessionsForWallet:({walletId:e,...t})=>this.ports.listExactSealedSessionsForWallet({walletId:e,filter:t}),onListError:({walletId:e,error:t})=>{console.warn(`[EmailOtpSession] wallet-scoped sealed ECDSA discovery list failed`,{walletId:e,error:t instanceof Error?t.message:String(t||`unknown error`)})}});if(!n.listed){let e=`wallet-sealed-ecdsa-empty:${t}`;this.ports.shouldLogDiagnostic(e)&&console.debug(`[EmailOtpSession] no durable sealed ECDSA records for wallet discovery`,{walletId:t})}return n}async restorePersistedSessionForSigning(e){if(this.ports.sessionPersistenceMode!==`sealed_refresh_v1`)return{...yL};let t=String(z(e.walletId)||``).trim();return t?await Ij({...e,walletId:t},{listExactSealedSessionsForWallet:({walletId:e,...t})=>t.curve===`ecdsa`?this.ports.listExactSealedSessionsForWallet({walletId:e,filter:{authMethod:t.authMethod,curve:`ecdsa`,chainTarget:t.chainTarget}}):Promise.resolve([]),restoreSealedRecordForWallet:e=>this.restoreEmailOtpSealedRecordForWallet(e),cache:this.restoreCache,onListError:({walletId:e,target:t,reason:n,error:r})=>{console.warn(`[EmailOtpSession] signing-intent sealed ECDSA restore list failed`,{walletId:e,target:t,reason:n,error:r instanceof Error?r.message:String(r||`unknown error`)})}}):{...yL}}async readEcdsaSealedRecord(e){let t=this.requestedChainTarget;return t?await this.readEcdsaSealedRecordForTarget(e,t):null}async readEcdsaSealedRecordForTarget(e,t){let n=await this.ports.readExactSealedSession(e,{authMethod:`email_otp`,curve:`ecdsa`,chainTarget:t}).catch(n=>(console.warn(`[EmailOtpSession] sealed refresh ECDSA read failed`,{thresholdSessionId:e,chain:t.kind,error:n instanceof Error?n.message:String(n||`unknown error`)}),null));if(!n)return null;let r=yj(n);return r.kind===`accepted`&&r.record.authMethod===`email_otp`&&r.record.curve===`ecdsa`?r.record:null}async restoreEmailOtpSealedRecordForWallet(e){return e.purpose.authMethod!==`email_otp`||e.purpose.curve!==`ecdsa`||e.record.authMethod!==`email_otp`||e.record.curve!==`ecdsa`?`deferred`:await this.restoreEcdsaSealedRecordForWallet({...e,record:e.record,purpose:e.purpose})}async restoreEcdsaSealedRecordForWallet(e){let t=String(e.purpose.thresholdSessionId||``).trim();if(!t||e.record.authMethod!==e.purpose.authMethod||e.record.thresholdSessionId!==t||!Fr(e.record.chainTarget,e.purpose.chainTarget)||!b(e.record.roleLocalMaterialRef.materialActivation,e.purpose.materialActivation))return`deferred`;let n=[e.walletId,e.purpose.authMethod,e.purpose.curve,B(e.purpose.chainTarget),Ad(e.purpose.materialActivation),t].join(`:`);if(this.restoreAttempts.hasCompleted(n))return`ready`;let r=this.restoreAttempts.getInFlight(n);if(r)return await r,this.restoreAttempts.hasCompleted(n)?`ready`:`deferred`;let i=`deferred`,a=(async()=>{let r=await this.ports.restoreEcdsaSigningSessionMaterialFromSealedRecord({sealedRecord:e.record});r&&(await this.ports.recordSessionMaterialRestored({thresholdSessionId:t,chainTarget:e.record.chainTarget},{ok:!0,remainingUses:r.remainingUses,expiresAtMs:r.expiresAtMs}),this.restoreAttempts.rememberCompleted(n),i=`restored`)})().catch(n=>{console.warn(`[EmailOtpSession] wallet-scoped sealed ECDSA restore failed`,{walletId:e.walletId,thresholdSessionId:t,error:n instanceof Error?n.message:String(n||`unknown error`)})}).finally(()=>{this.restoreAttempts.clearInFlight(n)});return this.restoreAttempts.setInFlight(n,a),await a,i}};async function xL(e){let t=wL(e.target);return t?await e.readWarmSessionStatusFromWorker(t).catch(e=>({ok:!1,code:`worker_error`,message:e instanceof Error?e.message:String(e||`Email OTP worker error`)})):{ok:!1,code:`invalid_args`,message:`Missing thresholdSessionId`}}async function SL(e){let t=wL(e.target);if(!t)return{ok:!1,code:`invalid_args`,message:`Missing thresholdSessionId`};try{let n=await e.consumeWarmSessionUsesFromWorker({target:t,...typeof e.uses==`number`?{uses:e.uses}:{}});if(!n.ok&&n.code===`not_found`&&e.ecdsaPurpose){let r=await e.tryRestoreEcdsaWarmSessionStatusFromSealedRecord(e.ecdsaPurpose);if(r?.ok){let n=await e.consumeWarmSessionUsesFromWorker({target:t,...typeof e.uses==`number`?{uses:e.uses}:{}});return e.ecdsaPurpose&&await e.recordSessionUseConsumed(e.ecdsaPurpose,n),n}return r&&e.ecdsaPurpose&&await e.recordSessionMaterialRestored(e.ecdsaPurpose,r),n}return e.ecdsaPurpose&&await e.recordSessionUseConsumed(e.ecdsaPurpose,n),n}catch(e){return{ok:!1,code:`worker_error`,message:e instanceof Error?e.message:String(e||`Email OTP worker error`)}}}async function CL(e){let t=wL(e.target);t&&await e.clearVolatileWarmSessionMaterialFromWorker(t).catch(()=>void 0)}function wL(e){let t=String(e.thresholdSessionId||``).trim();return t?e.kind===`ecdsa`?{kind:`ecdsa`,thresholdSessionId:t}:{kind:`ed25519_yao`,thresholdSessionId:t,materialActivation:e.materialActivation}:null}function TL(e){return{async readStatus(t){return await _P({worker:e.worker,target:t})},async consumeUses(t){return await vP({worker:e.worker,target:t.target,...typeof t.uses==`number`?{uses:t.uses}:{}})},async clearMaterial(t){await yP({worker:e.worker,target:t})}}}var EL=class{constructor(e){this.ports=e}async readWarmSessionStatusOnly(e){return await xL({target:e,readWarmSessionStatusFromWorker:e=>this.ports.workerClient.readStatus(e)})}async consumeWarmSessionUses(e){return await SL({target:DL(e),...typeof e.uses==`number`?{uses:e.uses}:{},consumeWarmSessionUsesFromWorker:e=>this.ports.workerClient.consumeUses(e),ecdsaPurpose:ij(e.purpose),tryRestoreEcdsaWarmSessionStatusFromSealedRecord:e=>this.ports.sealedRestoreOrchestrator.tryRestoreEcdsaWarmSessionStatusFromSealedRecord(e),recordSessionUseConsumed:(e,t)=>this.ports.sealedRefreshPolicy.recordSessionUseConsumed(e,t),recordSessionMaterialRestored:(e,t)=>this.ports.sealedRefreshPolicy.recordSessionMaterialRestored(e,t)})}async clearVolatileWarmSessionMaterial(e){await CL({target:e,clearVolatileWarmSessionMaterialFromWorker:e=>this.ports.workerClient.clearMaterial(e)})}};function DL(e){let t=rj(e);return e.purpose.curve===`ecdsa`?{kind:`ecdsa`,thresholdSessionId:t}:{kind:`ed25519_yao`,thresholdSessionId:t,materialActivation:e.purpose.materialActivation}}var OL=class{constructor(e){this.sealedRefreshDiagnosticLogAtMsByKey=new Map,this.runtimeConfig=new hL({configs:e.configs,getRpId:e.getRpId}),this.sealedSessionRegistry=new gL({configs:e.configs,getSignerWorkerContext:e.getSignerWorkerContext,commitEvmFamilyThresholdEcdsaSessions:e.commitEvmFamilyThresholdEcdsaSessions,listActiveEcdsaCapabilityManifestsForWallet:e.listActiveEcdsaCapabilityManifestsForWallet,writeExactSealedSession:e.writeExactSealedSession,readExactSealedSession:e.readExactSealedSession,clearEcdsaRestoreCaches:()=>this.clearEcdsaRestoreCaches()}),this.ecdsaLifecycleRuntime=new eL({configs:e.configs,getSignerWorkerContext:e.getSignerWorkerContext,loadWalletCustodyEd25519Material:e.loadWalletCustodyEd25519Material,restoreWalletCustodyEcdsaContinuity:e.restoreWalletCustodyEcdsaContinuity,provisionThresholdEcdsaSession:e.provisionThresholdEcdsaSession,provisionEmailOtpEcdsaExplicitExportSession:e.provisionEmailOtpEcdsaExplicitExportSession,runtimeConfig:this.runtimeConfig,ownerLaneScopeStores:e.ownerLaneScopeStores,resolveSelectedWalletAuthority:e.resolveSelectedWalletAuthority,resolveCurrentEcdsaCapabilityRuntime:e.resolveCurrentEcdsaCapabilityRuntime,publicationPorts:()=>this.sealedSessionRegistry.ecdsaPublicationPorts()}),this.exportRecoveryRuntime=new mL({getSignerWorkerContext:e.getSignerWorkerContext,requireRelayUrl:()=>this.runtimeConfig.requireRelayUrl(),requireSigningSessionSealGroupId:()=>this.runtimeConfig.requireSigningSessionSealGroupId(),resolveSelectedWalletAuthority:e.resolveSelectedWalletAuthority,prepareEcdsaExportCapability:e=>this.ecdsaLifecycleRuntime.prepareEcdsaExportCapability(e)});let t=ZI({withThresholdEcdsaSigningQueue:e.withThresholdEcdsaSigningQueue,getSignerWorkerContext:e.getSignerWorkerContext,resolveSelectedWalletAuthority:e.resolveSelectedWalletAuthority,readExactWalletSessionAuthorization:e.readExactWalletSessionAuthorization,provisionThresholdEcdsaSession:e.provisionThresholdEcdsaSession,commitEvmFamilyThresholdEcdsaSessions:e.commitEvmFamilyThresholdEcdsaSessions,resolveCurrentEcdsaCapabilityRuntime:e.resolveCurrentEcdsaCapabilityRuntime}),n=TL({worker:e.signerWorkerManager});this.sealedRefreshPolicy=new _L({updateExactSealedSessionPolicy:e.updateExactSealedSessionPolicy,clearEcdsaRestoreCaches:()=>this.clearEcdsaRestoreCaches()}),this.sealedRestoreOrchestrator=new bL({sessionPersistenceMode:e.configs.signing.sessionPersistenceMode,listExactSealedSessionsForWallet:e.listExactSealedSessionsForWallet,readExactSealedSession:e.readExactSealedSession,acquireSigningSessionRestoreLease:e.acquireSigningSessionRestoreLease,releaseSigningSessionRestoreLease:e.releaseSigningSessionRestoreLease,readWarmSessionStatusFromWorker:e=>n.readStatus({kind:`ecdsa`,thresholdSessionId:e}),restoreEcdsaSigningSessionMaterialFromSealedRecord:e=>t(e),recordSessionMaterialRestored:(e,t)=>this.sealedRefreshPolicy.recordSessionMaterialRestored(e,t),shouldLogDiagnostic:e=>this.shouldLogSealedRefreshDiagnostic(e)}),this.warmSessionRuntime=new EL({workerClient:n,sealedRefreshPolicy:this.sealedRefreshPolicy,sealedRestoreOrchestrator:this.sealedRestoreOrchestrator})}async persistEcdsaSessionForRefresh(e){await this.sealedSessionRegistry.persistEcdsaSessionForRefresh(e)}clearEcdsaRestoreCaches(){this.sealedRestoreOrchestrator.clearCache()}shouldLogSealedRefreshDiagnostic(e,t=Date.now()){let n=String(e||``).trim();return!n||t-(this.sealedRefreshDiagnosticLogAtMsByKey.get(n)||0)<6e4?!1:(this.sealedRefreshDiagnosticLogAtMsByKey.set(n,t),!0)}async discoverPersistedSessionsForWallet(e){return await this.sealedRestoreOrchestrator.discoverPersistedSessionsForWallet(e)}async restorePersistedSessionForSigning(e){return await this.sealedRestoreOrchestrator.restorePersistedSessionForSigning(e)}async readWarmSessionStatusOnly(e){return await this.warmSessionRuntime.readWarmSessionStatusOnly(e)}async consumeWarmSessionUses(e){return await this.warmSessionRuntime.consumeWarmSessionUses(e)}async clearVolatileWarmSessionMaterial(e){await this.warmSessionRuntime.clearVolatileWarmSessionMaterial(e)}async requestTransactionSigningChallenge(e){return await this.exportRecoveryRuntime.requestTransactionSigningChallenge(e)}async requestExportChallenge(e){return await this.exportRecoveryRuntime.requestExportChallenge(e)}async exportEcdsaKeyWithDurableAuthorization(e){return await this.exportRecoveryRuntime.exportEcdsaKeyWithDurableAuthorization(e)}async exportEd25519YaoSeedWithFreshEmailOtpLane(e){return await this.exportRecoveryRuntime.exportEd25519YaoSeedWithFreshEmailOtpLane(e)}async loginWithEcdsaCapabilityForSigning(e){return await this.ecdsaLifecycleRuntime.loginWithEcdsaCapabilityForSigning(e)}async loginWithEcdsaCapabilityInternal(e){return await this.ecdsaLifecycleRuntime.loginWithEcdsaCapabilityInternal(e)}};function kL(e){let t=new OL({configs:e.seamsWebConfigs,signerWorkerManager:e.signerWorkerManager,getRpId:()=>e.touchIdPrompt.getRpId(),getSignerWorkerContext:e.getSignerWorkerContext,loadWalletCustodyEd25519Material:e.loadWalletCustodyEd25519Material,restoreWalletCustodyEcdsaContinuity:e.restoreWalletCustodyEcdsaContinuity,resolveSelectedWalletAuthority:K.resolveSelectedWalletAuthority.bind(K),ownerLaneScopeStores:{getWalletAuthMethodV2:K.getWalletAuthMethodV2.bind(K),listWalletAuthMethodsForWallet:K.listWalletAuthMethodsForWallet.bind(K),getWalletPasskeyAuthenticator:K.getWalletPasskeyAuthenticator.bind(K)},readExactWalletSessionAuthorization:q.readExactWithOperationCredential.bind(q),provisionThresholdEcdsaSession:e.provisionThresholdEcdsaSession,withThresholdEcdsaSigningQueue:t=>_d({queueByKey:e.thresholdEcdsaSigningQueueByKey,...t}),provisionEmailOtpEcdsaExplicitExportSession:e.provisionEmailOtpEcdsaExplicitExportSession,commitEvmFamilyThresholdEcdsaSessions:t=>DF({queueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,bootstrapStore:e.ecdsaBootstrapStore,persistEcdsaRoleLocalReadyRecord:e.persistEcdsaRoleLocalReadyRecord,ensureSealedRefreshStartupParityForThresholdEcdsaBootstrap:t=>Yu(e.ensureSealedRefreshStartupParity,t)},t),listActiveEcdsaCapabilityManifestsForWallet:t=>e.listActiveEcdsaCapabilityManifestsForWallet(String(t)),resolveCurrentEcdsaCapabilityRuntime:e.resolveActiveEcdsaCapabilityRuntime,writeExactSealedSession:e.sealedSessionStore.writeExactSealedSession,readExactSealedSession:e.sealedSessionStore.readExactSealedSession,listExactSealedSessionsForWallet:e.sealedSessionStore.listExactSealedSessionsForWallet,acquireSigningSessionRestoreLease:e.sealedSessionStore.acquireSigningSessionRestoreLease,releaseSigningSessionRestoreLease:e.sealedSessionStore.releaseSigningSessionRestoreLease,updateExactSealedSessionPolicy:e.sealedSessionStore.updateExactSealedSessionPolicy}),n=zP({base:e.passkeyMpcSession,secondary:{readWarmSessionStatusOnly:e=>t.readWarmSessionStatusOnly({kind:`ecdsa`,thresholdSessionId:String(e)}),clearVolatileWarmSessionMaterial:e=>t.clearVolatileWarmSessionMaterial({kind:`ecdsa`,thresholdSessionId:String(e.scope.thresholdSessionId)})}});return{emailOtpSessions:t,touchConfirm:e.baseTouchConfirm,passkeyMpcSession:n}}function AL(e){return kL({resolveActiveEcdsaCapabilityRuntime:Ev,seamsWebConfigs:e.seamsWebConfigs,touchIdPrompt:e.touchIdPrompt,signerWorkerManager:e.signerWorkerManager,ecdsaBootstrapStore:e.stores.walletProfileAndSignerRecords.ecdsaBootstrapStore,sealedSessionStore:e.sealedSigningSessionStore,baseTouchConfirm:e.baseTouchConfirm,passkeyMpcSession:e.passkeyMpcSession,getSignerWorkerContext:()=>e.getEnginePorts().walletSessionActivationDeps.getSignerWorkerContext(),provisionThresholdEcdsaSession:t=>e.getEnginePorts().tempoSigningDeps.provisionThresholdEcdsaSession(t),provisionEmailOtpEcdsaExplicitExportSession:t=>Ul({queueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,activationDeps:e.getEnginePorts().walletSessionActivationDeps,persistEcdsaRoleLocalReadyRecord:e.runtimePorts.storage.persistEcdsaRoleLocalReadyRecord},t),thresholdEcdsaBootstrapQueueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,thresholdEcdsaSigningQueueByKey:e.thresholdEcdsaSigningQueueByKey,loadWalletCustodyEd25519Material:e.loadWalletCustodyEd25519Material,restoreWalletCustodyEcdsaContinuity:e.restoreWalletCustodyEcdsaContinuity,persistEcdsaRoleLocalReadyRecord:e.runtimePorts.storage.persistEcdsaRoleLocalReadyRecord,listActiveEcdsaCapabilityManifestsForWallet:e.listActiveEcdsaCapabilityManifestsForWallet,ensureSealedRefreshStartupParity:e.ensureSealedRefreshStartupParity})}function jL(e){return{passkeyPublicDeps:iF({seamsWebConfigs:e.seamsWebConfigs,credentialStore:e.stores.recoveryAndDeviceLinking.credentialStore,touchIdPrompt:e.touchIdPrompt,passkeyMpcSession:e.passkeyMpcSession,warmSigning:e.warmSigning,thresholdEcdsaBootstrapQueueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,ensureSealedRefreshStartupParity:e.ensureSealedRefreshStartupParity,walletSessionActivationDeps:e.enginePorts.walletSessionActivationDeps,persistEcdsaRoleLocalReadyRecord:e.runtimePorts.storage.persistEcdsaRoleLocalReadyRecord}),warmCapabilitiesPublicDeps:aF({seamsWebConfigs:e.seamsWebConfigs,bootstrapStore:e.stores.walletProfileAndSignerRecords.ecdsaBootstrapStore,passkeyMpcSession:e.passkeyMpcSession,warmSigning:e.warmSigning,walletSessionActivationDeps:e.enginePorts.walletSessionActivationDeps,signingSessionCoordinator:e.enginePorts.signingSessionCoordinator})}}function ML(e){return e.session.chainTargets.length===e.walletKeys.length?e.walletKeys.every((t,n)=>{let r=e.session.chainTargets[n];return r!==void 0&&B(r)===B(t.chainTarget)}):!1}function NL(e){let t=e.walletKey;return{keyScope:t.keyScope,chainTarget:t.chainTarget,walletId:t.walletId,evmFamilySigningKeySlotId:t.evmFamilySigningKeySlotId,keyHandle:t.keyHandle,ecdsaThresholdKeyId:t.ecdsaThresholdKeyId,signingRootId:t.signingRootId,signingRootVersion:t.signingRootVersion,thresholdEcdsaPublicKeyB64u:t.thresholdEcdsaPublicKeyB64u,thresholdOwnerAddress:t.thresholdOwnerAddress,relayerKeyId:t.relayerKeyId,relayerVerifyingShareB64u:t.relayerVerifyingShareB64u,participantIds:t.participantIds,publicCapability:t.publicCapability,roleLocalMaterialRef:e.materialRef,ecdsaRoleLocalPublicFacts:e.publicFacts}}async function PL(e){if(!ML({session:e.session,walletKeys:e.walletKeys}))throw Error(`[SigningEngine] strict ECDSA registration requires one family activation projected to every wallet target`);let t=z(e.walletId);if(e.session.authority.walletId!==t)throw Error(`[SigningEngine] strict ECDSA registration authority does not match the target wallet`);let n=e.session.roleLocalMaterial,r=ls({kind:`ecdsa_role_local_persisted_material_ref_v1`,durableMaterialRef:n.durableMaterialRef,bindingDigest:n.bindingDigest,materialActivation:e.session.materialActivation}),[i,...a]=e.walletKeys.map(n=>NL({walletKey:n,publicFacts:rs({walletId:t,chainTarget:n.chainTarget,keyHandle:n.keyHandle,ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,signingRootId:n.signingRootId,signingRootVersion:n.signingRootVersion,applicationBindingDigestB64u:e.session.bootstrap.applicationBindingDigestB64u,clientParticipantId:1,relayerParticipantId:2,participantIds:n.participantIds,contextBinding32B64u:e.session.clientPublicFacts.contextBinding32B64u,derivationClientSharePublicKey33B64u:e.session.clientPublicFacts.derivationClientSharePublicKey33B64u,relayerPublicKey33B64u:e.session.clientPublicFacts.relayerPublicKey33B64u,groupPublicKey33B64u:e.session.clientPublicFacts.groupPublicKey33B64u,ethereumAddress:e.session.clientPublicFacts.ethereumAddress,publicCapability:e.session.publicCapability}),materialRef:r}));if(!i)throw Error(`[SigningEngine] strict ECDSA registration did not persist any wallet keys`);return[i,...a]}function FL(e){let t=e.clientExtensionResults.prf?.results?.first;if(typeof t!=`string`||!t)throw Error(`the replacement passkey returned no wallet-custody PRF output`);let n=F(t);if(n.length!==32)throw Error(`the replacement passkey returned an invalid wallet-custody PRF output`);return Uint8Array.from(n).buffer}function IL(e){let t=m(String(e.rawId||e.id||``).trim());if(!t.ok)throw Error(`replacement passkey credential id ${t.error.message}`);return{registration:e,credentialIdB64u:t.value,factorSecret:FL(e)}}function LL(e,t){let n=null;for(let r of e)if(r.signer.authority.authorityDigest===t){if(n&&n.durableMaterial.roleLocalBinding.keyHandle!==r.durableMaterial.roleLocalBinding.keyHandle)throw Error(`[SigningEngine][near] Email OTP ECDSA session identity is ambiguous`);n=r}if(!n)throw Error(`[SigningEngine][near] Email OTP ECDSA capability is unavailable`);return n}function RL(e){let t=ft(tl(`wallet-session-mint`));if(!t.ok)throw Error(`[SigningEngine][near] failed to generate an ECDSA Wallet Session mint id`);return{kind:`router_ab_ecdsa_post_registration_session_activation_policy_v1`,key_handle:String(e.manifest.durableMaterial.roleLocalBinding.keyHandle),session_policy:{threshold_session_id:nc.thresholdEcdsaSession(tl(`threshold-ecdsa-login`)),wallet_session_mint_id:t.value,ttl_ms:ze.ttlMs,remaining_uses:e.remainingUses,runtime_policy_scope:e.manifest.durableMaterial.runtimePolicyScope}}}async function zL(e,t){if(e.selectedFactorAuthority.factor.kind!==`email_otp`)throw Error(`Email OTP restore requires an Email OTP factor authority`);if(Ta(e.selectedAuthority))return{kind:`absent`};let n=await U({authority:e.selectedFactorAuthority}),r=LL(await wv(String(e.selectedAuthority.walletId)),String(n.authorityDigest));return{kind:`required`,sessionHandleBinding:{operation:`wallet_unlock`,keyHandle:String(r.durableMaterial.roleLocalBinding.keyHandle),authSubjectId:e.selectedFactorAuthority.factor.providerUserId,chainTarget:r.signer.scope.targetMemberships[0]},runtimePolicyScope:r.durableMaterial.runtimePolicyScope,sessionPolicy:RL({manifest:r,remainingUses:t})}}function BL(e){let t=Xa(e.activation.public_capability.material_activation),n=0;for(let r of e.walletSession.capabilitySubjects)r.kind===`sign`&&r.keyFamily===`ecdsa_secp256k1`&&b(r.materialActivation,t)&&(n+=1);return n===1}async function VL(e){let t=e.response.session,n=e.authorization.record,r=e.authorization.operationCredential;if(String(n.walletId)!==String(e.walletId)||String(e.response.public_capability.client_id)!==String(n.walletId)||n.authorizationId!==t.authorization_id||n.quotaId!==t.quota_id||n.expiresAtMs!==t.expires_at_ms||r.walletSessionId!==t.wallet_session_id||!BL({walletSession:n,activation:e.response}))throw Error(`[SigningEngine][near] refreshed ECDSA exact Wallet Session is inconsistent`);await q.writeExactWithOperationCredential({record:n,operationCredential:r})}async function HL(e){return await Ms(K,e)}async function UL(){return null}const WL={getWalletAuthMethodV2:e=>K.getWalletAuthMethodV2(e),listWalletAuthMethodsForWallet:e=>K.listWalletAuthMethodsForWallet(e),getWalletPasskeyAuthenticator:UL,readEmailOtpProviderSubjectForWallet:HL};async function GL(e){let t=(await K.listWalletAuthMethodsV2ForWallet(String(e.walletId))).filter(t=>t.kind===V.passkey&&t.status===`active`&&t.walletId===e.walletId&&String(t.rpId)===e.rpId&&String(t.credentialIdB64u)===e.credentialIdB64u),[n]=t;return t.length!==1||!n||n.kind!==V.passkey?null:await U({authority:{walletId:n.walletId,factor:{kind:V.passkey,credentialIdB64u:n.credentialIdB64u},verifier:{kind:`webauthn`,rpId:n.rpId},bindingId:n.walletAuthMethodId}})}function KL(e){let t=no({kind:`wallet_auth_authority_ref`,walletId:e.walletId,walletAuthMethodId:e.walletAuthMethodId,authorityDigest:e.authorityDigestB64u});if(!t)throw Error(`[SigningEngine][near] exact Email OTP authority digest is invalid`);return t}async function qL(e){let t=await lp({authMethod:e.authMethod,stores:WL});if(!Na(t)||t.walletId!==e.authMethod.walletId||t.bindingId!==e.authMethod.walletAuthMethodId||t.verifier.emailHashHex!==e.emailHashHex||t.factor.providerUserId!==e.providerSubject)throw Error(`[SigningEngine][near] exact Email OTP factor authority changed`);return t}function JL(e){let t=e.auth;switch(t.kind){case V.emailOtp:return{kind:e.kind,signer:e.signer,auth:t,thresholdSessionId:e.thresholdSessionId};case V.passkey:throw Error(`[SigningEngine][near] Email OTP material identity is required`);default:throw Error(`[SigningEngine][near] unsupported Ed25519 material authority`)}}async function YL(e){if(String(e.identity.signer.account.wallet.walletId)!==String(e.walletId)||String(e.identity.signer.account.nearAccountId)!==String(e.nearAccountId)||e.identity.signer.signerSlot!==e.signerSlot)return null;let t;try{t=await K.resolveSelectedWalletAuthority(String(e.walletId))}catch{return null}if(t.kind!==`resolved`)return null;let{selection:n,authMethod:r,authority:i}=t,a=i.signerActivations.ed25519;if(n.lockState!==`unlocked`||n.walletId!==e.walletId||n.walletAuthMethodId!==r.walletAuthMethodId||r.kind!==V.emailOtp||r.status!==`active`||r.walletId!==e.walletId||r.walletAuthorityId!==i.authorityId||i.state!==`active`||i.walletId!==e.walletId||!a||a.signer.walletId!==e.walletId||!b(a.materialActivation,e.materialActivation))return null;try{let t=await U({authority:await qL({authMethod:r,emailHashHex:r.emailHashHex,providerSubject:e.identity.auth.providerSubjectId})});return t.walletId!==e.walletId||t.walletAuthMethodId!==r.walletAuthMethodId?null:t}catch{return null}}async function XL(e){let t=e.bootstrap.session,n=e.exactAuthorization?.record??await q.readExact(t.walletSessionId);if(!n||n.kind!==`active_wallet_session_v1`||n.walletId!==e.walletId||n.authorizationId!==t.authorizationId||n.quotaId!==t.quotaId||n.expiresAtMs<=Date.now())throw Error(`[SigningEngine][near] exact Email OTP activation session is unavailable`);let[r,i]=await Promise.all([K.getWalletAuthMethodV2(String(n.authMethodId)),K.getWalletAuthority(String(n.authorityId))]);if(!r||r.kind!==`email_otp`||r.status!==`active`||r.walletId!==e.walletId||r.walletAuthorityId!==n.authorityId||r.emailHashHex!==e.emailHashHex||!i||i.state!==`active`||i.walletId!==e.walletId||i.authorityId!==n.authorityId||i.authorityDigestB64u!==n.authorityDigestB64u||i.revocationEpoch!==n.authorityRevocationEpoch)throw Error(`[SigningEngine][near] exact Email OTP activation authority is unavailable`);let a=KL({walletId:e.walletId,walletAuthMethodId:r.walletAuthMethodId,authorityDigestB64u:i.authorityDigestB64u}),o=await U({authority:await qL({authMethod:r,emailHashHex:e.emailHashHex,providerSubject:e.providerSubject})});if(e.verifiedAuthority&&(e.verifiedAuthority.walletId!==o.walletId||e.verifiedAuthority.walletAuthMethodId!==o.walletAuthMethodId))throw Error(`[SigningEngine][near] verified Email OTP activation authority changed`);let s=e.exactAuthorization;if(s){if(!lt(s.record,n)||s.operationCredential.walletSessionId!==t.walletSessionId)throw Error(`[SigningEngine][near] exact Email OTP activation credential is unavailable`);return{authority:a,operationCredential:s.operationCredential}}let c=await q.readExactActiveForWallet({walletId:e.walletId,authorityId:n.authorityId,authMethodId:n.authMethodId});if(c.kind!==`found`||!lt(c.record,n)||c.operationCredential.walletSessionId!==t.walletSessionId)throw Error(`[SigningEngine][near] exact Email OTP activation credential is unavailable`);return{authority:a,operationCredential:c.operationCredential}}function ZL(e){switch(e.status){case`missing`:return{kind:`missing`};case`expired`:return{kind:`expired`};case`superseded`:return{kind:`superseded`};case`authority_unavailable`:return{kind:`authority_unavailable`};case`method_unavailable`:return{kind:`method_unavailable`};case`capability_unavailable`:return{kind:`capability_unavailable`};case`invalid`:return{kind:`corrupt`};default:throw Error(`[SigningEngine][ed25519-export] unsupported exact session status`)}}async function QL(e){let t=e.subject.signer.account.wallet.walletId,n;try{n=await K.resolveSelectedWalletAuthority(String(t))}catch{return{kind:`persistence_unavailable`}}if(n.kind!==`resolved`)return n.kind===`integrity_error`?{kind:`corrupt`}:{kind:`missing`};let{selection:r,authority:i,authMethod:a}=n;if(r.lockState!==`unlocked`||r.walletId!==t||r.walletAuthMethodId!==a.walletAuthMethodId||i.state!==`active`||i.walletId!==t||a.kind!==`email_otp`||a.status!==`active`||a.walletId!==t||a.walletAuthorityId!==i.authorityId)return{kind:`corrupt`};let o;try{o=await qL({authMethod:a,emailHashHex:a.emailHashHex,providerSubject:e.subject.auth.providerSubjectId})}catch{return{kind:`corrupt`}}let s=await q.readExactActiveForWallet({walletId:t,authorityId:i.authorityId,authMethodId:a.walletAuthMethodId});switch(s.kind){case`missing`:case`upgrade_required`:case`corrupt`:case`persistence_unavailable`:return s;case`found`:break;default:throw Error(`[SigningEngine][ed25519-export] unsupported exact local session result`)}if(s.record.expiresAtMs<=Date.now())return{kind:`expired`};let c;try{c=await $c({relayerUrl:e.relayerUrl,operationCredential:s.operationCredential}).read({walletSessionId:s.operationCredential.walletSessionId,quotaId:s.record.quotaId})}catch{return{kind:`persistence_unavailable`}}return c.status!==`active`&&c.status!==`exhausted`?ZL(c):{kind:`found`,authorization:{selectedAuthority:i,selectedAuthMethod:a,factorAuthority:o,record:s.record,operationCredential:s.operationCredential,status:c}}}function $L(e,t){return globalThis.fetch(e,t)}function eR(e){let t=e.walletSessionState.thresholdSessionId;switch(e.subject.kind){case`exact_lane`:return{kind:`exact_lane`,laneIdentity:e.walletSessionState.signingLane.identity};case`export_exact_lane`:return{kind:`export_exact_lane`,laneIdentity:Oc({signer:e.walletSessionState.signingLane.identity.signer,auth:e.walletSessionState.signingLane.identity.auth,thresholdSessionId:t}),materialActivation:e.subject.materialActivation};case`material_identity`:return{kind:`material_identity`,materialIdentity:{kind:`near_ed25519_material_identity`,signer:e.walletSessionState.signingLane.identity.signer,auth:e.walletSessionState.signingLane.identity.auth,thresholdSessionId:t}};default:return tR(e.subject)}}function tR(e){throw Error(`Unknown Ed25519 capability rehydration subject: ${String(e)}`)}async function nR(e){let t=e.walletSessionState.thresholdSessionId,n=await e.claimWarmSessionMaterial({thresholdSessionId:t,purpose:{curve:`ed25519`,materialActivation:e.materialActivation},consume:!1});if(n.ok||n.code!==`not_found`)return n;if(e.runtime.factor.kind!==`passkey`)throw Error(`[SigningEngine][near] persisted Ed25519 credential is unavailable`);let r=String(e.walletSessionState.walletSessionAuth.walletSessionToken||``).trim(),i=String(e.runtime.sealedRecord.groupId||``).trim();if(!r||!i)return{ok:!1,code:`invalid_args`,message:`Passkey Ed25519 sealed restore metadata is incomplete`};if(!b(e.runtime.sealedRecord.ed25519Restore.materialActivation,e.materialActivation))throw Error(`[SigningEngine][near] persisted Ed25519 material activation mismatch`);let a=fs(e.runtime.sealedRecord.keyVersion),o=await e.rehydrateWarmSessionMaterial({thresholdSessionId:t,sealedSecretB64u:e.runtime.sealedRecord.sealedSecretB64u,signingSessionSealKeyVersion:a,expiresAtMs:e.runtime.sealedRecord.expiresAtMs,remainingUses:e.runtime.sealedRecord.remainingUses,transport:{curve:`ed25519`,authMethod:`passkey`,walletId:String(e.runtime.walletId),relayerUrl:e.runtime.relayerUrl,signingSessionSealKeyVersion:a,groupId:i,walletSessionToken:r,ed25519Restore:xn({rpId:e.runtime.factor.rpId,nearAccountId:e.runtime.nearAccountId,nearEd25519SigningKeyId:e.runtime.nearEd25519SigningKeyId,relayerKeyId:e.runtime.relayerKeyId,participantIds:e.runtime.participantIds,runtimePolicyScope:e.runtime.runtimePolicyScope,signerSlot:e.runtime.signerSlot,routerAbNormalSigning:e.runtime.routerAbNormalSigning,credentialIdB64u:e.runtime.factor.credentialIdB64u,materialActivation:e.materialActivation})}});return o.ok?(n=await e.claimWarmSessionMaterial({thresholdSessionId:t,purpose:{curve:`ed25519`,materialActivation:e.materialActivation},consume:!1}),n):o}async function rR(e){let t=e.identity.signer,n=(await e.store.listLanes()).filter(n=>String(n.walletId)===String(t.account.wallet.walletId)&&String(n.nearAccountId)===String(t.account.nearAccountId)&&String(n.nearEd25519SigningKeyId)===String(t.nearEd25519SigningKeyId)&&n.signerSlot===t.signerSlot&&String(n.thresholdSessionId)===String(e.identity.thresholdSessionId)&&MR(n.auth,e.identity.auth));if(n.length>1)throw Error(`[SigningEngine][near] public Ed25519 capability lane is conflicting`);return n[0]?.materialActivation??null}function iR(e){let t=e.walletSessionState.signingLane,n=t.identity.signer;if(t.auth.kind!==`email_otp`)throw Error(`[SigningEngine][near] Email OTP recovery returned another auth lane`);return{walletId:n.account.wallet.walletId,nearAccountId:n.account.nearAccountId,thresholdSessionId:e.walletSessionState.thresholdSessionId,runtimePolicyScope:e.walletSessionState.runtimePolicyScope,materialActivation:e.materialActivation,auth:{kind:`email_otp`,providerSubjectId:t.auth.providerSubjectId},nearEd25519SigningKeyId:n.nearEd25519SigningKeyId,signerSlot:n.signerSlot,remainingUses:e.walletSessionState.signingWalletSession.remainingUses,expiresAtMs:e.walletSessionState.signingWalletSession.expiresAtMs}}function aR(e){return e.kind===`wallet_authority_linked_signer_material_v1`&&e.keyFamily===`ed25519`}function oR(e){let t=e.selected;if(t.kind!==`resolved`){let e=t.kind===`integrity_error`?`: ${t.reason}`:``;throw Error(`[SigningEngine][ed25519-export] selected Wallet Authority is ${t.kind}${e}`)}if(t.authority.provenance.kind===`wallet_registration`||t.authority.provenance.kind===`wallet_recovery`)return null;let{selection:n,authMethod:r,authority:i,signerMaterials:a,exportRoot:o}=t,s=e.subject.signer,c=i.signerActivations.ed25519;if(n.lockState!==`unlocked`||r.kind!==V.emailOtp||r.status!==`active`||i.state!==`active`||String(n.walletId)!==String(s.account.wallet.walletId)||n.walletAuthMethodId!==r.walletAuthMethodId||r.walletAuthorityId!==i.authorityId||String(r.walletId)!==String(s.account.wallet.walletId)||!i.permissions.includes(`export_keys`)||!c||!b(c.materialActivation,e.expectedMaterialActivation)||!o)throw Error(`[SigningEngine][ed25519-export] selected linked Email OTP authority has no exact export root`);let l=null;for(let t of a)if(!(!aR(t)||t.authorityId!==i.authorityId||t.walletAuthMethodId!==r.walletAuthMethodId||!b(t.materialActivation,e.expectedMaterialActivation))){if(l)throw Error(`[SigningEngine][ed25519-export] linked Ed25519 material is ambiguous`);l=t}if(!l)throw Error(`[SigningEngine][ed25519-export] linked Ed25519 material is unavailable`);let u=l.targetFactor,d=l.publicFacts.applicationBinding,f=l.publicFacts.targetBinding.lifecycle,p=c.signer.registeredPublicKeyB64u;if(u.kind!==V.emailOtp||u.walletAuthMethodId!==r.walletAuthMethodId||u.emailHashHex!==r.emailHashHex||u.registrationAuthorityId!==r.registrationAuthorityId||o.authorityId!==i.authorityId||o.walletAuthMethodId!==r.walletAuthMethodId||o.walletKeyId!==c.signer.walletKeyId||o.envelope.binding.kind!==`ed25519_yao_client_root_v1`||o.envelope.binding.registeredPublicKeyB64u!==p||o.envelope.factor.kind!==V.emailOtp||d.wallet_id!==String(s.account.wallet.walletId)||d.near_ed25519_signing_key_id!==String(s.nearEd25519SigningKeyId)||d.key_creation_signer_slot!==s.signerSlot||f.account_id!==String(s.account.wallet.walletId)||f.session_id!==String(e.subject.thresholdSessionId)||f.selected_server_id!==e.expectedMaterialActivation.signingWorker||P(Uint8Array.from(l.publicFacts.activationReceipt.registered_public_key))!==p)throw Error(`[SigningEngine][ed25519-export] linked Email OTP export identity changed`);if(e.activeCapability){if(!b(e.activeCapability.materialActivation,e.expectedMaterialActivation)||P(Uint8Array.from(e.activeCapability.registeredPublicKey))!==p)throw Error(`[SigningEngine][ed25519-export] active Email OTP capability changed`);return o.envelope}return{envelope:o.envelope,source:{materialActivation:e.expectedMaterialActivation,signingWorkerId:f.selected_server_id,participantIds:l.publicFacts.participantIds,registeredPublicKeyB64u:p}}}async function sR(e){let t=null;for(let n of e.signerMaterials)if(!(!aR(n)||n.authorityId!==e.authMethod.walletAuthorityId||n.walletAuthMethodId!==e.authMethod.walletAuthMethodId)){if(t)throw Error(`[SigningEngine] linked Passkey Ed25519 signer material is conflicting`);t=n}if(!t)throw Error(`[SigningEngine] linked Passkey Ed25519 signer material is unavailable`);let n=t.publicFacts.applicationBinding,r=Vs(n.key_creation_signer_slot,{min:1}),i=t.targetFactor;if(!r||n.wallet_id!==String(e.walletId)||String(t.materialActivation.materialOwner)!==String(e.walletId)||i.kind!==V.passkey||i.walletAuthMethodId!==e.authMethod.walletAuthMethodId||String(i.rpId)!==String(e.authMethod.rpId)||String(i.credentialIdB64u)!==String(e.authMethod.credentialIdB64u))throw Error(`[SigningEngine] linked Passkey Ed25519 signer material identity is invalid`);let a=0;for(let i of await e.publicLaneStore.listLanes())i.auth.kind===`passkey`&&(String(i.walletId)!==String(e.walletId)||String(i.auth.rpId)!==String(e.authMethod.rpId)||i.auth.credentialIdB64u!==e.authMethod.credentialIdB64u||String(i.nearEd25519SigningKeyId)!==String(n.near_ed25519_signing_key_id)||i.signerSlot!==r||!b(i.materialActivation,t.materialActivation)||(a+=1));if(a===0)throw Error(`[SigningEngine] linked Passkey Ed25519 public lane is unavailable`);if(a!==1)throw Error(`[SigningEngine] linked Passkey Ed25519 public lane is ambiguous`);return r}async function cR(e){let t=e.laneIdentity.signer,n=(await e.store.listLanes()).filter(n=>n.auth.kind===V.emailOtp&&e.laneIdentity.auth.kind===V.emailOtp&&n.auth.providerSubjectId===e.laneIdentity.auth.providerSubjectId&&String(n.walletId)===String(t.account.wallet.walletId)&&String(n.nearAccountId)===String(t.account.nearAccountId)&&String(n.nearEd25519SigningKeyId)===String(t.nearEd25519SigningKeyId)&&n.signerSlot===t.signerSlot&&String(n.thresholdSessionId)===String(e.laneIdentity.thresholdSessionId)&&b(n.materialActivation,e.materialActivation));if(n.length!==1)throw Error(n.length===0?`[SigningEngine][near] Email OTP public lane is unavailable`:`[SigningEngine][near] Email OTP public lane is ambiguous`);return n[0]}async function lR(e){if(e.laneIdentity.auth.kind!==V.passkey)throw Error(`[SigningEngine][near] Passkey public lane authority is required`);let t=e.laneIdentity.auth,n=e.laneIdentity.signer,r=(await e.store.listLanes()).filter(r=>r.auth.kind===V.passkey&&r.auth.rpId===t.rpId&&r.auth.credentialIdB64u===t.credentialIdB64u&&String(r.walletId)===String(n.account.wallet.walletId)&&String(r.nearAccountId)===String(n.account.nearAccountId)&&String(r.nearEd25519SigningKeyId)===String(n.nearEd25519SigningKeyId)&&r.signerSlot===n.signerSlot&&String(r.thresholdSessionId)===String(e.laneIdentity.thresholdSessionId));if(r.length!==1)throw Error(r.length===0?`[SigningEngine][near] Passkey public lane is unavailable`:`[SigningEngine][near] Passkey public lane is ambiguous`);return r[0]}async function uR(e){let t=e.identity.signer,n=(await e.store.listLanes()).filter(n=>String(n.walletId)===String(t.account.wallet.walletId)&&String(n.nearAccountId)===String(t.account.nearAccountId)&&String(n.nearEd25519SigningKeyId)===String(t.nearEd25519SigningKeyId)&&n.signerSlot===t.signerSlot&&String(n.thresholdSessionId)===String(e.identity.thresholdSessionId)&&MR(n.auth,e.identity.auth)&&b(n.materialActivation,e.materialActivation));if(n.length!==1)throw Error(n.length===0?`[SigningEngine][near] exact Ed25519 public lane is unavailable`:`[SigningEngine][near] exact Ed25519 public lane is ambiguous`);return n[0]}async function dR(e){if(e.reference.auth.kind!==V.passkey)throw Error(`[SigningEngine][near] Passkey public lane authority is required`);if(e.authorization.selectedAuthMethod.kind!==V.passkey||String(e.authorization.session.walletId)!==String(e.reference.walletId))throw Error(`[SigningEngine][near] Passkey Wallet Session authority does not match lane`);let t=await K.getWalletAuthMethodV2(e.authorization.selectedAuthMethod.walletAuthMethodId);if(!t||t.kind!==V.passkey||t.status!==`active`||String(t.walletId)!==String(e.reference.walletId)||String(t.rpId)!==String(e.reference.auth.rpId)||String(t.credentialIdB64u)!==String(e.reference.auth.credentialIdB64u))throw Error(`[SigningEngine][near] Passkey Wallet Session method does not match lane`);let n=await U({authority:{walletId:t.walletId,factor:{kind:V.passkey,credentialIdB64u:t.credentialIdB64u},verifier:{kind:`webauthn`,rpId:t.rpId},bindingId:t.walletAuthMethodId}}),r=await U({authority:e.authorization.selectedFactorAuthority});if(n.authorityDigest!==r.authorityDigest||n.walletAuthMethodId!==r.walletAuthMethodId)throw Error(`[SigningEngine][near] Passkey Wallet Session authority changed`);return n}async function fR(e){if(e.reference.auth.kind!==V.passkey)throw Error(`[SigningEngine][near] Passkey public lane authority is required`);if(!Fc({session:e.authorization.session,materialActivation:e.materialActivation}))throw Error(`[SigningEngine][near] Passkey Wallet Session material changed`);let t=await dR({reference:e.reference,authorization:e.authorization}),n=gt(e.authorization.session.authorizationId);if(!n.ok||e.authorization.operationCredential.token.trim().length===0)throw Error(`[SigningEngine][near] Passkey Ed25519 Wallet Session credential is unavailable`);let r=e.material.facts,i=yn({walletId:String(e.reference.walletId),nearAccountId:String(e.reference.nearAccountId),nearEd25519SigningKeyId:String(e.reference.nearEd25519SigningKeyId),walletSessionId:e.authorization.operationCredential.walletSessionId,authorizationId:n.value,quotaId:e.authorization.session.quotaId,thresholdSessionId:e.reference.thresholdSessionId,remainingUses:e.authorization.status.remainingUses,expiresAtMs:e.authorization.status.expiresAtMs,runtimePolicyScope:r.runtimePolicyScope,signingRootId:r.signingRootId,signingRootVersion:r.signingRootVersion,routerAbNormalSigning:r.routerAbNormalSigning,walletSessionToken:e.authorization.operationCredential.token,home:e.authorization.operationCredential.home,nowMs:Date.now()});if(!i.ok)throw Error(`[SigningEngine][near] Passkey Wallet Session is unusable (${i.reason})`);return Sr({walletId:e.reference.walletId,nearAccountId:e.reference.nearAccountId,nearEd25519SigningKeyId:e.reference.nearEd25519SigningKeyId,signerSlot:e.reference.signerSlot,rpId:e.reference.auth.rpId,credentialIdB64u:e.reference.auth.credentialIdB64u,relayerUrl:e.relayerUrl,authority:t,signingWalletSession:i.value})}async function pR(e){let t=await Rt(e);if(t.kind!==`resolved`)throw nf(t.kind===`conflict`?`runtime_conflict`:`missing_runtime`);return t.runtime}async function mR(e){let t=await nn(yd({authMethod:e.laneIdentity.auth.kind,materialActivation:e.materialActivation}));if(!t||t.curve!==`ed25519`)throw Error(`[SigningEngine][near] exact persisted Ed25519 runtime is missing`);let n=hn(t);if(!n||String(n.walletId)!==String(e.walletId)||String(n.nearAccountId)!==String(e.laneIdentity.signer.account.nearAccountId)||String(n.nearEd25519SigningKeyId)!==String(e.laneIdentity.signer.nearEd25519SigningKeyId)||n.signerSlot!==e.laneIdentity.signer.signerSlot||String(n.thresholdSessionId)!==String(e.laneIdentity.thresholdSessionId)||!MR(n.auth,e.laneIdentity.auth)||!b(n.sealedRecord.ed25519Restore.materialActivation,e.materialActivation))throw Error(`[SigningEngine][near] exact persisted Ed25519 runtime identity mismatch`);return n}async function hR(e){let t=(await en({walletId:e.walletId,filter:{authMethod:e.identity.auth.kind,curve:`ed25519`}})).filter(e=>e.curve===`ed25519`).map(hn).filter(t=>t!==null&&NR({runtime:t,identity:e.identity}));if(t.length===0)throw nf(`missing_runtime`);if(t.length!==1)throw nf(`runtime_conflict`);return t[0]}function gR(e){let{selection:t,authMethod:n,authority:r}=e.selected;if(t.lockState!==`unlocked`||t.walletId!==e.walletId||t.walletAuthMethodId!==n.walletAuthMethodId||n.walletId!==e.walletId||n.walletAuthorityId!==r.authorityId||r.walletId!==e.walletId)return!1;switch(e.proof.kind){case`passkey`:return n.kind===V.passkey&&e.proof.authority.walletId===e.walletId&&e.proof.authority.bindingId===n.walletAuthMethodId&&e.proof.authority.factor.credentialIdB64u===n.credentialIdB64u&&e.proof.authority.verifier.rpId===n.rpId;case`email_otp`:return n.kind===V.emailOtp&&e.proof.authorityRef.walletId===e.walletId&&e.proof.authorityRef.walletAuthMethodId===n.walletAuthMethodId;default:throw e.proof,Error(`[SigningEngine][near] unsupported operation step-up proof`)}}async function _R(e){let t=await K.resolveSelectedWalletAuthority(String(e.walletId));if(t.kind!==`resolved`){let e=t.kind===`integrity_error`?`: ${t.reason}`:``;throw Error(`[SigningEngine][near] selected Wallet Authority is ${t.kind}${e}`)}if(!gR({walletId:e.walletId,proof:e.proof,selected:t}))throw Error(`[SigningEngine][near] operation step-up authority does not match selection`);let n=await Bm({selected:{authMethod:t.authMethod,authority:t.authority},operation:{kind:`near_sign`,operation:`sign`,keyFamily:`ed25519`}});if(n.kind!==`resolved`)throw Error(`[SigningEngine][near] selected Wallet Authority rejected signing (${n.reason.kind})`);let r=Gv(await q.readExactWithOperationCredential({walletId:e.walletId,authorityId:t.authority.authorityId,authMethodId:t.authMethod.walletAuthMethodId}),`[SigningEngine][near] exact Wallet Session requires a newer client`),i=r?.record.capabilitySubjects.filter(e=>e.kind===`sign`&&e.keyFamily===`ed25519`&&b(e.materialActivation,n.value.materialActivation)).length===1;if(!r||r.record.walletId!==e.walletId||r.record.authorityId!==t.authority.authorityId||r.record.authMethodId!==t.authMethod.walletAuthMethodId||r.record.authorityDigestB64u!==t.authority.authorityDigestB64u||r.record.authorityRevocationEpoch!==t.authority.revocationEpoch||r.record.expiresAtMs<=Date.now()||!i)throw Error(`[SigningEngine][near] exact Wallet Session is unavailable for operation step-up`);return r.operationCredential}async function vR(e){let t=await rv(e.runtime.walletId,e.relayerUrl,new el);if(!t)throw Error(`[SigningEngine][near] active Wallet Session authorization is unavailable`);return await br({runtime:e.runtime,authorization:t,nowMs:Date.now()})}async function yR(e){let{identity:t}=e;if(t.auth.kind!==V.passkey)throw nf(`binding_mismatch`);let n=await K.resolveSelectedWalletAuthority(String(e.walletId));if(n.kind!==`resolved`||n.selection.lockState!==`unlocked`||n.selection.walletId!==e.walletId||n.authMethod.kind!==V.passkey||String(n.authMethod.rpId)!==String(t.auth.rpId)||n.authMethod.credentialIdB64u!==t.auth.credentialIdB64u)throw nf(`binding_mismatch`);let r=await Bm({selected:{authMethod:n.authMethod,authority:n.authority},operation:{kind:`near_sign`,operation:`sign`,keyFamily:`ed25519`}});if(r.kind!==`resolved`)throw nf(`missing_capability`);let i=await GL({walletId:e.walletId,rpId:t.auth.rpId,credentialIdB64u:t.auth.credentialIdB64u});if(!i||i.walletAuthMethodId!==n.authMethod.walletAuthMethodId)throw nf(`binding_mismatch`);let a=await yr({store:K,walletId:String(e.walletId),nearAccountId:String(t.signer.account.nearAccountId),nearEd25519SigningKeyId:String(t.signer.nearEd25519SigningKeyId),signerSlot:t.signer.signerSlot,rpId:t.auth.rpId,credentialIdB64u:t.auth.credentialIdB64u,authority:i});if(a.kind!==`available`)throw nf(`missing_runtime`);if(!b(a.locator.materialActivation,r.value.materialActivation))throw nf(`binding_mismatch`);let o=a.locator.stableServerScope,s=ke(o.runtimePolicyScope);if(!s.signingRootVersion)throw nf(`binding_mismatch`);let c={walletId:String(e.walletId),nearAccountId:String(t.signer.account.nearAccountId),nearEd25519SigningKeyId:String(t.signer.nearEd25519SigningKeyId),thresholdSessionId:String(t.thresholdSessionId),signerSlot:t.signer.signerSlot,rpId:t.auth.rpId,credentialIdB64u:t.auth.credentialIdB64u,signingRootId:s.signingRootId,signingRootVersion:s.signingRootVersion,signingWorkerId:o.routerAbNormalSigning.signingWorkerId},l={kind:`available`,walletId:c.walletId,nearAccountId:c.nearAccountId,signerSlot:c.signerSlot,materialActivation:a.locator.materialActivation},u=await xR({store:K,identity:c,authority:i,publicLocator:l});if(u.kind===`blocked`)throw rf(u.plan.reason);return{prepared:u,localIdentity:c,authority:i,publicLocator:l,facts:{thresholdSessionId:t.thresholdSessionId,signer:t.signer,signingRootId:s.signingRootId,signingRootVersion:s.signingRootVersion,routerAbNormalSigning:o.routerAbNormalSigning,runtimePolicyScope:o.runtimePolicyScope,relayerUrl:e.relayerUrl},participantIds:o.participantIds}}function bR(e){if(e.factor.kind!==V.passkey)throw nf(`binding_mismatch`);return{walletId:String(e.walletId),nearAccountId:String(e.nearAccountId),nearEd25519SigningKeyId:String(e.nearEd25519SigningKeyId),thresholdSessionId:String(e.thresholdSessionId),signerSlot:e.signerSlot,rpId:String(e.factor.rpId),credentialIdB64u:e.factor.credentialIdB64u,signingRootId:e.signingRootId,signingRootVersion:e.signingRootVersion,signingWorkerId:e.routerAbNormalSigning.signingWorkerId}}async function xR(e){try{return await Mn(e)}catch{throw nf(`binding_mismatch`)}}async function SR(e){try{return await hr(e)}catch{throw nf(`corrupt`)}}function CR(e){if(!e||e.activeClient.status().kind!==`active`)return{kind:`absent`};let t=wc(e.activeClient.metadata());return{kind:`live`,runtime:xc(t),materialActivation:t}}function wR(e){return e.laneIdentity===void 0?e.materialIdentity:{kind:`near_ed25519_material_identity`,signer:e.laneIdentity.signer,auth:e.laneIdentity.auth,thresholdSessionId:e.laneIdentity.thresholdSessionId}}function TR(e){return wR(e).auth}function ER(e){return e.auth===void 0?e.materialIdentity.auth:e.auth}function DR(e){return wR(e).signer}function OR(e){return String(wR(e).thresholdSessionId)}function kR(e){if(e.laneIdentity===void 0||e.auth===void 0)throw Error(`[SigningEngine][near] authorized lane identity is required`);return{walletId:e.walletId,nearAccountId:e.nearAccountId,laneIdentity:e.laneIdentity,auth:e.auth}}function AR(e){return{walletId:e.walletId,nearAccountId:e.nearAccountId,materialIdentity:wR(e)}}async function jR(e){if(e.reference.auth.kind!==V.emailOtp)throw Error(`[SigningEngine][near] Email OTP public lane authority is required`);if(!Fc({session:e.authorization.session,materialActivation:e.materialActivation}))throw Error(`[SigningEngine][near] Email OTP Wallet Session material changed`);let t=gt(e.authorization.session.authorizationId);if(!t.ok||e.authorization.operationCredential.token.trim().length===0)throw Error(`[SigningEngine][near] Email OTP Ed25519 Wallet Session credential is unavailable`);let n=await U({authority:e.authorization.selectedFactorAuthority}),r=e.material.facts,i=yn({walletId:String(e.reference.walletId),nearAccountId:String(e.reference.nearAccountId),nearEd25519SigningKeyId:String(e.reference.nearEd25519SigningKeyId),walletSessionId:e.authorization.operationCredential.walletSessionId,authorizationId:t.value,quotaId:e.authorization.session.quotaId,thresholdSessionId:e.reference.thresholdSessionId,remainingUses:e.authorization.status.remainingUses,expiresAtMs:e.authorization.status.expiresAtMs,runtimePolicyScope:r.runtimePolicyScope,signingRootId:r.signingRootId,signingRootVersion:r.signingRootVersion,routerAbNormalSigning:r.routerAbNormalSigning,walletSessionToken:e.authorization.operationCredential.token,home:e.authorization.operationCredential.home,nowMs:Date.now()});if(!i.ok)throw Error(`[SigningEngine][near] Email OTP Wallet Session is unusable (${i.reason})`);return gr({walletId:e.reference.walletId,nearAccountId:e.reference.nearAccountId,nearEd25519SigningKeyId:e.reference.nearEd25519SigningKeyId,providerSubjectId:e.reference.auth.providerSubjectId,signerSlot:e.reference.signerSlot,relayerUrl:e.relayerUrl,authority:n,signingWalletSession:i.value})}function MR(e,t){if(e.kind!==t.kind)return!1;switch(e.kind){case V.passkey:return t.kind===V.passkey&&e.rpId===t.rpId&&e.credentialIdB64u===t.credentialIdB64u;case V.emailOtp:return t.kind===V.emailOtp&&e.providerSubjectId===t.providerSubjectId;default:throw Error(`[SigningEngine][near] unsupported Ed25519 material authority`)}}function NR(e){let t=e.identity.signer;return String(e.runtime.walletId)===String(t.account.wallet.walletId)&&String(e.runtime.nearAccountId)===String(t.account.nearAccountId)&&String(e.runtime.nearEd25519SigningKeyId)===String(t.nearEd25519SigningKeyId)&&e.runtime.signerSlot===t.signerSlot&&String(e.runtime.thresholdSessionId)===String(e.identity.thresholdSessionId)&&MR(e.runtime.auth,e.identity.auth)}function PR(e){let t=ke(e.publicLane.runtimePolicyScope);if(!t.signingRootVersion)throw Error(`[SigningEngine][near] Email OTP lane requires a signing-root version`);return{thresholdSessionId:e.publicLane.thresholdSessionId,signer:DR(e.input),signingRootId:t.signingRootId,signingRootVersion:t.signingRootVersion,routerAbNormalSigning:{kind:We,signingWorkerId:String(e.publicLane.materialActivation.signingWorker)},runtimePolicyScope:e.publicLane.runtimePolicyScope,relayerUrl:e.relayerUrl}}function FR(e){let t=TR(e),n=ER(e);if(t.kind!==n.kind)throw Error(`[SigningEngine][near] prepared material factor changed`);switch(n.kind){case V.passkey:if(t.kind!==V.passkey||t.rpId!==n.rpId||t.credentialIdB64u!==n.credentialIdB64u)throw Error(`[SigningEngine][near] prepared Passkey material binding changed`);return;case V.emailOtp:if(t.kind!==V.emailOtp||t.providerSubjectId!==n.providerSubjectId)throw Error(`[SigningEngine][near] prepared Email OTP material binding changed`);return;default:throw Error(`[SigningEngine][near] unsupported Ed25519 material authority`)}}function IR(e){let t=e.material.facts,n=e.material.activeClient.metadata(),r=OR(e.input),i=DR(e.input),a=t.signer;if(String(t.thresholdSessionId)!==r)throw Error(`[SigningEngine][near] active Ed25519 Yao capability session mismatch`);if(n.scope.threshold_session_id!==String(t.thresholdSessionId))throw Error(`[SigningEngine][near] active Ed25519 Yao metadata session mismatch`);if(n.scope.account_id!==String(e.input.walletId)||n.applicationBinding.wallet_id!==String(e.input.walletId))throw Error(`[SigningEngine][near] active Ed25519 Yao capability subject mismatch`);if(String(a.account.wallet.walletId)!==String(i.account.wallet.walletId)||String(a.account.nearAccountId)!==String(i.account.nearAccountId)||a.signerSlot!==i.signerSlot||String(a.nearEd25519SigningKeyId)!==String(i.nearEd25519SigningKeyId))throw Error(`[SigningEngine][near] active Ed25519 Yao capability signer mismatch`);let o=wc(n);if(!b(e.expectedActivation,o))throw Error(`[SigningEngine][near] active Ed25519 Yao capability activation mismatch`);return e.material}async function LR(e){let t=wc(e.material.activeClient.metadata());if(!Fc({session:e.authorization.session,materialActivation:t}))throw Error(`Owner Ed25519 execution-lane material changed`);IR({material:e.material,input:e.input,expectedActivation:t});let n=await vr({runtime:e.sealedRuntime,walletAuthMethodId:e.authorization.selectedAuthMethod.walletAuthMethodId}),r=await U({authority:e.authorization.selectedFactorAuthority});if(n.walletId!==r.walletId||n.walletAuthMethodId!==r.walletAuthMethodId||n.authorityDigest!==r.authorityDigest)throw Error(`Owner Ed25519 execution-lane authority does not match sealed material`);if(CR(e.material).kind!==`live`)throw Error(`Owner Ed25519 signing requires active Yao material`)}function RR(e){let t=e.hydration.materialActivation;if(!t)throw Error(`[SigningEngine][near] prepared material has no activation`);return t}function zR(e){let t=RR(e.preparation);if(!e.context.materialActivation||!b(e.context.materialActivation,t))throw Error(`[SigningEngine][near] prepared material boundary changed activation`);return t}function BR(e){return ac({credential:e,firstPrfOutput:!0,secondPrfOutput:!0})}async function VR(e,t){return e.current?await e.current.storage.loadEcdsaRoleLocalReadyRecord(t):{ok:!1,code:`unavailable`,message:`Signing runtime storage is not initialized`}}function HR(e){let t=e.event;switch(t){case`signing_session.expired`:return`${String(e.walletId)}:${String(e.walletSessionId)}`;case`registration.near_provisioning_changed`:return`${String(e.walletId)}:${e.state.status}:${e.state.updatedAtMs}`;default:return UR(t)}}function UR(e){throw Error(`Unsupported SDK lifecycle event: ${String(e)}`)}async function WR(e){if(!K.isDisabled())return await K.getAppState(e)}async function GR(e,t){K.isDisabled()||await K.setAppState(e,t)}const KR={readCacheEntry:WR,writeCacheEntry:GR};var qR=class{readNearEd25519SigningCandidate(e){return tv(String(this.seamsWebConfigs.network.relayer?.url||``).trim(),new el,e)}readExactNearEd25519WalletSessionAuthorization(e){return nv(String(this.seamsWebConfigs.network.relayer?.url||``).trim(),new el,e)}resolveActiveNearEd25519WalletSessionAuthorization(e,t){return rv(e,String(this.seamsWebConfigs.network.relayer?.url||``).trim(),t)}constructor(e,t,n){this.workerBaseOrigin=``,this.thresholdEcdsaBootstrapQueueByWallet=new Map,this.thresholdEcdsaSigningQueueByKey=new Map,this.thresholdEd25519CommitQueueByKey=new Map,this.nearEd25519CapabilityRehydrationBySubject=new Map,this.hostWarmCriticalResourcesTask=null,this.sealedRefreshStartupParityError=null,this.sdkLifecycleEventListeners=new Set,this.deliveredSdkLifecycleEventKeys=new Set,this.walletAuthenticationState={kind:`signed_out`},this.volatileWarmSigningMaterialCleanupInFlight=null,this.requestWorkerOperation=e=>this.signerWorkerManager.getContext().requestWorkerOperation(e),Lt(KR),this.seamsWebConfigs=e,this.ed25519YaoPublicCapabilityReferences=n.ed25519YaoPublicCapabilityReferences,this.appearance=e.ui.appearance,this.nearClient=t,this.ecdsaBootstrapStore=n.signingEngineStores.walletProfileAndSignerRecords.ecdsaBootstrapStore,this.sealedRefreshStartupParityPromise=zN({configs:this.seamsWebConfigs}).catch(e=>{this.sealedRefreshStartupParityError=e instanceof Error?e:Error(String(e||`sealed refresh parity check failed`))});let r={current:null},i=VR.bind(null,r),a=EN({resolveActiveEcdsaCapabilityRuntime:Ev,resolveOperationStepUpCredential:this.resolveOperationStepUpCredential.bind(this),stores:n.managerStores,seamsWebConfigs:this.seamsWebConfigs,nearClient:this.nearClient,loadEcdsaRoleLocalReadyRecord:i,getTheme:()=>this.appearance.theme.mode,getAppearance:()=>this.appearance,thresholdEcdsaSigningQueueByKey:this.thresholdEcdsaSigningQueueByKey});this.touchIdPrompt=a.touchIdPrompt,this.userPreferencesManager=a.userPreferencesManager,this.nonceCoordinator=a.nonceCoordinator,this.signerWorkerManager=a.signerWorkerManager;let o=n.createRuntime({config:this.seamsWebConfigs,workerCtx:this.signerWorkerManager.getContext(),accountLifecycle:{accountStore:n.signingEngineStores.walletProfileAndSignerRecords.accountStore,userPreferencesManager:this.userPreferencesManager,nonceCoordinator:this.nonceCoordinator},ecdsaBootstrapStore:this.ecdsaBootstrapStore,getWarmSessionMaterialWriter:()=>this.passkeyMpcSession,getNearSigningDeps:()=>this.enginePorts.nearSigningDeps,getEvmFamilySigningDeps:()=>this.enginePorts.tempoSigningDeps});r.current=o.runtimePorts;let s=o.state.ecdsaSessions;this.runtimePorts=o.runtimePorts;let c=AL({seamsWebConfigs:this.seamsWebConfigs,touchIdPrompt:this.touchIdPrompt,signerWorkerManager:this.signerWorkerManager,stores:n.signingEngineStores,runtimePorts:this.runtimePorts,sealedSigningSessionStore:n.sealedSigningSessionStore,baseTouchConfirm:a.touchConfirm,passkeyMpcSession:a.passkeyMpcSession,getEnginePorts:()=>this.enginePorts,thresholdEcdsaBootstrapQueueByWallet:this.thresholdEcdsaBootstrapQueueByWallet,thresholdEcdsaSigningQueueByKey:this.thresholdEcdsaSigningQueueByKey,loadWalletCustodyEd25519Material:this.loadEmailOtpWalletCustodyEd25519Material.bind(this),restoreWalletCustodyEcdsaContinuity:this.restoreWalletCustodyEcdsaContinuity.bind(this),getWarmSigning:()=>this.warmSigning,ensureSealedRefreshStartupParity:()=>this.ensureSealedRefreshStartupParity(),listActiveEcdsaCapabilityManifestsForWallet:wv});this.emailOtpSessions=c.emailOtpSessions,this.touchConfirm=c.touchConfirm,this.passkeyMpcSession=c.passkeyMpcSession,this.warmSigning=rF({resolveActiveEcdsaCapabilityRuntime:Ev,resolveActiveEcdsaCapabilityRuntimeForChain:Dv,touchConfirm:this.touchConfirm,passkeyMpcSession:this.passkeyMpcSession,getEmailOtpWarmSessionStatus:e=>this.emailOtpSessions.readWarmSessionStatusOnly(e),signingSessionSeal:this.seamsWebConfigs.signing.sessionSeal,ecdsaExportArtifacts:s,resolveActiveEcdsaWalletSessionAuthorization:uv({seamsWebConfigs:this.seamsWebConfigs,touchIdPrompt:this.touchIdPrompt,stores:n.signingEngineStores,emailOtpSessions:this.emailOtpSessions,sealedSigningSessionStore:n.sealedSigningSessionStore}),resolveActiveEd25519WalletSessionAuthorization:this.resolveActiveNearEd25519WalletSessionAuthorization.bind(this)}),this.listPreprocessingCapabilities=lv.bind(null,{seamsWebConfigs:this.seamsWebConfigs,touchIdPrompt:this.touchIdPrompt,stores:n.signingEngineStores,emailOtpSessions:this.emailOtpSessions,sealedSigningSessionStore:n.sealedSigningSessionStore}),this.sessionPublicDeps=oF({seamsWebConfigs:this.seamsWebConfigs,touchConfirm:this.touchConfirm,passkeyMpcSession:this.passkeyMpcSession,emailOtpSessions:this.emailOtpSessions,ed25519YaoPublicCapabilityLanes:n.ed25519YaoPublicCapabilityReferences,isEd25519YaoPublicCapabilityActive:this.isEd25519YaoPublicCapabilityActive.bind(this),readActiveWalletSessionAuthorization:nv.bind(null,this.seamsWebConfigs.network.relayer.url),listEcdsaSigningCapabilitiesForWallet:(e,t)=>vv({seamsWebConfigs:this.seamsWebConfigs,touchIdPrompt:this.touchIdPrompt,stores:n.signingEngineStores,emailOtpSessions:this.emailOtpSessions,sealedSigningSessionStore:n.sealedSigningSessionStore},e,t),getWalletSessionStatus:J_({seamsWebConfigs:this.seamsWebConfigs,touchIdPrompt:this.touchIdPrompt,stores:n.signingEngineStores,emailOtpSessions:this.emailOtpSessions,sealedSigningSessionStore:n.sealedSigningSessionStore})}),this.emailOtpPublicDeps={relayerUrl:this.seamsWebConfigs.network.relayer?.url||``,groupId:Ge,getSignerWorkerContext:()=>this.enginePorts.walletSessionActivationDeps.getSignerWorkerContext(),emailOtpSessions:this.emailOtpSessions},this.recoveryPublicDeps=B_({seamsWebConfigs:this.seamsWebConfigs,runtimePorts:this.runtimePorts,signerWorkerManager:this.signerWorkerManager,warmSigning:this.warmSigning,touchConfirm:this.touchConfirm,passkeyMpcSession:this.passkeyMpcSession,passkeyMpcExport:a.passkeyMpcExport,emailOtpSessions:this.emailOtpSessions,thresholdEcdsaBootstrapQueueByWallet:this.thresholdEcdsaBootstrapQueueByWallet,thresholdEcdsaSigningQueueByKey:this.thresholdEcdsaSigningQueueByKey,thresholdEd25519CommitQueueByKey:this.thresholdEd25519CommitQueueByKey,getWalletSessionActivationDeps:()=>this.enginePorts.walletSessionActivationDeps,resolvePasskeyEd25519YaoExportContext:this.resolveExactPasskeyEd25519YaoExportContext.bind(this),resolveEmailOtpEd25519YaoExportContext:this.resolveEmailOtpEd25519YaoExportContext.bind(this),getSigningSessionCoordinator:()=>this.enginePorts.signingSessionCoordinator,getTheme:()=>this.appearance.theme.mode,ed25519YaoPublicCapabilityLanes:n.ed25519YaoPublicCapabilityReferences,isEd25519YaoPublicCapabilityActive:this.isEd25519YaoPublicCapabilityActive.bind(this),readActiveWalletSessionAuthorization:nv.bind(null,this.seamsWebConfigs.network.relayer.url),listEcdsaSigningCapabilitiesForWallet:(e,t)=>vv({seamsWebConfigs:this.seamsWebConfigs,touchIdPrompt:this.touchIdPrompt,stores:n.signingEngineStores,emailOtpSessions:this.emailOtpSessions,sealedSigningSessionStore:n.sealedSigningSessionStore},e,t),resolveOwnerLaneScope:e=>this.resolveSelectedOwnerLaneScope(e)}),this.enginePorts=Av({runtimePorts:this.runtimePorts,stores:n.signingEngineStores,ed25519YaoPublicCapabilityReferences:n.ed25519YaoPublicCapabilityReferences,seamsWebConfigs:this.seamsWebConfigs,nearClient:this.nearClient,touchIdPrompt:this.touchIdPrompt,userPreferencesManager:this.userPreferencesManager,nonceCoordinator:this.nonceCoordinator,touchConfirm:this.touchConfirm,passkeyMpcSession:this.passkeyMpcSession,passkeyMpcExport:a.passkeyMpcExport,signerWorkerManager:this.signerWorkerManager,emailOtpSessions:this.emailOtpSessions,warmSigning:this.warmSigning,sealedSigningSessionStore:n.sealedSigningSessionStore,ecdsaBootstrapStore:this.ecdsaBootstrapStore,thresholdEcdsaBootstrapQueueByWallet:this.thresholdEcdsaBootstrapQueueByWallet,thresholdEcdsaSigningQueueByKey:this.thresholdEcdsaSigningQueueByKey,thresholdEd25519CommitQueueByKey:this.thresholdEd25519CommitQueueByKey,getWorkerBaseOrigin:()=>this.workerBaseOrigin,shouldPrewarmUiConfirmUi:n.shouldPrewarmUiConfirmUi,getTheme:()=>this.appearance.theme.mode,ensureSealedRefreshStartupParity:()=>this.ensureSealedRefreshStartupParity(),resolveOwnerLaneScope:e=>this.resolveSelectedOwnerLaneScope(e),getEnginePorts:()=>this.enginePorts,prepareNearEd25519YaoMaterialBoundary:this.prepareExactNearEd25519YaoMaterialBoundary.bind(this)}),this.signingSessionLifecycleSubscription=this.enginePorts.signingSessionCoordinator.subscribeLifecycle(this.publishSdkLifecycleEvent.bind(this)),this.nearProvisioningUnsubscribe=zt(this.publishNearProvisioningLifecycleEvent.bind(this)),this.ed25519YaoPageLifecycleOwner=new yO(typeof window>`u`?null:window,this.enginePorts.ed25519YaoActiveClients);let l=jL({seamsWebConfigs:this.seamsWebConfigs,stores:n.signingEngineStores,touchIdPrompt:this.touchIdPrompt,touchConfirm:this.touchConfirm,passkeyMpcSession:this.passkeyMpcSession,warmSigning:this.warmSigning,runtimePorts:this.runtimePorts,thresholdEcdsaBootstrapQueueByWallet:this.thresholdEcdsaBootstrapQueueByWallet,ensureSealedRefreshStartupParity:()=>this.ensureSealedRefreshStartupParity(),enginePorts:this.enginePorts});this.passkeyPublicDeps=l.passkeyPublicDeps,this.warmCapabilitiesPublicDeps=l.warmCapabilitiesPublicDeps,ir(e=>{this.persistUpgradedWalletCustodyEnvelopeV1(e)}),n.initializeRuntime({userPreferencesManager:this.userPreferencesManager,getWorkerBaseOrigin:()=>this.workerBaseOrigin,setWorkerBaseOrigin:e=>{this.workerBaseOrigin=e,this.signerWorkerManager.setWorkerBaseOrigin(e),this.touchConfirm.setWorkerBaseOrigin?.(e),a.passkeyMpcExport.setWorkerBaseOrigin(e),this.passkeyMpcSession.setWorkerBaseOrigin(e)}})}async resolveOperationStepUpCredential(e){let t=await _R({walletId:e.walletId,proof:e.proof});return{kind:`wallet_session_opaque`,walletSessionToken:t.token,home:t.home}}async ensureSealedRefreshStartupParity(){if(await this.sealedRefreshStartupParityPromise,this.sealedRefreshStartupParityError)throw this.sealedRefreshStartupParityError}async establishWalletCustodyNearEd25519KeySet(e){let t=new ln({routerOrigin:e.routerOrigin,routing:e.home,authorization:{kind:`bearer`,value:e.authorization},fetch:globalThis.fetch,...e.traceContext?{traceContext:e.traceContext}:{}}),n=null,r=await lr({runStep:Hn(this.walletCustodyCeremonyTransportV1()),walletId:e.walletId,...e.factor,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,registrationCeremonyId:e.registrationCeremonyId,yaoAdmission:e.admissionReceipt,yaoApplication:e.admissionRequest.application_binding,participantIds:e.participantIds,runRouterRound:async r=>{let i=e.executeWithProof?await e.executeWithProof(r):null;return i===null?(n=await MO({executeRequestJson:r,transport:t}),n):(n=i,n)}});if(!n)throw Error(`the wallet custody NEAR run completed without a Router activation result`);if(!r.localMaterial)throw Error(`the wallet custody NEAR run sealed no local material`);return{recoveryCodes:r.recoveryCodes,commitPayload:r.commitPayload,activationReference:r.activationReference,localMaterial:r.localMaterial,metadata:bO({admissionRequest:e.admissionRequest,activationResultJson:n})}}async recoverWalletCustodyManifest(e){return await GO({...e,runStep:Hn(this.walletCustodyCeremonyTransportV1()),workerCtx:this.signerWorkerManager.getContext()})}async createWalletRecoveryReplacementCredential(e){let t=Ct(`wallet-recovery:${e.registration.challengeId}`),n=IL(BR(await this.touchIdPrompt.generateRegistrationCredentialsInternal({kind:`wallet_recovery`,walletId:e.walletId,intendedUserName:e.walletId,recoveryRegistration:e.registration,prompt:{kind:`immediate`,requestId:t,cancellation:e.cancellation}})));return{registration:cc(n.registration),credentialIdB64u:n.credentialIdB64u,factorSecret:n.factorSecret}}async joinWalletCustodyNearEd25519KeySet(e){let t=new ln({routerOrigin:e.routerOrigin,routing:e.routing,authorization:{kind:`bearer`,value:e.authorization},fetch:globalThis.fetch,...e.traceContext?{traceContext:e.traceContext}:{}}),n=null,r=await jn({runStep:Hn(this.walletCustodyCeremonyTransportV1()),preparation:e.preparation,beforeRouterRound:e.beforeRouterRound,custodyJson:e.custodyJson,factorSecret:e.factorSecret,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,registrationCeremonyId:e.registrationCeremonyId,yaoAdmission:e.admissionReceipt,yaoApplication:e.admissionRequest.application_binding,participantIds:e.participantIds,runRouterRound:async e=>(n=await MO({executeRequestJson:e,transport:t}),n)});if(!n||!r.localMaterial)throw Error(`the wallet custody NEAR join produced no local signing material`);return{commitPayload:r.commitPayload,activationReference:r.activationReference,localMaterial:r.localMaterial,metadata:bO({admissionRequest:e.admissionRequest,activationResultJson:n})}}async rejoinWalletCustodyNearEd25519KeySet(e){let t=new ln({routerOrigin:e.routerOrigin,routing:{kind:`discovery`},authorization:{kind:`bearer`,value:`Bearer ${e.walletSessionToken}`},fetch:globalThis.fetch}),n=await EO({basis:e.recoveryBasis}),r=await DO({request:n,transport:t}),i=await $n({runStep:Hn(this.walletCustodyCeremonyTransportV1()),walletId:e.walletId,custodyJson:e.custodyJson,factorSecret:e.factorSecret,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,recoveryLifecycleId:n.scope.lifecycle_id,yaoAdmission:r.receipt,yaoApplication:r.request.application_binding,participantIds:e.recoveryBasis.participantIds,registeredPublicKeyB64u:P(Uint8Array.from(e.recoveryBasis.registeredPublicKey)),runRouterRound:e=>OO({executeRequestJson:e,transport:t}),activateRouterRecovery:e=>kO({request:n,protocolResultJson:e,transport:t})});if(!i.localMaterial)throw Error(`the wallet custody NEAR cold rejoin produced no local signing material`);return{commitPayload:i.commitPayload,activationReference:i.activationReference,localMaterial:i.localMaterial,metadata:xO({admissionRequest:n,activationResultJson:i.activationResultJson,activationReceipt:i.activationReceipt})}}async establishWalletCustodyEvmFamilyKeySet(e){return await nr({...e,runStep:Hn(this.walletCustodyCeremonyTransportV1())})}async joinWalletCustodyEvmFamilyKeySet(e){return await qn({...e,runStep:Hn(this.walletCustodyCeremonyTransportV1())})}async rejoinWalletCustodyEvmFamilyKeySet(e){return await Fn({...e,runStep:Hn(this.walletCustodyCeremonyTransportV1())})}async restoreWalletCustodyEcdsaContinuity(e){let t=await Is({...e,store:new js});if(t.kind!==`committed`)throw Error(`wallet custody ECDSA import returned ${t.kind}`);let n=Xa(e.publicCapability.material_activation),r=await ku({workerCtx:this.signerWorkerManager.getContext(),authority:e.authority,materialActivation:n});if(!r.ok)throw Error(`wallet custody ECDSA material open returned ${r.reason}`);return{materialActivation:n,materialRef:r.materialRef}}async persistWalletCustodyEd25519Material(e){await Ls({store:this.signerWorkerManager.getContext().nearKeyMaterialStore,binding:e.binding,sealed:e.sealed})}async loadWalletCustodyEd25519Material(e){return await Os({store:this.signerWorkerManager.getContext().nearKeyMaterialStore,nearAccountId:e.nearAccountId,signerSlot:e.signerSlot,expectedRegisteredPublicKeyB64u:e.expectedRegisteredPublicKeyB64u})}async loadEmailOtpWalletCustodyEd25519Material(e){let t=await this.loadWalletCustodyEd25519Material({nearAccountId:e.nearAccountId,signerSlot:e.signerSlot,expectedRegisteredPublicKeyB64u:``});return t.kind===`found`?t:{kind:`absent`}}async deleteWalletCustodyEd25519Material(e){await Ns({store:this.signerWorkerManager.getContext().nearKeyMaterialStore,nearAccountId:e.nearAccountId,signerSlot:e.signerSlot})}async assertSealedRefreshStartupParity(){await this.ensureSealedRefreshStartupParity()}async discoverPersistedSessionsForWallet(e){return await Jm(this.sessionPublicDeps,e)}isEd25519YaoPublicCapabilityActive(e){switch(e.auth.kind){case V.emailOtp:return!0;case V.passkey:return this.enginePorts.ed25519YaoActiveClients.resolve({walletId:e.walletId,nearAccountId:e.nearAccountId,materialActivation:e.materialActivation})!==null;default:throw e.auth,Error(`Unsupported Ed25519 public capability auth method`)}}async readPersistedAvailableSigningLanes(e,t){return await Ym(this.sessionPublicDeps,e,t)}async readOwnerScopedSigningLanes(e,t){return await Xm(this.sessionPublicDeps,e,t)}async resolveSelectedOwnerLaneScope(e){let t=o(e);if(!t.ok)throw Error(t.error.message);let n={getWalletAuthMethodV2:e=>K.getWalletAuthMethodV2(e),listWalletAuthMethodsForWallet:e=>K.listWalletAuthMethodsForWallet(e),getWalletPasskeyAuthenticator:e=>K.getWalletPasskeyAuthenticator(e),readEmailOtpProviderSubjectForWallet:e=>Ms(K,e)},r=await K.resolveSelectedWalletAuthority(String(t.value));if(r.kind===`resolved`){let{selection:e,authMethod:i,authority:a}=r;if(e.walletId!==t.value||e.walletAuthMethodId!==i.walletAuthMethodId||i.walletId!==t.value||i.walletAuthorityId!==a.authorityId||a.walletId!==t.value)throw Error(`[SigningEngine] selected Wallet Authority identity mismatch`);if(e.lockState!==`unlocked`)throw tf(`wallet_locked`);if(i.status!==`active`)throw tf(`method_unavailable`);if(a.state!==`active`)throw tf(`authority_unavailable`);if(a.provenance.kind===`device_link`&&i.kind===`passkey`&&a.signerActivations.ed25519)return up({authMethod:i,signerSlot:await sR({walletId:t.value,authMethod:i,signerMaterials:r.signerMaterials,publicLaneStore:this.ed25519YaoPublicCapabilityReferences})});if(a.provenance.kind===`device_link`&&i.kind===`passkey`&&a.signerActivations.ecdsa)return dp({authMethod:i});if(a.provenance.kind===`device_link`&&i.kind===`email_otp`&&a.signerActivations.ecdsa){let e=fd({walletId:t.value,materialActivation:a.signerActivations.ecdsa.materialActivation});if(!e||e.authorityId!==a.authorityId||!Na(e.factorAuthority))throw Error(`[SigningEngine] selected linked Email OTP authority has no exact ECDSA holder runtime`);let n=await U({authority:e.factorAuthority});if(n.walletId!==t.value||n.walletAuthMethodId!==i.walletAuthMethodId)throw Error(`[SigningEngine] selected linked Email OTP authority has no exact ECDSA holder runtime`);return fp({authMethod:i,factorAuthority:e.factorAuthority,authorityRef:n})}return await mp({authMethod:i,stores:n})}let i=r.kind===`integrity_error`?`: ${r.reason}`:``;throw Error(`[SigningEngine] selected Wallet Authority is ${r.kind}${i}`)}readWalletAuthenticationState(){return this.walletAuthenticationState}async retireActiveWalletSessionAuthorizationForLock(e){let t=Date.now();(await q.retireExactActiveForWallet({walletId:e,reason:`wallet_locked`,retiredAtMs:t})).length>0&&this.destroyUnlockedWalletEd25519ExportRootCapabilitiesV1({kind:`wallet`,walletId:String(e)})}async advanceWalletLockGeneration(e){return K.advanceWalletLockGeneration({walletId:e,lockedAtMs:Date.now()})}async markWalletSelectionUnlocked(e){await K.markWalletSelectionUnlocked({walletId:e.walletId,walletAuthMethodId:e.walletAuthMethodId,unlockedAtMs:Date.now()})}async markSelectedEmailOtpWalletAuthorityUnlocked(e){await this.markWalletSelectionUnlocked(e)}setWalletAuthenticated(e){let t=this.walletAuthenticationState;t.kind===`authenticated`&&String(t.walletId)!==String(e.walletId)&&this.destroyUnlockedWalletEd25519ExportRootCapabilitiesV1({kind:`wallet`,walletId:String(t.walletId)}),this.walletAuthenticationState=e,this.userPreferencesManager.setCurrentWallet(e.walletId)}clearWalletAuthentication(){this.walletAuthenticationState={kind:`signed_out`},this.destroyUnlockedWalletEd25519ExportRootCapabilitiesV1({kind:`all`})}clearWalletAuthenticationIfCurrent(e){return this.walletAuthenticationState===e?(this.clearWalletAuthentication(),!0):!1}walletCustodyCeremonyTransportV1(){let e=this.getSignerWorkerContext();return{requestOperation:Wn.bind(void 0,e)}}async establishUnlockedWalletEd25519ExportRootCapabilityV1(e){try{let t=e.existingEnvelope.binding;if(!Zo(t)&&t.kind!==`ed25519_yao_client_root_v1`)return;if(e.existingEnvelope.factor.kind!==`passkey`)throw Error(`unlocked export-root capability requires a passkey envelope factor`);let n=F(e.passkeyPrfFirstB64u);try{await mr(this.walletCustodyCeremonyTransportV1(),{existingEnvelope:e.existingEnvelope,existingFactorSecret:n,walletId:e.walletId,walletAuthMethodId:e.walletAuthMethodId,walletSessionId:e.walletSessionId,expiresAtMs:e.expiresAtMs})}finally{n.fill(0)}}catch(e){console.warn(`[BrowserSigningSurface] unlocked Ed25519 export-root capability was not established:`,e instanceof Error?e.message:String(e||`unknown error`))}}async persistUpgradedWalletCustodyEnvelopeV1(e){try{let t=String(this.seamsWebConfigs.network.relayer?.url||``).trim();if(!t)return;let n=o(e.walletId);if(!n.ok)return;let r=(await rv(n.value,t,new el))?.operationCredential.token;if(!r)return;let i=await BE({relayUrl:t,walletId:e.walletId,walletSessionToken:String(r),envelope:e.envelope});if(i.kind===`upgraded`||i.kind===`already_owned`)return;console.warn(`[BrowserSigningSurface] the upgraded custody envelope was not stored:`,i.message)}catch(e){console.warn(`[BrowserSigningSurface] the upgraded custody envelope was not stored:`,e instanceof Error?e.message:String(e||`unknown error`))}}async destroyUnlockedWalletEd25519ExportRootCapabilitiesV1(e){await Pn(this.walletCustodyCeremonyTransportV1(),e)}async runWarmCriticalResources(e){try{await this.ensureSealedRefreshStartupParity()}catch(e){if(!rd(e))throw e;console.warn(`[BrowserSigningSurface] warmCriticalResources skipped retryable sealed-refresh capability fetch failure`,e instanceof Error?e.message:String(e||`unknown error`))}return await this.enginePorts.getManagerConveniencePorts().warmCriticalResources(e)}async warmCriticalResources(e){if(gl()&&e===void 0){let e=this.hostWarmCriticalResourcesTask;if(e)return await e;let t=this.runWarmCriticalResources();return this.hostWarmCriticalResourcesTask=t,t.catch(()=>{this.hostWarmCriticalResourcesTask===t&&(this.hostWarmCriticalResourcesTask=null)}),await t}return await this.runWarmCriticalResources(e)}async prewarmEmailOtpYao(e){return await this.signerWorkerManager.prewarmEmailOtpYao(e)}async prewarmEcdsaRegistrationCrypto(){return await this.signerWorkerManager.prewarmEcdsaRegistrationCrypto()}getRpId(){return this.touchIdPrompt.getRpId()}getSignerWorkerContext(){return this.enginePorts.walletSessionActivationDeps.getSignerWorkerContext()}getNonceCoordinator(){return this.nonceCoordinator}setAppearance(e){this.appearance=e}setWalletIframeSurfaceMeasurementBinding(e){this.touchConfirm.getContext().surfaceMeasurementBinding=e}getWalletIframeSurfaceMeasurementBinding(){return this.touchConfirm.getContext().surfaceMeasurementBinding}getUserPreferences(){return this.userPreferencesManager}async signNear(e){let t=e.args.commandSubject.walletSession.walletId;try{return await Wd(this.enginePorts.nearSigningDeps,e)}catch(e){throw af(e)&&await this.terminateWalletStateAfterSigningFailure(t),e}}async terminateWalletStateAfterSigningFailure(e){let t=this.readWalletAuthenticationState(),n=!1;try{await this.advanceWalletLockGeneration(e)}catch{}try{await this.retireActiveWalletSessionAuthorizationForLock(e)}catch{}try{n=this.clearWalletAuthenticationIfCurrent(t)}catch{}if(n){try{this.nonceCoordinator.clearAll()}catch{}try{this.clearThresholdEcdsaSigningQueue()}catch{}}try{await this.clearVolatileWarmSigningMaterial(e)}catch{}}async ensureNearEd25519YaoCapabilityForSigning(e){let t=tP(e),n=this.nearEd25519CapabilityRehydrationBySubject.get(t);if(n){let e=await n,t=await this.resolveActiveNearEd25519YaoSigningLane(e.subject);if(t)return t;throw Error(`[SigningEngine][near] joined rehydration did not publish an active lane`)}let r=this.rehydrateNearEd25519YaoCapabilityForSigning(e);this.nearEd25519CapabilityRehydrationBySubject.set(t,r);try{return(await r).material}finally{this.nearEd25519CapabilityRehydrationBySubject.get(t)===r&&this.nearEd25519CapabilityRehydrationBySubject.delete(t)}}async rehydrateExactPasskeyEd25519YaoCapabilityForSigning(e){let t=wR(e);return await this.ensureNearEd25519YaoCapabilityForSigning(e.laneIdentity===void 0?{kind:`material_identity`,materialIdentity:t}:{kind:`exact_lane`,laneIdentity:e.laneIdentity})}async prepareMaterialIdentityNearEd25519YaoSigning(e){let t=e.materialIdentity,n=this.enginePorts.ed25519YaoActiveClients.resolveForWalletAccount({walletId:t.signer.account.wallet.walletId,nearAccountId:t.signer.account.nearAccountId}),r=await rR({store:this.ed25519YaoPublicCapabilityReferences,identity:t}),i=t.auth.kind===V.passkey?await this.readNearEd25519SigningCandidate(e.walletId):null,a=i?Bc(i):null;if(t.auth.kind===V.passkey&&r){let e=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:t.signer.account.wallet.walletId,nearAccountId:t.signer.account.nearAccountId,materialActivation:r}),n=CR(e);if(e&&n.kind===`live`){if(a?.kind===`authorized`){let e=a.authorization;if(e.selectedAuthMethod.kind!==V.passkey)throw Error(`[SigningEngine][near] active Wallet Session method is unavailable`);return await qc({hydration:Sc({authority:await U({authority:e.selectedFactorAuthority}),runtime:n.runtime,materialActivation:r}),requirement:t.auth,authorization:e})}if(a?.kind!==`operation_step_up`)throw a?.kind===`full_login_required`?tf(a.reason):Error(`[SigningEngine][near] Wallet Session status is temporarily unavailable`)}}if(a?.kind===`full_login_required`)throw tf(a.reason);if(a?.kind===`temporarily_unavailable`)throw Error(`[SigningEngine][near] Wallet Session persistence is temporarily unavailable`);if(t.auth.kind===V.passkey&&a?.kind===`operation_step_up`)return Gc({hydration:(await yR({walletId:e.walletId,identity:t,relayerUrl:this.seamsWebConfigs.network.relayer.url})).prepared.plan,requirement:t.auth});let o=t.auth.kind===V.passkey?await hR({walletId:e.walletId,identity:t}):null,s=o?.sealedRecord.ed25519Restore.materialActivation??(n?wc(n.activeClient.metadata()):r);if(!s)throw nf(`missing_capability`);let c=CR(this.enginePorts.ed25519YaoActiveClients.resolve({walletId:t.signer.account.wallet.walletId,nearAccountId:t.signer.account.nearAccountId,materialActivation:s})),l;switch(t.auth.kind){case V.passkey:{if(!o)throw nf(`missing_runtime`);if(a?.kind!==`authorized`)throw Error(`[SigningEngine][near] exact Passkey authorization is unavailable`);let n={kind:`found`,authorization:a.authorization},r=await br({runtime:o,authorization:a.authorization,nowMs:Date.now()}),i=await this.ensurePasskeyEd25519WarmSessionForSigning({runtime:o,walletSessionState:r,materialActivation:s}),u;try{u=await $_({walletId:e.walletId,runtime:o,authorizationRead:n})}catch{throw nf(`binding_mismatch`)}let d=bR(o),f=await yr({store:K,walletId:String(t.signer.account.wallet.walletId),nearAccountId:String(t.signer.account.nearAccountId),nearEd25519SigningKeyId:String(t.signer.nearEd25519SigningKeyId),signerSlot:t.signer.signerSlot,rpId:t.auth.rpId,credentialIdB64u:t.auth.credentialIdB64u,authority:u}),p={kind:`available`,walletId:String(t.signer.account.wallet.walletId),nearAccountId:String(t.signer.account.nearAccountId),signerSlot:t.signer.signerSlot,materialActivation:s,authority:u};l=Cc({publicLocator:p,sealed:f.kind===`available`?{kind:`available`,authority:f.locator.authority,materialActivation:f.locator.materialActivation,sealedMaterial:f.locator.sealedMaterial}:{kind:`missing`},runtime:c,unlockSource:i.ok?{kind:`available`,authority:u}:{kind:`unavailable`}}),l.kind===`blocked`&&l.reason===`missing_material`&&(l=(await xR({store:K,identity:d,authority:u,publicLocator:p})).plan);break}case V.emailOtp:l=await this.resolveWalletCustodyEmailOtpHydration({walletId:e.walletId,nearAccountId:e.nearAccountId,identity:JL(t),signerSlot:t.signer.signerSlot,materialActivation:s});break;default:throw t.auth,Error(`[SigningEngine][near] unsupported Ed25519 material authority`)}if(l.kind===`blocked`)throw l.reason===`persistence_unavailable`?Error(`[SigningEngine][near] signing material persistence is unavailable`):rf(l.reason);return Gc({hydration:l,requirement:t.auth})}async resolveWalletCustodyEmailOtpHydration(e){let t=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:e.walletId,nearAccountId:e.nearAccountId,materialActivation:e.materialActivation}),n=await this.readNearEd25519SigningCandidate(e.walletId),r;if(n.kind===`found`){if(n.authorization.selectedAuthMethod.kind!==V.emailOtp)return _c({capability:e.materialActivation.capability,reason:`missing_material`});if(r=await U({authority:n.authorization.selectedFactorAuthority}),t)return Sc({authority:r,runtime:xc(e.materialActivation),materialActivation:e.materialActivation})}else if(n.kind===`exhausted`){let n=await YL({walletId:e.walletId,nearAccountId:e.nearAccountId,identity:e.identity,signerSlot:e.signerSlot,materialActivation:e.materialActivation,authorizationRead:{kind:`exhausted`}});if(!n)return _c({capability:e.materialActivation.capability,reason:`missing_material`});if(r=n,t)try{IR({material:t,input:{walletId:e.walletId,nearAccountId:e.nearAccountId,materialIdentity:e.identity},expectedActivation:e.materialActivation})}catch{return _c({capability:e.materialActivation.capability,reason:`binding_mismatch`})}}else return _c({capability:e.materialActivation.capability,reason:`missing_material`});if(t)return Sc({authority:r,runtime:xc(e.materialActivation),materialActivation:e.materialActivation});let i=await this.loadEmailOtpWalletCustodyEd25519Material({nearAccountId:String(e.nearAccountId),signerSlot:e.signerSlot});return i.kind===`found`&&i.material.binding.walletId===String(e.walletId)&&i.material.binding.nearAccountId===String(e.nearAccountId)&&i.material.binding.signerSlot===e.signerSlot&&String(e.materialActivation.materialOwner)===String(e.walletId)&&(n.kind===`found`||i.material.binding.nearEd25519SigningKeyId===String(e.identity.signer.nearEd25519SigningKeyId)&&i.material.binding.signingWorkerId===String(e.materialActivation.signingWorker))?hc({authority:r,materialActivation:e.materialActivation,sealedMaterial:h_(JSON.stringify([i.material.binding.walletId,i.material.binding.nearAccountId,i.material.binding.signerSlot,e.materialActivation.activationId]))}):_c({capability:e.materialActivation.capability,reason:`missing_material`})}async rehydrateActiveEmailOtpEd25519YaoSessionMaterial(e){let t=kR(e.input);if(t.auth.kind!==V.emailOtp)throw Error(`[SigningEngine][near] Email OTP session restore requires Email OTP material`);let n=await cR({store:this.ed25519YaoPublicCapabilityReferences,laneIdentity:t.laneIdentity,materialActivation:e.materialActivation}),r=await this.getUserBySignerSlot(t.nearAccountId,t.laneIdentity.signer.signerSlot);if(!r||String(r.walletId)!==String(t.walletId)||String(r.nearAccountId)!==String(t.nearAccountId)||r.signerSlot!==t.laneIdentity.signer.signerSlot||r.authMethod!==V.emailOtp)throw Error(`[SigningEngine][near] Email OTP signer record is unavailable`);let i=await this.loadEmailOtpWalletCustodyEd25519Material({nearAccountId:String(t.nearAccountId),signerSlot:r.signerSlot}),a=e.authorization.operationCredential;if(i.kind!==`found`)throw Error(`[SigningEngine][near] Email OTP session material is unavailable`);let o=await zL(e.authorization,e.remainingUses),s=await this.signerWorkerManager.requestWorkerOperation({kind:`emailOtp`,request:{type:`rehydrateActiveEmailOtpEd25519YaoSessionMaterial`,payload:{relayUrl:String(this.seamsWebConfigs.network.relayer?.url||``).trim(),walletId:String(t.walletId),walletAuthMethodId:String(e.authorization.selectedAuthMethod.walletAuthMethodId),orgId:n.runtimePolicyScope.orgId,providerSubjectId:t.auth.providerSubjectId,nearAccountId:String(t.nearAccountId),signerSlot:r.signerSlot,remainingUses:e.remainingUses,expectedOperationalPublicKey:r.operationalPublicKey,expectedThresholdSessionId:n.thresholdSessionId,operationCredential:a,ecdsa:o,walletCustodyEd25519Material:i}}});switch(s.ecdsa.kind){case`activated`:if(o.kind!==`required`)throw Error(`NEAR-only restore returned ECDSA activation`);await VL({walletId:t.walletId,authorization:s.walletSessionAuthorization,response:s.ecdsa.session});break;case`absent`:if(o.kind!==`absent`)throw Error(`Combined restore omitted ECDSA activation`);break;default:throw s.ecdsa,Error(`Unsupported Email OTP restore result`)}return await this.activateEmailOtpEd25519CustodyCapabilityInternal({commitQueue:`acquire`,walletSession:{walletId:t.walletId,walletSessionUserId:String(t.walletId)},providerSubject:t.auth.providerSubjectId,emailHashHex:await A(r.loginDisplayName.trim().toLowerCase()),signerSlot:r.signerSlot,expectedOperationalPublicKey:r.operationalPublicKey,expectedThresholdSessionId:String(n.thresholdSessionId),bootstrap:s.bootstrap,activeClientHandle:s.activeClientHandle,metadata:s.metadata,exactAuthorization:s.walletSessionAuthorization}),s.ecdsa.kind===`absent`&&await q.writeExactWithOperationCredential({record:s.walletSessionAuthorization.record,operationCredential:s.walletSessionAuthorization.operationCredential}),Sc({authority:await U({authority:e.authorization.selectedFactorAuthority}),runtime:xc(e.materialActivation),materialActivation:e.materialActivation})}async prepareExactNearEd25519YaoSigning(e){if(e.laneIdentity!==void 0&&e.auth?.kind===V.emailOtp){let t=await this.prepareMaterialIdentityNearEd25519YaoSigning(AR(e)),n=await this.readNearEd25519SigningCandidate(e.walletId);if(n.kind!==`found`||n.authorization.selectedAuthMethod.kind!==V.emailOtp)return t;let r=n.authorization;switch(t.hydration.kind){case`use_live_runtime`:break;case`rehydrate_material_activation`:t=Gc({hydration:await this.rehydrateActiveEmailOtpEd25519YaoSessionMaterial({input:e,materialActivation:t.hydration.materialActivation,authorization:r,remainingUses:r.status.remainingUses}),requirement:e.auth});break;case`reauthorize_public_anchor`:case`blocked`:return t;default:throw t.hydration,Error(`[SigningEngine][near] unsupported Email OTP hydration state`)}let i=await this.readNearEd25519SigningCandidate(e.walletId);return i.kind!==`found`||i.authorization.selectedAuthMethod.kind!==V.emailOtp?t:await qc({hydration:t.hydration,requirement:e.auth,authorization:i.authorization})}if(e.laneIdentity===void 0)return await this.prepareMaterialIdentityNearEd25519YaoSigning(e);let t=await this.readNearEd25519SigningCandidate(e.walletId);switch(t.kind){case`found`:{let n=t.authorization;if(n.selectedAuthMethod.kind!==e.auth.kind)return await this.prepareMaterialIdentityNearEd25519YaoSigning(AR(e));let r=await Rt({walletId:e.walletId,laneIdentity:e.laneIdentity});if(r.kind===`missing`&&e.auth.kind===V.passkey){let t=await lR({store:this.ed25519YaoPublicCapabilityReferences,laneIdentity:e.laneIdentity}),r=t.materialActivation,i=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:e.walletId,nearAccountId:e.nearAccountId,materialActivation:r});if(!i)throw Error(`[SigningEngine][near] active Passkey Ed25519 material is unavailable`);let a=IR({material:i,input:e,expectedActivation:r}),o=await fR({reference:t,material:a,authorization:n,materialActivation:r,relayerUrl:String(this.seamsWebConfigs.network.relayer?.url||``).trim()}),s=CR(a);if(s.kind!==`live`)throw Error(`[SigningEngine][near] active Passkey Ed25519 material is unavailable`);return await qc({hydration:Sc({authority:o.authority,runtime:s.runtime,materialActivation:r}),requirement:e.auth,authorization:n})}if(r.kind!==`resolved`)throw Error(`[SigningEngine][near] exact persisted Ed25519 runtime is ${r.kind}`);let i=r.runtime,a=i.sealedRecord.ed25519Restore.materialActivation,o=await br({runtime:i,authorization:n,nowMs:Date.now()}),s=o.signingLane.identity.signer,c={kind:`available`,walletId:String(s.account.wallet.walletId),nearAccountId:String(s.account.nearAccountId),signerSlot:s.signerSlot,materialActivation:a},l=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:s.account.wallet.walletId,nearAccountId:s.account.nearAccountId,materialActivation:a}),u=e.auth.kind===V.passkey?await this.passkeyMpcSession.claimWarmSessionMaterial({thresholdSessionId:i.thresholdSessionId,purpose:{curve:`ed25519`,materialActivation:a},consume:!1}):null,d={kind:`unavailable`};u?.ok===!0&&(d={kind:`available`,passkeyPrfFirstB64u:u.prfFirstB64u});let f=await this.resolveExactNearEd25519YaoSigningHydration({args:e,walletSessionState:o,publicLocator:c,runtime:CR(l),unlockSource:d});if(f.kind===`use_live_runtime`){if(!l)throw Error(`[SigningEngine][near] live Ed25519 material is unavailable`);await LR({input:e,authorization:n,sealedRuntime:i,material:l})}return await qc({hydration:f,requirement:e.auth,authorization:n})}case`missing`:case`expired`:case`exhausted`:case`superseded`:case`authority_unavailable`:case`method_unavailable`:case`capability_unavailable`:case`unavailable`:return await this.prepareMaterialIdentityNearEd25519YaoSigning(AR(e));case`upgrade_required`:throw new ic(`[SigningEngine][near] Wallet Session authorization requires a newer client`);case`corrupt`:case`persistence_unavailable`:throw Error(`[SigningEngine][near] Wallet Session authorization is ${t.kind}`);default:throw Error(`[SigningEngine][near] unsupported Wallet Session authorization state`)}}async prepareExactNearEd25519YaoMaterialBoundary(e){FR(e);let t=await this.prepareExactNearEd25519YaoSigning(e),n={input:e,materialActivation:t.hydration.materialActivation||null};return{preparation:t,executor:{resolveSigningKeyMaterial:this.resolveExactNearEd25519SigningKeyMaterial.bind(this,n),resolve:this.resolveExactNearEd25519YaoPreparedMaterial.bind(this,n),resolveWalletSessionState:this.resolveExactNearEd25519YaoWalletSessionState.bind(this,n),resolveFundingSession:this.resolveExactNearEd25519FundingSession.bind(this,n),preparePasskeyOperationStepUp:this.prepareExactNearEd25519YaoOperationStepUpAtBoundary.bind(this,n),prepareEmailOtpOperationStepUp:this.prepareExactNearEmailOtpEd25519YaoOperationStepUpAtBoundary.bind(this,n)}}}async resolveExactNearEd25519SigningKeyMaterial(e){let t=wR(e.input),n=t.signer,r=t.auth,i=e.materialActivation;if(!i)throw Error(`[SigningEngine][near] prepared material has no activation`);if(String(n.account.wallet.walletId)!==String(e.input.walletId)||String(n.account.nearAccountId)!==String(e.input.nearAccountId))throw Error(`[SigningEngine][near] selected Ed25519 lane identity changed`);let a=await K.resolveSelectedWalletAuthority(String(e.input.walletId));if(a.kind!==`resolved`){let e=a.kind===`integrity_error`?`: ${a.reason}`:``;throw Error(`[SigningEngine][near] selected Wallet Authority is ${a.kind}${e}`)}let{selection:o,authMethod:s,authority:c,signerMaterials:l}=a,u;switch(r.kind){case V.passkey:u=s.kind===V.passkey&&String(s.rpId)===String(r.rpId)&&s.credentialIdB64u===r.credentialIdB64u;break;case V.emailOtp:u=s.kind===V.emailOtp;break;default:throw Error(`[SigningEngine][near] unsupported Ed25519 material authority`)}if(o.lockState!==`unlocked`||c.state!==`active`||s.status!==`active`||String(o.walletId)!==String(e.input.walletId)||o.walletAuthMethodId!==s.walletAuthMethodId||s.walletAuthorityId!==c.authorityId||String(s.walletId)!==String(e.input.walletId)||!u)throw Error(`[SigningEngine][near] selected Wallet Authority does not match the lane`);let d=await Bm({selected:{authMethod:s,authority:c},operation:{kind:`near_sign`,operation:`sign`,keyFamily:`ed25519`}});if(d.kind!==`resolved`)throw Error(`[SigningEngine][near] selected Wallet Authority rejected signing (${d.reason.kind})`);let f=d.value;if(f.keyFamily!==`ed25519`||String(f.walletId)!==String(e.input.walletId)||f.authMethodId!==s.walletAuthMethodId||!b(f.materialActivation,i))throw Error(`[SigningEngine][near] selected Wallet Authority activation changed`);if(c.signerActivations.keyFamilies[0]!==`ed25519`||c.signerActivations.ed25519===void 0||!b(c.signerActivations.ed25519.materialActivation,i)||c.signerActivations.ed25519.signer.registeredPublicKeyB64u!==f.registeredPublicKeyB64u)throw Error(`[SigningEngine][near] selected Ed25519 authority activation changed`);let p=F(f.registeredPublicKeyB64u);if(p.byteLength!==32)throw Error(`[SigningEngine][near] selected Ed25519 public key is invalid`);let m=i.signingWorker,h=[1,2],g=null;if(c.provenance.kind===`device_link`){await uR({store:this.ed25519YaoPublicCapabilityReferences,identity:t,materialActivation:i});for(let e of l)if(!(!aR(e)||e.authorityId!==c.authorityId||e.walletAuthMethodId!==s.walletAuthMethodId||!b(e.materialActivation,i))){if(g)throw Error(`[SigningEngine][near] linked Ed25519 signer material is ambiguous`);g=e}if(!g)throw Error(`[SigningEngine][near] linked Ed25519 signer material is unavailable`);let a=g.publicFacts.applicationBinding,o=g.publicFacts.targetBinding,u=o.lifecycle,d=g.targetFactor,p;switch(r.kind){case V.passkey:p=d.kind===V.passkey&&d.walletAuthMethodId===s.walletAuthMethodId&&String(d.rpId)===String(r.rpId)&&d.credentialIdB64u===r.credentialIdB64u;break;case V.emailOtp:p=d.kind===V.emailOtp&&s.kind===V.emailOtp&&d.walletAuthMethodId===s.walletAuthMethodId&&d.emailHashHex===s.emailHashHex;break;default:throw Error(`[SigningEngine][near] unsupported Ed25519 material authority`)}if(a.wallet_id!==String(e.input.walletId)||a.near_ed25519_signing_key_id!==String(n.nearEd25519SigningKeyId)||a.key_creation_signer_slot!==n.signerSlot||u.account_id!==String(e.input.walletId)||u.session_id!==String(t.thresholdSessionId)||u.selected_server_id!==String(m)||!b(Xa(o.material_activation),i)||!b(Xa(g.publicFacts.activationReceipt.material_activation),i)||P(Uint8Array.from(g.publicFacts.activationReceipt.registered_public_key))!==f.registeredPublicKeyB64u||!p)throw Error(`[SigningEngine][near] linked Ed25519 signer identity changed`);h=g.publicFacts.participantIds}let _=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:e.input.walletId,nearAccountId:e.input.nearAccountId,materialActivation:i});if(_){let r=IR({material:_,input:e.input,expectedActivation:i}),a=r.activeClient.metadata(),o=r.facts;if(P(a.registeredPublicKey)!==f.registeredPublicKeyB64u||a.participantIds[0]!==h[0]||a.participantIds[1]!==h[1]||a.applicationBinding.wallet_id!==String(e.input.walletId)||a.applicationBinding.near_ed25519_signing_key_id!==String(n.nearEd25519SigningKeyId)||a.applicationBinding.key_creation_signer_slot!==n.signerSlot||a.scope.account_id!==String(e.input.walletId)||a.scope.threshold_session_id!==String(t.thresholdSessionId)||a.scope.signing_worker_id!==String(m)||o.routerAbNormalSigning.signingWorkerId!==String(m)||o.signingRootId!==a.applicationBinding.signing_root_id||o.signingRootVersion!==a.scope.root_share_epoch)throw Error(`[SigningEngine][near] active Ed25519 public material changed`);if(g){let e=g.publicFacts.applicationBinding,t=g.publicFacts.targetBinding.lifecycle;if(a.applicationBinding.wallet_id!==e.wallet_id||a.applicationBinding.near_ed25519_signing_key_id!==e.near_ed25519_signing_key_id||a.applicationBinding.signing_root_id!==e.signing_root_id||a.applicationBinding.key_creation_signer_slot!==e.key_creation_signer_slot||a.scope.lifecycle_id!==t.lifecycle_id||a.scope.root_share_epoch!==t.root_share_epoch||a.scope.account_id!==t.account_id||a.scope.threshold_session_id!==t.session_id||a.scope.signing_worker_id!==t.selected_server_id)throw Error(`[SigningEngine][near] linked Ed25519 runtime identity changed`)}}let v=`ed25519:${Er(p)}`;return{nearAccountId:e.input.nearAccountId,signerSlot:n.signerSlot,kind:`threshold_ed25519_v1`,publicKey:v,relayerKeyId:m,keyVersion:jr,participants:ce({clientParticipantId:h[0],relayerParticipantId:h[1],relayerKeyId:m,clientShareDerivation:`prf_first_v1`}),timestamp:c.activatedAtMs}}async resolveExactNearEd25519YaoPreparedMaterial(e,t){let n=zR({context:e,preparation:t});switch(t.hydration.kind){case`use_live_runtime`:{let t=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:e.input.walletId,nearAccountId:e.input.nearAccountId,materialActivation:n});if(!t)throw Error(`[SigningEngine][near] active Ed25519 Yao capability is unavailable`);return IR({material:t,input:e.input,expectedActivation:n})}case`rehydrate_material_activation`:{let t=kR(e.input);switch(t.auth.kind){case V.passkey:{let e=await this.rehydrateExactPasskeyEd25519YaoCapabilityForSigning(t);try{let r=await this.readNearEd25519SigningCandidate(t.walletId);if(r.kind!==`found`||r.authorization.selectedAuthMethod.kind!==V.passkey)throw Error(`[SigningEngine][near] Wallet Session authorization is ${r.kind}`);let i=await pR({walletId:t.walletId,laneIdentity:t.laneIdentity});return await LR({input:t,authorization:r.authorization,sealedRuntime:i,material:e}),IR({material:e,input:t,expectedActivation:n})}catch(t){throw e.activeClient.dispose(),t}}case V.emailOtp:throw Error(`[SigningEngine][near] Email OTP custody cache is unavailable; link the device before signing`);default:throw t.auth,Error(`[SigningEngine][near] unsupported Ed25519 material authority`)}}case`reauthorize_public_anchor`:throw Error(`[SigningEngine][near] retired material requires reauthorization`);case`blocked`:throw Error(`[SigningEngine][near] prepared material is blocked: ${t.hydration.reason}`);default:throw t.hydration,Error(`[SigningEngine][near] unsupported prepared material hydration`)}}async resolveExactNearEd25519YaoWalletSessionState(e){let t=kR(e.input);if(t.auth.kind===V.emailOtp){if(!e.materialActivation)throw Error(`[SigningEngine][near] prepared material has no activation`);let n=await cR({store:this.ed25519YaoPublicCapabilityReferences,laneIdentity:t.laneIdentity,materialActivation:e.materialActivation}),r=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:t.walletId,nearAccountId:t.nearAccountId,materialActivation:e.materialActivation});if(!r)throw Error(`[SigningEngine][near] active Email OTP Ed25519 material is unavailable`);let i=await this.readNearEd25519SigningCandidate(t.walletId);if(i.kind!==`found`||i.authorization.selectedAuthMethod.kind!==V.emailOtp)throw Error(`[SigningEngine][near] Wallet Session authorization is ${i.kind}`);return await jR({reference:n,material:IR({material:r,input:t,expectedActivation:e.materialActivation}),authorization:i.authorization,materialActivation:e.materialActivation,relayerUrl:String(this.seamsWebConfigs.network.relayer?.url||``).trim()})}let n=await Rt({walletId:t.walletId,laneIdentity:t.laneIdentity});if(n.kind===`missing`&&t.auth.kind===V.passkey){if(!e.materialActivation)throw Error(`[SigningEngine][near] prepared material has no activation`);let n=await lR({store:this.ed25519YaoPublicCapabilityReferences,laneIdentity:t.laneIdentity});if(!b(n.materialActivation,e.materialActivation))throw Error(`[SigningEngine][near] Passkey public lane activation changed`);let r=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:t.walletId,nearAccountId:t.nearAccountId,materialActivation:e.materialActivation});if(!r)throw Error(`[SigningEngine][near] active Passkey Ed25519 material is unavailable`);let i=IR({material:r,input:t,expectedActivation:e.materialActivation}),a=await this.readNearEd25519SigningCandidate(t.walletId);if(a.kind!==`found`||a.authorization.selectedAuthMethod.kind!==V.passkey)throw Error(`[SigningEngine][near] Wallet Session authorization is ${a.kind}`);return await fR({reference:n,material:i,authorization:a.authorization,materialActivation:e.materialActivation,relayerUrl:String(this.seamsWebConfigs.network.relayer?.url||``).trim()})}if(n.kind!==`resolved`)throw Error(`[SigningEngine][near] exact persisted Ed25519 runtime is ${n.kind}`);let r=n.runtime,i=await this.readNearEd25519SigningCandidate(t.walletId);if(i.kind!==`found`)throw Error(`[SigningEngine][near] Wallet Session authorization is ${i.kind}`);return await br({runtime:r,authorization:i.authorization,nowMs:Date.now()})}async resolveExactNearEd25519FundingSession(e){let t=wR(e.input),n=await this.readExactNearEd25519WalletSessionAuthorization(t.signer.account.wallet.walletId);if(n.kind!==`found`||n.authorization.selectedAuthMethod.kind!==t.auth.kind)throw Error(`[SigningEngine][near] authenticated funding session is unavailable`);if(!e.materialActivation)throw Error(`[SigningEngine][near] funding session material activation is unavailable`);if(!Fc({session:n.authorization.session,materialActivation:e.materialActivation}))throw Error(`[SigningEngine][near] authenticated funding session material changed`);let r=n.authorization.operationCredential.token;if(n.authorization.session.walletId!==t.signer.account.wallet.walletId||n.authorization.selectedAuthMethod.kind!==t.auth.kind||!n.authorization.operationCredential.walletSessionId||!n.authorization.session.quotaId)throw Error(`[SigningEngine][near] funding session identity does not match`);return{kind:`near_ed25519_funding_session`,signer:t.signer,thresholdSessionId:t.thresholdSessionId,walletSessionToken:r}}async prepareExactNearEd25519YaoOperationStepUpAtBoundary(e,t){if(ER(e.input).kind!==V.passkey)throw Error(`[SigningEngine][near] Email OTP material cannot use Passkey rehydration`);let n=zR({context:e,preparation:t}),r=await this.prepareExactPasskeyEd25519YaoOperationStepUpForSigning(e.input);if(!b(n,r.materialActivation))throw Error(`[SigningEngine][near] operation step-up changed material activation`);return r}async prepareExactNearEmailOtpEd25519YaoOperationStepUpAtBoundary(e,t){let n=wR(e.input);if(n.auth.kind!==V.emailOtp)throw Error(`[SigningEngine][near] Passkey material cannot use Email OTP rehydration`);let r=zR({context:e,preparation:t});switch(t.hydration.kind){case`use_live_runtime`:return{kind:`live`,materialActivation:r,material:await this.resolveExactNearEd25519YaoPreparedMaterial(e,t)};case`rehydrate_material_activation`:{let t=await cR({store:this.ed25519YaoPublicCapabilityReferences,laneIdentity:n,materialActivation:r}),i=await this.getUserBySignerSlot(e.input.nearAccountId,n.signer.signerSlot);if(!i||String(i.walletId)!==String(e.input.walletId)||String(i.nearAccountId)!==String(e.input.nearAccountId)||i.signerSlot!==n.signer.signerSlot||i.authMethod!==V.emailOtp)throw Error(`[SigningEngine][near] Email OTP signer record is unavailable`);let a=await this.loadEmailOtpWalletCustodyEd25519Material({nearAccountId:String(e.input.nearAccountId),signerSlot:i.signerSlot});if(a.kind!==`found`)throw Error(`[SigningEngine][near] Email OTP custody material is unavailable`);if(`ed25519:${Er(F(a.material.binding.registeredPublicKeyB64u))}`!==i.operationalPublicKey||a.material.binding.walletId!==String(e.input.walletId)||a.material.binding.nearAccountId!==String(e.input.nearAccountId)||a.material.binding.signerSlot!==i.signerSlot||a.material.binding.signingWorkerId!==String(r.signingWorker))throw Error(`[SigningEngine][near] Email OTP custody material binding changed`);let o=this.seamsWebConfigs.network.relayer?.url||``;if(!o)throw Error(`[SigningEngine][near] Email OTP recovery requires a relay URL`);let s={input:e.input,materialActivation:r,facts:PR({input:e.input,publicLane:t,relayerUrl:o}),publicLane:t,sealedMaterial:a.material,operationalPublicKey:i.operationalPublicKey,emailHashHex:await A(i.loginDisplayName.trim().toLowerCase())};return{kind:`sealed`,materialActivation:r,facts:s.facts,authorizeAndRehydrate:this.authorizeAndRehydrateEmailOtpEd25519OperationMaterial.bind(this,s)}}case`reauthorize_public_anchor`:throw Error(`[SigningEngine][near] retired Email OTP material cannot sign`);case`blocked`:throw Error(`[SigningEngine][near] Email OTP operation material is blocked: ${t.hydration.reason}`);default:throw t.hydration,Error(`[SigningEngine][near] unsupported Email OTP operation material`)}}async authorizeAndRehydrateEmailOtpEd25519OperationMaterial(e,t){let n=wR(e.input);if(n.auth.kind!==V.emailOtp||t.proof.providerSubjectId!==n.auth.providerSubjectId)throw Error(`[SigningEngine][near] Email OTP operation authority changed`);let r=await _R({walletId:e.input.walletId,proof:t.proof}),i={kind:`exact_ed25519_export_material`,signer:n.signer,auth:n.auth,thresholdSessionId:n.thresholdSessionId},a=await lP({subject:i,expectedMaterialActivation:e.materialActivation,authorization:await this.readExactEmailOtpEd25519ExportAuthorization({subject:i,expectedMaterialActivation:e.materialActivation}),source:{signingWorkerId:e.sealedMaterial.binding.signingWorkerId,participantIds:e.sealedMaterial.binding.participantIds,registeredPublicKeyB64u:e.sealedMaterial.binding.registeredPublicKeyB64u},relayerUrl:e.facts.relayerUrl,fetch:globalThis.fetch.bind(globalThis)}),o=await xP({workerCtx:this.signerWorkerManager.getContext(),payload:{relayUrl:e.facts.relayerUrl,walletId:String(e.input.walletId),orgId:e.publicLane.runtimePolicyScope.orgId,providerSubjectId:n.auth.providerSubjectId,nearAccountId:String(e.input.nearAccountId),signerSlot:e.publicLane.signerSlot,expectedOperationalPublicKey:e.operationalPublicKey,expectedThresholdSessionId:e.publicLane.thresholdSessionId,expectedMaterialActivation:e.materialActivation,ed25519YaoRecovery:{kind:Do,signerSlot:e.publicLane.signerSlot,remainingUses:Re,orgId:e.publicLane.runtimePolicyScope.orgId},walletCustodyEd25519Material:{kind:`found`,material:e.sealedMaterial},bootstrap:a,normalSigningRequest:t.normalSigningRequest,displayDigest:t.displayDigest,proof:t.proof,operationCredential:r}});if(o.walletCustodyEd25519Material)try{await this.persistWalletCustodyEd25519Material(o.walletCustodyEd25519Material)}catch(e){throw await Xv({workerContext:this.signerWorkerManager.getContext(),activeClientHandle:o.activeClientHandle}).catch(()=>void 0),e}let s=new Zv(this.signerWorkerManager.getContext(),o.activeClientHandle,o.metadata),c;try{c=IR({material:{activeClient:s,facts:e.facts},input:e.input,expectedActivation:e.materialActivation})}catch(e){throw s.dispose(),e}return{material:c,issuedAuthorization:{kind:o.issuedAuthorization.kind,authorization:o.issuedAuthorization.authorization,expiresAtMs:o.issuedAuthorization.expiresAtMs}}}async resolveExactNearEd25519YaoSigningHydration(e){let t=kR(e.args);switch(t.auth.kind){case V.passkey:{let n=await this.resolvePasskeyEd25519YaoHydration({walletSessionState:e.walletSessionState,credentialIdB64u:t.auth.credentialIdB64u,publicLocator:e.publicLocator,unlockSource:e.unlockSource}),r;switch(n.kind){case`live`:case`blocked`:r=n.plan;break;case`rehydrated`:n.activeClient.dispose(),r=n.plan;break;default:throw Error(`[SigningEngine][near] unsupported Passkey hydration result`)}return r.kind===`blocked`&&r.reason===`missing_material`?(await Mn({store:K,identity:On(e.walletSessionState,t.auth.rpId,t.auth.credentialIdB64u),authority:e.walletSessionState.authority,publicLocator:e.publicLocator})).plan:r}case V.emailOtp:if(e.publicLocator.kind!==`available`)throw Error(`[SigningEngine][near] Email OTP custody locator is unavailable`);return await this.resolveWalletCustodyEmailOtpHydration({walletId:t.walletId,nearAccountId:t.nearAccountId,identity:JL(wR(t)),signerSlot:t.laneIdentity.signer.signerSlot,materialActivation:e.publicLocator.materialActivation});default:throw t.auth,Error(`[SigningEngine][near] unsupported Ed25519 material authority`)}}async prepareExactPasskeyEd25519YaoOperationStepUpForSigning(e){let t=wR(e);if(t.auth.kind!==V.passkey)throw Error(`[SigningEngine][near] Passkey operation step-up requires Passkey material`);if(!await this.resolveNearEd25519YaoSigningLane({...e.laneIdentity===void 0?{kind:`material_identity`,materialIdentity:t}:{kind:`exact_lane`,laneIdentity:e.laneIdentity}}))throw Error(`[SigningEngine][near] sealed Ed25519 operation lane is unavailable`);let n=await yR({walletId:e.walletId,identity:t,relayerUrl:this.seamsWebConfigs.network.relayer.url});return{materialActivation:n.prepared.plan.materialActivation,facts:n.facts,participantIds:[...n.participantIds],rehydrate:this.rehydratePreparedPasskeyEd25519YaoOperationStepUp.bind(this,{input:e,identity:n.localIdentity,facts:n.facts,authority:n.authority,rpId:t.auth.rpId,credentialIdB64u:t.auth.credentialIdB64u,publicLocator:n.publicLocator,materialActivation:n.prepared.plan.materialActivation})}}async rehydratePreparedPasskeyEd25519YaoOperationStepUp(e,t){if(String(t.rawId||t.id||``).trim()!==e.credentialIdB64u)throw nf(`binding_mismatch`);let n=Vd({credential:t,rpId:e.rpId}),r=await SR({store:K,identity:e.identity,authority:e.authority,publicLocator:e.publicLocator,unlockSource:{kind:`available`,passkeyPrfFirstB64u:n.secretSource.prfFirstB64u},liveMaterial:null});if(r.kind===`blocked`)throw rf(r.plan.reason);if(r.kind!==`rehydrated`)throw nf(`corrupt`);if(!b(e.materialActivation,r.plan.materialActivation))throw r.activeClient.dispose(),nf(`binding_mismatch`);let i={activeClient:r.activeClient,facts:e.facts};try{return IR({material:i,input:e.input,expectedActivation:e.materialActivation})}catch{throw i.activeClient.dispose(),nf(`binding_mismatch`)}}async resolveExactPasskeyEd25519YaoExportContext(e){let t=String(this.seamsWebConfigs.network.relayer?.url||``).trim();if(!t)throw Error(`[SigningEngine][ed25519-export] passkey export requires relayerUrl`);let n=z(String(e.laneIdentity.signer.account.wallet.walletId));if(!await nn(yd({authMethod:e.laneIdentity.auth.kind,materialActivation:e.materialActivation})))return await this.resolveLinkedPasskeyEd25519YaoExportContext({...e,walletId:n,relayerUrl:t});let r=await mR({walletId:n,laneIdentity:e.laneIdentity,materialActivation:e.materialActivation}),i=e.laneIdentity.thresholdSessionId,a=await rv(r.walletId,t,new el);if(a){let t=await br({runtime:r,authorization:a,nowMs:Date.now()});(await this.ensurePasskeyEd25519WarmSessionForSigning({runtime:r,walletSessionState:t,materialActivation:e.materialActivation})).ok&&(i=t.thresholdSessionId)}return await ik({subject:{kind:`owner_sealed_runtime`,walletId:z(String(e.laneIdentity.signer.account.wallet.walletId)),nearAccountId:String(e.laneIdentity.signer.account.nearAccountId),nearEd25519SigningKeyId:String(e.laneIdentity.signer.nearEd25519SigningKeyId),signerSlot:e.laneIdentity.signer.signerSlot,thresholdSessionId:i,materialActivation:e.materialActivation},relayerUrl:t,fetch:$L},{readExactEd25519SealedSession:nn,readPasskeyCustodySessionEnvelope:Ft,resolveSelectedWalletAuthority:K.resolveSelectedWalletAuthority.bind(K),readExactWalletSessionAuthorization:q.readExactActiveForWallet.bind(q),resolveExactPasskeyWalletAuthAuthorityRef:GL,nowMs:this.runtimePorts.clock.nowMs})}async resolveLinkedPasskeyEd25519YaoExportContext(e){if(e.laneIdentity.auth.kind!==V.passkey)throw Error(`[SigningEngine][ed25519-export] linked export requires a Passkey lane`);let t=await K.resolveSelectedWalletAuthority(String(e.walletId));if(t.kind!==`resolved`){let e=t.kind===`integrity_error`?`: ${t.reason}`:``;throw Error(`[SigningEngine][ed25519-export] selected Wallet Authority is ${t.kind}${e}`)}let{selection:n,authMethod:r,authority:i,signerMaterials:a,exportRoot:o}=t;if(n.lockState!==`unlocked`||r.kind!==V.passkey||r.status!==`active`||i.state!==`active`||i.provenance.kind!==`device_link`||String(r.walletId)!==String(e.walletId)||r.walletAuthorityId!==i.authorityId||r.walletAuthMethodId!==n.walletAuthMethodId||String(r.rpId)!==String(e.laneIdentity.auth.rpId)||r.credentialIdB64u!==e.laneIdentity.auth.credentialIdB64u)throw Error(`[SigningEngine][ed25519-export] selected linked Passkey authority is unavailable`);let c=i.signerActivations.ed25519;if(!i.permissions.includes(`export_keys`)||!c||!b(c.materialActivation,e.materialActivation)||!o)throw Error(`[SigningEngine][ed25519-export] selected authority has no exact Ed25519 export capability`);let l=null;for(let t of a)if(!(!aR(t)||t.authorityId!==i.authorityId||t.walletAuthMethodId!==r.walletAuthMethodId||!b(t.materialActivation,e.materialActivation))){if(l)throw Error(`[SigningEngine][ed25519-export] linked Ed25519 material is ambiguous`);l=t}if(!l)throw Error(`[SigningEngine][ed25519-export] linked Ed25519 material is unavailable`);let u=l.targetFactor;if(u.kind!==V.passkey||u.walletAuthMethodId!==r.walletAuthMethodId||u.rpId!==r.rpId||u.credentialIdB64u!==r.credentialIdB64u)throw Error(`[SigningEngine][ed25519-export] linked Ed25519 factor binding changed`);let d=Gv(await q.readExactWithOperationCredential({walletId:e.walletId,authorityId:i.authorityId,authMethodId:r.walletAuthMethodId}),`[SigningEngine][ed25519-export] exact linked Wallet Session requires a newer client`),f=!1;if(d){for(let t of d.record.capabilitySubjects)if(t.kind===`export_keys`&&t.keyFamily===`ed25519`&&b(t.materialActivation,e.materialActivation)){f=!0;break}}if(!d||!f||d.record.authorityDigestB64u!==i.authorityDigestB64u||d.record.authorityRevocationEpoch!==i.revocationEpoch||d.record.expiresAtMs<=Date.now())throw Error(`[SigningEngine][ed25519-export] exact linked Wallet Session is unavailable`);let p=await lR({store:this.ed25519YaoPublicCapabilityReferences,laneIdentity:e.laneIdentity});if(!b(p.materialActivation,e.materialActivation))throw Error(`[SigningEngine][ed25519-export] linked public lane activation changed`);let m=await U({authority:{walletId:r.walletId,factor:{kind:V.passkey,credentialIdB64u:r.credentialIdB64u},verifier:{kind:`webauthn`,rpId:r.rpId},bindingId:r.walletAuthMethodId}});if(m.walletAuthMethodId!==r.walletAuthMethodId)throw Error(`[SigningEngine][ed25519-export] Passkey Wallet Session authority changed`);let h=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:e.walletId,nearAccountId:e.laneIdentity.signer.account.nearAccountId,materialActivation:e.materialActivation});if(!h||h.activeClient.status().kind!==`active`)throw Error(`[SigningEngine][ed25519-export] linked Ed25519 runtime is unavailable`);let g=h.activeClient.metadata(),_=wc(g),v=h.facts,y=e.laneIdentity.signer,x=l.publicFacts.applicationBinding,S=P(g.registeredPublicKey),C=Number(g.stateEpoch),w=s(g.scope.threshold_session_id),T=v.runtimePolicyScope,E=p.runtimePolicyScope;if(!w.ok||!Number.isSafeInteger(C)||C<1||!b(_,e.materialActivation)||String(v.thresholdSessionId)!==String(e.laneIdentity.thresholdSessionId)||String(v.signer.account.wallet.walletId)!==String(e.walletId)||String(v.signer.account.nearAccountId)!==String(y.account.nearAccountId)||String(v.signer.nearEd25519SigningKeyId)!==String(y.nearEd25519SigningKeyId)||v.signer.signerSlot!==y.signerSlot||x.wallet_id!==String(e.walletId)||x.near_ed25519_signing_key_id!==String(y.nearEd25519SigningKeyId)||x.key_creation_signer_slot!==y.signerSlot||g.applicationBinding.wallet_id!==x.wallet_id||g.applicationBinding.near_ed25519_signing_key_id!==x.near_ed25519_signing_key_id||g.applicationBinding.signing_root_id!==x.signing_root_id||g.applicationBinding.key_creation_signer_slot!==x.key_creation_signer_slot||g.scope.lifecycle_id!==l.publicFacts.targetBinding.lifecycle.lifecycle_id||g.scope.root_share_epoch!==l.publicFacts.targetBinding.lifecycle.root_share_epoch||g.scope.account_id!==String(e.walletId)||g.scope.threshold_session_id!==String(e.laneIdentity.thresholdSessionId)||g.scope.signing_worker_id!==v.routerAbNormalSigning.signingWorkerId||v.signingRootId!==x.signing_root_id||v.signingRootVersion!==g.scope.root_share_epoch||T.orgId!==E.orgId||T.projectId!==E.projectId||T.envId!==E.envId||T.signingRootVersion!==E.signingRootVersion||l.publicFacts.participantIds[0]!==g.participantIds[0]||l.publicFacts.participantIds[1]!==g.participantIds[1]||P(Uint8Array.from(l.publicFacts.activationReceipt.registered_public_key))!==S||c.signer.registeredPublicKeyB64u!==S)throw Error(`[SigningEngine][ed25519-export] linked Ed25519 runtime identity changed`);let D={authority:m,walletId:y.account.wallet.walletId,nearAccountId:y.account.nearAccountId,nearEd25519SigningKeyId:String(y.nearEd25519SigningKeyId),signerSlot:y.signerSlot,operationalPublicKey:`ed25519:${Er(g.registeredPublicKey)}`,relayerKeyId:g.scope.signing_worker_id,credentialIdB64u:r.credentialIdB64u,capability:{materialActivation:_,activeCapabilityBinding:[...g.activeCapabilityBinding],registeredPublicKey:[...g.registeredPublicKey],nearAccountId:y.account.nearAccountId,applicationBinding:g.applicationBinding,participantIds:g.participantIds,runtimePolicyScope:v.runtimePolicyScope,lifecycle:{lifecycleId:g.scope.lifecycle_id,rootShareEpoch:g.scope.root_share_epoch,accountId:g.scope.account_id,thresholdSessionId:w.value,signerSetId:g.scope.signer_set_id,signingWorkerId:g.scope.signing_worker_id},stateEpoch:C}};return{kind:`ready`,context:{kind:`passkey_ed25519_yao_export_context_v1`,selectedLaneMaterialActivation:e.materialActivation,material:D,authorization:d,relayerUrl:e.relayerUrl,rpId:r.rpId,walletCustodyEnvelope:o.envelope}}}readExactEmailOtpEd25519ExportAuthorization(e){return QL({subject:e.subject,relayerUrl:String(this.seamsWebConfigs.network.relayer?.url||``).trim()})}async activateRecoveredEmailOtpEd25519ExportCapability(e,t){let n=t.activation;await this.activateEmailOtpEd25519CustodyCapabilityWithExactCredential({commitQueue:`acquire`,walletSession:{walletId:e.signer.account.wallet.walletId,walletSessionUserId:String(e.signer.account.wallet.walletId)},providerSubject:e.auth.providerSubjectId,emailHashHex:n.emailHashHex,signerSlot:e.signer.signerSlot,expectedOperationalPublicKey:`ed25519:${Er(n.metadata.registeredPublicKey)}`,expectedThresholdSessionId:String(e.thresholdSessionId),bootstrap:n.bootstrap,activeClientHandle:n.activeClientHandle,metadata:n.metadata,credentialExpectation:{kind:`expect_exact_operation_credential`,operationCredential:t.operationCredential}})}async resolveEmailOtpEd25519YaoExportContext(e){return await hP({subject:e.laneIdentity,expectedMaterialActivation:e.materialActivation,readExactWalletSessionAuthorization:this.readExactEmailOtpEd25519ExportAuthorization.bind(this),resolveActiveCapability:(e,t,n)=>this.enginePorts.ed25519YaoActiveClients.resolve({walletId:e,nearAccountId:kr(t),materialActivation:n}),resolveEd25519YaoClientRootEnvelope:async({subject:e,capability:t,selectedMaterialActivation:n})=>oR({selected:await K.resolveSelectedWalletAuthority(String(e.signer.account.wallet.walletId)),subject:e,expectedMaterialActivation:n,activeCapability:t}),loadWalletCustodyMaterial:()=>this.loadEmailOtpWalletCustodyEd25519Material({nearAccountId:String(e.laneIdentity.signer.account.nearAccountId),signerSlot:e.laneIdentity.signer.signerSlot}),relayerUrl:this.seamsWebConfigs.network.relayer?.url||``,fetch:$L,activateRecoveredCapability:this.activateRecoveredEmailOtpEd25519ExportCapability.bind(this,e.laneIdentity)})}async resolveActiveNearEd25519YaoSigningLane(e){if(!await this.resolveNearEd25519YaoSigningLane(e))return null;let t=$N(e),n=e.kind===`export_exact_lane`?this.enginePorts.ed25519YaoActiveClients.resolve({walletId:t.signer.account.wallet.walletId,nearAccountId:t.signer.account.nearAccountId,materialActivation:e.materialActivation}):this.enginePorts.ed25519YaoActiveClients.resolveForWalletAccount({walletId:t.signer.account.wallet.walletId,nearAccountId:t.signer.account.nearAccountId});return n?.activeClient.status().kind===`active`?n:null}async resolveNearEd25519YaoSigningLane(e){let t=$N(e).signer.account.wallet.walletId,n=await this.readPersistedAvailableSigningLanes({walletId:t,ownerScope:await this.resolveSelectedOwnerLaneScope(t)},new el),r=[];for(let t of n.candidates.ed25519.near)eP(t,e)&&(!Cd(t)||t.curve!==`ed25519`||r.push(t));if(r.length>1)throw Error(`[SigningEngine][near] local Ed25519 material lane is ambiguous`);return r[0]||null}async ensurePasskeyEd25519WarmSessionForSigning(e){let t=await nR({...e,claimWarmSessionMaterial:this.passkeyMpcSession.claimWarmSessionMaterial.bind(this.passkeyMpcSession),rehydrateWarmSessionMaterial:this.passkeyMpcSession.rehydrateWarmSessionMaterial.bind(this.passkeyMpcSession)});return t.ok&&e.runtime.factor.kind===`passkey`&&String(e.runtime.thresholdSessionId)!==String(e.walletSessionState.thresholdSessionId)&&await Ht({persistence:this,session:e.walletSessionState,prfFirstB64u:t.prfFirstB64u,ed25519Restore:xn({rpId:e.runtime.factor.rpId,nearAccountId:e.runtime.nearAccountId,nearEd25519SigningKeyId:e.runtime.nearEd25519SigningKeyId,relayerKeyId:e.runtime.relayerKeyId,participantIds:e.runtime.participantIds,runtimePolicyScope:e.runtime.runtimePolicyScope,signerSlot:e.runtime.signerSlot,routerAbNormalSigning:e.runtime.routerAbNormalSigning,credentialIdB64u:e.runtime.factor.credentialIdB64u,materialActivation:e.materialActivation}),materialActivation:e.materialActivation}),t}async rehydrateNearEd25519YaoCapabilityForSigning(e){let t=$N(e),n=await this.resolveNearEd25519YaoSigningLane(e);if(!n)throw Error(`[SigningEngine][near] local Ed25519 material lane is unavailable`);let r;if(e.kind===`export_exact_lane`)r=await mR({walletId:t.signer.account.wallet.walletId,laneIdentity:e.laneIdentity,materialActivation:e.materialActivation});else{let i=e.kind===`exact_lane`?e.laneIdentity:YN(n);r=await pR({walletId:t.signer.account.wallet.walletId,laneIdentity:i})}let i=await vR({runtime:r,relayerUrl:String(this.seamsWebConfigs.network.relayer?.url||``).trim()});if(r.factor.kind!==`passkey`)throw Error(`[SigningEngine][near] persisted Ed25519 credential is unavailable`);let a=r.factor.credentialIdB64u,o=r.sealedRecord.ed25519Restore.materialActivation;if(!b(o,n.materialActivation))throw Error(`[SigningEngine][near] persisted Ed25519 material activation mismatch`);let s=await this.ensurePasskeyEd25519WarmSessionForSigning({runtime:r,walletSessionState:i,materialActivation:o}),c={kind:`available`,walletId:String(i.signingLane.identity.signer.account.wallet.walletId),nearAccountId:String(i.signingLane.identity.signer.account.nearAccountId),signerSlot:i.signingLane.identity.signer.signerSlot,materialActivation:o},l=await this.resolvePasskeyEd25519YaoHydration({walletSessionState:i,credentialIdB64u:a,publicLocator:c,unlockSource:s.ok?{kind:`available`,passkeyPrfFirstB64u:s.prfFirstB64u}:{kind:`unavailable`}});if(l.kind===`live`){let t=await this.resolveActiveNearEd25519YaoSigningLane(e);if(!t)throw Error(`[SigningEngine][near] local material rehydration did not publish a lane`);return{subject:e,material:t}}if(l.kind===`rehydrated`){if(!s.ok)throw l.activeClient.dispose(),Error(`[SigningEngine][near] local material rehydration lost the PRF secret`);try{await Ht({persistence:this,session:i,prfFirstB64u:s.prfFirstB64u,ed25519Restore:xn({rpId:r.factor.rpId,nearAccountId:r.nearAccountId,nearEd25519SigningKeyId:r.nearEd25519SigningKeyId,relayerKeyId:r.relayerKeyId,participantIds:r.participantIds,runtimePolicyScope:r.runtimePolicyScope,signerSlot:r.signerSlot,routerAbNormalSigning:r.routerAbNormalSigning,credentialIdB64u:a,materialActivation:o}),materialActivation:o}),await this.enginePorts.ed25519YaoActiveClients.activate({activeClient:l.activeClient,facts:Nn(i)});let t=eR({subject:e,walletSessionState:i}),n=await this.resolveActiveNearEd25519YaoSigningLane(t);if(!n)throw Error(`[SigningEngine][near] local material rehydration did not publish an active lane`);return{subject:t,material:n}}catch(e){throw l.activeClient.dispose(),e}}throw l.plan.reason===`missing_material`?Error(`[SigningEngine][near] local threshold Ed25519 material requires Passkey reauthorization`):Error(`[SigningEngine][near] local threshold Ed25519 hydration blocked: ${l.plan.reason}`)}async resolvePasskeyEd25519YaoHydration(e){let t=e.walletSessionState.signingLane.identity.signer;return hr({store:K,identity:On(e.walletSessionState,this.getRpId(),e.credentialIdB64u),authority:e.walletSessionState.authority,publicLocator:e.publicLocator,unlockSource:e.unlockSource,liveMaterial:e.publicLocator.kind===`available`?this.enginePorts.ed25519YaoActiveClients.resolve({walletId:t.account.wallet.walletId,nearAccountId:t.account.nearAccountId,materialActivation:e.publicLocator.materialActivation}):null})}async signEvmFamily(e){return await nd(this.enginePorts.tempoSigningDeps,e)}async reportTempoBroadcastAccepted(e){await td(this.enginePorts.tempoSigningDeps,e)}async reportTempoBroadcastRejected(e){await id(this.enginePorts.tempoSigningDeps,e)}async reportTempoFinalized(e){await Gu(this.enginePorts.tempoSigningDeps,e)}async reportTempoDroppedOrReplaced(e){await Qu(this.enginePorts.tempoSigningDeps,e)}async reconcileTempoNonceLane(e){return await ad(this.enginePorts.tempoSigningDeps,e)}storeUserData(e){return ba(this.enginePorts.registrationAccountLifecycleDeps,e)}async storeNearThresholdKeyMaterial(e){await lg({clientDB:K,keyMaterialStore:K},e)}getAllUsers(){return ua(this.enginePorts.registrationAccountLifecycleDeps)}getUserBySignerSlot(e,t){return ma(this.enginePorts.registrationAccountLifecycleDeps,e,t)}getLastUser(){return oa(this.enginePorts.registrationAccountLifecycleDeps)}nearAuthenticatorsByAccount(e){return fa(this.enginePorts.registrationAccountLifecycleDeps,e)}setLastUser(e,t){return va(this.enginePorts.registrationAccountLifecycleDeps,e,t)}activateAuthenticatedWalletState(e){return _a(this.enginePorts.registrationAccountLifecycleDeps,e)}async upsertEd25519YaoPublicCapabilityReference(e){await this.ed25519YaoPublicCapabilityReferences.upsert(e)}async upsertEd25519YaoPublicCapabilityLaneReference(e){await Fs(this.ed25519YaoPublicCapabilityReferences,e)}setWalletNearProvisioningState(e){return xa(this.enginePorts.registrationAccountLifecycleDeps,e)}getWalletNearProvisioningState(e){return ga(this.enginePorts.registrationAccountLifecycleDeps,e)}storeAuthenticator(e){return sa(this.enginePorts.registrationAccountLifecycleDeps,e)}rollbackUserRegistration(e){return la(this.enginePorts.registrationAccountLifecycleDeps,e)}hasPasskeyCredential(e){return ca(this.enginePorts.registrationAccountLifecycleDeps,e)}storeWalletEd25519RegistrationData(e){return ia(this.enginePorts.registrationAccountLifecycleDeps,e)}storeWalletMixedRegistrationData(e){return Yi(this.enginePorts.registrationAccountLifecycleDeps,e)}storeWalletEd25519RecoveryRegistrationData(e){return ya(this.enginePorts.registrationAccountLifecycleDeps,e)}storeWalletEmailOtpEd25519RegistrationData(e){return na(this.enginePorts.registrationAccountLifecycleDeps,e)}storeWalletEmailOtpMixedRegistrationData(e){return da(this.enginePorts.registrationAccountLifecycleDeps,e)}finalizeWalletEd25519SignerRegistration(e){return ha(this.enginePorts.registrationAccountLifecycleDeps,e)}rollbackWalletEd25519SignerRegistration(e){return aa(this.enginePorts.registrationAccountLifecycleDeps,e)}createRouterAbEcdsaRegistrationCeremony(e){return this.runtimePorts.signerCrypto.createRouterAbEcdsaRegistrationCeremony(e)}verifyRouterAbEcdsaRegistrationClientProofs(e){return this.runtimePorts.signerCrypto.verifyRouterAbEcdsaRegistrationClientProofs(e)}persistInitialCanonicalEcdsaActivation(e){return this.runtimePorts.signerCrypto.persistInitialCanonicalEcdsaActivation(e)}finalizeRouterAbEcdsaRegistrationActivation(e){return this.runtimePorts.signerCrypto.finalizeRouterAbEcdsaRegistrationActivation(e)}closeRouterAbEcdsaRegistrationCeremony(e){return this.runtimePorts.signerCrypto.closeRouterAbEcdsaRegistrationCeremony(e)}finalizeWalletRegistrationEcdsaSessions(e){return PL(e)}storeWalletEcdsaSignerRecords(e){return Xi(this.enginePorts.registrationAccountLifecycleDeps,e)}storeWalletEcdsaRecoverySignerRecords(e){return ra(this.enginePorts.registrationAccountLifecycleDeps,e)}storeWalletEmailOtpEcdsaSignerRecords(e){return Zi(this.enginePorts.registrationAccountLifecycleDeps,e)}finalizeWalletEcdsaRegistration(e){return pa(this.enginePorts.registrationAccountLifecycleDeps,e)}async activateVerifiedNearEd25519YaoMaterial(e){return await this.enginePorts.ed25519YaoActiveClients.activate(e)}async withExactEd25519MaterialOwner(e){return await of({queueByKey:this.thresholdEd25519CommitQueueByKey,queueKey:wd({materialActivation:e.materialActivation}),nearAccountId:e.nearAccountId,enabled:!0,task:e.task})}storeWalletEmailOtpEcdsaRegistrationData(e){return Qi(this.enginePorts.registrationAccountLifecycleDeps,e)}prepareSigningSessionHydration(e){return this.passkeyMpcSession.prepareSigningSessionHydration(e)}readPreparedSigningSessionHydration(e){return this.passkeyMpcSession.readPreparedSigningSessionHydration(e)}discardSigningSessionHydration(e){return this.passkeyMpcSession.discardSigningSessionHydration(e)}hydrateSigningSession(e){return uF(this.warmCapabilitiesPublicDeps,e)}persistSigningSessionSealForThresholdSession(e){return this.passkeyMpcSession.persistSigningSessionSealForThresholdSession(e)}async requestEmailOtpEnrollmentConfirmation(e){let t=e.challengeId,n={challengeId:e.challengeId,...e.emailHint?{emailHint:e.emailHint}:{},title:e.confirmerText?.title||`Enter email code to add sign-in`,body:e.confirmerText?.body||`This one-time code confirms ${e.emailAddress} can unlock this wallet.`,helperText:`Enter the 6-digit code sent to your email`,onResend:async()=>{let n=await e.onResend();return t=n.challengeId,{challengeId:n.challengeId,...n.emailHint?{emailHint:n.emailHint}:{},delivery:{mode:`email_provider`}}}},r=await this.touchConfirm.requestUserConfirmation({requestId:Pe(`add-auth-method-email-otp`,32,`Email OTP enrollment UI ids`),type:Y.SIGN_INTENT_DIGEST,summary:{type:`add_auth_method`,operation:`Add email code sign-in`,title:n.title,body:n.body,warning:`Security note: Adding email code lowers this wallet’s security because your inbox becomes another way to unlock it.`},payload:{signingSubject:{kind:`evm_wallet`,walletId:e.walletId},challengeB64u:e.challengeId,signingAuthPlan:{kind:Qd.EmailOtpReauth,method:`email_otp`,emailOtpPrompt:n},emailOtpPrompt:n},intentDigest:`add-auth-method:${e.walletId}:email-otp`,...e.confirmationConfigOverride?{confirmationConfigOverride:e.confirmationConfigOverride}:{}});if(!r.confirmed)throw Error(r.error||`Adding an email code was cancelled`);let i=String(r.otpCode||``).replace(/\D/g,``).slice(0,6);if(i.length!==6)throw Error(`Adding an email code requires a 6-digit code`);return{challengeId:String(r.emailOtpChallengeId||t).trim(),otpCode:i}}requestRegistrationCredentialConfirmation(e){return fk(this.enginePorts.registrationSessionDeps,e)}openRegistrationPreparationModal(e){return this.touchConfirm.openRegistrationPreparationModal(e)}closeRegistrationPreparationModal(){this.touchConfirm.closeRegistrationPreparationModal()}startPreparedPasskeyRegistrationCredential(e){if(this.touchIdPrompt.getRpId()!==e.expectedRpId)throw Error(`Prepared registration rpId does not match the wallet runtime`);return this.touchIdPrompt.generateRegistrationCredentialsInternal({kind:`wallet_registration`,walletId:e.walletId,challengeB64u:e.challengeB64u,signerSlot:e.signerSlot,intendedUserName:e.walletId,prompt:{kind:`reserved`,reservation:e.reservation,owner:e.owner,cancellation:e.cancellation}}).then(BR)}getAuthenticationCredentialsSerialized(e){return e.cancellation?this.touchIdPrompt.getAuthenticationCredentialsSerializedForChallengeB64u(e):pk(this.enginePorts.registrationSessionDeps,e)}async exportKeypairWithUI(e){return await uk(this.recoveryPublicDeps,e)}async resolveExactKeyExportLane(e){return await dk(this.recoveryPublicDeps,e)}async connectEd25519Session(e){return await bF(this.passkeyPublicDeps,e)}async bootstrapEcdsaSession(e){return await xF(this.passkeyPublicDeps,e)}async loginWithEmailOtpEcdsaCapabilityInternal(e){return await Dk(this.emailOtpPublicDeps,e)}async resolveEmailOtpEd25519CustodyProjectionInternal(e){let t=String(e.walletSession.walletId),n;switch(e.selector.kind){case`material_activation`:n=e.selector.materialActivation;break;case`wallet_auth_method`:{let r=await K.resolveWalletAuthorityForMethod(t,e.selector.walletAuthMethodId);n=r.kind===`resolved`&&r.authority.state===`active`?r.authority.signerActivations.ed25519?.materialActivation:void 0;break}case`selected_wallet_authority`:{let e=await K.resolveSelectedWalletAuthority(t);n=e.kind===`resolved`&&e.authority.state===`active`?e.authority.signerActivations.ed25519?.materialActivation:void 0;break}default:e.selector}return n?await JN({listPublicCapabilityReferences:this.ed25519YaoPublicCapabilityReferences.list.bind(this.ed25519YaoPublicCapabilityReferences),listUsers:this.getAllUsers.bind(this)},e.walletSession,e.providerSubjectId,n):null}async resolveOwnerAuthorityEd25519UnlockRequestInternal(e){let t=await this.resolveEmailOtpEd25519CustodyProjectionInternal({walletSession:e.walletSession,providerSubjectId:e.providerSubjectId,selector:{kind:`wallet_auth_method`,walletAuthMethodId:e.walletAuthMethodId}});if(!t)return null;let n=t.user.signerSlot;return{kind:`owner_authority`,signerSlot:n,remainingUses:e.remainingUses,recovery:{ed25519YaoRecovery:{kind:Do,signerSlot:n,remainingUses:e.remainingUses,orgId:t.identity.runtimePolicyScope.orgId},providerSubject:t.providerSubject,nearAccountId:String(t.identity.nearAccountId),expectedOperationalPublicKey:t.user.operationalPublicKey,expectedThresholdSessionId:String(t.identity.thresholdSessionId),walletCustodyEd25519Material:await this.loadEmailOtpWalletCustodyEd25519Material({nearAccountId:String(t.identity.nearAccountId),signerSlot:n})}}}async activateOwnerAuthorityEd25519RuntimeInternal(e){let t=await this.resolveEmailOtpEd25519CustodyProjectionInternal({walletSession:e.walletSession,providerSubjectId:e.providerSubjectId,selector:{kind:`wallet_auth_method`,walletAuthMethodId:e.walletAuthMethodId}});if(!t)throw Error(`Owner Email OTP Ed25519 activation has no signer projection`);await this.activateEmailOtpEd25519CustodyCapabilityInternal({walletSession:e.walletSession,providerSubject:t.providerSubject,emailHashHex:e.emailHashHex,signerSlot:t.user.signerSlot,expectedOperationalPublicKey:t.user.operationalPublicKey,expectedThresholdSessionId:String(t.identity.thresholdSessionId),bootstrap:e.bootstrap,activeClientHandle:e.activeClientHandle,metadata:e.metadata,authority:e.authority,commitQueue:`acquire`})}async activateEmailOtpEd25519RegistrationMaterialInternal(e){let t=await this.signerWorkerManager.requestWorkerOperation({kind:`emailOtp`,request:{type:`activateEmailOtpEd25519YaoRegistrationMaterial`,payload:{material:e.material,bootstrap:e.bootstrap,envelope:e.envelope,factorSecret32:e.factorSecret32},transfer:[e.factorSecret32]}});try{let n=await this.activateEmailOtpEd25519CustodyCapabilityInternal({commitQueue:`acquire`,walletSession:e.walletSession,providerSubject:e.providerSubject,emailHashHex:e.emailHashHex,signerSlot:e.signerSlot,expectedOperationalPublicKey:e.expectedOperationalPublicKey,expectedThresholdSessionId:e.expectedThresholdSessionId,bootstrap:e.bootstrap,activeClientHandle:t.activeClientHandle,metadata:t.metadata});return await XL({walletId:e.walletSession.walletId,emailHashHex:e.emailHashHex,providerSubject:e.providerSubject,bootstrap:e.bootstrap}),n}catch(n){try{await yP({worker:this.signerWorkerManager.getContext(),target:{kind:`ed25519_yao`,thresholdSessionId:e.bootstrap.session.thresholdSessionId,materialActivation:t.metadata.materialActivation}})}catch{}try{await Xv({workerContext:this.signerWorkerManager.getContext(),activeClientHandle:t.activeClientHandle})}catch{}throw n}}async activateEmailOtpEd25519CustodyCapabilityInternal(e){return await this.activateEmailOtpEd25519CustodyCapabilityWithExactCredential({...e,credentialExpectation:{kind:`resolve_exact_operation_credential`}})}async activateEmailOtpEd25519CustodyCapabilityWithExactCredential(e){let t=await XL({walletId:e.walletSession.walletId,emailHashHex:e.emailHashHex,providerSubject:e.providerSubject,bootstrap:e.bootstrap,...e.authority?{verifiedAuthority:e.authority}:{},...e.exactAuthorization?{exactAuthorization:e.exactAuthorization}:{}});if(e.credentialExpectation.kind===`expect_exact_operation_credential`&&(e.credentialExpectation.operationCredential.walletSessionId!==t.operationCredential.walletSessionId||e.credentialExpectation.operationCredential.token!==t.operationCredential.token))throw Error(`[SigningEngine][near] expected Email OTP operation credential changed`);return await of({queueByKey:this.thresholdEd25519CommitQueueByKey,queueKey:wd({materialActivation:e.metadata.materialActivation}),nearAccountId:kr(e.bootstrap.session.nearAccountId),enabled:e.commitQueue===`acquire`,task:async()=>{let n=await KN({walletSession:e.walletSession,nearAccountId:e.bootstrap.session.nearAccountId,providerSubject:e.providerSubject,relayerUrl:this.seamsWebConfigs.network.relayer?.url||``,authority:t.authority,signerSlot:e.signerSlot,expectedOperationalPublicKey:e.expectedOperationalPublicKey,expectedThresholdSessionId:e.expectedThresholdSessionId,bootstrap:e.bootstrap,operationCredential:t.operationCredential,activeClientHandle:e.activeClientHandle,metadata:e.metadata,workerContext:this.signerWorkerManager.getContext(),activateCapability:this.enginePorts.ed25519YaoActiveClients.activate.bind(this.enginePorts.ed25519YaoActiveClients)}),r=n.walletSessionState;if(await this.upsertEd25519YaoPublicCapabilityLaneReference(iR({walletSessionState:r,materialActivation:n.material.activeClient.metadata().materialActivation})),!this.enginePorts.ed25519YaoActiveClients.resolve({walletId:r.signingLane.identity.signer.account.wallet.walletId,nearAccountId:r.signingLane.identity.signer.account.nearAccountId,materialActivation:n.material.activeClient.metadata().materialActivation}))throw Error(`[SigningEngine][near] wallet custody activation was superseded`);return r.signingLane.identity.signer}})}async loginWithEmailOtpWalletCustodyEd25519Internal(e){if(e.authoritySelector.kind!==`wallet_auth_method`)throw Error(`Email OTP Ed25519 unlock requires an exact wallet auth method`);let t=e.authoritySelector.walletAuthMethodId,n=e.ed25519Selection,r=await or({walletSession:e.walletSession,authoritySelector:e.authoritySelector,relayUrl:this.seamsWebConfigs.network.relayer?.url||``,groupId:Ge,verification:{kind:`otp`,challengeId:e.challengeId,otpCode:e.otpCode},routePlan:cn({freshRouteFamily:`login`,operation:Hr}),workerCtx:this.signerWorkerManager.getContext(),providerSubject:e.providerSubjectId,signerSlot:n.signerSlot,remainingUses:e.remainingUses,orgId:n.runtimePolicyScope.orgId,nearAccountId:n.nearAccountId,expectedOperationalPublicKey:n.operationalPublicKey,expectedThresholdSessionId:n.thresholdSessionId,walletCustodyEd25519Material:await this.loadEmailOtpWalletCustodyEd25519Material({nearAccountId:n.nearAccountId,signerSlot:n.signerSlot})});if(r.kind===`wallet_custody_cache_absent`)throw Error(`Email OTP wallet custody material is unavailable; recover with a recovery code`);try{await ak({walletId:String(e.walletSession.walletId),walletAuthMethodId:t,projection:r.recovery.verifiedAuthorityProjection});let i=await ok({walletId:String(e.walletSession.walletId),walletAuthMethodId:t,providerSubject:e.providerSubjectId,emailHashHex:e.emailHashHex,projection:r.recovery.verifiedAuthorityProjection});r.walletCustodyEd25519Material&&await this.persistWalletCustodyEd25519Material(r.walletCustodyEd25519Material),await q.replaceExactActive({active:r.walletSessionAuthorization.record,operationCredential:r.walletSessionAuthorization.operationCredential});let a=await this.activateEmailOtpEd25519CustodyCapabilityInternal({commitQueue:`acquire`,walletSession:e.walletSession,providerSubject:e.providerSubjectId,emailHashHex:e.emailHashHex,signerSlot:n.signerSlot,expectedOperationalPublicKey:n.operationalPublicKey,expectedThresholdSessionId:n.thresholdSessionId,bootstrap:r.ed25519YaoCapability,activeClientHandle:r.activeClientHandle,metadata:r.metadata,authority:i,exactAuthorization:r.walletSessionAuthorization});return await mr(this.walletCustodyCeremonyTransportV1(),{existingEnvelope:r.ed25519ExportRootCustody.existingEnvelope,existingFactorSecret:r.ed25519ExportRootCustody.factorSecret32,walletId:String(e.walletSession.walletId),walletAuthMethodId:String(r.walletSessionAuthorization.record.authMethodId),walletSessionId:String(r.walletSessionAuthorization.operationCredential.walletSessionId),expiresAtMs:r.walletSessionAuthorization.record.expiresAtMs}),a}catch(e){throw await Xv({workerContext:this.signerWorkerManager.getContext(),activeClientHandle:r.activeClientHandle}).catch(()=>void 0),e}finally{r.ed25519ExportRootCustody.factorSecret32.fill(0)}}async prepareEmailOtpRegistrationEnrollmentMaterialInternal(e){return await Ok(this.emailOtpPublicDeps,e)}async getWarmThresholdEd25519SessionStatus(e){let t=z(e.walletId),n=await an({walletId:t,nearAccountId:kr(e.nearAccountId),nearEd25519SigningKeyId:qo(e.nearEd25519SigningKeyId)});if(n.kind===`missing`)return null;if(n.kind!==`resolved`)throw Error(`[WarmSessionStore] Ed25519 sealed runtime is ${n.kind}`);let r=await this.readExactNearEd25519WalletSessionAuthorization(t);return await cF(this.warmCapabilitiesPublicDeps,{runtime:n.runtime,authorization:r.kind===`found`?r.authorization:null,nowMs:Date.now()})}async scheduleRouterAbEcdsaDerivationLoginPresignaturePrefill(e,t){let n=await this.listPreprocessingCapabilities({walletId:e.walletId,chainTargets:[e.chainTarget]},t),r=n.length===1?n[0]:null;return r?await lF(this.warmCapabilitiesPublicDeps,{capability:r,waitForPoolReady:e.waitForPoolReady}):{status:`skipped`,reason:`exact_wallet_session_unavailable`,walletSessionId:null}}async clearVolatileWarmSigningMaterial(e){let t=this.clearVolatileWarmSigningMaterialInternal(e);this.volatileWarmSigningMaterialCleanupInFlight=t;try{await t}finally{this.volatileWarmSigningMaterialCleanupInFlight===t&&(this.volatileWarmSigningMaterialCleanupInFlight=null)}}async clearVolatileWarmSigningMaterialInternal(e){try{e?this.enginePorts.ed25519YaoActiveClients.disposeWallet(e):this.enginePorts.ed25519YaoActiveClients.dispose()}finally{try{await dF(this.warmCapabilitiesPublicDeps,e)}finally{try{e===void 0?await this.clearLinkedEcdsaHolderMaterials():await this.clearLinkedEcdsaHolderMaterialsForWallet(e)}finally{await this.signerWorkerManager.clearEcdsaClientWorkerState(e===void 0?{kind:`all`}:{kind:`wallet`,walletId:e})}}}}onSdkLifecycleEvent(e){return this.sdkLifecycleEventListeners.add(e),this.removeSdkLifecycleEventListener.bind(this,e)}publishSdkLifecycleEvent(e){let t=HR(e);if(!this.deliveredSdkLifecycleEventKeys.has(t)){this.deliveredSdkLifecycleEventKeys.add(t);for(let t of Array.from(this.sdkLifecycleEventListeners))t(e)}}publishNearProvisioningLifecycleEvent(e,t){this.publishSdkLifecycleEvent(vs({walletId:e,state:t}))}removeSdkLifecycleEventListener(e){this.sdkLifecycleEventListeners.delete(e)}dispose(){this.signingSessionLifecycleSubscription.unsubscribe(),this.nearProvisioningUnsubscribe(),this.sdkLifecycleEventListeners.clear(),this.deliveredSdkLifecycleEventKeys.clear(),this.ed25519YaoPageLifecycleOwner.dispose()}clearThresholdEcdsaSigningQueue(){Ed(this.thresholdEcdsaSigningQueueByKey)}async clearLinkedEcdsaHolderMaterials(){await Mu({workerCtx:this.signerWorkerManager.getContext()}),ud()}async clearLinkedEcdsaHolderMaterialsForWallet(e){let t=vd(e),n;for(let e of t)try{await bu({holderHandleIds:[e.holderHandleId],workerCtx:this.signerWorkerManager.getContext()}),dd(e)}catch(e){n??=e}if(n!==void 0)throw n}};function JR(e){return Array.isArray(e)?e.filter(e=>[`ble`,`hybrid`,`internal`,`nfc`,`smart-card`,`usb`].includes(String(e))):[]}function YR(e){let t=new Set;for(let n of e.authMethods)n.kind===`passkey`&&n.status===`active`&&n.walletId===e.walletId&&t.add(n.credentialIdB64u);let n=[];for(let r of e.authenticators){let i=String(r.credentialId||``).trim();!i||i===e.excludeCredentialIdB64u||!t.has(i)||n.push({id:i,type:`public-key`,transports:JR(r.transports)})}return n}async function XR(e){let[t,n]=await Promise.all([K.listProfileAuthenticators(String(e.walletId)),K.listWalletAuthMethodsV2ForWallet(String(e.walletId))]);return YR({walletId:e.walletId,authenticators:t,authMethods:n,excludeCredentialIdB64u:e.excludeCredentialIdB64u})}async function ZR(e){let t=await e.context.signingEngine.getAuthenticationCredentialsSerialized({subjectId:String(e.walletId),challengeB64u:e.operationFingerprintDigest,allowCredentials:e.allowCredentials,includeSecondPrfOutput:!1}),n=ar(t);if(!n||!e.allowCredentials.some(e=>e.id===n))throw Error(`registration.removeAuthMethod used a credential outside the wallet`);return{kind:`webauthn_assertion`,rpId:e.rpId,credential:dc(t),expectedChallengeDigestB64u:e.operationFingerprintDigest}}async function QR(e){let[t,...n]=(await K.listWalletAuthMethodsForWallet(String(e.walletId))).filter(t=>t.kind===`email_otp`&&t.status===`active`&&String(t.walletId)===String(e.walletId)&&String(t.authority.bindingId)!==String(e.targetWalletAuthMethodId)&&(e.source.kind===`surviving_method`||String(t.authority.bindingId)===String(e.source.walletAuthMethodId)));if(!t||n.length>0||t.kind!==`email_otp`)throw Error(`registration.removeAuthMethod needs exactly one other active method to authorize with`);let r=String(t.authority.bindingId),i=async()=>await _r({relayUrl:e.relayerUrl,walletId:String(e.walletId),walletAuthMethodId:r,operation:Wr,operationFingerprintDigest:St(e.operationFingerprintDigest)}),a=await i(),o=await e.context.signingEngine.requestEmailOtpEnrollmentConfirmation({walletId:String(e.walletId),emailAddress:String(a.emailHint||``),challengeId:a.challengeId,...a.emailHint?{emailHint:a.emailHint}:{},onResend:async()=>{let e=await i();return e.emailHint?{challengeId:e.challengeId,emailHint:e.emailHint}:{challengeId:e.challengeId}}});return{kind:`email_otp`,challengeId:o.challengeId,otpCode:o.otpCode,ownerProofBindingDigest:a.ownerProofBindingDigest}}async function $R(e,t,n){let r=String(e.configs.network.relayer.url||``).trim();if(!r)throw Error(`registration.removeAuthMethod requires relayer.url`);let a=i(String(e.signingEngine.getRpId()||``).trim());if(!a.ok)throw Error(`registration.removeAuthMethod ${a.error.message}`);let o=Date.now(),s=await Ho({walletId:n.walletId,targetWalletAuthMethodId:n.walletAuthMethodId,requestedAtMs:o}),c=await K.getWalletAuthMethodV2(n.walletAuthMethodId),l=c&&c.kind===`passkey`?String(c.credentialIdB64u):null,u=await XR({walletId:n.walletId,excludeCredentialIdB64u:l});if(t.kind===`selected_method`){let e=await K.getWalletAuthMethodV2(t.walletAuthMethodId);if(!e||e.status!==`active`||e.walletId!==n.walletId||e.walletAuthMethodId===n.walletAuthMethodId)throw Error(`Removal requires a different active method on this wallet`);if(u=e.kind===`passkey`?u.filter(t=>t.id===e.credentialIdB64u):[],e.kind===`passkey`&&u.length===0)throw Error(`Selected passkey is unavailable for removal authorization`)}let d;d=u.length>0?V.passkey:V.emailOtp;let f;switch(d){case V.passkey:f=await ZR({context:e,walletId:n.walletId,rpId:a.value,operationFingerprintDigest:String(s),allowCredentials:u});break;case V.emailOtp:f=await QR({context:e,relayerUrl:r,walletId:n.walletId,targetWalletAuthMethodId:n.walletAuthMethodId,source:t,operationFingerprintDigest:String(s)});break;default:throw Error(`registration.removeAuthMethod encountered an unsupported source method`)}return{relayerUrl:r,requestedAtMs:o,sourceProof:f}}async function ez(e){let{relayerUrl:t,requestedAtMs:n,sourceProof:r}=await $R(e.context,{kind:`surviving_method`},{walletId:e.walletId,walletAuthMethodId:e.walletAuthMethodId}),i=await pc({relayerUrl:t,walletId:e.walletId,walletAuthMethodId:e.walletAuthMethodId,requestedAtMs:n,sourceProof:r});if(!i.ok||i.authMethod.status!==`revoked`)throw Error(`registration.removeAuthMethod did not revoke the method`);let a=await K.getWalletAuthMethodV2(e.walletAuthMethodId);if(a&&a.status!==`revoked`){let e=Date.now(),t=a.status===`active`?a.activatedAtMs:e,n=Uo({...a,status:`revoked`,activatedAtMs:t,revokedAtMs:e,updatedAtMs:e});n&&await K.upsertWalletAuthMethodV2(n)}return{ok:!0,walletId:e.walletId,walletAuthMethodId:e.walletAuthMethodId,authMethod:i.authMethod}}async function tz(e){let t=Go(String(e.walletId||``).trim()),n=c(String(e.walletAuthMethodId||``).trim());if(!n.ok)throw Error(`registration.removeAuthMethod requires a wallet auth method id`);try{return await ez({context:e.context,walletId:t,walletAuthMethodId:n.value})}catch(e){throw I(e)}}const nz=`/wallet/device-linking/v1/sessions`,rz=4e3,iz=[`ok`,`outcome`,`session`],az=[`ok`,`outcome`,`session`,`targetCredential`],oz=[`ok`,`code`,`message`],sz=[`ok`,`outcome`,`code`,`message`],cz=[`ok`,`outcome`,`expectedRevision`,`actualRevision`,`session`],lz=[`ok`,`outcome`,`session`],uz=[`ok`,`outcome`,`state`,`session`],dz=[`ok`,`outcome`,`reason`,`session`];function fz(e,t){let n=Math.min(e,rz),r=Math.min(Math.max(t,0),5),i=Math.min(rz,n*2**r),a=Math.max(1,Math.min(n,i/4)),o=Math.floor(Math.random()*a);return Math.min(rz,i+o)}async function pz(e){let t=e.options.nowMs()+6e4,n=0;for(;e.options.nowMs()<t;){let t=await xz({options:e.options,baseUrl:e.baseUrl,method:`GET`,canonicalPath:Pz(e.linkSessionId,`approval`),linkSessionId:e.linkSessionId});if(t.status!==204)return Si(t.body);let r=fz(e.options.pollIntervalMs,n);await new Promise(e=>setTimeout(e,r)),n+=1}throw Error(`committed authority packages were not ready before the activation deadline`)}function mz(e){let t=Mz(e.relayerUrl);if(!Number.isSafeInteger(e.pollIntervalMs)||e.pollIntervalMs<=0)throw Error(`linked-device session poll interval must be a positive integer`);return{...gz(e),...hz(e),createUnclaimedSessionV1:async n=>{await bz({options:e,baseUrl:t,method:`POST`,canonicalPath:nz,linkSessionId:n.payload.linkSessionId,body:{kind:`linked_device_session_create_request_v1`,payload:n.payload}})},getSessionV1:async({linkSessionId:n})=>await yz({options:e,baseUrl:t,linkSessionId:n}),getApprovalV1:async({linkSessionId:n})=>gi((await xz({options:e,baseUrl:t,method:`GET`,canonicalPath:Pz(n,`approval`),linkSessionId:n})).body).approval,getTargetPreparationV1:async({linkSessionId:n,deliveryRecipientPublicKey65B64u:r})=>{let i=Oi({kind:`linked_device_target_preparation_request_v1`,linkSessionId:n,deliveryRecipientPublicKey65B64u:r});return bi((await xz({options:e,baseUrl:t,method:`POST`,canonicalPath:Pz(n,`target-preparation`),linkSessionId:n,body:i})).body)},startTargetEmailOtpChallengeV1:async({request:n})=>{let r=vi(n);return ii((await xz({options:e,baseUrl:t,method:`POST`,canonicalPath:Pz(r.linkSessionId,`email-otp/challenge`),linkSessionId:r.linkSessionId,body:r})).body)},resendTargetEmailOtpChallengeV1:async({request:n})=>{let r=Fi(n);return ii((await xz({options:e,baseUrl:t,method:`POST`,canonicalPath:Pz(r.linkSessionId,`email-otp/challenge/resend`),linkSessionId:r.linkSessionId,body:r})).body)},verifyTargetEmailOtpChallengeV1:async({request:n})=>{let r=_i(n);return Jr((await xz({options:e,baseUrl:t,method:`POST`,canonicalPath:Pz(r.linkSessionId,`email-otp/challenge/verify`),linkSessionId:r.linkSessionId,body:r})).body)},registerTargetCredentialV1:async({registration:n})=>Tz((await xz({options:e,baseUrl:t,method:`POST`,canonicalPath:Pz(n.linkSessionId,`credential`),linkSessionId:n.linkSessionId,body:n})).body),registerEd25519ExportRootRecipientV1:async({recipient:n})=>{let r=vz(n.linkSessionId);await xz({options:e,baseUrl:t,method:`POST`,canonicalPath:Pz(r,`ed25519-export-root-recipient`),linkSessionId:r,body:n})},getEd25519ExportRootPackageV1:async({linkSessionId:n})=>{let r=await xz({options:e,baseUrl:t,method:`GET`,canonicalPath:Pz(n,`ed25519-export-root`),linkSessionId:n});return r.status===204?null:Ti(r.body)},retryCommittedDeliveryV1:async({request:n})=>{await bz({options:e,baseUrl:t,method:`POST`,canonicalPath:Pz(n.linkSessionId,`retry`),linkSessionId:n.linkSessionId,body:n})},cancelSessionV1:async({request:n})=>{await bz({options:e,baseUrl:t,method:`POST`,canonicalPath:Pz(n.linkSessionId,`cancel`),linkSessionId:n.linkSessionId,body:n})},subscribeSessionV1:async({linkSessionId:n,onEvent:r})=>await Cz({options:e,baseUrl:t,linkSessionId:n,onEvent:r})}}function hz(e){let t=Mz(e.relayerUrl);return{acknowledgeLocalAuthorityActivationWithWalletSessionV1:async({acknowledgement:n,operationCredential:r})=>{let i=pi(n),a=st(r);if(a.walletSessionId!==i.walletSessionId)throw Error(`linked-device acknowledgement credential does not match Wallet Session`);await Sz({options:e,baseUrl:t,linkSessionId:i.linkSessionId,token:a.token,body:i})}}}function gz(e){let t=Mz(e.relayerUrl);return{receiveCommittedAuthorityPackagesV1:async({linkSessionId:n})=>await pz({options:e,baseUrl:t,linkSessionId:n}),activateInstalledAuthorityV1:async({linkSessionId:n,receipt:r})=>{let i=$r(r);return Hi((await xz({options:e,baseUrl:t,method:`POST`,canonicalPath:Pz(n,`receipt`),linkSessionId:n,body:i})).body)},acknowledgeLocalAuthorityActivationV1:async({acknowledgement:n})=>{let r=pi(n);await xz({options:e,baseUrl:t,method:`POST`,canonicalPath:Pz(n.linkSessionId,`receipt`),linkSessionId:n.linkSessionId,body:r})}}}function _z(e){return{...e.owner,createAuthenticatedSessionTransportV1:({keyMaterial:t,devicePublicKeyB64u:n})=>mz({http:e.http,relayerUrl:e.relayerUrl,publishableKey:e.publishableKey,projectEnvironmentId:e.projectEnvironmentId,keyMaterial:e.keyMaterial,keyMaterialHandle:t,devicePublicKeyB64u:n,nowMs:e.nowMs,pollIntervalMs:e.pollIntervalMs})}}function vz(e){let t=g(e);if(!t.ok)throw Error(t.error.message);return t.value}async function yz(e){return wz((await xz({options:e.options,baseUrl:e.baseUrl,method:`GET`,canonicalPath:Nz(e.linkSessionId),linkSessionId:e.linkSessionId})).body).session}async function bz(e){return wz((await xz(e)).body)}async function xz(e){let t=e.options.publishableKey.trim(),n=e.options.projectEnvironmentId.trim();if(!t||!n)throw Error(`linked-device Passkey ceremony requires registration API credentials`);let r=await xt(jz(e.body)),i=e.options.nowMs();if(!Number.isSafeInteger(i)||i<=0)throw Error(`linked-device request clock is invalid`);let a=i+Wi,o=Ne(32,`linked-device request proof nonce`),s=await xi(e.options.devicePublicKeyB64u),c=await e.options.keyMaterial.signDeviceSessionRequestV1({handle:e.options.keyMaterialHandle,linkSessionId:e.linkSessionId,method:e.method,canonicalPath:e.canonicalPath,bodyDigestB64u:r,devicePublicKeyDigestB64u:s,challengeB64u:o,issuedAtMs:i,expiresAtMs:a}),l={kind:`linked_device_request_proof_v1`,linkSessionId:e.linkSessionId,devicePublicKeyDigestB64u:s,requestNonceB64u:o,method:e.method,canonicalPath:e.canonicalPath,bodyDigestB64u:r,issuedAtMs:i,expiresAtMs:a,signatureB64u:c.signatureB64u},u=P(new TextEncoder().encode(JSON.stringify(l))),d=await e.options.http.request({method:e.method,url:`${e.baseUrl}${e.canonicalPath}`,headers:{Accept:`application/json`,Authorization:`Bearer ${t}`,"Content-Type":`application/json`,"X-Seams-Environment-Id":n,[Vi]:u},...e.body===void 0?{}:{body:e.body}});if(!d.ok)throw Error(`linked-device request failed: ${d.message}`);if(d.value.status<200||d.value.status>=300)throw Error(Dz(d.value));return d.value}async function Sz(e){let t=e.token.trim(),n=e.options.projectEnvironmentId.trim();if(!t||!n)throw Error(`linked-device Wallet Session acknowledgement requires session credentials`);let r=await e.options.http.request({method:`POST`,url:`${e.baseUrl}${Pz(e.linkSessionId,`receipt`)}`,headers:{Accept:`application/json`,Authorization:`Bearer ${t}`,"Content-Type":`application/json`,"X-Seams-Environment-Id":n},body:e.body});if(!r.ok)throw Error(`linked-device request failed: ${r.message}`);if(r.value.status<200||r.value.status>=300)throw Error(Dz(r.value))}async function Cz(e){let t=!1,n,r=null,i=!0,a=0,o=null,s=async()=>{if(!t)try{let t=await yz({...e});r===null||t.revision!==r?(r=t.revision,a=0,e.onEvent(mi({kind:`linked_device_session_event_v1`,linkSessionId:t.linkSessionId,state:t.state,emittedAtMs:t.updatedAtMs}))):a+=1}catch(e){if(i)throw t=!0,e;a+=1}finally{i=!1,t||(n=setTimeout(()=>{o=s()},fz(e.options.pollIntervalMs,Math.max(0,a-1))))}};return await(o=s()),{close:async()=>{t=!0,n!==void 0&&clearTimeout(n),await o?.catch(()=>void 0)}}}function wz(e){let t=Oz(e);if(t===null)throw Error(`linked-device response must be an object`);if(!Az(t,iz))throw Error(`linked-device response contains invalid fields`);if(t.ok!==!0)throw Error(`linked-device response outcome is invalid`);switch(t.outcome){case`applied`:return{ok:!0,outcome:`applied`,session:ni(t.session)};case`replayed`:return{ok:!0,outcome:`replayed`,session:ni(t.session)};default:throw Error(`linked-device response outcome is invalid`)}}function Tz(e){let t=Oz(e);if(t===null)throw Error(`linked-device target credential response must be an object`);if(!Az(t,az))throw Error(`linked-device target credential response contains invalid fields`);if(t.ok!==!0)throw Error(`linked-device target credential response outcome is invalid`);switch(t.outcome){case`applied`:return Ez(t,`applied`);case`replayed`:return Ez(t,`replayed`);default:throw Error(`linked-device target credential response outcome is invalid`)}}function Ez(e,t){let n=ni(e.session),r=Li(e.targetCredential);if(r.outcome!==t)throw Error(`linked-device target credential response outcome does not match its result`);if(r.linkSessionId!==n.linkSessionId)throw Error(`linked-device target credential response session identity differs`);return r}function Dz(e){let t=Oz(e.body);if(t===null||t.ok!==!1)return`linked-device request failed with HTTP ${e.status}`;if(Az(t,oz)&&typeof t.code==`string`&&typeof t.message==`string`&&t.message.trim()||Az(t,sz)&&typeof t.outcome==`string`&&typeof t.code==`string`&&typeof t.message==`string`&&t.message.trim())return`linked-device request failed: ${t.message}`;switch(t.outcome){case`conflict`:if(Az(t,cz))return`linked-device request failed: conflict`;break;case`expired`:if(Az(t,lz))return`linked-device request failed: expired`;break;case`invalid_state`:if(Az(t,uz))return`linked-device request failed: invalid_state`;break;case`integrity_error`:if(Az(t,dz))return`linked-device request failed: integrity_error`;break;default:break}return`linked-device request failed with HTTP ${e.status}`}function Oz(e){return kz(e)?e:null}function kz(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;try{let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}catch{return!1}}function Az(e,t){try{return J(e,t)}catch{return!1}}function jz(e){if(e===void 0)return new Uint8Array;let t=JSON.stringify(e);if(typeof t!=`string`)throw Error(`linked-device request body is not JSON serializable`);return new TextEncoder().encode(t)}function Mz(e){let t=e.trim().replace(/\/+$/,``);if(!t)throw Error(`linked-device relayer URL is required`);return t}function Nz(e){return`${nz}/${String(e)}`}function Pz(e,t){return`${Nz(e)}/${t}`}function Fz(e){return e?String(e.linkSessionId):`link-device-scan`}function Iz(e){return new X(e,Z.INVALID_QR_DATA,`authorization`)}function Lz(e,t){try{e?.(t)}catch{}}function Rz(e,t,n){e?.(_s({flowId:Fz(t),...n,data:{role:`scanner`,...n.data??{}}}))}function zz(e,t){if(e.walletSessionId!==t.walletSessionId||e.authorizationId!==t.authorizationId)throw Error(`wallet-session authorization source changed during linking`)}function Bz(e){if(e instanceof X)return e;let t=L(e)||`Device linking failed`;return/expired|expiry/i.test(t)?new X(t,Z.SESSION_EXPIRED,`authorization`):new X(t,Z.REGISTRATION_FAILED,`registration`)}function Vz(e){let t;try{t=Ni(e)}catch(e){throw Iz(L(e)||`Invalid linked-device QR payload`)}let n=Date.now();if(t.issuedAtMs>n+6e4)throw Iz(`QR payload was issued in the future`);if(t.expiresAtMs<=n)throw new X(`QR code expired`,Z.SESSION_EXPIRED,`authorization`);return t}async function Hz(e,t,n,r,i){let a=null,o=null;Rz(n.onEvent,a,{phase:Cs.STEP_02_QR_SCAN_STARTED,status:`started`,message:`Scanning QR code`,interaction:{kind:`qr_scan`,overlay:`hide`}});try{a=Vz(t);let e=await r.ownerAuthorization.authenticateOwnerForLinkingV1({payload:a,requestedAtMs:Date.now()});zz(e.ownerAuthorization,e.authentication.source);let s=await r.transport.claimSessionV1({request:di(a),authentication:e.authentication});if(s.linkSessionId!==a.linkSessionId||s.devicePublicKeyB64u!==a.devicePublicKeyB64u||s.walletId!==e.walletId)throw Error(`linked-device claim does not match the scanned QR payload`);o={linkSessionId:s.linkSessionId,expectedRevision:s.sessionRevision,authentication:e.authentication},i?.(o);let c=await Wz({targetFactor:a.targetFactor,targetEmail:a.targetFactor.kind===`email_otp`?a.targetEmail:void 0,linkSessionId:s.linkSessionId,sessionRevision:s.sessionRevision,transport:r.transport,authentication:e.authentication,onEmailOtpBaseFactorRequired:n.onEmailOtpBaseFactorRequired}),l=ei({linkSessionId:s.linkSessionId,walletId:s.walletId,enrollmentId:s.enrollmentId,deviceId:s.deviceId,linkPublicKeyB64u:a.linkPublicKeyB64u,devicePublicKeyB64u:s.devicePublicKeyB64u,targetFactor:c,permission:a.requestedPermission,ownerAuthorization:e.ownerAuthorization,approvedAtMs:Date.now(),expiresAtMs:Math.min(e.expiresAtMs,s.claimExpiresAtMs)});Yz(await r.transport.recordOwnerApprovalV1({approval:l,authentication:e.authentication})),o=null,await tB({transport:r.transport,linkSessionId:s.linkSessionId,walletId:s.walletId,enrollmentId:s.enrollmentId,deviceId:s.deviceId,expiresAtMs:Math.min(e.expiresAtMs,s.claimExpiresAtMs),exportRootRequirement:e.exportRootRequirement,ed25519ExportRootCapability:e.exportRootRequirement===`required`?e.ed25519ExportRootCapability:void 0,ed25519ExportRoot:r.ed25519ExportRoot,authentication:e.authentication}),await Xz({transport:r.transport,sourceContribution:r.sourceContribution,ed25519ExportRootCapability:e.exportRootRequirement===`required`?e.ed25519ExportRootCapability:void 0,initialApproval:l,authentication:e.authentication,expiresAtMs:Math.min(e.expiresAtMs,s.claimExpiresAtMs)});let u={success:!0,kind:`approval_recorded`,walletId:s.walletId,enrollmentId:s.enrollmentId,deviceId:s.deviceId};return Rz(n.onEvent,a,{phase:Cs.STEP_02_QR_SCAN_STARTED,status:`succeeded`,message:`Device-link approval recorded`,walletId:String(s.walletId),data:{enrollmentId:String(s.enrollmentId)},interaction:{kind:`qr_scan`,overlay:`hide`}}),await n.afterCall?.(!0,u),u}catch(e){o&&(await Uz(r.transport,o),i?.(null));let t=Bz(e);throw Rz(n.onEvent,a,{phase:Cs.FAILED,status:`failed`,message:t.message,interaction:{kind:`qr_scan`,overlay:`hide`},error:{code:t.code,message:t.message,retryable:t.code!==Z.SESSION_EXPIRED}}),Lz(n.onError,t),await n.afterCall?.(!1,void 0,t),t}}async function Uz(e,t){t&&await e.cancelClaimedSessionV1(t).catch(()=>void 0)}async function Wz(e){if(e.targetFactor.kind===`passkey_prf`)return{kind:`passkey_prf`};let t=qz(e.targetEmail),n=await e.transport.resolveEmailOtpBaseFactorV1({linkSessionId:e.linkSessionId,request:{kind:`resolve`,expectedRevision:e.sessionRevision},authentication:e.authentication});switch(Kz(n,e.sessionRevision),n.resolution.kind){case`selected`:return{kind:`email_otp`,targetEmail:t,enrollment:{kind:`existing_enrollment`},baseWalletAuthMethodId:n.resolution.choice.baseWalletAuthMethodId};case`selection_required`:return await Gz(e,n.resolution.choices);case`unavailable`:return{kind:`email_otp`,targetEmail:t,enrollment:{kind:`new_enrollment`}}}}async function Gz(e,t){if(!e.onEmailOtpBaseFactorRequired)throw Error(`Choose the Email OTP method to use for the linked device`);let n=await e.onEmailOtpBaseFactorRequired(t);if(!Jz(t,n))throw Error(`The selected Email OTP method is unavailable for this linked device`);let r=await e.transport.resolveEmailOtpBaseFactorV1({linkSessionId:e.linkSessionId,request:{kind:`select`,expectedRevision:e.sessionRevision,baseWalletAuthMethodId:n},authentication:e.authentication});if(Kz(r,e.sessionRevision),r.resolution.kind!==`selected`||r.resolution.choice.baseWalletAuthMethodId!==n)throw Error(`The selected Email OTP method is unavailable for this linked device`);return{kind:`email_otp`,targetEmail:qz(e.targetEmail),enrollment:{kind:`existing_enrollment`},baseWalletAuthMethodId:n}}function Kz(e,t){if(e.revision!==t)throw e.resolution.kind===`unavailable`?Error(`linked-device Email OTP target-factor resolution failed: ${e.resolution.reason}`):Error(`linked-device Email OTP target-factor resolution changed the session`)}function qz(e){if(!e)throw Error(`Email OTP linked-device QR omitted its target email`);return e}function Jz(e,t){for(let n of e)if(n.baseWalletAuthMethodId===t)return!0;return!1}function Yz(e){switch(e.outcome){case`pending`:return;case`replayed`:if(e.replay.state===`pending`)return;throw Error(`linked-device approval replay returned an unsupported session state`);default:{let t=e;throw Error(`unsupported linked-device approval result: ${String(t)}`)}}}async function Xz(e){let t=null,n=0;for(;Date.now()<e.expiresAtMs&&(t=await e.transport.getSourceContributionPreparationV1({linkSessionId:e.initialApproval.linkSessionId,authentication:e.authentication}),!t);)await iB(n),n+=1;if(!t)throw new X(`Device-link approval expired before target source preparation was published`,Z.SESSION_EXPIRED,`registration`);let r=await Qz({preparation:t,ports:e.sourceContribution,ed25519ExportRootCapability:e.ed25519ExportRootCapability,authentication:e.authentication}),i=Zz(e.initialApproval,r);eB(await e.transport.recordSourceContributionV1({approval:i,authentication:e.authentication}))}function Zz(e,t){return e.targetFactor.kind,ei({linkSessionId:e.linkSessionId,walletId:e.walletId,enrollmentId:e.enrollmentId,deviceId:e.deviceId,linkPublicKeyB64u:e.linkPublicKeyB64u,devicePublicKeyB64u:e.devicePublicKeyB64u,targetFactor:e.targetFactor,permission:e.permission,ownerAuthorization:e.ownerAuthorization,approvedAtMs:e.approvedAtMs,expiresAtMs:e.expiresAtMs,sourceContribution:t})}async function Qz(e){let t=e.preparation[0];if(!t)throw Error(`source contribution preparation is empty`);if($z(t)){if(!e.ed25519ExportRootCapability)throw Error(`Ed25519 export-root capability is required for source contribution`);let n=await e.ports.ed25519.produceSourceContributionV1({preparation:t,capability:e.ed25519ExportRootCapability,authentication:e.authentication}),r=e.preparation[1];if(!r)return[n];if($z(r))throw Error(`source contribution preparation repeats Ed25519`);return[n,await e.ports.ecdsa.produceSourceContributionV1({preparation:r})]}if(e.preparation.length!==1)throw Error(`ECDSA source contribution preparation is out of order`);return[await e.ports.ecdsa.produceSourceContributionV1({preparation:t})]}function $z(e){return`kind`in e}function eB(e){if(e.state.state!==`authority_pending_local_install`&&e.state.state!==`active`)throw Error(`source contribution acknowledgement did not commit the linked device`)}async function tB(e){if(e.exportRootRequirement===`not_required`)return;if(!e.ed25519ExportRootCapability)throw Error(`Ed25519 export-root capability is required for this authority`);let t=null,n=0;for(;Date.now()<e.expiresAtMs;){if(!t){let n=await e.transport.getEd25519ExportRootRecipientV1({linkSessionId:e.linkSessionId,authentication:e.authentication});if(n){if(String(n.linkSessionId)!==String(e.linkSessionId)||String(n.walletId)!==String(e.walletId)||String(n.enrollmentId)!==String(e.enrollmentId)||String(n.deviceId)!==String(e.deviceId))throw Error(`Ed25519 export-root recipient differs from the approved linked-device session`);t=await e.ed25519ExportRoot.sealForLinkedDeviceV1({recipient:n,capability:e.ed25519ExportRootCapability,sealedAtMs:Date.now()})}}if(t)try{await e.transport.submitEd25519ExportRootPackageV1({submission:{kind:`linked_device_ed25519_export_root_submission_v1`,linkSessionId:e.linkSessionId,package:t},authentication:e.authentication});return}catch(e){let t=nB(e);if(t!==null&&t!==408&&t!==429&&t<500)throw e}await iB(n),n+=1}throw new X(`Device-link approval expired before the export root recipient was published`,Z.SESSION_EXPIRED,`registration`)}function nB(e){if(typeof e!=`object`||!e||Array.isArray(e))return null;let t=Reflect.get(e,`status`);return typeof t==`number`&&Number.isSafeInteger(t)?t:null}function rB(e,t){setTimeout(e,fz(250,t))}async function iB(e){await new Promise(t=>rB(t,e))}async function aB(e){let t=await e.ed25519ExportRoot.createRecipientV1({identity:e.identity,registeredAtMs:e.registeredAtMs});try{await e.transport.registerEd25519ExportRootRecipientV1({recipient:t.registration})}catch(n){throw await sB(e.ed25519ExportRoot,t),n}return t}async function oB(e){let t=e.nowMs??Date.now,n=await cB({transport:e.transport,recipient:e.recipient.registration,expiresAtMs:e.expiresAtMs,assertCurrentRun:e.assertCurrentRun,waitForPollV1:e.waitForPollV1,now:t});return await e.ed25519ExportRoot.acceptTransferV1({recipient:e.recipient,transferPackage:n,replacementEnvelope:e.replacementEnvelope,replacementFactorSecret:e.replacementFactorSecret})}async function sB(e,t){try{await e.discardRecipientV1(t)}catch{}}async function cB(e){let t=g(e.recipient.linkSessionId);if(!t.ok)throw Error(t.error.message);let n=0;for(;e.now()<e.expiresAtMs;){e.assertCurrentRun();let r=await e.transport.getEd25519ExportRootPackageV1({linkSessionId:t.value});if(r){if(!lB(r,e.recipient))throw new X(`Device-link Ed25519 export-root package is addressed to another device`,Z.REGISTRATION_FAILED,`registration`);return r}await e.waitForPollV1(n),n+=1}throw new X(`Device-link session expired before the Ed25519 export root was sealed`,Z.SESSION_EXPIRED,`registration`)}function lB(e,t){return e.linkSessionId===t.linkSessionId&&e.walletId===t.walletId&&e.walletKeyId===t.walletKeyId&&e.enrollmentId===t.enrollmentId&&e.deviceId===t.deviceId&&e.applicationBindingDigestB64u===t.applicationBindingDigestB64u&&e.registeredPublicKeyB64u===t.registeredPublicKeyB64u&&e.targetFactor.kind===t.targetFactor.kind&&e.revocationEpoch===t.revocationEpoch&&e.recipientPublicKeyB64u===t.recipientPublicKeyB64u}function uB(e){if(e.binding.kind!==`ed25519_yao_client_root_v1`)throw Error(`Ed25519 export-root replacement binding has the wrong custody kind`);if(!Number.isSafeInteger(e.createdAtMs)||e.createdAtMs<0)throw Error(`Ed25519 export-root replacement timestamp is invalid`);return{envelopeId:e.envelopeId,walletId:e.walletId,ownership:e.ownership,binding:e.binding,factor:e.factor,createdAtMs:e.createdAtMs}}function dB(e){return{async createRecipientV1(t){let n=hB(await e.requestOperation({kind:`walletCustodyCeremony`,request:{type:`createLinkedDeviceEd25519ExportRootRecipient`,payload:{}}}),`Ed25519 export-root recipient`);return{recipientHandleId:gB(n.recipientHandleId),registration:ji({kind:`linked_device_ed25519_export_root_recipient_v1`,linkSessionId:t.identity.linkSessionId,walletId:t.identity.walletId,walletKeyId:t.identity.walletKeyId,enrollmentId:t.identity.enrollmentId,deviceId:t.identity.deviceId,transferAlg:Bi,applicationBindingDigestB64u:t.identity.applicationBindingDigestB64u,registeredPublicKeyB64u:t.identity.registeredPublicKeyB64u,targetFactor:t.identity.targetFactor,revocationEpoch:t.identity.revocationEpoch,recipientPublicKeyB64u:Pi(n.recipientPublicKeyB64u),registeredAtMs:t.registeredAtMs})}},async sealForLinkedDeviceV1(t){let n=t.recipient;if(t.capability.walletId!==String(n.walletId))throw Error(`Ed25519 export-root capability names another wallet`);let r=Ci({linkSessionId:n.linkSessionId,walletId:n.walletId,walletKeyId:n.walletKeyId,targetFactor:n.targetFactor,enrollmentId:n.enrollmentId,deviceId:n.deviceId,revocationEpoch:n.revocationEpoch,applicationBindingDigestB64u:n.applicationBindingDigestB64u,registeredPublicKeyB64u:n.registeredPublicKeyB64u,recipientPublicKeyB64u:n.recipientPublicKeyB64u}),i=hB(await e.requestOperation({kind:`walletCustodyCeremony`,request:{type:`sealEd25519ExportRootForLinkedDevice`,payload:{capability:t.capability,transferBindingJson:Di(r)}}}),`Ed25519 export-root seal`);return{kind:`linked_device_ed25519_export_root_package_v1`,linkSessionId:n.linkSessionId,walletId:n.walletId,walletKeyId:n.walletKeyId,enrollmentId:n.enrollmentId,deviceId:n.deviceId,transferAlg:Bi,applicationBindingDigestB64u:n.applicationBindingDigestB64u,registeredPublicKeyB64u:n.registeredPublicKeyB64u,targetFactor:n.targetFactor,revocationEpoch:n.revocationEpoch,recipientPublicKeyB64u:n.recipientPublicKeyB64u,ephemeralPublicKeyB64u:Pi(i.ephemeralPublicKeyB64u,`Ed25519 export-root ephemeralPublicKeyB64u`),nonceB64u:ve(i.nonceB64u,`Ed25519 export-root nonceB64u`),sealedExportRootB64u:we(i.sealedExportRootB64u,`Ed25519 export-root sealedExportRootB64u`),bindingDigestB64u:Ee(i.bindingDigestB64u,`Ed25519 export-root bindingDigestB64u`),ciphertextDigestB64u:Ee(i.ciphertextDigestB64u,`Ed25519 export-root ciphertextDigestB64u`),sealedAtMs:t.sealedAtMs}},async acceptTransferV1(t){let n=t.recipient.registration,r=t.transferPackage;if(!fB(r,n))throw Error(`Ed25519 export-root package is addressed to another device`);let i=Ci({linkSessionId:n.linkSessionId,walletId:n.walletId,walletKeyId:n.walletKeyId,targetFactor:n.targetFactor,enrollmentId:n.enrollmentId,deviceId:n.deviceId,revocationEpoch:n.revocationEpoch,applicationBindingDigestB64u:n.applicationBindingDigestB64u,registeredPublicKeyB64u:n.registeredPublicKeyB64u,recipientPublicKeyB64u:n.recipientPublicKeyB64u}),a=t.replacementEnvelope;if(a.walletId!==n.walletId||a.binding.kind!==`ed25519_yao_client_root_v1`||a.binding.walletKeyId!==n.walletKeyId||a.binding.linkSessionId!==n.linkSessionId||a.binding.enrollmentId!==n.enrollmentId||a.binding.deviceId!==n.deviceId||a.binding.applicationBindingDigestB64u!==n.applicationBindingDigestB64u||a.binding.registeredPublicKeyB64u!==n.registeredPublicKeyB64u||a.binding.revocationEpoch!==n.revocationEpoch||!pB(n.targetFactor,a.factor))throw Error(`Ed25519 export-root replacement envelope identity is invalid`);let o=$o({walletId:a.walletId,envelopeId:a.envelopeId,factor:a.factor,envelopeRevision:me(1),binding:a.binding,ownership:a.ownership}),s=t.replacementFactorSecret.slice();try{let n=hB(await e.requestOperation({kind:`walletCustodyCeremony`,request:{type:`acceptLinkedDeviceEd25519ExportRoot`,payload:{recipientHandleId:t.recipient.recipientHandleId,transferBindingJson:Di(i),ephemeralPublicKeyB64u:String(r.ephemeralPublicKeyB64u),nonceB64u:String(r.nonceB64u),sealedExportRootB64u:String(r.sealedExportRootB64u),bindingDigestB64u:String(r.bindingDigestB64u),ciphertextDigestB64u:String(r.ciphertextDigestB64u),replacementEnvelopeBindingJson:o,replacementFactorSecret:s.buffer},transfer:[s.buffer]}}),`Ed25519 export-root acceptance`);return{envelope:Xo(ns({envelopeId:a.envelopeId,walletId:a.walletId,ownership:a.ownership,binding:a.binding,factor:a.factor,envelopeRevision:me(1),nonceB64u:ve(n.nonceB64u,`Ed25519 export-root resealed nonceB64u`),sealedCustodySecretB64u:we(n.sealedExportRootB64u,`Ed25519 export-root resealed ciphertext`),aadHashB64u:Ee(n.aadHashB64u,`Ed25519 export-root resealed aadHashB64u`),ciphertextDigestB64u:Ee(n.ciphertextDigestB64u,`Ed25519 export-root resealed ciphertextDigestB64u`),lifecycle:Qo({activatedAtMs:a.createdAtMs}),createdAtMs:a.createdAtMs,updatedAtMs:a.createdAtMs}))}}finally{s.byteLength>0&&s.fill(0)}},async discardRecipientV1(t){await e.requestOperation({kind:`walletCustodyCeremony`,request:{type:`discardLinkedDeviceEd25519ExportRootRecipient`,payload:{recipientHandleId:t.recipientHandleId}}})}}}function fB(e,t){return e.linkSessionId===t.linkSessionId&&e.walletId===t.walletId&&e.walletKeyId===t.walletKeyId&&e.enrollmentId===t.enrollmentId&&e.deviceId===t.deviceId&&e.applicationBindingDigestB64u===t.applicationBindingDigestB64u&&e.registeredPublicKeyB64u===t.registeredPublicKeyB64u&&e.targetFactor.kind===t.targetFactor.kind&&e.revocationEpoch===t.revocationEpoch&&e.recipientPublicKeyB64u===t.recipientPublicKeyB64u}function pB(e,t){switch(e.kind){case`passkey_prf`:return t.kind===`passkey`;case`email_otp`:return t.kind===`email_otp`}return mB(e)}function mB(e){throw Error(`Unsupported linked-device target factor kind: ${String(e)}`)}function hB(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} returned no result`);return e}function gB(e){if(typeof e!=`string`||!e||e.trim()!==e)throw Error(`Ed25519 export-root recipient handle is invalid`);return e}const _B=`linked_device_committed_resume_v1`,vB=`linked_device_pending_ack_v1`,yB=`device-linking/committed-resume/v1/`,bB=`device-linking/pending-ack/v1/`,xB=[`kind`,`acknowledgement`],SB=[`kind`,`linkSessionId`,`walletId`,`enrollmentId`,`authorityId`,`authMethodId`,`deviceId`,`targetFactorKind`,`targetFactorVerificationDigestB64u`,`authorityDigestB64u`,`signerActivationSetDigestB64u`,`signerActivations`,`packageSetDigestB64u`,`committedAtMs`];function CB(e){return`${yB}${String(e)}`}function wB(e){return`${bB}${String(e)}`}function TB(e){return{kind:vB,acknowledgement:pi(e)}}function EB(e){let t=jB(e);if(t===null||!J(t,xB)||t.kind!==vB)return null;try{return{kind:vB,acknowledgement:pi(t.acknowledgement)}}catch{return null}}function DB(e){let t=e.committed.authority;if(t.provenance.kind!==`device_link`)throw Error(`committed link authority provenance is invalid`);if(t.provenance.linkSessionId!==e.linkSessionId)throw Error(`committed link session identity differs from authority provenance`);if(e.committed.authMethod.walletAuthMethodId!==e.targetFactor.authMethod.walletAuthMethodId)throw Error(`committed link auth method differs from target factor`);if(!Number.isSafeInteger(e.committedAtMs)||e.committedAtMs<=0)throw Error(`committed link resume timestamp is invalid`);return{kind:_B,linkSessionId:e.linkSessionId,walletId:t.walletId,enrollmentId:t.provenance.enrollmentId,authorityId:t.authorityId,authMethodId:e.committed.authMethod.walletAuthMethodId,deviceId:t.principal.deviceId,targetFactorKind:e.targetFactor.kind,targetFactorVerificationDigestB64u:e.targetFactor.verificationDigestB64u,authorityDigestB64u:t.authorityDigestB64u,signerActivationSetDigestB64u:t.signerActivationSetDigestB64u,signerActivations:t.signerActivations,packageSetDigestB64u:e.committed.packageSetDigestB64u,committedAtMs:e.committedAtMs}}function OB(e){let t=DB({linkSessionId:e.linkSessionId,committed:e.committed,targetFactor:e.targetFactor,committedAtMs:e.resume.committedAtMs});return e.resume.authorityId===t.authorityId?e.resume.linkSessionId!==t.linkSessionId||e.resume.enrollmentId!==t.enrollmentId?{kind:`package_set_digest_mismatch`,expectedPackageSetDigestB64u:e.resume.packageSetDigestB64u,actualPackageSetDigestB64u:t.packageSetDigestB64u}:e.resume.walletId===t.walletId?e.resume.authMethodId===t.authMethodId?e.resume.deviceId===t.deviceId?e.resume.targetFactorKind!==t.targetFactorKind||e.resume.targetFactorVerificationDigestB64u!==t.targetFactorVerificationDigestB64u?{kind:`installation_receipt_mismatch`,field:`targetFactorVerificationDigestB64u`}:e.resume.signerActivationSetDigestB64u===t.signerActivationSetDigestB64u?e.resume.authorityDigestB64u!==t.authorityDigestB64u||e.resume.packageSetDigestB64u!==t.packageSetDigestB64u?{kind:`package_set_digest_mismatch`,expectedPackageSetDigestB64u:e.resume.packageSetDigestB64u,actualPackageSetDigestB64u:t.packageSetDigestB64u}:NB(e.resume.signerActivations,t.signerActivations)?null:{kind:`installation_receipt_mismatch`,field:`installedActivationRefs`}:{kind:`installation_receipt_mismatch`,field:`installedActivationRefs`}:{kind:`installation_receipt_mismatch`,field:`deviceId`}:{kind:`installation_receipt_mismatch`,field:`authMethodId`}:{kind:`installation_receipt_mismatch`,field:`walletId`}:{kind:`authority_id_mismatch`,expectedAuthorityId:e.resume.authorityId,actualAuthorityId:t.authorityId}}function kB(e){let t=jB(e);if(t===null||!J(t,SB)||t.kind!==_B)return null;let n=g(t.linkSessionId),i=o(t.walletId),a=S(t.enrollmentId),s=r(t.authorityId),l=c(t.authMethodId),u=ht(t.deviceId);if(!n.ok||!i.ok||!a.ok||!s.ok||!l.ok||!u.ok||t.targetFactorKind!==`verified_passkey_target_v1`&&t.targetFactorKind!==`verified_email_otp_target_v1`)return null;let d=Sa(t.signerActivations);if(!d.ok)return null;let f=t.committedAtMs;if(typeof f!=`number`||!Number.isSafeInteger(f)||f<=0)return null;try{return{kind:_B,linkSessionId:n.value,walletId:i.value,enrollmentId:a.value,authorityId:s.value,authMethodId:l.value,deviceId:u.value,targetFactorKind:t.targetFactorKind,targetFactorVerificationDigestB64u:St(t.targetFactorVerificationDigestB64u),authorityDigestB64u:St(t.authorityDigestB64u),signerActivationSetDigestB64u:St(t.signerActivationSetDigestB64u),signerActivations:d.value,packageSetDigestB64u:St(t.packageSetDigestB64u),committedAtMs:f}}catch{return null}}async function AB(e){let[t,n]=await Promise.all([e.installation.listCommittedDeliveryResumesV1(),e.installation.listPendingActivationAcknowledgementsV1()]),r=t.filter(t=>t.authorityId===e.authorityId),i=n.filter(t=>t.authorityId===e.authorityId);if(i.length===0)return{kind:`none`};for(let t of i){let n=r.find(e=>e.linkSessionId===t.linkSessionId&&e.packageSetDigestB64u===t.packageSetDigestB64u);if(!n)throw Error(`durable linked-device acknowledgement has no matching resume`);if(n.walletId!==e.walletId||n.authMethodId!==e.authMethodId)throw Error(`durable linked-device acknowledgement identity changed`);await e.transport.acknowledgeLocalAuthorityActivationWithWalletSessionV1({acknowledgement:t,operationCredential:e.operationCredential}),await e.installation.clearPendingActivationAcknowledgementV1({authorityId:t.authorityId}),await e.installation.clearCommittedDeliveryResumeV1({authorityId:t.authorityId})}return{kind:`replayed`}}function jB(e){return MB(e)?e:null}function MB(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;try{let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}catch{return!1}}function NB(e,t){let n=Da(e),r=Da(t);return n.length===r.length&&n.every((e,t)=>e===r[t])}function PB(e,t){let n=String(e.walletId);switch(e.kind){case`passkey`:{let t=String(e.credentialIdB64u);return{profile:{profileId:n,defaultSignerSlot:1,passkeyCredential:{id:t,rawId:t}},authenticator:{profileId:n,signerSlot:1,credentialId:t,credentialPublicKey:F(e.credentialPublicKeyB64u),registered:new Date(e.createdAtMs).toISOString(),syncedAt:new Date(e.updatedAtMs).toISOString()},localAuthMethod:null}}case`email_otp`:{if(t.kind!==`verified_email_otp_target_v1`||t.authMethod.walletAuthMethodId!==e.walletAuthMethodId||t.authMethod.walletId!==e.walletId||t.authMethod.emailHashHex!==e.emailHashHex||t.authMethod.registrationAuthorityId!==e.registrationAuthorityId)throw Error(`linked Email OTP target factor does not match the committed auth method`);let r=_o({walletId:e.walletId,provider:t.enrollment.kind===`existing_enrollment`?`google`:`email`,providerUserId:t.providerUserId,emailHashHex:e.emailHashHex});return{profile:{profileId:n,defaultSignerSlot:1},authenticator:null,localAuthMethod:{version:`wallet_auth_method_v1`,kind:`email_otp`,status:`active`,localStatus:`synced`,walletId:e.walletId,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId,authority:{walletId:r.walletId,factor:r.factor,verifier:r.verifier,bindingId:e.walletAuthMethodId},createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs}}}default:{let t=e;throw Error(`Unsupported linked-device auth method: ${String(t)}`)}}}function FB(e){return{...IB({indexedDB:e.indexedDB}),persistCommittedDeliveryResumeV1:async t=>{let n=DB(t);await e.indexedDB.setAppState(CB(n.authorityId),n)},readCommittedDeliveryResumeV1:async({authorityId:t})=>kB(await e.indexedDB.getAppState(CB(t))),persistPendingActivationAcknowledgementV1:async({acknowledgement:t})=>{let n=TB(t);await e.indexedDB.setAppState(wB(t.authorityId),n)},readPendingActivationAcknowledgementV1:async({authorityId:t})=>EB(await e.indexedDB.getAppState(wB(t)))?.acknowledgement??null,readLocalAuthorityInstallationReceiptV1:async({authorityId:t})=>await e.indexedDB.getLocalAuthorityInstallationReceipt(t),installLocalAuthorityV1:t=>LB({...t,...e}),publishLocalAuthorityActivationV1:({active:t,expectedLockGeneration:n})=>RB({indexedDB:e.indexedDB,active:t,expectedLockGeneration:n}),finalizeLocalAuthorityActivationV1:({active:t,operationCredential:n,expectedLockGeneration:r})=>zB({indexedDB:e.indexedDB,active:t,operationCredential:n,expectedLockGeneration:r})}}function IB(e){return{listCommittedDeliveryResumesV1:async()=>(await e.indexedDB.listAppStateEntriesByPrefix(yB)).flatMap(e=>{if(e.value===null)return[];let t=kB(e.value);if(!t||CB(t.authorityId)!==e.key)throw Error(`durable linked-device delivery resume is corrupt`);return[t]}),listPendingActivationAcknowledgementsV1:async()=>(await e.indexedDB.listAppStateEntriesByPrefix(bB)).flatMap(e=>{if(e.value===null)return[];let t=EB(e.value);if(!t||wB(t.acknowledgement.authorityId)!==e.key)throw Error(`durable linked-device acknowledgement is corrupt`);return[t.acknowledgement]}),clearCommittedDeliveryResumeV1:async({authorityId:t})=>{await e.indexedDB.setAppState(CB(t),null)},clearPendingActivationAcknowledgementV1:async({authorityId:t})=>{await e.indexedDB.setAppState(wB(t),null)}}}async function LB(e){let t=await e.indexedDB.getLocalAuthorityInstallationReceipt(e.committed.authority.authorityId);if(t)return KB({committed:e.committed,targetFactor:e.targetFactor,receipt:t}),t;let n=await e.sealing.sealCommittedAuthorityPackagesV1({committed:e.committed,targetFactor:e.targetFactor,keyMaterial:e.keyMaterial,resealedExportRoot:e.resealedExportRoot});GB({committed:e.committed,sealed:n});let r=PB(e.committed.authMethod,e.targetFactor),i=e.nowMs();if(!Number.isSafeInteger(i)||i<=0)throw Error(`local authority installation clock is invalid`);let a={kind:`local_authority_installation_receipt_v1`,authorityId:e.committed.authority.authorityId,walletId:e.committed.authority.walletId,authMethodId:e.committed.authMethod.walletAuthMethodId,deviceId:e.committed.authority.principal.deviceId,packageSetDigestB64u:e.committed.packageSetDigestB64u,installedActivationRefs:e.committed.authority.signerActivations,installedRecordSetDigestB64u:n.installedRecordSetDigestB64u,targetFactorVerificationDigestB64u:e.targetFactor.verificationDigestB64u,installedAtMs:i},o=await e.indexedDB.installLocalAuthority({authority:e.committed.authority,authMethod:e.committed.authMethod,profile:r.profile,authenticator:r.authenticator,localAuthMethod:r.localAuthMethod,signerMaterials:n.signerMaterials,exportRoot:n.exportRoot,receipt:a,expectedLockGeneration:e.expectedLockGeneration});switch(o.kind){case`installed`:case`idempotent_replay`:return o.receipt;case`stale_lock_generation`:throw Error(`local authority installation lock generation is stale (expected ${o.expectedLockGeneration}, actual ${o.actualLockGeneration})`);case`integrity_error`:throw Error(`local authority installation integrity error: ${o.reason}`)}}async function RB(e){let t=await e.indexedDB.publishLocalAuthorityActivation({authority:e.active.authority,authMethod:e.active.authMethod,expectedLockGeneration:e.expectedLockGeneration});switch(t.kind){case`published`:return;case`stale_lock_generation`:throw Error(`local authority activation lock generation is stale (expected ${t.expectedLockGeneration}, actual ${t.actualLockGeneration})`);case`wallet_locked`:throw Error(`local authority activation refused while wallet is locked at generation ${t.lockGeneration}`);default:throw Error(`local authority activation publication returned an unknown result`)}}async function zB(e){let t={authority:e.active.authority,authMethod:e.active.authMethod,walletSession:e.active.walletSession,operationCredential:e.operationCredential,expectedLockGeneration:e.expectedLockGeneration},n=await e.indexedDB.finalizeLocalAuthorityActivation(t);switch(n.kind){case`finalized`:return;case`stale_lock_generation`:throw Error(`local authority activation lock generation is stale (expected ${n.expectedLockGeneration}, actual ${n.actualLockGeneration})`);case`wallet_locked`:throw Error(`local authority activation refused while wallet is locked at generation ${n.lockGeneration}`);default:throw Error(`local authority activation returned an unknown result`)}}async function BB(e){let t=HB({committed:e.committed,sessionState:e.sessionState});if(t)return t;let n=await e.installation.readCommittedDeliveryResumeV1({authorityId:e.committed.authority.authorityId});if(n){let t=OB({resume:n,linkSessionId:e.linkSessionId,committed:e.committed,targetFactor:e.targetFactor});if(t)return{kind:`integrity_error`,reason:t}}else await e.installation.persistCommittedDeliveryResumeV1({linkSessionId:e.linkSessionId,committed:e.committed,targetFactor:e.targetFactor,committedAtMs:e.nowMs()});let r=await e.installation.installLocalAuthorityV1({committed:e.committed,targetFactor:e.targetFactor,keyMaterial:e.keyMaterial,resealedExportRoot:e.resealedExportRoot,expectedLockGeneration:e.expectedLockGeneration}),i=await e.transport.activateInstalledAuthorityV1({linkSessionId:e.linkSessionId,receipt:r});switch(i.kind){case`pending_local_install`:return{kind:`pending_local_install`,authorityId:i.authorityId,packageSetDigestB64u:r.packageSetDigestB64u};case`integrity_error`:return i;case`active`:{let t=UB({active:i,receipt:r});if(t)return t;await e.installation.publishLocalAuthorityActivationV1({active:i,expectedLockGeneration:e.expectedLockGeneration}),await Qr(i.sealedDelivery),await WB({active:i,receipt:r,linkSessionId:e.linkSessionId,deliveryRecipientPublicKey65B64u:e.deliveryRecipientPublicKey65B64u}),await e.installation.persistPendingActivationAcknowledgementV1({acknowledgement:await VB({active:i,receipt:r,linkSessionId:e.linkSessionId,acknowledgedAtMs:e.nowMs()})});let n=await e.keyMaterialPort.openWalletSessionCredentialDeliveryV1({keyMaterial:e.keyMaterial,delivery:i.sealedDelivery,expected:{linkSessionId:e.linkSessionId,walletId:i.walletSession.walletId,authorityId:i.walletSession.authorityId,walletAuthMethodId:i.walletSession.authMethodId,authorizationId:i.walletSession.authorizationId,walletSessionId:i.sealedDelivery.aad.walletSessionId,quotaId:i.walletSession.quotaId,deliveryBinding:i.deliveryBinding,credentialDigestB64u:i.sealedDelivery.aad.credentialDigestB64u,installationReceiptDigestB64u:i.sealedDelivery.installationReceiptDigestB64u,recipientPublicKey65B64u:e.deliveryRecipientPublicKey65B64u,issuedAtMs:i.walletSession.issuedAtMs,expiresAtMs:i.walletSession.expiresAtMs}});return await e.installation.finalizeLocalAuthorityActivationV1({active:i,operationCredential:n,expectedLockGeneration:e.expectedLockGeneration}),{kind:`active`,session:i.walletSession,operationCredential:n}}}}async function VB(e){if(!Number.isSafeInteger(e.acknowledgedAtMs)||e.acknowledgedAtMs<=0)throw Error(`linked-device acknowledgement clock is invalid`);return{kind:`local_authority_activation_final_ack_v1`,linkSessionId:e.linkSessionId,authorityId:e.active.authority.authorityId,packageSetDigestB64u:e.receipt.packageSetDigestB64u,authorizationId:e.active.sealedDelivery.aad.authorizationId,walletSessionId:e.active.sealedDelivery.aad.walletSessionId,credentialDigestB64u:e.active.sealedDelivery.aad.credentialDigestB64u,installationReceiptDigestB64u:await fi(e.receipt),acknowledgedAtMs:e.acknowledgedAtMs}}function HB(e){return e.sessionState.state===`provisioning`?null:e.committed.authority.authorityId===e.sessionState.authorityId?e.sessionState.state!==`active`&&e.committed.packageSetDigestB64u!==e.sessionState.packageSetDigestB64u?{kind:`integrity_error`,reason:{kind:`package_set_digest_mismatch`,expectedPackageSetDigestB64u:e.sessionState.packageSetDigestB64u,actualPackageSetDigestB64u:e.committed.packageSetDigestB64u}}:null:{kind:`integrity_error`,reason:{kind:`authority_id_mismatch`,expectedAuthorityId:e.sessionState.authorityId,actualAuthorityId:e.committed.authority.authorityId}}}function UB(e){return e.active.authority.authorityId===e.receipt.authorityId?e.active.authority.walletId!==e.receipt.walletId||e.active.walletSession.walletId!==e.receipt.walletId?{kind:`integrity_error`,reason:{kind:`installation_receipt_mismatch`,field:`walletId`}}:e.active.authMethod.walletAuthMethodId!==e.receipt.authMethodId||e.active.walletSession.authMethodId!==e.receipt.authMethodId?{kind:`integrity_error`,reason:{kind:`installation_receipt_mismatch`,field:`authMethodId`}}:null:{kind:`integrity_error`,reason:{kind:`authority_id_mismatch`,expectedAuthorityId:e.receipt.authorityId,actualAuthorityId:e.active.authority.authorityId}}}async function WB(e){let t=e.active.sealedDelivery.aad,n=e.active.deliveryBinding,r=e.active.sealedDelivery.installationReceiptDigestB64u,i=await fi(e.receipt);if(n.namespace!==t.namespace||n.orgId!==t.orgId||n.projectId!==t.projectId||n.envId!==t.envId||n.tenantId!==t.tenantId||n.principalId!==t.principalId||t.linkSessionId!==e.linkSessionId||t.walletId!==e.receipt.walletId||t.authorityId!==e.receipt.authorityId||t.walletAuthMethodId!==e.receipt.authMethodId||t.authorizationId!==e.active.walletSession.authorizationId||t.quotaId!==e.active.walletSession.quotaId||String(t.principalId)!==`linked-device:${String(e.active.authority.principal.deviceId)}`||t.recipientPublicKey65B64u!==e.deliveryRecipientPublicKey65B64u||t.issuedAtMs!==e.active.walletSession.issuedAtMs||t.expiresAtMs!==e.active.walletSession.expiresAtMs||r!==i)throw Error(`linked-device Wallet Session credential delivery identity changed`)}function GB(e){let t=e.committed.authority,n=e.committed.authMethod,r=YB(t.signerActivations);if(e.sealed.signerMaterials.length!==r.length)throw Error(`sealed signer material count does not match committed authority`);for(let i=0;i<r.length;i+=1){let a=r[i],o=e.sealed.signerMaterials[i];if(!o||o.authorityId!==t.authorityId||o.walletAuthMethodId!==n.walletAuthMethodId||o.keyFamily!==a.keyFamily||o.activationId!==a.materialActivation.activationId||o.materialActivation.activationId!==a.materialActivation.activationId)throw Error(`sealed signer material identity does not match committed authority`)}if((JB(t.signerActivations)&&t.permissions.includes(`export_keys`))!==(e.sealed.exportRoot!==null))throw Error(`sealed Ed25519 export root presence does not match committed authority`);if(e.sealed.exportRoot&&(e.sealed.exportRoot.authorityId!==t.authorityId||e.sealed.exportRoot.walletAuthMethodId!==n.walletAuthMethodId))throw Error(`sealed export root identity does not match committed authority`);St(e.sealed.installedRecordSetDigestB64u)}function KB(e){if(e.receipt.authorityId!==e.committed.authority.authorityId||e.receipt.walletId!==e.committed.authority.walletId||e.receipt.authMethodId!==e.committed.authMethod.walletAuthMethodId||e.receipt.deviceId!==e.committed.authority.principal.deviceId||e.receipt.packageSetDigestB64u!==e.committed.packageSetDigestB64u||e.receipt.targetFactorVerificationDigestB64u!==e.targetFactor.verificationDigestB64u||!qB(e.receipt.installedActivationRefs,e.committed.authority.signerActivations))throw Error(`stored local authority receipt does not match committed packages`)}function qB(e,t){let n=Da(e),r=Da(t);if(n.byteLength!==r.byteLength)return!1;for(let e=0;e<n.byteLength;e+=1)if(n[e]!==r[e])return!1;return!0}function JB(e){return e.keyFamilies.length===2||e.keyFamilies[0]===`ed25519`}function YB(e){if(e.keyFamilies.length===1&&e.keyFamilies[0]===`ed25519`){if(!e.ed25519)throw Error(`Ed25519 activation is missing`);return[{keyFamily:`ed25519`,materialActivation:e.ed25519.materialActivation}]}if(e.keyFamilies.length===1&&e.keyFamilies[0]===`ecdsa_secp256k1`){if(!e.ecdsa)throw Error(`ECDSA activation is missing`);return[{keyFamily:`ecdsa_secp256k1`,materialActivation:e.ecdsa.materialActivation}]}if(e.keyFamilies.length===2){if(!e.ed25519||!e.ecdsa)throw Error(`combined signer activations are incomplete`);return[{keyFamily:`ed25519`,materialActivation:e.ed25519.materialActivation},{keyFamily:`ecdsa_secp256k1`,materialActivation:e.ecdsa.materialActivation}]}throw Error(`committed signer activation families are invalid`)}function XB(e,t){switch(t.targetFactor.kind){case`verified_passkey_target_v1`:return{kind:`authenticated`,walletId:e.walletId,authMethod:V.passkey};case`verified_email_otp_target_v1`:return{kind:`authenticated`,walletId:e.walletId,authMethod:V.emailOtp};default:return t.targetFactor}}function ZB(){let e=g(Pe(`link-session`,32));if(!e.ok)throw Error(e.error.message);return e.value}function QB(){return Pe(`link-flow`,16)}function $B(e,t){try{e?.(t)}catch{}}function eV(e){console.info(`[Device2Linking]`,{flowId:e.flowId,linkSessionId:e.linkSessionId,stage:e.stage,...e.details})}function tV(e){console.error(`[Device2Linking] failed`,{flowId:e.flowId,linkSessionId:e.linkSessionId,state:e.state,error:L(e.error)})}function nV(e,t){setTimeout(e,fz(250,t))}async function rV(e){await new Promise(t=>nV(t,e))}function iV(e){switch(e.state){case`displaying_qr`:case`expired`:case`cancelled`:return Cs.STEP_01_QR_PREPARE_STARTED;case`claimed`:case`awaiting_target_factor`:case`awaiting_source_contribution`:case`provisioning`:case`authority_pending_local_install`:case`active`:return Cs.STEP_02_QR_SCAN_STARTED;case`failed_before_commit`:return Cs.FAILED;default:return Ei(e)}}function aV(e,t){return e instanceof X?e:new X(L(e)||`Device linking failed`,Z.REGISTRATION_FAILED,t)}function oV(e){let t=L(e).toLowerCase();return t.includes(`device-linking key handle is unknown or discarded`)||t.includes(`recipient handle lost`)?`recipient_private_handle_lost`:t.includes(`linked-device wallet session credential delivery is expired`)?`sealed_delivery_expired`:null}function sV(e){switch(e){case`recipient_private_handle_lost`:case`sealed_delivery_expired`:return`The linked device is ready. Return to sign in and unlock the new method to finish setup.`;default:return e}}var cV=class extends Error{constructor(){super(`Device-link flow was cancelled or reset`),this.name=`LinkDeviceFlowSupersededError`}};async function lV(t){let n;try{n=await import(`./browser-n3IVr7qu.js`).then(t=>e(t.default,1))}catch{throw new X(`Device-link QR generation requires the optional qrcode package`,Z.UNSUPPORTED,`generation`)}return await n.toDataURL(t,{errorCorrectionLevel:`M`,margin:2})}function uV(e){let t=De();return e.target.targetFactor.kind===`email_otp`?Xr({linkSessionId:e.linkSessionId,linkPublicKeyB64u:e.linkPublicKeyB64u,devicePublicKeyB64u:e.devicePublicKeyB64u,requestedPermission:t,targetFactor:{kind:`email_otp`},targetEmail:Cf(e.target.targetEmail),issuedAtMs:e.issuedAtMs,expiresAtMs:e.expiresAtMs}):Xr({linkSessionId:e.linkSessionId,linkPublicKeyB64u:e.linkPublicKeyB64u,devicePublicKeyB64u:e.devicePublicKeyB64u,requestedPermission:t,targetFactor:{kind:`passkey_prf`},issuedAtMs:e.issuedAtMs,expiresAtMs:e.expiresAtMs})}function dV(e){return e.targetFactor.kind===`passkey_prf`}function fV(e){return e.targetFactor.kind===`email_otp`}function pV(e){return{event:e.event,state:e.state,runEpoch:e.runEpoch,deviceId:e.deviceId,preparation:e.preparation,ordinarySignerMaterialRecipientRequests:e.ordinarySignerMaterialRecipientRequests,exportRoot:e.exportRoot}}function mV(e){if(e.kind!==`completed`||!e.factorSecret||typeof e.providerUserId!=`string`)throw Error(`linked-device Email OTP factor runtime is unavailable`);return{kind:`completed`,runEpoch:e.runEpoch,enrollment:e.enrollment,factorSecret:e.factorSecret,providerUserId:e.providerUserId}}function hV(e){throw Error(`Unknown Email OTP target activation state: ${String(e)}`)}function gV(e){throw Error(`Unknown target credential activation state: ${String(e)}`)}function _V(e){switch(e.targetFactor.kind){case`verified_passkey_target_v1`:{let t=e.targetCredentialActivationState;if(t.kind!==`factor_ready`||t.runEpoch!==e.runEpoch)throw Error(`linked-device Passkey factor runtime is unavailable`);return{factor:{kind:`passkey`,walletId:e.walletId},factorSecret32:t.factorSecret}}case`verified_email_otp_target_v1`:{let t=mV(e.emailOtpTargetActivationState);if(t.runEpoch!==e.runEpoch)throw Error(`linked-device Email OTP factor runtime is unavailable`);return{factor:{kind:`email_otp`,walletId:e.walletId,walletAuthMethodId:e.walletAuthMethodId,emailHashHex:e.targetFactor.authMethod.emailHashHex,providerIdentity:{provider:bV(t.enrollment),providerSubjectId:t.providerUserId}},factorSecret32:t.factorSecret}}default:return vV(e.targetFactor)}}function vV(e){throw Error(`Unknown verified target factor kind: ${String(e)}`)}function yV(e){e.byteLength>0&&e.fill(0)}function bV(e){return e.kind===`existing_enrollment`?`google`:`email`}function xV(e){return e.passkeyCreationOptions.rpId}function SV(e){if(!fV(e))throw Error(`linked-device Email OTP preparation is unavailable`);return e}function CV(){let e=C(Pe(`linked-device-ed25519-export-root-envelope`,24,`export-root envelope ids`));if(!e.ok)throw Error(e.error.message);return e.value}function wV(){return crypto.getRandomValues(new Uint8Array(32))}async function TV(e){let t=e.factorSecret.slice();try{let n=await e.context.signingEngine.prepareEmailOtpRegistrationEnrollmentMaterialInternal({relayUrl:String(e.context.configs.network.relayer.url||``).trim(),walletId:e.walletId,userId:e.targetEmail,clientSecret32:t});if(n.emailOtpSessionHandle.kind!==`not_requested`)throw Error(`Strict linked-device Email OTP enrollment received obsolete ECDSA material`);return{enrollmentId:n.enrollmentId,enrollment:n.emailOtpEnrollment}}finally{yV(t)}}function EV(e){if(!e)throw Error(`new linked-device Email OTP enrollment material is unavailable`);return e}var DV=class{constructor(e,t,n=null){this.pendingActivationCompletion=null,this.session=null,this.keyMaterialHandle=null,this.deliveryRecipientPublicKey65B64u=null,this.resealedExportRoot=null,this.targetCredentialRegistrationResult=null,this.committedAuthorityPackages=null,this.deliveryRecoveryReason=null,this.ordinarySignerMaterialRecipientPreparation=null,this.authenticatedTransport=null,this.subscription=null,this.cancelled=!1,this.runEpoch=0,this.generationInProgress=!1,this.discardInProgress=null,this.targetCredentialActivationState={kind:`idle`},this.emailOtpTargetActivationState={kind:`idle`},this.handledStates=new Set,this.sessionEventQueue=Promise.resolve(),this.options=e,this.flowId=QB(),this.ports=t,this.getAuthenticationContext=n}async generateQR(){if(this.generationInProgress||this.keyMaterialHandle||this.subscription||this.session&&!this.cancelled)throw Error(`Device-link QR flow is already running`);let e=this.startRun(),t=this.ports;this.emit({phase:Cs.STEP_01_QR_PREPARE_STARTED,status:`started`,message:`Preparing device link`,data:{role:`display`},interaction:{kind:`qr_display`,overlay:`show`}});try{let n=await t.keyMaterial.createBootstrapKeyMaterialV1();if(!this.isCurrentRun(e))throw this.keyMaterialHandle=n.handle,await this.discardKeyMaterial(),new cV;this.keyMaterialHandle=n.handle,this.deliveryRecipientPublicKey65B64u=n.deliveryRecipientPublicKey65B64u;let r=Date.now(),i=ZB(),a=uV({linkSessionId:i,linkPublicKeyB64u:n.linkPublicKeyB64u,devicePublicKeyB64u:n.devicePublicKeyB64u,target:this.options,issuedAtMs:r,expiresAtMs:r+900*1e3}),o={state:`displaying_qr`},s=t.transport.createAuthenticatedSessionTransportV1({keyMaterial:n.handle,devicePublicKeyB64u:n.devicePublicKeyB64u});this.authenticatedTransport=s,this.session={linkSessionId:i,state:o,qrData:a},eV({flowId:this.flowId,linkSessionId:i,stage:`session_create_started`}),await s.createUnclaimedSessionV1({payload:a,state:o}),this.assertCurrentRun(e);let c=await s.subscribeSessionV1({linkSessionId:i,onEvent:this.handleSessionTransportEvent.bind(this)});if(!this.isCurrentRun(e))throw await c.close(),new cV;this.subscription=c,eV({flowId:this.flowId,linkSessionId:i,stage:`session_subscription_ready`});let l=await lV(Ri(a));this.assertCurrentRun(e);let u={qrData:a,qrCodeDataURL:l};return this.emit({phase:Cs.STEP_01_QR_PREPARE_STARTED,status:`succeeded`,message:`Device-link QR ready`,data:{role:`display`},interaction:{kind:`qr_display`,overlay:`show`}}),await this.options.options?.afterCall?.(!0,u),u}catch(e){try{await this.cleanupLocalResources()}catch{}if(e instanceof cV)throw e;this.session=null,this.authenticatedTransport=null,this.handledStates.clear();let t=aV(e,`generation`);throw this.error=t,this.emitFailure(t,`generation`),$B(this.options.options?.onError,t),await this.options.options?.afterCall?.(!1,void 0,t),t}finally{this.generationInProgress=!1}}getState(){return{phase:this.session?iV(this.session.state):Cs.STEP_01_QR_PREPARE_STARTED,session:this.session,...this.error?{error:this.error}:{},cancelled:this.cancelled}}async cancel(){if(this.hasCommittedDeliveryState())throw Error(`Device-link authority delivery is committed and must be resumed`);if(this.cancelled){await this.cleanupLocalResources();return}this.cancelled=!0,this.runEpoch+=1;let e=this.session,t=this.keyMaterialHandle,n=this.authenticatedTransport;try{if(e&&t&&n){let t=Date.now();switch(e.state.state){case`displaying_qr`:await n.cancelSessionV1({request:oi({linkSessionId:e.linkSessionId,requestedAtMs:t})}),this.session={...e,state:{state:`cancelled`,cancelledAtMs:t}};break;case`claimed`:case`awaiting_target_factor`:case`awaiting_source_contribution`:case`provisioning`:await this.cancelClaimedSessionV1(n,e.linkSessionId,t),this.session={...e,state:{state:`cancelled`,cancelledAtMs:t}};break;case`authority_pending_local_install`:break;case`active`:case`expired`:case`cancelled`:case`failed_before_commit`:break;default:Ei(e.state)}}}finally{await this.cleanupLocalResources()}this.emit({phase:Cs.CANCELLED,status:`cancelled`,message:`Device-link flow cancelled`,interaction:{kind:`qr_display`,overlay:`hide`}})}async resolveLinkIdentityV1(e){let t=this.targetCredentialRegistrationResult;if(t&&t.linkSessionId===e)return{enrollmentId:t.enrollmentId,deviceId:t.deviceId};let n=await this.requireAuthenticatedTransport().getTargetPreparationV1({linkSessionId:e,deliveryRecipientPublicKey65B64u:this.requireDeliveryRecipientPublicKey65B64u()});return{enrollmentId:n.enrollmentId,deviceId:n.deviceId}}async cancelClaimedSessionV1(e,t,n){let r=await this.resolveLinkIdentityV1(t);await e.cancelSessionV1({request:ri({linkSessionId:t,enrollmentId:r.enrollmentId,deviceId:r.deviceId,reason:`user_cancelled`,requestedAtMs:n})})}async handleSessionEvent(e){if(this.cancelled||this.deliveryRecoveryReason!==null||!this.session||e.linkSessionId!==this.session.linkSessionId)return;eV({flowId:this.flowId,linkSessionId:e.linkSessionId,stage:`session_event_received`,details:{state:e.state.state,emittedAtMs:e.emittedAtMs,runEpoch:this.runEpoch}});let t=this.runEpoch;if(this.handledStates.has(e.state.state)){eV({flowId:this.flowId,linkSessionId:e.linkSessionId,stage:`session_event_already_handled`,details:{state:e.state.state}});return}switch(this.session={...this.session,state:e.state},this.handledStates.add(e.state.state),e.state.state){case`displaying_qr`:return;case`claimed`:this.emit({phase:Cs.STEP_02_QR_SCAN_STARTED,status:`running`,message:`Device link claimed by owner`,data:{role:`display`},interaction:{kind:`qr_display`,overlay:`show`}});return;case`awaiting_target_factor`:await this.prepareTargetCredentialActivation(e,t);return;case`awaiting_source_contribution`:return;case`provisioning`:case`authority_pending_local_install`:{let n=await this.activateAuthorityForStateV1(e.state,t);if(n.kind===`pending_local_install`)return;if(n.kind===`integrity_error`)throw new X(`Linked-device authority installation failed: ${n.reason}`,Z.REGISTRATION_FAILED,`registration`);if(n.kind===`failed_before_commit`)throw new X(`Linked-device authority activation cannot continue`,Z.REGISTRATION_FAILED,`registration`);await this.finishActiveAuthorityV1(e.state,n.session,n.operationCredential,t);return}case`active`:await this.replayCommittedAuthorityV1(e.state,t);return;case`expired`:{let e=new X(`Device-link session expired`,Z.SESSION_EXPIRED,`registration`);this.error=e,this.emitFailure(e,`registration`),$B(this.options.options?.onError,e),this.runEpoch+=1,await this.cleanupLocalResources();return}case`cancelled`:this.cancelled=!0,this.emit({phase:Cs.CANCELLED,status:`cancelled`,message:`The other device cancelled this linking request.`,interaction:{kind:`qr_display`,overlay:`show`}}),this.runEpoch+=1,await this.cleanupLocalResources();return;case`failed_before_commit`:this.cancelled=!0,this.runEpoch+=1,await this.cleanupLocalResources();return;default:return Ei(e.state)}}async prepareTargetCredentialActivation(e,t){if(e.state.state!==`awaiting_target_factor`)throw Error(`target passkey activation requires an awaiting session`);let n=e.state;if(!this.keyMaterialHandle||!this.session)throw Error(`device-link key material is unavailable`);let r=this.requireAuthenticatedTransport();this.assertCurrentRun(t);let i=await r.getTargetPreparationV1({linkSessionId:e.linkSessionId,deliveryRecipientPublicKey65B64u:this.requireDeliveryRecipientPublicKey65B64u()});this.assertCurrentRun(t),this.assertTargetPreparationMatchesSession({preparation:i,state:n,linkSessionId:e.linkSessionId});let a=i.deviceId;if(this.ordinarySignerMaterialRecipientPreparation=await this.ports.keyMaterial.createOrdinarySignerMaterialRecipientRequestsV1({keyMaterial:this.keyMaterialHandle,requirements:i.ordinarySignerMaterialRecipientRequirements}),this.assertCurrentRun(t),this.requireSessionTargetFactorV1().kind===`email_otp`){await this.prepareTargetEmailOtpActivation({event:e,state:n,runEpoch:t,deviceId:a,preparation:i});return}if(!dV(i))throw Error(`Passkey session returned a non-Passkey target preparation`);let o=this.options.options?.onTargetFactorRequired;if(!o)throw new X(`Confirm passkey creation on Device 2 to continue linking`,Z.UNSUPPORTED,`registration`);o({kind:`linked_device_target_passkey_activation_v1`,createPasskey:this.activateTargetCredential.bind(this,{event:e,state:n,runEpoch:t,deviceId:a,preparation:i})})}async prepareTargetEmailOtpActivation(e){if(!fV(e.preparation))throw Error(`Email OTP session returned a non-Email OTP target preparation`);if(!this.keyMaterialHandle||!this.session||!this.deliveryRecipientPublicKey65B64u)throw Error(`Email OTP target key material is unavailable`);if(!this.options.options?.onTargetFactorRequired)throw new X(`Enter the Email OTP on Device 2 to continue linking`,Z.UNSUPPORTED,`registration`);let t=this.requireAuthenticatedTransport(),n=e.preparation.ed25519ExportRoot,r=n===null?{kind:`not_required`}:{kind:`required`,recipient:await aB({ed25519ExportRoot:this.ports.ed25519ExportRoot,transport:t,identity:{linkSessionId:e.event.linkSessionId,walletId:e.preparation.walletId,walletKeyId:n.walletKeyId,enrollmentId:e.preparation.enrollmentId,deviceId:e.deviceId,applicationBindingDigestB64u:n.applicationBindingDigestB64u,registeredPublicKeyB64u:n.registeredPublicKeyB64u,targetFactor:e.preparation.targetFactor,revocationEpoch:n.revocationEpoch},registeredAtMs:Date.now()})};this.assertCurrentRun(e.runEpoch);let i={event:e.event,state:e.state,runEpoch:e.runEpoch,deviceId:e.deviceId,preparation:e.preparation,ordinarySignerMaterialRecipientRequests:this.requireOrdinarySignerMaterialRecipientPreparationV1().recipientRequests,exportRoot:r};this.emailOtpTargetActivationState={kind:`available`,context:i},await this.startTargetEmailOtpChallengeV1(i)}notifyEmailOtpActivationV1(e){let t=this.options.options?.onTargetFactorRequired;t&&t({kind:`linked_device_target_email_otp_activation_v1`,state:e,sendCode:this.sendTargetEmailOtpCodeV1.bind(this),submitCode:this.submitTargetEmailOtpCodeV1.bind(this),resendCode:this.resendTargetEmailOtpCodeV1.bind(this)})}sendTargetEmailOtpCodeV1(){let e=this.emailOtpTargetActivationState;switch(e.kind){case`available`:{let t=this.startTargetEmailOtpChallengeV1(e.context);return this.emailOtpTargetActivationState={kind:`starting`,context:e.context,promise:t},t}case`starting`:return e.promise;case`resending`:return e.promise;case`awaiting_code`:case`submitting`:case`completed`:return Promise.resolve();case`failed`:return Promise.reject(Error(e.message));case`idle`:return Promise.reject(Error(`Email OTP activation is unavailable`));default:return hV(e)}}async startTargetEmailOtpChallengeV1(e){try{this.assertCurrentRun(e.runEpoch);let t=this.deliveryRecipientPublicKey65B64u;if(!t)throw Error(`Email OTP factor-release recipient is unavailable`);let n=await this.requireAuthenticatedTransport().startTargetEmailOtpChallengeV1({request:{kind:`linked_device_email_otp_challenge_start_request_v1`,linkSessionId:e.event.linkSessionId,workerEphemeralPublicKey65B64u:t}});this.assertCurrentRun(e.runEpoch),this.awaitTargetEmailOtpCodeV1(e,n)}catch(t){throw this.isCurrentRun(e.runEpoch)&&(this.emailOtpTargetActivationState={kind:`available`,context:e},this.notifyEmailOtpActivationV1({kind:`unavailable`,message:L(t)})),t}}awaitTargetEmailOtpCodeV1(e,t){this.emailOtpTargetActivationState={kind:`awaiting_code`,context:{...pV(e),challenge:t}},this.notifyEmailOtpActivationV1({kind:`code_input`,maskedEmailHint:t.maskedEmailHint,expiresAtMs:t.expiresAtMs,resendAvailableAtMs:t.resendAvailableAtMs})}resendTargetEmailOtpCodeV1(){let e=this.emailOtpTargetActivationState;if(e.kind===`resending`)return e.promise;if(e.kind!==`awaiting_code`)return Promise.reject(Error(`Email OTP challenge is not ready to resend`));try{this.assertCurrentRun(e.context.runEpoch)}catch(e){return Promise.reject(e)}let t=this.runTargetEmailOtpResendV1(e.context);return this.emailOtpTargetActivationState={kind:`resending`,context:e.context,promise:t},this.notifyEmailOtpActivationV1({kind:`resending`,maskedEmailHint:e.context.challenge.maskedEmailHint}),t}async runTargetEmailOtpResendV1(e){try{let t=await this.requireAuthenticatedTransport().resendTargetEmailOtpChallengeV1({request:{kind:`linked_device_email_otp_challenge_resend_request_v1`,linkSessionId:e.event.linkSessionId,challengeId:e.challenge.challengeId}});this.assertCurrentRun(e.runEpoch),this.awaitTargetEmailOtpCodeV1(e,t)}catch(t){if(this.isCurrentRun(e.runEpoch)){let n=L(t)||`Email OTP resend is unavailable`;this.emailOtpTargetActivationState={kind:`available`,context:pV(e)},this.notifyEmailOtpActivationV1({kind:`unavailable`,message:n})}throw t}}submitTargetEmailOtpCodeV1(e){let t=this.emailOtpTargetActivationState;if(t.kind!==`awaiting_code`)return Promise.reject(Error(`Email OTP challenge is not ready for verification`));this.assertCurrentRun(t.context.runEpoch);let n=this.completeTargetEmailOtpActivationV1(t.context,e);return this.emailOtpTargetActivationState={kind:`submitting`,context:t.context,promise:n},this.notifyEmailOtpActivationV1({kind:`submitting`,maskedEmailHint:t.context.challenge.maskedEmailHint,expiresAtMs:t.context.challenge.expiresAtMs,resendAvailableAtMs:t.context.challenge.resendAvailableAtMs}),n}async completeTargetEmailOtpActivationV1(e,t){let n;try{n=await this.requireAuthenticatedTransport().verifyTargetEmailOtpChallengeV1({request:{kind:`linked_device_email_otp_challenge_verify_request_v1`,linkSessionId:e.event.linkSessionId,challengeId:e.challenge.challengeId,otpCode:t}})}catch(t){throw this.isCurrentRun(e.runEpoch)&&(this.emailOtpTargetActivationState={kind:`awaiting_code`,context:e},Date.now()>=e.challenge.expiresAtMs?this.notifyEmailOtpActivationV1({kind:`expired`,maskedEmailHint:e.challenge.maskedEmailHint,message:L(t)}):this.notifyEmailOtpActivationV1({kind:`incorrect`,maskedEmailHint:e.challenge.maskedEmailHint,expiresAtMs:e.challenge.expiresAtMs,resendAvailableAtMs:e.challenge.resendAvailableAtMs,message:L(t)})),t}this.assertCurrentRun(e.runEpoch);let r=SV(e.preparation),i=e.exportRoot.kind===`required`?e.exportRoot.recipient:null,a=null,o=null,s=null,c=null,l=null,u=null,d=r.enrollment.kind===`existing_enrollment`;try{let t=await Ui(r);if(n.verificationGrant.targetEmail!==r.targetEmail)throw Error(`linked-device Email OTP verification target email changed`);if(d){let i=n.verificationGrant;if(i.enrollment.kind!==`existing_enrollment`)throw Error(`linked-device Email OTP verification enrollment changed`);let o=i.baseWalletAuthMethodId;if(!o)throw Error(`linked-device Email OTP base auth method is unavailable`);let u=n.factorRelease;if(!u)throw Error(`linked-device Email OTP factor release is unavailable`);let d=await this.ports.keyMaterial.openEmailOtpFactorReleaseV1({keyMaterial:this.requireKeyMaterialHandleV1(),walletId:r.walletId,linkSessionId:r.linkSessionId,enrollmentId:r.enrollmentId,deviceId:r.deviceId,walletAuthMethodId:r.walletAuthMethodId,baseWalletAuthMethodId:o,targetPreparationDigestB64u:t,expectedChallengeId:e.challenge.challengeId,verificationGrant:i,factorRelease:u});a=d.factorSecret,s=d.verificationGrant,c=u.enrollmentId,l=u.enrollmentSealKeyVersion}else{let e=n.verificationGrant;if(e.enrollment.kind!==`new_enrollment`)throw Error(`linked-device Email OTP verification enrollment changed`);if(n.factorRelease!==null)throw Error(`new linked-device Email OTP enrollment returned a factor release`);let t=this.getAuthenticationContext?.();if(!t)throw Error(`linked-device authentication context is unavailable`);let i=wV();a=i.buffer;let o=await TV({context:t,walletId:r.walletId,targetEmail:r.targetEmail,factorSecret:i});c=o.enrollmentId,l=o.enrollment.enrollmentSealKeyVersion,u=o.enrollment,s=e}if(!a||!s||!c||!l)throw Error(`linked-device Email OTP factor material is unavailable`);if(this.assertCurrentRun(e.runEpoch),e.exportRoot.kind===`required`){if(!i)throw Error(`linked-device Ed25519 export-root recipient is unavailable`);let t=r.ed25519ExportRoot;if(!t)throw Error(`linked-device Ed25519 export-root preparation is unavailable`);let n=CV(),o=Jo({enrollmentId:c,enrollmentSealKeyVersion:l});this.resealedExportRoot=await this.acceptTargetExportRootV1({preparation:r,exportRoot:t,recipient:i,envelopeId:n,factor:o,replacementFactorSecret:new Uint8Array(a),runEpoch:e.runEpoch}),i=null}let f=Gi(d?{linkSessionId:r.linkSessionId,walletId:r.walletId,enrollmentId:r.enrollmentId,deviceId:r.deviceId,walletAuthMethodId:r.walletAuthMethodId,targetFactor:{kind:`email_otp`},targetEmail:r.targetEmail,emailOtpVerificationGrant:s,targetPreparationDigestB64u:t,ordinarySignerMaterialRecipientRequests:e.ordinarySignerMaterialRecipientRequests,registeredAtMs:Date.now()}:{linkSessionId:r.linkSessionId,walletId:r.walletId,enrollmentId:r.enrollmentId,deviceId:r.deviceId,walletAuthMethodId:r.walletAuthMethodId,targetFactor:{kind:`email_otp`},targetEmail:r.targetEmail,emailOtpVerificationGrant:s,emailOtpEnrollment:EV(u),targetPreparationDigestB64u:t,ordinarySignerMaterialRecipientRequests:e.ordinarySignerMaterialRecipientRequests,registeredAtMs:Date.now()}),p=await this.requireAuthenticatedTransport().registerTargetCredentialV1({registration:f});if(this.assertCurrentRun(e.runEpoch),this.targetCredentialRegistrationResult=p,o=new Uint8Array(a).slice(),await this.ports.keyMaterial.prepareOrdinarySignerMaterialV1({keyMaterial:this.requireKeyMaterialHandleV1(),targetFactor:p.targetFactor,preparations:p.ordinarySignerMaterialPreparations,recipientRequests:p.ordinarySignerMaterialRecipientRequests,recipientInputs:this.requireOrdinarySignerMaterialRecipientPreparationV1().recipientInputs,factorSecret:a}),a=null,this.assertCurrentRun(e.runEpoch),eV({flowId:this.flowId,linkSessionId:e.preparation.linkSessionId,stage:`ordinary_signer_material_prepared`}),!o)throw Error(`linked-device Email OTP factor runtime is unavailable`);this.emailOtpTargetActivationState={kind:`completed`,runEpoch:e.runEpoch,enrollment:d?{kind:`existing_enrollment`}:{kind:`new_enrollment`},factorSecret:o,providerUserId:s.providerUserId},o=null,this.notifyEmailOtpActivationV1({kind:`completed`,maskedEmailHint:e.challenge.maskedEmailHint})}catch(t){if(a&&a.byteLength>0&&new Uint8Array(a).fill(0),o?.fill(0),i&&await sB(this.ports.ed25519ExportRoot,i),this.isCurrentRun(e.runEpoch)){let n=L(t)||`Email OTP activation is unavailable`;this.emailOtpTargetActivationState={kind:`failed`,runEpoch:e.runEpoch,message:n},this.notifyEmailOtpActivationV1({kind:`unavailable`,message:n}),await this.cancelFailedPrecommitSession(e.event).catch(()=>void 0)}throw t}}activateTargetCredential(e){if(!this.isCurrentRun(e.runEpoch))return Promise.reject(new cV);switch(this.targetCredentialActivationState.kind){case`idle`:break;case`in_progress`:return this.targetCredentialActivationState.runEpoch===e.runEpoch?this.targetCredentialActivationState.promise:Promise.reject(new cV);case`factor_ready`:return this.targetCredentialActivationState.runEpoch===e.runEpoch?Promise.reject(Error(`Device-link target passkey activation has already completed`)):Promise.reject(new cV);default:return gV(this.targetCredentialActivationState)}let t=this.runTargetCredentialActivation(e);return this.targetCredentialActivationState={kind:`in_progress`,runEpoch:e.runEpoch,promise:t},t}async runTargetCredentialActivation(e){try{let t=await this.createTargetCredential(e),n=this.targetCredentialActivationState;if(!this.isCurrentRun(e.runEpoch)||n.kind!==`in_progress`||n.runEpoch!==e.runEpoch)throw yV(t),new cV;this.targetCredentialActivationState={kind:`factor_ready`,runEpoch:e.runEpoch,factorSecret:t}}catch(t){throw this.isCurrentRun(e.runEpoch)&&await this.handleSessionTransportFailure(e.event,t),t}finally{let t=this.targetCredentialActivationState;t.kind===`in_progress`&&t.runEpoch===e.runEpoch&&(this.targetCredentialActivationState={kind:`idle`})}}async waitForTargetCredentialActivation(){switch(this.requireSessionTargetFactorV1().kind){case`passkey_prf`:{let e=this.targetCredentialActivationState;if(e.kind===`in_progress`&&await e.promise,this.targetCredentialActivationState.kind!==`factor_ready`)throw Error(`linked-device target Passkey activation is incomplete`);return}case`email_otp`:{let e=this.emailOtpTargetActivationState;if(e.kind===`submitting`&&await e.promise,this.emailOtpTargetActivationState.kind!==`completed`)throw Error(`linked-device target Email OTP activation is incomplete`);return}default:throw Error(`linked-device target factor is unsupported`)}}clearTargetCredentialActivationState(){let e=this.targetCredentialActivationState;e.kind===`factor_ready`&&yV(e.factorSecret),this.targetCredentialActivationState={kind:`idle`}}async createTargetCredential(e){let{runEpoch:t,deviceId:n,preparation:r}=e;if(!this.keyMaterialHandle||!this.session)throw Error(`device-link key material is unavailable`);let i=this.requireAuthenticatedTransport();eV({flowId:this.flowId,linkSessionId:r.linkSessionId,stage:`target_passkey_prompt_started`});let a=r.ed25519ExportRoot,o=a===null?Promise.resolve(null):aB({ed25519ExportRoot:this.ports.ed25519ExportRoot,transport:i,identity:{linkSessionId:r.linkSessionId,walletId:r.walletId,walletKeyId:a.walletKeyId,enrollmentId:r.enrollmentId,deviceId:n,applicationBindingDigestB64u:a.applicationBindingDigestB64u,registeredPublicKeyB64u:a.registeredPublicKeyB64u,targetFactor:r.targetFactor,revocationEpoch:a.revocationEpoch},registeredAtMs:Date.now()});o.catch(()=>void 0);let s=null,c=null;try{if(s=await this.ports.targetCredential.createTargetCredentialV1({preparation:r,keyMaterial:this.keyMaterialHandle}),s.walletAuthMethodId!==r.walletAuthMethodId)throw Error(`linked-device target credential returned a different auth method`);if(eV({flowId:this.flowId,linkSessionId:r.linkSessionId,stage:`target_passkey_created`}),this.emit({phase:Cs.STEP_02_QR_SCAN_STARTED,status:`running`,message:`Finishing linked-device setup`,data:{role:`display`},interaction:{kind:`qr_display`,overlay:`show`}}),c=await o,c&&eV({flowId:this.flowId,linkSessionId:r.linkSessionId,stage:`export_root_recipient_published`}),this.assertCurrentRun(t),a!==null){if(!c)throw Error(`linked-device Ed25519 export-root recipient is unavailable`);let e=CV(),n=Yo({rpId:xV(r),credentialIdB64u:s.webauthnRegistration.credentialIdB64u}),i=await this.acceptTargetExportRootV1({preparation:r,exportRoot:a,recipient:c,envelopeId:e,factor:n,replacementFactorSecret:s.factorSecret,runEpoch:t});eV({flowId:this.flowId,linkSessionId:r.linkSessionId,stage:`export_root_accepted`}),this.resealedExportRoot=i,c=null}this.assertCurrentRun(t);let e=await Ui(r),n=Gi({linkSessionId:r.linkSessionId,walletId:r.walletId,enrollmentId:r.enrollmentId,deviceId:r.deviceId,walletAuthMethodId:s.walletAuthMethodId,targetFactor:{kind:`passkey_prf`},targetPreparationDigestB64u:e,webauthnRegistration:s.webauthnRegistration,ordinarySignerMaterialRecipientRequests:this.requireOrdinarySignerMaterialRecipientPreparationV1().recipientRequests,registeredAtMs:Date.now()}),l=await i.registerTargetCredentialV1({registration:n});return this.assertCurrentRun(t),this.targetCredentialRegistrationResult=l,await this.ports.keyMaterial.prepareOrdinarySignerMaterialV1({keyMaterial:this.requireKeyMaterialHandleV1(),targetFactor:l.targetFactor,preparations:l.ordinarySignerMaterialPreparations,recipientRequests:l.ordinarySignerMaterialRecipientRequests,recipientInputs:this.requireOrdinarySignerMaterialRecipientPreparationV1().recipientInputs,factorSecret:s.factorSecret.slice().buffer}),this.assertCurrentRun(t),eV({flowId:this.flowId,linkSessionId:r.linkSessionId,stage:`ordinary_signer_material_prepared`}),s.factorSecret}catch(e){if(s&&yV(s.factorSecret),!c)try{c=await o}catch{}throw c&&await sB(this.ports.ed25519ExportRoot,c),e}}async acceptTargetExportRootV1(e){let{preparation:t,exportRoot:n}=e,r=es({linkSessionId:t.linkSessionId,walletKeyId:n.walletKeyId,targetFactor:t.targetFactor,applicationBindingDigestB64u:n.applicationBindingDigestB64u,registeredPublicKeyB64u:n.registeredPublicKeyB64u,enrollmentId:t.enrollmentId,deviceId:t.deviceId,revocationEpoch:n.revocationEpoch});return await oB({ed25519ExportRoot:this.ports.ed25519ExportRoot,transport:this.requireAuthenticatedTransport(),recipient:e.recipient,replacementEnvelope:uB({walletId:t.walletId,ownership:ts(t.walletAuthMethodId),envelopeId:e.envelopeId,factor:e.factor,binding:r,createdAtMs:Date.now()}),replacementFactorSecret:e.replacementFactorSecret,expiresAtMs:Math.min(t.expiresAtMs,this.requireSessionV1().qrData.expiresAtMs),assertCurrentRun:()=>this.assertCurrentRun(e.runEpoch),waitForPollV1:rV})}assertTargetPreparationMatchesSession(e){let t=this.requireSessionTargetFactorV1(),n=this.requireSessionV1().qrData;if(e.preparation.linkSessionId!==e.linkSessionId||String(e.preparation.deviceId)!==String(e.state.deviceId)||e.preparation.targetFactor.kind!==t.kind||e.preparation.deliveryRecipientPublicKey65B64u!==this.requireDeliveryRecipientPublicKey65B64u()||e.preparation.expiresAtMs<=Date.now())throw Error(`linked-device target preparation does not match the claimed session`);if(t.kind===`email_otp`&&n.targetFactor.kind===`email_otp`&&e.preparation.targetFactor.kind===`email_otp`&&e.preparation.targetEmail!==n.targetEmail)throw Error(`linked-device target preparation email does not match the QR session`)}async activateAuthorityForStateV1(e,t){this.assertCurrentRun(t),await this.waitForTargetCredentialActivation(),this.assertCurrentRun(t);let n=this.targetCredentialRegistrationResult;if(!n)throw Error(`linked-device target credential registration is unavailable`);let r=this.requireKeyMaterialHandleV1(),i=this.requireAuthenticatedTransport(),a=await this.ports.readExpectedLockGenerationV1(n.walletId);this.assertCurrentRun(t);let o=this.committedAuthorityPackages||await i.receiveCommittedAuthorityPackagesV1({linkSessionId:this.requireSessionV1().linkSessionId});this.committedAuthorityPackages=o,await this.ports.authorityInstallation.persistCommittedDeliveryResumeV1({linkSessionId:this.requireSessionV1().linkSessionId,committed:o,targetFactor:n.targetFactor,committedAtMs:Date.now()}),this.assertCurrentRun(t);let s=this.requireSessionV1().qrData.expiresAtMs,c=0;for(;Date.now()<s;){let s=await BB({transport:i,committed:o,installation:this.ports.authorityInstallation,sessionState:e,linkSessionId:this.requireSessionV1().linkSessionId,targetFactor:n.targetFactor,keyMaterialPort:this.ports.keyMaterial,keyMaterial:r,deliveryRecipientPublicKey65B64u:this.requireDeliveryRecipientPublicKey65B64u(),resealedExportRoot:this.resealedExportRoot,expectedLockGeneration:a,nowMs:()=>Date.now()});if(s.kind!==`pending_local_install`)return s;await rV(c),this.assertCurrentRun(t),c+=1}throw new X(`Linked-device authority activation did not complete before the link session expired`,Z.REGISTRATION_FAILED,`registration`)}async finishActiveAuthorityV1(e,t,n,r){this.assertCurrentRun(r);let i=this.requireSessionV1(),a=this.targetCredentialRegistrationResult;if(!a||a.walletId!==t.walletId)throw Error(`linked-device activation identity is unavailable`);this.handledStates.add(`provisioning`),this.handledStates.add(`authority_pending_local_install`),this.handledStates.add(`active`);let o=this.getAuthenticationContext?.();if(!o)throw Error(`linked-device authentication context is unavailable`);let s=_V({targetFactor:a.targetFactor,walletAuthMethodId:a.walletAuthMethodId,targetCredentialActivationState:this.targetCredentialActivationState,emailOtpTargetActivationState:this.emailOtpTargetActivationState,walletId:t.walletId,runEpoch:r});await ax({context:o,factor:s.factor,walletSession:t,operationCredential:n,factorSecret32:s.factorSecret32});let c=this.committedAuthorityPackages;if(!c)throw Error(`linked-device committed authority packages are unavailable for acknowledgement`);let l=await this.ports.authorityInstallation.readLocalAuthorityInstallationReceiptV1({authorityId:t.authorityId});if(!l)throw Error(`linked-device installation receipt is unavailable for acknowledgement`);let u={kind:`local_authority_activation_final_ack_v1`,linkSessionId:i.qrData.linkSessionId,authorityId:t.authorityId,packageSetDigestB64u:c.packageSetDigestB64u,authorizationId:t.authorizationId,walletSessionId:n.walletSessionId,credentialDigestB64u:await Zr(n),installationReceiptDigestB64u:await fi(l),acknowledgedAtMs:Date.now()};await this.ports.authorityInstallation.persistPendingActivationAcknowledgementV1({acknowledgement:u});let d={walletSession:t,deviceId:e.deviceId,runEpoch:r};this.pendingActivationCompletion=d,await this.sendActivationAcknowledgementV1(u),await this.completeAcknowledgedActivationV1(d)}async completeAcknowledgedActivationV1(e){this.assertCurrentRun(e.runEpoch);let{walletSession:t}=e,n=this.requireSessionV1(),r=this.targetCredentialRegistrationResult,i=this.getAuthenticationContext?.();if(!r||!i)throw Error(`linked-device activation completion is unavailable`);this.session={linkSessionId:n.linkSessionId,qrData:n.qrData,state:{state:`active`,deviceId:e.deviceId,authorityId:t.authorityId,activatedAtMs:t.issuedAtMs}},i.signingEngine.setWalletAuthenticated(XB(t,r)),await this.cleanupCompletedLocalResources(),eV({flowId:this.flowId,linkSessionId:n.qrData.linkSessionId,stage:`post_link_runtime_ready`}),this.emit({phase:Cs.STEP_02_QR_SCAN_STARTED,status:`succeeded`,message:`Device link active`,walletId:String(t.walletId),data:{role:`display`,enrollmentId:String(r.enrollmentId)},interaction:{kind:`qr_display`,overlay:`hide`}})}requireAuthenticatedTransport(){if(!this.authenticatedTransport)throw new X(`Authenticated link-session transport is unavailable`,Z.UNSUPPORTED,`registration`);return this.authenticatedTransport}requireSessionTargetFactorV1(){if(!this.session)throw Error(`device-link session is unavailable`);return this.session.qrData.targetFactor}requireSessionV1(){if(!this.session)throw Error(`device-link session is unavailable`);return this.session}requireKeyMaterialHandleV1(){if(!this.keyMaterialHandle)throw Error(`device-link key material is unavailable`);return this.keyMaterialHandle}requireDeliveryRecipientPublicKey65B64u(){if(!this.deliveryRecipientPublicKey65B64u)throw Error(`device-link delivery recipient is unavailable`);return this.deliveryRecipientPublicKey65B64u}requireOrdinarySignerMaterialRecipientPreparationV1(){let e=this.ordinarySignerMaterialRecipientPreparation;if(!e)throw Error(`ordinary signer material recipient preparation is unavailable`);return e}startRun(){return this.clearRunActivationStateV1(),this.committedAuthorityPackages=null,this.deliveryRecoveryReason=null,this.runEpoch+=1,this.generationInProgress=!0,this.cancelled=!1,this.error=void 0,this.handledStates.clear(),this.runEpoch}isCurrentRun(e){return!this.cancelled&&this.runEpoch===e}assertCurrentRun(e){if(!this.isCurrentRun(e))throw new cV}handleSessionTransportEvent(e){this.sessionEventQueue=this.sessionEventQueue.then(this.handleSessionEvent.bind(this,e)).catch(this.handleSessionTransportFailure.bind(this,e))}async handleSessionTransportFailure(e,t){if(t instanceof cV)return;if(this.hasCommittedDeliveryState()){await this.handleCommittedDeliveryFailureV1(e,t);return}tV({flowId:this.flowId,linkSessionId:e.linkSessionId,state:e.state.state,error:t}),this.handledStates.delete(e.state.state);let n=aV(t,`registration`);this.error=n,this.emitFailure(n,`registration`),$B(this.options.options?.onError,n),await this.cancelFailedPrecommitSession(e).catch(()=>void 0),this.runEpoch+=1;try{await this.cleanupLocalResources()}catch{}}async handleCommittedDeliveryFailureV1(e,t){let n=oV(t);if(n){await this.requireExactMethodUnlockForCommittedDeliveryV1(e,n);return}eV({flowId:this.flowId,linkSessionId:e.linkSessionId,stage:`committed_delivery_retry_started`,details:{state:e.state.state,error:L(t)}}),this.handledStates.delete(e.state.state);try{await this.retryCommittedDeliveryV1(e)}catch(t){let n=oV(t);if(n){await this.requireExactMethodUnlockForCommittedDeliveryV1(e,n);return}tV({flowId:this.flowId,linkSessionId:e.linkSessionId,state:e.state.state,error:t})}}async requireExactMethodUnlockForCommittedDeliveryV1(e,t){this.deliveryRecoveryReason=t,this.handledStates.clear(),this.runEpoch+=1;let n=new X(sV(t),Z.DELIVERY_RECOVERY_REQUIRED,`registration`);this.error=n;try{await this.cleanupCompletedLocalResources()}catch(t){tV({flowId:this.flowId,linkSessionId:e.linkSessionId,state:e.state.state,error:t})}this.clearRunActivationStateV1(),this.committedAuthorityPackages=null,this.keyMaterialHandle=null,this.deliveryRecipientPublicKey65B64u=null,this.authenticatedTransport=null,this.subscription=null,this.emitFailure(n,`registration`),$B(this.options.options?.onError,n)}async retryCommittedDeliveryV1(e){if(!await this.replayPendingActivationAcknowledgementV1())switch(e.state.state){case`provisioning`:case`authority_pending_local_install`:case`active`:await this.replayCommittedAuthorityV1(e.state,this.runEpoch);return;default:throw Error(`committed link delivery cannot resume from ${e.state.state}`)}}async replayCommittedAuthorityV1(e,t){let n=await this.activateAuthorityForStateV1(e,t);if(n.kind!==`pending_local_install`){if(n.kind===`integrity_error`)throw new X(`Linked-device authority replay failed: ${n.reason}`,Z.REGISTRATION_FAILED,`registration`);if(n.kind===`failed_before_commit`)throw new X(`Linked-device authority replay cannot continue`,Z.REGISTRATION_FAILED,`registration`);await this.finishActiveAuthorityV1(e,n.session,n.operationCredential,t)}}async replayPendingActivationAcknowledgementV1(){let e=this.committedAuthorityPackages;if(!e)return!1;let t=await this.ports.authorityInstallation.readPendingActivationAcknowledgementV1({authorityId:e.authority.authorityId});if(!t)return!1;let n=this.requireSessionV1();if(t.linkSessionId!==n.qrData.linkSessionId||t.authorityId!==e.authority.authorityId||t.packageSetDigestB64u!==e.packageSetDigestB64u)throw Error(`pending linked-device acknowledgement identity is inconsistent`);let r=this.pendingActivationCompletion;if(!r||r.walletSession.authorizationId!==t.authorizationId)throw Error(`pending linked-device activation completion is unavailable`);return await this.sendActivationAcknowledgementV1(t),await this.completeAcknowledgedActivationV1(r),!0}async sendActivationAcknowledgementV1(e){await this.closeSessionSubscriptionV1();let t=this.requireAuthenticatedTransport();for(let n=1;n<=3;n+=1)try{await t.acknowledgeLocalAuthorityActivationV1({acknowledgement:e});break}catch(e){if(oV(e)||n===3)throw e}await this.ports.authorityInstallation.clearPendingActivationAcknowledgementV1({authorityId:e.authorityId}),await this.ports.authorityInstallation.clearCommittedDeliveryResumeV1({authorityId:e.authorityId})}async cancelFailedPrecommitSession(e){let t=this.authenticatedTransport;if(t)switch(e.state.state){case`claimed`:case`awaiting_target_factor`:case`awaiting_source_contribution`:case`provisioning`:{let n=Date.now();await this.cancelClaimedSessionV1(t,e.linkSessionId,n),this.session?.linkSessionId===e.linkSessionId&&(this.session={...this.session,state:{state:`cancelled`,cancelledAtMs:n}});return}case`displaying_qr`:case`authority_pending_local_install`:case`active`:case`expired`:case`cancelled`:case`failed_before_commit`:return;default:Ei(e.state)}}async cleanupLocalResources(e=!1){if(!e&&this.hasCommittedDeliveryState())return;let t=e&&this.hasCommittedDeliveryState();t||this.clearRunActivationStateV1();let n,r=this.subscription;if(r)try{await r.close(),this.subscription===r&&(this.subscription=null)}catch(e){n=e}if(!n)try{await this.discardKeyMaterial()}catch(e){n=e}if(n)throw n;t&&(this.clearRunActivationStateV1(),this.committedAuthorityPackages=null)}clearRunActivationStateV1(){this.pendingActivationCompletion=null,this.clearTargetCredentialActivationState(),this.clearEmailOtpTargetActivationState(),this.resealedExportRoot=null,this.targetCredentialRegistrationResult=null,this.ordinarySignerMaterialRecipientPreparation=null}async closeSessionSubscriptionV1(){let e=this.subscription;e&&(await e.close(),this.subscription===e&&(this.subscription=null))}async cleanupCompletedLocalResources(){await this.cleanupLocalResources(!0)}clearEmailOtpTargetActivationState(){let e=this.emailOtpTargetActivationState;e.kind===`completed`&&mV(e).factorSecret.fill(0),this.emailOtpTargetActivationState={kind:`idle`}}hasCommittedDeliveryState(){return this.committedAuthorityPackages!==null||this.keyMaterialHandle!==null&&(this.session?.state.state===`authority_pending_local_install`||this.session?.state.state===`active`)}async discardKeyMaterial(){let e=this.keyMaterialHandle;if(!e)return;if(this.discardInProgress)return await this.discardInProgress;let t=this.ports.keyMaterial.discardKeyMaterialV1({handle:e});this.discardInProgress=t;try{await t,this.keyMaterialHandle===e&&(this.keyMaterialHandle=null,this.deliveryRecipientPublicKey65B64u=null,this.authenticatedTransport=null)}finally{this.discardInProgress===t&&(this.discardInProgress=null)}}emitFailure(e,t){this.emit({phase:t===`generation`?Cs.STEP_01_QR_PREPARE_STARTED:Cs.FAILED,status:`failed`,message:e.message,data:{role:`display`},interaction:{kind:`qr_display`,overlay:`hide`},error:{code:e.code,message:e.message,retryable:e.code!==Z.UNSUPPORTED&&e.code!==Z.DELIVERY_RECOVERY_REQUIRED}})}emit(e){this.options.options?.onEvent?.(_s({flowId:this.flowId,...e}))}};function OV(e){let t=e.getState();if(t.cancelled||t.error||!t.session)return!0;switch(t.session.state.state){case`active`:case`expired`:case`cancelled`:case`failed_before_commit`:return!0;case`displaying_qr`:case`claimed`:case`awaiting_target_factor`:case`awaiting_source_contribution`:case`provisioning`:case`authority_pending_local_install`:return!1;default:return Ei(t.session.state)}}var kV=class{constructor(e){this.activeDeviceLinkFlow=null,this.activeOwnerLinkCancellation=null,this.deps=e}async startDevice2LinkingFlow(e){if(this.activeDeviceLinkFlow&&OV(this.activeDeviceLinkFlow)&&(this.activeDeviceLinkFlow=null),this.activeDeviceLinkFlow)throw Error(`Device-link QR flow is already running`);let t=new DV(e,this.deps.ports,this.deps.getContext);this.activeDeviceLinkFlow=t;try{return await t.generateQR()}catch(e){throw this.activeDeviceLinkFlow===t&&(this.activeDeviceLinkFlow=null),e}}async cancelDeviceLinking(){if(this.activeDeviceLinkFlow&&OV(this.activeDeviceLinkFlow)&&(this.activeDeviceLinkFlow=null),this.activeDeviceLinkFlow){await this.activeDeviceLinkFlow.cancel(),this.activeDeviceLinkFlow=null;return}let e=this.activeOwnerLinkCancellation;e&&(await this.deps.ports.transport.cancelClaimedSessionV1(e),this.activeOwnerLinkCancellation===e&&(this.activeOwnerLinkCancellation=null))}async scanAndLinkDevice(e,t){return await Hz(this.deps.getContext(),e,t,this.deps.ports,this.registerOwnerLinkCancellationV1.bind(this))}registerOwnerLinkCancellationV1(e){this.activeOwnerLinkCancellation=e}};function AV(e){let t=c(e.authMethod.walletAuthMethodId);if(!t.ok)throw Error(t.error.message);let n=St(e.verificationDigestB64u);return e.kind===`verified_passkey_target_v1`?{kind:`passkey`,walletAuthMethodId:t.value,verificationDigestB64u:n,rpId:e.authMethod.rpId,credentialIdB64u:e.authMethod.credentialIdB64u}:{kind:`email_otp`,walletAuthMethodId:t.value,verificationDigestB64u:n,emailHashHex:e.authMethod.emailHashHex,registrationAuthorityId:e.authMethod.registrationAuthorityId}}function jV(e){return{async prepareOrdinarySignerMaterialV1(t){if(!(t.factorSecret instanceof ArrayBuffer)||t.factorSecret.byteLength!==32)throw Error(`ordinary signer material factorSecret must be 32 bytes`);let n=PV(t.preparations),r=IV(t.recipientRequests),i=RV(t.recipientInputs);VV(i,r);let a=[t.factorSecret,...BV(i)];return NV(await e({kind:`device_linking_ordinary_signer_material_prepare_private_v1`,handleId:D(t.keyMaterial.handleId,`keyMaterial.handleId`,`is required`),targetFactor:AV(t.targetFactor),preparations:n,recipientRequests:r,recipientInputs:i,factorSecret:t.factorSecret},a))},async createOrdinarySignerMaterialRecipientRequestsV1(t){return LV(await e({kind:`device_linking_ordinary_signer_material_recipient_prepare_v1`,handleId:D(t.keyMaterial.handleId,`keyMaterial.handleId`,`is required`),requirements:FV(t.requirements)}))},async sealCommittedAuthorityPackagesV1(t){let n=Si(t.committed);return qV(await e({kind:`device_linking_ordinary_signer_material_seal_v1`,handleId:D(t.keyMaterial.handleId,`keyMaterial.handleId`,`is required`),committed:n,targetFactor:AV(t.targetFactor),resealedExportRoot:MV(t.resealedExportRoot)}))}}}function MV(e){if(e===null)return null;if(!J(e,[`envelope`]))throw Error(`ordinary material resealed export root has unsupported fields`);return{envelope:Xo(e.envelope)}}function NV(e){if(!J(e,[`kind`,`targetFactor`,`preparations`]))throw Error(`ordinary material preparation result has invalid fields`);if(e.kind!==`device_linking_ordinary_signer_material_preparation_v1`)throw Error(`ordinary material preparation result kind is invalid`);return{kind:`device_linking_ordinary_signer_material_preparation_v1`,targetFactor:GV(e.targetFactor),preparations:PV(e.preparations)}}function PV(e){if(!Array.isArray(e)||e.length===0||e.length>2)throw Error(`ordinary signer material preparations must contain one or two entries`);let t=e.map(WV),n=t.map(e=>`kind`in e?`ed25519`:`ecdsa_secp256k1`);if(new Set(n).size!==t.length)throw Error(`ordinary signer material preparations repeat a key family`);let r=t.map(e=>`kind`in e?e.targetMaterialActivation:e.target.activation);if(r.length===2&&r[0].activationId===r[1].activationId)throw Error(`ordinary signer material preparations repeat an activation reference`);let i=t[0];if(!i)throw Error(`ordinary signer material preparations are empty`);return[i,...t.slice(1)]}function FV(e){if(!Array.isArray(e)||e.length===0||e.length>2)throw Error(`ordinary signer material recipient requirements must contain one or two entries`);let t=e.map((e,t)=>{if(!J(e,[`kind`,`keyFamily`,`walletKeyId`]))throw Error(`ordinary recipient requirement ${t} has invalid fields`);if(e.kind!==`ordinary_signer_material_recipient_requirement_v1`)throw Error(`ordinary recipient requirement kind is invalid`);if(e.keyFamily!==`ed25519`&&e.keyFamily!==`ecdsa_secp256k1`)throw Error(`ordinary recipient requirement key family is invalid`);let n=UV(e.walletKeyId);return{kind:e.kind,keyFamily:e.keyFamily,walletKeyId:n}});HV(t);let n=t[0];if(!n)throw Error(`ordinary recipient requirements are empty`);return[n,...t.slice(1)]}function IV(e){if(!Array.isArray(e)||e.length===0||e.length>2)throw Error(`ordinary signer material recipient requests must contain one or two entries`);let t=e.map(e=>{if(J(e,[`kind`,`keyFamily`,`walletKeyId`,`recipientPublicKeyB64u`])){if(e.kind!==`ordinary_ed25519_signer_material_recipient_request_v1`||e.keyFamily!==`ed25519`)throw Error(`ordinary Ed25519 recipient request kind is invalid`);return{kind:`ordinary_ed25519_signer_material_recipient_request_v1`,keyFamily:`ed25519`,walletKeyId:UV(e.walletKeyId),recipientPublicKeyB64u:JV(e.recipientPublicKeyB64u,`Ed25519 recipient public key`)}}if(J(e,[`kind`,`keyFamily`,`walletKeyId`,`clientEphemeralPublicKey`])){if(e.kind!==`ordinary_ecdsa_signer_material_recipient_request_v1`||e.keyFamily!==`ecdsa_secp256k1`)throw Error(`ordinary ECDSA recipient request kind is invalid`);return{kind:`ordinary_ecdsa_signer_material_recipient_request_v1`,keyFamily:`ecdsa_secp256k1`,walletKeyId:UV(e.walletKeyId),clientEphemeralPublicKey:D(e.clientEphemeralPublicKey,`ECDSA client ephemeral public key`,`is required`)}}throw Error(`ordinary recipient request key family is invalid`)});HV(t);let n=t[0];if(!n)throw Error(`ordinary recipient requests are empty`);return[n,...t.slice(1)]}function LV(e){if(!J(e,[`kind`,`recipientRequests`,`recipientInputs`]))throw Error(`ordinary recipient preparation result has invalid fields`);if(e.kind!==`device_linking_ordinary_signer_material_recipient_preparation_v1`)throw Error(`ordinary recipient preparation result kind is invalid`);let t=IV(e.recipientRequests),n=RV(e.recipientInputs);return VV(n,t),{recipientRequests:t,recipientInputs:n}}function RV(e){if(!Array.isArray(e)||e.length===0||e.length>2)throw Error(`ordinary signer material recipient inputs must contain one or two entries`);let t=e.map(e=>{if(J(e,[`kind`,`keyFamily`,`walletKeyId`,`recipientPrivateKey`])){if(e.kind!==`ordinary_ed25519_signer_material_recipient_input_v1`||e.keyFamily!==`ed25519`)throw Error(`ordinary Ed25519 recipient input kind is invalid`);return{kind:`ordinary_ed25519_signer_material_recipient_input_v1`,keyFamily:`ed25519`,walletKeyId:UV(e.walletKeyId),recipientPrivateKey:zV(e.recipientPrivateKey,`Ed25519 recipient private key`)}}if(J(e,[`kind`,`keyFamily`,`walletKeyId`,`clientEphemeralPrivateKey`])){if(e.kind!==`ordinary_ecdsa_signer_material_recipient_input_v1`||e.keyFamily!==`ecdsa_secp256k1`)throw Error(`ordinary ECDSA recipient input kind is invalid`);return{kind:`ordinary_ecdsa_signer_material_recipient_input_v1`,keyFamily:`ecdsa_secp256k1`,walletKeyId:UV(e.walletKeyId),clientEphemeralPrivateKey:zV(e.clientEphemeralPrivateKey,`ECDSA client ephemeral private key`)}}throw Error(`ordinary recipient input key family is invalid`)});HV(t);let n=t[0];if(!n)throw Error(`ordinary recipient inputs are empty`);return[n,...t.slice(1)]}function zV(e,t){if(!(e instanceof ArrayBuffer)||e.byteLength!==32)throw Error(`${t} must be a 32-byte ArrayBuffer`);return e}function BV(e){return e.map(e=>e.kind===`ordinary_ed25519_signer_material_recipient_input_v1`?e.recipientPrivateKey:e.clientEphemeralPrivateKey)}function VV(e,t){if(e.length!==t.length)throw Error(`ordinary recipient inputs and requests have different lengths`);for(let n of t)if(e.filter(e=>e.walletKeyId===n.walletKeyId&&e.keyFamily===n.keyFamily).length!==1)throw Error(`ordinary recipient input for ${String(n.walletKeyId)} is missing or duplicated`)}function HV(e){let t=new Set,n=new Set;for(let r of e){if(t.has(r.keyFamily))throw Error(`ordinary recipient family repeats`);if(n.has(String(r.walletKeyId)))throw Error(`ordinary recipient wallet key repeats`);t.add(r.keyFamily),n.add(String(r.walletKeyId))}let r=e[0];if(e.length===2&&r?.keyFamily!==`ed25519`)throw Error(`ordinary recipient requests must be ordered Ed25519 then ECDSA`)}function UV(e){let t=h(e);if(!t.ok)throw Error(t.error.message);return t.value}function WV(e){return Ao(e)}function GV(e){if(J(e,[`kind`,`walletAuthMethodId`,`verificationDigestB64u`,`rpId`,`credentialIdB64u`])){if(e.kind!==`passkey`)throw Error(`ordinary material target factor kind is unsupported`);let t=c(e.walletAuthMethodId);if(!t.ok)throw Error(t.error.message);let n=St(e.verificationDigestB64u);return{kind:`passkey`,walletAuthMethodId:t.value,verificationDigestB64u:n,rpId:D(e.rpId,`ordinary target factor rpId`,`is required`),credentialIdB64u:JV(e.credentialIdB64u,`ordinary target factor credentialIdB64u`)}}if(J(e,[`kind`,`walletAuthMethodId`,`verificationDigestB64u`,`emailHashHex`,`registrationAuthorityId`])){if(e.kind!==`email_otp`)throw Error(`ordinary material target factor kind is unsupported`);let t=c(e.walletAuthMethodId);if(!t.ok)throw Error(t.error.message);let n=St(e.verificationDigestB64u),r=D(e.emailHashHex,`ordinary target factor emailHashHex`,`is required`);if(!/^[0-9a-f]{64}$/.test(r))throw Error(`ordinary target factor emailHashHex is invalid`);return{kind:`email_otp`,walletAuthMethodId:t.value,verificationDigestB64u:n,emailHashHex:r,registrationAuthorityId:D(e.registrationAuthorityId,`ordinary target factor registrationAuthorityId`,`is required`)}}throw Error(`ordinary material target factor kind is unsupported`)}function KV(e){if(!J(e,[`kind`,`authorityId`,`walletAuthMethodId`,`walletKeyId`,`envelope`]))throw Error(`ordinary material export-root record has invalid fields`);if(e.kind!==`wallet_authority_export_root_v1`)throw Error(`ordinary material export-root record kind is invalid`);let t=r(e.authorityId);if(!t.ok)throw Error(t.error.message);let n=c(e.walletAuthMethodId);if(!n.ok)throw Error(n.error.message);let i=h(e.walletKeyId);if(!i.ok)throw Error(i.error.message);return{kind:`wallet_authority_export_root_v1`,authorityId:t.value,walletAuthMethodId:n.value,walletKeyId:i.value,envelope:Xo(e.envelope)}}function qV(e){if(!J(e,[`signerMaterials`,`exportRoot`,`installedRecordSetDigestB64u`])||!Array.isArray(e.signerMaterials)||e.signerMaterials.length===0)throw Error(`ordinary material worker returned an invalid sealed record set`);let t=e.signerMaterials.map(e=>Es(e)),n=t[0];if(!n)throw Error(`ordinary material worker returned an invalid sealed record set`);return{signerMaterials:[n,...t.slice(1)],exportRoot:e.exportRoot===null?null:KV(e.exportRoot),installedRecordSetDigestB64u:St(e.installedRecordSetDigestB64u)}}function JV(e,t){let n=D(e,t,`is required`),r;try{r=F(n)}catch{throw Error(`${t} is invalid base64url`)}if(r.length===0||P(r)!==n)throw r.fill(0),Error(`${t} must be canonical non-empty base64url`);return r.fill(0),n}function YV(e,t){if(typeof e!=`string`||e.trim()!==e||e.length===0)throw Error(`${t} is required`);return e}function XV(e,t){try{return St(e)}catch(e){throw Error(`${t} ${e instanceof Error?e.message:`is invalid`}`)}}function ZV(e,t,n){let r=YV(e,n);if(!/^[A-Za-z0-9_-]+$/.test(r))throw Error(`${n} is invalid`);let i;try{i=F(r)}catch{throw Error(`${n} is invalid`)}if(i.length!==t||P(i)!==r)throw Error(`${n} must be canonical base64url`);return i.fill(0),r}function QV(e){if(!J(e,[`kind`,`handleId`]))throw Error(`device-linking key handle has invalid fields`);let t=e;if(t.kind!==`device_linking_key_material_handle_v1`)throw Error(`device-linking key handle kind is invalid`);return{kind:`device_linking_key_material_handle_v1`,handleId:YV(t.handleId,`device-linking key handle.handleId`)}}function $V(e){if(!J(e,[`handleId`,`linkPublicKeyB64u`,`devicePublicKeyB64u`,`deliveryRecipientPublicKey65B64u`]))throw Error(`device-linking key create response has invalid fields`);let t=e;return{handle:{kind:`device_linking_key_material_handle_v1`,handleId:YV(t.handleId,`device-linking key create handleId`)},linkPublicKeyB64u:hi(t.linkPublicKeyB64u),devicePublicKeyB64u:hi(t.devicePublicKeyB64u),deliveryRecipientPublicKey65B64u:ZV(t.deliveryRecipientPublicKey65B64u,65,`deliveryRecipientPublicKey65B64u`)}}function eH(e){if(!J(e,[`kind`,`verificationGrant`,`factorSecret`]))throw Error(`device-linking Email OTP factor release response has invalid fields`);let t=e;if(t.kind!==`device_linking_email_otp_factor_release_result_v1`)throw Error(`device-linking Email OTP factor release response kind is invalid`);if(!(t.factorSecret instanceof ArrayBuffer)||t.factorSecret.byteLength!==32)throw Error(`device-linking Email OTP factor release secret is invalid`);return{kind:`device_linking_email_otp_factor_release_result_v1`,verificationGrant:ui(t.verificationGrant),factorSecret:t.factorSecret}}function tH(e){return st(e)}function nH(e){if(!J(e,[`signatureB64u`]))throw Error(`device-linking request signature response has invalid fields`);return{signatureB64u:ZV(e.signatureB64u,64,`signatureB64u`)}}function rH(e){if(J(e,[`id`,`ok`,`result`])&&e.ok===!0){let t=e.id;return typeof t!=`string`||t.trim()!==t||t.length===0?null:{id:t,ok:!0,result:e.result}}if(J(e,[`id`,`ok`,`error`])&&e.ok===!1){let t=e.id;return typeof t!=`string`||t.trim()!==t||t.length===0||typeof e.error!=`string`||!e.error.trim()?null:{id:t,ok:!1,error:e.error}}return null}function iH(){if(!globalThis.crypto||typeof globalThis.crypto.getRandomValues!=`function`)throw Error(`secure randomness is unavailable for device-linking worker`);let e=globalThis.crypto.getRandomValues(new Uint8Array(16)),t=`device-linking-${P(e)}`;return e.fill(0),t}function aH(e){return e!==void 0&&Number.isSafeInteger(e)&&e>0?e:6e4}function oH(e){return e instanceof Error?e:typeof e==`string`&&e.trim()?Error(e):Error(`device-linking worker failed`)}function sH(){if(typeof Worker>`u`)throw Error(`device-linking worker is unavailable; provide an authenticated worker endpoint`);let e=bf(void 0,{worker:`deviceLinking`});return new Worker(e,{type:`module`})}function cH(e){if(!e.startsWith(`/`)||e.includes(`?`)||e.includes(`#`)||e.trim()!==e)throw Error(`canonicalPath is invalid`);return e}function lH(e,t){if(!Number.isSafeInteger(e)||e<=0)throw Error(`${t} is invalid`);return e}function uH(e){let t=g(e.linkSessionId);if(!t.ok)throw Error(t.error.message);if(e.method!==`GET`&&e.method!==`POST`)throw Error(`method is invalid`);let n=lH(e.expiresAtMs,`expiresAtMs`),r=lH(e.issuedAtMs,`issuedAtMs`);if(n<=r)throw Error(`expiresAtMs must be after issuedAtMs`);return{kind:`device_linking_request_sign_v1`,handleId:YV(e.handle.handleId,`handle.handleId`),linkSessionId:t.value,method:e.method,canonicalPath:cH(e.canonicalPath),bodyDigestB64u:XV(e.bodyDigestB64u,`bodyDigestB64u`),devicePublicKeyDigestB64u:XV(e.devicePublicKeyDigestB64u,`devicePublicKeyDigestB64u`),challengeB64u:ZV(e.challengeB64u,32,`challengeB64u`),issuedAtMs:r,expiresAtMs:n}}function dH(e={}){let t=aH(e.timeoutMs),n=new Map,i=e.endpoint??null,a=!1,s=e=>{let t=rH(e.data);if(!t)return;let r=n.get(t.id);r&&(clearTimeout(r.timeoutId),n.delete(t.id),t.ok?r.resolve(t.result):r.reject(Error(t.error)))},l=e=>{let t=oH(e.message);for(let[e,r]of n)clearTimeout(r.timeoutId),n.delete(e),r.reject(t)},u=e=>{e.addEventListener(`message`,s),e.addEventListener(`error`,l)};e.endpoint&&(u(e.endpoint),i=e.endpoint);let d=()=>{if(i)return i;let e=sH();try{return u(e),i=e,e}catch(t){throw e.terminate(),t}},p=()=>{if(a)return;a=!0;let e=i;e?.removeEventListener(`message`,s),e?.removeEventListener(`error`,l);let t=Error(`device-linking worker transport is closed`);for(let[e,r]of n)clearTimeout(r.timeoutId),n.delete(e),r.reject(t);e?.terminate(),i=null},m=(e,r)=>{if(a)return Promise.reject(Error(`device-linking worker transport is closed`));let i;try{i=d()}catch(e){return Promise.reject(oH(e))}let o=iH();return new Promise((a,s)=>{let c=setTimeout(()=>{n.delete(o),s(Error(`device-linking worker request timed out after ${t}ms`))},t);n.set(o,{resolve:a,reject:s,timeoutId:c});try{i.postMessage({id:o,request:e},r)}catch(e){clearTimeout(c),n.delete(o),s(oH(e))}})};return{...jV(m),close:p,async createBootstrapKeyMaterialV1(){return $V(await m({kind:`device_linking_key_material_create_v1`}))},async discardKeyMaterialV1(e){await m({kind:`device_linking_key_material_discard_v1`,handleId:QV(e.handle).handleId})},async openEmailOtpFactorReleaseV1(e){let t=QV(e.keyMaterial),n=o(e.walletId);if(!n.ok)throw Error(n.error.message);let r=g(e.linkSessionId);if(!r.ok)throw Error(r.error.message);let i=S(e.enrollmentId);if(!i.ok)throw Error(i.error.message);let a=f(e.deviceId);if(!a.ok)throw Error(a.error.message);let s=c(e.walletAuthMethodId);if(!s.ok)throw Error(s.error.message);let l=c(e.baseWalletAuthMethodId);if(!l.ok)throw Error(l.error.message);let u=XV(e.targetPreparationDigestB64u,`targetPreparationDigestB64u`),d=YV(e.expectedChallengeId,`expectedChallengeId`),p=ui(e.verificationGrant),h=yi(e.factorRelease);return eH(await m({kind:`device_linking_email_otp_factor_release_open_v1`,handleId:t.handleId,walletId:n.value,linkSessionId:r.value,enrollmentId:i.value,deviceId:a.value,walletAuthMethodId:s.value,baseWalletAuthMethodId:l.value,targetPreparationDigestB64u:u,expectedChallengeId:d,verificationGrant:p,factorRelease:h}))},async openWalletSessionCredentialDeliveryV1(e){let t=QV(e.keyMaterial),n=Ai(e.delivery),i=e.expected,a=o(i.walletId);if(!a.ok)throw Error(a.error.message);let s=r(i.authorityId);if(!s.ok)throw Error(s.error.message);let l=g(i.linkSessionId);if(!l.ok)throw Error(l.error.message);let u=c(i.walletAuthMethodId);if(!u.ok)throw Error(u.error.message);return tH(await m({kind:`device_linking_wallet_session_credential_delivery_open_v1`,handleId:t.handleId,delivery:n,expected:{...i,linkSessionId:l.value,walletId:a.value,authorityId:s.value,walletAuthMethodId:u.value,deliveryBinding:li(i.deliveryBinding)}}))},async signDeviceSessionRequestV1(e){return nH(await m(uH(e)))}}}function fH(e){return{claimSessionV1:async t=>pH(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${yH(t.request.payload.linkSessionId)}/claim`,body:t.request,authentication:t.authentication}),Mi),resolveEmailOtpBaseFactorV1:async t=>pH(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${yH(t.linkSessionId)}/email-otp-base-factor`,body:t.request,authentication:t.authentication}),ai),cancelClaimedSessionV1:async t=>pH(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${yH(t.linkSessionId)}/owner-cancel`,body:{expectedRevision:t.expectedRevision},authentication:t.authentication}),gH),recordOwnerApprovalV1:async t=>pH(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${yH(t.approval.linkSessionId)}/approval`,body:t.approval,authentication:t.authentication}),ti),getSourceContributionPreparationV1:async t=>{let n=await e.request.requestOwnerV1({method:`GET`,canonicalPath:`${yH(t.linkSessionId)}/source-contribution-preparation`,authentication:t.authentication});return n.status===204?null:pH(n,jo)},recordSourceContributionV1:async t=>pH(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${yH(t.approval.linkSessionId)}/source-contribution`,body:t.approval,authentication:t.authentication}),hH),getApprovalV1:e.approvalUpdates.getApprovalV1,getEd25519ExportRootRecipientV1:async t=>{let n=await e.request.requestOwnerV1({method:`GET`,canonicalPath:`${yH(t.linkSessionId)}/ed25519-export-root-recipient`,authentication:t.authentication});return n.status===204?null:pH(n,ji)},submitEd25519ExportRootPackageV1:async t=>{pH(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${yH(bH(t.submission.linkSessionId))}/ed25519-export-root`,body:t.submission,authentication:t.authentication}),e=>e)},subscribeApprovalV1:e.approvalUpdates.subscribeApprovalV1}}function pH(e,t){if(e.status<200||e.status>=300)throw Object.assign(Error(mH(e)),{status:e.status});return t(e.body)}function mH(e){let t=vH(e.body);return t?`linked-device owner request failed: ${t.message}`:`linked-device owner request failed with HTTP ${e.status}`}function hH(e){let t=_H(e);if(!t)throw Error(`linked-device source contribution response is invalid`);return ni(t.session)}function gH(e){let t=_H(e);if(!t)throw Error(`linked-device session response is invalid`);return ni(t.session)}function _H(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return null;let t=new Map(Object.entries(e)),n=[...t.keys()],r=new Set([`ok`,`outcome`,`session`]);return n.length!==r.size||!n.every(e=>r.has(e))||t.get(`ok`)!==!0||t.get(`outcome`)!==`applied`&&t.get(`outcome`)!==`replayed`?null:{session:t.get(`session`)}}function vH(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return null;let t=new Map(Object.entries(e)),n=[...t.keys()];if(n.length===0||n.length>2||!n.every(e=>e===`code`||e===`message`))return null;let r=t.get(`message`);return typeof r==`string`?{message:r}:null}function yH(e){return`${nz}/${String(e)}`}function bH(e){let t=g(e);if(!t.ok)throw Error(t.error.message);return t.value}function xH(e){let t=m(e);if(t.ok)return t.value;throw Error(t.error.message)}function SH(e){switch(e){case`ble`:case`cable`:case`hybrid`:case`internal`:case`nfc`:case`smart-card`:case`usb`:return e;default:throw Error(`linked-device WebAuthn transport ${e} is unsupported`)}}function CH(e){e.byteLength>0&&e.fill(0)}function wH(e){let t=e.credential.authenticatorAttachment;if(t!==void 0&&t!==`platform`&&t!==`cross-platform`)throw Error(`linked-device WebAuthn authenticator attachment is invalid`);return{kind:`linked_device_webauthn_registration_v1`,credentialIdB64u:xH(e.credentialIdB64u),authenticatorAttachment:t??null,clientDataJsonB64u:e.credential.response.clientDataJSON,attestationObjectB64u:e.credential.response.attestationObject,transports:e.credential.response.transports.map(SH)}}function TH(e){return{async createTargetCredentialV1(t){let n=t.preparation.passkeyCreationOptions;if(n.walletAuthMethodId!==t.preparation.walletAuthMethodId)throw Error(`linked-device passkey options are bound to a different auth method`);let r=await e.authenticator.run({kind:`create_passkey`,registrationOptions:n,requirePrfFirst:!0});if(!r.ok)throw Error(`linked-device passkey creation failed: ${r.message}`);if(r.operation!==`create_passkey`||!r.requirePrfFirst)throw Error(`linked-device passkey creation returned the wrong operation result`);let i=wH(r),a=F(r.prf.prfFirstB64u);if(a.byteLength!==32)throw CH(a),Error(`linked-device passkey PRF output must be 32 bytes`);return{walletAuthMethodId:n.walletAuthMethodId,webauthnRegistration:i,factorSecret:a}}}}function EH(e,t){return t.authorityId===e.authorityId&&t.linkSessionId===e.linkSessionId&&t.packageSetDigestB64u===e.packageSetDigestB64u}async function DH(e){let[t,n]=await Promise.all([e.installation.listCommittedDeliveryResumesV1(),e.installation.listPendingActivationAcknowledgementsV1()]);for(let r of n){let n=t.find(EH.bind(null,r));if(!n)throw Error(`durable linked-device acknowledgement has no matching resume`);let i=await e.readExactSession({walletId:n.walletId,authorityId:n.authorityId,authMethodId:n.authMethodId});i.kind!==`missing`&&await AB({installation:e.installation,transport:e.transport,walletId:n.walletId,authorityId:n.authorityId,authMethodId:n.authMethodId,operationCredential:i.operationCredential})}}async function OH(e){let t=await q.readExactWithOperationCredential(e);switch(t.kind){case`found`:return{kind:`found`,operationCredential:t.operationCredential};case`missing`:return{kind:`missing`};case`upgrade_required`:throw Error(`Linked-device acknowledgement requires a newer client`)}}function kH(e){let t=dH({...e.workerEndpoint?{endpoint:e.workerEndpoint}:{},...e.workerTimeoutMs===void 0?{}:{timeoutMs:e.workerTimeoutMs}}),n=_z({owner:fH({request:e.ownerRequest,approvalUpdates:e.ownerApprovalUpdates}),http:e.http,relayerUrl:e.relayerUrl,publishableKey:e.publishableKey,projectEnvironmentId:e.projectEnvironmentId,keyMaterial:t,nowMs:e.nowMs,pollIntervalMs:e.pollIntervalMs}),r=hz({http:e.http,relayerUrl:e.relayerUrl,projectEnvironmentId:e.projectEnvironmentId}),i=TH({authenticator:e.authenticator}),a=FB({indexedDB:K,sealing:t,nowMs:e.nowMs}),o=dB(e.custodyCeremonyTransport);return{transport:n,ownerAuthorization:e.ownerAuthorization,sourceContribution:e.sourceContribution,keyMaterial:t,targetCredential:i,authorityInstallation:a,readExpectedLockGenerationV1:async e=>{let t=await K.resolveSelectedWalletAuthority(String(e));if(t.kind===`missing_selection`)return 0;if(t.kind!==`resolved`)throw Error(`selected wallet authority is unavailable: ${t.kind}`);return t.selection.lockGeneration},ed25519ExportRoot:o,resumePendingAcknowledgementsV1:DH.bind(null,{installation:a,transport:r,readExactSession:OH}),dispose:t.close}}const AH=`/wallet/device-linking/v1/devices`;var jH=class extends Error{constructor(){super(`The owner Wallet Session must be renewed`),this.code=`owner_wallet_session_reauth_required`,this.name=`OwnerWalletSessionReauthRequiredError`}};function MH(e){let t=kH(e);return{linkedDeviceManagement:NH({request:e.managementRequest,authorizeRemoval:e.authorizeRemoval}),deviceLinkingPorts:t,dispose:t.dispose}}function NH(e){return{listLinkedDevices:async({walletId:t,limit:n,cursor:r})=>{let i=Yr({kind:`linked_device_list_request_v1`,walletId:t,limit:n,cursor:r}),a=`${AH}?walletId=${encodeURIComponent(String(i.walletId))}&limit=${encodeURIComponent(String(i.limit))}&cursor=${encodeURIComponent(i.cursor??``)}`,o=await e.request.request({method:`GET`,canonicalPath:a,walletId:i.walletId});return FH(o,`list linked devices`),LH(o.body)},revokeLinkedDevice:async({walletId:t,walletAuthMethodId:n})=>{let{requestedAtMs:r,sourceProof:i}=await e.authorizeRemoval({walletId:t,walletAuthMethodId:n}),a=si({kind:`linked_device_revoke_request_v1`,walletId:t,walletAuthMethodId:n,requestedAtMs:r}),o=async()=>await e.request.request({method:`POST`,canonicalPath:`${AH}/${encodeURIComponent(String(n))}/revoke`,body:{...a,sourceProof:i},walletId:t}),s;try{s=await o()}catch(e){if(!(e instanceof KC)||e.code!==`network_error`)throw e;s=await o()}return PH(s)}}}function PH(e){return e.status===404?ci({kind:`not_found`}):e.status===409?ci({kind:`conflict`}):e.status===401||e.status===403?ci({kind:`unauthorized`}):(FH(e,`revoke linked device`),zH(e.body))}function FH(e,t){if(e.status<200||e.status>=300){if(e.status===401&&HH(e.body))throw new jH;let n=IH(e.body);throw Error(n?`linked-device ${t} failed with HTTP ${e.status}: ${n}`:`linked-device ${t} failed with HTTP ${e.status}`)}}function IH(e){return typeof e!=`object`||!e||Array.isArray(e)?null:VH(e)||HH(e)?e.message:null}function LH(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`linked-device list response must be an object`);if(!RH(e))throw Error(`linked-device list response has unexpected fields`);if(e.ok!==!0)throw Error(`linked-device list response is not successful`);return ki({devices:e.devices,ownerDevices:e.ownerDevices,nextCursor:e.nextCursor})}function RH(e){return Object.keys(e).sort().join(`|`)===`devices|nextCursor|ok|ownerDevices`}function zH(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`linked-device revoke response must be an object`);if(!BH(e))throw Error(`linked-device revoke response has unexpected fields`);if(e.ok!==!0)throw Error(`linked-device revoke response is not successful`);return ci({kind:e.kind,walletAuthMethodId:e.walletAuthMethodId,authorityId:e.authorityId,revocationEpoch:e.revocationEpoch})}function BH(e){return Object.keys(e).sort().join(`|`)===`authorityId|kind|ok|revocationEpoch|walletAuthMethodId`}function VH(e){return Object.keys(e).sort().join(`|`)!==`kind|message|ok`||!(`ok`in e)||!(`kind`in e)||!(`message`in e)?!1:e.ok===!1&&(e.kind===`invalid_input`||e.kind===`internal`)&&typeof e.message==`string`&&e.message.trim().length>0}function HH(e){return typeof e!=`object`||!e||Array.isArray(e)||Object.keys(e).sort().join(`|`)!==`code|kind|message|ok`||!(`ok`in e)||!(`kind`in e)||!(`code`in e)||!(`message`in e)?!1:e.ok===!1&&e.kind===`unauthorized`&&typeof e.code==`string`&&typeof e.message==`string`&&e.message.trim().length>0}function UH(e){if(typeof e!=`string`||!e.trim())throw Error(`Yao lane request JSON is required`);return e}async function WH(e){let t=await ru({ctx:e.workerCtx,kind:`walletCustodyCeremony`,request:{type:`openEd25519YaoLaneSource`,payload:{kind:`unlocked_ed25519_export_root_capability`,capability:e.capability,applicationBindingDigestB64u:e.applicationBindingDigestB64u,walletKeyId:e.walletKeyId,enrollmentId:e.enrollmentId,revocationEpoch:e.revocationEpoch,registeredPublicKeyB64u:e.registeredPublicKeyB64u}}});return new GH(e.workerCtx,t.sourceHandle)}var GH=class{#e=!1;constructor(e,t){this.workerCtx=e,this.sourceHandle=t}async discard(){this.#e||(this.#e=!0,await ru({ctx:this.workerCtx,kind:`walletCustodyCeremony`,request:{type:`discardEd25519YaoLaneSource`,payload:{sourceHandle:this.sourceHandle}}}))}async prepareSourcePreservingRegistration(e){if(this.#e)throw Error(`Ed25519 Yao lane source is already consumed`);return this.#e=!0,{requestJson:UH((await ru({ctx:this.workerCtx,kind:`walletCustodyCeremony`,request:{type:`prepareEd25519YaoSourcePreservingRegistration`,payload:{sourceHandle:this.sourceHandle,targetAdmission:e.targetAdmission,applicationBinding:e.applicationBinding,participantIds:e.participantIds,expectedRegisteredPublicKeyB64u:e.expectedRegisteredPublicKeyB64u,targetClientRecipientPublicKeyB64u:e.targetClientRecipientPublicKeyB64u}}})).requestJson)}}};function KH(e){return async({preparation:t})=>{let n=t.source.activation,r=e.readLinkedEcdsaHolderV1({materialActivation:n});if(r)return qH(r,n);let i=await e.readActiveEcdsaCapabilityManifestV1({materialActivation:n});return JH({sourceActivation:n,manifest:i}),{walletKeyId:YH(i),sourceDerivation:{applicationBindingDigestB64u:St(i.durableMaterial.routerAbEcdsaDerivationNormalSigning.scope.context.application_binding_digest_b64u),clientShareRetryCounter:i.durableMaterial.routerAbEcdsaDerivationNormalSigning.scope.public_identity.client_share_retry_counter,ecdsaThresholdKeyId:os(i.durableMaterial.roleLocalBinding.ecdsaThresholdKeyId),sourceNormalSigning:i.durableMaterial.routerAbEcdsaDerivationNormalSigning}}}}function qH(e,t){if(!b(e.materialActivation,t))throw Error(`linked ECDSA holder activation does not match preparation`);let n=e.activationReceipt.normalSigning,r=n.scope,i=Bo({walletId:e.walletId,signingRootId:r.signing_root_id,signingRootVersion:r.signing_root_version}),a=h(`wallet-key:ecdsa:${e.walletId}:${i}`);if(!a.ok)throw Error(`linked ECDSA source wallet key identity: ${a.error.message}`);return{walletKeyId:a.value,sourceDerivation:{applicationBindingDigestB64u:St(r.context.application_binding_digest_b64u),clientShareRetryCounter:r.public_identity.client_share_retry_counter,ecdsaThresholdKeyId:os(e.ecdsaThresholdKeyId),sourceNormalSigning:n},linkedHolderHandleId:e.holderHandleId}}function JH(e){if(!b(e.manifest.activation.materialActivation,e.sourceActivation))throw Error(`ECDSA capability manifest activation does not match preparation`)}function YH(e){let t=Bo({walletId:e.signer.walletId,signingRootId:e.signer.signingRootId,signingRootVersion:e.signer.signingRootVersion}),n=h(`wallet-key:ecdsa:${e.signer.walletId}:${t}`);if(!n.ok)throw Error(`ECDSA source wallet key identity: ${n.error.message}`);return n.value}function XH(e){return{produceSourceContributionV1:async({preparation:t,capability:n,authentication:r})=>{let i=await WH({workerCtx:e.workerContext,capability:n,applicationBindingDigestB64u:await $H(t.applicationBinding),walletKeyId:String(t.walletKeyId),enrollmentId:String(t.enrollmentId),revocationEpoch:t.sourceRevocationEpoch,registeredPublicKeyB64u:t.sourceRegisteredPublicKeyB64u});try{let n=await i.prepareSourcePreservingRegistration({targetAdmission:t.targetAdmission,applicationBinding:t.applicationBinding,participantIds:t.participantIds,expectedRegisteredPublicKeyB64u:t.sourceRegisteredPublicKeyB64u,targetClientRecipientPublicKeyB64u:t.targetClientRecipientPublicKeyB64u}),a=Po(await e.executeSourcePreservingV1({linkSessionId:t.linkSessionId,sourceBinding:t.sourceBinding,targetRequestJson:n.requestJson,participantIds:t.participantIds,authentication:r}));return{kind:`linked_device_ed25519_source_contribution_v1`,keyFamily:`ed25519`,linkSessionId:t.linkSessionId,enrollmentId:t.enrollmentId,sourceAuthorityId:t.sourceAuthorityId,walletKeyId:t.walletKeyId,targetDeviceId:t.targetDeviceId,targetFactorVerificationDigestB64u:t.targetFactorVerificationDigestB64u,targetMaterialActivation:t.targetMaterialActivation,targetClientRecipientPublicKeyB64u:t.targetClientRecipientPublicKeyB64u,targetSigningWorkerRecipientPublicKeyB64u:t.targetSigningWorkerRecipientPublicKeyB64u,sourceRegisteredPublicKeyB64u:t.sourceRegisteredPublicKeyB64u,sourceBinding:t.sourceBinding,reservationId:a.reservationId,targetBinding:t.targetAdmission.binding,activationReceipt:a.activationReceipt,participantIds:a.participantIds,deriver_a_client_package:a.deriver_a_client_package,deriver_b_client_package:a.deriver_b_client_package}}finally{await i.discard()}}}}function ZH(e){return{ed25519:e.ed25519,ecdsa:{produceSourceContributionV1:async({preparation:t})=>await QH({workerContext:e.workerContext,readMetadataV1:e.readEcdsaMetadataV1,preparation:t})}}}async function QH(e){let t=await e.readMetadataV1({preparation:e.preparation}),n=await Su({preparation:e.preparation,workerCtx:e.workerContext,...t.linkedHolderHandleId===void 0?{}:{linkedHolderHandleId:t.linkedHolderHandleId}});return{kind:`linked_device_ecdsa_source_contribution_v1`,keyFamily:`ecdsa_secp256k1`,linkSessionId:e.preparation.linkSessionId,enrollmentId:e.preparation.enrollmentId,sourceAuthorityId:e.preparation.sourceAuthorityId,walletKeyId:t.walletKeyId,targetDeviceId:e.preparation.target.targetDeviceId,targetFactorVerificationDigestB64u:e.preparation.target.targetFactorVerificationDigestB64u,sourceSigner:e.preparation.source,sourceDerivation:t.sourceDerivation,target:e.preparation.target,package:n.package}}async function $H(e){return P(Uint8Array.from(await Eo(e)))}const eU=new js;async function tU(e,t){let n=await K.resolveSelectedWalletAuthority(String(t.walletId));if(n.kind!==`resolved`)throw Error(`Unlock the wallet before removing a device`);return await $R(e,{kind:`selected_method`,walletAuthMethodId:n.authMethod.walletAuthMethodId},t)}function nU(e){let{platform:t,ownerAuthorities:n}=e,r=aU({signingEngine:e.signingEngine,ownerRequest:n.ownerRequest,readEcdsaMetadataV1:iU({signingEngine:e.signingEngine})}),i=MH({authenticator:t.authenticator,http:t.http,relayerUrl:String(e.configs.network.relayer?.url||``).trim(),publishableKey:e.configs.registration.publishableKey,projectEnvironmentId:e.configs.registration.projectEnvironmentId,ownerRequest:n.ownerRequest,ownerApprovalUpdates:rU({request:n.ownerRequest,pollIntervalMs:1e3}),ownerAuthorization:n.ownerAuthorization,sourceContribution:r,custodyCeremonyTransport:er(e.signingEngine.getSignerWorkerContext()),managementRequest:n.managementRequest,authorizeRemoval:tU.bind(void 0,{configs:e.configs,signingEngine:e.signingEngine}),nowMs:Date.now,pollIntervalMs:1e3}),a=new kV({getContext:e.getContext,ports:i.deviceLinkingPorts});return{domain:{linkedDeviceManagement:i.linkedDeviceManagement,startLinking:a.startDevice2LinkingFlow.bind(a),cancelLinking:a.cancelDeviceLinking.bind(a),approveLinking:a.scanAndLinkDevice.bind(a)},resumePendingAcknowledgementsV1:i.deviceLinkingPorts.resumePendingAcknowledgementsV1,dispose:i.dispose}}function rU(e){return{getApprovalV1:async t=>await oU(e.request,t),subscribeApprovalV1:async t=>sU({...e,input:t})}}function iU(e){return KH({readActiveEcdsaCapabilityManifestV1:async({materialActivation:t})=>{let n=e.signingEngine.readWalletAuthenticationState();if(n.kind!==`authenticated`)throw Error(`ECDSA source metadata requires an authenticated wallet`);let r=await eU.lookupByMaterialActivation({walletId:n.walletId,materialActivation:t});if(r.kind===`ambiguous_authority`&&(r=await pv({walletId:n.walletId,materialActivation:t,authorities:r.authorities})),r.kind!==`active`)throw Error(`ECDSA source metadata manifest is ${r.kind}`);return r.manifest},readLinkedEcdsaHolderV1:({materialActivation:t})=>{let n=e.signingEngine.readWalletAuthenticationState();return n.kind===`authenticated`?fd({walletId:n.walletId,materialActivation:t}):null}})}function aU(e){let t=e.signingEngine.getSignerWorkerContext();return ZH({workerContext:t,ed25519:XH({workerContext:t,executeSourcePreservingV1:async({linkSessionId:t,targetRequestJson:n,authentication:r})=>{let i=await e.ownerRequest.requestOwnerV1({method:`POST`,canonicalPath:`${nz}/${String(t)}/source-contribution/execute`,body:JSON.parse(n),authentication:r});if(i.status<200||i.status>=300)throw Error(`Wallet-host Ed25519 source-preserving request failed with HTTP ${i.status}`);return i.body}}),readEcdsaMetadataV1:e.readEcdsaMetadataV1})}async function oU(e,t){let n=await e.requestOwnerV1({method:`GET`,canonicalPath:`${nz}/${String(t.linkSessionId)}/approval`,authentication:t.authentication});if(n.status<200||n.status>=300)throw Error(`Wallet-host approval request failed with HTTP ${n.status}`);return ti(n.body)}function sU(e){let t=!1,n=null,r=async()=>{if(!t){try{let n=await oU(e.request,e.input);t||e.input.onResult(n)}catch{}t||(n=setTimeout(()=>void r(),e.pollIntervalMs))}};return r(),{close:()=>{t=!0,n&&clearTimeout(n),n=null}}}const cU=[`delivery`,`challengeId`,`otpCode`,`resend`,`webauthn`,`webauthnRegistration`,`webauthn_registration`,`authenticatorOptions`,`publicKey`,`passkey`,`passkeyPrfFirstB64u`],lU=[`recoveryKeys`,`recoveryCodes`,`bootstrap`,`bootstrapMaterial`,`clientSecret32`];function uU(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<=0)throw Error(`${t} must be a positive integer timestamp`);return e}function dU(e,t,n){let r=t.find(t=>Object.prototype.hasOwnProperty.call(e,t));if(r)throw Error(`${n} must not include ${r}`)}function fU(e){return j(e,`offerId`)}function pU(e,t=`candidateId`){return j(e,t)}function mU(e){let t=M(e,`registration candidate`);return dU(t,cU,`registration candidate`),dU(t,lU,`registration candidate`),{candidateId:pU(t.candidateId),walletId:Go(j(t.walletId,`candidate.walletId`))}}function hU(e){let t=M(e,`Google Email OTP registration offer`);if(dU(t,cU,`Google Email OTP registration offer`),dU(t,lU,`Google Email OTP registration offer`),t.kind!==`google_email_otp_registration_offer_v1`)throw Error(`registration offer kind must be google_email_otp_registration_offer_v1`);if(!Array.isArray(t.candidates)||t.candidates.length<1)throw Error(`registration offer must include at least one candidate`);let n=t.candidates.map(mU),r=pU(t.selectedCandidateId,`selectedCandidateId`);if(!n.some(e=>e.candidateId===r))throw Error(`selectedCandidateId must refer to an offered candidate`);let[i,...a]=n;return{kind:`google_email_otp_registration_offer_v1`,offerId:fU(t.offerId),expiresAtMs:uU(t.expiresAtMs,`expiresAtMs`),emailHint:j(t.emailHint,`emailHint`),candidates:[i,...a],selectedCandidateId:r}}const gU=600*1e3;function _U(e){return{ok:!0,value:e}}function vU(e,t){let n=t instanceof Error&&t.message?t.message:String(t||e),r=t&&typeof t==`object`&&`retryAfterMs`in t?Number(t.retryAfterMs):NaN;return{ok:!1,error:{code:e,message:n,...Number.isFinite(r)&&r>=0?{retryAfterMs:Math.floor(r)}:{}}}}function yU(e,t,n){let r=vU(e,n);return r.ok?r:{ok:!1,error:{...r.error,message:t}}}function bU(e){let t=e&&typeof e==`object`&&`code`in e?String(e.code||``):``;if(t.includes(`rate`))return`email_otp_rate_limited`;if(t.includes(`expired`))return`email_otp_expired`;if(t.includes(`invalid`)||t.includes(`otp`))return`email_otp_invalid_code`;let n=e instanceof Error?e.message.toLowerCase():``;return n.includes(`backup`)?`recovery_code_backup_incomplete`:n.includes(`expired`)?`email_otp_expired`:n.includes(`invalid`)||n.includes(`code`)?`email_otp_invalid_code`:`unlock_failed`}function xU(e){if((e&&typeof e==`object`&&`code`in e?String(e.code||``):``)===`already_finalized_restore_required`)return`registration_restore_required`;let t=e instanceof Error?e.message.toLowerCase():``;return t.includes(`already finalized`)||t.includes(`restore or unlock`)?`registration_restore_required`:t.includes(`backup`)?`recovery_code_backup_incomplete`:t.includes(`expired`)?`flow_expired`:`registration_failed`}function SU(e){let t=String(e.walletId||``).trim();if(!t)throw Error(`Google verification did not return a wallet id`);return Go(t)}function CU(e){let t=String(e.providerSubject||``).trim();if(!t)throw Error(`Google verification did not return a provider subject`);return t}function wU(e){let t=String(e.email||``).trim();if(!t)throw Error(`Google verification did not return an email address`);return t}function TU(e){let t=typeof e==`number`?e:typeof e==`string`?Date.parse(e):NaN;return Number.isFinite(t)&&t>Date.now()?t:Date.now()+gU}function EU(e){let t=typeof e==`number`?e:typeof e==`string`?Date.parse(e):NaN;if(!Number.isFinite(t)||t<=Date.now())throw Error(`Google Email OTP registration offer is expired or missing expiry`);return Math.floor(t)}function DU(e){return e.mode===`register`?{title:`Create your Email OTP wallet`,description:`Google verified ${e.emailHint}.`,submitLabel:`Create wallet`,helperText:``}:{title:`Check your email to unlock your wallet`,description:`Enter the 6-digit code we sent to ${e.emailHint}.`,submitLabel:`Unlock wallet`,helperText:``}}function OU(e){return e===`register_started`?`register`:`login`}function kU(e){if(!e||typeof e!=`object`||!(`code`in e))return!1;let t=String(e.code||``).trim(),n=e instanceof Error?e.message:String(e.message||``).trim();return t===`not_found`&&/Email OTP enrollment not found/i.test(n)}function AU(){return`Account doesn't exist. Create your account to continue.`}function jU(e){return!e||typeof e!=`object`||!(`code`in e)?`google_verification_failed`:Reflect.get(e,`code`)===`stale_identity_mapping`?`google_account_registration_required`:`google_verification_failed`}function MU(e,t){if(e.replaceExistingWallet===!0&&t!==`register`)throw Error(`replaceExistingWallet is only valid with register mode`);return{idToken:e.idToken,accountMode:t,relayUrl:e.relayUrl,restartRegistrationOffer:t===`register`&&e.replaceExistingWallet===!0,...e.mode===`login`&&e.loginTarget.kind===`wallet`?{loginWalletId:String(e.loginTarget.walletId)}:{}}}function NU(e){return e.providerSubject.toLowerCase()===e.verifiedEmail.toLowerCase()?`email`:`google`}async function PU(e){return await e.deps.resolveGoogleEmailOtpProvider(MU(e.input,e.input.mode))}function FU(e){let t=e.authInput.mode===`login`&&e.authInput.loginTarget.kind===`wallet`?Go(String(e.authInput.loginTarget.walletId)):SU(e.resolution),n=wU(e.resolution),r=e.resolution,i=OU(r.mode),a=r.mode===`register_started`?hU({kind:`google_email_otp_registration_offer_v1`,offerId:r?.offer?.offerId,expiresAtMs:EU(r.expiresAtMs),emailHint:n,candidates:r?.offer?.candidates,selectedCandidateId:r?.offer?.selectedCandidateId}):void 0;return{walletId:a?RU(a).walletId:t,...a?{offer:a}:{},providerSubject:CU(e.resolution),emailHint:n,requestedMode:e.authInput.mode,mode:i,expiresAtMs:r.mode===`register_started`?EU(r.expiresAtMs):TU(void 0),...r.mode===`register_started`?{registrationAttemptId:r.registrationAttemptId}:{}}}async function IU(e){if(e.state.mode!==`login`||!e.deps.resolveLinkedEmailOtpWalletAuth)return e.state;let t=await e.deps.resolveLinkedEmailOtpWalletAuth({walletId:String(e.state.walletId),email:e.state.emailHint,provider:NU({providerSubject:e.state.providerSubject,verifiedEmail:e.state.emailHint}),providerSubjectId:e.state.providerSubject});switch(t.kind){case`none`:return e.state;case`selected`:return{...e.state,linkedEmailOtpSelection:t};case`rejected`:throw Error(t.message);default:throw Error(`Google Email OTP linked auth selection is invalid`)}}function LU(e){let t=e.offer.candidates.findIndex(t=>t.walletId===e.currentWalletId);return t<0||e.offer.candidates.length<2?null:e.offer.candidates[(t+1)%e.offer.candidates.length]||null}function RU(e){let t=e.candidates.find(t=>t.candidateId===e.selectedCandidateId);if(!t)throw Error(`Google Email OTP registration offer selected candidate is missing`);return t}async function zU(e){let t=await e.deps.requestEmailOtpChallenge({walletId:e.state.walletId,...e.state.linkedEmailOtpSelection?{walletAuthMethodId:e.state.linkedEmailOtpSelection.walletAuthMethodId}:{},...e.relayUrl?{relayUrl:e.relayUrl}:{},...e.onEvent?{onEvent:e.onEvent}:{}});return{challengeId:t.challengeId,expiresAtMs:BU(t.expiresAtMs),emailHint:t.delivery.emailHint,delivery:t.delivery,walletAuthMethodId:t.walletAuthMethodId,signerSelection:t.signerSelection}}function BU(e){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<=Date.now())throw Error(`Email code challenge is expired or missing expiry`);return e}function VU(e){let t=e.policy||{kind:`configured`};return t.kind===`none`?[]:t.kind===`explicit`?t.targets:Kn({signerOptions:e.configs.signing.thresholdEcdsa.provisioningDefaults,chains:e.configs.network.chains}).map(e=>e.chainTarget)}function HU(e){let t=e.policy||{kind:`configured`};return t.kind===`none`?[]:t.kind===`explicit`?t.targets:cr(e.configs.network.chains).map(e=>e.chainTarget)}function UU(e){return{...e.onEvent?{onEvent:e.onEvent}:{},...e.recoveryCodeBackup?{recoveryCodeBackup:e.recoveryCodeBackup}:{}}}function WU(e){let t=Math.floor(Number(e.signing.sessionDefaults?.remainingUses)||0);return t<=0?Re:Math.min(t,Re)}async function GU(e){let t=Lr({walletId:e.state.walletId}),n={kind:`wallet_auth_method`,walletAuthMethodId:e.challenge.walletAuthMethodId},[r]=e.targets;if(!r){if(e.challenge.signerSelection.kind!==`ed25519_only`)throw Error(`Selected Email OTP authority requires an ECDSA chain target`);await e.deps.loginWithEmailOtpEd25519YaoCapability({walletSession:t,authoritySelector:n,providerSubjectId:e.state.providerSubject,emailOtpAuthorityEmail:e.state.emailHint,challengeId:e.challenge.challengeId,otpCode:e.otpCode,remainingUses:WU(e.deps.configs),ed25519Selection:e.challenge.signerSelection});return}let i={walletSession:t,walletAuthMethodId:n.walletAuthMethodId,providerIdentity:{provider:NU({providerSubject:e.state.providerSubject,verifiedEmail:e.state.emailHint}),providerSubjectId:e.state.providerSubject},challengeId:e.challenge.challengeId,emailOtpAuthorityEmail:e.state.emailHint,otpCode:e.otpCode,...e.input.relayUrl?{relayUrl:e.input.relayUrl}:{},...e.input.emailOtpAuthPolicy?{emailOtpAuthPolicy:e.input.emailOtpAuthPolicy}:{},...e.input.onEvent?{onEvent:e.input.onEvent}:{}};if(e.challenge.signerSelection.kind!==`ecdsa`)throw Error(`Selected Email OTP authority has no ECDSA signer`);await e.deps.loginWithEmailOtpEcdsaCapability({...i,chainTarget:r,publicationChainTargets:e.targets,keyHandle:e.challenge.signerSelection.keyHandle,ed25519Selection:e.challenge.signerSelection.ed25519})}function KU(e){return{...e.options,signerOptions:{tempo:{enabled:!1,signingSession:{kind:`jwt`,ttlMs:0,remainingUses:0}},evm:{enabled:!1,signingSession:{kind:`jwt`,ttlMs:0,remainingUses:0}}}}}async function qU(e,t){let n=await e.getWalletSession(t);if(n.appIdentity.kind!==`resolved`||String(n.appIdentity.walletId)!==String(t)||n.authentication.kind!==`authenticated`||String(n.authentication.walletId)!==String(t))throw Error(`Wallet auth completed, but the local signing session is not ready yet.`);return n}async function JU(e,t){let n=await e.getWalletSession(t);if(n.appIdentity.kind!==`resolved`||String(n.appIdentity.walletId)!==String(t))throw Error(`Wallet registration completed, but the local wallet identity is not ready.`);return n}function YU(e,t){return fr(t)?{kind:`started`,completion:e.prewarmEmailOtpYao().catch(()=>void 0)}:{kind:`not_started`}}async function XU(e,t){let n;try{n=FU({authInput:t,resolution:await PU({deps:e,input:t})}),n=await IU({deps:e,state:n})}catch(e){return vU(jU(e),e)}if(n.mode===`register`)return _U(eW(e,{state:n,input:t,prewarm:{kind:`not_started`}}));try{let r=await zU({deps:e,state:n,...t.relayUrl?{relayUrl:t.relayUrl}:{},...t.onEvent?{onEvent:t.onEvent}:{}});return _U(nW(e,{state:n,challenge:r,input:t}))}catch(e){return kU(e)?yU(`google_account_registration_required`,AU(),e):vU(`email_otp_challenge_failed`,e)}}async function ZU(e,t){if(t.method===`google`){let n=await XU(e,{mode:`login`,idToken:t.idToken,loginTarget:t.target,onEvent:t.onEvent});return n.ok?n.value.mode===`login`?_U(n.value):vU(`unlock_failed`,Error(`Email unlock requires an existing wallet`)):n}try{let n=t.email.trim().toLowerCase();if(!n)throw Error(`Email address is required`);let r=await IU({deps:e,state:{walletId:Go(t.walletId),providerSubject:n,emailHint:n,requestedMode:`login`,mode:`login`,expiresAtMs:Date.now()+gU}});return r.linkedEmailOtpSelection?_U(nW(e,{state:r,challenge:await zU({deps:e,state:r,onEvent:t.onEvent}),input:{onEvent:t.onEvent}})):vU(`unlock_failed`,Error(`No active email method matches this wallet`))}catch(e){return vU(`email_otp_challenge_failed`,e)}}function QU(e){let t=!0;return{ensureActive(){if(!t)throw Error(`Google Email OTP wallet auth flow is no longer active`);if(Date.now()>e.state.expiresAtMs)throw t=!1,Error(`Google Email OTP wallet auth flow expired`)},burn(){t=!1}}}function $U(e){return String(e.input.relayUrl||e.deps.configs.network.relayer?.url||``).trim()}function eW(e,t){let n=String(t.state.registrationAttemptId||``).trim();if(!n)throw Error(`Google Email OTP registration requires a registration attempt id`);if(!t.state.offer)throw Error(`Google Email OTP registration requires an offer`);let r=t.state.offer,i=VU({configs:e.configs,policy:t.input.ecdsaTargets}),a=UU({onEvent:t.input.onEvent,recoveryCodeBackup:t.input.recoveryCodeBackup}),o=i.length?a:KU({options:a}),s=RU(r).walletId,c={kind:`email_otp`,proofKind:`google_sso_registration`,email:t.state.emailHint,providerSubject:t.state.providerSubject,googleEmailOtpRegistrationAttemptId:n,googleEmailOtpRegistrationOfferId:r.offerId,googleEmailOtpRegistrationCandidateId:r.selectedCandidateId},l={wallet:{kind:`provided`,walletId:s},authMethod:c,signerSelection:t.input.signerSelection??Rn({configs:e.configs,options:o,ecdsaChainTargets:i}),options:o},u=t.prewarm.kind===`not_started`?YU(e,l.signerSelection):t.prewarm,d=QU({state:t.state});return{kind:`google_email_otp_wallet_auth_flow_v1`,state:`registration_ready`,flowId:`google-email-otp-registration:${s}:${n}`,requestedMode:t.state.requestedMode,mode:`register`,walletId:s,emailHint:t.state.emailHint,prompt:DU({mode:`register`,emailHint:t.state.emailHint}),expiresAtMs:t.state.expiresAtMs,completeRegistration:async()=>{try{d.ensureActive();let t=await e.registerWallet(l);if(!t.success){let e=Object.assign(Error(t.error||`Wallet registration failed`),{code:t.errorCode});return vU(xU(e),e)}return d.burn(),_U({walletId:s,mode:`register`,session:await JU(e,s),registration:t})}catch(e){return vU(xU(e),e)}},rerollWalletId:async()=>{try{if(d.ensureActive(),!t.state.offer)return vU(`google_verification_failed`,Error(`Google Email OTP registration offer is missing wallet candidates`));let n=LU({offer:t.state.offer,currentWalletId:s});return n?(d.burn(),_U(eW(e,{state:{...t.state,walletId:n.walletId,offer:{...t.state.offer,selectedCandidateId:n.candidateId}},input:t.input,prewarm:u}))):vU(`google_verification_failed`,Error(`Google Email OTP registration offer has no alternate wallet candidate`))}catch(e){return vU(`google_verification_failed`,e)}},cancel:async()=>{d.burn()}}}var tW=class{constructor(e){this.expiresAtMs=e,this.state=`ready`}begin(){if(this.state!==`ready`)throw Error(`Email unlock flow is no longer available`);if(Date.now()>=this.expiresAtMs)throw this.state=`finished`,Error(`Email unlock flow expired`);this.state=`running`}release(){this.state===`running`&&(this.state=`ready`)}burn(){this.state=`finished`}cancel(){if(this.state===`running`)throw Error(`Email unlock operation is already in progress`);this.burn()}};function nW(e,t){let n=new tW(t.state.expiresAtMs);return{kind:`google_email_otp_wallet_auth_flow_v1`,state:`challenge_sent`,flowId:`google-email-otp-login:${t.state.walletId}:${t.challenge.challengeId}`,requestedMode:t.state.requestedMode,mode:`login`,walletId:t.state.walletId,emailHint:t.challenge.emailHint,prompt:DU({mode:`login`,emailHint:t.challenge.emailHint}),delivery:t.challenge.delivery,expiresAtMs:t.state.expiresAtMs,resend:async()=>{let r=!1;try{n.begin(),r=!0;let i=await zU({deps:e,state:t.state,...t.input.relayUrl?{relayUrl:t.input.relayUrl}:{},...t.input.onEvent?{onEvent:t.input.onEvent}:{}});return n.burn(),_U(nW(e,{state:t.state,challenge:i,input:t.input}))}catch(e){return vU(`email_otp_challenge_failed`,e)}finally{r&&n.release()}},submit:async r=>{let i=!1;try{if(n.begin(),i=!0,Date.now()>=t.challenge.expiresAtMs)return vU(`email_otp_expired`,Error(`Email code expired. Request a new code.`));let a=String(r.otpCode||``).trim();if(!/^\d{6}$/.test(a))return vU(`email_otp_invalid_code`,Error(`Enter the 6-digit code from your email.`));let o=HU({configs:e.configs,policy:t.input.ecdsaTargets}),s=t.challenge.signerSelection.kind===`ed25519_only`?[]:o;if(t.state.linkedEmailOtpSelection?.execution===`authority`){if(!e.loginWithLinkedEmailOtpWallet)throw Error(`Exact linked Email OTP wallet unlock is unavailable`);await e.loginWithLinkedEmailOtpWallet({walletId:String(t.state.walletId),walletAuthMethodId:t.state.linkedEmailOtpSelection.walletAuthMethodId,email:t.state.emailHint,providerSubjectId:t.state.providerSubject,challengeId:t.challenge.challengeId,otpCode:a,relayUrl:$U({deps:e,input:t.input})})}else await GU({deps:e,state:t.state,input:t.input,challenge:t.challenge,otpCode:a,targets:s});n.burn();let c=await qU(e,t.state.walletId);return _U({walletId:t.state.walletId,mode:`login`,session:c})}catch(e){return vU(bU(e),e)}finally{i&&n.release()}},cancel:async()=>{n.cancel()}}}async function rW(e){return await e.challenge.submit({otpCode:e.code})}function iW(){return typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now()}function aW(){return{emailOtpProofVerificationMs:0,walletUnlockExchangeMs:0,ecdsaMaterialRestoreMs:0,signingSessionSealApplyMs:0,warmCapabilityPersistenceMs:0,activeRuntimeConstructionMs:0,emailHashLookupMs:0,workerUnlockAndSessionBootstrapMs:0,walletStateActivationMs:0,runtimePostconditionMs:0,walletIframeRoundTripMs:0}}function oW(e,t,n){sW(e,t,n)}function sW(e,t,n){let r=Math.max(0,Math.round(n));e[t]+=r,cW()&&console.info(`[EmailOtpUnlock] timing`,{bucket:t,deltaMs:r,accumulatedMs:e[t]})}function cW(){return Reflect.get(globalThis,`__SEAMS_EMAIL_OTP_UNLOCK_DIAGNOSTICS`)===!0}function lW(e){if(!cW())return;let t=Object.entries(e.timings),n=[];for(let[e,r]of t)r>0&&n.push({bucket:e,durationMs:r});n.sort(mW);let r=n.slice(0,5),i=e.error instanceof Error?e.error.message:e.error?String(e.error):``,a={kind:`email_otp_unlock_timing_summary_v1`,status:e.status,mode:e.mode,walletId:e.walletId,...e.chainTarget?{chainTarget:e.chainTarget}:{},totalElapsedMs:Math.max(0,Math.round(iW()-e.startedAtMs)),timings:e.timings,topBuckets:r,...i?{errorMessage:i}:{}};console.info(`[EmailOtpUnlock] timing summary`,a)}function uW(e,t){if(!O(e))throw Error(`[SeamsWeb] ${t} requires a concrete ECDSA chainTarget`);return Mr(e)}function dW(e,t){return`email-otp-unlock:${String(e||`unknown-wallet`).trim()||`unknown-wallet`}:${String(t||`active`).trim()||`active`}`}function fW(e,t){try{e?.(ys(t))}catch{}}function pW(e,t){let n=wt(t.error);fW(e,{...t,phase:n?G.CANCELLED:G.FAILED,status:n?`cancelled`:`failed`,interaction:t.interaction??{kind:n?`otp_input`:`none`,overlay:`hide`},error:{message:t.error.message}})}function mW(e,t){return t.durationMs-e.durationMs}async function hW(e,t){if(e.kind===`device_link`)return`authority`;let n=await K.listPendingWalletRegistrationCommits();for(let e of n)if(e.operation===`near_provisioning`&&e.signerPlanKind===`near_ed25519_and_evm_family_ecdsa`&&e.walletAuthMethodId===t)return`authority`;return`ordinary`}function gW(e){let t=c(e);if(!t.ok)throw Error(`Email OTP unlock returned an invalid wallet auth method id`);return t.value}function _W(e){let t=e.recovery.verifiedAuthorityProjection.authority,n=no({kind:`wallet_auth_authority_ref`,walletId:t.walletId,walletAuthMethodId:e.authorization.record.authMethodId,authorityDigest:t.authorityDigestB64u});if(!n)throw Error(`Email OTP unlock returned an invalid authority reference`);return n}function vW(e,t,n){sW(e,t,iW()-n)}function yW(e){return{kind:`email_otp_unlock_active_runtime_state_v1`,inventory:e}}function bW(e){if(e.result.authorization.record.walletId!==e.walletSession.walletId)throw Error(`Email OTP unlock authorization does not match the wallet session`);return{kind:`email_otp_unlock_activation_plan_v1`,mode:`evm_family_ecdsa`,activeAuthorization:e.result.authorization,authorizations:e.result.authorizations,runtimeState:yW(e.runtimeInventory)}}function xW(e){cW()&&console.info(`[EmailOtpUnlock] activation plan constructed`,{kind:e.kind,mode:e.mode,walletId:e.activeAuthorization.record.walletId,authorityDigest:e.activeAuthorization.record.authorityDigestB64u,walletSessionIds:e.authorizations.map(EW),runtimeTargetCount:e.runtimeState.inventory.ecdsaByTarget.size})}function SW(e,t){let n=t.chainTarget.kind===`tempo`?`Tempo`:`EVM`,r={flowId:t.flowId,walletId:t.walletId,authMethod:`email_otp`,...t.challengeId?{requestId:t.challengeId}:{}};switch(t.progress.code){case`otp.verify.succeeded`:return fW(e,{...r,phase:G.STEP_03_EMAIL_OTP_VERIFY_SUCCEEDED,status:`succeeded`,interaction:{kind:`otp_input`,overlay:`hide`}}),G.STEP_03_EMAIL_OTP_VERIFY_SUCCEEDED;case`signer.ecdsa.bootstrap.started`:return fW(e,{...r,phase:G.STEP_05_SIGNING_SESSION_WARMUP_STARTED,status:`running`,message:`Preparing ${n} signing session`,data:{chainTarget:t.chainTarget}}),G.STEP_05_SIGNING_SESSION_WARMUP_STARTED;case`signer.ecdsa.bootstrap.prepared`:return fW(e,{...r,phase:G.STEP_05_SIGNING_SESSION_WARMUP_STARTED,status:`running`,message:`Coordinating ${n} signing session`,data:{chainTarget:t.chainTarget}}),G.STEP_05_SIGNING_SESSION_WARMUP_STARTED;case`signer.ecdsa.bootstrap.responded`:return fW(e,{...r,phase:G.STEP_05_SIGNING_SESSION_WARMUP_STARTED,status:`running`,message:`Finalizing ${n} signing session`,data:{chainTarget:t.chainTarget}}),G.STEP_05_SIGNING_SESSION_WARMUP_STARTED;case`signer.ecdsa.bootstrap.succeeded`:return fW(e,{...r,phase:G.STEP_05_SIGNING_SESSION_WARMUP_STARTED,status:`running`,message:`Saving ${n} signing session`,data:{chainTarget:t.chainTarget}}),G.STEP_05_SIGNING_SESSION_WARMUP_STARTED;default:return null}}function CW(e){let t=new TW(e);return{requestEmailCode:t.requestEmailCode.bind(t),unlockWithEmailCode:rW,startGoogleSignIn:t.startGoogleSignInDomain.bind(t)}}function wW(e){return{curve:`ecdsa`,chainTarget:e}}var TW=class{constructor(e){this.deps=e}async readOwnerScopedSigningLanes(e){return await this.deps.getContext().signingEngine.readOwnerScopedSigningLanes(e,new el)}async requestUnlockChallenge(e){let t=dW(e.walletId);fW(e.onEvent,{flowId:t,walletId:e.walletId,authMethod:`email_otp`,phase:G.STEP_03_EMAIL_OTP_CHALLENGE_STARTED,status:`running`});try{let t=e.walletAuthMethodId;if(!t){let n=await K.resolveSelectedWalletAuthority(String(e.walletId||``).trim());n.kind===`resolved`&&n.authMethod.kind===`email_otp`&&n.authMethod.status===`active`&&String(n.authMethod.walletId)===String(e.walletId||``).trim()&&(t=String(n.authMethod.walletAuthMethodId))}if(!t)throw Error(`Email OTP challenge requires an exact walletAuthMethodId`);let n=await _r({relayUrl:String(e.relayUrl||this.deps.getContext().configs.network.relayer.url||``).trim(),walletId:String(e.walletId||``).trim(),walletAuthMethodId:t});return fW(e.onEvent,{flowId:dW(e.walletId,n.challengeId),walletId:e.walletId,authMethod:`email_otp`,phase:G.STEP_03_EMAIL_OTP_CHALLENGE_SENT,status:`succeeded`,data:{challengeId:n.challengeId,otpChannel:n.otpChannel}}),n}catch(n){let r=I(n);throw pW(e.onEvent,{flowId:t,walletId:e.walletId,authMethod:`email_otp`,error:r}),r}}async loginWithEmailOtpEcdsaCapabilityDomain(e){let t=e.walletSession.walletId,n=dW(t,e.challengeId),r=uW(e.chainTarget,`Email OTP ECDSA unlock`),i={startedAtMs:iW(),timings:aW()};fW(e.onEvent,{flowId:n,walletId:t,authMethod:`email_otp`,phase:G.STEP_03_EMAIL_OTP_VERIFY_STARTED,status:`running`,interaction:{kind:`otp_input`,overlay:`none`},...e.challengeId?{requestId:e.challengeId}:{}});try{let a=new Set,o=DW.bind(null,a,e.onEvent,{flowId:n,walletId:t,challengeId:e.challengeId,chainTarget:r}),s=OW.bind(null,a,e.onEvent),c=iW(),l=await this.emailOtpEmailHashHex(e.emailOtpAuthorityEmail||``);vW(i.timings,`emailHashLookupMs`,c),c=iW();let u=e.ed25519Selection.kind===`present`?e.ed25519Selection:null,d=await this.deps.getContext().signingEngine.loginWithEmailOtpEcdsaCapabilityInternal({...e,authoritySelector:{kind:`wallet_auth_method`,walletAuthMethodId:e.walletAuthMethodId},chainTarget:r,emailHashHex:l,...u?{ed25519YaoRecovery:{kind:`requested`,providerSubject:e.providerIdentity.providerSubjectId,signerSlot:u.signerSlot,nearAccountId:u.nearAccountId,expectedOperationalPublicKey:u.operationalPublicKey,expectedThresholdSessionId:u.thresholdSessionId}}:{ed25519YaoRecovery:{kind:`not_requested`}},ecdsaBootstrapAuthorization:{kind:`route_plan_auth`},providerIdentity:{kind:`explicit_provider_user`,provider:e.providerIdentity.provider,providerUserId:e.providerIdentity.providerSubjectId},onProgress:o});await ak({walletId:String(t),walletAuthMethodId:String(e.walletAuthMethodId),projection:d.recovery.verifiedAuthorityProjection});let f;if(u){let t;switch(d.ed25519YaoRecovery.kind){case`capability`:t=await this.deps.getContext().signingEngine.activateEmailOtpEd25519CustodyCapabilityInternal({walletSession:e.walletSession,providerSubject:e.providerIdentity.providerSubjectId,emailHashHex:l,signerSlot:u.signerSlot,expectedOperationalPublicKey:u.operationalPublicKey,expectedThresholdSessionId:u.thresholdSessionId,bootstrap:d.ed25519YaoRecovery.bootstrap,activeClientHandle:d.ed25519YaoRecovery.activeClientHandle,metadata:d.ed25519YaoRecovery.metadata,authority:_W(d)});break;case`cache_absent`:throw Error(`Email OTP wallet custody material is unavailable; recover with a recovery code`);case`not_requested`:throw Error(`Email OTP capability unlock omitted Ed25519 Yao session material`);default:throw Error(`Email OTP capability unlock returned an invalid Ed25519 Yao state`)}f={kind:`near_ed25519_wallet`,signer:t,walletAuthMethodId:gW(e.walletAuthMethodId)}}else{if(d.ed25519YaoRecovery.kind!==`not_requested`)throw Error(`EVM-family ECDSA Email OTP unlock returned unexpected Ed25519 Yao material`);f={kind:`evm_family_ecdsa_wallet`,walletId:t,walletAuthMethodId:gW(e.walletAuthMethodId)}}let p=iW()-c;oW(i.timings,`workerUnlockAndSessionBootstrapMs`,p),oW(i.timings,`emailOtpProofVerificationMs`,d.timings.emailOtpProofVerificationMs),oW(i.timings,`ecdsaMaterialRestoreMs`,d.timings.ecdsaMaterialRestoreMs),oW(i.timings,`signingSessionSealApplyMs`,d.timings.signingSessionSealApplyMs),oW(i.timings,`warmCapabilityPersistenceMs`,d.timings.warmCapabilityPersistenceMs),c=iW(),await ck({signingEngine:this.deps.getContext().signingEngine,nearClient:this.deps.getContext().nearClient},f),vW(i.timings,`walletStateActivationMs`,c),c=iW();let m=await ok({walletId:String(t),walletAuthMethodId:String(e.walletAuthMethodId),providerSubject:e.providerIdentity.providerSubjectId,emailHashHex:l,projection:d.recovery.verifiedAuthorityProjection}),h=await Hv({source:`wallet_unlock`,walletId:t,ownerScope:{auth:{kind:`email_otp`,providerSubjectId:e.providerIdentity.providerSubjectId},ownerAuthority:{walletAuthMethodId:m.walletAuthMethodId,authorityDigest:m.authorityDigest}},requiredTargets:[...u?[{curve:`ed25519`}]:[],...(e.publicationChainTargets??[r]).map(wW)],readOwnerScopedSigningLanes:this.readOwnerScopedSigningLanes.bind(this)});xW(bW({walletSession:e.walletSession,result:d,runtimeInventory:h}));let g=iW()-c;return oW(i.timings,`runtimePostconditionMs`,g),oW(i.timings,`activeRuntimeConstructionMs`,g),lW({status:`succeeded`,mode:`evm_family_ecdsa`,walletId:t,chainTarget:r,startedAtMs:i.startedAtMs,timings:i.timings}),s({flowId:n,walletId:t,authMethod:`email_otp`,phase:G.STEP_03_EMAIL_OTP_VERIFY_SUCCEEDED,status:`succeeded`,interaction:{kind:`otp_input`,overlay:`hide`},...e.challengeId?{requestId:e.challengeId}:{}}),s({flowId:n,walletId:t,authMethod:`email_otp`,phase:G.STEP_05_ECDSA_SIGNING_SESSION_READY,status:`succeeded`,...e.challengeId?{requestId:e.challengeId}:{},data:{chainTarget:r}}),s({flowId:n,walletId:t,authMethod:`email_otp`,phase:G.STEP_07_COMPLETED,status:`succeeded`,...e.challengeId?{requestId:e.challengeId}:{}}),d}catch(a){let o=I(a);throw lW({status:`failed`,mode:`evm_family_ecdsa`,walletId:t,chainTarget:r,startedAtMs:i.startedAtMs,timings:i.timings,error:o}),pW(e.onEvent,{flowId:n,walletId:t,authMethod:`email_otp`,...e.challengeId?{requestId:e.challengeId}:{},error:o}),o}}async loginWithLinkedEmailOtpWalletDomain(e){let t=await Zt(Go(e.walletId));if(t){if(t.auth.kind!==`email_otp`||t.walletAuthMethodId!==e.walletAuthMethodId||t.auth.email!==e.email.trim().toLowerCase()||t.auth.providerSubject!==e.providerSubjectId)throw Error(`Pending registration requires its exact email authentication method`);let n=this.deps.getContext(),r=tp({defaults:n.configs.signing.sessionDefaults,override:void 0});if(r.kind===`disabled`)throw Error(`Pending registration recovery requires an enabled signing session policy`);await un({relayerUrl:e.relayUrl,sessionPolicy:r,pending:t,exactMethod:{kind:`email_otp`,challengeId:e.challengeId,otpCode:e.otpCode},signingSurface:n.signingEngine,nearContext:n,nearCompletion:`await`,onEvent:void 0}),n.signingEngine.setWalletAuthenticated({kind:`authenticated`,walletId:t.walletId,authMethod:`email_otp`}),this.deps.resumePendingAcknowledgements();return}let n=await this.emailOtpEmailHashHex(e.email);await vx({context:this.deps.getContext(),walletIdInput:e.walletId,emailHashHex:n,walletAuthMethodId:e.walletAuthMethodId,providerSubjectId:e.providerSubjectId,challengeId:e.challengeId,otpCode:e.otpCode,relayUrl:e.relayUrl}),this.deps.resumePendingAcknowledgements()}async requestEmailCode(e){return await ZU(this.flowDependencies(),e)}async startGoogleSignInDomain(e){return await XU(this.flowDependencies(),e)}flowDependencies(){return{configs:this.deps.getContext().configs,resolveGoogleEmailOtpProvider:this.resolveGoogleEmailOtpProviderDomain.bind(this),requestEmailOtpChallenge:this.requestUnlockChallenge.bind(this),prewarmEmailOtpYao:this.prewarmEmailOtpYaoDomain.bind(this),registerWallet:this.deps.registerWallet,loginWithEmailOtpEcdsaCapability:this.loginWithEmailOtpEcdsaCapabilityDomain.bind(this),loginWithEmailOtpEd25519YaoCapability:this.loginWithEmailOtpEd25519YaoCapabilityDomain.bind(this),resolveLinkedEmailOtpWalletAuth:this.resolveLinkedEmailOtpWalletAuthDomain.bind(this),loginWithLinkedEmailOtpWallet:this.loginWithLinkedEmailOtpWalletDomain.bind(this),getWalletSession:this.getGoogleEmailOtpWalletSessionDomain.bind(this)}}async resolveGoogleEmailOtpProviderDomain(e){return await mn({relayUrl:String(e.relayUrl||this.deps.getContext().configs.network.relayer.url||``).trim(),idToken:e.idToken,accountMode:e.accountMode,...e.loginWalletId?{loginWalletId:e.loginWalletId}:{},projectEnvironmentId:this.deps.getContext().configs.registration.projectEnvironmentId,publishableKey:this.deps.getContext().configs.registration.publishableKey,...e.restartRegistrationOffer===!0?{restartRegistrationOffer:!0}:{}})}async resolveLinkedEmailOtpWalletAuthDomain(e){let t=await Zt(Go(e.walletId));if(t)return t.auth.kind!==`email_otp`||t.auth.email!==e.email.trim().toLowerCase()||t.auth.providerSubject!==e.providerSubjectId?{kind:`rejected`,message:`Pending registration requires its exact email authentication method`}:{kind:`selected`,walletAuthMethodId:t.walletAuthMethodId,execution:`authority`};let n=await this.emailOtpEmailHashHex(e.email),r=await tb({walletIdInput:e.walletId,emailHashHex:n,provider:e.provider,providerSubjectId:e.providerSubjectId});switch(r.kind){case`none`:{let t=await K.listWalletAuthMethodsV2ForWallet(e.walletId),r=[];for(let e of t)e.kind===`email_otp`&&e.status===`active`&&e.emailHashHex.toLowerCase()===n&&r.push(e);let i=r[0];if(r.length===0||!i){let t=await K.listWalletAuthMethodsForWallet(e.walletId),r=[];for(let i of t)i.kind===`email_otp`&&i.status===`active`&&i.emailHashHex.toLowerCase()===n&&Na(i.authority)&&i.authority.factor.provider===e.provider&&i.authority.factor.providerUserId===e.providerSubjectId&&r.push(i);let i=r[0];if(r.length===0||!i)return{kind:`none`};if(r.length!==1)return{kind:`rejected`,message:`Multiple active local Email OTP factors match the verified email`};let a=i.authority;return!a||!Na(a)?{kind:`none`}:{kind:`selected`,walletAuthMethodId:String(a.bindingId),execution:`ordinary`}}if(r.length!==1)return{kind:`rejected`,message:`Multiple active local Email OTP authorities match the verified email`};let a=await K.getWalletAuthority(String(i.walletAuthorityId));return!a||a.state!==`active`||a.walletId!==i.walletId||a.authorityId!==i.walletAuthorityId||a.provenance.kind!==`wallet_registration`&&a.provenance.kind!==`wallet_recovery`?{kind:`none`}:(await Yy({authMethod:i,provider:e.provider,providerSubjectId:e.providerSubjectId}),{kind:`selected`,walletAuthMethodId:String(i.walletAuthMethodId),execution:await hW(a.provenance,i.walletAuthMethodId),keyFamilies:a.signerActivations.keyFamilies})}case`selected`:return{kind:`selected`,walletAuthMethodId:String(r.selection.authMethod.walletAuthMethodId),execution:await hW(r.selection.authority.provenance,r.selection.authMethod.walletAuthMethodId),keyFamilies:r.selection.authority.signerActivations.keyFamilies};case`rejected`:return{kind:`rejected`,message:r.message};default:throw Error(`Linked Email OTP authority resolution is invalid`)}}async prewarmEmailOtpYaoDomain(){await this.deps.getContext().signingEngine.prewarmEmailOtpYao()}async getGoogleEmailOtpWalletSessionDomain(e){return await this.deps.getWalletSession(e)}async loginWithEmailOtpEd25519YaoCapabilityDomain(e){if(e.authoritySelector.kind!==`wallet_auth_method`)throw Error(`Email OTP Ed25519 unlock requires an exact wallet auth method`);let t=await this.emailOtpEmailHashHex(e.emailOtpAuthorityEmail),n=await this.deps.getContext().signingEngine.loginWithEmailOtpWalletCustodyEd25519Internal({...e,emailHashHex:t});await ck({signingEngine:this.deps.getContext().signingEngine,nearClient:this.deps.getContext().nearClient},{kind:`near_ed25519_wallet`,signer:n,walletAuthMethodId:gW(e.authoritySelector.walletAuthMethodId)})}async emailOtpEmailHashHex(e){let t=String(e||``).trim().toLowerCase();if(!t)throw Error(`[SeamsWeb][email-otp] verified email is required for auth-method hash`);return A(t)}};function EW(e){return e.operationCredential.walletSessionId}function DW(e,t,n,r){let i=SW(t,{flowId:n.flowId,walletId:n.walletId,challengeId:n.challengeId,chainTarget:n.chainTarget,progress:r});i&&e.add(i)}function OW(e,t,n){e.has(n.phase)||fW(t,n)}function kW(e){let t=i(e.rpId);if(!t.ok)throw Error(t.error.message);let n=m(e.credentialIdB64u);if(!n.ok)throw Error(n.error.message);let r=String(e.credentialPublicKeyB64u||``).trim();if(!r)throw Error(`Wallet add-passkey finalize omitted credential public key`);if(F(r).byteLength===0)throw Error(`Wallet add-passkey finalize returned an empty credential public key`);if(!Number.isSafeInteger(e.counter)||e.counter<0)throw Error(`Wallet add-passkey finalize returned an invalid credential counter`);let a=Date.now();return{version:`wallet_auth_method_v1`,kind:`passkey`,status:`active`,localStatus:`synced`,walletId:e.walletId,rpId:t.value,credentialIdB64u:n.value,credentialPublicKeyB64u:r,counter:e.counter,createdAtMs:a,updatedAtMs:a}}async function AW(e){await K.upsertWalletAuthMethod(kW(e))}async function jW(e){await AW(e);let t=c(e.walletAuthMethodId),n=r(e.walletAuthorityId);if(!t.ok||!n.ok)throw Error(`added passkey identity is invalid`);await NW({walletId:e.walletId,walletAuthMethodId:t.value,walletAuthorityId:n.value,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u,credentialPublicKeyB64u:e.credentialPublicKeyB64u,counter:e.counter});let i=new Date().toISOString();await K.upsertProfileAuthenticator({profileId:String(e.walletId),signerSlot:e.signerSlot,credentialId:e.credentialIdB64u,credentialPublicKey:F(e.credentialPublicKeyB64u),registered:i,syncedAt:i})}function MW(e){let t=i(e.rpId),n=m(e.credentialIdB64u),a=c(e.walletAuthMethodId),o=r(e.walletAuthorityId),s=String(e.credentialPublicKeyB64u||``).trim();if(!t.ok||!n.ok||!a.ok||!o.ok)throw Error(`Synced passkey auth-method identity is invalid`);if(!s||F(s).byteLength===0)throw Error(`Synced passkey auth method omitted credential public key`);if(!Number.isSafeInteger(e.counter)||e.counter<0)throw Error(`Synced passkey auth method returned an invalid credential counter`);let l=Date.now(),u=Wo({version:`wallet_auth_method_v2`,walletAuthMethodId:a.value,walletId:e.walletId,walletAuthorityId:o.value,kind:`passkey`,status:`active`,rpId:t.value,credentialIdB64u:n.value,credentialPublicKeyB64u:s,counter:e.counter,createdAtMs:l,updatedAtMs:l,activatedAtMs:l});if(u.kind!==`passkey`||u.status!==`active`)throw Error(`Synced passkey auth method branch is invalid`);return u}async function NW(e){await K.upsertWalletAuthMethodV2(MW(e))}function PW(e){if(!e||!(e instanceof PublicKeyCredential))throw Error(`Passkey registration did not return a public-key credential`);return e}function FW(e){return{challenge:F(e.challengeB64u),rp:{id:e.rpId,name:e.rpId},user:{id:F(e.user.idB64u),name:e.user.name,displayName:e.user.displayName},pubKeyCredParams:e.pubKeyCredParams.map(e=>({type:e.type,alg:e.alg})),authenticatorSelection:e.authenticatorSelection,timeout:e.timeoutMs,attestation:e.attestation,excludeCredentials:e.excludeCredentials.map(e=>({type:e.type,id:F(e.id)})),extensions:{prf:{eval:{first:F(e.extensions.prf.eval.firstB64u),second:F(e.extensions.prf.eval.secondB64u)}}}}}function IW(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Passkey custody worker returned no resealed envelope`);let t=e;return{nonceB64u:ve(t.nonceB64u,`resealed envelope nonceB64u`),sealedCustodySecretB64u:we(t.sealedCustodySecretB64u,`resealed envelope sealedCustodySecretB64u`),aadHashB64u:Ee(t.aadHashB64u,`resealed envelope aadHashB64u`),ciphertextDigestB64u:Ee(t.ciphertextDigestB64u,`resealed envelope ciphertextDigestB64u`)}}function LW(e){if(e.kind!==`unlocked_capability`)throw Error(`wallet custody reseal source is not an unlocked capability`);return e.capability}function RW(e){let t=m(e);if(!t.ok)throw Error(`Passkey registration credential id is invalid: ${t.error.message}`);return t.value}async function zW(e){let t=e.registrationCredential?e.registrationCredential:ac({credential:PW(await navigator.credentials.create({publicKey:FW(e.registration)})),firstPrfOutput:!0,secondPrfOutput:!1}),n=oc(t);if(!n)throw Error(`New passkey did not return PRF.first`);let r=RW(t.rawId||t.id),i=C(Pe(`wallet-custody-envelope`,24,`wallet custody envelope ids`));if(!i.ok)throw Error(i.error.message);let a=Yo({rpId:e.registration.rpId,credentialIdB64u:r}),o=ts(e.walletAuthMethodId),s=$o({walletId:e.existingEnvelope.walletId,envelopeId:i.value,factor:a,envelopeRevision:me(1),binding:e.existingEnvelope.binding,ownership:o}),c=F(n),l=e.sealSource.kind===`factor_secret`?e.sealSource.existingFactorSecret.slice():null,u;try{u=IW(l===null?await e.worker.requestOperation({kind:`walletCustodyCeremony`,request:{type:`resealWalletCustodyFromUnlockedCapability`,payload:{capability:LW(e.sealSource),replacementEnvelopeBindingJson:s,replacementFactorSecret:c.buffer},transfer:[c.buffer]}}):await e.worker.requestOperation({kind:`walletCustodyCeremony`,request:{type:`linkWalletCustodyPasskey`,payload:{existingEnvelope:e.existingEnvelope,existingFactorSecret:l.buffer,replacementEnvelopeBindingJson:s,replacementFactorSecret:c.buffer},transfer:[l.buffer,c.buffer]}}))}finally{l&&l.byteLength>0&&l.fill(0),c.byteLength>0&&c.fill(0)}let d=(e.nowMs??Date.now)();return{registration:t,custodyEnvelope:Xo(ns({envelopeId:i.value,walletId:e.existingEnvelope.walletId,ownership:o,binding:e.existingEnvelope.binding,factor:a,envelopeRevision:me(1),nonceB64u:u.nonceB64u,sealedCustodySecretB64u:u.sealedCustodySecretB64u,ciphertextDigestB64u:u.ciphertextDigestB64u,aadHashB64u:u.aadHashB64u,lifecycle:{state:`active`,activatedAtMs:d},createdAtMs:d,updatedAtMs:d}))}}async function BW(e){let t=await yc({relayerUrl:e.relayerUrl,walletId:e.walletId,addAuthMethodIntentGrant:e.addAuthMethodIntentGrant,addAuthMethodIntentDigestB64u:e.addAuthMethodIntentDigestB64u,intent:e.intent,auth:e.auth,authority:{kind:`passkey`}});if(!t.custodyEnvelope||!t.registration)throw Error(`Passkey add-auth-method start omitted custody envelope or registration options`);let n=await zW({registration:t.registration,walletAuthMethodId:e.walletAuthMethodId,existingEnvelope:t.custodyEnvelope,sealSource:e.sealSource,worker:e.worker,...e.createRegistrationCredential?{registrationCredential:await e.createRegistrationCredential(t.registration)}:{},nowMs:e.nowMs});return{finalized:await Ec({relayerUrl:e.relayerUrl,walletId:e.walletId,addAuthMethodCeremonyId:t.addAuthMethodCeremonyId,webauthnRegistration:n.registration,custodyEnvelope:n.custodyEnvelope})}}async function VW(e){let t=await K.resolveSelectedWalletAuthority(String(e));if(t.kind!==`resolved`)return{kind:`unavailable`,reason:`selected wallet authority is ${t.kind}`};if(t.authMethod.status!==`active`)return{kind:`unavailable`,reason:`selected auth method is not active`};if(t.authority.state!==`active`)return{kind:`unavailable`,reason:`selected wallet authority is not active`};if(t.selection.lockState!==`unlocked`||t.selection.walletId!==e||t.selection.walletAuthMethodId!==t.authMethod.walletAuthMethodId||t.authMethod.walletId!==e||t.authMethod.walletAuthorityId!==t.authority.authorityId||t.authority.walletId!==e)return{kind:`unavailable`,reason:`selected wallet authority identity is invalid`};let n;try{n=await q.readExactWithOperationCredential({walletId:e,authorityId:t.authority.authorityId,authMethodId:t.authMethod.walletAuthMethodId})}catch{return{kind:`unavailable`,reason:`exact Wallet Session state is corrupt`}}return n.kind===`found`?n.record.walletId!==e||n.record.authorityId!==t.authority.authorityId||n.record.authMethodId!==t.authMethod.walletAuthMethodId||n.record.authorityDigestB64u!==t.authority.authorityDigestB64u||n.record.authorityRevocationEpoch!==t.authority.revocationEpoch||n.record.expiresAtMs<=Date.now()?{kind:`unavailable`,reason:`exact Wallet Session identity is invalid or expired`}:{kind:`resolved`,sourceAuthMethod:t.authMethod,source:{walletAuthorityId:t.authMethod.walletAuthorityId,walletAuthMethodId:t.authMethod.walletAuthMethodId,walletSessionId:String(n.operationCredential.walletSessionId),authorityDigestB64u:String(t.authority.authorityDigestB64u),revocationEpoch:t.authority.revocationEpoch}}:{kind:`unavailable`,reason:`exact Wallet Session is ${n.kind}`}}function HW(e){return[{id:e.credentialIdB64u,type:`public-key`,transports:[]}]}async function UW(e){if(e.finalized.walletId!==e.walletId||e.finalized.rpId!==e.rpId||e.finalized.authMethod.kind!==`passkey`||e.finalized.authMethod.status!==`active`)throw Error(`Wallet add-passkey finalize returned a mismatched auth method`);return await AW({walletId:e.finalized.walletId,rpId:e.finalized.rpId,credentialIdB64u:e.finalized.authMethod.credentialIdB64u,credentialPublicKeyB64u:e.finalized.authMethod.credentialPublicKeyB64u,counter:e.finalized.authMethod.counter}),{ok:!0,walletId:e.finalized.walletId,rpId:e.finalized.rpId,walletAuthMethodId:e.walletAuthMethodId,authMethod:{kind:`passkey`,status:`active`}}}function WW(e){let t=e.signingEngine.getSignerWorkerContext();return{requestOperation:Wn.bind(void 0,t)}}async function GW(e){let t=String(e.context.configs.network.relayer.url||``).trim();if(!t)throw Error(`registration.addPasskey requires relayer.url`);let n=$t(e.context.configs);if(!n)throw Error(`registration.addPasskey requires registration.publishableKey and registration.projectEnvironmentId`);let r=await VW(e.walletId);if(r.kind!==`resolved`)throw Error(`Wallet add-passkey requires a selected active source: ${r.reason}`);let i=await bc({relayerUrl:t,walletId:e.walletId,request:{walletId:e.walletId,rpId:e.rpId,authMethod:{kind:`passkey`,rpId:e.rpId},caller:{caller:`same_device_addition`,source:r.source}},auth:{publishableKey:n.publishableKey,environmentId:n.projectEnvironmentId}});if(await Ii(i.intent)!==i.addAuthMethodIntentDigestB64u)throw Error(`Add-auth-method intent digest mismatch`);if(i.intent.walletId!==e.walletId||i.intent.authMethod.kind!==`passkey`||i.intent.authMethod.rpId!==e.rpId)throw Error(`Add-auth-method intent identity changed`);let a=await K.getProfile(String(e.walletId));if(!a||!Number.isSafeInteger(a.defaultSignerSlot)||a.defaultSignerSlot<1)throw Error(`Wallet add-passkey requires an initialized wallet profile`);if(r.sourceAuthMethod.kind===`email_otp`)return await KW({context:e.context,walletId:e.walletId,rpId:e.rpId,relayerUrl:t,profile:a,sourceWalletAuthorityId:r.source.walletAuthorityId,sourceWalletAuthMethodId:r.source.walletAuthMethodId,intentResponse:i,...e.options?{options:e.options}:{}});let o=HW(r.sourceAuthMethod),s=await e.context.signingEngine.getAuthenticationCredentialsSerialized({subjectId:String(e.walletId),challengeB64u:i.addAuthMethodIntentDigestB64u,allowCredentials:o,includeSecondPrfOutput:!1}),c=ar(s);if(!c||!o.some(e=>e.id===c))throw Error(`Wallet add-passkey selected a credential outside the authorized wallet`);let l=F(Gn(s,`Wallet add-passkey custody linking`));try{let n=await BW({relayerUrl:t,walletId:e.walletId,addAuthMethodIntentGrant:i.addAuthMethodIntentGrant,addAuthMethodIntentDigestB64u:i.addAuthMethodIntentDigestB64u,intent:i.intent,auth:{kind:`webauthn_assertion`,rpId:e.rpId,credential:dc(s),expectedChallengeDigestB64u:i.addAuthMethodIntentDigestB64u},sealSource:{kind:`factor_secret`,existingFactorSecret:l},walletAuthMethodId:i.intent.targetWalletAuthMethodId,worker:WW(e.context),createRegistrationCredential:async t=>{let n=await e.context.signingEngine.requestRegistrationCredentialConfirmation({walletId:String(e.walletId),signerSlot:a.defaultSignerSlot,confirmerText:e.options?.confirmerText,confirmationConfigOverride:e.options?.confirmationConfig,registrationOptions:t});if(!n.confirmed)throw Error(`Wallet add-passkey registration was cancelled`);return n.credential}});return await UW({walletId:e.walletId,rpId:e.rpId,walletAuthMethodId:i.intent.targetWalletAuthMethodId,finalized:n.finalized})}finally{l.fill(0)}}async function KW(e){let t=Bn(String(e.walletId));if(!t)throw Error(`Wallet add-passkey from an Email OTP source requires an unlocked wallet`);let n=async()=>await Dc({relayerUrl:e.relayerUrl,walletId:e.walletId,addAuthMethodIntentGrant:e.intentResponse.addAuthMethodIntentGrant,addAuthMethodIntentDigestB64u:e.intentResponse.addAuthMethodIntentDigestB64u}),r=await n(),i=await e.context.signingEngine.requestEmailOtpEnrollmentConfirmation({walletId:String(e.walletId),emailAddress:r.emailHint||`your email`,challengeId:r.challengeId,...r.emailHint?{emailHint:r.emailHint}:{},confirmerText:{title:`Enter email code to add a passkey`,body:`This one-time code confirms you can add a new passkey to this wallet.`},...e.options?.confirmationConfig?{confirmationConfigOverride:e.options.confirmationConfig}:{},onResend:n}),a=(await BW({relayerUrl:e.relayerUrl,walletId:e.walletId,addAuthMethodIntentGrant:e.intentResponse.addAuthMethodIntentGrant,addAuthMethodIntentDigestB64u:e.intentResponse.addAuthMethodIntentDigestB64u,intent:e.intentResponse.intent,auth:{kind:`email_otp`,challengeId:i.challengeId,otpCode:i.otpCode,expectedChallengeDigestB64u:e.intentResponse.addAuthMethodIntentDigestB64u},sealSource:{kind:`unlocked_capability`,capability:t},walletAuthMethodId:e.intentResponse.intent.targetWalletAuthMethodId,worker:WW(e.context),createRegistrationCredential:async t=>{let n=await e.context.signingEngine.requestRegistrationCredentialConfirmation({walletId:String(e.walletId),signerSlot:e.profile.defaultSignerSlot,confirmerText:e.options?.confirmerText,confirmationConfigOverride:e.options?.confirmationConfig,registrationOptions:t});if(!n.confirmed)throw Error(`Wallet add-passkey registration was cancelled`);return n.credential}})).finalized;if(a.walletId!==e.walletId||a.authMethod.kind!==`passkey`||a.authMethod.status!==`active`)throw Error(`Wallet add-passkey finalize returned a mismatched auth method`);return await jW({walletId:e.walletId,walletAuthMethodId:e.intentResponse.intent.targetWalletAuthMethodId,walletAuthorityId:e.sourceWalletAuthorityId,rpId:String(e.rpId),credentialIdB64u:a.authMethod.credentialIdB64u,credentialPublicKeyB64u:a.authMethod.credentialPublicKeyB64u,counter:a.authMethod.counter,signerSlot:e.profile.defaultSignerSlot,credential:{id:a.authMethod.credentialIdB64u,rawId:a.authMethod.credentialIdB64u}}),await Bs({walletId:e.walletId,walletAuthorityId:e.sourceWalletAuthorityId,sourceWalletAuthMethodId:e.sourceWalletAuthMethodId,targetAuthority:await U({authority:a.authority})}),{ok:!0,walletId:e.walletId,rpId:String(e.rpId),walletAuthMethodId:e.intentResponse.intent.targetWalletAuthMethodId,authMethod:{kind:`passkey`,status:`active`}}}async function qW(e){let t=Go(String(e.walletId||``).trim()),n=i(String(e.rpId||``).trim());if(!n.ok)throw Error(n.error.message);try{let r=await GW({context:e.context,walletId:t,rpId:n.value,options:e.options});return await e.options?.afterCall?.(!0,r),r}catch(t){let n=I(t);try{e.options?.onError?.(n)}finally{await e.options?.afterCall?.(!1)}throw n}}function JW(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Email OTP custody worker returned no resealed envelope`);let t=e;return{nonceB64u:ve(t.nonceB64u,`resealed envelope nonceB64u`),sealedCustodySecretB64u:we(t.sealedCustodySecretB64u,`resealed envelope sealedCustodySecretB64u`),aadHashB64u:Ee(t.aadHashB64u,`resealed envelope aadHashB64u`),ciphertextDigestB64u:Ee(t.ciphertextDigestB64u,`resealed envelope ciphertextDigestB64u`)}}async function YW(e){let t=await yc({relayerUrl:e.relayerUrl,walletId:e.walletId,addAuthMethodIntentGrant:e.addAuthMethodIntentGrant,addAuthMethodIntentDigestB64u:e.addAuthMethodIntentDigestB64u,intent:e.intent,auth:e.auth,authority:e.authority});if(!t.custodyEnvelope)throw Error(`Email OTP add-auth-method start omitted the source custody envelope`);let n=t.custodyEnvelope,r=crypto.getRandomValues(new Uint8Array(32)),i=r.slice(),a;try{a=await e.context.signingEngine.prepareEmailOtpRegistrationEnrollmentMaterialInternal({relayUrl:e.relayerUrl,walletId:z(String(e.walletId)),userId:e.providerSubject,clientSecret32:r})}catch(e){throw i.fill(0),e}finally{r.fill(0)}let o=C(Pe(`wallet-custody-envelope`,24,`wallet custody envelope ids`));if(!o.ok)throw Error(o.error.message);let s=Jo({enrollmentId:a.enrollmentId,enrollmentSealKeyVersion:a.enrollmentSealKeyVersion}),c=ts(e.walletAuthMethodId),l=me(1),u=$o({walletId:n.walletId,envelopeId:o.value,factor:s,envelopeRevision:l,binding:n.binding,ownership:c}),d=e.existingFactorSecret.slice(),f;try{f=JW(await e.worker.requestOperation({kind:`walletCustodyCeremony`,request:{type:`linkWalletCustodyPasskey`,payload:{existingEnvelope:n,existingFactorSecret:d.buffer,replacementEnvelopeBindingJson:u,replacementFactorSecret:i.buffer},transfer:[d.buffer,i.buffer]}}))}finally{d.byteLength>0&&d.fill(0),i.byteLength>0&&i.fill(0)}let p=(e.nowMs??Date.now)(),m=Xo(ns({envelopeId:o.value,walletId:n.walletId,ownership:c,binding:n.binding,factor:s,envelopeRevision:l,nonceB64u:f.nonceB64u,sealedCustodySecretB64u:f.sealedCustodySecretB64u,ciphertextDigestB64u:f.ciphertextDigestB64u,aadHashB64u:f.aadHashB64u,lifecycle:{state:`active`,activatedAtMs:p},createdAtMs:p,updatedAtMs:p}));return{finalized:await Ec({relayerUrl:e.relayerUrl,walletId:e.walletId,addAuthMethodCeremonyId:t.addAuthMethodCeremonyId,custodyEnvelope:m,emailOtpTarget:{kind:`new_enrollment`,enrollment:a.emailOtpEnrollment}})}}async function XW(e){if(!Na(e.authority))throw Error(`Wallet add-email-code finalize returned a non-Email authority`);let t=c(e.walletAuthMethodId);if(!t.ok)throw Error(t.error.message);let n=r(e.walletAuthorityId);if(!n.ok)throw Error(n.error.message);let i=String(e.authority.verifier.emailHashHex||``).trim();if(!i)throw Error(`Wallet add-email-code finalize returned no verified email digest`);let a=String(e.authority.factor.providerUserId||``).trim();if(!a)throw Error(`Wallet add-email-code finalize returned no provider identity`);let o=w(e.emailAddress);if(!o.ok)throw Error(o.error.message);let s=Date.now();await K.upsertWalletAuthMethod({version:`wallet_auth_method_v1`,kind:`email_otp`,status:`active`,localStatus:`synced`,walletId:e.walletId,emailHashHex:i,registrationAuthorityId:a,authority:e.authority,createdAtMs:s,updatedAtMs:s}),await K.upsertWalletAuthMethodV2(Wo({version:`wallet_auth_method_v2`,walletAuthMethodId:t.value,walletId:e.walletId,walletAuthorityId:n.value,kind:`email_otp`,status:`active`,emailHashHex:i,registrationAuthorityId:a,createdAtMs:s,updatedAtMs:s,activatedAtMs:s}));let l=await K.retainVerifiedEmailOtpLocalPresentation({walletId:e.walletId,walletAuthMethodId:t.value,emailAddress:o.value});if(l.kind!==`retained`)throw Error(`Verified Email OTP presentation was not retained: ${l.reason}`)}function ZW(e){let t=e.signingEngine.getSignerWorkerContext();return{requestOperation:Wn.bind(void 0,t)}}function QW(e){return e}function $W(e){let t=String(e||``).trim().toLowerCase();if(!t||!t.includes(`@`))throw Error(`registration.addEmail requires an email address`);return t}async function eG(e){let t=String(e.context.configs.network.relayer.url||``).trim();if(!t)throw Error(`registration.addEmail requires relayer.url`);let n=$t(e.context.configs);if(!n)throw Error(`registration.addEmail requires registration.publishableKey and registration.projectEnvironmentId`);let r=$W(e.emailAddress),a=QW(r),o=i(String(e.context.signingEngine.getRpId()||``).trim());if(!o.ok)throw Error(`registration.addEmail ${o.error.message}`);let s=o.value,c=await VW(e.walletId);if(c.kind!==`resolved`)throw Error(`Wallet add-email-code requires a selected active source: ${c.reason}`);if(c.sourceAuthMethod.kind!==`passkey`)throw Error(`Wallet add-email-code requires a selected active passkey source`);let l=await bc({relayerUrl:t,walletId:e.walletId,request:{walletId:e.walletId,rpId:String(s),authMethod:{kind:`email_otp`,email:r},caller:{caller:`same_device_addition`,source:c.source}},auth:{publishableKey:n.publishableKey,environmentId:n.projectEnvironmentId}});if(await Ii(l.intent)!==l.addAuthMethodIntentDigestB64u)throw Error(`Add-auth-method intent digest mismatch`);if(l.intent.walletId!==e.walletId||l.intent.authMethod.kind!==`email_otp`||l.intent.authMethod.email!==r)throw Error(`Add-auth-method intent identity changed`);let u=await K.getProfile(String(e.walletId));if(!u||!Number.isSafeInteger(u.defaultSignerSlot)||u.defaultSignerSlot<1)throw Error(`Wallet add-email-code requires an initialized wallet profile`);let d=HW(c.sourceAuthMethod),f=await e.context.signingEngine.getAuthenticationCredentialsSerialized({subjectId:String(e.walletId),challengeB64u:l.addAuthMethodIntentDigestB64u,allowCredentials:d,includeSecondPrfOutput:!1}),p=ar(f);if(!p||!d.some(e=>e.id===p))throw Error(`Wallet add-email-code selected a credential outside the authorized wallet`);let m=Gn(f,`Wallet add-email-code custody linking`),h=async()=>await Dc({relayerUrl:t,walletId:e.walletId,addAuthMethodIntentGrant:l.addAuthMethodIntentGrant,addAuthMethodIntentDigestB64u:l.addAuthMethodIntentDigestB64u}),g=await h(),_=await e.context.signingEngine.requestEmailOtpEnrollmentConfirmation({walletId:String(e.walletId),emailAddress:r,challengeId:g.challengeId,...g.emailHint?{emailHint:g.emailHint}:{},...e.options?.confirmerText?{confirmerText:e.options.confirmerText}:{},...e.options?.confirmationConfig?{confirmationConfigOverride:e.options.confirmationConfig}:{},onResend:h}),v=await Nt({authMethod:{kind:`email_otp`,proofKind:`otp_challenge`,email:r,providerSubject:a,otpCode:_.otpCode,challengeId:_.challengeId},relayUrl:t,walletId:String(e.walletId),registrationIntentDigestB64u:l.addAuthMethodIntentDigestB64u}),y=F(m);try{let n=await YW({context:e.context,relayerUrl:t,walletId:e.walletId,addAuthMethodIntentGrant:l.addAuthMethodIntentGrant,addAuthMethodIntentDigestB64u:l.addAuthMethodIntentDigestB64u,intent:l.intent,auth:{kind:`webauthn_assertion`,rpId:s,credential:dc(f),expectedChallengeDigestB64u:l.addAuthMethodIntentDigestB64u},authority:{kind:`email_otp`,emailOtpRegistrationProof:v.proof},existingFactorSecret:y,walletAuthMethodId:l.intent.targetWalletAuthMethodId,providerSubject:a,worker:ZW(e.context)});if(n.finalized.walletId!==e.walletId||n.finalized.authMethod.kind!==`email_otp`||n.finalized.authMethod.status!==`active`)throw Error(`Wallet add-email-code finalize returned a mismatched auth method`);return await XW({walletId:e.walletId,walletAuthMethodId:l.intent.targetWalletAuthMethodId,walletAuthorityId:c.source.walletAuthorityId,emailAddress:r,authority:n.finalized.authority}),await Bs({walletId:e.walletId,walletAuthorityId:c.source.walletAuthorityId,sourceWalletAuthMethodId:c.source.walletAuthMethodId,targetAuthority:await U({authority:n.finalized.authority})}),{ok:!0,walletId:e.walletId,emailAddress:r,walletAuthMethodId:l.intent.targetWalletAuthMethodId,authMethod:{kind:`email_otp`,status:`active`}}}finally{y.fill(0)}}async function tG(e){let t=Go(String(e.walletId||``).trim());try{let n=await eG({context:e.context,walletId:t,emailAddress:e.emailAddress,options:e.options});return await e.options?.afterCall?.(!0,n),n}catch(t){let n=I(t);try{e.options?.onError?.(n)}finally{await e.options?.afterCall?.(!1)}throw n}}function nG(e){return{registerWallet:rG.bind(null,e),getNearAccountState:iG.bind(null,e),addSigner:aG.bind(null,e),addPasskey:oG.bind(null,e),removeAuthMethod:sG.bind(null,e),addEmail:cG.bind(null,e)}}async function rG(e,t){let n=e();return await An({context:n,authMethod:t.authMethod,wallet:t.wallet,signerSelection:t.signerSelection,options:t.options||{},authenticatorOptions:Xs(n.configs.webauthn.authenticatorOptions)})}async function iG(e,t){let n=z(t.walletId);return on(n)||await e().signingEngine.getWalletNearProvisioningState(n)}async function aG(e,t){return await dr({context:e(),walletId:t.walletId,rpId:t.rpId,signerSelection:t.signerSelection,options:t.options||{}})}async function oG(e,t){return await qW({context:e(),walletId:t.walletId,rpId:t.rpId,options:t.options})}async function sG(e,t){return await tz({context:e(),walletId:t.walletId,walletAuthMethodId:t.walletAuthMethodId})}async function cG(e,t){return await tG({context:e(),walletId:t.walletId,emailAddress:t.emailAddress,options:t.options})}async function lG(e){let{context:t,pending:n,options:r}=e,i=String(n.walletId);R(r?.onEvent,i,{phase:G.STEP_01_STARTED,status:`started`,authMethod:`passkey`});try{if(n.auth.kind!==`passkey`)throw Error(`Pending registration requires its founding email authentication method`);let e=r?.unlockSelection?.mode===`ed25519_only`||r?.unlockSelection?.mode===`ed25519_and_ecdsa`;if(e&&n.signerPlanKind!==`near_ed25519_and_evm_family_ecdsa`)throw Error(`wallet unlock is missing the requested capability subject`);let a=tp({defaults:t.configs.signing.sessionDefaults,override:r?.signingSession});if(a.kind===`disabled`)throw Error(`Pending registration recovery requires an enabled signing session policy`);let o=await un({relayerUrl:t.configs.network.relayer.url,sessionPolicy:a,pending:n,exactMethod:{kind:`passkey`},signingSurface:t.signingEngine,nearContext:t,nearCompletion:e?`await`:`background`,onEvent:r?.onEvent}),s=await uG({context:t,walletId:n.walletId,requireNear:e,signingSession:o.signingSession});return R(r?.onEvent,i,{phase:G.STEP_06_SESSION_READY,status:`succeeded`,authMethod:`passkey`}),await Vn({context:t,authMethod:`passkey`,unlockSubjectId:i,loginResult:s,onEvent:r?.onEvent,afterCall:r?.afterCall})}catch(e){let t=I(e);return await Ln({unlockSubjectId:i,message:t.message,error:t,cancelled:wt(t),onEvent:r?.onEvent,onError:r?.onError,afterCall:r?.afterCall})}}async function uG(e){if(!e.requireNear)return{success:!0,kind:`ecdsa_wallet_unlocked`,walletId:e.walletId,signingSession:e.signingSession};let t=on(e.walletId);if(t?.status!==`near_ready`)throw Error(t?.status===`near_failed_retryable`?t.error:`Pending NEAR registration did not establish the requested account`);let n=await lS(e.context,e.walletId,new el);if(n.appIdentity.kind!==`resolved`||!n.appIdentity.nearAccountId||n.appIdentity.nearAccountId!==t.nearAccountId)throw Error(`Pending NEAR registration did not establish the requested account`);return{success:!0,kind:`near_wallet_unlocked`,walletId:e.walletId,nearAccountId:n.appIdentity.nearAccountId,loggedInNearAccountId:n.appIdentity.nearAccountId,operationalPublicKey:n.appIdentity.nearOperationalPublicKey,signingSession:e.signingSession}}function dG(e){return{unlock:gG.bind(null,e),lock:_G.bind(null,e),getSession:vG.bind(null,e),getRecentUnlocks:bG.bind(null,e),hasPasskey:yG}}function fG(e){return e.kind===H.passkey&&e.status===`active`}function pG(e){switch(e?.mode){case`ed25519_only`:return{kind:`near_ed25519_only`};case`ecdsa_only`:return{kind:`evm_family_ecdsa_only`};case`ed25519_and_ecdsa`:case void 0:return{kind:`all_registered_mpc`}}throw Error(`wallet unlock selection is unsupported`)}async function mG(e){let t=await My({walletId:e.walletId,requestedCapabilityFamilies:pG(e.selection)});switch(t.kind===`missing_requested_capability_subject`&&(await Cr({relayerUrl:e.relayerUrl}),t=await My({walletId:e.walletId,requestedCapabilityFamilies:pG(e.selection)})),t.kind){case`resolved`:return t.subjectSet;case`missing_requested_capability_subject`:throw Error(`wallet unlock is missing the requested capability subject`);case`capability_subject_resolution_failed`:throw Error(`wallet unlock subject resolution failed: ${t.reason}`)}throw Error(`wallet unlock subject resolution returned an unknown result`)}function hG(e){let t=null;for(let n of e.subjects)if(n.kind===`near_ed25519_wallet`){if(t)throw Error(`wallet unlock resolved multiple NEAR Ed25519 subjects`);t=n}return t}async function gG(e,t,n){let r=String(t||``).trim();if(!r)throw Error(`unlock requires walletId`);let i=e(),a=await Zt(z(r));if(a)return await lG({context:i,pending:a,options:n});let o=await mG({relayerUrl:i.configs.network.relayer.url,walletId:r,selection:n?.unlockSelection}),s=await qb(i,o,n);if(s?.success){let e=hG(o);e&&await i.signingEngine.activateAuthenticatedWalletState({walletId:e.walletId,nearAccountId:e.nearAccountId,signerSlot:e.signerSlot,nearClient:i.nearClient})}return await i.signingEngine.warmCriticalResources({kind:`none`}),s}async function _G(e){await lC(e())}async function vG(e,t){return await lS(e(),t,new el)}async function yG(e){let t=String(e||``).trim();if(!t)return!1;try{return(await K.listWalletAuthMethodsV2ForWallet(t)).some(fG)}catch{return!1}}async function bG(e){return await nC(e())}async function xG(e,t,n){let r=z(t.walletSession.walletId);return await e().signingEngine.scheduleRouterAbEcdsaDerivationLoginPresignaturePrefill({walletId:r,chainTarget:t.chainTarget},n)}async function SG(e){switch(e.state.kind){case`active_session`:break;case`wallet_unlocked_without_signing_session`:if(e.state.reason!==`exhausted`)return;break;case`wallet_locked`:case`wallet_authenticated_identity_unresolvable`:case`expired_session`:return;default:e.state;return}let t=Lr({walletId:e.state.walletId}),n=new el,r=[];for(let i of e.chainTargets)r.push(e.prefill({walletSession:t,chainTarget:i},n));await Promise.all(r)}function CG(e){switch(e.kind){case`ecdsa`:return{kind:`ecdsa`,walletSession:Lr(e.walletSession),chainTarget:Mr(e.chainTarget)};case`ed25519`:return{kind:`ed25519`,walletSession:Lr(e.walletSession),nearAccount:Pr(e.nearAccount.accountId)}}}function wG(e){switch(e.kind){case`ecdsa`:return{kind:`ecdsa`,laneIdentity:jc(e.laneIdentity)};case`ed25519`:{let t=p(e.materialActivation);if(!t.ok)throw Error(t.error.message);return{kind:`ed25519`,laneIdentity:Nc(e.laneIdentity),materialActivation:t.value}}}}function TG(e,t){let n={...e.options,theme:e.options.theme??t};switch(e.kind){case`ecdsa`:{let t=jc(e.laneIdentity);if(String(t.signer.walletId)!==String(e.walletSession.walletId))throw Error(`[SeamsWeb] key export lane wallet does not match wallet session`);if(!Fr(t.signer.chainTarget,e.chainTarget))throw Error(`[SeamsWeb] key export lane chain target does not match request target`);return{kind:`ecdsa`,chainTarget:e.chainTarget,walletSession:e.walletSession,laneIdentity:t,options:n}}case`ed25519`:{let t=Nc(e.laneIdentity),r=p(e.materialActivation);if(!r.ok)throw Error(r.error.message);if(String(t.signer.account.wallet.walletId)!==String(e.walletSession.walletId))throw Error(`[SeamsWeb] Ed25519 export lane wallet does not match wallet session`);if(String(t.signer.account.nearAccountId)!==String(e.nearAccount.accountId))throw Error(`[SeamsWeb] Ed25519 export lane does not match the NEAR account`);return{kind:`ed25519`,nearAccount:Pr(e.nearAccount.accountId),walletSession:e.walletSession,laneIdentity:t,materialActivation:r.value,options:n}}}}function EG(e,t){let n=t;return{theme:Ue({value:n.theme,fallback:e.theme,legacyTokens:n.tokens}),palette:He({value:n.palette,fallback:e.palette})}}function DG(e,t){t.event===`registration.near_provisioning_changed`&&e(t)}function OG(e){switch(e.kind){case`completed`:return;case`pending`:console.warn(`[SeamsWeb] pending wallet recovery replay remains pending:`,e.recoveryOperationId,e.failure);return;case`discarded`:console.warn(`[SeamsWeb] pending wallet recovery was refused and discarded:`,e.recoveryOperationId);return;case`corrupt`:console.warn(`[SeamsWeb] pending wallet recovery replay record is corrupt:`,e.recoveryOperationId);return}}function kG(e){e().catch(AG)}function AG(e){console.warn(`[SeamsWeb] pending linked-device acknowledgement replay failed:`,e instanceof Error?e.message:String(e||`unknown error`))}var jG=class{constructor(e,t){this.configs=e,ks({mode:`wallet`}),this.nearClient=t||new Nd(N(this.configs.network.chains));let n=jE(K),r=new qR(this.configs,this.nearClient,{managerStores:n.managerStores,signingEngineStores:n.signingEngineStores,sealedSigningSessionStore:n.sealedSigningSessionStore,ed25519YaoPublicCapabilityReferences:n.ed25519YaoPublicCapabilityReferences,createRuntime:Fw,initializeRuntime:NE,shouldPrewarmUiConfirmUi:NG});this.signingEngine=r,this.appearance=this.configs.ui.appearance,this.theme=this.appearance.theme.mode;try{this.signingEngine.setAppearance(this.appearance)}catch{}let i=this.signingEngine.getUserPreferences(),a=Pw(r.getSignerWorkerContext()),o=qC({http:a.http,relayerUrl:String(this.configs.network.relayer?.url||``).trim(),walletSessions:q,resolveSelectedWalletAuthority:K.resolveSelectedWalletAuthority.bind(K),readWalletAuthenticationState:r.readWalletAuthenticationState.bind(r),readUnlockedEd25519ExportRootCapabilityV1:In});this.placement=ww({lockWallet:this.lockAfterWalletMove.bind(this),signingEngine:r,managementRequest:o.managementRequest,readAuthentication:r.readWalletAuthenticationState.bind(r)});let s=nU({platform:a,ownerAuthorities:o,configs:this.configs,signingEngine:r,getContext:this.getContext.bind(this)});this.deviceLinkingDispose=s.dispose,this.resumePendingAcknowledgementsV1=s.resumePendingAcknowledgementsV1;let c=nG(this.getContext.bind(this)),l=dG(this.getContext.bind(this));this.prefillRestoredSession=xG.bind(null,this.getContext.bind(this));let u=CW({getContext:this.getContext.bind(this),registerWallet:c.registerWallet,getWalletSession:l.getSession,resumePendingAcknowledgements:this.resumePendingAcknowledgementsAfterExactUnlockV1.bind(this)}),d={flush:MG,setCurrentWallet:i.setCurrentWallet.bind(i),getCurrentWalletId:i.getCurrentWalletId.bind(i),onConfirmationConfigChange:i.onConfirmationConfigChange.bind(i),onCurrentWalletChange:i.onCurrentWalletChange.bind(i),setConfirmationBehavior:i.setConfirmationBehavior.bind(i),setConfirmationConfig:i.setConfirmationConfig.bind(i),getConfirmationConfig:i.getConfirmationConfig.bind(i)},f={resolveExactKeyExportLane:this.resolveExactKeyExportLaneDomain.bind(this),exportKeypairWithUI:this.exportKeypairWithUIDomain.bind(this)},p=vO({createNearCommands:fE.bind(null,this.getContext.bind(this)),createEvmFamilyCommands:mE.bind(null,this.getContext.bind(this)),nearClient:this.nearClient,configs:this.configs,preferences:d,auth:{...l,...u},registration:{...c,onNearAccountChange:this.onNearAccountChange.bind(this)},recovery:{syncAccount:this.syncAccountDomain.bind(this),getCodeStatus:this.getCodeStatusDomain.bind(this),confirmBackup:this.confirmBackupDomain.bind(this),requestWalletCustodyEmailOtpChallenge:this.requestWalletCustodyEmailOtpChallengeDomain.bind(this),rotateCodes:this.rotateCodesDomain.bind(this)},devices:{...s.domain},keys:f});this.preferences=d,this.auth=p.auth,this.registration=p.registration,this.recovery=p.recovery,this.devices=p.devices,this.keys=f,this.near=p.near,this.tempo=p.tempo,this.evm=p.evm,this.resumePendingRegistrationOnStartup(),kG(s.resumePendingAcknowledgementsV1)}async prefillRestoredWalletSession(e){await SG({state:e,chainTargets:this.configuredChainTargets(),prefill:this.prefillRestoredSession})}async lockAfterWalletMove(){DC(),await this.auth.lock()}onSdkLifecycleEvent(e){return this.signingEngine.onSdkLifecycleEvent(e)}getContext(){return{signingEngine:this.signingEngine,nearClient:this.nearClient,configs:this.configs,theme:this.theme,resumePendingAcknowledgementsV1:this.resumePendingAcknowledgementsAfterExactUnlockV1.bind(this)}}resumePendingAcknowledgementsAfterExactUnlockV1(){kG(this.resumePendingAcknowledgementsV1)}async resumePendingRegistrationOnStartup(){if(K.isDisabled())return;let e=String(this.configs.network.relayer?.url||``).trim();if(e){try{let t=await Cr({relayerUrl:e});for(let e of t)e.kind===`failed`&&console.warn(`[SeamsWeb] pending registration replay remains pending:`,e.registrationCeremonyId,e.error)}catch(e){console.warn(`[SeamsWeb] pending registration startup replay failed:`,e instanceof Error?e.message:String(e||`unknown error`))}try{let t=await tu({relayUrl:e});for(let e of t)OG(e)}catch(e){console.warn(`[SeamsWeb] pending wallet recovery startup replay failed:`,e instanceof Error?e.message:String(e||`unknown error`))}}}dispose(){this.deviceLinkingDispose(),this.signingEngine.dispose()}setTheme(e){e!==`light`&&e!==`dark`||this.setAppearance({theme:{...this.appearance.theme,mode:e}})}chainTarget(e){return Kw(this.configs.network.chains,e)}configuredChainTargets(){return Ir(this.configs.network.chains)}setAppearance(e){let t=EG(this.appearance,e);this.appearance=t,this.theme=t.theme.mode;try{this.signingEngine.setAppearance(t)}catch{}try{document.documentElement.setAttribute(`data-seams-theme`,this.theme)}catch{}}setWalletIframeSurfaceMeasurementBinding(e){this.signingEngine.setWalletIframeSurfaceMeasurementBinding(e)}async syncAccountDomain(e){let t=e.walletId?Go(e.walletId):null;return await KT(this.getContext(),t?String(t):null,e.options)}onNearAccountChange(e){return this.onSdkLifecycleEvent(DG.bind(null,e))}async getCodeStatusDomain(e){let t=await cf({relayUrl:String(this.configs.network.relayer.url||``).trim(),walletId:e.walletId});return t.kind===`ready`?{...t,pendingLocalBackup:await Ql.has(e.walletId)}:t}async confirmBackupDomain(e){let t=String(this.configs.network.relayer.url||``).trim();if((await Zl({walletId:e.walletId,loadStatus:this.getCodeStatusDomain.bind(this,e),loadPendingBackup:this.loadPendingWalletRecoveryCodeBackupRequest.bind(this,e.walletId)},this.signingEngine.getWalletIframeSurfaceMeasurementBinding(),{appearance:this.appearance})).kind!==`wallet_recovery_codes_backed_up_v1`)throw Error(`Pending wallet recovery-code backup was not completed`);let n=await uf({relayUrl:t,walletId:e.walletId});return n.kind===`acknowledged`&&await Ql.delete(e.walletId),n}async loadPendingWalletRecoveryCodeBackupRequest(e){let t=await Ql.read(e);return t?{kind:`wallet_recovery_code_backup_request_v1`,walletId:t.walletId,recoveryCodes:t.recoveryCodes,continuation:`pending_backup_must_finish`}:null}async requestWalletCustodyEmailOtpChallengeDomain(e){return await lf({relayUrl:String(this.configs.network.relayer.url||``).trim(),...e})}async rotateCodesDomain(e){let t=String(this.configs.network.relayer.url||``).trim();return await rD({context:this.getContext(),relayUrl:t,walletId:e.walletId,authorization:e.authorization})}async signTempoFeeTokenPreferenceInternal(e){let t=xE(e),n=await this.signingEngine.signEvmFamily({...e,request:t});if(n.chain!==`evm`||n.kind!==`eip1559`)throw Error(`[SeamsWeb][tempo] expected EVM FeeManager result, received ${n.chain}`);return n}async resolveExactKeyExportLaneDomain(e){let t=CG(e);if(Yw(this.configs,t),!String(t.walletSession.walletId||``).trim())throw Error(`[SeamsWeb] key export lane resolution requires wallet session context`);return wG(await this.signingEngine.resolveExactKeyExportLane(t))}async exportKeypairWithUIDomain(e){let t=TG(e,this.theme);if(Yw(this.configs,t),!String(t.walletSession.walletId||``).trim())throw Error(`[SeamsWeb] key export requires wallet session user context`);await this.signingEngine.exportKeypairWithUI(t)}};async function MG(){}function NG(e){return!(typeof window>`u`||window.Worker===void 0||e&&e!==window.location.origin)}const PG=`seams-theme-overrides`,FG=[`.seams-wallet-ui`,`.seams-auth-menu-surface`,`.seams-host-themed-dialog`],IG=FG.join(`,
|
|
2
|
-
`),LG=FG.map(e=>`${e}[theme="light"],\n:root[data-seams-theme="light"] ${e}:not([theme="dark"])`).join(`,
|
|
3
|
-
`);let RG=null;function zG(){return RG||=_f({doc:document,baseCss:``,dynamicStyleDataAttr:`data-seams-theme-overrides`,nonce:()=>gf()}),RG}function BG(e){let t=e.trim();return t&&/^[A-Za-z][A-Za-z0-9_-]*$/.test(t)?t:null}function VG(e){let t=e.trim();return!t||t.length>1024||/[{};\n\r]/.test(t)?null:t}function HG(e,t){let n=[];for(let[r,i]of Object.entries(e)){let e=BG(r);if(!e)continue;let a=VG(i);a&&n.push(` --seams-${t}-${e}: ${a} !important;`)}return n}function UG(e){let t=e.theme.mode,n=e.theme.colors,r=[...HG(n,`colors`),...HG(e.theme.shape??{},`shape`)],i=[];if(r.length>0){let e=t===`light`?LG:IG;i.push(`${e} {\n${r.join(`
|
|
4
|
-
`)}\n}`)}let a=i.join(`
|
|
5
|
-
|
|
6
|
-
`).trim();if(!a){zG().deleteDynamicRule(PG);return}zG().setDynamicRule(PG,a)}function WG(){return{parentOrigin:null,port:null,configuration:{kind:`unconfigured`},preferencesRevision:0,sessionObserver:null,nearClient:null,walletRuntime:null,prefsUnsubscribe:null,lifecycleSource:null,lifecycleUnsubscribe:null,lifecycleListener:null,expiredSessionsByWallet:new Map,surfaceMeasurementBinding:{kind:`disabled`}}}function GG(e){let{configuration:t}=e;if(t.kind===`unconfigured`)throw Error(`Wallet service not configured. Call PM_SET_CONFIG first.`);let n=N(t.config.network.chains);return e.nearClient||=new Nd(n),e.walletRuntime||(Sl(!0),e.walletRuntime=new jG(t.config,e.nearClient),KG(e)),e.walletRuntime}function KG(e){try{let t=e.walletRuntime;if(!t)return;let n=t.theme;(n===`light`||n===`dark`)&&document.documentElement.setAttribute(`data-seams-theme`,n)}catch{}}function qG(e,t){let n=Ze(e.configuration.kind===`configured`?e.configuration.config:null),r=Ze(t.config);e.configuration=t;let i=t.config.ui.appearance,a=i.theme.mode;try{document.documentElement.setAttribute(`data-seams-theme`,a),UG(i)}catch{}if(e.walletRuntime&&r===n)try{e.walletRuntime.setAppearance(i)}catch{}if(Xe(JG(t.assetsBaseUrl)),r!==n){let t=e.walletRuntime;e.walletRuntime=null,e.sessionObserver?.dispose(),e.sessionObserver=null,e.lifecycleSource=null,e.surfaceMeasurementBinding={kind:`disabled`},e.prefsUnsubscribe?.(),e.lifecycleUnsubscribe?.(),e.prefsUnsubscribe=null,e.lifecycleUnsubscribe=null,e.nearClient=null,t?.dispose()}}function JG(e){let t=window.location.origin;try{let n=new URL(e,t);if(n.origin===t)return n.href.endsWith(`/`)?n.href:`${n.href}/`}catch{}return new URL(`/sdk/`,t).href}function YG(e,t){e.lifecycleSource!==t&&(e.lifecycleUnsubscribe?.(),e.lifecycleSource=t,e.lifecycleUnsubscribe=t.onSdkLifecycleEvent(QG.bind(null,e,t)))}function XG(e,t){e.lifecycleListener=t,e.walletRuntime&&YG(e,e.walletRuntime)}function ZG(e){throw Error(`Unhandled SDK lifecycle event: ${String(e)}`)}function QG(e,t,n){if(e.lifecycleSource===t)switch(n.event){case`signing_session.expired`:{let t=e.expiredSessionsByWallet.get(n.walletId);if(t?.has(n.walletSessionId))return;t?t.add(n.walletSessionId):e.expiredSessionsByWallet.set(n.walletId,new Set([n.walletSessionId])),e.lifecycleListener?.(n);return}case`registration.near_provisioning_changed`:e.lifecycleListener?.(n);return;default:return ZG(n)}}let $G=null;const eK=new Map;let tK=null;const nK=new Set([`PM_REGISTER_WALLET`,`PM_ADD_WALLET_SIGNER`,`PM_ADD_PASSKEY`,`PM_ADD_EMAIL_OTP`,`PM_REVOKE_AUTH_METHOD`,`PM_REVOKE_LINKED_DEVICE`,`PM_SIGN_TX_WITH_ACTIONS`,`PM_SIGN_AND_SEND_TX`,`PM_SIGN_DELEGATE_ACTION`,`PM_SIGN_NEP413`,`PM_UNLOCK`,`PM_SIGN_TEMPO`,`PM_ROTATE_WALLET_RECOVERY_CODES`,`PM_ACKNOWLEDGE_WALLET_RECOVERY_CODE_BACKUP`,`PM_SYNC_ACCOUNT_FLOW`,`PM_EXPORT_KEYPAIR_UI`,`PM_SCAN_AND_LINK_DEVICE`,`PM_START_DEVICE2_LINKING_FLOW`]);function rK(e,t){e.post({type:`SURFACE_MEASUREMENT`,payload:t})}function iK(e){if(e.type!==`PM_EXPORT_KEYPAIR_UI`)return;let t=e.payload?.options?.variant;return t===`modal`||t===`drawer`?t:`drawer`}function aK(e){let t;try{t=Ct(e.req.requestId)}catch{return null}let n=iK(e.req);return{requestId:t,binding:{kind:`wallet_iframe`,...e.transactionReview?{transactionReview:e.transactionReview}:{},requestId:t,postMeasurement:rK.bind(null,e),...n?{hostSurfaceVariant:n}:{}}}}function oK(e){return nK.has(e.req.type)}function sK(e,t){let n=e.surfaceMeasurementBinding;n.kind!==`wallet_iframe`||n.requestId!==t||(e.surfaceMeasurementBinding={kind:`disabled`},e.walletRuntime?.setWalletIframeSurfaceMeasurementBinding({kind:`disabled`}))}function cK(e,t){e.surfaceMeasurementBinding=t,GG(e).setWalletIframeSurfaceMeasurementBinding(t)}function lK(e){return tK!==e.executionGeneration&&(eK.clear(),tK=e.executionGeneration),$G||=WG(),e.onConfigurationChanged=uK.bind(null,e),$G.parentOrigin=e.parentOrigin,$G.port!==e.port&&($G.sessionObserver?.dispose(),$G.sessionObserver=null),$G.port=e.port,e.parentOrigin!==null&&TC(e.parentOrigin),XG($G,SK.bind(null,$G)),e.configuration.kind===`configured`&&qG($G,e.configuration),$G}function uK(e){!$G||e.configuration.kind===`unconfigured`||lK(e)}function dK(e){let t=e.walletRuntime,n=GG(e);if(YG(e,n),t===n)return pK(e,n),n;let r=n.preferences;e.prefsUnsubscribe?.();let i=_K.bind(null,e,n),a=r.onConfirmationConfigChange?.(i)||null,o=r.onCurrentWalletChange?.(i)||null;return e.prefsUnsubscribe=()=>{try{a?.()}catch{}try{o?.()}catch{}},pK(e,n),Promise.resolve().then(i).catch(()=>{}),n}function fK(e,t,n,r){e.walletRuntime!==t||e.port!==n||n.postMessage(r)}function pK(e,t){if(e.sessionObserver)return e.sessionObserver;if(!e.port)throw Error(`Wallet session observation requires a connected parent`);return e.sessionObserver=new ep(t,fK.bind(null,e,t,e.port),e.expiredSessionsByWallet,lS.bind(null,t.getContext())),e.sessionObserver}function mK(e,t,n,r){return pK(e,vK(e,t)).observe(n,r)}function hK(e,t){return pK(e,vK(e,t)).publishCurrentSession()}function gK(e,t){return{walletId:t.preferences.getCurrentWalletId(),confirmationConfig:t.preferences.getConfirmationConfig(),revision:e.preferencesRevision}}function _K(e,t){e.walletRuntime===t&&(e.preferencesRevision+=1,e.port?.postMessage({type:`PREFERENCES_CHANGED`,payload:gK(e,t)}))}function vK(e,t){if(t.executionGeneration!==t.state.executionGeneration)throw Error(`Wallet configuration changed during request`);return dK(e)}function yK(e,t){return gK(e,vK(e,t))}function bK(e,t){return{getWalletRuntime:vK.bind(null,e,t),readPreferences:yK.bind(null,e,t),observeSession:mK.bind(null,e,t),publishCurrentSession:hK.bind(null,e,t),post:xK.bind(null,t),postProgress:(e,n)=>{e&&xK(t,{type:`PROGRESS`,requestId:e,payload:n})},isCancelled:t.isCancelled,respondIfCancelled:t.respondIfCancelled}}function xK(e,t){e.executionGeneration===e.state.executionGeneration&&(mf(t),e.post(t))}function SK(e,t){e.sessionObserver?.onLifecycleEvent(t)}async function CK(e,t){if(e.respondIfCancelled(e.req.requestId))return;let n=lK(e.state),r=pK(n,vK(n,e));r.beginOperation(),hf(e.req,e.post);let i=oK(e)?aK(e):null;i&&cK(n,i.binding);try{let r=vK(n,e);await Tf(e.req,r.preferences.getCurrentWalletId());let i=eK.get(t);i||(i=t(bK(n,e)),eK.set(t,i));let a=i[e.req.type];if(!a)throw Error(`Unsupported wallet iframe request type: ${e.req.type}`);await a(e.req),e.executionGeneration===e.state.executionGeneration&&ff(e.req)}catch(t){throw e.executionGeneration===e.state.executionGeneration&&pf(e.req.requestId,t),t}finally{r.endOperation(),i&&e.executionGeneration===e.state.executionGeneration&&sK(n,i.requestId)}}function wK(e,t){e.post({type:`PM_RESULT`,requestId:t,payload:{ok:!0}})}function TK(e,t,n){e.post({type:`PM_RESULT`,requestId:t,payload:{ok:!0,result:n}})}function EK(e,t,n){return{...n||{},onEvent:n=>e.postProgress(t,n)}}function DK(e,t,n){return{...n||{},onEvent:n=>e.postProgress(t,n),onTimingSpan:n=>e.postProgress(t,n)}}export{Z as C,Af as S,Cf as T,yx as _,CK as a,$f as b,qT as c,EC as d,DC as f,Xb as g,eb as h,DK as i,NC as l,cC as m,TK as n,xE as o,kC as p,EK as r,_T as s,wK as t,FC as u,qb as v,wf as w,Lf as x,My as y};
|