@seams/wallet 0.13.0 → 0.14.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 +3 -3
- package/dist/.build-inputs.sha256 +1 -1
- package/dist/esm/SeamsWeb/SeamsWeb.js +1 -0
- package/dist/esm/SeamsWeb/walletIframe/client/router.js +9 -0
- package/dist/esm/SeamsWeb/walletIframe/coordinator.js +8 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +1 -1
- package/dist/esm/core/config/defaultConfigs.js +1 -1
- package/dist/esm/core/indexedDB/index.js +2 -1
- package/dist/esm/core/indexedDB/schemaNames.js +1 -2
- package/dist/esm/core/indexedDB/seamsWalletDB/schema.js +2 -1
- package/dist/esm/core/indexedDB/walletDbName.js +6 -0
- package/dist/esm/sdk/{ConfirmationDrawer-Frj3uEee.js → ConfirmationDrawer-BFzQjd1P.js} +1 -1
- package/dist/esm/sdk/{NonceCoordinator-S5ZbrkDp.js → NonceCoordinator-CDGnEgfI.js} +1 -1
- package/dist/{public/sdk/accountLifecycle-HEUmDLus.js → esm/sdk/accountLifecycle-CBOkr0vU.js} +1 -1
- package/dist/esm/sdk/{adapters-CGvNLOfZ.js → adapters-DsAaBNNY.js} +2 -2
- package/dist/esm/sdk/{challengeDelivery-5lIu9spR.js → challengeDelivery-CATQ4u6P.js} +1 -1
- package/dist/{public/sdk/clientSessionPersistenceState-DRdve9rC.js → esm/sdk/clientSessionPersistenceState-CBylL1Ul.js} +1 -1
- package/dist/esm/sdk/{commitQueue-qjvY_zWn.js → commitQueue-DYEgzoLA.js} +1 -1
- package/dist/esm/sdk/{display-DTbGoX4e.js → display-DsfJkAra.js} +1 -1
- package/dist/esm/sdk/{ecdsaCapabilityManifest-ChszYCC0.js → ecdsaCapabilityManifest-DX6TflEz.js} +1 -1
- package/dist/{public/sdk/ecdsaDerivationClientWasm-CpH-b3jx.js → esm/sdk/ecdsaDerivationClientWasm-CpjnN4aK.js} +1 -1
- package/dist/esm/sdk/ecdsaDerivationExport-CuNIssOt.js +1 -0
- package/dist/esm/sdk/{ecdsaWalletRecords-Di_NUxD_.js → ecdsaWalletRecords-CHfrYvKr.js} +1 -1
- package/dist/{public/sdk/emailOtpEcdsaDerivationIdentity-p0C1CQva.js → esm/sdk/emailOtpEcdsaDerivationIdentity-Bik0N8v9.js} +1 -1
- package/dist/esm/sdk/{enrichDisplayModelWithAbi-DZIhvE-x.js → enrichDisplayModelWithAbi-DSj4NAlY.js} +1 -1
- package/dist/esm/sdk/{export-viewer-host-DUMwD6zP.js → export-viewer-host-CV-lSsQF.js} +1 -1
- package/dist/esm/sdk/exportKeypairOperation-Bql0I-8U.js +1 -0
- package/dist/esm/sdk/host-D3Q_NsmE.js +1 -0
- package/dist/esm/sdk/{lanes-Ck81oEGv.js → lanes-5kcTFbPx.js} +1 -1
- package/dist/esm/sdk/{localOnly-CUVRoMy2.js → localOnly-C5mSXb_D.js} +1 -1
- package/dist/{public/sdk/mountExportPrivateKeySurface-B4gH1Sel.js → esm/sdk/mountExportPrivateKeySurface-CatAhYoG.js} +1 -1
- package/dist/{public/sdk/mountRecoveryCodeBackupSurface-D1G-iCPI.js → esm/sdk/mountRecoveryCodeBackupSurface-DlEb3uD7.js} +1 -1
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-Bo3IOTS-.js +1 -0
- package/dist/esm/sdk/{nearEd25519YaoSigningPreparation-Eiq_ikXk.js → nearEd25519YaoSigningPreparation-RIfkYN0d.js} +1 -1
- package/dist/esm/sdk/{nonceLaneKeys-Do5Vs-De.js → nonceLaneKeys-BCYfl1wv.js} +1 -1
- package/dist/esm/sdk/{normalization-DJPmcXTg.js → normalization-n503J-BI.js} +1 -1
- package/dist/{public/sdk/passkey-custody-Cd_yyoRa.js → esm/sdk/passkey-custody-DpTM-eNJ.js} +1 -1
- package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-DMg5U0Fk.js → pendingWalletRecoveryCodeBackup-C60sZMj5.js} +1 -1
- package/dist/{public/sdk/presignaturePool-CLHu7HaU.js → esm/sdk/presignaturePool-DX_hqZ6Z.js} +1 -1
- package/dist/esm/sdk/recovery-entrypoint-BULjaFBM.js +1 -0
- package/dist/esm/sdk/{registration-Drtkzrlc.js → registration-CyF7nOXs.js} +1 -1
- package/dist/esm/sdk/registration-DEGZR8kA.js +1 -0
- package/dist/esm/sdk/{registrationAccounts-DP-32yCK.js → registrationAccounts-BQMUusdD.js} +1 -1
- package/dist/{public/sdk/registrationIntent-BHU5k2Q-.js → esm/sdk/registrationIntent-090Zj7Iu.js} +1 -1
- package/dist/{public/sdk/registrationSignerPlan-dY9Rp0m_.js → esm/sdk/registrationSignerPlan-CPzHavPM.js} +1 -1
- package/dist/esm/sdk/{requireStepUpAuth-FqZSU021.js → requireStepUpAuth-BCY5ZStI.js} +1 -1
- package/dist/esm/sdk/routerAbNormalSigning-C4P2tDU-.js +1 -0
- package/dist/esm/sdk/runtime-auth-DDOPe7LO.js +1 -0
- package/dist/esm/sdk/runtime-device-link-Bkt5AJAI.js +1 -0
- package/dist/esm/sdk/runtime-ecdsa-tempo-DUOkCNFT.js +1 -0
- package/dist/esm/sdk/runtime-email-otp-Bsv55Gin.js +1 -0
- package/dist/esm/sdk/runtime-export-D7QKXvdg.js +1 -0
- package/dist/esm/sdk/runtime-near-Bl7bBU2g.js +1 -0
- package/dist/esm/sdk/runtime-preferences-C2Rqmp7q.js +1 -0
- package/dist/esm/sdk/runtime-recovery-BMY7AkJq.js +1 -0
- package/dist/esm/sdk/runtime-recovery-codes-GOytzExh.js +1 -0
- package/dist/esm/sdk/secp256k1-CL273JMp.js +1 -0
- package/dist/esm/sdk/sessionObservationRevision-CnEOLDbl.js +1 -0
- package/dist/esm/sdk/shared-CNT5EU_h.js +6 -0
- package/dist/{public/sdk/signEvmFamily-M0trbeZe.js → esm/sdk/signEvmFamily-BE0a14MT.js} +1 -1
- package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-Bo25SwuV.js → signEvmFamilyWithUiConfirmForTempo-DGWmm9n7.js} +1 -1
- package/dist/esm/sdk/{signEvmWithUiConfirm-CFcqJRj3.js → signEvmWithUiConfirm-BRmdLgmm.js} +1 -1
- package/dist/esm/sdk/signNear-XGZBxc_g.js +1 -0
- package/dist/esm/sdk/signer-worker-DlK58rEA.js +1 -0
- package/dist/{public/sdk/signingFlow-DZvV4AgG.js → esm/sdk/signingFlow-VAnM8L5C.js} +1 -1
- package/dist/esm/sdk/{signingQueue-2pr7lAUS.js → signingQueue-D_Ebmzcn.js} +1 -1
- package/dist/esm/sdk/singletons-BXhnsqeY.js +1 -0
- package/dist/esm/sdk/{thresholdEcdsa-D-QMyevW.js → thresholdEcdsa-CneSKcRt.js} +1 -1
- package/dist/esm/sdk/{trace-QLsbYdld.js → trace-BBux0jtr.js} +1 -1
- package/dist/esm/sdk/{transaction-activity-xfeHKJoq.js → transaction-activity-Cccvec2J.js} +1 -1
- package/dist/esm/sdk/{transactionState-CGULLokO.js → transactionState-Day-1x7Y.js} +1 -1
- package/dist/esm/sdk/{types-WGrFMQSw.js → types-hKLqDUhR.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/esm/sdk/{wallet-recovery-LMtGiEL3.js → wallet-recovery-Bfhfk52N.js} +1 -1
- package/dist/esm/sdk/{walletAuthMethodRecord-CnBw27ED.js → walletAuthMethodRecord-LniOQQmj.js} +1 -1
- package/dist/{public/sdk/walletAuthority-BWvfaKIX.js → esm/sdk/walletAuthority-CAiGuWW2.js} +1 -1
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-B4fTDL10.js +1 -0
- package/dist/esm/sdk/{sessionPolicy-CBTZQe1n.js → walletDbName-DtRewci9.js} +1 -1
- package/dist/{public/sdk/walletOwnershipGeneration-CAycHv-H.js → esm/sdk/walletOwnershipGeneration-B6HyR2rE.js} +1 -1
- package/dist/esm/sdk/walletRecoveryCommit-C6HF84_U.js +1 -0
- package/dist/{public/sdk/walletSessionAuthorizationStore-BiKGIBWQ.js → esm/sdk/walletSessionAuthorizationStore-DmYe-cDR.js} +1 -1
- package/dist/esm/sdk/warmSessionHydration-CsQpQVuy.js +1 -0
- package/dist/public/headers.manifest.json +1 -1
- package/dist/public/sdk/{ConfirmationDrawer-Frj3uEee.js → ConfirmationDrawer-BFzQjd1P.js} +1 -1
- package/dist/public/sdk/{NonceCoordinator-S5ZbrkDp.js → NonceCoordinator-CDGnEgfI.js} +1 -1
- package/dist/{esm/sdk/accountLifecycle-HEUmDLus.js → public/sdk/accountLifecycle-CBOkr0vU.js} +1 -1
- package/dist/public/sdk/{adapters-CGvNLOfZ.js → adapters-DsAaBNNY.js} +2 -2
- package/dist/public/sdk/{challengeDelivery-5lIu9spR.js → challengeDelivery-CATQ4u6P.js} +1 -1
- package/dist/{esm/sdk/clientSessionPersistenceState-DRdve9rC.js → public/sdk/clientSessionPersistenceState-CBylL1Ul.js} +1 -1
- package/dist/public/sdk/{commitQueue-qjvY_zWn.js → commitQueue-DYEgzoLA.js} +1 -1
- package/dist/public/sdk/{display-DTbGoX4e.js → display-DsfJkAra.js} +1 -1
- package/dist/public/sdk/{ecdsaCapabilityManifest-ChszYCC0.js → ecdsaCapabilityManifest-DX6TflEz.js} +1 -1
- package/dist/{esm/sdk/ecdsaDerivationClientWasm-CpH-b3jx.js → public/sdk/ecdsaDerivationClientWasm-CpjnN4aK.js} +1 -1
- package/dist/public/sdk/ecdsaDerivationExport-CuNIssOt.js +1 -0
- package/dist/public/sdk/{ecdsaWalletRecords-Di_NUxD_.js → ecdsaWalletRecords-CHfrYvKr.js} +1 -1
- package/dist/{esm/sdk/emailOtpEcdsaDerivationIdentity-p0C1CQva.js → public/sdk/emailOtpEcdsaDerivationIdentity-Bik0N8v9.js} +1 -1
- package/dist/public/sdk/{enrichDisplayModelWithAbi-DZIhvE-x.js → enrichDisplayModelWithAbi-DSj4NAlY.js} +1 -1
- package/dist/public/sdk/{export-viewer-host-DUMwD6zP.js → export-viewer-host-CV-lSsQF.js} +1 -1
- package/dist/public/sdk/exportKeypairOperation-Bql0I-8U.js +1 -0
- package/dist/public/sdk/host-D3Q_NsmE.js +1 -0
- package/dist/public/sdk/{lanes-Ck81oEGv.js → lanes-5kcTFbPx.js} +1 -1
- package/dist/public/sdk/{localOnly-CUVRoMy2.js → localOnly-C5mSXb_D.js} +1 -1
- package/dist/{esm/sdk/mountExportPrivateKeySurface-B4gH1Sel.js → public/sdk/mountExportPrivateKeySurface-CatAhYoG.js} +1 -1
- package/dist/{esm/sdk/mountRecoveryCodeBackupSurface-D1G-iCPI.js → public/sdk/mountRecoveryCodeBackupSurface-DlEb3uD7.js} +1 -1
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-Bo3IOTS-.js +1 -0
- package/dist/public/sdk/{nearEd25519YaoSigningPreparation-Eiq_ikXk.js → nearEd25519YaoSigningPreparation-RIfkYN0d.js} +1 -1
- package/dist/public/sdk/{nonceLaneKeys-Do5Vs-De.js → nonceLaneKeys-BCYfl1wv.js} +1 -1
- package/dist/public/sdk/{normalization-DJPmcXTg.js → normalization-n503J-BI.js} +1 -1
- package/dist/{esm/sdk/passkey-custody-Cd_yyoRa.js → public/sdk/passkey-custody-DpTM-eNJ.js} +1 -1
- package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-DMg5U0Fk.js → pendingWalletRecoveryCodeBackup-C60sZMj5.js} +1 -1
- package/dist/{esm/sdk/presignaturePool-CLHu7HaU.js → public/sdk/presignaturePool-DX_hqZ6Z.js} +1 -1
- package/dist/public/sdk/recovery-entrypoint-BULjaFBM.js +1 -0
- package/dist/public/sdk/{registration-Drtkzrlc.js → registration-CyF7nOXs.js} +1 -1
- package/dist/public/sdk/registration-DEGZR8kA.js +1 -0
- package/dist/public/sdk/{registrationAccounts-DP-32yCK.js → registrationAccounts-BQMUusdD.js} +1 -1
- package/dist/{esm/sdk/registrationIntent-BHU5k2Q-.js → public/sdk/registrationIntent-090Zj7Iu.js} +1 -1
- package/dist/{esm/sdk/registrationSignerPlan-dY9Rp0m_.js → public/sdk/registrationSignerPlan-CPzHavPM.js} +1 -1
- package/dist/public/sdk/{requireStepUpAuth-FqZSU021.js → requireStepUpAuth-BCY5ZStI.js} +1 -1
- package/dist/public/sdk/routerAbNormalSigning-C4P2tDU-.js +1 -0
- package/dist/public/sdk/runtime-auth-DDOPe7LO.js +1 -0
- package/dist/public/sdk/runtime-device-link-Bkt5AJAI.js +1 -0
- package/dist/public/sdk/runtime-ecdsa-tempo-DUOkCNFT.js +1 -0
- package/dist/public/sdk/runtime-email-otp-Bsv55Gin.js +1 -0
- package/dist/public/sdk/runtime-export-D7QKXvdg.js +1 -0
- package/dist/public/sdk/runtime-near-Bl7bBU2g.js +1 -0
- package/dist/public/sdk/runtime-preferences-C2Rqmp7q.js +1 -0
- package/dist/public/sdk/runtime-recovery-BMY7AkJq.js +1 -0
- package/dist/public/sdk/runtime-recovery-codes-GOytzExh.js +1 -0
- package/dist/public/sdk/secp256k1-CL273JMp.js +1 -0
- package/dist/public/sdk/sessionObservationRevision-CnEOLDbl.js +1 -0
- package/dist/public/sdk/shared-CNT5EU_h.js +6 -0
- package/dist/{esm/sdk/signEvmFamily-M0trbeZe.js → public/sdk/signEvmFamily-BE0a14MT.js} +1 -1
- package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-Bo25SwuV.js → signEvmFamilyWithUiConfirmForTempo-DGWmm9n7.js} +1 -1
- package/dist/public/sdk/{signEvmWithUiConfirm-CFcqJRj3.js → signEvmWithUiConfirm-BRmdLgmm.js} +1 -1
- package/dist/public/sdk/signNear-XGZBxc_g.js +1 -0
- package/dist/public/sdk/signer-worker-DlK58rEA.js +1 -0
- package/dist/{esm/sdk/signingFlow-DZvV4AgG.js → public/sdk/signingFlow-VAnM8L5C.js} +1 -1
- package/dist/public/sdk/{signingQueue-2pr7lAUS.js → signingQueue-D_Ebmzcn.js} +1 -1
- package/dist/public/sdk/singletons-BXhnsqeY.js +1 -0
- package/dist/public/sdk/{thresholdEcdsa-D-QMyevW.js → thresholdEcdsa-CneSKcRt.js} +1 -1
- package/dist/public/sdk/{trace-QLsbYdld.js → trace-BBux0jtr.js} +1 -1
- package/dist/public/sdk/{transaction-activity-xfeHKJoq.js → transaction-activity-Cccvec2J.js} +1 -1
- package/dist/public/sdk/{transactionState-CGULLokO.js → transactionState-Day-1x7Y.js} +1 -1
- package/dist/public/sdk/{types-WGrFMQSw.js → types-hKLqDUhR.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/public/sdk/{wallet-recovery-LMtGiEL3.js → wallet-recovery-Bfhfk52N.js} +1 -1
- package/dist/public/sdk/{walletAuthMethodRecord-CnBw27ED.js → walletAuthMethodRecord-LniOQQmj.js} +1 -1
- package/dist/{esm/sdk/walletAuthority-BWvfaKIX.js → public/sdk/walletAuthority-CAiGuWW2.js} +1 -1
- package/dist/public/sdk/walletCustodyEcdsaContinuity-B4fTDL10.js +1 -0
- package/dist/public/sdk/{sessionPolicy-CBTZQe1n.js → walletDbName-DtRewci9.js} +1 -1
- package/dist/{esm/sdk/walletOwnershipGeneration-CAycHv-H.js → public/sdk/walletOwnershipGeneration-B6HyR2rE.js} +1 -1
- package/dist/public/sdk/walletRecoveryCommit-C6HF84_U.js +1 -0
- package/dist/{esm/sdk/walletSessionAuthorizationStore-BiKGIBWQ.js → public/sdk/walletSessionAuthorizationStore-DmYe-cDR.js} +1 -1
- package/dist/public/sdk/warmSessionHydration-CsQpQVuy.js +1 -0
- package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +3 -1
- package/dist/public/wallet-assets.manifest.json +233 -209
- package/dist/public/wallet-service/index.html +4 -4
- package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +7 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +3 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/coordinator.d.ts +1 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/emptyWalletStoreReads.d.ts +19 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/requestRouter.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/runtimeLoader.d.ts +5 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/sessionObservationRevision.d.ts +7 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +3 -3
- package/dist/types/wallet/src/core/indexedDB/index.d.ts +2 -1
- package/dist/types/wallet/src/core/indexedDB/schemaNames.d.ts +0 -1
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/manager.d.ts +2 -1
- package/dist/types/wallet/src/core/indexedDB/walletDbName.d.ts +2 -0
- package/dist/workers/ecdsa-derivation-client.worker.js +3 -1
- package/package.json +1 -1
- package/dist/esm/sdk/ecdsaDerivationExport-C1cE5m0t.js +0 -1
- package/dist/esm/sdk/exportKeypairOperation-BHXMSA3v.js +0 -1
- package/dist/esm/sdk/host-GawN20iA.js +0 -1
- package/dist/esm/sdk/messages-DgJlG9NU.js +0 -1
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-DMGPKrn8.js +0 -1
- package/dist/esm/sdk/recovery-entrypoint-EHY_b7Z-.js +0 -1
- package/dist/esm/sdk/registration-CQxxUt5s.js +0 -1
- package/dist/esm/sdk/routerAbNormalSigning-DVKFBYgV.js +0 -1
- package/dist/esm/sdk/runtime-auth-TZw6JD8N.js +0 -1
- package/dist/esm/sdk/runtime-device-link-DXjabXJb.js +0 -1
- package/dist/esm/sdk/runtime-ecdsa-tempo-DlKMIbyP.js +0 -1
- package/dist/esm/sdk/runtime-email-otp-BBPghU2G.js +0 -1
- package/dist/esm/sdk/runtime-export-pw-xJL8o.js +0 -1
- package/dist/esm/sdk/runtime-near-B-vYxGjl.js +0 -1
- package/dist/esm/sdk/runtime-preferences-D-hY0RfC.js +0 -1
- package/dist/esm/sdk/runtime-recovery-Vg1ND2nl.js +0 -1
- package/dist/esm/sdk/runtime-recovery-codes-rLR4Guy4.js +0 -1
- package/dist/esm/sdk/secp256k1-C-AETUpI.js +0 -1
- package/dist/esm/sdk/shared-6bpRPbcM.js +0 -6
- package/dist/esm/sdk/signNear-DGUQZ44s.js +0 -1
- package/dist/esm/sdk/singletons-8UH3gOnZ.js +0 -1
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-D-gYxv6e.js +0 -1
- package/dist/esm/sdk/walletRecoveryCommit-BYRC_2li.js +0 -1
- package/dist/esm/sdk/warmSessionHydration-B7-kCnJh.js +0 -1
- package/dist/public/sdk/ecdsaDerivationExport-C1cE5m0t.js +0 -1
- package/dist/public/sdk/exportKeypairOperation-BHXMSA3v.js +0 -1
- package/dist/public/sdk/host-GawN20iA.js +0 -1
- package/dist/public/sdk/messages-DgJlG9NU.js +0 -1
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-DMGPKrn8.js +0 -1
- package/dist/public/sdk/recovery-entrypoint-EHY_b7Z-.js +0 -1
- package/dist/public/sdk/registration-CQxxUt5s.js +0 -1
- package/dist/public/sdk/routerAbNormalSigning-DVKFBYgV.js +0 -1
- package/dist/public/sdk/runtime-auth-TZw6JD8N.js +0 -1
- package/dist/public/sdk/runtime-device-link-DXjabXJb.js +0 -1
- package/dist/public/sdk/runtime-ecdsa-tempo-DlKMIbyP.js +0 -1
- package/dist/public/sdk/runtime-email-otp-BBPghU2G.js +0 -1
- package/dist/public/sdk/runtime-export-pw-xJL8o.js +0 -1
- package/dist/public/sdk/runtime-near-B-vYxGjl.js +0 -1
- package/dist/public/sdk/runtime-preferences-D-hY0RfC.js +0 -1
- package/dist/public/sdk/runtime-recovery-Vg1ND2nl.js +0 -1
- package/dist/public/sdk/runtime-recovery-codes-rLR4Guy4.js +0 -1
- package/dist/public/sdk/secp256k1-C-AETUpI.js +0 -1
- package/dist/public/sdk/shared-6bpRPbcM.js +0 -6
- package/dist/public/sdk/signNear-DGUQZ44s.js +0 -1
- package/dist/public/sdk/singletons-8UH3gOnZ.js +0 -1
- package/dist/public/sdk/walletCustodyEcdsaContinuity-D-gYxv6e.js +0 -1
- package/dist/public/sdk/walletRecoveryCommit-BYRC_2li.js +0 -1
- package/dist/public/sdk/warmSessionHydration-B7-kCnJh.js +0 -1
- /package/dist/esm/sdk/{accountIds-BzZs7YoX.js → accountIds-Cpvlkvbe.js} +0 -0
- /package/dist/esm/sdk/{appearance-DITtYj-z.js → appearance-4DmzKUWf.js} +0 -0
- /package/dist/esm/sdk/{authenticatorOptions-C9aCKgeF.js → authenticatorOptions-2_XK8aXv.js} +0 -0
- /package/dist/esm/sdk/{browser-DkCRXFkk.js → browser-n3IVr7qu.js} +0 -0
- /package/dist/esm/sdk/{digestEncoding-CkUc5vtR.js → digestEncoding-BX3VW9eF.js} +0 -0
- /package/dist/esm/sdk/{ecdsaChainTarget-DJBXHzbH.js → ecdsaChainTarget-Bfatk3oP.js} +0 -0
- /package/dist/esm/sdk/{helpers-BnkILY2_.js → helpers-B9fpZNAP.js} +0 -0
- /package/dist/esm/sdk/{intentDigest-DJBrMyLJ.js → intentDigest-P_-CM7lS.js} +0 -0
- /package/dist/esm/sdk/{jsonRpc-YKL5n8VL.js → jsonRpc-BVDv1wfm.js} +0 -0
- /package/dist/esm/sdk/{jsxRuntime.module-C8JOKu_4.js → jsxRuntime.module-DKsgiFjd.js} +0 -0
- /package/dist/esm/sdk/{keccak-BArcwgbj.js → keccak-mS0Mejjx.js} +0 -0
- /package/dist/esm/sdk/{normalization-CeZT7ob0.js → normalization-C6fQN6mW.js} +0 -0
- /package/dist/esm/sdk/{operationFingerprint-CUrnoh-M.js → operationFingerprint-BHNYryLY.js} +0 -0
- /package/dist/esm/sdk/{presignatures-DZm0d6Wy.js → presignatures-K-yuzOE0.js} +0 -0
- /package/dist/esm/sdk/{prfCache-DCkuB8Lu.js → prfCache-DJ93rtDv.js} +0 -0
- /package/dist/esm/sdk/{profileAccountProjection-B3LXAUmo.js → profileAccountProjection-BNVJLOt2.js} +0 -0
- /package/dist/esm/sdk/{promptText-B8RprJhO.js → promptText-CnyrLxgj.js} +0 -0
- /package/dist/esm/sdk/{registrationAuthMethodInput-BBCeWDmw.js → registrationAuthMethodInput-RbSR7R1G.js} +0 -0
- /package/dist/esm/sdk/{registrationIds-ByuReLUc.js → registrationIds-BaK3jUS6.js} +0 -0
- /package/dist/esm/sdk/{sdkSentEvents-Dl8fOL50.js → sdkSentEvents-D4KtK7_I.js} +0 -0
- /package/dist/esm/sdk/{signatureUses-8c8Ku_Fw.js → signatureUses-BKAoDbQd.js} +0 -0
- /package/dist/esm/sdk/{signerDomain-DqLCvI-D.js → signerDomain-Dp7BhfmZ.js} +0 -0
- /package/dist/esm/sdk/{signerSlot-B4Eq8Oe2.js → signerSlot-FJAGOhmg.js} +0 -0
- /package/dist/esm/sdk/{types-DhtByIcQ.js → types-Buoe6179.js} +0 -0
- /package/dist/esm/sdk/{walletRecoveryRotate-D_1a8Agl.js → walletRecoveryRotate-BN3H8byw.js} +0 -0
- /package/dist/esm/sdk/{walletSessionAuthorizationStatus-BLyzJbU8.js → walletSessionAuthorizationStatus-BL7j2TeM.js} +0 -0
- /package/dist/esm/sdk/{webauthnP256-DZCusNY9.js → webauthnP256-BwgxtG5N.js} +0 -0
- /package/dist/esm/sdk/{webauthnPromptCoordinator-CS4Xc_jZ.js → webauthnPromptCoordinator-CwJeKiYq.js} +0 -0
- /package/dist/public/sdk/{accountIds-BzZs7YoX.js → accountIds-Cpvlkvbe.js} +0 -0
- /package/dist/public/sdk/{appearance-DITtYj-z.js → appearance-4DmzKUWf.js} +0 -0
- /package/dist/public/sdk/{authenticatorOptions-C9aCKgeF.js → authenticatorOptions-2_XK8aXv.js} +0 -0
- /package/dist/public/sdk/{browser-DkCRXFkk.js → browser-n3IVr7qu.js} +0 -0
- /package/dist/public/sdk/{digestEncoding-CkUc5vtR.js → digestEncoding-BX3VW9eF.js} +0 -0
- /package/dist/public/sdk/{ecdsaChainTarget-DJBXHzbH.js → ecdsaChainTarget-Bfatk3oP.js} +0 -0
- /package/dist/public/sdk/{helpers-BnkILY2_.js → helpers-B9fpZNAP.js} +0 -0
- /package/dist/public/sdk/{intentDigest-DJBrMyLJ.js → intentDigest-P_-CM7lS.js} +0 -0
- /package/dist/public/sdk/{jsonRpc-YKL5n8VL.js → jsonRpc-BVDv1wfm.js} +0 -0
- /package/dist/public/sdk/{jsxRuntime.module-C8JOKu_4.js → jsxRuntime.module-DKsgiFjd.js} +0 -0
- /package/dist/public/sdk/{keccak-BArcwgbj.js → keccak-mS0Mejjx.js} +0 -0
- /package/dist/public/sdk/{normalization-CeZT7ob0.js → normalization-C6fQN6mW.js} +0 -0
- /package/dist/public/sdk/{operationFingerprint-CUrnoh-M.js → operationFingerprint-BHNYryLY.js} +0 -0
- /package/dist/public/sdk/{presignatures-DZm0d6Wy.js → presignatures-K-yuzOE0.js} +0 -0
- /package/dist/public/sdk/{prfCache-DCkuB8Lu.js → prfCache-DJ93rtDv.js} +0 -0
- /package/dist/public/sdk/{profileAccountProjection-B3LXAUmo.js → profileAccountProjection-BNVJLOt2.js} +0 -0
- /package/dist/public/sdk/{promptText-B8RprJhO.js → promptText-CnyrLxgj.js} +0 -0
- /package/dist/public/sdk/{registrationAuthMethodInput-BBCeWDmw.js → registrationAuthMethodInput-RbSR7R1G.js} +0 -0
- /package/dist/public/sdk/{registrationIds-ByuReLUc.js → registrationIds-BaK3jUS6.js} +0 -0
- /package/dist/public/sdk/{sdkSentEvents-Dl8fOL50.js → sdkSentEvents-D4KtK7_I.js} +0 -0
- /package/dist/public/sdk/{signatureUses-8c8Ku_Fw.js → signatureUses-BKAoDbQd.js} +0 -0
- /package/dist/public/sdk/{signerDomain-DqLCvI-D.js → signerDomain-Dp7BhfmZ.js} +0 -0
- /package/dist/public/sdk/{signerSlot-B4Eq8Oe2.js → signerSlot-FJAGOhmg.js} +0 -0
- /package/dist/public/sdk/{types-DhtByIcQ.js → types-Buoe6179.js} +0 -0
- /package/dist/public/sdk/{walletRecoveryRotate-D_1a8Agl.js → walletRecoveryRotate-BN3H8byw.js} +0 -0
- /package/dist/public/sdk/{walletSessionAuthorizationStatus-BLyzJbU8.js → walletSessionAuthorizationStatus-BL7j2TeM.js} +0 -0
- /package/dist/public/sdk/{webauthnP256-DZCusNY9.js → webauthnP256-BwgxtG5N.js} +0 -0
- /package/dist/public/sdk/{webauthnPromptCoordinator-CS4Xc_jZ.js → webauthnPromptCoordinator-CwJeKiYq.js} +0 -0
|
@@ -0,0 +1,6 @@
|
|
|
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{C as Fl,S as Il,T as Ll,_ as Rl,a as zl,b as Bl,c as Vl,d as Hl,f as Ul,g as Wl,h as Gl,i as Kl,l as ql,m as Jl,n as Yl,o as Xl,p as Zl,s as Ql,u as $l,v as eu,y as tu}from"./ecdsaDerivationExport-CuNIssOt.js";import{r as nu,t as ru}from"./pendingWalletRecoveryCodeBackup-C60sZMj5.js";import{r as iu,t as au}from"./walletSessionAuthorizationProjection-DuU6w0FP.js";import{i as ou}from"./walletRecoveryCommit-C6HF84_U.js";import{t as su}from"./NonceCoordinator-CDGnEgfI.js";import{t as cu}from"./executeWorkerOperation-DKCRRq5E.js";import{A as lu,C as uu,D as du,E as fu,F as pu,I as mu,L as hu,M as gu,N as _u,O as vu,P as yu,R as bu,S as xu,T as Su,_ as Cu,b as wu,c as Tu,f as Eu,g as Du,h as Ou,j as ku,k as Au,l as ju,m as Mu,o as Nu,p as Pu,r as Fu,s as Iu,t as Lu,v as Ru,w as zu,y as Bu}from"./ecdsaDerivationClientWasm-CpjnN4aK.js";import{a as Vu,n as Hu,o as Uu,r as Wu,s as Gu,t as Ku}from"./presignaturePool-DX_hqZ6Z.js";import{i as qu,t as Ju}from"./walletSessionFailure-YuhraC3P.js";import{_ as Yu,a as Xu,b as Zu,c as Qu,d as $u,f as ed,g as td,h as nd,i as rd,l as id,m as ad,n as od,o as sd,p as cd,r as ld,t as ud,u as dd,v as fd,y as pd}from"./signEvmFamily-BE0a14MT.js";import{a as md,c as hd,d as gd,f as _d,i as vd,l as yd,o as bd,s as xd,t as Sd,u as Cd}from"./signingQueue-D_Ebmzcn.js";import{_ as wd,c as Td,d as Ed,g as Dd,h as Od,i as kd,o as Ad,r as jd,s as Md,t as Nd,u as Pd,v as Fd}from"./clientSessionPersistenceState-CBylL1Ul.js";import{_ as Id,a as Ld,c as Rd,d as zd,f as Bd,g as Vd,h as Hd,i as Ud,m as Wd,o as Gd,p as Kd,r as qd,s as Jd,t as Yd,u as Xd}from"./signNear-XGZBxc_g.js";import{c as Zd,d as Qd,i as $d,o as ef,s as tf,t as nf}from"./signingFlow-VAnM8L5C.js";import{t as rf}from"./types-Buoe6179.js";import{S as af,_ as of,d as sf,f as cf,m as lf,p as uf}from"./requireStepUpAuth-BCY5ZStI.js";import{t as df}from"./commitQueue-DYEgzoLA.js";import{i as ff,n as pf,r as mf,t as hf}from"./walletRecoveryRotate-BN3H8byw.js";import{i as Y,r as gf}from"./appearance-4DmzKUWf.js";import{i as _f,n as vf,r as yf,t as bf}from"./transaction-activity-Cccvec2J.js";import{a as xf,i as Sf}from"./jsxRuntime.module-DKsgiFjd.js";import{t as Cf}from"./registration-CyF7nOXs.js";function wf(){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 Tf(e,t){let n=t.worker,r=t.baseOrigin||wf()||(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||Df(n);return Ef(/^https?:\/\//i.test(a)?new URL(a):new URL(a,r),i).toString()}catch{try{return new URL(e||Df(n),r).toString()}catch{}return e||Df(n)}}function Ef(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 Df(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 Of(e){let t=w(e);if(!t.ok)throw Error(`Device-link target email address is invalid: ${t.error.message}`);return t.value}function kf(e){try{return Of(e),!0}catch{return!1}}async function Af(e,t){let n=Mf(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 jf(e){let t=o(e);if(!t.ok)throw Error(`Wallet mutation identity is invalid`);return t.value}function Mf(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 jf(e.payload?.walletId);case`PM_SIGN_TEMPO`:case`PM_RESOLVE_EXACT_KEY_EXPORT_LANE`:case`PM_EXPORT_KEYPAIR_UI`:return jf(e.payload?.walletSession.walletId);case`PM_SYNC_ACCOUNT_FLOW`:{let n=e.payload?.walletId??t;return n===null?null:jf(n)}case`PM_SCAN_AND_LINK_DEVICE`:return t===null?null:jf(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 Nf(e,t){return Pf(e,t,3)}async function Pf(e,t,n){let{walletId:r}=e;if(n===0)return Gf(r,`superseded`);let i;try{i=await t.resolveSelectedWalletAuthority(String(e.walletId))}catch{return Gf(e.walletId,`unavailable`)}switch(i.kind){case`missing_selection`:return{kind:`wallet_locked`};case`missing_auth_method`:case`missing_authority`:case`integrity_error`:return Gf(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 Gf(e.walletId,`invalid`);if(a.lockState===`locked`)return{kind:`wallet_locked`};if(o.status!==`active`||s.state!==`active`)return Gf(e.walletId,`invalid`);let c=await Lf(t,{walletId:e.walletId,authorityId:s.authorityId,authMethodId:o.walletAuthMethodId});switch(c.kind){case`missing`:return Gf(e.walletId,`absent`);case`corrupt`:return Gf(e.walletId,`invalid`);case`persistence_unavailable`:return Gf(e.walletId,`unavailable`);case`upgrade_required`:return Gf(e.walletId,`upgrade_required`);case`found`:break}let{record:l,operationCredential:u}=c;if(!If({walletId:e.walletId,authorization:l,operationCredential:u,selected:i}))return Gf(e.walletId,`invalid`);let d=t.nowMs();if(l.expiresAtMs<=d)return zf(e.walletId,o.kind,l,u);let f;try{f=await t.readStatus({authorization:l,operationCredential:u})}catch{return Gf(e.walletId,`unavailable`)}let p;try{p=await t.resolveSelectedWalletAuthority(e.walletId)}catch{return Gf(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`||!If({walletId:r,authorization:l,operationCredential:u,selected:p}))return Pf(e,t,n-1);let m=await Lf(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?Pf(e,t,n-1):l.expiresAtMs<=t.nowMs()?zf(r,o.kind,l,u):Bf(f,l,u)?Vf({walletId:e.walletId,authMethod:o.kind,authorization:l,operationCredential:u,status:f}):Gf(e.walletId,`invalid`)}function Ff(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Wallet iframe exact session identity must be an object`);return Uf(e)}function If(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 Lf(e,t){try{return await e.readExactActiveForWallet(t)}catch{return{kind:`persistence_unavailable`}}}function Rf(e,t,n,r){return{walletId:e,authorizationId:n.authorizationId,walletSessionId:r.walletSessionId,authMethod:t,expiresAtMs:n.expiresAtMs}}function zf(e,t,n,r){return{kind:`expired_session`,...Rf(e,t,n,r)}}function Bf(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 Vf(e){switch(e.status.status){case`active`:return e.status.remainingUses<=0?Gf(e.walletId,`invalid`):{kind:`active_session`,status:`active`,...Rf(e.walletId,e.authMethod,e.authorization,e.operationCredential)};case`exhausted`:return Gf(e.walletId,`exhausted`);case`expired`:return zf(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 Gf(e.walletId,`superseded`);case`invalid`:return Gf(e.walletId,`invalid`)}}function Hf(e,t){return e.walletId===t.walletId&&e.authorizationId===t.authorizationId&&e.walletSessionId===t.walletSessionId}function Uf(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(!qf(n))throw Error(`Wallet iframe expiresAtMs is invalid`);let r=Kf(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 Wf(i.value,t.value),{walletId:r,authorizationId:i.value,walletSessionId:t.value,authMethod:a,expiresAtMs:n}}function Wf(e,t){if(String(e)===String(t))throw Error(`Wallet iframe authorization and Wallet Session IDs must be distinct`)}function Gf(e,t){return{kind:`wallet_unlocked_without_signing_session`,walletId:e,reason:t}}function Kf(e){let t=o(e);if(!t.ok)throw Error(`Wallet iframe walletId is invalid`);return t.value}function qf(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>0}async function Jf(e,t){let n;try{n=await t.resolveSelectedWalletAuthority(String(e.walletId))}catch{return{kind:`failed`,reason:`unavailable`}}let r=Yf(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 Xf({context:r,method:e,seenMethodIds:a},t);if(n.kind===`failed`)return n}return{kind:`reconciled`}}function Yf(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 Xf(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`||!Zf(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=$f(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 Zf(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 $f(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 ep(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 tp(e,t){return{resolveSelectedWalletAuthority:K.resolveSelectedWalletAuthority.bind(K),listWalletAuthMethodsV2ForWallet:K.listWalletAuthMethodsV2ForWallet.bind(K),resolveWalletAuthorityForMethod:K.resolveWalletAuthorityForMethod.bind(K),readExactActiveForWallet:q.readExactActiveForWallet.bind(q),readStatus:ep.bind(null,e,t),refreshExactWithOperationCredential:q.refreshExactWithOperationCredential.bind(q),nowMs:Date.now}}function np(e){e.changed=!0}async function rp(e){let t=String(e.preferences.getCurrentWalletId()||``).trim();if(t)return t;let n={changed:!1},r=e.preferences.onCurrentWalletChange(np.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 ip(e,t,n){let r;switch(t.wallet.kind){case`current`:r=t.authenticationRead===`restore`?await rp(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=tp(e.configs.network.relayer.url,n),a=await Jf({walletId:z(r)},i);return a.kind===`failed`?{kind:`wallet_unlocked_without_signing_session`,walletId:z(r),reason:a.reason}:await Nf({walletId:z(r)},i)}var ap=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(np.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 ip(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 op(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 sp(e){try{let t=e.runtime.activationReceipt.normalSigning.scope,n=Zu({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(_d(e.runtime)!==e.runtime)return;let i=Wu({relayerUrl:e.relayerUrl,keyHandle:gs(r),ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,clientVerifyingShareB64u:n.clientVerifier33B64u,clientSigningMaterial:Gu(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`})}}function cp(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 lp(e){throw Error(`Unsupported persisted Ed25519 auth method: ${String(e)}`)}async function up(e,t,n,r){return await gp(e,{...t,ecdsaChainTargets:n,requiredEcdsaCapability:`sign`},r,`all`)}async function dp(e,t,n){return await gp(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 fp(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 gp(e,{...i,ecdsaChainTargets:[...a.values()],requiredEcdsaCapability:`sign`},new el,`ecdsa`)}let{curve:r,...i}=t;return await up(e,i,[],new el)}function pp(e){return String(e.thresholdSessionIds?.ed25519||``).trim().length>0}function mp(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 hp(e,t){let n=[];for(let r of e)`recordKind`in r||pp(r)&&(t.length>0&&!mp(r,t)||n.push(r));return n}async function gp(e,t,n,r){let i=String(z(t.walletId)).trim();return await Dd({...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=hp(await Yn({walletId:e,filter:{authMethod:H.emailOtp,curve:`ecdsa`}}),t.ecdsaChainTargets);return[...r,...n]}default:return lp(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=cp({available:e,chainTarget:n});if(!t)continue;let r=Ed(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 xd({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(Ad)})}function _p(e,t){let n=String(e||``).trim();if(!n)throw Error(`[WalletSessionStatus] ${t} is required`);return n}function vp(e){let t=pt(e.walletSessionId),n=dt(e.quotaId);return!t.ok||!n.ok?null:{walletSessionId:t.value,quotaId:n.value}}function yp(e){let t=vp(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 bp(e){return{curve:`ed25519`,walletId:z(e)}}function xp(e){return e.walletId}function Sp(e){return`${e.curve}:${xp(e)}`}function Cp(e){return`${e.walletSessionId}:${e.quotaId}`}function wp(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 Tp(e,t){return await e.getAvailableStatus(t).catch(()=>null)}function Ep(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 Dp(e){return yp(e)}function Op(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(!kp(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?wp(a):null}}function kp(e,t,n){return n.record.walletId===t&&n.record.quotaId===e.quotaId&&n.operationCredential.walletSessionId===e.walletSessionId}function Ap(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 jp(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`[signer-core-command] ${t} must be an object`);return e}function Mp(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 Np(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 Pp(e){return Ap(e,`derivationClientSharePublicKey33B64u`,33)}function Fp(e){return Ap(e,`relayerPublicKey33B64u`,33)}function Ip(e,t){return Ap(e,t,33)}function Lp(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 Rp(e){let t=jp(e,`ECDSA pending state blob`);if(Mp(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:Np(Reflect.get(t,`stateBlobB64u`),`pendingStateBlob.stateBlobB64u`)}}function zp(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 Bp(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:Ap(e.secretSource.xClientBaseB64u,`secretSource.xClientBaseB64u`,32)}}}function Vp(e){if(e.clientBootstrap.participantId!==1)throw Error(`[signer-core-command] ECDSA client bootstrap participantId must be 1`);let t=Pp(e.clientBootstrap.derivationClientSharePublicKey33B64u);return{pendingStateBlob:Rp(e.pendingStateBlob),clientBootstrap:{contextBinding32B64u:Ap(e.clientBootstrap.contextBinding32B64u,`contextBinding32B64u`,32),derivationClientSharePublicKey33B64u:t,clientShareRetryCounter:e.clientBootstrap.clientShareRetryCounter,participantId:1},publicFacts:{derivationClientSharePublicKey33B64u:Pp(e.publicFacts.derivationClientSharePublicKey33B64u),clientVerifyingShareB64u:Ip(e.publicFacts.clientVerifyingShareB64u,`clientVerifyingShareB64u`)}}}function Hp(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 Up(e){return{stateBlob:zp(e.stateBlob),publicFacts:{contextBinding32B64u:Ap(e.publicFacts.contextBinding32B64u,`contextBinding32B64u`,32),derivationClientSharePublicKey33B64u:Pp(e.publicFacts.derivationClientSharePublicKey33B64u),clientVerifyingShareB64u:Ip(e.publicFacts.clientVerifyingShareB64u,`clientVerifyingShareB64u`),relayerPublicKey33B64u:Fp(e.publicFacts.relayerPublicKey33B64u),groupPublicKey33B64u:Ip(e.publicFacts.groupPublicKey33B64u,`groupPublicKey33B64u`),ethereumAddress:Lp(e.publicFacts.ethereumAddress)}}}function Wp(e){return{ok:!1,code:`unavailable`,message:e}}function Gp(e,t){return{ok:!1,failure:`invocation`,code:e,message:t}}function Kp(e,t){return{ok:!1,failure:`command`,code:e,message:t}}function qp(e){let t=F(e),n=new ArrayBuffer(t.byteLength);return new Uint8Array(n).set(t),n}function Jp(e){return{challenge:qp(e.challengeB64u),rp:{id:e.rpId,name:e.rpId},user:{id:qp(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:qp(e.id)})),extensions:{prf:{eval:{first:F(e.extensions.prf.eval.firstB64u),second:F(e.extensions.prf.eval.secondB64u)}}}}}function Yp(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 Xp(e){let t=bu(e),n=hu(e),r=L(e);if(n===`ECDSA_DERIVATION_WASM_INIT_FAILURE`||Yp(r))return Gp(`native_binding_failure`,r);switch(t){case`TIMEOUT`:return Gp(`timeout`,r);case`WORKER_POSTMESSAGE_ERROR`:case`WORKER_PROTOCOL_ERROR`:case`WORKER_RUNTIME_ERROR`:return Gp(`worker_transport_failure`,r);default:break}return/timed out/i.test(r)?Gp(`timeout`,r):/postMessage|worker runtime|worker response|worker protocol|Malformed worker|Unknown worker/i.test(r)?Gp(`worker_transport_failure`,r):null}function Zp(e){let t=L(e);return/relayer|public identity|group public key|ethereum address|threshold public key/i.test(t)?Kp(`public_identity_mismatch`,t):Kp(`invalid_pending_state`,t)}function Qp(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 $p(){return{kind:`secure_secret_store`,async seal(){return Wp(`Browser secure secret store is not wired yet`)},async unseal(){return Wp(`Browser secure secret store is not wired yet`)},async delete(){return Wp(`Browser secure secret store is not wired yet`)}}}function em(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 tm(){return{prf:{eval:{first:Ye,second:qe}}}}function nm(){return{ok:!1,code:`prf_unavailable`,message:`Required passkey PRF.first output is unavailable`}}function rm(e){return/Missing PRF/i.test(L(e))?nm():null}function im(e){return!!(e&&typeof e==`object`&&`rawId`in e&&`response`in e&&typeof e.getClientExtensionResults==`function`)}async function am(e,t,n){return e===`create`?n.create({publicKey:t}):n.get({publicKey:t})}function om(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 am(`create`,Jp(n),e);if(!im(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=rm(e);if(t)return t}throw e}let a=oc(i);if(t.requirePrfFirst&&!a)return nm();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 am(`get`,{rpId:t.rpId,challenge:qp(t.challengeB64u),allowCredentials:[{type:`public-key`,id:qp(t.credentialIdB64u)}],userVerification:`preferred`,extensions:tm()},e);if(!im(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=rm(e);if(t)return t}throw e}let i=oc(r);if(t.requirePrfFirst&&!i)return nm();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 em(e)}}}}function sm(e){return{kind:`signer_crypto`,async createRouterAbEcdsaRegistrationCeremony(t){if(!e)throw Error(`ECDSA derivation client worker context is unavailable`);return Nu({command:t,workerCtx:e})},async verifyRouterAbEcdsaRegistrationClientProofs(t){if(!e)throw Error(`ECDSA derivation client worker context is unavailable`);return ku({command:t,workerCtx:e})},async persistInitialCanonicalEcdsaActivation(t){if(!e)throw Error(`ECDSA derivation client worker context is unavailable`);return Mu({command:t,workerCtx:e})},async finalizeRouterAbEcdsaRegistrationActivation(t){if(!e)throw Error(`ECDSA derivation client worker context is unavailable`);return Eu({command:t,workerCtx:e})},async closeRouterAbEcdsaRegistrationCeremony(t){if(!e)throw Error(`ECDSA derivation client worker context is unavailable`);return Fu({command:t,workerCtx:e})},async prepareEcdsaClientBootstrap(t){if(!e)return Gp(`unavailable`,`ECDSA client bootstrap worker context is unavailable`);try{return{ok:!0,value:Vp(await Ou({command:Bp(t),workerCtx:e}))}}catch(e){let t=L(e);return t.includes(`unsupported ECDSA bootstrap secret source`)?Kp(`unsupported_secret_source`,t):Xp(e)||Kp(`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 Kp(`invalid_pending_state`,`ECDSA client bootstrap pending blob envelope is invalid`);if(!e)return Gp(`unavailable`,`ECDSA client bootstrap worker context is unavailable`);try{return{ok:!0,value:Up(await ju({command:Hp(t),workerCtx:e}))}}catch(e){return Xp(e)||Zp(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 Kp(`invalid_ready_state`,`ECDSA role-local ready blob envelope is invalid`);if(!e)return Gp(`unavailable`,`ECDSA role-local material worker context is unavailable`);try{let n=await Bu({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 Xp(e)||Kp(`crypto_failure`,L(e))}}}}function cm(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 lm(e){return{kind:`clock`,nowMs:e||(()=>Date.now())}}function um(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 dm(e={}){return{kind:`browser`,storage:Qp(e.indexedDB||K),secrets:$p(),authenticator:om(e.credentials||globalThis.navigator?.credentials),signerCrypto:sm(e.workerCtx),http:cm(e.fetch||globalThis.fetch?.bind(globalThis)),clock:lm(e.nowMs),random:um(e.crypto||globalThis.crypto)}}function fm(e){throw Error(`[threshold-ed25519] unsupported wallet auth factor kind: ${String(e)}`)}function pm(e){return Ma(e.authority)?e.authority:Na(e.authority)?null:(e.authority,fm(e.authority))}async function mm(e){let t=pm(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:Kd({credential:await fl({credentialStore:e.credentialStore,touchIdPrompt:e.touchIdPrompt,nearAccountId:e.nearAccountId,challengeB64u:i}),rpId:n})}}let o=Wd(a);if(!o)return{ok:!1,code:`unsupported`,message:`Missing PRF.first output from credential (requires a PRF-enabled passkey)`};let s=await Hd({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 hm(s)}}function hm(e){throw Error(`[threshold-ed25519] unsupported Wallet Session mint kind: ${String(e)}`)}function gm(e){return{curve:`ed25519`,authMethod:`passkey`,walletId:e.walletId,relayerUrl:e.relayerUrl,walletSessionToken:e.walletSessionToken,ed25519Restore:e.ed25519Restore}}function _m(e){let t=String(e.authority.factor.credentialIdB64u||``).trim();if(!t)throw Error(`[threshold-ed25519] passkey authority credential id is required`);return t}function vm(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 ym(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 bm(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 xm(e.connected)}}function xm(e){throw Error(`[threshold-ed25519] unsupported connected session kind: ${String(e)}`)}async function Sm(e,t){let n=vm(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 mm({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(ym({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=bm({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=_m(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=gm({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 Cm(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 wm(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=Cm(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 Tm(e){let t=z(e.walletId);await e.bootstrapStore.upsertProfile({profileId:t}),await e.bootstrapStore.activateAccountSigner(wm({walletId:t,chainTarget:e.chainTarget,bootstrap:e.bootstrap,signerAuth:e.signerAuth}))}function Em(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),Om(r)}var Dm=class{constructor(){this.state={callerProvidedOperationFingerprintsById:new Map}}bindCallerProvidedOperationIdToFingerprint(e){Em({state:this.state,operationId:e.operationId,operationFingerprint:e.operationFingerprint})}};function Om(e){for(;e.size>1024;){let t=e.keys().next().value;if(!t)return;e.delete(t)}}function km(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 Am(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=km(t.scope);return n?{kind:`clear_volatile_warm_material`,scope:n}:null}function jm(e){return{kind:`clear_volatile_warm_material`,scope:{kind:`session`,thresholdSessionId:e}}}function Mm(){return{kind:`clear_volatile_warm_material`,scope:{kind:`all`}}}async function Nm(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=Pm(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 Fm(n,t);case`evm_sign`:case`evm_export`:return Im(n,t);default:return zm(e.operation)}}function Pm(e){switch(e.kind){case`near_sign`:case`evm_sign`:return`sign`;case`near_export`:case`evm_export`:return`export_keys`;default:return zm(e)}}function Fm(e,t){let n=Lm(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 Im(e,t){let n=Rm(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 Lm(e){return e.keyFamilies[0]!==`ed25519`||e.ed25519===void 0?null:e.ed25519}function Rm(e){return e.keyFamilies[0]!==`ecdsa_secp256k1`&&e.keyFamilies.length!==2||e.ecdsa===void 0?null:e.ecdsa}function zm(e){throw Error(`unsupported wallet authority operation: ${String(e)}`)}const Bm={listed:0,discovered:0,truncated:0};async function Vm(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})??Bm;default:throw t.authMethod,Error(`Unsupported signer auth method`)}}async function Hm(e,t,n){return await up(e.availableLanes,t,e.getConfiguredEcdsaChainTargets(),n)}async function Um(e,t,n){return await dp(e.availableLanes,{walletId:t.walletId,ownerScope:t.ownerScope,ecdsaChainTargets:e.getConfiguredEcdsaChainTargets(),requiredEcdsaCapability:`sign`},n)}function Wm(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 Gm(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 Km(e,t){let n=String(t||``).trim();return!e||!n||e.statusPort===`batch`?null:qm({thresholdSessionId:n,status:await e.getWarmSessionStatus({thresholdSessionId:n}).catch(()=>({ok:!1,code:`worker_error`,message:`worker_error`}))})}function qm(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}:(Gm({operation:`status_read`,thresholdSessionId:t,code:e.status.code}),{state:`unavailable`,thresholdSessionId:t,code:String(e.status.code||`worker_error`).trim()||`worker_error`})}function Jm(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 Ym(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 Xm(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 Zm(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 Qm(e){return String(e||``).trim()}function $m(e){let t=Qm(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 eh(e){switch(e.factor.kind){case`email_otp`:return H.emailOtp;case`passkey`:return H.passkey}}function th(e){for(let t of e){let e=t.source;switch(e){case H.emailOtp:return H.emailOtp;case H.passkey:break;default:return nh(e)}}return null}function nh(e){throw Error(`Unsupported signing session lane auth method: ${String(e)}`)}function rh(e){return bp(e.walletId)}function ih(e,t){t&&(!t.thresholdSessionId||!t.walletSessionId||e.push(t))}function ah(e,t,n){return{curve:`ed25519`,chain:`near`,source:eh(e),thresholdSessionId:e.thresholdSessionId,walletSessionId:t,quotaId:n,materialActivation:e.sealedRecord.ed25519Restore.materialActivation,backing:`record_policy`,runtime:e}}async function oh(e,t){return await lh(e,t,e.exactWalletSessionReadPorts)}function sh(e,t){return e.capabilitySubjects.some(e=>e.kind===`sign`&&e.keyFamily===`ed25519`&&b(e.materialActivation,t))}function ch(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 lh(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 Nm({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||!sh(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||!ch({runtime:n,authMethod:s})||!b(n.sealedRecord.ed25519Restore.materialActivation,l.value.materialActivation)||m.has(n.thresholdSessionId)||(m.add(n.thresholdSessionId),ih(p,ah(n,f.walletSessionId,d.quotaId)))}return p}async function uh(e){let t=_p(e.walletSessionId,`walletSessionId`);return(await oh(e.deps,e.walletId)).filter(n=>n.walletSessionId===t&&n.quotaId===e.quotaId)}function dh(e){let t=new Map;for(let n of e.lanes){let e=Cp({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=fh({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,vh(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=gh(o),t=s.filter(e=>o.thresholdSessionIds.has(Qm(e.lane.thresholdSessionId))),r=s.filter(e=>!o.thresholdSessionIds.has(Qm(e.lane.thresholdSessionId)));if(t.length===s.length){for(let t of s)n.set(t.lane.thresholdSessionId,e?vh(e,t.lane.thresholdSessionId):null);continue}for(let r of t)n.set(r.lane.thresholdSessionId,e?vh(e,r.lane.thresholdSessionId):null);c(r);continue}c(s)}return n}function fh(e){let t=e.statusOverrides;if(!t)return null;for(let n of ph(e.lanes)){let r=t.get(mh(n,e.walletSessionId,e.quotaId));if(!r)continue;let i=hh({override:r,lanes:e.lanes,claimsByThresholdSessionId:e.claimsByThresholdSessionId,statusOverrides:t});if(i)return i}return null}function ph(e){let t=new Map;for(let n of e){let e=rh(n.runtime);t.set(Sp(e),e)}return[...t.values()]}function mh(e,t,n){return`${Sp(e)}:${Cp({walletSessionId:t,quotaId:n})}`}function hh(e){if(!e.lanes.length)return null;if(e.lanes.find(t=>{let n=Qm(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(mh(rh(t.runtime),e.override.walletSessionId,e.override.quotaId));return null}return e.override}function gh(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 _h(e){let t=new Map;for(let n of e.lanes)t.set(n.thresholdSessionId,$m({thresholdSessionId:n.thresholdSessionId,remainingUses:n.runtime.remainingUses,expiresAtMs:n.runtime.expiresAtMs}));return t}function vh(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 yh(e){let t=await oh(e.deps,e.walletId);return bh({deps:e.deps,lanes:t,statusOverrides:e.statusOverrides})}async function bh(e){let t=await _h({deps:e.deps,lanes:e.lanes});return dh({lanes:e.lanes,claimsByThresholdSessionId:t,statusOverrides:e.statusOverrides})}async function xh(e){let t=e.walletSessionId,n=Array.from(new Set([...e.targetThresholdSessionIds||[]].map(Qm).filter(Boolean)));if(!n.length)return null;let r=Wm(e.deps.touchConfirm),i=await Promise.all(n.map(e=>Km(r,e)));return Xm({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 Sh(e){let t=e.lanes.some(e=>e.source===H.emailOtp);return Xm({sessionId:e.walletSessionId,claim:e.claim,authMethod:th(e.lanes),retention:t?`session`:null})}async function Ch(e){let t=await uh({deps:e.deps,walletId:e.walletId,walletSessionId:e.walletSessionId,quotaId:e.quotaId});e.statusOverrides.delete(mh(bp(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?.(jm(a.value))}catch{r.add(`touch_confirm_material`)}}return r.size>0?{kind:`unavailable`,failures:[...r]}:{kind:`cleared`}}function wh(e){return`${String(e.walletId)}:wallet-session:${String(e.walletSessionId)}`}function Th(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 Eh(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(jm(t.thresholdSessionId)),{kind:`cleared`}}catch{return{kind:`unavailable`,failures:[t.auth.kind===`email_otp`?`email_otp_material`:`touch_confirm_material`]}}}var Dh=class{#e;#t=new Map;#n=new Set;constructor(e){this.#e=e}async invalidate(e){let t=e.state,n=wh(t),r=this.#t.get(n);r||(r=Eh({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:Th(e)})}};function Oh(e){return e.lane.curve===`ed25519`&&e.readiness.curve===`ed25519`}function kh(e){return e.lane.curve===`ecdsa`&&e.readiness.curve===`ecdsa`}var Ah=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 jh(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 Mh=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 Dh({readiness:{touchConfirm:e.touchConfirm,clearEmailOtpWarmSessionMaterial:e.clearEmailOtpWarmSessionMaterial},statusOverrides:this.walletSessionState.statusOverrides}),this.operationIdBindings=new Dm,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 Ah({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=jh({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=Bd(e),r=zd(e,n);return t?.(r),t||this.onPlannerTrace?.(r),n}async resolveAuthPlanFromReadiness(e,t){if(Oh(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(kh(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(Qm).filter(Boolean)),i=r.size>0,a=async()=>i?await xh({deps:this.walletSessionDeps,walletSessionId:n,targetThresholdSessionIds:r}):null,o=(await oh(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=dh({lanes:s,claimsByThresholdSessionId:await _h({deps:this.walletSessionDeps,lanes:s}),statusOverrides:this.walletSessionState.statusOverrides}),l=s.map(e=>c.get(e.thresholdSessionId)||null).filter(Boolean);return Sh({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 yh({deps:this.walletSessionDeps,walletId:z(e),statusOverrides:this.walletSessionState.statusOverrides})}async clear(e){await Ch({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 Nh={resolveSelectedWalletAuthority:K.resolveSelectedWalletAuthority.bind(K),readExactWithOperationCredential:q.readExactWithOperationCredential.bind(q)};function Ph(e){return e.getEmailOtpWarmSessionStatus||(async t=>await e.passkeyMpcSession.getWarmSessionStatus({thresholdSessionId:t.thresholdSessionId}))}function Fh(e){let{createArgs:t,getEmailOtpWarmSessionStatus:n}=e;return new Mh({exactWalletSessionReadPorts:Nh,getStatus:t.getWalletSessionStatus,touchConfirm:t.passkeyMpcSession,getEmailOtpWarmSessionStatus:e=>n({kind:`ecdsa`,thresholdSessionId:e}),clearEmailOtpWarmSessionMaterial:t.clearEmailOtpWarmSessionMaterial})}async function Ih(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=ad({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 Lh(e){let{createArgs:t,signingSessionCoordinator:n,getEmailOtpWarmSessionStatus:r}=e;return{activeWalletAuthorityEcdsaRuntimeReadPorts:Nh,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 Ih({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 Rh(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 zh(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 Bh(e){return{accountStore:e.accountStore,userPreferencesManager:e.createArgs.userPreferencesManager,nonceCoordinator:e.createArgs.nonceCoordinator}}var Vh=class{async upsert(e){}async remove(e){}async list(){return[]}async upsertLane(e){}async removeLane(e){}async listLanes(){return[]}};function Hh(e,t){let n=String(e??``).trim();if(!n)throw Error(`${t} is required`);return n}function Uh(e){let t=e.materialActivation;return JSON.stringify([Hh(e.walletId,`walletId`),Hh(e.nearAccountId,`nearAccountId`),Hh(t.activationId,`materialActivation.activationId`),Hh(t.capability,`materialActivation.capability`),Hh(t.materialOwner,`materialActivation.materialOwner`),Hh(t.keyBinding,`materialActivation.keyBinding`),Hh(t.lifecycleBinding,`materialActivation.lifecycleBinding`),Hh(t.signingWorker,`materialActivation.signingWorker`)])}function Wh(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=Hh(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 Gh(e,t){return String(e.walletId)===String(t.walletId)&&String(e.nearAccountId)===String(t.nearAccountId)&&b(e.materialActivation,t.materialActivation)}var Kh=class{constructor(e=new Vh){this.publicReferences=e,this.entries=new Map,this.lifecycleGeneration=0}async activate(e){let t=Wh(e),n=Uh(t),r=this.lifecycleGeneration;for(let n of this.entries.values())if(n.material.activeClient===e.activeClient&&!Gh(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=Uh(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=Uh(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=Hh(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 qh(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 Jh(e,t){typeof t.timestamp==`number`&&(e.timestamp=t.timestamp),typeof t.schemaVersion==`number`&&(e.schemaVersion=t.schemaVersion)}function Yh(e){let n=Dr(t(e||``));return n.startsWith(`ed25519:`)?n:``}function Xh(e){let n=Yh(e.publicKey);if(n)return n;let r=Dr(t(e.relayerKeyId||``));return r.startsWith(`ed25519:`)?r:``}function Zh(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 Qh(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=>Zh(t,e.relayerKeyId))}function $h(e,n,r){if(!r)return null;let i=r.payload||{},a=Yh(r.publicKey),o=Xh({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:Qh({participants:i.participants,relayerKeyId:o}),timestamp:r.timestamp}}async function eg(e,t,n){return $h(t,n,await zs({deps:e,accountRefs:fc(t),signerSlot:n,keyKind:`threshold_share_v1`}))}async function tg(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};qh(t,n),await Ps(e,t);return}let d={accountRefs:u,signerSlot:n.signerSlot,keyKind:i,algorithm:a,publicKey:o,signerId:s};qh(d,n),await Ps(e,d)}async function ng(e,n){let r=Yh(n.publicKey);if(!r)throw Error(`IndexedDBManager: Missing Ed25519 publicKey for threshold key write`);let i=Xh({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:Qh({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};Jh(t,n),await tg(e,t);return}let l={nearAccountId:n.nearAccountId,signerSlot:n.signerSlot,keyKind:`threshold_share_v1`,publicKey:r,signerId:n.signerId,payload:o};Jh(l,n),await tg(e,l)}function rg(e){return Math.max(0,Math.round(performance.now()-e))}async function ig(e){let t=performance.now();try{await e()}catch{}return rg(t)}async function ag(e,t){if(!e)return null;try{return await Xd(e,t)}catch{return null}}async function og(e,t={kind:`none`}){let n=t.kind===`near_account_bound`?t.account:null,r=n?kr(n.nearAccountId):null,i=await ag(r,e.store);return{kind:`worker_resource_warmup_diagnostics_v1`,authenticatedWalletStateMs:n&&r&&i?await ig(()=>e.activateAuthenticatedWalletState({walletId:n.wallet.walletId,nearAccountId:r,signerSlot:i,nearClient:e.nearClient})):0,noncePrefetchMs:await ig(()=>e.nonceCoordinator.prefetchNearContext({kind:`initialized_state`,nearClient:e.nearClient})),keyMaterialReadMs:r&&i?await ig(async()=>{await eg({clientDB:e.store,keyMaterialStore:e.store},r,i).catch(()=>null)}):0,uiConfirmPrewarmMs:e.shouldPrewarmUiConfirmUi(e.workerBaseOrigin)?await ig(e.prewarmUiConfirmUi):0}}function sg(e){return N(e.seamsWebConfigs.network.chains)}function cg(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 lg(e){let{createArgs:t,getWorkerResourceWarmupDeps:n}=e;return()=>({signTempo:t.signTempo,warmCriticalResources:e=>og(n(),e)})}function ug(e){let t=new Kh(e.ed25519YaoPublicCapabilityReferences),n=sg(e),r=Ph(e),i=Fh({createArgs:e,getEmailOtpWarmSessionStatus:r}),a=cg(e,{warmupStore:e.stores.warmup.store});return{ed25519YaoActiveClients:t,nearSigningDeps:Rh({createArgs:e,nearRpcUrl:n,signingSessionCoordinator:i}),tempoSigningDeps:Lh({createArgs:e,walletSignerStore:e.stores.walletProfileAndSignerRecords.walletSignerStore,passkeyAuthenticatorStore:e.stores.walletProfileAndSignerRecords.passkeyAuthenticatorStore,signingSessionCoordinator:i,getEmailOtpWarmSessionStatus:r}),registrationAccountLifecycleDeps:Bh({createArgs:e,accountStore:e.stores.walletProfileAndSignerRecords.accountStore}),registrationSessionDeps:{touchConfirm:e.touchConfirm,touchIdPrompt:e.touchIdPrompt},walletSessionActivationDeps:zh({createArgs:e,credentialStore:e.stores.recoveryAndDeviceLinking.credentialStore}),signingSessionCoordinator:i,getWorkerResourceWarmupDeps:a,getManagerConveniencePorts:lg({createArgs:e,getWorkerResourceWarmupDeps:a})}}const dg=[`kind`,`keyFamily`,`walletId`,`walletKeyId`,`walletKeyVersion`,`lifecycle`],fg=[...dg,`nearEd25519SigningKeyId`,`keyCreationSignerSlot`,`registeredPublicKeyB64u`],pg=[...dg,`evmFamilySigningKeySlotId`,`thresholdPublicKey33B64u`,`evmAddress`],mg=Array.from(new Set([...fg,...pg])),hg=[`state`,`activatedAtMs`,`retiredAtMs`,`compromisedAtMs`],gg=[...[`kind`,`walletId`,`walletKeyId`,`laneId`,`laneKind`,`laneShareEpoch`,`participantBindingDigestB64u`],`lifecycle`],_g=[...gg,`walletAuthMethodId`,`ownerParticipantContinuity`],vg=[...gg,`ownerParticipantContinuity`],yg=[...gg,`holderParticipant`,`serverParticipant`],bg=[...yg,`authorizationId`,`agentIdentityKeyId`,`custodyBindingId`,`authorizationBindingDigestB64u`],xg=[...yg,`linkedDeviceId`],Sg=Array.from(new Set([..._g,...vg,...bg,...xg])),Cg=[`state`,`revocationEpoch`,`startedAtMs`,`deliveryDigestB64u`,`activatedAtMs`,`activationReceiptDigestB64u`,`revokedAtMs`,`revokeReason`];function wg(e){switch(e){case`owner_passkey`:case`owner_email_otp`:return _g;case`recovery`:case`break_glass`:return vg;case`linked_device`:return xg;case`delegated_execution`:return bg}}function Tg(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 Eg(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 Dg(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0)throw Error(`${t} must be a non-negative safe integer`);return e}function Og(e,t=`walletKeyVersion`){return Tg(e,t)}function kg(e,t){return Tg(e,t)}function Ag(e,t){return Tg(e,t)}function jg(e,t){return Tg(e,t)}function Mg(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 Ng(e,t){let n=M(e,t);switch(pe(n,hg,t,hg),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 Bg({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 Vg({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 Hg({compromisedAtMs:ge(n.compromisedAtMs,`${t}.compromisedAtMs`)});default:throw Error(`${t}.state must be active, retired, or compromised`)}}function Pg(e,t){let n=M(e,t);pe(n,Cg,t);let r=Dg(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 Kg({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 qg({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 Jg({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 Yg({revocationEpoch:r,revokedAtMs:ge(n.revokedAtMs,`${t}.revokedAtMs`),revokeReason:e})}default:throw Error(`${t}.state must be provisioning, pending_receipt, active, or revoked`)}}function Fg(e,t){if(e.kind!==`signing_lane_reference_v1`)throw Error(`${t}.kind must be signing_lane_reference_v1`);return Gg({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:Mg(e.laneKind,`${t}.laneKind`),participantBindingDigestB64u:xe(Aa(e.participantBindingDigestB64u),`${t}.participantBindingDigestB64u`)})}function Ig(e,t){let n=Fg(e,t);return{walletId:n.walletId,walletKeyId:n.walletKeyId,laneId:n.laneId,laneShareEpoch:n.laneShareEpoch,participantBindingDigestB64u:n.participantBindingDigestB64u,lifecycle:Pg(e.lifecycle,`${t}.lifecycle`)}}function Lg(e,t){let n=Ig(e,t),r=c(e.walletAuthMethodId);return{...n,walletAuthMethodId:xe(r,`${t}.walletAuthMethodId`),ownerParticipantContinuity:Ra(e.ownerParticipantContinuity,`${t}.ownerParticipantContinuity`)}}function Rg(e,t){return{...Ig(e,t),ownerParticipantContinuity:Ra(e.ownerParticipantContinuity,`${t}.ownerParticipantContinuity`)}}function zg(e,t){return{...Ig(e,t),holderParticipant:ro(e.holderParticipant,`${t}.holderParticipant`),serverParticipant:to(e.serverParticipant,`${t}.serverParticipant`)}}function Bg(e){return{state:`active`,activatedAtMs:e.activatedAtMs}}function Vg(e){return{state:`retired`,retiredAtMs:e.retiredAtMs}}function Hg(e){return{state:`compromised`,compromisedAtMs:e.compromisedAtMs}}function Ug(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 Wg(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 Gg(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 Kg(e){return{state:`provisioning`,revocationEpoch:e.revocationEpoch,startedAtMs:e.startedAtMs}}function qg(e){return{state:`pending_receipt`,revocationEpoch:e.revocationEpoch,startedAtMs:e.startedAtMs,deliveryDigestB64u:e.deliveryDigestB64u}}function Jg(e){return{state:`active`,revocationEpoch:e.revocationEpoch,activatedAtMs:e.activatedAtMs,activationReceiptDigestB64u:e.activationReceiptDigestB64u}}function Yg(e){return{state:`revoked`,revocationEpoch:e.revocationEpoch,revokedAtMs:e.revokedAtMs,revokeReason:e.revokeReason}}function Xg(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 Zg(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 Qg(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 $g(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 e_(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 t_(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 n_(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,fg,t,mg),Ug({walletId:xe(o(n.walletId),`${t}.walletId`),walletKeyId:xe(h(n.walletKeyId),`${t}.walletKeyId`),walletKeyVersion:Og(n.walletKeyVersion,`${t}.walletKeyVersion`),nearEd25519SigningKeyId:Ko(n.nearEd25519SigningKeyId),keyCreationSignerSlot:Ce(n.keyCreationSignerSlot,`${t}.keyCreationSignerSlot`),registeredPublicKeyB64u:Se(n.registeredPublicKeyB64u,`${t}.registeredPublicKeyB64u`),lifecycle:Ng(n.lifecycle,`${t}.lifecycle`)});if(n.keyFamily===`ecdsa_secp256k1`)return pe(n,pg,t,mg),Wg({walletId:xe(o(n.walletId),`${t}.walletId`),walletKeyId:xe(h(n.walletKeyId),`${t}.walletKeyId`),walletKeyVersion:Og(n.walletKeyVersion,`${t}.walletKeyVersion`),evmFamilySigningKeySlotId:Vo(n.evmFamilySigningKeySlotId,`${t}.evmFamilySigningKeySlotId`),thresholdPublicKey33B64u:Te(n.thresholdPublicKey33B64u,`${t}.thresholdPublicKey33B64u`),evmAddress:Eg(n.evmAddress,`${t}.evmAddress`),lifecycle:Ng(n.lifecycle,`${t}.lifecycle`)});throw Error(`${t}.keyFamily must be ed25519 or ecdsa_secp256k1`)}function r_(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=Mg(n.laneKind,`${t}.laneKind`);switch(pe(n,wg(r),t,Sg),r){case`owner_passkey`:return Xg(Lg(n,t));case`owner_email_otp`:return Zg(Lg(n,t));case`linked_device`:{let e=zg(n,t);return Qg({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=zg(n,t);return $g({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:jg(n.authorizationId,`${t}.authorizationId`),agentIdentityKeyId:kg(n.agentIdentityKeyId,`${t}.agentIdentityKeyId`),custodyBindingId:Ag(n.custodyBindingId,`${t}.custodyBindingId`),authorizationBindingDigestB64u:Ee(n.authorizationBindingDigestB64u,`${t}.authorizationBindingDigestB64u`)})}case`recovery`:return e_(Rg(n,t));case`break_glass`:return t_(Rg(n,t))}}async function i_(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=s_(n);throw Error(e||`Owner execution-lane preflight returned HTTP ${t.status}`)}return a_(n,e.curve)}function a_(e,t){let n=o_(e,[`ok`,`projection`],`owner execution-lane response`);if(n.get(`ok`)!==!0)throw Error(`owner execution-lane response is unsuccessful`);let r=o_(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=n_(r.get(`walletKey`)),a=r_(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 o_(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 s_(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 c_(e){return fn(e)}function l_(e){return`selector`in e?e.selector.capability:e.capability}function u_(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:l_(e),reason:`missing_material`});case`exact_binding_mismatch`:return _c({capability:l_(e),reason:`binding_mismatch`});case`exact_record_conflict`:return _c({capability:l_(e),reason:`exact_record_conflict`});case`corrupt`:return _c({capability:l_(e),reason:`corrupt`});case`persistence_unavailable`:return _c({capability:l_(e),reason:`persistence_unavailable`})}}function d_(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 f_(e){return e.lookup.kind===`active`?d_({lookup:e.lookup,runtime:e.runtime}):u_(e.lookup)}function p_(e){let t=d(e);if(!t.ok)throw Error(t.error.message);return t.value}function m_(e){return{walletKey:n_(e.walletKey),lane:r_(e.lane)}}function h_(e,t){return{kind:`wallet_execution_lane_refused_v1`,reason:e,walletId:t.walletKey.walletId,walletKeyId:t.walletKey.walletKeyId,laneId:t.lane.laneId}}function g_(){return{kind:`wallet_execution_lane_refused_v1`,reason:`invalid_boundary_record`}}function __(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 v_(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 y_(e,t){return t.length===e.participantIds.length&&t.every((t,n)=>t===e.participantIds[n])}function b_(e,t){let{walletKey:n,lane:r}=e;if(n.lifecycle.state!==`active`)return h_(`wallet_key_inactive`,e);if(r.lifecycle.state!==`active`)return h_(`lane_inactive`,e);if(String(n.walletId)!==String(r.walletId)||String(n.walletKeyId)!==String(r.walletKeyId))return h_(`wallet_key_mismatch`,e);if(n.keyFamily!==t.keyFamily)return h_(`key_family_mismatch`,e);if(r.laneKind===`linked_device`||r.laneKind===`delegated_execution`)return h_(`unsupported_lane_kind`,e);let i=v_(r);if(i===null)return g_();let a;try{a=p_(t.laneShareEpoch)}catch{return g_()}return String(a)===String(r.laneShareEpoch)?!String(r.participantBindingDigestB64u)||!String(i.signerId)||!String(i.signingWorkerId)||i.participantIds.length!==2?h_(`participant_binding_mismatch`,e):null:h_(`share_epoch_mismatch`,e)}function x_(e){return e.kind===`use_live_runtime`||e.kind===`rehydrate_material_activation`}function S_(e,t){let n=b_(e,t);if(n)return n;let r=e.walletKey,i=e.lane,a=v_(i);if(r.keyFamily!==`ecdsa_secp256k1`||i.lifecycle.state!==`active`)return h_(`key_family_mismatch`,e);if(a===null)return g_();let o=f_({lookup:t.lookup,runtime:t.runtime});if(!x_(o)||t.lookup.kind!==`active`)return h_(`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 h_(`activation_receipt_mismatch`,e);if(String(a.signingWorkerId)!==String(o.materialActivation.signingWorker)||!y_(a,l.participantIds))return h_(`participant_binding_mismatch`,e);let m=o.materialActivation;return{kind:`active_wallet_execution_lane_v1`,keyFamily:`ecdsa_secp256k1`,walletKey:r,lane:__({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 C_(e){let t;try{t=m_(e)}catch{return g_()}try{return S_(t,e.material)}catch{return g_()}}function w_(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=>gp({activeWalletAuthorityEcdsaRuntimeReadPorts:Nh,ed25519YaoPublicCapabilityLanes:e.ed25519YaoPublicCapabilityLanes,isEd25519YaoPublicCapabilityActive:e.isEd25519YaoPublicCapabilityActive,readActiveWalletSessionAuthorization:e.readActiveWalletSessionAuthorization,listEcdsaSigningCapabilitiesForWallet:e.listEcdsaSigningCapabilitiesForWallet},{...n(t),requiredEcdsaCapability:`export_keys`},new el,`all`),readOwnerScopedAvailableSigningLanesForTargets:async t=>await dp({activeWalletAuthorityEcdsaRuntimeReadPorts:Nh,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:Nh,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 T_(e,t){let n=t.laneIdentity,r={kind:`ed25519`,laneIdentity:n},i=Hc(n),a;try{a=await e.resolveSelectedWalletAuthority(String(i))}catch{return Nd({observation:{kind:`unavailable`,source:r},nowMs:t.nowMs})}if(a.kind!==`resolved`)return Nd({observation:a.kind===`integrity_error`?{kind:`invalid`,source:r}:{kind:`missing`,source:r},nowMs:t.nowMs});if(!E_(a,n))return Nd({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 Nd({observation:{kind:`unavailable`,source:r},nowMs:t.nowMs})}switch(o.kind){case`missing`:return Nd({observation:{kind:`missing`,source:r},nowMs:t.nowMs});case`corrupt`:case`upgrade_required`:return Nd({observation:{kind:`invalid`,source:r},nowMs:t.nowMs});case`persistence_unavailable`:return Nd({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?Nd({observation:{kind:`invalid`,source:r},nowMs:t.nowMs}):Nd({observation:{kind:`found`,source:r,expiresAtMs:o.record.expiresAtMs},nowMs:t.nowMs})}function E_(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 D_(e){return Nd({observation:{kind:`found`,source:{kind:`ecdsa`,laneIdentity:e.laneIdentity,authorization:e.authorization},expiresAtMs:e.authorization.session.expiresAtMs},nowMs:e.nowMs})}async function O_(e,t){switch(t.kind){case`ed25519`:return await T_(e,t);case`ecdsa`:return D_(t)}}const k_={resolveSelectedWalletAuthority:K.resolveSelectedWalletAuthority.bind(K),readExactActiveForWallet:q.readExactActiveForWallet.bind(q)};async function A_(e){return await O_(k_,e)}function j_(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 M_(e){let t;try{t=await K.resolveSelectedWalletAuthority(String(e))}catch{return{kind:`persistence_unavailable`}}if(t.kind!==`resolved`||!j_(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 N_(e){let t=Op({relayerUrl:String(e.seamsWebConfigs.network.relayer?.url||``).trim(),readAuthorization:M_});return w_({resolveActiveEcdsaCapabilityRuntime:yv,seamsWebConfigs:e.seamsWebConfigs,signerWorkerManager:e.signerWorkerManager,getTheme:e.getTheme,withThresholdEcdsaSigningQueue:t=>Sd({queueByKey:e.thresholdEcdsaSigningQueueByKey,...t}),withThresholdEd25519CommitQueue:t=>df({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=>$l({queueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,activationDeps:e.getWalletSessionActivationDeps(),persistEcdsaRoleLocalReadyRecord:e.runtimePorts.storage.persistEcdsaRoleLocalReadyRecord},t),getWalletSessionStatus:e=>t(e),resolvePasskeyEd25519YaoExportContext:e.resolvePasskeyEd25519YaoExportContext,resolveEmailOtpEd25519YaoExportContext:e.resolveEmailOtpEd25519YaoExportContext,sessionLifecycle:{readAuthorization:A_,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 P_=new js;function F_(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 I_(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 L_(e){if(e.authMethod!==`passkey`)throw Error(`Passkey restore adapter received a non-Passkey request`);let{authMethod:t,...n}=e;return n}const R_={getWalletAuthMethodV2:K.getWalletAuthMethodV2.bind(K),listWalletAuthMethodsForWallet:K.listWalletAuthMethodsForWallet.bind(K),readEmailOtpProviderSubjectForWallet:Ms.bind(null,K)};async function z_(){return null}async function B_(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 Fl({authMethod:n,stores:{...t,getWalletPasskeyAuthenticator:z_}})}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 V_(e){return Op({relayerUrl:String(e.seamsWebConfigs.network.relayer?.url||``).trim(),readAuthorization:M_})}function H_(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 U_(e,t,n){let r=H_(await K.resolveSelectedWalletAuthority(String(e)),e),i=await M_(e);return!r||i.kind!==`found`||i.operationCredential.token!==n.token||!I_(i.record,r)||!F_(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 W_(e){return await Fl({authMethod:e.authMethod,stores:{...R_,getWalletPasskeyAuthenticator:z_}})}async function G_(e){let t;try{t=await K.resolveSelectedWalletAuthority(String(e.walletId))}catch{throw Error(`[SigningEngine][near] exact Passkey authority is unavailable`)}let n=H_(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 W_(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 K_(e){switch(e.authorizationRead.kind){case`expired`:case`exhausted`:return await G_(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 q_(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 J_(e,t,n){let r=await M_(n);if(r.kind!==`found`)return r;let i=H_(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)||!I_(r.record,i)))return Y_(e,t,n);let o=a.status;if(o.status!==`active`)return q_(o);let s=await W_(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 Y_(e,t,n){let r=z(n),i;try{i=await K.resolveSelectedWalletAuthority(String(r))}catch{return{kind:`persistence_unavailable`}}let a=H_(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 q_(l);let u;try{u=await K.resolveSelectedWalletAuthority(String(r))}catch{return{kind:`persistence_unavailable`}}let d=H_(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||!F_(l.authorization,o.record)||!I_(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 W_(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 X_(e,t,n){let r=await Y_(t,n,e);return r.kind===`found`?r.authorization:null}function Z_(e){return e.curve===`ecdsa`}function Q_(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 $_(e){let t=(await _v(String(e.walletId))).filter(t=>Q_({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 cv(n),i=await e.context.sealedSigningSessionStore.listExactSealedSessionsForWallet({walletId:String(e.walletId),filter:{authMethod:e.selected.authMethod.kind,curve:`ecdsa`,chainTarget:e.chainTarget}}),a=$u({manifest:n,walletId:e.walletId,chainTarget:e.chainTarget,sealedRecords:i.filter(Z_)}),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 dd({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=Yu({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:td({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 ev(e,t,n){let r=z(t.walletId),i=Date.now(),a=H_(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 M_(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(F_(c.authorization,s.record)&&!I_(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=H_(await K.resolveSelectedWalletAuthority(String(r)),r);if(!l||c.walletSessionId!==s.operationCredential.walletSessionId||c.quotaId!==s.record.quotaId||c.expiresAtMs!==c.authorization.expiresAtMs||!F_(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=I_(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 U_(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 $_({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 tv(e,t,n){let r=await ev(e,t,n);if(r.kind===`inactive`)return r;let i=pd(r.capability,Date.now());return i?{kind:`active`,authorization:i}:{kind:`inactive`,reason:`Exact Wallet Session signing quota is exhausted`}}async function nv(e,t,n){let r=await gv({walletId:z(t.walletId),chainTargets:t.chainTargets}),i=[];for(let a of r)for(let r of t.chainTargets){let t=await ev(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 rv(e){return iv.bind(null,e)}async function iv(e,t,n){let r=await tv(e,t,n);return r.kind===`active`?r.authorization:null}async function av(e){for(let t of e.subjects){let n=await P_.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 ov(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 P_.lookupByMaterialActivation({walletId:e.walletId,materialActivation:e.materialActivation,authority:n})}async function sv(e,t){let n=z(t.walletId),r=await P_.listActiveWalletCapabilitySubjects(n);if(r.kind!==`resolved`)throw Error(`ECDSA capability subjects are ${r.kind}`);let i=async e=>{let i=await av({walletId:n,subjects:r.subjects,chainTarget:t.chainTarget});if(i)throw new nf({kind:`superseded`,supersessionKind:`material_activation_replaced`,preparedMaterialActivation:t.materialActivation,currentMaterialActivation:i.activation.materialActivation});return e()},a=await P_.lookupByMaterialActivation({walletId:n,materialActivation:t.materialActivation});if(a.kind===`ambiguous_authority`&&(a=await ov({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 cv(o),lookup:a}}async function cv(e){return await nd({authority:await B_(e.signer.authority,{getWalletAuthMethodV2:e=>K.getWalletAuthMethodV2(e),listWalletAuthMethodsForWallet:e=>K.listWalletAuthMethodsForWallet(e),readEmailOtpProviderSubjectForWallet:e=>Ms(K,e)}),manifest:e,material:vd({authority:e.signer.authority,materialActivation:e.activation.materialActivation,publicFacts:e.durableMaterial.roleLocalPublicFacts})})}async function lv(e,t){return(await sv(e,t)).capability}async function uv(e,t){let n=await tv(e,t,new el);if(n.kind!==`active`)throw Error(n.reason);let r=n.authorization,i=await sv(e,t),a=await i_({relayerUrl:String(e.seamsWebConfigs.network.relayer?.url||``).trim(),operationCredential:r.operationCredential,curve:`ecdsa_secp256k1`,expectedMaterialActivation:i.capability.manifest.activation.materialActivation}),o=C_({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 ad({capability:i.capability,authorization:r,nowMs:Date.now()})}async function dv(e,t,n){let r=await gv({walletId:z(t.walletId),chainTargets:t.chainTargets,...t.authMethod?{authMethod:t.authMethod}:{}});return await Promise.all(r.map(fv.bind(null,e,t.chainTargets,n)))}async function fv(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 tv(e,{walletId:i.signer.walletId,chainTarget:a,materialActivation:i.activation.materialActivation},n);return o.kind===`active`?pv(r,o.authorization):{kind:`authorization_required`,capability:r}}function pv(e,t){try{return ad({capability:e,authorization:t,nowMs:Date.now()})}catch{return{kind:`authorization_required`,capability:e}}}async function mv(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=H_(await K.resolveSelectedWalletAuthority(String(a)),a),c=await M_(a);if(!s||c.kind!==`found`||!I_(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 fv(e,t,n,r);let u=l.status;if(u.status!==`active`)return{kind:`authorization_required`,capability:r};if(!F_(u.authorization,c.record)||!I_(u.authorization,s))return fv(e,t,n,r);let d=await $_({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=pd(d.capability,Date.now());return f?pv(r,f):{kind:`authorization_required`,capability:r}}async function hv(e,t,n){let r=await gv({walletId:z(t.walletId),chainTargets:t.chainTargets,...t.authMethod?{authMethod:t.authMethod}:{}});return Promise.all(r.map(mv.bind(null,e,t.chainTargets,n)))}async function gv(e){let t=await P_.listActiveWalletCapabilitySubjects(e.walletId);if(t.kind!==`resolved`)return[];let n=[];for(let r of t.subjects){let t=await P_.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 cv(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 _v(e){let t=z(e),n=await P_.listActiveWalletCapabilitySubjects(t);if(n.kind!==`resolved`)return[];let r=[];for(let e of n.subjects){let t=await P_.lookup(e);t.kind===`active`&&r.push(t.manifest)}return r}const vv={listActiveEcdsaCapabilityManifestsForWallet:_v,listExactSealedSessionsForWallet:en,resolveSelectedWalletAuthority:K.resolveSelectedWalletAuthority.bind(K)},yv=id(vv),bv=Qu(vv);async function xv(e){let t=await M_(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 Sv(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 xv(e.walletSession.walletId),walletSession:e.walletSession,chain:e.chain,operationFingerprintDigest:e.operationFingerprintDigest})}}function Cv(e){let t=V_(e);return ug({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=>lv(e,t),resolveAuthorizedEcdsaSigningCapability:t=>uv(e,t),resolveActiveEcdsaWalletSessionAuthorization:rv(e),resolveOwnerLaneScope:e.resolveOwnerLaneScope,signerWorkerManager:e.signerWorkerManager,getWorkerBaseOrigin:e.getWorkerBaseOrigin,shouldPrewarmUiConfirmUi:e.shouldPrewarmUiConfirmUi,getTheme:e.getTheme,signTempo:t=>sd(e.getEnginePorts().tempoSigningDeps,t),activateAuthenticatedWalletState:t=>_a(e.getEnginePorts().registrationAccountLifecycleDeps,{walletId:t.walletId,nearAccountId:t.nearAccountId,signerSlot:t.signerSlot,nearClient:t.nearClient}),persistThresholdEcdsaBootstrapForWalletTarget:t=>Tm({bootstrapStore:e.ecdsaBootstrapStore,walletId:t.walletId,chainTarget:t.chainTarget,bootstrap:t.bootstrap,signerAuth:t.signerAuth}),requestEmailOtpTransactionSigningChallenge:t=>Sv({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 xv(t.walletId),walletSession:t,chain:`near`,operationFingerprintDigest:n}),prepareNearEd25519YaoMaterialBoundary:e.prepareNearEd25519YaoMaterialBoundary,provisionThresholdEd25519Session:t=>Sm({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(L_(t)):e.emailOtpSessions.restorePersistedSessionForSigning(t),readAvailableSigningLanesForSigning:async t=>fp({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:J_.bind(null,e.seamsWebConfigs.network.relayer.url),listEcdsaSigningCapabilitiesForWallet:(t.curve===`ecdsa`?hv:dv).bind(null,e)},t,Ir(e.seamsWebConfigs.network.chains)),provisionThresholdEcdsaSession:t=>Hl({queueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,activationDeps:e.getEnginePorts().walletSessionActivationDeps,persistEcdsaRoleLocalReadyRecord:e.runtimePorts.storage.persistEcdsaRoleLocalReadyRecord},t),withThresholdEcdsaSigningQueue:t=>Sd({queueByKey:e.thresholdEcdsaSigningQueueByKey,...t,walletId:z(t.walletId)}),withThresholdEd25519CommitQueue:t=>df({queueByKey:e.thresholdEd25519CommitQueueByKey,...t})})}function wv(e){throw Error(`Unexpected Router A/B normal-signing config branch: ${String(e)}`)}function Tv(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 wv(t)}}var Ev=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 Dv(e){let t=Math.floor(Number(e));return Number.isFinite(t)&&t>0?t:null}function Ov(e,t){let n=Math.floor(Number(e));return Number.isFinite(n)&&n>t?n:null}function kv(e){return Dv(e.remainingUses??e.policyHint?.remainingUses)}function Av(e,t){return Ov(e.expiresAtMs??e.policyHint?.expiresAtMs,t)}function jv(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 Mv(e){let t=e.lanes.lanes.ed25519.near;if(t.state===`missing`)return`ed25519_lane_missing`;if(Td(t)!==e.authMethod)return`auth_method_route_mismatch`;if(t.state!==`ready`&&t.state!==`restorable`)return`ed25519_lane_missing`;let n=kv(t),r=Av(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=jv(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 Nv(e){let t=B(e.chainTarget),n=e.lanes.ecdsa.lanesByTarget[t];if(!n||n.state===`missing`)return`ecdsa_lane_missing`;if(Md(n)!==e.authMethod)return`auth_method_route_mismatch`;if(n.state!==`ready`)return`ecdsa_lane_missing`;let r=kv(n),i=Av(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 Pv(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=Mv({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=Nv({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 Fv(e){let t=await Pv(e);if(!t.ok)throw new Ev(t);return t.inventory}function Iv(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 Lv(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!Iv({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 Rv(e,t){switch(e.kind){case`found`:return e;case`missing`:return null;case`upgrade_required`:throw new ic(t)}}function zv(e,t){let n=String(e??``).trim();if(!n)throw Error(`${t} is required`);return n}function Bv(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 Vv(e){if(e.kind===`active`)return e.handle;throw Error(`Wallet custody Ed25519 active client is disposed`)}function Hv(e){e.workerContext.requestWorkerOperation({kind:`emailOtp`,request:{type:`disposeEmailOtpEd25519YaoActiveClient`,payload:{activeClientHandle:e.handle}}}).catch(()=>void 0)}async function Uv(e){return(await e.workerContext.requestWorkerOperation({kind:`emailOtp`,request:{type:`disposeEmailOtpEd25519YaoActiveClient`,payload:{activeClientHandle:zv(e.activeClientHandle,`activeClientHandle`)}}})).removed}var Wv=class{constructor(e,t,n){this.workerContext=e,this.lifecycle={kind:`active`,handle:zv(t,`activeClientHandle`)},this.activeMetadata=Bv(n)}async createSigningShare(e){return await this.workerContext.requestWorkerOperation({kind:`emailOtp`,request:{type:`createEmailOtpEd25519YaoSigningShare`,payload:{activeClientHandle:Vv(this.lifecycle),input:e}}})}metadata(){return Bv(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`},Hv({workerContext:this.workerContext,handle:e})}};function Gv(e){switch(e.mode){case`ed25519_only`:return!1;case`ecdsa_only`:case`ed25519_and_ecdsa`:return!0}return!1}function Kv(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 qv(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:Kv(n),...r?{signerId:r}:{}};case`skipped`:return{kind:`skipped`}}return{kind:`skipped`}}function Jv(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 Yv(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 Xv(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 Zv(e,t){return{ecdsaKeys:Xv({source:`stored/relay`,keys:[...e.ecdsaKeys,...t?.ecdsaKeys||[]]}),...t?.runtimePolicyScope?{runtimePolicyScope:t.runtimePolicyScope}:e.runtimePolicyScope?{runtimePolicyScope:e.runtimePolicyScope}:{}}}function Qv(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:Xv({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 $v(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 ey(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 ty(e){if(!Gv(e.selection)||e.configuredTargets.length===0)return{kind:`no_configured_ecdsa_targets`};let t=[...e.blockedRecords||[]],n=Jv(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:ey(o)}:{kind:`key_facts_inventory_required`,keyFactsInventoryRequiredRecords:i}}async function ny(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 ry(){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 iy(e){if(!e.currentCredential)return await e.collectCredentialForChallenge(ry())}const ay=new js;async function oy(e){let t=await ay.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 sy(e){return await ay.listWalletActivationJournalSelectors(e)}function cy(e,t){let n=e?.[t];if(typeof n!=`string`||!n.trim())throw Error(`wallet unlock signer metadata requires ${t}`);return n.trim()}function ly(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(cy(t.metadata,`nearAccountId`)),nearEd25519SigningKeyId:Ko(cy(t.metadata,`nearEd25519SigningKeyId`)),signerSlot:r}}:{kind:`invalid`}}catch{return{kind:`invalid`}}}async function uy(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=ly(e,r);if(n.kind!==`valid`)return{kind:`failed`,reason:`invalid_capability_subject`};t.push(n.subject)}return{kind:`resolved`,subjects:t}}function dy(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 fy(e,t){for(let n of e)if(dy(n)===t)return!0;return!1}function py(e,t){fy(e,dy(t))||e.push(t)}function my(e){return e.kind===`near_ed25519_wallet`}function hy(e){let t=String(e||``).trim();if(!t)return null;try{return z(t)}catch{return null}}function gy(e){return String(e||``).trim()||null}function _y(e){let t=gy(e?.profileId);return t?{kind:`last_used_profile`,profileId:t}:{kind:`none`}}async function vy(){return _y(await K.getLastProfileState().catch(()=>null))}async function yy(e){let t=hy(e);return t?{kind:`explicit_wallet`,walletId:t}:e?{kind:`none`}:await vy()}function by(e){let t=String(e.metadata?.walletId||``).trim();if(!t)return null;try{return z(t)}catch{return null}}function xy(e){let t=[],n=new Set;for(let r of e){let e=by(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 Sy(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=xy(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 Cy(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 wy(e){return e.subjects.filter(my).length>1?`ambiguous_wallet_profile`:null}async function Ty(e){let t=z(e.walletId),n=[];switch(e.requestedCapabilityFamilies.kind){case`near_ed25519_only`:case`all_registered_mpc`:{let r=await uy(t);if(r.kind===`failed`)return{kind:`capability_subject_resolution_failed`,reason:r.reason};for(let e of r.subjects)py(n,e);if(e.requestedCapabilityFamilies.kind===`near_ed25519_only`)return Cy(t,n);break}case`evm_family_ecdsa_only`:break;default:e.requestedCapabilityFamilies}let r=await oy(t);if(r.kind===`failed`)return{kind:`capability_subject_resolution_failed`,reason:r.reason};for(let e of r.subjects)py(n,e);return Cy(t,n)}async function Ey(e){let t=await yy(e);if(t.kind===`none`)return{kind:`no_session_request`};let n,r;if(t.kind===`last_used_profile`){let e=await Sy(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 Ty({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=wy(a);return o?{kind:`unresolvable`,walletId:n,reason:o}:{kind:`resolved`,walletId:n,subjectSet:a,source:r}}function Dy(e,t){return globalThis.fetch(e,t)}function Oy(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 ky(e){if(e.selection)return Oy(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 Ay(e){return e.kind===`near_ed25519_wallet`}function jy(e){return e.kind===`evm_family_ecdsa_wallet`}function My(e){let t=e.subjects.filter(Ay);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 Ny(e){let t=My(e.subjectSet),n=e.subjectSet.subjects.filter(jy);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 Py(e){if(e.kind===`near_ed25519_capable_wallet`)return e;throw Error(`[login] NEAR Ed25519 warm-up requires an exact NEAR subject`)}function Fy(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 Iy(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 Ly(e){let t=!1,n=!1;for(let r of e.selectors){let i=await Cu({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 Ry(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 zy(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 By(e){return{walletId:e.walletId,factor:{kind:`passkey`,credentialIdB64u:e.credentialIdB64u},verifier:{kind:`webauthn`,rpId:e.rpId},bindingId:e.walletAuthMethodId}}async function Vy(e){return await U({authority:By(e)})}async function Hy(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 Uy(e){if(e.selection.authMethod.kind===`passkey`)return By(e.selection.authMethod);let t=e.providerIdentity;if(!t)throw Error(`[login] linked Email OTP authority provider identity is missing`);return await Hy({authMethod:e.selection.authMethod,provider:t.provider,providerSubjectId:t.providerSubjectId})}async function Wy(e){return await U({authority:await Uy(e)})}function Gy(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 Ky(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 qy(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 Ky({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 Jy(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(Ky({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 Hy({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 Yy(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 Xy(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=Yy(e.authority,n),r=Gy(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 Zy(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 Qy(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 $y({selection:e.selection,factorSecret32:n})}finally{n.fill(0)}}async function $y(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`?Zy(r,e.selection):eb(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 eb(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 tb(e){if(e.factorSecret32.byteLength!==32)throw Error(`[login] linked Email OTP unlock requires a 32-byte factor secret`);return await $y({selection:e.selection,factorSecret32:e.factorSecret32})}function nb(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 rb(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 Vb({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 ib(e){return`${e.walletId}:${e.authMethod??``}`}function ab(e){let t=null;for(let n of e)(!t||(n.lastLogin??0)>(t.lastLogin??0))&&(t=n);return t}async function ob(e){return e?(await K.listWalletAuthMethodsV2ForWallet(String(e)).catch(()=>[])).filter(e=>e.status===`active`).map(zy).filter(e=>!!e):[]}function sb(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 cb(e){return sb({authMethods:await ob(e.walletId),authMethod:e.authMethod,walletId:e.walletId})}async function lb(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 ub(e){return e?.status===`active`}function db(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:fb(e.request.operationCredential)}}catch{return null}case`webauthn`:return{kind:`webauthn`}}return null}function fb(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 pb(){return{kind:`none`}}function mb(e){return String(e.authenticators.find(t=>t.signerSlot===e.signerSlot)?.credentialId||e.authenticators[0]?.credentialId||``).trim()}function hb(e){return Va({walletId:e.walletId,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u})}function gb(e){if(!e.wantsEd25519Warmup)return{kind:`not_requested`};if(e.authMethod===H.passkey)return{kind:`passkey`,authority:{kind:`wallet_auth_authority`,authority:hb({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 _b(e){if(e.kind===`not_requested`)throw Error(`[login] threshold Ed25519 warm-up authority is missing`);return e}function vb(e){return e.authority.kind===`email_otp`?e.authority:{kind:`passkey`,authority:{kind:`wallet_auth_authority`,authority:hb({walletId:e.walletId,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u})},source:`login`}}function yb(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 bb(e){return Qc({signer:Vc({walletId:e.walletBinding.walletId,nearAccountId:e.walletBinding.nearAccountId,nearEd25519SigningKeyId:e.walletBinding.nearEd25519SigningKeyId,signerSlot:e.signerSlot}),auth:yb(e.authority),walletSessionId:e.walletSessionId,quotaId:e.quotaId,thresholdSessionId:e.thresholdSessionId})}function xb(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:bb({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:bb({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 Sb(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 Cb(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 wb(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||!Ix(t.participantIds,e.provisionScope.participantIds)||!e.provisionScope.runtimePolicyScope||!Rx(t.runtimePolicyScope,e.provisionScope.runtimePolicyScope)||!Lx(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 Tb(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 Eb(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 Db(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 Ob(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 kb(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 Ab(e){let t=[];for(let n of e.authenticators)n.signerSlot===e.signerSlot&&t.push(n);let n=Ob(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 jb(e){let t=Ny({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 Mb(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=jb({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:gb({wantsEd25519Warmup:a,authMethod:e.authMethod,walletId:e.subjectSet.walletId,rpId:o,passkeyCredentialIdB64u:mb({authenticators:e.authenticators,signerSlot:e.signerSlot}),routeAuthorization:e.routeAuthorization}),keyFactsInventoryAuthority:e.keyFactsInventoryAuthority,routeAuthorization:e.routeAuthorization}}async function Nb(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 Fv({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 Pb(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 Fb(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 Ib(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),lb(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=Fb({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 Lb(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),lb(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 Rb(e){switch(e.identity.kind){case`near_ed25519_capable_wallet`:return await Ib({signingEngine:e.signingEngine,identity:e.identity,signerSlotHint:e.signerSlotHint,onEvent:e.onEvent});case`evm_family_ecdsa_only_wallet`:return await Lb({identity:e.identity,signerSlotHint:e.signerSlotHint,onEvent:e.onEvent})}return Q(e.identity)}function zb(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 Bb(e,t,n){return await px(e,t,n,{kind:`wallet_only`})}async function Vb(e){let t=e.authority.signerActivations.ed25519;if(!t)return{kind:`absent`};let n=Gy(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 Hb(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 Ub(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(Ky({walletId:n,selection:t,authMethod:r,authority:i}).length>0||r.status!==`active`||i.state!==`active`)return null;let a=[],o=await Vb({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=Gy(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 Vy(r):Hb({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 Wb(e){let t=await Dy(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 Gb(e){return{id:e,type:`public-key`,transports:[]}}function Kb(e,t){return e.capabilitySubjects.some(e=>(e.kind===`sign`||e.kind===`export_keys`)&&e.keyFamily===(t===`ed25519`?`ed25519`:`ecdsa_secp256k1`))}function qb(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 Jb(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 Yb(e){let t=_d({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 wu({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 yd(r),{runtime:r,installed:!0}}catch(t){throw await Iu({holderHandleId:n,workerCtx:e.context.signingEngine.getSignerWorkerContext()}).catch(()=>void 0),t}}async function Xb(e){if(e.kind===`passkey`){let t=await qy(String(e.walletId));if(!t)throw Error(`[login] linked Passkey authority is unavailable after link`);return t}let t=await Jy({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 Zb(e){let t=$b(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 Qb(e){let t=await Xb(e.factor);Xy(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 $y({selection:t,factorSecret32:e.factorSecret32});try{let i=e.factor.kind===`email_otp`?e.factor.providerIdentity:void 0,a=await Uy({selection:t,...i?{providerIdentity:i}:{}}),o=Jb(r);if(o){let{runtime:r}=await Yb({context:e.context,selection:t,factorAuthority:a,material:o});sp({runtime:r,operationCredential:e.operationCredential,expiresAtMs:e.walletSession.expiresAtMs,relayerUrl:n,workerCtx:e.context.signingEngine.getSignerWorkerContext()})}let s=qb(r);if(s){let r=await Zb({relayerUrl:n,selection:t,walletSession:e.walletSession,operationCredential:e.operationCredential,material:s});await ix({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 $b(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 ex(e){let t=String(e?.providerSubjectId||``).trim();if(!t)throw Error(`[login] linked Email OTP lane provider identity is missing`);return t}function tx(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 nx(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 rx(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:ex(e.providerIdentity)},remainingUses:e.session.remainingUses,expiresAtMs:e.session.expiresAtMs}}async function ix(e){let t=$b(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),rx({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 ax(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 ox(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 sx(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 sx(e){let t=e.authority.signerActivations.ed25519?.materialActivation;return t?(await K.listPendingWalletRegistrationCommits()).some(cx.bind(void 0,e,t)):!1}function cx(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 lx(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 sx(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 Wy({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 ux(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 dx(e){let t={provider:e.providerSubjectId.startsWith(`google:`)?`google`:`email`,providerSubjectId:e.providerSubjectId},n=await Jy({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=ax(r),o=await ox({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 lx({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:ux(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}),rC({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:ux(s)});return}if(Xy(r,s.walletSession),!c)throw Error(`[login] linked Email OTP factor secret ownership was lost`);u=await tb({selection:r,factorSecret32:c});let n=qb(u),o=Jb(u);if(Kb(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(Kb(s.walletSession,`ecdsa`)){if(!o)throw Error(`[login] linked Email OTP ECDSA runtime material is missing`);let t=await Yb({context:e.context,selection:r,factorAuthority:await Uy({selection:r,providerIdentity:l}),material:o});t.installed&&(d=t.runtime)}let p;if(n&&s.ed25519Activation.bootstrap){let t=nx({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 ix({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&&(gd({walletId:d.walletId,materialActivation:d.materialActivation,holderHandleId:d.holderHandleId}),await Iu({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 Uv({workerContext:t,activeClientHandle:f}).catch(()=>void 0),f=null}for(let e of u||[])e.material.fill(0);c?.fill(0)}}async function fx(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 qy(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 Wb({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:[Gb(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);Xy(n,d.walletSession);let f=await Qy({selection:n,credential:c}),p;try{let t=qb(f),r=Jb(f);if(Kb(d.walletSession,`ed25519`)&&(!t||!d.ed25519Session))throw Error(`[login] linked Ed25519 runtime material or Wallet Session is missing`);if(Kb(d.walletSession,`ecdsa`)){if(!r)throw Error(`[login] linked ECDSA runtime material is missing`);await Yb({context:e,selection:n,factorAuthority:await Uy({selection:n}),material:r})}if(t&&d.ed25519Session)p=await ix({context:e,selection:n,session:tx({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 px(e,t,n,r){let{onEvent:i,onError:a,afterCall:o}=n||{},{signingEngine:s}=e,c=ky({selection:n?.unlockSelection,subjectSet:t}),l=Ny({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 Rb({signingEngine:s,identity:l,signerSlotHint:Vs(n?.signerSlot,{min:1}),onEvent:i}),h=async e=>{let t=Db({authenticators:r,credentialIds:e.credentialIds}),n=await ny({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 iy({currentCredential:d,collectCredentialForChallenge:async e=>await h({challengeB64u:e,saveAsLoginCredential:!0,credentialIds:Ab({authenticators:r,signerSlot:f,serverCredentialIds:[]})})});e&&(d=e)},_=op({defaults:e.configs.signing.sessionDefaults,override:n?.signingSession}),v=_.kind===`enabled`,y=v&&l.kind===`near_ed25519_capable_wallet`?eg({clientDB:K,keyMaterialStore:K},l.nearAccountId,f).catch(()=>null):Promise.resolve(null),b=null,x=null,S=null,C=null,w=pb(),T=null,E=(e,t)=>{if(ub(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?Py(l):null,o=$t(e.configs),c=!1,h=async()=>{c||(c=!0,await s.clearVolatileWarmSigningMaterial(l.walletId))};t.wantsEcdsaWarmup&&Ry(await Ly({workerCtx:s.getSignerWorkerContext(),selectors:Iy(l.subjectSet)}));let g=t.wantsEcdsaWarmup?await OS(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&&Fy({identity:l,context:g});let T=fS({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=Eb({requiresLocalPasskeyUnlock:m,hasLoginCredential:!!d,routeAuthorization:t.routeAuthorization,warmupPlan:T});await h();let M=pS(`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 vS();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 tS({statusReads:A,context:e,signingEngine:s,walletIdentity:l,signerSlot:t.signerSlot,thresholdKeyMaterial:v,relayerUrl:t.relayerUrl,relayerKeyId:v?.relayerKeyId||``,participantIds:w,ttlMs:_.ttlMs,unlockRemainingUses:gS(_.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`,jx({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=Tb({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 xx({context:e,walletIdentity:l,selection:c,ttlMs:_.ttlMs,remainingUses:gS(_.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 Dx({context:e,walletIdentity:l,unlockSubjectId:u,onEvent:i,authenticators:r,signerSlot:f,remainingUses:gS(_.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?gx(o.activation.sessionActivation):null),C=o.custody,await bx({walletId:String(l.walletId),unlock:o}),w=pb()}if(!d)throw Error(`[login] successful Passkey unlock omitted its credential`);if(await Pb({context:e,walletIdentity:l,credential:d}),v){let t=await cb({walletId:l.walletId,authMethod:p}),i=_x({completedActivation:b,request:n?.ecdsaKeyFactsInventory,routeAuthorization:w,wantsEcdsaWarmup:jb({subjectSet:l.subjectSet,selection:c,hasConfiguredEcdsaTargets:cr(e.configs.network.chains).length>0}).wantsEcdsaWarmup});if(T=await D(Mb({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 Nb({context:e,statusReads:A,walletIdentity:l,signersWarmed:T.signersWarmed,credential:t})}}if(await O(f),ee(),S&&d&&C){let t=tr(d);t&&rC({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=zb({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 mx({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 mx(e){await K.clearLastProfileSelection().catch(()=>void 0);try{e.context.signingEngine.getNonceCoordinator().clearAll()}catch{}try{await e.context.signingEngine.clearVolatileWarmSigningMaterial(e.walletId)}catch{}}function hx(e){return Rl(e)?e.activation.session.threshold_session_id:e.session.threshold_session_id}function gx(e){return Rl(e)?e.authorization:{record:e.session.wallet_session,operationCredential:e.session.operation_credential}}function _x(e){if(!e.wantsEcdsaWarmup)return null;if(e.completedActivation){let t;try{let n=e.completedActivation.sessionActivation;if(Rl(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=db({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 vx(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||!Rx(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 yx(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!==Qx(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 bx(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 xx(e){let t=cr(e.context.configs.network.chains);if(!jb({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 OS(e.context,e.walletIdentity.walletId,void 0,`passkey`),i=B(n.chainTarget),a=r.ecdsaKeys.find(e=>e.targetKey===i);if(!a)throw _S(i);let o=r.runtimePolicyScope;if(!o)throw Error(`[login] passkey ECDSA activation requires runtime policy scope`);let s=mS(pS(`threshold-ecdsa-login`)),c=hS(pS(`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 Sx(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 Cx(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 wx(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 Vy(t),identity:au({authority:n,walletAuthMethodId:t.walletAuthMethodId})}}async function Tx(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 wx({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 Ex(e,t){return{...e,session_policy:{...e.session_policy,wallet_session_mint_id:hS(t)}}}async function Dx(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:Ex(e.activation.policy,s)}:null,u=Ab({authenticators:e.authenticators,signerSlot:e.signerSlot,serverCredentialIds:kb(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=Cx({challengeId:s,credential:d,ed25519SessionRequest:Sx({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 Tx({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&&(vx({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 Tx({walletIdentity:e.walletIdentity,rpId:e.rpId,credential:d,authorization:gx(_)}):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 eS({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 Ox=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 kx(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 Ax(e,t){e?.reject(t)}function jx(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 Mx(e){return e?.kind===`opaque_wallet_session_operation_credential_v1`}function Nx(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 Px(e){return JSON.stringify(e)}function Fx(e){let t=Nx(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:mS(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 Ix(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function Lx(e,t){return e.kind===t.kind&&e.signingWorkerId===t.signingWorkerId}function Rx(e,t){return e.orgId===t.orgId&&e.projectId===t.projectId&&e.envId===t.envId&&e.signingRootVersion===t.signingRootVersion}function zx(e){if(e.current.runtimePolicyScope&&e.incoming.runtimePolicyScope&&!Rx(e.current.runtimePolicyScope,e.incoming.runtimePolicyScope))throw Error(`[login] threshold ECDSA ${e.source} has a conflicting runtime policy scope`);return Zv(e.current,e.incoming)}async function Bx(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 yv({walletId:e.walletId,chainTarget:e.chainTarget});if(t.kind!==`resolved`)throw _S(B(e.chainTarget));let n=t.manifest.durableMaterial.roleLocalPublicFacts;if(String(n.keyHandle)!==String(e.targetEcdsaKey.keyHandle)||String(n.walletId)!==String(e.walletId))throw _S(B(e.chainTarget));return n.publicCapability}function Vx(e){let t=[];for(let n of e)n!==`ed25519`&&n!==`ecdsa`||t.includes(n)||t.push(n);return t}async function Hx(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 Ux(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(Hx)),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 Wx(e){if(e.routeAuthorization.kind,e.credentialState.kind===`available`)return{};throw Error(`[login] threshold ECDSA warm-up requires route authorization`)}function Gx(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 Kx(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 qx(e){if(`operationCredential`in e)return e.operationCredential;throw Error(`[login] wallet custody Ed25519 activation requires the exact issued operation credential`)}async function Jx(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 Yx(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 Xx(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 Zx(e){Xx(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=Yx(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:qx(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 Jx({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:qx(e.walletSession).token,home:qx(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 Qx(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 $x(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 eS(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)||!Rx(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:Qx(t.activationReceipt.ecdsa_activation.public_identity.ethereum_address20_b64u),relayerShareRetryCounter:t.activationReceipt.ecdsa_activation.public_identity.server_share_retry_counter})});yx({publicFacts:i.publicFacts,signer:t}),await e.signingEngine.restoreWalletCustodyEcdsaContinuity({authority:e.authority,chainTargets:$x(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 tS(e){let t=Vx(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 Ox: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?Ax.bind(void 0,s):null,run:async()=>{let t=Py(e.walletIdentity),c=f,u=vb({authority:_b(e.ed25519SessionAuthority),walletId:t.walletId,rpId:e.context.signingEngine.getRpId(),credentialIdB64u:r}),p=xb({mintPlan:e.ed25519MintPlan,ecdsaMint:c,walletBinding:t,signerSlot:e.signerSlot,authority:u}),m=Cb({mintPlan:e.ed25519MintPlan,fallback:{relayerKeyId:e.relayerKeyId,participantIds:e.participantIds,runtimePolicyScope:a.runtimePolicyScope??null,routerAbNormalSigning:Tv(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:kx.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`);_=wb({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=Sb(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:Zx.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=Qv({context:o.activeCanonicalEcdsaContext,configuredTargets:d});if(t.kind===`complete_configured_target_keys`){o.activeCanonicalEcdsaContext=t.context;return}t.kind!==`missing_configured_target_keys`&&$v({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=Wx({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 Bx({walletId:e.walletIdentity.walletId,chainTarget:t.chainTarget,targetEcdsaKey:n}),u=a.get(Px(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?hx(p.sessionActivation):yS({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 _S(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 Kx({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(!Mx(b))throw Error(`[login] ECDSA role-local activation requires a verified Wallet Session`);return await Kx({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 _S(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=Fx(s),l=Px(c.public_capability);if(!a.has(l)){let t=await wx({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=Gx(e)||`Failed to bootstrap threshold ECDSA session`;throw Error(`[login] threshold ECDSA warm-up failed: ${t}`)}}}),await Ux(p),{ecdsaBootstraps:u,ed25519Session:d}}async function nS(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 Lv({walletId:e.value,ports:Nh}),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 Ey(i);if(c.kind===`no_session_for_wallet`){let e=await Ub(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 sy(c.walletId);if(t.kind!==`resolved`)return await aS({context:e,walletId:c.walletId,reason:`activation_reconciliation_failed`});if(t.selectors.length>0){l=!0;let n=await Ly({workerCtx:e.signingEngine.getSignerWorkerContext(),selectors:t.selectors});if(n.didFinalize&&(c=await Ey(c.walletId)),c.kind===`no_session_for_wallet`&&n.kind!==`settled`)return await aS({context:e,walletId:c.walletId,reason:n.kind===`pending`?`activation_reconciliation_pending`:`activation_reconciliation_failed`})}}if(c.kind===`no_session_for_wallet`)return await aS({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 aS({context:e,walletId:c.walletId,reason:c.reason});let u=Iy(c.subjectSet);!l&&u.length>0&&Ry(await Ly({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([JS(e,c),oS(e,c.walletId,n)]),p=s&&a&&String(a)===String(c.walletId)?s:await Lv({walletId:c.walletId,ports:Nh}),m={kind:`signed_out`};switch(p.kind){case`authenticated`:await iS(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=VS({subjectSet:m.kind===`authenticated`&&p.kind===`authenticated`?rS(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:sS(e,d.nearAccountId)}}function rS(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 iS(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 aS(e){let[t,n]=await Promise.all([qS(e.context,e.walletId),Lv({walletId:e.walletId,ports:Nh})]),r={kind:`signed_out`};switch(n.kind){case`authenticated`:await iS(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:sS(e.context,t.nearAccountId)}}function oS(e,t,n){return e.signingEngine.readPersistedAvailableSigningLanes({walletId:t},n).then(e=>({kind:`available`,lanes:e})).catch(()=>({kind:`unavailable`}))}function sS(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 cS(e){let t=String(e||``).trim().toLowerCase();return/^0x[0-9a-f]{40}$/.test(t)?t:``}async function lS(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=qv({walletId:t,configuredTargets:n,signer:e});r.kind===`active_ecdsa_signer_record`&&i.push(r.walletKey)}return i}async function uS(e,t){let n=[...new Set((await lS(e,t)).map(e=>cS(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 dS(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 fS(e){let t=Qv({context:e.storedCanonicalEcdsaContext,configuredTargets:e.selectedEcdsaTargets}),n=$v({completion:t,source:`stored ECDSA key facts`}),r=dS({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 pS(e){return Pe(e,32,`threshold login warm session IDs`)}function mS(e){let t=T(e);if(!t.ok)throw Error(`[login] failed to create threshold ECDSA session identity`);return t.value}function hS(e){let t=ft(e);if(!t.ok)throw Error(`[login] failed to create Wallet Session mint identity`);return t.value}function gS(e){if(e==null||e<=0)throw Error(`[login] unlock warm-up requires positive unlock session uses`);return e}function _S(e){let t=Error(`[login] device_link_required: local threshold ECDSA material is unavailable for ${e}`);return t.code=`device_link_required`,t}function vS(){let e=Error(`[login] device_link_required: local threshold Ed25519 material is unavailable`);return e.code=`device_link_required`,e}function yS(e){let t=String(e.sharedState.generatedThresholdSessionId||``).trim();if(t)return t;let n=pS(`threshold-ecdsa-login`);return e.sharedState.generatedThresholdSessionId=n,n}async function bS(e){if(!e.collectCredential)throw Error(`[login] WebAuthn ECDSA key-facts inventory requires a credential collector`);let t=ry(),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 xS(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 bS({walletId:e.walletId,relayerUrl:t,rpId:n,keyTargets:e.keyTargets,...e.runtimePolicyScope?{runtimePolicyScope:e.runtimePolicyScope}:{},collectCredential:e.collectWebAuthnInventoryCredential})}function SS(e){let t=qv({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 CS(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 wS(e){for(let t of e.records){let n=e.walletSigners.filter(n=>SS({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:CS({signer:r,record:t})},activationPolicy:{mode:`allocate_next_free`},preferredSlot:r.signerSlot,selectAsActive:!1,mutation:{routeThroughOutbox:!1}})}}function TS(e,t){return t?{ecdsaKeys:e,runtimePolicyScope:t}:{ecdsaKeys:e}}function ES(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 DS(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=qv({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=ty({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 xS({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=Xv({source:`profile continuity`,keys:c.readyTargets.map(e=>Yv({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 wS({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 xS({walletId:e,relayerUrl:n.relayerUrl,rpId:n.rpId,keyTargets:c.keyTargets,authority:a,...n.runtimePolicyScope?{runtimePolicyScope:n.runtimePolicyScope}:{},collectWebAuthnInventoryCredential:n.collectWebAuthnInventoryCredential}),s=Qv({context:{ecdsaKeys:Xv({source:`profile continuity inventory`,keys:o.records.map(e=>Yv({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 wS({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 OS(e,t,n,r){let i=cr(e.configs.network.chains),a=TS(Xv({source:`stored`,keys:[]}),void 0),o=await gv({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&&!Rx(c,l))throw Error(`[login] threshold ECDSA durable lanes have conflicting runtime policy scopes`);!c&&l&&(c=l),s.push(Yv({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=Xv({source:`available lane`,keys:s});a=zx({current:a,incoming:TS(l,c),source:`durable lanes`});let u=Qv({context:a,configuredTargets:i});if(u.kind===`complete_configured_target_keys`)return u.context;let d=new Set(u.missingTargets),f=await DS(t,i.filter(e=>d.has(B(e.chainTarget))),ES({input:n,runtimePolicyScope:a.runtimePolicyScope}));return a=zx({current:a,incoming:{ecdsaKeys:f},source:`profile continuity`}),a}async function kS(e,t){let n=[...new Set((await lS(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 AS(e,t){let[n,r]=await Promise.all([uS(e,t),kS(e,t)]);if(n&&r)return{ethereumAddress:n,thresholdEcdsaPublicKeyB64u:r};let i=await gv({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(cS(t.thresholdOwnerAddress)),o.add(t.publicKeyB64u)}return{ethereumAddress:n??(a.size===1?[...a][0]:null),thresholdEcdsaPublicKeyB64u:r??(o.size===1?[...o][0]:null)}}function jS(e){return{kind:`failed`,reason:e}}function MS(){return{kind:`failed`,reason:`persistence_unavailable`}}function NS(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 PS(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 FS(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 IS(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 LS(e,t){return String(t.key.walletId)===String(e.walletId)&&String(t.key.ecdsaThresholdKeyId)===String(e.ecdsaThresholdKeyId)}function RS(e){if(e.availableLanes.kind===`unavailable`)return{kind:`near_ed25519`,subject:e.subject,lane:MS()};let t=e.availableLanes.lanes;if(String(t.walletId)!==String(e.subject.walletId))return{kind:`near_ed25519`,subject:e.subject,lane:jS(`identity_mismatch`)};let n=PS(t,`ed25519`);if(n)return{kind:`near_ed25519`,subject:e.subject,lane:jS(n)};let r=t.lanes.ed25519.near;return Od(r)?{kind:`near_ed25519`,subject:e.subject,lane:IS(e.subject,r)?NS(r):jS(`identity_mismatch`)}:{kind:`near_ed25519`,subject:e.subject,lane:jS(`missing`)}}function zS(e){if(e.availableLanes.kind===`unavailable`)return MS();let t=e.availableLanes.lanes;if(String(t.walletId)!==String(e.subject.walletId))return jS(`identity_mismatch`);let n=FS(t,e.chainTarget);if(n)return jS(n);let r=Pd(t,e.chainTarget);return Od(r)?LS(e.subject,r)?r.source===`canonical_capability`&&!r.authorization?{kind:`authorization_required`,requirement:`same_method_step_up`}:NS(r):jS(`identity_mismatch`):jS(`missing`)}function BS(e){let[t,...n]=e.configuredTargets;return t?{kind:`evm_family_ecdsa`,subject:e.subject,targets:{kind:`configured_targets`,lanes:[{chainTarget:t,readiness:zS({subject:e.subject,availableLanes:e.availableLanes,chainTarget:t})},...n.map(t=>({chainTarget:t,readiness:zS({subject:e.subject,availableLanes:e.availableLanes,chainTarget:t})}))]}}:{kind:`evm_family_ecdsa`,subject:e.subject,targets:{kind:`no_configured_target`}}}function VS(e){let t=e.subjectSet.subjects.map(t=>{switch(t.kind){case`near_ed25519_wallet`:return RS({subject:t,availableLanes:e.availableLanes});case`evm_family_ecdsa_wallet`:return BS({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 HS(e){return e?e.operationalPublicKey:null}function US(e,t){return!!(e&&String(e.walletId)===String(t.walletId)&&String(e.nearAccountId)===String(t.nearAccountId)&&e.signerSlot===t.signerSlot)}async function WS(e,t){let n=await e.getLastUser().catch(()=>null);if(US(n,t))return n;let r=await ea(K,t.nearAccountId,t.signerSlot).catch(()=>null);if(US(r,t))return r;let i=await e.getUserBySignerSlot(t.nearAccountId,t.signerSlot).catch(()=>null);return US(i,t)?i:null}function GS(e,t){return e.walletId===t.walletId&&e.nearAccountId===t.nearAccountId&&e.nearEd25519SigningKeyId===t.nearEd25519SigningKeyId&&e.signerSlot===t.signerSlot}async function KS(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(Ky({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 Vb({walletId:n,authMethod:a,authority:s,signerMaterials:r.signerMaterials});if(c.kind!==`resolved`||!GS(c.subject,e))return null;let l=s.signerActivations.ed25519;return l?`ed25519:${Er(F(l.signer.registeredPublicKeyB64u))}`:null}async function qS(e,t){let[n,r]=await Promise.all([ob(t),AS(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 JS(e,t){let n=t.walletId,r=My(t.subjectSet),i=r?.nearAccountId||null,[a,o]=await Promise.all([r?WS(e.signingEngine,r):null,qS(e,n)]),s=HS(a)||(r?await KS(r):null);return{...o,nearAccountId:i,nearOperationalPublicKey:s,userData:a}}async function YS(e){let[t,n,r]=await Promise.all([e.signingEngine.getAllUsers(),K.listWalletSelections(),e.signingEngine.getLastUser()]),i=(await Promise.all(n.map(rb))).filter(e=>e!==null),a=new Map;for(let e of t){let t=nb(e);a.set(ib(t),t)}for(let e of i)a.set(ib(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?nb(r):null;return{walletIds:s,accountIds:c,accounts:o,lastUsedAccount:ab([...i,...l?[l]:[]])}}function XS(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 ZS(e){let t=[];for(let n of e){let e=XS(n);e&&t.push(e)}return t}async function QS(e){return ZS(await eC(e,await K.listLocalWalletAuthMethodProjectionsV2ForWallet(e)))}function $S(e){return e.kind===`email_otp`&&e.record.status===`active`&&e.presentation.email.kind===`unavailable`}async function eC(e,t){let n=[];for(let e of t)$S(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 tC(){let e=await K.listWalletSelectionWalletIds();return(await Promise.all([...new Set(e)].map(QS))).flat()}async function nC(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 rC(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 iC=null,aC=null;function oC(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function sC(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 cC(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 lC(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 uC(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 dC(e){if(!Number.isSafeInteger(e)||Number(e)<=Date.now())throw Error(`hosted-wallet Wallet Session is expired or invalid`);return Number(e)}function fC(e,t){let n=oC(e);if(cC(n,new Set([`ok`,`code`,`message`]),`hosted-wallet exchange failure`),n.ok!==!1)throw Error(`hosted-wallet exchange failure is invalid`);let r=sC(n,`code`),i=sC(n,`message`),a=Error(i);return a.code=r,a.status=t,a}function pC(e){if(typeof e!=`string`||!/^wsh_[A-Za-z0-9_-]{43}$/.test(e))throw Error(`hosted-wallet operationCredential.token is invalid`);return e}function mC(e){let t=pt(e);if(!t.ok)throw Error(`walletSessionId is invalid: ${t.error.message}`);return t.value}function hC(e){let t=oC(e);if(cC(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:pC(t.token),walletSessionId:mC(t.walletSessionId)}}function gC(e){let t=oC(e);if(t.ok!==!0)throw fC(t,400);cC(t,new Set([`ok`,`walletSessionId`,`operationCredential`,`expiresAtMs`]),`hosted-wallet session redemption response`);let n=mC(t.walletSessionId),r=hC(t.operationCredential);if(r.walletSessionId!==n)throw Error(`hosted-wallet operationCredential does not identify its parent Wallet Session`);return{operationCredential:r,expiresAtMs:dC(t.expiresAtMs)}}async function _C(e){try{return await e.json()}catch{return null}}function vC(e){aC=lC(e,`adopted parent origin`)}function yC(e){let t=iC;if(t){if(t.expiresAtMs<=Date.now()||t.appOrigin!==aC||t.walletOrigin!==window.location.origin||e!==void 0&&t.relayUrl!==uC(e)){iC=null;return}return t.operationCredential}}function bC(){iC=null,aC=null}function xC(e){return JSON.stringify({exchangeCode:e.exchangeCode,nonce:e.nonce,appOrigin:e.appOrigin,walletOrigin:e.walletOrigin})}async function SC(e,t){let n=Qe(e),r=uC(t);if(uC(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(aC===null||n.appOrigin!==aC)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:xC(n)}),o=await _C(i);if(!i.ok)throw fC(o,i.status);let s=gC(o),c={kind:`active_hosted_wallet_seams_session`,operationCredential:s.operationCredential,expiresAtMs:s.expiresAtMs,relayUrl:r,appOrigin:n.appOrigin,walletOrigin:n.walletOrigin};return iC=c,c}async function CC(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 wC(e,t,n){let r=e.readAuthentication();if(await CC(t,n),r.kind!==`authenticated`||r.walletId!==t)return;let i=TC(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 TC(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 EC(e){if(!DC(e))throw Error(`Wallet move identity is invalid`);return e}function DC(e){return typeof e==`string`&&/^wmove_[A-Za-z0-9_-]{43}$/u.test(e)}function OC(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:EC(t.moveId),destinationRegion:AC(t.destinationRegion),expectedGeneration:jC(t.expectedGeneration)}}function kC(e){let t=M(e,`Wallet placement`);switch(t.state){case`settled`:if(Object.keys(t).length!==4)break;return{state:`settled`,region:AC(t.region),generation:jC(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}=FC(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:MC(e.progress)}}}}throw Error(`Wallet placement response is invalid`)}function AC(e){switch(e){case`US`:case`WEUR`:case`APAC`:case`OC`:return e;default:throw Error(`Wallet region is invalid`)}}function jC(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 MC(e){let t=M(e,`Wallet relocation progress`);if(Object.keys(t).length!==3)throw Error(`Wallet relocation progress fields are invalid`);let n=NC(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 NC(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:jC(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 PC(e,t){let n=M(e,`Wallet move status`);if(n.state===`moving`){let e=kC(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}=FC(n),l=jC(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 FC(e){let t=EC(e.moveId),n=AC(e.sourceRegion),r=AC(e.destinationRegion),i=jC(e.sourceGeneration),a=jC(e.destinationGeneration),o=jC(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 IC(e){return`wallet_move_request:${e}`}async function LC(e){let t=await K.getAppState(IC(e));if(t===void 0)return null;let n=OC(t);if(n.walletId!==e)throw Error(`Stored wallet move identity is invalid`);return n}async function RC(e){await K.setAppState(IC(e.walletId),{walletId:e.walletId,moveId:e.moveId,destinationRegion:e.destinationRegion,expectedGeneration:e.expectedGeneration})}var zC=class extends Error{constructor(e,t){super(`Owner Router request failed: ${t}`),this.code=e,this.name=`WalletHostOwnerRequestTransportError`}};function BC(e){let t=VC(e);return{ownerAuthorization:{authenticateOwnerForLinkingV1:async e=>await UC(t,e)},ownerRequest:{requestOwnerV1:async e=>await WC(t,e)},managementRequest:{request:async e=>await GC(t,e)}}}function VC(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 HC(){return new X(`wallet_unlock_required`,Z.WALLET_UNLOCK_REQUIRED,`authorization`)}async function UC(e,t){let n=e.readWalletAuthenticationState();if(n.kind!==`authenticated`)throw HC();await tn(n.walletId);let r=await KC(e,n.walletId),i=await qC(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(nw(i));let a=YC(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 HC();if(o){if(!s)throw HC();return{...a,exportRootRequirement:`required`,ed25519ExportRootCapability:s}}return{...a,exportRootRequirement:`not_required`}}async function WC(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 HC();let r=await KC(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 qC(e,r,t)}async function GC(e,t){return await qC(e,await KC(e,t.walletId),t)}async function KC(e,t){let n=await e.resolveSelectedWalletAuthority(t);if(n.kind!==`resolved`)throw HC();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 HC();let o=await e.walletSessions.readExactWithOperationCredential({walletId:t,authorityId:a.authorityId,authMethodId:i.walletAuthMethodId});switch(o.kind){case`found`:break;case`missing`:throw HC();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 HC();return o}async function qC(e,t,n){return await JC(e,t.operationCredential.token,n)}async function JC(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 zC(r.code,r.message);return r.value}function YC(e,t){let n=QC(e),r=ew(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);XC(i,t),ZC(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:aw(n.expiresAtMs,`expiresAtMs`)}}function XC(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 ZC(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 QC(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Owner authorization response must be an object`);if(!$C(e))throw Error(`Owner authorization response has unexpected fields`);return e}function $C(e){return Object.keys(e).sort().join(`|`)===`authentication|expiresAtMs|ownerAuthorization|sourceSignerManifest|walletId`}function ew(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Owner authorization response must be an object`);if(!tw(e))throw Error(`Owner authorization response has unexpected fields`);return e}function tw(e){return Object.keys(e).sort().join(`|`)===`kind|proofDigestB64u|source`}function nw(e){let t=rw(e.body);return t?`Owner authorization failed: ${t}`:`Owner authorization failed with HTTP ${e.status}`}function rw(e){return typeof e!=`object`||!e||Array.isArray(e)||!iw(e)||e.ok!==!1||typeof e.code!=`string`?null:typeof e.message==`string`&&e.message.trim()?e.message:null}function iw(e){return Object.keys(e).sort().join(`|`)===`code|message|ok`}function aw(e,t){if(!Number.isSafeInteger(e)||Number(e)<=0)throw Error(`${t} must be a positive safe integer`);return Number(e)}const ow=`/wallet/placement/v1/relocations`;function sw(e){if(e.host.readAuthentication()!==e.authentication)throw Error(`Wallet authentication changed during relocation approval`)}function cw(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 lw(e){sw(e);let t=await e.host.managementRequest.request({walletId:e.request.walletId,method:`POST`,canonicalPath:`${ow}/challenge`,body:e.request});if(sw(e),t.status!==200)throw Error(`Wallet relocation challenge failed (${t.status})`);return cw(t.body,e.request)}async function uw(e){let t=await lw(e);if(t.factor.kind!==`email_otp`)throw Error(`Wallet relocation factor changed`);return{challengeId:t.factor.challengeId,emailHint:t.factor.emailHint}}async function dw(e,t){switch(t.factor.kind){case`passkey`:{let n=await K.resolveSelectedWalletAuthority(e.request.walletId);if(sw(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:uw.bind(null,e)});return{kind:`email_otp`,challengeId:n.challengeId,otpCode:n.otpCode}}default:return fw(t.factor)}}function fw(e){throw Error(`Unsupported wallet relocation factor: ${String(e)}`)}async function pw(e,t){return sw(e),e.host.managementRequest.request({walletId:e.request.walletId,method:`POST`,canonicalPath:ow,body:t})}async function mw(e,t){let n=OC(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:`${ow}/${encodeURIComponent(n.moveId)}?walletId=${encodeURIComponent(n.walletId)}`});if(sw(i),a.status===200)return hw(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 RC(n),sw(i);let o=await pw(i,{walletId:n.walletId,moveId:n.moveId,destinationRegion:n.destinationRegion,expectedGeneration:n.expectedGeneration,sourceProof:null});if(sw(i),o.status===200)return hw(o.body,i);if(o.status===401||o.status===403)return{ok:!1,code:`unauthorized`};if(!gw(o))return{ok:!1,code:`transport_unavailable`};let s=await lw(i),c=await dw(i,s);if(sw(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 pw(i,l)}catch(e){if(!(e instanceof zC)||e.code!==`network_error`)throw e;u=await pw(i,l)}return sw(i),u.status===401||u.status===403?{ok:!1,code:`unauthorized`}:u.status===200?hw(u.body,i):{ok:!1,code:`transport_unavailable`}}async function hw(e,t){let n=t.request,r;try{r=PC(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 wC(t.host,n.walletId,r),t.host.readAuthentication()===t.authentication?{ok:!0,status:r}:{ok:!1,code:`wallet_unlock_required`}}function gw(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 _w(e){return{getLastMoveRequest:LC,move:mw.bind(null,e),get:vw.bind(null,e),getMove:xw.bind(null,e)}}async function vw(e,t){let n=e.readAuthentication(),r=await Sw(e,t,`/wallet/placement/v1?walletId=${encodeURIComponent(t)}`,yw);return r.ok&&await wC(e,t,r.placement),e.readAuthentication()===n?r:{ok:!1,code:`wallet_unlock_required`}}function yw(e){return{ok:!0,placement:kC(e)}}function bw(e,t){return{ok:!0,status:PC(t,e)}}async function xw(e,t,n){let r=e.readAuthentication(),i=await Sw(e,t,`/wallet/placement/v1/relocations/${encodeURIComponent(n)}?walletId=${encodeURIComponent(t)}`,bw.bind(null,n));return i.ok&&await wC(e,t,i.status),e.readAuthentication()===r?i:{ok:!1,code:`wallet_unlock_required`}}async function Sw(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 Cw(e){let t;return()=>(t??=e().catch(e=>{throw t=void 0,e}),t)}function ww(){return{ecdsaSessions:{exportArtifactsByLane:new Map}}}function Tw(e){let t=Cw(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=Cw(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=Cw(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-BE0a14MT.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)},reportTempoBroadcastAccepted:async t=>{let{reportTempoBroadcastAccepted:n}=await import(`./signEvmFamily-BE0a14MT.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)},reportTempoBroadcastRejected:async t=>{let{reportTempoBroadcastRejected:n}=await import(`./signEvmFamily-BE0a14MT.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)},reportTempoFinalized:async t=>{let{reportTempoFinalized:n}=await import(`./signEvmFamily-BE0a14MT.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)},reportTempoDroppedOrReplaced:async t=>{let{reportTempoDroppedOrReplaced:n}=await import(`./signEvmFamily-BE0a14MT.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)},reconcileTempoNonceLane:async t=>{let{reconcileTempoNonceLane:n}=await import(`./signEvmFamily-BE0a14MT.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 Ew(e){return{network:e.network,registration:e.registration,signing:e.signing}}function Dw(e){return dm({indexedDB:K,workerCtx:e})}function Ow(e){let t=ww(),n=Ew(e.config);return Tw({runtimePorts:Dw(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 kw=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 Aw(e){return{kind:`selected`,operation:e}}function jw(e,t){return{kind:`disabled`,operation:e,reason:t}}function Mw(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`?Aw(n):jw(n,`router_ab_normal_signing_disabled`)}case yt.exportKey:return Aw(ut(t.operationKind))}}function Nw(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?Aw(e):jw(e,`ecdsa_target_not_configured`)}}}function Pw(e,t){switch(t.capabilityKind){case bt.vaultAccess:return jw(vt(t.operationKind),`capability_not_deployed`);case bt.nearEd25519MpcSigning:return Mw(e,t);case bt.evmEcdsaMpcSigning:return Nw(e,t)}}function Fw(e,t){let n=Pw(e,t);switch(n.kind){case`selected`:return n.operation;case`disabled`:throw new kw(n)}}function Iw(e){return typeof e==`object`&&!!e&&`kind`in e}function Lw(e,t){return typeof t==`string`?e.networkSlug===t:`chainId`in t?e.chainId===t.chainId:e.kind===t.family}function Rw(e){return typeof e==`string`?e:Iw(e)?B(e):`chainId`in e?`chainId ${e.chainId}`:`family ${e.family}`}function zw(e,t){if(Iw(t))return Mr(t);let n=Ir(e),r=n.filter(e=>Lw(e,t)),i=r[0];if(r.length===1&&i)return i;if(r.length>1)throw Error(`[threshold-ecdsa] ambiguous chain selector "${Rw(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 "${Rw(t)}". Configured chains: ${a||`(none)`}.`)}function Bw(e,t){let n=zw(e,t);if(n.kind!==`tempo`)throw Error(`[threshold-ecdsa] expected a Tempo chain target, resolved ${B(n)}`);return n}function Vw(e,t){let n=zw(e,t);if(n.kind!==`evm`)throw Error(`[threshold-ecdsa] expected an EVM chain target, resolved ${B(n)}`);return n}function Hw(e,t){switch(t.kind){case`ed25519`:Fw(e,{capabilityKind:bt.nearEd25519MpcSigning,operationKind:yt.exportKey});return;case`ecdsa`:Fw(e,{capabilityKind:bt.evmEcdsaMpcSigning,operationKind:_t.exportKey,chainTarget:t.chainTarget});return}}function Uw(e){return{exportKey:Ww.bind(null,e)}}async function Ww(e,t){let n=t.options??{};if(t.kind===`ed25519`){let r={kind:`ed25519`,...await e.currentWallet.nearSubject(t)};Hw(e.configs,r);let i=await e.domain.resolveExactKeyExportLane(r);if(i.kind===`relink_required`)return i;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:zw(e.configs.network.chains,t.chainTarget)};Hw(e.configs,r);let i=await e.domain.resolveExactKeyExportLane(r);if(i.kind===`relink_required`)return i;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 Gw(e,t,n){let r=String(e[t]||``).trim();if(!r)throw Error(`${n} returned missing ${t}`);return r}function Kw(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 qw(e,t){if(!O(e))throw Error(`${t} returned missing walletBinding`);let n=Go(Gw(e,`walletId`,t)),r=kr(Gw(e,`nearAccountId`,t)),i=qo(Gw(e,`nearEd25519SigningKeyId`,t)),a=Gw(e,`rpId`,t),o=m(Gw(e,`credentialIdB64u`,t));if(!o.ok)throw Error(`${t} returned invalid credentialIdB64u`);let s=Kw(e.signerSlot,t);return{walletId:n,nearAccountId:r,nearEd25519SigningKeyId:i,rpId:a,credentialIdB64u:o.value,signerSlot:s}}function Jw(e,t){return qw(O(e.walletBinding)?e.walletBinding:e,t)}function Yw(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 Xw(e){return{success:!1,error:e}}function Zw(e,t){return globalThis.fetch(e,t)}function Qw(e){try{e.onEvent?.(xs({flowId:e.flowId,...e.event}))}catch{}}function $w(e){let t=String(e.configs.network.relayer?.url||``).trim();if(!t)throw Error(`missing_relayer_url`);return t}function eT(e){let t=i(e.signingEngine.getRpId());if(!t.ok)throw Error(`missing_rp_id`);return t.value}function tT(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 nT(e,t){let n=String(e[t]||``).trim();if(!n)throw Error(`sync-account ${t} is required`);return n}function rT(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 iT(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 aT(e){return e.kind===`sign`&&e.keyFamily===`ecdsa_secp256k1`}function oT(e){for(let t of e)if(aT(t))return t;return null}function sT(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=nT(n,`walletId`);if(r!==String(t.walletId))throw Error(`sync-account ECDSA custody signer changed the wallet identity`);i.push({chainTarget:rT(e.chainTarget),walletKey:{walletId:r,keyHandle:nT(n,`keyHandle`),ecdsaThresholdKeyId:nT(n,`ecdsaThresholdKeyId`),signingRootId:nT(n,`signingRootId`),signingRootVersion:nT(n,`signingRootVersion`),relayerKeyId:nT(n,`relayerKeyId`),contextBinding32B64u:nT(n,`contextBinding32B64u`),derivationClientSharePublicKey33B64u:nT(n,`derivationClientSharePublicKey33B64u`),participantIds:iT(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=oT(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 cT(e){try{return await e.json()}catch{return null}}async function lT(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 cT(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)?Jw(n,`sync-account/options`):null,o=tT(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 uT(e,t){let n=t?Go(String(t)):null,r=$w(e),i=eT(e),a=await lT({relayerUrl:r,rpId:i,walletId:n?String(n):null,fetch:Zw});return Object.freeze({walletId:n?String(n):null,relayerUrl:r,rpId:i,syncOptions:a})}function dT(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 fT(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 pT(e,t){if(typeof e!=`string`||e.trim()!==e||!e)return null;let n=t(e);return n.ok?n.value:null}function mT(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=pT(t.walletId,o),i=pT(t.authorityId,r),a=pT(t.walletAuthMethodId,c),s=pT(t.mintId,ft),l=pT(t.authorizationId,gt),u=pT(t.walletSessionId,pt),d=pT(t.quotaId,dt);return!n||!i||!a||!s||!l||!u||!d||e.expectedWalletId!==null&&n!==e.expectedWalletId?null:{walletId:n,walletAuthMethodId:a}}async function hT(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 cT(t);if(!t.ok||!E(n)||n.ok!==!0||n.verified!==!0){let r=mT({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=Jw(n,`sync-account/verify`);e.onRelayVerifySucceeded?.(r);let i=bn(n);return{kind:`verified`,response:{verifiedBinding:r,parsedYaoResponse:i,ecdsaContinuity:sT(n,i)}}}function gT(e){throw Error(`Unexpected recovered capability ownership: ${String(e)}`)}async function _T(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 gT(t)}}function vT(e){e.optionsBinding&&Yw(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 yT(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 bT(e){return await e.load({nearAccountId:String(e.parsed.nearAccountId),signerSlot:e.parsed.signerSlot,expectedRegisteredPublicKeyB64u:P(Uint8Array.from(e.parsed.capability.registeredPublicKey))})}function xT(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 ST(e){return`sealLocalMaterial`in e&&typeof e.sealLocalMaterial==`function`}async function CT(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=yT(e.parsed),l=await Xt({loadCachedMaterial:bT.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=xT({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(!ST(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 wT(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 TT(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 ET(e){let t=TT(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:wT(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 DT(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 lT({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=fT(r,e.expectedCredentialIdB64u);e.onPromptStarted?.();let a=e.credential?e.credential:await e.collectCredential({challengeB64u:r.challengeB64u,credentialIds:i});e.onPromptSucceeded?.();let o=dT(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 hT({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{vT({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:CT.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 ET({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 OT(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 kT(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 AT(e){await q.writeExactWithOperationCredential({record:e.walletSession,operationCredential:e.operationCredential})}async function jT(e,t,n){await OT({context:e,parsed:t,credential:n})}function MT(e){return{id:e,type:`public-key`,transports:[]}}async function NT(e,t){return await e.signingSurface.getAuthenticationCredentialsSerialized({subjectId:e.requestedWalletId||`account-sync`,challengeB64u:t.challengeB64u,allowCredentials:t.credentialIds.map(MT),includeSecondPrfOutput:!1})}function PT(e){Qw({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 FT(e){Qw({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 IT(e){Qw({onEvent:e.onEvent,flowId:e.flowId,event:{phase:ws.STEP_03_RELAY_VERIFY_STARTED,status:`started`,...e.requestedWalletId?{accountId:e.requestedWalletId}:{}}})}function LT(e,t){Qw({onEvent:e.onEvent,flowId:e.flowId,event:{phase:ws.STEP_03_RELAY_VERIFY_SUCCEEDED,status:`succeeded`,accountId:String(t.walletId)}})}async function RT(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??$w(e),l=i?.rpId??eT(e);if(i&&($w(e)!==t||eT(e)!==l))throw Error(`prepared account-sync challenge runtime binding changed`);Qw({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 DT({walletId:o?String(o):null,relayerUrl:t,rpId:l,fetch:Zw,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:NT.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:jT.bind(void 0,e),onPromptStarted:PT.bind(void 0,u),onPromptSucceeded:FT.bind(void 0,u),onRelayVerifyStarted:IT.bind(void 0,u),onRelayVerifySucceeded:LT.bind(void 0,u)});if(d.kind===`already_committed`){if(n.kind===`initial`)return await RT(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 AT(f.parsed),await kT(e.signingEngine,f.parsed),Qw({onEvent:r?.onEvent,flowId:s,event:{phase:ws.STEP_04_AUTHENTICATOR_SAVED,status:`succeeded`,accountId:String(p.walletId)}}),Qw({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`},Qw({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 _T({context:e,ownership:c})}catch(e){let t=L(e)||`recovered capability cleanup failed`;n=`${n}; ${t}`}return Qw({onEvent:r?.onEvent,flowId:s,event:{phase:ws.FAILED,status:`failed`,...o?{accountId:String(o)}:{},error:{message:n}}}),Xw(n)}}async function zT(e,t,n){return await RT(e,t,{kind:`initial`},n)}async function BT(e,t,n,r){return await RT(e,t.walletId,{kind:`initial`},r,t,n)}function VT(e,t,n){try{e?.(Ss({...n,flowId:`signing:near:${String(t)}:${n.phase}`,accountId:String(t)}))}catch{}}function HT(e){let t=Pr(kr(e.nearAccountId));return{walletSession:Lr(e.walletSession),nearAccount:t}}function UT(e){let t=e.transaction,n=String(t.signerId||``).trim();if(!n)throw Error(`Signed transaction is missing signerId`);return n}function WT(e){let t=UT(e.signedTransaction);if(t!==String(e.nearAccountId))throw Error(`Signed transaction signerId ${t} does not match NEAR account ${String(e.nearAccountId)}`)}function GT(e){if(!(e.serverDispatch||e.nonceLease))throw Error(`near.sendTransaction requires an SDK-produced signed transaction with nonce readiness`)}function KT(e){let t=String(e||``).trim();if(!t)throw Error(`NEAR broadcast response is missing transaction hash`);return t}function qT(e){return!e.signedTransaction.serverDispatch&&!e.signedTransaction.nonceLease&&e.signingResult.nonceLease&&(e.signedTransaction.nonceLease=e.signingResult.nonceLease),e.signedTransaction}async function JT(){if(typeof window<`u`&&typeof window.requestAnimationFrame==`function`){await new Promise(e=>{window.requestAnimationFrame(()=>e())});return}await Promise.resolve()}async function YT(e){return QT({context:e.context,nearAccountId:e.nearAccountId,walletSession:e.walletSession,transactionInput:e.transactionInput,options:e.options,confirmationConfigOverride:e.options.confirmationConfig})}async function XT(e){try{return $T({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 ZT({context:e,nearAccountId:t,walletSession:n,signedTransaction:r,options:i}){let a=HT({nearAccountId:t,walletSession:n}).nearAccount.accountId;WT({signedTransaction:r,nearAccountId:a}),GT(r);let o=r.nonceLease;VT(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=KT(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})),VT(i?.onEvent,a,{phase:W.STEP_12_BROADCAST_ACCEPTED,status:`succeeded`,message:`Transaction ${c} sent successfully`,interaction:{kind:`none`,overlay:`none`},data:{txId:c}}),VT(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=KT(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}:{}})),VT(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}}:{}}),VT(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 VT(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 QT({context:e,nearAccountId:t,walletSession:n,transactionInput:r,options:i,confirmationConfigOverride:a}){try{let o=await $T({context:e,nearAccountId:t,walletSession:n,transactionInput:r,options:i,confirmationConfigOverride:a});return await ZT({context:e,nearAccountId:t,walletSession:n,signedTransaction:qT({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 VT(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 $T({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{VT(o,t,{phase:W.STEP_01_STARTED,status:`started`,message:`Starting ${r.actions[0].type} action`,interaction:{kind:`none`,overlay:`none`}}),await eE(t,[r],{onEvent:o,onError:s,waitUntil:c}),await JT();let i={receiverId:r.receiverId,actions:r.actions.map(e=>ll(e))},d=await e.signingEngine.signNear({chain:`near`,kind:`transactionWithActions`,args:{commandSubject:HT({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),VT(o,t,{phase:W.FAILED,status:`failed`,message:`Action failed: ${r}`,interaction:{kind:`none`,overlay:`hide`},error:{message:r}}),n}}async function eE(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(VT(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 tE(){if(typeof window<`u`&&typeof window.requestAnimationFrame==`function`){await new Promise(rE);return}await Promise.resolve()}async function nE(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)};VT(r?.onEvent,i,{phase:W.STEP_01_STARTED,status:`started`,message:`Preparing delegate action inputs`,interaction:{kind:`none`,overlay:`none`}}),await tE();try{let n=await t.signingEngine.signNear({chain:`near`,kind:`delegateAction`,args:{commandSubject:HT({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 VT(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),VT(r?.onEvent,i,{phase:W.FAILED,status:`failed`,message:t.message,interaction:{kind:`none`,overlay:`hide`},error:{message:t.message}}),t}}function rE(e){window.requestAnimationFrame(e)}async function iE(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(VT(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);VT(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:HT({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 VT(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 VT(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 aE(e){let t=new oE(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 oE=class{constructor(e){this.getContext=e}async signAndSendTransaction(e){let t=e.nearAccount.accountId,n={receiverId:e.receiverId,actions:e.actions};try{return await YT({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 XT({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 ZT({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 nE({context:this.getContext(),nearAccountId:t,walletSession:e.walletSession,delegate:n,options:r})}async signMessage(e){let t=e.nearAccount.accountId,n=await iE({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 sE(e){let t=new cE(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 cE=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 lE=/^0x[0-9a-fA-F]{40}$/,uE=`0xfeec000000000000000000000000000000000000`,dE=[{type:`function`,name:`setUserToken`,inputs:[{name:`token`,type:`address`}]}];function fE(e,t){let n=String(t||``).trim();if(!lE.test(n))throw Error(`[tempo] invalid ${e}: expected 20-byte 0x-prefixed address`);return n.toLowerCase()}function pE(e){return`0xe7897444${fE(`fee token address`,e).slice(2).toLowerCase().padStart(64,`0`)}`}function mE(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=fE(`fee token address`,`0x${i.slice(24)}`);return{...t,tx:{...t.tx,to:uE,value:0n,data:pE(a)}}}function hE(e){return`0xed498fa8${fE(`user address`,e).slice(2).toLowerCase().padStart(64,`0`)}`}function gE(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 _E(e){let t=fE(`fee token address`,e.token);return{to:fE(`fee manager contract address`,e.feeManager??`0xfeec000000000000000000000000000000000000`),value:0n,input:pE(t),abi:dE}}function vE(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 yE(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 bE(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 xE(e){let t=fE(`account address`,e.account);return gE(await bE({rpcUrl:e.rpcUrl,to:uE,data:hE(t),...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs}}))}async function SE(e){let t=fE(`fee token address`,e.feeToken),n={rpcUrl:e.rpcUrl,to:t,...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs}},r=vE(await bE({...n,data:`0xe5a6b10f`}),`currency()`);return r===`USD`?yE(await bE({...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 CE(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=_E({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 wE(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 TE(){return wf()||(typeof window<`u`?window.location.origin:``)}function EE(e){e.setWorkerBaseOrigin(TE()),typeof window<`u`&&$e(()=>{let t=TE();t!==e.getWorkerBaseOrigin()&&e.setWorkerBaseOrigin(t)}),e.userPreferencesManager.initFromIndexedDB().catch(()=>void 0)}async function DE(e){let t=Js(),n=new Uint8Array(e.factorSecret.slice(0));try{return await kE(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:AE(t)})})}finally{n.fill(0),t&&Hs(t),t=null}}async function OE(e){let t=Js();try{return await kE(e,t,t=>e.worker.rotateRecoverySet({recoveryCodesJson:AE(t)}))}finally{t&&Hs(t),t=null}}async function kE(e,t,n){let r=await pf({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 jE(t.codeBytes,i.manifestKekWraps),o=await ff({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 AE(e){return JSON.stringify(e.map(e=>({codeBytesB64u:P(e)})))}async function jE(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 ME(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&&LE(i))try{return{kind:`active`,envelope:PE(i).envelope}}catch{return{kind:`corrupt`,message:`custody envelope response was incomplete`}}let a=IE(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 NE(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=FE(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:IE(i,`custody envelope upgrade response`).message||`custody envelope upgrade rejected (HTTP ${r.status})`}}function PE(e){let t=zE(e,[`ok`,`envelope`,`storeVersion`],`custody envelope response`);if(HE(t,`ok`)!==!0)throw Error(`custody envelope response did not succeed`);let n=UE(t,`storeVersion`);if(!n)throw Error(`custody envelope response is missing its store version`);return{envelope:Xo(HE(t,`envelope`),`custody envelope response.envelope`),storeVersion:n}}function FE(e){let t=RE(e,`custody envelope upgrade response`),n=HE(t,`upgraded`);if(n===!0){if(zE(t,[`ok`,`upgraded`,`envelopeRevision`],`custody envelope upgrade response`),HE(t,`ok`)!==!0)throw Error(`custody envelope upgrade response did not succeed`);return{kind:`upgraded`,envelopeRevision:HE(t,`envelopeRevision`)}}if(n===!1){if(zE(t,[`ok`,`upgraded`],`custody envelope upgrade response`),HE(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 IE(e,t){try{let n=RE(e,t),r=Object.keys(n);if(!r.includes(`ok`)||!VE(r,[`ok`,`code`,`message`]))throw Error(`${t} has an unexpected response shape`);if(HE(n,`ok`)!==!1)throw Error(`${t} is not a failure`);return{code:WE(n,`code`),message:WE(n,`message`)}}catch{return{code:null,message:null}}}function LE(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 RE(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 zE(e,t,n){let r=RE(e,n),i=Object.keys(r);if(i.length!==t.length||!BE(i,t))throw Error(`${n} has an unexpected response shape`);return r}function BE(e,t){for(let n of t)if(!e.includes(n))return!1;return!0}function VE(e,t){for(let n of e)if(!t.includes(n))return!1;return!0}function HE(e,t){let n=Object.getOwnPropertyDescriptor(e,t);if(!n||!(`value`in n))throw Error(`response field ${t} is missing`);return n.value}function UE(e,t){let n=HE(e,t);return typeof n==`string`?n.trim():``}function WE(e,t){let n=Object.getOwnPropertyDescriptor(e,t);return!n||!(`value`in n)?null:(typeof n.value==`string`?n.value.trim():``)||null}function GE(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 KE(e){let t=e.flatMap(e=>{let t=String(e.credentialId||``).trim();return t?[{id:t,type:`public-key`,transports:GE(e.transports)}]:[]});if(t.length===0)throw Error(`Wallet recovery-code rotation requires an active passkey`);return t}async function qE(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 JE(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=KE(await K.listProfileAuthenticators(e.walletId)),i=await qE({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 ME({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 DE({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 YE(e){let t=e.context.signingEngine.getSignerWorkerContext(),n=pr({routeFamily:`login`,operation:Hr});return await OE({relayUrl:e.relayUrl,walletId:e.walletId,factorProof:async({operation:t,payload:n})=>{let r=typeof window>`u`?``:window.location.origin,i=await mf({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 XE(e){switch(e.authorization.kind){case`existing_passkey`:return await JE(e);case`email_otp`:return await YE({...e,authorization:e.authorization})}}function ZE(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 QE(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=ZE(e.state);t&&u(t)}),a=setTimeout(()=>u({kind:`timed_out`}),r),e.getNearAccountState({walletId:n}).then(e=>{let t=ZE(e);t&&u(t)}).catch(()=>{})})}finally{a&&clearTimeout(a),o&&t.signal&&t.signal.removeEventListener(`abort`,o);try{i?.()}catch{}}}function $E(e){return typeof e==`string`?Lr({walletId:e}):e}function eD(e){return typeof e==`string`?Pr(e):e}function tD(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?$E(e):Lr({walletId:(await t()).authentication.walletId}),nearSubject:async e=>{if(e.walletSession&&e.nearAccount)return{walletSession:$E(e.walletSession),nearAccount:eD(e.nearAccount)};let n=await t(),r=n.authentication.walletId,i=e.walletSession?$E(e.walletSession):Lr({walletId:r});if(e.nearAccount)return{walletSession:i,nearAccount:eD(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 nD(e){let t=new rD(e.linkedDeviceManagement);return{startLinking:e.startLinking,cancelLinking:e.cancelLinking,approveLinking:e.approveLinking,list:t.list.bind(t),remove:t.remove.bind(t)}}var rD=class{constructor(e){this.management=e}async list(e){let t=Yr({kind:`linked_device_list_request_v1`,walletId:iD(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:iD(e.walletId),walletAuthMethodId:aD(e.walletAuthMethodId)}))}};function iD(e){let t=o(e);if(!t.ok)throw Error(t.error.message);return t.value}function aD(e){let t=c(e);if(!t.ok)throw Error(t.error.message);return t.value}function oD(e){return/UNKNOWN_ACCOUNT|unknown\s+account|account\b[^\n]*\bdoes not exist/iu.test(L(e))}function sD(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 cD(e){setTimeout(e,150)}async function lD(e,t){let n=kr(t);try{return await e.viewAccount(n),!0}catch(e){if(oD(e))return!1;if(!sD(e))throw e}await new Promise(cD);try{return await e.viewAccount(n),!0}catch(e){if(oD(e))return!1;throw e}}function uD(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 dD(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 fD(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 pD=e=>Array.isArray(e)?e:Array.from(e),mD=e=>{let t=e.delegateAction,n=e.signature;return{delegateAction:{...t,publicKey:{...t.publicKey,keyData:pD(t.publicKey.keyData)}},signature:{...n,signatureData:pD(n.signatureData)}}};async function hD(e){let{url:t,payload:n,auth:r,signal:i,options:a}=e,o={...n,signedDelegate:mD(n.signedDelegate)};VT(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:uD(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),gD(a,t.message),await a?.afterCall?.(!1),t}if(!s.ok){let e=null;try{e=await s.json()}catch{}let t=dD(e,s.status);return a?.onError?.(Error(t.error)),gD(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),gD(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)VT(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)),gD(a,e),await a?.afterCall?.(!1)}return l}function gD(e,t){VT(e?.onEvent,`delegate`,{phase:W.FAILED,status:`failed`,message:t,interaction:{kind:`none`,overlay:`hide`},error:{message:t}})}function _D(e){let t=new yD(e);return{accountExists:lD.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 vD(){}var yD=class{constructor(e){this.deps=e}async signAndSendTransaction(e){let t={...e,...await this.deps.currentWallet.nearSubject(e),options:e.options??{}};return Fw(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 Fw(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 Fw(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 Fw(this.deps.configs,{capabilityKind:bt.nearEd25519MpcSigning,operationKind:yt.signNep413Message}),await this.deps.commands.signMessage(t)}async sendDelegateAction(e){return await hD({url:`${e.relayerUrl.replace(/\/+$/,``)}${(this.deps.configs.network.relayer?.routes?.delegateAction||`/signed-delegate`).replace(/^\/?/,`/`)}`,payload:{hash:e.hash,signedDelegate:e.signedDelegate},auth:fD(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:vD},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 bD(e){let t=new xD(e);return{signAndSendTransaction:e.signAndSendTransaction,advanced:e.advanced,signTransaction:t.signTransaction.bind(t)}}var xD=class{constructor(e){this.deps=e}async signTransaction(e){let t=Vw(this.deps.configs.network.chains,e.chainTarget),n=await this.deps.currentWallet.walletSession(e.walletSession);Fw(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 SD(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 CD=5e3;function wD(e,t,n){try{e?.(Ss({...n,flowId:`signing:evm_family:${t}:${n.phase}`,accountId:t}))}catch{}}function TD(){let e=Error(`Request cancelled`);return e.code=`cancelled`,e}function ED(e){let t=Error(e);return t.code=`timeout`,t}async function DD(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(ED(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 OD(e){let t=Math.floor(Number(e));return!Number.isFinite(t)||t<=0?CD:Math.min(CD,Math.max(250,t))}function kD(e){if(typeof e==`function`&&e())throw TD()}function AD(e){return String(e||``).trim().toLowerCase().replace(/[\s-]+/g,`_`)}function jD(e,t){return!e||typeof e!=`object`?!1:AD(e.code)===AD(t)}function MD(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 ND(e){let t=AD(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 PD(e){return!e||typeof e!=`object`||!jD(e,`tx_dropped_or_replaced`)?null:AD(e.reason)===`replaced`?`replaced`:`dropped`}function FD(e){let t=String(e||``).trim().toLowerCase();return/^0x[0-9a-f]*$/.test(t)?t:null}function ID(e){return String(e??``).trim()||null}function LD(e){let t=ID(e);return t?t.toLowerCase():null}function RD(e){throw Error(`[Tempo capability] unhandled finalized payload branch: ${String(e)}`)}function zD(e,t){let n=FD(e);if(!n)throw Error(`[Tempo capability] invalid ${t} payload input`);return n}function BD(e){return{kind:`evm_eip1559`,to:e.tx.to??null,input:zD(e.tx.data||`0x`,`EVM`)}}function VD(e){return{to:e.to,input:zD(e.input||`0x`,`Tempo call`)}}function HD(e){let[t,...n]=e.tx.calls;if(!t)throw Error(`[Tempo capability] Tempo transaction has no calls`);return{kind:`tempo_eip2718_calls`,calls:[VD(t),...n.map(VD)]}}function UD(e){switch(e.chain){case`evm`:return BD(e);case`tempo`:return HD(e);default:return RD(e)}}function WD(e){return e.input??e.data??null}function GD(e){return Array.isArray(e.calls)?{kind:`tempo_eip2718_calls`,calls:e.calls.map(e=>({to:e?.to??null,input:e?WD(e):null,data:e?.data??null}))}:{kind:`evm_eip1559`,to:e.to??null,input:e.input??null}}function KD(e){return LD(e.observed.to)===LD(e.expected.to)&&FD(e.observed.input)===FD(e.expected.input)}function qD(e){return LD(e.observed.to)===LD(e.expected.to)&&FD(WD(e.observed))===FD(e.expected.input)}function JD(e){return e.observed.calls.length===e.expected.calls.length?e.expected.calls.every((t,n)=>{let r=e.observed.calls[n];return r?qD({expected:t,observed:r}):!1}):!1}function YD(e){switch(e.expected.kind){case`evm_eip1559`:return e.observed.kind===`evm_eip1559`?KD({expected:e.expected,observed:e.observed}):!1;case`tempo_eip2718_calls`:return e.observed.kind===`tempo_eip2718_calls`?JD({expected:e.expected,observed:e.observed}):!1;default:return RD(e.expected)}}function XD(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 ZD(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 QD(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=GD(t);return YD({expected:e.expected,observed:n})?{kind:`matched`,expected:e.expected,observed:n}:{kind:`mismatch`,expected:e.expected,observed:n}}async function $D(e){if(!e.broadcastAccepted){await e.lifecycle.reportBroadcastRejected({walletSession:e.walletSession,signedResult:e.signedResult,error:e.error,options:{onEvent:e.onEvent}});return}let t=PD(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(jD(t,`nonce_lane_blocked`)||ND(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 eO(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 tO(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 nO(e){return e.payloadExpectation??UD(e.request)}async function rO(e){let t=e.input.options?.onEvent,n=z(e.input.walletSession.walletId);kD(e.input.options?.shouldAbort);let r=null,i,a=!1,o=!1,s=e=>wD(t,n,e),c=e=>{if(e.phase!==W.STEP_15_COMPLETED)try{t?.(e)}catch{}};try{let n=e.input.request,l=XD({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}),kD(e.input.options?.shouldAbort),s({phase:W.STEP_12_BROADCAST_STARTED,status:`running`,interaction:{kind:`none`,overlay:`none`}});let d=tO(r.rawTxHex);e.lifecycle.onBroadcastStarted({walletSession:e.input.walletSession,signedResult:r}),i=eO(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(TD())},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)),_=ZD(r),v=await DD({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(ED(`Transaction finalization watchdog timed out`))}}),y=AD(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=nO(e.input),x=await QD({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:MD(s)})}catch{}throw!o&&r&&await DD({promise:$D({lifecycle:e.lifecycle,walletSession:e.input.walletSession,signedResult:r,error:s,broadcastAccepted:a,...i?{txHash:i}:{},...t?{onEvent:t}:{}}),timeoutMs:OD(e.input.finalization?.timeoutMs),message:`Timed out during best-effort nonce cleanup after EVM-family signing failure`}).catch(()=>null),s}}function iO(e,t){return XD({chains:e,chainTarget:t})}async function aO(e,t){return await xE({rpcUrl:iO(e,t.chainTarget),account:fE(`account address`,t.account),...t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs}})}async function oO(e,t){return await SE({rpcUrl:iO(e,t.chainTarget),feeToken:fE(`fee token address`,t.feeToken),...t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs}})}async function sO(e){let t=await xE(e);if(t?.toLowerCase()!==e.feeToken.toLowerCase())throw Error(`[Tempo capability] fee-token preference mismatch: expected ${e.feeToken}, received ${t??`unset`}`)}async function cO(e,t){let n=iO(e.chains,t.chainTarget),r=fE(`account address`,t.account),i=fE(`fee token address`,t.feeToken),a=await SE({rpcUrl:n,feeToken:i});if(a.kind===`invalid`)throw Error(`[Tempo capability] invalid fee token: ${a.reason}`);let o=CE({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:sO.bind(null,{rpcUrl:n,account:r,feeToken:i})})}function lO(e){let t=new uO(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:aO.bind(null,e.configs.network.chains),validateFeeToken:oO.bind(null,e.configs.network.chains),setFeeToken:cO.bind(null,{chains:e.configs.network.chains,execute:a})},evm:bD({...e,advanced:r,signAndSendTransaction:a})}}var uO=class{constructor(e){this.deps=e}async signEvmFamily(e){let t=zw(this.deps.configs.network.chains,e.chainTarget),n=await this.deps.currentWallet.walletSession(e.walletSession);return Fw(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:Bw(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=zw(this.deps.configs.network.chains,e.chainTarget),n=await this.deps.currentWallet.walletSession(e.walletSession);return await rO({lifecycle:{...this.deps.commands,signEvmFamily:this.signEvmFamily.bind(this)},chains:this.deps.configs.network.chains,input:{...e,chainTarget:t,walletSession:n,request:SD(e.request,t)}})}};function dO(e){let t=e.auth,n=nD(e.devices),r=tD({getWalletSession:t.getSession}),i={createNearCommands:e.createNearCommands,createEvmFamilyCommands:e.createEvmFamilyCommands,nearClient:e.nearClient,configs:e.configs,currentWallet:r},a=_D({...i,commands:e.createNearCommands({kind:`ordinary`})}),o=e.createEvmFamilyCommands({kind:`ordinary`}),s=lO({...i,commands:o});return{preferences:e.preferences,auth:t,registration:{getNearAccountState:e.registration.getNearAccountState,onNearAccountChange:e.registration.onNearAccountChange,waitForNearAccount:QE.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:Uw({configs:e.configs,currentWallet:r,domain:e.keys}),near:a,tempo:s.tempo,evm:s.evm}}var fO=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 pO(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 mO(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 hO(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 _O(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 gO(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 _O(e,t){if(!e.ok)throw Error(`${t}: ${e.message}`);return e.value}async function vO(e){let t=await Us({reservationId:Ws(e.reservationId),keySetId:e.entry.keySetId});return await hO({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 yO(e){return await hO({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 bO(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=_O(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 xO(e){let t=_O(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=_O(To(n.value),`Router Ed25519 recovery result is invalid`);return JSON.stringify(r)}async function SO(e){let t=_O(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=_O(vo(n.value),`Router Ed25519 recovery activation is invalid`);if(!gO(r.active_capability_binding,e.request.replacement_capability_binding)||!gO(r.retired_capability_binding,e.request.active_capability_binding)||!gO(r.public_receipt.transcript,t.public_receipt.transcript)||!gO(r.public_receipt.registered_public_key,t.public_receipt.registered_public_key)||!gO(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 CO=[250,500,1e3];function wO(e){return new Promise(t=>setTimeout(t,e))}async function TO(e){let t=e.wait??wO,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=CO[Math.min(i,CO.length-1)];await t(o),r+=o}}function EO(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 DO(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 OO(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 kO(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!==EO(t.ethereum_address20_b64u))throw Error(`wallet recovery ECDSA custody public facts changed the capability`)}function AO(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 jO(e){let t=co(e.entry.recoveryBasis.publicCapability),n=po(e.entry.recoveryBasis.activationReceipt);DO({activationReceipt:n,publicCapability:t,serverGeneration:String(e.entry.recoveryBasis.serverGeneration)});let r=Ys(e.entry.recoveryBasis.possessionChallenge);OO({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`);kO({publicFacts:e.publicFacts,publicCapability:t});let a=await Ru({workerCtx:e.workerCtx,challenge:r,stateBlob:AO(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 MO(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 NO(e){return Uint8Array.from(e).buffer}function PO(e){e.kind===`reseal_replacement_factor`&&new Uint8Array(e.factorSecret).fill(0)}function FO(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 IO(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 LO(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 RO(e){let t=[],n=[],r=null;for(let[i,a]of e.prepared.keyManifest.entries.entries()){let o=null,s=null;try{let c=NO(e.recoveryCodeBytes);o=c;let l=MO({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 vO({reservationId:e.prepared.reservationId,entry:a}),o=await bO({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=>xO({executeRequestJson:e,transport:n}),activateRouterRecovery:e=>SO({request:i,protocolResultJson:e,transport:n})});if(!s.localMaterial)throw Error(`wallet recovery produced no NEAR local material`);r=LO({current:r,candidate:s.recoveryReplacementEnvelope}),t.push({entry:a,metadata:mO({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=>(IO({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:FO(a.recoveryBasis.publicCapability.public_identity.ethereum_address20_b64u),relayerShareRetryCounter:a.recoveryBasis.publicCapability.public_identity.server_share_retry_counter}))}),i=await jO({entry:a,walletId:e.walletId,reservationId:e.prepared.reservationId,replacementId:e.replacementFactor.replacementId,readyStateBlobB64u:t.readyStateBlobB64u,publicFacts:t.publicFacts,workerCtx:e.workerCtx});r=LO({current:r,candidate:t.recoveryReplacementEnvelope}),n.push({entry:a,activation:i,readyStateBlobB64u:t.readyStateBlobB64u,publicFacts:t.publicFacts});break}}}finally{s&&PO(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 zO(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<1)throw Error(`${t} must be a positive integer`);return e}function BO(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 VO=[`capability`,`kind`,`nearAccountId`,`nearEd25519SigningKeyId`,`participantIds`,`quotaId`,`routerAbNormalSigning`,`runtimePolicyScope`,`signerSlot`,`signingWorkerId`,`thresholdExpiresAtMs`,`thresholdSessionId`,`walletId`,`walletSessionId`];function HO(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 UO(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 WO(e,t){let n=await t.readExactEd25519SealedSession(wd({authMethod:`passkey`,materialActivation:e.materialActivation}));return n&&(n.curve!==`ed25519`||!UO(n,e)||!b(n.ed25519Restore.materialActivation,e.materialActivation))||!n||n.expiresAtMs<=t.nowMs()||n.remainingUses<1?{kind:`unavailable`}:{kind:`ready`,record:n}}async function GO(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 KO(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 qO(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 JO(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 YO(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 XO({record:e.record,authorization:e.authorization,expectedAuthorityRef:e.expectedAuthorityRef,expectedThresholdSessionId:e.expectedThresholdSessionId,response:i})}}async function YO(e){try{return await e.json()}catch{return null}}async function XO(e){let t=e.record,n=e.response;if(HO(n,VO),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=zO(n.signerSlot,`response.signerSlot`),c=j(n.thresholdSessionId,`response.thresholdSessionId`),l=j(n.signingWorkerId,`response.signingWorkerId`),u=zO(n.thresholdExpiresAtMs,`response.thresholdExpiresAtMs`),d=BO(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 ZO(e,t){let n=await WO(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 GO({walletId:r.value,rpId:n.record.ed25519Restore.rpId,credentialIdB64u:i,expectedAuthorityRef:a,runtime:t});if(!s)return{kind:`capability_recovery_required`};let c=await KO({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 JO({request:qO(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 QO(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 $O(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 ek(){}async function tk(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(ek),await e.signingEngine.markSelectedEmailOtpWalletAuthorityUnlocked({walletId:t.walletId,walletAuthMethodId:t.walletAuthMethodId}),e.signingEngine.setWalletAuthenticated({kind:`authenticated`,walletId:t.walletId,authMethod:`email_otp`});return}}}function nk(e){return{laneSelection:e.laneSelection,sessionLifecycle:e.sessionLifecycle,ecdsa:{...e.ecdsa,theme:e.getTheme()},ed25519Yao:{...e.ed25519Yao,theme:e.getTheme()}}}async function rk(e,t){let{exportKeypairWithUI:n}=await import(`./exportKeypairOperation-Bql0I-8U.js`);return await n(nk(e),t)}async function ik(e,t){let{resolveExactKeyExportLane:n}=await import(`./exportKeypairOperation-Bql0I-8U.js`);return await n(nk(e),t)}async function ak(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 ok(e,t){return await e.touchIdPrompt.getAuthenticationCredentialsSerializedForChallengeB64u({subjectId:t.subjectId,challengeB64u:t.challengeB64u,allowCredentials:t.allowCredentials,includeSecondPrfOutput:t.includeSecondPrfOutput??!1})}function sk(e){e instanceof Uint8Array&&e.fill(0)}function ck(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} returned invalid JSON`);return e}function lk(e,t){return j(e,t)}function uk(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}function dk(e){if(!e||typeof e.requestWorkerOperation!=`function`)throw Error(`Email OTP secret-bearing operations require the dedicated emailOtp worker`);return e}function fk(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 pk(e){return e.routeFamily===`registration`?pr({routeFamily:`registration`,operation:Rr}):pr({routeFamily:`login`,operation:Hr})}function mk(e){let t=ck(e,`Email OTP registration ECDSA handle`),n=lk(t.kind,`emailOtpSessionHandle.handle.kind`);if(n!==`email_otp_worker_session_handle_v1`)throw Error(`Unsupported Email OTP worker handle kind: ${n}`);let r=lk(t.action,`emailOtpSessionHandle.handle.action`);if(r!==`wallet_registration_ecdsa_prepare`)throw Error(`Unsupported Email OTP worker handle action: ${r}`);if(lk(t.operation,`emailOtpSessionHandle.handle.operation`)!==`registration`)throw Error(`Email OTP registration ECDSA handle requires registration operation`);if(lk(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:lk(t.sessionId,`emailOtpSessionHandle.handle.sessionId`),walletId:lk(t.walletId,`emailOtpSessionHandle.handle.walletId`),evmFamilySigningKeySlotId:lk(t.evmFamilySigningKeySlotId,`emailOtpSessionHandle.handle.evmFamilySigningKeySlotId`),authSubjectId:lk(t.authSubjectId,`emailOtpSessionHandle.handle.authSubjectId`),action:`wallet_registration_ecdsa_prepare`,operation:`registration`,keyScope:`evm-family`,chainTarget:hk(t.chainTarget)}}function hk(e){let t=e&&typeof e==`object`?e:null;if(!t)throw Error(`Email OTP registration ECDSA handle requires chainTarget`);return Mr(t)}function gk(e){let t=ck(e,`Email OTP registration ECDSA handle result`),n=lk(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(mk(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 _k(e){let t=dk(e.workerCtx),n=null;try{n=e.clientSecret32?fk(e.clientSecret32,`clientSecret32`):null;let r=await t.requestWorkerOperation({kind:`emailOtp`,request:{type:`prepareEmailOtpRegistrationEnrollmentMaterial`,payload:{relayUrl:lk(e.relayUrl,`relayUrl`),walletId:lk(e.walletId,`walletId`),userId:lk(e.userId,`userId`),groupId:lk(e.groupId,`groupId`),routePlan:pk({routeFamily:`registration`}),otpChannel:e.otpChannel||`email_otp`,ecdsaSessionHandle:e.ecdsaSessionHandle,...n?{clientSecret32:uk(n)}:{}}}});return{...r,emailOtpSessionHandle:gk(r.emailOtpSessionHandle),emailOtpEnrollment:r.emailOtpEnrollment}}finally{sk(n)}}function vk(e,t){return cn({freshRouteFamily:t,operation:e.operation})}function yk(e){return{walletSession:e.walletSession,authoritySelector:e.authoritySelector,chainTarget:e.chainTarget,otpCode:e.otpCode,routePlan:vk(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 bk(e,t){return await e.emailOtpSessions.loginWithEcdsaCapabilityInternal(yk(t))}async function xk(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 _k({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 Sk={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`}},Ck=()=>{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`},wk=()=>{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}},Tk=()=>{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}},Ek=()=>{try{let e=navigator.userActivation;return!!(e&&typeof e.isActive==`boolean`&&e.isActive)}catch{return!1}},Dk=()=>{try{return Ek()?!1:Tk()||Ok()||wk()}catch{return!1}},Ok=()=>Ck()===`mobile`;function kk(e){try{return dl(e)===`emailOtp`}catch{return!1}}function Ak(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&&kk(t)&&(a={...a,uiMode:a.uiMode===`none`?`modal`:a.uiMode,behavior:`requireClick`});let o=window.self!==window.top;if(Dk()){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 jk=new Map;function Mk(e){e?.cleanupTimer&&(clearTimeout(e.cleanupTimer),e.cleanupTimer=null)}function Nk(e){let t=String(e.requestId||``).trim();if(!t)return;Mk(jk.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(()=>{jk.get(t)===r&&jk.delete(t)},n),jk.set(t,r)}function Pk(e){let t=String(e||``).trim();if(!t)return;let n=jk.get(t);return jk.delete(t),Mk(n),n?.readiness}function Fk(e){let t=String(e||``).trim();t&&(Mk(jk.get(t)),jk.delete(t))}const Ik={CONFIRMATION_COMPLETE:`confirmation.complete`,PASSKEY_PROMPT_STARTED:`auth.passkey.prompt.started`,PASSKEY_PROMPT_SUCCEEDED:`auth.passkey.prompt.succeeded`};function Lk(e,t,n){bl(e,{requestId:t,step:2,phase:Ik.CONFIRMATION_COMPLETE,status:`failed`,message:n||Al.cancelled})}function Rk(e){return e.type===Y.SIGN_TRANSACTION||e.type===Y.SIGN_NEP413_MESSAGE?dl(e)??`webauthn`:`webauthn`}function zk(e){return!af(e.signingOperationStateKind)||e.signingAuthMode===`emailOtp`}function Bk(e){if(!e)throw Error(`NEAR transaction signing lifecycle callback is required`);return e}function Vk(){}function Hk(){return new Promise(Vk)}function Uk(){return Hk()}function Wk(e){let t=qu(e);return t?.kind===`expired`?{kind:`wallet_session_expired`,failure:t}:Hk()}function Gk(e){return e.then(Uk,Wk)}function Kk(e){return`kind`in e&&e.kind===`wallet_session_expired`}function qk(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 Jk(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 Yk(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 Xk(e){return e?{nearTransactionReadiness:e}:{}}function Zk(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 Qk(e){if(e.signingAuthPlanKind===rf.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 $k(e){throw Error(`Unsupported WebAuthn challenge branch: ${JSON.stringify(e)}`)}function eA(e){e.ctx.operationStepUpPreparation.cancel({requestId:e.requestId,...e.preparation?{handle:e.preparation.handle}:{}})}function tA(e){let t=String(e||``).trim();return!t||t===`AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA`?``:t}function nA(e){let t=tA(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 tA(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 $k(e.webauthnChallenge)}async function rA(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=Rk(t),s=t.type===Y.SIGN_TRANSACTION?pl(t):null,c=s?.signingKind===`transaction`?s:null,m=c?Bk(r.onSigningOperationInteractionEvent):null,h=c?af(c.signingOperationStateKind):!1,g=c?zk({signingOperationStateKind:c.signingOperationStateKind,signingAuthMode:a}):!0,_=Ml(t),v=t.type===Y.SIGN_TRANSACTION?tf(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=qk({request:t,transactionSummary:o}),S=Yk({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=Pk(t.requestId),A=!!k,j=k?Promise.resolve(k.promise):void 0,M=j?Gk(j):void 0,te=()=>{E?.(),E=void 0};a===`emailOtp`&&m?.({kind:of.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:Jk(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,Kk(oe))return eA({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 Lk(n,t.requestId,ce),eA({ctx:e,requestId:t.requestId,preparation:f}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!1,error:ce});m&&!h&&(m({kind:of.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),eA({ctx:e,requestId:t.requestId,preparation:f}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!1,error:Jk(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 eA({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 eA({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=Yk({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:of.AuthenticationCompleted}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!0,otpCode:Zk(le),...ue?{emailOtpChallengeId:ue}:{},...f?{operationStepUpPreparation:f}:{},...Xk(fe)});return}if(a===`warmSession`){u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!0,...Xk(fe)});return}Qk({stage:`transaction_prompt`,subjectId:d,requestId:t.requestId,signingAuthPlanKind:t.payload.signingAuthPlan.kind});let pe=f?.challengeB64u||nA({webauthnChallenge:t.payload.webauthnChallenge,defaultChallengeB64u:String(b||``).trim(),requireTypedChallenge:t.payload.signingAuthPlan.kind===rf.PasskeyReauth&&!!t.payload.webauthnChallenge});if(!pe)throw Error(`Missing WebAuthn challenge digest for signing flow`);m?.({kind:of.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:of.AuthenticationCompleted}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!0,credential:me,...f?{operationStepUpPreparation:f}:{},...Xk(fe)})}catch(n){eA({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 iA(e){return dl(e)??`webauthn`}async function aA(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=tf(t.requestId);try{let r=iA(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&&Lk(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:Ik.CONFIRMATION_COMPLETE,status:`succeeded`,message:`Email OTP submitted`}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:o,confirmed:!0,otpCode:Zk(D),...O?{emailOtpChallengeId:O}:{}});if(r===`warmSession`)return c&&bl(n,{requestId:t.requestId,step:2,phase:Ik.CONFIRMATION_COMPLETE,status:`succeeded`,message:`Confirmation complete`}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:o,confirmed:!0});Qk({stage:`intent_digest_prompt`,subjectId:f,requestId:t.requestId,signingAuthPlanKind:t.payload.signingAuthPlan.kind});let ee=nA({webauthnChallenge:t.payload.webauthnChallenge,defaultChallengeB64u:String(s||``).trim(),requireTypedChallenge:t.payload.signingAuthPlan.kind===rf.PasskeyReauth});if(!ee)throw Error(`Missing WebAuthn challenge digest for intent signing flow`);bl(n,{requestId:t.requestId,step:3,phase:Ik.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:Ik.PASSKEY_PROMPT_SUCCEEDED,status:`succeeded`,message:`Authentication complete`}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:o,confirmed:!0,credential:k})}catch(e){ef(t.requestId),bl(n,{requestId:t.requestId,step:4,phase:Ik.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 oA(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=Ak(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 rA(e,a,i,{...t,...r?.onSigningOperationInteractionEvent?{onSigningOperationInteractionEvent:r.onSigningOperationInteractionEvent}:{},...r?.onNearTransactionContextReady?{onNearTransactionContextReady:r.onNearTransactionContextReady}:{}});break;case Y.SIGN_INTENT_DIGEST:await aA(e,a,i,t);break;default:sA(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 sA(e){throw Error(`Unsupported secure confirmation request`)}function cA(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 rf.WarmSession:return{...t,signingAuthPlan:e.params.signingAuthPlan};case rf.ActiveWalletAuthority:return{...t,signingAuthPlan:e.params.signingAuthPlan};case rf.PasskeyReauth:return{...t,signingAuthPlan:e.params.signingAuthPlan,...e.params.webauthnChallenge?{webauthnChallenge:e.params.webauthnChallenge}:{}};case rf.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 lA(e.params.signingAuthPlan)}}function lA(e){throw Error(`Unsupported transaction signing auth params: ${String(e)}`)}function uA(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 rf.WarmSession:return{...t,signingAuthPlan:e.params.signingAuthPlan};case rf.ActiveWalletAuthority:return{...t,signingAuthPlan:e.params.signingAuthPlan};case rf.PasskeyReauth:return{...t,signingAuthPlan:e.params.signingAuthPlan,...e.params.webauthnChallenge?{webauthnChallenge:e.params.webauthnChallenge}:{}};case rf.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 lA(e.params.signingAuthPlan)}}function dA(e){let t=String(e||``).trim();return!t||t===`pending-intent-digest`?``:t}function fA(e){return String(e||``).trim()||$d}function pA(e){if(!e)throw Error(`[SigningConfirmation] passkey intent signing requires webauthnChallenge`);return e}function mA(e){return e.signingAuthPlan.kind===rf.PasskeyReauth?{signingSubject:e.signingSubject,challengeB64u:e.challengeB64u,...e.displayModel?{displayModel:e.displayModel}:{},webauthnChallenge:pA(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 hA(e){try{return Gd({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 gA(e){let{sessionId:t}=e,n=_A(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:vA(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=hA({txSigningRequests:n,intentDigest:r,signerAccountId:e.rpcCall.nearAccountId,title:s.title,body:s.body});i={requestId:t,type:Y.SIGN_TRANSACTION,summary:s,payload:cA({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:vA(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=hA({txSigningRequests:n,intentDigest:r,signerAccountId:e.nearAccountId,title:a.title,body:a.body});i={requestId:t,type:Y.SIGN_TRANSACTION,summary:a,payload:uA({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=Jd({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=dA(e.intentDigest);r=n;let a=fA(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:mA({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&&Nk({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(()=>{Fk(t)});if(!a?.confirmed)throw a?.walletSessionFailure?new Ju({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 _A(e){return e.touchConfirm.requestUserConfirmation.bind(e.touchConfirm)}function vA(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 yA({ctx:e,surface:t,walletId:n,nearAccountId:r,signerSlot:i,confirmerText:a,confirmationConfig:o,challengeB64u:s,registrationOptions:c}){let l=bA({walletId:n,nearAccountId:r,signerSlot:i,confirmerText:a,confirmationConfig:o,challengeB64u:s,registrationOptions:c});ml(l);let u=await SA({ctx:e,surface:t,request:l,confirmationConfig:Ak(e,l),transactionSummary:xA(l),theme:je(e.getTheme?.())??`dark`});return wA({requestId:l.requestId,decision:u})}function bA({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 xA(e){let t=El(e.summary),n=Pl(e);return{...t,...n?{intentDigest:n}:{}}}async function SA({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=Cf(e,n,{postMessage:e=>{let t=CA(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 CA(e,t){if(!O(e))return{ok:!1,message:`Registration confirmation returned a malformed response`};let n=e;if(n.type!==gf.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 wA({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 qd({confirmed:t.confirmed,requestId:e,intentDigest:t.intentDigest||``,credential:t.credential,transactionContext:t.transactionContext,registrationDiagnostics:t.registrationDiagnostics,error:t.error})}function TA(e){return Math.max(0,Math.round(performance.now()-e))}function EA(e){throw Error(`Unexpected UI confirmation state: ${String(e)}`)}function DA(e){return typeof e==`object`&&!!e}function OA(e){if(!DA(e)||e.type!==gf.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||!DA(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:gf.PROMPT_USER_CONFIRM_IN_JS_MAIN_THREAD,requestId:t,channelToken:n,data:{kind:`pending_request`,requestId:t,requestToken:i}}}function kA(e){if(!DA(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 AA=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:Sk.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=TA(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=TA(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=TA(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 gA(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 EA(e)}}async requestRegistrationCredentialConfirmation(e){let t=this.takeRegistrationConfirmationSurface();try{return await yA({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 EA(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=Tf(this.config.workerUrl||Sk.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=OA(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:gf.USER_PASSKEY_CONFIRM_RESPONSE,requestId:t,channelToken:n,data:{requestId:t,confirmed:!1,error:r}})}dispatchUserConfirmProgress(e){let t=kA(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(DA(t)&&t.type===gf.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;oA(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(DA(t)&&t.type===gf.PROMPT_USER_CONFIRM_IN_JS_MAIN_THREAD){console.error(`[UserConfirmWorker] rejected malformed prompt envelope`);return}let r=Ll(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 jA(e,t){return new AA(e,t)}function MA(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Invalid export confirmation: ${t} must be an object`);return e}function NA(e,t){if(typeof e!=`string`)throw Error(`Invalid export confirmation: ${t} must be a string`);return e}function PA(e,t){let n=NA(e,t);if(!n.trim()||n!==n.trim())throw Error(`Invalid export confirmation: ${t} must be a nonempty identity`);return n}function FA(e,t){return e===void 0?void 0:NA(e,t)}function IA(e,t){if(e===void 0||typeof e==`boolean`)return e;throw Error(`Invalid export confirmation: ${t} must be a boolean`)}function LA(e){let t=MA(e,`subject`);switch(t.kind){case`near_wallet`:if(t.walletId!==void 0)throw Error(`Invalid NEAR export subject`);return{kind:`near_wallet`,nearAccountId:PA(t.nearAccountId,`nearAccountId`)};case`evm_wallet`:if(t.nearAccountId!==void 0)throw Error(`Invalid EVM export subject`);return{kind:`evm_wallet`,walletId:PA(t.walletId,`walletId`)};default:throw Error(`Invalid export confirmation: unsupported subject`)}}function RA(e){let t=MA(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:PA(t.accountId,`summary.accountId`),publicKey:NA(t.publicKey,`summary.publicKey`),warning:NA(t.warning,`summary.warning`)}}function zA(e){let t=MA(e,`key`),n=t.scheme;if(n!==`ed25519`&&n!==`secp256k1`)throw Error(`Invalid export confirmation: unsupported key scheme`);return{scheme:n,label:NA(t.label,`key.label`),publicKey:NA(t.publicKey,`key.publicKey`),privateKey:NA(t.privateKey,`key.privateKey`),address:FA(t.address,`key.address`)}}function BA(e){if(e!==void 0){if(!Array.isArray(e))throw Error(`Invalid export confirmation: keys must be an array`);return e.map(zA)}}function VA(e){return NA(e,`guidance step`)}function HA(e){if(e===void 0)return;let t=MA(e,`guidance`);if(t.steps!==void 0&&!Array.isArray(t.steps))throw Error(`Invalid export confirmation: guidance steps must be an array`);return{title:NA(t.title,`guidance.title`),body:FA(t.body,`guidance.body`),steps:t.steps?.map(VA)}}function UA(e){if(e===void 0)return;let{uiMode:t,behavior:n,autoProceedDelay:r}=MA(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 WA(e){let t=MA(e,`request`),n=MA(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=PA(t.requestId,`requestId`),i=RA(t.summary),a=LA(n.subject),o=NA(n.publicKey,`publicKey`),s=FA(t.intentDigest,`intentDigest`),c=UA(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:PA(n.credentialIdB64u,`credentialIdB64u`),challengeB64u:FA(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:FA(n.viewerSessionId,`viewerSessionId`),privateKey:FA(n.privateKey,`privateKey`),keys:BA(n.keys),guidance:HA(n.guidance),variant:e,theme:t,loading:IA(n.loading,`loading`),errorMessage:FA(n.errorMessage,`errorMessage`)}}}default:throw Error(`Invalid export confirmation: unsupported request type`)}}const GA=6e4;function KA(e){return typeof e==`object`&&!!e}function qA(e){if(!KA(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 JA=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=qA(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=Tf(Sk.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(!KA(e)||e.type!==gf.PROMPT_USER_CONFIRM_IN_JS_MAIN_THREAD||!KA(e.data)||e.data.kind!==`export_request`)return null;let t;try{t=WA(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:gf.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:gf.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;oA(this.context,t,n).catch(e=>{console.error(`[PasskeyMpcExportWorker] failed to handle export prompt:`,e),this.postPromptEnvelopeError(n,t.requestId,t.channelToken||``)});return}if(KA(e.data)&&e.data.type===gf.PROMPT_USER_CONFIRM_IN_JS_MAIN_THREAD){console.error(`[PasskeyMpcExportWorker] rejected malformed prompt envelope`);return}let n=Ll(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 (${GA}ms)`)))},GA);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 YA(e){return new JA(e)}function XA(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 ZA(e){return e.curve===`ecdsa`?{thresholdSessionId:e.thresholdSessionId,chainTarget:e.chainTarget}:null}function $(e){return String(e??``).trim()||null}function QA(e){return Array.isArray(e)?e.map(e=>Math.floor(Number(e))).filter(e=>Number.isFinite(e)&&e>0):[]}function $A(e){try{return Ia(e)}catch{return null}}function ej(e){try{return co(e)}catch{return null}}function tj(e){switch(e){case`login`:case`registration`:case`manual-bootstrap`:case`email_otp`:return e;default:return null}}function nj(e){let t=tj(e);return t&&t!==`email_otp`?t:null}function rj(e){return e&&typeof e==`object`?e:null}function ij(e){return rj(e.thresholdSessionIds)||{}}function aj(e){let t=String(e||``).trim().toLowerCase();return/^0x[0-9a-f]{40}$/.test(t)?t:null}function oj(e){try{return Va(e)}catch{return null}}function sj(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 cj(e){return!!($(e.signingRootId)||$(e.signingRootVersion))}function lj(e){return!!($(e.subjectId)||$(e.userId))}function uj(e){let t=ij(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 dj(e,t){return{kind:`rejected`,rejection:{kind:`rejected_sealed_recovery_record`,storeKey:$(e.storeKey),walletId:$(e.walletId),reason:t,safeSummary:uj(e)}}}function fj(e,t={}){let n=ij(e),r=rj(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 dj(e,`unsupported_record`);if(!i||!a||!o)return dj(e,`missing_identity`);if(c<=0||u<=0||s<=0)return dj(e,`missing_restore_metadata`);if(lj(e))return dj(e,`invalid_identity`);if(!t.allowExpired&&c<=Date.now())return dj(e,`expired`);if(!t.allowExhausted&&e.authMethod!==`passkey`&&l<=0)return dj(e,`exhausted`);let d=$(n.ecdsa),f=r,p=Ve(f?.runtimePolicyScope),m=sj({runtimePolicyScope:p,rawSigningRootId:f?.signingRootId,rawSigningRootVersion:f?.signingRootVersion}),h=$(e.relayerUrl),g=e.authMethod===`passkey`?$(f?.rpId):null,_=e.authMethod===`passkey`?nj(f?.source):null,v=e.authMethod===`email_otp`&&tj(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=aj(f?.ethereumAddress),E=$(f?.thresholdEcdsaPublicKeyB64u),D=QA(f?.participantIds),O=$A(f?.routerAbEcdsaDerivationNormalSigning),ee=ej(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||cj(e))return dj(e,`invalid_identity`);if(!d||!m)return dj(e,`missing_identity`);if(!f?.chainTarget)return dj(e,`wrong_chain_target`);let M;try{M=Mr(f.chainTarget)}catch{return dj(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 dj(e,`missing_restore_metadata`);let te=e.authMethod===`passkey`?oj({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?dj(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 pj(e,t){return String(e??``).trim()===String(t??``).trim()}function mj(e,t){return String(e??``).trim().toLowerCase()===String(t??``).trim().toLowerCase()}function hj(e,t){return e.length===t.length?e.every((e,n)=>Number(e)===Number(t[n])):!1}function gj(e,t){let n=[],r=t.signer;return pj(e.walletId,r.walletId)||n.push(`wallet_id`),Fr(e.chainTarget,r.chainTarget)||n.push(`chain_target`),pj(e.keyHandle,r.keyHandle)||n.push(`key_handle`),pj(e.ecdsaThresholdKeyId,r.key.ecdsaThresholdKeyId)||n.push(`ecdsa_threshold_key_id`),pj(e.signingRootId,r.key.signingRootId)||n.push(`signing_root_id`),pj(e.signingRootVersion,r.key.signingRootVersion)||n.push(`signing_root_version`),mj(e.ethereumAddress,r.key.thresholdOwnerAddress)||n.push(`threshold_owner_address`),hj(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`?(pj(e.authority.verifier.rpId,t.auth.rpId)||n.push(`rp_id`),pj(e.authority.factor.credentialIdB64u,t.auth.credentialIdB64u)||n.push(`credential_id`),n):(n.push(`passkey_auth_branch`),n):t.auth.kind===`email_otp`?(pj(e.emailOtpAuthority.factor.providerUserId,t.auth.providerSubjectId)||n.push(`provider_subject_id`),n):(n.push(`email_otp_auth_branch`),n)}function _j(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 vj(e,t){if(t.authMethod!==e.authMethod||!Fr(t.chainTarget,e.chainTarget)||t.thresholdSessionId!==e.thresholdSessionId)return null;let n=e.materialRestoreIdentity.lane,r=gj(t,n);return r.length>0?(_j({record:t,lane:n,reasons:r}),null):!pj(t.ecdsaThresholdKeyId,e.materialRestoreIdentity.ecdsaThresholdKeyId)||!pj(t.walletId,n.signer.walletId)||!pj(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 yj(e,t){let n=fj(t,{allowExpired:!1,allowExhausted:!1});if(n.kind===`rejected`)return{kind:`rejected`,rejection:n.rejection};let r=vj(e,n.record);return r?{kind:`matched`,workItem:r}:{kind:`not_applicable`}}function bj(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 xj(e){let t=fj(e.record);if(t.kind===`rejected`)return[{kind:`rejected`,rejection:t.rejection}];let n=bj({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 Sj(e){return e.kind===`matched`}function Cj(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,Fd(r),e.thresholdSessionId,t.thresholdSessionId,t.updatedAtMs,`restored`].join(`|`)}function wj(e,t){let n=B(e.chainTarget);return[e.walletId,e.authMethod,e.curve,n,Fd(e.materialActivation),e.thresholdSessionId,t.updatedAtMs].join(`|`)}function Tj(e){return{kind:`completed`,attempted:e.attempted,restored:e.restored,deferred:e.deferred}}function Ej(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 Dj(){let e=new Set;return{hasSuccessfulRestore:(t,n)=>e.has(Cj(t,n)),rememberSuccessfulRestore:(t,n)=>{e.add(Cj(t,n))},clear:()=>{e.clear()}}}function Oj(){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 kj(e,t){let n=String(e.walletId||``).trim();if(!n)return Tj({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}),Tj({attempted:0,restored:0,deferred:0})}let a=i.map(e=>yj(r,e));for(let e of a)e.kind===`rejected`&&t.onRejectedRecord?.({walletId:n,rejection:e.rejection});let o=a.filter(Sj).map(e=>e.workItem);if(!o.length)return Tj({attempted:0,restored:0,deferred:0});if(o.length>1)return{kind:`duplicate_records`,attempted:0,restored:0,deferred:0,duplicateCount:o.length,duplicateRecordSummaries:Ej(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)})),Tj({attempted:s,restored:c,deferred:l})}async function Aj(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=>xj({walletId:n,record:t,reason:`session_status`,requestedChainTarget:e}))).filter(e=>e.kind===`rejected`?(t.onRejectedRecord?.({walletId:n,rejection:e.rejection}),!1):!0).filter(Sj).map(e=>e.workItem).filter(e=>{let t=wj(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 jj(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 Mj(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 Nj(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 Mj({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 Mj({record:e.record,resolveCurrentEcdsaCapabilityRuntime:e.resolveCurrentEcdsaCapabilityRuntime});return t.kind===`superseded`?t.status:(jj(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 Mj({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):jj(i)&&await e.deletePersistedRecord().catch(()=>void 0),await e.recordSessionMaterialRestored(i),i)}const Pj=new Map;function Fj(e){return Math.max(0,Math.round(performance.now()-e))}function Ij(e){e.diagnostics?.recordDuration(e.bucket,Fj(e.startedAt))}function Lj(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 Rj(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 zj(e){return e.transport.curve===`ed25519`?{authMethod:`passkey`,curve:`ed25519`}:{authMethod:`passkey`,curve:`ecdsa`,chainTarget:e.transport.chainTarget}}function Bj(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=wd({authMethod:`passkey`,materialActivation:e.transport.ed25519Restore.materialActivation});return[`persist`,t.kind,t.authMethod,Fd(t.materialActivation)].join(`|`)}function Vj(e){return e.transport.curve===`ed25519`}function Hj(e){if(!Vj(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 Uj(e){return e.transport.curve===`ed25519`}async function Wj(e){let t=wr(e);if(!t)throw Error(`[SigningSessionSealedStore] invalid sealed session record write input`);await dn(t)}function Gj(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 Kj(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?Gj(e.existing.ecdsaRestore,n):!0}function qj(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 Jj(e,t){return e.curve,{...e,authMethod:`passkey`,groupId:t}}async function Yj(e){return e.transport.curve===`ed25519`?await nn(wd({authMethod:`passkey`,materialActivation:e.transport.ed25519Restore.materialActivation})):await sn(e.thresholdSessionId,e.purpose)}var Xj=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=Rj({transport:e.transport}),i=zj({transport:e.transport});if(!i)return{ok:!1,code:`invalid_args`,message:`Passkey seal persistence requires one exact record purpose`};let a=Bj({transport:e.transport}),o=Pj.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(()=>{Pj.delete(a)});return Pj.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 Yj(e)}catch(n){return Ij({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(Ij({diagnostics:e.diagnostics,bucket:`sealed_record_existing_read`,startedAt:t}),n){if(!Kj({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`}}Ij({diagnostics:e.diagnostics,bucket:`sealed_record_policy_read`,startedAt:t});let i=qj(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 Wj((Uj(e),Hj({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}))),Ij({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:Jj(e.transport,r)});if(Ij({diagnostics:e.diagnostics,bucket:`sealed_record_apply_server_seal`,startedAt:i}),Lj({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 Wj((Uj(e),Hj({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}))),Ij({diagnostics:e.diagnostics,bucket:`sealed_record_register`,startedAt:c});let l=performance.now(),u;try{u=await Yj(e)}catch{u=null}return Ij({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(wd({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:wd({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 Zj=new Map,Qj=new Map;function $j(e){return[`rehydrate`,`passkey`,`ecdsa`,B(e.chainTarget),Fd(e.materialActivation),String(e.thresholdSessionId||``).trim()].join(`|`)}function eM(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 tM(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 nM(e){return e.session.capabilitySubjects.some(t=>t.kind===`sign`&&t.keyFamily===`ecdsa_secp256k1`&&b(t.materialActivation,e.materialActivation))}async function rM(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||!nM({session:o.record,materialActivation:e.materialActivation})?null:o.operationCredential}async function iM(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=Qj.get(n);if(r)return await r;let i=At(t).finally(()=>{Qj.delete(n)});Qj.set(n,i),await i}async function aM(e){return await en({walletId:e.walletId,filter:{authMethod:`passkey`,curve:`ecdsa`,chainTarget:e.chainTarget}})}function oM(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 sM(e){console.warn(`[PasskeyMpcSession] signing-session restore rejected record`,e)}function cM(e){return typeof e==`object`&&!!e}function lM(e){let t=Math.floor(Number(e));return Number.isFinite(t)&&t>0?t:0}function uM(e){return Number.isSafeInteger(e)&&Number(e)>=0}function dM(e){return Number.isSafeInteger(e)&&Number(e)>0}function fM(e){return!cM(e)||typeof e.ok!=`boolean`?null:e.ok?!uM(e.remainingUses)||!dM(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 pM(e){if(!cM(e)||!Array.isArray(e.results))return null;let t=[];for(let n of e.results){if(!cM(n)||typeof n.thresholdSessionId!=`string`||!n.thresholdSessionId.trim())return null;let e=fM(n.result);if(!e)return null;t.push({thresholdSessionId:n.thresholdSessionId,result:e})}return{results:t}}function mM(e){return!cM(e)||typeof e.ok!=`boolean`?null:e.ok?typeof e.prfFirstB64u!=`string`||!e.prfFirstB64u.trim()||!uM(e.remainingUses)||!dM(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 hM(e){if(!cM(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()||!uM(e.remainingUses)||!dM(e.expiresAtMs))return null;let t=cM(e.diagnostics)?{runtimeSetupMs:lM(e.diagnostics.runtimeSetupMs),clientSealMs:lM(e.diagnostics.clientSealMs),serverSealRouteMs:lM(e.diagnostics.serverSealRouteMs),clientUnsealMs:lM(e.diagnostics.clientUnsealMs),policyUpdateMs:lM(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 gM(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 _M(e){return Math.max(0,Math.round(performance.now()-e))}function vM(e){e.diagnostics?.recordDuration(e.bucket,_M(e.startedAt))}var yM=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(),vM({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=fM(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}`);vM({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:gM(e.transport),serverSeal:{ok:!0,ciphertext:n.ciphertext,keyVersion:n.keyVersion,expiresAtMs:n.expiresAtMs,remainingUses:n.remainingUses}}}),r=t.success?hM(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:gM(e.transport),...t?{diagnostics:t}:{},...c?{completedSeal:c}:{}}):null;if(vM({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 Aj({...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 kj({...e,authMethod:`passkey`},{listExactSealedSessionsForWallet:aM,restoreSealedRecordForWallet:this.restorePasskeySealedRecordForWallet,onListError:oM,onRejectedRecord:sM}):{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=$j({thresholdSessionId:r,chainTarget:i,materialActivation:n.materialActivation}),o=Zj.get(a);if(o)return eM(await o,`ready`);let s=Sd({queueByKey:this.deps.thresholdEcdsaSigningQueueByKey,queueKey:kd({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(()=>{Zj.delete(a)});return Zj.set(a,s),eM(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=pM(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=XA(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=mM(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=XA(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=fM(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=Am(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=Am(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 Xj({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||!cM(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 rM({walletId:e.walletId,factorAuthority:e.record.authority,materialActivation:e.purpose.materialActivation,nowMs:Date.now()});if(!r)return null;let i=await tM(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 Nj({record:e.record,purpose:e.purpose,transport:c,groupId:s,rehydrateWarmSessionMaterial:this.rehydrateWarmSessionMaterial.bind(this),deletePersistedRecord:async()=>await iM({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=hM(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=fM(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=fM(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=Tf(Sk.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=Ll(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 bM(e){return new yM(e)}var xM=class extends Error{constructor(e){super(e),this.code=`wallet_origin_webauthn_unavailable`,this.name=`WalletOriginWebAuthnUnavailableError`}};async function SM(e,t,n){let r=CM(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`&&(jM(t)||MM(t))?new xM(`Wallet-origin WebAuthn registration is unavailable: ${NM(t)}`):t}}function CM(e,t){return e===`create`?wM(t):TM(t)}function wM(e){return{...e,challenge:AM(e.challenge),user:{...e.user,id:AM(e.user.id)},excludeCredentials:e.excludeCredentials?.map(EM),extensions:DM(e.extensions)}}function TM(e){return{...e,challenge:AM(e.challenge),allowCredentials:e.allowCredentials?.map(EM),extensions:DM(e.extensions)}}function EM(e){return{...e,id:AM(e.id)}}function DM(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=OM(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`?OM(r):r;e.evalByCredential=t}t.prf=e}return t}function OM(e){return{...e,...kM(e.first)?{first:AM(e.first)}:{},...kM(e.second)?{second:AM(e.second)}:{}}}function kM(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)}function AM(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 jM(e){let t=NM(e);return/origin of the document is not the same as its ancestors/i.test(t)}function MM(e){let t=PM(e),n=NM(e),r=t===`NotAllowedError`,i=/document is not focused|not focused|focus/i.test(n);return!!(r&&i)}function NM(e){return String(e?.message||``)}function PM(e){let t=e?.name;return typeof t==`string`?t:``}function FM(e,t){return(e||t||``).toLowerCase()}function IM(e){let t=F(String(e||``));if(t.length!==32)throw Error(`Invalid WebAuthn challenge: expected 32 bytes, got ${t.length}`);return t}function LM(e){if(e.kind!==`wallet_registration`)throw Error(`Wallet registration challenge is unavailable`);return e.challengeB64u}function RM(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 zM=class{constructor(e){this.rpIdOverride=e}getRpId(){try{return FM(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=GM(this.abortController),this.removeExternalAbortListener=BM(this.abortController,i);let a=this.getRpId(),o={challenge:IM(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 SM(`get`,o,{abortSignal:this.abortController.signal}),firstPrfOutput:!0,secondPrfOutput:r});return UM(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=GM(this.abortController),this.removeExternalAbortListener=BM(this.abortController,e.prompt.cancellation);let t=this.getRpId(),n=RM({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:IM(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:IM(LM(e)),rp:{name:`WebAuthn Passkey`,id:o},user:{id:new TextEncoder().encode(WM(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 SM(`create`,s,{abortSignal:this.abortController.signal})}finally{this.removePageAbortHandlers?.(),this.removePageAbortHandlers=void 0,this.removeExternalAbortListener?.(),this.removeExternalAbortListener=void 0,this.abortController=void 0}}};function BM(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 VM(e){return String(e||``).trim().replace(/=+$/g,``)}function HM(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 UM(e,t){let n=VM(HM(e)),r=VM(t);if(n!==r)throw Error(`Unexpected authentication response challenge "${n}", expected "${r}"`)}function WM(e,t){return t===void 0||t===1?e:`${e} (${t})`}function GM(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 KM=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 qM={TIMEOUTS:{DEFAULT:6e4,TRANSACTION:6e4,REGISTRATION:6e4},WORKER:{URL:Sk.RUNTIME.SIGNER_WORKER,TYPE:`module`,NAME:`Web3AuthnSignerWorker`},ECDSA_DERIVATION_CLIENT_WORKER:{URL:Sk.RUNTIME.ECDSA_DERIVATION_CLIENT_WORKER,TYPE:`module`,NAME:`Web3AuthnEcdsaDerivationClientWorker`},ECDSA_PRESIGN_CLIENT_WORKER:{URL:Sk.RUNTIME.ECDSA_PRESIGN_CLIENT_WORKER,TYPE:`module`,NAME:`Web3AuthnEcdsaPresignClientWorker`},ECDSA_ONLINE_CLIENT_WORKER:{URL:Sk.RUNTIME.ECDSA_ONLINE_CLIENT_WORKER,TYPE:`module`,NAME:`Web3AuthnEcdsaOnlineClientWorker`},RETRY:{MAX_ATTEMPTS:3,BACKOFF_MS:1e3}};function JM(e){switch(e){case`evmCrypto`:return`/sdk/workers/evm-crypto.worker.js`;case`tempoSigner`:return`/sdk/workers/tempo-signer.worker.js`}}function YM(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 XM(e,t){let n=t?.baseOrigin||wf()||(typeof window<`u`?window.location.origin:``)||`https://invalid.local`,r=YM(e)||JM(e);return/^https?:\/\//i.test(r)?r:new URL(r,n).toString()}function ZM(e){let t=e?.baseOrigin||wf()||(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 QM(e){let t=e?.baseOrigin||wf()||(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 $M={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 eN(e){return Math.max(0,Math.round(performance.now()-e))}function tN(e){throw Error(`Unsupported Email OTP Yao prewarm result: ${String(e)}`)}function nN(e){throw Error(`Unsupported Email OTP Yao prewarm request: ${String(e)}`)}function rN(e,t,n){console.warn(`[WorkerTransport] operation timed out; resetting worker`,{kind:e,type:String(t),timeoutMs:n})}function iN(e){return Pe(e,32,`signer worker request IDs`)}function aN(e){return e?.type===mu.WORKER_READY||e?.ready===!0}function oN(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.progress===!0}function sN(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.ok===!0&&`result`in e}function cN(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.ok===!1&&typeof e.error==`string`}function lN(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.ok===!0&&`result`in e}function uN(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.ok===!1&&typeof e.error==`string`}function dN(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.progress===!0&&`payload`in e}const fN=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(Hu(e.walletId),!this.workers.has(`ecdsaPresignClient`))return;await this.requestOperation({kind:`ecdsaPresignClient`,request:{type:yu.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:gu.PrewarmEcdsaRegistrationCrypto,payload:{}}),{kind:`succeeded`,wasmInitMs:eN(e)}}catch{return{kind:`failed`,wasmInitMs:eN(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 nN(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=eN(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 tN(t)}}catch{let t=eN(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===gu.DisposeLinkedDeviceEcdsaHolderMaterials&&!this.workers.has(`ecdsaDerivationClient`)?{type:_u.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=qM.TIMEOUTS.DEFAULT,transfer:i}){let a=this.getOrCreateWorker(`nearSigner`),o=iN(`nearSigner`);return await new Promise((s,c)=>{let l=setTimeout(()=>{this.rejectRequest(`nearSigner`,o,new pu({message:`Worker operation timed out after ${r}ms`,code:`TIMEOUT`,workerKind:`nearSigner`})),rN(`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 pu({message:`[nearSigner] failed to postMessage: ${L(e)}`,code:`WORKER_POSTMESSAGE_ERROR`,workerKind:`nearSigner`}))}})}async requestDerivationOperation({type:e,payload:t,timeoutMs:n=qM.TIMEOUTS.DEFAULT,transfer:r}){let i=this.getOrCreateWorker(`ecdsaDerivationClient`),a=iN(`ecdsaDerivationClient`);return await new Promise((o,s)=>{let c=setTimeout(()=>{this.rejectRequest(`ecdsaDerivationClient`,a,new pu({message:`Worker operation timed out after ${n}ms`,code:`TIMEOUT`,workerKind:`ecdsaDerivationClient`})),rN(`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 pu({message:`[ecdsaDerivationClient] failed to postMessage: ${L(e)}`,code:`WORKER_POSTMESSAGE_ERROR`,workerKind:`ecdsaDerivationClient`}))}})}async requestRpcOperation(e,t){let n=this.getOrCreateWorker(e),r=iN(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 pu({message:`Worker operation timed out after ${a}ms`,code:`TIMEOUT`,workerKind:e})),rN(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 pu({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!==yu.ListAvailable&&e.type!==yu.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`);Ku();let t=new MessageChannel;return e.postMessage({kind:$M.AttachLinkedHolderToPresign,port:t.port1},[t.port1]),t.port2}connectDerivationPresignChannel(e,t){if(this.presignAuthorityKind===t)return;this.presignAuthorityKind!==null&&Ku();let n=this.getOrCreateWorker(`ecdsaDerivationClient`),r=new MessageChannel,i=t===`role_local_derivation_handle`?$M.AttachDerivationToPresign:$M.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:$M.AttachPresignToOnline,port:n.port1},[n.port1]),t.postMessage({kind:$M.AttachPresignToOnline,port:n.port2},[n.port2]),this.presignOnlineConnected=!0}createWorker(e){try{if(e===`nearSigner`){let e=Tf(qM.WORKER.URL,{worker:`signer`,baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:qM.WORKER.TYPE,name:qM.WORKER.NAME})}if(e===`ecdsaDerivationClient`){let e=Tf(qM.ECDSA_DERIVATION_CLIENT_WORKER.URL,{worker:`ecdsaDerivationClient`,baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:qM.ECDSA_DERIVATION_CLIENT_WORKER.TYPE,name:qM.ECDSA_DERIVATION_CLIENT_WORKER.NAME})}if(e===`ecdsaPresignClient`){let e=Tf(qM.ECDSA_PRESIGN_CLIENT_WORKER.URL,{worker:`ecdsaPresignClient`,baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:qM.ECDSA_PRESIGN_CLIENT_WORKER.TYPE,name:qM.ECDSA_PRESIGN_CLIENT_WORKER.NAME})}if(e===`ecdsaOnlineClient`){let e=Tf(qM.ECDSA_ONLINE_CLIENT_WORKER.URL,{worker:`ecdsaOnlineClient`,baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:qM.ECDSA_ONLINE_CLIENT_WORKER.TYPE,name:qM.ECDSA_ONLINE_CLIENT_WORKER.NAME})}if(e===`emailOtp`){let e=ZM({baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:`module`,name:`email-otp-worker`})}if(e===`walletCustodyCeremony`){let e=QM({baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:`module`,name:`wallet-custody-ceremony-worker`})}let t=XM(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(aN(n))return;if(e===`nearSigner`){this.handleNearWorkerMessage(n);return}if(e===`ecdsaDerivationClient`){this.handleEcdsaDerivationWorkerMessage(n);return}if(dN(n)){let t=this.getPendingMap(e).get(n.id);if(!t)return;t.onEvent?.(n.payload);return}if(lN(n)){this.resolveRequest(e,n.id,n.result);return}if(uN(n)){this.rejectRequest(e,n.id,new pu({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 pu({message:`Malformed worker response frame for request ${r}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:e}));return}this.getPendingMap(e).size!==0&&(this.rejectAllPending(e,new pu({message:`Unknown worker response frame: ${JSON.stringify(n)}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:e})),this.resetWorker(e))}handleNearWorkerMessage(e){if(oN(e)){let t=this.getPendingMap(`nearSigner`).get(e.id);if(!t)return;t.onEvent?.(e.payload);return}if(sN(e)){this.resolveNearResponse(e.id,e.result);return}if(cN(e)){this.rejectRequest(`nearSigner`,e.id,new pu({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 pu({message:`Malformed worker response frame for request ${t}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:`nearSigner`}));return}this.getPendingMap(`nearSigner`).size!==0&&(this.rejectAllPending(`nearSigner`,new pu({message:`Unknown worker response frame: ${JSON.stringify(e)}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:`nearSigner`})),this.resetWorker(`nearSigner`))}handleEcdsaDerivationWorkerMessage(e){if(lN(e)){this.resolveRequest(`ecdsaDerivationClient`,e.id,e.result);return}if(uN(e)){this.rejectRequest(`ecdsaDerivationClient`,e.id,new pu({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 pu({message:`Malformed worker response frame for request ${t}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:`ecdsaDerivationClient`}));return}this.getPendingMap(`ecdsaDerivationClient`).size!==0&&(this.rejectAllPending(`ecdsaDerivationClient`,new pu({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 pu({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`)&&Ku(),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 pN(){return fN}function mN(e){let t=String(e.metadata?.walletId||``).trim();if(!t)return null;try{return z(t)}catch{return null}}function hN(e){let t=[],n=new Set;for(let r of e){let e=mN(r);if(!e)continue;let i=String(e);n.has(i)||(n.add(i),t.push(e))}return t}async function gN(e){let t=hN(await e.store.listAccountSignersByProfile({profileId:e.profileId,status:`active`}).catch(()=>[]));return t.length===1?t[0]:null}var _N=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(vN,vN),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 gN({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 vN(){}function yN(e){let t=e.seamsWebConfigs.wallet,n=new zM(t.mode===`direct`?t.rpId:t.iframe.rpIdOverride),r=new _N({store:e.stores.userPreferencesStore}),i=e.seamsWebConfigs.network.chains,a=su({evmNonceBackend:Zd({chains:i}),nearClient:e.nearClient,nonceLaneCoordinationStore:e.stores.nonceLaneCoordinationStore}),o=ne(i,`near`),s=ne(i,`tempo`),c=ne(i,`evm`),l=bM({signingSessionPersistenceMode:e.seamsWebConfigs.signing.sessionPersistenceMode,thresholdEcdsaSigningQueueByKey:e.thresholdEcdsaSigningQueueByKey,resolveCurrentEcdsaCapabilityRuntime:e.resolveActiveEcdsaCapabilityRuntime}),u=jA({},{touchIdPrompt:n,nearClient:e.nearClient,webauthnCredentialStore:e.stores.webauthnCredentialStore,passkeyAuthenticatorStore:e.stores.passkeyAuthenticatorStore,userPreferencesManager:r,nonceCoordinator:a,operationStepUpPreparation:Ld,nearImplicitAccountFunding:Ud,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:YA(u.getContext()),passkeyMpcSession:l,signerWorkerManager:new KM({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:pN(),chains:i,nearExplorerUrl:o,tempoExplorerUrl:s,evmExplorerUrl:c,getTheme:e.getTheme})}}const bN=new Map;function xN(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 SN(e,t){let n=e.get(t);if(typeof n==`string`)return n.trim()||void 0}function CN(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 wN(e){let t=xN(e);if(!t)return null;let n=CN(t.get(`mode`));if(!n)return null;if(n===`none`)return{mode:`none`};let r=xN(t.get(`protocol`)),i=r?SN(r,`algorithm`):void 0,a=r?SN(r,`groupId`):void 0,o=SN(t,`currentKeyVersion`);return i!==`shamir3pass-v2`||a!==`rfc2409-group2`||!o?null:{mode:`sealed_refresh_v1`,protocol:{algorithm:Je,groupId:Ge},currentKeyVersion:o}}function TN(e){let t=xN(e);return t&&wN(xN(t.get(`capabilities`))?.get(`signingSessionSeal`))||{mode:`none`}}function EN(e){return e.signing.sessionPersistenceMode===`sealed_refresh_v1`?!(e.wallet.mode===`iframe`&&!gl()):!1}function DN(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 ON(e,t){let n=Number(e);return!Number.isFinite(n)||n<=0?t:Math.max(250,Math.floor(n))}function kN(e,t){let n=Error(e);return n.code=t,n}function AN(e){if(e.signal?.aborted)throw kN(`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?kN(`[sealed-refresh-parity] Failed to fetch relayer well-known capabilities: ${n}`,`sealed_refresh_parity_fetch_failed`):e})}async function jN(e){let t=String(e.relayerUrl||``).trim();if(!t)throw kN(`[sealed-refresh-parity] Missing relayer URL for capability check`,`sealed_refresh_parity_invalid_config`);let n=e.fetchImpl||fetch.bind(globalThis),r=ON(e.timeoutMs,8e3),i=`${t.replace(/\/+$/,``)}/.well-known/webauthn`;return await AN({timeoutMs:r,task:async e=>{let t=await n(i,{method:`GET`,headers:{Accept:`application/json`},signal:e});if(!t.ok)throw kN(`[sealed-refresh-parity] Well-known endpoint returned HTTP ${t.status}`,`sealed_refresh_parity_http_error`);let r={};try{r=await t.json()}catch{throw kN(`[sealed-refresh-parity] Well-known response is not valid JSON`,`sealed_refresh_parity_invalid_payload`)}return TN(r)}})}async function MN(e){if(!EN(e.configs))return;let t=DN(e.configs),n=bN.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 jN({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 kN(`[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 bN.delete(t),e});bN.set(t,r),await r}function NN(e,t){let n=String(e??``).trim();if(!n)throw Error(`${t} is required`);return n}function PN(e,t){let n=Number(e);if(!Number.isSafeInteger(n)||n<1)throw Error(`${t} must be a positive integer`);return n}function FN(e){let t=s(e);if(!t.ok)throw Error(`thresholdSessionId is invalid`);return t.value}function IN(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 LN(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=NN(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:PN(e.bootstrap.capability.applicationBinding.key_creation_signer_slot,`server capability signerSlot`),relayerUrl:NN(e.relayerUrl,`relayerUrl`),authority:e.authority,signingWalletSession:i.value})}function RN(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 zN(e){let t={walletId:e.walletSession.walletId,nearAccountId:NN(e.nearAccountId,`nearAccountId`),signerSlot:PN(e.signerSlot,`signerSlot`),expectedOperationalPublicKey:NN(e.expectedOperationalPublicKey,`expectedOperationalPublicKey`),expectedThresholdSessionId:NN(e.expectedThresholdSessionId,`expectedThresholdSessionId`)};if(IN({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 LN({bootstrap:e.bootstrap,operationCredential:e.operationCredential,providerSubject:e.providerSubject,relayerUrl:e.relayerUrl,authority:e.authority}),r=new Wv(e.workerContext,e.activeClientHandle,e.metadata);try{let i=RN(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:FN(n.thresholdSessionId),material:i,walletSessionState:n}}finally{r?.dispose()}}function BN(e,t){let n=e.trim();if(!n)throw Error(`Wallet custody Ed25519 projection requires ${t}`);return n}async function VN(e,t,n,r){let i=String(t.walletId),a=BN(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 HN(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 UN(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 WN(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 GN(e){return{kind:`near_ed25519_material_identity`,signer:e.signer,auth:e.auth,thresholdSessionId:e.thresholdSessionId}}function KN(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 GN(e.laneIdentity);case`material_identity`:return e.materialIdentity;default:return YN(e)}}function qN(e,t){if(!Od(e)||e.curve!==`ed25519`)return!1;let n=KN(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(HN(e),t.laneIdentity);case`export_exact_lane`:return UN(WN(e))===UN(n)&&b(e.materialActivation,t.materialActivation);case`material_identity`:return UN(WN(e))===UN(n);default:return YN(t)}}function JN(e){switch(e.kind){case`exact_lane`:return JSON.stringify([e.kind,kc(e.laneIdentity)]);case`export_exact_lane`:return JSON.stringify([e.kind,UN(GN(e.laneIdentity)),Fd(e.materialActivation)]);case`material_identity`:return JSON.stringify([e.kind,UN(e.materialIdentity)]);default:return YN(e)}}function YN(e){throw Error(`Unknown Ed25519 capability rehydration subject: ${String(e)}`)}function XN(e){return e.binding.kind===`ed25519_yao_client_root_v1`}function ZN(e){if(!XN(e))throw Error(`[SigningEngine][ed25519-export] export envelope has the wrong secret kind`);return e}function QN(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 $N(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<1)throw Error(`${t} is invalid`);return e}function eP(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 tP(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(QN(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=eP(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||$N(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($N(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 nP(e){let t=oP({subject:e.subject,expectedMaterialActivation:e.expectedMaterialActivation,result:e.authorization});return(await tP({subject:e.subject,authorization:t,source:e.source,expectedMaterialActivation:e.expectedMaterialActivation,relayerUrl:e.relayerUrl,fetch:e.fetch})).bootstrap}async function rP(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(QN(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=eP(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)||$N(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 iP(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 aP(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()||iP(a.capabilitySubjects,e.expectedMaterialActivation)!==1)throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization identity mismatch`)}function oP(e){switch(e.result.kind){case`found`:return aP({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 sP(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 cP(e){let t=e.subject.signer.account.wallet.walletId,n=oP({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?sP({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 rP({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:ZN(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 tP({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 lP(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 uP(e){return await e.worker.requestWorkerOperation({kind:`emailOtp`,request:{type:`getEmailOtpWarmSessionStatus`,timeoutMs:5e3,payload:{target:e.target}}})}async function dP(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 fP(e){return await e.worker.requestWorkerOperation({kind:`emailOtp`,request:{type:`clearEmailOtpWarmSessionMaterial`,timeoutMs:5e3,payload:{target:e.target}}})}async function pP(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 mP(e){return await e.workerCtx.requestWorkerOperation({kind:`emailOtp`,request:{type:`rehydrateEmailOtpEd25519YaoOperationMaterial`,timeoutMs:12e4,payload:e.payload}})}function hP(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 gP(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=hP({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 _P(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 vP(e){let{capability:t}=e;if(t.state!==`missing`){if(t.capability===`ecdsa`){if(t.state===`invalid`)return;_P({walletId:e.walletId,label:e.label,capability:t});return}gP(e)}}function yP(e){return vP({walletId:e.walletId,label:`ed25519`,capability:e.capabilities.ed25519}),vP({walletId:e.walletId,label:`ecdsa.evm`,capability:e.capabilities.ecdsa.evm}),vP({walletId:e.walletId,label:`ecdsa.tempo`,capability:e.capabilities.ecdsa.tempo}),e}function bP(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 xP(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 SP(e){return e.kind===`resolved`?$m({thresholdSessionId:e.runtime.sealedRecord.thresholdSessionId,remainingUses:e.runtime.remainingUses,expiresAtMs:e.runtime.expiresAtMs}):null}function CP(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=Jm({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=Ym({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:bP(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([xP({resolve:e.resolveActiveEcdsaWalletSessionAuthorization,walletId:a,resolution:l,statusReads:o}),xP({resolve:e.resolveActiveEcdsaWalletSessionAuthorization,walletId:a,resolution:u,statusReads:o})]);return yP({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:SP(l),authorization:d}),tempo:r({resolution:u,prfClaim:SP(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:SP(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 Zm({runtime:n.runtime,auth:t.authorization,groupId:r.groupId})}return{getWarmSession:i,getEcdsaCapabilityForLane:a,resolveEcdsaSealTransportForLane:s}}function wP(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 TP(e){return Pt({runtime:e.runtime,authorization:e.authorization})}function EP(e){let t=Wm(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 qm({thresholdSessionId:n.thresholdSessionId,status:t})}return await Km(t,n.thresholdSessionId)}async function i(e){let t=e.runtime,r=String(t.thresholdSessionId),i=wP(t);if(!e.authorization||!await TP({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=Xm({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 DP(){return{ok:!1,code:`not_found`,message:`Email OTP warm-session status reader is unavailable`}}function OP(e){let t=Wm(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()=>DP()}:{runtimeStatus:`no_runtime_status`,touchConfirm:null,getEmailOtpWarmSessionStatus:async()=>DP()}}function kP(e){let t=String(e?.groupId||``).trim();return t?{seal:`configured`,groupId:t}:{seal:`unconfigured`}}function AP(e){let t=OP(e),n=EP({touchConfirm:t.touchConfirm,getEmailOtpWarmSessionStatus:t.getEmailOtpWarmSessionStatus});return CP({resolveActiveEcdsaCapabilityRuntime:e.resolveActiveEcdsaCapabilityRuntime,resolveActiveEcdsaCapabilityRuntimeForChain:e.resolveActiveEcdsaCapabilityRuntimeForChain,statusReader:n,signingSessionSeal:kP(e.signingSessionSeal),...e.resolveActiveEcdsaWalletSessionAuthorization?{resolveActiveEcdsaWalletSessionAuthorization:e.resolveActiveEcdsaWalletSessionAuthorization}:{},...e.resolveActiveEd25519WalletSessionAuthorization?{resolveActiveEd25519WalletSessionAuthorization:e.resolveActiveEd25519WalletSessionAuthorization}:{}})}function jP(e){return!e.ok&&(e.code===`not_found`||e.code===`worker_error`)}function MP(e){let{base:t,secondary:n}=e,r=async e=>{let r=await n.readWarmSessionStatusOnly(e.thresholdSessionId);return jP(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=>jP(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=>jP(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 NP(e){let{base:t,secondary:n}=e;return{getWarmSessionStatus:async e=>{let r=await n.readWarmSessionStatusOnly(e.thresholdSessionId);return jP(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=>jP(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=>jP(e.result)?{thresholdSessionId:e.thresholdSessionId,result:s.get(e.thresholdSessionId)||e.result}:e)}}}}function PP(e){return{queueByWallet:e.queueByWallet,activationDeps:e.activationDeps,persistEcdsaRoleLocalReadyRecord:e.persistEcdsaRoleLocalReadyRecord}}function FP(e){return{getWarmSession:t=>e.capabilityReader.getWarmSession(t),discoverPersistedSessionsForWallet:e.passkeyMpcSession.discoverPersistedSessionsForWallet.bind(e.passkeyMpcSession)}}function IP(e){let t=Gl(e),n=Jl(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 LP(e,t){return await Ul(PP(e),t)}function RP(e){let t=e.error instanceof Error?e.error.message:String(e.error||`unknown error`);return{ok:!1,code:zP(e.error),chainTargetKey:e.chainTargetKey,errorMessage:t}}function zP(e){let t=qu(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 BP(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`)}),RP({chainTargetKey:i,error:e})}return{ok:!1,code:`missing_exact_material`,chainTargetKey:i}}function VP(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 HP(e){return Error(VP(e))}async function UP(e,t){await ed(e.ensureSealedRefreshStartupParity,IP(t));let n=z(Gl(t));switch(t.kind){case`reuse_warm_ecdsa_bootstrap`:{let r=await BP(FP(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 LP(e,t)}}throw Error(`[SigningEngine][ecdsa] unsupported warm bootstrap request`)}function WP(e){return typeof e?.clearAllVolatileWarmSessionMaterial==`function`}function GP(e){return typeof e?.clearVolatileWarmSessionMaterial==`function`}async function KP(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 qP(e,t){if(t==null&&WP(e.touchConfirm)){await e.touchConfirm.clearAllVolatileWarmSessionMaterial(Mm()).catch(()=>void 0);return}let n=t==null?[]:await KP(t);GP(e.touchConfirm)&&await Promise.all(n.map(t=>e.clearVolatileThresholdSessionMaterial(jm(t)).catch(()=>void 0)))}function JP(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 YP(e){return{kind:`router_ab_ecdsa_derivation_client_signing_material_source_v1`,initClientPresignSession:async t=>{let n=JP(await bd({purpose:`wallet_unlock`,source:md({authority:e.manifest.signer.authority,materialActivation:e.manifest.durableMaterial.materialActivation,publicFacts:e.manifest.durableMaterial.roleLocalPublicFacts}),workerCtx:t.workerCtx}));return await vu({materialHandle:n.liveHandle.materialHandle,material:{kind:`persisted`,materialRef:n.materialRef},...t})},stepClientPresignSession:Au,abortClientPresignSession:du,admitClientPresignature:uu,destroyClientPresignature:fu,reserveClientPresignature:lu,commitClientPresignature:zu,listAvailableClientPresignatures:xu.bind(void 0,`role_local_derivation_handle`),computeSignatureShareFromPresignatureHandle:Su}}function XP(e){let t={exportArtifactsByLane:e.ecdsaExportArtifacts.exportArtifactsByLane},n=NP({base:e.passkeyMpcSession,secondary:{readWarmSessionStatusOnly:t=>e.getEmailOtpWarmSessionStatus({kind:`ecdsa`,thresholdSessionId:t})}}),r=EP({touchConfirm:n,getEmailOtpWarmSessionStatus:e.getEmailOtpWarmSessionStatus});return{ecdsaSessions:t,statusUiConfirm:n,capabilityReader:AP({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 ZP(e){return{getWarmSession:t=>e.warmSigning.capabilityReader.getWarmSession(z(t)),provisionThresholdEd25519Session:async t=>await Sm({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 UP({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 HP(n.failure)}throw Error(`[SigningEngine][ecdsa] unsupported warm bootstrap result`)}}}function QP(e){return{statusReader:e.warmSigning.statusReader,persistThresholdEcdsaBootstrapForWalletTarget:async t=>await Tm({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 qP({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:YP}}function $P(e){return{availableLanes:{activeWalletAuthorityEcdsaRuntimeReadPorts:Nh,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 eF(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=Uu(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=Wu({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 Vu({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 Vu({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 tF(e,t){let n=await e.statusReader.getEd25519SigningSessionStatus(t),r=t.authorization?Dp({owner:bp(t.runtime.walletId),authorization:{walletSessionId:t.authorization.operationCredential.walletSessionId,quotaId:t.authorization.session.quotaId}}):null;return Ep(n,r?await Tp({getAvailableStatus:e.getWalletSessionStatus},r):null)}async function nF(e,t){return await eF({getSignerWorkerContext:e.getSignerWorkerContext,resolveClientSigningMaterialSource:e.resolveClientSigningMaterialSource,routerAbEcdsaDerivationPresignaturePoolPolicy:e.routerAbEcdsaDerivationPresignaturePoolPolicy},t)}async function rF(e,t){await e.hydrateSigningSession(t)}async function iF(e,t){await e.clearVolatileWarmSigningMaterial(t)}function aF(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 oF(e){return{capabilities:{ed25519:aF(e.capabilities.ed25519),ecdsa:{evm:aF(e.capabilities.ecdsa.evm),tempo:aF(e.capabilities.ecdsa.tempo)}}}}function sF(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 cF(e){return String(e||``).trim()||void 0}function lF(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 uF(e){return e.kind===`exact_ed25519_provisioning`?z(Ac(e.laneIdentity,`exact Ed25519 capability provisioning`).walletId):z(e.walletId)}function dF(e){return kr(e.kind===`exact_ed25519_provisioning`?Ac(e.laneIdentity,`exact Ed25519 capability provisioning`).nearAccountId:e.nearAccountId)}async function fF(e,t){let n=dF(t),r=uF(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=cF(a.thresholdSessionId);if(!o)throw Error(`[WarmSessionStore] provisioned Ed25519 capability is missing thresholdSessionId for ${n}`);let s=await e.getWarmSession(r);return lF({walletId:r,expectedThresholdSessionId:o,persistedSessionIdRaw:s.capabilities.ed25519.runtime?.thresholdSessionId}),sF({onTransition:e.onTransition,event:{type:`ed25519_capability_provisioned`,walletId:r,thresholdSessionId:o,before:oF(i),after:oF(s)}}),a}async function pF(e,t){return await fF({getWarmSession:t=>e.getWarmSession(t),provisionThresholdEd25519Session:async t=>await e.provisionThresholdEd25519Session(t)},t)}async function mF(e,t){return await e.bootstrapEcdsaSession(t)}function hF(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 gF(e){throw Error(`[SigningEngine] unsupported threshold ECDSA bootstrap backend binding: ${JSON.stringify(e)}`)}async function _F(e){let t=e.bootstrap.thresholdEcdsaKeyRef.backendBinding;if(!t)throw Error(`[SigningEngine] ECDSA bootstrap is missing its backend binding`);let n=vF(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 vF(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 gF(e)}}async function yF(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 Zl(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 Tm({bootstrapStore:e.bootstrapStore,walletId:t.walletId,chainTarget:t.chainTarget,bootstrap:n,signerAuth:hF(t.source)}),await _F({deps:e,bootstrap:n}),{bootstrap:n,authorization:await iu(q,{walletId:t.walletId,authority:t.authority,bootstrap:n})}})}async function bF(e,t){let n=t.source===`email_otp`?await yF(e,{walletId:t.walletId,chainTarget:t.chainTarget,bootstrap:t.bootstrap,source:`email_otp`,authority:t.authority,emailOtpAuthContext:t.emailOtpAuthContext}):await yF(e,{walletId:t.walletId,chainTarget:t.chainTarget,bootstrap:t.bootstrap,source:t.source,authority:t.authority});return{bootstrap:n.bootstrap,authorization:n.authorization}}function xF(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 SF(){return typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now()}function CF(){return{signingSessionSealApplyMs:0,warmCapabilityPersistenceMs:0}}function wF(e,t,n){e[t]+=Math.max(0,Math.round(SF()-n))}function TF(e,t){e.signingSessionSealApplyMs+=t.signingSessionSealApplyMs,e.warmCapabilityPersistenceMs+=t.warmCapabilityPersistenceMs}function EF(e){let t=String(e||``).trim().toLowerCase();return/^0x[0-9a-f]{40}$/.test(t)?t:null}function DF(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 xF(e.configs))r(t);return t}function OF(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 kF(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:vd({authority:e.existingKey.persistedRoleLocalMaterial.authority,materialActivation:e.existingKey.persistedRoleLocalMaterial.materialActivation,publicFacts:n}),runtimePolicyScope:e.existingKey.runtimePolicyScope}}function AF(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:vd({authority:e.signer.authority,materialActivation:e.activation.materialActivation,publicFacts:t}),runtimePolicyScope:e.durableMaterial.runtimePolicyScope}}async function jF(e){let t=e.scope.kind===`exact`?OF({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(AF).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 kF({existingKey:i[0],chainTarget:e.chainTarget})}function MF(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 NF(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:PF(e.normalSigning)}}function PF(e){return uo(e)}async function FF(e,t){if(e.bootstraps.length!==e.publicationChainTargets.length)throw Error(`Email OTP ECDSA publication returned an unexpected lane count`);let n=CF(),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(LF.bind(null,a))),s=o.map(IF);for(let e of o)TF(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 IF(e){return e.result}async function LF(e,t){let n=CF(),r=t.bootstrap,i=SF(),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 wF(n,`warmCapabilityPersistenceMs`,i),TF(n,await RF({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 RF(e,t){let n=CF();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=MF({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=EF(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=NF({warmThresholdSessionId:ee,normalSigning:w}),te=await U({authority:e.emailOtpAuthContext.authority}),ne=await jF({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=SF(),N=await lP({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(wF(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=SF(),de=await jF({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(wF(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||!zF(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 zF(e,t){return e.kind===t.kind&&e.durableMaterialRef===t.durableMaterialRef&&e.bindingDigest===t.bindingDigest&&b(e.materialActivation,t.materialActivation)}function BF(e){return{thresholdSessionId:nc.thresholdEcdsaSession(e.thresholdSessionId)}}function VF(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 HF(e){if(e.workerResult){switch(e.workerResult.kind){case`wallet_custody_cache_absent`:return;case`ed25519_yao_capability`:if(!await Uv({workerContext:e.workerContext,activeClientHandle:e.workerResult.activeClientHandle}))throw Error(`Email OTP capability unlock local Ed25519 client was unavailable`);return}e.workerResult}}function UF(){return typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now()}async function WF(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 GF(){return{emailOtpProofVerificationMs:0,ecdsaMaterialRestoreMs:0,signingSessionSealApplyMs:0,warmCapabilityPersistenceMs:0}}function KF(e,t,n){e[t]+=Math.max(0,Math.round(UF()-n))}function qF(e,t){e.signingSessionSealApplyMs+=t.signingSessionSealApplyMs,e.warmCapabilityPersistenceMs+=t.warmCapabilityPersistenceMs}function JF(e,t){let n=String(e||``).trim();if(!n)throw Error(`[SigningEngine][email-otp] ${t} is required`);return n}function YF(e){return{provider:e.identity.provider,providerUserId:JF(e.identity.providerUserId,`Email OTP provider user id`)}}async function XF(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 ZF(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 QF(e){if(e.authoritySelector.kind===`wallet_auth_method`)return await ZF({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 XF({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 Fl({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 $F(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 eI(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 tI(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 nI(e){if(e.operation!==e.routePlan.operation)throw Error(`Email OTP operation does not match its route plan`)}function rI(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 iI(e){if(!Wc(e))throw Error(`Email OTP ECDSA export requires single-use authorization`);return e}function aI(e){let t=Be({ttlMs:e.ttlMs??ze.ttlMs,remainingUses:e.remainingUses});return{ttlMs:t.ttlMs,remainingUses:t.remainingUses}}function oI(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 sI(e){return e.ed25519YaoResult?oI({bootstrap:e.ed25519YaoResult.kind===`wallet_custody_cache_absent`?e.ed25519YaoResult.ed25519YaoRecovery:e.ed25519YaoResult.ed25519YaoCapability,expectedRemainingUses:e.requestedRemainingUses}):aI({ttlMs:e.requestedTtlMs,remainingUses:e.requestedRemainingUses})}function cI(e){if(!e)throw Error(`Email OTP capability recovery requires explicit wallet unlock`);return e}function lI(e){return{kind:`router_ab_ecdsa_post_registration_session_activation_policy_v1`,key_handle:String(e.keyHandle),session_policy:e.request.session_policy}}function uI(e){return{kind:`router_ab_ecdsa_post_registration_session_activation_policy_v1`,key_handle:String(e.keyHandle),session_policy:{threshold_session_id:gI(e.thresholdSessionId),wallet_session_mint_id:_I(e.walletSessionMintId),ttl_ms:e.ttlMs,remaining_uses:e.remainingUses,runtime_policy_scope:e.runtimePolicyScope}}}function dI(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 fI(e){if(!e)throw Error(`Email OTP unlock did not return its prepared ECDSA Wallet Session`);return e}function pI(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 mI(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 hI(e){let t=e.restore.ecdsaCustody,n=pI(t.continuity,e.walletId,e.keyHandle);await e.restoreWalletCustodyEcdsaContinuity({authority:e.authority,chainTargets:mI(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 gI(e){let t=T(e);if(!t.ok)throw Error(`Failed to create Email OTP threshold session identity`);return t.value}function _I(e){let t=ft(e);if(!t.ok)throw Error(`Failed to create Email OTP Wallet Session mint identity`);return t.value}function vI(e){if(!e)throw Error(`Email OTP ECDSA bootstrap requires route auth`);return e}function yI(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 bI(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 xI(e){if(e.emailOtpWorkerSessionHandle.action!==`threshold_ecdsa_bootstrap`)throw Error(`Email OTP ECDSA activation requires a threshold ECDSA worker handle`);let t=BF({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`?Xl({...r,preauthorizedSessionActivation:e.authorization.sessionActivation}):Vl({...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 zl({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 SI(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 Ql({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 CI(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=Rl(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:BF({thresholdSessionId:n.threshold_session_id}),authorization:{kind:`preauthorized_wallet_unlock`,sessionActivation:e.response}}}}}async function wI(e){let t=Id(e.emailOtpSessionHandle);if(t.action!==`threshold_ecdsa_bootstrap`)throw Error(`Email OTP wallet unlock returned an invalid ECDSA worker handle`);let n=CI(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 TI(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(TI.bind(null,s)))];if(!a)throw Error(`Email OTP ECDSA activation did not return a primary warm session`);return c}async function TI(e,t){let n=kF({existingKey:e.args.primaryExistingKey,chainTarget:t});return await e.args.ports.provisionThresholdEcdsaSession(xI({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 EI(e){return await e.ports.provisionEmailOtpEcdsaExplicitExportSession(Kl({relayerUrl:e.relayerUrl,existingRoleLocalMaterial:e.persistedMaterial,authorization:e.authorization}))}function DI(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 OI(e){let t=e.runtimePolicyScope;if(!t)throw Error(`Email OTP ECDSA signing refresh requires runtimePolicyScope`);return t}function kI(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 AI(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{...kI(e.committedLane),runtimePolicyScope:OI({runtimePolicyScope:t.runtime.runtimePolicyScope})}}async function jI(e,t){let n=Wr,r=DI(e.remainingUses),i=e.committedLane,a=await AI({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 MI(e,t){let n=e.operation??e.routePlan.operation;nI({operation:n,routePlan:e.routePlan});let r=GF(),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=YF({identity:e.providerIdentity}),w=await QF({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=$F({source:w,runtimePolicyScope:S,authorityRef:await U({authority:T.authority})}),D=DF({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 jF({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?gI(tl(`threshold-ecdsa-login`)):null,N=ne&&re&&A?Wl({publicCapability:A.publicCapability,thresholdSessionId:re,walletSessionMintId:_I(tl(`wallet-session-mint`)),ttlMs:ne.ttlMs,remainingUses:ne.remainingUses,runtimePolicyScope:M}):null,ie=ne&&re?uI({keyHandle:j,thresholdSessionId:re,walletSessionMintId:_I(tl(`wallet-session-mint`)),ttlMs:ne.ttlMs,remainingUses:ne.remainingUses,runtimePolicyScope:M}):null,ae=UF(),oe=n===`export_key`?eI(e):null,se=oe?{walletSession:e.walletSession,authoritySelector:e.authoritySelector,relayUrl:u,groupId:d,verification:tI(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?lI({request:N,keyHandle:j}):ie}:{ecdsaSessionHandleBinding:bI({keyHandle:j,authSubjectId:C.providerUserId,operation:yI(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?lI({request:N,keyHandle:j}):cI(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 hI({restore:le,walletId:String(e.walletSession.walletId),keyHandle:j,authority:n,restoreWalletCustodyEcdsaContinuity:t.restoreWalletCustodyEcdsaContinuity})}if(!A&&(A=await jF({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?Wl({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`?iI(T):null,s=n===`export_key`?Vd(le.emailOtpSessionHandle):null;s&&o&&rI({handle:s,existingKey:A,chainTarget:i,emailOtpAuthContext:o}),KF(r,`emailOtpProofVerificationMs`,ae);let c=a?dI(le,de):null,l=c?aI({ttlMs:e.ttlMs,remainingUses:_}):sI({ed25519YaoResult:ue,requestedTtlMs:e.ttlMs,requestedRemainingUses:_});if(ae=UF(),n===`export_key`){if(!s||!o)throw Error(`Email OTP ECDSA export worker handle is unavailable`);let n=eI(e),i=await EI({relayerUrl:u,persistedMaterial:n.persistedExportMaterial,authorization:n.explicitExportAuthorization,ports:t});return KF(r,`ecdsaMaterialRestoreMs`,ae),{kind:`transient_export`,value:{bootstrap:i}}}let f=await wI({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:fI(c)}:{kind:`route_authorized`,sessionIdentity:BF({thresholdSessionId:tl(`threshold-ecdsa-login`)}),routeAuth:vI(x)},ports:t});KF(r,`ecdsaMaterialRestoreMs`,ae);let{bootstrap:p,authorization:m,authorizations:h,timings:g}=await FF({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 WF({workerContext:v,unlock:ce,authorization:m,walletAuthMethodId:String(T.authority.bindingId)}),qF(r,g),{kind:`published_signing_session`,value:{recovery:ce.recovery,bootstrap:p,authorization:m,authorizations:h,emailOtpSessionHandle:le.emailOtpSessionHandle,ed25519YaoRecovery:VF(ue),timings:r}}}catch(e){try{await HF({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 NI(e,t){if((e.operation??e.routePlan.operation)===`export_key`)throw Error(`Email OTP ECDSA export must use transient export preparation`);let n=await MI(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 PI(e,t){let n=await MI(e,t);if(n.kind!==`transient_export`)throw Error(`Email OTP ECDSA export preparation published a signing session`);return n.value}var FI=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 II(e){return Ic({policy:`session`,authority:e,retention:`session`,reason:`login`})}function LI(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 RI(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:LI(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:vd({authority:e.authority,materialActivation:e.roleLocalMaterialRef.materialActivation,publicFacts:r})}}function zI(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 BI(e){let{sealedRecord:t}=e,n=zI(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:II(t.emailOtpAuthority),authorization:e.authorization,relayerUrl:t.relayerUrl,chainTarget:t.chainTarget,keyHandle:t.keyHandle,...n,...t.runtimePolicyScope?{runtimePolicyScope:t.runtimePolicyScope}:{}}}async function VI(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 HI(e){if(e.authBinding.kind!==`email_otp`)throw Error(`Email OTP sealed refresh runtime is not Email OTP bound`);return e.authBinding.emailOtpAuthority}function UI(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 fd({capability:e.capability,selected:e.selected,session:t,operationCredential:n,runtime:e.runtime,nowMs:e.nowMs})}function WI(e){return async t=>await GI({...e,...t})}async function GI(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:kd({materialActivation:n}),walletId:z(t.walletId),enabled:!0,task:async()=>await KI(e)})}async function KI(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 FI(`before_rehydrate`);let a=await VI(e.resolveSelectedWalletAuthority,r),o=await e.readExactWalletSessionAuthorization({walletId:r,authorityId:a.authority.authorityId,authMethodId:a.authMethod.walletAuthMethodId}),s=await RI(t),c=await nd({authority:HI(i.runtime),manifest:i.manifest,material:s.persistedRoleLocalMaterial}),l=BI({sealedRecord:t,authorization:UI({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=PF(t.routerAbEcdsaDerivationNormalSigning),h=await pP({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=Id(h.emailOtpSessionHandle),_=await e.provisionThresholdEcdsaSession(SI({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 FI(`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:fd({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 qI=class{constructor(e){this.ports=e}async loginWithEcdsaCapabilityForSigning(e){return await jI(e,{resolveCurrentEcdsaCapabilityRuntime:this.ports.resolveCurrentEcdsaCapabilityRuntime,loginWithEcdsaCapabilityInternal:e=>this.loginWithEcdsaCapabilityInternal(e)})}async loginWithEcdsaCapabilityInternal(e){return await NI(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 PI(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 JI(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 YI(e){return e===`near`?`ed25519`:`ecdsa`}function XI(e){let t=e.authLane;return t?.kind!==`signing_session`&&zn({kind:`auth_lane_missing`,source:`provided_route_auth`,expectedCurve:YI(e.chain)}),t}async function ZI(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 JI(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 QI(e,t){let n=$I(e,t);return t.kind===`near_account_challenge`?await ZI(e,{kind:`near_account`,walletSession:t.walletSession,routePlan:n,...t.operationFingerprintDigest?{operationFingerprintDigest:t.operationFingerprintDigest}:{}}):await ZI(e,{kind:`wallet_session`,walletId:t.walletSession.walletId,routePlan:n,...t.operationFingerprintDigest?{operationFingerprintDigest:t.operationFingerprintDigest}:{}})}function $I(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:XI({authLane:t.authLane,chain:t.chain}),operation:Wr})}}async function eL(e,t){let n=tL(e,t);return t.kind===`near_account_challenge`?await ZI(e,{kind:`near_account`,walletSession:t.walletSession,routePlan:n}):t.kind===`wallet_export_challenge`?await ZI(e,{kind:`wallet_session`,walletId:t.walletId,routePlan:n}):await ZI(e,{kind:`wallet_session`,walletId:t.walletSession.walletId,routePlan:n})}function tL(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:XI({authLane:t.authLane,chain:t.chain}),operation:qr});case`wallet_export_challenge`:return pr({routeFamily:`login`,operation:qr})}}function nL(e){return pr({routeFamily:`login`,operation:qr})}function rL(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 iL(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:rL(t.exportContext)}}});switch(a.kind){case`exported`:return a;case`exported_and_rehydrated`:if(t.exportContext.material.kind!==`sealed_custody`)throw await Uv({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 Uv({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 Uv({workerContext:n,activeClientHandle:a.activeClientHandle}).catch(()=>void 0),e}return a;default:throw Error(`Email OTP Ed25519 export returned an invalid result`)}}async function aL(e,t){let n=nL(t.explicitExportAuthorization);return await oL({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 oL(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 Yl({getSignerWorkerContext:()=>n},{walletSessionUserId:e.walletSession.walletSessionUserId,exportProvision:t.bootstrap,factorAuthorization:{kind:`email_otp_verified`}})}var sL=class{constructor(e){this.ports=e}async requestTransactionSigningChallenge(e){return await QI(this.workerPorts(),e)}async requestExportChallenge(e){return await eL(this.workerPorts(),e)}async exportEcdsaKeyWithDurableAuthorization(e){return await aL({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 iL({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}}},cL=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}},lL=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 RF({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())}},uL=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 dL={listed:0,discovered:0,truncated:0},fL={kind:`completed`,attempted:0,restored:0,deferred:0};var pL=class{constructor(e){this.ports=e,this.restoreCache=Dj(),this.restoreAttempts=Oj(),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{...dL};let t=String(z(e.walletId)||``).trim();if(!t)return{...dL};let n=await Aj({...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{...fL};let t=String(z(e.walletId)||``).trim();return t?await kj({...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`)})}}):{...fL}}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=fj(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),Fd(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 mL(e){let t=_L(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 hL(e){let t=_L(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 gL(e){let t=_L(e.target);t&&await e.clearVolatileWarmSessionMaterialFromWorker(t).catch(()=>void 0)}function _L(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 vL(e){return{async readStatus(t){return await uP({worker:e.worker,target:t})},async consumeUses(t){return await dP({worker:e.worker,target:t.target,...typeof t.uses==`number`?{uses:t.uses}:{}})},async clearMaterial(t){await fP({worker:e.worker,target:t})}}}var yL=class{constructor(e){this.ports=e}async readWarmSessionStatusOnly(e){return await mL({target:e,readWarmSessionStatusFromWorker:e=>this.ports.workerClient.readStatus(e)})}async consumeWarmSessionUses(e){return await hL({target:bL(e),...typeof e.uses==`number`?{uses:e.uses}:{},consumeWarmSessionUsesFromWorker:e=>this.ports.workerClient.consumeUses(e),ecdsaPurpose:ZA(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 gL({target:e,clearVolatileWarmSessionMaterialFromWorker:e=>this.ports.workerClient.clearMaterial(e)})}};function bL(e){let t=XA(e);return e.purpose.curve===`ecdsa`?{kind:`ecdsa`,thresholdSessionId:t}:{kind:`ed25519_yao`,thresholdSessionId:t,materialActivation:e.purpose.materialActivation}}var xL=class{constructor(e){this.sealedRefreshDiagnosticLogAtMsByKey=new Map,this.runtimeConfig=new cL({configs:e.configs,getRpId:e.getRpId}),this.sealedSessionRegistry=new lL({configs:e.configs,getSignerWorkerContext:e.getSignerWorkerContext,commitEvmFamilyThresholdEcdsaSessions:e.commitEvmFamilyThresholdEcdsaSessions,listActiveEcdsaCapabilityManifestsForWallet:e.listActiveEcdsaCapabilityManifestsForWallet,writeExactSealedSession:e.writeExactSealedSession,readExactSealedSession:e.readExactSealedSession,clearEcdsaRestoreCaches:()=>this.clearEcdsaRestoreCaches()}),this.ecdsaLifecycleRuntime=new qI({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 sL({getSignerWorkerContext:e.getSignerWorkerContext,requireRelayUrl:()=>this.runtimeConfig.requireRelayUrl(),requireSigningSessionSealGroupId:()=>this.runtimeConfig.requireSigningSessionSealGroupId(),resolveSelectedWalletAuthority:e.resolveSelectedWalletAuthority,prepareEcdsaExportCapability:e=>this.ecdsaLifecycleRuntime.prepareEcdsaExportCapability(e)});let t=WI({withThresholdEcdsaSigningQueue:e.withThresholdEcdsaSigningQueue,getSignerWorkerContext:e.getSignerWorkerContext,resolveSelectedWalletAuthority:e.resolveSelectedWalletAuthority,readExactWalletSessionAuthorization:e.readExactWalletSessionAuthorization,provisionThresholdEcdsaSession:e.provisionThresholdEcdsaSession,commitEvmFamilyThresholdEcdsaSessions:e.commitEvmFamilyThresholdEcdsaSessions,resolveCurrentEcdsaCapabilityRuntime:e.resolveCurrentEcdsaCapabilityRuntime}),n=vL({worker:e.signerWorkerManager});this.sealedRefreshPolicy=new uL({updateExactSealedSessionPolicy:e.updateExactSealedSessionPolicy,clearEcdsaRestoreCaches:()=>this.clearEcdsaRestoreCaches()}),this.sealedRestoreOrchestrator=new pL({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 yL({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 SL(e){let t=new xL({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=>Sd({queueByKey:e.thresholdEcdsaSigningQueueByKey,...t}),provisionEmailOtpEcdsaExplicitExportSession:e.provisionEmailOtpEcdsaExplicitExportSession,commitEvmFamilyThresholdEcdsaSessions:t=>bF({queueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,bootstrapStore:e.ecdsaBootstrapStore,persistEcdsaRoleLocalReadyRecord:e.persistEcdsaRoleLocalReadyRecord,ensureSealedRefreshStartupParityForThresholdEcdsaBootstrap:t=>ed(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=MP({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 CL(e){return SL({resolveActiveEcdsaCapabilityRuntime:yv,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=>ql({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 wL(e){return{passkeyPublicDeps:ZP({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:QP({seamsWebConfigs:e.seamsWebConfigs,bootstrapStore:e.stores.walletProfileAndSignerRecords.ecdsaBootstrapStore,passkeyMpcSession:e.passkeyMpcSession,warmSigning:e.warmSigning,walletSessionActivationDeps:e.enginePorts.walletSessionActivationDeps,signingSessionCoordinator:e.enginePorts.signingSessionCoordinator})}}function TL(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 EL(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 DL(e){if(!TL({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=>EL({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 OL(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 kL(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:OL(e)}}function AL(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 jL(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 ML(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=AL(await _v(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:jL({manifest:r,remainingUses:t})}}function NL(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 PL(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||!NL({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 FL(e){return await Ms(K,e)}async function IL(){return null}const LL={getWalletAuthMethodV2:e=>K.getWalletAuthMethodV2(e),listWalletAuthMethodsForWallet:e=>K.listWalletAuthMethodsForWallet(e),getWalletPasskeyAuthenticator:IL,readEmailOtpProviderSubjectForWallet:FL};async function RL(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 zL(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 BL(e){let t=await Fl({authMethod:e.authMethod,stores:LL});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 VL(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 HL(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 BL({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 UL(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=zL({walletId:e.walletId,walletAuthMethodId:r.walletAuthMethodId,authorityDigestB64u:i.authorityDigestB64u}),o=await U({authority:await BL({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 WL(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 GL(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 BL({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`?WL(c):{kind:`found`,authorization:{selectedAuthority:i,selectedAuthMethod:a,factorAuthority:o,record:s.record,operationCredential:s.operationCredential,status:c}}}function KL(e,t){return globalThis.fetch(e,t)}function qL(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 JL(e.subject)}}function JL(e){throw Error(`Unknown Ed25519 capability rehydration subject: ${String(e)}`)}async function YL(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 XL(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)&&TR(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 ZL(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 QL(e){return e.kind===`wallet_authority_linked_signer_material_v1`&&e.keyFamily===`ed25519`}function $L(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(!(!QL(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 eR(e){let t=null;for(let n of e.signerMaterials)if(!(!QL(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 tR(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 nR(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 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)&&TR(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 iR(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 aR(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 iR({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 oR(e){let t=await Rt(e);if(t.kind!==`resolved`)throw cf(t.kind===`conflict`?`runtime_conflict`:`missing_runtime`);return t.runtime}async function sR(e){let t=await nn(wd({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)||!TR(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 cR(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&&ER({runtime:t,identity:e.identity}));if(t.length===0)throw cf(`missing_runtime`);if(t.length!==1)throw cf(`runtime_conflict`);return t[0]}function lR(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 uR(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(!lR({walletId:e.walletId,proof:e.proof,selected:t}))throw Error(`[SigningEngine][near] operation step-up authority does not match selection`);let n=await Nm({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=Rv(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 dR(e){let t=await X_(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 fR(e){let{identity:t}=e;if(t.auth.kind!==V.passkey)throw cf(`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 cf(`binding_mismatch`);let r=await Nm({selected:{authMethod:n.authMethod,authority:n.authority},operation:{kind:`near_sign`,operation:`sign`,keyFamily:`ed25519`}});if(r.kind!==`resolved`)throw cf(`missing_capability`);let i=await RL({walletId:e.walletId,rpId:t.auth.rpId,credentialIdB64u:t.auth.credentialIdB64u});if(!i||i.walletAuthMethodId!==n.authMethod.walletAuthMethodId)throw cf(`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 cf(`missing_runtime`);if(!b(a.locator.materialActivation,r.value.materialActivation))throw cf(`binding_mismatch`);let o=a.locator.stableServerScope,s=ke(o.runtimePolicyScope);if(!s.signingRootVersion)throw cf(`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 mR({store:K,identity:c,authority:i,publicLocator:l});if(u.kind===`blocked`)throw lf(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 pR(e){if(e.factor.kind!==V.passkey)throw cf(`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 mR(e){try{return await Mn(e)}catch{throw cf(`binding_mismatch`)}}async function hR(e){try{return await hr(e)}catch{throw cf(`corrupt`)}}function gR(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 _R(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 vR(e){return _R(e).auth}function yR(e){return e.auth===void 0?e.materialIdentity.auth:e.auth}function bR(e){return _R(e).signer}function xR(e){return String(_R(e).thresholdSessionId)}function SR(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 CR(e){return{walletId:e.walletId,nearAccountId:e.nearAccountId,materialIdentity:_R(e)}}async function wR(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 TR(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 ER(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)&&TR(e.runtime.auth,e.identity.auth)}function DR(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:bR(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 OR(e){let t=vR(e),n=yR(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 kR(e){let t=e.material.facts,n=e.material.activeClient.metadata(),r=xR(e.input),i=bR(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 AR(e){let t=wc(e.material.activeClient.metadata());if(!Fc({session:e.authorization.session,materialActivation:t}))throw Error(`Owner Ed25519 execution-lane material changed`);kR({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(gR(e.material).kind!==`live`)throw Error(`Owner Ed25519 signing requires active Yao material`)}function jR(e){let t=e.hydration.materialActivation;if(!t)throw Error(`[SigningEngine][near] prepared material has no activation`);return t}function MR(e){let t=jR(e.preparation);if(!e.context.materialActivation||!b(e.context.materialActivation,t))throw Error(`[SigningEngine][near] prepared material boundary changed activation`);return t}function NR(e){return ac({credential:e,firstPrfOutput:!0,secondPrfOutput:!0})}async function PR(e,t){return e.current?await e.current.storage.loadEcdsaRoleLocalReadyRecord(t):{ok:!1,code:`unavailable`,message:`Signing runtime storage is not initialized`}}function FR(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 IR(t)}}function IR(e){throw Error(`Unsupported SDK lifecycle event: ${String(e)}`)}async function LR(e){if(!K.isDisabled())return await K.getAppState(e)}async function RR(e,t){K.isDisabled()||await K.setAppState(e,t)}const zR={readCacheEntry:LR,writeCacheEntry:RR};var BR=class{readNearEd25519SigningCandidate(e){return J_(String(this.seamsWebConfigs.network.relayer?.url||``).trim(),new el,e)}readExactNearEd25519WalletSessionAuthorization(e){return Y_(String(this.seamsWebConfigs.network.relayer?.url||``).trim(),new el,e)}resolveActiveNearEd25519WalletSessionAuthorization(e,t){return X_(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(zR),this.seamsWebConfigs=e,this.ed25519YaoPublicCapabilityReferences=n.ed25519YaoPublicCapabilityReferences,this.appearance=e.ui.appearance,this.nearClient=t,this.ecdsaBootstrapStore=n.signingEngineStores.walletProfileAndSignerRecords.ecdsaBootstrapStore,this.sealedRefreshStartupParityPromise=MN({configs:this.seamsWebConfigs}).catch(e=>{this.sealedRefreshStartupParityError=e instanceof Error?e:Error(String(e||`sealed refresh parity check failed`))});let r={current:null},i=PR.bind(null,r),a=yN({resolveActiveEcdsaCapabilityRuntime:yv,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=CL({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:_v});this.emailOtpSessions=c.emailOtpSessions,this.touchConfirm=c.touchConfirm,this.passkeyMpcSession=c.passkeyMpcSession,this.warmSigning=XP({resolveActiveEcdsaCapabilityRuntime:yv,resolveActiveEcdsaCapabilityRuntimeForChain:bv,touchConfirm:this.touchConfirm,passkeyMpcSession:this.passkeyMpcSession,getEmailOtpWarmSessionStatus:e=>this.emailOtpSessions.readWarmSessionStatusOnly(e),signingSessionSeal:this.seamsWebConfigs.signing.sessionSeal,ecdsaExportArtifacts:s,resolveActiveEcdsaWalletSessionAuthorization:rv({seamsWebConfigs:this.seamsWebConfigs,touchIdPrompt:this.touchIdPrompt,stores:n.signingEngineStores,emailOtpSessions:this.emailOtpSessions,sealedSigningSessionStore:n.sealedSigningSessionStore}),resolveActiveEd25519WalletSessionAuthorization:this.resolveActiveNearEd25519WalletSessionAuthorization.bind(this)}),this.listPreprocessingCapabilities=nv.bind(null,{seamsWebConfigs:this.seamsWebConfigs,touchIdPrompt:this.touchIdPrompt,stores:n.signingEngineStores,emailOtpSessions:this.emailOtpSessions,sealedSigningSessionStore:n.sealedSigningSessionStore}),this.sessionPublicDeps=$P({seamsWebConfigs:this.seamsWebConfigs,touchConfirm:this.touchConfirm,passkeyMpcSession:this.passkeyMpcSession,emailOtpSessions:this.emailOtpSessions,ed25519YaoPublicCapabilityLanes:n.ed25519YaoPublicCapabilityReferences,isEd25519YaoPublicCapabilityActive:this.isEd25519YaoPublicCapabilityActive.bind(this),readActiveWalletSessionAuthorization:Y_.bind(null,this.seamsWebConfigs.network.relayer.url),listEcdsaSigningCapabilitiesForWallet:(e,t)=>dv({seamsWebConfigs:this.seamsWebConfigs,touchIdPrompt:this.touchIdPrompt,stores:n.signingEngineStores,emailOtpSessions:this.emailOtpSessions,sealedSigningSessionStore:n.sealedSigningSessionStore},e,t),getWalletSessionStatus:V_({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=N_({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:Y_.bind(null,this.seamsWebConfigs.network.relayer.url),listEcdsaSigningCapabilitiesForWallet:(e,t)=>dv({seamsWebConfigs:this.seamsWebConfigs,touchIdPrompt:this.touchIdPrompt,stores:n.signingEngineStores,emailOtpSessions:this.emailOtpSessions,sealedSigningSessionStore:n.sealedSigningSessionStore},e,t),resolveOwnerLaneScope:e=>this.resolveSelectedOwnerLaneScope(e)}),this.enginePorts=Cv({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 fO(typeof window>`u`?null:window,this.enginePorts.ed25519YaoActiveClients);let l=wL({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 uR({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 TO({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:pO({admissionRequest:e.admissionRequest,activationResultJson:n})}}async recoverWalletCustodyManifest(e){return await RO({...e,runStep:Hn(this.walletCustodyCeremonyTransportV1()),workerCtx:this.signerWorkerManager.getContext()})}async createWalletRecoveryReplacementCredential(e){let t=Ct(`wallet-recovery:${e.registration.challengeId}`),n=kL(NR(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 TO({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:pO({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 yO({basis:e.recoveryBasis}),r=await bO({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=>xO({executeRequestJson:e,transport:t}),activateRouterRecovery:e=>SO({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:mO({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 Pu({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 Vm(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 Hm(this.sessionPublicDeps,e,t)}async readOwnerScopedSigningLanes(e,t){return await Um(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 sf(`wallet_locked`);if(i.status!==`active`)throw sf(`method_unavailable`);if(a.state!==`active`)throw sf(`authority_unavailable`);if(a.provenance.kind===`device_link`&&i.kind===`passkey`&&a.signerActivations.ed25519)return Bl({authMethod:i,signerSlot:await eR({walletId:t.value,authMethod:i,signerMaterials:r.signerMaterials,publicLaneStore:this.ed25519YaoPublicCapabilityReferences})});if(a.provenance.kind===`device_link`&&i.kind===`passkey`&&a.signerActivations.ecdsa)return eu({authMethod:i});if(a.provenance.kind===`device_link`&&i.kind===`email_otp`&&a.signerActivations.ecdsa){let e=_d({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 tu({authMethod:i,factorAuthority:e.factorAuthority,authorityRef:n})}return await Il({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 X_(n.value,t,new el))?.operationCredential.token;if(!r)return;let i=await NE({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(!cd(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 Yd(this.enginePorts.nearSigningDeps,e)}catch(e){throw uf(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=JN(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=_R(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 XL({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=gR(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`?sf(a.reason):Error(`[SigningEngine][near] Wallet Session status is temporarily unavailable`)}}if(a?.kind===`full_login_required`)throw sf(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 fR({walletId:e.walletId,identity:t,relayerUrl:this.seamsWebConfigs.network.relayer.url})).prepared.plan,requirement:t.auth});let o=t.auth.kind===V.passkey?await cR({walletId:e.walletId,identity:t}):null,s=o?.sealedRecord.ed25519Restore.materialActivation??(n?wc(n.activeClient.metadata()):r);if(!s)throw cf(`missing_capability`);let c=gR(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 cf(`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 K_({walletId:e.walletId,runtime:o,authorizationRead:n})}catch{throw cf(`binding_mismatch`)}let d=pR(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 mR({store:K,identity:d,authority:u,publicLocator:p})).plan);break}case V.emailOtp:l=await this.resolveWalletCustodyEmailOtpHydration({walletId:e.walletId,nearAccountId:e.nearAccountId,identity:VL(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`):lf(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 HL({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{kR({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:c_(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=SR(e.input);if(t.auth.kind!==V.emailOtp)throw Error(`[SigningEngine][near] Email OTP session restore requires Email OTP material`);let n=await tR({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 ML(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 PL({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(CR(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(CR(e));let r=await Rt({walletId:e.walletId,laneIdentity:e.laneIdentity});if(r.kind===`missing`&&e.auth.kind===V.passkey){let t=await nR({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=kR({material:i,input:e,expectedActivation:r}),o=await aR({reference:t,material:a,authorization:n,materialActivation:r,relayerUrl:String(this.seamsWebConfigs.network.relayer?.url||``).trim()}),s=gR(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:gR(l),unlockSource:d});if(f.kind===`use_live_runtime`){if(!l)throw Error(`[SigningEngine][near] live Ed25519 material is unavailable`);await AR({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(CR(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){OR(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=_R(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 Nm({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 rR({store:this.ed25519YaoPublicCapabilityReferences,identity:t,materialActivation:i});for(let e of l)if(!(!QL(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=kR({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=MR({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 kR({material:t,input:e.input,expectedActivation:n})}case`rehydrate_material_activation`:{let t=SR(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 oR({walletId:t.walletId,laneIdentity:t.laneIdentity});return await AR({input:t,authorization:r.authorization,sealedRuntime:i,material:e}),kR({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=SR(e.input);if(t.auth.kind===V.emailOtp){if(!e.materialActivation)throw Error(`[SigningEngine][near] prepared material has no activation`);let n=await tR({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 wR({reference:n,material:kR({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 nR({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=kR({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 aR({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=_R(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(yR(e.input).kind!==V.passkey)throw Error(`[SigningEngine][near] Email OTP material cannot use Passkey rehydration`);let n=MR({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=_R(e.input);if(n.auth.kind!==V.emailOtp)throw Error(`[SigningEngine][near] Passkey material cannot use Email OTP rehydration`);let r=MR({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 tR({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:DR({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=_R(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 uR({walletId:e.input.walletId,proof:t.proof}),i={kind:`exact_ed25519_export_material`,signer:n.signer,auth:n.auth,thresholdSessionId:n.thresholdSessionId},a=await nP({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 mP({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 Uv({workerContext:this.signerWorkerManager.getContext(),activeClientHandle:o.activeClientHandle}).catch(()=>void 0),e}let s=new Wv(this.signerWorkerManager.getContext(),o.activeClientHandle,o.metadata),c;try{c=kR({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=SR(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:VL(_R(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=_R(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 fR({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 cf(`binding_mismatch`);let n=Kd({credential:t,rpId:e.rpId}),r=await hR({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 lf(r.plan.reason);if(r.kind!==`rehydrated`)throw cf(`corrupt`);if(!b(e.materialActivation,r.plan.materialActivation))throw r.activeClient.dispose(),cf(`binding_mismatch`);let i={activeClient:r.activeClient,facts:e.facts};try{return kR({material:i,input:e.input,expectedActivation:e.materialActivation})}catch{throw i.activeClient.dispose(),cf(`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(wd({authMethod:e.laneIdentity.auth.kind,materialActivation:e.materialActivation})))return await this.resolveLinkedPasskeyEd25519YaoExportContext({...e,walletId:n,relayerUrl:t});let r=await sR({walletId:n,laneIdentity:e.laneIdentity,materialActivation:e.materialActivation}),i=e.laneIdentity.thresholdSessionId,a=await X_(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 ZO({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:KL},{readExactEd25519SealedSession:nn,readPasskeyCustodySessionEnvelope:Ft,resolveSelectedWalletAuthority:K.resolveSelectedWalletAuthority.bind(K),readExactWalletSessionAuthorization:q.readExactActiveForWallet.bind(q),resolveExactPasskeyWalletAuthAuthorityRef:RL,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(!(!QL(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=Rv(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 nR({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 GL({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 cP({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})=>$L({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:KL,activateRecoveredCapability:this.activateRecoveredEmailOtpEd25519ExportCapability.bind(this,e.laneIdentity)})}async resolveActiveNearEd25519YaoSigningLane(e){if(!await this.resolveNearEd25519YaoSigningLane(e))return null;let t=KN(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=KN(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)qN(t,e)&&(!Od(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 YL({...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=KN(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 sR({walletId:t.signer.account.wallet.walletId,laneIdentity:e.laneIdentity,materialActivation:e.materialActivation});else{let i=e.kind===`exact_lane`?e.laneIdentity:HN(n);r=await oR({walletId:t.signer.account.wallet.walletId,laneIdentity:i})}let i=await dR({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=qL({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 sd(this.enginePorts.tempoSigningDeps,e)}async reportTempoBroadcastAccepted(e){await od(this.enginePorts.tempoSigningDeps,e)}async reportTempoBroadcastRejected(e){await ld(this.enginePorts.tempoSigningDeps,e)}async reportTempoFinalized(e){await Xu(this.enginePorts.tempoSigningDeps,e)}async reportTempoDroppedOrReplaced(e){await rd(this.enginePorts.tempoSigningDeps,e)}async reconcileTempoNonceLane(e){return await ud(this.enginePorts.tempoSigningDeps,e)}storeUserData(e){return ba(this.enginePorts.registrationAccountLifecycleDeps,e)}async storeNearThresholdKeyMaterial(e){await ng({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 DL(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 df({queueByKey:this.thresholdEd25519CommitQueueByKey,queueKey:kd({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 rF(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:rf.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 ak(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(NR)}getAuthenticationCredentialsSerialized(e){return e.cancellation?this.touchIdPrompt.getAuthenticationCredentialsSerializedForChallengeB64u(e):ok(this.enginePorts.registrationSessionDeps,e)}async exportKeypairWithUI(e){return await rk(this.recoveryPublicDeps,e)}async resolveExactKeyExportLane(e){return await ik(this.recoveryPublicDeps,e)}async connectEd25519Session(e){return await pF(this.passkeyPublicDeps,e)}async bootstrapEcdsaSession(e){return await mF(this.passkeyPublicDeps,e)}async loginWithEmailOtpEcdsaCapabilityInternal(e){return await bk(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 VN({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 UL({walletId:e.walletSession.walletId,emailHashHex:e.emailHashHex,providerSubject:e.providerSubject,bootstrap:e.bootstrap}),n}catch(n){try{await fP({worker:this.signerWorkerManager.getContext(),target:{kind:`ed25519_yao`,thresholdSessionId:e.bootstrap.session.thresholdSessionId,materialActivation:t.metadata.materialActivation}})}catch{}try{await Uv({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 UL({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 df({queueByKey:this.thresholdEd25519CommitQueueByKey,queueKey:kd({materialActivation:e.metadata.materialActivation}),nearAccountId:kr(e.bootstrap.session.nearAccountId),enabled:e.commitQueue===`acquire`,task:async()=>{let n=await zN({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(ZL({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 QO({walletId:String(e.walletSession.walletId),walletAuthMethodId:t,projection:r.recovery.verifiedAuthorityProjection});let i=await $O({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 Uv({workerContext:this.signerWorkerManager.getContext(),activeClientHandle:r.activeClientHandle}).catch(()=>void 0),e}finally{r.ed25519ExportRootCustody.factorSecret32.fill(0)}}async prepareEmailOtpRegistrationEnrollmentMaterialInternal(e){return await xk(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 tF(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 nF(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 iF(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=FR(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(){jd(this.thresholdEcdsaSigningQueueByKey)}async clearLinkedEcdsaHolderMaterials(){await Lu({workerCtx:this.signerWorkerManager.getContext()}),hd()}async clearLinkedEcdsaHolderMaterialsForWallet(e){let t=Cd(e),n;for(let e of t)try{await Tu({holderHandleIds:[e.holderHandleId],workerCtx:this.signerWorkerManager.getContext()}),gd(e)}catch(e){n??=e}if(n!==void 0)throw n}};function VR(e){return Array.isArray(e)?e.filter(e=>[`ble`,`hybrid`,`internal`,`nfc`,`smart-card`,`usb`].includes(String(e))):[]}function HR(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:VR(r.transports)})}return n}async function UR(e){let[t,n]=await Promise.all([K.listProfileAuthenticators(String(e.walletId)),K.listWalletAuthMethodsV2ForWallet(String(e.walletId))]);return HR({walletId:e.walletId,authenticators:t,authMethods:n,excludeCredentialIdB64u:e.excludeCredentialIdB64u})}async function WR(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 GR(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 KR(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 UR({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 WR({context:e,walletId:n.walletId,rpId:a.value,operationFingerprintDigest:String(s),allowCredentials:u});break;case V.emailOtp:f=await GR({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 qR(e){let{relayerUrl:t,requestedAtMs:n,sourceProof:r}=await KR(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 JR(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 qR({context:e.context,walletId:t,walletAuthMethodId:n.value})}catch(e){throw I(e)}}const YR=`/wallet/device-linking/v1/sessions`,XR=4e3,ZR=[`ok`,`outcome`,`session`],QR=[`ok`,`outcome`,`session`,`targetCredential`],$R=[`ok`,`code`,`message`],ez=[`ok`,`outcome`,`code`,`message`],tz=[`ok`,`outcome`,`expectedRevision`,`actualRevision`,`session`],nz=[`ok`,`outcome`,`session`],rz=[`ok`,`outcome`,`state`,`session`],iz=[`ok`,`outcome`,`reason`,`session`];function az(e,t){let n=Math.min(e,XR),r=Math.min(Math.max(t,0),5),i=Math.min(XR,n*2**r),a=Math.max(1,Math.min(n,i/4)),o=Math.floor(Math.random()*a);return Math.min(XR,i+o)}async function oz(e){let t=e.options.nowMs()+6e4,n=0;for(;e.options.nowMs()<t;){let t=await mz({options:e.options,baseUrl:e.baseUrl,method:`GET`,canonicalPath:Dz(e.linkSessionId,`approval`),linkSessionId:e.linkSessionId});if(t.status!==204)return Si(t.body);let r=az(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 sz(e){let t=Tz(e.relayerUrl);if(!Number.isSafeInteger(e.pollIntervalMs)||e.pollIntervalMs<=0)throw Error(`linked-device session poll interval must be a positive integer`);return{...lz(e),...cz(e),createUnclaimedSessionV1:async n=>{await pz({options:e,baseUrl:t,method:`POST`,canonicalPath:YR,linkSessionId:n.payload.linkSessionId,body:{kind:`linked_device_session_create_request_v1`,payload:n.payload}})},getSessionV1:async({linkSessionId:n})=>await fz({options:e,baseUrl:t,linkSessionId:n}),getApprovalV1:async({linkSessionId:n})=>gi((await mz({options:e,baseUrl:t,method:`GET`,canonicalPath:Dz(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 mz({options:e,baseUrl:t,method:`POST`,canonicalPath:Dz(n,`target-preparation`),linkSessionId:n,body:i})).body)},startTargetEmailOtpChallengeV1:async({request:n})=>{let r=vi(n);return ii((await mz({options:e,baseUrl:t,method:`POST`,canonicalPath:Dz(r.linkSessionId,`email-otp/challenge`),linkSessionId:r.linkSessionId,body:r})).body)},resendTargetEmailOtpChallengeV1:async({request:n})=>{let r=Fi(n);return ii((await mz({options:e,baseUrl:t,method:`POST`,canonicalPath:Dz(r.linkSessionId,`email-otp/challenge/resend`),linkSessionId:r.linkSessionId,body:r})).body)},verifyTargetEmailOtpChallengeV1:async({request:n})=>{let r=_i(n);return Jr((await mz({options:e,baseUrl:t,method:`POST`,canonicalPath:Dz(r.linkSessionId,`email-otp/challenge/verify`),linkSessionId:r.linkSessionId,body:r})).body)},registerTargetCredentialV1:async({registration:n})=>vz((await mz({options:e,baseUrl:t,method:`POST`,canonicalPath:Dz(n.linkSessionId,`credential`),linkSessionId:n.linkSessionId,body:n})).body),registerEd25519ExportRootRecipientV1:async({recipient:n})=>{let r=dz(n.linkSessionId);await mz({options:e,baseUrl:t,method:`POST`,canonicalPath:Dz(r,`ed25519-export-root-recipient`),linkSessionId:r,body:n})},getEd25519ExportRootPackageV1:async({linkSessionId:n})=>{let r=await mz({options:e,baseUrl:t,method:`GET`,canonicalPath:Dz(n,`ed25519-export-root`),linkSessionId:n});return r.status===204?null:Ti(r.body)},retryCommittedDeliveryV1:async({request:n})=>{await pz({options:e,baseUrl:t,method:`POST`,canonicalPath:Dz(n.linkSessionId,`retry`),linkSessionId:n.linkSessionId,body:n})},cancelSessionV1:async({request:n})=>{await pz({options:e,baseUrl:t,method:`POST`,canonicalPath:Dz(n.linkSessionId,`cancel`),linkSessionId:n.linkSessionId,body:n})},subscribeSessionV1:async({linkSessionId:n,onEvent:r})=>await gz({options:e,baseUrl:t,linkSessionId:n,onEvent:r})}}function cz(e){let t=Tz(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 hz({options:e,baseUrl:t,linkSessionId:i.linkSessionId,token:a.token,body:i})}}}function lz(e){let t=Tz(e.relayerUrl);return{receiveCommittedAuthorityPackagesV1:async({linkSessionId:n})=>await oz({options:e,baseUrl:t,linkSessionId:n}),activateInstalledAuthorityV1:async({linkSessionId:n,receipt:r})=>{let i=$r(r);return Hi((await mz({options:e,baseUrl:t,method:`POST`,canonicalPath:Dz(n,`receipt`),linkSessionId:n,body:i})).body)},acknowledgeLocalAuthorityActivationV1:async({acknowledgement:n})=>{let r=pi(n);await mz({options:e,baseUrl:t,method:`POST`,canonicalPath:Dz(n.linkSessionId,`receipt`),linkSessionId:n.linkSessionId,body:r})}}}function uz(e){return{...e.owner,createAuthenticatedSessionTransportV1:({keyMaterial:t,devicePublicKeyB64u:n})=>sz({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 dz(e){let t=g(e);if(!t.ok)throw Error(t.error.message);return t.value}async function fz(e){return _z((await mz({options:e.options,baseUrl:e.baseUrl,method:`GET`,canonicalPath:Ez(e.linkSessionId),linkSessionId:e.linkSessionId})).body).session}async function pz(e){return _z((await mz(e)).body)}async function mz(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(wz(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(bz(d.value));return d.value}async function hz(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}${Dz(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(bz(r.value))}async function gz(e){let t=!1,n,r=null,i=!0,a=0,o=null,s=async()=>{if(!t)try{let t=await fz({...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()},az(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 _z(e){let t=xz(e);if(t===null)throw Error(`linked-device response must be an object`);if(!Cz(t,ZR))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 vz(e){let t=xz(e);if(t===null)throw Error(`linked-device target credential response must be an object`);if(!Cz(t,QR))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 yz(t,`applied`);case`replayed`:return yz(t,`replayed`);default:throw Error(`linked-device target credential response outcome is invalid`)}}function yz(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 bz(e){let t=xz(e.body);if(t===null||t.ok!==!1)return`linked-device request failed with HTTP ${e.status}`;if(Cz(t,$R)&&typeof t.code==`string`&&typeof t.message==`string`&&t.message.trim()||Cz(t,ez)&&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(Cz(t,tz))return`linked-device request failed: conflict`;break;case`expired`:if(Cz(t,nz))return`linked-device request failed: expired`;break;case`invalid_state`:if(Cz(t,rz))return`linked-device request failed: invalid_state`;break;case`integrity_error`:if(Cz(t,iz))return`linked-device request failed: integrity_error`;break;default:break}return`linked-device request failed with HTTP ${e.status}`}function xz(e){return Sz(e)?e:null}function Sz(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 Cz(e,t){try{return J(e,t)}catch{return!1}}function wz(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 Tz(e){let t=e.trim().replace(/\/+$/,``);if(!t)throw Error(`linked-device relayer URL is required`);return t}function Ez(e){return`${YR}/${String(e)}`}function Dz(e,t){return`${Ez(e)}/${t}`}function Oz(e){return e?String(e.linkSessionId):`link-device-scan`}function kz(e){return new X(e,Z.INVALID_QR_DATA,`authorization`)}function Az(e,t){try{e?.(t)}catch{}}function jz(e,t,n){e?.(_s({flowId:Oz(t),...n,data:{role:`scanner`,...n.data??{}}}))}function Mz(e,t){if(e.walletSessionId!==t.walletSessionId||e.authorizationId!==t.authorizationId)throw Error(`wallet-session authorization source changed during linking`)}function Nz(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 Pz(e){let t;try{t=Ni(e)}catch(e){throw kz(L(e)||`Invalid linked-device QR payload`)}let n=Date.now();if(t.issuedAtMs>n+6e4)throw kz(`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 Fz(e,t,n,r,i){let a=null,o=null;jz(n.onEvent,a,{phase:Cs.STEP_02_QR_SCAN_STARTED,status:`started`,message:`Scanning QR code`,interaction:{kind:`qr_scan`,overlay:`hide`}});try{a=Pz(t);let e=await r.ownerAuthorization.authenticateOwnerForLinkingV1({payload:a,requestedAtMs:Date.now()});Mz(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 Lz({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)});Hz(await r.transport.recordOwnerApprovalV1({approval:l,authentication:e.authentication})),o=null,await Jz({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 Uz({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 jz(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 Iz(r.transport,o),i?.(null));let t=Nz(e);throw jz(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}}),Az(n.onError,t),await n.afterCall?.(!1,void 0,t),t}}async function Iz(e,t){t&&await e.cancelClaimedSessionV1(t).catch(()=>void 0)}async function Lz(e){if(e.targetFactor.kind===`passkey_prf`)return{kind:`passkey_prf`};let t=Bz(e.targetEmail),n=await e.transport.resolveEmailOtpBaseFactorV1({linkSessionId:e.linkSessionId,request:{kind:`resolve`,expectedRevision:e.sessionRevision},authentication:e.authentication});switch(zz(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 Rz(e,n.resolution.choices);case`unavailable`:return{kind:`email_otp`,targetEmail:t,enrollment:{kind:`new_enrollment`}}}}async function Rz(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(!Vz(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(zz(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:Bz(e.targetEmail),enrollment:{kind:`existing_enrollment`},baseWalletAuthMethodId:n}}function zz(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 Bz(e){if(!e)throw Error(`Email OTP linked-device QR omitted its target email`);return e}function Vz(e,t){for(let n of e)if(n.baseWalletAuthMethodId===t)return!0;return!1}function Hz(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 Uz(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 Zz(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 Gz({preparation:t,ports:e.sourceContribution,ed25519ExportRootCapability:e.ed25519ExportRootCapability,authentication:e.authentication}),i=Wz(e.initialApproval,r);qz(await e.transport.recordSourceContributionV1({approval:i,authentication:e.authentication}))}function Wz(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 Gz(e){let t=e.preparation[0];if(!t)throw Error(`source contribution preparation is empty`);if(Kz(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(Kz(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 Kz(e){return`kind`in e}function qz(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 Jz(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=Yz(e);if(t!==null&&t!==408&&t!==429&&t<500)throw e}await Zz(n),n+=1}throw new X(`Device-link approval expired before the export root recipient was published`,Z.SESSION_EXPIRED,`registration`)}function Yz(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 Xz(e,t){setTimeout(e,az(250,t))}async function Zz(e){await new Promise(t=>Xz(t,e))}async function Qz(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 eB(e.ed25519ExportRoot,t),n}return t}async function $z(e){let t=e.nowMs??Date.now,n=await tB({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 eB(e,t){try{await e.discardRecipientV1(t)}catch{}}async function tB(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(!nB(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 nB(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 rB(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 iB(e){return{async createRecipientV1(t){let n=cB(await e.requestOperation({kind:`walletCustodyCeremony`,request:{type:`createLinkedDeviceEd25519ExportRootRecipient`,payload:{}}}),`Ed25519 export-root recipient`);return{recipientHandleId:lB(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=cB(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(!aB(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||!oB(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=cB(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 aB(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 oB(e,t){switch(e.kind){case`passkey_prf`:return t.kind===`passkey`;case`email_otp`:return t.kind===`email_otp`}return sB(e)}function sB(e){throw Error(`Unsupported linked-device target factor kind: ${String(e)}`)}function cB(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} returned no result`);return e}function lB(e){if(typeof e!=`string`||!e||e.trim()!==e)throw Error(`Ed25519 export-root recipient handle is invalid`);return e}const uB=`linked_device_committed_resume_v1`,dB=`linked_device_pending_ack_v1`,fB=`device-linking/committed-resume/v1/`,pB=`device-linking/pending-ack/v1/`,mB=[`kind`,`acknowledgement`],hB=[`kind`,`linkSessionId`,`walletId`,`enrollmentId`,`authorityId`,`authMethodId`,`deviceId`,`targetFactorKind`,`targetFactorVerificationDigestB64u`,`authorityDigestB64u`,`signerActivationSetDigestB64u`,`signerActivations`,`packageSetDigestB64u`,`committedAtMs`];function gB(e){return`${fB}${String(e)}`}function _B(e){return`${pB}${String(e)}`}function vB(e){return{kind:dB,acknowledgement:pi(e)}}function yB(e){let t=wB(e);if(t===null||!J(t,mB)||t.kind!==dB)return null;try{return{kind:dB,acknowledgement:pi(t.acknowledgement)}}catch{return null}}function bB(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:uB,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 xB(e){let t=bB({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}:EB(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 SB(e){let t=wB(e);if(t===null||!J(t,hB)||t.kind!==uB)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:uB,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 CB(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 wB(e){return TB(e)?e:null}function TB(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 EB(e,t){let n=Da(e),r=Da(t);return n.length===r.length&&n.every((e,t)=>e===r[t])}function DB(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 OB(e){return{...kB({indexedDB:e.indexedDB}),persistCommittedDeliveryResumeV1:async t=>{let n=bB(t);await e.indexedDB.setAppState(gB(n.authorityId),n)},readCommittedDeliveryResumeV1:async({authorityId:t})=>SB(await e.indexedDB.getAppState(gB(t))),persistPendingActivationAcknowledgementV1:async({acknowledgement:t})=>{let n=vB(t);await e.indexedDB.setAppState(_B(t.authorityId),n)},readPendingActivationAcknowledgementV1:async({authorityId:t})=>yB(await e.indexedDB.getAppState(_B(t)))?.acknowledgement??null,readLocalAuthorityInstallationReceiptV1:async({authorityId:t})=>await e.indexedDB.getLocalAuthorityInstallationReceipt(t),installLocalAuthorityV1:t=>AB({...t,...e}),publishLocalAuthorityActivationV1:({active:t,expectedLockGeneration:n})=>jB({indexedDB:e.indexedDB,active:t,expectedLockGeneration:n}),finalizeLocalAuthorityActivationV1:({active:t,operationCredential:n,expectedLockGeneration:r})=>MB({indexedDB:e.indexedDB,active:t,operationCredential:n,expectedLockGeneration:r})}}function kB(e){return{listCommittedDeliveryResumesV1:async()=>(await e.indexedDB.listAppStateEntriesByPrefix(fB)).flatMap(e=>{if(e.value===null)return[];let t=SB(e.value);if(!t||gB(t.authorityId)!==e.key)throw Error(`durable linked-device delivery resume is corrupt`);return[t]}),listPendingActivationAcknowledgementsV1:async()=>(await e.indexedDB.listAppStateEntriesByPrefix(pB)).flatMap(e=>{if(e.value===null)return[];let t=yB(e.value);if(!t||_B(t.acknowledgement.authorityId)!==e.key)throw Error(`durable linked-device acknowledgement is corrupt`);return[t.acknowledgement]}),clearCommittedDeliveryResumeV1:async({authorityId:t})=>{await e.indexedDB.setAppState(gB(t),null)},clearPendingActivationAcknowledgementV1:async({authorityId:t})=>{await e.indexedDB.setAppState(_B(t),null)}}}async function AB(e){let t=await e.indexedDB.getLocalAuthorityInstallationReceipt(e.committed.authority.authorityId);if(t)return zB({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});RB({committed:e.committed,sealed:n});let r=DB(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 jB(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 MB(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 NB(e){let t=FB({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=xB({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=IB({active:i,receipt:r});if(t)return t;await e.installation.publishLocalAuthorityActivationV1({active:i,expectedLockGeneration:e.expectedLockGeneration}),await Qr(i.sealedDelivery),await LB({active:i,receipt:r,linkSessionId:e.linkSessionId,deliveryRecipientPublicKey65B64u:e.deliveryRecipientPublicKey65B64u}),await e.installation.persistPendingActivationAcknowledgementV1({acknowledgement:await PB({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 PB(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 FB(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 IB(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 LB(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 RB(e){let t=e.committed.authority,n=e.committed.authMethod,r=HB(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((VB(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 zB(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||!BB(e.receipt.installedActivationRefs,e.committed.authority.signerActivations))throw Error(`stored local authority receipt does not match committed packages`)}function BB(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 VB(e){return e.keyFamilies.length===2||e.keyFamilies[0]===`ed25519`}function HB(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 UB(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 WB(){let e=g(Pe(`link-session`,32));if(!e.ok)throw Error(e.error.message);return e.value}function GB(){return Pe(`link-flow`,16)}function KB(e,t){try{e?.(t)}catch{}}function qB(e){console.info(`[Device2Linking]`,{flowId:e.flowId,linkSessionId:e.linkSessionId,stage:e.stage,...e.details})}function JB(e){console.error(`[Device2Linking] failed`,{flowId:e.flowId,linkSessionId:e.linkSessionId,state:e.state,error:L(e.error)})}function YB(e,t){setTimeout(e,az(250,t))}async function XB(e){await new Promise(t=>YB(t,e))}function ZB(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 QB(e,t){return e instanceof X?e:new X(L(e)||`Device linking failed`,Z.REGISTRATION_FAILED,t)}function $B(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 eV(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 tV=class extends Error{constructor(){super(`Device-link flow was cancelled or reset`),this.name=`LinkDeviceFlowSupersededError`}};async function nV(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 rV(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:Of(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 iV(e){return e.targetFactor.kind===`passkey_prf`}function aV(e){return e.targetFactor.kind===`email_otp`}function oV(e){return{event:e.event,state:e.state,runEpoch:e.runEpoch,deviceId:e.deviceId,preparation:e.preparation,ordinarySignerMaterialRecipientRequests:e.ordinarySignerMaterialRecipientRequests,exportRoot:e.exportRoot}}function sV(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 cV(e){throw Error(`Unknown Email OTP target activation state: ${String(e)}`)}function lV(e){throw Error(`Unknown target credential activation state: ${String(e)}`)}function uV(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=sV(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:pV(t.enrollment),providerSubjectId:t.providerUserId}},factorSecret32:t.factorSecret}}default:return dV(e.targetFactor)}}function dV(e){throw Error(`Unknown verified target factor kind: ${String(e)}`)}function fV(e){e.byteLength>0&&e.fill(0)}function pV(e){return e.kind===`existing_enrollment`?`google`:`email`}function mV(e){return e.passkeyCreationOptions.rpId}function hV(e){if(!aV(e))throw Error(`linked-device Email OTP preparation is unavailable`);return e}function gV(){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 _V(){return crypto.getRandomValues(new Uint8Array(32))}async function vV(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{fV(t)}}function yV(e){if(!e)throw Error(`new linked-device Email OTP enrollment material is unavailable`);return e}var bV=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=GB(),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 tV;this.keyMaterialHandle=n.handle,this.deliveryRecipientPublicKey65B64u=n.deliveryRecipientPublicKey65B64u;let r=Date.now(),i=WB(),a=rV({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},qB({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 tV;this.subscription=c,qB({flowId:this.flowId,linkSessionId:i,stage:`session_subscription_ready`});let l=await nV(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 tV)throw e;this.session=null,this.authenticatedTransport=null,this.handledStates.clear();let t=QB(e,`generation`);throw this.error=t,this.emitFailure(t,`generation`),KB(this.options.options?.onError,t),await this.options.options?.afterCall?.(!1,void 0,t),t}finally{this.generationInProgress=!1}}getState(){return{phase:this.session?ZB(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;qB({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)){qB({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`||n.kind===`relink_required`)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`),KB(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(!iV(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(!aV(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 Qz({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 cV(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:{...oV(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:oV(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=hV(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=_V();a=i.buffer;let o=await vV({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=gV(),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:yV(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),qB({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 eB(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 tV);switch(this.targetCredentialActivationState.kind){case`idle`:break;case`in_progress`:return this.targetCredentialActivationState.runEpoch===e.runEpoch?this.targetCredentialActivationState.promise:Promise.reject(new tV);case`factor_ready`:return this.targetCredentialActivationState.runEpoch===e.runEpoch?Promise.reject(Error(`Device-link target passkey activation has already completed`)):Promise.reject(new tV);default:return lV(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 fV(t),new tV;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`&&fV(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();qB({flowId:this.flowId,linkSessionId:r.linkSessionId,stage:`target_passkey_prompt_started`});let a=r.ed25519ExportRoot,o=a===null?Promise.resolve(null):Qz({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(qB({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&&qB({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=gV(),n=Yo({rpId:mV(r),credentialIdB64u:s.webauthnRegistration.credentialIdB64u}),i=await this.acceptTargetExportRootV1({preparation:r,exportRoot:a,recipient:c,envelopeId:e,factor:n,replacementFactorSecret:s.factorSecret,runEpoch:t});qB({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),qB({flowId:this.flowId,linkSessionId:r.linkSessionId,stage:`ordinary_signer_material_prepared`}),s.factorSecret}catch(e){if(s&&fV(s.factorSecret),!c)try{c=await o}catch{}throw c&&await eB(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 $z({ed25519ExportRoot:this.ports.ed25519ExportRoot,transport:this.requireAuthenticatedTransport(),recipient:e.recipient,replacementEnvelope:rB({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:XB})}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 NB({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 XB(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=uV({targetFactor:a.targetFactor,walletAuthMethodId:a.walletAuthMethodId,targetCredentialActivationState:this.targetCredentialActivationState,emailOtpTargetActivationState:this.emailOtpTargetActivationState,walletId:t.walletId,runEpoch:r});await Qb({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(UB(t,r)),await this.cleanupCompletedLocalResources(),qB({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 tV}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 tV)return;if(this.hasCommittedDeliveryState()){await this.handleCommittedDeliveryFailureV1(e,t);return}JB({flowId:this.flowId,linkSessionId:e.linkSessionId,state:e.state.state,error:t}),this.handledStates.delete(e.state.state);let n=QB(t,`registration`);this.error=n,this.emitFailure(n,`registration`),KB(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=$B(t);if(n){await this.requireExactMethodUnlockForCommittedDeliveryV1(e,n);return}qB({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=$B(t);if(n){await this.requireExactMethodUnlockForCommittedDeliveryV1(e,n);return}JB({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(eV(t),Z.DELIVERY_RECOVERY_REQUIRED,`registration`);this.error=n;try{await this.cleanupCompletedLocalResources()}catch(t){JB({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`),KB(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`||n.kind===`relink_required`)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($B(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`&&sV(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 xV(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 SV=class{constructor(e){this.activeDeviceLinkFlow=null,this.activeOwnerLinkCancellation=null,this.deps=e}async startDevice2LinkingFlow(e){if(this.activeDeviceLinkFlow&&xV(this.activeDeviceLinkFlow)&&(this.activeDeviceLinkFlow=null),this.activeDeviceLinkFlow)throw Error(`Device-link QR flow is already running`);let t=new bV(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&&xV(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 Fz(this.deps.getContext(),e,t,this.deps.ports,this.registerOwnerLinkCancellationV1.bind(this))}registerOwnerLinkCancellationV1(e){this.activeOwnerLinkCancellation=e}};function CV(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 wV(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=DV(t.preparations),r=kV(t.recipientRequests),i=jV(t.recipientInputs);PV(i,r);let a=[t.factorSecret,...NV(i)];return EV(await e({kind:`device_linking_ordinary_signer_material_prepare_private_v1`,handleId:D(t.keyMaterial.handleId,`keyMaterial.handleId`,`is required`),targetFactor:CV(t.targetFactor),preparations:n,recipientRequests:r,recipientInputs:i,factorSecret:t.factorSecret},a))},async createOrdinarySignerMaterialRecipientRequestsV1(t){return AV(await e({kind:`device_linking_ordinary_signer_material_recipient_prepare_v1`,handleId:D(t.keyMaterial.handleId,`keyMaterial.handleId`,`is required`),requirements:OV(t.requirements)}))},async sealCommittedAuthorityPackagesV1(t){let n=Si(t.committed);return BV(await e({kind:`device_linking_ordinary_signer_material_seal_v1`,handleId:D(t.keyMaterial.handleId,`keyMaterial.handleId`,`is required`),committed:n,targetFactor:CV(t.targetFactor),resealedExportRoot:TV(t.resealedExportRoot)}))}}}function TV(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 EV(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:RV(e.targetFactor),preparations:DV(e.preparations)}}function DV(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(LV),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 OV(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=IV(e.walletKeyId);return{kind:e.kind,keyFamily:e.keyFamily,walletKeyId:n}});FV(t);let n=t[0];if(!n)throw Error(`ordinary recipient requirements are empty`);return[n,...t.slice(1)]}function kV(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:IV(e.walletKeyId),recipientPublicKeyB64u:VV(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:IV(e.walletKeyId),clientEphemeralPublicKey:D(e.clientEphemeralPublicKey,`ECDSA client ephemeral public key`,`is required`)}}throw Error(`ordinary recipient request key family is invalid`)});FV(t);let n=t[0];if(!n)throw Error(`ordinary recipient requests are empty`);return[n,...t.slice(1)]}function AV(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=kV(e.recipientRequests),n=jV(e.recipientInputs);return PV(n,t),{recipientRequests:t,recipientInputs:n}}function jV(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:IV(e.walletKeyId),recipientPrivateKey:MV(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:IV(e.walletKeyId),clientEphemeralPrivateKey:MV(e.clientEphemeralPrivateKey,`ECDSA client ephemeral private key`)}}throw Error(`ordinary recipient input key family is invalid`)});FV(t);let n=t[0];if(!n)throw Error(`ordinary recipient inputs are empty`);return[n,...t.slice(1)]}function MV(e,t){if(!(e instanceof ArrayBuffer)||e.byteLength!==32)throw Error(`${t} must be a 32-byte ArrayBuffer`);return e}function NV(e){return e.map(e=>e.kind===`ordinary_ed25519_signer_material_recipient_input_v1`?e.recipientPrivateKey:e.clientEphemeralPrivateKey)}function PV(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 FV(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 IV(e){let t=h(e);if(!t.ok)throw Error(t.error.message);return t.value}function LV(e){return Ao(e)}function RV(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:VV(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 zV(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 BV(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:zV(e.exportRoot),installedRecordSetDigestB64u:St(e.installedRecordSetDigestB64u)}}function VV(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 HV(e,t){if(typeof e!=`string`||e.trim()!==e||e.length===0)throw Error(`${t} is required`);return e}function UV(e,t){try{return St(e)}catch(e){throw Error(`${t} ${e instanceof Error?e.message:`is invalid`}`)}}function WV(e,t,n){let r=HV(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 GV(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:HV(t.handleId,`device-linking key handle.handleId`)}}function KV(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:HV(t.handleId,`device-linking key create handleId`)},linkPublicKeyB64u:hi(t.linkPublicKeyB64u),devicePublicKeyB64u:hi(t.devicePublicKeyB64u),deliveryRecipientPublicKey65B64u:WV(t.deliveryRecipientPublicKey65B64u,65,`deliveryRecipientPublicKey65B64u`)}}function qV(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 JV(e){return st(e)}function YV(e){if(!J(e,[`signatureB64u`]))throw Error(`device-linking request signature response has invalid fields`);return{signatureB64u:WV(e.signatureB64u,64,`signatureB64u`)}}function XV(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 ZV(){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 QV(e){return e!==void 0&&Number.isSafeInteger(e)&&e>0?e:6e4}function $V(e){return e instanceof Error?e:typeof e==`string`&&e.trim()?Error(e):Error(`device-linking worker failed`)}function eH(){if(typeof Worker>`u`)throw Error(`device-linking worker is unavailable; provide an authenticated worker endpoint`);let e=Tf(void 0,{worker:`deviceLinking`});return new Worker(e,{type:`module`})}function tH(e){if(!e.startsWith(`/`)||e.includes(`?`)||e.includes(`#`)||e.trim()!==e)throw Error(`canonicalPath is invalid`);return e}function nH(e,t){if(!Number.isSafeInteger(e)||e<=0)throw Error(`${t} is invalid`);return e}function rH(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=nH(e.expiresAtMs,`expiresAtMs`),r=nH(e.issuedAtMs,`issuedAtMs`);if(n<=r)throw Error(`expiresAtMs must be after issuedAtMs`);return{kind:`device_linking_request_sign_v1`,handleId:HV(e.handle.handleId,`handle.handleId`),linkSessionId:t.value,method:e.method,canonicalPath:tH(e.canonicalPath),bodyDigestB64u:UV(e.bodyDigestB64u,`bodyDigestB64u`),devicePublicKeyDigestB64u:UV(e.devicePublicKeyDigestB64u,`devicePublicKeyDigestB64u`),challengeB64u:WV(e.challengeB64u,32,`challengeB64u`),issuedAtMs:r,expiresAtMs:n}}function iH(e={}){let t=QV(e.timeoutMs),n=new Map,i=e.endpoint??null,a=!1,s=e=>{let t=XV(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=$V(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=eH();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($V(e))}let o=ZV();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($V(e))}})};return{...wV(m),close:p,async createBootstrapKeyMaterialV1(){return KV(await m({kind:`device_linking_key_material_create_v1`}))},async discardKeyMaterialV1(e){await m({kind:`device_linking_key_material_discard_v1`,handleId:GV(e.handle).handleId})},async openEmailOtpFactorReleaseV1(e){let t=GV(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=UV(e.targetPreparationDigestB64u,`targetPreparationDigestB64u`),d=HV(e.expectedChallengeId,`expectedChallengeId`),p=ui(e.verificationGrant),h=yi(e.factorRelease);return qV(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=GV(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 JV(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 YV(await m(rH(e)))}}}function aH(e){return{claimSessionV1:async t=>oH(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${fH(t.request.payload.linkSessionId)}/claim`,body:t.request,authentication:t.authentication}),Mi),resolveEmailOtpBaseFactorV1:async t=>oH(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${fH(t.linkSessionId)}/email-otp-base-factor`,body:t.request,authentication:t.authentication}),ai),cancelClaimedSessionV1:async t=>oH(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${fH(t.linkSessionId)}/owner-cancel`,body:{expectedRevision:t.expectedRevision},authentication:t.authentication}),lH),recordOwnerApprovalV1:async t=>oH(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${fH(t.approval.linkSessionId)}/approval`,body:t.approval,authentication:t.authentication}),ti),getSourceContributionPreparationV1:async t=>{let n=await e.request.requestOwnerV1({method:`GET`,canonicalPath:`${fH(t.linkSessionId)}/source-contribution-preparation`,authentication:t.authentication});return n.status===204?null:oH(n,jo)},recordSourceContributionV1:async t=>oH(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${fH(t.approval.linkSessionId)}/source-contribution`,body:t.approval,authentication:t.authentication}),cH),getApprovalV1:e.approvalUpdates.getApprovalV1,getEd25519ExportRootRecipientV1:async t=>{let n=await e.request.requestOwnerV1({method:`GET`,canonicalPath:`${fH(t.linkSessionId)}/ed25519-export-root-recipient`,authentication:t.authentication});return n.status===204?null:oH(n,ji)},submitEd25519ExportRootPackageV1:async t=>{oH(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${fH(pH(t.submission.linkSessionId))}/ed25519-export-root`,body:t.submission,authentication:t.authentication}),e=>e)},subscribeApprovalV1:e.approvalUpdates.subscribeApprovalV1}}function oH(e,t){if(e.status<200||e.status>=300)throw Object.assign(Error(sH(e)),{status:e.status});return t(e.body)}function sH(e){let t=dH(e.body);return t?`linked-device owner request failed: ${t.message}`:`linked-device owner request failed with HTTP ${e.status}`}function cH(e){let t=uH(e);if(!t)throw Error(`linked-device source contribution response is invalid`);return ni(t.session)}function lH(e){let t=uH(e);if(!t)throw Error(`linked-device session response is invalid`);return ni(t.session)}function uH(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 dH(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 fH(e){return`${YR}/${String(e)}`}function pH(e){let t=g(e);if(!t.ok)throw Error(t.error.message);return t.value}function mH(e){let t=m(e);if(t.ok)return t.value;throw Error(t.error.message)}function hH(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 gH(e){e.byteLength>0&&e.fill(0)}function _H(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:mH(e.credentialIdB64u),authenticatorAttachment:t??null,clientDataJsonB64u:e.credential.response.clientDataJSON,attestationObjectB64u:e.credential.response.attestationObject,transports:e.credential.response.transports.map(hH)}}function vH(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=_H(r),a=F(r.prf.prfFirstB64u);if(a.byteLength!==32)throw gH(a),Error(`linked-device passkey PRF output must be 32 bytes`);return{walletAuthMethodId:n.walletAuthMethodId,webauthnRegistration:i,factorSecret:a}}}}function yH(e,t){return t.authorityId===e.authorityId&&t.linkSessionId===e.linkSessionId&&t.packageSetDigestB64u===e.packageSetDigestB64u}async function bH(e){let[t,n]=await Promise.all([e.installation.listCommittedDeliveryResumesV1(),e.installation.listPendingActivationAcknowledgementsV1()]);for(let r of n){let n=t.find(yH.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 CB({installation:e.installation,transport:e.transport,walletId:n.walletId,authorityId:n.authorityId,authMethodId:n.authMethodId,operationCredential:i.operationCredential})}}async function xH(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 SH(e){let t=iH({...e.workerEndpoint?{endpoint:e.workerEndpoint}:{},...e.workerTimeoutMs===void 0?{}:{timeoutMs:e.workerTimeoutMs}}),n=uz({owner:aH({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=cz({http:e.http,relayerUrl:e.relayerUrl,projectEnvironmentId:e.projectEnvironmentId}),i=vH({authenticator:e.authenticator}),a=OB({indexedDB:K,sealing:t,nowMs:e.nowMs}),o=iB(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:bH.bind(null,{installation:a,transport:r,readExactSession:xH}),dispose:t.close}}const CH=`/wallet/device-linking/v1/devices`;var wH=class extends Error{constructor(){super(`The owner Wallet Session must be renewed`),this.code=`owner_wallet_session_reauth_required`,this.name=`OwnerWalletSessionReauthRequiredError`}};function TH(e){let t=SH(e);return{linkedDeviceManagement:EH({request:e.managementRequest,authorizeRemoval:e.authorizeRemoval}),deviceLinkingPorts:t,dispose:t.dispose}}function EH(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=`${CH}?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 OH(o,`list linked devices`),AH(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:`${CH}/${encodeURIComponent(String(n))}/revoke`,body:{...a,sourceProof:i},walletId:t}),s;try{s=await o()}catch(e){if(!(e instanceof zC)||e.code!==`network_error`)throw e;s=await o()}return DH(s)}}}function DH(e){return e.status===404?ci({kind:`not_found`}):e.status===409?ci({kind:`conflict`}):e.status===401||e.status===403?ci({kind:`unauthorized`}):(OH(e,`revoke linked device`),MH(e.body))}function OH(e,t){if(e.status<200||e.status>=300){if(e.status===401&&FH(e.body))throw new wH;let n=kH(e.body);throw Error(n?`linked-device ${t} failed with HTTP ${e.status}: ${n}`:`linked-device ${t} failed with HTTP ${e.status}`)}}function kH(e){return typeof e!=`object`||!e||Array.isArray(e)?null:PH(e)||FH(e)?e.message:null}function AH(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`linked-device list response must be an object`);if(!jH(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 jH(e){return Object.keys(e).sort().join(`|`)===`devices|nextCursor|ok|ownerDevices`}function MH(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`linked-device revoke response must be an object`);if(!NH(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 NH(e){return Object.keys(e).sort().join(`|`)===`authorityId|kind|ok|revocationEpoch|walletAuthMethodId`}function PH(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 FH(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 IH(e){if(typeof e!=`string`||!e.trim())throw Error(`Yao lane request JSON is required`);return e}async function LH(e){let t=await cu({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 RH(e.workerCtx,t.sourceHandle)}var RH=class{#e=!1;constructor(e,t){this.workerCtx=e,this.sourceHandle=t}async discard(){this.#e||(this.#e=!0,await cu({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:IH((await cu({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 zH(e){return async({preparation:t})=>{let n=t.source.activation,r=e.readLinkedEcdsaHolderV1({materialActivation:n});if(r)return BH(r,n);let i=await e.readActiveEcdsaCapabilityManifestV1({materialActivation:n});return VH({sourceActivation:n,manifest:i}),{walletKeyId:HH(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 BH(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 VH(e){if(!b(e.manifest.activation.materialActivation,e.sourceActivation))throw Error(`ECDSA capability manifest activation does not match preparation`)}function HH(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 UH(e){return{produceSourceContributionV1:async({preparation:t,capability:n,authentication:r})=>{let i=await LH({workerCtx:e.workerContext,capability:n,applicationBindingDigestB64u:await KH(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 WH(e){return{ed25519:e.ed25519,ecdsa:{produceSourceContributionV1:async({preparation:t})=>await GH({workerContext:e.workerContext,readMetadataV1:e.readEcdsaMetadataV1,preparation:t})}}}async function GH(e){let t=await e.readMetadataV1({preparation:e.preparation}),n=await Du({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 KH(e){return P(Uint8Array.from(await Eo(e)))}const qH=new js;async function JH(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 KR(e,{kind:`selected_method`,walletAuthMethodId:n.authMethod.walletAuthMethodId},t)}function YH(e){let{platform:t,ownerAuthorities:n}=e,r=QH({signingEngine:e.signingEngine,ownerRequest:n.ownerRequest,readEcdsaMetadataV1:ZH({signingEngine:e.signingEngine})}),i=TH({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:XH({request:n.ownerRequest,pollIntervalMs:1e3}),ownerAuthorization:n.ownerAuthorization,sourceContribution:r,custodyCeremonyTransport:er(e.signingEngine.getSignerWorkerContext()),managementRequest:n.managementRequest,authorizeRemoval:JH.bind(void 0,{configs:e.configs,signingEngine:e.signingEngine}),nowMs:Date.now,pollIntervalMs:1e3}),a=new SV({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 XH(e){return{getApprovalV1:async t=>await $H(e.request,t),subscribeApprovalV1:async t=>eU({...e,input:t})}}function ZH(e){return zH({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 qH.lookupByMaterialActivation({walletId:n.walletId,materialActivation:t});if(r.kind===`ambiguous_authority`&&(r=await ov({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`?_d({walletId:n.walletId,materialActivation:t}):null}})}function QH(e){let t=e.signingEngine.getSignerWorkerContext();return WH({workerContext:t,ed25519:UH({workerContext:t,executeSourcePreservingV1:async({linkSessionId:t,targetRequestJson:n,authentication:r})=>{let i=await e.ownerRequest.requestOwnerV1({method:`POST`,canonicalPath:`${YR}/${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 $H(e,t){let n=await e.requestOwnerV1({method:`GET`,canonicalPath:`${YR}/${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 eU(e){let t=!1,n=null,r=async()=>{if(!t){try{let n=await $H(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 tU=[`delivery`,`challengeId`,`otpCode`,`resend`,`webauthn`,`webauthnRegistration`,`webauthn_registration`,`authenticatorOptions`,`publicKey`,`passkey`,`passkeyPrfFirstB64u`],nU=[`recoveryKeys`,`recoveryCodes`,`bootstrap`,`bootstrapMaterial`,`clientSecret32`];function rU(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<=0)throw Error(`${t} must be a positive integer timestamp`);return e}function iU(e,t,n){let r=t.find(t=>Object.prototype.hasOwnProperty.call(e,t));if(r)throw Error(`${n} must not include ${r}`)}function aU(e){return j(e,`offerId`)}function oU(e,t=`candidateId`){return j(e,t)}function sU(e){let t=M(e,`registration candidate`);return iU(t,tU,`registration candidate`),iU(t,nU,`registration candidate`),{candidateId:oU(t.candidateId),walletId:Go(j(t.walletId,`candidate.walletId`))}}function cU(e){let t=M(e,`Google Email OTP registration offer`);if(iU(t,tU,`Google Email OTP registration offer`),iU(t,nU,`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(sU),r=oU(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:aU(t.offerId),expiresAtMs:rU(t.expiresAtMs,`expiresAtMs`),emailHint:j(t.emailHint,`emailHint`),candidates:[i,...a],selectedCandidateId:r}}const lU=600*1e3;function uU(e){return{ok:!0,value:e}}function dU(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 fU(e,t,n){let r=dU(e,n);return r.ok?r:{ok:!1,error:{...r.error,message:t}}}function pU(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 mU(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 hU(e){let t=String(e.walletId||``).trim();if(!t)throw Error(`Google verification did not return a wallet id`);return Go(t)}function gU(e){let t=String(e.providerSubject||``).trim();if(!t)throw Error(`Google verification did not return a provider subject`);return t}function _U(e){let t=String(e.email||``).trim();if(!t)throw Error(`Google verification did not return an email address`);return t}function vU(e){let t=typeof e==`number`?e:typeof e==`string`?Date.parse(e):NaN;return Number.isFinite(t)&&t>Date.now()?t:Date.now()+lU}function yU(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 bU(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 xU(e){return e===`register_started`?`register`:`login`}function SU(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 CU(){return`Account doesn't exist. Create your account to continue.`}function wU(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 TU(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 EU(e){return e.providerSubject.toLowerCase()===e.verifiedEmail.toLowerCase()?`email`:`google`}async function DU(e){return await e.deps.resolveGoogleEmailOtpProvider(TU(e.input,e.input.mode))}function OU(e){let t=e.authInput.mode===`login`&&e.authInput.loginTarget.kind===`wallet`?Go(String(e.authInput.loginTarget.walletId)):hU(e.resolution),n=_U(e.resolution),r=e.resolution,i=xU(r.mode),a=r.mode===`register_started`?cU({kind:`google_email_otp_registration_offer_v1`,offerId:r?.offer?.offerId,expiresAtMs:yU(r.expiresAtMs),emailHint:n,candidates:r?.offer?.candidates,selectedCandidateId:r?.offer?.selectedCandidateId}):void 0;return{walletId:a?jU(a).walletId:t,...a?{offer:a}:{},providerSubject:gU(e.resolution),emailHint:n,requestedMode:e.authInput.mode,mode:i,expiresAtMs:r.mode===`register_started`?yU(r.expiresAtMs):vU(void 0),...r.mode===`register_started`?{registrationAttemptId:r.registrationAttemptId}:{}}}async function kU(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:EU({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 AU(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 jU(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 MU(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:NU(t.expiresAtMs),emailHint:t.delivery.emailHint,delivery:t.delivery,walletAuthMethodId:t.walletAuthMethodId,signerSelection:t.signerSelection}}function NU(e){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<=Date.now())throw Error(`Email code challenge is expired or missing expiry`);return e}function PU(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 FU(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 IU(e){return{...e.onEvent?{onEvent:e.onEvent}:{},...e.recoveryCodeBackup?{recoveryCodeBackup:e.recoveryCodeBackup}:{}}}function LU(e){let t=Math.floor(Number(e.signing.sessionDefaults?.remainingUses)||0);return t<=0?Re:Math.min(t,Re)}async function RU(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:LU(e.deps.configs),ed25519Selection:e.challenge.signerSelection});return}let i={walletSession:t,walletAuthMethodId:n.walletAuthMethodId,providerIdentity:{provider:EU({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 zU(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 BU(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 VU(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 HU(e,t){return fr(t)?{kind:`started`,completion:e.prewarmEmailOtpYao().catch(()=>void 0)}:{kind:`not_started`}}async function UU(e,t){let n;try{n=OU({authInput:t,resolution:await DU({deps:e,input:t})}),n=await kU({deps:e,state:n})}catch(e){return dU(wU(e),e)}if(n.mode===`register`)return uU(qU(e,{state:n,input:t,prewarm:{kind:`not_started`}}));try{let r=await MU({deps:e,state:n,...t.relayUrl?{relayUrl:t.relayUrl}:{},...t.onEvent?{onEvent:t.onEvent}:{}});return uU(YU(e,{state:n,challenge:r,input:t}))}catch(e){return SU(e)?fU(`google_account_registration_required`,CU(),e):dU(`email_otp_challenge_failed`,e)}}async function WU(e,t){if(t.method===`google`){let n=await UU(e,{mode:`login`,idToken:t.idToken,loginTarget:t.target,onEvent:t.onEvent});return n.ok?n.value.mode===`login`?uU(n.value):dU(`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 kU({deps:e,state:{walletId:Go(t.walletId),providerSubject:n,emailHint:n,requestedMode:`login`,mode:`login`,expiresAtMs:Date.now()+lU}});return r.linkedEmailOtpSelection?uU(YU(e,{state:r,challenge:await MU({deps:e,state:r,onEvent:t.onEvent}),input:{onEvent:t.onEvent}})):dU(`unlock_failed`,Error(`No active email method matches this wallet`))}catch(e){return dU(`email_otp_challenge_failed`,e)}}function GU(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 KU(e){return String(e.input.relayUrl||e.deps.configs.network.relayer?.url||``).trim()}function qU(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=PU({configs:e.configs,policy:t.input.ecdsaTargets}),a=IU({onEvent:t.input.onEvent,recoveryCodeBackup:t.input.recoveryCodeBackup}),o=i.length?a:zU({options:a}),s=jU(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`?HU(e,l.signerSelection):t.prewarm,d=GU({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:bU({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 dU(mU(e),e)}return d.burn(),uU({walletId:s,mode:`register`,session:await VU(e,s),registration:t})}catch(e){return dU(mU(e),e)}},rerollWalletId:async()=>{try{if(d.ensureActive(),!t.state.offer)return dU(`google_verification_failed`,Error(`Google Email OTP registration offer is missing wallet candidates`));let n=AU({offer:t.state.offer,currentWalletId:s});return n?(d.burn(),uU(qU(e,{state:{...t.state,walletId:n.walletId,offer:{...t.state.offer,selectedCandidateId:n.candidateId}},input:t.input,prewarm:u}))):dU(`google_verification_failed`,Error(`Google Email OTP registration offer has no alternate wallet candidate`))}catch(e){return dU(`google_verification_failed`,e)}},cancel:async()=>{d.burn()}}}var JU=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 YU(e,t){let n=new JU(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:bU({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 MU({deps:e,state:t.state,...t.input.relayUrl?{relayUrl:t.input.relayUrl}:{},...t.input.onEvent?{onEvent:t.input.onEvent}:{}});return n.burn(),uU(YU(e,{state:t.state,challenge:i,input:t.input}))}catch(e){return dU(`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 dU(`email_otp_expired`,Error(`Email code expired. Request a new code.`));let a=String(r.otpCode||``).trim();if(!/^\d{6}$/.test(a))return dU(`email_otp_invalid_code`,Error(`Enter the 6-digit code from your email.`));let o=FU({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:KU({deps:e,input:t.input})})}else await RU({deps:e,state:t.state,input:t.input,challenge:t.challenge,otpCode:a,targets:s});n.burn();let c=await BU(e,t.state.walletId);return uU({walletId:t.state.walletId,mode:`login`,session:c})}catch(e){return dU(pU(e),e)}finally{i&&n.release()}},cancel:async()=>{n.cancel()}}}async function XU(e){return await e.challenge.submit({otpCode:e.code})}function ZU(){return typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now()}function QU(){return{emailOtpProofVerificationMs:0,walletUnlockExchangeMs:0,ecdsaMaterialRestoreMs:0,signingSessionSealApplyMs:0,warmCapabilityPersistenceMs:0,activeRuntimeConstructionMs:0,emailHashLookupMs:0,workerUnlockAndSessionBootstrapMs:0,walletStateActivationMs:0,runtimePostconditionMs:0,walletIframeRoundTripMs:0}}function $U(e,t,n){eW(e,t,n)}function eW(e,t,n){let r=Math.max(0,Math.round(n));e[t]+=r,tW()&&console.info(`[EmailOtpUnlock] timing`,{bucket:t,deltaMs:r,accumulatedMs:e[t]})}function tW(){return Reflect.get(globalThis,`__SEAMS_EMAIL_OTP_UNLOCK_DIAGNOSTICS`)===!0}function nW(e){if(!tW())return;let t=Object.entries(e.timings),n=[];for(let[e,r]of t)r>0&&n.push({bucket:e,durationMs:r});n.sort(sW);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(ZU()-e.startedAtMs)),timings:e.timings,topBuckets:r,...i?{errorMessage:i}:{}};console.info(`[EmailOtpUnlock] timing summary`,a)}function rW(e,t){if(!O(e))throw Error(`[SeamsWeb] ${t} requires a concrete ECDSA chainTarget`);return Mr(e)}function iW(e,t){return`email-otp-unlock:${String(e||`unknown-wallet`).trim()||`unknown-wallet`}:${String(t||`active`).trim()||`active`}`}function aW(e,t){try{e?.(ys(t))}catch{}}function oW(e,t){let n=wt(t.error);aW(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 sW(e,t){return t.durationMs-e.durationMs}async function cW(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 lW(e){let t=c(e);if(!t.ok)throw Error(`Email OTP unlock returned an invalid wallet auth method id`);return t.value}function uW(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 dW(e,t,n){eW(e,t,ZU()-n)}function fW(e){return{kind:`email_otp_unlock_active_runtime_state_v1`,inventory:e}}function pW(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:fW(e.runtimeInventory)}}function mW(e){tW()&&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(yW),runtimeTargetCount:e.runtimeState.inventory.ecdsaByTarget.size})}function hW(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 aW(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 aW(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 aW(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 aW(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 aW(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 gW(e){let t=new vW(e);return{requestEmailCode:t.requestEmailCode.bind(t),unlockWithEmailCode:XU,startGoogleSignIn:t.startGoogleSignInDomain.bind(t)}}function _W(e){return{curve:`ecdsa`,chainTarget:e}}var vW=class{constructor(e){this.deps=e}async readOwnerScopedSigningLanes(e){return await this.deps.getContext().signingEngine.readOwnerScopedSigningLanes(e,new el)}async requestUnlockChallenge(e){let t=iW(e.walletId);aW(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 aW(e.onEvent,{flowId:iW(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 oW(e.onEvent,{flowId:t,walletId:e.walletId,authMethod:`email_otp`,error:r}),r}}async loginWithEmailOtpEcdsaCapabilityDomain(e){let t=e.walletSession.walletId,n=iW(t,e.challengeId),r=rW(e.chainTarget,`Email OTP ECDSA unlock`),i={startedAtMs:ZU(),timings:QU()};aW(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=bW.bind(null,a,e.onEvent,{flowId:n,walletId:t,challengeId:e.challengeId,chainTarget:r}),s=xW.bind(null,a,e.onEvent),c=ZU(),l=await this.emailOtpEmailHashHex(e.emailOtpAuthorityEmail||``);dW(i.timings,`emailHashLookupMs`,c),c=ZU();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 QO({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:uW(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:lW(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:lW(e.walletAuthMethodId)}}let p=ZU()-c;$U(i.timings,`workerUnlockAndSessionBootstrapMs`,p),$U(i.timings,`emailOtpProofVerificationMs`,d.timings.emailOtpProofVerificationMs),$U(i.timings,`ecdsaMaterialRestoreMs`,d.timings.ecdsaMaterialRestoreMs),$U(i.timings,`signingSessionSealApplyMs`,d.timings.signingSessionSealApplyMs),$U(i.timings,`warmCapabilityPersistenceMs`,d.timings.warmCapabilityPersistenceMs),c=ZU(),await tk({signingEngine:this.deps.getContext().signingEngine,nearClient:this.deps.getContext().nearClient},f),dW(i.timings,`walletStateActivationMs`,c),c=ZU();let m=await $O({walletId:String(t),walletAuthMethodId:String(e.walletAuthMethodId),providerSubject:e.providerIdentity.providerSubjectId,emailHashHex:l,projection:d.recovery.verifiedAuthorityProjection}),h=await Fv({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(_W)],readOwnerScopedSigningLanes:this.readOwnerScopedSigningLanes.bind(this)});mW(pW({walletSession:e.walletSession,result:d,runtimeInventory:h}));let g=ZU()-c;return $U(i.timings,`runtimePostconditionMs`,g),$U(i.timings,`activeRuntimeConstructionMs`,g),nW({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 nW({status:`failed`,mode:`evm_family_ecdsa`,walletId:t,chainTarget:r,startedAtMs:i.startedAtMs,timings:i.timings,error:o}),oW(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=op({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 dx({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 WU(this.flowDependencies(),e)}async startGoogleSignInDomain(e){return await UU(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 Jy({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 Hy({authMethod:i,provider:e.provider,providerSubjectId:e.providerSubjectId}),{kind:`selected`,walletAuthMethodId:String(i.walletAuthMethodId),execution:await cW(a.provenance,i.walletAuthMethodId),keyFamilies:a.signerActivations.keyFamilies})}case`selected`:return{kind:`selected`,walletAuthMethodId:String(r.selection.authMethod.walletAuthMethodId),execution:await cW(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 tk({signingEngine:this.deps.getContext().signingEngine,nearClient:this.deps.getContext().nearClient},{kind:`near_ed25519_wallet`,signer:n,walletAuthMethodId:lW(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 yW(e){return e.operationCredential.walletSessionId}function bW(e,t,n,r){let i=hW(t,{flowId:n.flowId,walletId:n.walletId,challengeId:n.challengeId,chainTarget:n.chainTarget,progress:r});i&&e.add(i)}function xW(e,t,n){e.has(n.phase)||aW(t,n)}function SW(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 CW(e){await K.upsertWalletAuthMethod(SW(e))}async function wW(e){await CW(e);let t=c(e.walletAuthMethodId),n=r(e.walletAuthorityId);if(!t.ok||!n.ok)throw Error(`added passkey identity is invalid`);await EW({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 TW(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 EW(e){await K.upsertWalletAuthMethodV2(TW(e))}function DW(e){if(!e||!(e instanceof PublicKeyCredential))throw Error(`Passkey registration did not return a public-key credential`);return e}function OW(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 kW(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 AW(e){if(e.kind!==`unlocked_capability`)throw Error(`wallet custody reseal source is not an unlocked capability`);return e.capability}function jW(e){let t=m(e);if(!t.ok)throw Error(`Passkey registration credential id is invalid: ${t.error.message}`);return t.value}async function MW(e){let t=e.registrationCredential?e.registrationCredential:ac({credential:DW(await navigator.credentials.create({publicKey:OW(e.registration)})),firstPrfOutput:!0,secondPrfOutput:!1}),n=oc(t);if(!n)throw Error(`New passkey did not return PRF.first`);let r=jW(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=kW(l===null?await e.worker.requestOperation({kind:`walletCustodyCeremony`,request:{type:`resealWalletCustodyFromUnlockedCapability`,payload:{capability:AW(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 NW(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 MW({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 PW(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 FW(e){return[{id:e.credentialIdB64u,type:`public-key`,transports:[]}]}async function IW(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 CW({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 LW(e){let t=e.signingEngine.getSignerWorkerContext();return{requestOperation:Wn.bind(void 0,t)}}async function RW(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 PW(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 zW({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=FW(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 NW({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:LW(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 IW({walletId:e.walletId,rpId:e.rpId,walletAuthMethodId:i.intent.targetWalletAuthMethodId,finalized:n.finalized})}finally{l.fill(0)}}async function zW(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 NW({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:LW(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 wW({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 BW(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 RW({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 VW(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 HW(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=VW(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 UW(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 WW(e){let t=e.signingEngine.getSignerWorkerContext();return{requestOperation:Wn.bind(void 0,t)}}function GW(e){return e}function KW(e){let t=String(e||``).trim().toLowerCase();if(!t||!t.includes(`@`))throw Error(`registration.addEmail requires an email address`);return t}async function qW(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=KW(e.emailAddress),a=GW(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 PW(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=FW(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 HW({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:WW(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 UW({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 JW(e){let t=Go(String(e.walletId||``).trim());try{let n=await qW({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 YW(e){return{registerWallet:XW.bind(null,e),getNearAccountState:ZW.bind(null,e),addSigner:QW.bind(null,e),addPasskey:$W.bind(null,e),removeAuthMethod:eG.bind(null,e),addEmail:tG.bind(null,e)}}async function XW(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 ZW(e,t){let n=z(t.walletId);return on(n)||await e().signingEngine.getWalletNearProvisioningState(n)}async function QW(e,t){return await dr({context:e(),walletId:t.walletId,rpId:t.rpId,signerSelection:t.signerSelection,options:t.options||{}})}async function $W(e,t){return await BW({context:e(),walletId:t.walletId,rpId:t.rpId,options:t.options})}async function eG(e,t){return await JR({context:e(),walletId:t.walletId,walletAuthMethodId:t.walletAuthMethodId})}async function tG(e,t){return await JW({context:e(),walletId:t.walletId,emailAddress:t.emailAddress,options:t.options})}async function nG(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=op({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 rG({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 rG(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 nS(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 iG(e){return{unlock:lG.bind(null,e),lock:uG.bind(null,e),getSession:dG.bind(null,e),getRecentUnlocks:pG.bind(null,e),hasPasskey:fG}}function aG(e){return e.kind===H.passkey&&e.status===`active`}function oG(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 sG(e){let t=await Ty({walletId:e.walletId,requestedCapabilityFamilies:oG(e.selection)});switch(t.kind===`missing_requested_capability_subject`&&(await Cr({relayerUrl:e.relayerUrl}),t=await Ty({walletId:e.walletId,requestedCapabilityFamilies:oG(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 cG(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 lG(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 nG({context:i,pending:a,options:n});let o=await sG({relayerUrl:i.configs.network.relayer.url,walletId:r,selection:n?.unlockSelection}),s=await Bb(i,o,n);if(s?.success){let e=cG(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 uG(e){await nC(e())}async function dG(e,t){return await nS(e(),t,new el)}async function fG(e){let t=String(e||``).trim();if(!t)return!1;try{return(await K.listWalletAuthMethodsV2ForWallet(t)).some(aG)}catch{return!1}}async function pG(e){return await YS(e())}async function mG(e,t,n){let r=z(t.walletSession.walletId);return await e().signingEngine.scheduleRouterAbEcdsaDerivationLoginPresignaturePrefill({walletId:r,chainTarget:t.chainTarget},n)}async function hG(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 gG(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 _G(e){switch(e.kind){case`relink_required`:return{kind:`relink_required`,reason:e.reason};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 vG(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 yG(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 bG(e,t){t.event===`registration.near_provisioning_changed`&&e(t)}function xG(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 SG(e){e().catch(CG)}function CG(e){console.warn(`[SeamsWeb] pending linked-device acknowledgement replay failed:`,e instanceof Error?e.message:String(e||`unknown error`))}var wG=class{constructor(e,t){this.configs=e,ks({mode:`wallet`}),this.nearClient=t||new Rd(N(this.configs.network.chains));let n=wE(K),r=new BR(this.configs,this.nearClient,{managerStores:n.managerStores,signingEngineStores:n.signingEngineStores,sealedSigningSessionStore:n.sealedSigningSessionStore,ed25519YaoPublicCapabilityReferences:n.ed25519YaoPublicCapabilityReferences,createRuntime:Ow,initializeRuntime:EE,shouldPrewarmUiConfirmUi:EG});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=Dw(r.getSignerWorkerContext()),o=BC({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=_w({lockWallet:this.lockAfterWalletMove.bind(this),signingEngine:r,managementRequest:o.managementRequest,readAuthentication:r.readWalletAuthenticationState.bind(r)});let s=YH({platform:a,ownerAuthorities:o,configs:this.configs,signingEngine:r,getContext:this.getContext.bind(this)});this.deviceLinkingDispose=s.dispose,this.resumePendingAcknowledgementsV1=s.resumePendingAcknowledgementsV1;let c=YW(this.getContext.bind(this)),l=iG(this.getContext.bind(this));this.prefillRestoredSession=mG.bind(null,this.getContext.bind(this));let u=gW({getContext:this.getContext.bind(this),registerWallet:c.registerWallet,getWalletSession:l.getSession,resumePendingAcknowledgements:this.resumePendingAcknowledgementsAfterExactUnlockV1.bind(this)}),d={flush:TG,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=dO({createNearCommands:aE.bind(null,this.getContext.bind(this)),createEvmFamilyCommands:sE.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(),SG(s.resumePendingAcknowledgementsV1)}async prefillRestoredWalletSession(e){await hG({state:e,chainTargets:this.configuredChainTargets(),prefill:this.prefillRestoredSession})}async lockAfterWalletMove(){bC(),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(){SG(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 ou({relayUrl:e});for(let e of t)xG(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 zw(this.configs.network.chains,e)}configuredChainTargets(){return Ir(this.configs.network.chains)}setAppearance(e){let t=yG(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 zT(this.getContext(),t?String(t):null,e.options)}onNearAccountChange(e){return this.onSdkLifecycleEvent(bG.bind(null,e))}async getCodeStatusDomain(e){let t=await pf({relayUrl:String(this.configs.network.relayer.url||``).trim(),walletId:e.walletId});return t.kind===`ready`?{...t,pendingLocalBackup:await ru.has(e.walletId)}:t}async confirmBackupDomain(e){let t=String(this.configs.network.relayer.url||``).trim();if((await nu({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 hf({relayUrl:t,walletId:e.walletId});return n.kind===`acknowledged`&&await ru.delete(e.walletId),n}async loadPendingWalletRecoveryCodeBackupRequest(e){let t=await ru.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 mf({relayUrl:String(this.configs.network.relayer.url||``).trim(),...e})}async rotateCodesDomain(e){let t=String(this.configs.network.relayer.url||``).trim();return await XE({context:this.getContext(),relayUrl:t,walletId:e.walletId,authorization:e.authorization})}async signTempoFeeTokenPreferenceInternal(e){let t=mE(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=gG(e);if(Hw(this.configs,t),!String(t.walletSession.walletId||``).trim())throw Error(`[SeamsWeb] key export lane resolution requires wallet session context`);return _G(await this.signingEngine.resolveExactKeyExportLane(t))}async exportKeypairWithUIDomain(e){let t=vG(e,this.theme);if(Hw(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 TG(){}function EG(e){return!(typeof window>`u`||window.Worker===void 0||e&&e!==window.location.origin)}const DG=`seams-theme-overrides`,OG=[`.seams-wallet-ui`,`.seams-auth-menu-surface`,`.seams-host-themed-dialog`],kG=OG.join(`,
|
|
2
|
+
`),AG=OG.map(e=>`${e}[theme="light"],\n:root[data-seams-theme="light"] ${e}:not([theme="dark"])`).join(`,
|
|
3
|
+
`);let jG=null;function MG(){return jG||=Sf({doc:document,baseCss:``,dynamicStyleDataAttr:`data-seams-theme-overrides`,nonce:()=>xf()}),jG}function NG(e){let t=e.trim();return t&&/^[A-Za-z][A-Za-z0-9_-]*$/.test(t)?t:null}function PG(e){let t=e.trim();return!t||t.length>1024||/[{};\n\r]/.test(t)?null:t}function FG(e,t){let n=[];for(let[r,i]of Object.entries(e)){let e=NG(r);if(!e)continue;let a=PG(i);a&&n.push(` --seams-${t}-${e}: ${a} !important;`)}return n}function IG(e){let t=e.theme.mode,n=e.theme.colors,r=[...FG(n,`colors`),...FG(e.theme.shape??{},`shape`)],i=[];if(r.length>0){let e=t===`light`?AG:kG;i.push(`${e} {\n${r.join(`
|
|
4
|
+
`)}\n}`)}let a=i.join(`
|
|
5
|
+
|
|
6
|
+
`).trim();if(!a){MG().deleteDynamicRule(DG);return}MG().setDynamicRule(DG,a)}function LG(){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 RG(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 Rd(n),e.walletRuntime||(Sl(!0),e.walletRuntime=new wG(t.config,e.nearClient),zG(e)),e.walletRuntime}function zG(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 BG(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),IG(i)}catch{}if(e.walletRuntime&&r===n)try{e.walletRuntime.setAppearance(i)}catch{}if(Xe(VG(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 VG(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 HG(e,t){e.lifecycleSource!==t&&(e.lifecycleUnsubscribe?.(),e.lifecycleSource=t,e.lifecycleUnsubscribe=t.onSdkLifecycleEvent(GG.bind(null,e,t)))}function UG(e,t){e.lifecycleListener=t,e.walletRuntime&&HG(e,e.walletRuntime)}function WG(e){throw Error(`Unhandled SDK lifecycle event: ${String(e)}`)}function GG(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 WG(n)}}let KG=null;const qG=new Map;let JG=null;const YG=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 XG(e,t){e.post({type:`SURFACE_MEASUREMENT`,payload:t})}function ZG(e){if(e.type!==`PM_EXPORT_KEYPAIR_UI`)return;let t=e.payload?.options?.variant;return t===`modal`||t===`drawer`?t:`drawer`}function QG(e){let t;try{t=Ct(e.req.requestId)}catch{return null}let n=ZG(e.req);return{requestId:t,binding:{kind:`wallet_iframe`,...e.transactionReview?{transactionReview:e.transactionReview}:{},requestId:t,postMeasurement:XG.bind(null,e),...n?{hostSurfaceVariant:n}:{}}}}function $G(e){return YG.has(e.req.type)}function eK(e,t){let n=e.surfaceMeasurementBinding;n.kind!==`wallet_iframe`||n.requestId!==t||(e.surfaceMeasurementBinding={kind:`disabled`},e.walletRuntime?.setWalletIframeSurfaceMeasurementBinding({kind:`disabled`}))}function tK(e,t){e.surfaceMeasurementBinding=t,RG(e).setWalletIframeSurfaceMeasurementBinding(t)}function nK(e){return JG!==e.executionGeneration&&(qG.clear(),JG=e.executionGeneration),KG||=LG(),e.onConfigurationChanged=rK.bind(null,e),KG.parentOrigin=e.parentOrigin,KG.port!==e.port&&(KG.sessionObserver?.dispose(),KG.sessionObserver=null),KG.port=e.port,e.parentOrigin!==null&&vC(e.parentOrigin),UG(KG,hK.bind(null,KG)),e.configuration.kind===`configured`&&BG(KG,e.configuration),KG}function rK(e){!KG||e.configuration.kind===`unconfigured`||nK(e)}function iK(e){let t=e.walletRuntime,n=RG(e);if(HG(e,n),t===n)return oK(e,n),n;let r=n.preferences;e.prefsUnsubscribe?.();let i=uK.bind(null,e,n),a=r.onConfirmationConfigChange?.(i)||null,o=r.onCurrentWalletChange?.(i)||null;return e.prefsUnsubscribe=()=>{try{a?.()}catch{}try{o?.()}catch{}},oK(e,n),Promise.resolve().then(i).catch(()=>{}),n}function aK(e,t,n,r){e.walletRuntime!==t||e.port!==n||n.postMessage(r)}function oK(e,t){if(e.sessionObserver)return e.sessionObserver;if(!e.port)throw Error(`Wallet session observation requires a connected parent`);return e.sessionObserver=new ap(t,aK.bind(null,e,t,e.port),e.expiredSessionsByWallet,nS.bind(null,t.getContext())),e.sessionObserver}function sK(e,t,n,r){return oK(e,dK(e,t)).observe(n,r)}function cK(e,t){return oK(e,dK(e,t)).publishCurrentSession()}function lK(e,t){return{walletId:t.preferences.getCurrentWalletId(),confirmationConfig:t.preferences.getConfirmationConfig(),revision:e.preferencesRevision}}function uK(e,t){e.walletRuntime===t&&(e.preferencesRevision+=1,e.port?.postMessage({type:`PREFERENCES_CHANGED`,payload:lK(e,t)}))}function dK(e,t){if(t.executionGeneration!==t.state.executionGeneration)throw Error(`Wallet configuration changed during request`);return iK(e)}function fK(e,t){return lK(e,dK(e,t))}function pK(e,t){return{getWalletRuntime:dK.bind(null,e,t),readPreferences:fK.bind(null,e,t),observeSession:sK.bind(null,e,t),publishCurrentSession:cK.bind(null,e,t),post:mK.bind(null,t),postProgress:(e,n)=>{e&&mK(t,{type:`PROGRESS`,requestId:e,payload:n})},isCancelled:t.isCancelled,respondIfCancelled:t.respondIfCancelled}}function mK(e,t){e.executionGeneration===e.state.executionGeneration&&(yf(t),e.post(t))}function hK(e,t){e.sessionObserver?.onLifecycleEvent(t)}async function gK(e,t){if(e.respondIfCancelled(e.req.requestId))return;let n=nK(e.state),r=oK(n,dK(n,e));r.beginOperation(),bf(e.req,e.post);let i=$G(e)?QG(e):null;i&&tK(n,i.binding);try{let r=dK(n,e);await Af(e.req,r.preferences.getCurrentWalletId());let i=qG.get(t);i||(i=t(pK(n,e)),qG.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&&_f(e.req)}catch(t){throw e.executionGeneration===e.state.executionGeneration&&vf(e.req.requestId,t),t}finally{r.endOperation(),i&&e.executionGeneration===e.state.executionGeneration&&eK(n,i.requestId)}}function _K(e,t){e.post({type:`PM_RESULT`,requestId:t,payload:{ok:!0}})}function vK(e,t,n){e.post({type:`PM_RESULT`,requestId:t,payload:{ok:!0,result:n}})}function yK(e,t,n){return{...n||{},onEvent:n=>e.postProgress(t,n)}}function bK(e,t,n){return{...n||{},onEvent:n=>e.postProgress(t,n),onTimingSpan:n=>e.postProgress(t,n)}}export{Z as C,Ff as S,Of as T,fx as _,gK as a,ip as b,BT as c,yC as d,bC as f,Ub as g,qy as h,bK as i,EC as l,tC as m,vK as n,mE as o,SC as p,yK as r,uT as s,_K as t,OC as u,Bb as v,kf as w,Hf as x,Ty as y};
|