@seams/wallet 0.29.0 → 0.31.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 +7 -7
- package/THIRD_PARTY_NOTICES.md +1 -127
- package/dist/.build-inputs.sha256 +1 -1
- package/dist/esm/SeamsWeb/SeamsWeb.js +2 -0
- package/dist/esm/SeamsWeb/walletIframe/client/inboundMessages.js +9 -0
- package/dist/esm/SeamsWeb/walletIframe/client/router.js +30 -0
- package/dist/esm/SeamsWeb/walletIframe/coordinator.js +18 -0
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +88 -47
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/WalletAlternativesSection.js +67 -0
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/mountAuthMenuSurface.js +13 -0
- package/dist/esm/SeamsWeb/walletIframe/host/walletMutationGuard.js +1 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +20 -6
- package/dist/esm/SeamsWeb/walletIframe/shared/walletAlternatives.js +109 -0
- package/dist/esm/core/config/configBuilder.js +1 -1
- package/dist/esm/core/config/defaultConfigs.js +9 -2
- package/dist/esm/core/ui/messages.js +3 -1
- package/dist/esm/core/ui/walletIcon.js +10 -0
- package/dist/esm/externalEvm/boundary.js +4 -2
- package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +26 -6
- package/dist/esm/react/components/HostedSeamsAuthMenu/walletAlternatives.js +178 -0
- package/dist/esm/react/index.js +1 -2
- package/dist/esm/react/styles/styles.css +0 -183
- package/dist/esm/react/styles.css +0 -1
- package/dist/esm/sdk/{ConfirmationDrawer-BRnd5SEf.js → ConfirmationDrawer-fyl4IDRl.js} +1 -1
- package/dist/{public/sdk/NonceCoordinator-CNXYrOoy.js → esm/sdk/NonceCoordinator-C1lw03Ce.js} +1 -1
- package/dist/esm/sdk/{activeWalletSession-BJ4B-nJo.js → activeWalletSession-HAOgRKzn.js} +1 -1
- package/dist/esm/sdk/{adapters-B2k8y0MB.js → adapters-BY1wGpm5.js} +1 -1
- package/dist/esm/sdk/appearance-token-vars-CzlRDVQ7.js +1 -0
- package/dist/esm/sdk/{authorization-gVWwKwav.js → authorization-D_NueqAv.js} +1 -1
- package/dist/esm/sdk/{clientSessionPersistenceState-BxpITYM_.js → clientSessionPersistenceState-B3gU3515.js} +1 -1
- package/dist/esm/sdk/{commitQueue-C1wkey4q.js → commitQueue-CbyuhEW9.js} +1 -1
- package/dist/{public/sdk/confirm-ui-Dx6c4-Rk.js → esm/sdk/confirm-ui-DWFcGTsT.js} +1 -1
- package/dist/{public/sdk/device-linking-_o3_fgiG.js → esm/sdk/device-linking-BL2aDEUF.js} +1 -1
- package/dist/esm/sdk/{deviceLinkApproval-CObsEWBa.js → deviceLinkApproval-C4T8XAmi.js} +1 -1
- package/dist/esm/sdk/{digestEncoding-34kXJoJr.js → digestEncoding-Rx8Vjy4J.js} +1 -1
- package/dist/esm/sdk/{display-CUWg48tD.js → display-8NGPOhQT.js} +1 -1
- package/dist/{public/sdk/ecdsaCapabilityManifest--1Ztngfx.js → esm/sdk/ecdsaCapabilityManifest-BbPXL-qh.js} +1 -1
- package/dist/{public/sdk/ecdsaDerivationClientWasm-DJh2uN-q.js → esm/sdk/ecdsaDerivationClientWasm-GCt9yVsd.js} +1 -1
- package/dist/{public/sdk/ecdsaDerivationExport-BUUUGc6o.js → esm/sdk/ecdsaDerivationExport-jm2VBMz_.js} +1 -1
- package/dist/esm/sdk/{emailOtpEcdsaDerivationIdentity-Qd4pBwHv.js → emailOtpEcdsaDerivationIdentity-DJmMyqL-.js} +1 -1
- package/dist/esm/sdk/{export-viewer-host-O0OV1Oou.js → export-viewer-host-TzgdJQuZ.js} +1 -1
- package/dist/{public/sdk/exportKeypairOperation-DkqY9Bpf.js → esm/sdk/exportKeypairOperation-B9_ulzNz.js} +1 -1
- package/dist/esm/sdk/host-DltV2Oan.js +1 -0
- package/dist/esm/sdk/{indexedDB-CA4tGqkr.js → indexedDB-BqsYXybq.js} +1 -1
- package/dist/esm/sdk/{lanes-vBKm6yBJ.js → lanes-0WT2w1Xz.js} +1 -1
- package/dist/esm/sdk/{localOnly-U_MucUAe.js → localOnly-DFrtrfdO.js} +1 -1
- package/dist/esm/sdk/{mountExportPrivateKeySurface-C2-fnvP6.js → mountExportPrivateKeySurface-D8juRQJM.js} +1 -1
- package/dist/{public/sdk/mountRecoveryCodeBackupSurface-C_tJNPJX.js → esm/sdk/mountRecoveryCodeBackupSurface-CMtByh-L.js} +1 -1
- package/dist/esm/sdk/{nearEd25519YaoSigningPreparation-CnbgQfZc.js → nearEd25519YaoSigningPreparation-Cz2Gb95g.js} +1 -1
- package/dist/esm/sdk/{operationFingerprint-Bas59T7L.js → operationFingerprint-GKEY-X5I.js} +1 -1
- package/dist/esm/sdk/ownerNearOperation-DCxxHcwX.js +1 -0
- package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-DXFrQmO5.js → pendingWalletRecoveryCodeBackup-8iMhQU-E.js} +1 -1
- package/dist/{public/sdk/presignaturePool-Dq4RhzXn.js → esm/sdk/presignaturePool-CaI45td2.js} +1 -1
- package/dist/esm/sdk/{presignatures-CkhuZ0YQ.js → presignatures-B9KnQyfE.js} +1 -1
- package/dist/esm/sdk/{recovery-entrypoint-s9OoKBcl.js → recovery-entrypoint-DA2FGLG6.js} +1 -1
- package/dist/esm/sdk/registration-Coh0_Nva.js +1 -0
- package/dist/esm/sdk/{registration-D3p7muCc.js → registration-XNyt1YRK.js} +1 -1
- package/dist/esm/sdk/{registrationIntent-C1-Kyx_-.js → registrationIntent-Cb3tggIM.js} +1 -1
- package/dist/{public/sdk/requireStepUpAuth-iVo6h_U-.js → esm/sdk/requireStepUpAuth-ByMTPBu4.js} +1 -1
- package/dist/esm/sdk/resealedEnvelopeResult-DKY5fVNY.js +1 -0
- package/dist/esm/sdk/routerAbNormalSigning-CPLDkttX.js +1 -0
- package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/esm/sdk/runtime-auth-CP6P681o.js +1 -0
- package/dist/esm/sdk/{runtime-device-link-qmYvGep9.js → runtime-device-link-CGDZQK-D.js} +1 -1
- package/dist/{public/sdk/runtime-ecdsa-tempo-Zh95TuLV.js → esm/sdk/runtime-ecdsa-tempo-BiJYKWK4.js} +1 -1
- package/dist/esm/sdk/{runtime-email-otp-CnLuW4H1.js → runtime-email-otp-B0XCNDRb.js} +1 -1
- package/dist/esm/sdk/{runtime-export-m8lvrXtw.js → runtime-export-CXxv6KIx.js} +1 -1
- package/dist/esm/sdk/{runtime-near-BiXzXXhH.js → runtime-near-CuyS57wu.js} +1 -1
- package/dist/esm/sdk/runtime-preferences-B2WBUZO7.js +1 -0
- package/dist/esm/sdk/runtime-recovery-KwVdSe94.js +1 -0
- package/dist/esm/sdk/{runtime-recovery-codes-B033ake_.js → runtime-recovery-codes-CFOWDVd9.js} +1 -1
- package/dist/esm/sdk/{runtimeContext-RNS2E5wy.js → runtimeContext-Iy1vecX0.js} +3 -3
- package/dist/esm/sdk/{secp256k1-DPeaOjM0.js → secp256k1-sDDAa4Ga.js} +1 -1
- package/dist/{public/sdk/signEvmFamily-Cksw3RpU.js → esm/sdk/signEvmFamily-CMrXkVsZ.js} +1 -1
- package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-B7p9UVix.js → signEvmFamilyWithUiConfirmForTempo-CnRoo0e8.js} +1 -1
- package/dist/esm/sdk/{signEvmWithUiConfirm-B14zYdwE.js → signEvmWithUiConfirm-yITc3ZvP.js} +1 -1
- package/dist/esm/sdk/{signNear-D0rFEYP1.js → signNear-DyFk--I3.js} +1 -1
- package/dist/{public/sdk/signingFlow-Bd1X0e-1.js → esm/sdk/signingFlow-DTP4D19E.js} +1 -1
- package/dist/{public/sdk/signingQueue-DoUBeaCv.js → esm/sdk/signingQueue-Dy5mYMus.js} +1 -1
- package/dist/esm/sdk/{thresholdEcdsa-BxfOZmiR.js → thresholdEcdsa-CRfx6RP1.js} +1 -1
- package/dist/esm/sdk/{trace-BnhLKxcu.js → trace-BA8jya7O.js} +1 -1
- package/dist/{public/sdk/transactionState-G_FPe-U8.js → esm/sdk/transactionState-BCbaT2hO.js} +1 -1
- package/dist/esm/sdk/tx-confirm-ui.js +3 -1
- package/dist/esm/sdk/{types-A-w1cYlJ.js → types-D2Zk1W7I.js} +1 -1
- package/dist/{public/sdk/unlockedEd25519ExportRootCapability-5F1egCSv.js → esm/sdk/unlockedEd25519ExportRootCapability-BbGMlikr.js} +1 -1
- package/dist/esm/sdk/voiceid-host.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-DXdm68_Q.js → wallet-recovery-Bfm-oUoP.js} +1 -1
- package/dist/esm/sdk/wallet-ui.css +1 -1
- package/dist/{public/sdk/walletAuthMethodRecord-BW-XV4fv.js → esm/sdk/walletAuthMethodRecord--fvGr8r1.js} +1 -1
- package/dist/{public/sdk/walletAuthority-DbGaSw7D.js → esm/sdk/walletAuthority-CU9nO0Ze.js} +1 -1
- package/dist/esm/sdk/{walletCustodyEcdsaContinuity-BnyL1Ryu.js → walletCustodyEcdsaContinuity-BUdDyRl_.js} +1 -1
- package/dist/esm/sdk/{walletDbName-Ca0rCq5r.js → walletDbName-B6-CV_Rq.js} +1 -1
- package/dist/esm/sdk/{walletOwnerOperation-CScYv2K6.js → walletOwnerOperation-BJPxzo-k.js} +1 -1
- package/dist/esm/sdk/{walletOwnershipGeneration-BZc6UKqX.js → walletOwnershipGeneration-B3uE9GRG.js} +1 -1
- package/dist/{public/sdk/walletRecoveryAdminProof-DdwikrW3.js → esm/sdk/walletRecoveryAdminProof-BmZaP0Q8.js} +1 -1
- package/dist/{public/sdk/walletRecoveryCommit-DbAoiJp5.js → esm/sdk/walletRecoveryCommit-CSYNbYNd.js} +1 -1
- package/dist/esm/sdk/{walletSessionAuthorizationStatus-GhcGvDCX.js → walletSessionAuthorizationStatus-CQ3qA9tI.js} +1 -1
- package/dist/{public/sdk/walletSessionAuthorizationStore-BivTUoKY.js → esm/sdk/walletSessionAuthorizationStore-CGt-s5fX.js} +1 -1
- package/dist/esm/shared-ts/src/utils/index.js +1 -1
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
- package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client_bg.wasm +0 -0
- package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client.d.ts +212 -233
- package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client.js +675 -694
- package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/headers.manifest.json +1 -1
- package/dist/public/sdk/{ConfirmationDrawer-BRnd5SEf.js → ConfirmationDrawer-fyl4IDRl.js} +1 -1
- package/dist/{esm/sdk/NonceCoordinator-CNXYrOoy.js → public/sdk/NonceCoordinator-C1lw03Ce.js} +1 -1
- package/dist/public/sdk/{activeWalletSession-BJ4B-nJo.js → activeWalletSession-HAOgRKzn.js} +1 -1
- package/dist/public/sdk/{adapters-B2k8y0MB.js → adapters-BY1wGpm5.js} +1 -1
- package/dist/public/sdk/appearance-token-vars-CzlRDVQ7.js +1 -0
- package/dist/public/sdk/{authorization-gVWwKwav.js → authorization-D_NueqAv.js} +1 -1
- package/dist/public/sdk/{clientSessionPersistenceState-BxpITYM_.js → clientSessionPersistenceState-B3gU3515.js} +1 -1
- package/dist/public/sdk/{commitQueue-C1wkey4q.js → commitQueue-CbyuhEW9.js} +1 -1
- package/dist/{esm/sdk/confirm-ui-Dx6c4-Rk.js → public/sdk/confirm-ui-DWFcGTsT.js} +1 -1
- package/dist/{esm/sdk/device-linking-_o3_fgiG.js → public/sdk/device-linking-BL2aDEUF.js} +1 -1
- package/dist/public/sdk/{deviceLinkApproval-CObsEWBa.js → deviceLinkApproval-C4T8XAmi.js} +1 -1
- package/dist/public/sdk/{digestEncoding-34kXJoJr.js → digestEncoding-Rx8Vjy4J.js} +1 -1
- package/dist/public/sdk/{display-CUWg48tD.js → display-8NGPOhQT.js} +1 -1
- package/dist/{esm/sdk/ecdsaCapabilityManifest--1Ztngfx.js → public/sdk/ecdsaCapabilityManifest-BbPXL-qh.js} +1 -1
- package/dist/{esm/sdk/ecdsaDerivationClientWasm-DJh2uN-q.js → public/sdk/ecdsaDerivationClientWasm-GCt9yVsd.js} +1 -1
- package/dist/{esm/sdk/ecdsaDerivationExport-BUUUGc6o.js → public/sdk/ecdsaDerivationExport-jm2VBMz_.js} +1 -1
- package/dist/public/sdk/{emailOtpEcdsaDerivationIdentity-Qd4pBwHv.js → emailOtpEcdsaDerivationIdentity-DJmMyqL-.js} +1 -1
- package/dist/public/sdk/{export-viewer-host-O0OV1Oou.js → export-viewer-host-TzgdJQuZ.js} +1 -1
- package/dist/{esm/sdk/exportKeypairOperation-DkqY9Bpf.js → public/sdk/exportKeypairOperation-B9_ulzNz.js} +1 -1
- package/dist/public/sdk/host-DltV2Oan.js +1 -0
- package/dist/public/sdk/{indexedDB-CA4tGqkr.js → indexedDB-BqsYXybq.js} +1 -1
- package/dist/public/sdk/{lanes-vBKm6yBJ.js → lanes-0WT2w1Xz.js} +1 -1
- package/dist/public/sdk/{localOnly-U_MucUAe.js → localOnly-DFrtrfdO.js} +1 -1
- package/dist/public/sdk/{mountExportPrivateKeySurface-C2-fnvP6.js → mountExportPrivateKeySurface-D8juRQJM.js} +1 -1
- package/dist/{esm/sdk/mountRecoveryCodeBackupSurface-C_tJNPJX.js → public/sdk/mountRecoveryCodeBackupSurface-CMtByh-L.js} +1 -1
- package/dist/public/sdk/{nearEd25519YaoSigningPreparation-CnbgQfZc.js → nearEd25519YaoSigningPreparation-Cz2Gb95g.js} +1 -1
- package/dist/public/sdk/{operationFingerprint-Bas59T7L.js → operationFingerprint-GKEY-X5I.js} +1 -1
- package/dist/public/sdk/ownerNearOperation-DCxxHcwX.js +1 -0
- package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-DXFrQmO5.js → pendingWalletRecoveryCodeBackup-8iMhQU-E.js} +1 -1
- package/dist/{esm/sdk/presignaturePool-Dq4RhzXn.js → public/sdk/presignaturePool-CaI45td2.js} +1 -1
- package/dist/public/sdk/{presignatures-CkhuZ0YQ.js → presignatures-B9KnQyfE.js} +1 -1
- package/dist/public/sdk/{recovery-entrypoint-s9OoKBcl.js → recovery-entrypoint-DA2FGLG6.js} +1 -1
- package/dist/public/sdk/registration-Coh0_Nva.js +1 -0
- package/dist/public/sdk/{registration-D3p7muCc.js → registration-XNyt1YRK.js} +1 -1
- package/dist/public/sdk/{registrationIntent-C1-Kyx_-.js → registrationIntent-Cb3tggIM.js} +1 -1
- package/dist/{esm/sdk/requireStepUpAuth-iVo6h_U-.js → public/sdk/requireStepUpAuth-ByMTPBu4.js} +1 -1
- package/dist/public/sdk/resealedEnvelopeResult-DKY5fVNY.js +1 -0
- package/dist/public/sdk/routerAbNormalSigning-CPLDkttX.js +1 -0
- package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/sdk/runtime-auth-CP6P681o.js +1 -0
- package/dist/public/sdk/{runtime-device-link-qmYvGep9.js → runtime-device-link-CGDZQK-D.js} +1 -1
- package/dist/{esm/sdk/runtime-ecdsa-tempo-Zh95TuLV.js → public/sdk/runtime-ecdsa-tempo-BiJYKWK4.js} +1 -1
- package/dist/public/sdk/{runtime-email-otp-CnLuW4H1.js → runtime-email-otp-B0XCNDRb.js} +1 -1
- package/dist/public/sdk/{runtime-export-m8lvrXtw.js → runtime-export-CXxv6KIx.js} +1 -1
- package/dist/public/sdk/{runtime-near-BiXzXXhH.js → runtime-near-CuyS57wu.js} +1 -1
- package/dist/public/sdk/runtime-preferences-B2WBUZO7.js +1 -0
- package/dist/public/sdk/runtime-recovery-KwVdSe94.js +1 -0
- package/dist/public/sdk/{runtime-recovery-codes-B033ake_.js → runtime-recovery-codes-CFOWDVd9.js} +1 -1
- package/dist/public/sdk/{runtimeContext-RNS2E5wy.js → runtimeContext-Iy1vecX0.js} +3 -3
- package/dist/public/sdk/{secp256k1-DPeaOjM0.js → secp256k1-sDDAa4Ga.js} +1 -1
- package/dist/{esm/sdk/signEvmFamily-Cksw3RpU.js → public/sdk/signEvmFamily-CMrXkVsZ.js} +1 -1
- package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-B7p9UVix.js → signEvmFamilyWithUiConfirmForTempo-CnRoo0e8.js} +1 -1
- package/dist/public/sdk/{signEvmWithUiConfirm-B14zYdwE.js → signEvmWithUiConfirm-yITc3ZvP.js} +1 -1
- package/dist/public/sdk/{signNear-D0rFEYP1.js → signNear-DyFk--I3.js} +1 -1
- package/dist/{esm/sdk/signingFlow-Bd1X0e-1.js → public/sdk/signingFlow-DTP4D19E.js} +1 -1
- package/dist/{esm/sdk/signingQueue-DoUBeaCv.js → public/sdk/signingQueue-Dy5mYMus.js} +1 -1
- package/dist/public/sdk/{thresholdEcdsa-BxfOZmiR.js → thresholdEcdsa-CRfx6RP1.js} +1 -1
- package/dist/public/sdk/{trace-BnhLKxcu.js → trace-BA8jya7O.js} +1 -1
- package/dist/{esm/sdk/transactionState-G_FPe-U8.js → public/sdk/transactionState-BCbaT2hO.js} +1 -1
- package/dist/public/sdk/tx-confirm-ui.js +3 -1
- package/dist/public/sdk/{types-A-w1cYlJ.js → types-D2Zk1W7I.js} +1 -1
- package/dist/{esm/sdk/unlockedEd25519ExportRootCapability-5F1egCSv.js → public/sdk/unlockedEd25519ExportRootCapability-BbGMlikr.js} +1 -1
- package/dist/public/sdk/voiceid-host.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-DXdm68_Q.js → wallet-recovery-Bfm-oUoP.js} +1 -1
- package/dist/public/sdk/wallet-ui.css +1 -1
- package/dist/{esm/sdk/walletAuthMethodRecord-BW-XV4fv.js → public/sdk/walletAuthMethodRecord--fvGr8r1.js} +1 -1
- package/dist/{esm/sdk/walletAuthority-DbGaSw7D.js → public/sdk/walletAuthority-CU9nO0Ze.js} +1 -1
- package/dist/public/sdk/{walletCustodyEcdsaContinuity-BnyL1Ryu.js → walletCustodyEcdsaContinuity-BUdDyRl_.js} +1 -1
- package/dist/public/sdk/{walletDbName-Ca0rCq5r.js → walletDbName-B6-CV_Rq.js} +1 -1
- package/dist/public/sdk/{walletOwnerOperation-CScYv2K6.js → walletOwnerOperation-BJPxzo-k.js} +1 -1
- package/dist/public/sdk/{walletOwnershipGeneration-BZc6UKqX.js → walletOwnershipGeneration-B3uE9GRG.js} +1 -1
- package/dist/{esm/sdk/walletRecoveryAdminProof-DdwikrW3.js → public/sdk/walletRecoveryAdminProof-BmZaP0Q8.js} +1 -1
- package/dist/{esm/sdk/walletRecoveryCommit-DbAoiJp5.js → public/sdk/walletRecoveryCommit-CSYNbYNd.js} +1 -1
- package/dist/public/sdk/{walletSessionAuthorizationStatus-GhcGvDCX.js → walletSessionAuthorizationStatus-CQ3qA9tI.js} +1 -1
- package/dist/{esm/sdk/walletSessionAuthorizationStore-BivTUoKY.js → public/sdk/walletSessionAuthorizationStore-CGt-s5fX.js} +1 -1
- package/dist/public/sdk/workers/device-linking-key.worker.js +454 -947
- package/dist/public/sdk/workers/email-otp.worker.js +588 -820
- package/dist/public/sdk/workers/email_otp_runtime_bg.wasm +0 -0
- package/dist/public/sdk/workers/evm_crypto_bg.wasm +0 -0
- package/dist/public/sdk/workers/passkey-mpc-export.worker.js +572 -804
- package/dist/public/sdk/workers/router_ab_ecdsa_client_bg.wasm +0 -0
- package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/sdk/workers/shamir3pass_runtime_bg.wasm +0 -0
- package/dist/public/sdk/workers/tempo_signer_bg.wasm +0 -0
- package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +524 -971
- package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
- package/dist/public/sdk/workers/wasm_signer_worker_bg.wasm +0 -0
- package/dist/public/wallet-assets.manifest.json +153 -153
- package/dist/public/wallet-service/index.html +4 -4
- package/dist/types/wallet/src/SeamsWeb/index.d.ts +1 -0
- package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +3 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/inboundMessages.d.ts +5 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +3 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/coordinator.d.ts +6 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/controller.d.ts +2 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +3 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/session.d.ts +4 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/requestRouter.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +5 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/WalletAlternativesSection.d.ts +13 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/mountAuthMenuSurface.d.ts +3 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +11 -4
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/walletAlternatives.d.ts +52 -0
- package/dist/types/wallet/src/core/types/seams.d.ts +2 -2
- package/dist/types/wallet/src/core/ui/messages.d.ts +1 -1
- package/dist/types/wallet/src/core/ui/walletIcon.d.ts +3 -0
- package/dist/types/wallet/src/index.d.ts +1 -0
- package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/public.d.ts +1 -0
- package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/types.d.ts +4 -0
- package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/walletAlternatives.d.ts +48 -0
- package/dist/types/wallet/src/react/index.d.ts +1 -2
- package/dist/workers/device-linking-key.worker.js +454 -947
- package/dist/workers/email-otp.worker.js +588 -820
- package/dist/workers/email_otp_runtime_bg.wasm +0 -0
- package/dist/workers/evm_crypto_bg.wasm +0 -0
- package/dist/workers/passkey-mpc-export.worker.js +572 -804
- package/dist/workers/router_ab_ecdsa_client_bg.wasm +0 -0
- package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/workers/shamir3pass_runtime_bg.wasm +0 -0
- package/dist/workers/tempo_signer_bg.wasm +0 -0
- package/dist/workers/wallet-custody-ceremony.worker.js +524 -971
- package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
- package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
- package/package.json +17 -17
- package/dist/esm/react/components/HostedSeamsAuthMenu/WalletConnectorMenu.css +0 -182
- package/dist/esm/react/components/HostedSeamsAuthMenu/WalletConnectorMenu.js +0 -315
- package/dist/esm/sdk/appearance-token-vars-DkF3EBbF.js +0 -1
- package/dist/esm/sdk/host-BeE2dIU4.js +0 -1
- package/dist/esm/sdk/ownerNearOperation-DjNDxW3_.js +0 -1
- package/dist/esm/sdk/registration-CTtTocyo.js +0 -1
- package/dist/esm/sdk/resealedEnvelopeResult-DXDo-72P.js +0 -1
- package/dist/esm/sdk/routerAbNormalSigning-DVFFkNhJ.js +0 -1
- package/dist/esm/sdk/runtime-auth-Dsmw_dUA.js +0 -1
- package/dist/esm/sdk/runtime-preferences-DlKHDIjb.js +0 -1
- package/dist/esm/sdk/runtime-recovery-C6lS71Jp.js +0 -1
- package/dist/public/sdk/appearance-token-vars-DkF3EBbF.js +0 -1
- package/dist/public/sdk/host-BeE2dIU4.js +0 -1
- package/dist/public/sdk/ownerNearOperation-DjNDxW3_.js +0 -1
- package/dist/public/sdk/registration-CTtTocyo.js +0 -1
- package/dist/public/sdk/resealedEnvelopeResult-DXDo-72P.js +0 -1
- package/dist/public/sdk/routerAbNormalSigning-DVFFkNhJ.js +0 -1
- package/dist/public/sdk/runtime-auth-Dsmw_dUA.js +0 -1
- package/dist/public/sdk/runtime-preferences-DlKHDIjb.js +0 -1
- package/dist/public/sdk/runtime-recovery-C6lS71Jp.js +0 -1
- package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/WalletConnectorMenu.d.ts +0 -31
- /package/dist/esm/sdk/{canonicalPrimitives-Jd3i_Ngz.js → canonicalPrimitives-DKeS3M40.js} +0 -0
- /package/dist/esm/sdk/{capabilityKinds-DVlGMspk.js → capabilityKinds-Cafn86Y1.js} +0 -0
- /package/dist/esm/sdk/{walletIframeIdentity-CpgyEnKg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
- /package/dist/public/sdk/{canonicalPrimitives-Jd3i_Ngz.js → canonicalPrimitives-DKeS3M40.js} +0 -0
- /package/dist/public/sdk/{capabilityKinds-DVlGMspk.js → capabilityKinds-Cafn86Y1.js} +0 -0
- /package/dist/public/sdk/{walletIframeIdentity-CpgyEnKg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{k as e}from"./domainIds-t1lp25yU.js";import{S as t}from"./digests-BIaE0DMd.js";import{E as n,J as r,O as i,k as a}from"./activeWalletSession-BJ4B-nJo.js";import{a as o}from"./presignatures-CkhuZ0YQ.js";import{t as s}from"./indexedDB-CA4tGqkr.js";import{n as c}from"./walletOwnershipGeneration-BZc6UKqX.js";import{o as l}from"./walletSessionAuthorizationStore-BivTUoKY.js";async function u(e,t){let n=f(e,t);if(n===null)return;let r=await s.resolveSelectedWalletAuthority(n);if(r.kind!==`resolved`)return;let i=await l.readExactWithOperationCredential({walletId:n,authorityId:r.authority.authorityId,authMethodId:r.authMethod.walletAuthMethodId});i.kind===`found`&&await c(n,i.operationCredential.ownershipGeneration)}function d(t){let n=e(t);if(!n.ok)throw Error(`Wallet mutation identity is invalid`);return n.value}function f(e,t){switch(e.type){case`PM_ADD_WALLET_SIGNER`:case`PM_ADD_PASSKEY`:case`PM_ACTIVATE_AUTH_METHOD`:case`PM_SET_AUTH_METHOD_ENABLED`: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 d(e.payload?.walletId);case`PM_SIGN_TEMPO`:case`PM_RESOLVE_EXACT_KEY_EXPORT_LANE`:case`PM_EXPORT_KEYPAIR_UI`:return d(e.payload?.walletSession.walletId);case`PM_SYNC_ACCOUNT_FLOW`:{let n=e.payload?.walletId??t;return n===null?null:d(n)}case`PM_SCAN_AND_LINK_DEVICE`:return t===null?null:d(t);case`PM_OWNER_NEAR_TRANSACTION`:return e.payload.action===`approve`?d(e.payload.authentication.walletId):null;case`PM_EXTERNAL_OWNER_AUTH`:{let t=e.payload;return d(t.action===`associate`?t.input.walletId:t.walletId)}case`PM_SET_TRANSACTION_VIEW`:case`PM_TRANSACTION_BROADCAST_STARTED`:case`PING`:case`PM_GET_AUTH_METHOD_AVAILABILITY`: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_UNLOCK_AUTH_METHOD`:case`PM_EXTERNAL_AUTH`: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`)}}function p(e,t){return`wallet-auth-method-availability:${encodeURIComponent(e)}:${encodeURIComponent(t)}`}async function m(e,t){return h(await s.getAppState(p(e,t))).enabled}function h(e){if(e==null)return{enabled:!0,revision:`initial`};let n=t(e,`authentication method availability`);if(r(n,[`kind`,`revision`],`authentication method availability`),n.kind!==`enabled`&&n.kind!==`disabled`)throw Error(`Authentication method availability is invalid.`);if(n.revision!==void 0&&(typeof n.revision!=`string`||!n.revision))throw Error(`Authentication method availability revision is invalid.`);return{enabled:n.kind===`enabled`,revision:n.revision??`initial`}}async function g(e,t,n){await s.setAppState(p(e,t),{kind:n?`enabled`:`disabled`,revision:crypto.randomUUID()})}async function _(e){let t=await s.resolveSelectedWalletAuthority(e);if(t.kind!==`resolved`)return{kind:`not_enrolled`};let n=(await s.listWalletAuthMethodsV2ForWallet(e)).filter(v.bind(null,t.authority.authorityId));if(n.length===0)return{kind:`not_enrolled`};if(n.length!==1)throw Error(`Select the device authority before managing VoiceID.`);let r=n[0];return await m(e,r.walletAuthMethodId)?{kind:`enabled`,walletAuthMethodId:r.walletAuthMethodId}:{kind:`disabled`,walletAuthMethodId:r.walletAuthMethodId}}function v(e,t){return t.walletAuthorityId===e&&t.kind===`voiceid`&&t.status===`active`}async function y(e,t){let n=await s.getWalletAuthMethodV2(t);if(!n||n.walletId!==e)return!1;let r=await s.listWalletAuthMethodsV2ForWallet(e);for(let e of r)if(e.walletAuthorityId===n.walletAuthorityId&&e.walletAuthMethodId!==t&&e.status===`active`&&e.kind!==`voiceid`)return!0;return!1}async function b(e,t){let n=(await s.seamsWalletDB.getDB()).transaction(o.appState,`readwrite`),r=n.objectStore(o.appState);for(let n of await r.getAllKeys()){if(typeof n!=`string`||!n.startsWith(`voiceid-browser-enrollment-v2:`))continue;let i=await r.get(n);i?.value?.scope?.walletId===e&&i.value.scope.walletAuthMethodId===t&&await r.delete(n)}await n.done}function x(e){let o=t(e,`wallet custody worker reseal`);return r(o,[`nonceB64u`,`sealedCustodySecretB64u`,`aadHashB64u`,`ciphertextDigestB64u`],`wallet custody worker reseal`),{nonceB64u:a(o.nonceB64u),sealedCustodySecretB64u:i(o.sealedCustodySecretB64u),aadHashB64u:n(o.aadHashB64u,`aadHashB64u`),ciphertextDigestB64u:n(o.ciphertextDigestB64u,`ciphertextDigestB64u`)}}export{m as a,g as c,h as i,u as l,p as n,_ as o,y as r,b as s,x as t,f as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{S as e,c as t,t as n}from"./digests-BIaE0DMd.js";import{c as r,l as i,o as a,u as o}from"./participants-BXdREC5k.js";import{i as s,r as c,t as l}from"./base64-BmKR3UqU.js";import{r as u}from"./walletDbName-Ca0rCq5r.js";import{d,h as f}from"./capabilityKinds-DVlGMspk.js";import{E as p,L as m,Mt as h,R as g,jt as _,v,y}from"./digestEncoding-34kXJoJr.js";import{t as b}from"./authenticatorOptions-B4q62CLs.js";import{r as x,t as ee}from"./walletSessionAuthorizationStatus-GhcGvDCX.js";import{t as S}from"./authorizationAdmission-28jo_IVJ.js";import{n as te}from"./walletSessionFailure-CxsVtroW.js";const C={enabled:!0,targetDepth:5,lowWatermark:4,maxRefillInFlight:1,refillAttemptTimeoutMs:3e4},ne={authMethods:[],network:{chains:[{network:`near-testnet`,rpcUrl:`https://rpc.testnet.fastnear.com`,explorerUrl:`https://testnet.nearblocks.io`},{network:`tempo-testnet`,rpcUrl:`https://rpc.moderato.tempo.xyz`,explorerUrl:`https://explore.tempo.xyz`,chainId:42431},{network:`arc-testnet`,rpcUrl:`https://rpc.testnet.arc.io`,explorerUrl:`https://testnet.arcscan.app`,chainId:5042002},{network:`ethereum-sepolia`,rpcUrl:`https://ethereum-sepolia-rpc.publicnode.com`,explorerUrl:`https://sepolia.etherscan.io`,chainId:11155111}],relayer:{accountId:``,url:``,routes:{delegateAction:`/signed-delegate`}}},registration:{mode:`managed`,projectEnvironmentId:``,publishableKey:``,paymentMode:`disabled`,nearAccountProvisioning:{kind:`implicit_account`}},signing:{sessionDefaults:{ttlMs:u,remainingUses:3},emailOtp:{authPolicy:`session`},sessionPersistenceMode:`none`,sessionSeal:{mode:`none`},routerAb:{normalSigning:{mode:`disabled`}},routerAbEcdsaDerivation:{presignaturePool:C},thresholdEcdsa:{provisioningDefaults:{tempo:{enabled:!0,signingSession:{kind:`jwt`,ttlMs:u,remainingUses:3}},evm:{enabled:!0,signingSession:{kind:`jwt`,ttlMs:u,remainingUses:3}}}}},wallet:{mode:`iframe`,iframe:{origin:`https://wallet.example.localhost`,servicePath:`/wallet-service`,sdkBasePath:`/sdk`,walletHostVariant:`runtime`,rpIdOverride:`example.localhost`}},webauthn:{authenticatorOptions:{userVerification:b.Preferred,originPolicy:{single:void 0,all_subdomains:!0,multiple:void 0}}},ui:{appearance:{theme:{id:`default`,mode:`dark`,colors:{}},palette:`default`}}};async function re(t,n){let r=e(n,`ECDSA prepare response`);if(r.kind!==t.authorization.kind)throw Error(`ECDSA prepare authorization kind does not match the request`);let i=await v(t,r.signing);if(t.authorization.kind===`operation_step_up`){if(Object.keys(r).some(w))throw Error(`Invalid step-up prepare response`);return{kind:`operation_step_up`,signing:i}}if(Object.keys(r).some(ie))throw Error(`Invalid Wallet Session prepare response`);let a=e(r.session_status,`ECDSA prepare session status`),o=d(a.quotaId),s=f(t.authorization.wallet_session_id);if(!o.ok||!s.ok)throw Error(`Invalid prepare session identity`);let c=x(a,{walletSessionId:s.value,quotaId:o.value});if(!c||c.status!==`active`||c.authorization.walletId!==t.scope.wallet_id)throw Error(`ECDSA prepare did not return the admitted Wallet Session`);return{kind:`reusable_wallet_session`,signing:i,sessionStatus:c}}function w(e){return e!==`kind`&&e!==`signing`}function ie(e){return w(e)&&e!==`session_status`}var T=class extends Error{code;path;status;constructor(e){super(`Router A/B signing ${e.path} returned HTTP ${e.status}: ${e.message||e.code}`),this.name=`RouterAbSigningRequestError`,this.code=e.code,this.path=e.path,this.status=e.status}};function ae(e){let t=String(e.code||``).trim(),n=`Router A/B signing ${e.path} returned HTTP ${e.status}: ${e.message||t||`unknown admission failure`}`;if(e.authorizationDecision?.kind===`step_up_required`)return new S({kind:`exhausted`,source:`server_prepare`,detail:n},e.authorizationDecision);switch(t){case`wallet_budget_exhausted`:return new S({kind:`exhausted`,source:`server_prepare`,detail:n},e.authorizationDecision);case`wallet_budget_in_flight`:case`wallet_budget_reserved`:return new S({kind:`in_flight`,source:`server_prepare`,detail:n,retryAfterMs:150});default:return null}}function E(e,t){let n=Math.floor(Number(e));if(!Number.isSafeInteger(n)||n<=0)throw Error(`${t} must be a positive integer`);return n}function D(e,t,n){if(!Array.isArray(e))throw Error(`${t} must be a byte array`);let r=e.map(e=>Number(e));if(!r.every(e=>Number.isInteger(e)&&e>=0&&e<=255))throw Error(`${t} must contain bytes`);if(n!==void 0&&r.length!==n)throw Error(`${t} must contain ${n} bytes`);return r}function O(e,n){let r=t(e,n);if(c(r).length!==32)throw Error(`${n} must decode to 32 bytes`);return r}function k(e,n){let r=t(e,n);if(c(r).length===0)throw Error(`${n} must decode to non-empty bytes`);return r}function A(e,n){let r=t(e,n),i;try{i=l(r)}catch{i=c(r)}if(i.length!==32)throw Error(`${n} must decode to 32 bytes`);return s(i)}function j(e){return{bytes:[...D([...e],`digest bytes`,32)]}}function M(e,t){return s(Uint8Array.from(D(e.bytes,t)))}async function oe(e){return s(await Q(new TextEncoder().encode(n(e))))}function se(e){let n=t(e.message,`nep413.message`),r=t(e.recipient,`nep413.recipient`),i=c(A(e.nonce,`nep413.nonce`)),a=e.callbackUrl==null?void 0:t(e.callbackUrl,`callbackUrl`),o=[];return Z(o,2147484061),q(o,n),Y(o,i),q(o,r),a?(o.push(1),q(o,a)):o.push(0),s(Uint8Array.from(o))}async function ce(e){let n={scope:I(e.scope,`scope`),expires_at_ms:E(e.expiresAtMs,`expiresAtMs`),display_digest:j(c(O(e.displayDigestB64u,`displayDigestB64u`))),intent:{kind:`near_transaction_v1`,operation_id:t(e.operationId,`operationId`),operation_fingerprint:t(e.operationFingerprint,`operationFingerprint`),near_account_id:t(e.nearAccountId,`nearAccountId`),near_network_id:e.nearNetworkId,transactions:e.transactions.map((e,n)=>({receiver_id:t(e.receiverId,`transactions[${n}].receiverId`),action_fingerprint:t(e.actionFingerprint,`transactions[${n}].actionFingerprint`)})),unsigned_transaction_borsh_b64u:k(e.unsignedTransactionBorshB64u,`unsignedTransactionBorshB64u`)},signing_payload:{kind:`near_unsigned_transaction_borsh_v1`,unsigned_transaction_borsh_b64u:k(e.unsignedTransactionBorshB64u,`unsignedTransactionBorshB64u`),expected_signing_digest_b64u:O(e.expectedSigningDigestB64u,`expectedSigningDigestB64u`)}};return{request:n,admissionMaterial:await P(n)}}async function le(e){let n=A(e.nonce,`nonce`),r=e.callbackUrl==null?void 0:t(e.callbackUrl,`callbackUrl`),i=se({message:e.message,recipient:e.recipient,nonce:n,...r?{callbackUrl:r}:{}}),a={scope:I(e.scope,`scope`),expires_at_ms:E(e.expiresAtMs,`expiresAtMs`),display_digest:j(c(O(e.displayDigestB64u,`displayDigestB64u`))),intent:{kind:`nep413_v1`,operation_id:t(e.operationId,`operationId`),operation_fingerprint:t(e.operationFingerprint,`operationFingerprint`),near_account_id:t(e.nearAccountId,`nearAccountId`),near_network_id:e.nearNetworkId,recipient:t(e.recipient,`recipient`),message:t(e.message,`message`),nonce_b64u:n,...r?{callback_url:r}:{}},signing_payload:{kind:`nep413_message_v1`,canonical_message_b64u:i,expected_signing_digest_b64u:O(e.expectedSigningDigestB64u,`expectedSigningDigestB64u`)}};return{request:a,admissionMaterial:await P(a)}}async function ue(e){let n=k(e.delegate.canonicalDelegateBorshB64u,`canonicalDelegateBorshB64u`),r={scope:I(e.scope,`scope`),expires_at_ms:E(e.expiresAtMs,`expiresAtMs`),display_digest:j(c(O(e.displayDigestB64u,`displayDigestB64u`))),intent:{kind:`near_delegate_action_v1`,operation_id:t(e.operationId,`operationId`),operation_fingerprint:t(e.operationFingerprint,`operationFingerprint`),near_account_id:t(e.nearAccountId,`nearAccountId`),near_network_id:e.nearNetworkId,delegate:{sender_id:t(e.delegate.senderId,`delegate.senderId`),receiver_id:t(e.delegate.receiverId,`delegate.receiverId`),public_key:t(e.delegate.publicKey,`delegate.publicKey`),nonce:t(e.delegate.nonce,`delegate.nonce`),max_block_height:t(e.delegate.maxBlockHeight,`delegate.maxBlockHeight`),action_fingerprint:t(e.delegate.actionFingerprint,`delegate.actionFingerprint`),canonical_delegate_borsh_b64u:n}},signing_payload:{kind:`near_delegate_action_v1`,canonical_delegate_borsh_b64u:n,expected_signing_digest_b64u:O(e.expectedSigningDigestB64u,`expectedSigningDigestB64u`)}};return{request:r,admissionMaterial:await P(r)}}function N(e){let n=I(e.scope,`scope`),r={scope:n,expires_at_ms:E(e.expiresAtMs,`expiresAtMs`),prepare_binding:{server_round1_handle:t(e.prepareResponse.server_round1_handle,`server_round1_handle`),round1_binding_digest:L(e.prepareResponse.round1_binding_digest,`round1_binding_digest`),intent_digest:L(e.admissionMaterial.intentDigest,`intent_digest`),signing_payload_digest:L(e.admissionMaterial.signingPayloadDigest,`signing_payload_digest`)},protocol:{kind:`ed25519_two_party_frost_finalize_v1`,client_commitments:z(e.clientCommitments,`clientCommitments`),server_commitments:z(e.prepareResponse.server_commitments,`serverCommitments`),client_verifying_share_b64u:t(e.clientVerifyingShareB64u,`clientVerifyingShareB64u`),server_verifying_share_b64u:t(e.prepareResponse.server_verifying_share_b64u,`serverVerifyingShareB64u`),client_signature_share_b64u:t(e.clientSignatureShareB64u,`clientSignatureShareB64u`)}};if(n.authorization.kind===`reusable_wallet_session`&&e.prepareResponse.scope.authorization.kind===`reusable_wallet_session`)return{...r,scope:{...n,authorization:n.authorization},authorized_operation:V(e.prepareResponse.authorized_operation,`authorized_operation`)};if(n.authorization.kind===`operation_step_up`&&e.prepareResponse.scope.authorization.kind===`operation_step_up`)return{...r,scope:{...n,authorization:n.authorization},authorized_operation:H(e.prepareResponse.authorized_operation,`authorized_operation`)};throw Error(`Router A/B normal-signing authorization changed after prepare`)}async function P(e){let t=j(await Q(Se(e.intent))),n=j(await Q(Ce(e.signing_payload))),r=j(await Q(we(e.signing_payload))),i=c(Te(e.signing_payload));if(!De(r.bytes,i))throw Error(`Router A/B normal-signing expected signing digest drift`);return{intentDigest:t,signingPayloadDigest:n,admittedSigningDigest:r}}function F(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} has invalid fields`)}function I(e,n){let r=e&&typeof e==`object`?e:null;if(!r)throw Error(`${n} must be an object`);F(r,[`request_id`,`account_id`,`authorization`,`material_activation`,`signing_worker_id`],n);let i={request_id:t(r.request_id,`${n}.request_id`),account_id:t(r.account_id,`${n}.account_id`),authorization:h(r.authorization),material_activation:_(r.material_activation),signing_worker_id:t(r.signing_worker_id,`${n}.signing_worker_id`)};if(i.material_activation.signing_worker!==i.signing_worker_id)throw Error(`${n} material activation SigningWorker mismatch`);return i}function L(e,t){let n=e&&typeof e==`object`?e:null;if(!n)throw Error(`${t} must be an object`);return{bytes:D(n.bytes,`${t}.bytes`,32)}}function R(e,t){let n=e&&typeof e==`object`?e:null;if(!n)throw Error(`${t} must be an object`);let r=D(n.bytes,`${t}.bytes`);if(r.length===0)throw Error(`${t}.bytes must be non-empty`);return{bytes:r}}function z(e,n){let r=e&&typeof e==`object`?e:null;if(!r)throw Error(`${n} must be an object`);return{hiding:t(r.hiding,`${n}.hiding`),binding:t(r.binding,`${n}.binding`)}}function B(e,n){let r=e&&typeof e==`object`?e:null;if(!r)throw Error(`${n} must be an object`);return{server_id:t(r.server_id,`${n}.server_id`),key_epoch:t(r.key_epoch,`${n}.key_epoch`),recipient_encryption_key:t(r.recipient_encryption_key,`${n}.recipient_encryption_key`)}}function V(e,n){let r=e&&typeof e==`object`?e:null;if(!r)throw Error(`${n} must be an object`);F(r,[`kind`,`authorized_operation_id`,`operation_id`,`capability_kind`,`operation_kind`,`lane_digest_b64u`,`intent_digest_b64u`,`display_digest_b64u`,`operation_fingerprint_digest`],n);let i=t(r.kind,`${n}.kind`);if(i!==`reusable_wallet_session_authorized_operation_v1`)throw Error(`${n}.kind is invalid`);let a=t(r.capability_kind,`${n}.capability_kind`);if(a!==`near_ed25519_mpc_signing`)throw Error(`${n}.capability_kind is invalid`);let o=t(r.operation_kind,`${n}.operation_kind`);if(o!==`near.sign_transaction`&&o!==`near.sign_delegate_action`&&o!==`near.sign_nep413_message`)throw Error(`${n}.operation_kind is invalid`);return{kind:i,authorized_operation_id:t(r.authorized_operation_id,`${n}.authorized_operation_id`),operation_id:t(r.operation_id,`${n}.operation_id`),capability_kind:a,operation_kind:o,lane_digest_b64u:O(r.lane_digest_b64u,`${n}.lane_digest_b64u`),intent_digest_b64u:O(r.intent_digest_b64u,`${n}.intent_digest_b64u`),display_digest_b64u:O(r.display_digest_b64u,`${n}.display_digest_b64u`),operation_fingerprint_digest:O(r.operation_fingerprint_digest,`${n}.operation_fingerprint_digest`)}}function H(e,n){let r=e&&typeof e==`object`?e:null;if(!r)throw Error(`${n} must be an object`);if(F(r,[`kind`,`authorization_session_id`,`evidence_set_digest`,`authorized_operation_id`,`operation_id`,`capability_kind`,`operation_kind`,`lane_digest_b64u`,`intent_digest_b64u`,`display_digest_b64u`,`operation_fingerprint_digest`],n),t(r.kind,`${n}.kind`)!==`verified_step_up_authorized_operation_v1`)throw Error(`${n}.kind is invalid`);if(t(r.capability_kind,`${n}.capability_kind`)!==`near_ed25519_mpc_signing`)throw Error(`${n}.capability_kind is invalid`);let i=t(r.operation_kind,`${n}.operation_kind`);if(i!==`near.sign_transaction`&&i!==`near.sign_delegate_action`&&i!==`near.sign_nep413_message`)throw Error(`${n}.operation_kind is invalid`);return{kind:`verified_step_up_authorized_operation_v1`,authorization_session_id:t(r.authorization_session_id,`${n}.authorization_session_id`),evidence_set_digest:O(r.evidence_set_digest,`${n}.evidence_set_digest`),authorized_operation_id:t(r.authorized_operation_id,`${n}.authorized_operation_id`),operation_id:t(r.operation_id,`${n}.operation_id`),capability_kind:`near_ed25519_mpc_signing`,operation_kind:i,lane_digest_b64u:O(r.lane_digest_b64u,`${n}.lane_digest_b64u`),intent_digest_b64u:O(r.intent_digest_b64u,`${n}.intent_digest_b64u`),display_digest_b64u:O(r.display_digest_b64u,`${n}.display_digest_b64u`),operation_fingerprint_digest:O(r.operation_fingerprint_digest,`${n}.operation_fingerprint_digest`)}}function U(e){let n=e&&typeof e==`object`?e:null;if(!n)throw Error(`Router A/B normal-signing prepare response must be an object`);let r=t(n.signature_scheme,`signature_scheme`);if(r!==`ed25519_v1`)throw Error(`Unsupported Router A/B normal-signing signature scheme: ${r}`);let i=I(n.scope,`scope`),a={scope:i,signing_payload_digest:L(n.signing_payload_digest,`signing_payload_digest`),round1_binding_digest:L(n.round1_binding_digest,`round1_binding_digest`),signing_worker:B(n.signing_worker,`signing_worker`),server_round1_handle:t(n.server_round1_handle,`server_round1_handle`),server_commitments:z(n.server_commitments,`server_commitments`),server_verifying_share_b64u:t(n.server_verifying_share_b64u,`server_verifying_share_b64u`),signature_scheme:`ed25519_v1`,prepared_at_ms:E(n.prepared_at_ms,`prepared_at_ms`),expires_at_ms:E(n.expires_at_ms,`expires_at_ms`)};switch(i.authorization.kind){case`reusable_wallet_session`:return F(n,[`scope`,`signing_payload_digest`,`round1_binding_digest`,`signing_worker`,`server_round1_handle`,`server_commitments`,`server_verifying_share_b64u`,`signature_scheme`,`prepared_at_ms`,`expires_at_ms`,`authorized_operation`],`Router A/B reusable Wallet Session prepare response`),{...a,scope:{...i,authorization:i.authorization},authorized_operation:V(n.authorized_operation,`authorized_operation`)};case`operation_step_up`:return F(n,[`scope`,`signing_payload_digest`,`round1_binding_digest`,`signing_worker`,`server_round1_handle`,`server_commitments`,`server_verifying_share_b64u`,`signature_scheme`,`prepared_at_ms`,`expires_at_ms`,`authorized_operation`],`Router A/B operation step-up prepare response`),{...a,scope:{...i,authorization:i.authorization},authorized_operation:H(n.authorized_operation,`authorized_operation`)}}}function de(e){let n=e&&typeof e==`object`?e:null;if(!n)throw Error(`Router A/B normal-signing response must be an object`);F(n,[`scope`,`signing_payload_digest`,`signing_worker`,`signature_scheme`,`signature`,`signed_at_ms`],`Router A/B normal-signing response`);let r=t(n.signature_scheme,`signature_scheme`);if(r!==`ed25519_v1`)throw Error(`Unsupported Router A/B normal-signing signature scheme: ${r}`);return{scope:I(n.scope,`scope`),signing_payload_digest:L(n.signing_payload_digest,`signing_payload_digest`),signing_worker:B(n.signing_worker,`signing_worker`),signature_scheme:`ed25519_v1`,signature:R(n.signature,`signature`),signed_at_ms:E(n.signed_at_ms,`signed_at_ms`)}}function fe(e){let t=e.credential.kind===`wallet_session_opaque`?{token:e.credential.walletSessionToken,home:e.credential.home}:null;return a({...t?{headers:r(t)}:{},body:e.body})}function pe(e){if(!e.trim())return null;try{let t=JSON.parse(e),n=t&&typeof t==`object`?t:null;if(!n)return null;let r=String(n.code||``).trim(),i=String(n.message||``).trim();if(!r)return null;let a=n.authorization_decision===void 0?void 0:me(n.authorization_decision);return{code:r,message:i,...a?{authorizationDecision:a}:{}}}catch{return null}}function me(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Router A/B owner-operation authorization decision is invalid`);let t=e,n=t.kind;if(n===`step_up_required`){W(t,[`kind`,`reason`,`step_up`],`owner-operation step-up decision`);let e=t.reason;if(e!==`wallet_session_missing`&&e!==`wallet_session_expired`&&e!==`wallet_session_exhausted`&&e!==`wallet_session_ended`&&e!==`wallet_session_superseded`)throw Error(`owner-operation step-up decision reason is invalid`);let r=t.step_up;return r&&typeof r==`object`&&!Array.isArray(r)&&`operation_digests`in r?{kind:n,reason:e,step_up:p(r)}:{kind:n,reason:e,step_up:he(r)}}if(n===`denied`){if(W(t,[`kind`,`denial`],`owner-operation denial decision`),!t.denial||typeof t.denial!=`object`||Array.isArray(t.denial))throw Error(`owner-operation denial is invalid`);let e=t.denial;W(e,[`code`,`message`],`owner-operation denial`);let r=e.code;if(r!==`invalid_identity`&&r!==`invalid_authority`&&r!==`invalid_operation`&&r!==`inactive_material`&&r!==`replayed_step_up`&&r!==`authorization_unavailable`)throw Error(`owner-operation denial code is invalid`);if(typeof e.message!=`string`||e.message.trim()!==e.message)throw Error(`owner-operation denial message is invalid`);return{kind:n,denial:{code:r,message:e.message}}}if(n===`authorized`){if(W(t,[`kind`,`operation`,`source`],`owner-operation decision`),!t.operation||typeof t.operation!=`object`||Array.isArray(t.operation))throw Error(`owner-operation authorized operation is invalid`);let e=t.operation;if(W(e,[`kind`,`operation_id`,`authorized_operation_id`,`operation_fingerprint_digest`],`owner-operation authorized operation`),e.kind!==`authorized_operation`||typeof e.operation_id!=`string`||typeof e.authorized_operation_id!=`string`||typeof e.operation_fingerprint_digest!=`string`)throw Error(`owner-operation authorized operation is invalid`);if(!t.source||typeof t.source!=`object`||Array.isArray(t.source))throw Error(`owner-operation authorized source is invalid`);let r=t.source;if(W(r,[`kind`,`wallet_session_id`,`quota_id`],`owner-operation authorized source`),r.kind!==`reusable_wallet_session`||typeof r.wallet_session_id!=`string`||typeof r.quota_id!=`string`)throw Error(`owner-operation authorized source is invalid`);return{kind:n,operation:{kind:`authorized_operation`,operation_id:e.operation_id,authorized_operation_id:e.authorized_operation_id,operation_fingerprint_digest:e.operation_fingerprint_digest},source:{kind:`reusable_wallet_session`,wallet_session_id:r.wallet_session_id,quota_id:r.quota_id}}}throw Error(`owner-operation authorization decision kind is invalid`)}function he(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Ed25519 operation step-up preparation is invalid`);let t=e;W(t,[`wallet_id`,`operation_kind`,`operation_id`,`request_id`,`account_id`,`material_activation`,`signing_worker_id`,`near_account_id`,`signer_slot`,`participant_ids`,`expires_at_ms`],`Ed25519 owner-operation step-up preparation`);let n=t.operation_kind;if(n!==`near.sign_transaction`&&n!==`near.sign_delegate_action`&&n!==`near.sign_nep413_message`)throw Error(`Ed25519 operation step-up kind is invalid`);if(typeof t.wallet_id!=`string`||typeof t.operation_id!=`string`||typeof t.request_id!=`string`||typeof t.account_id!=`string`||typeof t.signing_worker_id!=`string`||typeof t.near_account_id!=`string`||!Number.isSafeInteger(t.signer_slot)||!Number.isSafeInteger(t.expires_at_ms)||!Array.isArray(t.participant_ids)||t.participant_ids.length!==2||!t.participant_ids.every(e=>Number.isSafeInteger(e)&&Number(e)>0))throw Error(`Ed25519 operation step-up preparation fields are invalid`);let[r,i]=t.participant_ids,a=t.signer_slot,o=t.expires_at_ms;if(typeof r!=`number`||typeof i!=`number`||typeof a!=`number`||typeof o!=`number`)throw Error(`Ed25519 operation step-up participants are invalid`);return{wallet_id:t.wallet_id,operation_kind:n,operation_id:t.operation_id,request_id:t.request_id,account_id:t.account_id,material_activation:_(t.material_activation),signing_worker_id:t.signing_worker_id,near_account_id:t.near_account_id,signer_slot:a,participant_ids:[r,i],expires_at_ms:o}}function W(e,t,n){let r=new Set(t);for(let t of Object.keys(e))if(!r.has(t))throw Error(`${n} contains unsupported field ${t}`);for(let r of t)if(!Object.hasOwn(e,r))throw Error(`${n} is missing ${r}`)}function ge(e){let t=pe(e.bodyText);return t?ae({code:t.code,message:t.message,path:e.path,status:e.status,authorizationDecision:t.authorizationDecision})||te({code:t.code,message:`Router A/B signing ${e.path} returned HTTP ${e.status}: ${t.message}`})||new T({code:t.code,message:t.message,path:e.path,status:e.status}):Error(`Router A/B signing ${e.path} returned HTTP ${e.status}${e.bodyText?`: ${e.bodyText}`:``}`)}async function G(e){if(typeof fetch!=`function`)throw Error(`fetch is not available for Router A/B normal-signing request`);let n=o(t(e.relayServerUrl,`relayServerUrl`)),r=await i(new Request(`${n}${e.path}`,{...fe({credential:e.credential,body:e.body}),signal:e.signal}));try{e.onServerTiming?.(r.headers.get(`Server-Timing`))}catch{}if(!r.ok){let t=await r.text().catch(()=>``),n=ge({path:e.path,status:r.status,bodyText:t});throw e.credential.kind===`wallet_session_opaque`&&n instanceof S&&n.failure.kind===`exhausted`&&ee.forgetCredential(e.credential.walletSessionToken),n}return e.parse(await r.json())}function _e(t,n){let r=e(n,`Ed25519 prepare response`);if(r.kind!==t.scope.authorization.kind)throw Error(`Ed25519 prepare authorization kind does not match the request`);let i=U(r.signing);if(t.scope.authorization.kind===`operation_step_up`)return W(r,[`kind`,`signing`],`Ed25519 step-up prepare response`),{kind:`operation_step_up`,signing:i};W(r,[`kind`,`signing`,`session_status`],`Ed25519 session prepare response`);let a=e(r.session_status,`Ed25519 prepare session status`),o=f(t.scope.authorization.wallet_session_id),s=d(a.quotaId);if(!o.ok||!s.ok)throw Error(`Invalid Ed25519 prepare session identity`);let c=x(a,{walletSessionId:o.value,quotaId:s.value});if(!c||c.status!==`active`)throw Error(`Ed25519 prepare did not return an active Wallet Session`);return{kind:`reusable_wallet_session`,signing:i,sessionStatus:c}}async function ve(e){return G({relayServerUrl:e.relayServerUrl,path:`/router-ab/ed25519/sign/prepare`,credential:e.credential,body:e.request,parse:_e.bind(null,e.request)})}async function ye(e){return await g(e.request),G({relayServerUrl:e.relayServerUrl,path:`/router-ab/ecdsa-derivation/sign/prepare`,onServerTiming:e.onServerTiming,credential:e.credential,body:e.request,parse:re.bind(null,e.request)})}async function be(e){return G({relayServerUrl:e.relayServerUrl,path:`/router-ab/ed25519/sign`,credential:e.credential,body:e.request,parse:de})}async function xe(e){return await m(e.request),G({relayServerUrl:e.relayServerUrl,path:`/router-ab/ecdsa-derivation/sign`,onServerTiming:e.onServerTiming,credential:e.credential,body:e.request,parse:t=>y(e.request,t)})}function Se(e){let t=[];switch(J(t,$(`router-ab-protocol/ed25519-normal-signing/intent/v2`)),e.kind){case`near_transaction_v1`:J(t,$(`near_transaction_v1`)),K(t,e),X(t,e.transactions.length);for(let n of e.transactions)J(t,$(n.receiver_id)),J(t,$(n.action_fingerprint));return J(t,$(e.unsigned_transaction_borsh_b64u)),Uint8Array.from(t);case`nep413_v1`:return J(t,$(`nep413_v1`)),K(t,e),J(t,$(e.recipient)),J(t,$(e.message)),J(t,$(e.nonce_b64u)),Ee(t,e.callback_url),Uint8Array.from(t);case`near_delegate_action_v1`:return J(t,$(`near_delegate_action_v1`)),K(t,e),J(t,$(e.delegate.sender_id)),J(t,$(e.delegate.receiver_id)),J(t,$(e.delegate.public_key)),J(t,$(e.delegate.nonce)),J(t,$(e.delegate.max_block_height)),J(t,$(e.delegate.action_fingerprint)),J(t,$(e.delegate.canonical_delegate_borsh_b64u)),Uint8Array.from(t)}}function Ce(e){let t=[];switch(J(t,$(`router-ab-protocol/ed25519-normal-signing/payload/v2`)),e.kind){case`near_unsigned_transaction_borsh_v1`:return J(t,$(`near_unsigned_transaction_borsh_v1`)),J(t,$(e.unsigned_transaction_borsh_b64u)),J(t,$(e.expected_signing_digest_b64u)),Uint8Array.from(t);case`nep413_message_v1`:return J(t,$(`nep413_message_v1`)),J(t,$(e.canonical_message_b64u)),J(t,$(e.expected_signing_digest_b64u)),Uint8Array.from(t);case`near_delegate_action_v1`:return J(t,$(`near_delegate_action_v1`)),J(t,$(e.canonical_delegate_borsh_b64u)),J(t,$(e.expected_signing_digest_b64u)),Uint8Array.from(t)}}function we(e){switch(e.kind){case`near_unsigned_transaction_borsh_v1`:return c(e.unsigned_transaction_borsh_b64u);case`nep413_message_v1`:return c(e.canonical_message_b64u);case`near_delegate_action_v1`:return c(e.canonical_delegate_borsh_b64u)}}function Te(e){switch(e.kind){case`near_unsigned_transaction_borsh_v1`:case`nep413_message_v1`:case`near_delegate_action_v1`:return e.expected_signing_digest_b64u}}function K(e,t){J(e,$(t.operation_id)),J(e,$(t.operation_fingerprint)),J(e,$(t.near_account_id)),J(e,$(t.near_network_id))}function Ee(e,t){t?(e.push(1),J(e,$(t))):e.push(0)}function q(e,t){let n=$(t);Z(e,n.length),Y(e,n)}function J(e,t){X(e,t.length),Y(e,t)}function Y(e,t){for(let n of t)e.push(n)}function X(e,t){e.push(t>>>24&255,t>>>16&255,t>>>8&255,t&255)}function Z(e,t){e.push(t&255,t>>>8&255,t>>>16&255,t>>>24&255)}async function Q(e){let t=globalThis.crypto?.subtle;if(!t)throw Error(`Web Crypto SHA-256 is unavailable for Router A/B normal signing`);let n=new Uint8Array(e.length);return n.set(e),new Uint8Array(await t.digest(`SHA-256`,n.buffer))}function $(e){return new TextEncoder().encode(e)}function De(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}export{N as a,ye as c,oe as d,C as f,le as i,ve as l,ue as n,xe as o,ne as p,ce as r,be as s,T as t,M as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{N as e,k as t}from"./domainIds-t1lp25yU.js";import{S as n}from"./digests-BIaE0DMd.js";import"./walletDbName-Ca0rCq5r.js";import"./activeWalletSession-BJ4B-nJo.js";import"./signingSessionSeal-BFOBKj-J.js";import{S as r,a as i,b as a,g as o,o as s,x as c,y as l}from"./ownerNearOperation-DjNDxW3_.js";import"./capabilityKinds-DVlGMspk.js";import{t as ee}from"./walletIframeIdentity-CpgyEnKg.js";import{i as te}from"./errors-BJBDbwHk.js";import{a as u}from"./signerDomain-D-EUTlLK.js";import"./accountIds-DGWFzEnw.js";import{C as ne,S as d,T as f,_ as re,a as p,b as m,c as ie,d as ae,f as oe,g as se,h,i as ce,l as le,m as ue,n as de,o as g,p as fe,r as pe,s as me,t as he,u as ge,v as _e,w as ve,x as ye,y as be}from"./icons-pSZJ5Xrm.js";import{t as _}from"./surface-measurement-reporter-DJ_dQhBV.js";import{i as xe,n as Se,o as Ce,r as v,s as y,t as we}from"./csp-stylesheet-5LU6VGKK.js";import"./registrationIntent-C1-Kyx_-.js";import"./presignatures-CkhuZ0YQ.js";import"./device-linking-_o3_fgiG.js";import"./walletAuthority-DbGaSw7D.js";import"./digestEncoding-34kXJoJr.js";import"./walletAuthMethodRecord-BW-XV4fv.js";import{o as Te,r as Ee}from"./signerSlot-BlijMq8C.js";import{c as De,i as Oe,s as ke}from"./sdkSentEvents-BFwv3mBw.js";import{P as Ae,k as je,t as Me}from"./indexedDB-CA4tGqkr.js";import"./keccak-DGHI1G6t.js";import"./registrationSignerPlan-CeMidFme.js";import"./walletCapabilityBindings-mPx-6_r-.js";import"./emailOtpEcdsaDerivationIdentity-Qd4pBwHv.js";import{t as Ne}from"./walletSessionAuthorizationStatus-GhcGvDCX.js";import{t as Pe}from"./SeamsWordmark-CeEi2RlU.js";import"./authorization-gVWwKwav.js";import{D as Fe,i as Ie,k as Le,n as Re,r as ze,s as Be}from"./registration-CTtTocyo.js";import"./wallet-recovery-DXdm68_Q.js";import{t as Ve}from"./challengeDelivery-Dj9HrjW9.js";import"./signNear-D0rFEYP1.js";import{a as He}from"./confirm-ui-Dx6c4-Rk.js";import{c as b,i as x,o as Ue,r as We,s as S,t as Ge}from"./appearance-token-vars-DkF3EBbF.js";import{_ as Ke,a as qe,b as Je,d as Ye,f as Xe,g as Ze,h as Qe,handleWalletHostRuntimeRequestWithHandlers as $e,i as et,l as tt,m as nt,n as rt,o as it,p as at,r as ot,s as C,u as st,v as ct,y as lt}from"./runtimeContext-RNS2E5wy.js";import{n as w,r as ut,t as dt}from"./shared-CkHhXgFB.js";function ft(e){return{PM_GET_LAST_WALLET_MOVE_REQUEST:gt.bind(null,e),PM_MOVE_WALLET:ht.bind(null,e),PM_GET_WALLET_PLACEMENT:pt.bind(null,e),PM_GET_WALLET_MOVE:mt.bind(null,e)}}async function pt(e,r){let i=n(r.payload,`Wallet placement request`),a=t(i.walletId);if(!a.ok||Object.keys(i).length!==1)throw Error(`Wallet placement identity is invalid`);let o=await e.getWalletRuntime().placement.get(a.value);e.respondIfCancelled(r.requestId)||w(e,r.requestId,o)}async function mt(e,r){let i=n(r.payload,`Wallet move request`),a=t(i.walletId),o=et(i.moveId);if(!a.ok||Object.keys(i).length!==2)throw Error(`Wallet move request is invalid`);let s=await e.getWalletRuntime().placement.getMove(a.value,o);e.respondIfCancelled(r.requestId)||w(e,r.requestId,s)}async function ht(e,t){let n=qe(t.payload),r=await e.getWalletRuntime().placement.move(n);e.respondIfCancelled(t.requestId)||w(e,t.requestId,r)}async function gt(e,r){let i=n(r.payload,`Wallet move locator request`),a=t(i.walletId);if(!a.ok||Object.keys(i).length!==1)throw Error(`Wallet move locator identity is invalid`);let o=await e.getWalletRuntime().placement.getLastMoveRequest(a.value);e.respondIfCancelled(r.requestId)||w(e,r.requestId,o)}function _t(e){if(!e)throw Error(`PM_UNLOCK payload is required`);return e}function vt(e){switch(e.kind){case`default_options`:return{};case`custom_options`:return{...T(`signerSlot`,e.options.signerSlot),...T(`signingSession`,e.options.signingSession),...T(`unlockSelection`,e.options.unlockSelection),...yt(e.options.ecdsaKeyFactsInventory)}}}function yt(e){switch(e.kind){case`default`:return{};case`value`:return{ecdsaKeyFactsInventory:e.value}}}function T(e,t){switch(t.kind){case`default`:return{};case`value`:return{[e]:t.value}}}const bt=new Set(je);function E(e){let t=``;for(let n of e.toUpperCase()){let e=n===`O`?`0`:n===`I`||n===`L`?`1`:n;bt.has(e)&&(t+=e)}return t}const xt=/[\s\-\u2010-\u2015\u2212]/;function St(e){let t=new Set;for(let n of e.toUpperCase())xt.test(n)||E(n)||t.add(n);return Array.from(t).slice(0,3)}function Ct(e,t,n){let r=t&&t.start===t.end?t.start:null,i=t===null?null:Math.min(t.start,31),a=[];for(let o=0;o<32;o+=4){let s=o+4,c=[];for(let i=o;i<s;i+=1){let a=e[i]??``,o=[`seams-otp-slot`];a&&o.push(`is-filled`),i===r&&o.push(`is-caret`),r===32&&i===31&&o.push(`is-caret-after`),t&&i>=t.start&&i<t.end&&o.push(`is-selected`),n&&i>=n.start&&i<n.end&&o.push(`is-new`),c.push(v(`span`,{class:o.join(` `),"data-recovery-slot":i,children:a},i))}let l=[`seams-recovery-code-group`];i!==null&&i>=o&&i<s&&l.push(`is-active`),e.length>=s&&l.push(`is-complete`),a.push(v(`div`,{class:l.join(` `),children:c},o))}return a}function wt(e){let t=Ve(e);return t===null?null:v(`p`,{class:`seams-otp-description`,children:[v(x,{message:`Demo email code:`}),` `,v(`code`,{children:t})]})}const D=`seams-auth-menu-title`,O=`seams-auth-menu-account-list`;function k(e,t=6){return e.padEnd(t,` `).slice(0,t).split(``)}function Tt(e,t,n,r){let i=null;for(let r of e.querySelectorAll(`[data-recovery-slot]`)){let e=Number(r.dataset.recoverySlot),a=r.getBoundingClientRect(),o=t<a.left?a.left-t:Math.max(0,t-a.right),s=n<a.top?a.top-n:Math.max(0,n-a.bottom),c=o*o+s*s;(i===null||c<i.distance)&&(i={index:e,distance:c,after:t>a.left+a.width/2})}return i===null?null:Math.min(i.after?i.index+1:i.index,r)}function A(e){return v(y,{children:v(`span`,{class:`seams-otp-slot ${e.trim()?`is-filled`:``}`,children:e})})}function j(e){let t=e.kind===`recovery`?`:${e.stage}`:``;return`${e.kind}:${e.mode}:${e.status.kind}${t}`}function Et(e){return e.status.kind===`succeeded`?``:e.status.kind===`busy`?e.status.headline:e.status.kind===`recoverable`?e.status.message:e.stage===`passkey_ready`?`Recovery code accepted.`:e.stage===`sign_in_ready`?`Wallet recovered. Unlock it to continue.`:``}function Dt(e){return e.kind===`recovery`?e.stage===`choose_method`?`Back to recovery code`:`Back to unlock wallet`:`Back`}function M(e){return e.kind===`recovery`&&e.stage===`finalizing`}function Ot(e){return e===`register`?{prompt:`Already have a wallet?`,action:`Unlock wallet`,nextMode:`login`}:{prompt:`Don't have a wallet?`,action:`Create a wallet`,nextMode:`register`}}function kt(e){return e===`register`?`Create a wallet`:`Unlock wallet`}function At(e){return e===`register`?`Create wallet with passkey`:`Unlock with passkey`}function jt(e){return e.kind===`google_otp_login`||e.kind===`google_registration`?e.error||null:e.kind===`passkey`&&e.status.kind===`recoverable`&&e.status.reason===`error`?e.status.message:null}function N(e){return f(e.accountOptions,e.selectedAccount).selectedAccount}function Mt(e){return e.walletId}function P(e){return e.authMethod===`email_otp`?e.emailAddress:null}function Nt(e){if(!e)return`Saved wallets`;let t=P(e);return t?`Saved wallets. Selected wallet ID ${e.walletId}, email ${t}`:`Saved wallets. Selected ${e.walletId}`}function Pt(e){let t=new Map;for(let n of e)t.has(n.walletId)||t.set(n.walletId,n);return t.size?[{id:`wallets`,label:`Saved wallets`,accounts:[...t.values()]}]:[]}const Ft=()=>new Promise(e=>setTimeout(e,90));function It(e){return e.dataset.blink?null:(e.dataset.blink=`off`,Ft().then(()=>(e.dataset.blink=`on`,Ft())).then(()=>{delete e.dataset.blink}))}var Lt=class extends xe{shownNotice=``;render(){let{notice:e,onRetry:t}=this.props;return e&&(this.shownNotice=e),v(`div`,{class:`seams-auth-footer`,"data-state":e?`notice`:`brand`,children:[v(`div`,{class:`seams-auth-footer-brand`,"aria-hidden":e?`true`:void 0,children:[v(`span`,{children:v(x,{message:`Secured by`})}),` `,v(Pe,{})]}),v(`div`,{class:`seams-auth-footer-notice`,children:[de(),v(`span`,{class:`seams-auth-footer-text`,"aria-hidden":`true`,children:v(x,{copy:this.shownNotice})}),v(`button`,{class:`seams-auth-footer-action`,type:`button`,disabled:!e,onClick:t,children:v(x,{message:`Try again`})})]}),e?v(`p`,{class:`sr-only`,role:`alert`,children:v(x,{copy:e})}):null]})}};function Rt(e,t){return v(y,{children:v(`div`,{class:`seams-link-device-dot-ring is-${e}`,"aria-hidden":`true`,children:[Array.from({length:12},(e,t)=>v(y,{children:v(`span`,{"data-dot-index":t})})),t?v(y,{children:v(`div`,{class:`seams-link-device-dot-ring-glyph`,children:t})}):null,v(`svg`,{class:`seams-link-device-dot-ring-check`,viewBox:`0 0 52 52`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`,children:v(`path`,{d:`m18.5 27 5 5 10-11`})})]})})}function zt(e){switch(e.kind){case`sending`:return{ring:`waiting`,heading:`Sending your code`,status:`Emailing a 6-digit code`,pending:!0,tone:`neutral`};case`resending`:return{ring:`waiting`,heading:`Sending a new code`,status:`Emailing a fresh 6-digit code`,pending:!0,tone:`neutral`};case`submitting`:return{ring:`waiting`,heading:`Checking your code`,status:`Verifying the code you entered`,pending:!0,tone:`neutral`};case`code_input`:return{ring:`idle`,heading:`Verify your email`,status:`Enter the 6-digit code we just sent.`,pending:!1,tone:`neutral`};case`incorrect`:return{ring:`idle`,heading:`Verify your email`,status:e.message,pending:!1,tone:`error`};case`expired`:return{ring:`idle`,heading:`That code expired`,status:e.message,pending:!1,tone:`error`};case`unavailable`:return{ring:`idle`,heading:`Email code unavailable`,status:e.message,pending:!1,tone:`error`};case`completed`:return{ring:`approved`,heading:`Email verified`,status:`Finishing linking this device`,pending:!0,tone:`neutral`}}}var Bt=class extends xe{static contextType=We;state={accountMenu:`closed`,recoverySelection:null,recoveryRejection:null};recoveryDrawnCode=``;recoveryArrival=null;recoveryArrivalTimer=null;recoveryRejectionTimer=null;accountMenuExitTimer=null;accountMenuChoice=null;previouslyFocusedElement=null;shouldFocusInitialControl=!0;contentResizeObserver=null;contentHeightFrame=null;previousLinkDeviceStateKind=null;previousRecoveryStage=null;lastMethod=`passkey`;walletRowEntry=null;get viewModel(){return this.props.viewModel}get accountMenuOpen(){return this.state.accountMenu===`open`}openAccountMenu(){this.endAccountMenuExit(),this.setState({accountMenu:`open`})}closeAccountMenu(){this.accountMenuOpen&&(this.setState({accountMenu:`closing`}),this.accountMenuExitTimer=setTimeout(()=>{this.endAccountMenuExit(),this.setState({accountMenu:`closed`})},160))}endAccountMenuExit(){this.accountMenuExitTimer!==null&&clearTimeout(this.accountMenuExitTimer),this.accountMenuExitTimer=null,this.accountMenuChoice=null}componentDidMount(){let e=document.activeElement;e instanceof HTMLElement&&!this.props.element.contains(e)&&(this.previouslyFocusedElement=e),document.addEventListener(`pointerdown`,this.onDocumentPointerDown),document.addEventListener(`keydown`,this.onKeyDown,!0),this.afterRender()}componentDidUpdate(e){this.afterRender(e.viewModel)}componentWillUnmount(){this.contentResizeObserver?.disconnect(),this.contentResizeObserver=null,this.contentHeightFrame!==null&&cancelAnimationFrame(this.contentHeightFrame),this.contentHeightFrame=null,this.endAccountMenuExit(),this.recoveryArrivalTimer!==null&&clearTimeout(this.recoveryArrivalTimer),this.recoveryRejectionTimer!==null&&clearTimeout(this.recoveryRejectionTimer),window.removeEventListener(`resize`,this.queueContentHeightSync),document.removeEventListener(`pointerdown`,this.onDocumentPointerDown),document.removeEventListener(`keydown`,this.onKeyDown,!0),this.props.styles.deleteDynamicRule(this.props.element.id+`-height`),this.restoreFocus()}afterRender(e){this.shouldFocusInitialControl&&this.focusInitialControl(),this.focusRecoveryControl(e),this.focusLinkDevicePasskeyAction(),this.observeContentSize(),this.queueContentHeightSync()}focusRecoveryControl(e){let t=this.viewModel;if(e?.kind===`recovery`&&t.kind!==`recovery`){this.previousRecoveryStage=null,this.props.element.querySelector(`[data-recovery-action]`)?.focus();return}if(t.kind!==`recovery`)return;let n=this.previousRecoveryStage!==t.stage;if(this.previousRecoveryStage=t.stage,t.stage===`enter_code`){let t=this.props.element.querySelector(`[aria-invalid="true"]`);if(t){t.focus();return}(e?.kind!==`recovery`||e.stage!==`enter_code`)&&this.props.element.querySelector(`[data-recovery-code]`)?.focus();return}if(t.stage===`choose_method`){n&&this.props.element.querySelector(`[data-recovery-target]`)?.focus();return}let r=t.status.kind===`recoverable`&&e?.kind===`recovery`&&e.status.kind!==`recoverable`;(n||r)&&(t.stage===`passkey_ready`||t.stage===`finalizing`||t.stage===`sign_in_ready`)&&this.props.element.querySelector(`[data-auth-menu-primary]`)?.focus()}focusLinkDevicePasskeyAction(){let e=this.viewModel.kind===`link_device`?this.viewModel.linkDevice.kind:null,t=e===`passkey_required`&&this.previousLinkDeviceStateKind!==e;this.previousLinkDeviceStateKind=e,t&&this.props.element.querySelector(`[data-link-device-passkey-action]`)?.focus()}observeContentSize(){if(this.contentResizeObserver)return;let e=this.props.element.querySelector(`.seams-content-sizer`);e&&(this.contentResizeObserver=new ResizeObserver(this.queueContentHeightSync),this.contentResizeObserver.observe(e),window.addEventListener(`resize`,this.queueContentHeightSync))}queueContentHeightSync=()=>{this.contentHeightFrame!==null&&cancelAnimationFrame(this.contentHeightFrame),this.contentHeightFrame=requestAnimationFrame(this.syncContentHeight)};syncContentHeight=()=>{this.contentHeightFrame=null;let e=this.props.element.querySelector(`.seams-content-switcher`),t=this.props.element.querySelector(`.seams-content-sizer`);!e||!t||this.props.element.hidden||this.props.styles.setDynamicDeclarations(this.props.element.id+`-height`,`#`+this.props.element.id+` .seams-content-switcher`,{height:t.scrollHeight+`px`})};focusInitialControl(){if(!this.props.element.isConnected||!this.shouldFocusInitialControl)return;this.shouldFocusInitialControl=!1;let e=document.activeElement;e instanceof HTMLElement&&this.props.element.contains(e)||this.props.element.querySelector(`[data-auth-menu-input], [data-auth-menu-primary]`)?.focus()}restoreFocus(){let e=this.previouslyFocusedElement;this.previouslyFocusedElement=null,e?.isConnected&&e.focus()}onKeydown=e=>{if(e.key===`Escape`){if(e.preventDefault(),this.viewModel&&M(this.viewModel))return;if(this.accountMenuOpen){this.closeAccountMenu();return}this.emitIntent({kind:`close`,reason:`escape`});return}if(e.key!==`Tab`)return;let t=this.focusableElements();if(t.length===0)return;let n=document.activeElement,r=t.indexOf(n instanceof HTMLElement?n:t[0]);e.shiftKey&&r<=0?(e.preventDefault(),t[t.length-1]?.focus()):!e.shiftKey&&r===t.length-1&&(e.preventDefault(),t[0]?.focus())};focusableElements(){return Array.from(this.props.element.querySelectorAll(`button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])`))}onBackClick=()=>{this.emitIntent({kind:`back`})};onKeyDown=e=>{if(e.key!==`Escape`||e.defaultPrevented)return;let t=this.viewModel;!t||t.kind!==`recovery`&&!d(t.status)||(e.preventDefault(),e.stopPropagation(),!M(t)&&this.emitIntent({kind:`back`}))};onIntentSwitchClick=()=>{let e=this.viewModel;e&&this.emitIntent({kind:`mode_selected`,mode:Ot(e.mode).nextMode})};onRegistrationReroll=()=>{this.emitIntent({kind:`registration_reroll`})};onPasskeyNameInput=e=>{e.currentTarget instanceof HTMLInputElement&&this.emitIntent({kind:`passkey_name_changed`,passkeyName:e.currentTarget.value})};onLoginAccountSelect=e=>{let t=e.currentTarget;if(!(t instanceof HTMLButtonElement))return;let n=t.dataset.walletId,r=t.dataset.authMethod,i=this.viewModel;if(!n||i.kind!==`passkey`||i.mode!==`login`)return;let a=i.accountOptions.find(e=>e.walletId===n&&e.authMethod===r),o=N(i);if(!a||!o||this.accountMenuChoice)return;let s=It(t);if(!s)return;let c={chosen:a,previous:o};this.accountMenuChoice=c,this.emitIntent({kind:`login_account_selected`,walletId:a.walletId,authMethod:a.authMethod}),s.then(()=>{this.accountMenuChoice===c&&this.closeAccountMenu()})};onAccountMenuToggle=()=>{this.accountMenuOpen?this.closeAccountMenu():this.openAccountMenu()};onDocumentPointerDown=e=>{!this.accountMenuOpen||!(e.target instanceof Node)||this.props.element.querySelector(`.seams-account-menu`)?.contains(e.target)||this.closeAccountMenu()};onPrimaryClick=()=>{let e=this.viewModel;if(!e||!m(e)||e.kind===`link_device`)return;if(e.kind===`google_otp_login`){this.emitIntent({kind:`google_otp_submit`});return}if(e.kind===`google_registration`){this.emitIntent({kind:`google_registration_complete`});return}let t=e.mode===`register`?{kind:`submit`,mode:`register`,passkeyName:e.passkeyName}:{kind:`submit`,mode:`login`};this.lastMethod=`passkey`,this.emitIntent(t)};onGoogleOtpCodeInput=e=>{e.currentTarget instanceof HTMLInputElement&&this.emitIntent({kind:`google_otp_code_changed`,code:e.currentTarget.value})};onGoogleOtpKeydown=e=>{e.key===`Enter`&&(e.preventDefault(),this.emitIntent({kind:`google_otp_submit`}))};onGoogleOtpResend=()=>{this.emitIntent({kind:`google_otp_resend`})};onGoogleRegistrationReroll=()=>{this.emitIntent({kind:`google_registration_reroll`})};onVoiceClick=()=>{this.lastMethod=`voiceid`,this.emitIntent({kind:`voiceid_selected`})};onGoogleClick=()=>{this.lastMethod=`google`,this.emitIntent({kind:`external_auth`,provider:`google`})};onNoticeRetry=()=>{if(this.lastMethod===`voiceid`){this.onVoiceClick();return}this.lastMethod===`google`&&ye(this.viewModel)?this.onGoogleClick():this.onPrimaryClick()};onLinkDeviceOpen=()=>{this.emitIntent({kind:`link_device_open`})};onRecoveryOpen=()=>{this.emitIntent({kind:`recovery_open`})};onRecoveryCodeInput=e=>{if(!(e.currentTarget instanceof HTMLInputElement)||this.viewModel.kind!==`recovery`)return;let t=e.currentTarget,n=t.value,r=St(n);r.length>0&&this.showRecoveryRejection(r);let i=E(n.slice(0,t.selectionStart??n.length)).length,a=E(n).slice(0,32);t.value!==a&&(t.value=a,t.setSelectionRange(Math.min(i,a.length),Math.min(i,a.length))),this.syncRecoverySelection(t),this.emitIntent({kind:`recovery_code_changed`,recoveryCode:a})};onRecoverySelectionMove=e=>{e.currentTarget instanceof HTMLInputElement&&this.syncRecoverySelection(e.currentTarget)};onRecoveryCodeClick=e=>{let t=e.currentTarget;if(t instanceof HTMLInputElement){if(t.selectionStart===t.selectionEnd){let n=Tt(this.props.element,e.clientX,e.clientY,t.value.length);n!==null&&t.setSelectionRange(n,n)}this.syncRecoverySelection(t)}};showRecoveryRejection(e){let t=this.state.recoveryRejection?.parity===0?1:0;this.setState({recoveryRejection:{characters:e,parity:t}}),this.recoveryRejectionTimer!==null&&clearTimeout(this.recoveryRejectionTimer),this.recoveryRejectionTimer=setTimeout(this.clearRecoveryRejection,2e3)}clearRecoveryRejection=()=>{this.recoveryRejectionTimer=null,this.setState({recoveryRejection:null})};recoveryCodeArrival(e){let t=this.recoveryDrawnCode;if(e===t)return this.recoveryArrival;this.recoveryDrawnCode=e;let n=0;for(;n<t.length&&t[n]===e[n];)n+=1;let r=n+e.length-t.length;return this.recoveryArrival=e.length>t.length?{start:n,end:r}:null,this.recoveryArrivalTimer!==null&&clearTimeout(this.recoveryArrivalTimer),this.recoveryArrivalTimer=setTimeout(this.endRecoveryArrival,600),this.recoveryArrival}endRecoveryArrival=()=>{this.recoveryArrivalTimer=null,this.recoveryArrival=null};onRecoveryCodeBlur=()=>{this.setState({recoverySelection:null})};syncRecoverySelection(e){let t=e.value.length,n=Math.min(e.selectionStart??t,t),r=Math.min(Math.max(e.selectionEnd??n,n),t),i=this.state.recoverySelection;i?.start===n&&i.end===r||this.setState({recoverySelection:{start:n,end:r}})}onRecoverySubmit=e=>{e.preventDefault(),this.emitIntent({kind:`recovery_code_submit`})};onRecoveryPasskeySelected=()=>{this.emitIntent({kind:`recovery_passkey_selected`})};onRecoveryGoogleSelected=()=>{this.emitIntent({kind:`recovery_google_selected`})};onRecoveryGoogleOtpCodeInput=e=>{e.currentTarget instanceof HTMLInputElement&&this.emitIntent({kind:`recovery_google_otp_code_changed`,code:e.currentTarget.value})};onRecoveryGoogleOtpKeydown=e=>{e.key===`Enter`&&(e.preventDefault(),this.emitIntent({kind:`recovery_google_otp_submit`}))};onRecoveryGoogleOtpSubmit=()=>{this.emitIntent({kind:`recovery_google_otp_submit`})};onRecoveryCreatePasskey=()=>{this.emitIntent({kind:`recovery_create_passkey`})};onRecoverySignIn=()=>{this.emitIntent({kind:`recovery_sign_in`})};onLinkDeviceCreatePasskey=()=>{this.emitIntent({kind:`link_device_create_passkey`})};onLinkDeviceFactorChange=e=>{if(!(e.currentTarget instanceof HTMLInputElement))return;let t=e.currentTarget.value===`email_otp`?{kind:`email_otp`}:{kind:`passkey_prf`};this.emitIntent({kind:`link_device_factor_selected`,targetFactor:t})};onLinkDeviceTargetEmailInput=e=>{e.currentTarget instanceof HTMLInputElement&&this.emitIntent({kind:`link_device_target_email_changed`,emailAddress:e.currentTarget.value})};onLinkDeviceStart=()=>{this.emitIntent({kind:`link_device_start`})};onLinkDeviceEmailOtpCodeInput=e=>{e.currentTarget instanceof HTMLInputElement&&this.emitIntent({kind:`link_device_email_otp_code_changed`,code:e.currentTarget.value})};onLinkDeviceEmailOtpKeydown=e=>{e.key===`Enter`&&(e.preventDefault(),this.emitIntent({kind:`link_device_email_otp_submit`}))};onLinkDeviceEmailOtpResend=()=>{this.emitIntent({kind:`link_device_email_otp_resend`})};onLinkDeviceEmailOtpSubmit=()=>{this.emitIntent({kind:`link_device_email_otp_submit`})};emitIntent(e){this.props.onIntent(e)}render(){let e=this.viewModel;if(!e)return v(y,{});let t=d(e.status),n=e.status.kind===`succeeded`?e.status.phase:null,r=e.kind===`link_device`,i=e.kind===`google_otp_login`,a=e.kind===`google_registration`,o=e.kind===`recovery`;return v(y,{children:v(`div`,{class:`seams-signup-menu-root auth-menu-root`,"data-mode":e.mode,"data-waiting":t||n?`true`:`false`,"data-success":n??void 0,"data-scan-device":r?`true`:`false`,"data-otp-prompt":i?`true`:`false`,"data-registration-prompt":a?`true`:`false`,"data-recovery":o?`true`:`false`,"aria-labelledby":D,"aria-busy":t?`true`:`false`,tabIndex:-1,onKeyDown:this.onKeydown,children:[v(`div`,{class:`seams-menu-origin`,children:[v(He,{}),` `,v(`span`,{children:e.hostname})]}),v(`div`,{class:`seams-content-switcher`,children:[v(`button`,{class:`seams-back-button ${!n&&(t||r||i||a||o)?`is-visible`:``}`,type:`button`,"aria-label":S(this.context,Dt(e)),"data-auth-menu-close":!0,disabled:n!==null||M(e),onClick:this.onBackClick,children:pe()}),o?v(`div`,{class:`sr-only`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:v(x,{copy:Et(e)})}):null,v(`div`,{class:`seams-content-area`,children:v(`div`,{class:`seams-content-sizer`,children:t||n?this.renderWaiting(e):v(y,{children:v(`div`,{class:`seams-signin-menu`,children:v(y,{children:this.renderActiveView(e)},j(e))})})})})]}),v(Lt,{notice:jt(e),onRetry:this.onNoticeRetry})]})})}renderActiveView(e){return e.kind===`recovery`?this.renderRecovery(e):e.kind===`link_device`?this.renderLinkDevice(e):e.kind===`google_otp_login`?this.renderGoogleOtp(e):e.kind===`google_registration`?this.renderGoogleRegistration(e):v(y,{children:[this.renderMenuHeader(e),` `,this.renderPasskeyInput(e),this.renderAuthMethods(e),` `,this.renderOtherOptions(),this.renderIntentSwitch(e)]})}renderMenuHeader(e){let t=kt(e.mode);return v(`div`,{class:`seams-menu-header`,children:[t===e.heading?null:v(`div`,{class:`seams-menu-eyebrow`,children:v(x,{copy:t})}),v(`div`,{class:`seams-title`,id:D,children:v(x,{copy:e.heading})}),e.subtitle?v(`div`,{class:`seams-subhead`,children:v(x,{copy:e.subtitle})}):null]})}renderHeader(e){return v(y,{children:v(`div`,{class:`seams-header`,children:v(`div`,{children:[v(`div`,{class:`seams-title`,id:D,children:v(x,{copy:e.heading})}),v(`div`,{class:`seams-subhead`,children:v(x,{copy:e.subtitle})})]})})})}walletRowEntering(e,t){let n=j(e),r=this.walletRowEntry;return r?.viewKey===n?t&&!r.shown&&(this.walletRowEntry={viewKey:n,shown:t,entering:!0}):this.walletRowEntry={viewKey:n,shown:t,entering:!1},this.walletRowEntry?.entering??!1}onWalletRowEntered=e=>{let t=this.walletRowEntry;e.target!==e.currentTarget||!t?.entering||(this.walletRowEntry={...t,entering:!1},this.forceUpdate())};renderPasskeyInput(e){if(e.mode===`login`){let t=N(e),n=this.walletRowEntering(e,t!==null);if(!t)return v(y,{});let r=Pt(e.accountOptions),i=this.state.accountMenu,a=this.accountMenuChoice,o=a?.previous??t;return v(y,{children:v(`div`,{class:`seams-passkey-row ${n?`is-entering`:``}`,onAnimationEnd:this.onWalletRowEntered,children:v(`div`,{class:`seams-input-pill`,children:[v(`div`,{class:`seams-input-wrap`,children:v(`div`,{class:`seams-account-menu-account seams-selected-account`,"aria-hidden":`true`,children:[v(`span`,{class:`seams-account-menu-account-primary`,children:Mt(t)}),P(t)?v(y,{children:v(`span`,{class:`seams-account-menu-account-secondary`,children:P(t)})}):null]})}),v(`div`,{class:`seams-account-menu ${i===`closed`?``:`is-open`}`,children:[v(`button`,{class:`seams-account-menu-trigger`,type:`button`,"data-auth-menu-input":!0,"aria-label":S(this.context,Nt(t)),"aria-haspopup":`listbox`,"aria-expanded":this.accountMenuOpen?`true`:`false`,"aria-controls":O,onClick:this.onAccountMenuToggle,children:he()}),i===`closed`?null:v(y,{children:v(`div`,{id:O,class:`seams-account-menu-popover ${i===`closing`?`is-closing`:``}`,role:`listbox`,children:r.map(e=>{let t=`${O}-${e.id}`;return v(y,{children:v(`div`,{class:`seams-account-menu-group`,role:`group`,"aria-labelledby":t,children:[v(`div`,{id:t,class:`seams-account-menu-group-label`,children:v(x,{copy:e.label})}),e.accounts.map(e=>{let t=e.walletId===o.walletId,n=!t&&e.walletId===a?.chosen.walletId,r=P(e);return v(y,{children:v(`button`,{class:`seams-account-menu-option ${t?`is-selected`:``} ${n?`is-chosen`:``}`,type:`button`,role:`option`,"aria-selected":t?`true`:`false`,title:S(this.context,r?`${e.walletId} ${r}`:e.walletId),"data-wallet-id":e.walletId,"data-auth-method":e.authMethod,onClick:this.onLoginAccountSelect,children:[v(`span`,{class:`seams-account-menu-check`,"aria-hidden":`true`}),v(`span`,{class:`seams-account-menu-account`,children:[v(`span`,{class:`seams-account-menu-account-primary`,children:e.walletId}),r?v(y,{children:v(`span`,{class:`seams-account-menu-account-secondary`,children:v(x,{copy:r})})}):null]})]})})})]})})})})})]})]})})})}return e.showRegistrationInput?v(y,{children:v(`div`,{class:`seams-passkey-row`,children:v(`div`,{class:`seams-input-pill`,children:[v(`div`,{class:`seams-input-wrap`,children:v(`input`,{id:`seams-auth-menu-passkey-name`,class:`seams-input`,"data-auth-menu-input":!0,type:`text`,autocomplete:`nickname`,placeholder:S(this.context,e.passkeyNameLabel),value:e.passkeyName,readonly:e.passkeyNameReadOnly,disabled:d(e.status),onInput:this.onPasskeyNameInput})}),e.passkeyNameReadOnly?v(y,{children:v(`button`,{class:`seams-input-action-trigger auth-menu-registration-reroll`,type:`button`,title:b(this.context,`Generate another name`),"aria-label":b(this.context,`Generate another name`),onClick:this.onRegistrationReroll,disabled:!ne(e),children:fe()})}):null]})})}):v(y,{})}renderAuthMethods(e){let t=e.enabledExternalProviders?.includes(`google`)??!1;return v(y,{children:v(`div`,{class:`seams-auth-methods`,children:[v(`button`,{class:`seams-auth-method-btn seams-auth-method-btn-primary`,type:`button`,"data-auth-menu-primary":!0,disabled:!m(e),onClick:this.onPrimaryClick,children:[p(),v(`span`,{children:v(x,{copy:At(e.mode)})})]}),t?v(`button`,{class:`seams-auth-method-btn`,type:`button`,"data-auth-menu-provider":`google`,disabled:!ye(e),onClick:this.onGoogleClick,children:[g(),v(`span`,{children:v(x,{copy:e.mode===`login`?`Unlock with email code`:`Continue with Google`})})]}):null,e.mode===`login`&&e.accountOptions.some(Vt.bind(null,N(e)?.walletId))?v(`button`,{type:`button`,class:`seams-auth-method-btn`,"data-auth-menu-voiceid":!0,onClick:this.onVoiceClick,children:[Ht(),v(`span`,{children:`Unlock with VoiceID`})]}):null]})})}renderOtherOptions(){return v(y,{children:[v(`div`,{class:`seams-menu-options-label`,children:v(x,{message:`Other options`})}),v(`div`,{class:`seams-menu-options`,children:[v(`button`,{class:`seams-menu-option`,type:`button`,onClick:this.onLinkDeviceOpen,children:[v(`span`,{class:`seams-menu-option-icon`,children:me()}),v(`span`,{class:`seams-menu-option-text`,children:[v(x,{message:`Link this device`}),v(`small`,{children:v(x,{message:`Scan a code with your other device`})})]}),ce()]}),v(`button`,{class:`seams-menu-option`,type:`button`,"data-recovery-action":!0,onClick:this.onRecoveryOpen,children:[v(`span`,{class:`seams-menu-option-icon`,children:oe()}),v(`span`,{class:`seams-menu-option-text`,children:[v(x,{message:`Recover wallet`}),v(`small`,{children:v(x,{message:`Use your recovery code`})})]}),ce()]})]})]})}renderRecovery(e){if(e.stage===`enter_code`){let t=E(e.recoveryCode).slice(0,32),n=this.recoveryCodeArrival(t),r=this.state.recoveryRejection,i=e.status.kind===`recoverable`?e.status.message:``,a=e.recoveryCodeError??i,o=a.length>0;return v(y,{children:[this.renderHeader(e),v(`p`,{id:`seams-recovery-code-feedback`,class:`seams-recovery-status ${o?`seams-recovery-error`:``}`,"aria-hidden":o?`false`:`true`,role:o?`alert`:`status`,children:v(x,{copy:a})}),v(`form`,{class:`seams-recovery-form`,novalidate:!0,onSubmit:this.onRecoverySubmit,children:[v(`div`,{class:`seams-recovery-field`,children:[v(`div`,{class:`seams-recovery-field-header`,children:[v(`label`,{class:`seams-field-label`,for:`seams-recovery-code`,children:v(x,{message:`Recovery code`})}),v(`span`,{id:`seams-recovery-code-count`,class:`seams-recovery-code-count`,children:[t.length,`/`,32]})]}),v(`div`,{class:`seams-otp-code-field seams-recovery-code-field ${r?`is-rejecting-${r.parity}`:``}`,children:[v(`input`,{id:`seams-recovery-code`,class:`seams-otp-input`,"data-recovery-code":!0,name:`recoveryCode`,type:`text`,inputmode:`text`,autocomplete:`off`,autocapitalize:`characters`,autocorrect:`off`,spellcheck:!1,"aria-invalid":e.recoveryCodeError?`true`:`false`,"aria-describedby":e.recoveryCodeError?`seams-recovery-code-feedback seams-recovery-code-count seams-recovery-code-hint`:`seams-recovery-code-count seams-recovery-code-hint`,value:t,onInput:this.onRecoveryCodeInput,onFocus:this.onRecoverySelectionMove,onKeyUp:this.onRecoverySelectionMove,onSelect:this.onRecoverySelectionMove,onClick:this.onRecoveryCodeClick,onBlur:this.onRecoveryCodeBlur}),v(`div`,{class:`seams-otp-slots seams-recovery-code-slots ${n&&n.end-n.start>1?`is-sweeping`:``}`,"aria-hidden":`true`,children:Ct(t,this.state.recoverySelection,n)})]}),v(`p`,{id:`seams-recovery-code-hint`,class:`seams-recovery-code-hint ${r?`is-error`:``}`,"aria-live":`polite`,children:r?`Recovery codes don’t use ${r.characters.join(`, `)}.`:v(x,{message:`You can paste the whole code.`})})]}),v(`button`,{class:`seams-auth-method-btn seams-auth-method-btn-primary`,type:`submit`,"data-auth-menu-primary":!0,"data-recovery-continue":!0,children:v(x,{message:`Continue`})})]})]})}if(e.stage===`choose_method`||e.stage===`preparing`){let t=e.stage===`preparing`?e.target.kind:null,n=e.status.kind===`recoverable`?e.status.message:e.status.kind===`busy`?e.status.headline:``,r=e.enabledExternalProviders?.includes(`google`)??!1;return v(y,{children:[this.renderHeader(e),v(`p`,{class:`seams-recovery-status ${e.status.kind===`recoverable`?`seams-recovery-error`:``}`,"aria-hidden":`true`,children:v(x,{copy:n})}),v(`div`,{class:`seams-auth-methods seams-recovery-methods`,children:[v(`button`,{class:`seams-auth-method-btn seams-auth-method-btn-primary`,type:`button`,"data-auth-menu-primary":!0,"data-recovery-target":`passkey`,disabled:t!==null,onClick:this.onRecoveryPasskeySelected,children:[t===`passkey`?v(`span`,{class:`seams-spinner`,"aria-hidden":`true`}):p(),v(`span`,{children:v(x,{message:`Create a passkey`})})]}),r?v(`button`,{class:`seams-auth-method-btn`,type:`button`,"data-recovery-target":`google_email_otp`,disabled:t!==null,onClick:this.onRecoveryGoogleSelected,children:[t===`google_email_otp`?v(`span`,{class:`seams-spinner`,"aria-hidden":`true`}):g(),v(`span`,{children:v(x,{message:`Continue with Google`})})]}):null]}),v(`p`,{class:`seams-recovery-method-note`,children:v(x,{message:`This adds a new sign-in method to your wallet.`})})]})}if(e.stage===`email_code_required`){let t=k(e.otpCode),n=/^\d{6}$/.test(e.otpCode)&&e.status.kind!==`busy`,r=e.delivery.status===`reused`?`Use the code already sent to ${e.emailHint}.`:`A 6-digit code was sent to ${e.emailHint}.`;return v(y,{children:[this.renderHeader(e),v(`div`,{class:`seams-otp-prompt`,"aria-live":`polite`,children:[v(`p`,{class:`seams-otp-description`,children:v(x,{copy:r})}),wt(e.delivery),v(`label`,{class:`seams-field-label`,for:`seams-recovery-google-otp`,children:v(x,{message:`Email code`})}),v(`div`,{class:`seams-otp-code-field`,"data-disabled":e.status.kind===`busy`?`true`:`false`,children:[v(`input`,{class:`seams-otp-input`,id:`seams-recovery-google-otp`,"data-auth-menu-input":!0,"data-email-otp-challenge-id":e.challengeId,"data-email-otp-wallet-id":e.walletId,name:`recoveryEmailOtpCode`,type:`text`,inputmode:`numeric`,autocomplete:`one-time-code`,spellcheck:!1,pattern:`[0-9]*`,maxLength:6,"aria-invalid":e.status.kind===`recoverable`?`true`:`false`,"aria-describedby":e.status.kind===`recoverable`?`seams-recovery-google-otp-error`:``,value:e.otpCode,disabled:e.status.kind===`busy`,onInput:this.onRecoveryGoogleOtpCodeInput,onKeyDown:this.onRecoveryGoogleOtpKeydown}),v(`div`,{class:`seams-otp-slots`,"aria-hidden":`true`,children:t.map(A)})]}),e.status.kind===`recoverable`?v(y,{children:v(`p`,{id:`seams-recovery-google-otp-error`,class:`seams-recovery-status seams-recovery-error`,role:`alert`,children:v(x,{copy:e.status.message})})}):null,v(`button`,{class:`seams-link-device-btn seams-link-device-btn-primary`,type:`button`,"data-auth-menu-primary":!0,disabled:!n,onClick:this.onRecoveryGoogleOtpSubmit,children:v(x,{message:`Verify email code`})})]})]})}let t=e.stage===`finalizing`&&e.status.kind===`recoverable`,n=e.stage===`sign_in_ready`,r=e.target.kind===`google_email_otp`,i=e.status.kind===`recoverable`?e.status.message:n?null:e.stage===`google_ready`?`Continue with Google, then verify the code sent to your email.`:r?`Finishing recovery with Google…`:`Create a new passkey to finish recovering this wallet.`,a=n?this.onRecoverySignIn:r?t?this.onRecoveryGoogleOtpSubmit:this.onGoogleClick:this.onRecoveryCreatePasskey;return v(y,{children:[this.renderHeader(e),v(`div`,{class:`seams-recovery-confirmation`,children:[i===null?null:v(y,{children:v(`p`,{class:`seams-recovery-status`,children:v(x,{copy:i})})}),v(`button`,{class:`seams-link-device-btn seams-link-device-btn-primary`,type:`button`,"data-auth-menu-primary":!0,onClick:a,children:[r&&!t?g():null,n?r?v(x,{message:`Unlock with Google`}):v(x,{message:`Unlock with new passkey`}):t?v(x,{message:`Retry finalization`}):r?v(x,{message:`Continue with Google`}):v(x,{message:`Create new passkey`})]})]})]})}renderIntentSwitch(e){let t=Ot(e.mode);return v(y,{children:v(`div`,{class:`seams-auth-intent-switch`,children:[v(`span`,{children:v(x,{copy:t.prompt})}),v(`button`,{type:`button`,"data-auth-menu-mode":t.nextMode,onClick:this.onIntentSwitchClick,children:v(x,{copy:t.action})})]})})}renderWaiting(e){let t=e.status;if(t.kind===`succeeded`)return this.renderSuccess(t);if(t.kind!==`busy`)return v(y,{});let n=t.headline,r=t.illustration?ue[t.illustration]:null;return v(y,{children:v(`div`,{class:`seams-waiting`,role:`status`,"aria-live":`polite`,children:[r?v(`span`,{class:`seams-passkey-prompt`,role:`img`,"aria-label":S(this.context,r.label),children:ge()}):null,v(`div`,{class:`seams-waiting-message`,children:[v(`span`,{class:`seams-waiting-text`,children:v(x,{copy:n})}),r?v(`span`,{class:`seams-passkey-instruction`,children:v(x,{copy:r.instruction})}):null,e.showProgress&&t.detail&&t.detail!==n?v(y,{children:v(`span`,{class:`seams-waiting-sdk-events`,children:v(x,{copy:t.detail})})}):null]}),r?null:v(`div`,{"aria-label":b(this.context,`Loading`),class:`seams-spinner`})]})})}renderSuccess(e){return v(`div`,{class:`seams-waiting seams-success`,role:`status`,"aria-live":`polite`,children:[v(`span`,{class:`seams-passkey-prompt seams-success-prompt`,children:ae()},`success-prompt`),v(`div`,{class:`seams-waiting-message seams-success-message`,children:[v(`span`,{class:`seams-waiting-text`,children:v(x,{copy:e.headline})}),v(`span`,{class:`seams-passkey-instruction`,children:v(x,{copy:e.message})})]},`success-message`)]})}renderLinkDevice(e){let t=e.linkDevice;if(t.kind===`select_factor`)return this.renderLinkDeviceFactorSelection(t);if(t.kind===`passkey_required`||t.kind===`creating_passkey`)return this.renderLinkDevicePasskeyConfirmation(t);if(t.kind===`email_otp_required`)return this.renderLinkDeviceEmailOtp(t);if(t.kind===`activating`)return this.renderLinkedDeviceActivation(t);if(t.kind===`expired`)return this.renderLinkDeviceFailurePanel({dismiss:`expired`,title:`Linking expired`,detail:t.message,action:`Try again`});if(t.kind===`cancelled`)return this.renderLinkDeviceFailurePanel({dismiss:`cancelled`,title:`Linking cancelled`,detail:t.message,action:`Return to unlock wallet`});if(t.kind===`error`||t.kind===`activation_error`)return this.renderLinkDeviceFailure(t);let n=t.kind===`ready`;return v(y,{children:v(`div`,{class:`seams-scan-device-content`,children:v(`div`,{class:`qr-code-container`,children:v(`div`,{class:`qr-body`,children:v(`div`,{class:`qr-code-section`,children:[v(`div`,{class:`qr-code-display`,children:n?v(y,{children:v(`img`,{src:t.qrCodeDataURL,alt:`QR code to link this device`,class:`qr-code-image`})}):v(y,{children:v(`div`,{class:`qr-code-placeholder`,children:v(`span`,{class:`seams-spinner`,"aria-hidden":`true`})})})}),v(`div`,{class:`qr-header`,children:v(`h2`,{class:`qr-title`,id:D,children:v(x,{copy:e.heading})})}),v(`div`,{class:`qr-instruction`,children:n?v(x,{copy:e.subtitle}):v(x,{message:`Preparing a one-time code for your other device.`})}),v(`div`,{class:`qr-status`,role:`status`,"aria-live":`polite`,children:[n?v(x,{copy:t.message}):v(x,{message:`Generating QR code`}),v(`span`,{class:`animated-ellipsis`})]})]})})})})})}renderLinkDeviceFactorSelection(e){let t=e.targetFactor.kind===`email_otp`,n=e.targetFactor.kind===`email_otp`&&typeof e.targetEmail==`string`?e.targetEmail:``,r=!t||lt(n);return v(y,{children:v(`div`,{class:`seams-link-device-confirmation`,children:[v(`h2`,{class:`qr-title`,id:D,children:v(x,{message:`Match your other device`})}),v(`p`,{class:`seams-link-device-confirmation-copy`,children:v(x,{message:`Choose the unlock method for Device 2. Email code sends a one-time code to the address you enter.`})}),v(`fieldset`,{class:`seams-link-device-factor-options`,children:[v(`legend`,{class:`sr-only`,children:v(x,{message:`Wallet unlock method`})}),v(`label`,{children:[v(`span`,{class:`seams-auth-method-choice-icon`,children:p()}),v(`span`,{class:`seams-auth-method-choice-label`,children:v(x,{message:`Passkey`})}),v(`input`,{type:`radio`,name:`linked-device-factor`,value:`passkey_prf`,checked:e.targetFactor.kind===`passkey_prf`,onChange:this.onLinkDeviceFactorChange})]}),v(`label`,{children:[v(`span`,{class:`seams-auth-method-choice-icon`,children:le()}),v(`span`,{class:`seams-auth-method-choice-label`,children:v(x,{message:`Email code`})}),v(`input`,{type:`radio`,name:`linked-device-factor`,value:`email_otp`,checked:e.targetFactor.kind===`email_otp`,onChange:this.onLinkDeviceFactorChange})]})]}),t?v(y,{children:v(`label`,{class:`seams-link-device-target-email`,children:[v(`span`,{class:`seams-field-label`,children:v(x,{message:`Email address`})}),v(`input`,{type:`email`,name:`linked-device-target-email`,autocomplete:`email`,value:n,"aria-label":b(this.context,`Email address`),"aria-invalid":n.length>0&&!r?`true`:`false`,onInput:this.onLinkDeviceTargetEmailInput})]})}):null,e.error?v(y,{children:v(`p`,{class:`seams-link-device-inline-error`,role:`alert`,children:v(x,{copy:e.error})})}):null,v(`button`,{class:`seams-link-device-btn seams-link-device-btn-primary`,type:`button`,"data-auth-menu-primary":!0,disabled:!r,onClick:this.onLinkDeviceStart,children:v(x,{message:`Continue`})})]})})}renderLinkDeviceEmailOtp(e){let t=e.state,n=zt(t),r=t.kind===`sending`||t.kind===`submitting`||t.kind===`resending`,i=e.otpCode.length===6&&(t.kind===`code_input`||t.kind===`incorrect`),a=t.kind!==`completed`&&t.kind!==`expired`&&t.kind!==`unavailable`,o=`maskedEmailHint`in t?t.maskedEmailHint:``,s=k(e.otpCode);return v(y,{children:v(`div`,{class:`seams-link-device-confirmation seams-link-device-email-otp`,"data-tone":n.tone,"data-otp-phase":t.kind,children:[Rt(n.ring,le()),v(`h2`,{class:`qr-title`,id:D,children:v(x,{copy:n.heading})}),o?v(y,{children:v(`div`,{class:`seams-link-device-email-chip`,title:S(this.context,o),children:v(`span`,{children:o})})}):null,v(`p`,{class:`seams-link-device-email-status`,id:`seams-linked-device-otp-status`,role:`status`,"aria-live":`polite`,children:[v(x,{copy:n.status}),n.pending?v(y,{children:v(`span`,{class:`animated-ellipsis`,"aria-hidden":`true`})}):null]}),a?v(y,{children:[v(`label`,{class:`sr-only`,for:`seams-linked-device-email-otp`,children:v(x,{message:`Email code`})}),v(`div`,{class:`seams-otp-code-field`,"data-disabled":r?`true`:`false`,children:[v(`input`,{class:`seams-otp-input`,id:`seams-linked-device-email-otp`,"data-auth-menu-input":!0,type:`text`,inputmode:`numeric`,autocomplete:`one-time-code`,pattern:`[0-9]*`,maxLength:6,"aria-label":b(this.context,`Email verification code`),"aria-describedby":`seams-linked-device-otp-status`,"aria-invalid":t.kind===`incorrect`?`true`:`false`,value:e.otpCode,disabled:r,onInput:this.onLinkDeviceEmailOtpCodeInput,onKeyDown:this.onLinkDeviceEmailOtpKeydown}),v(`div`,{class:`seams-otp-slots`,"aria-hidden":`true`,children:s.map(A)})]})]}):null,this.renderLinkDeviceEmailOtpActions(t,{busy:r,canSubmit:i})]})})}renderLinkDeviceEmailOtpActions(e,t){return e.kind===`completed`?null:e.kind===`unavailable`?v(y,{children:v(`button`,{class:`seams-link-device-btn`,type:`button`,"data-link-device-error-dismiss":!0,onClick:this.onBackClick,children:v(x,{message:`Return to unlock wallet`})})}):e.kind===`expired`?v(y,{children:v(`button`,{class:`seams-link-device-btn seams-link-device-btn-primary`,type:`button`,onClick:this.onLinkDeviceEmailOtpResend,children:v(x,{message:`Send a new code`})})}):v(y,{children:[v(`button`,{class:`seams-link-device-btn seams-link-device-btn-primary`,type:`button`,disabled:!t.canSubmit,onClick:this.onLinkDeviceEmailOtpSubmit,children:e.kind===`submitting`?v(x,{message:`Verifying`}):v(x,{message:`Verify code`})}),v(`button`,{class:`seams-otp-resend`,type:`button`,disabled:t.busy,onClick:this.onLinkDeviceEmailOtpResend,children:v(x,{message:`Send another code`})})]})}renderLinkDeviceFailure(e){let t=e.kind===`activation_error`;return this.renderLinkDeviceFailurePanel({dismiss:`error`,title:t?`Device linked`:`Couldn't link device`,detail:t?v(y,{children:[v(x,{message:`Unable to open the wallet. Go back and try again.`}),` `,v(x,{copy:e.message})]}):e.message,action:`Return to unlock wallet`})}renderLinkDeviceFailurePanel(e){return v(y,{children:v(`div`,{class:`seams-link-device-confirmation seams-link-device-failure`,children:[v(`div`,{class:`seams-link-device-failure-icon`,children:ie()}),v(`h2`,{class:`qr-title`,id:D,children:v(x,{copy:e.title})}),v(`p`,{class:`seams-link-device-failure-detail`,role:`alert`,children:typeof e.detail==`string`?v(x,{copy:e.detail}):e.detail}),v(`button`,{class:`seams-link-device-btn`,type:`button`,"data-auth-menu-primary":!0,[`data-link-device-${e.dismiss}-dismiss`]:!0,onClick:this.onBackClick,children:v(x,{copy:e.action})})]})})}renderLinkedDeviceActivation(e){return v(y,{children:v(`div`,{class:`seams-link-device-confirmation`,children:[v(`span`,{class:`seams-spinner`,"aria-hidden":`true`}),v(`h2`,{class:`qr-title`,id:D,children:v(x,{message:`Opening linked wallet`})}),v(`p`,{class:`seams-link-device-confirmation-copy`,role:`status`,"aria-live":`polite`,children:v(x,{copy:e.message})})]})})}renderLinkDevicePasskeyConfirmation(e){let t=e.kind===`creating_passkey`;return v(y,{children:v(`div`,{class:`seams-link-device-confirmation`,children:[Rt(t?`waiting`:`approved`),v(`h2`,{class:`qr-title`,id:D,"aria-live":`polite`,children:v(x,{copy:e.message})}),v(`button`,{class:`seams-link-device-btn seams-link-device-btn-primary`,type:`button`,"data-auth-menu-primary":!0,"data-link-device-passkey-action":!0,disabled:t,onClick:this.onLinkDeviceCreatePasskey,children:t?v(x,{message:`Waiting for passkey`}):v(x,{message:`Create passkey`})})]})})}renderGoogleOtp(e){let t=e.delivery.status===`reused`?`Use the code already sent to ${e.emailHint}.`:`A 6-digit code was sent to ${e.emailHint}.`,n=k(e.otpCode);return v(y,{children:v(`div`,{class:`seams-otp-prompt`,"aria-live":`polite`,children:[v(`div`,{class:`seams-otp-prompt-copy`,children:[v(`div`,{class:`seams-otp-title`,id:D,children:v(x,{copy:e.heading})}),v(`p`,{class:`seams-otp-description`,children:v(x,{copy:t})}),wt(e.delivery),v(`div`,{class:`seams-otp-account`,title:S(this.context,e.walletId),children:[v(`span`,{class:`seams-otp-account-label`,children:v(x,{message:`Wallet`})}),v(`span`,{class:`seams-otp-account-value`,children:e.walletId})]})]}),v(`label`,{class:`seams-field-label`,for:`seams-auth-menu-google-otp`,children:v(x,{message:`Email code`})}),v(`div`,{class:`seams-otp-code-field`,"data-disabled":e.submitBusy?`true`:`false`,children:[v(`input`,{class:`seams-otp-input`,id:`seams-auth-menu-google-otp`,"data-auth-menu-input":!0,"data-email-otp-challenge-id":e.challengeId,"data-email-otp-wallet-id":e.walletId,type:`text`,inputmode:`numeric`,autocomplete:`one-time-code`,pattern:`[0-9]*`,maxLength:6,value:e.otpCode,disabled:e.submitBusy,onInput:this.onGoogleOtpCodeInput,onKeyDown:this.onGoogleOtpKeydown}),v(`div`,{class:`seams-otp-slots`,"aria-hidden":`true`,children:n.map(A)})]}),v(`p`,{class:`seams-otp-helper`,children:v(x,{copy:e.prompt.helperText??``})}),v(`button`,{class:`seams-auth-method-btn seams-auth-method-btn-primary`,type:`button`,"data-auth-menu-primary":!0,disabled:!m(e),onClick:this.onPrimaryClick,children:e.submitBusy?v(x,{message:`Unlocking…`}):v(x,{copy:e.ctaLabel})}),v(`button`,{class:`seams-otp-resend auth-menu-google-resend`,type:`button`,disabled:e.resendBusy||e.submitBusy,onClick:this.onGoogleOtpResend,children:e.resendBusy?v(x,{message:`Sending…`}):v(x,{message:`Resend Code`})})]})})}renderGoogleRegistration(e){return v(y,{children:v(`div`,{class:`seams-otp-prompt`,"aria-live":`polite`,children:[v(`div`,{class:`seams-otp-prompt-copy`,children:[v(`div`,{class:`seams-otp-title`,id:D,children:v(x,{copy:e.heading})}),v(`p`,{class:`seams-otp-description`,children:v(x,{copy:e.subtitle})}),v(`div`,{class:`seams-otp-account`,title:S(this.context,e.walletId),children:[v(`span`,{class:`seams-otp-account-label`,children:v(x,{message:`Wallet`})}),v(`span`,{class:`seams-otp-account-value`,children:e.walletId})]}),v(`button`,{class:`seams-otp-reroll`,type:`button`,disabled:e.rerollBusy||e.submitBusy,onClick:this.onGoogleRegistrationReroll,children:e.rerollBusy?v(x,{message:`Generating…`}):v(x,{message:`Generate another name`})})]}),v(`button`,{class:`seams-auth-method-btn seams-auth-method-btn-primary`,type:`button`,"data-auth-menu-primary":!0,disabled:!m(e),onClick:this.onPrimaryClick,children:e.submitBusy?v(x,{message:`Creating...`}):v(x,{copy:e.ctaLabel})})]})})}};function Vt(e,t){return t.walletId===e&&t.authMethod===`voiceid`}function Ht(){return v(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,"aria-hidden":`true`,children:v(`path`,{d:`M4 10v4m4-7v10m4-14v18m4-14v10m4-7v4`})})}const F=new WeakMap;let Ut=0;function Wt(e){let t=F.get(e);return t||(t=we({doc:e,baseCss:``,dynamicStyleDataAttr:`data-seams-auth-menu-dynamic`,nonce:Se}),F.set(e,t)),t}var Gt=class{element;styles;entrance=[];state;constructor(e){let t=e.parent.ownerDocument;this.styles=Wt(t),this.element=t.createElement(`div`),this.element.className=`seams-wallet-ui seams-auth-menu-surface`,this.element.id=`seams-auth-menu-${++Ut}`,this.state={kind:`mounted`,onIntent:e.onIntent},this.element.addEventListener(`cancel`,this.cancel),e.parent.appendChild(this.element);try{this.update(e.viewModel),this.animateEntrance(e.initialHeightCssPx)}catch(e){throw this.dispose(),e}}animateEntrance(e){if(e===void 0||window.matchMedia(`(prefers-reduced-motion: reduce)`).matches)return;let t=this.element.querySelector(`.auth-menu-root`);if(!t)return;let n=t.getBoundingClientRect().height;this.entrance.push(t.animate([{height:`${e}px`,minHeight:`0px`,overflow:`hidden`},{height:`${n}px`,minHeight:`0px`,overflow:`hidden`}],{duration:200,easing:`cubic-bezier(0.32, 0.72, 0, 1)`}));for(let e of t.children)this.entrance.push(e.animate([{opacity:0},{opacity:1}],{duration:140,delay:60,fill:`backwards`,easing:`cubic-bezier(0.25, 1, 0.5, 1)`}))}update(e){this.state.kind!==`disposed`&&(this.element.lang=e.appearance.locale??`en`,this.element.dataset.theme=e.appearance.theme.mode,this.styles.setDynamicRule(this.element.id+`-appearance`,Ge(this.element.id,e.appearance)),Ce(Ue(e.appearance.locale??`en`,v(Bt,{element:this.element,viewModel:e,onIntent:this.state.onIntent,styles:this.styles})),this.element))}dispose(){if(this.state.kind!==`disposed`){this.state={kind:`disposed`};for(let e of this.entrance)e.cancel();this.entrance=[],this.element.removeEventListener(`cancel`,this.cancel),Ce(null,this.element),this.styles.deleteDynamicRule(this.element.id+`-appearance`),this.element.remove()}}cancel=()=>{this.state.kind===`mounted`&&this.state.onIntent({kind:`close`,reason:`close_button`})}};function Kt(e){return new Gt(e)}const I=Symbol(`hostedPasskeyLoginPrepared`),qt=Symbol(`hostedPasskeyAccountSyncPrepared`),L=300*1e3;function R(e){return{signingEngine:e.signingEngine,nearClient:e.nearClient,configs:e.configs,theme:e.theme,resumePendingAcknowledgementsV1:e.resumePendingAcknowledgementsV1}}const z=new WeakMap;function Jt(e){return e.signal}function B(e){if(Jt(e).aborted)throw Error(`Hosted auth-menu passkey preparation was cancelled`)}function Yt(e){if(Date.now()>=e.expiresAtMs)throw U(e),Error(`Hosted auth-menu passkey preparation expired`)}function Xt(e){let t=z.get(e);if(!t)throw Error(`Hosted auth-menu passkey preparation is unknown`);if(t.lifecycle!==`ready`)throw Error(`Hosted auth-menu passkey preparation is no longer usable`);if(Date.now()>=e.expiresAtMs)throw U(e),Error(`Hosted auth-menu passkey preparation expired`);return B(e.cancellation),t}function Zt(e){return{id:String(e.credentialId||``).trim(),type:`public-key`,transports:Array.isArray(e.transports)?e.transports:[]}}function Qt(e){return{authMenuSessionId:e.authMenuSessionId,requestId:e.requestId}}async function V(e){B(e.cancellation);let t=Te(e.walletId),n=await st(String(t));if(n){B(e.cancellation);let r=Object.freeze({kind:`hosted_passkey_linked_authority_login_prepared_v1`,...Qt(e),walletId:t,selection:n,expiresAtMs:Date.now()+L,cancellation:e.cancellation,[I]:!0});return z.set(r,{context:e.context,loginOptions:{},syncOptions:{},lifecycle:`ready`,authority:null}),r}let r=await nt({walletId:String(t),requestedCapabilityFamilies:{kind:`all_registered_mpc`}}),i=r.kind===`resolved`?r.subjectSet:await Ye(String(t));if(!i)return await H({context:e.context,walletId:null,authMenuSessionId:e.authMenuSessionId,requestId:e.requestId,cancellation:e.cancellation});B(e.cancellation);let a=Object.freeze({kind:`hosted_passkey_owner_login_prepared_v1`,...Qt(e),walletId:t,subjectSet:i,expiresAtMs:Date.now()+L,cancellation:e.cancellation,[I]:!0});return z.set(a,{context:e.context,loginOptions:{},syncOptions:{},lifecycle:`ready`,authority:null}),a}async function H(e){B(e.cancellation);let t=await rt(e.context,e.walletId);B(e.cancellation);let n=Object.freeze({kind:`hosted_passkey_account_sync_prepared_v1`,authMenuSessionId:e.authMenuSessionId,requestId:e.requestId,challenge:t,expiresAtMs:Date.now()+L,cancellation:e.cancellation,[qt]:!0});return z.set(n,{context:e.context,loginOptions:{},syncOptions:{},lifecycle:`ready`,authority:null}),n}function $t(e){let t=Xt(e);t.lifecycle=`consuming`;let n={subjectId:e.challenge.walletId||`account-sync`,challengeB64u:e.challenge.syncOptions.challengeB64u,allowCredentials:e.challenge.syncOptions.credentialIds.map(e=>Zt({credentialId:e}))},r;try{r=t.context.signingEngine.getAuthenticationCredentialsSerialized({...n,includeSecondPrfOutput:!1})}catch(e){throw t.lifecycle=`cancelled`,e}return t.authority=r,r.then(()=>{t.lifecycle===`consuming`&&(t.lifecycle=`consumed`)},()=>{t.lifecycle===`consuming`&&(t.lifecycle=`cancelled`)}),r}function en(e){let t=z.get(e);if(!t)throw Error(`Hosted auth-menu passkey preparation is unknown`);if(t.lifecycle!==`consuming`&&t.lifecycle!==`consumed`||!t.authority)throw Error(`Hosted auth-menu passkey credential must be started by its CTA`);return t.lifecycle=`completing`,t}async function tn(e){let t=Xt(e);t.lifecycle=`completing`;let n=!1,r=e=>{e.phase===ke.CANCELLED&&(n=!0)};try{let i=t.loginOptions.onEvent,a={...t.loginOptions,onEvent:e=>{r(e),i?.(e)}},o=e.kind===`hosted_passkey_linked_authority_login_prepared_v1`?await Xe(t.context,String(e.walletId),a):await at(t.context,e.subjectSet,a);return o.success?t.context.resumePendingAcknowledgementsV1():C(),{result:o,cancelledByUser:n}}finally{t.lifecycle=`finished`}}async function nn(e){let t=en(e),n=t.authority;if(!n)throw Error(`Hosted auth-menu passkey credential is missing`);try{let r=await n;return Yt(e),B(e.cancellation),await ot(t.context,e.challenge,r,t.syncOptions)}finally{t.lifecycle=`finished`}}function U(e){let t=z.get(e);!t||t.lifecycle===`finished`||t.lifecycle===`cancelled`||(t.lifecycle=`cancelled`)}const rn=`That recovery code can’t be used. Check the code and try again.`;function an(e){let t=e.replace(/[\s-]/g,``);if(!t)return`Enter a recovery code.`;if(t.length!==32)return`Enter all 32 characters of the recovery code.`;try{return Ae(t),null}catch{return rn}}function W(e){if(e.kind===`hosted_passkey_registration_prepared_v1`){Re(e);return}U(e)}function G(){}function on(e){return e.target.kind===`passkey`}function sn(e){return e.kind===`recovery`&&e.stage===`finalizing`&&(e.operation.kind===`hosted_recovery_credential_created`||e.operation.kind===`hosted_recovery_email_otp_verified`)}function cn(e){return e.kind===`authenticated`||e.kind===`registered`||e.kind===`account_synced`}function ln(e){return e.targetFactor.kind===`email_otp`?{targetFactor:e.targetFactor,targetEmail:Je(e.targetEmail)}:{targetFactor:e.targetFactor}}const un=1300,dn={kind:`recoverable`,reason:`error`,message:`Google sign-in was cancelled.`};function K(e){let t=e.mode??e.request.initialMode,n=e.request.copy[t],r={kind:`passkey`,appearance:e.appearance,hostname:e.hostname,closeLabel:e.request.copy.common.closeLabel,heading:n.title,subtitle:n.subtitle,ctaLabel:n.passkeyCta,showProgress:e.request.showProgress,enabledExternalProviders:e.request.enabledExternalProviders,status:{kind:`idle`,interaction:`arming`}};return t===`register`?{...r,mode:t,showRegistrationInput:e.request.showRegistrationInput||e.request.registrationAccountInput===`sponsored_named_near_account`,passkeyNameReadOnly:e.request.registrationAccountInput===`implicit_wallet`,passkeyName:e.request.registrationAccountInput===`implicit_wallet`?String(Ee()):``,passkeyNameLabel:e.request.copy.register.passkeyNameLabel}:{...r,mode:t,accountOptions:[],selectedAccount:null}}function fn(e){let t=K({...e,mode:`login`});if(t.kind!==`passkey`||t.mode!==`login`)throw Error(`login view model construction failed`);return t}async function pn(e){let[t]=await Promise.allSettled([e,new Promise(e=>setTimeout(e,500))]);if(t.status===`rejected`)throw t.reason;return t.value}function mn(e){return e.trim()||`Wallet`}function hn(e){return`close_button`}function q(){try{let e=globalThis.crypto?.randomUUID?.();if(e)return`auth-menu-external-${e}`}catch{}return`auth-menu-external-${Date.now()}-${Math.random().toString(36).slice(2)}`}function gn(e){return{appearance:e.base.appearance,hostname:e.base.hostname,closeLabel:e.base.closeLabel,heading:e.flow.prompt.title,subtitle:e.flow.prompt.description,ctaLabel:e.flow.prompt.submitLabel,showProgress:e.base.showProgress,enabledExternalProviders:e.base.enabledExternalProviders,status:e.status}}function _n(e){let t=`google-email-otp-login:${e.flow.walletId}:`;if(!e.flow.flowId.startsWith(t))throw Error(`Google Email OTP login flow identity is invalid`);return{...gn({base:e.base,flow:e.flow,status:e.status??{kind:`idle`,interaction:`actionable`}}),kind:`google_otp_login`,mode:`login`,emailHint:e.flow.emailHint,walletId:String(e.flow.walletId),challengeId:e.flow.flowId.slice(t.length),prompt:e.flow.prompt,delivery:e.flow.delivery,otpCode:e.otpCode??``,resendBusy:e.resendBusy??!1,submitBusy:e.submitBusy??!1,...e.error?{error:e.error}:{}}}function vn(e){return{...gn({base:e.base,flow:e.flow,status:e.status??{kind:`idle`,interaction:`actionable`}}),kind:`google_registration`,mode:`register`,emailHint:e.flow.emailHint,walletId:String(e.flow.walletId),prompt:e.flow.prompt,rerollBusy:e.rerollBusy??!1,submitBusy:e.submitBusy??!1,...e.error?{error:e.error}:{}}}function J(e){return e instanceof Error&&e.message.trim()?e.message.trim():String(e)}function yn(e){switch(e.kind){case`passkey`:return e.status.kind===`recoverable`?{mode:e.mode,message:e.status.detail??e.status.message}:null;case`google_otp_login`:case`google_registration`:return e.error?{mode:e.mode,message:e.error}:e.status.kind===`recoverable`?{mode:e.mode,message:e.status.message}:null;case`link_device`:return null;case`recovery`:return e.stage===`sign_in_ready`&&e.status.kind===`recoverable`?{mode:`login`,message:e.status.detail??e.status.message}:null;default:{let t=e;throw Error(`Unknown auth-menu view model: ${JSON.stringify(t)}`)}}}function bn(e){return{kind:`link_device`,appearance:e.appearance,hostname:e.hostname,closeLabel:e.closeLabel,heading:`Scan and link device`,subtitle:`Scan this code with your other device.`,ctaLabel:``,showProgress:e.showProgress,enabledExternalProviders:e.enabledExternalProviders,status:{kind:`idle`,interaction:`actionable`},mode:e.mode,linkDevice:{kind:`select_factor`,targetFactor:{kind:`passkey_prf`}}}}function Y(e){let t={kind:`recovery`,mode:`login`,appearance:e.base.appearance,hostname:e.base.hostname,closeLabel:e.base.closeLabel,heading:`Recover wallet`,subtitle:e.stage===`sign_in_ready`?e.target.kind===`google_email_otp`?`Your Google account is ready to unlock your wallet.`:`Your wallet is ready. Unlock it with your passkey.`:e.stage===`choose_method`||e.stage===`preparing`?`Choose how you will sign in to this wallet from now on.`:`Enter a recovery code to recover your wallet.`,ctaLabel:e.stage===`passkey_ready`?`Create new passkey`:e.stage===`google_ready`?`Continue with Google`:e.stage===`email_code_required`?`Verify email code`:e.stage===`sign_in_ready`?e.target.kind===`google_email_otp`?`Unlock with Google`:`Unlock with new passkey`:e.stage===`preparing`||e.stage===`choose_method`?`Create a passkey`:`Continue`,showProgress:e.base.showProgress,enabledExternalProviders:e.base.enabledExternalProviders,recoveryCode:e.recoveryCode??``,recoveryCodeError:e.recoveryCodeError??null};switch(e.stage){case void 0:case`enter_code`:return{...t,stage:`enter_code`,status:e.status??{kind:`idle`,interaction:`actionable`}};case`choose_method`:return{...t,stage:`choose_method`,status:e.status??{kind:`idle`,interaction:`actionable`}};case`preparing`:return{...t,stage:e.stage,target:e.target,status:e.status};case`passkey_ready`:return{...t,target:e.target,walletId:e.walletId,stage:e.stage,status:e.status??{kind:`idle`,interaction:`actionable`}};case`google_ready`:return{...t,target:e.target,walletId:e.walletId,stage:e.stage,status:e.status??{kind:`idle`,interaction:`actionable`}};case`email_code_required`:return{...t,target:e.target,walletId:e.walletId,stage:e.stage,challengeId:e.challengeId,emailHint:e.emailHint,delivery:e.delivery,otpCode:e.otpCode??``,status:e.status??{kind:`idle`,interaction:`awaiting_input`}};case`finalizing`:return{...t,target:e.target,walletId:e.walletId,stage:e.stage,status:e.status};case`sign_in_ready`:return{...t,target:e.target,walletId:e.walletId,stage:e.stage,status:e.status??{kind:`idle`,interaction:`actionable`}}}}function X(e){if(e.stage===`enter_code`||e.stage===`choose_method`||e.stage===`preparing`)throw Error(`recovery wallet id is unavailable before preparation`);return e.walletId}function Z(e){if(e.stage===`enter_code`||e.stage===`choose_method`)throw Error(`recovery target is unavailable before preparation`);return e.target}function Q(e){return e.kind===`dismissed`?{kind:`idle`,interaction:`actionable`}:{kind:`recoverable`,reason:`error`,message:e.kind===`consumed`?`That recovery code has already been used. Use another code.`:rn}}function xn(){return{kind:`recoverable`,reason:`error`,message:`Recovery couldn’t be completed. Try again.`}}function Sn(e){return e.kind===`dismissed`?{kind:`idle`,interaction:`actionable`}:{kind:`recoverable`,reason:`error`,message:`A passkey couldn’t be created. Try again.`}}var Cn=class{voiceLogin={kind:`unavailable`};voiceCapture=null;menuLeaving=null;setVoiceLogin(e){this.voiceLogin.kind!==`running`&&(this.voiceLogin={kind:`ready`,unlock:e})}assertVoiceLoginActive=()=>{if(this.stateValue.kind===`complete`||this.voiceLogin.kind!==`running`)throw Error(`VoiceID login was cancelled.`)};mountVoiceCapture=e=>{if(this.assertVoiceLoginActive(),this.measurementReporter?.disconnect(),this.surface){let e=this.surface.element;this.menuLeaving=kn(e,e.getBoundingClientRect()),this.menuLeaving.onfinish=this.finishMenuLeaving}let t=this.surface?.element.querySelector(`.seams-menu-origin`);return t&&e.querySelector(`.seams-voiceid-unlock-header`)?.prepend(t.cloneNode(!0)),document.body.append(e),this.voiceCapture=e,this.measurementReporter=_({kind:`auth_menu_surface`,element:e,requestId:this.identity.requestId,authMenuSessionId:this.identity.authMenuSessionId,postMeasurement:this.postSurfaceMeasurement}),this.restoreVoiceCapture.bind(this,e)};restoreVoiceCapture(e,t){if(this.voiceCapture=null,this.measurementReporter?.disconnect(),t===`succeeded`||!this.menuHidden()){e.remove();return}let n=kn(e,e.getBoundingClientRect()),r=e.remove.bind(e);n.onfinish=r,n.oncancel=r,this.revealMenu()}finishMenuLeaving=()=>{!this.surface||!this.menuLeaving||(this.surface.element.hidden=!0,this.restoreMenuFlow())};restoreMenuFlow(){let e=this.menuLeaving;this.menuLeaving=null,e?.cancel(),this.surface?.element.classList.remove(`seams-auth-card-leaving`)}menuHidden(){return this.stateValue.kind!==`complete`&&(this.menuLeaving!==null||this.surface?.element.hidden===!0)}revealMenu(){!this.surface||!this.menuHidden()||(this.restoreMenuFlow(),this.surface.element.hidden=!1,this.surface.element.inert=!1,this.surface.element.querySelector(`[data-auth-menu-voiceid]`)?.focus(),this.measurementReporter=_({kind:`auth_menu_surface`,element:this.surface.element,requestId:this.identity.requestId,authMenuSessionId:this.identity.authMenuSessionId,postMeasurement:this.postSurfaceMeasurement}))}async unlockWithVoice(){if(this.voiceLogin.kind!==`ready`||this.stateValue.kind!==`ready`&&this.stateValue.kind!==`preparing`)return;let e=this.currentViewModel();if(e.kind!==`passkey`||e.mode!==`login`)return;let t=f(this.loginAccountOptions,this.selectedLoginAccount).selectedAccount?.walletId,n=this.loginAccountOptions.find(An.bind(null,t));if(!n||n.authMethod!==`voiceid`)return;let r=this.voiceLogin.unlock;this.invalidatePreparation(),this.voiceLogin={kind:`running`,unlock:r};try{let e=await r({walletId:n.walletId,walletAuthMethodId:n.walletAuthMethodId,method:`voiceid`},this.assertVoiceLoginActive,this.mountVoiceCapture);if(this.assertVoiceLoginActive(),!e.success)throw Error(e.error);this.complete({kind:`authenticated`,authMenuSessionId:this.identity.authMenuSessionId,walletId:e.walletId,method:`voiceid`},`capture`)}catch(t){this.revealMenu(),this.state.kind!==`complete`&&(this.stateValue={kind:`preparing`,viewModel:{...e,status:h(J(t))}},this.updateElement())}finally{this.voiceLogin={kind:`ready`,unlock:r}}}identity;request;stateValue;surface=null;outcomeResolver=null;outcomePromise=null;successTimers=[];cleanedUp=!1;prepared=null;preparePasskey=null;registrationPreparation=null;preparationCancellation=null;googleCancellation=null;beginGoogleEmailOtp;startDeviceLinking;cancelDeviceLinking;loginPreparation=null;loginAccountOptions=[];selectedLoginAccount=null;modeSelectionSource=`initial`;sendToParent;measurementReporter=null;preparationGeneration=0;googleGeneration=0;deviceLinkGeneration=0;linkedDeviceActivationInProgress=!1;targetPasskeyActivation=null;targetEmailOtpActivation=null;linkedDeviceEmailOtpSendStarted=!1;linkedDeviceTargetFactor={kind:`passkey_prf`};linkedDeviceTargetEmailAddress=``;preparationDeadlineTimer=null;preparationExpiryTimer=null;lastReportedError=null;recoveryPort;prepareRecoveredLogin;recoveryGeneration=0;recoveryCancellation=null;recoveryLoginPrepared=null;recoveryReturnState=null;constructor(e){this.identity={authMenuSessionId:e.request.authMenuSessionId,requestId:e.requestId},this.request=e.request,this.beginGoogleEmailOtp=e.beginGoogleEmailOtp,this.startDeviceLinking=e.startDeviceLinking,this.cancelDeviceLinking=e.cancelDeviceLinking,this.recoveryPort=e.recoveryPort,this.prepareRecoveredLogin=e.prepareRecoveredLogin,this.sendToParent=e.sendToParent,this.stateValue={kind:`preparing`,viewModel:K({request:e.request,appearance:e.appearance,hostname:mn(e.hostname)})}}get state(){return this.stateValue}setRegistrationPreparation(e){this.registrationPreparation=e,this.stateValue.kind!==`complete`&&this.currentViewModel().mode===`register`&&(this.preparePasskey=null,this.startPasskeyPreparation())}setPasskeyPreparation(e){this.preparePasskey=e,this.startPasskeyPreparation()}setLoginPreparation(e){let t=this.stateValue.kind===`complete`?null:this.currentViewModel();t?.kind===`passkey`&&t.mode===`login`&&(this.stateValue.kind===`preparing`||this.stateValue.kind===`ready`)&&this.invalidatePreparation(),this.loginPreparation=e.prepare,this.loginAccountOptions=e.accountOptions,this.selectedLoginAccount=e.selectedAccount,this.updateLoginSelectionViewModel(),(this.stateValue.kind===`preparing`||this.stateValue.kind===`ready`)&&this.currentViewModel().mode===`login`&&this.activateSelectedLoginMethod()}defaultToLoginForDetectedLocalWallet(){if(this.modeSelectionSource!==`initial`||this.stateValue.kind===`complete`)return;let e=this.currentViewModel();e.kind!==`passkey`||e.mode!==`register`||this.showPasskeyMode(`login`)}prepareSelectedLogin=e=>{if(!this.loginPreparation)throw Error(`Hosted login preparation is unavailable`);let t=f(this.loginAccountOptions,this.selectedLoginAccount);if(!re(t))throw Error(`Email OTP accounts require Google sign-in`);return this.loginPreparation(t.kind===`discoverable`?null:t.walletId,e)};activateSelectedLoginMethod(){if(re(f(this.loginAccountOptions,this.selectedLoginAccount))){this.setPasskeyPreparation(this.prepareSelectedLogin);return}this.preparePasskey=null;let e=this.stateValue;e.kind!==`preparing`&&e.kind!==`ready`||e.viewModel.kind!==`passkey`||e.viewModel.mode!==`login`||(this.stateValue={kind:`preparing`,viewModel:{...e.viewModel,status:{kind:`idle`,interaction:`actionable`}}},this.updateElement())}updateLoginSelectionViewModel(){let e=this.stateValue;e.kind!==`preparing`&&e.kind!==`ready`||e.viewModel.kind!==`passkey`||e.viewModel.mode!==`login`||(this.stateValue={...e,viewModel:{...e.viewModel,accountOptions:this.loginAccountOptions,selectedAccount:this.selectedLoginAccount}})}mount(){if(this.surface||this.cleanedUp)throw Error(`Hosted auth-menu session is already mounted`);if(document.querySelectorAll(`.seams-auth-menu-surface`).length>0)throw Error(`A hosted auth-menu surface is already mounted`);let e=document.body||document.documentElement;if(!e)throw Error(`Wallet host document has no mount root`);this.surface=Kt({parent:e,viewModel:this.currentViewModel(),initialHeightCssPx:this.request.initialHeightCssPx,onIntent:this.onIntent}),this.measurementReporter=_({kind:`auth_menu_surface`,element:this.surface.element,requestId:this.identity.requestId,authMenuSessionId:this.identity.authMenuSessionId,postMeasurement:this.postSurfaceMeasurement})}waitForOutcome(){return this.stateValue.kind===`complete`?Promise.resolve(this.stateValue.outcome):(this.outcomePromise||=new Promise(e=>{this.outcomeResolver=e}),this.outcomePromise)}cancel(e){if(this.stateValue.kind===`complete`){this.finish(this.stateValue.outcome);return}if(sn(this.stateValue)){if(e===`close_button`)return;this.complete({kind:`cancelled`,authMenuSessionId:this.identity.authMenuSessionId,reason:e});return}this.stateValue.kind===`link_device`&&console.error(`[Device2Linking] auth menu cancelled`,{reason:e}),this.invalidatePreparation(),this.complete({kind:`cancelled`,authMenuSessionId:this.identity.authMenuSessionId,reason:e})}startPasskeyPreparation(){if(this.stateValue.kind===`complete`)return;let e=this.currentViewModel();if(e.kind!==`passkey`)return;let t=e.mode===`register`?this.registrationPreparation:null,n=e.mode===`login`?this.preparePasskey:null;if(!n&&!t)return;if(t&&e.mode===`register`&&e.showRegistrationInput&&e.passkeyName.trim().length===0){this.invalidatePreparation(),this.stateValue={kind:`preparing`,viewModel:{...e,status:{kind:`idle`,interaction:`awaiting_input`}}},this.updateElement();return}this.clearPreparationExpiryTimer();let r=++this.preparationGeneration,i=new AbortController;this.preparationCancellation=i;let a={kind:`abort_signal`,signal:i.signal};this.stateValue={kind:`preparing`,viewModel:{...e,status:{kind:`idle`,interaction:`arming`}}},this.updateElement(),this.schedulePreparationDeadline(r,i),Promise.resolve().then(()=>t?t(this.registrationValue(),a,this.showRegistrationDelay):n(a)).then(t=>{if(r!==this.preparationGeneration||this.stateValue.kind===`complete`){W(t);return}this.clearPreparationDeadlineTimer(),this.prepared=t,this.stateValue={kind:`ready`,prepared:t,viewModel:{...e,status:{kind:`idle`,interaction:`actionable`}}},this.schedulePreparationExpiry(t),this.updateElement()},t=>{r!==this.preparationGeneration||this.stateValue.kind===`complete`||(this.clearPreparationDeadlineTimer(),this.stateValue={kind:`preparing`,viewModel:{...e,status:h(J(t))}},this.updateElement())})}invalidatePreparation(){this.invalidateRecovery(),this.stateValue.kind===`link_device`&&(this.deviceLinkGeneration+=1,this.cancelDeviceLinking().catch(()=>{})),this.clearPreparationDeadlineTimer(),this.clearPreparationExpiryTimer(),this.preparationGeneration+=1,this.preparationCancellation?.abort(),this.preparationCancellation=null,this.googleGeneration+=1,this.googleCancellation?.abort(),this.googleCancellation=null;let e=this.prepared;this.prepared=null,e&&W(e),this.stateValue.kind===`performing`&&W(this.stateValue.prepared),(this.stateValue.kind===`google_login`||this.stateValue.kind===`google_registration`)&&this.stateValue.flow.cancel().catch(()=>{})}invalidateRecovery(){this.recoveryGeneration+=1,this.recoveryCancellation?.abort(),this.recoveryCancellation=null;let e=this.recoveryLoginPrepared;this.recoveryLoginPrepared=null,e&&W(e);let t=this.stateValue;t.kind!==`recovery`||!t.operation||sn(t)||this.recoveryPort.cancel(t.operation).catch(()=>{})}registrationValue(){let e=this.stateValue;return(e.kind===`preparing`||e.kind===`ready`)&&e.viewModel.kind===`passkey`&&e.viewModel.mode===`register`?e.viewModel.passkeyName:``}clearPreparationExpiryTimer(){this.preparationExpiryTimer!==null&&(clearTimeout(this.preparationExpiryTimer),this.preparationExpiryTimer=null)}clearPreparationDeadlineTimer(){this.preparationDeadlineTimer!==null&&(clearTimeout(this.preparationDeadlineTimer),this.preparationDeadlineTimer=null)}schedulePreparationDeadline(e,t){this.clearPreparationDeadlineTimer(),this.preparationDeadlineTimer=setTimeout(this.expirePasskeyPreparation.bind(this,e,t),2e4)}expirePasskeyPreparation(e,t){let n=this.stateValue;e!==this.preparationGeneration||t!==this.preparationCancellation||n.kind!==`preparing`||n.viewModel.kind!==`passkey`||n.viewModel.status.kind!==`idle`||n.viewModel.status.interaction!==`arming`||(this.clearPreparationDeadlineTimer(),this.preparationGeneration+=1,this.preparationCancellation=null,t.abort(),this.stateValue={kind:`preparing`,viewModel:{...n.viewModel,status:h(`Passkey preparation timed out`)}},this.updateElement())}schedulePreparationExpiry(e){this.clearPreparationExpiryTimer();let t=Math.max(0,e.expiresAtMs-Date.now());this.preparationExpiryTimer=setTimeout(()=>{this.preparationExpiryTimer=null,!(this.stateValue.kind!==`ready`||this.stateValue.prepared!==e||this.prepared!==e||this.stateValue.viewModel.kind!==`passkey`)&&(W(e),this.prepared=null,this.stateValue={kind:`preparing`,viewModel:{...this.stateValue.viewModel,status:{kind:`recoverable`,reason:`expired`,message:`Passkey preparation expired. Retry to continue.`}}},this.updateElement())},t)}startGoogleFlow(e,t){this.invalidatePreparation();let n=++this.googleGeneration,r=new AbortController;this.googleCancellation=r;let i=this.currentViewModel();i.kind===`recovery`||i.kind===`link_device`||(this.stateValue={kind:`preparing`,viewModel:{...i,status:{kind:`busy`,headline:`Waiting for Google login…`,illustration:`google`,detail:`Starting Google sign-in`}}},this.updateElement(),this.beginGoogleEmailOtp({idToken:e,authTarget:t,signal:r.signal}).then(e=>{if(n!==this.googleGeneration||r.signal.aborted||this.stateValue.kind===`complete`){e.cancel().catch(()=>{});return}this.googleCancellation=null,e.mode===`login`?this.stateValue={kind:`google_login`,flow:e,viewModel:_n({base:i,flow:e})}:this.stateValue={kind:`google_registration`,flow:e,viewModel:vn({base:i,flow:e})},this.updateElement()},e=>{n!==this.googleGeneration||r.signal.aborted||this.stateValue.kind===`complete`||(this.googleCancellation=null,this.stateValue={kind:`preparing`,viewModel:{...i,status:h(J(e))}},this.updateElement())}))}requestExternalAuth(e){if(this.stateValue.kind===`complete`)return null;if(this.stateValue.kind===`recovery`&&this.stateValue.stage===`google_ready`)return this.requestRecoveryGoogleVerification(e,this.stateValue);if(this.stateValue.kind===`recovery`&&this.stateValue.stage===`sign_in_ready`&&this.stateValue.viewModel.target.kind===`google_email_otp`)return this.requestRecoveredGoogleSignIn(e,this.stateValue);let t=this.currentViewModel();if(t.kind!==`passkey`||!this.request.enabledExternalProviders.includes(e)||this.stateValue.kind===`awaiting_external_auth`)return null;let n;if(t.mode===`register`)n={mode:`register`};else{let e=f(t.accountOptions,t.selectedAccount);if(!se(e))return null;n={mode:`login`,loginTarget:e.loginTarget}}this.invalidatePreparation();let r=o(q());if(!r)return null;let i={kind:`hosted_auth_menu_external_auth_request_v1`,authMenuSessionId:this.identity.authMenuSessionId,externalAuthRequestId:r,provider:e,mode:t.mode};return this.stateValue={kind:`awaiting_external_auth`,viewModel:{...t,status:{kind:`busy`,headline:`Waiting for Google login…`,illustration:`google`,detail:`Waiting for Google sign-in`}},request:i,authTarget:n},this.updateElement(),this.sendToParent({type:`AUTH_MENU_EXTERNAL_AUTH_REQUEST`,requestId:this.identity.requestId,payload:i}),i}acceptExternalAuthResolution(e){let t=this.stateValue;if(t.kind===`recovery`&&t.stage===`google_external_auth`){if(t.request.authMenuSessionId!==e.authMenuSessionId||t.request.externalAuthRequestId!==e.externalAuthRequestId||this.identity.requestId!==e.requestId)return!1;if(e.evidence.kind===`google_id_token`)return this.startRecoveryGoogleVerification(t,e.evidence.idToken),!0;let n=e.evidence.kind===`cancelled`?dn:h(e.evidence.message);return this.stateValue={kind:`recovery`,stage:`google_ready`,operation:t.operation,returnState:t.returnState,viewModel:Y({base:t.viewModel,walletId:X(t.viewModel),stage:`google_ready`,target:t.operation.target,status:n})},this.updateElement(),!0}if(t.kind!==`awaiting_external_auth`||t.viewModel.kind!==`passkey`||t.request.authMenuSessionId!==e.authMenuSessionId||t.request.externalAuthRequestId!==e.externalAuthRequestId||this.identity.requestId!==e.requestId)return!1;switch(e.evidence.kind){case`google_id_token`:return this.startGoogleFlow(e.evidence.idToken,t.authTarget),!0;case`cancelled`:case`failed`:{let n=e.evidence.kind===`cancelled`?dn:h(e.evidence.message);return this.stateValue={kind:`preparing`,viewModel:{...t.viewModel,status:n}},this.updateElement(),!0}default:return On(e.evidence)}}requestRecoveryGoogleVerification(e,t){if(!this.request.enabledExternalProviders.includes(e))return null;let n=o(q());if(!n)return null;let r={kind:`hosted_auth_menu_external_auth_request_v1`,authMenuSessionId:this.identity.authMenuSessionId,externalAuthRequestId:n,provider:e,mode:`login`};return this.stateValue={kind:`recovery`,stage:`google_external_auth`,operation:t.operation,returnState:t.returnState,request:r,viewModel:Y({base:t.viewModel,walletId:X(t.viewModel),stage:`finalizing`,target:t.operation.target,status:{kind:`busy`,headline:`Waiting for Google login…`,illustration:`google`,detail:`Waiting for Google sign-in`}})},this.updateElement(),this.sendToParent({type:`AUTH_MENU_EXTERNAL_AUTH_REQUEST`,requestId:this.identity.requestId,payload:r}),r}requestRecoveredGoogleSignIn(e,t){if(!this.request.enabledExternalProviders.includes(e))return null;let n=o(q());if(!n)return null;let r={kind:`hosted_auth_menu_external_auth_request_v1`,authMenuSessionId:this.identity.authMenuSessionId,externalAuthRequestId:n,provider:e,mode:`login`};return this.stateValue={kind:`awaiting_external_auth`,request:r,authTarget:{mode:`login`,loginTarget:{kind:`wallet`,walletId:X(t.viewModel)}},viewModel:{...fn({request:this.request,appearance:t.viewModel.appearance,hostname:t.viewModel.hostname}),status:{kind:`busy`,headline:`Waiting for Google login…`,illustration:`google`,detail:`Waiting for Google sign-in`}}},this.updateElement(),this.sendToParent({type:`AUTH_MENU_EXTERNAL_AUTH_REQUEST`,requestId:this.identity.requestId,payload:r}),r}cleanup(){if(this.voiceCapture?.dispatchEvent(new Event(`cancel`,{cancelable:!0})),!this.cleanedUp){this.cleanedUp=!0;for(let e of this.successTimers)clearTimeout(e);this.successTimers=[],this.invalidatePreparation(),this.measurementReporter?.disconnect(),this.measurementReporter=null,this.surface?.dispose(),this.surface=null}}postSurfaceMeasurement=e=>{this.sendToParent({type:`SURFACE_MEASUREMENT`,payload:e})};currentViewModel(){switch(this.stateValue.kind){case`preparing`:case`awaiting_external_auth`:case`ready`:case`performing`:return this.stateValue.viewModel;case`google_login`:case`google_registration`:case`link_device`:case`recovery`:return this.stateValue.viewModel;case`complete`:throw Error(`Completed auth-menu session has no view model`)}}updateElement(){let e=this.currentViewModel();this.reportPresentedError(e),this.surface?.update(e)}reportPresentedError(e){let t=yn(e);if(!t){this.lastReportedError=null;return}let n=`${t.mode}:${t.message}`;if(n===this.lastReportedError)return;this.lastReportedError=n;let r=a({kind:`hosted_auth_menu_error_v1`,authMenuSessionId:this.identity.authMenuSessionId,mode:t.mode,message:t.message});if(!r)throw Error(`Unable to emit hosted auth-menu error event`);this.sendToParent({type:`AUTH_MENU_ERROR`,requestId:this.identity.requestId,payload:r})}onIntent=e=>{if(this.stateValue.kind!==`complete`&&!(this.voiceLogin.kind===`running`&&e.kind!==`close`))switch(e.kind){case`mode_selected`:this.selectMode(e.mode);return;case`back`:this.back();return;case`link_device_open`:this.openLinkDevice();return;case`recovery_open`:this.openRecovery();return;case`recovery_code_changed`:this.changeRecoveryCode(e.recoveryCode);return;case`recovery_code_submit`:this.submitRecoveryCode();return;case`recovery_passkey_selected`:this.prepareRecovery(`passkey`);return;case`recovery_google_selected`:this.prepareRecovery(`google_email_otp`);return;case`recovery_google_otp_code_changed`:this.changeRecoveryGoogleOtpCode(e.code);return;case`recovery_google_otp_submit`:this.submitRecoveryGoogleOtp();return;case`recovery_create_passkey`:this.createRecoveryPasskey();return;case`recovery_sign_in`:this.signInRecoveredWallet();return;case`link_device_factor_selected`:this.selectLinkedDeviceTargetFactor(e.targetFactor);return;case`link_device_target_email_changed`:this.changeLinkedDeviceTargetEmailAddress(e.emailAddress);return;case`link_device_start`:this.startSelectedDeviceLinking();return;case`link_device_create_passkey`:this.createLinkedDevicePasskey();return;case`link_device_email_otp_code_changed`:this.changeLinkedDeviceEmailOtpCode(e.code);return;case`link_device_email_otp_resend`:this.resendLinkedDeviceEmailOtp();return;case`link_device_email_otp_submit`:this.submitLinkedDeviceEmailOtp();return;case`registration_reroll`:this.rerollRegistrationWallet();return;case`close`:this.cancel(hn(e));return;case`passkey_name_changed`:{let t=this.stateValue.kind===`preparing`||this.stateValue.kind===`ready`?this.stateValue.viewModel:null;t?.kind===`passkey`&&t.mode===`register`&&!t.passkeyNameReadOnly&&(this.invalidatePreparation(),this.stateValue={kind:`preparing`,viewModel:{...t,passkeyName:e.passkeyName,status:{kind:`idle`,interaction:`arming`}}},this.updateElement(),this.startPasskeyPreparation());return}case`voiceid_selected`:this.unlockWithVoice();return;case`login_account_selected`:this.selectLoginAccount(e.walletId,e.authMethod);return;case`submit`:if(this.stateValue.kind===`preparing`&&this.stateValue.viewModel.status.kind===`recoverable`){this.retryPreparation();return}this.stateValue.kind===`ready`&&this.prepared===this.stateValue.prepared&&(e.mode===`register`&&this.stateValue.prepared.kind===`hosted_passkey_registration_prepared_v1`||e.mode===`login`&&(this.stateValue.prepared.kind===`hosted_passkey_owner_login_prepared_v1`||this.stateValue.prepared.kind===`hosted_passkey_linked_authority_login_prepared_v1`||this.stateValue.prepared.kind===`hosted_passkey_account_sync_prepared_v1`))&&this.performPreparedPasskey(this.stateValue.prepared);return;case`external_auth`:this.requestExternalAuth(e.provider);return;case`google_otp_code_changed`:this.updateGoogleOtpCode(e.code);return;case`google_otp_resend`:this.resendGoogleOtp();return;case`google_otp_submit`:this.submitGoogleOtp();return;case`google_registration_reroll`:this.rerollGoogleRegistration();return;case`google_registration_complete`:this.completeGoogleRegistration();return;case`retry`:this.retryPreparation();return;default:return wn(e)}};selectMode(e){let t=this.stateValue;t.kind===`complete`||t.kind===`performing`||t.kind===`link_device`||(this.modeSelectionSource=`user`,this.currentViewModel().mode!==e&&this.showPasskeyMode(e))}showPasskeyMode(e){if(this.stateValue.kind===`complete`||this.stateValue.kind===`link_device`)return;let t=this.currentViewModel();this.invalidatePreparation();let n=K({request:{...this.request,initialMode:e},appearance:t.appearance,hostname:t.hostname,mode:e});this.stateValue={kind:`preparing`,viewModel:n.kind===`passkey`&&n.mode===`login`?{...n,accountOptions:this.loginAccountOptions,selectedAccount:this.selectedLoginAccount}:n},this.updateElement(),e===`login`?this.activateSelectedLoginMethod():(this.preparePasskey=null,this.startPasskeyPreparation())}back(){if(this.stateValue.kind===`recovery`){if(this.stateValue.stage===`finalizing`)return;if(this.stateValue.stage===`choose_method`){this.returnToRecoveryCode();return}this.closeRecovery();return}if(this.stateValue.kind===`link_device`){this.closeLinkDevice();return}(this.stateValue.kind===`performing`||this.stateValue.kind===`awaiting_external_auth`||this.stateValue.kind===`google_login`||this.stateValue.kind===`google_registration`)&&this.showPasskeyMode(this.stateValue.viewModel.mode)}openRecovery(){let e=this.stateValue;if(e.kind!==`preparing`&&e.kind!==`ready`||e.viewModel.kind!==`passkey`)return;let t={kind:`preparing`,viewModel:{...e.viewModel,status:{kind:`idle`,interaction:`arming`}}};this.invalidatePreparation(),this.recoveryReturnState=t,this.stateValue={kind:`recovery`,stage:`enter_code`,returnState:t,viewModel:Y({base:e.viewModel})},this.updateElement()}closeRecovery(){let e=this.stateValue;if(e.kind!==`recovery`)return;let t=e.returnState;this.invalidateRecovery(),this.recoveryReturnState=null,this.stateValue=t,this.updateElement(),this.preparePasskey=t.viewModel.mode===`login`?this.prepareSelectedLogin:null,this.startPasskeyPreparation()}changeRecoveryCode(e){let t=this.stateValue;t.kind!==`recovery`||t.stage!==`enter_code`||(this.stateValue={...t,viewModel:{...t.viewModel,recoveryCode:e,recoveryCodeError:null}},this.updateElement())}submitRecoveryCode(){let e=this.stateValue;if(e.kind!==`recovery`||e.stage!==`enter_code`)return;let t=an(e.viewModel.recoveryCode);if(t){this.stateValue={...e,viewModel:{...e.viewModel,recoveryCodeError:t}},this.updateElement();return}this.stateValue={...e,stage:`choose_method`,viewModel:Y({base:e.viewModel,recoveryCode:e.viewModel.recoveryCode,stage:`choose_method`})},this.updateElement()}returnToRecoveryCode(){let e=this.stateValue;e.kind!==`recovery`||e.stage!==`choose_method`||(this.stateValue={...e,stage:`enter_code`,viewModel:Y({base:e.viewModel,recoveryCode:e.viewModel.recoveryCode})},this.updateElement())}prepareRecovery(e=`passkey`){let t=this.stateValue;if(t.kind!==`recovery`||t.stage!==`choose_method`)return;let n=t.viewModel.recoveryCode.trim(),r;try{r=this.recoveryPort.targetFor(e)}catch{this.stateValue={...t,viewModel:Y({base:t.viewModel,recoveryCode:t.viewModel.recoveryCode,stage:`choose_method`,status:Q({kind:`refused`})})},this.updateElement();return}let i=++this.recoveryGeneration,a=new AbortController;this.recoveryCancellation=a,this.stateValue={...t,stage:`preparing`,viewModel:Y({base:t.viewModel,recoveryCode:t.viewModel.recoveryCode,stage:`preparing`,target:r,status:{kind:`busy`,headline:`Checking recovery code…`}})},this.updateElement();let o;try{o=this.recoveryPort.prepare({recoveryCode:n,target:r,signal:a.signal})}catch{this.rejectRecoveryPreparation(i);return}o.then(this.completeRecoveryPreparation.bind(this,i),this.rejectRecoveryPreparation.bind(this,i))}completeRecoveryPreparation(e,t){let n=this.stateValue;if(e!==this.recoveryGeneration||n.kind!==`recovery`){t.kind===`hosted_recovery_prepared`&&this.recoveryPort.cancel(t).catch(G);return}if(this.recoveryCancellation=null,t.kind!==`hosted_recovery_prepared`){this.stateValue={kind:`recovery`,stage:`enter_code`,returnState:n.returnState,viewModel:Y({base:n.viewModel,recoveryCode:n.viewModel.recoveryCode,status:Q(t)})},this.updateElement();return}if(on(t)){this.stateValue={kind:`recovery`,stage:`passkey_ready`,operation:t,returnState:n.returnState,viewModel:Y({base:n.viewModel,walletId:String(t.walletId),recoveryCode:``,stage:`passkey_ready`,target:t.target})},this.createRecoveryPasskey();return}let r={kind:`recovery`,stage:`google_ready`,operation:t,returnState:n.returnState,viewModel:Y({base:n.viewModel,walletId:String(t.walletId),recoveryCode:``,stage:`google_ready`,target:t.target})};this.stateValue=r,this.requestRecoveryGoogleVerification(`google`,r)||(this.stateValue={...r,viewModel:Y({base:r.viewModel,walletId:X(r.viewModel),stage:`google_ready`,target:r.operation.target,status:{kind:`recoverable`,reason:`error`,message:`Google sign-in is unavailable. Try again.`}})},this.updateElement())}rejectRecoveryPreparation(e){let t=this.stateValue;e!==this.recoveryGeneration||t.kind!==`recovery`||(this.recoveryCancellation=null,this.stateValue={kind:`recovery`,stage:`enter_code`,returnState:t.returnState,viewModel:Y({base:t.viewModel,recoveryCode:t.viewModel.recoveryCode,status:Q({kind:`transport_uncertain`})})},this.updateElement())}startRecoveryGoogleVerification(e,t){let n=++this.recoveryGeneration;this.recoveryPort.verifyGoogle(e.operation,t).then(this.completeRecoveryGoogleVerification.bind(this,n),this.rejectRecoveryGoogleVerification.bind(this,n))}completeRecoveryGoogleVerification(e,t){let n=this.stateValue;if(e!==this.recoveryGeneration||n.kind!==`recovery`||n.stage!==`google_external_auth`){t.kind===`hosted_recovery_google_verified`&&this.recoveryPort.cancel(t).catch(G);return}if(t.kind!==`hosted_recovery_google_verified`){this.showRecoveryGoogleVerificationFailure(n,t);return}this.stateValue={kind:`recovery`,stage:`email_code_required`,operation:t,returnState:n.returnState,viewModel:Y({base:n.viewModel,walletId:String(t.walletId),stage:`email_code_required`,target:t.target,challengeId:t.challengeId,emailHint:t.delivery.emailHint,delivery:t.delivery})},this.updateElement()}rejectRecoveryGoogleVerification(e){let t=this.stateValue;e!==this.recoveryGeneration||t.kind!==`recovery`||t.stage!==`google_external_auth`||this.showRecoveryGoogleVerificationFailure(t,{kind:`transport_uncertain`})}showRecoveryGoogleVerificationFailure(e,t){this.stateValue={kind:`recovery`,stage:`google_ready`,operation:e.operation,returnState:e.returnState,viewModel:Y({base:e.viewModel,walletId:X(e.viewModel),stage:`google_ready`,target:e.operation.target,status:Q(t)})},this.updateElement()}changeRecoveryGoogleOtpCode(e){let t=this.stateValue;if(t.kind!==`recovery`||t.stage!==`email_code_required`)return;let n=e.replace(/\D/g,``).slice(0,6);this.stateValue={...t,viewModel:Y({base:t.viewModel,walletId:X(t.viewModel),stage:`email_code_required`,target:t.operation.target,challengeId:t.operation.challengeId,emailHint:t.operation.delivery.emailHint,delivery:t.operation.delivery,otpCode:n})},this.updateElement(),/^\d{6}$/.test(n)&&this.submitRecoveryGoogleOtp()}submitRecoveryGoogleOtp(){let e=this.stateValue;if(e.kind===`recovery`&&e.stage===`finalizing`&&e.operation.kind===`hosted_recovery_email_otp_verified`&&e.viewModel.status.kind===`recoverable`){this.finishRecovery(e.operation);return}if(e.kind!==`recovery`||e.stage!==`email_code_required`)return;let t=e.viewModel.otpCode.trim();if(!/^\d{6}$/.test(t))return;let n=++this.recoveryGeneration;this.stateValue={...e,viewModel:Y({base:e.viewModel,walletId:X(e.viewModel),stage:`email_code_required`,target:e.operation.target,challengeId:e.operation.challengeId,emailHint:e.operation.delivery.emailHint,delivery:e.operation.delivery,otpCode:t,status:{kind:`busy`,headline:`Verifying email code…`}})},this.updateElement(),this.recoveryPort.verifyEmailOtp(e.operation,{challengeId:e.operation.challengeId,otpCode:t}).then(this.completeRecoveryEmailOtpVerification.bind(this,n),this.rejectRecoveryEmailOtpVerification.bind(this,n))}completeRecoveryEmailOtpVerification(e,t){let n=this.stateValue;if(e!==this.recoveryGeneration||n.kind!==`recovery`||n.stage!==`email_code_required`){t.kind===`hosted_recovery_email_otp_verified`&&this.recoveryPort.cancel(t).catch(G);return}if(t.kind!==`hosted_recovery_email_otp_verified`){this.showRecoveryEmailOtpFailure(n,t);return}this.finishRecovery(t)}rejectRecoveryEmailOtpVerification(e){let t=this.stateValue;e!==this.recoveryGeneration||t.kind!==`recovery`||t.stage!==`email_code_required`||this.showRecoveryEmailOtpFailure(t,{kind:`transport_uncertain`})}showRecoveryEmailOtpFailure(e,t){this.stateValue={...e,viewModel:Y({base:e.viewModel,walletId:X(e.viewModel),stage:`email_code_required`,target:e.operation.target,challengeId:e.operation.challengeId,emailHint:e.operation.delivery.emailHint,delivery:e.operation.delivery,otpCode:e.viewModel.otpCode,status:Q(t)})},this.updateElement()}createRecoveryPasskey(){let e=this.stateValue;if(e.kind!==`recovery`)return;if(e.stage===`finalizing`&&e.operation.kind===`hosted_recovery_credential_created`&&e.viewModel.status.kind===`recoverable`){this.finishRecovery(e.operation);return}if(e.stage!==`passkey_ready`)return;let t=++this.recoveryGeneration,n;try{n=this.recoveryPort.createPasskey(e.operation)}catch{this.showRecoveryCreateFailure(e,{kind:`refused`});return}this.stateValue={...e,stage:`finalizing`,viewModel:Y({base:e.viewModel,walletId:X(e.viewModel),stage:`finalizing`,target:Z(e.viewModel),status:{kind:`busy`,headline:`Creating new passkey…`}})},this.updateElement(),n.then(this.completeRecoveryCredentialCreation.bind(this,t),this.rejectRecoveryCredentialCreation.bind(this,t))}completeRecoveryCredentialCreation(e,t){let n=this.stateValue;if(e!==this.recoveryGeneration||n.kind!==`recovery`||n.stage!==`finalizing`||n.operation.kind!==`hosted_recovery_prepared`){t.kind===`hosted_recovery_credential_created`&&this.recoveryPort.cancel(t).catch(G);return}if(t.kind!==`hosted_recovery_credential_created`){this.showRecoveryCreateFailure({returnState:n.returnState,viewModel:n.viewModel,operation:n.operation},t);return}this.finishRecovery(t)}rejectRecoveryCredentialCreation(e){let t=this.stateValue;e!==this.recoveryGeneration||t.kind!==`recovery`||t.stage!==`finalizing`||t.operation.kind!==`hosted_recovery_prepared`||this.showRecoveryCreateFailure({returnState:t.returnState,viewModel:t.viewModel,operation:t.operation},{kind:`refused`})}showRecoveryCreateFailure(e,t){if(!on(e.operation)){this.recoveryPort.cancel(e.operation).catch(G),this.stateValue={kind:`recovery`,stage:`enter_code`,returnState:e.returnState,viewModel:Y({base:e.viewModel,recoveryCode:``,status:Q(t)})},this.updateElement();return}if(t.kind===`refused`){this.recoveryPort.cancel(e.operation).catch(G),this.stateValue={kind:`recovery`,stage:`enter_code`,returnState:e.returnState,viewModel:Y({base:e.viewModel,recoveryCode:``,status:Q(t)})},this.updateElement();return}this.stateValue={kind:`recovery`,stage:`passkey_ready`,operation:e.operation,returnState:e.returnState,viewModel:Y({base:e.viewModel,walletId:X(e.viewModel),stage:`passkey_ready`,target:e.operation.target,status:Sn(t)})},this.updateElement()}finishRecovery(e){let t=this.stateValue;if(t.kind!==`recovery`)return;let n=++this.recoveryGeneration;this.stateValue={kind:`recovery`,stage:`finalizing`,operation:e,returnState:t.returnState,viewModel:Y({base:t.viewModel,walletId:X(t.viewModel),stage:`finalizing`,target:Z(t.viewModel),status:{kind:`busy`,headline:`Finishing recovery…`}})},this.updateElement();let r;try{r=this.recoveryPort.finalize(e)}catch{this.rejectRecoveryFinalization(n);return}r.then(this.completeRecoveryFinalization.bind(this,n),this.rejectRecoveryFinalization.bind(this,n))}completeRecoveryFinalization(e,t){let n=this.stateValue;if(!(e!==this.recoveryGeneration||n.kind!==`recovery`||n.stage!==`finalizing`||n.operation.kind!==`hosted_recovery_credential_created`&&n.operation.kind!==`hosted_recovery_email_otp_verified`)){if(t.kind!==`ready_for_sign_in`){t.kind===`refused`?(this.recoveryPort.cancel(n.operation).catch(()=>{}),this.stateValue={kind:`recovery`,stage:`enter_code`,returnState:n.returnState,viewModel:Y({base:n.viewModel,status:Q(t)})}):this.stateValue={...n,viewModel:Y({base:n.viewModel,walletId:X(n.viewModel),stage:`finalizing`,target:Z(n.viewModel),status:xn()})},this.updateElement();return}if(n.operation.target.kind===`passkey`){this.prepareRecoveredPasskeyLogin(t.walletId,n.returnState);return}this.stateValue={kind:`recovery`,stage:`sign_in_ready`,returnState:n.returnState,viewModel:Y({base:n.viewModel,walletId:String(t.walletId),stage:`sign_in_ready`,target:n.operation.target})},this.updateElement()}}rejectRecoveryFinalization(e){let t=this.stateValue;e!==this.recoveryGeneration||t.kind!==`recovery`||t.stage!==`finalizing`||t.operation.kind!==`hosted_recovery_credential_created`&&t.operation.kind!==`hosted_recovery_email_otp_verified`||(this.stateValue={...t,viewModel:Y({base:t.viewModel,walletId:X(t.viewModel),stage:`finalizing`,target:Z(t.viewModel),status:xn()})},this.updateElement())}prepareRecoveredPasskeyLogin(e,t){let n=this.stateValue;if(n.kind!==`recovery`)return;let r=++this.recoveryGeneration,i=new AbortController;this.recoveryCancellation=i;let a=this.prepareRecoveredLogin(e,{kind:`abort_signal`,signal:i.signal});this.stateValue={kind:`recovery`,stage:`sign_in_ready`,returnState:t,viewModel:Y({base:n.viewModel,walletId:String(e),stage:`sign_in_ready`,target:Z(n.viewModel),status:{kind:`busy`,headline:`Preparing to unlock…`}})},this.updateElement(),a.then(this.completeRecoveredLoginPreparation.bind(this,r,t),this.rejectRecoveredLoginPreparation.bind(this,r,e,t))}completeRecoveredLoginPreparation(e,n,r){let i=this.stateValue;if(e!==this.recoveryGeneration||i.kind!==`recovery`){W(r);return}if(this.recoveryCancellation=null,r.kind!==`hosted_passkey_owner_login_prepared_v1`&&r.kind!==`hosted_passkey_linked_authority_login_prepared_v1`){W(r);let a=t(X(i.viewModel));if(!a.ok)return;this.rejectRecoveredLoginPreparation(e,a.value,n);return}this.recoveryLoginPrepared=r,this.stateValue={kind:`recovery`,stage:`sign_in_ready`,returnState:n,viewModel:Y({base:i.viewModel,walletId:X(i.viewModel),stage:`sign_in_ready`,target:Z(i.viewModel)})},this.updateElement()}rejectRecoveredLoginPreparation(e,t,n){let r=this.stateValue;e!==this.recoveryGeneration||r.kind!==`recovery`||(this.recoveryCancellation=null,this.stateValue={kind:`recovery`,stage:`sign_in_ready`,returnState:n,viewModel:Y({base:r.viewModel,walletId:String(t),stage:`sign_in_ready`,target:Z(r.viewModel),status:{kind:`recoverable`,reason:`error`,message:`Your wallet was recovered. Unlock it again to continue.`}})},this.updateElement())}signInRecoveredWallet(){let e=this.stateValue;if(e.kind!==`recovery`||e.stage!==`sign_in_ready`)return;if(e.viewModel.target.kind===`google_email_otp`){this.requestExternalAuth(`google`);return}let n=this.recoveryLoginPrepared;if(!n){let n=t(X(e.viewModel));if(!n.ok)return;this.prepareRecoveredPasskeyLogin(n.value,e.returnState);return}this.recoveryLoginPrepared=null,this.performPreparedPasskey(n)}openLinkDevice(){let e=this.stateValue;if(e.kind!==`preparing`&&e.kind!==`ready`||e.viewModel.kind!==`passkey`)return;let t={kind:`preparing`,viewModel:{...e.viewModel,status:{kind:`idle`,interaction:`arming`}}};this.invalidatePreparation(),this.linkedDeviceActivationInProgress=!1,this.targetPasskeyActivation=null,this.targetEmailOtpActivation=null,this.linkedDeviceEmailOtpSendStarted=!1,this.linkedDeviceTargetFactor={kind:`passkey_prf`},this.linkedDeviceTargetEmailAddress=``,this.stateValue={kind:`link_device`,returnState:t,viewModel:bn(e.viewModel)},this.updateElement()}selectLinkedDeviceTargetFactor(e){let t=this.stateValue;t.kind!==`link_device`||t.viewModel.linkDevice.kind!==`select_factor`||(this.linkedDeviceTargetFactor=e,this.stateValue={...t,viewModel:{...t.viewModel,linkDevice:e.kind===`email_otp`?{kind:`select_factor`,targetFactor:e,targetEmail:this.linkedDeviceTargetEmailAddress}:{kind:`select_factor`,targetFactor:e}}},this.updateElement())}changeLinkedDeviceTargetEmailAddress(e){let t=this.stateValue;t.kind!==`link_device`||t.viewModel.linkDevice.kind!==`select_factor`||t.viewModel.linkDevice.targetFactor.kind!==`email_otp`||(this.linkedDeviceTargetEmailAddress=e,this.stateValue={...t,viewModel:{...t.viewModel,linkDevice:{kind:`select_factor`,targetFactor:t.viewModel.linkDevice.targetFactor,targetEmail:e}}},this.updateElement())}startSelectedDeviceLinking(){let e=this.stateValue;if(e.kind!==`link_device`||e.viewModel.linkDevice.kind!==`select_factor`)return;let t=e.viewModel.linkDevice,n;try{if(t.targetFactor.kind===`email_otp`){let e=t.targetEmail;if(typeof e!=`string`)throw Error(`linked-device target email address is unavailable`);n=ln({targetFactor:t.targetFactor,targetEmail:e})}else n=ln({targetFactor:t.targetFactor})}catch(t){this.stateValue={...e,viewModel:{...e.viewModel,linkDevice:{...e.viewModel.linkDevice,error:J(t)}}},this.updateElement();return}let r=++this.deviceLinkGeneration;this.stateValue={...e,viewModel:{...e.viewModel,linkDevice:{kind:`loading`,message:`Generating QR code...`}}},this.updateElement(),this.startDeviceLinking(n,{onEvent:this.onLinkDeviceEvent.bind(this,r),onTargetFactorRequired:this.onTargetFactorRequired.bind(this,r)}).then(this.completeLinkDeviceOpen.bind(this,r)).catch(this.failLinkDeviceOpen.bind(this,r))}onLinkDeviceEvent(e,t){let n=this.stateValue;if(e!==this.deviceLinkGeneration||n.kind!==`link_device`)return;let r=De(t);switch(r.kind){case`active`:if(this.linkedDeviceActivationInProgress)return;this.linkedDeviceActivationInProgress=!0,this.complete({kind:`authenticated`,authMenuSessionId:this.identity.authMenuSessionId,walletId:r.walletId,method:this.linkedDeviceTargetFactor.kind===`email_otp`?`google_email_otp`:`passkey`});return;case`invalid_active`:this.showLinkedDeviceActivationError(n,Error(`Linked-device activation omitted its wallet identity`));return;case`failed`:if(t.error?.code===ct.SESSION_EXPIRED){this.stateValue={...n,viewModel:{...n.viewModel,linkDevice:{kind:`expired`,message:`This linking request expired. Start again to link this device.`}}},this.updateElement();return}if(t.error?.code===ct.DELIVERY_RECOVERY_REQUIRED){this.showLinkedDeviceActivationError(n,Error(t.message||`Go back and unlock the new linked method to finish setup.`));return}break;case`cancelled`:this.targetPasskeyActivation=null,this.targetEmailOtpActivation=null,this.linkedDeviceEmailOtpSendStarted=!1,this.stateValue={...n,viewModel:{...n.viewModel,linkDevice:{kind:`cancelled`,message:`The other device cancelled this linking request. Go back to try again.`}}},this.updateElement();return;case`pending`:break;default:return Tn(r)}let i=t.message?.trim();if(!i)return;let a=n.viewModel.linkDevice,o=a.kind===`email_otp_required`?a:a.kind===`ready`||a.kind===`passkey_required`||a.kind===`creating_passkey`?{...a,message:i}:{kind:`loading`,message:i};this.stateValue={...n,viewModel:{...n.viewModel,linkDevice:o}},this.updateElement()}showLinkedDeviceActivationError(e,t){this.stateValue={...e,viewModel:{...e.viewModel,linkDevice:{kind:`activation_error`,message:J(t)}}},this.updateElement()}completeLinkDeviceOpen(e,t){let n=this.stateValue;e!==this.deviceLinkGeneration||n.kind!==`link_device`||this.linkedDeviceActivationInProgress||n.viewModel.linkDevice.kind!==`loading`||(this.stateValue={...n,viewModel:{...n.viewModel,linkDevice:this.targetPasskeyActivation?{kind:`passkey_required`,message:`Create a passkey to finish linking this device`}:{kind:`ready`,qrCodeDataURL:t.qrCodeDataURL,message:`Waiting for device to scan`}}},this.updateElement())}onTargetFactorRequired(e,t){switch(t.kind){case`linked_device_target_passkey_activation_v1`:this.onTargetPasskeyActivation(e,t);return;case`linked_device_target_email_otp_activation_v1`:this.onTargetEmailOtpActivation(e,t);return;default:return En(t)}}onTargetPasskeyActivation(e,t){let n=this.stateValue;e!==this.deviceLinkGeneration||n.kind!==`link_device`||(this.targetPasskeyActivation=t,n.viewModel.linkDevice.kind===`ready`&&(this.stateValue={...n,viewModel:{...n.viewModel,linkDevice:{kind:`passkey_required`,message:`Create a passkey to finish linking this device`}}},this.updateElement()))}onTargetEmailOtpActivation(e,t){let n=this.stateValue;e!==this.deviceLinkGeneration||n.kind!==`link_device`||(this.targetEmailOtpActivation=t,this.stateValue={...n,viewModel:{...n.viewModel,linkDevice:{kind:`email_otp_required`,state:t.state,otpCode:n.viewModel.linkDevice.kind===`email_otp_required`?n.viewModel.linkDevice.otpCode:``}}},this.updateElement(),t.state.kind===`sending`&&!this.linkedDeviceEmailOtpSendStarted&&(this.linkedDeviceEmailOtpSendStarted=!0,t.sendCode().catch(this.failLinkedDeviceEmailOtp.bind(this))))}changeLinkedDeviceEmailOtpCode(e){let t=this.stateValue;if(t.kind!==`link_device`||t.viewModel.linkDevice.kind!==`email_otp_required`)return;let n=e.replace(/\D/g,``).slice(0,6),r=t.viewModel.linkDevice.otpCode,i=t.viewModel.linkDevice.state;this.stateValue={...t,viewModel:{...t.viewModel,linkDevice:{...t.viewModel.linkDevice,otpCode:n}}},this.updateElement(),n.length===6&&n!==r&&(i.kind===`code_input`||i.kind===`incorrect`)&&this.submitLinkedDeviceEmailOtpCode(n)}resendLinkedDeviceEmailOtp(){let e=this.targetEmailOtpActivation;e&&e.resendCode().catch(this.failLinkedDeviceEmailOtp.bind(this))}submitLinkedDeviceEmailOtp(){let e=this.stateValue;e.kind!==`link_device`||e.viewModel.linkDevice.kind!==`email_otp_required`||e.viewModel.linkDevice.otpCode.length!==6||this.submitLinkedDeviceEmailOtpCode(e.viewModel.linkDevice.otpCode)}submitLinkedDeviceEmailOtpCode(e){let t=this.targetEmailOtpActivation;t&&t.submitCode(e).catch(this.failLinkedDeviceEmailOtp.bind(this))}failLinkedDeviceEmailOtp(e){let t=this.stateValue;t.kind===`link_device`&&this.showLinkedDeviceActivationError(t,e)}createLinkedDevicePasskey(){let e=this.stateValue,t=this.targetPasskeyActivation;!t||e.kind!==`link_device`||e.viewModel.linkDevice.kind!==`passkey_required`||(this.targetPasskeyActivation=null,this.stateValue={...e,viewModel:{...e.viewModel,linkDevice:{kind:`creating_passkey`,message:`Follow the passkey prompt on your screen`}}},this.updateElement(),t.createPasskey().catch(this.failTargetPasskeyCreation.bind(this)))}failTargetPasskeyCreation(e){let t=this.stateValue;t.kind===`link_device`&&(this.stateValue={...t,viewModel:{...t.viewModel,linkDevice:{kind:`error`,message:J(e)}}},this.updateElement())}failLinkDeviceOpen(e,t){let n=this.stateValue;e!==this.deviceLinkGeneration||n.kind!==`link_device`||this.linkedDeviceActivationInProgress||n.viewModel.linkDevice.kind!==`loading`||(this.stateValue={...n,viewModel:{...n.viewModel,linkDevice:{kind:`error`,message:J(t)}}},this.updateElement())}closeLinkDevice(){let e=this.stateValue;e.kind===`link_device`&&(this.deviceLinkGeneration+=1,this.targetPasskeyActivation=null,this.targetEmailOtpActivation=null,this.linkedDeviceEmailOtpSendStarted=!1,this.cancelDeviceLinking().catch(()=>{}),this.stateValue=e.returnState,this.updateElement(),this.startPasskeyPreparation())}rerollRegistrationWallet(){let e=this.stateValue;e.kind!==`ready`&&e.kind!==`preparing`||e.viewModel.kind!==`passkey`||e.viewModel.mode!==`register`||!e.viewModel.passkeyNameReadOnly||!e.viewModel.showRegistrationInput||(this.invalidatePreparation(),this.stateValue={kind:`preparing`,viewModel:{...e.viewModel,passkeyName:String(Ee()),status:{kind:`idle`,interaction:`arming`}}},this.updateElement(),this.startPasskeyPreparation())}selectLoginAccount(e,t){let n=this.loginAccountOptions.find(n=>n.walletId===e&&n.authMethod===t);if(!n||n.walletId===this.selectedLoginAccount?.walletId&&n.authMethod===this.selectedLoginAccount.authMethod)return;let r=this.stateValue;if(r.kind!==`preparing`&&r.kind!==`ready`||r.viewModel.kind!==`passkey`||r.viewModel.mode!==`login`)return;let i=n.walletId!==this.selectedLoginAccount?.walletId;if(this.selectedLoginAccount=n,!i){this.updateLoginSelectionViewModel(),this.updateElement();return}this.invalidatePreparation(),this.stateValue={kind:`preparing`,viewModel:{...r.viewModel,selectedAccount:n,status:{kind:`idle`,interaction:`arming`}}},this.updateElement(),this.activateSelectedLoginMethod()}retryPreparation(){let e=this.stateValue;e.kind!==`preparing`||e.viewModel.kind!==`passkey`||e.viewModel.status.kind!==`recoverable`||(this.invalidatePreparation(),this.stateValue={kind:`preparing`,viewModel:{...e.viewModel,status:{kind:`idle`,interaction:`arming`}}},this.updateElement(),this.startPasskeyPreparation())}updateGoogleOtpCode(e){let t=this.stateValue;if(t.kind!==`google_login`||t.viewModel.submitBusy)return;let n=e.replace(/\D/g,``).slice(0,6);this.stateValue={...t,viewModel:{...t.viewModel,otpCode:n,error:``}},this.updateElement(),/^\d{6}$/.test(n)&&this.submitGoogleOtp()}resendGoogleOtp(){let e=this.stateValue;if(e.kind!==`google_login`||e.viewModel.resendBusy)return;let t=e.flow;this.stateValue={...e,viewModel:{...e.viewModel,status:{kind:`busy`,headline:`Sending a new email code`},resendBusy:!0,error:``}},this.updateElement(),pn(t.resend()).then(n=>{if(this.stateValue.kind!==`google_login`||this.stateValue.flow!==t){n.ok&&n.value.cancel().catch(()=>{});return}if(!n.ok){this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},resendBusy:!1,error:n.error.message}},this.updateElement();return}if(n.value.mode!==`login`){n.value.cancel().catch(()=>{}),this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},resendBusy:!1,error:`Google returned an unexpected registration flow.`}},this.updateElement();return}let r=n.value;this.stateValue={kind:`google_login`,flow:r,viewModel:_n({base:e.viewModel,flow:r})},this.updateElement()},e=>{this.stateValue.kind!==`google_login`||this.stateValue.flow!==t||(this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},resendBusy:!1,error:J(e)}},this.updateElement())})}submitGoogleOtp(){let e=this.stateValue;if(e.kind!==`google_login`||e.viewModel.submitBusy)return;let t=e.viewModel.otpCode;if(!/^\d{6}$/.test(t)){this.stateValue={...e,viewModel:{...e.viewModel,status:{kind:`idle`,interaction:`actionable`},error:`Enter the 6-digit code from your email.`}},this.updateElement();return}let n=e.flow;this.stateValue={...e,viewModel:{...e.viewModel,status:{kind:`busy`,headline:`Verifying your email code`},submitBusy:!0,error:``}},this.updateElement(),n.submit({otpCode:t}).then(e=>{if(!(this.stateValue.kind!==`google_login`||this.stateValue.flow!==n)){if(!e.ok){this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},submitBusy:!1,error:e.error.message}},this.updateElement();return}if(e.value.mode!==`login`){this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},submitBusy:!1,error:`Google returned an unexpected registration result.`}},this.updateElement();return}this.complete({kind:`authenticated`,authMenuSessionId:this.identity.authMenuSessionId,walletId:e.value.walletId,method:`google_email_otp`})}},e=>{this.stateValue.kind!==`google_login`||this.stateValue.flow!==n||(this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},submitBusy:!1,error:J(e)}},this.updateElement())})}rerollGoogleRegistration(){let e=this.stateValue;if(e.kind!==`google_registration`||e.viewModel.rerollBusy)return;let t=e.flow;this.stateValue={...e,viewModel:{...e.viewModel,status:{kind:`busy`,headline:`Generating another wallet name`},rerollBusy:!0,error:``}},this.updateElement(),t.rerollWalletId().then(n=>{if(this.stateValue.kind!==`google_registration`||this.stateValue.flow!==t){n.ok&&n.value.cancel().catch(()=>{});return}if(!n.ok){this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},rerollBusy:!1,error:n.error.message}},this.updateElement();return}if(n.value.mode!==`register`){n.value.cancel().catch(()=>{}),this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},rerollBusy:!1,error:`Google returned an unexpected login flow.`}},this.updateElement();return}let r=n.value;this.stateValue={kind:`google_registration`,flow:r,viewModel:vn({base:e.viewModel,flow:r})},this.updateElement()},e=>{this.stateValue.kind!==`google_registration`||this.stateValue.flow!==t||(this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},rerollBusy:!1,error:J(e)}},this.updateElement())})}completeGoogleRegistration(){let e=this.stateValue;if(e.kind!==`google_registration`||e.viewModel.submitBusy)return;let t=e.flow;this.stateValue={...e,viewModel:{...e.viewModel,status:{kind:`busy`,headline:`Creating your wallet`},submitBusy:!0,error:``}},this.updateElement(),t.completeRegistration().then(e=>{if(!(this.stateValue.kind!==`google_registration`||this.stateValue.flow!==t)){if(!e.ok){this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},submitBusy:!1,error:e.error.message}},this.updateElement();return}this.complete({kind:`registered`,authMenuSessionId:this.identity.authMenuSessionId,walletId:e.value.walletId,method:`google_email_otp`})}},e=>{this.stateValue.kind!==`google_registration`||this.stateValue.flow!==t||(this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},submitBusy:!1,error:J(e)}},this.updateElement())})}complete(e,t=`menu`){if(this.stateValue.kind===`complete`)return;let n=this.surface?this.currentViewModel():null;if(this.stateValue={kind:`complete`,outcome:e},t===`menu`&&n&&cn(e)&&this.showSuccess(n,e,`shown`)){this.invalidatePreparation(),this.successTimers=[setTimeout(this.showSuccess.bind(this,n,e,`leaving`),un),setTimeout(this.finish.bind(this,e),un+240)];return}this.finish(e)}showSuccess(e,t,n){let r=be(e,{kind:`succeeded`,..._e(t.kind),phase:n});return!r||!this.surface?!1:(this.surface.update(r),!0)}finish(e){this.cleanup();let t=this.outcomeResolver;this.outcomeResolver=null,t?.(e)}showRegistrationDelay=e=>{if(e.phase!==Oe.STEP_05_ED25519_SIGNER_PROVISION_DELAYED&&e.phase!==Oe.STEP_06_RELAY_BOOTSTRAP_DELAYED)return;let t=this.stateValue;if(t.kind!==`performing`)return;let n=t.viewModel;n.kind!==`passkey`||n.status.kind!==`busy`||(this.stateValue={...t,viewModel:{...n,status:{kind:`busy`,headline:e.message}}},this.updateElement())};performPreparedPasskey(e){this.prepared=null;let t=this.currentViewModel();if(this.stateValue={kind:`performing`,prepared:e,viewModel:t.kind===`recovery`?Y({base:t,walletId:X(t),stage:`sign_in_ready`,target:Z(t),status:{kind:`busy`,headline:ve(`login`),illustration:`passkey`,detail:`Continue with your passkey`}}):{...t,status:{kind:`busy`,headline:ve(t.mode),illustration:`passkey`,detail:`Continue with your passkey`}}},e.kind===`hosted_passkey_owner_login_prepared_v1`||e.kind===`hosted_passkey_linked_authority_login_prepared_v1`){this.updateElement(),this.finishPreparedPasskey(e);return}let n;try{n=this.startPreparedCredential(e)}catch(t){this.updateElement(),this.failPreparedPasskey(e,t);return}this.updateElement(),n.then(()=>this.finishPreparedPasskey(e),t=>this.failPreparedPasskey(e,t))}startPreparedCredential(e){return e.kind===`hosted_passkey_registration_prepared_v1`?Be(e):$t(e)}async finishPreparedPasskey(e){try{switch(e.kind){case`hosted_passkey_registration_prepared_v1`:{let t=await Ie({prepared:e});this.completeRegistrationResult(t);return}case`hosted_passkey_owner_login_prepared_v1`:case`hosted_passkey_linked_authority_login_prepared_v1`:{let t=await tn(e);this.completeLoginResult(t);return}case`hosted_passkey_account_sync_prepared_v1`:{let t=await nn(e);this.completeAccountSyncResult(t);return}default:return Dn(e)}}catch(t){this.failPreparedPasskey(e,t)}}completeRegistrationResult(e){if(!e.success||e.kind!==`wallet_registered`&&e.kind!==`ecdsa_wallet_registered_near_pending`){this.fail({kind:`error`,error:Error(e.success?`Hosted registration returned an unexpected result`:e.error)});return}let n=t(String(e.walletId));if(!n.ok){this.fail({kind:`error`,error:Error(`Hosted registration returned an invalid wallet id`)});return}this.complete({kind:`registered`,authMenuSessionId:this.identity.authMenuSessionId,walletId:n.value,method:`passkey`})}completeLoginResult(e){let n=e.result;if(!n.success){this.fail(e.cancelledByUser?{kind:`dismissed`}:{kind:`error`,error:Error(n.error)});return}let r=t(String(n.walletId));if(!r.ok){this.fail({kind:`error`,error:Error(`Hosted login returned an invalid wallet id`)});return}this.complete({kind:`authenticated`,authMenuSessionId:this.identity.authMenuSessionId,walletId:r.value,method:`passkey`})}completeAccountSyncResult(e){if(!e.success){this.fail({kind:`error`,error:Error(e.error)});return}let n=t(String(e.walletId));if(!n.ok){this.fail({kind:`error`,error:Error(`Hosted account sync returned an invalid wallet id`)});return}this.complete({kind:`account_synced`,authMenuSessionId:this.identity.authMenuSessionId,walletId:n.value})}failPreparedPasskey(e,t){if(!(this.stateValue.kind!==`performing`||this.stateValue.prepared!==e)){if(this.preparationCancellation?.signal.aborted){this.fail({kind:`dismissed`});return}if(te(t)){this.fail({kind:`dismissed`});return}this.fail({kind:`error`,error:t})}}fail(e){if(this.stateValue.kind!==`performing`)return;let t=this.stateValue.viewModel;if(W(this.stateValue.prepared),this.prepared=null,t.kind===`recovery`){let n=this.recoveryReturnState;if(!n)return;this.recoveryLoginPrepared=null,this.stateValue={kind:`recovery`,stage:`sign_in_ready`,returnState:n,viewModel:Y({base:t,walletId:X(t),stage:`sign_in_ready`,target:Z(t),status:e.kind===`dismissed`?{kind:`idle`,interaction:`actionable`}:h(J(e.error))})},this.updateElement();return}if(e.kind===`dismissed`){this.invalidatePreparation(),this.stateValue={kind:`preparing`,viewModel:{...t,status:{kind:`idle`,interaction:`arming`}}},this.updateElement(),this.startPasskeyPreparation();return}this.stateValue={kind:`preparing`,viewModel:{...t,status:h(J(e.error))}},this.updateElement()}};function wn(e){throw Error(`Unhandled auth-menu intent: ${String(e)}`)}function Tn(e){throw Error(`Unhandled link-device flow outcome: ${String(e)}`)}function En(e){throw Error(`Unhandled linked-device target-factor activation: ${String(e)}`)}function Dn(e){throw Error(`Unhandled hosted passkey preparation: ${String(e)}`)}function On(e){throw Error(`Unhandled hosted external-auth evidence: ${String(e)}`)}function kn(e,t){e.inert=!0,e.classList.add(`seams-auth-card-leaving`);let n={left:`${t.left}px`,top:`${t.top}px`,width:`${t.width}px`,height:`${t.height}px`,margin:`0px`};return e.animate([{...n,opacity:1},{...n,opacity:0}],{duration:150,easing:`ease-out`,fill:`both`})}function An(e,t){return t.walletId===e&&t.authMethod===`voiceid`}function jn(e){return`${e.walletId}:${e.authMethod}`}function Mn(e,t){let n=String(e.walletId);switch(e.authMethod){case`passkey`:return{walletId:n,authMethod:`passkey`};case`email_otp`:return{walletId:n,authMethod:`email_otp`,emailAddress:e.emailAddress??(t?.authMethod===`email_otp`?t.emailAddress:null)}}}function Nn(e,t=[]){let n=new Map;for(let t of e?.accounts??[]){if(t.authMethod!==u.passkey&&t.authMethod!==u.emailOtp)continue;let e=String(t.walletId||``).trim();if(!e)continue;let r=t.authMethod===u.passkey?{walletId:e,authMethod:`passkey`}:{walletId:e,authMethod:`email_otp`,emailAddress:null};n.set(jn(r),r)}for(let e of t){let t=String(e.walletId||``).trim();if(!t)continue;let r=`${t}:${e.authMethod}`,i=Mn(e,n.get(r));n.set(r,i)}return[...n.values()]}function Pn(e,t){let n=e?.lastUsedAccount;if(n?.authMethod===u.passkey||n?.authMethod===u.emailOtp||n?.authMethod===`voiceid`){let e=String(n.walletId||``).trim(),r=t.find(t=>t.walletId===e&&t.authMethod===n.authMethod);if(r)return r;let i=t.find(In.bind(null,e));if(i)return i}return t[0]??null}function Fn(e){let t=e?.lastUsedAccount;return!t||t.authMethod!==u.passkey&&t.authMethod!==`linked_device`?null:String(t.walletId||``).trim()||null}function In(e,t){return t.walletId===e}async function Ln(e){let t=await import(`./recovery-entrypoint-s9OoKBcl.js`),n=e();return t.createHostedRecoveryPort({context:n.getContext(),relayUrl:String(n.configs.network.relayer.url)})}var Rn=class{portPromise=null;constructor(e){this.getWalletRuntime=e}targetFor(t){if(t===`google_email_otp`)return{kind:t,googleProvider:`google`};let n=e(this.getWalletRuntime().getContext().signingEngine.getRpId());if(!n.ok)throw Error(`wallet recovery RP ID ${n.error.message}`);return{kind:t,rpId:n.value}}async prepare(e){return await(await this.port()).prepare(e)}async createPasskey(e){return await(await this.port()).createPasskey(e)}async verifyGoogle(e,t){return await(await this.port()).verifyGoogle(e,t)}async verifyEmailOtp(e,t){return await(await this.port()).verifyEmailOtp(e,t)}async finalize(e){return await(await this.port()).finalize(e)}async cancel(e){await(await this.port()).cancel(e)}port(){return this.portPromise??=Ln(this.getWalletRuntime),this.portPromise}};function zn(){try{let e=document.referrer.trim();if(e){let t=new URL(e).hostname.trim();if(t)return t}}catch{}return window.location.hostname||`Wallet`}function Bn(e){switch(e.kind){case`discoverable`:return null;case`wallet`:case`wallet_sync`:return String(e.walletId)}}function Vn(e){window.setTimeout(e,0)}function Hn(){return new Promise(Vn)}function Un(e,t){return new Promise(n=>{let r=window.setTimeout(()=>n(null),t);e.then(e=>{window.clearTimeout(r),n(e)},()=>{window.clearTimeout(r),n(null)})})}var Wn=class{sessions=new Map;constructor(e){this.deps=e}async open(e){if(!e.requestId)throw Error(`Hosted auth-menu open request requires requestId`);let t=ee(e.requestId);if(this.sessions.has(e.request.authMenuSessionId))throw Error(`Hosted auth-menu session is already active`);let n=new Cn({request:e.request,requestId:t,appearance:this.deps.getAppearance(),hostname:zn(),beginGoogleEmailOtp:async({idToken:e,authTarget:t,signal:n})=>await this.beginGoogleEmailOtp({idToken:e,authTarget:t,signal:n}),startDeviceLinking:this.startDeviceLinking,cancelDeviceLinking:this.cancelDeviceLinking,recoveryPort:new Rn(this.deps.getWalletRuntime),prepareRecoveredLogin:this.prepareRecoveredLogin.bind(this,t,e.request.authMenuSessionId),sendToParent:this.deps.send}),r=n.waitForOutcome(),i=Bn(e.request.loginTarget),a=this.readLoginAccounts();this.sessions.set(e.request.authMenuSessionId,n);try{let o=await Un(a,50);return n.state.kind===`complete`?await r:(o&&this.applyLoginAccounts(n,t,e.request.loginTarget,o),n.mount(),await Hn(),n.setRegistrationPreparation((r,i,a)=>this.prepareRegistration(e.request,t,n.identity.authMenuSessionId,r,i,a)),!o&&i?await this.bootstrapLoginAccounts(n,t,e.request.loginTarget,a):o||(n.setLoginPreparation({accountOptions:[],selectedAccount:null,prepare:(r,i)=>this.prepareLogin(t,n.identity.authMenuSessionId,i,r,null,e.request.loginTarget)}),this.bootstrapLoginAccounts(n,t,e.request.loginTarget,a)),await r)}finally{n.cleanup(),this.sessions.delete(e.request.authMenuSessionId)}}async readLoginAccounts(){let[e,t]=await Promise.all([this.deps.getWalletRuntime().auth.getRecentUnlocks().catch(()=>null),tt().catch(()=>[])]),n=[],r=this.deps.getWalletRuntime();if(r.configs.authMethods.some(Gn))try{for(let e of await Me.listWalletSelectionWalletIds())try{let t=await r.registration.getAuthMethodAvailability({walletId:e,method:`voiceid`});t.kind===`enabled`&&n.push({walletId:e,authMethod:`voiceid`,walletAuthMethodId:t.walletAuthMethodId})}catch{}}catch{}return{recentUnlocks:e,localAuthMethods:t,voiceAccounts:n}}async bootstrapLoginAccounts(e,t,n,r){this.applyLoginAccounts(e,t,n,await r)}applyLoginAccounts(e,t,n,{recentUnlocks:r,localAuthMethods:i,voiceAccounts:a}){if(e.state.kind===`complete`)return;let o=Bn(n),s=[...Nn(r,i),...a],c=o?s.filter(e=>e.walletId===o):s,l=c.length>0||!o?c:[{walletId:o,authMethod:u.passkey}];e.setVoiceLogin(this.deps.getWalletRuntime().auth.unlockWithAuthMethod),e.setLoginPreparation({accountOptions:l,selectedAccount:o?l[0]??null:Pn(r,l),prepare:(i,a)=>this.prepareLogin(t,e.identity.authMenuSessionId,a,i,r,n)}),i.length>0&&e.defaultToLoginForDetectedLocalWallet()}async prepareLogin(e,t,n,r,i,a){let o=R(this.deps.getWalletRuntime().getContext()),s=i??await this.deps.getWalletRuntime().auth.getRecentUnlocks().catch(()=>null),c=(await tt().catch(()=>[])).find(e=>e.authMethod===u.passkey),l=r||Fn(s)||c?.walletId||null;return a.kind===`wallet_sync`?await H({context:o,walletId:String(a.walletId),authMenuSessionId:t,requestId:e,cancellation:n}):l?await V({context:o,walletId:l,authMenuSessionId:t,requestId:e,cancellation:n}):await H({context:o,walletId:l,authMenuSessionId:t,requestId:e,cancellation:n})}async prepareRecoveredLogin(e,t,n,r){return await V({context:R(this.deps.getWalletRuntime().getContext()),walletId:String(n),authMenuSessionId:t,requestId:e,cancellation:r})}async beginGoogleEmailOtp(e){if(e.signal.aborted)throw Error(`Google sign-in was cancelled`);let t=await this.deps.getWalletRuntime().auth.startGoogleSignIn({idToken:e.idToken,...e.authTarget});if(!t.ok)throw Error(t.error.message);let n=t.value;if(e.signal.aborted)throw await n.cancel().catch(()=>{}),Error(`Google sign-in was cancelled`);return n}startDeviceLinking=async(e,t)=>await this.deps.getWalletRuntime().devices.startLinking({...e,options:t});cancelDeviceLinking=async()=>await this.deps.getWalletRuntime().devices.cancelLinking();async prepareRegistration(t,n,r,i,a,o){let s=this.deps.getWalletRuntime().getContext(),c=e(String(s.signingEngine.getRpId()||``));if(!c.ok)throw Error(c.error.message);let l={kind:`provided`,walletId:Te(i)},ee=Le({configs:s.configs,wallet:l,preference:t.registrationAccountInput===`sponsored_named_near_account`?{kind:`relayer_named_subaccount`}:{kind:`implicit_account`}});return await ze({context:s,wallet:l,signerSelection:Fe({configs:s.configs,accountProvisioning:ee,options:{}}),authMethod:{kind:`passkey`,rpId:c.value},authMenuSessionId:r,requestId:n,cancellation:a,options:{onEvent:o}})}cancel(e){let t=this.sessions.get(e.authMenuSessionId);return!t||t.identity.requestId!==e.requestId?!1:(t.cancel(e.reason),!0)}resolveExternalAuth(e){let t=this.sessions.get(e.authMenuSessionId);return!t||t.identity.requestId!==e.requestId?!1:t.acceptExternalAuthResolution(e)}};function Gn(e){return e.kind===`voiceid`}function Kn(e,t=new Wn({getWalletRuntime:e.getWalletRuntime,getAppearance:()=>e.getWalletRuntime().configs.ui.appearance,send:e.post})){return{PM_OPEN_AUTH_MENU:async n=>{let i=r(n.payload);if(!i)throw Error(`Hosted auth-menu open request is invalid`);let a=await t.open({request:i,requestId:n.requestId});(a.kind===`authenticated`||a.kind===`registered`||a.kind===`account_synced`)&&await e.publishCurrentSession(),!e.respondIfCancelled(n.requestId)&&w(e,n.requestId,a)},PM_CANCEL_AUTH_MENU:async n=>{let r=l(n.payload);if(!r)throw Error(`Hosted auth-menu cancellation is invalid`);let i=t.cancel(r);w(e,n.requestId,{cancelled:i})},PM_RESOLVE_AUTH_MENU_EXTERNAL_AUTH:async n=>{let r=c(n.payload);if(!r)throw Error(`Hosted auth-menu external-auth resolution is invalid`);let i=t.resolveExternalAuth(r);w(e,n.requestId,{accepted:i})}}}function qn(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=t.options&&typeof t.options==`object`&&!Array.isArray(t.options)?t.options:null,r=n?.ecdsaKeyFactsInventory&&typeof n.ecdsaKeyFactsInventory==`object`&&!Array.isArray(n.ecdsaKeyFactsInventory)?n.ecdsaKeyFactsInventory:null,i=r?.value&&typeof r.value==`object`&&!Array.isArray(r.value)?r.value:null;if(i&&(Object.prototype.hasOwnProperty.call(i,`walletSessionToken`)||Object.prototype.hasOwnProperty.call(i,`operationCredential`)))throw Error(`wallet iframe unlock requests must not carry a Wallet Session bearer`)}function Jn(e,t){let n=e.ecdsaKeyFactsInventory,{ecdsaKeyFactsInventory:r,...i}=e;if(!n)return i;if(n.mode===`webauthn`)return{...i,ecdsaKeyFactsInventory:n};let a=it(t);if(!a)throw Error(`Hosted-wallet Wallet Session is required for opaque key-facts lookup`);return{...i,ecdsaKeyFactsInventory:{mode:`wallet_session_operation_credential_v1`,operationCredential:a}}}async function Yn(e,t){try{await Xn(e,t)}catch{w(e,t.requestId,i(`unavailable`))}}async function Xn(e,t){if(e.respondIfCancelled(t.requestId))return;let n=t.type===`PM_EXTERNAL_OWNER_AUTH`?t.payload:s(t.payload);if((n.action===`associate`||n.action===`unlink`)!=(t.type===`PM_EXTERNAL_OWNER_AUTH`)){w(e,t.requestId,i(`invalid_request`));return}let r=e.getWalletRuntime().auth;switch(n.action){case`prepare`:w(e,t.requestId,await r.prepareExternalAuth(n.walletId));return;case`prepare_association`:w(e,t.requestId,await r.prepareExternalAssociation(n.walletId));return;case`associate`:{let i=await r.associateExternalAuth(n.input,$.bind(null,e,t.requestId));await e.publishCurrentSession(),w(e,t.requestId,i);return}case`unlink`:{let i=await r.removeExternalAuth(n,$.bind(null,e,t.requestId));await e.publishCurrentSession(),w(e,t.requestId,i);return}case`authenticate`:{let i=await r.authenticate(n.input,$.bind(null,e,t.requestId));i.ok&&e.getWalletRuntime().preferences.setCurrentWallet(i.value.walletId),await e.publishCurrentSession(),w(e,t.requestId,i);return}}}function Zn(e,t){return String(t?.walletId||``).trim()||String(e.preferences.getCurrentWalletId()||``).trim()||void 0}function Qn(e){console.warn(`[WalletIframeHost] Restored-session presignature prefill failed:`,e)}function $n(e,t,n,r,i){e.respondIfCancelled(n)||(w(e,n,i),r.authenticationRead===`restore`&&t.prefillRestoredWalletSession(i.state).catch(Qn))}function er(e){return{PM_EXTERNAL_AUTH:Yn.bind(null,e),PM_EXTERNAL_OWNER_AUTH:Yn.bind(null,e),...Kn(e),PM_UNLOCK_AUTH_METHOD:async t=>{let n=e.getWalletRuntime();if(!t.payload)throw Error(`Plugin unlock payload is required.`);if(e.respondIfCancelled(t.requestId))return;let r=await n.auth.unlockWithAuthMethod(t.payload,$.bind(null,e,t.requestId));e.respondIfCancelled(t.requestId)||(await e.publishCurrentSession(),w(e,t.requestId,r))},PM_UNLOCK:async t=>{let n=e.getWalletRuntime();qn(t.payload);let r=_t(t.payload),i=Jn(vt(r),n.configs.network.relayer.url);if(e.respondIfCancelled(t.requestId))return;let a=await n.auth.unlock(r.walletId,ut(e,t.requestId,i));e.respondIfCancelled(t.requestId)||(a.success||C(),await e.publishCurrentSession(),!e.respondIfCancelled(t.requestId)&&w(e,t.requestId,a))},PM_LOCK:async t=>{let n=e.getWalletRuntime();C(),await n.auth.lock(),dt(e,t.requestId)},PM_LOCK_EXACT_WALLET_SESSION:async t=>{let n=e.getWalletRuntime(),r=Ke(t.payload),i=await Qe(n,{authenticationRead:`current`,wallet:{kind:`current`}},new Ne);if(i.kind!==`active_session`&&i.kind!==`expired_session`||!Ze(i,r)){w(e,t.requestId,{kind:`stale_session`,expected:r,current:i});return}C(),await n.auth.lock(),w(e,t.requestId,{kind:`locked`,identity:r})},...ft(e),PM_GET_WALLET_SESSION:async t=>{let n=e.getWalletRuntime(),r=Zn(n,t.payload),i=await n.auth.getSession(r);w(e,t.requestId,i)},PM_GET_EXACT_WALLET_SESSION_STATE:async t=>{let n=e.getWalletRuntime(),r=t.payload;if(!r||r.authenticationRead!==`restore`&&r.authenticationRead!==`current`||!r.wallet||r.wallet.kind!==`current`&&r.wallet.kind!==`exact`||r.authenticationRead===`restore`&&r.wallet.kind!==`current`)throw Error(`Wallet iframe exact session read mode is invalid`);await e.observeSession(r,$n.bind(null,e,n,t.requestId,r))},PM_GET_RECENT_UNLOCKS:async t=>{let n=await e.getWalletRuntime().auth.getRecentUnlocks();w(e,t.requestId,n)}}}function $(e,t){if(e.isCancelled(t))throw Error(`Wallet unlock was cancelled.`)}async function tr(e){await $e(e,er)}export{tr as handleWalletHostRuntimeRequest};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./walletDbName-Ca0rCq5r.js";import"./activeWalletSession-BJ4B-nJo.js";import"./signingSessionSeal-BFOBKj-J.js";import"./capabilityKinds-DVlGMspk.js";import"./errors-BJBDbwHk.js";import"./signerDomain-D-EUTlLK.js";import"./accountIds-DGWFzEnw.js";import"./csp-stylesheet-5LU6VGKK.js";import"./registrationIntent-C1-Kyx_-.js";import"./presignatures-CkhuZ0YQ.js";import{c as e}from"./ecdsaChainTarget-BoRVQtjQ.js";import"./device-linking-_o3_fgiG.js";import"./walletAuthority-DbGaSw7D.js";import"./digestEncoding-34kXJoJr.js";import"./walletAuthMethodRecord-BW-XV4fv.js";import"./signerSlot-BlijMq8C.js";import"./indexedDB-CA4tGqkr.js";import"./keccak-DGHI1G6t.js";import"./registrationSignerPlan-CeMidFme.js";import"./walletCapabilityBindings-mPx-6_r-.js";import"./emailOtpEcdsaDerivationIdentity-Qd4pBwHv.js";import"./authorization-gVWwKwav.js";import"./wallet-recovery-DXdm68_Q.js";import"./signNear-D0rFEYP1.js";import"./appearance-token-vars-DkF3EBbF.js";import{handleWalletHostRuntimeRequestWithHandlers as t}from"./runtimeContext-RNS2E5wy.js";import{n}from"./shared-CkHhXgFB.js";function r(t){return{PM_SET_CONFIRM_BEHAVIOR:async r=>{let i=t.getWalletRuntime(),{behavior:a,walletId:o}=r.payload;o&&i.preferences.setCurrentWallet(e(o)),await i.preferences.setConfirmationBehavior(a),n(t,r.requestId,t.readPreferences())},PM_SET_CONFIRMATION_CONFIG:async r=>{let i=t.getWalletRuntime(),{walletId:a}=r.payload||{};a&&i.preferences.setCurrentWallet(e(a)),await i.preferences.setConfirmationConfig(r.payload?.config||{}),n(t,r.requestId,t.readPreferences())},PM_GET_CONFIRMATION_CONFIG:async e=>{let r=t.readPreferences();n(t,e.requestId,r)}}}async function i(e){await t(e,r)}export{i as handleWalletHostRuntimeRequest};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./walletDbName-Ca0rCq5r.js";import"./activeWalletSession-BJ4B-nJo.js";import"./signingSessionSeal-BFOBKj-J.js";import"./capabilityKinds-DVlGMspk.js";import"./errors-BJBDbwHk.js";import"./signerDomain-D-EUTlLK.js";import"./accountIds-DGWFzEnw.js";import"./csp-stylesheet-5LU6VGKK.js";import"./registrationIntent-C1-Kyx_-.js";import"./presignatures-CkhuZ0YQ.js";import"./device-linking-_o3_fgiG.js";import"./walletAuthority-DbGaSw7D.js";import"./digestEncoding-34kXJoJr.js";import"./walletAuthMethodRecord-BW-XV4fv.js";import"./signerSlot-BlijMq8C.js";import"./indexedDB-CA4tGqkr.js";import"./keccak-DGHI1G6t.js";import"./registrationSignerPlan-CeMidFme.js";import"./walletCapabilityBindings-mPx-6_r-.js";import"./emailOtpEcdsaDerivationIdentity-Qd4pBwHv.js";import"./authorization-gVWwKwav.js";import"./wallet-recovery-DXdm68_Q.js";import"./signNear-D0rFEYP1.js";import"./appearance-token-vars-DkF3EBbF.js";import{handleWalletHostRuntimeRequestWithHandlers as e}from"./runtimeContext-RNS2E5wy.js";import{n as t,r as n}from"./shared-CkHhXgFB.js";function r(e){return{PM_SYNC_ACCOUNT_FLOW:async r=>{let i=e.getWalletRuntime(),{walletId:a}=r.payload||{};if(e.respondIfCancelled(r.requestId))return;let o=await i.recovery.syncAccount({...a?{walletId:a}:{},options:{...n(e,r.requestId,{})}});e.respondIfCancelled(r.requestId)||t(e,r.requestId,o)}}}async function i(t){await e(t,r)}export{i as handleWalletHostRuntimeRequest};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e,l as t,n,r,t as i}from"./csp-stylesheet-5LU6VGKK.js";var a,o,s,c,l=0,u=[],d=t,f=d.__b,p=d.__r,m=d.diffed,h=d.__c,g=d.unmount,_=d.__;function v(e,t){d.__h&&d.__h(o,e,l||t),l=0;var n=o.__H||={__:[],__h:[]};return e>=n.__.length&&n.__.push({}),n.__[e]}function y(e){var t=o.context[e.__c],n=v(a++,9);return n.c=e,t?(n.__??(n.__=!0,t.sub(o)),t.props.value):e.__}function b(){for(var e;e=u.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(C),t.__h.some(w),t.__h=[]}catch(n){t.__h=[],d.__e(n,e.__v)}}}d.__b=function(e){o=null,f&&f(e)},d.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),_&&_(e,t)},d.__r=function(e){p&&p(e),a=0;var t=(o=e.__c).__H;t&&(s===o?(t.__h=[],o.__h=[],t.__.some(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.some(C),t.__h.some(w),t.__h=[],a=0)),s=o},d.diffed=function(e){m&&m(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(u.push(t)!==1&&c===d.requestAnimationFrame||((c=d.requestAnimationFrame)||S)(b)),t.__H.__.some(function(e){e.u&&=(e.__H=e.u,void 0)})),s=o=null},d.__c=function(e,t){t.some(function(e){try{e.__h.some(C),e.__h=e.__h.filter(function(e){return!e.__||w(e)})}catch(n){t.some(function(e){e.__h&&=[]}),t=[],d.__e(n,e.__v)}}),h&&h(e,t)},d.unmount=function(e){g&&g(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(e){try{C(e)}catch(e){t=e}}),n.__H=void 0,t&&d.__e(t,n.__v))};var x=typeof requestAnimationFrame==`function`;function S(e){var t,n=function(){clearTimeout(r),x&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);x&&(t=requestAnimationFrame(n))}function C(e){var t=o,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),o=t}function w(e){var t=o;e.__c=e.__(),o=t}const T=[[`Verify`,`確認`],[`block {value0}`,`ブロック {value0}`],[`active`,`有効`],[`provisioning`,`設定中`],[`suspended`,`一時停止中`],[`expired`,`期限切れ`],[`revoked`,`削除済み`],[`Today, 09:41`,`今日 09:41`],[`Wallet`,`ウォレット`],[`Passkey authentication`,`パスキー認証`],[`Complete the prompt on your device.`,`デバイスに表示された操作を完了してください。`],[`Google sign-in`,`Google ログイン`],[`Choose your Google account.`,`Google アカウントを選択してください。`],[`Creating passkey wallet…`,`パスキーでウォレットを作成中…`],[`Unlocking wallet…`,`ウォレットのロックを解除中…`],[`Wallet created`,`ウォレットを作成しました`],[`Your wallet is ready on this device.`,`このデバイスでウォレットを利用できます。`],[`You’re in`,`サインインしました`],[`Your wallet is unlocked.`,`ウォレットのロックを解除しました。`],[`Too many attempts. Wait a moment.`,`試行回数が多すぎます。しばらくお待ちください。`],[`Can’t reach Seams right now.`,`現在 Seams に接続できません。`],[`That took too long.`,`時間がかかりすぎたため、操作を終了しました。`],[`Something went wrong.`,`エラーが発生しました。`],[`That recovery code can’t be used. Check the code and try again.`,`このリカバリーコードは使用できません。コードを確認して、もう一度お試しください。`],[`That recovery code has already been used. Use another code.`,`このリカバリーコードは使用済みです。別のコードを使用してください。`],[`Enter a recovery code.`,`リカバリーコードを入力してください。`],[`Google sign-in was cancelled.`,`Google ログインがキャンセルされました。`],[`Google sign-in was cancelled`,`Google ログインがキャンセルされました`],[`Scan and link device`,`スキャンしてデバイスを連携`],[`Scan this code with your other device.`,`別のデバイスでこのコードをスキャンしてください。`],[`Recover wallet`,`ウォレットを復元`],[`Your Google account is ready to unlock your wallet.`,`Google アカウントでウォレットのロックを解除できます。`],[`Your wallet is ready. Unlock it with your passkey.`,`ウォレットの準備ができました。パスキーでロックを解除してください。`],[`Choose how you will sign in to this wallet from now on.`,`今後このウォレットで使用するログイン方法を選択してください。`],[`Enter a recovery code to recover your wallet.`,`リカバリーコードを入力してウォレットを復元してください。`],[`Create new passkey`,`新しいパスキーを作成`],[`Continue with Google`,`Google で続ける`],[`Connect wallet`,`ウォレットを接続`],[`Back to wallet selection`,`ウォレットの選択に戻る`],[`Choose how you’d like to get started.`,`開始方法を選択してください。`],[`Create a Seams Wallet`,`Seams ウォレットを作成`],[`Get started with a passkey`,`パスキーで開始`],[`Use your existing wallet`,`既存のウォレットを使用`],[`Connect Meteor Wallet`,`Meteor Wallet を接続`],[`Connect HOT Wallet`,`HOT Wallet を接続`],[`Connect Intear Wallet`,`Intear Wallet を接続`],[`Mainnet only`,`メインネットのみ`],[`Complete the request in your wallet.`,`ウォレットでリクエストを完了してください。`],[`Verify email code`,`メールのコードを確認`],[`Unlock with Google`,`Google でロック解除`],[`Unlock with new passkey`,`新しいパスキーでロック解除`],[`Create a passkey`,`パスキーを作成`],[`Continue`,`続ける`],[`Recovery couldn’t be completed. Try again.`,`復元を完了できませんでした。もう一度お試しください。`],[`A passkey couldn’t be created. Try again.`,`パスキーを作成できませんでした。もう一度お試しください。`],[`Passkey preparation expired. Retry to continue.`,`パスキーの準備が期限切れになりました。もう一度お試しください。`],[`Waiting for Google login…`,`Google ログインを待機中…`],[`Starting Google sign-in`,`Google ログインを開始中`],[`Waiting for Google sign-in`,`Google ログインを待機中`],[`Checking recovery code…`,`リカバリーコードを確認中…`],[`Google sign-in is unavailable. Try again.`,`Google ログインを利用できません。もう一度お試しください。`],[`Verifying email code…`,`メールのコードを確認中…`],[`Creating new passkey…`,`新しいパスキーを作成中…`],[`Finishing recovery…`,`復元を完了中…`],[`Preparing to unlock…`,`ロック解除を準備中…`],[`Your wallet was recovered. Unlock it again to continue.`,`ウォレットを復元しました。再度ロックを解除して続けてください。`],[`Generating QR code...`,`QR コードを生成中…`],[`This linking request expired. Start again to link this device.`,`この連携リクエストは期限切れです。最初からやり直してください。`],[`Go back and unlock the new linked method to finish setup.`,`前の画面に戻り、新しく連携した方法でロックを解除して設定を完了してください。`],[`The other device cancelled this linking request. Go back to try again.`,`別のデバイスが連携をキャンセルしました。前の画面に戻ってもう一度お試しください。`],[`Create a passkey to finish linking this device`,`パスキーを作成してデバイスの連携を完了してください`],[`Waiting for device to scan`,`別のデバイスでのスキャンを待機中`],[`Follow the passkey prompt on your screen`,`画面に表示されたパスキーの操作を完了してください`],[`Sending a new email code`,`新しいメールのコードを送信中`],[`Enter the 6-digit code from your email.`,`メールに記載された6桁のコードを入力してください。`],[`Verifying your email code`,`メールのコードを確認中`],[`Generating another wallet name`,`別のウォレット名を生成中`],[`Creating your wallet`,`ウォレットを作成中`],[`Continue with your passkey`,`パスキーで続ける`],[`Accounts`,`アカウント`],[`View or add accounts`,`アカウントの表示・追加`],[`Add EVM account`,`EVM アカウントを追加`],[`Adding EVM account…`,`EVM アカウントを追加中…`],[`EVM account added.`,`EVM アカウントを追加しました。`],[`Account added. Open this wallet again to finish setup.`,`アカウントを追加しました。このウォレットを開き直して設定を完了してください。`],[`Enable this app’s EVM networks with your passkey.`,`パスキーでこのアプリの EVM ネットワークを有効にします。`],[`Add a passkey in Authentication methods first.`,`先に「認証方法」でパスキーを追加してください。`],[`The account could not be added. Try again.`,`アカウントを追加できませんでした。もう一度お試しください。`],[`View accounts on block explorers`,`ブロックエクスプローラーでアカウントを表示`],[`Export keys`,`鍵をエクスポート`],[`Export wallet signing keys`,`ウォレットの署名鍵をエクスポート`],[`Recovery codes`,`リカバリーコード`],[`Back up wallet recovery codes`,`ウォレットのリカバリーコードを保存`],[`Authentication methods`,`認証方法`],[`Add or remove ways to unlock this device`,`このデバイスのロック解除方法を追加・削除`],[`Scan QR to link a device`,`QR コードをスキャンしてデバイスを連携`],[`Linked devices`,`連携済みデバイス`],[`See devices using this wallet`,`このウォレットを使用するデバイスを表示`],[`Transaction settings`,`トランザクション設定`],[`Customize confirmation behavior`,`確認操作をカスタマイズ`],[`Logged out`,`ログアウト済み`],[`Settings`,`設定`],[`Back`,`戻る`],[`Unlock this wallet with a sibling authentication method first.`,`先に別の認証方法でこのウォレットのロックを解除してください。`],[`Unlock with the sibling authentication method before removing this one.`,`この認証方法を削除する前に、別の認証方法でロックを解除してください。`],[`In use now`,`現在使用中`],[`Finishing setup`,`設定を完了中`],[`Paused`,`一時停止中`],[`Expired`,`期限切れ`],[`Removed`,`削除済み`],[`Email code`,`メールのコード`],[`your email code`,`メールのコード`],[`another sign-in method`,`別のログイン方法`],[`this passkey`,`このパスキー`],[`Synced passkey`,`同期済みパスキー`],[`Passkey`,`パスキー`],[`Try again.`,`もう一度お試しください。`],[`Loading your devices timed out. Try again.`,`デバイスの読み込みが時間切れになりました。もう一度お試しください。`],[`Wallet identity is unavailable. Try again.`,`ウォレット情報を取得できません。もう一度お試しください。`],[`Device details`,`デバイスの詳細`],[`Status`,`状態`],[`Anything listed here can unlock this wallet.`,`ここに表示されるすべてのデバイスで、このウォレットのロックを解除できます。`],[`Checking your devices…`,`デバイスを確認中…`],[`Unable to load your devices:`,`デバイスを読み込めません:`],[`Try again`,`再試行`],[`Try Again`,`再試行`],[`No other devices are using this wallet.`,`このウォレットを使用する別のデバイスはありません。`],[`Remove`,`削除`],[`Keep it`,`削除しない`],[`Yes, remove`,`削除する`],[`Removing…`,`削除中…`],[`Review appearance`,`確認画面の表示`],[`Review before signing`,`署名前に確認`],[`Show the transaction details, then click Continue to sign.`,`トランザクションの詳細を表示し、「続ける」をクリックして署名します。`],[`Passkey authentication starts as soon as the details appear.`,`詳細が表示されると同時にパスキー認証を開始します。`],[`On phones, in Safari and for Email OTP sign-in, the wallet always waits for Continue.`,`スマートフォン、Safari、メールOTPでのサインインでは、常に「続ける」のクリックを待ちます。`],[`Choose where transaction details appear before signing.`,`署名前にトランザクションの詳細を表示する場所を選択してください。`],[`none`,`表示なし`],[`modal`,`モーダル`],[`drawer`,`ドロワー`],[`Modal`,`モーダル`],[`Review the transaction in a centered dialog.`,`画面中央のダイアログでトランザクションを確認します。`],[`Drawer`,`ドロワー`],[`Review the transaction in a slide-out panel.`,`スライド式パネルでトランザクションを確認します。`],[`Unable to refresh your wallet. Try again.`,`ウォレットを更新できません。もう一度お試しください。`],[`Key export is unavailable for this wallet.`,`このウォレットでは鍵をエクスポートできません。`],[`NEAR signer provisioning is still in progress. Try again shortly.`,`NEAR 署名機能を準備中です。しばらくしてからもう一度お試しください。`],[`Ed25519 export requires an active NEAR signer.`,`Ed25519 のエクスポートには有効な NEAR 署名機能が必要です。`],[`User`,`ユーザー`],[`Key export requires an unlocked wallet.`,`鍵をエクスポートするにはウォレットのロックを解除してください。`],[`Owner key export is not available on this device yet`,`このデバイスでは、まだ所有者の鍵をエクスポートできません`],[`Wallet region`,`ウォレットのリージョン`],[`Choose where your wallet runs`,`ウォレットを実行するリージョンを選択`],[`Loading transaction settings…`,`トランザクション設定を読み込み中…`],[`Your addresses across networks.`,`各ネットワークのアドレスです。`],[`Keep a recovery code somewhere safe. Use it to restore access to your wallet.`,`リカバリーコードを安全な場所に保管してください。ウォレットへのアクセスを復元する際に使用します。`],[`Only you should have this code. Anyone with it can start recovering your wallet.`,`このコードを他人に渡さないでください。コードを持つ人は、ウォレットの復元を開始できます。`],[`Opening recovery codes…`,`リカバリーコードを開いています…`],[`View recovery codes`,`リカバリーコードを表示`],[`Scan QR code`,`QR コードをスキャン`],[`Wallet settings`,`ウォレット設定`],[`Unlock your wallet to manage your accounts, security, and devices.`,`ウォレットのロックを解除すると、アカウント、セキュリティ、デバイスを管理できます。`],[`Now`,`現在`],[`Yesterday`,`昨日`],[`Email OTP`,`メールのワンタイムコード`],[`Passkey + Email OTP`,`パスキー + メールのワンタイムコード`],[`Touch ID · This device`,`Touch ID · このデバイス`],[`Export NEAR key`,`NEAR の鍵をエクスポート`],[`Export EVM keys`,`EVM の鍵をエクスポート`],[`Your wallet requires authentication before revealing this signing key.`,`この署名鍵を表示するには認証が必要です。`],[`Key type`,`鍵の種類`],[`Protection`,`保護`],[`Authentication required`,`認証が必要`],[`Active`,`有効`],[`Manage how your devices unlock your wallet.`,`デバイスでウォレットのロックを解除する方法を管理します。`],[`Link a device`,`デバイスを連携`],[`Last used`,`最終使用`],[`Open your wallet on the other device, then scan its pairing code.`,`別のデバイスでウォレットを開き、ペアリングコードをスキャンしてください。`],[`Position the QR code inside the frame.`,`QR コードを枠内に合わせてください。`],[`Your recovery codes`,`リカバリーコード`],[`Save these codes in your password manager or another secure place.`,`パスワードマネージャーなどの安全な場所にコードを保存してください。`],[`Keep your recovery codes somewhere safe. Use a code to restore access to your wallet.`,`リカバリーコードを安全な場所に保管してください。ウォレットへのアクセスを復元する際に使用します。`],[`Keep these codes private. Anyone with a code can start recovering your wallet.`,`コードを他人に渡さないでください。コードを持つ人は、ウォレットの復元を開始できます。`],[`Reveal with passkey`,`パスキーで表示`],[`View on explorer`,`エクスプローラーで表示`],[`This wallet`,`このウォレット`],[`Security & devices`,`セキュリティとデバイス`],[`Close wallet settings`,`ウォレット設定を閉じる`],[`Wallet account`,`ウォレットアカウント`],[`Secured by`,`セキュリティ提供:`],[`Copied all codes.`,`すべてのコードをコピーしました。`],[`Unable to copy. Download the codes instead.`,`コピーできません。コードをダウンロードしてください。`],[`Downloaded all codes.`,`すべてのコードをダウンロードしました。`],[`Unable to download. Copy the codes instead.`,`ダウンロードできません。コードをコピーしてください。`],[`Copy all`,`すべてコピー`],[`Download all`,`すべてダウンロード`],[`Cancel`,`キャンセル`],[`Create your passkey`,`パスキーを作成`],[`Use Touch ID or your device passkey to create credentials for this account.`,`Touch ID またはデバイスのパスキーで、このアカウントの認証情報を作成してください。`],[`Confirm Code`,`コードを確認`],[`Confirm`,`確認`],[`Register with Passkey`,`パスキーで登録`],[`Confirm with Passkey`,`パスキーで確認`],[`Enter email code to sign`,`メールのコードを入力して署名`],[`Review transaction`,`トランザクションを確認`],[`Unknown`,`不明`],[`The operation did not complete.`,`操作を完了できませんでした。`],[`The network reverted this transaction. Network fees may still apply.`,`ネットワークがこのトランザクションを取り消しました。ネットワーク手数料が発生する場合があります。`],[`The network could not execute this transaction. Network fees may still apply.`,`ネットワークがこのトランザクションを実行できませんでした。ネットワーク手数料が発生する場合があります。`],[`Submitted to the network. The response did not include a final execution outcome.`,`ネットワークに送信しました。応答には最終的な実行結果が含まれていません。`],[`The network response did not include an execution status.`,`ネットワークの応答には実行状態が含まれていません。`],[`The transaction did not complete as expected. Check its network status before retrying.`,`トランザクションが正常に完了しませんでした。再試行前にネットワークで状態を確認してください。`],[`Signing transaction`,`トランザクションに署名中`],[`Signature ready`,`署名の準備完了`],[`Broadcasting transaction`,`トランザクションを送信中`],[`Waiting for confirmation`,`承認を待機中`],[`Transaction complete`,`トランザクション完了`],[`Transaction failed`,`トランザクション失敗`],[`Transaction reverted`,`トランザクションが取り消されました`],[`Confirmation unavailable`,`承認状態を取得できません`],[`Preparing your signed transaction.`,`署名済みトランザクションを準備中です。`],[`Signature created, ready to broadcast.`,`署名を作成しました。送信する準備ができました。`],[`Signing message`,`メッセージに署名中`],[`Message signed`,`メッセージに署名しました`],[`Signature failed`,`署名に失敗しました`],[`Preparing your message signature.`,`メッセージへの署名を準備中です。`],[`Signed off-chain. Nothing was sent to the network.`,`オフチェーンで署名しました。ネットワークには何も送信していません。`],[`Submitting your signed transaction to the network.`,`署名済みトランザクションをネットワークに送信中です。`],[`Submitted to the network. Waiting for the receipt.`,`ネットワークに送信しました。レシートを待機中です。`],[`The network confirmed your transaction.`,`ネットワークがトランザクションを承認しました。`],[`Email OTP challenge is missing.`,`メール認証のリクエストが見つかりません。`],[`Sign Delegate Action`,`委任アクションに署名`],[`Demo email code:`,`デモ用メールコード:`],[`Recovery code accepted.`,`リカバリーコードを確認しました。`],[`Wallet recovered. Unlock it to continue.`,`ウォレットを復元しました。ロックを解除して続けてください。`],[`Back to recovery code`,`リカバリーコードに戻る`],[`Back to unlock wallet`,`ウォレットのロック解除に戻る`],[`Already have a wallet?`,`すでにウォレットをお持ちですか?`],[`Unlock wallet`,`ウォレットのロックを解除`],[`Don't have a wallet?`,`ウォレットをお持ちでないですか?`],[`Create a wallet`,`ウォレットを作成`],[`Create wallet with passkey`,`パスキーでウォレットを作成`],[`Unlock with passkey`,`パスキーでロック解除`],[`Unlock with email code`,`メールのコードでロック解除`],[`Saved wallets`,`保存済みウォレット`],[`Generate another name`,`別の名前を生成`],[`Other options`,`その他の方法`],[`Link this device`,`このデバイスを連携`],[`Scan a code with your other device`,`別のデバイスでコードをスキャン`],[`Use your recovery code`,`リカバリーコードを使用`],[`Recovery code`,`リカバリーコード`],[`You can paste the whole code.`,`コード全体を貼り付けできます。`],[`This adds a new sign-in method to your wallet.`,`ウォレットに新しいログイン方法を追加します。`],[`Continue with Google, then verify the code sent to your email.`,`Google で続けてから、メールに届いたコードを確認してください。`],[`Finishing recovery with Google…`,`Google での復元を完了中…`],[`Create a new passkey to finish recovering this wallet.`,`新しいパスキーを作成して、ウォレットの復元を完了してください。`],[`Retry finalization`,`完了処理を再試行`],[`Loading`,`読み込み中`],[`Linking expired`,`連携の有効期限切れ`],[`Linking cancelled`,`連携をキャンセルしました`],[`Return to unlock wallet`,`ウォレットのロック解除に戻る`],[`QR code to link this device`,`このデバイスを連携する QR コード`],[`Preparing a one-time code for your other device.`,`別のデバイス用のワンタイムコードを準備中です。`],[`Generating QR code`,`QR コードを生成中`],[`Match your other device`,`別のデバイスと同じ方法を選択`],[`Choose the unlock method for Device 2. Email code sends a one-time code to the address you enter.`,`2台目のデバイスのロック解除方法を選択してください。メールのコードを選ぶと、入力したアドレスにワンタイムコードを送信します。`],[`Wallet unlock method`,`ウォレットのロック解除方法`],[`Email address`,`メールアドレス`],[`Email verification code`,`メール認証コード`],[`Send a new code`,`新しいコードを送信`],[`Verifying`,`確認中`],[`Verify code`,`コードを確認`],[`Send another code`,`別のコードを送信`],[`Device linked`,`デバイスを連携しました`],[`Couldn't link device`,`デバイスを連携できませんでした`],[`Unable to open the wallet. Go back and try again.`,`ウォレットを開けません。前の画面に戻ってもう一度お試しください。`],[`Opening linked wallet`,`連携したウォレットを開いています`],[`Waiting for passkey`,`パスキーを待機中`],[`Create passkey`,`パスキーを作成`],[`Unlocking…`,`ロックを解除中…`],[`Sending…`,`送信中…`],[`Resend Code`,`コードを再送信`],[`Generating…`,`生成中…`],[`Creating...`,`作成中…`],[`Sending your code`,`コードを送信中`],[`Emailing a 6-digit code`,`6桁のコードをメールで送信中`],[`Sending a new code`,`新しいコードを送信中`],[`Emailing a fresh 6-digit code`,`新しい6桁のコードをメールで送信中`],[`Checking your code`,`コードを確認中`],[`Verifying the code you entered`,`入力したコードを確認中`],[`Verify your email`,`メールを確認`],[`Enter the 6-digit code we just sent.`,`送信した6桁のコードを入力してください。`],[`That code expired`,`コードの有効期限が切れました`],[`Email code unavailable`,`メールのコードを利用できません`],[`Email verified`,`メールを確認しました`],[`Finishing linking this device`,`デバイスの連携を完了中`],[`Choose the signing key to export. Your wallet will ask you to authenticate.`,`エクスポートする署名鍵を選択してください。ウォレットで認証が必要です。`],[`Keep exported keys private. Anyone with a signing key can control its accounts.`,`エクスポートした鍵を他人に渡さないでください。署名鍵を持つ人は、そのアカウントを操作できます。`],[`Back up your wallet recovery codes`,`ウォレットのリカバリーコードを保存`],[`Choose how you unlock this device`,`このデバイスのロック解除方法を選択`],[`Scan a QR code to link a device`,`QR コードをスキャンしてデバイスを連携`],[`Light mode`,`ライトモード`],[`Dark mode`,`ダークモード`],[`Unable to lock your wallet. Try again.`,`ウォレットをロックできません。もう一度お試しください。`],[`Unlocked on this device`,`このデバイスでロック解除済み`],[`Connected with Google`,`Google で接続中`],[`Wallet access`,`ウォレットへのアクセス`],[`Connected to your wallet`,`ウォレットに接続しています`],[`Method {value0}`,`認証方法 {value0}`],[`Confirm with a wallet authentication method to make security changes.`,`セキュリティ設定を変更するには、ウォレットの認証方法で本人確認してください。`],[`All settings`,`すべての設定`],[`Locking…`,`ロック中…`],[`Lock wallet`,`ウォレットをロック`],[`Lock Wallet`,`ウォレットをロック`],[`This setting is unavailable for the current wallet or device.`,`このウォレットまたはデバイスでは、この設定を利用できません。`],[`Your wallet. Your control.`,`ウォレットの管理は、あなたの手に。`],[`I’ve saved these codes. They won’t be shown again.`,`コードを保存しました。この後は再表示できません。`],[`Done`,`完了`],[`Export NEAR Key`,`NEAR の鍵をエクスポート`],[`Ed25519 signing key`,`Ed25519 署名鍵`],[`Export EVM Keys`,`EVM の鍵をエクスポート`],[`ECDSA threshold key set`,`ECDSA しきい値署名の鍵セット`],[`Preparing export…`,`エクスポートを準備中…`],[`Export key`,`鍵をエクスポート`],[`United States`,`米国`],[`Western Europe`,`西ヨーロッパ`],[`Asia Pacific`,`アジア太平洋`],[`Oceania`,`オセアニア`],[`Your wallet is in the new region.`,`ウォレットは新しいリージョンにあります。`],[`The move needs service recovery. Your wallet data remains preserved. You can lock this wallet while recovery continues.`,`移動にはサービスの復旧が必要です。ウォレットのデータは保持されています。復旧中もウォレットをロックできます。`],[`The service will retry this stage. Closing or locking this wallet does not cancel the move.`,`サービスがこの段階を再試行します。ウォレットを閉じたりロックしたりしても、移動はキャンセルされません。`],[`Preparing your wallet`,`ウォレットを準備中`],[`Transferring wallet data`,`ウォレットのデータを転送中`],[`Checking the new region`,`新しいリージョンを確認中`],[`Activating the new region`,`新しいリージョンを有効化中`],[`The new region is active. Source cleanup continues.`,`新しいリージョンが有効です。移動元のクリーンアップを継続中です。`],[`Checking wallet placement…`,`ウォレットの配置を確認中…`],[`Unable to check wallet placement. Unlock this wallet or reconnect to try again.`,`ウォレットの配置を確認できません。ロックを解除するか、再接続してお試しください。`],[`Reconnecting to check progress. The previous request may have been accepted.`,`進行状況を確認するため再接続しています。前のリクエストは受け付けられた可能性があります。`],[`Unable to check wallet placement. Reconnect to try again.`,`ウォレットの配置を確認できません。再接続してお試しください。`],[`Reconnecting to check progress. Retry this same request to continue.`,`進行状況を確認するため再接続しています。同じリクエストを再試行してください。`],[`Reconnecting to check progress. Unlock this wallet if authentication expired.`,`進行状況を確認するため再接続しています。認証が期限切れの場合は、ウォレットのロックを解除してください。`],[`You can lock this wallet. An accepted move continues on the server.`,`このウォレットをロックできます。受け付けられた移動はサーバーで継続します。`],[`Check again`,`再確認`],[`Retry same move`,`同じ移動を再試行`],[`Your wallet is active in the new region. Another move must wait until cleanup completes.`,`ウォレットは新しいリージョンで有効です。次の移動はクリーンアップ完了後に実行できます。`],[`Signing and wallet changes are paused. Closing or locking this wallet does not cancel the move.`,`署名とウォレットの変更を一時停止しています。ウォレットを閉じたりロックしたりしても、移動はキャンセルされません。`],[`Current region:`,`現在のリージョン:`],[`Destination region`,`移動先リージョン`],[`Moving your wallet ends signing sessions on all devices. After the move, unlock your wallet again to sign.`,`ウォレットを移動すると、すべてのデバイスの署名セッションが終了します。移動後に署名するには、再度ロックを解除してください。`],[`Another move is available after`,`次の移動が可能になる日時:`],[`Move wallet`,`ウォレットを移動`],[`Passkey on this device`,`このデバイスのパスキー`],[`Email OTP on this device`,`このデバイスのメール認証`],[`Checking methods…`,`認証方法を確認中…`],[`Unavailable`,`利用不可`],[`Unlock to manage`,`ロックを解除して管理`],[`Unlock this wallet to manage authentication.`,`認証を管理するには、このウォレットのロックを解除してください。`],[`Enter the email address to verify.`,`確認するメールアドレスを入力してください。`],[`Adding a passkey…`,`パスキーを追加中…`],[`Adding Email OTP…`,`メール認証を追加中…`],[`Passkey added.`,`パスキーを追加しました。`],[`Email OTP added.`,`メール認証を追加しました。`],[`Checking authentication methods…`,`認証方法を確認中…`],[`Unable to load authentication methods:`,`認証方法を読み込めません:`],[`Active authentication methods`,`有効な認証方法`],[`Remove method`,`認証方法を削除`],[`Add another method before removing this one.`,`この方法を削除する前に、別の認証方法を追加してください。`],[`Add a method`,`認証方法を追加`],[`Adding…`,`追加中…`],[`Add passkey`,`パスキーを追加`],[`Use a passkey from this device to unlock the wallet.`,`このデバイスのパスキーでウォレットのロックを解除します。`],[`Add Email OTP`,`メール認証を追加`],[`Add`,`追加`],[`Use a one-time code from your email to unlock the wallet.`,`メールに届くワンタイムコードでウォレットのロックを解除します。`],[`Next, confirm with your passkey. Then enter the code that we email to this address.`,`次にパスキーで確認します。その後、このアドレスに届くコードを入力してください。`],[`Send code`,`コードを送信`],[`Sending code…`,`コードを送信中…`],[`Enter a valid email address.`,`有効なメールアドレスを入力してください。`],[`Codes go to the email address you verified.`,`確認済みのメールアドレスにコードを送信します。`],[`Transfer`,`送金`],[`Warnings`,`警告`],[`No operations`,`操作なし`],[`using args:`,`引数:`],[`by global contract identifier`,`グローバルコントラクト識別子を使用`],[`Stake`,`ステーキング`],[`Full Access`,`フルアクセス`],[`Function Call`,`関数呼び出し`],[`Transactions`,`トランザクション`],[`Transaction`,`トランザクション`],[`Resend code`,`コードを再送信`],[`Enter the 6-digit Email OTP code.`,`メールの6桁のワンタイムコードを入力してください。`],[`Could not send code.`,`コードを送信できませんでした。`],[`Code sent`,`コードを送信しました`],[`Creating passkey`,`パスキーを作成中`],[`Creating passkey...`,`パスキーを作成中…`],[`Loading website`,`ウェブサイトを読み込み中`],[`Loading chain details`,`チェーンの詳細を読み込み中`],[`Exported Keys`,`エクスポートした鍵`],[`Close exported keys`,`エクスポートした鍵を閉じる`],[`Near Account ID`,`NEAR アカウント ID`],[`Preparing private key…`,`秘密鍵を準備中…`],[`No keys available`,`利用可能な鍵がありません`],[`Warning: your private keys grant full control of your account and funds. Keep it in a secret place.`,`警告:秘密鍵を持つ人は、アカウントと資金を完全に操作できます。秘密鍵を他人に知られない場所に保管してください。`],[`Next Steps`,`次の手順`],[`Address`,`アドレス`],[`Public key copied`,`公開鍵をコピーしました`],[`Copy public key`,`公開鍵をコピー`],[`Public Key`,`公開鍵`],[`Private key copied`,`秘密鍵をコピーしました`],[`Copy private key`,`秘密鍵をコピー`],[`Private Key`,`秘密鍵`],[`Decrypting private key`,`秘密鍵を復号中`],[`Private key ready`,`秘密鍵の準備完了`],[`Data`,`データ`],[`Copied`,`コピーしました`],[`Copy`,`コピー`],[`Passkey registration details`,`パスキー登録の詳細`],[`Account`,`アカウント`],[`Website`,`ウェブサイト`],[`Open`,`開く`],[`Close transaction`,`トランザクションを閉じる`],[`Transaction receipt`,`トランザクションのレシート`],[`Minimize transaction`,`トランザクションを最小化`],[`To`,`宛先`],[`Estimated network fee`,`推定ネットワーク手数料`],[`Transaction progress`,`トランザクションの進行状況`],[`Signed`,`署名済み`],[`Signing`,`署名中`],[`Broadcast`,`送信済み`],[`Broadcasting`,`送信中`],[`Reverted`,`取り消し済み`],[`Confirmed`,`承認済み`],[`Confirming`,`承認中`],[`Receipt details`,`レシートの詳細`],[`From`,`送信元`],[`Continue in background`,`バックグラウンドで続ける`],[`View transaction`,`トランザクションを表示`],[`Wallet transaction`,`ウォレットのトランザクション`],[`Copy value`,`値をコピー`],[`Method:`,`メソッド:`],[`Raw data`,`未加工データ`],[`Network`,`ネットワーク`],[`Message details`,`メッセージの詳細`],[`Transaction details`,`トランザクションの詳細`],[`Signing account`,`署名アカウント`],[`Raw payload`,`未加工ペイロード`],[`Dismiss confirmation`,`確認画面を閉じる`],[`Close`,`閉じる`],[`Creating Account`,`アカウントを作成`],[`Deleting Account`,`アカウントを削除`],[`Adding Key`,`鍵を追加`],[`Deleting Key`,`鍵を削除`],[`Deploying WASM contract`,`WASM コントラクトをデプロイ`],[`Use global contract`,`グローバルコントラクトを使用`],[`Transaction to`,`トランザクションの宛先`],[`Calling`,`呼び出し`],[`Use global contract by hash`,`ハッシュでグローバルコントラクトを使用`],[`Backup needed`,`バックアップが必要`],[`Backed up`,`バックアップ済み`],[`No recovery set`,`リカバリーコード未設定`],[`Authorization required`,`認証が必要`],[`Could not load`,`読み込めませんでした`],[`Checking your codes…`,`コードを確認中…`],[`Status unavailable`,`状態を取得できません`],[`Seams wallet recovery codes`,`Seams ウォレットのリカバリーコード`],[`Save these codes somewhere private. Each code can be used once.`,`他人に知られない場所にコードを保存してください。各コードは1回のみ使用できます。`],[`Finish backup`,`バックアップを完了`],[`Back up later`,`後でバックアップ`],[`Could not load recovery-code status`,`リカバリーコードの状態を読み込めませんでした`],[`Recovery codes are no longer available on this device.`,`このデバイスでは、リカバリーコードを表示できなくなりました。`],[`Could not open recovery codes`,`リカバリーコードを開けませんでした`],[`Recovery codes downloaded.`,`リカバリーコードをダウンロードしました。`],[`Unable to download the codes. Copy them or try again.`,`コードをダウンロードできません。コピーするか、もう一度お試しください。`],[`Recovery codes copied.`,`リカバリーコードをコピーしました。`],[`Unable to copy the codes. Download them or try again.`,`コードをコピーできません。ダウンロードするか、もう一度お試しください。`],[`Close recovery codes`,`リカバリーコードを閉じる`],[`Wallet recovery codes`,`ウォレットのリカバリーコード`],[`View and save the recovery codes retained by this wallet after registration.`,`登録後にウォレットが保持するリカバリーコードを表示・保存します。`],[`Security`,`セキュリティ`],[`Opening recovery codes`,`リカバリーコードを開いています`],[`Loading recovery-code status…`,`リカバリーコードの状態を読み込み中…`],[`Retry status`,`状態を再取得`],[`Each code can recover your wallet once. Save them now, or back them up later from Recovery Codes.`,`各コードでウォレットを1回復元できます。今すぐ保存するか、後で「リカバリーコード」から保存してください。`],[`Each code can recover your wallet once. Keep them somewhere private.`,`各コードでウォレットを1回復元できます。他人に知られない場所に保管してください。`],[`Save your recovery codes`,`リカバリーコードを保存`],[`{value0} single-use codes`,`1回限りのコード:{value0}個`],[`Download codes`,`コードをダウンロード`],[`Copy codes`,`コードをコピー`],[`I saved these recovery codes somewhere safe.`,`リカバリーコードを安全な場所に保存しました。`],[`They won’t be shown again after you finish.`,`完了後は再表示できません。`],[`Back to review`,`確認画面に戻る`],[`NEAR account`,`NEAR アカウント`],[`needs funding`,`への入金が必要です`],[`Too many requests. Try again shortly.`,`リクエストが多すぎます。しばらくしてからもう一度お試しください。`],[`Device linking expired`,`デバイス連携の有効期限が切れました`],[`Device linking was cancelled`,`デバイス連携がキャンセルされました`],[`Unable to scan a QR code`,`QR コードをスキャンできません`],[`Choose an Email OTP method`,`メール認証の方法を選択`],[`Select the masked address to authorize this linked device.`,`一部を伏せたアドレスを選択して、連携するデバイスを認証してください。`],[`Available methods`,`利用可能な方法`],[`Authorizing`,`認証中`],[`Close scanner`,`スキャナーを閉じる`],[`Scan and link a device`,`スキャンしてデバイスを連携`],[`This linking request expired. Scan the QR code again to retry.`,`この連携リクエストは期限切れです。QR コードを再度スキャンしてください。`],[`Linking device`,`デバイスを連携中`],[`Continue linking on your other device.`,`別のデバイスで連携を続けてください。`],[`Cancel linking`,`連携をキャンセル`],[`Position the QR code within the frame`,`QR コードを枠内に合わせてください`],[`Device linking failed`,`デバイスの連携に失敗しました`],[`The address is normalized before the QR code is created.`,`QR コードの作成前に、アドレスの表記を統一します。`],[`Device 2 will create a new passkey for this wallet.`,`2台目のデバイスで、このウォレット用の新しいパスキーを作成します。`],[`Device Linking QR Code`,`デバイス連携用 QR コード`],[`Scan and Link Device`,`スキャンしてデバイスを連携`],[`Scan to backup your other device.`,`スキャンして別のデバイスをバックアップしてください。`],[`Confirm on this device to finish linking it to your wallet.`,`このデバイスで確認し、ウォレットとの連携を完了してください。`],[`Creating passkey…`,`パスキーを作成中…`],[`Enter the 6-digit email code.`,`メールの6桁のコードを入力してください。`],[`Confirm with an email code`,`メールのコードで確認`],[`Use the code sent to`,`コードの送信先:`],[`Sending your email code…`,`メールのコードを送信中…`],[`Sending a new email code…`,`新しいメールのコードを送信中…`],[`Email code accepted. Finishing device activation…`,`メールのコードを確認しました。デバイスの有効化を完了中…`],[`Checking code…`,`コードを確認中…`],[`Confirm code`,`コードを確認`],[`Trying again…`,`再試行中…`],[`Send code again`,`コードを再送信`],[`Choose another factor`,`別の認証方法を選択`],[`Welcome back`,`おかえりなさい`],[`Wallet name`,`ウォレット名`],[`Sign in`,`ログイン`],[`Use your passkey to continue.`,`パスキーで続けてください。`],[`Continue with passkey`,`パスキーで続ける`],[`Close authentication menu`,`認証メニューを閉じる`],[`Passkey name`,`パスキー名`],[`Use a passkey to create your wallet.`,`パスキーでウォレットを作成します。`],[`Restore access to your wallet.`,`ウォレットへのアクセスを復元します。`],[`Preparing a one-time code…`,`ワンタイムコードを準備中…`],[`Create a passkey on this device.`,`このデバイスでパスキーを作成してください。`],[`Creating your passkey…`,`パスキーを作成中…`],[`This code has expired.`,`コードの有効期限が切れました。`],[`Device linking was cancelled.`,`デバイス連携がキャンセルされました。`],[`Unable to link this device.`,`このデバイスを連携できません。`],[`Switch to light mode`,`ライトモードに切り替え`],[`Switch to dark mode`,`ダークモードに切り替え`],[`Copy recipient address {value}`,`送信先アドレス {value} をコピー`],[`Copy signing account address {value}`,`署名アカウントのアドレス {value} をコピー`],[`Copy contract address {value}`,`コントラクトアドレス {value} をコピー`],[`Use the code already sent to {value}.`,`{value} に送信済みのコードを使用してください。`],[`A 6-digit code was sent to {value}.`,`{value} に6桁のコードを送信しました。`],[`Loading...`,`読み込み中…`],[`Scanning...`,`スキャン中…`],[`with`,`金額:`],[`using`,`使用量:`],[`(recommended)`,`(推奨)`],[`. The destination is managed by your wallet and cannot be changed here.`,`。送信先はウォレットが管理しており、ここでは変更できません。`],[`? It will lose access right away.`,`を削除しますか?このデバイスは直ちにアクセスできなくなります。`],[`from this device? You will need the other active method to unlock it.`,`をこのデバイスから削除しますか?ロック解除には別の有効な認証方法が必要です。`],[`Enter all {value0} characters of the recovery code.`,`リカバリーコードを{value0}文字すべて入力してください。`],[`{value0} days ago`,`{value0}日前`],[`Device {value0}`,`デバイス {value0}`],[`Added {value0}`,`追加日:{value0}`],[`Last used {value0}`,`最終使用:{value0}`],[`your "{value0}" passkey`,`「{value0}」のパスキー`],[`You're signed in with {value0}. To remove it, sign in with {value1} first.`,`{value0}でログインしています。削除するには、先に{value1}でログインしてください。`],[`Device {value0}, {value1} (ID {value2})`,`デバイス {value0}、{value1}(ID {value2})`],[`Removing {value0}…`,`{value0}を削除中…`],[`{value0} can no longer use this wallet.`,`{value0}は、このウォレットを使用できなくなりました。`],[`Remove {value0}`,`{value0}を削除`],[`NEAR signer provisioning must be retried ({value0}).`,`NEAR 署名機能の準備を再試行してください({value0})。`],[`Recovery code {value0}`,`リカバリーコード {value0}`],[`Saved wallets. Selected wallet ID {value0}, email {value1}`,`保存済みウォレット。選択中のウォレット ID:{value0}、メール:{value1}`],[`Saved wallets. Selected {value0}`,`保存済みウォレット。選択中:{value0}`],[`Recovery codes don’t use {value0}.`,`リカバリーコードに{value0}は使用できません。`],[`WASM contract code size: {value0}`,`WASM コントラクトのコードサイズ:{value0}`],[`WASM global contract code size: {value0}`,`WASM グローバルコントラクトのコードサイズ:{value0}`],[`sending balance to: {value0}`,`残高の送信先:{value0}`],[`Calling {value0} using {value1}`,`{value0}を呼び出し、使用量:{value1}`],[`Resend in {value0}s`,`{value0}秒後に再送信`],[`Too many requests. Try again in {value0}s.`,`リクエストが多すぎます。{value0}秒後にもう一度お試しください。`],[`Copy {value0}`,`{value0}をコピー`],[`Copy NEAR account {value0}`,`NEAR アカウント {value0} をコピー`],[`Calling {value0} with {value1} using {value2}`,`{value0}を呼び出し、金額:{value1}、使用量:{value2}`],[`Transfer {value0}`,`{value0}を送金`],[`Staking {value0}`,`{value0}をステーキング`],[`Deploy global WASM contract (mode: {value0}, size {value1})`,`グローバル WASM コントラクトをデプロイ(モード:{value0}、サイズ:{value1})`],[`Use global contract by account {value0}`,`アカウント {value0} のグローバルコントラクトを使用`],[`Use global contract by hash {value0}`,`ハッシュ {value0} のグローバルコントラクトを使用`],[`Deploying WASM contract ({value0})`,`WASM コントラクトをデプロイ({value0})`],[`{value0} of {value1} codes left`,`コード残数:{value0}/{value1}`],[`Copy signer address {value0}`,`署名者のアドレス {value0} をコピー`],[`Show {value0}`,`{value0}を表示`],[`Camera {value0}...`,`カメラ {value0}…`],[`Remove {value0}? It will lose access right away.`,`{value0}を削除しますか?このデバイスは直ちにアクセスできなくなります。`],[`Remove {value0} from this device? You will need the other active method to unlock it.`,`このデバイスから{value0}を削除しますか?ロック解除には別の有効な認証方法が必要です。`],[`today`,`今日`],[`yesterday`,`昨日`],[`Message`,`メッセージ`],[`Signer`,`署名者`],[`Recipient`,`受信者`],[`Receiver`,`受信者`],[`Method`,`メソッド`],[`Value (wei)`,`金額(wei)`],[`Action Count`,`アクション数`],[`Amount (yoctoNEAR)`,`金額(yoctoNEAR)`],[`Beneficiary`,`残高の受取先`],[`By Account`,`アカウントで指定`],[`By Code Hash`,`コードハッシュで指定`],[`Code Bytes`,`コードサイズ(バイト)`],[`Deploy Mode`,`デプロイモード`],[`Deposit (yoctoNEAR)`,`付随する金額(yoctoNEAR)`],[`Gas`,`ガス`],[`Permission`,`権限`],[`Stake (yoctoNEAR)`,`ステーキング額(yoctoNEAR)`],[`Validator Key`,`バリデーターの鍵`],[`Valid After`,`有効期間の開始`],[`Valid Before`,`有効期間の終了`],[`EVM Transaction`,`EVM トランザクション`],[`NEAR Transaction`,`NEAR トランザクション`],[`Tempo Transaction`,`Tempo トランザクション`],[`Message signature`,`メッセージへの署名`],[`NEP-413 message`,`NEP-413 メッセージ`],[`Contract Call`,`コントラクト呼び出し`],[`Unsupported EVM Payload`,`未対応の EVM ペイロード`],[`Unsupported Tempo Payload`,`未対応の Tempo ペイロード`],[`Tempo Payload Missing Calls`,`Tempo ペイロードに呼び出しがありません`],[`Function Arguments`,`関数の引数`],[`Signed Delegate Payload`,`署名済み委任ペイロード`],[`Enter the 6-digit code sent to {value0}`,`{value0} に送信した6桁のコードを入力してください`],[`Transaction {value0}`,`トランザクション {value0}`],[`Transaction {value0}: to`,`トランザクション {value0} の宛先:`],[`Transaction to contract`,`コントラクトへのトランザクション`],[`Transaction {value0} to contract`,`コントラクトへのトランザクション {value0}`],[`Action {value0}: CreateAccount`,`アクション {value0}:アカウント作成`],[`Action {value0}: Transfer`,`アクション {value0}:送金`],[`Action {value0}: FunctionCall`,`アクション {value0}:関数呼び出し`],[`Action {value0}: Stake`,`アクション {value0}:ステーキング`],[`Action {value0}: AddKey`,`アクション {value0}:鍵の追加`],[`Action {value0}: DeleteKey`,`アクション {value0}:鍵の削除`],[`Action {value0}: DeployContract`,`アクション {value0}:コントラクトのデプロイ`],[`Action {value0}: DeployGlobalContract`,`アクション {value0}:グローバルコントラクトのデプロイ`],[`Action {value0}: UseGlobalContract`,`アクション {value0}:グローバルコントラクトの使用`],[`Action {value0}: DeleteAccount`,`アクション {value0}:アカウント削除`],[`Action {value0}: SignedDelegate`,`アクション {value0}:署名済み委任`],[`Action {value0}: Unsupported`,`アクション {value0}:未対応の操作`],[`mode: {value0}`,`モード:{value0}`],[`by account: {value0}`,`アカウント:{value0}`],[`by hash: {value0}`,`ハッシュ:{value0}`],[`validator: {value0}`,`バリデーター:{value0}`],[`key: {value0}`,`鍵:{value0}`],[`permissions: {value0}`,`権限:{value0}`],[`Your email`,`メールアドレス`],[`your email`,`メールアドレス`],[`Create your wallet`,`ウォレットを作成`],[`Continue with your Google account.`,`Google アカウントで続けてください。`],[`Create wallet`,`ウォレットを作成`],[`Check this recovery code and try again.`,`リカバリーコードを確認して、もう一度お試しください。`]];function E([e,t]){return[e,{en:e,ja:t}]}const D=new Map(T.map(E));function O(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function k([e,t]){let n=[],r=[],i=0;for(let t of e.matchAll(/\{(\w+)\}/g))r.push(O(e.slice(i,t.index)),`(.+?)`),n.push(t[1]),i=t.index+t[0].length;return r.push(O(e.slice(i))),{expression:RegExp(`^`+r.join(``)+`$`,`s`),parameters:n,japanese:t}}function A(e){return e[0].includes(`{`)}function j(e,t){return t[0].length-e[0].length}const M=T.filter(A).sort(j).map(k);function N(e,t,n={}){let r=D.get(t);if(!r)throw Error(`Unknown wallet message`);let i=r[e];for(let[e,t]of Object.entries(n))i=i.split(`{`+e+`}`).join(String(t));return i}function P(e,t){if(typeof t!=`string`||e===`en`)return t;let n=t.trim(),r=D.get(n);if(r)return r[e];let i=n.endsWith(`:`)?D.get(n.slice(0,-1)):void 0;if(i)return i[e]+`:`;for(let e of M){let t=e.expression.exec(n);if(!t)continue;let r=e.japanese;for(let[n,i]of e.parameters.entries())r=r.split(`{`+i+`}`).join(t[n+1]);return r}return t}const F=e(`en`);function I(){return y(F)}function L(e,t){return r(F.Provider,{value:e,children:t})}function R(e){let t=I();return e.message===void 0?P(t,e.copy):N(t,e.message,e.values)}const z=new WeakMap;function B(e){let t=z.get(e);return t||(t=i({doc:e,baseCss:``,dynamicStyleDataAttr:`data-seams-confirmation-dynamic`,nonce:n}),z.set(e,t)),t}function V(e){let t=e.trim();if(t)return/^[A-Za-z][A-Za-z0-9_-]*$/.test(t)?t:void 0}function H(e){let t=e.trim();if(!(!t||t.length>1024)&&!/[{};\n\r]/.test(t))return t}function U(e){let t={};for(let n of[`colors`,`shape`])for(let[r,i]of Object.entries(e?.theme[n]??{})){if(typeof i!=`string`)continue;let e=V(r);if(!e)continue;let a=H(i);a&&(t[`--seams-${n}-${e}`]=`${a} !important`)}return t}function W(e,t){return`:where(#${e}){${Object.entries(U(t)).map(([e,t])=>`${e}:${t};`).join(``)}}`}export{I as a,N as c,R as i,B as n,L as o,F as r,P as s,W as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{g as e,h as t}from"./digests-BIaE0DMd.js";import{n}from"./walletRegistrationSetupPrewarm-CEvGKQSg.js";import{t as r}from"./walletDbName-Ca0rCq5r.js";import{n as i,r as a,t as o}from"./configuration-BAad7ngq.js";import{a as ee,i as s,n as c,o as te,r as ne,t as l}from"./transactionReview-CGIlI835.js";import{t as u}from"./events-D6l0_ugy.js";import{i as d,n as f,t as re}from"./transactionReviewAdmission-Cf_qUZJt.js";import{D as p,O as m,S as h,T as g,d as _,f as v,h as y,m as b,o as x,t as S,u as C,x as w,y as T}from"./ownerNearOperation-DjNDxW3_.js";import{t as E}from"./walletIframeIdentity-CpgyEnKg.js";import{t as ie}from"./errors-BJBDbwHk.js";import{s as D}from"./ed25519OperationFingerprint-Dev4P6Og.js";function O(){let e=globalThis;e.global===void 0&&(e.global=globalThis),!e.process||typeof e.process!=`object`?e.process={env:{}}:(!e.process.env||typeof e.process.env!=`object`)&&(e.process.env={})}function k(){O(),window.location.origin===`null`&&(window.parent?.postMessage({type:`SERVICE_HOST_DEBUG_ORIGIN`,origin:window.location.origin,href:window.location.href},`*`),console.warn(`[WalletHost] iframe is running with opaque (null) origin. Check COEP/CORP headers and ensure navigation succeeded.`)),A(),window.parent?.postMessage({type:`SERVICE_HOST_BOOTED`},`*`),window.parent?.postMessage({type:`SERVICE_HOST_DEBUG_ORIGIN`,origin:window.location.origin,href:window.location.href},`*`);let e=new URL(import.meta.url),t=e.searchParams.get(`v`);t&&p(t);let n=new URL(`.`,e).toString(),r=n.endsWith(`/`)?n:n+`/`;g()||m(r)}function A(){let e=()=>{let e=document;e.documentElement.classList.add(`seams-transparent`),e.body?.classList.add(`seams-transparent`),e.documentElement.classList.remove(`dark`),e.body?.classList.remove(`dark`)};document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,()=>e(),{once:!0}):e(),window.addEventListener(`load`,()=>e(),{once:!0})}const j={};let M=null,N=null;function ae(e){return e.request.type===`PM_ACKNOWLEDGE_WALLET_RECOVERY_CODE_BACKUP`?e.request.payload?.authorization?.kind===`email_otp`?P(e.kind):(M??=import(`./runtime-recovery-codes-B033ake_.js`),M):P(e.kind)}function oe(){P(`auth`).catch(se)}function se(){}function P(e){let t=j[e];if(t)return t;let n=F(e);return j[e]=n,n.catch(ce.bind(null,e,n)),n}function ce(e,t){j[e]===t&&delete j[e]}async function le(){M??=import(`./runtime-recovery-codes-B033ake_.js`),N??=Promise.all([M,import(`./mountRecoveryCodeBackupSurface-C_tJNPJX.js`)]).then(()=>void 0),await N}function F(e){switch(e){case`auth`:return import(`./runtime-auth-Dsmw_dUA.js`);case`near`:return import(`./runtime-near-BiXzXXhH.js`);case`ecdsa`:return import(`./runtime-ecdsa-tempo-Zh95TuLV.js`);case`email_otp`:return import(`./runtime-email-otp-CnLuW4H1.js`);case`recovery`:return import(`./runtime-recovery-C6lS71Jp.js`);case`export`:return import(`./runtime-export-m8lvrXtw.js`);case`device_link`:return import(`./runtime-device-link-qmYvGep9.js`);case`preferences`:return import(`./runtime-preferences-DlKHDIjb.js`)}return I(e)}function I(e){throw Error(`Unhandled wallet host runtime route: ${String(e)}`)}function L(e){switch(e.type){case`PM_GET_RECENT_UNLOCKS`:case`PM_GET_CONFIRMATION_CONFIG`:return!0;case`PM_GET_EXACT_WALLET_SESSION_STATE`:{let t=e.request.payload;if(!t||typeof t!=`object`)return!1;let n=Reflect.get(t,`authenticationRead`),r=Reflect.get(t,`wallet`);return(n===`restore`||n===`current`)&&!!r&&typeof r==`object`&&Reflect.get(r,`kind`)===`current`}default:return!1}}function R(e){switch(e.type){case`PM_GET_EXACT_WALLET_SESSION_STATE`:return{revision:C(),walletId:null,state:{kind:`wallet_locked`},session:_()};case`PM_GET_RECENT_UNLOCKS`:return{walletIds:[],accountIds:[],accounts:[],lastUsedAccount:null};case`PM_GET_CONFIRMATION_CONFIG`:return{walletId:null,confirmationConfig:D,revision:0}}}let z=null;function B(){return z??=H().finally(V),z}function V(){z=null}async function H(){try{return typeof indexedDB>`u`||typeof indexedDB.databases!=`function`?!1:(await indexedDB.databases()).some(U)?await ue():!0}catch{return!1}}function U(e){return e.name===r}function ue(){return new Promise(e=>{let t=indexedDB.open(r);t.onupgradeneeded=()=>t.transaction?.abort(),t.onerror=()=>e(!1),t.onsuccess=()=>{let n=t.result;n.onversionchange=()=>n.close(),de(n).then(t=>{n.close(),e(t===0)},()=>{n.close(),e(!1)})}})}function de(e){let t=Array.from(e.objectStoreNames);return t.length===0?Promise.resolve(0):new Promise((n,r)=>{let i=e.transaction(t,`readonly`),a=0;for(let e of t){let t=i.objectStore(e).count();t.onsuccess=()=>{a+=t.result}}i.oncomplete=()=>n(a),i.onerror=()=>r(i.error),i.onabort=()=>r(i.error)})}function fe(e){throw Error(`Unhandled wallet host route: ${String(e)}`)}function W(e,t){if(e===null)throw Error(`Invalid ${t} payload`);return e}function G(e){try{return E(e)}catch{throw Error(`Hosted auth-menu request requires a non-empty requestId`)}}function pe(e){switch(e.type){case`PM_ACTIVATE_TRANSACTION_REVIEW`:case`PING`:case`PM_PREPARE_WALLET_RUNTIME`:case`PM_SET_CONFIG`:case`PM_CANCEL`:case`PM_SET_TRANSACTION_VIEW`:case`PM_TRANSACTION_BROADCAST_STARTED`:return{kind:`boot`,type:e.type,request:e};case`PM_OWNER_NEAR_TRANSACTION`:return{kind:`near`,type:e.type,request:{type:e.type,requestId:E(e.requestId),payload:S(e.payload)}};case`PM_REGISTER_WALLET`:case`PM_ADD_WALLET_SIGNER`:case`PM_ADD_PASSKEY`:case`PM_ACTIVATE_AUTH_METHOD`:case`PM_GET_AUTH_METHOD_AVAILABILITY`:case`PM_SET_AUTH_METHOD_ENABLED`:case`PM_ADD_EMAIL_OTP`:case`PM_REVOKE_AUTH_METHOD`:case`PM_GET_NEAR_PROVISIONING_STATE`:case`PM_SIGN_TX_WITH_ACTIONS`:case`PM_SIGN_AND_SEND_TX`:case`PM_SEND_TRANSACTION`:case`PM_SIGN_DELEGATE_ACTION`:case`PM_SIGN_NEP413`:return{kind:`near`,type:e.type,request:e};case`PM_OPEN_AUTH_MENU`:{let t=G(e.requestId);return{kind:`auth`,type:e.type,request:{...e,requestId:t,payload:W(h(e.payload),`hosted auth-menu open`)}}}case`PM_CANCEL_AUTH_MENU`:{let t=G(e.requestId);return{kind:`auth`,type:e.type,request:{...e,requestId:t,payload:W(T(e.payload),`hosted auth-menu cancellation`)}}}case`PM_RESOLVE_AUTH_MENU_EXTERNAL_AUTH`:{let t=G(e.requestId);return{kind:`auth`,type:e.type,request:{...e,requestId:t,payload:W(w(e.payload),`hosted auth-menu external-auth resolution`)}}}case`PM_EXTERNAL_OWNER_AUTH`:{let t=x(e.payload);if(t.action!==`associate`&&t.action!==`unlink`)throw Error(`Owner request is invalid`);return{kind:`auth`,type:e.type,request:{type:e.type,requestId:E(e.requestId),payload:t,options:e.options}}}case`PM_UNLOCK`:case`PM_UNLOCK_AUTH_METHOD`:case`PM_EXTERNAL_AUTH`: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_RECENT_UNLOCKS`:return{kind:`auth`,type:e.type,request:e};case`PM_SIGN_TEMPO`: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`:return{kind:`ecdsa`,type:e.type,request:e};case`PM_REDEEM_HOSTED_WALLET_SEAMS_SESSION`: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_ACKNOWLEDGE_WALLET_RECOVERY_CODE_BACKUP`:case`PM_ROTATE_WALLET_RECOVERY_CODES`:case`PM_REQUEST_WALLET_CUSTODY_EMAIL_OTP_CHALLENGE`:return{kind:`email_otp`,type:e.type,request:e};case`PM_SYNC_ACCOUNT_FLOW`:return{kind:`recovery`,type:e.type,request:e};case`PM_RESOLVE_EXACT_KEY_EXPORT_LANE`:case`PM_EXPORT_KEYPAIR_UI`:return{kind:`export`,type:e.type,request:e};case`PM_HAS_PASSKEY`:case`PM_LIST_LINKED_DEVICES`:case`PM_REVOKE_LINKED_DEVICE`:case`PM_SCAN_AND_LINK_DEVICE`: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{kind:`device_link`,type:e.type,request:e};case`PM_SET_CONFIRM_BEHAVIOR`:case`PM_SET_CONFIRMATION_CONFIG`:case`PM_GET_CONFIRMATION_CONFIG`:return{kind:`preferences`,type:e.type,request:e}}return fe(e)}function me(e){return e.kind!==`boot`}let K=!1;const he=[{selector:`.seams-auth-menu-surface`,cancellationKind:`native_cancel`},{selector:`.seams-confirmation-surface`,cancellationKind:`native_cancel`},{selector:`.seams-auth-method-activation-surface`,cancellationKind:`native_cancel`},{selector:`.seams-export-surface`,cancellationKind:`wallet_iframe_cancel`},{selector:`[data-seams-wallet-recovery-backup-dialog]`,cancellationKind:`native_cancel`}];function q(e,t){let n=new Set(t),r=Object.keys(e);return r.length===t.length&&r.every(e=>n.has(e))}function ge(t){return!e(t)||!q(t,[`type`,`payload`])||t.type!==`CONNECT`||!e(t.payload)||!q(t.payload,[`protocolVersion`])?null:typeof t.payload.protocolVersion==`string`?{type:`CONNECT`,payload:{protocolVersion:t.payload.protocolVersion}}:null}function _e(e){if(e===`null`)return!0;try{let t=new URL(e);return(t.protocol===`https:`||t.protocol===`http:`)&&t.origin===e}catch{return!1}}function J(e){try{e.close()}catch{}}function ve(e,t){if(t===`19.0.0`)return!1;let n={expectedProtocolVersion:y,receivedProtocolVersion:t};try{e.postMessage({type:`ERROR`,payload:{code:b,message:`Wallet iframe protocol version mismatch: expected ${y}, received ${t??`missing`}`,details:n}})}catch{}return J(e),!0}function Y(e,t){return!t||t.has(e)}function X(e,t,n,r){e.executionGeneration===t&&n(r)}function Z(e,t,n,r){if(t===`PM_SIGN_AND_SEND_TX`){e({type:`PM_RESULT`,requestId:n,payload:{ok:!0,result:v(r,`not_submitted`)}});return}e({type:`ERROR`,requestId:n,payload:{code:r instanceof l?r.code:`cancelled`,message:r.message}})}function Q(e,t,n,r){return e.executionGeneration!==t||n(r)}function $(e={}){if(K)return;K=!0,k(),(!e.supportedRuntimeRouteKinds||e.supportedRuntimeRouteKinds.has(`email_otp`))&&le().catch(()=>void 0);let r=new Set,p=new Set,m=new Set,h=!1,g={parentOrigin:null,port:null,configuration:{kind:`unconfigured`},executionGeneration:0,onConfigurationChanged:null},_=e=>{try{g.port?.postMessage(e)}catch{}},b=e=>{e&&r.add(e)},x=e=>!!e&&(r.has(e)||d(e)?.cancelled===!0),S=e=>{e&&r.delete(e)},C=e=>{e&&_({type:`ERROR`,requestId:e,payload:{code:`cancelled`,message:`Request cancelled`}})},w=e=>!e||!x(e)?!1:d(e)?.cancelled?!0:(C(e),S(e),!0),T=()=>{for(let e of he){let t=document.querySelectorAll(e.selector);for(let n of t)try{e.cancellationKind===`native_cancel`?n.dispatchEvent(new Event(`cancel`,{cancelable:!0})):n.dispatchEvent(new CustomEvent(u.TX_CONFIRMER_CANCEL,{bubbles:!0,composed:!0}))}catch{}}},E=async r=>{let u=r.data;if(!u||!t(u))return;let y=u.requestId,E=typeof y==`string`&&u.type!==`PM_CANCEL`;if(E){if(m.has(y)){_({type:`ERROR`,requestId:y,payload:{code:`request_in_progress`,message:`Request identity is already active`}});return}m.add(y)}let D=g.executionGeneration,O=X.bind(null,g,D,_),k=null,A=`admission`;try{let t=u.type.startsWith(`PM_SIGN_`)?await(await import(`./runtimeContext-RNS2E5wy.js`)).walletAuthMethodReviewPolicy(g,u):{kind:`disabled`};if(g.executionGeneration!==D||x(y))return;if(`transactionReview`in u){if(u.type!==`PM_SIGN_AND_SEND_TX`&&u.type!==`PM_SIGN_TEMPO`)throw new l(`review_invalid_input`,`Review is unsupported for this request`);let e=s(u.transactionReview);if(e.requestId!==y)throw new l(`review_invalid_input`,`Review request identity mismatch`);let n=u.payload?.options?.confirmationConfig;if(n?.uiMode!==`modal`||n.behavior!==`requireClick`)throw new l(`review_unsupported_mode`,`Review requires modal presentation and explicit approval`);k=new re(e,u.type===`PM_SIGN_TEMPO`&&u.payload?.request.senderSignatureAlgorithm!==`secp256k1`?`credential`:`mpc`,e=>O({type:`TRANSACTION_REVIEW_STATE`,requestId:y,payload:e}),Z.bind(null,O,u.type,y),t)}(u.type===`PM_LOCK`||u.type===`PM_LOCK_EXACT_WALLET_SESSION`)&&f(new l(`review_identity_changed`,`The wallet session changed`));let r=pe(u);if(!me(r))switch(r.type){case`PING`:_({type:`PONG`,requestId:y});return;case`PM_PREPARE_WALLET_RUNTIME`:Y(`auth`,e.supportedRuntimeRouteKinds)&&oe(),_({type:`PONG`,requestId:y});return;case`PM_SET_CONFIG`:{let e=o(g.configuration,i(r.request.payload)),t=a(g.configuration.kind===`configured`?g.configuration.config:null)!==a(e.config);if(g.configuration=e,t){g.executionGeneration+=1;let t=e.config;t.registration.publishableKey&&t.registration.projectEnvironmentId&&n(t.network.relayer.url);for(let e of p)_({type:`ERROR`,requestId:e,payload:{code:`wallet_configuration_changed`,message:`Wallet configuration changed during request`}});p.clear()}g.onConfigurationChanged?.(),t&&(f(new l(`review_identity_changed`,`Wallet execution configuration changed`)),T()),_({type:`PONG`,requestId:y});return}case`PM_ACTIVATE_TRANSACTION_REVIEW`:{let e=ne(r.request.payload);e&&d(e.requestId)?.activate(e);return}case`PM_CANCEL`:{let e=r.request.payload?.requestId,t=r.request.payload,n=t&&typeof t==`object`?Reflect.get(t,`transactionReview`):void 0;if(n!==void 0){let r=s(n),i=d(r.requestId);if(r.requestId===e&&i&&ee(r,i.metadata)){let e=new l(te(t&&typeof t==`object`?Reflect.get(t,`reviewErrorCode`):void 0),`Reviewed request cancelled`);try{c(i.metadata.validity)}catch(t){t instanceof Error&&(e=t)}i.cancel(e)}_({type:`PONG`,requestId:y});return}let i=e?d(e):void 0;if(i){i.cancel(new l(`cancelled`,`Request cancelled`)),_({type:`PONG`,requestId:y});return}b(e),(await import(`./deviceLinkApproval-CObsEWBa.js`).then(e=>e.i)).cancelDeviceLinkApproval(typeof e==`string`?{kind:`request`,requestId:e}:{kind:`all`}),T(),e&&C(e),_({type:`PONG`,requestId:y});return}case`PM_SET_TRANSACTION_VIEW`:{let e=r.request.payload,t=e&&typeof e==`object`?Reflect.get(e,`requestId`):null,n=e&&typeof e==`object`?Reflect.get(e,`view`):null;typeof t==`string`&&(n===`toast`||n===`closed`)&&(await import(`./transaction-activity-BXSxMp1E.js`).then(e=>e.o)).setTransactionActivityView(t,n);return}case`PM_TRANSACTION_BROADCAST_STARTED`:{let e=r.request.payload,t=e&&typeof e==`object`?Reflect.get(e,`signedTransaction`):null;typeof t==`string`&&(await import(`./transaction-activity-BXSxMp1E.js`).then(e=>e.o)).transactionBroadcastStarted(t);return}}if(!Y(r.kind,e.supportedRuntimeRouteKinds)){_({type:`ERROR`,requestId:y,payload:{code:`unsupported_request`,message:`Unsupported wallet iframe request type: ${r.type}`}});return}if(y&&p.add(y),!h&&L(r)&&await B()&&!h){if(D!==g.executionGeneration||w(y))return;O({type:`PM_RESULT`,requestId:y,payload:{ok:!0,result:R(r)}});return}h=!0;let m=await ae(r);if(D!==g.executionGeneration)return;A=`runtime`,await m.handleWalletHostRuntimeRequest({transactionReview:k,state:g,executionGeneration:D,req:r.request,post:X.bind(null,g,D,_),isCancelled:Q.bind(null,g,D,x),respondIfCancelled:Q.bind(null,g,D,w)})}catch(e){if(D!==g.executionGeneration&&u.type!==`PM_SET_CONFIG`||k?.cancelled)return;if(A===`admission`&&(u.type===`PM_SIGN_AND_SEND_TX`||u.type===`PM_SEND_TRANSACTION`)){O({type:`PM_RESULT`,requestId:y,payload:{ok:!0,result:v(e,`not_submitted`)}});return}let t=await import(`./canonicalSignerErrorCode-CX5PBpkt.js`);if(D!==g.executionGeneration&&u.type!==`PM_SET_CONFIG`)return;let n=e&&typeof e==`object`&&`code`in e?e.code:void 0,r=ie(e),i=t.resolveWalletBoundaryErrorCode({requestType:u.type,rawCode:n,message:r,defaultCode:`HOST_ERROR`}),a=t.resolveWalletBoundaryErrorMessage({requestType:u.type,rawCode:n,code:i,message:r}),o=t.resolveWalletBoundarySignerKind(u.type);_({type:`ERROR`,requestId:y,payload:{code:i,message:a,...t.isWalletSignerBoundaryRequestType(u.type)&&t.isCanonicalSignerSessionBoundaryCode(i)&&o?{signerKind:o}:{}}})}finally{E&&(m.delete(y),p.delete(y),S(y)),k?.finish()}};window.addEventListener(`message`,e=>{let t=ge(e.data),n=e.ports[0];if(!(!t||!n||g.port)){if(e.source!==window.parent||!_e(e.origin)){J(n);return}if(!ve(n,t.payload.protocolVersion)){typeof e.origin==`string`&&e.origin.length&&e.origin!==`null`&&(g.parentOrigin=e.origin),g.port=n;try{g.port.onmessage=E,g.port.start?.()}catch{}_({type:`READY`,payload:{protocolVersion:y}})}}})}try{$()}catch(e){console.error(`[WalletHost] init failed`,e)}export{$ as t};
|