@seams/wallet 0.29.0 → 0.30.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 +6 -6
- 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-Csu5L7VF.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-CTtTocyo.js → registration-C7w_51wE.js} +1 -1
- 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-BMT_gIKI.js +1 -0
- package/dist/esm/sdk/{runtime-device-link-qmYvGep9.js → runtime-device-link-DQe0aqRi.js} +1 -1
- package/dist/{public/sdk/runtime-ecdsa-tempo-Zh95TuLV.js → esm/sdk/runtime-ecdsa-tempo-DKkeMMpm.js} +1 -1
- package/dist/esm/sdk/{runtime-email-otp-CnLuW4H1.js → runtime-email-otp-CzTe7r9I.js} +1 -1
- package/dist/esm/sdk/{runtime-export-m8lvrXtw.js → runtime-export-BiyLbdCe.js} +1 -1
- package/dist/esm/sdk/{runtime-near-BiXzXXhH.js → runtime-near-Kk0n1FSf.js} +1 -1
- package/dist/esm/sdk/runtime-preferences-B-A3hddU.js +1 -0
- package/dist/esm/sdk/runtime-recovery-C9p1TU1w.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-ChuvOC0h.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_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-Csu5L7VF.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-CTtTocyo.js → registration-C7w_51wE.js} +1 -1
- 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-BMT_gIKI.js +1 -0
- package/dist/public/sdk/{runtime-device-link-qmYvGep9.js → runtime-device-link-DQe0aqRi.js} +1 -1
- package/dist/{esm/sdk/runtime-ecdsa-tempo-Zh95TuLV.js → public/sdk/runtime-ecdsa-tempo-DKkeMMpm.js} +1 -1
- package/dist/public/sdk/{runtime-email-otp-CnLuW4H1.js → runtime-email-otp-CzTe7r9I.js} +1 -1
- package/dist/public/sdk/{runtime-export-m8lvrXtw.js → runtime-export-BiyLbdCe.js} +1 -1
- package/dist/public/sdk/{runtime-near-BiXzXXhH.js → runtime-near-Kk0n1FSf.js} +1 -1
- package/dist/public/sdk/runtime-preferences-B-A3hddU.js +1 -0
- package/dist/public/sdk/runtime-recovery-C9p1TU1w.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-ChuvOC0h.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/email_otp_runtime_bg.wasm +0 -0
- package/dist/public/sdk/workers/evm_crypto_bg.wasm +0 -0
- 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_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/email_otp_runtime_bg.wasm +0 -0
- package/dist/workers/evm_crypto_bg.wasm +0 -0
- 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_bg.wasm +0 -0
- package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
- package/package.json +1 -1
- 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/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/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 +1 @@
|
|
|
1
|
-
import{E as e,M as t,N as n,O as r,k as i}from"./domainIds-t1lp25yU.js";import{g as a,t as o}from"./digests-BIaE0DMd.js";import{i as s,r as c}from"./base64-BmKR3UqU.js";import{g as l}from"./capabilityKinds-DVlGMspk.js";import{o as u,r as d}from"./canonicalPrimitives-Jd3i_Ngz.js";import{i as f,t as p}from"./registrationAuthMethodInput-C4o7yFBJ.js";function m(e){if(typeof e!=`string`)throw Error(`VoiceID public key is invalid`);let t=c(e);if(t.length!==32||s(t)!==e)throw Error(`VoiceID public key must be canonical Ed25519 bytes`);return e}function h(e,t){if(Object.keys(e).length!==t.length)return!1;for(let n of t)if(!Object.hasOwn(e,n))return!1;return!0}function g(e,t){if(typeof e!=`string`)throw Error(`${t} must be an origin`);let n,r;try{let t=new URL(e);n=t.origin,r=t.protocol}catch{throw Error(`${t} must be an origin`)}if(n!==e||r!==`http:`&&r!==`https:`)throw Error(`${t} must be a canonical HTTP origin`);return n}function _(e,t){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||Number(e)<=0||Number(t)<=Number(e)||Number(t)-Number(e)>6e4)throw Error(`VoiceID challenge has an invalid validity window`)}function v(e){return _(e.issuedAtMs,e.expiresAtMs),g(e.requestOrigin,`VoiceID requestOrigin`),g(e.audience,`VoiceID audience`),{kind:`voiceid_wallet_session_challenge_v1`,walletId:e.walletId,walletAuthMethodId:e.walletAuthMethodId,walletAuthorityId:e.walletAuthorityId,deviceKeyId:e.deviceKeyId,challengeId:e.challengeId,nonce:e.nonce,requestOrigin:e.requestOrigin,audience:e.audience,issuedAtMs:e.issuedAtMs,expiresAtMs:e.expiresAtMs}}function y(t){if(!a(t)||!h(t,[`kind`,`walletId`,`walletAuthMethodId`,`walletAuthorityId`,`deviceKeyId`,`challengeId`,`nonce`,`requestOrigin`,`audience`,`issuedAtMs`,`expiresAtMs`])||t.kind!==`voiceid_wallet_session_challenge_v1`)throw Error(`Invalid VoiceID Wallet Session challenge`);let n=i(t.walletId),o=e(t.walletAuthMethodId),s=r(t.walletAuthorityId),c=l(t.challengeId);if(!n.ok||!o.ok||!s.ok||!c.ok)throw Error(`VoiceID challenge identity is invalid`);if(typeof t.issuedAtMs!=`number`||typeof t.expiresAtMs!=`number`)throw Error(`VoiceID challenge times must be numbers`);return v({walletId:n.value,walletAuthMethodId:o.value,walletAuthorityId:s.value,deviceKeyId:d(t.deviceKeyId),challengeId:c.value,nonce:d(t.nonce),requestOrigin:g(t.requestOrigin,`VoiceID requestOrigin`),audience:g(t.audience,`VoiceID audience`),issuedAtMs:t.issuedAtMs,expiresAtMs:t.expiresAtMs})}function b(e){if(!a(e)||!h(e,[`kind`,`challenge`,`signatureB64u`])||e.kind!==`voiceid_device_assertion_v1`||typeof e.signatureB64u!=`string`)throw Error(`Invalid VoiceID device assertion`);let t=c(e.signatureB64u);if(t.length!==64||s(t)!==e.signatureB64u)throw Error(`VoiceID signature must be canonical Ed25519 bytes`);return{kind:`voiceid_device_assertion_v1`,challenge:y(e.challenge),signatureB64u:e.signatureB64u}}function x(e){let t=o(e);return new TextEncoder().encode(`seams:wallet-session:voiceid-device:v1|${t}`)}async function S(e){return u(o({version:`wallet_auth_method_revoke_operation_v1`,walletId:String(e.walletId),targetWalletAuthMethodId:String(e.targetWalletAuthMethodId),requestedAtMs:e.requestedAtMs}))}function C(e,t){if(e.version!==t.version||e.walletAuthMethodId!==t.walletAuthMethodId||e.walletId!==t.walletId||e.walletAuthorityId!==t.walletAuthorityId||e.status!==t.status||e.createdAtMs!==t.createdAtMs||e.updatedAtMs!==t.updatedAtMs)return!1;switch(e.kind){case`passkey`:if(t.kind!==`passkey`)return!1;if(e.rpId===t.rpId&&e.credentialIdB64u===t.credentialIdB64u&&e.credentialPublicKeyB64u===t.credentialPublicKeyB64u&&e.counter===t.counter)break;return!1;case`email_otp`:if(t.kind!==`email_otp`)return!1;if(e.emailHashHex===t.emailHashHex&&e.registrationAuthorityId===t.registrationAuthorityId)break;return!1;case`voiceid`:if(t.kind!==`voiceid`)return!1;if(e.deviceKeyId===t.deviceKeyId&&e.devicePublicKeyB64u===t.devicePublicKeyB64u)break;return!1;default:return w(e,`wallet auth method kind`)}switch(e.status){case`pending_local_install`:return t.status===`pending_local_install`;case`active`:return t.status===`active`&&e.activatedAtMs===t.activatedAtMs;case`revoked`:return t.status===`revoked`&&e.activatedAtMs===t.activatedAtMs&&e.revokedAtMs===t.revokedAtMs;default:return w(e,`wallet auth method lifecycle`)}}function w(e,t){throw Error(`${t} branch is unsupported: ${String(e)}`)}function T(e){if(O(e),e.kind===`passkey`)switch(e.status){case`pending_local_install`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`passkey`,status:`pending_local_install`,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u,credentialPublicKeyB64u:e.credentialPublicKeyB64u,counter:e.counter,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs};case`active`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`passkey`,status:`active`,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u,credentialPublicKeyB64u:e.credentialPublicKeyB64u,counter:e.counter,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs,activatedAtMs:e.activatedAtMs};case`revoked`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`passkey`,status:`revoked`,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u,credentialPublicKeyB64u:e.credentialPublicKeyB64u,counter:e.counter,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs,activatedAtMs:e.activatedAtMs,revokedAtMs:e.revokedAtMs}}if(e.kind===`voiceid`)switch(e.status){case`pending_local_install`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`voiceid`,status:`pending_local_install`,deviceKeyId:e.deviceKeyId,devicePublicKeyB64u:e.devicePublicKeyB64u,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs};case`active`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`voiceid`,status:`active`,deviceKeyId:e.deviceKeyId,devicePublicKeyB64u:e.devicePublicKeyB64u,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs,activatedAtMs:e.activatedAtMs};case`revoked`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`voiceid`,status:`revoked`,deviceKeyId:e.deviceKeyId,devicePublicKeyB64u:e.devicePublicKeyB64u,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs,activatedAtMs:e.activatedAtMs,revokedAtMs:e.revokedAtMs}}switch(e.status){case`pending_local_install`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`email_otp`,status:`pending_local_install`,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs};case`active`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`email_otp`,status:`active`,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs,activatedAtMs:e.activatedAtMs};case`revoked`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`email_otp`,status:`revoked`,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs,activatedAtMs:e.activatedAtMs,revokedAtMs:e.revokedAtMs}}}function E(e){let r=p(e);if(!r||!(`version`in r)||!(`kind`in r)||!(`status`in r))return null;let i=f(r.version),a=f(r.kind),o=f(r.status);if(i!==`wallet_auth_method_v2`||a!==`passkey`&&a!==`email_otp`&&a!==`voiceid`)return null;try{let e=D(r);if(a===`passkey`){if(!(`rpId`in r)||!(`credentialIdB64u`in r)||!(`credentialPublicKeyB64u`in r)||!(`counter`in r))return null;A(r,`passkey`,o);let i=n(r.rpId),a=t(r.credentialIdB64u);return!i.ok||!a.ok||typeof r.credentialPublicKeyB64u!=`string`||!r.credentialPublicKeyB64u.trim()||Object.prototype.hasOwnProperty.call(r,`emailHashHex`)||Object.prototype.hasOwnProperty.call(r,`registrationAuthorityId`)?null:j({common:e,lifecycle:k(r),rpId:i.value,credentialIdB64u:a.value,credentialPublicKeyB64u:r.credentialPublicKeyB64u,counter:L(r.counter)})}if(a===`voiceid`)return!(`deviceKeyId`in r)||!(`devicePublicKeyB64u`in r)?null:(A(r,`voiceid`,o),N({common:e,lifecycle:k(r),deviceKeyId:d(r.deviceKeyId),devicePublicKeyB64u:m(r.devicePublicKeyB64u)}));if(!(`emailHashHex`in r)||!(`registrationAuthorityId`in r))return null;A(r,`email_otp`,o);let i=f(r.emailHashHex),s=f(r.registrationAuthorityId);return!i||!s||Object.prototype.hasOwnProperty.call(r,`rpId`)||Object.prototype.hasOwnProperty.call(r,`credentialIdB64u`)||Object.prototype.hasOwnProperty.call(r,`credentialPublicKeyB64u`)||Object.prototype.hasOwnProperty.call(r,`counter`)?null:M({common:e,lifecycle:k(r),emailHashHex:i,registrationAuthorityId:s})}catch{return null}}function D(e){if(!(`walletAuthMethodId`in e)||!(`walletId`in e)||!(`walletAuthorityId`in e)||!(`createdAtMs`in e)||!(`updatedAtMs`in e))throw Error(`wallet auth method common fields are required`);return{version:`wallet_auth_method_v2`,walletAuthMethodId:P(e.walletAuthMethodId),walletId:F(e.walletId),walletAuthorityId:I(e.walletAuthorityId),createdAtMs:L(e.createdAtMs),updatedAtMs:L(e.updatedAtMs)}}function O(e){if(e.version!==`wallet_auth_method_v2`)throw Error(`wallet auth method record version is unsupported`);if(!e.walletAuthMethodId||!e.walletId||!e.walletAuthorityId)throw Error(`wallet auth method record identities are required`);if(!Number.isSafeInteger(e.createdAtMs)||e.createdAtMs<0)throw Error(`wallet auth method createdAtMs must be a non-negative safe integer`);if(!Number.isSafeInteger(e.updatedAtMs)||e.updatedAtMs<e.createdAtMs)throw Error(`wallet auth method updatedAtMs must follow createdAtMs`);switch(e.kind){case`passkey`:if(!e.rpId||!e.credentialIdB64u||!e.credentialPublicKeyB64u.trim())throw Error(`passkey wallet auth method fields are required`);if(!Number.isSafeInteger(e.counter)||e.counter<0)throw Error(`passkey authenticator counter must be non-negative`);break;case`email_otp`:if(!e.emailHashHex.trim()||!e.registrationAuthorityId.trim())throw Error(`email OTP wallet auth method fields are required`);break;case`voiceid`:d(e.deviceKeyId),m(e.devicePublicKeyB64u);break}switch(e.status){case`pending_local_install`:return;case`active`:R(e.activatedAtMs,`activatedAtMs`);return;case`revoked`:if(R(e.activatedAtMs,`activatedAtMs`),R(e.revokedAtMs,`revokedAtMs`),e.revokedAtMs<e.activatedAtMs)throw Error(`revokedAtMs cannot precede activatedAtMs`);return}}function k(e){if(!(`status`in e))throw Error(`wallet auth method status is required`);switch(e.status){case`pending_local_install`:return{status:`pending_local_install`};case`active`:if(!(`activatedAtMs`in e))throw Error(`wallet auth method activatedAtMs is required`);return{status:`active`,activatedAtMs:L(e.activatedAtMs)};case`revoked`:if(!(`activatedAtMs`in e)||!(`revokedAtMs`in e))throw Error(`wallet auth method revocation timestamps are required`);return{status:`revoked`,activatedAtMs:L(e.activatedAtMs),revokedAtMs:L(e.revokedAtMs)};default:throw Error(`wallet auth method status is unsupported`)}}function A(e,t,n){let r=[`version`,`walletAuthMethodId`,`walletId`,`walletAuthorityId`,`kind`,`status`,`createdAtMs`,`updatedAtMs`];if(t===`passkey`?r.push(`rpId`,`credentialIdB64u`,`credentialPublicKeyB64u`,`counter`):t===`email_otp`?r.push(`emailHashHex`,`registrationAuthorityId`):r.push(`deviceKeyId`,`devicePublicKeyB64u`),n===`active`&&r.push(`activatedAtMs`),n===`revoked`&&r.push(`activatedAtMs`,`revokedAtMs`),n!==`pending_local_install`&&n!==`active`&&n!==`revoked`)throw Error(`wallet auth method status is unsupported`);let i=new Set(r),a=Object.keys(e);if(a.length!==r.length)throw Error(`wallet auth method record has invalid fields`);for(let e of a)if(!i.has(e))throw Error(`wallet auth method field ${e} is invalid`)}function j(e){switch(e.lifecycle.status){case`pending_local_install`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`passkey`,status:`pending_local_install`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u,credentialPublicKeyB64u:e.credentialPublicKeyB64u,counter:e.counter};case`active`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`passkey`,status:`active`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u,credentialPublicKeyB64u:e.credentialPublicKeyB64u,counter:e.counter,activatedAtMs:e.lifecycle.activatedAtMs};case`revoked`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`passkey`,status:`revoked`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u,credentialPublicKeyB64u:e.credentialPublicKeyB64u,counter:e.counter,activatedAtMs:e.lifecycle.activatedAtMs,revokedAtMs:e.lifecycle.revokedAtMs}}}function M(e){switch(e.lifecycle.status){case`pending_local_install`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`email_otp`,status:`pending_local_install`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId};case`active`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`email_otp`,status:`active`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId,activatedAtMs:e.lifecycle.activatedAtMs};case`revoked`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`email_otp`,status:`revoked`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId,activatedAtMs:e.lifecycle.activatedAtMs,revokedAtMs:e.lifecycle.revokedAtMs}}}function N(e){switch(e.lifecycle.status){case`pending_local_install`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`voiceid`,status:`pending_local_install`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,deviceKeyId:e.deviceKeyId,devicePublicKeyB64u:e.devicePublicKeyB64u};case`active`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`voiceid`,status:`active`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,deviceKeyId:e.deviceKeyId,devicePublicKeyB64u:e.devicePublicKeyB64u,activatedAtMs:e.lifecycle.activatedAtMs};case`revoked`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`voiceid`,status:`revoked`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,deviceKeyId:e.deviceKeyId,devicePublicKeyB64u:e.devicePublicKeyB64u,activatedAtMs:e.lifecycle.activatedAtMs,revokedAtMs:e.lifecycle.revokedAtMs}}}function P(t){let n=e(t);if(!n.ok)throw Error(n.error.message);return n.value}function F(e){let t=i(e);if(!t.ok)throw Error(t.error.message);return t.value}function I(e){let t=r(e);if(!t.ok)throw Error(t.error.message);return t.value}function L(e){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0)throw Error(`value must be a non-negative safe integer`);return e}function R(e,t){if(!Number.isSafeInteger(e)||e<0)throw Error(`${t} must be a non-negative safe integer`)}export{b as a,x as c,C as i,S as n,m as o,E as r,y as s,T as t};
|
|
1
|
+
import{E as e,M as t,N as n,O as r,k as i}from"./domainIds-t1lp25yU.js";import{g as a,t as o}from"./digests-BIaE0DMd.js";import{i as s,r as c}from"./base64-BmKR3UqU.js";import{g as l}from"./capabilityKinds-Cafn86Y1.js";import{o as u,r as d}from"./canonicalPrimitives-DKeS3M40.js";import{i as f,t as p}from"./registrationAuthMethodInput-C4o7yFBJ.js";function m(e){if(typeof e!=`string`)throw Error(`VoiceID public key is invalid`);let t=c(e);if(t.length!==32||s(t)!==e)throw Error(`VoiceID public key must be canonical Ed25519 bytes`);return e}function h(e,t){if(Object.keys(e).length!==t.length)return!1;for(let n of t)if(!Object.hasOwn(e,n))return!1;return!0}function g(e,t){if(typeof e!=`string`)throw Error(`${t} must be an origin`);let n,r;try{let t=new URL(e);n=t.origin,r=t.protocol}catch{throw Error(`${t} must be an origin`)}if(n!==e||r!==`http:`&&r!==`https:`)throw Error(`${t} must be a canonical HTTP origin`);return n}function _(e,t){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||Number(e)<=0||Number(t)<=Number(e)||Number(t)-Number(e)>6e4)throw Error(`VoiceID challenge has an invalid validity window`)}function v(e){return _(e.issuedAtMs,e.expiresAtMs),g(e.requestOrigin,`VoiceID requestOrigin`),g(e.audience,`VoiceID audience`),{kind:`voiceid_wallet_session_challenge_v1`,walletId:e.walletId,walletAuthMethodId:e.walletAuthMethodId,walletAuthorityId:e.walletAuthorityId,deviceKeyId:e.deviceKeyId,challengeId:e.challengeId,nonce:e.nonce,requestOrigin:e.requestOrigin,audience:e.audience,issuedAtMs:e.issuedAtMs,expiresAtMs:e.expiresAtMs}}function y(t){if(!a(t)||!h(t,[`kind`,`walletId`,`walletAuthMethodId`,`walletAuthorityId`,`deviceKeyId`,`challengeId`,`nonce`,`requestOrigin`,`audience`,`issuedAtMs`,`expiresAtMs`])||t.kind!==`voiceid_wallet_session_challenge_v1`)throw Error(`Invalid VoiceID Wallet Session challenge`);let n=i(t.walletId),o=e(t.walletAuthMethodId),s=r(t.walletAuthorityId),c=l(t.challengeId);if(!n.ok||!o.ok||!s.ok||!c.ok)throw Error(`VoiceID challenge identity is invalid`);if(typeof t.issuedAtMs!=`number`||typeof t.expiresAtMs!=`number`)throw Error(`VoiceID challenge times must be numbers`);return v({walletId:n.value,walletAuthMethodId:o.value,walletAuthorityId:s.value,deviceKeyId:d(t.deviceKeyId),challengeId:c.value,nonce:d(t.nonce),requestOrigin:g(t.requestOrigin,`VoiceID requestOrigin`),audience:g(t.audience,`VoiceID audience`),issuedAtMs:t.issuedAtMs,expiresAtMs:t.expiresAtMs})}function b(e){if(!a(e)||!h(e,[`kind`,`challenge`,`signatureB64u`])||e.kind!==`voiceid_device_assertion_v1`||typeof e.signatureB64u!=`string`)throw Error(`Invalid VoiceID device assertion`);let t=c(e.signatureB64u);if(t.length!==64||s(t)!==e.signatureB64u)throw Error(`VoiceID signature must be canonical Ed25519 bytes`);return{kind:`voiceid_device_assertion_v1`,challenge:y(e.challenge),signatureB64u:e.signatureB64u}}function x(e){let t=o(e);return new TextEncoder().encode(`seams:wallet-session:voiceid-device:v1|${t}`)}async function S(e){return u(o({version:`wallet_auth_method_revoke_operation_v1`,walletId:String(e.walletId),targetWalletAuthMethodId:String(e.targetWalletAuthMethodId),requestedAtMs:e.requestedAtMs}))}function C(e,t){if(e.version!==t.version||e.walletAuthMethodId!==t.walletAuthMethodId||e.walletId!==t.walletId||e.walletAuthorityId!==t.walletAuthorityId||e.status!==t.status||e.createdAtMs!==t.createdAtMs||e.updatedAtMs!==t.updatedAtMs)return!1;switch(e.kind){case`passkey`:if(t.kind!==`passkey`)return!1;if(e.rpId===t.rpId&&e.credentialIdB64u===t.credentialIdB64u&&e.credentialPublicKeyB64u===t.credentialPublicKeyB64u&&e.counter===t.counter)break;return!1;case`email_otp`:if(t.kind!==`email_otp`)return!1;if(e.emailHashHex===t.emailHashHex&&e.registrationAuthorityId===t.registrationAuthorityId)break;return!1;case`voiceid`:if(t.kind!==`voiceid`)return!1;if(e.deviceKeyId===t.deviceKeyId&&e.devicePublicKeyB64u===t.devicePublicKeyB64u)break;return!1;default:return w(e,`wallet auth method kind`)}switch(e.status){case`pending_local_install`:return t.status===`pending_local_install`;case`active`:return t.status===`active`&&e.activatedAtMs===t.activatedAtMs;case`revoked`:return t.status===`revoked`&&e.activatedAtMs===t.activatedAtMs&&e.revokedAtMs===t.revokedAtMs;default:return w(e,`wallet auth method lifecycle`)}}function w(e,t){throw Error(`${t} branch is unsupported: ${String(e)}`)}function T(e){if(O(e),e.kind===`passkey`)switch(e.status){case`pending_local_install`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`passkey`,status:`pending_local_install`,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u,credentialPublicKeyB64u:e.credentialPublicKeyB64u,counter:e.counter,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs};case`active`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`passkey`,status:`active`,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u,credentialPublicKeyB64u:e.credentialPublicKeyB64u,counter:e.counter,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs,activatedAtMs:e.activatedAtMs};case`revoked`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`passkey`,status:`revoked`,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u,credentialPublicKeyB64u:e.credentialPublicKeyB64u,counter:e.counter,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs,activatedAtMs:e.activatedAtMs,revokedAtMs:e.revokedAtMs}}if(e.kind===`voiceid`)switch(e.status){case`pending_local_install`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`voiceid`,status:`pending_local_install`,deviceKeyId:e.deviceKeyId,devicePublicKeyB64u:e.devicePublicKeyB64u,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs};case`active`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`voiceid`,status:`active`,deviceKeyId:e.deviceKeyId,devicePublicKeyB64u:e.devicePublicKeyB64u,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs,activatedAtMs:e.activatedAtMs};case`revoked`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`voiceid`,status:`revoked`,deviceKeyId:e.deviceKeyId,devicePublicKeyB64u:e.devicePublicKeyB64u,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs,activatedAtMs:e.activatedAtMs,revokedAtMs:e.revokedAtMs}}switch(e.status){case`pending_local_install`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`email_otp`,status:`pending_local_install`,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs};case`active`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`email_otp`,status:`active`,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs,activatedAtMs:e.activatedAtMs};case`revoked`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.walletAuthMethodId,walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,kind:`email_otp`,status:`revoked`,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs,activatedAtMs:e.activatedAtMs,revokedAtMs:e.revokedAtMs}}}function E(e){let r=p(e);if(!r||!(`version`in r)||!(`kind`in r)||!(`status`in r))return null;let i=f(r.version),a=f(r.kind),o=f(r.status);if(i!==`wallet_auth_method_v2`||a!==`passkey`&&a!==`email_otp`&&a!==`voiceid`)return null;try{let e=D(r);if(a===`passkey`){if(!(`rpId`in r)||!(`credentialIdB64u`in r)||!(`credentialPublicKeyB64u`in r)||!(`counter`in r))return null;A(r,`passkey`,o);let i=n(r.rpId),a=t(r.credentialIdB64u);return!i.ok||!a.ok||typeof r.credentialPublicKeyB64u!=`string`||!r.credentialPublicKeyB64u.trim()||Object.prototype.hasOwnProperty.call(r,`emailHashHex`)||Object.prototype.hasOwnProperty.call(r,`registrationAuthorityId`)?null:j({common:e,lifecycle:k(r),rpId:i.value,credentialIdB64u:a.value,credentialPublicKeyB64u:r.credentialPublicKeyB64u,counter:L(r.counter)})}if(a===`voiceid`)return!(`deviceKeyId`in r)||!(`devicePublicKeyB64u`in r)?null:(A(r,`voiceid`,o),N({common:e,lifecycle:k(r),deviceKeyId:d(r.deviceKeyId),devicePublicKeyB64u:m(r.devicePublicKeyB64u)}));if(!(`emailHashHex`in r)||!(`registrationAuthorityId`in r))return null;A(r,`email_otp`,o);let i=f(r.emailHashHex),s=f(r.registrationAuthorityId);return!i||!s||Object.prototype.hasOwnProperty.call(r,`rpId`)||Object.prototype.hasOwnProperty.call(r,`credentialIdB64u`)||Object.prototype.hasOwnProperty.call(r,`credentialPublicKeyB64u`)||Object.prototype.hasOwnProperty.call(r,`counter`)?null:M({common:e,lifecycle:k(r),emailHashHex:i,registrationAuthorityId:s})}catch{return null}}function D(e){if(!(`walletAuthMethodId`in e)||!(`walletId`in e)||!(`walletAuthorityId`in e)||!(`createdAtMs`in e)||!(`updatedAtMs`in e))throw Error(`wallet auth method common fields are required`);return{version:`wallet_auth_method_v2`,walletAuthMethodId:P(e.walletAuthMethodId),walletId:F(e.walletId),walletAuthorityId:I(e.walletAuthorityId),createdAtMs:L(e.createdAtMs),updatedAtMs:L(e.updatedAtMs)}}function O(e){if(e.version!==`wallet_auth_method_v2`)throw Error(`wallet auth method record version is unsupported`);if(!e.walletAuthMethodId||!e.walletId||!e.walletAuthorityId)throw Error(`wallet auth method record identities are required`);if(!Number.isSafeInteger(e.createdAtMs)||e.createdAtMs<0)throw Error(`wallet auth method createdAtMs must be a non-negative safe integer`);if(!Number.isSafeInteger(e.updatedAtMs)||e.updatedAtMs<e.createdAtMs)throw Error(`wallet auth method updatedAtMs must follow createdAtMs`);switch(e.kind){case`passkey`:if(!e.rpId||!e.credentialIdB64u||!e.credentialPublicKeyB64u.trim())throw Error(`passkey wallet auth method fields are required`);if(!Number.isSafeInteger(e.counter)||e.counter<0)throw Error(`passkey authenticator counter must be non-negative`);break;case`email_otp`:if(!e.emailHashHex.trim()||!e.registrationAuthorityId.trim())throw Error(`email OTP wallet auth method fields are required`);break;case`voiceid`:d(e.deviceKeyId),m(e.devicePublicKeyB64u);break}switch(e.status){case`pending_local_install`:return;case`active`:R(e.activatedAtMs,`activatedAtMs`);return;case`revoked`:if(R(e.activatedAtMs,`activatedAtMs`),R(e.revokedAtMs,`revokedAtMs`),e.revokedAtMs<e.activatedAtMs)throw Error(`revokedAtMs cannot precede activatedAtMs`);return}}function k(e){if(!(`status`in e))throw Error(`wallet auth method status is required`);switch(e.status){case`pending_local_install`:return{status:`pending_local_install`};case`active`:if(!(`activatedAtMs`in e))throw Error(`wallet auth method activatedAtMs is required`);return{status:`active`,activatedAtMs:L(e.activatedAtMs)};case`revoked`:if(!(`activatedAtMs`in e)||!(`revokedAtMs`in e))throw Error(`wallet auth method revocation timestamps are required`);return{status:`revoked`,activatedAtMs:L(e.activatedAtMs),revokedAtMs:L(e.revokedAtMs)};default:throw Error(`wallet auth method status is unsupported`)}}function A(e,t,n){let r=[`version`,`walletAuthMethodId`,`walletId`,`walletAuthorityId`,`kind`,`status`,`createdAtMs`,`updatedAtMs`];if(t===`passkey`?r.push(`rpId`,`credentialIdB64u`,`credentialPublicKeyB64u`,`counter`):t===`email_otp`?r.push(`emailHashHex`,`registrationAuthorityId`):r.push(`deviceKeyId`,`devicePublicKeyB64u`),n===`active`&&r.push(`activatedAtMs`),n===`revoked`&&r.push(`activatedAtMs`,`revokedAtMs`),n!==`pending_local_install`&&n!==`active`&&n!==`revoked`)throw Error(`wallet auth method status is unsupported`);let i=new Set(r),a=Object.keys(e);if(a.length!==r.length)throw Error(`wallet auth method record has invalid fields`);for(let e of a)if(!i.has(e))throw Error(`wallet auth method field ${e} is invalid`)}function j(e){switch(e.lifecycle.status){case`pending_local_install`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`passkey`,status:`pending_local_install`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u,credentialPublicKeyB64u:e.credentialPublicKeyB64u,counter:e.counter};case`active`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`passkey`,status:`active`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u,credentialPublicKeyB64u:e.credentialPublicKeyB64u,counter:e.counter,activatedAtMs:e.lifecycle.activatedAtMs};case`revoked`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`passkey`,status:`revoked`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u,credentialPublicKeyB64u:e.credentialPublicKeyB64u,counter:e.counter,activatedAtMs:e.lifecycle.activatedAtMs,revokedAtMs:e.lifecycle.revokedAtMs}}}function M(e){switch(e.lifecycle.status){case`pending_local_install`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`email_otp`,status:`pending_local_install`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId};case`active`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`email_otp`,status:`active`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId,activatedAtMs:e.lifecycle.activatedAtMs};case`revoked`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`email_otp`,status:`revoked`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId,activatedAtMs:e.lifecycle.activatedAtMs,revokedAtMs:e.lifecycle.revokedAtMs}}}function N(e){switch(e.lifecycle.status){case`pending_local_install`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`voiceid`,status:`pending_local_install`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,deviceKeyId:e.deviceKeyId,devicePublicKeyB64u:e.devicePublicKeyB64u};case`active`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`voiceid`,status:`active`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,deviceKeyId:e.deviceKeyId,devicePublicKeyB64u:e.devicePublicKeyB64u,activatedAtMs:e.lifecycle.activatedAtMs};case`revoked`:return{version:`wallet_auth_method_v2`,walletAuthMethodId:e.common.walletAuthMethodId,walletId:e.common.walletId,walletAuthorityId:e.common.walletAuthorityId,kind:`voiceid`,status:`revoked`,createdAtMs:e.common.createdAtMs,updatedAtMs:e.common.updatedAtMs,deviceKeyId:e.deviceKeyId,devicePublicKeyB64u:e.devicePublicKeyB64u,activatedAtMs:e.lifecycle.activatedAtMs,revokedAtMs:e.lifecycle.revokedAtMs}}}function P(t){let n=e(t);if(!n.ok)throw Error(n.error.message);return n.value}function F(e){let t=i(e);if(!t.ok)throw Error(t.error.message);return t.value}function I(e){let t=r(e);if(!t.ok)throw Error(t.error.message);return t.value}function L(e){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0)throw Error(`value must be a non-negative safe integer`);return e}function R(e,t){if(!Number.isSafeInteger(e)||e<0)throw Error(`${t} must be a non-negative safe integer`)}export{b as a,x as c,C as i,S as n,m as o,E as r,y as s,T as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,O as t,d as n,g as r,i,j as a,k as o,u as s}from"./domainIds-t1lp25yU.js";import{C as c,S as l,n as u}from"./digests-BIaE0DMd.js";import{i as d,r as f}from"./base64-BmKR3UqU.js";import{B as ee,D as p,J as m,M as h,O as te,P as g}from"./activeWalletSession-BJ4B-nJo.js";import{l as ne}from"./capabilityKinds-DVlGMspk.js";import{r as _}from"./canonicalPrimitives-Jd3i_Ngz.js";import{Dt as re,F as ie,Ft as ae,Nt as v,a as y,i as oe,jt as b,n as x,o as se,r as ce,s as le,t as S}from"./digestEncoding-34kXJoJr.js";const ue=[`kind`,`keyFamilies`,`signers`],de=[`kind`,`keyFamily`,`walletId`,`walletKeyId`,`registeredPublicKeyB64u`],fe=[`kind`,`keyFamily`,`walletId`,`walletKeyId`,`thresholdPublicKey33B64u`,`evmAddress`];function C(e){if(e.length===0)throw Error(`exact administered signer manifest must contain at least one active family`);let t,n,r,i=new Set;for(let a of e){if(t!==void 0&&t!==a.walletId)throw Error(`exact administered signer manifest must use one wallet identity`);if(t=a.walletId,i.has(a.walletKeyId))throw Error(`exact administered signer manifest repeats wallet key ${a.walletKeyId}`);switch(i.add(a.walletKeyId),a.keyFamily){case`ed25519`:if(n!==void 0)throw Error(`exact administered signer manifest repeats the ed25519 family`);if(a.kind!==`exact_administered_ed25519_signer_v1`)throw Error(`exact administered signer manifest has an invalid Ed25519 signer`);n=a;break;case`ecdsa_secp256k1`:if(r!==void 0)throw Error(`exact administered signer manifest repeats the ecdsa family`);if(a.kind!==`exact_administered_ecdsa_signer_v1`)throw Error(`exact administered signer manifest has an invalid ECDSA signer`);r=a;break}}if(n!==void 0&&r!==void 0)return{kind:`exact_administered_signer_manifest_v1`,keyFamilies:[`ed25519`,`ecdsa_secp256k1`],signers:[n,r]};if(n!==void 0)return{kind:`exact_administered_signer_manifest_v1`,keyFamilies:[`ed25519`],signers:[n]};if(r!==void 0)return{kind:`exact_administered_signer_manifest_v1`,keyFamilies:[`ecdsa_secp256k1`],signers:[r]};throw Error(`exact administered signer manifest must contain a supported family`)}function pe(e){let t=ve(e,ue,`ExactAdministeredSignerManifestV1`);if(t.kind!==`exact_administered_signer_manifest_v1`)throw Error(`ExactAdministeredSignerManifestV1.kind is invalid`);let n=he(t.keyFamilies);if(!Array.isArray(t.signers))throw Error(`ExactAdministeredSignerManifestV1.signers must be an array`);let r=[];for(let e=0;e<t.signers.length;e+=1)r.push(me(t.signers[e],`signers[${e}]`));let i=C(r);if(!ge(n,i.keyFamilies))throw Error(`ExactAdministeredSignerManifestV1.keyFamilies do not match signers`);return i}function me(t,n){let r=l(t,n);switch(r.keyFamily){case`ed25519`:if(m(r,de,n),r.kind!==`exact_administered_ed25519_signer_v1`)throw Error(`${n}.kind is invalid for Ed25519`);return{kind:`exact_administered_ed25519_signer_v1`,keyFamily:`ed25519`,walletId:g(o(r.walletId),`${n}.walletId`),walletKeyId:g(e(r.walletKeyId),`${n}.walletKeyId`),registeredPublicKeyB64u:p(r.registeredPublicKeyB64u,`${n}.registeredPublicKeyB64u`)};case`ecdsa_secp256k1`:if(m(r,fe,n),r.kind!==`exact_administered_ecdsa_signer_v1`)throw Error(`${n}.kind is invalid for ECDSA`);return{kind:`exact_administered_ecdsa_signer_v1`,keyFamily:`ecdsa_secp256k1`,walletId:g(o(r.walletId),`${n}.walletId`),walletKeyId:g(e(r.walletKeyId),`${n}.walletKeyId`),thresholdPublicKey33B64u:h(r.thresholdPublicKey33B64u,`${n}.thresholdPublicKey33B64u`),evmAddress:_e(r.evmAddress,`${n}.evmAddress`)};default:throw Error(`${n}.keyFamily is unsupported`)}}function he(e){if(!Array.isArray(e)||e.length===0||e.length>2)throw Error(`ExactAdministeredSignerManifestV1.keyFamilies must be non-empty`);if(e.length===1&&e[0]===`ed25519`)return[`ed25519`];if(e.length===1&&e[0]===`ecdsa_secp256k1`)return[`ecdsa_secp256k1`];if(e.length===2&&e[0]===`ed25519`&&e[1]===`ecdsa_secp256k1`)return[`ed25519`,`ecdsa_secp256k1`];throw Error(`ExactAdministeredSignerManifestV1.keyFamilies must be canonical and duplicate-free`)}function ge(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function _e(e,t){if(typeof e!=`string`||!/^0x[0-9a-fA-F]{40}$/.test(e))throw Error(`${t} must be a 20-byte hexadecimal EVM address`);return e}function ve(e,t,n){let r=l(e,n);m(r,t,n);for(let e of t)if(!(e in r))throw Error(`${n}.${e} is required`);return r}const w=new TextEncoder;function T(e,t){if(typeof e!=`string`||e.length===0)throw Error(`${t} must be a non-empty visible ASCII string`);for(let n=0;n<e.length;n+=1){let r=e.charCodeAt(n);if(r<33||r>126)throw Error(`${t} must contain visible ASCII bytes`)}return e}function ye(e,t){if(typeof e!=`number`||!Number.isInteger(e)||e<0||e>255)throw Error(`${t} must be a byte`);return e}function be(e,t,n,r){if(!Array.isArray(e))throw Error(`${t} must be a byte array`);if(e.length<n||e.length>r)throw Error(`${t} has an invalid length`);let i=[];for(let n=0;n<e.length;n+=1)i.push(ye(e[n],`${t}[${n}]`));return i}function E(e,t,n){let r=be(e,t,32,32);if(n&&xe(r))throw Error(`${t} must be nonzero`);return r}function xe(e){for(let t of e)if(t!==0)return!1;return!0}function D(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function Se(e){let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!1),t}function Ce(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function we(e){return Ce([Se(e.length),e])}function O(e,t){return Ce([we(w.encode(e)),we(t)])}async function Te(e){let t=await globalThis.crypto.subtle.digest(`SHA-256`,e);return new Uint8Array(t)}async function Ee(e){let t=Ce([we(w.encode(`seams/router-ab/ed25519-yao/application-binding/v1`)),O(`walletId`,w.encode(e.wallet_id)),O(`nearEd25519SigningKeyId`,w.encode(e.near_ed25519_signing_key_id)),O(`signingRootId`,w.encode(e.signing_root_id)),O(`keyCreationSignerSlot`,Se(e.key_creation_signer_slot))]);return Array.from(await Te(t))}const De=`/router-ab/ed25519/yao/registration/admit`,Oe=`/router-ab/ed25519/yao/registration/execute`,ke=`/router-ab/ed25519/yao/recovery/admit`,Ae=`/router-ab/ed25519/yao/recovery/execute`,je=`/router-ab/ed25519/yao/recovery/activate`,Me=`x-seams-wallet-recovery-challenge-id`,Ne=`/router-ab/ed25519/yao/recovery/bootstrap`,Pe=`router_ab_ed25519_yao_email_otp_recovery_v1`,Fe=`/router-ab/ed25519/yao/export/admit`,Ie=`/router-ab/ed25519/yao/export/execute`,Le=64*1024;function Re(e,t){return e.operation===t.operation&&k(e.session_id,t.session_id)&&k(e.stable_key_context_binding,t.stable_key_context_binding)&&ae(e.material_activation,t.material_activation)&&e.lifecycle.lifecycle_id===t.lifecycle.lifecycle_id&&e.lifecycle.work_kind===t.lifecycle.work_kind&&e.lifecycle.primitive_request_kind===t.lifecycle.primitive_request_kind&&e.lifecycle.root_share_epoch===t.lifecycle.root_share_epoch&&e.lifecycle.account_id===t.lifecycle.account_id&&e.lifecycle.session_id===t.lifecycle.session_id&&e.lifecycle.signer_set_id===t.lifecycle.signer_set_id&&e.lifecycle.selected_server_id===t.lifecycle.selected_server_id}function k(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function ze(e,t){return e[0]===t[0]&&e[1]===t[1]}function Be(e,t){return e.lifecycle_id===t.lifecycle_id&&e.root_share_epoch===t.root_share_epoch&&e.account_id===t.account_id&&e.threshold_session_id===t.threshold_session_id&&e.signer_set_id===t.signer_set_id&&e.signing_worker_id===t.signing_worker_id&&ae(e.material_activation,t.material_activation)}function Ve(e,t){return e.wallet_id===t.wallet_id&&e.near_ed25519_signing_key_id===t.near_ed25519_signing_key_id&&e.signing_root_id===t.signing_root_id&&e.key_creation_signer_slot===t.key_creation_signer_slot}function He(e,t){return Be(e.scope,t.scope)&&Ve(e.application_binding,t.application_binding)&&ze(e.participant_ids,t.participant_ids)}const Ue=`registration_prepare`,We=`registration`,Ge=`recovery`,Ke=`recovery`,A=`key_export`,qe=`export`;function j(e,t,n){let r=new Set(n);for(let n of Object.keys(e))if(!r.has(n))throw Error(`${t}.${n} is not a supported field`);for(let r of n)if(!Object.hasOwn(e,r))throw Error(`${t}.${r} is required`)}function Je(e,t){if(!Number.isInteger(e)||typeof e!=`number`||e<=0||e>4294967295)throw Error(`${t} must be a positive u32`);return e}function Ye(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<=0)throw Error(`${t} must be a positive safe integer`);return e}function Xe(e,t){switch(e){case`registration`:case`recovery`:case`refresh`:case`export`:case`lane_provisioning`:case`lane_refresh`:return e;default:throw Error(`${t} is invalid`)}}function Ze(e,t){switch(e){case`deriver_a`:case`deriver_b`:return e;default:throw Error(`${t} is invalid`)}}function Qe(e,t){switch(e){case`activation`:case`export`:return e;default:throw Error(`${t} is invalid`)}}function $e(e,t){switch(e){case`activation_client`:case`activation_signing_worker`:case`export_client`:return e;default:throw Error(`${t} is invalid`)}}function et(e,t){switch(e){case`registration_prepare`:case`key_export`:case`recovery`:case`server_share_refresh`:return e;default:throw Error(`${t} is invalid`)}}function tt(e,t){switch(e){case`registration`:case`recovery`:case`export`:case`refresh`:return e;default:throw Error(`${t} is invalid`)}}function M(e){let t=l(e,`application_binding`);return j(t,`application_binding`,[`wallet_id`,`near_ed25519_signing_key_id`,`signing_root_id`,`key_creation_signer_slot`]),{wallet_id:T(t.wallet_id,`application_binding.wallet_id`),near_ed25519_signing_key_id:T(t.near_ed25519_signing_key_id,`application_binding.near_ed25519_signing_key_id`),signing_root_id:T(t.signing_root_id,`application_binding.signing_root_id`),key_creation_signer_slot:Je(t.key_creation_signer_slot,`application_binding.key_creation_signer_slot`)}}function nt(e){let t=l(e,`scope`);j(t,`scope`,[`lifecycle_id`,`root_share_epoch`,`account_id`,`threshold_session_id`,`signer_set_id`,`signing_worker_id`,`material_activation`]);let n=T(t.account_id,`scope.account_id`),r=T(t.signing_worker_id,`scope.signing_worker_id`),i=b(t.material_activation);if(i.material_owner!==n||i.signing_worker!==r)throw Error(`scope.material_activation does not match the lifecycle owner and worker`);return{lifecycle_id:T(t.lifecycle_id,`scope.lifecycle_id`),root_share_epoch:T(t.root_share_epoch,`scope.root_share_epoch`),account_id:n,threshold_session_id:T(t.threshold_session_id,`scope.threshold_session_id`),signer_set_id:T(t.signer_set_id,`scope.signer_set_id`),signing_worker_id:r,material_activation:i}}function rt(e){if(!Array.isArray(e)||e.length!==2)throw Error(`participant_ids must contain exactly two values`);let t=Je(e[0],`participant_ids[0]`),n=Je(e[1],`participant_ids[1]`);if(t>65535||n>65535||t>=n)throw Error(`participant_ids must be distinct, nonzero, ascending u16 values`);return[t,n]}function it(e){return rt(e)}function at(e){let t=l(e,`binding.lifecycle`);j(t,`binding.lifecycle`,[`lifecycle_id`,`work_kind`,`primitive_request_kind`,`root_share_epoch`,`account_id`,`session_id`,`signer_set_id`,`selected_server_id`]);let n={lifecycle_id:T(t.lifecycle_id,`binding.lifecycle.lifecycle_id`),work_kind:et(t.work_kind,`binding.lifecycle.work_kind`),primitive_request_kind:tt(t.primitive_request_kind,`binding.lifecycle.primitive_request_kind`),root_share_epoch:T(t.root_share_epoch,`binding.lifecycle.root_share_epoch`),account_id:T(t.account_id,`binding.lifecycle.account_id`),session_id:T(t.session_id,`binding.lifecycle.session_id`),signer_set_id:T(t.signer_set_id,`binding.lifecycle.signer_set_id`),selected_server_id:T(t.selected_server_id,`binding.lifecycle.selected_server_id`)};if(n.work_kind===Ue&&n.primitive_request_kind!==We||n.work_kind===Ge&&n.primitive_request_kind!==Ke||n.work_kind===A&&n.primitive_request_kind!==qe)throw Error(`binding.lifecycle primitive request kind does not match its work kind`);return n}function ot(e){let t=l(e,`binding`);j(t,`binding`,[`lifecycle`,`operation`,`session_id`,`stable_key_context_binding`,`material_activation`]);let n={lifecycle:at(t.lifecycle),operation:Xe(t.operation,`binding.operation`),session_id:E(t.session_id,`binding.session_id`,!0),stable_key_context_binding:E(t.stable_key_context_binding,`binding.stable_key_context_binding`,!1),material_activation:b(t.material_activation)};if(n.operation===`registration`&&n.lifecycle.work_kind!==Ue||n.operation===`recovery`&&n.lifecycle.work_kind!==Ge||n.operation===`export`&&n.lifecycle.work_kind!==A)throw Error(`binding operation does not match its lifecycle work kind`);if(n.material_activation.material_owner!==n.lifecycle.account_id||n.material_activation.signing_worker!==n.lifecycle.selected_server_id)throw Error(`binding material activation does not match its lifecycle owner and worker`);return n}function st(e){return ot(e)}function ct(e){let t=ot(e);if(t.operation!==`export`||t.lifecycle.work_kind!==A||t.lifecycle.primitive_request_kind!==qe)throw Error(`export binding requires the exact export lifecycle`);return{lifecycle:{lifecycle_id:t.lifecycle.lifecycle_id,work_kind:A,primitive_request_kind:qe,root_share_epoch:t.lifecycle.root_share_epoch,account_id:t.lifecycle.account_id,session_id:t.lifecycle.session_id,signer_set_id:t.lifecycle.signer_set_id,selected_server_id:t.lifecycle.selected_server_id},operation:`export`,session_id:t.session_id,stable_key_context_binding:t.stable_key_context_binding,material_activation:t.material_activation}}function lt(e){let t=l(e,`export binding`);return j(t,`export binding`,[`ceremony`,`registered_public_key`,`state_epoch`,`runtime_policy_binding`,`authorization_digest`]),{ceremony:ct(t.ceremony),registered_public_key:E(t.registered_public_key,`export binding.registered_public_key`,!0),state_epoch:Ye(t.state_epoch,`export binding.state_epoch`),runtime_policy_binding:E(t.runtime_policy_binding,`export binding.runtime_policy_binding`,!0),authorization_digest:E(t.authorization_digest,`export binding.authorization_digest`,!0)}}function N(e){let t=ot(e);switch(t.operation){case`registration`:if(t.lifecycle.work_kind!==Ue||t.lifecycle.primitive_request_kind!==We)throw Error(`activation binding has the wrong registration lifecycle kind`);return{lifecycle:{lifecycle_id:t.lifecycle.lifecycle_id,work_kind:Ue,primitive_request_kind:We,root_share_epoch:t.lifecycle.root_share_epoch,account_id:t.lifecycle.account_id,session_id:t.lifecycle.session_id,signer_set_id:t.lifecycle.signer_set_id,selected_server_id:t.lifecycle.selected_server_id},operation:`registration`,session_id:t.session_id,stable_key_context_binding:t.stable_key_context_binding,material_activation:t.material_activation};case`recovery`:if(t.lifecycle.work_kind!==Ge||t.lifecycle.primitive_request_kind!==Ke)throw Error(`activation binding has the wrong recovery lifecycle kind`);return{lifecycle:{lifecycle_id:t.lifecycle.lifecycle_id,work_kind:Ge,primitive_request_kind:Ke,root_share_epoch:t.lifecycle.root_share_epoch,account_id:t.lifecycle.account_id,session_id:t.lifecycle.session_id,signer_set_id:t.lifecycle.signer_set_id,selected_server_id:t.lifecycle.selected_server_id},operation:`recovery`,session_id:t.session_id,stable_key_context_binding:t.stable_key_context_binding,material_activation:t.material_activation};case`refresh`:case`export`:case`lane_provisioning`:case`lane_refresh`:throw Error(`activation binding has a non-activation operation`)}}function ut(e){let t=l(e,`keyset`);j(t,`keyset`,[`deriver_a_input_public_key`,`deriver_b_input_public_key`,`signing_worker_recipient_public_key`]);let n={deriver_a_input_public_key:E(t.deriver_a_input_public_key,`keyset.deriver_a_input_public_key`,!0),deriver_b_input_public_key:E(t.deriver_b_input_public_key,`keyset.deriver_b_input_public_key`,!0),signing_worker_recipient_public_key:E(t.signing_worker_recipient_public_key,`keyset.signing_worker_recipient_public_key`,!0)};if(D(n.deriver_a_input_public_key,n.deriver_b_input_public_key)||D(n.deriver_a_input_public_key,n.signing_worker_recipient_public_key)||D(n.deriver_b_input_public_key,n.signing_worker_recipient_public_key))throw Error(`keyset public keys must be distinct`);return n}function dt(e,t){let n=l(e,t);j(n,t,[`kind`,`deriver`,`operation`,`session`,`stable_context_binding`,`encapsulated_key`,`ciphertext`]);let r={kind:Qe(n.kind,`${t}.kind`),deriver:Ze(n.deriver,`${t}.deriver`),operation:Xe(n.operation,`${t}.operation`),session:E(n.session,`${t}.session`,!0),stable_context_binding:E(n.stable_context_binding,`${t}.stable_context_binding`,!0),encapsulated_key:E(n.encapsulated_key,`${t}.encapsulated_key`,!0),ciphertext:be(n.ciphertext,`${t}.ciphertext`,16,Le)};if(r.kind===`activation`&&r.operation===`export`||r.kind===`export`&&r.operation!==`export`)throw Error(`${t} operation does not match its circuit family`);return r}function ft(e,t,n,r){if(t.kind!==`activation`||t.deriver!==n||t.operation!==e.operation||!D(t.session,e.session_id)||!D(t.stable_context_binding,e.stable_key_context_binding))throw Error(`${r} does not match the admitted activation binding`);switch(e.operation){case`registration`:return{kind:`activation`,deriver:n,operation:`registration`,session:t.session,stable_context_binding:t.stable_context_binding,encapsulated_key:t.encapsulated_key,ciphertext:t.ciphertext};case`recovery`:return{kind:`activation`,deriver:n,operation:`recovery`,session:t.session,stable_context_binding:t.stable_context_binding,encapsulated_key:t.encapsulated_key,ciphertext:t.ciphertext}}}function pt(e,t,n,r){if(t.kind!==`export`||t.deriver!==n||t.operation!==`export`||!D(t.session,e.ceremony.session_id)||!D(t.stable_context_binding,e.ceremony.stable_key_context_binding))throw Error(`${r} does not match the admitted export binding`);return{kind:`export`,deriver:n,operation:`export`,session:t.session,stable_context_binding:t.stable_context_binding,encapsulated_key:t.encapsulated_key,ciphertext:t.ciphertext}}function P(e,t){let n=l(e,t);return j(n,t,[`kind`,`deriver`,`session`,`transcript`,`encapsulated_key`,`ciphertext`]),{kind:$e(n.kind,`${t}.kind`),deriver:Ze(n.deriver,`${t}.deriver`),session:E(n.session,`${t}.session`,!0),transcript:E(n.transcript,`${t}.transcript`,!0),encapsulated_key:E(n.encapsulated_key,`${t}.encapsulated_key`,!0),ciphertext:be(n.ciphertext,`${t}.ciphertext`,16,Le)}}function F(e){let t=l(e,`public_receipt`);return j(t,`public_receipt`,[`transcript`,`registered_public_key`,`joined_client_commitment`,`joined_signing_worker_commitment`,`signing_worker_verifying_share`,`state_epoch`,`material_activation`]),{transcript:E(t.transcript,`public_receipt.transcript`,!0),registered_public_key:E(t.registered_public_key,`public_receipt.registered_public_key`,!0),joined_client_commitment:E(t.joined_client_commitment,`public_receipt.joined_client_commitment`,!0),joined_signing_worker_commitment:E(t.joined_signing_worker_commitment,`public_receipt.joined_signing_worker_commitment`,!0),signing_worker_verifying_share:E(t.signing_worker_verifying_share,`public_receipt.signing_worker_verifying_share`,!0),state_epoch:Ye(t.state_epoch,`public_receipt.state_epoch`),material_activation:b(t.material_activation)}}function mt(e,t,n,r,i){if(n.kind!==`activation_client`||n.deriver!==r||!D(n.session,e.session_id)||!D(n.transcript,t.transcript))throw Error(`${i} does not match the terminal activation receipt`);return{kind:`activation_client`,deriver:r,session:n.session,transcript:n.transcript,encapsulated_key:n.encapsulated_key,ciphertext:n.ciphertext}}function ht(e,t,n,r,i){if(n.kind!==`export_client`||n.deriver!==r||!D(n.session,e.ceremony.session_id)||!D(n.transcript,t))throw Error(`${i} does not match the terminal export result`);return{kind:`export_client`,deriver:r,session:n.session,transcript:n.transcript,encapsulated_key:n.encapsulated_key,ciphertext:n.ciphertext}}function I(e,t){try{return{ok:!0,value:e(t)}}catch(e){return{ok:!1,code:`invalid_body`,message:e instanceof Error?e.message:String(e)}}}function gt(e){let t=l(e,`registration admission request`);return j(t,`registration admission request`,[`scope`,`application_binding`,`participant_ids`]),{scope:nt(t.scope),application_binding:M(t.application_binding),participant_ids:rt(t.participant_ids)}}function _t(e){let t=l(e,`recovery admission request`);j(t,`recovery admission request`,[`scope`,`active_material_activation`,`application_binding`,`participant_ids`,`active_capability_binding`,`replacement_capability_binding`,`registered_public_key`]);let n=E(t.active_capability_binding,`recovery admission request.active_capability_binding`,!0),r=E(t.replacement_capability_binding,`recovery admission request.replacement_capability_binding`,!0);if(D(n,r))throw Error(`recovery replacement capability binding must be fresh`);let i=nt(t.scope),a=b(t.active_material_activation),o=i.material_activation;if(a.activation_id===o.activation_id||a.lifecycle_binding===o.lifecycle_binding)throw Error(`recovery replacement material activation identity must be fresh`);if(a.capability!==o.capability||a.material_owner!==o.material_owner||a.key_binding!==o.key_binding||a.signing_worker!==o.signing_worker)throw Error(`recovery replacement material activation changed stable identity facts`);return{scope:i,active_material_activation:a,application_binding:M(t.application_binding),participant_ids:rt(t.participant_ids),active_capability_binding:n,replacement_capability_binding:r,registered_public_key:E(t.registered_public_key,`recovery admission request.registered_public_key`,!0)}}function vt(e){let t=l(e,`warm recovery bootstrap request`);if(j(t,`warm recovery bootstrap request`,[`kind`,`walletId`,`nearAccountId`,`nearEd25519SigningKeyId`,`signerSlot`,`thresholdSessionId`,`signingWorkerId`,`participantIds`]),t.kind!==`router_ab_ed25519_yao_warm_recovery_bootstrap_request_v1`)throw Error(`warm recovery bootstrap request.kind is invalid`);return{kind:`router_ab_ed25519_yao_warm_recovery_bootstrap_request_v1`,walletId:T(t.walletId,`warm recovery bootstrap request.walletId`),nearAccountId:T(t.nearAccountId,`warm recovery bootstrap request.nearAccountId`),nearEd25519SigningKeyId:T(t.nearEd25519SigningKeyId,`warm recovery bootstrap request.nearEd25519SigningKeyId`),signerSlot:Ye(t.signerSlot,`warm recovery bootstrap request.signerSlot`),thresholdSessionId:T(t.thresholdSessionId,`warm recovery bootstrap request.thresholdSessionId`),signingWorkerId:T(t.signingWorkerId,`warm recovery bootstrap request.signingWorkerId`),participantIds:rt(t.participantIds)}}function yt(e){let t=l(e,`export admission receipt`);return j(t,`export admission receipt`,[`binding`,`keyset`]),{binding:lt(t.binding),keyset:ut(t.keyset)}}function bt(e){let t=l(e,`export execute request`);j(t,`export execute request`,[`binding`,`deriver_a_input`,`deriver_b_input`]);let n=lt(t.binding);return{binding:n,deriver_a_input:pt(n,dt(t.deriver_a_input,`deriver_a_input`),`deriver_a`,`deriver_a_input`),deriver_b_input:pt(n,dt(t.deriver_b_input,`deriver_b_input`),`deriver_b`,`deriver_b_input`)}}function xt(e){let t=l(e,`export result`);j(t,`export result`,[`binding`,`transcript`,`deriver_a_client_package`,`deriver_b_client_package`]);let n=lt(t.binding),r=E(t.transcript,`export result.transcript`,!0);return{binding:n,transcript:r,deriver_a_client_package:ht(n,r,P(t.deriver_a_client_package,`deriver_a_client_package`),`deriver_a`,`deriver_a_client_package`),deriver_b_client_package:ht(n,r,P(t.deriver_b_client_package,`deriver_b_client_package`),`deriver_b`,`deriver_b_client_package`)}}function St(e){let t=l(e,`activation admission receipt`);j(t,`activation admission receipt`,[`binding`,`keyset`]);let n=N(t.binding),r=ut(t.keyset);switch(n.operation){case`registration`:return{binding:n,keyset:r};case`recovery`:return{binding:n,keyset:r}}}function Ct(e){let t=l(e,`activation execute request`);j(t,`activation execute request`,[`binding`,`deriver_a_input`,`deriver_b_input`]);let n=N(t.binding),r=ft(n,dt(t.deriver_a_input,`deriver_a_input`),`deriver_a`,`deriver_a_input`),i=ft(n,dt(t.deriver_b_input,`deriver_b_input`),`deriver_b`,`deriver_b_input`);if(n.operation===`registration`){if(r.operation!==`registration`||i.operation!==`registration`)throw Error(`activation inputs do not match registration binding`);return{binding:n,deriver_a_input:r,deriver_b_input:i}}if(r.operation!==`recovery`||i.operation!==`recovery`)throw Error(`activation inputs do not match recovery binding`);return{binding:n,deriver_a_input:r,deriver_b_input:i}}function wt(e){let t=l(e,`activation result`);j(t,`activation result`,[`binding`,`deriver_a_client_package`,`deriver_b_client_package`,`public_receipt`]);let n=N(t.binding),r=F(t.public_receipt);if(!ae(n.material_activation,r.material_activation))throw Error(`activation result receipt material does not match the admitted binding`);let i=P(t.deriver_a_client_package,`deriver_a_client_package`),a=P(t.deriver_b_client_package,`deriver_b_client_package`),o=mt(n,r,i,`deriver_a`,`deriver_a_client_package`),s=mt(n,r,a,`deriver_b`,`deriver_b_client_package`);switch(n.operation){case`registration`:return{binding:n,deriver_a_client_package:o,deriver_b_client_package:s,public_receipt:r};case`recovery`:return{binding:n,deriver_a_client_package:o,deriver_b_client_package:s,public_receipt:r}}}function Tt(e){let t=N(e);switch(t.operation){case`registration`:throw Error(`recovery activation requires a recovery binding`);case`recovery`:return t}}function Et(e){let t=l(e,`recovery activation receipt`);j(t,`recovery activation receipt`,[`binding`,`public_receipt`,`active_capability_binding`,`retired_capability_binding`]);let n=E(t.active_capability_binding,`recovery activation receipt.active_capability_binding`,!0),r=E(t.retired_capability_binding,`recovery activation receipt.retired_capability_binding`,!0);if(D(n,r))throw Error(`recovery activation receipt capability bindings must be distinct`);return{binding:Tt(t.binding),public_receipt:F(t.public_receipt),active_capability_binding:n,retired_capability_binding:r}}function Dt(e,t){return e.binding.operation===t}function Ot(e,t){return e.binding.operation===t}function kt(e,t){return e.binding.operation===t}function L(e){return{ok:!1,code:`invalid_body`,message:`activation value must use the ${e} operation`}}function At(e){return I(gt,e)}function jt(e){return I(_t,e)}function Mt(e){return I(vt,e)}function Nt(e){return I(yt,e)}function Pt(e){return I(bt,e)}function Ft(e){return I(xt,e)}function It(e){return I(St,e)}function Lt(e){let t=It(e);return t.ok?Dt(t.value,`registration`)?{ok:!0,value:t.value}:L(`registration`):t}function Rt(e){let t=It(e);return t.ok?Dt(t.value,`recovery`)?{ok:!0,value:t.value}:L(`recovery`):t}function zt(e){return I(Ct,e)}function Bt(e){let t=zt(e);return t.ok?Ot(t.value,`registration`)?{ok:!0,value:t.value}:L(`registration`):t}function Vt(e){let t=zt(e);return t.ok?Ot(t.value,`recovery`)?{ok:!0,value:t.value}:L(`recovery`):t}function Ht(e){return I(wt,e)}function Ut(e){let t=Ht(e);return t.ok?kt(t.value,`registration`)?{ok:!0,value:t.value}:L(`registration`):t}function Wt(e){let t=Ht(e);return t.ok?kt(t.value,`recovery`)?{ok:!0,value:t.value}:L(`recovery`):t}function Gt(e){return I(Et,e)}function Kt(e){return I(qt,e)}function qt(e){return P(e,`encrypted_package`)}const Jt=`seams/linked-device/ecdsa-source-contribution-envelope/v1`;function Yt(e){let t=c(e,`linked-device ordinary source contribution`);switch(t.kind){case`linked_device_ed25519_source_contribution_v1`:return nn(t);case`linked_device_ecdsa_source_contribution_v1`:return rn(t);default:throw Error(`linked-device ordinary source contribution kind is invalid`)}}function Xt(e){let t=q(e,[`state`,`reservation_id`,`participant_ids`,`activation_receipt`,`deriver_a_client_package`,`deriver_b_client_package`],`linked-device Ed25519 source-preserving reservation`);if(t.state!==`inactive`)throw Error(`linked-device Ed25519 source-preserving reservation is not inactive`);let n=F(t.activation_receipt),r=it(t.participant_ids),i=R(t.deriver_a_client_package,`deriver_a`),a=R(t.deriver_b_client_package,`deriver_b`);if(!k(n.transcript,i.transcript)||!k(n.transcript,a.transcript))throw Error(`linked-device Ed25519 reservation packages have mismatched transcripts`);return{state:`inactive`,reservationId:K(t.reservation_id,`reservation_id`),participantIds:r,activationReceipt:n,deriver_a_client_package:i,deriver_b_client_package:a}}function Zt(e){if(!Array.isArray(e)||e.length===0||e.length>2)throw Error(`linked-device ordinary source contributions must contain one or two entries`);let t=e.map(Yt),n=t.map(e=>e.keyFamily);if(new Set(n).size!==n.length)throw Error(`linked-device ordinary source contributions repeat a key family`);if(t.length===2&&(t[0]?.keyFamily!==`ed25519`||t[1]?.keyFamily!==`ecdsa_secp256k1`))throw Error(`linked-device ordinary source contributions must be Ed25519 then ECDSA`);let r=t[0];if(!r)throw Error(`linked-device ordinary source contributions are empty`);return[r,...t.slice(1)]}function Qt(e){let t=q(e,[`linkSessionId`,`enrollmentId`,`sourceAuthorityId`,`source`,`target`],`linked-device ECDSA source contribution preparation`),n=fn(t.source),r=pn(t.target);return bn(n.activation,r.activation),{linkSessionId:B(t.linkSessionId),enrollmentId:V(t.enrollmentId),sourceAuthorityId:H(t.sourceAuthorityId),source:n,target:r}}function $t(e){let t=c(e,`linked-device ordinary source contribution preparation`);if(t.kind===`linked_device_ed25519_source_contribution_preparation_v1`)return tn(t);if(Object.prototype.hasOwnProperty.call(t,`source`)&&Object.prototype.hasOwnProperty.call(t,`target`))return Qt(t);throw Error(`linked-device ordinary source contribution preparation family is invalid`)}function en(e){if(!Array.isArray(e)||e.length===0||e.length>2)throw Error(`linked-device ordinary source contribution preparations must contain one or two entries`);let t=e.map($t),n=t.map(e=>`kind`in e?`ed25519`:`ecdsa_secp256k1`);if(new Set(n).size!==n.length)throw Error(`linked-device ordinary source contribution preparations repeat a key family`);if(t.length===2&&(n[0]!==`ed25519`||n[1]!==`ecdsa_secp256k1`))throw Error(`linked-device ordinary source contribution preparations must be ordered Ed25519 then ECDSA`);let r=t[0];if(!r)throw Error(`linked-device ordinary source contribution preparation is empty`);return[r,...t.slice(1)]}function tn(e){if(q(e,[`kind`,`linkSessionId`,`enrollmentId`,`sourceAuthorityId`,`walletKeyId`,`targetDeviceId`,`targetFactorVerificationDigestB64u`,`sourceBinding`,`targetAdmission`,`applicationBinding`,`sourceRevocationEpoch`,`participantIds`,`targetMaterialActivation`,`targetClientRecipientPublicKeyB64u`,`targetSigningWorkerRecipientPublicKeyB64u`,`sourceRegisteredPublicKeyB64u`],`linked-device Ed25519 source contribution preparation`),e.kind!==`linked_device_ed25519_source_contribution_preparation_v1`)throw Error(`linked-device Ed25519 source contribution preparation kind is invalid`);let t=N(e.sourceBinding),n=Lt(e.targetAdmission);if(!n.ok)throw Error(`targetAdmission ${n.message}`);let r=n.value,a=M(e.applicationBinding);if(typeof e.sourceRevocationEpoch!=`number`||!Number.isSafeInteger(e.sourceRevocationEpoch)||e.sourceRevocationEpoch<0)throw Error(`sourceRevocationEpoch must be a non-negative safe integer`);let o=z(e.targetMaterialActivation,`targetMaterialActivation`),s=B(e.linkSessionId),c=V(e.enrollmentId),l=H(e.sourceAuthorityId),u=Sn(e.walletKeyId),d=U(e.targetDeviceId),f=W(e.targetFactorVerificationDigestB64u,`targetFactorVerificationDigestB64u`),ee=G(e.targetClientRecipientPublicKeyB64u,32,`targetClientRecipientPublicKeyB64u`),m=G(e.targetSigningWorkerRecipientPublicKeyB64u,32,`targetSigningWorkerRecipientPublicKeyB64u`);if(ee===m)throw Error(`linked-device Ed25519 source contribution recipients must differ`);let h=it(e.participantIds);if(_n(t,s,`sourceBinding`),!i(o,v(r.binding.material_activation)))throw Error(`targetAdmission activation differs from targetMaterialActivation`);if(!vn(t,r.binding))throw Error(`source and target Ed25519 contribution bindings differ`);if(t.material_activation.activation_id===o.activationId)throw Error(`source and target Ed25519 contribution activations must differ`);return{kind:`linked_device_ed25519_source_contribution_preparation_v1`,linkSessionId:s,enrollmentId:c,sourceAuthorityId:l,walletKeyId:u,targetDeviceId:d,targetFactorVerificationDigestB64u:f,sourceBinding:t,targetAdmission:r,applicationBinding:a,sourceRevocationEpoch:e.sourceRevocationEpoch,participantIds:h,targetMaterialActivation:o,targetClientRecipientPublicKeyB64u:ee,targetSigningWorkerRecipientPublicKeyB64u:m,sourceRegisteredPublicKeyB64u:p(e.sourceRegisteredPublicKeyB64u,`sourceRegisteredPublicKeyB64u`)}}function nn(e){if(q(e,[`kind`,`keyFamily`,`linkSessionId`,`enrollmentId`,`sourceAuthorityId`,`walletKeyId`,`targetDeviceId`,`targetFactorVerificationDigestB64u`,`targetMaterialActivation`,`targetClientRecipientPublicKeyB64u`,`targetSigningWorkerRecipientPublicKeyB64u`,`sourceBinding`,`reservationId`,`targetBinding`,`activationReceipt`,`participantIds`,`deriver_a_client_package`,`deriver_b_client_package`,`sourceRegisteredPublicKeyB64u`],`linked-device Ed25519 source contribution`),e.kind!==`linked_device_ed25519_source_contribution_v1`)throw Error(`linked-device Ed25519 source contribution kind is invalid`);if(e.keyFamily!==`ed25519`)throw Error(`linked-device Ed25519 source contribution family is invalid`);let t=N(e.sourceBinding),n=z(e.targetMaterialActivation,`source contribution targetMaterialActivation`),r=hn(e.targetBinding,`targetBinding`),a=F(e.activationReceipt),o=K(e.reservationId,`reservationId`),s=it(e.participantIds),c=B(e.linkSessionId),l=V(e.enrollmentId),u=H(e.sourceAuthorityId),d=Sn(e.walletKeyId),ee=U(e.targetDeviceId),m=W(e.targetFactorVerificationDigestB64u,`targetFactorVerificationDigestB64u`),h=G(e.targetClientRecipientPublicKeyB64u,32,`targetClientRecipientPublicKeyB64u`),te=G(e.targetSigningWorkerRecipientPublicKeyB64u,32,`targetSigningWorkerRecipientPublicKeyB64u`);if(h===te)throw Error(`linked-device Ed25519 source contribution recipients must differ`);if(_n(t,c,`sourceBinding`),gn(r,c,n,`targetBinding`),!vn(t,r))throw Error(`linked-device Ed25519 source contribution stable identity differs`);if(!i(v(a.material_activation),n))throw Error(`linked-device Ed25519 source contribution receipt activation differs`);let g=p(e.sourceRegisteredPublicKeyB64u,`sourceRegisteredPublicKeyB64u`);if(!k(a.registered_public_key,Array.from(f(g))))throw Error(`linked-device Ed25519 source contribution receipt public key differs`);let ne=R(e.deriver_a_client_package,`deriver_a`),_=R(e.deriver_b_client_package,`deriver_b`);if(!k(a.transcript,ne.transcript)||!k(a.transcript,_.transcript))throw Error(`linked-device Ed25519 source contribution package transcript differs`);if(t.material_activation.activation_id===n.activationId)throw Error(`linked-device Ed25519 source contribution reuses the source activation`);return{kind:`linked_device_ed25519_source_contribution_v1`,keyFamily:`ed25519`,linkSessionId:c,enrollmentId:l,sourceAuthorityId:u,walletKeyId:d,targetDeviceId:ee,targetFactorVerificationDigestB64u:m,targetMaterialActivation:n,targetClientRecipientPublicKeyB64u:h,targetSigningWorkerRecipientPublicKeyB64u:te,sourceBinding:t,reservationId:o,targetBinding:r,activationReceipt:a,participantIds:s,deriver_a_client_package:ne,deriver_b_client_package:_,sourceRegisteredPublicKeyB64u:g}}function rn(e){if(q(e,[`kind`,`keyFamily`,`linkSessionId`,`enrollmentId`,`sourceAuthorityId`,`walletKeyId`,`targetDeviceId`,`targetFactorVerificationDigestB64u`,`sourceSigner`,`sourceDerivation`,`target`,`package`],`linked-device ECDSA source contribution`),e.kind!==`linked_device_ecdsa_source_contribution_v1`)throw Error(`linked-device ECDSA source contribution kind is invalid`);if(e.keyFamily!==`ecdsa_secp256k1`)throw Error(`linked-device ECDSA source contribution family is invalid`);let t=B(e.linkSessionId),n=V(e.enrollmentId),r=H(e.sourceAuthorityId),i=Sn(e.walletKeyId),a=U(e.targetDeviceId),o=W(e.targetFactorVerificationDigestB64u,`targetFactorVerificationDigestB64u`),s=fn(e.sourceSigner),c=an(e.sourceDerivation),l=pn(e.target);bn(s.activation,l.activation);let u=un(e.package);if(u.binding.linkSessionId!==t||u.binding.enrollmentId!==n||u.binding.sourceAuthorityId!==r||u.binding.target.targetDeviceId!==a||u.binding.target.targetFactorVerificationDigestB64u!==o)throw Error(`linked-device ECDSA source contribution package binding differs`);if(!yn(u.binding.source,s))throw Error(`linked-device ECDSA source contribution signer differs from package binding`);if(!xn(u.binding.target,l))throw Error(`linked-device ECDSA source contribution target differs from package binding`);return{kind:`linked_device_ecdsa_source_contribution_v1`,keyFamily:`ecdsa_secp256k1`,linkSessionId:t,enrollmentId:n,sourceAuthorityId:r,walletKeyId:i,targetDeviceId:a,targetFactorVerificationDigestB64u:o,sourceSigner:s,sourceDerivation:c,target:l,package:u}}function an(e){let t=q(e,[`applicationBindingDigestB64u`,`clientShareRetryCounter`,`ecdsaThresholdKeyId`,`sourceNormalSigning`],`linked-device ECDSA source derivation`),n=t.clientShareRetryCounter;if(typeof n!=`number`||!Number.isSafeInteger(n)||n<0)throw Error(`linked-device ECDSA source derivation retry counter is invalid`);let r=W(t.applicationBindingDigestB64u,`sourceDerivation.applicationBindingDigestB64u`),i=ie(t.sourceNormalSigning),a=re(t.ecdsaThresholdKeyId);if(i.scope.context.application_binding_digest_b64u!==r||i.scope.public_identity.client_share_retry_counter!==n||i.scope.ecdsa_threshold_key_id!==a)throw Error(`linked-device ECDSA source derivation differs from normal signing`);return{applicationBindingDigestB64u:r,clientShareRetryCounter:n,ecdsaThresholdKeyId:a,sourceNormalSigning:i}}function on(e){let t=q(e,[`state`,`binding`,`sourceDerivation`,`targetRelayerPublicKey33B64u`,`thresholdPublicKey33B64u`,`thresholdEthereumAddress20B64u`,`normalSigning`],`linked-device ECDSA source-preserving activation receipt`);if(t.state!==`inactive`)throw Error(`linked-device ECDSA source-preserving activation receipt is not inactive`);let n=dn(t.binding),r=an(t.sourceDerivation),i=h(t.targetRelayerPublicKey33B64u,`targetRelayerPublicKey33B64u`),a=h(t.thresholdPublicKey33B64u,`thresholdPublicKey33B64u`),o=G(t.thresholdEthereumAddress20B64u,20,`thresholdEthereumAddress20B64u`),s=ie(t.normalSigning);return sn({binding:n,sourceDerivation:r,targetRelayerPublicKey33B64u:i,thresholdPublicKey33B64u:a,thresholdEthereumAddress20B64u:o,normalSigning:s}),{state:`inactive`,binding:n,sourceDerivation:r,targetRelayerPublicKey33B64u:i,thresholdPublicKey33B64u:a,thresholdEthereumAddress20B64u:o,normalSigning:s}}function sn(e){let t=e.sourceDerivation.sourceNormalSigning.scope,n=e.normalSigning.scope;if(!i(v(t.material_activation),e.binding.source.activation)||!i(v(n.material_activation),e.binding.target.activation)||t.wallet_id!==n.wallet_id||t.wallet_id!==e.binding.source.activation.materialOwner||n.wallet_id!==e.binding.target.activation.materialOwner||t.ecdsa_threshold_key_id!==n.ecdsa_threshold_key_id||t.signing_root_id!==n.signing_root_id||t.signing_root_version!==n.signing_root_version||t.context.application_binding_digest_b64u!==n.context.application_binding_digest_b64u||t.activation_epoch!==n.activation_epoch||t.public_identity.derivation_client_share_public_key33_b64u!==e.binding.source.clientPublicKey33B64u||t.public_identity.server_public_key33_b64u!==e.binding.source.relayerPublicKey33B64u||t.public_identity.threshold_public_key33_b64u!==e.binding.source.thresholdPublicKey33B64u||t.public_identity.ethereum_address20_b64u!==e.binding.source.thresholdEthereumAddress20B64u||n.public_identity.context_binding_b64u!==t.public_identity.context_binding_b64u||n.public_identity.derivation_client_share_public_key33_b64u!==e.binding.targetClientPublicKey33B64u||n.public_identity.server_public_key33_b64u!==e.targetRelayerPublicKey33B64u||n.public_identity.threshold_public_key33_b64u!==e.thresholdPublicKey33B64u||n.public_identity.ethereum_address20_b64u!==e.thresholdEthereumAddress20B64u||n.public_identity.client_share_retry_counter!==t.public_identity.client_share_retry_counter||n.public_identity.server_share_retry_counter!==t.public_identity.server_share_retry_counter||n.signing_worker.server_id!==e.binding.target.activation.signingWorker||n.signing_worker.key_epoch!==t.signing_worker.key_epoch||n.signing_worker.recipient_encryption_key!==cn(e.binding.target.signingWorkerRecipientPublicKeyB64u))throw Error(`linked-device ECDSA normal signing state differs from its activation receipt`)}function cn(e){let t=f(e);if(t.length!==32||d(t)!==e)throw Error(`linked-device signing-worker recipient key is invalid`);let n=``;for(let e of t)n+=e.toString(16).padStart(2,`0`);return`x25519:${n}`}function R(e,t){let n=ln(e,`${t} client package`);if(n.kind!==`activation_client`||n.deriver!==t)throw Error(`${t} client package is not an activation client package`);return t===`deriver_a`?{kind:`activation_client`,deriver:`deriver_a`,session:n.session,transcript:n.transcript,encapsulated_key:n.encapsulated_key,ciphertext:n.ciphertext}:{kind:`activation_client`,deriver:`deriver_b`,session:n.session,transcript:n.transcript,encapsulated_key:n.encapsulated_key,ciphertext:n.ciphertext}}function ln(e,t){let n=Kt(e);if(!n.ok)throw Error(`${t} ${n.message}`);return n.value}function un(e){let t=q(e,[`binding`,`encryptedDelta`,`encryptedTargetClientShare`],`linked-device ECDSA source contribution package`),n=dn(t.binding),r=mn(t.encryptedDelta,`encryptedDelta`),i=mn(t.encryptedTargetClientShare,`encryptedTargetClientShare`),a=r.bindingDigestB64u;if(i.bindingDigestB64u!==a)throw Error(`linked-device ECDSA source contribution envelope bindings differ`);if(r.recipientPublicKeyB64u!==n.target.signingWorkerRecipientPublicKeyB64u||i.recipientPublicKeyB64u!==n.target.clientRecipientPublicKeyB64u)throw Error(`linked-device ECDSA source contribution envelope recipients differ`);return{binding:n,encryptedDelta:r,encryptedTargetClientShare:i}}function dn(e){let t=q(e,[`linkSessionId`,`enrollmentId`,`sourceAuthorityId`,`source`,`target`,`targetClientPublicKey33B64u`],`linked-device ECDSA source contribution binding`),n=fn(t.source),r=pn(t.target);return bn(n.activation,r.activation),{linkSessionId:K(t.linkSessionId,`binding.linkSessionId`),enrollmentId:K(t.enrollmentId,`binding.enrollmentId`),sourceAuthorityId:K(t.sourceAuthorityId,`binding.sourceAuthorityId`),source:n,target:r,targetClientPublicKey33B64u:h(t.targetClientPublicKey33B64u,`binding.targetClientPublicKey33B64u`)}}function fn(e){let t=q(e,[`activation`,`clientPublicKey33B64u`,`relayerPublicKey33B64u`,`thresholdPublicKey33B64u`,`thresholdEthereumAddress20B64u`],`linked-device ECDSA source signer`);return{activation:z(t.activation,`source.activation`),clientPublicKey33B64u:h(t.clientPublicKey33B64u,`source.clientPublicKey33B64u`),relayerPublicKey33B64u:h(t.relayerPublicKey33B64u,`source.relayerPublicKey33B64u`),thresholdPublicKey33B64u:h(t.thresholdPublicKey33B64u,`source.thresholdPublicKey33B64u`),thresholdEthereumAddress20B64u:G(t.thresholdEthereumAddress20B64u,20,`source.thresholdEthereumAddress20B64u`)}}function pn(e){let t=q(e,[`activation`,`targetDeviceId`,`targetFactorVerificationDigestB64u`,`clientRecipientPublicKeyB64u`,`signingWorkerRecipientPublicKeyB64u`],`linked-device ECDSA target recipient`),n=G(t.clientRecipientPublicKeyB64u,32,`target.clientRecipientPublicKeyB64u`),r=G(t.signingWorkerRecipientPublicKeyB64u,32,`target.signingWorkerRecipientPublicKeyB64u`);if(n===r)throw Error(`linked-device ECDSA target recipients must differ`);return{activation:z(t.activation,`target.activation`),targetDeviceId:U(t.targetDeviceId),targetFactorVerificationDigestB64u:W(t.targetFactorVerificationDigestB64u,`target.targetFactorVerificationDigestB64u`),clientRecipientPublicKeyB64u:n,signingWorkerRecipientPublicKeyB64u:r}}function mn(e,t){let n=q(e,[`kind`,`recipientPublicKeyB64u`,`bindingDigestB64u`,`encappedKeyB64u`,`ciphertextB64u`],`linked-device ECDSA ${t}`);if(n.kind!==Jt)throw Error(`${t}.kind is invalid`);return{kind:Jt,recipientPublicKeyB64u:G(n.recipientPublicKeyB64u,32,`${t}.recipientPublicKeyB64u`),bindingDigestB64u:W(n.bindingDigestB64u,`${t}.bindingDigestB64u`),encappedKeyB64u:G(n.encappedKeyB64u,32,`${t}.encappedKeyB64u`),ciphertextB64u:te(n.ciphertextB64u,`${t}.ciphertextB64u`)}}function hn(e,t){let n=N(e);if(n.operation!==`registration`)throw Error(`${t} must use the registration operation`);return n}function gn(e,t,n,r){if(e.material_activation.activation_id!==n.activationId)throw Error(`${r} activation does not match the target activation`);if(e.material_activation.material_owner!==n.materialOwner)throw Error(`${r} material owner does not match the target activation`);if(e.material_activation.signing_worker!==n.signingWorker)throw Error(`${r} signing worker does not match the target activation`);if(e.session_id.length!==32||String(t).length===0)throw Error(`${r} link binding is invalid`)}function _n(e,t,n){if(e.session_id.length!==32||String(t).length===0)throw Error(`${n} link binding is invalid`)}function vn(e,t){return e.stable_key_context_binding.every((e,n)=>e===t.stable_key_context_binding[n])&&e.material_activation.capability===t.material_activation.capability&&e.material_activation.material_owner===t.material_activation.material_owner&&e.material_activation.key_binding===t.material_activation.key_binding&&e.material_activation.lifecycle_binding===t.material_activation.lifecycle_binding&&e.material_activation.signing_worker===t.material_activation.signing_worker&&e.lifecycle.root_share_epoch===t.lifecycle.root_share_epoch&&e.lifecycle.account_id===t.lifecycle.account_id&&e.lifecycle.signer_set_id===t.lifecycle.signer_set_id&&e.lifecycle.selected_server_id===t.lifecycle.selected_server_id}function yn(e,t){return i(e.activation,t.activation)&&e.clientPublicKey33B64u===t.clientPublicKey33B64u&&e.relayerPublicKey33B64u===t.relayerPublicKey33B64u&&e.thresholdPublicKey33B64u===t.thresholdPublicKey33B64u&&e.thresholdEthereumAddress20B64u===t.thresholdEthereumAddress20B64u}function bn(e,t){if(i(e,t)||e.materialOwner!==t.materialOwner||e.signingWorker!==t.signingWorker)throw Error(`linked-device ECDSA source and target activations are invalid`)}function xn(e,t){return i(e.activation,t.activation)&&e.targetDeviceId===t.targetDeviceId&&e.targetFactorVerificationDigestB64u===t.targetFactorVerificationDigestB64u&&e.clientRecipientPublicKeyB64u===t.clientRecipientPublicKeyB64u&&e.signingWorkerRecipientPublicKeyB64u===t.signingWorkerRecipientPublicKeyB64u}function z(e,t){let n=r(e);if(!n.ok)throw Error(`${t} ${n.error.message}`);return n.value}function B(e){let t=s(K(e,`linkSessionId`));if(!t.ok)throw Error(`linkSessionId ${t.error.message}`);return t.value}function V(e){let t=n(K(e,`enrollmentId`));if(!t.ok)throw Error(`enrollmentId ${t.error.message}`);return t.value}function H(e){let n=t(K(e,`sourceAuthorityId`));if(!n.ok)throw Error(`sourceAuthorityId ${n.error.message}`);return n.value}function Sn(t){let n=e(K(t,`walletKeyId`));if(!n.ok)throw Error(`walletKeyId ${n.error.message}`);return n.value}function U(e){let t=ne(K(e,`targetDeviceId`));if(!t.ok)throw Error(`targetDeviceId ${t.error.message}`);return t.value}function W(e,t){try{return _(e)}catch(e){throw Error(`${t} ${e instanceof Error?e.message:`is invalid`}`)}}function G(e,t,n){if(typeof e!=`string`||!/^[A-Za-z0-9_-]+$/.test(e))throw Error(`${n} must be canonical base64url`);let r;try{r=f(e)}catch{throw Error(`${n} must be canonical base64url`)}if(r.length!==t||d(r)!==e)throw Error(`${n} must decode to ${t} bytes`);return e}function K(e,t){if(typeof e!=`string`||e.length===0||e.trim()!==e||[...e].some(e=>{let t=e.charCodeAt(0);return t<32||t===127}))throw Error(`${t} must be a non-empty visible string`);return e}function q(e,t,n){let r=c(e,n),i=new Set(t),a=Object.keys(r);if(a.length!==t.length||a.some(e=>!i.has(e))||t.some(e=>!Object.prototype.hasOwnProperty.call(r,e)))throw Error(`${n} contains unknown or missing fields`);return r}function Cn(e){return br(e)}function wn(e){return yr(e.signerActivations)}function Tn(e){return vr(e.signerActivations)}function En(e){return e.provenance.kind===`wallet_recovery`}function Dn(e){return{kind:`wallet_ed25519_signer_activation_v1`,signer:e.signer,materialActivation:e.materialActivation}}function On(e){return{kind:`wallet_ecdsa_signer_activation_v1`,signer:e.signer,materialActivation:e.materialActivation}}function kn(e){let t=pe(e.manifest),n=_r(e.materialActivations);if(!ur(t.keyFamilies,n.keyFamilies))throw Error(`wallet signer activation materials must match the signer manifest families`);if(dr(t)){if(!mr(n))throw Error(`Ed25519 signer activation requires one Ed25519 material activation`);return{kind:`wallet_signer_activation_set_v1`,keyFamilies:[`ed25519`],ed25519:Dn({signer:t.signers[0],materialActivation:n.ed25519})}}if(fr(t)){if(!hr(n))throw Error(`ECDSA signer activation requires one ECDSA material activation`);return{kind:`wallet_signer_activation_set_v1`,keyFamilies:[`ecdsa_secp256k1`],ecdsa:On({signer:t.signers[0],materialActivation:n.ecdsa})}}if(!pr(t)||!gr(n))throw Error(`wallet signer activation set has unsupported families`);if(n.ed25519.activationId===n.ecdsa.activationId)throw Error(`wallet signer activation references must be distinct`);return{kind:`wallet_signer_activation_set_v1`,keyFamilies:[`ed25519`,`ecdsa_secp256k1`],ed25519:Dn({signer:t.signers[0],materialActivation:n.ed25519}),ecdsa:On({signer:t.signers[1],materialActivation:n.ecdsa})}}function An(e){try{let t=l(e,`WalletSignerActivationSetV1`);if(t.kind!==`wallet_signer_activation_set_v1`)return $(`wallet signer activation set kind is unsupported`);if(!Object.prototype.hasOwnProperty.call(t,`keyFamilies`))return $(`WalletSignerActivationSetV1.keyFamilies is required`);let n=lr(t.keyFamilies,`WalletSignerActivationSetV1.keyFamilies`);if(n.length===1&&n[0]===`ed25519`)return J(t,[`kind`,`keyFamilies`,`ed25519`],`WalletSignerActivationSetV1`),{ok:!0,value:{kind:`wallet_signer_activation_set_v1`,keyFamilies:[`ed25519`],ed25519:Zn(t.ed25519,`ed25519`)}};if(n.length===1&&n[0]===`ecdsa_secp256k1`)return J(t,[`kind`,`keyFamilies`,`ecdsa`],`WalletSignerActivationSetV1`),{ok:!0,value:{kind:`wallet_signer_activation_set_v1`,keyFamilies:[`ecdsa_secp256k1`],ecdsa:Qn(t.ecdsa,`ecdsa`)}};J(t,[`kind`,`keyFamilies`,`ed25519`,`ecdsa`],`WalletSignerActivationSetV1`);let r=Zn(t.ed25519,`ed25519`),i=Qn(t.ecdsa,`ecdsa`);return r.materialActivation.activationId===i.materialActivation.activationId?$(`wallet signer activation references must be distinct`):{ok:!0,value:{kind:`wallet_signer_activation_set_v1`,keyFamilies:[`ed25519`,`ecdsa_secp256k1`],ed25519:r,ecdsa:i}}}catch(e){return $(xr(e,`wallet signer activation set is invalid`))}}function jn(e){let t=[y(`seams/wallet-signer-activation-set/v1`,`domain`),y(e.kind,`kind`),se(e.keyFamilies.length,`keyFamilies`)];for(let n of e.keyFamilies)t.push(y(n,`keyFamilies.item`));return(vr(e)||br(e))&&t.push(x(er(e.ed25519),`ed25519`)),(yr(e)||br(e))&&t.push(x(tr(e.ecdsa),`ecdsa`)),S(t)}async function Mn(e){return _(d(await u(jn(e))))}function Nn(e){return{kind:`wallet_authority_v1`,authorityId:e.authorityId,walletId:e.walletId,principal:e.principal,provenance:e.provenance,permissions:e.permissions,signerActivations:e.signerActivations,signerActivationSetDigestB64u:e.signerActivationSetDigestB64u,authorityDigestB64u:e.authorityDigestB64u,revocationEpoch:e.revocationEpoch,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs}}function Pn(e){return Kn(e),{...Nn(e),state:`pending_local_install`,localInstallPackageSetDigestB64u:e.localInstallPackageSetDigestB64u}}function Fn(e){return Kn(e),{...Nn(e),state:`active`,activatedAtMs:e.activatedAtMs}}async function In(e){let t=e.authority.signerActivations;if(!t.ed25519)throw Error(`active Wallet Authority has no Ed25519 material activation to replace`);let n=t.ecdsa?kn({manifest:C([t.ed25519.signer,t.ecdsa.signer]),materialActivations:{keyFamilies:[`ed25519`,`ecdsa_secp256k1`],ed25519:e.materialActivation,ecdsa:t.ecdsa.materialActivation}}):kn({manifest:C([t.ed25519.signer]),materialActivations:{keyFamilies:[`ed25519`],ed25519:e.materialActivation}}),r=await Mn(n),i={kind:e.authority.kind,authorityId:e.authority.authorityId,walletId:e.authority.walletId,principal:e.authority.principal,provenance:e.authority.provenance,permissions:e.authority.permissions,signerActivations:n,signerActivationSetDigestB64u:r,authorityDigestB64u:e.authority.authorityDigestB64u,revocationEpoch:e.authority.revocationEpoch,createdAtMs:e.authority.createdAtMs,updatedAtMs:Math.max(e.authority.updatedAtMs,e.updatedAtMs),state:`active`,activatedAtMs:e.authority.activatedAtMs};return Fn({...i,authorityDigestB64u:await Hn(i)})}function Ln(e){return Kn(e),{...Nn(e),state:`active`,activatedAtMs:e.activatedAtMs}}function Rn(e){return Kn(e),{...Nn(e),state:`revoked`,activatedAtMs:e.activatedAtMs,revokedAtMs:e.revokedAtMs}}const zn=[`kind`,`authorityId`,`walletId`,`principal`,`provenance`,`permissions`,`signerActivations`,`signerActivationSetDigestB64u`,`authorityDigestB64u`,`revocationEpoch`,`createdAtMs`,`updatedAtMs`,`state`];function Bn(e){try{let t=l(e,`WalletAuthorityV1`),n=Gn(t);switch(t.state){case`pending_local_install`:return J(t,[...zn,`localInstallPackageSetDigestB64u`],`WalletAuthorityV1`),{ok:!0,value:Pn({kind:`wallet_authority_v1`,...n,state:`pending_local_install`,localInstallPackageSetDigestB64u:Y(t.localInstallPackageSetDigestB64u,`localInstallPackageSetDigestB64u`)})};case`active`:return J(t,[...zn,`activatedAtMs`],`WalletAuthorityV1`),{ok:!0,value:Fn({kind:`wallet_authority_v1`,...n,state:`active`,activatedAtMs:X(t.activatedAtMs,`activatedAtMs`)})};case`revoked`:return J(t,[...zn,`activatedAtMs`,`revokedAtMs`],`WalletAuthorityV1`),{ok:!0,value:Rn({kind:`wallet_authority_v1`,...n,state:`revoked`,activatedAtMs:X(t.activatedAtMs,`activatedAtMs`),revokedAtMs:X(t.revokedAtMs,`revokedAtMs`)})};default:return $(`WalletAuthorityV1.state is unsupported`)}}catch(e){return $(xr(e,`wallet authority is invalid`))}}function Vn(e){return S([y(`seams/wallet-authority/v1`,`domain`),y(e.kind,`kind`),y(e.authorityId,`authorityId`),y(e.walletId,`walletId`),x(ar(e.principal),`principal`),x(or(e.provenance),`provenance`),x(sr(e.permissions),`permissions`),ce(e.signerActivationSetDigestB64u,`signerActivationSetDigestB64u`),y(e.state,`state`),le(e.revocationEpoch,`revocationEpoch`)])}async function Hn(e){return _(d(await u(Vn(e))))}async function Un(e){return await Mn(e.signerActivations)===e.signerActivationSetDigestB64u?await Hn(e)===e.authorityDigestB64u:!1}async function Wn(e,t){let[n,r]=await Promise.all([Un(e),Un(t)]);return n&&r&&e.authorityDigestB64u===t.authorityDigestB64u&&e.signerActivationSetDigestB64u===t.signerActivationSetDigestB64u&&e.createdAtMs===t.createdAtMs&&e.updatedAtMs===t.updatedAtMs&&e.activatedAtMs===t.activatedAtMs}function Gn(e){if(e.kind!==`wallet_authority_v1`)throw Error(`WalletAuthorityV1.kind is unsupported`);let n=Q(t(e.authorityId),`authorityId`),r=Q(o(e.walletId),`walletId`),i=qn(e.principal),a=Jn(e.provenance),s=Q(ee(e.permissions),`permissions`),c=Q(An(e.signerActivations),`signerActivations`),l=Y(e.signerActivationSetDigestB64u,`signerActivationSetDigestB64u`),u=Y(e.authorityDigestB64u,`authorityDigestB64u`),d=X(e.revocationEpoch,`revocationEpoch`),f=X(e.createdAtMs,`createdAtMs`),p=X(e.updatedAtMs,`updatedAtMs`);return Xn(c,r),{authorityId:n,walletId:r,principal:i,provenance:a,permissions:s,signerActivations:c,signerActivationSetDigestB64u:l,authorityDigestB64u:u,revocationEpoch:d,createdAtMs:f,updatedAtMs:p}}function Kn(e){if(e.kind!==`wallet_authority_v1`)throw Error(`wallet authority kind is unsupported`);if(!Number.isSafeInteger(e.revocationEpoch)||e.revocationEpoch<0)throw Error(`wallet authority revocationEpoch must be a non-negative safe integer`);if(Z(e.createdAtMs,`createdAtMs`),Z(e.updatedAtMs,`updatedAtMs`),e.updatedAtMs<e.createdAtMs)throw Error(`wallet authority updatedAtMs cannot precede createdAtMs`);switch(Y(e.signerActivationSetDigestB64u,`signerActivationSetDigestB64u`),Y(e.authorityDigestB64u,`authorityDigestB64u`),Xn(e.signerActivations,e.walletId),Yn(e.provenance),e.state){case`pending_local_install`:Y(e.localInstallPackageSetDigestB64u,`localInstallPackageSetDigestB64u`);break;case`active`:Z(e.activatedAtMs,`activatedAtMs`);break;case`revoked`:if(Z(e.activatedAtMs,`activatedAtMs`),Z(e.revokedAtMs,`revokedAtMs`),e.revokedAtMs<e.activatedAtMs)throw Error(`revokedAtMs cannot precede activatedAtMs`);break}}function qn(e){let t=cr(e,[`kind`,`deviceId`],`WalletAuthorityPrincipalV1`);if(t.kind!==`owner_device`)throw Error(`wallet authority principal kind is unsupported`);return{kind:`owner_device`,deviceId:Q(ne(t.deviceId),`deviceId`)}}function Jn(e){let r=l(e,`WalletAuthorityProvenanceV1`);switch(r.kind){case`wallet_registration`:return J(r,[`kind`],`WalletAuthorityProvenanceV1`),{kind:`wallet_registration`};case`device_link`:return J(r,[`kind`,`enrollmentId`,`sourceAuthorityId`,`linkSessionId`],`WalletAuthorityProvenanceV1`),{kind:`device_link`,enrollmentId:Q(n(r.enrollmentId),`enrollmentId`),sourceAuthorityId:Q(t(r.sourceAuthorityId),`sourceAuthorityId`),linkSessionId:Q(s(r.linkSessionId),`linkSessionId`)};case`wallet_recovery`:return J(r,[`kind`,`recoveryOperationId`,`continuityAuthorityId`],`WalletAuthorityProvenanceV1`),{kind:`wallet_recovery`,recoveryOperationId:Q(a(r.recoveryOperationId),`recoveryOperationId`),continuityAuthorityId:Q(t(r.continuityAuthorityId),`continuityAuthorityId`)};default:throw Error(`wallet authority provenance kind is unsupported`)}}function Yn(e){switch(e.kind){case`wallet_registration`:return;case`device_link`:if(!e.enrollmentId||!e.sourceAuthorityId||!e.linkSessionId)throw Error(`device-link provenance requires every audit identity`);return;case`wallet_recovery`:if(!e.recoveryOperationId||!e.continuityAuthorityId)throw Error(`wallet-recovery provenance requires every audit identity`);return}Sr(e,`wallet authority provenance`)}function Xn(e,t){if(vr(e)){if(e.ed25519.signer.walletId!==t)throw Error(`Ed25519 signer activation uses a different wallet id`);return}if(yr(e)){if(e.ecdsa.signer.walletId!==t)throw Error(`ECDSA signer activation uses a different wallet id`);return}if(br(e)){if(e.ed25519.signer.walletId!==t||e.ecdsa.signer.walletId!==t)throw Error(`signer activations must use the authority wallet id`);return}throw Error(`wallet signer activation families are unsupported`)}function Zn(e,t){let n=cr(e,[`kind`,`signer`,`materialActivation`],t);if(n.kind!==`wallet_ed25519_signer_activation_v1`)throw Error(`${t}.kind is invalid`);let i=$n(n.signer,`ed25519`,`${t}.signer`);if(!dr(i))throw Error(`${t}.signer is not Ed25519`);return Dn({signer:i.signers[0],materialActivation:Q(r(n.materialActivation),`${t}.materialActivation`)})}function Qn(e,t){let n=cr(e,[`kind`,`signer`,`materialActivation`],t);if(n.kind!==`wallet_ecdsa_signer_activation_v1`)throw Error(`${t}.kind is invalid`);let i=$n(n.signer,`ecdsa_secp256k1`,`${t}.signer`);if(!fr(i))throw Error(`${t}.signer is not ECDSA`);return On({signer:i.signers[0],materialActivation:Q(r(n.materialActivation),`${t}.materialActivation`)})}function $n(e,t,n){return pe({kind:`exact_administered_signer_manifest_v1`,keyFamilies:[t],signers:[e]})}function er(e){return S([y(e.kind,`ed25519.kind`),x(nr(e.signer),`ed25519.signer`),x(ir(e.materialActivation),`ed25519.materialActivation`)])}function tr(e){return S([y(e.kind,`ecdsa.kind`),x(rr(e.signer),`ecdsa.signer`),x(ir(e.materialActivation),`ecdsa.materialActivation`)])}function nr(e){return S([y(e.kind,`ed25519.signer.kind`),y(e.keyFamily,`ed25519.signer.keyFamily`),y(e.walletId,`ed25519.signer.walletId`),y(e.walletKeyId,`ed25519.signer.walletKeyId`),x(oe(e.registeredPublicKeyB64u,`ed25519.signer.registeredPublicKeyB64u`),`ed25519.signer.registeredPublicKeyB64u`)])}function rr(e){return S([y(e.kind,`ecdsa.signer.kind`),y(e.keyFamily,`ecdsa.signer.keyFamily`),y(e.walletId,`ecdsa.signer.walletId`),y(e.walletKeyId,`ecdsa.signer.walletKeyId`),x(oe(e.thresholdPublicKey33B64u,`ecdsa.signer.thresholdPublicKey33B64u`),`ecdsa.signer.thresholdPublicKey33B64u`),y(e.evmAddress,`ecdsa.signer.evmAddress`)])}function ir(e){return S([y(e.kind,`materialActivation.kind`),y(e.activationId,`materialActivation.activationId`),y(e.capability,`materialActivation.capability`),y(e.materialOwner,`materialActivation.materialOwner`),y(e.keyBinding,`materialActivation.keyBinding`),y(e.lifecycleBinding,`materialActivation.lifecycleBinding`),y(e.signingWorker,`materialActivation.signingWorker`)])}function ar(e){return S([y(e.kind,`principal.kind`),y(e.deviceId,`principal.deviceId`)])}function or(e){switch(e.kind){case`wallet_registration`:return y(e.kind,`provenance.kind`);case`device_link`:return S([y(e.kind,`provenance.kind`),y(e.enrollmentId,`provenance.enrollmentId`),y(e.sourceAuthorityId,`provenance.sourceAuthorityId`),y(e.linkSessionId,`provenance.linkSessionId`)]);case`wallet_recovery`:return S([y(e.kind,`provenance.kind`),y(e.recoveryOperationId,`provenance.recoveryOperationId`),y(e.continuityAuthorityId,`provenance.continuityAuthorityId`)])}return Sr(e,`wallet authority provenance`)}function sr(e){let t=[se(e.length,`permissions`)];for(let n of e)t.push(x(y(n,`permissions.item`),`permissions.item`));return S(t)}function cr(e,t,n){let r=l(e,n);return J(r,t,n),r}function J(e,t,n){let r=new Set(t),i=Object.keys(e);if(i.length!==t.length)throw Error(`${n} contains unexpected fields`);for(let e of i)if(!r.has(e))throw Error(`${n}.${e} is not allowed`);for(let r of t)if(!Object.prototype.hasOwnProperty.call(e,r))throw Error(`${n}.${r} is required`)}function lr(e,t){if(!Array.isArray(e))throw Error(`${t} must be an array`);if(e.length===1&&e[0]===`ed25519`)return[`ed25519`];if(e.length===1&&e[0]===`ecdsa_secp256k1`)return[`ecdsa_secp256k1`];if(e.length===2&&e[0]===`ed25519`&&e[1]===`ecdsa_secp256k1`)return[`ed25519`,`ecdsa_secp256k1`];throw Error(`${t} must use canonical family order`)}function ur(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function dr(e){return e.keyFamilies.length===1&&e.keyFamilies[0]===`ed25519`}function fr(e){return e.keyFamilies.length===1&&e.keyFamilies[0]===`ecdsa_secp256k1`}function pr(e){return e.keyFamilies.length===2}function mr(e){return e.keyFamilies.length===1&&e.keyFamilies[0]===`ed25519`}function hr(e){return e.keyFamilies.length===1&&e.keyFamilies[0]===`ecdsa_secp256k1`}function gr(e){return e.keyFamilies.length===2}function _r(e){if(mr(e))return{keyFamilies:[`ed25519`],ed25519:Q(r(e.ed25519),`materialActivations.ed25519`)};if(hr(e))return{keyFamilies:[`ecdsa_secp256k1`],ecdsa:Q(r(e.ecdsa),`materialActivations.ecdsa`)};if(gr(e))return{keyFamilies:[`ed25519`,`ecdsa_secp256k1`],ed25519:Q(r(e.ed25519),`materialActivations.ed25519`),ecdsa:Q(r(e.ecdsa),`materialActivations.ecdsa`)};throw Error(`wallet signer activation materials are unsupported`)}function vr(e){return e.keyFamilies.length===1&&e.keyFamilies[0]===`ed25519`}function yr(e){return e.keyFamilies.length===1&&e.keyFamilies[0]===`ecdsa_secp256k1`}function br(e){return e.keyFamilies.length===2}function Y(e,t){try{return _(e)}catch(e){throw Error(`${t} ${xr(e,`is invalid`)}`)}}function X(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0)throw Error(`${t} must be a non-negative safe integer`);return e}function Z(e,t){if(!Number.isSafeInteger(e)||e<0)throw Error(`${t} must be a non-negative safe integer`)}function Q(e,t){if(e.ok)return e.value;throw Error(`${t} ${e.error.message}`)}function $(e){return{ok:!1,error:{code:`invalid`,message:e}}}function xr(e,t){return e instanceof Error?e.message:t}function Sr(e,t){throw Error(`${t} branch is unsupported: ${String(e)}`)}async function Cr(e,t,n){let r=await Mn(t),i={kind:`wallet_authority_v1`,authorityId:e.authorityId,walletId:e.walletId,principal:e.principal,provenance:e.provenance,permissions:e.permissions,signerActivations:t,signerActivationSetDigestB64u:r,authorityDigestB64u:e.authorityDigestB64u,revocationEpoch:e.revocationEpoch,createdAtMs:e.createdAtMs,updatedAtMs:Math.max(e.updatedAtMs,n),state:`active`,activatedAtMs:e.activatedAtMs};return Ln({...i,authorityDigestB64u:await Hn(i)})}async function wr(e){if(e.ed25519.signer.walletId!==e.authority.walletId)throw Error(`NEAR signer belongs to a different wallet authority`);let t=e.authority.signerActivations.ecdsa,n=e.ed25519.signer,r=kn({manifest:C([n,t.signer]),materialActivations:{keyFamilies:[`ed25519`,`ecdsa_secp256k1`],ed25519:e.ed25519.materialActivation,ecdsa:t.materialActivation}});if(!Cn(r))throw Error(`Deferred Ed25519 activation did not produce a combined signer activation set`);return Cr(e.authority,r,e.now)}function Tr(e,t){return e.authorityId===t.authorityId&&e.walletId===t.walletId&&e.revocationEpoch===t.revocationEpoch&&e.createdAtMs===t.createdAtMs&&e.activatedAtMs===t.activatedAtMs&&d(ar(e.principal))===d(ar(t.principal))&&d(or(e.provenance))===d(or(t.provenance))&&d(sr(e.permissions))===d(sr(t.permissions))}function Er(e,t){return Tn(e)&&Cn(t.signerActivations)&&Tr(e,t)&&d(er(e.signerActivations.ed25519))===d(er(t.signerActivations.ed25519))}function Dr(e,t){return wn(e)&&Cn(t.signerActivations)&&e.provenance.kind===`wallet_registration`&&Tr(e,t)&&d(tr(e.signerActivations.ecdsa))===d(tr(t.signerActivations.ecdsa))}export{k as $,Ae as A,Ft as B,xn as C,je as D,Ie as E,M as F,Wt as G,Rt as H,st as I,Bt as J,jt as K,Kt as L,Oe as M,Ne as N,ke as O,F as P,Re as Q,Nt as R,yn as S,Fe as T,Vt as U,it as V,Gt as W,At as X,Ut as Y,Mt as Z,on as _,wn as a,$t as b,Cn as c,Bn as d,He as et,An as f,mn as g,Un as h,wr as i,De as j,Me as k,Er as l,Wn as m,Mn as n,pe as nt,Tn as o,In as p,Lt as q,jn as r,En as s,Hn as t,Ee as tt,Dr as u,Xt as v,Pe as w,Zt as x,en as y,Pt as z};
|
|
1
|
+
import{A as e,O as t,d as n,g as r,i,j as a,k as o,u as s}from"./domainIds-t1lp25yU.js";import{C as c,S as l,n as u}from"./digests-BIaE0DMd.js";import{i as d,r as f}from"./base64-BmKR3UqU.js";import{B as ee,D as p,J as m,M as h,O as te,P as g}from"./activeWalletSession-HAOgRKzn.js";import{l as ne}from"./capabilityKinds-Cafn86Y1.js";import{r as _}from"./canonicalPrimitives-DKeS3M40.js";import{Dt as re,F as ie,Ft as ae,Nt as v,a as y,i as oe,jt as b,n as x,o as se,r as ce,s as le,t as S}from"./digestEncoding-Rx8Vjy4J.js";const ue=[`kind`,`keyFamilies`,`signers`],de=[`kind`,`keyFamily`,`walletId`,`walletKeyId`,`registeredPublicKeyB64u`],fe=[`kind`,`keyFamily`,`walletId`,`walletKeyId`,`thresholdPublicKey33B64u`,`evmAddress`];function C(e){if(e.length===0)throw Error(`exact administered signer manifest must contain at least one active family`);let t,n,r,i=new Set;for(let a of e){if(t!==void 0&&t!==a.walletId)throw Error(`exact administered signer manifest must use one wallet identity`);if(t=a.walletId,i.has(a.walletKeyId))throw Error(`exact administered signer manifest repeats wallet key ${a.walletKeyId}`);switch(i.add(a.walletKeyId),a.keyFamily){case`ed25519`:if(n!==void 0)throw Error(`exact administered signer manifest repeats the ed25519 family`);if(a.kind!==`exact_administered_ed25519_signer_v1`)throw Error(`exact administered signer manifest has an invalid Ed25519 signer`);n=a;break;case`ecdsa_secp256k1`:if(r!==void 0)throw Error(`exact administered signer manifest repeats the ecdsa family`);if(a.kind!==`exact_administered_ecdsa_signer_v1`)throw Error(`exact administered signer manifest has an invalid ECDSA signer`);r=a;break}}if(n!==void 0&&r!==void 0)return{kind:`exact_administered_signer_manifest_v1`,keyFamilies:[`ed25519`,`ecdsa_secp256k1`],signers:[n,r]};if(n!==void 0)return{kind:`exact_administered_signer_manifest_v1`,keyFamilies:[`ed25519`],signers:[n]};if(r!==void 0)return{kind:`exact_administered_signer_manifest_v1`,keyFamilies:[`ecdsa_secp256k1`],signers:[r]};throw Error(`exact administered signer manifest must contain a supported family`)}function pe(e){let t=ve(e,ue,`ExactAdministeredSignerManifestV1`);if(t.kind!==`exact_administered_signer_manifest_v1`)throw Error(`ExactAdministeredSignerManifestV1.kind is invalid`);let n=he(t.keyFamilies);if(!Array.isArray(t.signers))throw Error(`ExactAdministeredSignerManifestV1.signers must be an array`);let r=[];for(let e=0;e<t.signers.length;e+=1)r.push(me(t.signers[e],`signers[${e}]`));let i=C(r);if(!ge(n,i.keyFamilies))throw Error(`ExactAdministeredSignerManifestV1.keyFamilies do not match signers`);return i}function me(t,n){let r=l(t,n);switch(r.keyFamily){case`ed25519`:if(m(r,de,n),r.kind!==`exact_administered_ed25519_signer_v1`)throw Error(`${n}.kind is invalid for Ed25519`);return{kind:`exact_administered_ed25519_signer_v1`,keyFamily:`ed25519`,walletId:g(o(r.walletId),`${n}.walletId`),walletKeyId:g(e(r.walletKeyId),`${n}.walletKeyId`),registeredPublicKeyB64u:p(r.registeredPublicKeyB64u,`${n}.registeredPublicKeyB64u`)};case`ecdsa_secp256k1`:if(m(r,fe,n),r.kind!==`exact_administered_ecdsa_signer_v1`)throw Error(`${n}.kind is invalid for ECDSA`);return{kind:`exact_administered_ecdsa_signer_v1`,keyFamily:`ecdsa_secp256k1`,walletId:g(o(r.walletId),`${n}.walletId`),walletKeyId:g(e(r.walletKeyId),`${n}.walletKeyId`),thresholdPublicKey33B64u:h(r.thresholdPublicKey33B64u,`${n}.thresholdPublicKey33B64u`),evmAddress:_e(r.evmAddress,`${n}.evmAddress`)};default:throw Error(`${n}.keyFamily is unsupported`)}}function he(e){if(!Array.isArray(e)||e.length===0||e.length>2)throw Error(`ExactAdministeredSignerManifestV1.keyFamilies must be non-empty`);if(e.length===1&&e[0]===`ed25519`)return[`ed25519`];if(e.length===1&&e[0]===`ecdsa_secp256k1`)return[`ecdsa_secp256k1`];if(e.length===2&&e[0]===`ed25519`&&e[1]===`ecdsa_secp256k1`)return[`ed25519`,`ecdsa_secp256k1`];throw Error(`ExactAdministeredSignerManifestV1.keyFamilies must be canonical and duplicate-free`)}function ge(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function _e(e,t){if(typeof e!=`string`||!/^0x[0-9a-fA-F]{40}$/.test(e))throw Error(`${t} must be a 20-byte hexadecimal EVM address`);return e}function ve(e,t,n){let r=l(e,n);m(r,t,n);for(let e of t)if(!(e in r))throw Error(`${n}.${e} is required`);return r}const w=new TextEncoder;function T(e,t){if(typeof e!=`string`||e.length===0)throw Error(`${t} must be a non-empty visible ASCII string`);for(let n=0;n<e.length;n+=1){let r=e.charCodeAt(n);if(r<33||r>126)throw Error(`${t} must contain visible ASCII bytes`)}return e}function ye(e,t){if(typeof e!=`number`||!Number.isInteger(e)||e<0||e>255)throw Error(`${t} must be a byte`);return e}function be(e,t,n,r){if(!Array.isArray(e))throw Error(`${t} must be a byte array`);if(e.length<n||e.length>r)throw Error(`${t} has an invalid length`);let i=[];for(let n=0;n<e.length;n+=1)i.push(ye(e[n],`${t}[${n}]`));return i}function E(e,t,n){let r=be(e,t,32,32);if(n&&xe(r))throw Error(`${t} must be nonzero`);return r}function xe(e){for(let t of e)if(t!==0)return!1;return!0}function D(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function Se(e){let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!1),t}function Ce(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function we(e){return Ce([Se(e.length),e])}function O(e,t){return Ce([we(w.encode(e)),we(t)])}async function Te(e){let t=await globalThis.crypto.subtle.digest(`SHA-256`,e);return new Uint8Array(t)}async function Ee(e){let t=Ce([we(w.encode(`seams/router-ab/ed25519-yao/application-binding/v1`)),O(`walletId`,w.encode(e.wallet_id)),O(`nearEd25519SigningKeyId`,w.encode(e.near_ed25519_signing_key_id)),O(`signingRootId`,w.encode(e.signing_root_id)),O(`keyCreationSignerSlot`,Se(e.key_creation_signer_slot))]);return Array.from(await Te(t))}const De=`/router-ab/ed25519/yao/registration/admit`,Oe=`/router-ab/ed25519/yao/registration/execute`,ke=`/router-ab/ed25519/yao/recovery/admit`,Ae=`/router-ab/ed25519/yao/recovery/execute`,je=`/router-ab/ed25519/yao/recovery/activate`,Me=`x-seams-wallet-recovery-challenge-id`,Ne=`/router-ab/ed25519/yao/recovery/bootstrap`,Pe=`router_ab_ed25519_yao_email_otp_recovery_v1`,Fe=`/router-ab/ed25519/yao/export/admit`,Ie=`/router-ab/ed25519/yao/export/execute`,Le=64*1024;function Re(e,t){return e.operation===t.operation&&k(e.session_id,t.session_id)&&k(e.stable_key_context_binding,t.stable_key_context_binding)&&ae(e.material_activation,t.material_activation)&&e.lifecycle.lifecycle_id===t.lifecycle.lifecycle_id&&e.lifecycle.work_kind===t.lifecycle.work_kind&&e.lifecycle.primitive_request_kind===t.lifecycle.primitive_request_kind&&e.lifecycle.root_share_epoch===t.lifecycle.root_share_epoch&&e.lifecycle.account_id===t.lifecycle.account_id&&e.lifecycle.session_id===t.lifecycle.session_id&&e.lifecycle.signer_set_id===t.lifecycle.signer_set_id&&e.lifecycle.selected_server_id===t.lifecycle.selected_server_id}function k(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function ze(e,t){return e[0]===t[0]&&e[1]===t[1]}function Be(e,t){return e.lifecycle_id===t.lifecycle_id&&e.root_share_epoch===t.root_share_epoch&&e.account_id===t.account_id&&e.threshold_session_id===t.threshold_session_id&&e.signer_set_id===t.signer_set_id&&e.signing_worker_id===t.signing_worker_id&&ae(e.material_activation,t.material_activation)}function Ve(e,t){return e.wallet_id===t.wallet_id&&e.near_ed25519_signing_key_id===t.near_ed25519_signing_key_id&&e.signing_root_id===t.signing_root_id&&e.key_creation_signer_slot===t.key_creation_signer_slot}function He(e,t){return Be(e.scope,t.scope)&&Ve(e.application_binding,t.application_binding)&&ze(e.participant_ids,t.participant_ids)}const Ue=`registration_prepare`,We=`registration`,Ge=`recovery`,Ke=`recovery`,A=`key_export`,qe=`export`;function j(e,t,n){let r=new Set(n);for(let n of Object.keys(e))if(!r.has(n))throw Error(`${t}.${n} is not a supported field`);for(let r of n)if(!Object.hasOwn(e,r))throw Error(`${t}.${r} is required`)}function Je(e,t){if(!Number.isInteger(e)||typeof e!=`number`||e<=0||e>4294967295)throw Error(`${t} must be a positive u32`);return e}function Ye(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<=0)throw Error(`${t} must be a positive safe integer`);return e}function Xe(e,t){switch(e){case`registration`:case`recovery`:case`refresh`:case`export`:case`lane_provisioning`:case`lane_refresh`:return e;default:throw Error(`${t} is invalid`)}}function Ze(e,t){switch(e){case`deriver_a`:case`deriver_b`:return e;default:throw Error(`${t} is invalid`)}}function Qe(e,t){switch(e){case`activation`:case`export`:return e;default:throw Error(`${t} is invalid`)}}function $e(e,t){switch(e){case`activation_client`:case`activation_signing_worker`:case`export_client`:return e;default:throw Error(`${t} is invalid`)}}function et(e,t){switch(e){case`registration_prepare`:case`key_export`:case`recovery`:case`server_share_refresh`:return e;default:throw Error(`${t} is invalid`)}}function tt(e,t){switch(e){case`registration`:case`recovery`:case`export`:case`refresh`:return e;default:throw Error(`${t} is invalid`)}}function M(e){let t=l(e,`application_binding`);return j(t,`application_binding`,[`wallet_id`,`near_ed25519_signing_key_id`,`signing_root_id`,`key_creation_signer_slot`]),{wallet_id:T(t.wallet_id,`application_binding.wallet_id`),near_ed25519_signing_key_id:T(t.near_ed25519_signing_key_id,`application_binding.near_ed25519_signing_key_id`),signing_root_id:T(t.signing_root_id,`application_binding.signing_root_id`),key_creation_signer_slot:Je(t.key_creation_signer_slot,`application_binding.key_creation_signer_slot`)}}function nt(e){let t=l(e,`scope`);j(t,`scope`,[`lifecycle_id`,`root_share_epoch`,`account_id`,`threshold_session_id`,`signer_set_id`,`signing_worker_id`,`material_activation`]);let n=T(t.account_id,`scope.account_id`),r=T(t.signing_worker_id,`scope.signing_worker_id`),i=b(t.material_activation);if(i.material_owner!==n||i.signing_worker!==r)throw Error(`scope.material_activation does not match the lifecycle owner and worker`);return{lifecycle_id:T(t.lifecycle_id,`scope.lifecycle_id`),root_share_epoch:T(t.root_share_epoch,`scope.root_share_epoch`),account_id:n,threshold_session_id:T(t.threshold_session_id,`scope.threshold_session_id`),signer_set_id:T(t.signer_set_id,`scope.signer_set_id`),signing_worker_id:r,material_activation:i}}function rt(e){if(!Array.isArray(e)||e.length!==2)throw Error(`participant_ids must contain exactly two values`);let t=Je(e[0],`participant_ids[0]`),n=Je(e[1],`participant_ids[1]`);if(t>65535||n>65535||t>=n)throw Error(`participant_ids must be distinct, nonzero, ascending u16 values`);return[t,n]}function it(e){return rt(e)}function at(e){let t=l(e,`binding.lifecycle`);j(t,`binding.lifecycle`,[`lifecycle_id`,`work_kind`,`primitive_request_kind`,`root_share_epoch`,`account_id`,`session_id`,`signer_set_id`,`selected_server_id`]);let n={lifecycle_id:T(t.lifecycle_id,`binding.lifecycle.lifecycle_id`),work_kind:et(t.work_kind,`binding.lifecycle.work_kind`),primitive_request_kind:tt(t.primitive_request_kind,`binding.lifecycle.primitive_request_kind`),root_share_epoch:T(t.root_share_epoch,`binding.lifecycle.root_share_epoch`),account_id:T(t.account_id,`binding.lifecycle.account_id`),session_id:T(t.session_id,`binding.lifecycle.session_id`),signer_set_id:T(t.signer_set_id,`binding.lifecycle.signer_set_id`),selected_server_id:T(t.selected_server_id,`binding.lifecycle.selected_server_id`)};if(n.work_kind===Ue&&n.primitive_request_kind!==We||n.work_kind===Ge&&n.primitive_request_kind!==Ke||n.work_kind===A&&n.primitive_request_kind!==qe)throw Error(`binding.lifecycle primitive request kind does not match its work kind`);return n}function ot(e){let t=l(e,`binding`);j(t,`binding`,[`lifecycle`,`operation`,`session_id`,`stable_key_context_binding`,`material_activation`]);let n={lifecycle:at(t.lifecycle),operation:Xe(t.operation,`binding.operation`),session_id:E(t.session_id,`binding.session_id`,!0),stable_key_context_binding:E(t.stable_key_context_binding,`binding.stable_key_context_binding`,!1),material_activation:b(t.material_activation)};if(n.operation===`registration`&&n.lifecycle.work_kind!==Ue||n.operation===`recovery`&&n.lifecycle.work_kind!==Ge||n.operation===`export`&&n.lifecycle.work_kind!==A)throw Error(`binding operation does not match its lifecycle work kind`);if(n.material_activation.material_owner!==n.lifecycle.account_id||n.material_activation.signing_worker!==n.lifecycle.selected_server_id)throw Error(`binding material activation does not match its lifecycle owner and worker`);return n}function st(e){return ot(e)}function ct(e){let t=ot(e);if(t.operation!==`export`||t.lifecycle.work_kind!==A||t.lifecycle.primitive_request_kind!==qe)throw Error(`export binding requires the exact export lifecycle`);return{lifecycle:{lifecycle_id:t.lifecycle.lifecycle_id,work_kind:A,primitive_request_kind:qe,root_share_epoch:t.lifecycle.root_share_epoch,account_id:t.lifecycle.account_id,session_id:t.lifecycle.session_id,signer_set_id:t.lifecycle.signer_set_id,selected_server_id:t.lifecycle.selected_server_id},operation:`export`,session_id:t.session_id,stable_key_context_binding:t.stable_key_context_binding,material_activation:t.material_activation}}function lt(e){let t=l(e,`export binding`);return j(t,`export binding`,[`ceremony`,`registered_public_key`,`state_epoch`,`runtime_policy_binding`,`authorization_digest`]),{ceremony:ct(t.ceremony),registered_public_key:E(t.registered_public_key,`export binding.registered_public_key`,!0),state_epoch:Ye(t.state_epoch,`export binding.state_epoch`),runtime_policy_binding:E(t.runtime_policy_binding,`export binding.runtime_policy_binding`,!0),authorization_digest:E(t.authorization_digest,`export binding.authorization_digest`,!0)}}function N(e){let t=ot(e);switch(t.operation){case`registration`:if(t.lifecycle.work_kind!==Ue||t.lifecycle.primitive_request_kind!==We)throw Error(`activation binding has the wrong registration lifecycle kind`);return{lifecycle:{lifecycle_id:t.lifecycle.lifecycle_id,work_kind:Ue,primitive_request_kind:We,root_share_epoch:t.lifecycle.root_share_epoch,account_id:t.lifecycle.account_id,session_id:t.lifecycle.session_id,signer_set_id:t.lifecycle.signer_set_id,selected_server_id:t.lifecycle.selected_server_id},operation:`registration`,session_id:t.session_id,stable_key_context_binding:t.stable_key_context_binding,material_activation:t.material_activation};case`recovery`:if(t.lifecycle.work_kind!==Ge||t.lifecycle.primitive_request_kind!==Ke)throw Error(`activation binding has the wrong recovery lifecycle kind`);return{lifecycle:{lifecycle_id:t.lifecycle.lifecycle_id,work_kind:Ge,primitive_request_kind:Ke,root_share_epoch:t.lifecycle.root_share_epoch,account_id:t.lifecycle.account_id,session_id:t.lifecycle.session_id,signer_set_id:t.lifecycle.signer_set_id,selected_server_id:t.lifecycle.selected_server_id},operation:`recovery`,session_id:t.session_id,stable_key_context_binding:t.stable_key_context_binding,material_activation:t.material_activation};case`refresh`:case`export`:case`lane_provisioning`:case`lane_refresh`:throw Error(`activation binding has a non-activation operation`)}}function ut(e){let t=l(e,`keyset`);j(t,`keyset`,[`deriver_a_input_public_key`,`deriver_b_input_public_key`,`signing_worker_recipient_public_key`]);let n={deriver_a_input_public_key:E(t.deriver_a_input_public_key,`keyset.deriver_a_input_public_key`,!0),deriver_b_input_public_key:E(t.deriver_b_input_public_key,`keyset.deriver_b_input_public_key`,!0),signing_worker_recipient_public_key:E(t.signing_worker_recipient_public_key,`keyset.signing_worker_recipient_public_key`,!0)};if(D(n.deriver_a_input_public_key,n.deriver_b_input_public_key)||D(n.deriver_a_input_public_key,n.signing_worker_recipient_public_key)||D(n.deriver_b_input_public_key,n.signing_worker_recipient_public_key))throw Error(`keyset public keys must be distinct`);return n}function dt(e,t){let n=l(e,t);j(n,t,[`kind`,`deriver`,`operation`,`session`,`stable_context_binding`,`encapsulated_key`,`ciphertext`]);let r={kind:Qe(n.kind,`${t}.kind`),deriver:Ze(n.deriver,`${t}.deriver`),operation:Xe(n.operation,`${t}.operation`),session:E(n.session,`${t}.session`,!0),stable_context_binding:E(n.stable_context_binding,`${t}.stable_context_binding`,!0),encapsulated_key:E(n.encapsulated_key,`${t}.encapsulated_key`,!0),ciphertext:be(n.ciphertext,`${t}.ciphertext`,16,Le)};if(r.kind===`activation`&&r.operation===`export`||r.kind===`export`&&r.operation!==`export`)throw Error(`${t} operation does not match its circuit family`);return r}function ft(e,t,n,r){if(t.kind!==`activation`||t.deriver!==n||t.operation!==e.operation||!D(t.session,e.session_id)||!D(t.stable_context_binding,e.stable_key_context_binding))throw Error(`${r} does not match the admitted activation binding`);switch(e.operation){case`registration`:return{kind:`activation`,deriver:n,operation:`registration`,session:t.session,stable_context_binding:t.stable_context_binding,encapsulated_key:t.encapsulated_key,ciphertext:t.ciphertext};case`recovery`:return{kind:`activation`,deriver:n,operation:`recovery`,session:t.session,stable_context_binding:t.stable_context_binding,encapsulated_key:t.encapsulated_key,ciphertext:t.ciphertext}}}function pt(e,t,n,r){if(t.kind!==`export`||t.deriver!==n||t.operation!==`export`||!D(t.session,e.ceremony.session_id)||!D(t.stable_context_binding,e.ceremony.stable_key_context_binding))throw Error(`${r} does not match the admitted export binding`);return{kind:`export`,deriver:n,operation:`export`,session:t.session,stable_context_binding:t.stable_context_binding,encapsulated_key:t.encapsulated_key,ciphertext:t.ciphertext}}function P(e,t){let n=l(e,t);return j(n,t,[`kind`,`deriver`,`session`,`transcript`,`encapsulated_key`,`ciphertext`]),{kind:$e(n.kind,`${t}.kind`),deriver:Ze(n.deriver,`${t}.deriver`),session:E(n.session,`${t}.session`,!0),transcript:E(n.transcript,`${t}.transcript`,!0),encapsulated_key:E(n.encapsulated_key,`${t}.encapsulated_key`,!0),ciphertext:be(n.ciphertext,`${t}.ciphertext`,16,Le)}}function F(e){let t=l(e,`public_receipt`);return j(t,`public_receipt`,[`transcript`,`registered_public_key`,`joined_client_commitment`,`joined_signing_worker_commitment`,`signing_worker_verifying_share`,`state_epoch`,`material_activation`]),{transcript:E(t.transcript,`public_receipt.transcript`,!0),registered_public_key:E(t.registered_public_key,`public_receipt.registered_public_key`,!0),joined_client_commitment:E(t.joined_client_commitment,`public_receipt.joined_client_commitment`,!0),joined_signing_worker_commitment:E(t.joined_signing_worker_commitment,`public_receipt.joined_signing_worker_commitment`,!0),signing_worker_verifying_share:E(t.signing_worker_verifying_share,`public_receipt.signing_worker_verifying_share`,!0),state_epoch:Ye(t.state_epoch,`public_receipt.state_epoch`),material_activation:b(t.material_activation)}}function mt(e,t,n,r,i){if(n.kind!==`activation_client`||n.deriver!==r||!D(n.session,e.session_id)||!D(n.transcript,t.transcript))throw Error(`${i} does not match the terminal activation receipt`);return{kind:`activation_client`,deriver:r,session:n.session,transcript:n.transcript,encapsulated_key:n.encapsulated_key,ciphertext:n.ciphertext}}function ht(e,t,n,r,i){if(n.kind!==`export_client`||n.deriver!==r||!D(n.session,e.ceremony.session_id)||!D(n.transcript,t))throw Error(`${i} does not match the terminal export result`);return{kind:`export_client`,deriver:r,session:n.session,transcript:n.transcript,encapsulated_key:n.encapsulated_key,ciphertext:n.ciphertext}}function I(e,t){try{return{ok:!0,value:e(t)}}catch(e){return{ok:!1,code:`invalid_body`,message:e instanceof Error?e.message:String(e)}}}function gt(e){let t=l(e,`registration admission request`);return j(t,`registration admission request`,[`scope`,`application_binding`,`participant_ids`]),{scope:nt(t.scope),application_binding:M(t.application_binding),participant_ids:rt(t.participant_ids)}}function _t(e){let t=l(e,`recovery admission request`);j(t,`recovery admission request`,[`scope`,`active_material_activation`,`application_binding`,`participant_ids`,`active_capability_binding`,`replacement_capability_binding`,`registered_public_key`]);let n=E(t.active_capability_binding,`recovery admission request.active_capability_binding`,!0),r=E(t.replacement_capability_binding,`recovery admission request.replacement_capability_binding`,!0);if(D(n,r))throw Error(`recovery replacement capability binding must be fresh`);let i=nt(t.scope),a=b(t.active_material_activation),o=i.material_activation;if(a.activation_id===o.activation_id||a.lifecycle_binding===o.lifecycle_binding)throw Error(`recovery replacement material activation identity must be fresh`);if(a.capability!==o.capability||a.material_owner!==o.material_owner||a.key_binding!==o.key_binding||a.signing_worker!==o.signing_worker)throw Error(`recovery replacement material activation changed stable identity facts`);return{scope:i,active_material_activation:a,application_binding:M(t.application_binding),participant_ids:rt(t.participant_ids),active_capability_binding:n,replacement_capability_binding:r,registered_public_key:E(t.registered_public_key,`recovery admission request.registered_public_key`,!0)}}function vt(e){let t=l(e,`warm recovery bootstrap request`);if(j(t,`warm recovery bootstrap request`,[`kind`,`walletId`,`nearAccountId`,`nearEd25519SigningKeyId`,`signerSlot`,`thresholdSessionId`,`signingWorkerId`,`participantIds`]),t.kind!==`router_ab_ed25519_yao_warm_recovery_bootstrap_request_v1`)throw Error(`warm recovery bootstrap request.kind is invalid`);return{kind:`router_ab_ed25519_yao_warm_recovery_bootstrap_request_v1`,walletId:T(t.walletId,`warm recovery bootstrap request.walletId`),nearAccountId:T(t.nearAccountId,`warm recovery bootstrap request.nearAccountId`),nearEd25519SigningKeyId:T(t.nearEd25519SigningKeyId,`warm recovery bootstrap request.nearEd25519SigningKeyId`),signerSlot:Ye(t.signerSlot,`warm recovery bootstrap request.signerSlot`),thresholdSessionId:T(t.thresholdSessionId,`warm recovery bootstrap request.thresholdSessionId`),signingWorkerId:T(t.signingWorkerId,`warm recovery bootstrap request.signingWorkerId`),participantIds:rt(t.participantIds)}}function yt(e){let t=l(e,`export admission receipt`);return j(t,`export admission receipt`,[`binding`,`keyset`]),{binding:lt(t.binding),keyset:ut(t.keyset)}}function bt(e){let t=l(e,`export execute request`);j(t,`export execute request`,[`binding`,`deriver_a_input`,`deriver_b_input`]);let n=lt(t.binding);return{binding:n,deriver_a_input:pt(n,dt(t.deriver_a_input,`deriver_a_input`),`deriver_a`,`deriver_a_input`),deriver_b_input:pt(n,dt(t.deriver_b_input,`deriver_b_input`),`deriver_b`,`deriver_b_input`)}}function xt(e){let t=l(e,`export result`);j(t,`export result`,[`binding`,`transcript`,`deriver_a_client_package`,`deriver_b_client_package`]);let n=lt(t.binding),r=E(t.transcript,`export result.transcript`,!0);return{binding:n,transcript:r,deriver_a_client_package:ht(n,r,P(t.deriver_a_client_package,`deriver_a_client_package`),`deriver_a`,`deriver_a_client_package`),deriver_b_client_package:ht(n,r,P(t.deriver_b_client_package,`deriver_b_client_package`),`deriver_b`,`deriver_b_client_package`)}}function St(e){let t=l(e,`activation admission receipt`);j(t,`activation admission receipt`,[`binding`,`keyset`]);let n=N(t.binding),r=ut(t.keyset);switch(n.operation){case`registration`:return{binding:n,keyset:r};case`recovery`:return{binding:n,keyset:r}}}function Ct(e){let t=l(e,`activation execute request`);j(t,`activation execute request`,[`binding`,`deriver_a_input`,`deriver_b_input`]);let n=N(t.binding),r=ft(n,dt(t.deriver_a_input,`deriver_a_input`),`deriver_a`,`deriver_a_input`),i=ft(n,dt(t.deriver_b_input,`deriver_b_input`),`deriver_b`,`deriver_b_input`);if(n.operation===`registration`){if(r.operation!==`registration`||i.operation!==`registration`)throw Error(`activation inputs do not match registration binding`);return{binding:n,deriver_a_input:r,deriver_b_input:i}}if(r.operation!==`recovery`||i.operation!==`recovery`)throw Error(`activation inputs do not match recovery binding`);return{binding:n,deriver_a_input:r,deriver_b_input:i}}function wt(e){let t=l(e,`activation result`);j(t,`activation result`,[`binding`,`deriver_a_client_package`,`deriver_b_client_package`,`public_receipt`]);let n=N(t.binding),r=F(t.public_receipt);if(!ae(n.material_activation,r.material_activation))throw Error(`activation result receipt material does not match the admitted binding`);let i=P(t.deriver_a_client_package,`deriver_a_client_package`),a=P(t.deriver_b_client_package,`deriver_b_client_package`),o=mt(n,r,i,`deriver_a`,`deriver_a_client_package`),s=mt(n,r,a,`deriver_b`,`deriver_b_client_package`);switch(n.operation){case`registration`:return{binding:n,deriver_a_client_package:o,deriver_b_client_package:s,public_receipt:r};case`recovery`:return{binding:n,deriver_a_client_package:o,deriver_b_client_package:s,public_receipt:r}}}function Tt(e){let t=N(e);switch(t.operation){case`registration`:throw Error(`recovery activation requires a recovery binding`);case`recovery`:return t}}function Et(e){let t=l(e,`recovery activation receipt`);j(t,`recovery activation receipt`,[`binding`,`public_receipt`,`active_capability_binding`,`retired_capability_binding`]);let n=E(t.active_capability_binding,`recovery activation receipt.active_capability_binding`,!0),r=E(t.retired_capability_binding,`recovery activation receipt.retired_capability_binding`,!0);if(D(n,r))throw Error(`recovery activation receipt capability bindings must be distinct`);return{binding:Tt(t.binding),public_receipt:F(t.public_receipt),active_capability_binding:n,retired_capability_binding:r}}function Dt(e,t){return e.binding.operation===t}function Ot(e,t){return e.binding.operation===t}function kt(e,t){return e.binding.operation===t}function L(e){return{ok:!1,code:`invalid_body`,message:`activation value must use the ${e} operation`}}function At(e){return I(gt,e)}function jt(e){return I(_t,e)}function Mt(e){return I(vt,e)}function Nt(e){return I(yt,e)}function Pt(e){return I(bt,e)}function Ft(e){return I(xt,e)}function It(e){return I(St,e)}function Lt(e){let t=It(e);return t.ok?Dt(t.value,`registration`)?{ok:!0,value:t.value}:L(`registration`):t}function Rt(e){let t=It(e);return t.ok?Dt(t.value,`recovery`)?{ok:!0,value:t.value}:L(`recovery`):t}function zt(e){return I(Ct,e)}function Bt(e){let t=zt(e);return t.ok?Ot(t.value,`registration`)?{ok:!0,value:t.value}:L(`registration`):t}function Vt(e){let t=zt(e);return t.ok?Ot(t.value,`recovery`)?{ok:!0,value:t.value}:L(`recovery`):t}function Ht(e){return I(wt,e)}function Ut(e){let t=Ht(e);return t.ok?kt(t.value,`registration`)?{ok:!0,value:t.value}:L(`registration`):t}function Wt(e){let t=Ht(e);return t.ok?kt(t.value,`recovery`)?{ok:!0,value:t.value}:L(`recovery`):t}function Gt(e){return I(Et,e)}function Kt(e){return I(qt,e)}function qt(e){return P(e,`encrypted_package`)}const Jt=`seams/linked-device/ecdsa-source-contribution-envelope/v1`;function Yt(e){let t=c(e,`linked-device ordinary source contribution`);switch(t.kind){case`linked_device_ed25519_source_contribution_v1`:return nn(t);case`linked_device_ecdsa_source_contribution_v1`:return rn(t);default:throw Error(`linked-device ordinary source contribution kind is invalid`)}}function Xt(e){let t=q(e,[`state`,`reservation_id`,`participant_ids`,`activation_receipt`,`deriver_a_client_package`,`deriver_b_client_package`],`linked-device Ed25519 source-preserving reservation`);if(t.state!==`inactive`)throw Error(`linked-device Ed25519 source-preserving reservation is not inactive`);let n=F(t.activation_receipt),r=it(t.participant_ids),i=R(t.deriver_a_client_package,`deriver_a`),a=R(t.deriver_b_client_package,`deriver_b`);if(!k(n.transcript,i.transcript)||!k(n.transcript,a.transcript))throw Error(`linked-device Ed25519 reservation packages have mismatched transcripts`);return{state:`inactive`,reservationId:K(t.reservation_id,`reservation_id`),participantIds:r,activationReceipt:n,deriver_a_client_package:i,deriver_b_client_package:a}}function Zt(e){if(!Array.isArray(e)||e.length===0||e.length>2)throw Error(`linked-device ordinary source contributions must contain one or two entries`);let t=e.map(Yt),n=t.map(e=>e.keyFamily);if(new Set(n).size!==n.length)throw Error(`linked-device ordinary source contributions repeat a key family`);if(t.length===2&&(t[0]?.keyFamily!==`ed25519`||t[1]?.keyFamily!==`ecdsa_secp256k1`))throw Error(`linked-device ordinary source contributions must be Ed25519 then ECDSA`);let r=t[0];if(!r)throw Error(`linked-device ordinary source contributions are empty`);return[r,...t.slice(1)]}function Qt(e){let t=q(e,[`linkSessionId`,`enrollmentId`,`sourceAuthorityId`,`source`,`target`],`linked-device ECDSA source contribution preparation`),n=fn(t.source),r=pn(t.target);return bn(n.activation,r.activation),{linkSessionId:B(t.linkSessionId),enrollmentId:V(t.enrollmentId),sourceAuthorityId:H(t.sourceAuthorityId),source:n,target:r}}function $t(e){let t=c(e,`linked-device ordinary source contribution preparation`);if(t.kind===`linked_device_ed25519_source_contribution_preparation_v1`)return tn(t);if(Object.prototype.hasOwnProperty.call(t,`source`)&&Object.prototype.hasOwnProperty.call(t,`target`))return Qt(t);throw Error(`linked-device ordinary source contribution preparation family is invalid`)}function en(e){if(!Array.isArray(e)||e.length===0||e.length>2)throw Error(`linked-device ordinary source contribution preparations must contain one or two entries`);let t=e.map($t),n=t.map(e=>`kind`in e?`ed25519`:`ecdsa_secp256k1`);if(new Set(n).size!==n.length)throw Error(`linked-device ordinary source contribution preparations repeat a key family`);if(t.length===2&&(n[0]!==`ed25519`||n[1]!==`ecdsa_secp256k1`))throw Error(`linked-device ordinary source contribution preparations must be ordered Ed25519 then ECDSA`);let r=t[0];if(!r)throw Error(`linked-device ordinary source contribution preparation is empty`);return[r,...t.slice(1)]}function tn(e){if(q(e,[`kind`,`linkSessionId`,`enrollmentId`,`sourceAuthorityId`,`walletKeyId`,`targetDeviceId`,`targetFactorVerificationDigestB64u`,`sourceBinding`,`targetAdmission`,`applicationBinding`,`sourceRevocationEpoch`,`participantIds`,`targetMaterialActivation`,`targetClientRecipientPublicKeyB64u`,`targetSigningWorkerRecipientPublicKeyB64u`,`sourceRegisteredPublicKeyB64u`],`linked-device Ed25519 source contribution preparation`),e.kind!==`linked_device_ed25519_source_contribution_preparation_v1`)throw Error(`linked-device Ed25519 source contribution preparation kind is invalid`);let t=N(e.sourceBinding),n=Lt(e.targetAdmission);if(!n.ok)throw Error(`targetAdmission ${n.message}`);let r=n.value,a=M(e.applicationBinding);if(typeof e.sourceRevocationEpoch!=`number`||!Number.isSafeInteger(e.sourceRevocationEpoch)||e.sourceRevocationEpoch<0)throw Error(`sourceRevocationEpoch must be a non-negative safe integer`);let o=z(e.targetMaterialActivation,`targetMaterialActivation`),s=B(e.linkSessionId),c=V(e.enrollmentId),l=H(e.sourceAuthorityId),u=Sn(e.walletKeyId),d=U(e.targetDeviceId),f=W(e.targetFactorVerificationDigestB64u,`targetFactorVerificationDigestB64u`),ee=G(e.targetClientRecipientPublicKeyB64u,32,`targetClientRecipientPublicKeyB64u`),m=G(e.targetSigningWorkerRecipientPublicKeyB64u,32,`targetSigningWorkerRecipientPublicKeyB64u`);if(ee===m)throw Error(`linked-device Ed25519 source contribution recipients must differ`);let h=it(e.participantIds);if(_n(t,s,`sourceBinding`),!i(o,v(r.binding.material_activation)))throw Error(`targetAdmission activation differs from targetMaterialActivation`);if(!vn(t,r.binding))throw Error(`source and target Ed25519 contribution bindings differ`);if(t.material_activation.activation_id===o.activationId)throw Error(`source and target Ed25519 contribution activations must differ`);return{kind:`linked_device_ed25519_source_contribution_preparation_v1`,linkSessionId:s,enrollmentId:c,sourceAuthorityId:l,walletKeyId:u,targetDeviceId:d,targetFactorVerificationDigestB64u:f,sourceBinding:t,targetAdmission:r,applicationBinding:a,sourceRevocationEpoch:e.sourceRevocationEpoch,participantIds:h,targetMaterialActivation:o,targetClientRecipientPublicKeyB64u:ee,targetSigningWorkerRecipientPublicKeyB64u:m,sourceRegisteredPublicKeyB64u:p(e.sourceRegisteredPublicKeyB64u,`sourceRegisteredPublicKeyB64u`)}}function nn(e){if(q(e,[`kind`,`keyFamily`,`linkSessionId`,`enrollmentId`,`sourceAuthorityId`,`walletKeyId`,`targetDeviceId`,`targetFactorVerificationDigestB64u`,`targetMaterialActivation`,`targetClientRecipientPublicKeyB64u`,`targetSigningWorkerRecipientPublicKeyB64u`,`sourceBinding`,`reservationId`,`targetBinding`,`activationReceipt`,`participantIds`,`deriver_a_client_package`,`deriver_b_client_package`,`sourceRegisteredPublicKeyB64u`],`linked-device Ed25519 source contribution`),e.kind!==`linked_device_ed25519_source_contribution_v1`)throw Error(`linked-device Ed25519 source contribution kind is invalid`);if(e.keyFamily!==`ed25519`)throw Error(`linked-device Ed25519 source contribution family is invalid`);let t=N(e.sourceBinding),n=z(e.targetMaterialActivation,`source contribution targetMaterialActivation`),r=hn(e.targetBinding,`targetBinding`),a=F(e.activationReceipt),o=K(e.reservationId,`reservationId`),s=it(e.participantIds),c=B(e.linkSessionId),l=V(e.enrollmentId),u=H(e.sourceAuthorityId),d=Sn(e.walletKeyId),ee=U(e.targetDeviceId),m=W(e.targetFactorVerificationDigestB64u,`targetFactorVerificationDigestB64u`),h=G(e.targetClientRecipientPublicKeyB64u,32,`targetClientRecipientPublicKeyB64u`),te=G(e.targetSigningWorkerRecipientPublicKeyB64u,32,`targetSigningWorkerRecipientPublicKeyB64u`);if(h===te)throw Error(`linked-device Ed25519 source contribution recipients must differ`);if(_n(t,c,`sourceBinding`),gn(r,c,n,`targetBinding`),!vn(t,r))throw Error(`linked-device Ed25519 source contribution stable identity differs`);if(!i(v(a.material_activation),n))throw Error(`linked-device Ed25519 source contribution receipt activation differs`);let g=p(e.sourceRegisteredPublicKeyB64u,`sourceRegisteredPublicKeyB64u`);if(!k(a.registered_public_key,Array.from(f(g))))throw Error(`linked-device Ed25519 source contribution receipt public key differs`);let ne=R(e.deriver_a_client_package,`deriver_a`),_=R(e.deriver_b_client_package,`deriver_b`);if(!k(a.transcript,ne.transcript)||!k(a.transcript,_.transcript))throw Error(`linked-device Ed25519 source contribution package transcript differs`);if(t.material_activation.activation_id===n.activationId)throw Error(`linked-device Ed25519 source contribution reuses the source activation`);return{kind:`linked_device_ed25519_source_contribution_v1`,keyFamily:`ed25519`,linkSessionId:c,enrollmentId:l,sourceAuthorityId:u,walletKeyId:d,targetDeviceId:ee,targetFactorVerificationDigestB64u:m,targetMaterialActivation:n,targetClientRecipientPublicKeyB64u:h,targetSigningWorkerRecipientPublicKeyB64u:te,sourceBinding:t,reservationId:o,targetBinding:r,activationReceipt:a,participantIds:s,deriver_a_client_package:ne,deriver_b_client_package:_,sourceRegisteredPublicKeyB64u:g}}function rn(e){if(q(e,[`kind`,`keyFamily`,`linkSessionId`,`enrollmentId`,`sourceAuthorityId`,`walletKeyId`,`targetDeviceId`,`targetFactorVerificationDigestB64u`,`sourceSigner`,`sourceDerivation`,`target`,`package`],`linked-device ECDSA source contribution`),e.kind!==`linked_device_ecdsa_source_contribution_v1`)throw Error(`linked-device ECDSA source contribution kind is invalid`);if(e.keyFamily!==`ecdsa_secp256k1`)throw Error(`linked-device ECDSA source contribution family is invalid`);let t=B(e.linkSessionId),n=V(e.enrollmentId),r=H(e.sourceAuthorityId),i=Sn(e.walletKeyId),a=U(e.targetDeviceId),o=W(e.targetFactorVerificationDigestB64u,`targetFactorVerificationDigestB64u`),s=fn(e.sourceSigner),c=an(e.sourceDerivation),l=pn(e.target);bn(s.activation,l.activation);let u=un(e.package);if(u.binding.linkSessionId!==t||u.binding.enrollmentId!==n||u.binding.sourceAuthorityId!==r||u.binding.target.targetDeviceId!==a||u.binding.target.targetFactorVerificationDigestB64u!==o)throw Error(`linked-device ECDSA source contribution package binding differs`);if(!yn(u.binding.source,s))throw Error(`linked-device ECDSA source contribution signer differs from package binding`);if(!xn(u.binding.target,l))throw Error(`linked-device ECDSA source contribution target differs from package binding`);return{kind:`linked_device_ecdsa_source_contribution_v1`,keyFamily:`ecdsa_secp256k1`,linkSessionId:t,enrollmentId:n,sourceAuthorityId:r,walletKeyId:i,targetDeviceId:a,targetFactorVerificationDigestB64u:o,sourceSigner:s,sourceDerivation:c,target:l,package:u}}function an(e){let t=q(e,[`applicationBindingDigestB64u`,`clientShareRetryCounter`,`ecdsaThresholdKeyId`,`sourceNormalSigning`],`linked-device ECDSA source derivation`),n=t.clientShareRetryCounter;if(typeof n!=`number`||!Number.isSafeInteger(n)||n<0)throw Error(`linked-device ECDSA source derivation retry counter is invalid`);let r=W(t.applicationBindingDigestB64u,`sourceDerivation.applicationBindingDigestB64u`),i=ie(t.sourceNormalSigning),a=re(t.ecdsaThresholdKeyId);if(i.scope.context.application_binding_digest_b64u!==r||i.scope.public_identity.client_share_retry_counter!==n||i.scope.ecdsa_threshold_key_id!==a)throw Error(`linked-device ECDSA source derivation differs from normal signing`);return{applicationBindingDigestB64u:r,clientShareRetryCounter:n,ecdsaThresholdKeyId:a,sourceNormalSigning:i}}function on(e){let t=q(e,[`state`,`binding`,`sourceDerivation`,`targetRelayerPublicKey33B64u`,`thresholdPublicKey33B64u`,`thresholdEthereumAddress20B64u`,`normalSigning`],`linked-device ECDSA source-preserving activation receipt`);if(t.state!==`inactive`)throw Error(`linked-device ECDSA source-preserving activation receipt is not inactive`);let n=dn(t.binding),r=an(t.sourceDerivation),i=h(t.targetRelayerPublicKey33B64u,`targetRelayerPublicKey33B64u`),a=h(t.thresholdPublicKey33B64u,`thresholdPublicKey33B64u`),o=G(t.thresholdEthereumAddress20B64u,20,`thresholdEthereumAddress20B64u`),s=ie(t.normalSigning);return sn({binding:n,sourceDerivation:r,targetRelayerPublicKey33B64u:i,thresholdPublicKey33B64u:a,thresholdEthereumAddress20B64u:o,normalSigning:s}),{state:`inactive`,binding:n,sourceDerivation:r,targetRelayerPublicKey33B64u:i,thresholdPublicKey33B64u:a,thresholdEthereumAddress20B64u:o,normalSigning:s}}function sn(e){let t=e.sourceDerivation.sourceNormalSigning.scope,n=e.normalSigning.scope;if(!i(v(t.material_activation),e.binding.source.activation)||!i(v(n.material_activation),e.binding.target.activation)||t.wallet_id!==n.wallet_id||t.wallet_id!==e.binding.source.activation.materialOwner||n.wallet_id!==e.binding.target.activation.materialOwner||t.ecdsa_threshold_key_id!==n.ecdsa_threshold_key_id||t.signing_root_id!==n.signing_root_id||t.signing_root_version!==n.signing_root_version||t.context.application_binding_digest_b64u!==n.context.application_binding_digest_b64u||t.activation_epoch!==n.activation_epoch||t.public_identity.derivation_client_share_public_key33_b64u!==e.binding.source.clientPublicKey33B64u||t.public_identity.server_public_key33_b64u!==e.binding.source.relayerPublicKey33B64u||t.public_identity.threshold_public_key33_b64u!==e.binding.source.thresholdPublicKey33B64u||t.public_identity.ethereum_address20_b64u!==e.binding.source.thresholdEthereumAddress20B64u||n.public_identity.context_binding_b64u!==t.public_identity.context_binding_b64u||n.public_identity.derivation_client_share_public_key33_b64u!==e.binding.targetClientPublicKey33B64u||n.public_identity.server_public_key33_b64u!==e.targetRelayerPublicKey33B64u||n.public_identity.threshold_public_key33_b64u!==e.thresholdPublicKey33B64u||n.public_identity.ethereum_address20_b64u!==e.thresholdEthereumAddress20B64u||n.public_identity.client_share_retry_counter!==t.public_identity.client_share_retry_counter||n.public_identity.server_share_retry_counter!==t.public_identity.server_share_retry_counter||n.signing_worker.server_id!==e.binding.target.activation.signingWorker||n.signing_worker.key_epoch!==t.signing_worker.key_epoch||n.signing_worker.recipient_encryption_key!==cn(e.binding.target.signingWorkerRecipientPublicKeyB64u))throw Error(`linked-device ECDSA normal signing state differs from its activation receipt`)}function cn(e){let t=f(e);if(t.length!==32||d(t)!==e)throw Error(`linked-device signing-worker recipient key is invalid`);let n=``;for(let e of t)n+=e.toString(16).padStart(2,`0`);return`x25519:${n}`}function R(e,t){let n=ln(e,`${t} client package`);if(n.kind!==`activation_client`||n.deriver!==t)throw Error(`${t} client package is not an activation client package`);return t===`deriver_a`?{kind:`activation_client`,deriver:`deriver_a`,session:n.session,transcript:n.transcript,encapsulated_key:n.encapsulated_key,ciphertext:n.ciphertext}:{kind:`activation_client`,deriver:`deriver_b`,session:n.session,transcript:n.transcript,encapsulated_key:n.encapsulated_key,ciphertext:n.ciphertext}}function ln(e,t){let n=Kt(e);if(!n.ok)throw Error(`${t} ${n.message}`);return n.value}function un(e){let t=q(e,[`binding`,`encryptedDelta`,`encryptedTargetClientShare`],`linked-device ECDSA source contribution package`),n=dn(t.binding),r=mn(t.encryptedDelta,`encryptedDelta`),i=mn(t.encryptedTargetClientShare,`encryptedTargetClientShare`),a=r.bindingDigestB64u;if(i.bindingDigestB64u!==a)throw Error(`linked-device ECDSA source contribution envelope bindings differ`);if(r.recipientPublicKeyB64u!==n.target.signingWorkerRecipientPublicKeyB64u||i.recipientPublicKeyB64u!==n.target.clientRecipientPublicKeyB64u)throw Error(`linked-device ECDSA source contribution envelope recipients differ`);return{binding:n,encryptedDelta:r,encryptedTargetClientShare:i}}function dn(e){let t=q(e,[`linkSessionId`,`enrollmentId`,`sourceAuthorityId`,`source`,`target`,`targetClientPublicKey33B64u`],`linked-device ECDSA source contribution binding`),n=fn(t.source),r=pn(t.target);return bn(n.activation,r.activation),{linkSessionId:K(t.linkSessionId,`binding.linkSessionId`),enrollmentId:K(t.enrollmentId,`binding.enrollmentId`),sourceAuthorityId:K(t.sourceAuthorityId,`binding.sourceAuthorityId`),source:n,target:r,targetClientPublicKey33B64u:h(t.targetClientPublicKey33B64u,`binding.targetClientPublicKey33B64u`)}}function fn(e){let t=q(e,[`activation`,`clientPublicKey33B64u`,`relayerPublicKey33B64u`,`thresholdPublicKey33B64u`,`thresholdEthereumAddress20B64u`],`linked-device ECDSA source signer`);return{activation:z(t.activation,`source.activation`),clientPublicKey33B64u:h(t.clientPublicKey33B64u,`source.clientPublicKey33B64u`),relayerPublicKey33B64u:h(t.relayerPublicKey33B64u,`source.relayerPublicKey33B64u`),thresholdPublicKey33B64u:h(t.thresholdPublicKey33B64u,`source.thresholdPublicKey33B64u`),thresholdEthereumAddress20B64u:G(t.thresholdEthereumAddress20B64u,20,`source.thresholdEthereumAddress20B64u`)}}function pn(e){let t=q(e,[`activation`,`targetDeviceId`,`targetFactorVerificationDigestB64u`,`clientRecipientPublicKeyB64u`,`signingWorkerRecipientPublicKeyB64u`],`linked-device ECDSA target recipient`),n=G(t.clientRecipientPublicKeyB64u,32,`target.clientRecipientPublicKeyB64u`),r=G(t.signingWorkerRecipientPublicKeyB64u,32,`target.signingWorkerRecipientPublicKeyB64u`);if(n===r)throw Error(`linked-device ECDSA target recipients must differ`);return{activation:z(t.activation,`target.activation`),targetDeviceId:U(t.targetDeviceId),targetFactorVerificationDigestB64u:W(t.targetFactorVerificationDigestB64u,`target.targetFactorVerificationDigestB64u`),clientRecipientPublicKeyB64u:n,signingWorkerRecipientPublicKeyB64u:r}}function mn(e,t){let n=q(e,[`kind`,`recipientPublicKeyB64u`,`bindingDigestB64u`,`encappedKeyB64u`,`ciphertextB64u`],`linked-device ECDSA ${t}`);if(n.kind!==Jt)throw Error(`${t}.kind is invalid`);return{kind:Jt,recipientPublicKeyB64u:G(n.recipientPublicKeyB64u,32,`${t}.recipientPublicKeyB64u`),bindingDigestB64u:W(n.bindingDigestB64u,`${t}.bindingDigestB64u`),encappedKeyB64u:G(n.encappedKeyB64u,32,`${t}.encappedKeyB64u`),ciphertextB64u:te(n.ciphertextB64u,`${t}.ciphertextB64u`)}}function hn(e,t){let n=N(e);if(n.operation!==`registration`)throw Error(`${t} must use the registration operation`);return n}function gn(e,t,n,r){if(e.material_activation.activation_id!==n.activationId)throw Error(`${r} activation does not match the target activation`);if(e.material_activation.material_owner!==n.materialOwner)throw Error(`${r} material owner does not match the target activation`);if(e.material_activation.signing_worker!==n.signingWorker)throw Error(`${r} signing worker does not match the target activation`);if(e.session_id.length!==32||String(t).length===0)throw Error(`${r} link binding is invalid`)}function _n(e,t,n){if(e.session_id.length!==32||String(t).length===0)throw Error(`${n} link binding is invalid`)}function vn(e,t){return e.stable_key_context_binding.every((e,n)=>e===t.stable_key_context_binding[n])&&e.material_activation.capability===t.material_activation.capability&&e.material_activation.material_owner===t.material_activation.material_owner&&e.material_activation.key_binding===t.material_activation.key_binding&&e.material_activation.lifecycle_binding===t.material_activation.lifecycle_binding&&e.material_activation.signing_worker===t.material_activation.signing_worker&&e.lifecycle.root_share_epoch===t.lifecycle.root_share_epoch&&e.lifecycle.account_id===t.lifecycle.account_id&&e.lifecycle.signer_set_id===t.lifecycle.signer_set_id&&e.lifecycle.selected_server_id===t.lifecycle.selected_server_id}function yn(e,t){return i(e.activation,t.activation)&&e.clientPublicKey33B64u===t.clientPublicKey33B64u&&e.relayerPublicKey33B64u===t.relayerPublicKey33B64u&&e.thresholdPublicKey33B64u===t.thresholdPublicKey33B64u&&e.thresholdEthereumAddress20B64u===t.thresholdEthereumAddress20B64u}function bn(e,t){if(i(e,t)||e.materialOwner!==t.materialOwner||e.signingWorker!==t.signingWorker)throw Error(`linked-device ECDSA source and target activations are invalid`)}function xn(e,t){return i(e.activation,t.activation)&&e.targetDeviceId===t.targetDeviceId&&e.targetFactorVerificationDigestB64u===t.targetFactorVerificationDigestB64u&&e.clientRecipientPublicKeyB64u===t.clientRecipientPublicKeyB64u&&e.signingWorkerRecipientPublicKeyB64u===t.signingWorkerRecipientPublicKeyB64u}function z(e,t){let n=r(e);if(!n.ok)throw Error(`${t} ${n.error.message}`);return n.value}function B(e){let t=s(K(e,`linkSessionId`));if(!t.ok)throw Error(`linkSessionId ${t.error.message}`);return t.value}function V(e){let t=n(K(e,`enrollmentId`));if(!t.ok)throw Error(`enrollmentId ${t.error.message}`);return t.value}function H(e){let n=t(K(e,`sourceAuthorityId`));if(!n.ok)throw Error(`sourceAuthorityId ${n.error.message}`);return n.value}function Sn(t){let n=e(K(t,`walletKeyId`));if(!n.ok)throw Error(`walletKeyId ${n.error.message}`);return n.value}function U(e){let t=ne(K(e,`targetDeviceId`));if(!t.ok)throw Error(`targetDeviceId ${t.error.message}`);return t.value}function W(e,t){try{return _(e)}catch(e){throw Error(`${t} ${e instanceof Error?e.message:`is invalid`}`)}}function G(e,t,n){if(typeof e!=`string`||!/^[A-Za-z0-9_-]+$/.test(e))throw Error(`${n} must be canonical base64url`);let r;try{r=f(e)}catch{throw Error(`${n} must be canonical base64url`)}if(r.length!==t||d(r)!==e)throw Error(`${n} must decode to ${t} bytes`);return e}function K(e,t){if(typeof e!=`string`||e.length===0||e.trim()!==e||[...e].some(e=>{let t=e.charCodeAt(0);return t<32||t===127}))throw Error(`${t} must be a non-empty visible string`);return e}function q(e,t,n){let r=c(e,n),i=new Set(t),a=Object.keys(r);if(a.length!==t.length||a.some(e=>!i.has(e))||t.some(e=>!Object.prototype.hasOwnProperty.call(r,e)))throw Error(`${n} contains unknown or missing fields`);return r}function Cn(e){return br(e)}function wn(e){return yr(e.signerActivations)}function Tn(e){return vr(e.signerActivations)}function En(e){return e.provenance.kind===`wallet_recovery`}function Dn(e){return{kind:`wallet_ed25519_signer_activation_v1`,signer:e.signer,materialActivation:e.materialActivation}}function On(e){return{kind:`wallet_ecdsa_signer_activation_v1`,signer:e.signer,materialActivation:e.materialActivation}}function kn(e){let t=pe(e.manifest),n=_r(e.materialActivations);if(!ur(t.keyFamilies,n.keyFamilies))throw Error(`wallet signer activation materials must match the signer manifest families`);if(dr(t)){if(!mr(n))throw Error(`Ed25519 signer activation requires one Ed25519 material activation`);return{kind:`wallet_signer_activation_set_v1`,keyFamilies:[`ed25519`],ed25519:Dn({signer:t.signers[0],materialActivation:n.ed25519})}}if(fr(t)){if(!hr(n))throw Error(`ECDSA signer activation requires one ECDSA material activation`);return{kind:`wallet_signer_activation_set_v1`,keyFamilies:[`ecdsa_secp256k1`],ecdsa:On({signer:t.signers[0],materialActivation:n.ecdsa})}}if(!pr(t)||!gr(n))throw Error(`wallet signer activation set has unsupported families`);if(n.ed25519.activationId===n.ecdsa.activationId)throw Error(`wallet signer activation references must be distinct`);return{kind:`wallet_signer_activation_set_v1`,keyFamilies:[`ed25519`,`ecdsa_secp256k1`],ed25519:Dn({signer:t.signers[0],materialActivation:n.ed25519}),ecdsa:On({signer:t.signers[1],materialActivation:n.ecdsa})}}function An(e){try{let t=l(e,`WalletSignerActivationSetV1`);if(t.kind!==`wallet_signer_activation_set_v1`)return $(`wallet signer activation set kind is unsupported`);if(!Object.prototype.hasOwnProperty.call(t,`keyFamilies`))return $(`WalletSignerActivationSetV1.keyFamilies is required`);let n=lr(t.keyFamilies,`WalletSignerActivationSetV1.keyFamilies`);if(n.length===1&&n[0]===`ed25519`)return J(t,[`kind`,`keyFamilies`,`ed25519`],`WalletSignerActivationSetV1`),{ok:!0,value:{kind:`wallet_signer_activation_set_v1`,keyFamilies:[`ed25519`],ed25519:Zn(t.ed25519,`ed25519`)}};if(n.length===1&&n[0]===`ecdsa_secp256k1`)return J(t,[`kind`,`keyFamilies`,`ecdsa`],`WalletSignerActivationSetV1`),{ok:!0,value:{kind:`wallet_signer_activation_set_v1`,keyFamilies:[`ecdsa_secp256k1`],ecdsa:Qn(t.ecdsa,`ecdsa`)}};J(t,[`kind`,`keyFamilies`,`ed25519`,`ecdsa`],`WalletSignerActivationSetV1`);let r=Zn(t.ed25519,`ed25519`),i=Qn(t.ecdsa,`ecdsa`);return r.materialActivation.activationId===i.materialActivation.activationId?$(`wallet signer activation references must be distinct`):{ok:!0,value:{kind:`wallet_signer_activation_set_v1`,keyFamilies:[`ed25519`,`ecdsa_secp256k1`],ed25519:r,ecdsa:i}}}catch(e){return $(xr(e,`wallet signer activation set is invalid`))}}function jn(e){let t=[y(`seams/wallet-signer-activation-set/v1`,`domain`),y(e.kind,`kind`),se(e.keyFamilies.length,`keyFamilies`)];for(let n of e.keyFamilies)t.push(y(n,`keyFamilies.item`));return(vr(e)||br(e))&&t.push(x(er(e.ed25519),`ed25519`)),(yr(e)||br(e))&&t.push(x(tr(e.ecdsa),`ecdsa`)),S(t)}async function Mn(e){return _(d(await u(jn(e))))}function Nn(e){return{kind:`wallet_authority_v1`,authorityId:e.authorityId,walletId:e.walletId,principal:e.principal,provenance:e.provenance,permissions:e.permissions,signerActivations:e.signerActivations,signerActivationSetDigestB64u:e.signerActivationSetDigestB64u,authorityDigestB64u:e.authorityDigestB64u,revocationEpoch:e.revocationEpoch,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs}}function Pn(e){return Kn(e),{...Nn(e),state:`pending_local_install`,localInstallPackageSetDigestB64u:e.localInstallPackageSetDigestB64u}}function Fn(e){return Kn(e),{...Nn(e),state:`active`,activatedAtMs:e.activatedAtMs}}async function In(e){let t=e.authority.signerActivations;if(!t.ed25519)throw Error(`active Wallet Authority has no Ed25519 material activation to replace`);let n=t.ecdsa?kn({manifest:C([t.ed25519.signer,t.ecdsa.signer]),materialActivations:{keyFamilies:[`ed25519`,`ecdsa_secp256k1`],ed25519:e.materialActivation,ecdsa:t.ecdsa.materialActivation}}):kn({manifest:C([t.ed25519.signer]),materialActivations:{keyFamilies:[`ed25519`],ed25519:e.materialActivation}}),r=await Mn(n),i={kind:e.authority.kind,authorityId:e.authority.authorityId,walletId:e.authority.walletId,principal:e.authority.principal,provenance:e.authority.provenance,permissions:e.authority.permissions,signerActivations:n,signerActivationSetDigestB64u:r,authorityDigestB64u:e.authority.authorityDigestB64u,revocationEpoch:e.authority.revocationEpoch,createdAtMs:e.authority.createdAtMs,updatedAtMs:Math.max(e.authority.updatedAtMs,e.updatedAtMs),state:`active`,activatedAtMs:e.authority.activatedAtMs};return Fn({...i,authorityDigestB64u:await Hn(i)})}function Ln(e){return Kn(e),{...Nn(e),state:`active`,activatedAtMs:e.activatedAtMs}}function Rn(e){return Kn(e),{...Nn(e),state:`revoked`,activatedAtMs:e.activatedAtMs,revokedAtMs:e.revokedAtMs}}const zn=[`kind`,`authorityId`,`walletId`,`principal`,`provenance`,`permissions`,`signerActivations`,`signerActivationSetDigestB64u`,`authorityDigestB64u`,`revocationEpoch`,`createdAtMs`,`updatedAtMs`,`state`];function Bn(e){try{let t=l(e,`WalletAuthorityV1`),n=Gn(t);switch(t.state){case`pending_local_install`:return J(t,[...zn,`localInstallPackageSetDigestB64u`],`WalletAuthorityV1`),{ok:!0,value:Pn({kind:`wallet_authority_v1`,...n,state:`pending_local_install`,localInstallPackageSetDigestB64u:Y(t.localInstallPackageSetDigestB64u,`localInstallPackageSetDigestB64u`)})};case`active`:return J(t,[...zn,`activatedAtMs`],`WalletAuthorityV1`),{ok:!0,value:Fn({kind:`wallet_authority_v1`,...n,state:`active`,activatedAtMs:X(t.activatedAtMs,`activatedAtMs`)})};case`revoked`:return J(t,[...zn,`activatedAtMs`,`revokedAtMs`],`WalletAuthorityV1`),{ok:!0,value:Rn({kind:`wallet_authority_v1`,...n,state:`revoked`,activatedAtMs:X(t.activatedAtMs,`activatedAtMs`),revokedAtMs:X(t.revokedAtMs,`revokedAtMs`)})};default:return $(`WalletAuthorityV1.state is unsupported`)}}catch(e){return $(xr(e,`wallet authority is invalid`))}}function Vn(e){return S([y(`seams/wallet-authority/v1`,`domain`),y(e.kind,`kind`),y(e.authorityId,`authorityId`),y(e.walletId,`walletId`),x(ar(e.principal),`principal`),x(or(e.provenance),`provenance`),x(sr(e.permissions),`permissions`),ce(e.signerActivationSetDigestB64u,`signerActivationSetDigestB64u`),y(e.state,`state`),le(e.revocationEpoch,`revocationEpoch`)])}async function Hn(e){return _(d(await u(Vn(e))))}async function Un(e){return await Mn(e.signerActivations)===e.signerActivationSetDigestB64u?await Hn(e)===e.authorityDigestB64u:!1}async function Wn(e,t){let[n,r]=await Promise.all([Un(e),Un(t)]);return n&&r&&e.authorityDigestB64u===t.authorityDigestB64u&&e.signerActivationSetDigestB64u===t.signerActivationSetDigestB64u&&e.createdAtMs===t.createdAtMs&&e.updatedAtMs===t.updatedAtMs&&e.activatedAtMs===t.activatedAtMs}function Gn(e){if(e.kind!==`wallet_authority_v1`)throw Error(`WalletAuthorityV1.kind is unsupported`);let n=Q(t(e.authorityId),`authorityId`),r=Q(o(e.walletId),`walletId`),i=qn(e.principal),a=Jn(e.provenance),s=Q(ee(e.permissions),`permissions`),c=Q(An(e.signerActivations),`signerActivations`),l=Y(e.signerActivationSetDigestB64u,`signerActivationSetDigestB64u`),u=Y(e.authorityDigestB64u,`authorityDigestB64u`),d=X(e.revocationEpoch,`revocationEpoch`),f=X(e.createdAtMs,`createdAtMs`),p=X(e.updatedAtMs,`updatedAtMs`);return Xn(c,r),{authorityId:n,walletId:r,principal:i,provenance:a,permissions:s,signerActivations:c,signerActivationSetDigestB64u:l,authorityDigestB64u:u,revocationEpoch:d,createdAtMs:f,updatedAtMs:p}}function Kn(e){if(e.kind!==`wallet_authority_v1`)throw Error(`wallet authority kind is unsupported`);if(!Number.isSafeInteger(e.revocationEpoch)||e.revocationEpoch<0)throw Error(`wallet authority revocationEpoch must be a non-negative safe integer`);if(Z(e.createdAtMs,`createdAtMs`),Z(e.updatedAtMs,`updatedAtMs`),e.updatedAtMs<e.createdAtMs)throw Error(`wallet authority updatedAtMs cannot precede createdAtMs`);switch(Y(e.signerActivationSetDigestB64u,`signerActivationSetDigestB64u`),Y(e.authorityDigestB64u,`authorityDigestB64u`),Xn(e.signerActivations,e.walletId),Yn(e.provenance),e.state){case`pending_local_install`:Y(e.localInstallPackageSetDigestB64u,`localInstallPackageSetDigestB64u`);break;case`active`:Z(e.activatedAtMs,`activatedAtMs`);break;case`revoked`:if(Z(e.activatedAtMs,`activatedAtMs`),Z(e.revokedAtMs,`revokedAtMs`),e.revokedAtMs<e.activatedAtMs)throw Error(`revokedAtMs cannot precede activatedAtMs`);break}}function qn(e){let t=cr(e,[`kind`,`deviceId`],`WalletAuthorityPrincipalV1`);if(t.kind!==`owner_device`)throw Error(`wallet authority principal kind is unsupported`);return{kind:`owner_device`,deviceId:Q(ne(t.deviceId),`deviceId`)}}function Jn(e){let r=l(e,`WalletAuthorityProvenanceV1`);switch(r.kind){case`wallet_registration`:return J(r,[`kind`],`WalletAuthorityProvenanceV1`),{kind:`wallet_registration`};case`device_link`:return J(r,[`kind`,`enrollmentId`,`sourceAuthorityId`,`linkSessionId`],`WalletAuthorityProvenanceV1`),{kind:`device_link`,enrollmentId:Q(n(r.enrollmentId),`enrollmentId`),sourceAuthorityId:Q(t(r.sourceAuthorityId),`sourceAuthorityId`),linkSessionId:Q(s(r.linkSessionId),`linkSessionId`)};case`wallet_recovery`:return J(r,[`kind`,`recoveryOperationId`,`continuityAuthorityId`],`WalletAuthorityProvenanceV1`),{kind:`wallet_recovery`,recoveryOperationId:Q(a(r.recoveryOperationId),`recoveryOperationId`),continuityAuthorityId:Q(t(r.continuityAuthorityId),`continuityAuthorityId`)};default:throw Error(`wallet authority provenance kind is unsupported`)}}function Yn(e){switch(e.kind){case`wallet_registration`:return;case`device_link`:if(!e.enrollmentId||!e.sourceAuthorityId||!e.linkSessionId)throw Error(`device-link provenance requires every audit identity`);return;case`wallet_recovery`:if(!e.recoveryOperationId||!e.continuityAuthorityId)throw Error(`wallet-recovery provenance requires every audit identity`);return}Sr(e,`wallet authority provenance`)}function Xn(e,t){if(vr(e)){if(e.ed25519.signer.walletId!==t)throw Error(`Ed25519 signer activation uses a different wallet id`);return}if(yr(e)){if(e.ecdsa.signer.walletId!==t)throw Error(`ECDSA signer activation uses a different wallet id`);return}if(br(e)){if(e.ed25519.signer.walletId!==t||e.ecdsa.signer.walletId!==t)throw Error(`signer activations must use the authority wallet id`);return}throw Error(`wallet signer activation families are unsupported`)}function Zn(e,t){let n=cr(e,[`kind`,`signer`,`materialActivation`],t);if(n.kind!==`wallet_ed25519_signer_activation_v1`)throw Error(`${t}.kind is invalid`);let i=$n(n.signer,`ed25519`,`${t}.signer`);if(!dr(i))throw Error(`${t}.signer is not Ed25519`);return Dn({signer:i.signers[0],materialActivation:Q(r(n.materialActivation),`${t}.materialActivation`)})}function Qn(e,t){let n=cr(e,[`kind`,`signer`,`materialActivation`],t);if(n.kind!==`wallet_ecdsa_signer_activation_v1`)throw Error(`${t}.kind is invalid`);let i=$n(n.signer,`ecdsa_secp256k1`,`${t}.signer`);if(!fr(i))throw Error(`${t}.signer is not ECDSA`);return On({signer:i.signers[0],materialActivation:Q(r(n.materialActivation),`${t}.materialActivation`)})}function $n(e,t,n){return pe({kind:`exact_administered_signer_manifest_v1`,keyFamilies:[t],signers:[e]})}function er(e){return S([y(e.kind,`ed25519.kind`),x(nr(e.signer),`ed25519.signer`),x(ir(e.materialActivation),`ed25519.materialActivation`)])}function tr(e){return S([y(e.kind,`ecdsa.kind`),x(rr(e.signer),`ecdsa.signer`),x(ir(e.materialActivation),`ecdsa.materialActivation`)])}function nr(e){return S([y(e.kind,`ed25519.signer.kind`),y(e.keyFamily,`ed25519.signer.keyFamily`),y(e.walletId,`ed25519.signer.walletId`),y(e.walletKeyId,`ed25519.signer.walletKeyId`),x(oe(e.registeredPublicKeyB64u,`ed25519.signer.registeredPublicKeyB64u`),`ed25519.signer.registeredPublicKeyB64u`)])}function rr(e){return S([y(e.kind,`ecdsa.signer.kind`),y(e.keyFamily,`ecdsa.signer.keyFamily`),y(e.walletId,`ecdsa.signer.walletId`),y(e.walletKeyId,`ecdsa.signer.walletKeyId`),x(oe(e.thresholdPublicKey33B64u,`ecdsa.signer.thresholdPublicKey33B64u`),`ecdsa.signer.thresholdPublicKey33B64u`),y(e.evmAddress,`ecdsa.signer.evmAddress`)])}function ir(e){return S([y(e.kind,`materialActivation.kind`),y(e.activationId,`materialActivation.activationId`),y(e.capability,`materialActivation.capability`),y(e.materialOwner,`materialActivation.materialOwner`),y(e.keyBinding,`materialActivation.keyBinding`),y(e.lifecycleBinding,`materialActivation.lifecycleBinding`),y(e.signingWorker,`materialActivation.signingWorker`)])}function ar(e){return S([y(e.kind,`principal.kind`),y(e.deviceId,`principal.deviceId`)])}function or(e){switch(e.kind){case`wallet_registration`:return y(e.kind,`provenance.kind`);case`device_link`:return S([y(e.kind,`provenance.kind`),y(e.enrollmentId,`provenance.enrollmentId`),y(e.sourceAuthorityId,`provenance.sourceAuthorityId`),y(e.linkSessionId,`provenance.linkSessionId`)]);case`wallet_recovery`:return S([y(e.kind,`provenance.kind`),y(e.recoveryOperationId,`provenance.recoveryOperationId`),y(e.continuityAuthorityId,`provenance.continuityAuthorityId`)])}return Sr(e,`wallet authority provenance`)}function sr(e){let t=[se(e.length,`permissions`)];for(let n of e)t.push(x(y(n,`permissions.item`),`permissions.item`));return S(t)}function cr(e,t,n){let r=l(e,n);return J(r,t,n),r}function J(e,t,n){let r=new Set(t),i=Object.keys(e);if(i.length!==t.length)throw Error(`${n} contains unexpected fields`);for(let e of i)if(!r.has(e))throw Error(`${n}.${e} is not allowed`);for(let r of t)if(!Object.prototype.hasOwnProperty.call(e,r))throw Error(`${n}.${r} is required`)}function lr(e,t){if(!Array.isArray(e))throw Error(`${t} must be an array`);if(e.length===1&&e[0]===`ed25519`)return[`ed25519`];if(e.length===1&&e[0]===`ecdsa_secp256k1`)return[`ecdsa_secp256k1`];if(e.length===2&&e[0]===`ed25519`&&e[1]===`ecdsa_secp256k1`)return[`ed25519`,`ecdsa_secp256k1`];throw Error(`${t} must use canonical family order`)}function ur(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function dr(e){return e.keyFamilies.length===1&&e.keyFamilies[0]===`ed25519`}function fr(e){return e.keyFamilies.length===1&&e.keyFamilies[0]===`ecdsa_secp256k1`}function pr(e){return e.keyFamilies.length===2}function mr(e){return e.keyFamilies.length===1&&e.keyFamilies[0]===`ed25519`}function hr(e){return e.keyFamilies.length===1&&e.keyFamilies[0]===`ecdsa_secp256k1`}function gr(e){return e.keyFamilies.length===2}function _r(e){if(mr(e))return{keyFamilies:[`ed25519`],ed25519:Q(r(e.ed25519),`materialActivations.ed25519`)};if(hr(e))return{keyFamilies:[`ecdsa_secp256k1`],ecdsa:Q(r(e.ecdsa),`materialActivations.ecdsa`)};if(gr(e))return{keyFamilies:[`ed25519`,`ecdsa_secp256k1`],ed25519:Q(r(e.ed25519),`materialActivations.ed25519`),ecdsa:Q(r(e.ecdsa),`materialActivations.ecdsa`)};throw Error(`wallet signer activation materials are unsupported`)}function vr(e){return e.keyFamilies.length===1&&e.keyFamilies[0]===`ed25519`}function yr(e){return e.keyFamilies.length===1&&e.keyFamilies[0]===`ecdsa_secp256k1`}function br(e){return e.keyFamilies.length===2}function Y(e,t){try{return _(e)}catch(e){throw Error(`${t} ${xr(e,`is invalid`)}`)}}function X(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0)throw Error(`${t} must be a non-negative safe integer`);return e}function Z(e,t){if(!Number.isSafeInteger(e)||e<0)throw Error(`${t} must be a non-negative safe integer`)}function Q(e,t){if(e.ok)return e.value;throw Error(`${t} ${e.error.message}`)}function $(e){return{ok:!1,error:{code:`invalid`,message:e}}}function xr(e,t){return e instanceof Error?e.message:t}function Sr(e,t){throw Error(`${t} branch is unsupported: ${String(e)}`)}async function Cr(e,t,n){let r=await Mn(t),i={kind:`wallet_authority_v1`,authorityId:e.authorityId,walletId:e.walletId,principal:e.principal,provenance:e.provenance,permissions:e.permissions,signerActivations:t,signerActivationSetDigestB64u:r,authorityDigestB64u:e.authorityDigestB64u,revocationEpoch:e.revocationEpoch,createdAtMs:e.createdAtMs,updatedAtMs:Math.max(e.updatedAtMs,n),state:`active`,activatedAtMs:e.activatedAtMs};return Ln({...i,authorityDigestB64u:await Hn(i)})}async function wr(e){if(e.ed25519.signer.walletId!==e.authority.walletId)throw Error(`NEAR signer belongs to a different wallet authority`);let t=e.authority.signerActivations.ecdsa,n=e.ed25519.signer,r=kn({manifest:C([n,t.signer]),materialActivations:{keyFamilies:[`ed25519`,`ecdsa_secp256k1`],ed25519:e.ed25519.materialActivation,ecdsa:t.materialActivation}});if(!Cn(r))throw Error(`Deferred Ed25519 activation did not produce a combined signer activation set`);return Cr(e.authority,r,e.now)}function Tr(e,t){return e.authorityId===t.authorityId&&e.walletId===t.walletId&&e.revocationEpoch===t.revocationEpoch&&e.createdAtMs===t.createdAtMs&&e.activatedAtMs===t.activatedAtMs&&d(ar(e.principal))===d(ar(t.principal))&&d(or(e.provenance))===d(or(t.provenance))&&d(sr(e.permissions))===d(sr(t.permissions))}function Er(e,t){return Tn(e)&&Cn(t.signerActivations)&&Tr(e,t)&&d(er(e.signerActivations.ed25519))===d(er(t.signerActivations.ed25519))}function Dr(e,t){return wn(e)&&Cn(t.signerActivations)&&e.provenance.kind===`wallet_registration`&&Tr(e,t)&&d(tr(e.signerActivations.ecdsa))===d(tr(t.signerActivations.ecdsa))}export{k as $,Ae as A,Ft as B,xn as C,je as D,Ie as E,M as F,Wt as G,Rt as H,st as I,Bt as J,jt as K,Kt as L,Oe as M,Ne as N,ke as O,F as P,Re as Q,Nt as R,yn as S,Fe as T,Vt as U,it as V,Gt as W,At as X,Ut as Y,Mt as Z,on as _,wn as a,$t as b,Cn as c,Bn as d,He as et,An as f,mn as g,Un as h,wr as i,De as j,Me as k,Er as l,Wn as m,Mn as n,pe as nt,Tn as o,In as p,Lt as q,jn as r,En as s,Hn as t,Ee as tt,Dr as u,Xt as v,Pe as w,Zt as x,en as y,Pt as z};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{V as e,i as t}from"./domainIds-t1lp25yU.js";import{i as n}from"./base64-BmKR3UqU.js";import{r}from"./secureRandomId-8LSc91aN.js";import{X as i}from"./activeWalletSession-BJ4B-nJo.js";import{i as a,r as o}from"./canonicalPrimitives-Jd3i_Ngz.js";import{n as s}from"./presignatures-CkhuZ0YQ.js";import{A as c,Et as l,Nt as u,S as d,St as f,Tt as p,ct as m,mt as h,pt as g}from"./digestEncoding-34kXJoJr.js";import{A as _,B as v,C as y,I as b,M as x,a as S,h as C,i as w,j as T,o as E,r as D,z as O}from"./ecdsaCapabilityManifest--1Ztngfx.js";import{f as k,i as A,m as j,p as M}from"./indexedDB-CA4tGqkr.js";import{F as N,N as P,P as F}from"./walletOwnershipGeneration-BZc6UKqX.js";import{C as I,p as L,w as R}from"./emailOtpEcdsaDerivationIdentity-Qd4pBwHv.js";import{i as z,n as B}from"./profileAccountProjection-dvLchPBo.js";import{F as V,I as H,P as U}from"./accountLifecycle-B5a9SCM7.js";async function W(t,n){let r=e(n.explicitProfileId||``),i=e(n.explicitChainIdKey||``).toLowerCase(),a=e(n.explicitAccountAddress||``).toLowerCase();if(r||i||a){if(!r||!i||!a)throw Error(`IndexedDBManager: profileId, chainIdKey, and accountAddress are required for explicit key target writes`);let o=n.accountRefs.find(t=>e(t.chainIdKey||``).toLowerCase()===i);if(o){let e=await t.resolveProfileAccountContext(o).catch(()=>null);if(e?.profileId&&String(e.profileId).trim()!==r)throw Error(`IndexedDBManager: Explicit key target (${r}, ${i}, ${o.accountAddress}) mismatches mapped profile ${String(e.profileId).trim()}`)}return{profileId:r,chainIdKey:i,accountAddress:a}}let o=await B(t,n.accountRefs);return o?.profileId?{profileId:o.profileId,chainIdKey:o.accountRef.chainIdKey,accountAddress:o.accountRef.accountAddress}:null}async function G(e){let t=await W(e.deps.clientDB,{accountRefs:e.accountRefs});return!t?.profileId||!t.chainIdKey?null:e.deps.keyMaterialStore.getKeyMaterial(t.profileId,e.signerSlot,t.chainIdKey,e.keyKind)}async function K(t,n){if(!Number.isSafeInteger(n.signerSlot)||n.signerSlot<1)throw Error(`IndexedDBManager: Invalid signerSlot for key write`);let r=e(n.keyKind||``);if(!r)throw Error(`IndexedDBManager: Missing keyKind for key write`);let i=e(n.algorithm||``).toLowerCase();if(!i)throw Error(`IndexedDBManager: Missing algorithm for key write`);let a=e(n.publicKey||``);if(!a)throw Error(`IndexedDBManager: Missing publicKey for key write`);let o=e(n.signerId||``);if(!o)throw Error(`IndexedDBManager: Missing signerId for key write`);let s=await W(t.clientDB,n);if(!s?.profileId||!s.chainIdKey||!s.accountAddress)throw Error(`IndexedDBManager: Missing profile/account mapping for key write. Persist profile/account first or pass explicit profileId + chainIdKey.`);let c=Number.isSafeInteger(n.schemaVersion)&&typeof n.schemaVersion==`number`&&n.schemaVersion>=1?n.schemaVersion:1,l={profileId:s.profileId,signerSlot:n.signerSlot,chainIdKey:s.chainIdKey,accountAddress:s.accountAddress,keyKind:r,algorithm:i,publicKey:a,signerId:o,timestamp:typeof n.timestamp==`number`?n.timestamp:Date.now(),schemaVersion:c},u=e(n.wrapKeySalt||``);u&&(l.wrapKeySalt=u),n.payload&&(l.payload=n.payload),await t.keyMaterialStore.storeKeyMaterial(l)}async function q(e){let t=await W(e.store,{accountRefs:z(e.binding.nearAccountId)});if(!t)throw Error(`Wallet custody Ed25519 material requires a persisted wallet profile`);await e.store.storeKeyMaterial(H({target:t,...e}))}async function J(e){let t=await W(e.store,{accountRefs:z(e.nearAccountId)});t&&await e.store.deleteKeyMaterial(t.profileId,e.signerSlot,t.chainIdKey,U)}async function Y(e){let t=await G({deps:{clientDB:e.store,keyMaterialStore:e.store},accountRefs:z(e.nearAccountId),signerSlot:e.signerSlot,keyKind:U});if(!t)return{kind:`absent`};let n=t.payloadEnvelope;if(!n?.ciphertext||!n.nonce)return{kind:`unusable`,reason:`cached custody material has no sealed payload`};if(n.alg!==`chacha20poly1305-hkdf-sha256-wallet-custody-seed-v1`)return{kind:`unusable`,reason:`cached custody material was sealed under another key`};let r=t.payload?.binding;if(!r||typeof r!=`object`)return{kind:`unusable`,reason:`cached custody material has no binding`};let i=r;if(i.kind!==`wallet_custody_ed25519_active_client_v1`)return{kind:`unusable`,reason:`cached custody material is not a wallet custody record`};try{V(i)}catch(e){return{kind:`unusable`,reason:e instanceof Error?e.message:`cached custody binding is incomplete`}}let a=String(e.expectedRegisteredPublicKeyB64u||``).trim();return a&&a!==String(i.registeredPublicKeyB64u||``).trim()?{kind:`unusable`,reason:`cached custody material is for another key set`}:{kind:`found`,material:{binding:i,sealed:{ciphertextB64u:n.ciphertext,nonceB64u:n.nonce}}}}function X(e){let s=m(e.authority);if(!s||String(s.walletId)!==String(e.walletId))throw Error(`ECDSA custody import authority is invalid`);let k=d(e.publicCapability),A=c(e.activationReceipt),j=u(A.ecdsa_activation.material_activation);if(!t(j,u(k.material_activation)))throw Error(`ECDSA custody continuity changed the material activation`);let M=[R(e.participantIds[0]),R(e.participantIds[1])],N=E({keyHandle:O(e.keyHandle),ecdsaThresholdKeyId:b(e.ecdsaThresholdKeyId),clientVerifyingPublicKey33B64u:_(e.publicFacts.derivationClientSharePublicKey33B64u),participantIds:M,relayerKeyId:v(e.relayerKeyId)}),P=C({capability:j.capability,signerId:f(r(`ecdsa-signer`,32,`ECDSA custody signer identities`)),authority:s,scope:w({targetMemberships:e.chainTargets}),materialOwner:j.materialOwner,signingRootId:p(e.signingRootId),signingRootVersion:l(e.signingRootVersion)}),F=D({targetManifest:S({manifestId:g(r(`ecdsa-manifest`,32,`ECDSA custody manifest identities`)),manifestRevision:h(1)}),signer:P,roleLocalBinding:N,bindingDigest:T(e.publicFacts.contextBinding32B64u),durableMaterialRef:x(r(`ecdsa-role-local-material`,32,`ECDSA custody material identities`))}),z=e.publicFacts.ethereumAddress,B=L({keyHandle:I(e.keyHandle),publicKeyB64u:e.publicFacts.groupPublicKey33B64u,participantIds:M,thresholdOwnerAddress:z}),V=y({walletId:s.walletId,chainTarget:e.chainTargets[0],keyHandle:N.keyHandle,ecdsaThresholdKeyId:N.ecdsaThresholdKeyId,signingRootId:P.signingRootId,signingRootVersion:P.signingRootVersion,applicationBindingDigestB64u:k.context.application_binding_digest_b64u,clientParticipantId:M[0],relayerParticipantId:M[1],participantIds:M,contextBinding32B64u:e.publicFacts.contextBinding32B64u,derivationClientSharePublicKey33B64u:e.publicFacts.derivationClientSharePublicKey33B64u,relayerPublicKey33B64u:e.publicFacts.relayerPublicKey33B64u,groupPublicKey33B64u:e.publicFacts.groupPublicKey33B64u,ethereumAddress:z,publicCapability:k}),H={kind:`router_ab_ecdsa_derivation_normal_signing_v1`,scope:{wallet_id:String(s.walletId),ecdsa_threshold_key_id:String(N.ecdsaThresholdKeyId),signing_root_id:String(P.signingRootId),signing_root_version:String(P.signingRootVersion),context:A.ecdsa_activation.context,public_identity:A.ecdsa_activation.public_identity,material_activation:A.ecdsa_activation.material_activation,signing_worker:A.ecdsa_activation.signing_worker,activation_epoch:A.ecdsa_activation.activation_epoch}};return{activationBinding:F,serverCommit:{correlationId:A.activation_correlation_id,activationRequestDigest:o(n(Uint8Array.from(A.activation_request_digest.bytes))),serverGeneration:A.server_generation,protocolReceipt:A},readyStateBlobB64u:e.readyStateBlobB64u,registeredPublicFacts:B,roleLocalPublicFacts:V,routerAbEcdsaDerivationNormalSigning:H,runtimePolicyScope:i(e.runtimePolicyScope),committedAt:a(new Date(A.ecdsa_activation.activated_at_ms).toISOString())}}async function Z(e){return j(X(e))}async function Q(e){return await M(e.store,X(e),t=>e.store.persistPreparedWalletCustodyEcdsaContinuity(t))}async function $(e){let t=new A(s);for(let n of e.walletAuthMethodIds){let r=await t.getWalletAuthMethodV2(String(n));if(!r||r.status!==`active`||r.walletId!==e.walletId||r.walletAuthorityId!==e.walletAuthorityId)throw Error(`ECDSA custody continuity method ${String(n)} is not an active member of the wallet authority`)}}async function ee(e){if(e.targetAuthority.walletId!==e.walletId||e.targetAuthority.walletAuthMethodId===e.sourceWalletAuthMethodId)throw Error(`ECDSA custody continuity target is invalid`);await $({walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,walletAuthMethodIds:[e.sourceWalletAuthMethodId,e.targetAuthority.walletAuthMethodId]});let t=new k,n=await t.listActiveWalletCapabilitySubjects(e.walletId);if(n.kind!==`resolved`)throw Error(`ECDSA custody continuity inventory is ${n.kind}`);if(n.subjects.length===0)return;let r=n.subjects.filter(t=>t.authority.walletAuthMethodId===e.sourceWalletAuthMethodId);if(r.length===0)throw Error(`ECDSA custody continuity found no active capability for source method ${String(e.sourceWalletAuthMethodId)} among [${n.subjects.map(e=>String(e.authority.walletAuthMethodId)).join(`, `)}]`);for(let n of r){let r=await t.lookup(n);if(r.kind!==`active`)throw Error(`ECDSA custody continuity source is ${r.kind}`);let i={capability:n.capability,authority:e.targetAuthority},a=await t.lookup(i);if(a.kind===`active`){let e=a.manifest.durableMaterial,t=r.manifest.durableMaterial;if(e.activationDigest!==t.activationDigest||e.bindingDigest!==t.bindingDigest||e.roleLocalBinding.ecdsaThresholdKeyId!==t.roleLocalBinding.ecdsaThresholdKeyId||!F(e.roleLocalBinding,t.roleLocalBinding)||!N(e.roleLocalPublicFacts,t.roleLocalPublicFacts)||!P(a.manifest.signer.registeredPublicFacts,r.manifest.signer.registeredPublicFacts))throw Error(`ECDSA custody continuity target conflicts with source material`);continue}if(a.kind!==`missing`)throw Error(`ECDSA custody continuity target is ${a.kind}`);let o=await t.openActiveMaterialLookup(r);if(o.kind!==`active`)throw Error(`ECDSA custody continuity material is ${o.kind}`);let s=o.manifest,c=s.durableMaterial.roleLocalPublicFacts,l=await Q({store:t,authority:e.targetAuthority,chainTargets:s.signer.scope.targetMemberships,walletId:String(e.walletId),keyHandle:c.keyHandle,ecdsaThresholdKeyId:String(c.ecdsaThresholdKeyId),signingRootId:String(c.signingRootId),signingRootVersion:String(c.signingRootVersion),relayerKeyId:String(s.durableMaterial.roleLocalBinding.relayerKeyId),participantIds:c.participantIds,publicCapability:c.publicCapability,activationReceipt:s.activation.serverActivation.serverActivationReceipt.protocolReceipt,runtimePolicyScope:s.durableMaterial.runtimePolicyScope,readyStateBlobB64u:o.readyStateBlobB64u,publicFacts:{contextBinding32B64u:c.contextBinding32B64u,derivationClientSharePublicKey33B64u:c.derivationClientSharePublicKey33B64u,clientVerifyingShare33B64u:c.publicCapability.public_identity.derivation_client_share_public_key33_b64u,relayerPublicKey33B64u:c.relayerPublicKey33B64u,groupPublicKey33B64u:c.groupPublicKey33B64u,ethereumAddress:c.ethereumAddress,clientShareRetryCounter:c.publicCapability.public_identity.client_share_retry_counter,relayerShareRetryCounter:c.publicCapability.public_identity.server_share_retry_counter}});if(l.kind!==`committed`)throw Error(`ECDSA custody continuity import is ${l.kind}`)}}export{Y as a,W as c,J as i,K as l,Q as n,q as o,Z as r,G as s,ee as t};
|
|
1
|
+
import{V as e,i as t}from"./domainIds-t1lp25yU.js";import{i as n}from"./base64-BmKR3UqU.js";import{r}from"./secureRandomId-8LSc91aN.js";import{X as i}from"./activeWalletSession-HAOgRKzn.js";import{i as a,r as o}from"./canonicalPrimitives-DKeS3M40.js";import{n as s}from"./presignatures-B9KnQyfE.js";import{A as c,Et as l,Nt as u,S as d,St as f,Tt as p,ct as m,mt as h,pt as g}from"./digestEncoding-Rx8Vjy4J.js";import{A as _,B as v,C as y,I as b,M as x,a as S,h as C,i as w,j as T,o as E,r as D,z as O}from"./ecdsaCapabilityManifest-BbPXL-qh.js";import{f as k,i as A,m as j,p as M}from"./indexedDB-BqsYXybq.js";import{F as N,N as P,P as F}from"./walletOwnershipGeneration-B3uE9GRG.js";import{C as I,p as L,w as R}from"./emailOtpEcdsaDerivationIdentity-DJmMyqL-.js";import{i as z,n as B}from"./profileAccountProjection-dvLchPBo.js";import{F as V,I as H,P as U}from"./accountLifecycle-B5a9SCM7.js";async function W(t,n){let r=e(n.explicitProfileId||``),i=e(n.explicitChainIdKey||``).toLowerCase(),a=e(n.explicitAccountAddress||``).toLowerCase();if(r||i||a){if(!r||!i||!a)throw Error(`IndexedDBManager: profileId, chainIdKey, and accountAddress are required for explicit key target writes`);let o=n.accountRefs.find(t=>e(t.chainIdKey||``).toLowerCase()===i);if(o){let e=await t.resolveProfileAccountContext(o).catch(()=>null);if(e?.profileId&&String(e.profileId).trim()!==r)throw Error(`IndexedDBManager: Explicit key target (${r}, ${i}, ${o.accountAddress}) mismatches mapped profile ${String(e.profileId).trim()}`)}return{profileId:r,chainIdKey:i,accountAddress:a}}let o=await B(t,n.accountRefs);return o?.profileId?{profileId:o.profileId,chainIdKey:o.accountRef.chainIdKey,accountAddress:o.accountRef.accountAddress}:null}async function G(e){let t=await W(e.deps.clientDB,{accountRefs:e.accountRefs});return!t?.profileId||!t.chainIdKey?null:e.deps.keyMaterialStore.getKeyMaterial(t.profileId,e.signerSlot,t.chainIdKey,e.keyKind)}async function K(t,n){if(!Number.isSafeInteger(n.signerSlot)||n.signerSlot<1)throw Error(`IndexedDBManager: Invalid signerSlot for key write`);let r=e(n.keyKind||``);if(!r)throw Error(`IndexedDBManager: Missing keyKind for key write`);let i=e(n.algorithm||``).toLowerCase();if(!i)throw Error(`IndexedDBManager: Missing algorithm for key write`);let a=e(n.publicKey||``);if(!a)throw Error(`IndexedDBManager: Missing publicKey for key write`);let o=e(n.signerId||``);if(!o)throw Error(`IndexedDBManager: Missing signerId for key write`);let s=await W(t.clientDB,n);if(!s?.profileId||!s.chainIdKey||!s.accountAddress)throw Error(`IndexedDBManager: Missing profile/account mapping for key write. Persist profile/account first or pass explicit profileId + chainIdKey.`);let c=Number.isSafeInteger(n.schemaVersion)&&typeof n.schemaVersion==`number`&&n.schemaVersion>=1?n.schemaVersion:1,l={profileId:s.profileId,signerSlot:n.signerSlot,chainIdKey:s.chainIdKey,accountAddress:s.accountAddress,keyKind:r,algorithm:i,publicKey:a,signerId:o,timestamp:typeof n.timestamp==`number`?n.timestamp:Date.now(),schemaVersion:c},u=e(n.wrapKeySalt||``);u&&(l.wrapKeySalt=u),n.payload&&(l.payload=n.payload),await t.keyMaterialStore.storeKeyMaterial(l)}async function q(e){let t=await W(e.store,{accountRefs:z(e.binding.nearAccountId)});if(!t)throw Error(`Wallet custody Ed25519 material requires a persisted wallet profile`);await e.store.storeKeyMaterial(H({target:t,...e}))}async function J(e){let t=await W(e.store,{accountRefs:z(e.nearAccountId)});t&&await e.store.deleteKeyMaterial(t.profileId,e.signerSlot,t.chainIdKey,U)}async function Y(e){let t=await G({deps:{clientDB:e.store,keyMaterialStore:e.store},accountRefs:z(e.nearAccountId),signerSlot:e.signerSlot,keyKind:U});if(!t)return{kind:`absent`};let n=t.payloadEnvelope;if(!n?.ciphertext||!n.nonce)return{kind:`unusable`,reason:`cached custody material has no sealed payload`};if(n.alg!==`chacha20poly1305-hkdf-sha256-wallet-custody-seed-v1`)return{kind:`unusable`,reason:`cached custody material was sealed under another key`};let r=t.payload?.binding;if(!r||typeof r!=`object`)return{kind:`unusable`,reason:`cached custody material has no binding`};let i=r;if(i.kind!==`wallet_custody_ed25519_active_client_v1`)return{kind:`unusable`,reason:`cached custody material is not a wallet custody record`};try{V(i)}catch(e){return{kind:`unusable`,reason:e instanceof Error?e.message:`cached custody binding is incomplete`}}let a=String(e.expectedRegisteredPublicKeyB64u||``).trim();return a&&a!==String(i.registeredPublicKeyB64u||``).trim()?{kind:`unusable`,reason:`cached custody material is for another key set`}:{kind:`found`,material:{binding:i,sealed:{ciphertextB64u:n.ciphertext,nonceB64u:n.nonce}}}}function X(e){let s=m(e.authority);if(!s||String(s.walletId)!==String(e.walletId))throw Error(`ECDSA custody import authority is invalid`);let k=d(e.publicCapability),A=c(e.activationReceipt),j=u(A.ecdsa_activation.material_activation);if(!t(j,u(k.material_activation)))throw Error(`ECDSA custody continuity changed the material activation`);let M=[R(e.participantIds[0]),R(e.participantIds[1])],N=E({keyHandle:O(e.keyHandle),ecdsaThresholdKeyId:b(e.ecdsaThresholdKeyId),clientVerifyingPublicKey33B64u:_(e.publicFacts.derivationClientSharePublicKey33B64u),participantIds:M,relayerKeyId:v(e.relayerKeyId)}),P=C({capability:j.capability,signerId:f(r(`ecdsa-signer`,32,`ECDSA custody signer identities`)),authority:s,scope:w({targetMemberships:e.chainTargets}),materialOwner:j.materialOwner,signingRootId:p(e.signingRootId),signingRootVersion:l(e.signingRootVersion)}),F=D({targetManifest:S({manifestId:g(r(`ecdsa-manifest`,32,`ECDSA custody manifest identities`)),manifestRevision:h(1)}),signer:P,roleLocalBinding:N,bindingDigest:T(e.publicFacts.contextBinding32B64u),durableMaterialRef:x(r(`ecdsa-role-local-material`,32,`ECDSA custody material identities`))}),z=e.publicFacts.ethereumAddress,B=L({keyHandle:I(e.keyHandle),publicKeyB64u:e.publicFacts.groupPublicKey33B64u,participantIds:M,thresholdOwnerAddress:z}),V=y({walletId:s.walletId,chainTarget:e.chainTargets[0],keyHandle:N.keyHandle,ecdsaThresholdKeyId:N.ecdsaThresholdKeyId,signingRootId:P.signingRootId,signingRootVersion:P.signingRootVersion,applicationBindingDigestB64u:k.context.application_binding_digest_b64u,clientParticipantId:M[0],relayerParticipantId:M[1],participantIds:M,contextBinding32B64u:e.publicFacts.contextBinding32B64u,derivationClientSharePublicKey33B64u:e.publicFacts.derivationClientSharePublicKey33B64u,relayerPublicKey33B64u:e.publicFacts.relayerPublicKey33B64u,groupPublicKey33B64u:e.publicFacts.groupPublicKey33B64u,ethereumAddress:z,publicCapability:k}),H={kind:`router_ab_ecdsa_derivation_normal_signing_v1`,scope:{wallet_id:String(s.walletId),ecdsa_threshold_key_id:String(N.ecdsaThresholdKeyId),signing_root_id:String(P.signingRootId),signing_root_version:String(P.signingRootVersion),context:A.ecdsa_activation.context,public_identity:A.ecdsa_activation.public_identity,material_activation:A.ecdsa_activation.material_activation,signing_worker:A.ecdsa_activation.signing_worker,activation_epoch:A.ecdsa_activation.activation_epoch}};return{activationBinding:F,serverCommit:{correlationId:A.activation_correlation_id,activationRequestDigest:o(n(Uint8Array.from(A.activation_request_digest.bytes))),serverGeneration:A.server_generation,protocolReceipt:A},readyStateBlobB64u:e.readyStateBlobB64u,registeredPublicFacts:B,roleLocalPublicFacts:V,routerAbEcdsaDerivationNormalSigning:H,runtimePolicyScope:i(e.runtimePolicyScope),committedAt:a(new Date(A.ecdsa_activation.activated_at_ms).toISOString())}}async function Z(e){return j(X(e))}async function Q(e){return await M(e.store,X(e),t=>e.store.persistPreparedWalletCustodyEcdsaContinuity(t))}async function $(e){let t=new A(s);for(let n of e.walletAuthMethodIds){let r=await t.getWalletAuthMethodV2(String(n));if(!r||r.status!==`active`||r.walletId!==e.walletId||r.walletAuthorityId!==e.walletAuthorityId)throw Error(`ECDSA custody continuity method ${String(n)} is not an active member of the wallet authority`)}}async function ee(e){if(e.targetAuthority.walletId!==e.walletId||e.targetAuthority.walletAuthMethodId===e.sourceWalletAuthMethodId)throw Error(`ECDSA custody continuity target is invalid`);await $({walletId:e.walletId,walletAuthorityId:e.walletAuthorityId,walletAuthMethodIds:[e.sourceWalletAuthMethodId,e.targetAuthority.walletAuthMethodId]});let t=new k,n=await t.listActiveWalletCapabilitySubjects(e.walletId);if(n.kind!==`resolved`)throw Error(`ECDSA custody continuity inventory is ${n.kind}`);if(n.subjects.length===0)return;let r=n.subjects.filter(t=>t.authority.walletAuthMethodId===e.sourceWalletAuthMethodId);if(r.length===0)throw Error(`ECDSA custody continuity found no active capability for source method ${String(e.sourceWalletAuthMethodId)} among [${n.subjects.map(e=>String(e.authority.walletAuthMethodId)).join(`, `)}]`);for(let n of r){let r=await t.lookup(n);if(r.kind!==`active`)throw Error(`ECDSA custody continuity source is ${r.kind}`);let i={capability:n.capability,authority:e.targetAuthority},a=await t.lookup(i);if(a.kind===`active`){let e=a.manifest.durableMaterial,t=r.manifest.durableMaterial;if(e.activationDigest!==t.activationDigest||e.bindingDigest!==t.bindingDigest||e.roleLocalBinding.ecdsaThresholdKeyId!==t.roleLocalBinding.ecdsaThresholdKeyId||!F(e.roleLocalBinding,t.roleLocalBinding)||!N(e.roleLocalPublicFacts,t.roleLocalPublicFacts)||!P(a.manifest.signer.registeredPublicFacts,r.manifest.signer.registeredPublicFacts))throw Error(`ECDSA custody continuity target conflicts with source material`);continue}if(a.kind!==`missing`)throw Error(`ECDSA custody continuity target is ${a.kind}`);let o=await t.openActiveMaterialLookup(r);if(o.kind!==`active`)throw Error(`ECDSA custody continuity material is ${o.kind}`);let s=o.manifest,c=s.durableMaterial.roleLocalPublicFacts,l=await Q({store:t,authority:e.targetAuthority,chainTargets:s.signer.scope.targetMemberships,walletId:String(e.walletId),keyHandle:c.keyHandle,ecdsaThresholdKeyId:String(c.ecdsaThresholdKeyId),signingRootId:String(c.signingRootId),signingRootVersion:String(c.signingRootVersion),relayerKeyId:String(s.durableMaterial.roleLocalBinding.relayerKeyId),participantIds:c.participantIds,publicCapability:c.publicCapability,activationReceipt:s.activation.serverActivation.serverActivationReceipt.protocolReceipt,runtimePolicyScope:s.durableMaterial.runtimePolicyScope,readyStateBlobB64u:o.readyStateBlobB64u,publicFacts:{contextBinding32B64u:c.contextBinding32B64u,derivationClientSharePublicKey33B64u:c.derivationClientSharePublicKey33B64u,clientVerifyingShare33B64u:c.publicCapability.public_identity.derivation_client_share_public_key33_b64u,relayerPublicKey33B64u:c.relayerPublicKey33B64u,groupPublicKey33B64u:c.groupPublicKey33B64u,ethereumAddress:c.ethereumAddress,clientShareRetryCounter:c.publicCapability.public_identity.client_share_retry_counter,relayerShareRetryCounter:c.publicCapability.public_identity.server_share_retry_counter}});if(l.kind!==`committed`)throw Error(`ECDSA custody continuity import is ${l.kind}`)}}export{Y as a,W as c,J as i,K as l,Q as n,q as o,Z as r,G as s,ee as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e,t}from"./digests-BIaE0DMd.js";import{r as n}from"./participants-BXdREC5k.js";import{i as r}from"./base64-BmKR3UqU.js";import{r as i}from"./secureRandomId-8LSc91aN.js";import{X as a}from"./activeWalletSession-
|
|
1
|
+
import{r as e,t}from"./digests-BIaE0DMd.js";import{r as n}from"./participants-BXdREC5k.js";import{i as r}from"./base64-BmKR3UqU.js";import{r as i}from"./secureRandomId-8LSc91aN.js";import{X as a}from"./activeWalletSession-HAOgRKzn.js";function o(e){try{return a(e)}catch{return}}const s=864e5,c={ttlMs:s,remainingUses:3},l=3;function u(e){let t=Math.floor(Number(e.requestedRemainingUses)||0);return!Number.isFinite(t)||t<=0?null:Math.min(t,3)}function d(e){let t=Math.max(0,Math.floor(Number(e.ttlMs)||0)),n=Math.max(0,Math.floor(Number(e.remainingUses)||0));return{ttlMs:Math.min(t,2592e6),remainingUses:Math.min(n,1e6)}}function f(){return i(`tsess`,32,`threshold session IDs`)}async function p(n){return r(await e(t(n)))}async function m(e){return h({nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,authority:e.authority.authority,relayerKeyId:e.relayerKeyId,runtimePolicyScope:e.runtimePolicyScope,routerAbNormalSigning:e.routerAbNormalSigning,participantIds:e.participantIds,thresholdSessionId:e.thresholdSessionId,ttlMs:e.ttlMs,remainingUses:e.remainingUses})}async function h(e){let t=e.thresholdSessionId||f(),{ttlMs:r,remainingUses:i}=d({ttlMs:e.ttlMs??c.ttlMs,remainingUses:e.remainingUses??c.remainingUses}),a=n(e.participantIds),s=o(e.runtimePolicyScope),l={version:`threshold_session_v1`,nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,authority:e.authority,relayerKeyId:e.relayerKeyId,thresholdSessionId:t,...s?{runtimePolicyScope:s}:{},routerAbNormalSigning:e.routerAbNormalSigning,...a?{participantIds:a}:{},ttlMs:r,remainingUses:i},u=await p(l);return{policy:l,policyJson:JSON.stringify(l),sessionPolicyDigest32:u}}const g=`seams_wallet`;export{m as a,u as c,l as i,c as n,d as o,s as r,o as s,g as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./digests-BIaE0DMd.js";import{o as t}from"./canonicalPrimitives-
|
|
1
|
+
import{t as e}from"./digests-BIaE0DMd.js";import{o as t}from"./canonicalPrimitives-DKeS3M40.js";async function n(n){return t(`seams:wallet-custody:challenge:v1|${e({walletId:n.walletId,operation:n.operation,payload:n.payload,requestOrigin:n.requestOrigin})}`)}export{n as t};
|