@seams/wallet 0.7.3 → 0.8.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 +4 -5
- package/THIRD_PARTY_NOTICES.md +1 -9
- package/dist/.build-inputs.sha256 +1 -1
- package/dist/esm/SeamsWeb/SeamsWeb.js +2 -2
- package/dist/esm/SeamsWeb/assembly/browserSigningSurfaceAssembly.js +2 -2
- package/dist/esm/SeamsWeb/assembly/createBrowserRecoveryPublicDeps.js +1 -1
- package/dist/esm/SeamsWeb/assembly/createBrowserSigningStores.js +1 -1
- package/dist/esm/SeamsWeb/assembly/createBrowserWarmSessionPublicDeps.js +0 -2
- package/dist/esm/SeamsWeb/operations/auth/login.js +18 -43
- package/dist/esm/SeamsWeb/operations/auth/walletUnlockSubject.js +2 -8
- package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/addEmailOtp.js +1 -1
- package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.js +5 -9
- package/dist/esm/SeamsWeb/operations/authMethods/passkey/addPasskey.js +1 -1
- package/dist/esm/SeamsWeb/operations/authMethods/revokeAuthMethod.js +1 -1
- package/dist/esm/SeamsWeb/operations/devices/deviceLinkingResume.js +1 -4
- package/dist/esm/SeamsWeb/operations/devices/linkDeviceFlow.js +38 -13
- package/dist/esm/SeamsWeb/operations/devices/scanDevice.js +1 -1
- package/dist/esm/SeamsWeb/operations/near/signNEP413.js +0 -1
- package/dist/esm/SeamsWeb/operations/recovery/syncAccount.js +2 -4
- package/dist/esm/SeamsWeb/operations/recovery/walletRecovery.js +1 -2
- package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryCommit.js +4 -5
- package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryDurablePayload.js +1 -2
- package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryRotation.js +1 -2
- package/dist/esm/SeamsWeb/operations/registration/pendingRegistrationRecovery.js +3 -12
- package/dist/esm/SeamsWeb/operations/registration/registration.js +5 -5
- package/dist/esm/SeamsWeb/operations/registration/registrationStrictEcdsa.js +1 -1
- package/dist/esm/SeamsWeb/operations/registration/registrationTerminalCommit.js +1 -1
- package/dist/esm/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +2 -6
- package/dist/esm/SeamsWeb/publicApi/near.js +1 -1
- package/dist/esm/SeamsWeb/publicApi/transactionReview.js +4 -1
- package/dist/esm/SeamsWeb/signingSurface/BrowserSigningSurface.js +4 -4
- package/dist/esm/SeamsWeb/walletIframe/client/router.js +1 -2
- package/dist/esm/SeamsWeb/walletIframe/client/surface/domain.js +0 -2
- package/dist/esm/SeamsWeb/walletIframe/client/transport/IframeTransport.js +0 -4
- package/dist/esm/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.js +1 -1
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +64 -0
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +165 -222
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/icons.js +136 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +6 -6
- package/dist/esm/SeamsWeb/walletIframe/shared/transactionReview.js +11 -1
- package/dist/esm/advanced.js +0 -1
- package/dist/esm/base-styles.js +2 -2
- package/dist/esm/core/accountData/near/accountProjection.js +0 -1
- package/dist/esm/core/accountData/near/keyMaterial.js +0 -1
- package/dist/esm/core/browser/walletIframe/events.js +1 -5
- package/dist/esm/core/browser/walletIframe/host-mode.js +0 -10
- package/dist/esm/core/config/chains.js +1 -2
- package/dist/esm/core/config/configBuilder.js +0 -1
- package/dist/esm/core/config/configHelpers.js +0 -1
- package/dist/esm/core/indexedDB/accountKeyMaterial.js +0 -1
- package/dist/esm/core/indexedDB/index.js +3 -4
- package/dist/esm/core/indexedDB/pendingWalletRecoveryCommit.js +1 -4
- package/dist/esm/core/indexedDB/schemaNames.js +0 -22
- package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.js +3 -3
- package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +3 -3
- package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.js +1 -1
- package/dist/esm/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.js +0 -1
- package/dist/esm/core/indexedDB/seamsWalletDB/registrationSetup.js +103 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +2 -3
- package/dist/esm/core/indexedDB/seamsWalletDB/signingSessionSeals.js +0 -35
- package/dist/esm/core/indexedDB/seamsWalletDB/walletCustodyEcdsaContinuity.js +4 -4
- package/dist/esm/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +37 -19
- package/dist/esm/core/indexedDB/unifiedIndexedDBManager.js +10 -3
- package/dist/esm/core/indexedDB/walletCustodyEd25519MaterialRecord.js +1 -1
- package/dist/esm/core/platform/browser/createBrowserPlatformRuntime.js +8 -25
- package/dist/esm/core/rpcClients/near/rpcCalls.js +39 -1
- package/dist/esm/core/rpcClients/relayer/passkeyCustodyEnvelope.js +3 -13
- package/dist/esm/core/rpcClients/relayer/thresholdEcdsa.js +0 -2
- package/dist/esm/core/rpcClients/relayer/walletRecoveryPrepare.js +3 -4
- package/dist/esm/core/rpcClients/relayer/walletRegistration.js +21 -15
- package/dist/esm/core/rpcClients/relayer/walletRegistrationTerminalResponse.js +1 -2
- package/dist/esm/core/signingEngine/assembly/createManagers.js +1 -1
- package/dist/esm/core/signingEngine/assembly/ports/shared.js +1 -2
- package/dist/esm/core/signingEngine/assembly/warmup.js +1 -5
- package/dist/esm/core/signingEngine/chains/near/nearSignerWasm.js +2 -33
- package/dist/esm/core/signingEngine/flows/recovery/ecdsaDerivationExport.js +0 -1
- package/dist/esm/core/signingEngine/flows/recovery/ecdsaExportMaterial.js +0 -1
- package/dist/esm/core/signingEngine/flows/recovery/passkeyEd25519YaoRecovery.js +1 -1
- package/dist/esm/core/signingEngine/flows/recovery/stepUpAuthorization.js +1 -1
- package/dist/esm/core/signingEngine/flows/registration/accountLifecycle.js +3 -8
- package/dist/esm/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.js +1 -2
- package/dist/esm/core/signingEngine/flows/shared/signingStateMachine.js +2 -5
- package/dist/esm/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.js +0 -2
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlow.js +1 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/transactionExecutor.js +1 -2
- package/dist/esm/core/signingEngine/flows/signNear/implicitAccountFunding.js +1 -1
- package/dist/esm/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +33 -42
- package/dist/esm/core/signingEngine/flows/signNear/shared/signatureOnlySigning.js +0 -2
- package/dist/esm/core/signingEngine/flows/signNear/shared/signingMaterials.js +1 -7
- package/dist/esm/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.js +4 -14
- package/dist/esm/core/signingEngine/flows/signNear/signDelegate.js +2 -6
- package/dist/esm/core/signingEngine/flows/signNear/signNep413.js +2 -6
- package/dist/esm/core/signingEngine/nonce/NonceCoordinator.js +1 -1
- package/dist/esm/core/signingEngine/nonce/nearNonceLane.js +1 -1
- package/dist/esm/core/signingEngine/nonce/nonceDiagnostics.js +1 -1
- package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.js +0 -1
- package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +0 -1
- package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.js +0 -3
- package/dist/esm/core/signingEngine/session/SigningSessionCoordinator.js +1 -4
- package/dist/esm/core/signingEngine/session/authority/authorityOperationResolver.js +17 -68
- package/dist/esm/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +0 -1
- package/dist/esm/core/signingEngine/session/emailOtp/ecdsaBootstrapCommit.js +1 -1
- package/dist/esm/core/signingEngine/session/emailOtp/ecdsaLifecycleRuntime.js +0 -3
- package/dist/esm/core/signingEngine/session/emailOtp/ecdsaLogin.js +1 -7
- package/dist/esm/core/signingEngine/session/emailOtp/ecdsaRecovery.js +10 -14
- package/dist/esm/core/signingEngine/session/emailOtp/ed25519ExportContext.js +0 -3
- package/dist/esm/core/signingEngine/session/emailOtp/exportRecovery.js +0 -2
- package/dist/esm/core/signingEngine/session/identity/clientSessionPersistenceState.js +5 -16
- package/dist/esm/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.js +0 -1
- package/dist/esm/core/signingEngine/session/identity/exactSigningLaneIdentity.js +1 -1
- package/dist/esm/core/signingEngine/session/identity/exactWalletSessionCredential.js +0 -2
- package/dist/esm/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.js +1 -2
- package/dist/esm/core/signingEngine/session/material/ecdsaCapabilityManifest.js +1 -1
- package/dist/esm/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.js +1 -14
- package/dist/esm/core/signingEngine/session/operationState/preparedOperation.js +1 -5
- package/dist/esm/core/signingEngine/session/passkey/ecdsaBootstrap.js +3 -6
- package/dist/esm/core/signingEngine/session/passkey/ecdsaKeyFactsInventory.js +0 -1
- package/dist/esm/core/signingEngine/session/passkey/ecdsaRecovery.js +1 -4
- package/dist/esm/core/signingEngine/session/passkey/ed25519SessionProvision.js +0 -1
- package/dist/esm/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.js +2 -3
- package/dist/esm/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.js +12 -45
- package/dist/esm/core/signingEngine/session/persistence/clientSessionPersistence.js +8 -16
- package/dist/esm/core/signingEngine/session/persistence/sealedSessionRecords.js +0 -2
- package/dist/esm/core/signingEngine/session/postconditions/runtimePostconditions.js +0 -2
- package/dist/esm/core/signingEngine/session/routerAbSigningWalletSession.js +2 -8
- package/dist/esm/core/signingEngine/session/warmCapabilities/readModel.js +2 -8
- package/dist/esm/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.js +1 -12
- package/dist/esm/core/signingEngine/session/warmCapabilities/transitions.js +7 -11
- package/dist/esm/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.js +0 -1
- package/dist/esm/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.js +6 -30
- package/dist/esm/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.js +0 -3
- package/dist/esm/core/signingEngine/stepUpConfirmation/requireStepUpAuth.js +1 -5
- package/dist/esm/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.js +0 -3
- package/dist/esm/core/signingEngine/threshold/ecdsa/bootstrapSession.js +1 -5
- package/dist/esm/core/signingEngine/threshold/ed25519/walletSession.js +1 -1
- package/dist/esm/core/signingEngine/threshold/ed25519/yaoClient.js +1 -35
- package/dist/esm/core/signingEngine/threshold/sessionPolicy.js +0 -1
- package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +1 -4
- package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +1 -1
- package/dist/esm/core/signingEngine/uiConfirm/UiConfirmManager.js +0 -1
- package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.js +1 -1
- package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/localOnly.js +0 -1
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +7 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.js +3 -13
- package/dist/esm/core/signingEngine/walletCustody/activateEd25519Capability.js +0 -1
- package/dist/esm/core/signingEngine/walletCustody/emailOtpLink.js +10 -13
- package/dist/esm/core/signingEngine/walletCustody/openCustodyCache.js +2 -6
- package/dist/esm/core/signingEngine/walletCustody/passkeyLink.js +7 -10
- package/dist/esm/core/signingEngine/walletCustody/registrationCeremony.js +0 -1
- package/dist/esm/core/signingEngine/walletCustody/walletRecoveryCredential.js +0 -1
- package/dist/esm/core/signingEngine/walletCustody/walletRecoveryEcdsa.js +0 -1
- package/dist/esm/core/signingEngine/walletCustody/walletRecoveryEd25519.js +1 -1
- package/dist/esm/core/signingEngine/walletCustody/walletRecoveryManifest.js +0 -2
- package/dist/esm/core/signingEngine/walletCustody/walletRecoveryRotation.js +0 -1
- package/dist/esm/core/signingEngine/webauthnAuth/walletOriginWebAuthn.js +109 -0
- package/dist/esm/core/signingEngine/workerManager/SignerWorkerManager.js +0 -2
- package/dist/esm/core/signingEngine/workerManager/ecdsaClientWorkerChannels.js +0 -4
- package/dist/esm/core/signingEngine/workerManager/validation.js +1 -1
- package/dist/esm/core/signingEngine/workerManager/workerTransport.js +3 -42
- package/dist/esm/core/signingEngine/workerManager/workerTypes.js +0 -2
- package/dist/esm/core/types/accountIds.js +0 -1
- package/dist/esm/core/types/sdkSentEvents.js +1 -2
- package/dist/esm/core/types/signer-worker.js +1 -36
- package/dist/esm/core/walletRuntimePaths/base.js +11 -1
- package/dist/esm/plugins/headers.js +0 -1
- package/dist/esm/plugins/next.js +0 -1
- package/dist/esm/plugins/plugin-utils.js +0 -1
- package/dist/esm/plugins/shared-ts/src/utils/normalize.js +1 -1
- package/dist/esm/react/components/AccountMenuButton/AccountsSection.js +1 -1
- package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +1 -1
- package/dist/esm/react/components/AccountMenuButton/ExportKeysSection.js +1 -1
- package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +4 -4
- package/dist/esm/react/components/AccountMenuButton/LockMenuItem.js +1 -1
- package/dist/esm/react/components/AccountMenuButton/ProfileDropdown.js +1 -1
- package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.css +8 -0
- package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +14 -6
- package/dist/esm/react/components/AccountMenuButton/icons/TouchIcon.js +1 -1
- package/dist/esm/react/components/AccountMenuButton/index.js +5 -5
- package/dist/esm/react/components/HostedSeamsAuthMenu/SeamsAuthMenuMock.js +1 -1
- package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +1 -1
- package/dist/esm/react/components/QRCodeScanner.js +2 -2
- package/dist/esm/react/components/ShowQRCode.js +4 -4
- package/dist/esm/react/components/theme/design-tokens.js +1 -2
- package/dist/esm/react/context/index.js +1 -1
- package/dist/esm/react/context/reactLoginStateBuilders.js +1 -1
- package/dist/esm/react/context/seamsManagerSingleton.js +2 -2
- package/dist/esm/react/context/useLoginStateRefresher.js +2 -5
- package/dist/esm/react/context/useSeamsContextValue.js +1 -1
- package/dist/esm/react/context/useSeamsWithSdkFlow.js +1 -1
- package/dist/esm/react/context/useWalletIframeLifecycle.js +1 -1
- package/dist/esm/react/hooks/useAccountInput.js +4 -4
- package/dist/esm/react/hooks/useNearClient.js +3 -3
- package/dist/esm/react/hooks/usePreconnectWalletAssets.js +1 -1
- package/dist/esm/react/hooks/useQRCamera.js +2 -2
- package/dist/esm/react/hooks/useWallet.js +1 -1
- package/dist/esm/react/index.js +10 -10
- package/dist/esm/react/styles/styles.css +8 -0
- package/dist/esm/react/transactionReview/TransactionReviewHost.js +1 -1
- package/dist/esm/react/transactionReview/boundCalls.js +2 -2
- package/dist/esm/react/transactionReview/contract.js +1 -1
- package/dist/esm/react/transactionReview/controller.js +2 -2
- package/dist/esm/react/transactionReview/snapshot.js +2 -2
- package/dist/esm/sdk/ConfirmationDrawer-DrsREojk.js +1 -0
- package/dist/esm/sdk/EvmClient-DoxytQaJ.js +1 -0
- package/dist/esm/sdk/NearClient-vJ65Wjrq.js +1 -0
- package/dist/esm/sdk/NonceCoordinator-BBeadCSq.js +1 -0
- package/dist/esm/sdk/accountIds-C3Ihsd2c.js +1 -0
- package/dist/esm/sdk/accountLifecycle-EyfYPnuT.js +1 -0
- package/dist/esm/sdk/actions-DZLxCcrU.js +1 -0
- package/dist/esm/sdk/adapters-DtAyuoiA.js +2 -0
- package/dist/esm/sdk/base-Xtd32asf.js +1 -0
- package/dist/esm/sdk/base64-ojm5DKcF.js +1 -0
- package/dist/esm/sdk/browser-CsOGMbMy.js +8 -0
- package/dist/esm/sdk/bytes-t5S5mkat.js +1 -0
- package/dist/esm/sdk/canonicalPrimitives-MPGET2cl.js +1 -0
- package/dist/esm/sdk/canonicalSignerErrorCode-C0hh_SVi.js +1 -0
- package/dist/esm/sdk/capabilityKinds-XaXXiD2B.js +1 -0
- package/dist/esm/sdk/chains-yAls2d9X.js +1 -0
- package/dist/esm/sdk/challengeDelivery-cAsaUC6U.js +1 -0
- package/dist/esm/sdk/chunk-dVx5-UGu.js +1 -0
- package/dist/esm/sdk/configHelpers-CseiVoZD.js +1 -0
- package/dist/esm/sdk/csp-stylesheet-B1fAhrGB.js +2 -0
- package/dist/esm/sdk/defaultConfigs-CWpApkMq.js +1 -0
- package/dist/esm/sdk/display-jK7_hYho.js +1 -0
- package/dist/esm/sdk/domainIds-GDzjOs6i.js +1 -0
- package/dist/esm/sdk/ecdsaCapabilityManifest-CHFu-QrV.js +1 -0
- package/dist/esm/sdk/ecdsaChainTarget-CRcRR78w.js +1 -0
- package/dist/esm/sdk/ecdsaPresignLifecycle-CQnCxSlq.js +1 -0
- package/dist/esm/sdk/ecdsaPresignPoolIdentity-Ci-ovDlv.js +1 -0
- package/dist/esm/sdk/ecdsaWalletRecords-Cm1DdexN.js +1 -0
- package/dist/esm/sdk/enrichDisplayModelWithAbi-CR-4ebuU.js +1 -0
- package/dist/esm/sdk/enrichDisplayModelWithAbi-CwHKFqF4.js +569 -0
- package/dist/esm/sdk/errors-DfbnsXjO.js +1 -0
- package/dist/esm/sdk/events-BJyVcnsn.js +1 -0
- package/dist/esm/sdk/evmCryptoWasm-CwEXiLrC.js +1 -0
- package/dist/esm/sdk/evmFamilyEcdsaIdentity-Br3iFdQx.js +1 -0
- package/dist/esm/sdk/exactSessionState-CjD8gekO.js +210 -0
- package/dist/esm/sdk/exactSigningLaneIdentity-olheZx_n.js +1 -0
- package/dist/esm/sdk/executeWorkerOperation-CrFf3FkL.js +1 -0
- package/dist/esm/sdk/export-viewer-host-jo7h_0wl.js +1 -0
- package/dist/esm/sdk/helpers-D4QckQhq.js +1 -0
- package/dist/esm/sdk/host-BAqOYnju.js +1 -0
- package/dist/esm/sdk/intentDigest-CB6zy3lN.js +1 -0
- package/dist/esm/sdk/jsonRpc-C85RYR0A.js +1 -0
- package/dist/esm/sdk/jsxRuntime.module-CoHsKD_3.js +1 -0
- package/dist/esm/sdk/keccak-zexutGfG.js +1 -0
- package/dist/esm/sdk/keyMaterialBrands-uVZHfAh3.js +1 -0
- package/dist/esm/sdk/localOnly-DBQRG6Qh.js +1 -0
- package/dist/esm/sdk/messages-Cv2j4SKI.js +1 -0
- package/dist/esm/sdk/mountExportPrivateKeySurface-G7Z_9JMQ.js +1 -0
- package/dist/esm/sdk/mountRecoveryCodeBackupSurface-BBCTaQsu.js +2 -0
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-DQIw8ho3.js +1 -0
- package/dist/esm/sdk/nearEd25519YaoSigningPreparation-Bp_CvWRz.js +1 -0
- package/dist/esm/sdk/nearRpcResults--cBcfmp4.js +1 -0
- package/dist/esm/sdk/nonceLaneKeys-BBYi4g51.js +1 -0
- package/dist/esm/sdk/normalization-BGPR6osg.js +1 -0
- package/dist/esm/sdk/operationFingerprint-5-wH2Ht8.js +1 -0
- package/dist/esm/sdk/operationFingerprint-DtQb0pdp.js +1 -0
- package/dist/esm/sdk/passkey-custody-LP4UTFbn.js +1 -0
- package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-BNk4ebsY.js +1 -0
- package/dist/esm/sdk/prfCache-Mbo7_USg.js +1 -0
- package/dist/esm/sdk/profileAccountProjection-DHCaMtOu.js +1 -0
- package/dist/esm/sdk/promptText-s8TQ6ckX.js +1 -0
- package/dist/esm/sdk/recovery-entrypoint-DkT8sFO5.js +1 -0
- package/dist/esm/sdk/registration-Btozh7uh.js +1 -0
- package/dist/esm/sdk/registration-CSAG_h4Y.js +1 -0
- package/dist/esm/sdk/registrationAccounts-DIeEVy6W.js +1 -0
- package/dist/esm/sdk/registrationIds-BIel5S0i.js +1 -0
- package/dist/esm/sdk/registrationIntent-DV1GYZ3K.js +1 -0
- package/dist/esm/sdk/registrationPreparationPreload-vOCqNuG4.js +1 -0
- package/dist/esm/sdk/registrationSignerPlan-FzD3TwxB.js +1 -0
- package/dist/esm/sdk/relayerHttp-DaPeS929.js +1 -0
- package/dist/esm/sdk/routePlan-B_KJaPtm.js +1 -0
- package/dist/esm/sdk/router-Dd3fFHk3.js +1 -0
- package/dist/esm/sdk/routerAbNormalSigning-D_fHjq5l.js +1 -0
- package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/esm/sdk/runtime-auth-B2M91rSx.js +1 -0
- package/dist/esm/sdk/runtime-device-link-ojjPSRaG.js +1 -0
- package/dist/esm/sdk/runtime-ecdsa-tempo-CE4JLgmn.js +1 -0
- package/dist/esm/sdk/runtime-email-otp-DDwtKVAe.js +1 -0
- package/dist/esm/sdk/runtime-export-JXYk8sQ-.js +1 -0
- package/dist/esm/sdk/runtime-near-BB8AG6dV.js +1 -0
- package/dist/esm/sdk/runtime-preferences-DKFZYccW.js +1 -0
- package/dist/esm/sdk/runtime-recovery-C_XjsDBg.js +1 -0
- package/dist/esm/sdk/runtime-recovery-codes-CWp839mH.js +1 -0
- package/dist/esm/sdk/runtimeContext-BpObgzbj.js +6 -0
- package/dist/esm/sdk/runtimeLoader-DjgBf_yF.js +1 -0
- package/dist/esm/sdk/sdkSentEvents-_RGAEeld.js +1 -0
- package/dist/esm/sdk/secp256k1-B_6W9QDJ.js +1 -0
- package/dist/esm/sdk/secureRandomId-CTdlJ5Mx.js +1 -0
- package/dist/esm/sdk/sessionPolicy-CNVK7nJ6.js +1 -0
- package/dist/esm/sdk/shared-j_KsFbCT.js +1 -0
- package/dist/esm/sdk/signEvmFamily-CcLVBm0f.js +1 -0
- package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-DgTbh6jX.js +1 -0
- package/dist/esm/sdk/signEvmWithUiConfirm-ChreN7aZ.js +1 -0
- package/dist/esm/sdk/signNear-mWbTE2Dl.js +1 -0
- package/dist/esm/sdk/signatureUses-CQkkUcwT.js +1 -0
- package/dist/esm/sdk/signerDomain-BhUTzDmF.js +1 -0
- package/dist/esm/sdk/signerLoader-By0IY24G.js +1 -0
- package/dist/esm/sdk/signerSlot-BQ1g5JNV.js +1 -0
- package/dist/esm/sdk/signingFlow-LUWrZi2d.js +2 -0
- package/dist/esm/sdk/signingSessionSeal-Mr2Xp44o.js +1 -0
- package/dist/esm/sdk/surface-measurement-reporter-OICExWKE.js +1 -0
- package/dist/esm/sdk/trace-M34pNGuF.js +1 -0
- package/dist/esm/sdk/transaction-activity-BbDod7ji.js +1 -0
- package/dist/esm/sdk/transactionReview-CBE5oH4c.js +1 -0
- package/dist/esm/sdk/transactionReviewAdmission-0ZgWs6q3.js +1 -0
- package/dist/esm/sdk/transactionState-9d7f3xVj.js +1 -0
- package/dist/esm/sdk/tx-confirm-ui.js +12 -158
- package/dist/esm/sdk/types-M7vxrYtJ.js +1 -0
- package/dist/esm/sdk/validation-dC1-_uyG.js +1 -0
- package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -13
- package/dist/esm/sdk/wallet-iframe-host-full.js +1 -6
- package/dist/esm/sdk/wallet-iframe-host-near.js +1 -13
- package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -4
- package/dist/esm/sdk/wallet-recovery-CcDZ1hMH.js +1 -0
- package/dist/esm/sdk/wallet-ui.css +1 -5874
- package/dist/esm/sdk/walletAuthority-CoWSeqvQ.js +1 -0
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-B7xi7nwh.js +1 -0
- package/dist/esm/sdk/walletIframeIdentity-C0b0XMQF.js +1 -0
- package/dist/esm/sdk/walletRecoveryCommit-ljxVeo-d.js +1 -0
- package/dist/esm/sdk/walletRecoveryRotate-HztDcDaY.js +1 -0
- package/dist/esm/sdk/warmSessionHydration-BPGM0YRU.js +1 -0
- package/dist/esm/sdk/webauthnP256-qu06GNFm.js +1 -0
- package/dist/esm/sdk/webauthnPromptCoordinator-DO-qfECu.js +1 -0
- package/dist/esm/shared-ts/src/device-linking/parsers.js +41 -1
- package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +1 -1
- package/dist/esm/shared-ts/src/near/actions.js +10 -1
- package/dist/esm/shared-ts/src/near/nearClient.js +0 -2
- package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +1 -1
- package/dist/esm/shared-ts/src/signing-lanes/index.js +1 -4
- package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +0 -1
- package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +0 -1
- package/dist/esm/shared-ts/src/signing-lanes/participants.js +1 -1
- package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +1 -1
- package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -1
- package/dist/esm/shared-ts/src/threshold/participants.js +0 -1
- package/dist/esm/shared-ts/src/threshold/signingRootScope.js +0 -1
- package/dist/esm/shared-ts/src/utils/domainIds.js +1 -7
- package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +0 -1
- package/dist/esm/shared-ts/src/utils/encoders.js +1 -1
- package/dist/esm/shared-ts/src/utils/errors.js +0 -1
- package/dist/esm/shared-ts/src/utils/index.js +4 -5
- package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +1 -1
- package/dist/esm/shared-ts/src/utils/registrationIds.js +1 -5
- package/dist/esm/shared-ts/src/utils/registrationIntent.js +0 -1
- package/dist/esm/shared-ts/src/utils/registrationSetupOperation.js +12 -0
- package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +1 -1
- package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +1 -2
- package/dist/esm/shared-ts/src/utils/validation.js +0 -1
- package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +0 -1
- package/dist/esm/shared-ts/src/utils/walletCapabilityBindings.js +10 -1
- package/dist/esm/shared-ts/src/utils/walletManagementProtocol.js +6 -0
- package/dist/esm/shared-ts/src/wallet-recovery/index.js +1 -1
- package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -1
- package/dist/esm/shared-ts/src/wallet-recovery/recoveryKeyId.js +0 -2
- package/dist/esm/theme/base-styles.js +11 -11
- package/dist/esm/utils/deviceDetection.js +16 -1
- package/dist/esm/utils/qrScanner.js +288 -0
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.d.ts +12 -753
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.js +126 -3701
- 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.d.ts +0 -42
- package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client.js +2 -106
- package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client_bg.wasm +0 -0
- package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client.d.ts +3 -158
- package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client.js +2 -452
- 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-DrsREojk.js +1 -0
- package/dist/public/sdk/EvmClient-DoxytQaJ.js +1 -0
- package/dist/public/sdk/NearClient-vJ65Wjrq.js +1 -0
- package/dist/public/sdk/NonceCoordinator-BBeadCSq.js +1 -0
- package/dist/public/sdk/accountIds-C3Ihsd2c.js +1 -0
- package/dist/public/sdk/accountLifecycle-EyfYPnuT.js +1 -0
- package/dist/public/sdk/actions-DZLxCcrU.js +1 -0
- package/dist/public/sdk/adapters-DtAyuoiA.js +2 -0
- package/dist/public/sdk/base-Xtd32asf.js +1 -0
- package/dist/public/sdk/base64-ojm5DKcF.js +1 -0
- package/dist/public/sdk/browser-CsOGMbMy.js +8 -0
- package/dist/public/sdk/bytes-t5S5mkat.js +1 -0
- package/dist/public/sdk/canonicalPrimitives-MPGET2cl.js +1 -0
- package/dist/public/sdk/canonicalSignerErrorCode-C0hh_SVi.js +1 -0
- package/dist/public/sdk/capabilityKinds-XaXXiD2B.js +1 -0
- package/dist/public/sdk/chains-yAls2d9X.js +1 -0
- package/dist/public/sdk/challengeDelivery-cAsaUC6U.js +1 -0
- package/dist/public/sdk/chunk-dVx5-UGu.js +1 -0
- package/dist/public/sdk/configHelpers-CseiVoZD.js +1 -0
- package/dist/public/sdk/csp-stylesheet-B1fAhrGB.js +2 -0
- package/dist/public/sdk/defaultConfigs-CWpApkMq.js +1 -0
- package/dist/public/sdk/display-jK7_hYho.js +1 -0
- package/dist/public/sdk/domainIds-GDzjOs6i.js +1 -0
- package/dist/public/sdk/ecdsaCapabilityManifest-CHFu-QrV.js +1 -0
- package/dist/public/sdk/ecdsaChainTarget-CRcRR78w.js +1 -0
- package/dist/public/sdk/ecdsaPresignLifecycle-CQnCxSlq.js +1 -0
- package/dist/public/sdk/ecdsaPresignPoolIdentity-Ci-ovDlv.js +1 -0
- package/dist/public/sdk/ecdsaWalletRecords-Cm1DdexN.js +1 -0
- package/dist/public/sdk/enrichDisplayModelWithAbi-CR-4ebuU.js +1 -0
- package/dist/public/sdk/enrichDisplayModelWithAbi-CwHKFqF4.js +569 -0
- package/dist/public/sdk/errors-DfbnsXjO.js +1 -0
- package/dist/public/sdk/events-BJyVcnsn.js +1 -0
- package/dist/public/sdk/evmCryptoWasm-CwEXiLrC.js +1 -0
- package/dist/public/sdk/evmFamilyEcdsaIdentity-Br3iFdQx.js +1 -0
- package/dist/public/sdk/exactSessionState-CjD8gekO.js +210 -0
- package/dist/public/sdk/exactSigningLaneIdentity-olheZx_n.js +1 -0
- package/dist/public/sdk/executeWorkerOperation-CrFf3FkL.js +1 -0
- package/dist/public/sdk/export-viewer-host-jo7h_0wl.js +1 -0
- package/dist/public/sdk/helpers-D4QckQhq.js +1 -0
- package/dist/public/sdk/host-BAqOYnju.js +1 -0
- package/dist/public/sdk/intentDigest-CB6zy3lN.js +1 -0
- package/dist/public/sdk/jsonRpc-C85RYR0A.js +1 -0
- package/dist/public/sdk/jsxRuntime.module-CoHsKD_3.js +1 -0
- package/dist/public/sdk/keccak-zexutGfG.js +1 -0
- package/dist/public/sdk/keyMaterialBrands-uVZHfAh3.js +1 -0
- package/dist/public/sdk/localOnly-DBQRG6Qh.js +1 -0
- package/dist/public/sdk/messages-Cv2j4SKI.js +1 -0
- package/dist/public/sdk/mountExportPrivateKeySurface-G7Z_9JMQ.js +1 -0
- package/dist/public/sdk/mountRecoveryCodeBackupSurface-BBCTaQsu.js +2 -0
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-DQIw8ho3.js +1 -0
- package/dist/public/sdk/nearEd25519YaoSigningPreparation-Bp_CvWRz.js +1 -0
- package/dist/public/sdk/nearRpcResults--cBcfmp4.js +1 -0
- package/dist/public/sdk/nonceLaneKeys-BBYi4g51.js +1 -0
- package/dist/public/sdk/normalization-BGPR6osg.js +1 -0
- package/dist/public/sdk/operationFingerprint-5-wH2Ht8.js +1 -0
- package/dist/public/sdk/operationFingerprint-DtQb0pdp.js +1 -0
- package/dist/public/sdk/passkey-custody-LP4UTFbn.js +1 -0
- package/dist/public/sdk/pendingWalletRecoveryCodeBackup-BNk4ebsY.js +1 -0
- package/dist/public/sdk/prfCache-Mbo7_USg.js +1 -0
- package/dist/public/sdk/profileAccountProjection-DHCaMtOu.js +1 -0
- package/dist/public/sdk/promptText-s8TQ6ckX.js +1 -0
- package/dist/public/sdk/recovery-entrypoint-DkT8sFO5.js +1 -0
- package/dist/public/sdk/registration-Btozh7uh.js +1 -0
- package/dist/public/sdk/registration-CSAG_h4Y.js +1 -0
- package/dist/public/sdk/registrationAccounts-DIeEVy6W.js +1 -0
- package/dist/public/sdk/registrationIds-BIel5S0i.js +1 -0
- package/dist/public/sdk/registrationIntent-DV1GYZ3K.js +1 -0
- package/dist/public/sdk/registrationPreparationPreload-vOCqNuG4.js +1 -0
- package/dist/public/sdk/registrationSignerPlan-FzD3TwxB.js +1 -0
- package/dist/public/sdk/relayerHttp-DaPeS929.js +1 -0
- package/dist/public/sdk/routePlan-B_KJaPtm.js +1 -0
- package/dist/public/sdk/router-Dd3fFHk3.js +1 -0
- package/dist/public/sdk/routerAbNormalSigning-D_fHjq5l.js +1 -0
- package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/sdk/runtime-auth-B2M91rSx.js +1 -0
- package/dist/public/sdk/runtime-device-link-ojjPSRaG.js +1 -0
- package/dist/public/sdk/runtime-ecdsa-tempo-CE4JLgmn.js +1 -0
- package/dist/public/sdk/runtime-email-otp-DDwtKVAe.js +1 -0
- package/dist/public/sdk/runtime-export-JXYk8sQ-.js +1 -0
- package/dist/public/sdk/runtime-near-BB8AG6dV.js +1 -0
- package/dist/public/sdk/runtime-preferences-DKFZYccW.js +1 -0
- package/dist/public/sdk/runtime-recovery-C_XjsDBg.js +1 -0
- package/dist/public/sdk/runtime-recovery-codes-CWp839mH.js +1 -0
- package/dist/public/sdk/runtimeContext-BpObgzbj.js +6 -0
- package/dist/public/sdk/runtimeLoader-DjgBf_yF.js +1 -0
- package/dist/public/sdk/sdkSentEvents-_RGAEeld.js +1 -0
- package/dist/public/sdk/secp256k1-B_6W9QDJ.js +1 -0
- package/dist/public/sdk/secureRandomId-CTdlJ5Mx.js +1 -0
- package/dist/public/sdk/sessionPolicy-CNVK7nJ6.js +1 -0
- package/dist/public/sdk/shared-j_KsFbCT.js +1 -0
- package/dist/public/sdk/signEvmFamily-CcLVBm0f.js +1 -0
- package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-DgTbh6jX.js +1 -0
- package/dist/public/sdk/signEvmWithUiConfirm-ChreN7aZ.js +1 -0
- package/dist/public/sdk/signNear-mWbTE2Dl.js +1 -0
- package/dist/public/sdk/signatureUses-CQkkUcwT.js +1 -0
- package/dist/public/sdk/signerDomain-BhUTzDmF.js +1 -0
- package/dist/public/sdk/signerLoader-By0IY24G.js +1 -0
- package/dist/public/sdk/signerSlot-BQ1g5JNV.js +1 -0
- package/dist/public/sdk/signingFlow-LUWrZi2d.js +2 -0
- package/dist/public/sdk/signingSessionSeal-Mr2Xp44o.js +1 -0
- package/dist/public/sdk/surface-measurement-reporter-OICExWKE.js +1 -0
- package/dist/public/sdk/trace-M34pNGuF.js +1 -0
- package/dist/public/sdk/transaction-activity-BbDod7ji.js +1 -0
- package/dist/public/sdk/transactionReview-CBE5oH4c.js +1 -0
- package/dist/public/sdk/transactionReviewAdmission-0ZgWs6q3.js +1 -0
- package/dist/public/sdk/transactionState-9d7f3xVj.js +1 -0
- package/dist/public/sdk/tx-confirm-ui.js +12 -158
- package/dist/public/sdk/types-M7vxrYtJ.js +1 -0
- package/dist/public/sdk/validation-dC1-_uyG.js +1 -0
- package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -13
- package/dist/public/sdk/wallet-iframe-host-full.js +1 -6
- package/dist/public/sdk/wallet-iframe-host-near.js +1 -13
- package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -4
- package/dist/public/sdk/wallet-recovery-CcDZ1hMH.js +1 -0
- package/dist/public/sdk/wallet-ui.css +1 -5874
- package/dist/public/sdk/walletAuthority-CoWSeqvQ.js +1 -0
- package/dist/public/sdk/walletCustodyEcdsaContinuity-B7xi7nwh.js +1 -0
- package/dist/public/sdk/walletIframeIdentity-C0b0XMQF.js +1 -0
- package/dist/public/sdk/walletRecoveryCommit-ljxVeo-d.js +1 -0
- package/dist/public/sdk/walletRecoveryRotate-HztDcDaY.js +1 -0
- package/dist/public/sdk/warmSessionHydration-BPGM0YRU.js +1 -0
- package/dist/public/sdk/webauthnP256-qu06GNFm.js +1 -0
- package/dist/public/sdk/webauthnPromptCoordinator-DO-qfECu.js +1 -0
- package/dist/public/sdk/workers/device-linking-key.worker.js +387 -1952
- package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +1523 -2668
- package/dist/public/sdk/workers/ecdsa-online-client.worker.js +1 -273
- package/dist/public/sdk/workers/ecdsa-presign-client.worker.js +1 -273
- package/dist/public/sdk/workers/email-otp.worker.js +228 -2103
- package/dist/public/sdk/workers/email_otp_runtime_bg.wasm +0 -0
- package/dist/public/sdk/workers/evm-crypto.worker.js +0 -188
- package/dist/public/sdk/workers/evm_crypto.wasm +0 -0
- package/dist/public/sdk/workers/evm_crypto_bg.wasm +0 -0
- package/dist/public/sdk/workers/near-signer.worker.js +16 -718
- package/dist/public/sdk/workers/near_signer.wasm +0 -0
- package/dist/public/sdk/workers/passkey-confirm.worker.js +0 -134
- package/dist/public/sdk/workers/passkey-mpc-export.worker.js +149 -506
- package/dist/public/sdk/workers/passkey-mpc-session.worker.js +0 -134
- 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.worker.js +0 -134
- package/dist/public/sdk/workers/shamir3pass_runtime_bg.wasm +0 -0
- package/dist/public/sdk/workers/tempo-signer.worker.js +0 -134
- package/dist/public/sdk/workers/tempo_signer.wasm +0 -0
- package/dist/public/sdk/workers/tempo_signer_bg.wasm +0 -0
- package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +135 -1635
- package/dist/public/sdk/workers/wallet_custody_ceremony.js +0 -14
- 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 +234 -258
- package/dist/public/wallet-service/index.html +4 -4
- package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +0 -4
- package/dist/types/shared-ts/src/device-linking/contracts.d.ts +1 -0
- package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +0 -2
- package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +0 -11
- package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +2 -7
- package/dist/types/shared-ts/src/signing-lanes/index.d.ts +0 -4
- package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +0 -1
- package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +0 -18
- package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +6 -35
- package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +6 -843
- package/dist/types/shared-ts/src/threshold/keyMaterialBrands.d.ts +0 -10
- package/dist/types/shared-ts/src/threshold/participants.d.ts +1 -1
- package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +1 -133
- package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +4 -18
- package/dist/types/shared-ts/src/utils/domainIds.d.ts +0 -12
- package/dist/types/shared-ts/src/utils/errors.d.ts +0 -4
- package/dist/types/shared-ts/src/utils/near.d.ts +0 -20
- package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -2
- package/dist/types/shared-ts/src/utils/registrationSetupOperation.d.ts +3 -0
- package/dist/types/shared-ts/src/utils/validation.d.ts +1 -3
- package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +0 -1
- package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +3 -0
- package/dist/types/shared-ts/src/utils/wireSchema.d.ts +0 -2
- package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +0 -1
- package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +1 -10
- package/dist/types/shared-ts/src/wallet-recovery/recoveryCodes.d.ts +1 -3
- package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +5 -21
- package/dist/types/wallet/src/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/operations/auth/walletUnlockSubject.d.ts +0 -3
- package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/challenge.d.ts +0 -4
- package/dist/types/wallet/src/SeamsWeb/operations/devices/deviceLinkingResume.d.ts +0 -1
- package/dist/types/wallet/src/SeamsWeb/operations/devices/linkDeviceFlow.d.ts +2 -0
- package/dist/types/wallet/src/SeamsWeb/operations/registration/pendingRegistrationRecovery.d.ts +0 -10
- package/dist/types/wallet/src/SeamsWeb/operations/session/thresholdEcdsaProvisioning.d.ts +1 -2
- package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +0 -2
- package/dist/types/wallet/src/SeamsWeb/signingSurface/types.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/surface/domain.d.ts +0 -8
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.d.ts +1 -2
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +9 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/hostedWalletSeamsSession.d.ts +0 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.d.ts +17 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +11 -3
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/icons.d.ts +15 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/exactSessionReconciliation.d.ts +3 -3
- package/dist/types/wallet/src/advanced.d.ts +1 -1
- package/dist/types/wallet/src/core/browser/walletIframe/events.d.ts +0 -2
- package/dist/types/wallet/src/core/indexedDB/index.d.ts +3 -5
- package/dist/types/wallet/src/core/indexedDB/passkeyClientDB.types.d.ts +0 -30
- package/dist/types/wallet/src/core/indexedDB/pendingWalletRecoveryCommit.d.ts +1 -4
- package/dist/types/wallet/src/core/indexedDB/schemaNames.d.ts +0 -22
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.d.ts +1 -1
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.d.ts +1 -1
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.d.ts +0 -1
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/registrationSetup.d.ts +42 -0
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/signingSessionSeals.d.ts +1 -5
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.d.ts +5 -1
- package/dist/types/wallet/src/core/indexedDB/unifiedIndexedDBManager.d.ts +1 -0
- package/dist/types/wallet/src/core/platform/browser/createBrowserPlatformRuntime.d.ts +1 -6
- package/dist/types/wallet/src/core/platform/ecdsaRoleLocalRecords.d.ts +0 -15
- package/dist/types/wallet/src/core/platform/index.d.ts +4 -4
- package/dist/types/wallet/src/core/platform/ports.d.ts +1 -51
- package/dist/types/wallet/src/core/platform/runtime.d.ts +0 -2
- package/dist/types/wallet/src/core/platform/secretSources.d.ts +0 -29
- package/dist/types/wallet/src/core/rpcClients/near/NearClient.d.ts +1 -1
- package/dist/types/wallet/src/core/rpcClients/relayer/passkeyCustodyEnvelope.d.ts +0 -6
- package/dist/types/wallet/src/core/rpcClients/relayer/thresholdEcdsa.d.ts +0 -1
- package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistration.d.ts +2 -19
- package/dist/types/wallet/src/core/signingEngine/assembly/ports/shared.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/assembly/ports/warmSigning.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/assembly/warmup.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/chains/near/nearSignerWasm.d.ts +0 -10
- package/dist/types/wallet/src/core/signingEngine/flows/recovery/keyExportConfirmation.d.ts +0 -15
- package/dist/types/wallet/src/core/signingEngine/flows/registration/accountLifecycle.d.ts +1 -11
- package/dist/types/wallet/src/core/signingEngine/flows/registration/public.d.ts +1 -9
- package/dist/types/wallet/src/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/flows/shared/signingStateMachine.d.ts +0 -6
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.d.ts +2 -10
- package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/ed25519YaoCapabilityResolution.d.ts +1 -4
- package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.d.ts +0 -5
- package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/signingMaterials.d.ts +0 -4
- package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.d.ts +0 -9
- package/dist/types/wallet/src/core/signingEngine/interfaces/index.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/nonce/NonceCoordinator.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/nonce/nonceTypes.d.ts +0 -9
- package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/session/authority/authorityOperationResolver.d.ts +1 -24
- package/dist/types/wallet/src/core/signingEngine/session/availability/readiness.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaLogin.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaRecovery.d.ts +0 -5
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ed25519ExportContext.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/secretEscrow.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/session/identity/clientSessionPersistenceState.d.ts +0 -6
- package/dist/types/wallet/src/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/session/identity/exactSigningLaneIdentity.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/session/identity/exactWalletSessionCredential.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/session/identity/laneIdentity.d.ts +0 -6
- package/dist/types/wallet/src/core/signingEngine/session/identity/walletUnlockSubject.d.ts +0 -8
- package/dist/types/wallet/src/core/signingEngine/session/keyMaterialBrands.d.ts +1 -4
- package/dist/types/wallet/src/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/session/operationState/authorizationAdmission.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/session/operationState/preparedOperation.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/persistence/ecdsaRoleLocalRecords.d.ts +1 -10
- package/dist/types/wallet/src/core/signingEngine/session/persistence/sealedSessionRecords.d.ts +2 -2
- package/dist/types/wallet/src/core/signingEngine/session/persistence/sealedSessionTransportAuth.d.ts +0 -5
- package/dist/types/wallet/src/core/signingEngine/session/postconditions/runtimePostconditions.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/routerAbSigningWalletSession.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.d.ts +0 -105
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/public.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.d.ts +0 -12
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/transitions.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/types.typecheck.d.ts +1 -10
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/methodRunners.d.ts +1 -5
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.d.ts +1 -2
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/requireStepUpAuth.d.ts +1 -19
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/types.d.ts +0 -10
- package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.d.ts +1 -15
- package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/activation.d.ts +0 -4
- package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/bootstrapSession.d.ts +0 -4
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/connectSession.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoClient.d.ts +1 -8
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/handlers/flows/requestRegistrationCredentialConfirmation.d.ts +1 -4
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/walletCustody/emailOtpLink.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/walletCustody/openCustodyCache.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/walletCustody/passkeyLink.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/walletCustody/registrationCeremony.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/webauthnAuth/walletOriginWebAuthn.d.ts +8 -0
- package/dist/types/wallet/src/core/signingEngine/workerManager/SignerWorkerManager.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaClientWorkerChannels.d.ts +0 -8
- package/dist/types/wallet/src/core/signingEngine/workerManager/validation.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workerTypes.d.ts +6 -109
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/device-linking-key/requests.d.ts +0 -5
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/crypto.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/custodyRestore.d.ts +0 -8
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/otpVerification.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/payloadParsing.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/unlock.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/near-signer.worker.d.ts +3 -31
- package/dist/types/wallet/src/core/types/accountIds.d.ts +1 -1
- package/dist/types/wallet/src/core/types/index.d.ts +0 -18
- package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +1 -2
- package/dist/types/wallet/src/core/types/secure-confirm-worker.d.ts +0 -5
- package/dist/types/wallet/src/core/types/signer-worker.d.ts +75 -134
- package/dist/types/wallet/src/react/components/AccountMenuButton/Toggle.d.ts +0 -15
- package/dist/types/wallet/src/react/components/theme/design-tokens.d.ts +0 -19
- package/dist/types/wallet/src/utils/qrScanner.d.ts +1 -21
- package/dist/workers/device-linking-key.worker.js +387 -1952
- package/dist/workers/ecdsa-derivation-client.worker.js +1523 -2668
- package/dist/workers/ecdsa-online-client.worker.js +1 -273
- package/dist/workers/ecdsa-presign-client.worker.js +1 -273
- package/dist/workers/email-otp.worker.js +228 -2103
- package/dist/workers/email_otp_runtime_bg.wasm +0 -0
- package/dist/workers/evm-crypto.worker.js +0 -188
- package/dist/workers/evm_crypto.wasm +0 -0
- package/dist/workers/evm_crypto_bg.wasm +0 -0
- package/dist/workers/near-signer.worker.js +16 -718
- package/dist/workers/near_signer.wasm +0 -0
- package/dist/workers/passkey-confirm.worker.js +0 -134
- package/dist/workers/passkey-mpc-export.worker.js +149 -506
- package/dist/workers/passkey-mpc-session.worker.js +0 -134
- 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.worker.js +0 -134
- package/dist/workers/shamir3pass_runtime_bg.wasm +0 -0
- package/dist/workers/tempo-signer.worker.js +0 -134
- package/dist/workers/tempo_signer.wasm +0 -0
- package/dist/workers/tempo_signer_bg.wasm +0 -0
- package/dist/workers/wallet-custody-ceremony.worker.js +135 -1635
- package/dist/workers/wallet_custody_ceremony.js +0 -14
- package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
- package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
- package/package.json +1 -14
- package/dist/esm/SeamsWeb/walletIframe/client/transport/webauthn-bridge.js +0 -99
- package/dist/esm/components/AccountMenuButton/AccountsSection.css +0 -81
- package/dist/esm/components/AccountMenuButton/ExportKeysSection.css +0 -96
- package/dist/esm/components/AccountMenuButton/LinkedDevicesModal.css +0 -612
- package/dist/esm/components/AccountMenuButton/MenuItem.css +0 -198
- package/dist/esm/components/AccountMenuButton/ProfileDropdown.css +0 -80
- package/dist/esm/components/AccountMenuButton/TransactionSettingsSection.css +0 -107
- package/dist/esm/components/AccountMenuButton/UserAccountButton.css +0 -177
- package/dist/esm/components/AccountMenuButton/WalletSettingsLayout.css +0 -456
- package/dist/esm/components/AccountMenuButton/Web3AuthProfileButton.css +0 -23
- package/dist/esm/components/AccountMenuButton/icons/TouchIcon.css +0 -46
- package/dist/esm/components/QRCodeScanner.css +0 -487
- package/dist/esm/components/ShowQRCode.css +0 -331
- package/dist/esm/core/indexedDB/seamsWalletDB/laneHolderMaterialStore.js +0 -236
- package/dist/esm/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.js +0 -171
- package/dist/esm/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.js +0 -32
- package/dist/esm/plugins/shared-ts/src/utils/base58.js +0 -1
- package/dist/esm/plugins/shared-ts/src/utils/near.js +0 -1
- package/dist/esm/plugins/shared-ts/src/utils/validation.js +0 -2
- package/dist/esm/react/SeamsWeb/SeamsWeb.js +0 -1918
- package/dist/esm/react/SeamsWeb/assembly/browserSigningSurfaceAssembly.js +0 -817
- package/dist/esm/react/SeamsWeb/assembly/browserWorkerWarmupPolicy.js +0 -31
- package/dist/esm/react/SeamsWeb/assembly/configureBrowserIndexedDB.js +0 -10
- package/dist/esm/react/SeamsWeb/assembly/createBrowserRecoveryPublicDeps.js +0 -95
- package/dist/esm/react/SeamsWeb/assembly/createBrowserSigningRuntime.js +0 -34
- package/dist/esm/react/SeamsWeb/assembly/createBrowserSigningStores.js +0 -39
- package/dist/esm/react/SeamsWeb/assembly/createBrowserStepUpRuntime.js +0 -34
- package/dist/esm/react/SeamsWeb/assembly/createBrowserWarmSessionPublicDeps.js +0 -31
- package/dist/esm/react/SeamsWeb/assembly/createWalletIframeOverlayState.js +0 -9
- package/dist/esm/react/SeamsWeb/assembly/createWalletIframeRouter.js +0 -44
- package/dist/esm/react/SeamsWeb/assembly/initializeBrowserSigningRuntime.js +0 -19
- package/dist/esm/react/SeamsWeb/assembly/runtimeConfig.js +0 -12
- package/dist/esm/react/SeamsWeb/operations/auth/login.js +0 -4408
- package/dist/esm/react/SeamsWeb/operations/auth/scheduleEcdsaSessionPresignaturePrefill.js +0 -41
- package/dist/esm/react/SeamsWeb/operations/auth/scheduleLinkedDevicePresignaturePrefill.js +0 -64
- package/dist/esm/react/SeamsWeb/operations/auth/walletAuth.js +0 -142
- package/dist/esm/react/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.js +0 -33
- package/dist/esm/react/SeamsWeb/operations/auth/walletUnlockSubject.js +0 -294
- package/dist/esm/react/SeamsWeb/operations/authMethods/addAuthMethodSourceClaim.js +0 -72
- package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/addEmailOtp.js +0 -191
- package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/challenge.js +0 -247
- package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.js +0 -572
- package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/localEmailOtpProjection.js +0 -69
- package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/registrationAuthority.js +0 -62
- package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/registrationOffer.js +0 -69
- package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/walletActivation.js +0 -95
- package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/addPasskey.js +0 -260
- package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/ecdsaBootstrap.js +0 -17
- package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/exactPasskeyAuthority.js +0 -34
- package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/localPasskeyProjection.js +0 -117
- package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/localUnlock.js +0 -16
- package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/loginAssertion.js +0 -25
- package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/registrationAuthority.js +0 -84
- package/dist/esm/react/SeamsWeb/operations/authMethods/revokeAuthMethod.js +0 -205
- package/dist/esm/react/SeamsWeb/operations/authMethods/sourcePasskeyProof.js +0 -12
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingAuthorityInstallation.js +0 -444
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingComposition.js +0 -106
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingEd25519ExportRoot.js +0 -194
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingHttpTransport.js +0 -524
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingOwnerTransport.js +0 -135
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingResume.js +0 -215
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingTargetCredential.js +0 -63
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingTargetEd25519ExportRoot.js +0 -61
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingWorkerChannels.js +0 -337
- package/dist/esm/react/SeamsWeb/operations/devices/linkDevice.js +0 -75
- package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceFlow.js +0 -1358
- package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceFlowSupport.js +0 -143
- package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceTargetActivation.js +0 -119
- package/dist/esm/react/SeamsWeb/operations/devices/scanDevice.js +0 -384
- package/dist/esm/react/SeamsWeb/operations/devices/walletHostComposition.js +0 -130
- package/dist/esm/react/SeamsWeb/operations/devices/walletHostOwnerAuthority.js +0 -191
- package/dist/esm/react/SeamsWeb/operations/evm/index.js +0 -35
- package/dist/esm/react/SeamsWeb/operations/near/actions.js +0 -484
- package/dist/esm/react/SeamsWeb/operations/near/commandSubject.js +0 -14
- package/dist/esm/react/SeamsWeb/operations/near/delegateAction.js +0 -247
- package/dist/esm/react/SeamsWeb/operations/near/index.js +0 -37
- package/dist/esm/react/SeamsWeb/operations/near/signNEP413.js +0 -117
- package/dist/esm/react/SeamsWeb/operations/near/signingEventHelpers.js +0 -15
- package/dist/esm/react/SeamsWeb/operations/recovery/accountSync.js +0 -21
- package/dist/esm/react/SeamsWeb/operations/recovery/recoveryWalletBinding.js +0 -43
- package/dist/esm/react/SeamsWeb/operations/recovery/syncAccount.js +0 -914
- package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryCodeBackup.js +0 -100
- package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryCommit.js +0 -477
- package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryDurablePayload.js +0 -383
- package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryJournal.js +0 -118
- package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryRotation.js +0 -214
- package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecovery.js +0 -184
- package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecoveryUnlock.js +0 -247
- package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecoveryValidation.js +0 -134
- package/dist/esm/react/SeamsWeb/operations/registration/pendingRegistrationRecovery.js +0 -363
- package/dist/esm/react/SeamsWeb/operations/registration/registration.js +0 -3818
- package/dist/esm/react/SeamsWeb/operations/registration/registrationEd25519Yao.js +0 -166
- package/dist/esm/react/SeamsWeb/operations/registration/registrationSignerSet.js +0 -60
- package/dist/esm/react/SeamsWeb/operations/registration/registrationStrictEcdsa.js +0 -343
- package/dist/esm/react/SeamsWeb/operations/registration/registrationTerminalCommit.js +0 -296
- package/dist/esm/react/SeamsWeb/operations/registration/registrationTiming.js +0 -682
- package/dist/esm/react/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +0 -40
- package/dist/esm/react/SeamsWeb/operations/session/thresholdWarmSessionBootstrap.js +0 -20
- package/dist/esm/react/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.js +0 -568
- package/dist/esm/react/SeamsWeb/operations/tempo/feeTokenPreference.js +0 -67
- package/dist/esm/react/SeamsWeb/operations/tempo/index.js +0 -39
- package/dist/esm/react/SeamsWeb/publicApi/auth.js +0 -24
- package/dist/esm/react/SeamsWeb/publicApi/awaitNearReady.js +0 -72
- package/dist/esm/react/SeamsWeb/publicApi/capabilitySelection.js +0 -63
- package/dist/esm/react/SeamsWeb/publicApi/chainTargets.js +0 -48
- package/dist/esm/react/SeamsWeb/publicApi/createPublicApi.js +0 -133
- package/dist/esm/react/SeamsWeb/publicApi/currentWallet.js +0 -46
- package/dist/esm/react/SeamsWeb/publicApi/devices.js +0 -83
- package/dist/esm/react/SeamsWeb/publicApi/evm.js +0 -103
- package/dist/esm/react/SeamsWeb/publicApi/keyExport.js +0 -90
- package/dist/esm/react/SeamsWeb/publicApi/near.js +0 -449
- package/dist/esm/react/SeamsWeb/publicApi/preferences.js +0 -61
- package/dist/esm/react/SeamsWeb/publicApi/recovery.js +0 -19
- package/dist/esm/react/SeamsWeb/publicApi/tempo.js +0 -244
- package/dist/esm/react/SeamsWeb/publicApi/transactionReview.js +0 -12
- package/dist/esm/react/SeamsWeb/publicApi/types.js +0 -10
- package/dist/esm/react/SeamsWeb/signingSurface/BrowserSigningSurface.js +0 -3917
- package/dist/esm/react/SeamsWeb/walletIframe/client/overlay/overlay-controller.js +0 -530
- package/dist/esm/react/SeamsWeb/walletIframe/client/overlay/overlay-styles.js +0 -417
- package/dist/esm/react/SeamsWeb/walletIframe/client/progress/on-events-progress-bus.js +0 -134
- package/dist/esm/react/SeamsWeb/walletIframe/client/router.js +0 -3368
- package/dist/esm/react/SeamsWeb/walletIframe/client/surface/domain.js +0 -288
- package/dist/esm/react/SeamsWeb/walletIframe/client/surface/geometry.js +0 -128
- package/dist/esm/react/SeamsWeb/walletIframe/client/surface/renderer.js +0 -119
- package/dist/esm/react/SeamsWeb/walletIframe/client/surface/transactionSurfaceQueue.js +0 -125
- package/dist/esm/react/SeamsWeb/walletIframe/client/transactionReviewReservation.js +0 -96
- package/dist/esm/react/SeamsWeb/walletIframe/client/transport/IframeTransport.js +0 -252
- package/dist/esm/react/SeamsWeb/walletIframe/client/transport/iframe-transport-dom.js +0 -71
- package/dist/esm/react/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.js +0 -211
- package/dist/esm/react/SeamsWeb/walletIframe/client/transport/webauthn-bridge.js +0 -99
- package/dist/esm/react/SeamsWeb/walletIframe/coordinator.js +0 -235
- package/dist/esm/react/SeamsWeb/walletIframe/host/restoredSessionPresignaturePrefill.js +0 -29
- package/dist/esm/react/SeamsWeb/walletIframe/host/surface-measurement-reporter.js +0 -158
- package/dist/esm/react/SeamsWeb/walletIframe/shared/exactSessionState.js +0 -605
- package/dist/esm/react/SeamsWeb/walletIframe/shared/is-dev-host.js +0 -11
- package/dist/esm/react/SeamsWeb/walletIframe/shared/messages.js +0 -588
- package/dist/esm/react/SeamsWeb/walletIframe/shared/transactionReview.js +0 -83
- package/dist/esm/react/SeamsWeb/walletIframe/shared/unlockOptions.js +0 -54
- package/dist/esm/react/base-styles.js +0 -13
- package/dist/esm/react/build-paths.js +0 -109
- package/dist/esm/react/config.js +0 -37
- package/dist/esm/react/core/accountData/near/accountProjection.js +0 -119
- package/dist/esm/react/core/accountData/near/accountRefs.js +0 -21
- package/dist/esm/react/core/accountData/near/keyMaterial.js +0 -171
- package/dist/esm/react/core/accountData/near/profileId.js +0 -24
- package/dist/esm/react/core/browser/walletIframe/csp-stylesheet.js +0 -189
- package/dist/esm/react/core/browser/walletIframe/events.js +0 -10
- package/dist/esm/react/core/browser/walletIframe/host-mode.js +0 -19
- package/dist/esm/react/core/browser/walletIframe/hostVariant.js +0 -16
- package/dist/esm/react/core/config/chains.js +0 -90
- package/dist/esm/react/core/config/configBuilder.js +0 -231
- package/dist/esm/react/core/config/configHelpers.js +0 -183
- package/dist/esm/react/core/config/defaultConfigs.js +0 -120
- package/dist/esm/react/core/config/defineConfig.js +0 -48
- package/dist/esm/react/core/config/managedRuntimeScope.js +0 -16
- package/dist/esm/react/core/indexedDB/accountKeyMaterial.js +0 -68
- package/dist/esm/react/core/indexedDB/accountSignerLifecycle.js +0 -143
- package/dist/esm/react/core/indexedDB/index.js +0 -60
- package/dist/esm/react/core/indexedDB/keyMaterialEnvelope.js +0 -69
- package/dist/esm/react/core/indexedDB/lastProfileState.js +0 -22
- package/dist/esm/react/core/indexedDB/linkedAuthoritySignerMaterial.js +0 -291
- package/dist/esm/react/core/indexedDB/nonceLaneCoordinationStore.js +0 -115
- package/dist/esm/react/core/indexedDB/normalization.js +0 -24
- package/dist/esm/react/core/indexedDB/pendingWalletRecoveryCommit.js +0 -477
- package/dist/esm/react/core/indexedDB/pendingWalletRegistrationCommit.js +0 -745
- package/dist/esm/react/core/indexedDB/profileAccountProjection.js +0 -70
- package/dist/esm/react/core/indexedDB/schemaNames.js +0 -845
- package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestLookups.js +0 -209
- package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.js +0 -848
- package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +0 -1215
- package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.js +0 -235
- package/dist/esm/react/core/indexedDB/seamsWalletDB/manager.js +0 -140
- package/dist/esm/react/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.js +0 -145
- package/dist/esm/react/core/indexedDB/seamsWalletDB/repositories.js +0 -4747
- package/dist/esm/react/core/indexedDB/seamsWalletDB/schema.js +0 -23
- package/dist/esm/react/core/indexedDB/seamsWalletDB/signingSessionSeals.js +0 -205
- package/dist/esm/react/core/indexedDB/seamsWalletDB/walletCustodyEcdsaContinuity.js +0 -198
- package/dist/esm/react/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +0 -569
- package/dist/esm/react/core/indexedDB/singletons.js +0 -7
- package/dist/esm/react/core/indexedDB/unifiedIndexedDBManager.js +0 -578
- package/dist/esm/react/core/indexedDB/walletCustodyEd25519MaterialRecord.js +0 -60
- package/dist/esm/react/core/platform/browser/createBrowserPlatformRuntime.js +0 -552
- package/dist/esm/react/core/platform/secretSources.js +0 -111
- package/dist/esm/react/core/platform/signerCoreCommandAdapters.js +0 -122
- package/dist/esm/react/core/rpcClients/evm/EvmClient.js +0 -549
- package/dist/esm/react/core/rpcClients/evm/nonceBackend.js +0 -279
- package/dist/esm/react/core/rpcClients/near/NearClient.js +0 -56
- package/dist/esm/react/core/rpcClients/near/NearRpcError.js +0 -105
- package/dist/esm/react/core/rpcClients/near/rpcCalls.js +0 -376
- package/dist/esm/react/core/rpcClients/relayer/ownerWalletExecutionLanePreflight.js +0 -67
- package/dist/esm/react/core/rpcClients/relayer/passkeyCustodyEnvelope.js +0 -228
- package/dist/esm/react/core/rpcClients/relayer/registrationSignerSetRequest.js +0 -8
- package/dist/esm/react/core/rpcClients/relayer/relayerHttp.js +0 -26
- package/dist/esm/react/core/rpcClients/relayer/routerAbNormalSigning.js +0 -812
- package/dist/esm/react/core/rpcClients/relayer/routerAbNormalSigningValidation.js +0 -23
- package/dist/esm/react/core/rpcClients/relayer/sealedRefreshCapabilities.js +0 -148
- package/dist/esm/react/core/rpcClients/relayer/thresholdEcdsa.js +0 -237
- package/dist/esm/react/core/rpcClients/relayer/walletRecoveryFinalize.js +0 -174
- package/dist/esm/react/core/rpcClients/relayer/walletRecoveryGoogleEmailOtp.js +0 -161
- package/dist/esm/react/core/rpcClients/relayer/walletRecoveryPrepare.js +0 -295
- package/dist/esm/react/core/rpcClients/relayer/walletRecoveryRotate.js +0 -311
- package/dist/esm/react/core/rpcClients/relayer/walletRegistration.js +0 -2349
- package/dist/esm/react/core/rpcClients/relayer/walletRegistrationTerminalResponse.js +0 -719
- package/dist/esm/react/core/rpcClients/relayer/walletSessionAuthorizationStatus.js +0 -214
- package/dist/esm/react/core/runtime/createSigningRuntime.js +0 -100
- package/dist/esm/react/core/signingEngine/assembly/createManagers.js +0 -80
- package/dist/esm/react/core/signingEngine/assembly/createPorts.js +0 -54
- package/dist/esm/react/core/signingEngine/assembly/ports/emailOtp.js +0 -30
- package/dist/esm/react/core/signingEngine/assembly/ports/evmFamily.js +0 -73
- package/dist/esm/react/core/signingEngine/assembly/ports/near.js +0 -21
- package/dist/esm/react/core/signingEngine/assembly/ports/recovery.js +0 -75
- package/dist/esm/react/core/signingEngine/assembly/ports/registration.js +0 -22
- package/dist/esm/react/core/signingEngine/assembly/ports/session.js +0 -25
- package/dist/esm/react/core/signingEngine/assembly/ports/shared.js +0 -40
- package/dist/esm/react/core/signingEngine/assembly/ports/stepUpRuntime.js +0 -67
- package/dist/esm/react/core/signingEngine/assembly/ports/warmSigning.js +0 -92
- package/dist/esm/react/core/signingEngine/assembly/warmup.js +0 -68
- package/dist/esm/react/core/signingEngine/chains/evm/bytes.js +0 -22
- package/dist/esm/react/core/signingEngine/chains/evm/display/calldata.js +0 -25
- package/dist/esm/react/core/signingEngine/chains/evm/display/evmTx.js +0 -119
- package/dist/esm/react/core/signingEngine/chains/evm/display/functionSelectors.js +0 -72
- package/dist/esm/react/core/signingEngine/chains/evm/display/gas.js +0 -19
- package/dist/esm/react/core/signingEngine/chains/evm/display/normalization.js +0 -23
- package/dist/esm/react/core/signingEngine/chains/evm/evmAdapter.js +0 -44
- package/dist/esm/react/core/signingEngine/chains/evm/evmCryptoWasm.js +0 -198
- package/dist/esm/react/core/signingEngine/chains/near/display.js +0 -248
- package/dist/esm/react/core/signingEngine/chains/near/nearSignerWasm.js +0 -170
- package/dist/esm/react/core/signingEngine/chains/near/payloads.js +0 -58
- package/dist/esm/react/core/signingEngine/chains/tempo/display.js +0 -130
- package/dist/esm/react/core/signingEngine/chains/tempo/feeToken.js +0 -187
- package/dist/esm/react/core/signingEngine/chains/tempo/tempoAdapter.js +0 -49
- package/dist/esm/react/core/signingEngine/chains/tempo/tempoSignerWasm.js +0 -90
- package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaDerivationExport.js +0 -428
- package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaExportFlow.js +0 -660
- package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaExportMaterial.js +0 -250
- package/dist/esm/react/core/signingEngine/flows/recovery/ed25519YaoExportFlow.js +0 -353
- package/dist/esm/react/core/signingEngine/flows/recovery/exportKeypairOperation.js +0 -213
- package/dist/esm/react/core/signingEngine/flows/recovery/exportLaneSelection.js +0 -283
- package/dist/esm/react/core/signingEngine/flows/recovery/keyExportConfirmation.js +0 -325
- package/dist/esm/react/core/signingEngine/flows/recovery/keyExportFlow.js +0 -81
- package/dist/esm/react/core/signingEngine/flows/recovery/passkeyEd25519YaoRecovery.js +0 -192
- package/dist/esm/react/core/signingEngine/flows/recovery/public.js +0 -26
- package/dist/esm/react/core/signingEngine/flows/recovery/stepUpAuthorization.js +0 -139
- package/dist/esm/react/core/signingEngine/flows/registration/accountLifecycle.js +0 -1098
- package/dist/esm/react/core/signingEngine/flows/registration/nearProvisioningRegistry.js +0 -79
- package/dist/esm/react/core/signingEngine/flows/registration/public.js +0 -85
- package/dist/esm/react/core/signingEngine/flows/registration/services/ecdsaRegistrationSessions.js +0 -77
- package/dist/esm/react/core/signingEngine/flows/registration/services/ecdsaWalletRecords.js +0 -15
- package/dist/esm/react/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.js +0 -83
- package/dist/esm/react/core/signingEngine/flows/registration/services/registrationAccounts.js +0 -30
- package/dist/esm/react/core/signingEngine/flows/registration/session.js +0 -24
- package/dist/esm/react/core/signingEngine/flows/shared/signingConfirmation.js +0 -194
- package/dist/esm/react/core/signingEngine/flows/shared/signingStateMachine.js +0 -485
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/accountAuth.js +0 -12
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/addresses.js +0 -10
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/authPlanning.js +0 -139
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/ecdsaLanes.js +0 -102
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/ecdsaSelection.js +0 -233
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/emailOtpPublic.js +0 -123
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.js +0 -227
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/errors.js +0 -127
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/events.js +0 -39
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/evmNonceLifecycle.js +0 -49
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/executorThresholdState.js +0 -22
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/freshAuthRetryPolicy.js +0 -98
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/freshWalletSessionRetry.js +0 -76
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/nonceLifecycleAdapter.js +0 -245
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/nonceResolution.js +0 -91
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/operationIds.js +0 -33
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/preparedSigning.js +0 -376
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.js +0 -191
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/requireEvmFamilyStepUpAuth.js +0 -128
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +0 -510
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmFamilyWithUiConfirmForTempo.js +0 -65
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmWithUiConfirm.js +0 -26
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signatureUses.js +0 -12
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signerLoader.js +0 -25
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.js +0 -82
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/secp256k1.js +0 -182
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/webauthnP256.js +0 -84
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signingFlow.js +0 -633
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +0 -392
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/stepUpAuthorization.js +0 -56
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/tempoNonceLifecycle.js +0 -47
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/thresholdAdmission.js +0 -87
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/transactionExecutor.js +0 -140
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/types.js +0 -20
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/webauthnP256KeyRef.js +0 -33
- package/dist/esm/react/core/signingEngine/flows/signNear/implicitAccountFunding.js +0 -202
- package/dist/esm/react/core/signingEngine/flows/signNear/nearSigningFlow.js +0 -56
- package/dist/esm/react/core/signingEngine/flows/signNear/requireNearStepUpAuth.js +0 -102
- package/dist/esm/react/core/signingEngine/flows/signNear/shared/confirmationProgress.js +0 -28
- package/dist/esm/react/core/signingEngine/flows/signNear/shared/ed25519YaoCapabilityResolution.js +0 -101
- package/dist/esm/react/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +0 -822
- package/dist/esm/react/core/signingEngine/flows/signNear/shared/implicitAccountFundingPort.js +0 -24
- package/dist/esm/react/core/signingEngine/flows/signNear/shared/operationStepUpPreparation.js +0 -68
- package/dist/esm/react/core/signingEngine/flows/signNear/shared/signatureOnlySigning.js +0 -343
- package/dist/esm/react/core/signingEngine/flows/signNear/shared/signingMaterials.js +0 -25
- package/dist/esm/react/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.js +0 -138
- package/dist/esm/react/core/signingEngine/flows/signNear/signDelegate.js +0 -290
- package/dist/esm/react/core/signingEngine/flows/signNear/signNear.js +0 -1238
- package/dist/esm/react/core/signingEngine/flows/signNear/signNep413.js +0 -144
- package/dist/esm/react/core/signingEngine/flows/signNear/signTransactions.js +0 -897
- package/dist/esm/react/core/signingEngine/flows/signNear/signatureUses.js +0 -12
- package/dist/esm/react/core/signingEngine/flows/signNear/stepUpAuthorization.js +0 -42
- package/dist/esm/react/core/signingEngine/interfaces/accountAuthMetadata.js +0 -14
- package/dist/esm/react/core/signingEngine/interfaces/ecdsaChainTarget.js +0 -142
- package/dist/esm/react/core/signingEngine/interfaces/operationStepUpPreparation.js +0 -18
- package/dist/esm/react/core/signingEngine/nonce/NonceCoordinator.js +0 -1026
- package/dist/esm/react/core/signingEngine/nonce/evmNonceLane.js +0 -182
- package/dist/esm/react/core/signingEngine/nonce/nearNonceLane.js +0 -669
- package/dist/esm/react/core/signingEngine/nonce/nearNonceLaneIdentity.js +0 -24
- package/dist/esm/react/core/signingEngine/nonce/nonceCoordinationRecordBoundary.js +0 -216
- package/dist/esm/react/core/signingEngine/nonce/nonceDiagnostics.js +0 -232
- package/dist/esm/react/core/signingEngine/nonce/nonceLaneKeys.js +0 -110
- package/dist/esm/react/core/signingEngine/nonce/nonceLeaseState.js +0 -128
- package/dist/esm/react/core/signingEngine/nonce/nonceTypes.js +0 -59
- package/dist/esm/react/core/signingEngine/nonce/nonceUtils.js +0 -33
- package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/httpRequest.js +0 -74
- package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.js +0 -217
- package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +0 -1218
- package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/presignatureRefillProgress.js +0 -53
- package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.js +0 -22
- package/dist/esm/react/core/signingEngine/session/SigningSessionCoordinator.js +0 -347
- package/dist/esm/react/core/signingEngine/session/authority/authorityOperationResolver.js +0 -165
- package/dist/esm/react/core/signingEngine/session/availability/availableSigningLanes.js +0 -1064
- package/dist/esm/react/core/signingEngine/session/availability/canonicalLaneInventory.js +0 -127
- package/dist/esm/react/core/signingEngine/session/availability/clientSessionExpiryInvalidator.js +0 -72
- package/dist/esm/react/core/signingEngine/session/availability/persistedAvailableSigningLanes.js +0 -214
- package/dist/esm/react/core/signingEngine/session/availability/readiness.js +0 -464
- package/dist/esm/react/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +0 -131
- package/dist/esm/react/core/signingEngine/session/emailOtp/challengeDelivery.js +0 -56
- package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaBootstrapCommit.js +0 -106
- package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaLifecycleRuntime.js +0 -50
- package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaLogin.js +0 -936
- package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaPublication.js +0 -414
- package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaRecovery.js +0 -268
- package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaSigningSessionAuthority.js +0 -95
- package/dist/esm/react/core/signingEngine/session/emailOtp/ed25519ExportContext.js +0 -376
- package/dist/esm/react/core/signingEngine/session/emailOtp/exportRecovery.js +0 -286
- package/dist/esm/react/core/signingEngine/session/emailOtp/exportRecoveryRuntime.js +0 -50
- package/dist/esm/react/core/signingEngine/session/emailOtp/persistedSnapshot.js +0 -22
- package/dist/esm/react/core/signingEngine/session/emailOtp/publicTypes.js +0 -38
- package/dist/esm/react/core/signingEngine/session/emailOtp/routePlan.js +0 -60
- package/dist/esm/react/core/signingEngine/session/emailOtp/runtimeConfig.js +0 -24
- package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRefreshPolicy.js +0 -49
- package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRestoreOrchestrator.js +0 -234
- package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRuntimePurpose.js +0 -16
- package/dist/esm/react/core/signingEngine/session/emailOtp/sealedSessionRegistry.js +0 -40
- package/dist/esm/react/core/signingEngine/session/emailOtp/status.js +0 -72
- package/dist/esm/react/core/signingEngine/session/emailOtp/walletUnlock.js +0 -168
- package/dist/esm/react/core/signingEngine/session/emailOtp/warmSessionRuntime.js +0 -70
- package/dist/esm/react/core/signingEngine/session/emailOtp/workerEnrollment.js +0 -159
- package/dist/esm/react/core/signingEngine/session/emailOtp/workerRequests.js +0 -84
- package/dist/esm/react/core/signingEngine/session/emailOtp/zeroize.js +0 -9
- package/dist/esm/react/core/signingEngine/session/identity/clientSessionPersistenceState.js +0 -95
- package/dist/esm/react/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.js +0 -23
- package/dist/esm/react/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.js +0 -265
- package/dist/esm/react/core/signingEngine/session/identity/exactSigningLaneIdentity.js +0 -338
- package/dist/esm/react/core/signingEngine/session/identity/exactWalletSessionCredential.js +0 -106
- package/dist/esm/react/core/signingEngine/session/identity/exactWalletSessionReader.js +0 -54
- package/dist/esm/react/core/signingEngine/session/identity/laneIdentity.js +0 -168
- package/dist/esm/react/core/signingEngine/session/identity/ownerLaneScope.js +0 -185
- package/dist/esm/react/core/signingEngine/session/identity/selectLane.js +0 -335
- package/dist/esm/react/core/signingEngine/session/identity/signingLaneAuthBinding.js +0 -29
- package/dist/esm/react/core/signingEngine/session/keyMaterialBrands.js +0 -75
- package/dist/esm/react/core/signingEngine/session/lanes/walletExecutionLaneHydration.js +0 -194
- package/dist/esm/react/core/signingEngine/session/lifecycle/canonicalWalletSessionStatus.js +0 -32
- package/dist/esm/react/core/signingEngine/session/lifecycle/walletSessionFailure.js +0 -69
- package/dist/esm/react/core/signingEngine/session/lifecycle/walletSessionStatus.js +0 -123
- package/dist/esm/react/core/signingEngine/session/material/activeEcdsaCapabilityRuntime.js +0 -171
- package/dist/esm/react/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.js +0 -318
- package/dist/esm/react/core/signingEngine/session/material/ecdsaCapabilityHydration.js +0 -75
- package/dist/esm/react/core/signingEngine/session/material/ecdsaCapabilityManifest.js +0 -498
- package/dist/esm/react/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.js +0 -122
- package/dist/esm/react/core/signingEngine/session/material/ecdsaSealedRuntime.js +0 -197
- package/dist/esm/react/core/signingEngine/session/material/ecdsaSigningCapability.js +0 -231
- package/dist/esm/react/core/signingEngine/session/material/linkedEcdsaHolderRuntime.js +0 -36
- package/dist/esm/react/core/signingEngine/session/material/mpcCapabilityHydration.js +0 -79
- package/dist/esm/react/core/signingEngine/session/material/nearEd25519YaoMaterialActivation.js +0 -80
- package/dist/esm/react/core/signingEngine/session/material/nearEd25519YaoSigningPreparation.js +0 -122
- package/dist/esm/react/core/signingEngine/session/material/restorableMpcMaterialRef.internal.js +0 -21
- package/dist/esm/react/core/signingEngine/session/material/walletSigningStateFailure.js +0 -84
- package/dist/esm/react/core/signingEngine/session/operationState/authorizationAdmission.js +0 -98
- package/dist/esm/react/core/signingEngine/session/operationState/lanes.js +0 -127
- package/dist/esm/react/core/signingEngine/session/operationState/preparedOperation.js +0 -38
- package/dist/esm/react/core/signingEngine/session/operationState/trace.js +0 -94
- package/dist/esm/react/core/signingEngine/session/operationState/transactionState.js +0 -106
- package/dist/esm/react/core/signingEngine/session/operationState/types.js +0 -88
- package/dist/esm/react/core/signingEngine/session/passkey/ecdsaBootstrap.js +0 -187
- package/dist/esm/react/core/signingEngine/session/passkey/ecdsaKeyFactsInventory.js +0 -206
- package/dist/esm/react/core/signingEngine/session/passkey/ecdsaRecovery.js +0 -87
- package/dist/esm/react/core/signingEngine/session/passkey/ecdsaSessionProvision.js +0 -224
- package/dist/esm/react/core/signingEngine/session/passkey/ecdsaWarmCapabilityBootstrap.js +0 -147
- package/dist/esm/react/core/signingEngine/session/passkey/ed25519Provisioner.js +0 -55
- package/dist/esm/react/core/signingEngine/session/passkey/ed25519SessionProvision.js +0 -229
- package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.js +0 -537
- package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoRecoveryCapability.js +0 -94
- package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoSealedSession.js +0 -57
- package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.js +0 -314
- package/dist/esm/react/core/signingEngine/session/passkey/passkeyCustodySessionCache.js +0 -90
- package/dist/esm/react/core/signingEngine/session/passkey/prfCache.js +0 -60
- package/dist/esm/react/core/signingEngine/session/passkey/public.js +0 -15
- package/dist/esm/react/core/signingEngine/session/passkey/unlockEcdsaWarmupPlanner.js +0 -247
- package/dist/esm/react/core/signingEngine/session/passkey/warmSessionHydration.js +0 -9
- package/dist/esm/react/core/signingEngine/session/persistence/clientSessionPersistence.js +0 -143
- package/dist/esm/react/core/signingEngine/session/persistence/durableSealedSessionCommands.js +0 -30
- package/dist/esm/react/core/signingEngine/session/persistence/ecdsaRoleLocalRecords.js +0 -316
- package/dist/esm/react/core/signingEngine/session/persistence/ecdsaSealedRecordKey.js +0 -20
- package/dist/esm/react/core/signingEngine/session/persistence/sealedSessionRecords.js +0 -761
- package/dist/esm/react/core/signingEngine/session/persistence/sealedSessionStore.js +0 -518
- package/dist/esm/react/core/signingEngine/session/persistence/walletSessionAuthorizationProjection.js +0 -51
- package/dist/esm/react/core/signingEngine/session/planning/operationFingerprint.js +0 -30
- package/dist/esm/react/core/signingEngine/session/planning/operationIdBinding.js +0 -36
- package/dist/esm/react/core/signingEngine/session/planning/planner.js +0 -98
- package/dist/esm/react/core/signingEngine/session/postconditions/runtimePostconditions.js +0 -165
- package/dist/esm/react/core/signingEngine/session/public.js +0 -44
- package/dist/esm/react/core/signingEngine/session/routerAbSigningWalletSession.js +0 -125
- package/dist/esm/react/core/signingEngine/session/sealedRecovery/exactRecordLookup.js +0 -148
- package/dist/esm/react/core/signingEngine/session/sealedRecovery/materialActivationKey.js +0 -22
- package/dist/esm/react/core/signingEngine/session/sealedRecovery/recoveryRecord.js +0 -248
- package/dist/esm/react/core/signingEngine/session/sealedRecovery/restoreCoordinator.js +0 -229
- package/dist/esm/react/core/signingEngine/session/userPreferences.js +0 -212
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/capabilityReader.js +0 -62
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/capabilityReaderCore.js +0 -293
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/clearVolatileWarmSigningMaterial.js +0 -44
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaBootstrapPersistence.js +0 -107
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaBootstrapQueue.js +0 -22
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefill.js +0 -93
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefillSigningMaterialSource.js +0 -50
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.js +0 -9
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/ed25519SealedSessionRuntime.js +0 -251
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/nearEd25519CapabilityRehydration.js +0 -98
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/public.js +0 -31
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/readModel.js +0 -161
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/routerAbEd25519WalletSessionState.js +0 -256
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.js +0 -73
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/sealedRefreshParity.js +0 -67
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/statusReader.js +0 -100
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/transitions.js +0 -51
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/types.js +0 -122
- package/dist/esm/react/core/signingEngine/session/warmCapabilities/volatileWarmMaterialCommands.js +0 -45
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/channel/confirmCommon.js +0 -89
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/channel/confirmTypes.js +0 -12
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/confirmOperation.js +0 -51
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/intentDigestPreparation.js +0 -29
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/methodSelection.js +0 -41
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.js +0 -32
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/exportAuthorization.js +0 -108
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/promptText.js +0 -8
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/signingPrompt.js +0 -15
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.js +0 -295
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.js +0 -170
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/requireStepUpAuth.js +0 -63
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/types.js +0 -29
- package/dist/esm/react/core/signingEngine/stepUpConfirmation/userConfirmationType.js +0 -15
- package/dist/esm/react/core/signingEngine/threshold/commitQueueShared.js +0 -139
- package/dist/esm/react/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.js +0 -619
- package/dist/esm/react/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.js +0 -70
- package/dist/esm/react/core/signingEngine/threshold/ecdsa/activation.js +0 -267
- package/dist/esm/react/core/signingEngine/threshold/ecdsa/bootstrapSession.js +0 -119
- package/dist/esm/react/core/signingEngine/threshold/ecdsa/operationStepUp.js +0 -110
- package/dist/esm/react/core/signingEngine/threshold/ecdsa/postRegistrationSessionActivation.js +0 -132
- package/dist/esm/react/core/signingEngine/threshold/ecdsa/signingQueue.js +0 -16
- package/dist/esm/react/core/signingEngine/threshold/ed25519/commitQueue.js +0 -16
- package/dist/esm/react/core/signingEngine/threshold/ed25519/connectSession.js +0 -137
- package/dist/esm/react/core/signingEngine/threshold/ed25519/walletSession.js +0 -363
- package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoActiveClientRegistry.js +0 -146
- package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoClient.js +0 -597
- package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoPageLifecycleOwner.js +0 -23
- package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.js +0 -295
- package/dist/esm/react/core/signingEngine/threshold/sessionPolicy.js +0 -94
- package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcExportManager.js +0 -233
- package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +0 -496
- package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +0 -746
- package/dist/esm/react/core/signingEngine/uiConfirm/UiConfirmManager.js +0 -600
- package/dist/esm/react/core/signingEngine/uiConfirm/confirmationReadinessRegistry.js +0 -41
- package/dist/esm/react/core/signingEngine/uiConfirm/exportConfirmRequest.js +0 -149
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/determineConfirmationConfig.js +0 -82
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flowOrchestrator.js +0 -363
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.js +0 -337
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/adapters/request.js +0 -120
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/localOnly.js +0 -150
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/registration.js +0 -235
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/requestRegistrationCredentialConfirmation.js +0 -178
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/signing.js +0 -684
- package/dist/esm/react/core/signingEngine/uiConfirm/handlers/handlePromptFromWorker.js +0 -90
- package/dist/esm/react/core/signingEngine/uiConfirm/nearFundingNotice.js +0 -50
- package/dist/esm/react/core/signingEngine/uiConfirm/transactionReviewAdmission.js +0 -8
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/appearance-token-vars.js +0 -31
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/appearance.js +0 -27
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirm-surface-resize.js +0 -346
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirm-ui.js +0 -516
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirmation-body-model.js +0 -24
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirmation-model.js +0 -161
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/drawer-gesture.js +0 -16
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/export-private-key-reveal.js +0 -155
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/export-viewer-host.js +0 -207
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +0 -131
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.js +0 -29
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationBody.js +0 -49
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +0 -137
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationDrawer.js +0 -294
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationModal.js +0 -67
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/CopyStatusIcon.js +0 -41
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/EmailOtpContent.js +0 -141
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/EmailOtpInput.js +0 -92
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.js +0 -318
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/HaloBorder.js +0 -91
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PadlockIcon.js +0 -32
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyHaloLoading.js +0 -63
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationContent.js +0 -75
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.js +0 -33
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.js +0 -518
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +0 -128
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/SeamsWordmark.js +0 -22
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionLabel.js +0 -158
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +0 -289
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +0 -311
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionTree.js +0 -284
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/clipboard.js +0 -26
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/confirmation-controller.js +0 -80
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/confirmation-styles.js +0 -20
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/email-otp-session.js +0 -178
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +0 -297
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountExportPrivateKeySurface.js +0 -86
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountRecoveryCodeBackupSurface.js +0 -82
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/seamsWordmarkPaths.js +0 -6
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/surface-measurement-binding.js +0 -12
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/surface-resize-events.js +0 -18
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-activity.js +0 -46
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.js +0 -325
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/abi/enrichDisplayModelWithAbi.js +0 -77
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/confirmation-tree.js +0 -27
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/formatters.js +0 -57
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/fallback.js +0 -52
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/types.js +0 -62
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +0 -249
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-receipt.js +0 -50
- package/dist/esm/react/core/signingEngine/uiConfirm/warmSessionUiConfirm.js +0 -65
- package/dist/esm/react/core/signingEngine/walletCustody/activateEd25519Capability.js +0 -123
- package/dist/esm/react/core/signingEngine/walletCustody/ceremonyActiveClientMetadata.js +0 -94
- package/dist/esm/react/core/signingEngine/walletCustody/ceremonyDriver.js +0 -171
- package/dist/esm/react/core/signingEngine/walletCustody/ceremonyStepRunner.js +0 -20
- package/dist/esm/react/core/signingEngine/walletCustody/ed25519ActiveClient.js +0 -100
- package/dist/esm/react/core/signingEngine/walletCustody/ed25519Projection.js +0 -32
- package/dist/esm/react/core/signingEngine/walletCustody/ed25519SeedMaterial.js +0 -92
- package/dist/esm/react/core/signingEngine/walletCustody/emailOtpLink.js +0 -135
- package/dist/esm/react/core/signingEngine/walletCustody/joinCustodyWire.js +0 -64
- package/dist/esm/react/core/signingEngine/walletCustody/openCustodyCache.js +0 -130
- package/dist/esm/react/core/signingEngine/walletCustody/passkeyLink.js +0 -183
- package/dist/esm/react/core/signingEngine/walletCustody/recoveryReplacementEnvelope.js +0 -60
- package/dist/esm/react/core/signingEngine/walletCustody/registrationCeremony.js +0 -461
- package/dist/esm/react/core/signingEngine/walletCustody/unlockedEd25519ExportRootCapability.js +0 -258
- package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryCredential.js +0 -24
- package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryEcdsa.js +0 -76
- package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryEd25519.js +0 -129
- package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryManifest.js +0 -180
- package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryRotation.js +0 -103
- package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/collectAuthenticationCredentialForChallengeB64u.js +0 -154
- package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/credentialExtensions.js +0 -36
- package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/helpers.js +0 -273
- package/dist/esm/react/core/signingEngine/webauthnAuth/device/signerSlot.js +0 -25
- package/dist/esm/react/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.js +0 -171
- package/dist/esm/react/core/signingEngine/workerManager/SignerWorkerManager.js +0 -70
- package/dist/esm/react/core/signingEngine/workerManager/deviceLinkingPorts.js +0 -342
- package/dist/esm/react/core/signingEngine/workerManager/deviceLinkingSourceContribution.js +0 -158
- package/dist/esm/react/core/signingEngine/workerManager/ecdsaClientWorkerChannels.js +0 -17
- package/dist/esm/react/core/signingEngine/workerManager/ecdsaPresignLifecycle.js +0 -6
- package/dist/esm/react/core/signingEngine/workerManager/ecdsaPresignPoolIdentity.js +0 -49
- package/dist/esm/react/core/signingEngine/workerManager/executeWorkerOperation.js +0 -12
- package/dist/esm/react/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.js +0 -32
- package/dist/esm/react/core/signingEngine/workerManager/validation.js +0 -114
- package/dist/esm/react/core/signingEngine/workerManager/workerTransport.js +0 -773
- package/dist/esm/react/core/signingEngine/workerManager/workerTypes.js +0 -109
- package/dist/esm/react/core/types/accountIds.js +0 -26
- package/dist/esm/react/core/types/actionBuilders.js +0 -73
- package/dist/esm/react/core/types/confirmationConfig.js +0 -39
- package/dist/esm/react/core/types/eventLogging.js +0 -28
- package/dist/esm/react/core/types/linkDevice.js +0 -49
- package/dist/esm/react/core/types/sdkSentEvents.js +0 -602
- package/dist/esm/react/core/types/secure-confirm-worker.js +0 -22
- package/dist/esm/react/core/types/signer-worker.js +0 -50
- package/dist/esm/react/core/types/walletIframeIdentity.js +0 -15
- package/dist/esm/react/core/walletRuntimePaths/base.js +0 -60
- package/dist/esm/react/core/walletRuntimePaths/emailOtpWorker.js +0 -12
- package/dist/esm/react/core/walletRuntimePaths/multichainWorkers.js +0 -25
- package/dist/esm/react/core/walletRuntimePaths/walletCustodyCeremonyWorker.js +0 -18
- package/dist/esm/react/core/walletRuntimePaths/workers.js +0 -93
- package/dist/esm/react/externalEvm/boundary.js +0 -309
- package/dist/esm/react/externalEvm/controller.js +0 -440
- package/dist/esm/react/externalEvm/types.js +0 -31
- package/dist/esm/react/node_modules/@noble/hashes/esm/_u64.js +0 -36
- package/dist/esm/react/node_modules/@noble/hashes/esm/sha3.js +0 -197
- package/dist/esm/react/node_modules/@noble/hashes/esm/utils.js +0 -87
- package/dist/esm/react/node_modules/viem/_esm/errors/abi.js +0 -48
- package/dist/esm/react/node_modules/viem/_esm/errors/address.js +0 -14
- package/dist/esm/react/node_modules/viem/_esm/errors/base.js +0 -86
- package/dist/esm/react/node_modules/viem/_esm/errors/data.js +0 -16
- package/dist/esm/react/node_modules/viem/_esm/errors/encoding.js +0 -16
- package/dist/esm/react/node_modules/viem/_esm/errors/typedData.js +0 -28
- package/dist/esm/react/node_modules/viem/_esm/errors/version.js +0 -6
- package/dist/esm/react/node_modules/viem/_esm/utils/abi/encodeAbiParameters.js +0 -243
- package/dist/esm/react/node_modules/viem/_esm/utils/address/getAddress.js +0 -28
- package/dist/esm/react/node_modules/viem/_esm/utils/address/isAddress.js +0 -23
- package/dist/esm/react/node_modules/viem/_esm/utils/data/concat.js +0 -23
- package/dist/esm/react/node_modules/viem/_esm/utils/data/isHex.js +0 -10
- package/dist/esm/react/node_modules/viem/_esm/utils/data/pad.js +0 -40
- package/dist/esm/react/node_modules/viem/_esm/utils/data/size.js +0 -16
- package/dist/esm/react/node_modules/viem/_esm/utils/data/slice.js +0 -59
- package/dist/esm/react/node_modules/viem/_esm/utils/encoding/fromHex.js +0 -13
- package/dist/esm/react/node_modules/viem/_esm/utils/encoding/toBytes.js +0 -175
- package/dist/esm/react/node_modules/viem/_esm/utils/encoding/toHex.js +0 -168
- package/dist/esm/react/node_modules/viem/_esm/utils/hash/keccak256.js +0 -15
- package/dist/esm/react/node_modules/viem/_esm/utils/lru.js +0 -38
- package/dist/esm/react/node_modules/viem/_esm/utils/regex.js +0 -7
- package/dist/esm/react/node_modules/viem/_esm/utils/signature/hashTypedData.js +0 -113
- package/dist/esm/react/node_modules/viem/_esm/utils/stringify.js +0 -9
- package/dist/esm/react/node_modules/viem/_esm/utils/typedData.js +0 -80
- package/dist/esm/react/shared-ts/src/authorization/capabilityKinds.js +0 -111
- package/dist/esm/react/shared-ts/src/authorization/delegatedAuthority.js +0 -121
- package/dist/esm/react/shared-ts/src/authorization/index.js +0 -6
- package/dist/esm/react/shared-ts/src/authorization/operationFingerprint.js +0 -57
- package/dist/esm/react/shared-ts/src/authorization/walletAuthority.js +0 -719
- package/dist/esm/react/shared-ts/src/authorization/walletCustodyOperation.js +0 -16
- package/dist/esm/react/shared-ts/src/authorization/walletSessionIssuance.js +0 -115
- package/dist/esm/react/shared-ts/src/authorization/walletSignerActivationEquality.js +0 -12
- package/dist/esm/react/shared-ts/src/device-linking/activeWalletSession.js +0 -104
- package/dist/esm/react/shared-ts/src/device-linking/authorityActivation.js +0 -142
- package/dist/esm/react/shared-ts/src/device-linking/committedSignerPackages.js +0 -270
- package/dist/esm/react/shared-ts/src/device-linking/contracts.js +0 -8
- package/dist/esm/react/shared-ts/src/device-linking/delegatedActivationPlan.js +0 -130
- package/dist/esm/react/shared-ts/src/device-linking/deviceManagement.js +0 -120
- package/dist/esm/react/shared-ts/src/device-linking/digests.js +0 -115
- package/dist/esm/react/shared-ts/src/device-linking/ed25519ExportRoot.js +0 -167
- package/dist/esm/react/shared-ts/src/device-linking/index.js +0 -12
- package/dist/esm/react/shared-ts/src/device-linking/parsers.js +0 -1029
- package/dist/esm/react/shared-ts/src/device-linking/requestProof.js +0 -25
- package/dist/esm/react/shared-ts/src/device-linking/sourceContribution.js +0 -542
- package/dist/esm/react/shared-ts/src/device-linking/walletSessionCredentialDelivery.js +0 -173
- package/dist/esm/react/shared-ts/src/device-linking/wireFields.js +0 -59
- package/dist/esm/react/shared-ts/src/near/actions.js +0 -236
- package/dist/esm/react/shared-ts/src/near/nearClient.js +0 -252
- package/dist/esm/react/shared-ts/src/passkey-custody/ceremonyCommitPayload.js +0 -43
- package/dist/esm/react/shared-ts/src/passkey-custody/custodyEnvelope.js +0 -278
- package/dist/esm/react/shared-ts/src/passkey-custody/custodySecretBinding.js +0 -181
- package/dist/esm/react/shared-ts/src/passkey-custody/index.js +0 -4
- package/dist/esm/react/shared-ts/src/passkey-custody/primitives.js +0 -62
- package/dist/esm/react/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +0 -49
- package/dist/esm/react/shared-ts/src/signing-lanes/index.js +0 -8
- package/dist/esm/react/shared-ts/src/signing-lanes/ownerContinuity.js +0 -62
- package/dist/esm/react/shared-ts/src/signing-lanes/participantDigest.js +0 -2
- package/dist/esm/react/shared-ts/src/signing-lanes/participants.js +0 -256
- package/dist/esm/react/shared-ts/src/signing-lanes/recordParsers.js +0 -479
- package/dist/esm/react/shared-ts/src/signing-lanes/rotationDigests.js +0 -6
- package/dist/esm/react/shared-ts/src/signing-lanes/rotationParsers.js +0 -3
- package/dist/esm/react/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -8
- package/dist/esm/react/shared-ts/src/signing-lanes/rotationWireFields.js +0 -3
- package/dist/esm/react/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -39
- package/dist/esm/react/shared-ts/src/threshold/ed25519OperationFingerprint.js +0 -222
- package/dist/esm/react/shared-ts/src/threshold/keyMaterialBrands.js +0 -25
- package/dist/esm/react/shared-ts/src/threshold/participants.js +0 -67
- package/dist/esm/react/shared-ts/src/threshold/secp256k1.js +0 -6
- package/dist/esm/react/shared-ts/src/threshold/sessionPolicy.js +0 -8
- package/dist/esm/react/shared-ts/src/threshold/signingRootScope.js +0 -43
- package/dist/esm/react/shared-ts/src/utils/addAuthMethodRegistration.js +0 -103
- package/dist/esm/react/shared-ts/src/utils/addWalletAuthMethod.js +0 -1
- package/dist/esm/react/shared-ts/src/utils/authenticatorOptions.js +0 -22
- package/dist/esm/react/shared-ts/src/utils/base58.js +0 -28
- package/dist/esm/react/shared-ts/src/utils/base64.js +0 -70
- package/dist/esm/react/shared-ts/src/utils/canonicalPrimitives.js +0 -38
- package/dist/esm/react/shared-ts/src/utils/digestEncoding.js +0 -63
- package/dist/esm/react/shared-ts/src/utils/digests.js +0 -33
- package/dist/esm/react/shared-ts/src/utils/domainIds.js +0 -257
- package/dist/esm/react/shared-ts/src/utils/ecdsaCapabilityActivation.js +0 -67
- package/dist/esm/react/shared-ts/src/utils/ecdsaKeyFactsInventory.js +0 -44
- package/dist/esm/react/shared-ts/src/utils/ecdsaServerTiming.js +0 -38
- package/dist/esm/react/shared-ts/src/utils/emailOtpDomain.js +0 -28
- package/dist/esm/react/shared-ts/src/utils/emailOtpRecoveryKey.js +0 -65
- package/dist/esm/react/shared-ts/src/utils/encoders.js +0 -2
- package/dist/esm/react/shared-ts/src/utils/errors.js +0 -95
- package/dist/esm/react/shared-ts/src/utils/evmRpcResults.js +0 -101
- package/dist/esm/react/shared-ts/src/utils/exactKeys.js +0 -17
- package/dist/esm/react/shared-ts/src/utils/exactRecord.js +0 -44
- package/dist/esm/react/shared-ts/src/utils/index.js +0 -38
- package/dist/esm/react/shared-ts/src/utils/jsonRpc.js +0 -64
- package/dist/esm/react/shared-ts/src/utils/keccak.js +0 -150
- package/dist/esm/react/shared-ts/src/utils/near.js +0 -205
- package/dist/esm/react/shared-ts/src/utils/nearRpcResults.js +0 -205
- package/dist/esm/react/shared-ts/src/utils/normalize.js +0 -86
- package/dist/esm/react/shared-ts/src/utils/registrationAuthMethodInput.js +0 -84
- package/dist/esm/react/shared-ts/src/utils/registrationEstablishedSession.js +0 -275
- package/dist/esm/react/shared-ts/src/utils/registrationIds.js +0 -226
- package/dist/esm/react/shared-ts/src/utils/registrationIntent.js +0 -390
- package/dist/esm/react/shared-ts/src/utils/registrationSignerPlan.js +0 -439
- package/dist/esm/react/shared-ts/src/utils/routerAbEcdsaDerivation.js +0 -1334
- package/dist/esm/react/shared-ts/src/utils/routerAbEd25519Yao.js +0 -747
- package/dist/esm/react/shared-ts/src/utils/routerAbEd25519YaoDigests.js +0 -76
- package/dist/esm/react/shared-ts/src/utils/routerAbNormalSigningIdentity.js +0 -115
- package/dist/esm/react/shared-ts/src/utils/routerAbPublicKeyset.js +0 -11
- package/dist/esm/react/shared-ts/src/utils/routerAbTraceContext.js +0 -36
- package/dist/esm/react/shared-ts/src/utils/secureRandomId.js +0 -35
- package/dist/esm/react/shared-ts/src/utils/signerDomain.js +0 -37
- package/dist/esm/react/shared-ts/src/utils/signerSlot.js +0 -12
- package/dist/esm/react/shared-ts/src/utils/signingSessionSeal.js +0 -98
- package/dist/esm/react/shared-ts/src/utils/theme.js +0 -8
- package/dist/esm/react/shared-ts/src/utils/thresholdEcdsaChainTarget.js +0 -9
- package/dist/esm/react/shared-ts/src/utils/thresholdEcdsaKeyHandle.js +0 -28
- package/dist/esm/react/shared-ts/src/utils/validation.js +0 -92
- package/dist/esm/react/shared-ts/src/utils/walletAddSignerActivation.js +0 -32
- package/dist/esm/react/shared-ts/src/utils/walletAuthAuthority.js +0 -224
- package/dist/esm/react/shared-ts/src/utils/walletAuthMethodRecord.js +0 -357
- package/dist/esm/react/shared-ts/src/utils/walletCapabilityBindings.js +0 -277
- package/dist/esm/react/shared-ts/src/utils/walletSessionFailure.js +0 -28
- package/dist/esm/react/shared-ts/src/utils/webauthnDeviceInfo.js +0 -50
- package/dist/esm/react/shared-ts/src/utils/wireSchema.js +0 -66
- package/dist/esm/react/shared-ts/src/wallet-recovery/index.js +0 -10
- package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeIssuance.js +0 -35
- package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -34
- package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeReservation.js +0 -24
- package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodes.js +0 -3
- package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryKeyId.js +0 -14
- package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +0 -251
- package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.js +0 -153
- package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.js +0 -84
- package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryRotation.js +0 -64
- package/dist/esm/react/theme/base-styles.js +0 -117
- package/dist/esm/react/theme/palette.js +0 -170
- package/dist/esm/react/utils/deviceDetection.js +0 -95
- package/dist/esm/react/utils/intentDigest.js +0 -77
- package/dist/esm/react/utils/menuItemBlink.js +0 -24
- package/dist/esm/react/utils/qrScanner.js +0 -297
- package/dist/esm/sdk/ConfirmationDrawer-MgFTBwwK.js +0 -425
- package/dist/esm/sdk/EvmClient-f3gUhS2L.js +0 -644
- package/dist/esm/sdk/NearClient-DY4NfHeD.js +0 -402
- package/dist/esm/sdk/NonceCoordinator-4XWPhYww.js +0 -2253
- package/dist/esm/sdk/accountIds-DhIPGOSN.js +0 -23
- package/dist/esm/sdk/accountLifecycle-zthG08aC.js +0 -1341
- package/dist/esm/sdk/actions-CCvThiKe.js +0 -225
- package/dist/esm/sdk/adapters-Dli9XAZp.js +0 -4836
- package/dist/esm/sdk/base-D1B5mGin.js +0 -64
- package/dist/esm/sdk/base64-Clm8C-e9.js +0 -68
- package/dist/esm/sdk/browser-D6eZGhzE.js +0 -2393
- package/dist/esm/sdk/bytes-qKxKn4gg.js +0 -40
- package/dist/esm/sdk/canonicalPrimitives-BTHWz80v.js +0 -36
- package/dist/esm/sdk/canonicalSignerErrorCode-BBIk365e.js +0 -139
- package/dist/esm/sdk/capabilityKinds-hvYqa6S_.js +0 -109
- package/dist/esm/sdk/chains-BMh3btVo.js +0 -124
- package/dist/esm/sdk/challengeDelivery-DZtopOAG.js +0 -74
- package/dist/esm/sdk/chunk-BtrIJ4_z.js +0 -33
- package/dist/esm/sdk/configHelpers-D1EqxVxg.js +0 -179
- package/dist/esm/sdk/csp-stylesheet-btENhsNp.js +0 -215
- package/dist/esm/sdk/defaultConfigs-D_33pPT9.js +0 -355
- package/dist/esm/sdk/display-P4nQF-yc.js +0 -126
- package/dist/esm/sdk/domainIds-lcrFg6Sa.js +0 -338
- package/dist/esm/sdk/ecdsaCapabilityManifest-DuMs0VtU.js +0 -805
- package/dist/esm/sdk/ecdsaChainTarget-Bl-JWyuw.js +0 -121
- package/dist/esm/sdk/ecdsaPresignLifecycle-Bfx2AQKb.js +0 -1983
- package/dist/esm/sdk/ecdsaPresignPoolIdentity-BjxZVIqn.js +0 -47
- package/dist/esm/sdk/ecdsaWalletRecords-D42rtA9z.js +0 -18
- package/dist/esm/sdk/encoders-D8d07vpx.js +0 -0
- package/dist/esm/sdk/enrichDisplayModelWithAbi-CWggsykc.js +0 -395
- package/dist/esm/sdk/enrichDisplayModelWithAbi-SDRwTd_M.js +0 -579
- package/dist/esm/sdk/errors-93h9uAW9.js +0 -92
- package/dist/esm/sdk/events-DYoBL2HO.js +0 -8
- package/dist/esm/sdk/evmCryptoWasm-DWklhEEb.js +0 -196
- package/dist/esm/sdk/evmFamilyEcdsaIdentity-CqGafQsI.js +0 -4274
- package/dist/esm/sdk/exactSessionState-LWDUXydN.js +0 -2592
- package/dist/esm/sdk/exactSigningLaneIdentity-m6uTXV_A.js +0 -335
- package/dist/esm/sdk/executeWorkerOperation-Cl9whMK7.js +0 -10
- package/dist/esm/sdk/export-viewer-host-rWMSQQMP.js +0 -204
- package/dist/esm/sdk/helpers-ZrowMnev.js +0 -302
- package/dist/esm/sdk/host-CnV8nAUe.js +0 -533
- package/dist/esm/sdk/intentDigest-CvOSNlCH.js +0 -75
- package/dist/esm/sdk/jsonRpc-VVkaQkFD.js +0 -62
- package/dist/esm/sdk/jsxRuntime.module-CuH5ZEIA.js +0 -298
- package/dist/esm/sdk/keccak-DUL3d8SF.js +0 -148
- package/dist/esm/sdk/keyMaterialBrands-CogGAAZn.js +0 -94
- package/dist/esm/sdk/localOnly-DTpa2jD5.js +0 -146
- package/dist/esm/sdk/messages-C7Dbx9iN.js +0 -594
- package/dist/esm/sdk/mountExportPrivateKeySurface-DgX-IBG_.js +0 -542
- package/dist/esm/sdk/mountRecoveryCodeBackupSurface-DXrExiJ7.js +0 -590
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-B5GecIvq.js +0 -4018
- package/dist/esm/sdk/nearEd25519YaoSigningPreparation-CdOT5RuC.js +0 -405
- package/dist/esm/sdk/nearRpcResults-DoUgDATm.js +0 -216
- package/dist/esm/sdk/nonceLaneKeys-C3c9lG6u.js +0 -164
- package/dist/esm/sdk/normalization-CBt413-z.js +0 -22
- package/dist/esm/sdk/operationFingerprint-C8Trar4R.js +0 -929
- package/dist/esm/sdk/operationFingerprint-CGZui5dR.js +0 -55
- package/dist/esm/sdk/passkey-custody-UUHbC0pk.js +0 -487
- package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-BWluQMbt.js +0 -237
- package/dist/esm/sdk/prfCache-wqQSjYLn.js +0 -58
- package/dist/esm/sdk/profileAccountProjection-uZVJuBvS.js +0 -86
- package/dist/esm/sdk/promptText-CuRa_ivd.js +0 -32
- package/dist/esm/sdk/recovery-entrypoint-C3fydnRC.js +0 -779
- package/dist/esm/sdk/registration-Ct_7LdGf.js +0 -14402
- package/dist/esm/sdk/registration-DHERU8R_.js +0 -233
- package/dist/esm/sdk/registrationAccounts-DmWPzf3T.js +0 -33
- package/dist/esm/sdk/registrationIds-DLSdEKSv.js +0 -310
- package/dist/esm/sdk/registrationIntent-4zwk16zQ.js +0 -387
- package/dist/esm/sdk/registrationPreparationPreload-D6zpWp4O.js +0 -13
- package/dist/esm/sdk/registrationSignerPlan-DhV8VAob.js +0 -437
- package/dist/esm/sdk/relayerHttp-VC8Holz1.js +0 -24
- package/dist/esm/sdk/routePlan-D59x5xzQ.js +0 -83
- package/dist/esm/sdk/router-B4ZWFy9E.js +0 -4721
- package/dist/esm/sdk/routerAbNormalSigning-CVFEOZ2m.js +0 -992
- package/dist/esm/sdk/runtime-auth-DdfynDKt.js +0 -5393
- package/dist/esm/sdk/runtime-device-link-HJ2ptFux.js +0 -259
- package/dist/esm/sdk/runtime-ecdsa-tempo-BGLsTAWR.js +0 -177
- package/dist/esm/sdk/runtime-email-otp-CpX88VZJ.js +0 -320
- package/dist/esm/sdk/runtime-export-DIVY473L.js +0 -112
- package/dist/esm/sdk/runtime-near-CxtQi4b2.js +0 -278
- package/dist/esm/sdk/runtime-preferences-vnJc5Svg.js +0 -67
- package/dist/esm/sdk/runtime-recovery-codes-BSCLVHQj.js +0 -95
- package/dist/esm/sdk/runtime-recovery-i08vCJST.js +0 -45
- package/dist/esm/sdk/runtimeContext-D3TBExQ6.js +0 -44484
- package/dist/esm/sdk/runtimeLoader-DQVEFVaW.js +0 -44
- package/dist/esm/sdk/sdkSentEvents-MqDkbQg1.js +0 -599
- package/dist/esm/sdk/secp256k1-D-I6Gh4D.js +0 -2515
- package/dist/esm/sdk/secureRandomId-BORsmdS4.js +0 -33
- package/dist/esm/sdk/sessionPolicy-DO-MkL65.js +0 -460
- package/dist/esm/sdk/shared-DkbeLCI3.js +0 -33
- package/dist/esm/sdk/signEvmFamily-C3C97Th-.js +0 -4607
- package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-BI9DSTIS.js +0 -226
- package/dist/esm/sdk/signEvmWithUiConfirm-Bmcim5-g.js +0 -27
- package/dist/esm/sdk/signNear-Bmb2fj_a.js +0 -5893
- package/dist/esm/sdk/signatureUses-BkGyYt8F.js +0 -51
- package/dist/esm/sdk/signerDomain-IEAVrOrc.js +0 -59
- package/dist/esm/sdk/signerLoader-B7orgq5Z.js +0 -23
- package/dist/esm/sdk/signerSlot-_ovonwVX.js +0 -10
- package/dist/esm/sdk/signingFlow-SZ8t_lxv.js +0 -1319
- package/dist/esm/sdk/signingSessionSeal-Cu-GHm6y.js +0 -96
- package/dist/esm/sdk/surface-measurement-reporter-CSTyRsMa.js +0 -156
- package/dist/esm/sdk/trace-DKLQZvec.js +0 -126
- package/dist/esm/sdk/transaction-activity-CSMCveBn.js +0 -218
- package/dist/esm/sdk/transactionReview-DpHLTznU.js +0 -100
- package/dist/esm/sdk/transactionReviewAdmission-BCPvl8OZ.js +0 -172
- package/dist/esm/sdk/transactionState-CJ4U8pcl.js +0 -1894
- package/dist/esm/sdk/types-Dx9fczU7.js +0 -111
- package/dist/esm/sdk/validation-gat4LEKm.js +0 -409
- package/dist/esm/sdk/wallet-recovery-BX61-79p.js +0 -1902
- package/dist/esm/sdk/walletAuthority-DD9T25F6.js +0 -1247
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-CF4bv9OI.js +0 -11000
- package/dist/esm/sdk/walletIframeIdentity-DB6Z2EC9.js +0 -13
- package/dist/esm/sdk/walletRecoveryCommit-AI1AtIRP.js +0 -2101
- package/dist/esm/sdk/walletRecoveryRotate-BgLlW5ih.js +0 -309
- package/dist/esm/sdk/warmSessionHydration-Os8niEm7.js +0 -7
- package/dist/esm/sdk/webauthnP256-DC5EIbKN.js +0 -82
- package/dist/esm/sdk/webauthnPromptCoordinator-L96oVvLz.js +0 -168
- package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +0 -6
- package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +0 -3
- package/dist/esm/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -8
- package/dist/esm/shared-ts/src/signing-lanes/rotationWireFields.js +0 -3
- package/dist/esm/shared-ts/src/utils/addWalletAuthMethod.js +0 -1
- package/dist/esm/styles.css +0 -43
- package/dist/public/sdk/ConfirmationDrawer-MgFTBwwK.js +0 -425
- package/dist/public/sdk/EvmClient-f3gUhS2L.js +0 -644
- package/dist/public/sdk/NearClient-DY4NfHeD.js +0 -402
- package/dist/public/sdk/NonceCoordinator-4XWPhYww.js +0 -2253
- package/dist/public/sdk/accountIds-DhIPGOSN.js +0 -23
- package/dist/public/sdk/accountLifecycle-zthG08aC.js +0 -1341
- package/dist/public/sdk/actions-CCvThiKe.js +0 -225
- package/dist/public/sdk/adapters-Dli9XAZp.js +0 -4836
- package/dist/public/sdk/base-D1B5mGin.js +0 -64
- package/dist/public/sdk/base64-Clm8C-e9.js +0 -68
- package/dist/public/sdk/browser-D6eZGhzE.js +0 -2393
- package/dist/public/sdk/bytes-qKxKn4gg.js +0 -40
- package/dist/public/sdk/canonicalPrimitives-BTHWz80v.js +0 -36
- package/dist/public/sdk/canonicalSignerErrorCode-BBIk365e.js +0 -139
- package/dist/public/sdk/capabilityKinds-hvYqa6S_.js +0 -109
- package/dist/public/sdk/chains-BMh3btVo.js +0 -124
- package/dist/public/sdk/challengeDelivery-DZtopOAG.js +0 -74
- package/dist/public/sdk/chunk-BtrIJ4_z.js +0 -33
- package/dist/public/sdk/configHelpers-D1EqxVxg.js +0 -179
- package/dist/public/sdk/csp-stylesheet-btENhsNp.js +0 -215
- package/dist/public/sdk/defaultConfigs-D_33pPT9.js +0 -355
- package/dist/public/sdk/display-P4nQF-yc.js +0 -126
- package/dist/public/sdk/domainIds-lcrFg6Sa.js +0 -338
- package/dist/public/sdk/ecdsaCapabilityManifest-DuMs0VtU.js +0 -805
- package/dist/public/sdk/ecdsaChainTarget-Bl-JWyuw.js +0 -121
- package/dist/public/sdk/ecdsaPresignLifecycle-Bfx2AQKb.js +0 -1983
- package/dist/public/sdk/ecdsaPresignPoolIdentity-BjxZVIqn.js +0 -47
- package/dist/public/sdk/ecdsaWalletRecords-D42rtA9z.js +0 -18
- package/dist/public/sdk/encoders-D8d07vpx.js +0 -0
- package/dist/public/sdk/enrichDisplayModelWithAbi-CWggsykc.js +0 -395
- package/dist/public/sdk/enrichDisplayModelWithAbi-SDRwTd_M.js +0 -579
- package/dist/public/sdk/errors-93h9uAW9.js +0 -92
- package/dist/public/sdk/events-DYoBL2HO.js +0 -8
- package/dist/public/sdk/evmCryptoWasm-DWklhEEb.js +0 -196
- package/dist/public/sdk/evmFamilyEcdsaIdentity-CqGafQsI.js +0 -4274
- package/dist/public/sdk/exactSessionState-LWDUXydN.js +0 -2592
- package/dist/public/sdk/exactSigningLaneIdentity-m6uTXV_A.js +0 -335
- package/dist/public/sdk/executeWorkerOperation-Cl9whMK7.js +0 -10
- package/dist/public/sdk/export-viewer-host-rWMSQQMP.js +0 -204
- package/dist/public/sdk/helpers-ZrowMnev.js +0 -302
- package/dist/public/sdk/host-CnV8nAUe.js +0 -533
- package/dist/public/sdk/intentDigest-CvOSNlCH.js +0 -75
- package/dist/public/sdk/jsonRpc-VVkaQkFD.js +0 -62
- package/dist/public/sdk/jsxRuntime.module-CuH5ZEIA.js +0 -298
- package/dist/public/sdk/keccak-DUL3d8SF.js +0 -148
- package/dist/public/sdk/keyMaterialBrands-CogGAAZn.js +0 -94
- package/dist/public/sdk/localOnly-DTpa2jD5.js +0 -146
- package/dist/public/sdk/messages-C7Dbx9iN.js +0 -594
- package/dist/public/sdk/mountExportPrivateKeySurface-DgX-IBG_.js +0 -542
- package/dist/public/sdk/mountRecoveryCodeBackupSurface-DXrExiJ7.js +0 -590
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-B5GecIvq.js +0 -4018
- package/dist/public/sdk/nearEd25519YaoSigningPreparation-CdOT5RuC.js +0 -405
- package/dist/public/sdk/nearRpcResults-DoUgDATm.js +0 -216
- package/dist/public/sdk/nonceLaneKeys-C3c9lG6u.js +0 -164
- package/dist/public/sdk/normalization-CBt413-z.js +0 -22
- package/dist/public/sdk/operationFingerprint-C8Trar4R.js +0 -929
- package/dist/public/sdk/operationFingerprint-CGZui5dR.js +0 -55
- package/dist/public/sdk/passkey-custody-UUHbC0pk.js +0 -487
- package/dist/public/sdk/pendingWalletRecoveryCodeBackup-BWluQMbt.js +0 -237
- package/dist/public/sdk/prfCache-wqQSjYLn.js +0 -58
- package/dist/public/sdk/profileAccountProjection-uZVJuBvS.js +0 -86
- package/dist/public/sdk/promptText-CuRa_ivd.js +0 -32
- package/dist/public/sdk/recovery-entrypoint-C3fydnRC.js +0 -779
- package/dist/public/sdk/registration-Ct_7LdGf.js +0 -14402
- package/dist/public/sdk/registration-DHERU8R_.js +0 -233
- package/dist/public/sdk/registrationAccounts-DmWPzf3T.js +0 -33
- package/dist/public/sdk/registrationIds-DLSdEKSv.js +0 -310
- package/dist/public/sdk/registrationIntent-4zwk16zQ.js +0 -387
- package/dist/public/sdk/registrationPreparationPreload-D6zpWp4O.js +0 -13
- package/dist/public/sdk/registrationSignerPlan-DhV8VAob.js +0 -437
- package/dist/public/sdk/relayerHttp-VC8Holz1.js +0 -24
- package/dist/public/sdk/routePlan-D59x5xzQ.js +0 -83
- package/dist/public/sdk/router-B4ZWFy9E.js +0 -4721
- package/dist/public/sdk/routerAbNormalSigning-CVFEOZ2m.js +0 -992
- package/dist/public/sdk/runtime-auth-DdfynDKt.js +0 -5393
- package/dist/public/sdk/runtime-device-link-HJ2ptFux.js +0 -259
- package/dist/public/sdk/runtime-ecdsa-tempo-BGLsTAWR.js +0 -177
- package/dist/public/sdk/runtime-email-otp-CpX88VZJ.js +0 -320
- package/dist/public/sdk/runtime-export-DIVY473L.js +0 -112
- package/dist/public/sdk/runtime-near-CxtQi4b2.js +0 -278
- package/dist/public/sdk/runtime-preferences-vnJc5Svg.js +0 -67
- package/dist/public/sdk/runtime-recovery-codes-BSCLVHQj.js +0 -95
- package/dist/public/sdk/runtime-recovery-i08vCJST.js +0 -45
- package/dist/public/sdk/runtimeContext-D3TBExQ6.js +0 -44484
- package/dist/public/sdk/runtimeLoader-DQVEFVaW.js +0 -44
- package/dist/public/sdk/sdkSentEvents-MqDkbQg1.js +0 -599
- package/dist/public/sdk/secp256k1-D-I6Gh4D.js +0 -2515
- package/dist/public/sdk/secureRandomId-BORsmdS4.js +0 -33
- package/dist/public/sdk/sessionPolicy-DO-MkL65.js +0 -460
- package/dist/public/sdk/shared-DkbeLCI3.js +0 -33
- package/dist/public/sdk/signEvmFamily-C3C97Th-.js +0 -4607
- package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-BI9DSTIS.js +0 -226
- package/dist/public/sdk/signEvmWithUiConfirm-Bmcim5-g.js +0 -27
- package/dist/public/sdk/signNear-Bmb2fj_a.js +0 -5893
- package/dist/public/sdk/signatureUses-BkGyYt8F.js +0 -51
- package/dist/public/sdk/signerDomain-IEAVrOrc.js +0 -59
- package/dist/public/sdk/signerLoader-B7orgq5Z.js +0 -23
- package/dist/public/sdk/signerSlot-_ovonwVX.js +0 -10
- package/dist/public/sdk/signingFlow-SZ8t_lxv.js +0 -1319
- package/dist/public/sdk/signingSessionSeal-Cu-GHm6y.js +0 -96
- package/dist/public/sdk/surface-measurement-reporter-CSTyRsMa.js +0 -156
- package/dist/public/sdk/trace-DKLQZvec.js +0 -126
- package/dist/public/sdk/transaction-activity-CSMCveBn.js +0 -218
- package/dist/public/sdk/transactionReview-DpHLTznU.js +0 -100
- package/dist/public/sdk/transactionReviewAdmission-BCPvl8OZ.js +0 -172
- package/dist/public/sdk/transactionState-CJ4U8pcl.js +0 -1894
- package/dist/public/sdk/types-Dx9fczU7.js +0 -111
- package/dist/public/sdk/validation-gat4LEKm.js +0 -409
- package/dist/public/sdk/wallet-recovery-BX61-79p.js +0 -1902
- package/dist/public/sdk/walletAuthority-DD9T25F6.js +0 -1247
- package/dist/public/sdk/walletCustodyEcdsaContinuity-CF4bv9OI.js +0 -11000
- package/dist/public/sdk/walletIframeIdentity-DB6Z2EC9.js +0 -13
- package/dist/public/sdk/walletRecoveryCommit-AI1AtIRP.js +0 -2101
- package/dist/public/sdk/walletRecoveryRotate-BgLlW5ih.js +0 -309
- package/dist/public/sdk/warmSessionHydration-Os8niEm7.js +0 -7
- package/dist/public/sdk/webauthnP256-DC5EIbKN.js +0 -82
- package/dist/public/sdk/webauthnPromptCoordinator-L96oVvLz.js +0 -168
- package/dist/types/shared-ts/src/signing-lanes/participantDigest.typecheck.d.ts +0 -2
- package/dist/types/shared-ts/src/signing-lanes/rotation.typecheck.d.ts +0 -2
- package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +0 -13
- package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +0 -78
- package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +0 -27
- package/dist/types/shared-ts/src/signing-lanes/rotationProtocolParsers.d.ts +0 -6
- package/dist/types/shared-ts/src/signing-lanes/rotationWireFields.d.ts +0 -20
- package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeAttempt.d.ts +0 -59
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/transport/webauthn-bridge.d.ts +0 -3
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/laneHolderMaterialStore.d.ts +0 -52
- package/dist/types/wallet/src/core/signingEngine/interfaces/nearKeyOps.d.ts +0 -15
- package/dist/types/wallet/src/core/signingEngine/session/holderShares/forbiddenHolderSharePayloads.typecheck.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/holderShares/holderShareHandle.d.ts +0 -6
- package/dist/types/wallet/src/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.typecheck.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/activationCoordinator.d.ts +0 -37
- package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/laneMaterialInvalidation.d.ts +0 -23
- package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/operations.typecheck.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/recipientPreparation.d.ts +0 -55
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.typecheck.d.ts +0 -6
- package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ecdsaLaneWasm.d.ts +0 -4
- package/dist/types/wallet/src/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.d.ts +0 -44
- package/dist/types/wallet/src/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.d.ts +0 -4
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/ecdsaLaneHolderWorkerRuntime.d.ts +0 -20
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/passkeyCustodyLink.d.ts +0 -18
- /package/dist/esm/{react/SeamsWeb → SeamsWeb}/assembly/preconnectWalletAssets.js +0 -0
|
@@ -1,2101 +0,0 @@
|
|
|
1
|
-
import { A as parseWalletRecoveryOperationId, D as parseWalletAuthorityId, M as parseWebAuthnRpId, O as parseWalletId, S as parseThresholdEd25519SessionId, T as parseWalletAuthMethodId, j as parseWebAuthnCredentialIdB64u, o as parseEmailOtpChallengeId, s as parseEmailOtpProviderUserId } from "./domainIds-lcrFg6Sa.js";
|
|
2
|
-
import { M as base58Encode, _ as requireRecord, m as requireArray } from "./validation-gat4LEKm.js";
|
|
3
|
-
import { i as base64UrlEncode, r as base64UrlDecode } from "./base64-Clm8C-e9.js";
|
|
4
|
-
import { C as parseEnvelopeNonceB64u, D as parseUnixMs, E as parseSecp256k1CompressedPublicKeyB64u, I as rejectUnknownFields, S as parseEnvelopeCiphertextB64u, T as parseKeyCreationSignerSlot, b as parseDigestField, h as normalizeRuntimePolicyScope, o as normalizeThresholdRuntimePolicyScope, x as parseEd25519PublicKeyB64u, y as requireEvmFamilySigningKeySlotId } from "./sessionPolicy-DO-MkL65.js";
|
|
5
|
-
import { $t as wireLiteral, Ct as parseRouterAbMpcMaterialActivationRef, E as parseRouterAbEcdsaRegistrationActivationReceiptV1, Et as routerAbMpcMaterialActivationRefToWire, K as buildEmailOtpWalletAuthAuthority, Tt as routerAbMpcMaterialActivationRefFromWire, _t as computeEcdsaDerivationRoleLocalRelayerKeyId, bt as parseSdkEcdsaDerivationSigningRootVersion, ht as parseEcdsaServerGeneration, it as walletAuthAuthorityRef, nn as wireResult, tn as wireObject, v as parseRouterAbEcdsaDerivationPublicCapabilityV1, vt as ecdsaClientRootPublicKey33B64uFromString, xt as parseSdkEcdsaDerivationThresholdKeyId, yt as parseSdkEcdsaDerivationSigningRootId } from "./ecdsaPresignLifecycle-Bfx2AQKb.js";
|
|
6
|
-
import { l as parseDeviceId } from "./capabilityKinds-hvYqa6S_.js";
|
|
7
|
-
import { f as alphabetizeStringify, h as sha256HexUtf8 } from "./chains-BMh3btVo.js";
|
|
8
|
-
import { a as parseWalletRecoveryEnvelopeEntry, f as parseRecoveryCodeReservationId, l as buildWalletRecoveryCommittedProjectionV1, n as parseWalletRecoveryEcdsaPossessionProofV1, t as parseWalletRecoveryEcdsaPossessionChallengeV1, u as parseWalletRecoveryCommittedProjectionV1 } from "./wallet-recovery-BX61-79p.js";
|
|
9
|
-
import { M as WALLET_CUSTODY_ED25519_MATERIAL_KEY_KIND, h as prepareWalletRecoveryPasskeyPublication, m as prepareWalletRecoveryEmailOtpPublication } from "./accountLifecycle-zthG08aC.js";
|
|
10
|
-
import { t as toAccountId } from "./accountIds-DhIPGOSN.js";
|
|
11
|
-
import { T as sameWalletAuthMethodRecordV2, p as sameVerifiedActiveWalletAuthorityV1 } from "./walletAuthority-DD9T25F6.js";
|
|
12
|
-
import { d as parsePasskeyCustodyEnvelopeRecord } from "./passkey-custody-UUHbC0pk.js";
|
|
13
|
-
import { A as thresholdEcdsaChainTargetKey, r as prepareWalletCustodyEcdsaContinuity, u as IndexedDBManager, x as pendingWalletRecoveryCommitIdentityMatches } from "./walletCustodyEcdsaContinuity-CF4bv9OI.js";
|
|
14
|
-
import { n as PASSKEY_PRF_SECOND_SALT_V1, t as PASSKEY_PRF_FIRST_SALT_V1 } from "./signingSessionSeal-Cu-GHm6y.js";
|
|
15
|
-
import { n as parseEmailOtpChallengeDelivery } from "./challengeDelivery-DZtopOAG.js";
|
|
16
|
-
import { o as redactedPasskeyRegistrationCredential } from "./helpers-ZrowMnev.js";
|
|
17
|
-
import { C as buildEcdsaRoleLocalPublicFacts } from "./ecdsaCapabilityManifest-DuMs0VtU.js";
|
|
18
|
-
import { n as buildRelayerJsonPostRequestInit, r as normalizeRelayerBaseUrl } from "./relayerHttp-VC8Holz1.js";
|
|
19
|
-
//#region ../shared-ts/src/wallet-recovery/walletRecoveryTarget.ts
|
|
20
|
-
function parseWalletRecoveryTargetV1(raw) {
|
|
21
|
-
if (raw === null || typeof raw !== "object" || Array.isArray(raw)) throw new Error("wallet recovery target must be an object");
|
|
22
|
-
const record = raw;
|
|
23
|
-
const fields = Object.keys(record);
|
|
24
|
-
switch (record.kind) {
|
|
25
|
-
case "passkey": {
|
|
26
|
-
if (fields.length !== 2 || !fields.includes("rpId")) throw new Error("Passkey recovery target fields are invalid");
|
|
27
|
-
const rpId = parseWebAuthnRpId(record.rpId);
|
|
28
|
-
if (!rpId.ok) throw new Error("Passkey recovery target RP ID is invalid");
|
|
29
|
-
return {
|
|
30
|
-
kind: "passkey",
|
|
31
|
-
rpId: rpId.value
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
case "google_email_otp":
|
|
35
|
-
if (fields.length !== 2 || !fields.includes("googleProvider") || record.googleProvider !== "google") throw new Error("Google Email OTP recovery target fields are invalid");
|
|
36
|
-
return {
|
|
37
|
-
kind: "google_email_otp",
|
|
38
|
-
googleProvider: "google"
|
|
39
|
-
};
|
|
40
|
-
default: throw new Error("wallet recovery target kind is unsupported");
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
//#endregion
|
|
44
|
-
//#region src/core/rpcClients/relayer/walletRecoveryPrepare.ts
|
|
45
|
-
/**
|
|
46
|
-
* Preparing an admitted wallet recovery.
|
|
47
|
-
*
|
|
48
|
-
* The response is ciphertext: a wrapped manifest KEK and the entry ciphertexts
|
|
49
|
-
* it opens. The code never leaves this call, and the server cannot open what
|
|
50
|
-
* it returns — it only matched a derived identifier against stored wraps.
|
|
51
|
-
*
|
|
52
|
-
* Unknown and malformed codes remain generic. A consumed code has a durable
|
|
53
|
-
* locator tombstone and receives the distinct `consumed` result used by the
|
|
54
|
-
* recovery menu.
|
|
55
|
-
*
|
|
56
|
-
* `conflict` is the exception worth distinguishing, because it is the one
|
|
57
|
-
* failure where the same code is still worth trying again.
|
|
58
|
-
*/
|
|
59
|
-
const WALLET_RECOVERY_PREPARE_PATH = "/wallets/recovery/prepare";
|
|
60
|
-
const WALLET_RECOVERY_PREPARE_COMMON_RESPONSE_FIELDS = [
|
|
61
|
-
"ok",
|
|
62
|
-
"walletId",
|
|
63
|
-
"target",
|
|
64
|
-
"recoveryOperationId",
|
|
65
|
-
"targetDeviceId",
|
|
66
|
-
"targetAuthorityId",
|
|
67
|
-
"targetWalletAuthMethodId",
|
|
68
|
-
"wrap",
|
|
69
|
-
"entries",
|
|
70
|
-
"keyManifest",
|
|
71
|
-
"reservationId",
|
|
72
|
-
"reservationExpiresAtMs",
|
|
73
|
-
"storeVersion"
|
|
74
|
-
];
|
|
75
|
-
const WALLET_RECOVERY_PREPARE_PASSKEY_RESPONSE_FIELDS = [...WALLET_RECOVERY_PREPARE_COMMON_RESPONSE_FIELDS, "registration"];
|
|
76
|
-
function decodeJsonObject(raw, label) {
|
|
77
|
-
if (raw === null || typeof raw !== "object" || Array.isArray(raw)) throw new Error(`${label} must be an object`);
|
|
78
|
-
return raw;
|
|
79
|
-
}
|
|
80
|
-
function assertExactJsonObjectKeys(value, fields, label) {
|
|
81
|
-
const expected = new Set(fields);
|
|
82
|
-
const actual = Object.keys(value);
|
|
83
|
-
if (actual.length !== expected.size || actual.some((field) => !expected.has(field))) throw new Error(`${label} contains unexpected fields`);
|
|
84
|
-
}
|
|
85
|
-
function decodeExactJsonObject(raw, fields, label) {
|
|
86
|
-
const value = decodeJsonObject(raw, label);
|
|
87
|
-
assertExactJsonObjectKeys(value, fields, label);
|
|
88
|
-
return value;
|
|
89
|
-
}
|
|
90
|
-
function readJsonField(value, field) {
|
|
91
|
-
return Object.prototype.hasOwnProperty.call(value, field) ? Reflect.get(value, field) : void 0;
|
|
92
|
-
}
|
|
93
|
-
function decodeJsonObjectOrNull(raw) {
|
|
94
|
-
try {
|
|
95
|
-
return decodeJsonObject(raw, "walletRecoveryPrepare response");
|
|
96
|
-
} catch {
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Builds the only recovery-custody wire accepted by the ceremony WASM.
|
|
102
|
-
*
|
|
103
|
-
* The recovery key id and code are absent. Rust derives the id from the code
|
|
104
|
-
* bytes supplied through the worker's separate secret field, so serialized
|
|
105
|
-
* custody can contain only the reserved wrap and the wallet's single seed
|
|
106
|
-
* entry.
|
|
107
|
-
*/
|
|
108
|
-
function buildWalletRecoveryCeremonyCustodyJson(args) {
|
|
109
|
-
const walletId = parseWalletId(args.walletId);
|
|
110
|
-
if (!walletId.ok) throw new Error(`wallet recovery ${walletId.error.message}`);
|
|
111
|
-
return JSON.stringify({
|
|
112
|
-
walletId: String(walletId.value),
|
|
113
|
-
wrap: args.prepared.wrap,
|
|
114
|
-
entry: args.prepared.entries[0]
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
async function prepareWalletRecoveryWithCode(args) {
|
|
118
|
-
const requested = await requestWalletRecoveryPrepare(args);
|
|
119
|
-
if (!requested.ok) return { kind: requested.kind };
|
|
120
|
-
return await parseWalletRecoveryPrepareResponse({
|
|
121
|
-
response: requested.response,
|
|
122
|
-
target: args.target,
|
|
123
|
-
reservationId: args.reservationId
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
async function requestWalletRecoveryPrepare(args) {
|
|
127
|
-
const url = `${normalizeRelayerBaseUrl(args.relayUrl)}${WALLET_RECOVERY_PREPARE_PATH}`;
|
|
128
|
-
const doFetch = args.fetchImpl || fetch;
|
|
129
|
-
try {
|
|
130
|
-
return {
|
|
131
|
-
ok: true,
|
|
132
|
-
response: await doFetch(url, buildRelayerJsonPostRequestInit({ body: {
|
|
133
|
-
recoveryCodeB64u: args.recoveryCodeB64u,
|
|
134
|
-
reservationId: args.reservationId,
|
|
135
|
-
target: args.target
|
|
136
|
-
} }))
|
|
137
|
-
};
|
|
138
|
-
} catch {
|
|
139
|
-
return {
|
|
140
|
-
ok: false,
|
|
141
|
-
kind: "transport_uncertain"
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
async function parseWalletRecoveryPrepareResponse(args) {
|
|
146
|
-
const response = args.response;
|
|
147
|
-
const body = decodeJsonObjectOrNull(await response.json().catch(() => ({})));
|
|
148
|
-
if (response.status === 200 && body && readJsonField(body, "ok") === true) try {
|
|
149
|
-
const preparedResponse = decodeExactJsonObject(body, args.target.kind === "passkey" ? WALLET_RECOVERY_PREPARE_PASSKEY_RESPONSE_FIELDS : WALLET_RECOVERY_PREPARE_COMMON_RESPONSE_FIELDS, "walletRecoveryPrepare");
|
|
150
|
-
const wrap = preparedRecoveryWrap()(readJsonField(preparedResponse, "wrap"), "walletRecoveryPrepare.wrap");
|
|
151
|
-
const entries = parsePreparedRecoveryEntries(readJsonField(preparedResponse, "entries"));
|
|
152
|
-
const walletIdResult = parseWalletId(readJsonField(preparedResponse, "walletId"));
|
|
153
|
-
if (!walletIdResult.ok) throw new Error("walletRecoveryPrepare.walletId is invalid");
|
|
154
|
-
const walletId = walletIdResult.value;
|
|
155
|
-
const target = parseWalletRecoveryTargetV1(readJsonField(preparedResponse, "target"));
|
|
156
|
-
if (!recoveryTargetsMatch(target, args.target)) throw new Error("wallet recovery preparation changed the recovery target");
|
|
157
|
-
const recoveryOperationId = parseWalletRecoveryOperationId(readJsonField(preparedResponse, "recoveryOperationId"));
|
|
158
|
-
const targetDeviceId = parseDeviceId(readJsonField(preparedResponse, "targetDeviceId"));
|
|
159
|
-
const targetAuthorityId = parseWalletAuthorityId(readJsonField(preparedResponse, "targetAuthorityId"));
|
|
160
|
-
const targetWalletAuthMethodId = parseWalletAuthMethodId(readJsonField(preparedResponse, "targetWalletAuthMethodId"));
|
|
161
|
-
if (!recoveryOperationId.ok || !targetDeviceId.ok || !targetAuthorityId.ok || !targetWalletAuthMethodId.ok) throw new Error("wallet recovery preparation target identity is invalid");
|
|
162
|
-
const keyManifest = parseWalletRecoveryPreparationKeyManifest(readJsonField(preparedResponse, "keyManifest"), walletId);
|
|
163
|
-
const reservationId = parseRecoveryCodeReservationId(readJsonField(preparedResponse, "reservationId"));
|
|
164
|
-
const reservationExpiresAtMs = parseUnixMs(readJsonField(preparedResponse, "reservationExpiresAtMs"), "walletRecoveryPrepare.reservationExpiresAtMs");
|
|
165
|
-
const storeVersion = requireResponseString(readJsonField(preparedResponse, "storeVersion"), "storeVersion");
|
|
166
|
-
if (reservationId !== args.reservationId) throw new Error("wallet recovery preparation changed the reservation identity");
|
|
167
|
-
const common = {
|
|
168
|
-
kind: "prepared",
|
|
169
|
-
walletId,
|
|
170
|
-
recoveryOperationId: recoveryOperationId.value,
|
|
171
|
-
targetDeviceId: targetDeviceId.value,
|
|
172
|
-
targetAuthorityId: targetAuthorityId.value,
|
|
173
|
-
targetWalletAuthMethodId: targetWalletAuthMethodId.value,
|
|
174
|
-
wrap,
|
|
175
|
-
entries,
|
|
176
|
-
keyManifest,
|
|
177
|
-
reservationId,
|
|
178
|
-
reservationExpiresAtMs,
|
|
179
|
-
storeVersion
|
|
180
|
-
};
|
|
181
|
-
switch (target.kind) {
|
|
182
|
-
case "passkey": {
|
|
183
|
-
const registration = walletRecoveryRegistrationOptions(String(walletId), target.rpId)(readJsonField(preparedResponse, "registration"), "registration");
|
|
184
|
-
if (registration.walletAuthMethodId !== targetWalletAuthMethodId.value) throw new Error("wallet recovery registration changed the target auth method");
|
|
185
|
-
return {
|
|
186
|
-
...common,
|
|
187
|
-
target,
|
|
188
|
-
registration
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
case "google_email_otp":
|
|
192
|
-
if (Object.prototype.hasOwnProperty.call(preparedResponse, "registration")) throw new Error("Google Email OTP recovery cannot carry passkey registration");
|
|
193
|
-
return {
|
|
194
|
-
...common,
|
|
195
|
-
target
|
|
196
|
-
};
|
|
197
|
-
default: return assertNeverRecoveryTarget(target);
|
|
198
|
-
}
|
|
199
|
-
} catch {
|
|
200
|
-
return { kind: "transport_uncertain" };
|
|
201
|
-
}
|
|
202
|
-
if (response.status === 409) return { kind: "retryable_conflict" };
|
|
203
|
-
if (response.status === 401 && body && readJsonField(body, "code") === "recovery_code_used") return { kind: "consumed" };
|
|
204
|
-
if (response.status === 401 || response.status === 400) return { kind: "refused" };
|
|
205
|
-
return { kind: "transport_uncertain" };
|
|
206
|
-
}
|
|
207
|
-
function walletRecoveryRegistrationOptions(expectedWalletId, expectedRpId) {
|
|
208
|
-
const expectedUserIdB64u = base64UrlEncode(new TextEncoder().encode(expectedWalletId));
|
|
209
|
-
const credentialDescriptor = wireObject({
|
|
210
|
-
type: wireLiteral("public-key"),
|
|
211
|
-
id: (raw, label) => {
|
|
212
|
-
const id = wireResult(parseWebAuthnCredentialIdB64u)(raw, label);
|
|
213
|
-
requireCanonicalNonEmptyB64u(id, label);
|
|
214
|
-
return id;
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
return wireObject({
|
|
218
|
-
kind: wireLiteral("webauthn_recovery_registration_v1"),
|
|
219
|
-
challengeId: requireResponseString,
|
|
220
|
-
challengeB64u: (raw, label) => requireCanonicalBytesB64u(raw, 32, label),
|
|
221
|
-
replacementId: requireResponseString,
|
|
222
|
-
walletAuthMethodId: wireResult(parseWalletAuthMethodId),
|
|
223
|
-
rpId: wireResult(parseWebAuthnRpId),
|
|
224
|
-
user: wireObject({
|
|
225
|
-
idB64u: requireCanonicalNonEmptyB64u,
|
|
226
|
-
name: requireResponseString,
|
|
227
|
-
displayName: requireResponseString
|
|
228
|
-
}, (user, label) => {
|
|
229
|
-
if (user.idB64u !== expectedUserIdB64u || user.name !== expectedWalletId || user.displayName !== expectedWalletId) throw new Error(`${label} is bound to another wallet`);
|
|
230
|
-
}),
|
|
231
|
-
pubKeyCredParams: (raw, label) => {
|
|
232
|
-
if (!Array.isArray(raw) || raw.length !== 2) throw new Error(`${label} is invalid`);
|
|
233
|
-
return [publicKeyCredentialParameter(-7)(raw[0], `${label}[0]`), publicKeyCredentialParameter(-257)(raw[1], `${label}[1]`)];
|
|
234
|
-
},
|
|
235
|
-
authenticatorSelection: wireObject({
|
|
236
|
-
residentKey: wireLiteral("required"),
|
|
237
|
-
userVerification: wireLiteral("preferred")
|
|
238
|
-
}),
|
|
239
|
-
timeoutMs: (raw, label) => {
|
|
240
|
-
const timeoutMs = Number(raw);
|
|
241
|
-
if (!Number.isSafeInteger(timeoutMs) || timeoutMs <= 0) throw new Error(`${label} is invalid`);
|
|
242
|
-
return timeoutMs;
|
|
243
|
-
},
|
|
244
|
-
attestation: wireLiteral("none"),
|
|
245
|
-
extensions: wireObject({ prf: wireObject({ eval: wireObject({
|
|
246
|
-
firstB64u: prfSalt(PASSKEY_PRF_FIRST_SALT_V1),
|
|
247
|
-
secondB64u: prfSalt(PASSKEY_PRF_SECOND_SALT_V1)
|
|
248
|
-
}) }) }),
|
|
249
|
-
excludeCredentials: (raw, label) => requireArray(raw, label).map((entry, index) => credentialDescriptor(entry, `${label}[${index}]`))
|
|
250
|
-
}, (registration, label) => {
|
|
251
|
-
if (registration.rpId !== expectedRpId) throw new Error(`${label} changed the relying party`);
|
|
252
|
-
});
|
|
253
|
-
}
|
|
254
|
-
function publicKeyCredentialParameter(alg) {
|
|
255
|
-
return wireObject({
|
|
256
|
-
type: wireLiteral("public-key"),
|
|
257
|
-
alg: (raw, label) => {
|
|
258
|
-
if (raw !== alg) throw new Error(`${label} is invalid`);
|
|
259
|
-
return alg;
|
|
260
|
-
}
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
function prfSalt(salt) {
|
|
264
|
-
return (raw, label) => {
|
|
265
|
-
const value = requireCanonicalBytesB64u(raw, salt.length, label);
|
|
266
|
-
if (value !== base64UrlEncode(salt)) throw new Error(`${label} is unsupported`);
|
|
267
|
-
return value;
|
|
268
|
-
};
|
|
269
|
-
}
|
|
270
|
-
function recoveryTargetsMatch(left, right) {
|
|
271
|
-
if (left.kind !== right.kind) return false;
|
|
272
|
-
switch (left.kind) {
|
|
273
|
-
case "passkey": return right.kind === "passkey" && left.rpId === right.rpId;
|
|
274
|
-
case "google_email_otp": return right.kind === "google_email_otp" && left.googleProvider === right.googleProvider;
|
|
275
|
-
default: return assertNeverRecoveryTarget(left);
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
function assertNeverRecoveryTarget(value) {
|
|
279
|
-
throw new Error(`unsupported wallet recovery target: ${String(value)}`);
|
|
280
|
-
}
|
|
281
|
-
function preparedRecoveryWrap() {
|
|
282
|
-
return wireObject({
|
|
283
|
-
nonceB64u: parseEnvelopeNonceB64u,
|
|
284
|
-
wrappedManifestKekB64u: parseEnvelopeCiphertextB64u,
|
|
285
|
-
aadHashB64u: parseDigestField
|
|
286
|
-
});
|
|
287
|
-
}
|
|
288
|
-
function parsePreparedRecoveryEntries(raw) {
|
|
289
|
-
if (!Array.isArray(raw) || raw.length !== 1) throw new Error("walletRecoveryPrepare.entries must contain exactly one custody seed");
|
|
290
|
-
return [parseWalletRecoveryEnvelopeEntry(raw[0], "walletRecoveryPrepare.entries[0]")];
|
|
291
|
-
}
|
|
292
|
-
function requireResponseString(raw, field) {
|
|
293
|
-
if (typeof raw !== "string" || !raw.trim()) throw new Error(`walletRecoveryPrepare.${field} must be a non-empty string`);
|
|
294
|
-
return raw.trim();
|
|
295
|
-
}
|
|
296
|
-
function parseWalletRecoveryPreparationKeyManifest(raw, expectedWalletId) {
|
|
297
|
-
const manifest = decodeExactJsonObject(raw, [
|
|
298
|
-
"version",
|
|
299
|
-
"walletId",
|
|
300
|
-
"entries"
|
|
301
|
-
], "walletRecoveryPrepare.keyManifest");
|
|
302
|
-
if (readJsonField(manifest, "version") !== "wallet_recovery_preparation_key_manifest_v1") throw new Error("walletRecoveryPrepare.keyManifest version is invalid");
|
|
303
|
-
const walletId = requireResponseString(readJsonField(manifest, "walletId"), "keyManifest.walletId");
|
|
304
|
-
if (walletId !== expectedWalletId) throw new Error("walletRecoveryPrepare.keyManifest changed the wallet identity");
|
|
305
|
-
const rawEntries = readJsonField(manifest, "entries");
|
|
306
|
-
if (!Array.isArray(rawEntries) || rawEntries.length === 0) throw new Error("walletRecoveryPrepare.keyManifest must contain a key set");
|
|
307
|
-
const entries = rawEntries.map((entry) => parseWalletRecoveryPreparationKeyManifestEntry(entry, walletId));
|
|
308
|
-
if (new Set(entries.map((entry) => entry.keySetId)).size !== entries.length) throw new Error("walletRecoveryPrepare.keyManifest contains duplicate key sets");
|
|
309
|
-
return {
|
|
310
|
-
version: "wallet_recovery_preparation_key_manifest_v1",
|
|
311
|
-
walletId,
|
|
312
|
-
entries
|
|
313
|
-
};
|
|
314
|
-
}
|
|
315
|
-
function parseWalletRecoveryPreparationKeyManifestEntry(raw, expectedWalletId) {
|
|
316
|
-
switch (readJsonField(decodeJsonObject(raw, "walletRecoveryPrepare.keyManifest.entries[]"), "kind")) {
|
|
317
|
-
case "near_ed25519": {
|
|
318
|
-
const exactEntry = decodeExactJsonObject(raw, [
|
|
319
|
-
"kind",
|
|
320
|
-
"keySetId",
|
|
321
|
-
"signerId",
|
|
322
|
-
"nearAccountId",
|
|
323
|
-
"recordedKeyManifestDigestB64u",
|
|
324
|
-
"recoveryBasis"
|
|
325
|
-
], "walletRecoveryPrepare.keyManifest.entries[].near_ed25519");
|
|
326
|
-
const signerId = requireResponseString(readJsonField(exactEntry, "signerId"), "keyManifest.entries[].signerId");
|
|
327
|
-
const suppliedKeySetId = requireResponseString(readJsonField(exactEntry, "keySetId"), "keyManifest.entries[].keySetId");
|
|
328
|
-
const keySetId = `near_ed25519:${signerId}`;
|
|
329
|
-
if (suppliedKeySetId !== keySetId) throw new Error("walletRecoveryPrepare NEAR key-set identity is inconsistent");
|
|
330
|
-
const nearAccountId = requireResponseString(readJsonField(exactEntry, "nearAccountId"), "keyManifest.entries[].nearAccountId");
|
|
331
|
-
const recoveryBasis = parseWalletRecoveryPreparationNearRecoveryBasis(readJsonField(exactEntry, "recoveryBasis"), expectedWalletId);
|
|
332
|
-
return {
|
|
333
|
-
kind: "near_ed25519",
|
|
334
|
-
keySetId,
|
|
335
|
-
signerId,
|
|
336
|
-
nearAccountId,
|
|
337
|
-
recordedKeyManifestDigestB64u: parseDigestField(readJsonField(exactEntry, "recordedKeyManifestDigestB64u"), "walletRecoveryPrepare.keyManifest.entries[].recordedKeyManifestDigestB64u"),
|
|
338
|
-
recoveryBasis
|
|
339
|
-
};
|
|
340
|
-
}
|
|
341
|
-
case "evm_family_ecdsa": {
|
|
342
|
-
const exactEntry = decodeExactJsonObject(raw, [
|
|
343
|
-
"kind",
|
|
344
|
-
"keySetId",
|
|
345
|
-
"keyHandle",
|
|
346
|
-
"evmFamilySigningKeySlotId",
|
|
347
|
-
"recordedKeyManifestDigestB64u",
|
|
348
|
-
"recoveryBasis"
|
|
349
|
-
], "walletRecoveryPrepare.keyManifest.entries[].evm_family_ecdsa");
|
|
350
|
-
const keyHandle = requireResponseString(readJsonField(exactEntry, "keyHandle"), "keyManifest.entries[].keyHandle");
|
|
351
|
-
const suppliedKeySetId = requireResponseString(readJsonField(exactEntry, "keySetId"), "keyManifest.entries[].keySetId");
|
|
352
|
-
const keySetId = `evm_family_ecdsa:${keyHandle}`;
|
|
353
|
-
if (suppliedKeySetId !== keySetId) throw new Error("walletRecoveryPrepare ECDSA key-set identity is inconsistent");
|
|
354
|
-
const recoveryBasis = parseWalletRecoveryPreparationEcdsaRecoveryBasis(readJsonField(exactEntry, "recoveryBasis"), expectedWalletId);
|
|
355
|
-
return {
|
|
356
|
-
kind: "evm_family_ecdsa",
|
|
357
|
-
keySetId,
|
|
358
|
-
keyHandle,
|
|
359
|
-
evmFamilySigningKeySlotId: requireEvmFamilySigningKeySlotId(readJsonField(exactEntry, "evmFamilySigningKeySlotId")),
|
|
360
|
-
recordedKeyManifestDigestB64u: parseDigestField(readJsonField(exactEntry, "recordedKeyManifestDigestB64u"), "walletRecoveryPrepare.keyManifest.entries[].recordedKeyManifestDigestB64u"),
|
|
361
|
-
recoveryBasis
|
|
362
|
-
};
|
|
363
|
-
}
|
|
364
|
-
default: throw new Error("walletRecoveryPrepare key-manifest entry kind is invalid");
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
function parseWalletRecoveryPreparationNearRecoveryBasis(raw, expectedWalletId) {
|
|
368
|
-
const basis = decodeExactJsonObject(raw, [
|
|
369
|
-
"capabilityKind",
|
|
370
|
-
"activeCapabilityBinding",
|
|
371
|
-
"scope",
|
|
372
|
-
"applicationBinding",
|
|
373
|
-
"participantIds",
|
|
374
|
-
"registeredPublicKey",
|
|
375
|
-
"runtimePolicyScope",
|
|
376
|
-
"activationTranscript",
|
|
377
|
-
"activationStateEpoch",
|
|
378
|
-
"signingWorkerVerifyingShare"
|
|
379
|
-
], "walletRecoveryPrepare.keyManifest.entries[].recoveryBasis");
|
|
380
|
-
const capabilityKind = readJsonField(basis, "capabilityKind");
|
|
381
|
-
if (capabilityKind !== "registration" && capabilityKind !== "recovery") throw new Error("walletRecoveryPrepare NEAR recovery capability kind is invalid");
|
|
382
|
-
const activeCapabilityBinding = requireByteArray(readJsonField(basis, "activeCapabilityBinding"), 32, "NEAR recovery active capability binding");
|
|
383
|
-
const scope = parseWalletRecoveryNearLifecycleScope(readJsonField(basis, "scope"));
|
|
384
|
-
const applicationBinding = parseWalletRecoveryNearApplicationBinding(readJsonField(basis, "applicationBinding"));
|
|
385
|
-
const participantIds = requireParticipantPair(readJsonField(basis, "participantIds"), "NEAR recovery participant IDs");
|
|
386
|
-
const registeredPublicKey = requireByteArray(readJsonField(basis, "registeredPublicKey"), 32, "NEAR recovery registered public key");
|
|
387
|
-
const runtimePolicyScope = parseWalletRecoveryRuntimePolicyScope(readJsonField(basis, "runtimePolicyScope"));
|
|
388
|
-
const activationTranscript = requireByteArray(readJsonField(basis, "activationTranscript"), 32, "NEAR recovery activation transcript");
|
|
389
|
-
const activationStateEpoch = Number(readJsonField(basis, "activationStateEpoch"));
|
|
390
|
-
if (!Number.isSafeInteger(activationStateEpoch) || activationStateEpoch <= 0) throw new Error("walletRecoveryPrepare NEAR recovery activation state epoch is invalid");
|
|
391
|
-
const signingWorkerVerifyingShare = requireByteArray(readJsonField(basis, "signingWorkerVerifyingShare"), 32, "NEAR recovery signing-worker verifying share");
|
|
392
|
-
if (applicationBinding.wallet_id !== expectedWalletId || scope.account_id !== expectedWalletId || scope.root_share_epoch !== runtimePolicyScope.signingRootVersion) throw new Error("walletRecoveryPrepare NEAR recovery basis changed its wallet scope");
|
|
393
|
-
return {
|
|
394
|
-
capabilityKind,
|
|
395
|
-
activeCapabilityBinding,
|
|
396
|
-
scope,
|
|
397
|
-
applicationBinding,
|
|
398
|
-
participantIds,
|
|
399
|
-
registeredPublicKey,
|
|
400
|
-
runtimePolicyScope,
|
|
401
|
-
activationTranscript,
|
|
402
|
-
activationStateEpoch,
|
|
403
|
-
signingWorkerVerifyingShare
|
|
404
|
-
};
|
|
405
|
-
}
|
|
406
|
-
function parseWalletRecoveryPreparationEcdsaRecoveryBasis(raw, expectedWalletId) {
|
|
407
|
-
const basis = decodeExactJsonObject(raw, [
|
|
408
|
-
"publicCapability",
|
|
409
|
-
"activationReceipt",
|
|
410
|
-
"serverGeneration",
|
|
411
|
-
"clientRootPublicKey33B64u",
|
|
412
|
-
"chainTargets",
|
|
413
|
-
"ecdsaThresholdKeyId",
|
|
414
|
-
"signingRootId",
|
|
415
|
-
"signingRootVersion",
|
|
416
|
-
"runtimePolicyScope",
|
|
417
|
-
"participantIds",
|
|
418
|
-
"possessionChallenge"
|
|
419
|
-
], "walletRecoveryPrepare.keyManifest.entries[].recoveryBasis");
|
|
420
|
-
const publicCapability = parseRouterAbEcdsaDerivationPublicCapabilityV1(readJsonField(basis, "publicCapability"));
|
|
421
|
-
const activationReceipt = parseRouterAbEcdsaRegistrationActivationReceiptV1(readJsonField(basis, "activationReceipt"));
|
|
422
|
-
if (publicCapability.client_id !== expectedWalletId) throw new Error("walletRecoveryPrepare ECDSA recovery capability changed the wallet scope");
|
|
423
|
-
const signingRootId = parseSdkEcdsaDerivationSigningRootId(readJsonField(basis, "signingRootId"));
|
|
424
|
-
const signingRootVersion = parseSdkEcdsaDerivationSigningRootVersion(readJsonField(basis, "signingRootVersion"));
|
|
425
|
-
const runtimePolicyScope = parseWalletRecoveryRuntimePolicyScope(readJsonField(basis, "runtimePolicyScope"));
|
|
426
|
-
if (runtimePolicyScope.signingRootVersion !== signingRootVersion) throw new Error("walletRecoveryPrepare ECDSA recovery scope changed the signing root");
|
|
427
|
-
const serverGeneration = parseEcdsaServerGeneration(readJsonField(basis, "serverGeneration"));
|
|
428
|
-
if (String(activationReceipt.server_generation) !== String(serverGeneration)) throw new Error("walletRecoveryPrepare ECDSA activation receipt changed server generation");
|
|
429
|
-
const possessionChallenge = parseWalletRecoveryEcdsaPossessionChallengeV1(readJsonField(basis, "possessionChallenge"));
|
|
430
|
-
if (possessionChallenge.walletId !== expectedWalletId || possessionChallenge.expectedServerGeneration !== String(serverGeneration) || possessionChallenge.derivationClientSharePublicKey33B64u !== publicCapability.public_identity.derivation_client_share_public_key33_b64u) throw new Error("walletRecoveryPrepare ECDSA possession challenge changed its capability");
|
|
431
|
-
return {
|
|
432
|
-
publicCapability,
|
|
433
|
-
activationReceipt,
|
|
434
|
-
serverGeneration,
|
|
435
|
-
clientRootPublicKey33B64u: ecdsaClientRootPublicKey33B64uFromString(requireResponseString(readJsonField(basis, "clientRootPublicKey33B64u"), "keyManifest.entries[].recoveryBasis.clientRootPublicKey33B64u")),
|
|
436
|
-
chainTargets: parseWalletRecoveryEcdsaChainTargets(readJsonField(basis, "chainTargets")),
|
|
437
|
-
ecdsaThresholdKeyId: parseSdkEcdsaDerivationThresholdKeyId(readJsonField(basis, "ecdsaThresholdKeyId")),
|
|
438
|
-
signingRootId,
|
|
439
|
-
signingRootVersion,
|
|
440
|
-
runtimePolicyScope,
|
|
441
|
-
participantIds: parseWalletRecoveryEcdsaParticipantIds(readJsonField(basis, "participantIds")),
|
|
442
|
-
possessionChallenge
|
|
443
|
-
};
|
|
444
|
-
}
|
|
445
|
-
function parseWalletRecoveryEcdsaChainTargets(raw) {
|
|
446
|
-
if (!Array.isArray(raw) || raw.length === 0) throw new Error("walletRecoveryPrepare ECDSA recovery chain targets are invalid");
|
|
447
|
-
const targets = raw.map((value, index) => parseWalletRecoveryEcdsaChainTarget(value, index));
|
|
448
|
-
if (new Set(targets.map(thresholdEcdsaChainTargetKey)).size !== targets.length) throw new Error("walletRecoveryPrepare ECDSA recovery chain targets are duplicated");
|
|
449
|
-
const first = targets[0];
|
|
450
|
-
if (!first) throw new Error("walletRecoveryPrepare ECDSA recovery chain targets are invalid");
|
|
451
|
-
return [first, ...targets.slice(1)];
|
|
452
|
-
}
|
|
453
|
-
function parseWalletRecoveryEcdsaChainTarget(raw, index) {
|
|
454
|
-
const label = `walletRecoveryPrepare.keyManifest.entries[].recoveryBasis.chainTargets[${index}]`;
|
|
455
|
-
const target = decodeJsonObject(raw, label);
|
|
456
|
-
const kind = readJsonField(target, "kind");
|
|
457
|
-
assertExactJsonObjectKeys(target, kind === "evm" ? [
|
|
458
|
-
"kind",
|
|
459
|
-
"namespace",
|
|
460
|
-
"chainId",
|
|
461
|
-
"networkSlug"
|
|
462
|
-
] : [
|
|
463
|
-
"kind",
|
|
464
|
-
"chainId",
|
|
465
|
-
"networkSlug"
|
|
466
|
-
], label);
|
|
467
|
-
const namespace = readJsonField(target, "namespace");
|
|
468
|
-
const chainId = Number(readJsonField(target, "chainId"));
|
|
469
|
-
if (!Number.isSafeInteger(chainId) || chainId <= 0) throw new Error("walletRecoveryPrepare ECDSA recovery chain id is invalid");
|
|
470
|
-
const networkSlugValue = readJsonField(target, "networkSlug");
|
|
471
|
-
const networkSlug = typeof networkSlugValue === "string" && networkSlugValue.trim() ? networkSlugValue.trim() : null;
|
|
472
|
-
if (kind === "evm") {
|
|
473
|
-
if (namespace !== "eip155") throw new Error("walletRecoveryPrepare ECDSA recovery EVM namespace is invalid");
|
|
474
|
-
return {
|
|
475
|
-
kind: "evm",
|
|
476
|
-
namespace: "eip155",
|
|
477
|
-
chainId,
|
|
478
|
-
networkSlug: networkSlug ?? `evm-${chainId}`
|
|
479
|
-
};
|
|
480
|
-
}
|
|
481
|
-
if (kind === "tempo") return {
|
|
482
|
-
kind: "tempo",
|
|
483
|
-
chainId,
|
|
484
|
-
networkSlug: networkSlug ?? `tempo-${chainId}`
|
|
485
|
-
};
|
|
486
|
-
throw new Error("walletRecoveryPrepare ECDSA recovery chain family is invalid");
|
|
487
|
-
}
|
|
488
|
-
function parseWalletRecoveryEcdsaParticipantIds(raw) {
|
|
489
|
-
if (!Array.isArray(raw) || raw.length !== 2 || raw[0] !== 1 || raw[1] !== 2) throw new Error("walletRecoveryPrepare ECDSA recovery participant IDs are invalid");
|
|
490
|
-
return [1, 2];
|
|
491
|
-
}
|
|
492
|
-
function parseWalletRecoveryNearLifecycleScope(raw) {
|
|
493
|
-
const scope = decodeExactJsonObject(raw, [
|
|
494
|
-
"lifecycle_id",
|
|
495
|
-
"root_share_epoch",
|
|
496
|
-
"account_id",
|
|
497
|
-
"threshold_session_id",
|
|
498
|
-
"signer_set_id",
|
|
499
|
-
"signing_worker_id",
|
|
500
|
-
"material_activation"
|
|
501
|
-
], "walletRecoveryPrepare.keyManifest.entries[].recoveryBasis.scope");
|
|
502
|
-
return {
|
|
503
|
-
lifecycle_id: requireResponseString(readJsonField(scope, "lifecycle_id"), "keyManifest.entries[].recoveryBasis.scope.lifecycle_id"),
|
|
504
|
-
root_share_epoch: requireResponseString(readJsonField(scope, "root_share_epoch"), "keyManifest.entries[].recoveryBasis.scope.root_share_epoch"),
|
|
505
|
-
account_id: requireResponseString(readJsonField(scope, "account_id"), "keyManifest.entries[].recoveryBasis.scope.account_id"),
|
|
506
|
-
threshold_session_id: requireResponseString(readJsonField(scope, "threshold_session_id"), "keyManifest.entries[].recoveryBasis.scope.threshold_session_id"),
|
|
507
|
-
signer_set_id: requireResponseString(readJsonField(scope, "signer_set_id"), "keyManifest.entries[].recoveryBasis.scope.signer_set_id"),
|
|
508
|
-
signing_worker_id: requireResponseString(readJsonField(scope, "signing_worker_id"), "keyManifest.entries[].recoveryBasis.scope.signing_worker_id"),
|
|
509
|
-
material_activation: parseRouterAbMpcMaterialActivationRef(readJsonField(scope, "material_activation"))
|
|
510
|
-
};
|
|
511
|
-
}
|
|
512
|
-
function parseWalletRecoveryNearApplicationBinding(raw) {
|
|
513
|
-
const applicationBinding = decodeExactJsonObject(raw, [
|
|
514
|
-
"wallet_id",
|
|
515
|
-
"near_ed25519_signing_key_id",
|
|
516
|
-
"signing_root_id",
|
|
517
|
-
"key_creation_signer_slot"
|
|
518
|
-
], "walletRecoveryPrepare.keyManifest.entries[].recoveryBasis.applicationBinding");
|
|
519
|
-
const keyCreationSignerSlot = Number(readJsonField(applicationBinding, "key_creation_signer_slot"));
|
|
520
|
-
if (!Number.isSafeInteger(keyCreationSignerSlot) || keyCreationSignerSlot <= 0) throw new Error("walletRecoveryPrepare NEAR recovery key-creation signer slot is invalid");
|
|
521
|
-
return {
|
|
522
|
-
wallet_id: requireResponseString(readJsonField(applicationBinding, "wallet_id"), "keyManifest.entries[].recoveryBasis.applicationBinding.wallet_id"),
|
|
523
|
-
near_ed25519_signing_key_id: requireResponseString(readJsonField(applicationBinding, "near_ed25519_signing_key_id"), "keyManifest.entries[].recoveryBasis.applicationBinding.near_ed25519_signing_key_id"),
|
|
524
|
-
signing_root_id: requireResponseString(readJsonField(applicationBinding, "signing_root_id"), "keyManifest.entries[].recoveryBasis.applicationBinding.signing_root_id"),
|
|
525
|
-
key_creation_signer_slot: keyCreationSignerSlot
|
|
526
|
-
};
|
|
527
|
-
}
|
|
528
|
-
function parseWalletRecoveryRuntimePolicyScope(raw) {
|
|
529
|
-
const scope = decodeExactJsonObject(raw, [
|
|
530
|
-
"orgId",
|
|
531
|
-
"projectId",
|
|
532
|
-
"envId",
|
|
533
|
-
"signingRootVersion"
|
|
534
|
-
], "walletRecoveryPrepare.keyManifest.entries[].recoveryBasis.runtimePolicyScope");
|
|
535
|
-
try {
|
|
536
|
-
return normalizeRuntimePolicyScope(scope);
|
|
537
|
-
} catch {
|
|
538
|
-
throw new Error("walletRecoveryPrepare NEAR recovery runtime policy scope is invalid");
|
|
539
|
-
}
|
|
540
|
-
}
|
|
541
|
-
function requireParticipantPair(raw, label) {
|
|
542
|
-
if (!Array.isArray(raw) || raw.length !== 2 || !Number.isSafeInteger(raw[0]) || !Number.isSafeInteger(raw[1]) || Number(raw[0]) <= 0 || Number(raw[1]) <= 0 || Number(raw[0]) === Number(raw[1])) throw new Error(`walletRecoveryPrepare ${label} is invalid`);
|
|
543
|
-
return [Number(raw[0]), Number(raw[1])];
|
|
544
|
-
}
|
|
545
|
-
function requireCanonicalBytesB64u(raw, length, label) {
|
|
546
|
-
const value = requireResponseString(raw, label);
|
|
547
|
-
const bytes = base64UrlDecode(value);
|
|
548
|
-
if (bytes.length !== length || base64UrlEncode(bytes) !== value) throw new Error(`walletRecoveryPrepare ${label} is invalid`);
|
|
549
|
-
return value;
|
|
550
|
-
}
|
|
551
|
-
function requireCanonicalNonEmptyB64u(raw, label) {
|
|
552
|
-
const value = requireResponseString(raw, label);
|
|
553
|
-
const bytes = base64UrlDecode(value);
|
|
554
|
-
if (bytes.length === 0 || base64UrlEncode(bytes) !== value) throw new Error(`walletRecoveryPrepare ${label} is invalid`);
|
|
555
|
-
return value;
|
|
556
|
-
}
|
|
557
|
-
function requireByteArray(raw, length, label) {
|
|
558
|
-
if (!Array.isArray(raw) || raw.length !== length || raw.some((value) => !Number.isInteger(value) || value < 0 || value > 255)) throw new Error(`walletRecoveryPrepare ${label} is invalid`);
|
|
559
|
-
return raw.map(Number);
|
|
560
|
-
}
|
|
561
|
-
//#endregion
|
|
562
|
-
//#region src/core/rpcClients/relayer/walletRecoveryFinalize.ts
|
|
563
|
-
/**
|
|
564
|
-
* Installing the replacement credential a recovery enrolled.
|
|
565
|
-
*
|
|
566
|
-
* Sent after activation, carrying an envelope this client sealed under the new
|
|
567
|
-
* credential. The server cannot open that ciphertext because it has no seed.
|
|
568
|
-
* It queries its signer registry and exact activation receipts before a
|
|
569
|
-
* `promoted` reply can consume the code and retire old credentials.
|
|
570
|
-
*
|
|
571
|
-
* Promotion is atomic. The successful response carries the committed
|
|
572
|
-
* credential projection; every source retirement is part of that same commit.
|
|
573
|
-
*/
|
|
574
|
-
const WALLET_RECOVERY_FINALIZE_PATH = "/wallets/recovery/finalize";
|
|
575
|
-
async function finalizeWalletRecovery(args) {
|
|
576
|
-
const url = `${normalizeRelayerBaseUrl(args.relayUrl)}${WALLET_RECOVERY_FINALIZE_PATH}`;
|
|
577
|
-
const doFetch = args.fetchImpl || fetch;
|
|
578
|
-
let webauthnRegistration;
|
|
579
|
-
try {
|
|
580
|
-
webauthnRegistration = redactedPasskeyRegistrationCredential(args.webauthnRegistration);
|
|
581
|
-
} catch {
|
|
582
|
-
return { kind: "refused" };
|
|
583
|
-
}
|
|
584
|
-
let ecdsaMaterialPossessionProofs;
|
|
585
|
-
try {
|
|
586
|
-
const seen = /* @__PURE__ */ new Set();
|
|
587
|
-
ecdsaMaterialPossessionProofs = args.ecdsaMaterialPossessionProofs.map((entry) => {
|
|
588
|
-
if (typeof entry.keySetId !== "string" || !entry.keySetId.startsWith("evm_family_ecdsa:") || entry.keySetId.length <= 17) throw new Error("ECDSA possession proof key-set id is invalid");
|
|
589
|
-
if (seen.has(entry.keySetId)) throw new Error("ECDSA possession proof key-set ids are duplicated");
|
|
590
|
-
seen.add(entry.keySetId);
|
|
591
|
-
return {
|
|
592
|
-
keySetId: entry.keySetId,
|
|
593
|
-
proof: parseWalletRecoveryEcdsaPossessionProofV1(entry.proof)
|
|
594
|
-
};
|
|
595
|
-
});
|
|
596
|
-
} catch {
|
|
597
|
-
return { kind: "refused" };
|
|
598
|
-
}
|
|
599
|
-
let replacementEnvelope;
|
|
600
|
-
try {
|
|
601
|
-
replacementEnvelope = parsePasskeyCustodyEnvelopeRecord(args.replacementEnvelope, "walletRecoveryFinalize.replacementEnvelope");
|
|
602
|
-
if (String(replacementEnvelope.walletId) !== String(args.walletId)) throw new Error("replacement envelope changed the wallet identity");
|
|
603
|
-
if (String(replacementEnvelope.envelopeId) !== String(args.replacementId)) throw new Error("replacement envelope changed the replacement identity");
|
|
604
|
-
if (replacementEnvelope.factor.kind !== "passkey") throw new Error("replacement envelope is not bound to a passkey");
|
|
605
|
-
} catch {
|
|
606
|
-
return { kind: "refused" };
|
|
607
|
-
}
|
|
608
|
-
let response;
|
|
609
|
-
try {
|
|
610
|
-
response = await doFetch(url, buildRelayerJsonPostRequestInit({ body: {
|
|
611
|
-
kind: "finalize",
|
|
612
|
-
walletId: args.walletId,
|
|
613
|
-
reservationId: args.reservationId,
|
|
614
|
-
recoveryOperationId: args.recoveryOperationId,
|
|
615
|
-
targetDeviceId: args.targetDeviceId,
|
|
616
|
-
targetAuthorityId: args.targetAuthorityId,
|
|
617
|
-
targetWalletAuthMethodId: args.targetWalletAuthMethodId,
|
|
618
|
-
challengeId: args.challengeId,
|
|
619
|
-
replacementId: args.replacementId,
|
|
620
|
-
webauthnRegistration,
|
|
621
|
-
replacementEnvelope,
|
|
622
|
-
ecdsaMaterialPossessionProofs
|
|
623
|
-
} }));
|
|
624
|
-
} catch {
|
|
625
|
-
return { kind: "transport_uncertain" };
|
|
626
|
-
}
|
|
627
|
-
const body = decodeWalletRecoveryFinalizeResponse(await response.json().catch(() => ({})));
|
|
628
|
-
if (response.status === 200 && body.kind === "success") try {
|
|
629
|
-
const projection = await parseWalletRecoveryCommittedProjectionV1(body.projection, buildPasskeyProjectionExpectation(args, replacementEnvelope));
|
|
630
|
-
if (projection.kind !== "passkey") throw new Error("recovery projection branch changed");
|
|
631
|
-
return {
|
|
632
|
-
kind: "promoted",
|
|
633
|
-
storeVersion: projection.storeVersion,
|
|
634
|
-
authority: projection.authority,
|
|
635
|
-
authMethod: projection.authMethod
|
|
636
|
-
};
|
|
637
|
-
} catch {
|
|
638
|
-
return { kind: "transport_uncertain" };
|
|
639
|
-
}
|
|
640
|
-
if (response.status === 409) return { kind: "retryable_conflict" };
|
|
641
|
-
if (response.status === 400 || response.status === 401) return { kind: "refused" };
|
|
642
|
-
return { kind: "transport_uncertain" };
|
|
643
|
-
}
|
|
644
|
-
/**
|
|
645
|
-
* Replays a promotion whose server transaction already committed. The replay
|
|
646
|
-
* body is credential-free and carries only the exact sealed replacement
|
|
647
|
-
* envelope and immutable operation identity retained by the local journal.
|
|
648
|
-
*/
|
|
649
|
-
async function replayWalletRecovery(args) {
|
|
650
|
-
let replacementEnvelope;
|
|
651
|
-
try {
|
|
652
|
-
replacementEnvelope = parsePasskeyCustodyEnvelopeRecord(args.replacementEnvelope, "walletRecoveryReplay.replacementEnvelope");
|
|
653
|
-
if (String(replacementEnvelope.walletId) !== String(args.walletId) || String(replacementEnvelope.envelopeId) !== String(args.replacementId) || replacementEnvelope.factor.kind !== "passkey") throw new Error("recovery replay envelope identity is invalid");
|
|
654
|
-
} catch {
|
|
655
|
-
return { kind: "refused" };
|
|
656
|
-
}
|
|
657
|
-
let response;
|
|
658
|
-
try {
|
|
659
|
-
response = await (args.fetchImpl ?? fetch)(`${normalizeRelayerBaseUrl(args.relayUrl)}${WALLET_RECOVERY_FINALIZE_PATH}`, buildRelayerJsonPostRequestInit({ body: {
|
|
660
|
-
kind: "replay",
|
|
661
|
-
walletId: args.walletId,
|
|
662
|
-
reservationId: args.reservationId,
|
|
663
|
-
recoveryOperationId: args.recoveryOperationId,
|
|
664
|
-
targetDeviceId: args.targetDeviceId,
|
|
665
|
-
targetAuthorityId: args.targetAuthorityId,
|
|
666
|
-
targetWalletAuthMethodId: args.targetWalletAuthMethodId,
|
|
667
|
-
replacementId: args.replacementId,
|
|
668
|
-
replacementEnvelope
|
|
669
|
-
} }));
|
|
670
|
-
} catch {
|
|
671
|
-
return { kind: "transport_uncertain" };
|
|
672
|
-
}
|
|
673
|
-
const body = decodeWalletRecoveryFinalizeResponse(await response.json().catch(() => ({})));
|
|
674
|
-
if (response.status === 200 && body.kind === "success") try {
|
|
675
|
-
const projection = await parseWalletRecoveryCommittedProjectionV1(body.projection, buildPasskeyProjectionExpectation(args, replacementEnvelope));
|
|
676
|
-
if (projection.kind !== "passkey") throw new Error("recovery projection branch changed");
|
|
677
|
-
return {
|
|
678
|
-
kind: "promoted",
|
|
679
|
-
storeVersion: projection.storeVersion,
|
|
680
|
-
authority: projection.authority,
|
|
681
|
-
authMethod: projection.authMethod
|
|
682
|
-
};
|
|
683
|
-
} catch {
|
|
684
|
-
return { kind: "transport_uncertain" };
|
|
685
|
-
}
|
|
686
|
-
if (response.status === 409) return { kind: "retryable_conflict" };
|
|
687
|
-
if (response.status === 400 || response.status === 401) return { kind: "refused" };
|
|
688
|
-
return { kind: "transport_uncertain" };
|
|
689
|
-
}
|
|
690
|
-
function decodeWalletRecoveryFinalizeResponse(value) {
|
|
691
|
-
if (value === null || typeof value !== "object" || Array.isArray(value) || Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) return { kind: "invalid" };
|
|
692
|
-
const fields = new Map(Object.entries(value));
|
|
693
|
-
const names = [...fields.keys()];
|
|
694
|
-
if (fields.size === 2 && names.includes("ok") && names.includes("projection") && fields.get("ok") === true) return {
|
|
695
|
-
kind: "success",
|
|
696
|
-
projection: fields.get("projection")
|
|
697
|
-
};
|
|
698
|
-
const code = fields.get("code");
|
|
699
|
-
const message = fields.get("message");
|
|
700
|
-
if (fields.size === 3 && names.includes("ok") && names.includes("code") && names.includes("message") && fields.get("ok") === false && typeof code === "string" && typeof message === "string") return {
|
|
701
|
-
kind: "failure",
|
|
702
|
-
code,
|
|
703
|
-
message
|
|
704
|
-
};
|
|
705
|
-
return { kind: "invalid" };
|
|
706
|
-
}
|
|
707
|
-
function buildPasskeyProjectionExpectation(args, replacementEnvelope) {
|
|
708
|
-
if (replacementEnvelope.factor.kind !== "passkey") throw new Error("replacement envelope is not a passkey envelope");
|
|
709
|
-
return {
|
|
710
|
-
kind: "passkey",
|
|
711
|
-
walletId: requireParsed$1(parseWalletId(args.walletId)),
|
|
712
|
-
recoveryOperationId: requireParsed$1(parseWalletRecoveryOperationId(args.recoveryOperationId)),
|
|
713
|
-
targetDeviceId: requireParsed$1(parseDeviceId(args.targetDeviceId)),
|
|
714
|
-
targetAuthorityId: requireParsed$1(parseWalletAuthorityId(args.targetAuthorityId)),
|
|
715
|
-
targetWalletAuthMethodId: requireParsed$1(parseWalletAuthMethodId(args.targetWalletAuthMethodId)),
|
|
716
|
-
rpId: replacementEnvelope.factor.rpId,
|
|
717
|
-
credentialIdB64u: replacementEnvelope.factor.credentialIdB64u
|
|
718
|
-
};
|
|
719
|
-
}
|
|
720
|
-
function requireParsed$1(result) {
|
|
721
|
-
if (!result.ok) throw new Error("invalid recovery identity");
|
|
722
|
-
return result.value;
|
|
723
|
-
}
|
|
724
|
-
function isDurablePasskeyPayload(payload) {
|
|
725
|
-
return payload.target.kind === "passkey";
|
|
726
|
-
}
|
|
727
|
-
function durableEmailEnrollmentReference(payload) {
|
|
728
|
-
return {
|
|
729
|
-
kind: "email_otp_enrollment_reference_v1",
|
|
730
|
-
enrollmentId: payload.enrollment.enrollmentId,
|
|
731
|
-
enrollmentSealKeyVersion: payload.enrollment.kind === "existing" ? payload.enrollment.enrollmentSealKeyVersion : payload.enrollment.material.enrollmentSealKeyVersion
|
|
732
|
-
};
|
|
733
|
-
}
|
|
734
|
-
const NEAR_KEY_SET_FIELDS = [
|
|
735
|
-
"kind",
|
|
736
|
-
"keySetId",
|
|
737
|
-
"applicationBindingDigestB64u",
|
|
738
|
-
"registeredPublicKeyB64u",
|
|
739
|
-
"participantIds",
|
|
740
|
-
"stateEpoch",
|
|
741
|
-
"signingWorkerVerifyingShareB64u",
|
|
742
|
-
"materialActivation",
|
|
743
|
-
"sealed"
|
|
744
|
-
];
|
|
745
|
-
const ECDSA_KEY_SET_FIELDS = [
|
|
746
|
-
"kind",
|
|
747
|
-
"keySetId",
|
|
748
|
-
"possessionProof",
|
|
749
|
-
"readyStateBlobB64u",
|
|
750
|
-
"publicFacts"
|
|
751
|
-
];
|
|
752
|
-
const PUBLIC_FACTS_FIELDS = [
|
|
753
|
-
"contextBinding32B64u",
|
|
754
|
-
"derivationClientSharePublicKey33B64u",
|
|
755
|
-
"clientVerifyingShare33B64u",
|
|
756
|
-
"relayerPublicKey33B64u",
|
|
757
|
-
"groupPublicKey33B64u",
|
|
758
|
-
"ethereumAddress",
|
|
759
|
-
"clientShareRetryCounter",
|
|
760
|
-
"relayerShareRetryCounter"
|
|
761
|
-
];
|
|
762
|
-
const PAYLOAD_COMMON_FIELDS = [
|
|
763
|
-
"kind",
|
|
764
|
-
"version",
|
|
765
|
-
"recoveryOperationId",
|
|
766
|
-
"walletId",
|
|
767
|
-
"reservationId",
|
|
768
|
-
"targetDeviceId",
|
|
769
|
-
"targetAuthorityId",
|
|
770
|
-
"targetWalletAuthMethodId",
|
|
771
|
-
"replacementEnvelope",
|
|
772
|
-
"keyManifest",
|
|
773
|
-
"nearKeySets",
|
|
774
|
-
"ecdsaKeySets",
|
|
775
|
-
"target"
|
|
776
|
-
];
|
|
777
|
-
function durableExactFields(value, fields, label) {
|
|
778
|
-
rejectUnknownFields(value, fields, label);
|
|
779
|
-
if (Object.keys(value).length !== fields.length) throw new Error(label + " fields are invalid");
|
|
780
|
-
}
|
|
781
|
-
function durableString(value, label) {
|
|
782
|
-
if (typeof value !== "string" || !value || value.trim() !== value) throw new Error(label + " must be a non-empty canonical string");
|
|
783
|
-
return value;
|
|
784
|
-
}
|
|
785
|
-
function durableBase64Url(value, label, byteLength) {
|
|
786
|
-
const normalized = durableString(value, label);
|
|
787
|
-
const bytes = base64UrlDecode(normalized);
|
|
788
|
-
if (byteLength !== void 0 && bytes.byteLength !== byteLength) throw new Error(label + " must decode to " + byteLength + " bytes");
|
|
789
|
-
return normalized;
|
|
790
|
-
}
|
|
791
|
-
function durableSafeInteger(value, label) {
|
|
792
|
-
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 0) throw new Error(label + " must be a non-negative safe integer");
|
|
793
|
-
return value;
|
|
794
|
-
}
|
|
795
|
-
function durableParticipantPair(value, label) {
|
|
796
|
-
if (!Array.isArray(value) || value.length !== 2 || value.some(isInvalidParticipant)) throw new Error(label + " must contain two positive participant IDs");
|
|
797
|
-
return [value[0], value[1]];
|
|
798
|
-
}
|
|
799
|
-
function isInvalidParticipant(value) {
|
|
800
|
-
return typeof value !== "number" || !Number.isSafeInteger(value) || value < 1;
|
|
801
|
-
}
|
|
802
|
-
function nearManifestEntryForKeySet(manifest, raw) {
|
|
803
|
-
const keySetId = durableString(requireRecord(raw, "recovery durable NEAR key set").keySetId, "recovery durable NEAR keySetId");
|
|
804
|
-
const entry = manifest.entries.find((candidate) => candidate.keySetId === keySetId);
|
|
805
|
-
if (!entry || entry.kind !== "near_ed25519") throw new Error("recovery durable NEAR key-set manifest entry is invalid");
|
|
806
|
-
return entry;
|
|
807
|
-
}
|
|
808
|
-
function ecdsaManifestEntryForKeySet(manifest, raw) {
|
|
809
|
-
const keySetId = durableString(requireRecord(raw, "recovery durable ECDSA key set").keySetId, "recovery durable ECDSA keySetId");
|
|
810
|
-
const entry = manifest.entries.find((candidate) => candidate.keySetId === keySetId);
|
|
811
|
-
if (!entry || entry.kind !== "evm_family_ecdsa") throw new Error("recovery durable ECDSA key-set manifest entry is invalid");
|
|
812
|
-
return entry;
|
|
813
|
-
}
|
|
814
|
-
function durableRuntimePolicyScope(value) {
|
|
815
|
-
const scope = normalizeThresholdRuntimePolicyScope(value);
|
|
816
|
-
if (!scope) throw new Error("recovery runtime policy scope is invalid");
|
|
817
|
-
return scope;
|
|
818
|
-
}
|
|
819
|
-
function parseWalletRecoveryDurableNearKeySet(raw, manifestEntry) {
|
|
820
|
-
const record = requireRecord(raw, "recovery durable NEAR key set");
|
|
821
|
-
durableExactFields(record, NEAR_KEY_SET_FIELDS, "recovery durable NEAR key set");
|
|
822
|
-
if (record.kind !== "near_ed25519" || record.keySetId !== manifestEntry.keySetId) throw new Error("recovery durable NEAR key-set identity is invalid");
|
|
823
|
-
const basis = manifestEntry.recoveryBasis;
|
|
824
|
-
const thresholdSessionId = basis.scope.threshold_session_id;
|
|
825
|
-
if (!parseThresholdEd25519SessionId(thresholdSessionId).ok) throw new Error("recovery durable NEAR thresholdSessionId is invalid");
|
|
826
|
-
const binding = {
|
|
827
|
-
kind: WALLET_CUSTODY_ED25519_MATERIAL_KEY_KIND,
|
|
828
|
-
applicationBindingDigestB64u: parseDigestField(record.applicationBindingDigestB64u, "recovery durable NEAR application binding digest"),
|
|
829
|
-
registeredPublicKeyB64u: parseEd25519PublicKeyB64u(record.registeredPublicKeyB64u, "recovery durable NEAR registered public key"),
|
|
830
|
-
participantIds: durableParticipantPair(record.participantIds, "recovery durable NEAR participantIds"),
|
|
831
|
-
stateEpoch: durableString(record.stateEpoch, "recovery durable NEAR stateEpoch"),
|
|
832
|
-
walletId: basis.applicationBinding.wallet_id,
|
|
833
|
-
nearAccountId: manifestEntry.nearAccountId,
|
|
834
|
-
nearEd25519SigningKeyId: basis.applicationBinding.near_ed25519_signing_key_id,
|
|
835
|
-
signerSlot: parseKeyCreationSignerSlot(basis.applicationBinding.key_creation_signer_slot, "recovery durable NEAR signerSlot"),
|
|
836
|
-
signingWorkerId: basis.scope.signing_worker_id,
|
|
837
|
-
signingWorkerVerifyingShareB64u: parseEd25519PublicKeyB64u(record.signingWorkerVerifyingShareB64u, "recovery durable NEAR signing-worker verifying share")
|
|
838
|
-
};
|
|
839
|
-
const sealedRecord = requireRecord(record.sealed, "recovery durable NEAR sealed material");
|
|
840
|
-
durableExactFields(sealedRecord, ["ciphertextB64u", "nonceB64u"], "recovery durable NEAR sealed material");
|
|
841
|
-
return {
|
|
842
|
-
kind: "near_ed25519",
|
|
843
|
-
keySetId: manifestEntry.keySetId,
|
|
844
|
-
binding,
|
|
845
|
-
thresholdSessionId,
|
|
846
|
-
runtimePolicyScope: durableRuntimePolicyScope(basis.runtimePolicyScope),
|
|
847
|
-
materialActivation: parseRouterAbMpcMaterialActivationRef(record.materialActivation),
|
|
848
|
-
sealed: {
|
|
849
|
-
ciphertextB64u: parseEnvelopeCiphertextB64u(sealedRecord.ciphertextB64u, "recovery durable NEAR ciphertext"),
|
|
850
|
-
nonceB64u: parseEnvelopeNonceB64u(sealedRecord.nonceB64u, "recovery durable NEAR nonce")
|
|
851
|
-
}
|
|
852
|
-
};
|
|
853
|
-
}
|
|
854
|
-
function parseWalletRecoveryDurableEcdsaPublicFacts(raw) {
|
|
855
|
-
const record = requireRecord(raw, "recovery durable ECDSA public facts");
|
|
856
|
-
durableExactFields(record, PUBLIC_FACTS_FIELDS, "recovery durable ECDSA public facts");
|
|
857
|
-
const ethereumAddress = durableString(record.ethereumAddress, "recovery durable ECDSA ethereumAddress").toLowerCase();
|
|
858
|
-
if (!/^0x[0-9a-f]{40}$/.test(ethereumAddress)) throw new Error("recovery durable ECDSA ethereumAddress is invalid");
|
|
859
|
-
return {
|
|
860
|
-
contextBinding32B64u: parseDigestField(record.contextBinding32B64u, "recovery durable ECDSA context binding"),
|
|
861
|
-
derivationClientSharePublicKey33B64u: parseSecp256k1CompressedPublicKeyB64u(record.derivationClientSharePublicKey33B64u, "recovery durable ECDSA client share"),
|
|
862
|
-
clientVerifyingShare33B64u: parseSecp256k1CompressedPublicKeyB64u(record.clientVerifyingShare33B64u, "recovery durable ECDSA client verifying share"),
|
|
863
|
-
relayerPublicKey33B64u: parseSecp256k1CompressedPublicKeyB64u(record.relayerPublicKey33B64u, "recovery durable ECDSA relayer public key"),
|
|
864
|
-
groupPublicKey33B64u: parseSecp256k1CompressedPublicKeyB64u(record.groupPublicKey33B64u, "recovery durable ECDSA group public key"),
|
|
865
|
-
ethereumAddress,
|
|
866
|
-
clientShareRetryCounter: durableSafeInteger(record.clientShareRetryCounter, "recovery durable ECDSA client-share retry counter"),
|
|
867
|
-
relayerShareRetryCounter: durableSafeInteger(record.relayerShareRetryCounter, "recovery durable ECDSA relayer-share retry counter")
|
|
868
|
-
};
|
|
869
|
-
}
|
|
870
|
-
function parseWalletRecoveryDurableEcdsaKeySet(raw, manifestEntry) {
|
|
871
|
-
const record = requireRecord(raw, "recovery durable ECDSA key set");
|
|
872
|
-
durableExactFields(record, ECDSA_KEY_SET_FIELDS, "recovery durable ECDSA key set");
|
|
873
|
-
if (record.kind !== "evm_family_ecdsa" || record.keySetId !== manifestEntry.keySetId) throw new Error("recovery durable ECDSA key-set identity is invalid");
|
|
874
|
-
return {
|
|
875
|
-
kind: "evm_family_ecdsa",
|
|
876
|
-
entry: manifestEntry,
|
|
877
|
-
possessionProof: parseWalletRecoveryEcdsaPossessionProofV1(record.possessionProof),
|
|
878
|
-
readyStateBlobB64u: durableBase64Url(record.readyStateBlobB64u, "recovery durable ECDSA ready-state blob"),
|
|
879
|
-
publicFacts: parseWalletRecoveryDurableEcdsaPublicFacts(record.publicFacts)
|
|
880
|
-
};
|
|
881
|
-
}
|
|
882
|
-
function parseWalletRecoveryDurableRegistration(raw) {
|
|
883
|
-
const record = requireRecord(raw, "recovery durable registration");
|
|
884
|
-
durableExactFields(record, [
|
|
885
|
-
"kind",
|
|
886
|
-
"id",
|
|
887
|
-
"rawId",
|
|
888
|
-
"type",
|
|
889
|
-
"authenticatorAttachment",
|
|
890
|
-
"response"
|
|
891
|
-
], "recovery durable registration");
|
|
892
|
-
if (record.kind !== "wallet_recovery_redacted_registration_v1") throw new Error("recovery durable registration kind is invalid");
|
|
893
|
-
if (record.authenticatorAttachment !== null && typeof record.authenticatorAttachment !== "string") throw new Error("recovery durable registration authenticatorAttachment is invalid");
|
|
894
|
-
const responseRecord = requireRecord(record.response, "recovery durable registration response");
|
|
895
|
-
durableExactFields(responseRecord, [
|
|
896
|
-
"clientDataJSON",
|
|
897
|
-
"attestationObject",
|
|
898
|
-
"transports"
|
|
899
|
-
], "recovery durable registration response");
|
|
900
|
-
if (!Array.isArray(responseRecord.transports)) throw new Error("recovery durable registration transports are invalid");
|
|
901
|
-
return {
|
|
902
|
-
kind: "wallet_recovery_redacted_registration_v1",
|
|
903
|
-
id: durableString(record.id, "recovery durable registration id"),
|
|
904
|
-
rawId: durableBase64Url(record.rawId, "recovery durable registration rawId"),
|
|
905
|
-
type: durableString(record.type, "recovery durable registration type"),
|
|
906
|
-
authenticatorAttachment: record.authenticatorAttachment,
|
|
907
|
-
response: {
|
|
908
|
-
clientDataJSON: durableBase64Url(responseRecord.clientDataJSON, "recovery durable registration clientDataJSON"),
|
|
909
|
-
attestationObject: durableBase64Url(responseRecord.attestationObject, "recovery durable registration attestationObject"),
|
|
910
|
-
transports: responseRecord.transports.map((transport, index) => durableString(transport, "recovery durable registration transports[" + index + "]"))
|
|
911
|
-
}
|
|
912
|
-
};
|
|
913
|
-
}
|
|
914
|
-
function parseWalletRecoveryDurableEnrollment(raw) {
|
|
915
|
-
const record = requireRecord(raw, "recovery durable Email OTP enrollment");
|
|
916
|
-
if (record.kind === "existing") {
|
|
917
|
-
durableExactFields(record, [
|
|
918
|
-
"kind",
|
|
919
|
-
"enrollmentId",
|
|
920
|
-
"enrollmentSealKeyVersion"
|
|
921
|
-
], "recovery durable existing Email OTP enrollment");
|
|
922
|
-
return {
|
|
923
|
-
kind: "existing",
|
|
924
|
-
enrollmentId: durableString(record.enrollmentId, "recovery enrollmentId"),
|
|
925
|
-
enrollmentSealKeyVersion: durableString(record.enrollmentSealKeyVersion, "recovery enrollment seal-key version")
|
|
926
|
-
};
|
|
927
|
-
}
|
|
928
|
-
if (record.kind !== "create") throw new Error("recovery durable Email OTP enrollment kind is invalid");
|
|
929
|
-
durableExactFields(record, [
|
|
930
|
-
"kind",
|
|
931
|
-
"enrollmentId",
|
|
932
|
-
"providerSubject",
|
|
933
|
-
"verifiedEmail",
|
|
934
|
-
"material"
|
|
935
|
-
], "recovery durable create Email OTP enrollment");
|
|
936
|
-
const material = requireRecord(record.material, "recovery durable enrollment material");
|
|
937
|
-
durableExactFields(material, [
|
|
938
|
-
"enrollmentSealKeyVersion",
|
|
939
|
-
"clientUnlockPublicKeyB64u",
|
|
940
|
-
"unlockKeyVersion",
|
|
941
|
-
"serverSealedFactorCiphertextB64u"
|
|
942
|
-
], "recovery durable enrollment material");
|
|
943
|
-
return {
|
|
944
|
-
kind: "create",
|
|
945
|
-
enrollmentId: durableString(record.enrollmentId, "recovery enrollmentId"),
|
|
946
|
-
providerSubject: durableString(record.providerSubject, "recovery enrollment providerSubject"),
|
|
947
|
-
verifiedEmail: durableString(record.verifiedEmail, "recovery enrollment verifiedEmail"),
|
|
948
|
-
material: {
|
|
949
|
-
enrollmentSealKeyVersion: durableString(material.enrollmentSealKeyVersion, "recovery enrollment material seal-key version"),
|
|
950
|
-
clientUnlockPublicKeyB64u: durableBase64Url(material.clientUnlockPublicKeyB64u, "recovery enrollment client unlock public key"),
|
|
951
|
-
unlockKeyVersion: durableString(material.unlockKeyVersion, "recovery enrollment unlock-key version"),
|
|
952
|
-
serverSealedFactorCiphertextB64u: durableBase64Url(material.serverSealedFactorCiphertextB64u, "recovery enrollment sealed factor ciphertext")
|
|
953
|
-
}
|
|
954
|
-
};
|
|
955
|
-
}
|
|
956
|
-
function parseWalletRecoveryDurablePayload(raw) {
|
|
957
|
-
const record = requireRecord(raw, "wallet recovery durable payload");
|
|
958
|
-
if (record.kind !== "wallet_recovery_durable_payload_v1" || record.version !== 1) throw new Error("wallet recovery durable payload version is invalid");
|
|
959
|
-
durableExactFields(record, [...PAYLOAD_COMMON_FIELDS, ...requireRecord(record.target, "wallet recovery durable target").kind === "passkey" ? [
|
|
960
|
-
"replacementId",
|
|
961
|
-
"challengeId",
|
|
962
|
-
"registration"
|
|
963
|
-
] : [
|
|
964
|
-
"providerSubject",
|
|
965
|
-
"verifiedEmail",
|
|
966
|
-
"emailHashHex",
|
|
967
|
-
"registrationAuthorityId",
|
|
968
|
-
"replacementId",
|
|
969
|
-
"enrollment"
|
|
970
|
-
]], "wallet recovery durable payload");
|
|
971
|
-
const recoveryOperationId = parseWalletRecoveryOperationId(record.recoveryOperationId);
|
|
972
|
-
const walletId = parseWalletId(record.walletId);
|
|
973
|
-
let reservationId;
|
|
974
|
-
try {
|
|
975
|
-
reservationId = parseRecoveryCodeReservationId(record.reservationId);
|
|
976
|
-
} catch (error) {
|
|
977
|
-
throw new Error("wallet recovery durable reservationId is invalid", { cause: error });
|
|
978
|
-
}
|
|
979
|
-
const targetDeviceId = parseDeviceId(record.targetDeviceId);
|
|
980
|
-
const targetAuthorityId = parseWalletAuthorityId(record.targetAuthorityId);
|
|
981
|
-
const targetWalletAuthMethodId = parseWalletAuthMethodId(record.targetWalletAuthMethodId);
|
|
982
|
-
if (!recoveryOperationId.ok || !walletId.ok || !targetDeviceId.ok || !targetAuthorityId.ok || !targetWalletAuthMethodId.ok) throw new Error("wallet recovery durable payload identity is invalid");
|
|
983
|
-
if (!Array.isArray(record.nearKeySets) || !Array.isArray(record.ecdsaKeySets)) throw new Error("wallet recovery durable key-set arrays are invalid");
|
|
984
|
-
const keyManifest = parseWalletRecoveryPreparationKeyManifest(record.keyManifest, String(walletId.value));
|
|
985
|
-
const nearKeySets = record.nearKeySets.map((keySet) => parseWalletRecoveryDurableNearKeySet(keySet, nearManifestEntryForKeySet(keyManifest, keySet)));
|
|
986
|
-
const ecdsaKeySets = record.ecdsaKeySets.map((keySet) => parseWalletRecoveryDurableEcdsaKeySet(keySet, ecdsaManifestEntryForKeySet(keyManifest, keySet)));
|
|
987
|
-
const keySetIds = [...nearKeySets.map((keySet) => keySet.keySetId), ...ecdsaKeySets.map((keySet) => keySet.entry.keySetId)];
|
|
988
|
-
if (new Set(keySetIds).size !== keySetIds.length) throw new Error("wallet recovery durable key-set ids are duplicated");
|
|
989
|
-
if (keyManifest.entries.length !== keySetIds.length || keyManifest.entries.some((entry) => !keySetIds.includes(entry.keySetId))) throw new Error("wallet recovery durable key-set manifest coverage is invalid");
|
|
990
|
-
const common = {
|
|
991
|
-
kind: "wallet_recovery_durable_payload_v1",
|
|
992
|
-
version: 1,
|
|
993
|
-
recoveryOperationId: recoveryOperationId.value,
|
|
994
|
-
walletId: walletId.value,
|
|
995
|
-
reservationId,
|
|
996
|
-
targetDeviceId: targetDeviceId.value,
|
|
997
|
-
targetAuthorityId: targetAuthorityId.value,
|
|
998
|
-
targetWalletAuthMethodId: targetWalletAuthMethodId.value,
|
|
999
|
-
replacementEnvelope: parsePasskeyCustodyEnvelopeRecord(record.replacementEnvelope, "wallet recovery durable replacementEnvelope"),
|
|
1000
|
-
keyManifest,
|
|
1001
|
-
nearKeySets,
|
|
1002
|
-
ecdsaKeySets
|
|
1003
|
-
};
|
|
1004
|
-
if (String(common.replacementEnvelope.walletId) !== String(walletId.value)) throw new Error("wallet recovery durable replacement envelope wallet changed");
|
|
1005
|
-
if (common.replacementEnvelope.ownership.kind !== "method_bound" || common.replacementEnvelope.ownership.walletAuthMethodId !== targetWalletAuthMethodId.value) throw new Error("wallet recovery durable replacement envelope method changed");
|
|
1006
|
-
for (const keySet of nearKeySets) if (keySet.binding.walletId !== String(walletId.value)) throw new Error("wallet recovery durable NEAR binding wallet changed");
|
|
1007
|
-
const target = requireRecord(record.target, "wallet recovery durable target");
|
|
1008
|
-
if (target.kind === "passkey") {
|
|
1009
|
-
durableExactFields(target, ["kind", "rpId"], "wallet recovery durable passkey target");
|
|
1010
|
-
const rpId = parseWebAuthnRpId(target.rpId);
|
|
1011
|
-
if (!rpId.ok) throw new Error("wallet recovery durable passkey RP ID is invalid");
|
|
1012
|
-
const registration = parseWalletRecoveryDurableRegistration(record.registration);
|
|
1013
|
-
if (registration.rawId !== common.replacementEnvelope.factor.credentialIdB64u) throw new Error("wallet recovery durable passkey registration identity changed");
|
|
1014
|
-
if (common.replacementEnvelope.factor.kind !== "passkey") throw new Error("wallet recovery durable passkey envelope factor is invalid");
|
|
1015
|
-
if (common.replacementEnvelope.factor.rpId !== rpId.value || common.replacementEnvelope.factor.credentialIdB64u !== registration.rawId) throw new Error("wallet recovery durable passkey envelope identity changed");
|
|
1016
|
-
const replacementId = durableString(record.replacementId, "wallet recovery durable replacementId");
|
|
1017
|
-
if (String(common.replacementEnvelope.envelopeId) !== replacementId) throw new Error("wallet recovery durable passkey envelope id changed");
|
|
1018
|
-
return {
|
|
1019
|
-
...common,
|
|
1020
|
-
target: {
|
|
1021
|
-
kind: "passkey",
|
|
1022
|
-
rpId: rpId.value
|
|
1023
|
-
},
|
|
1024
|
-
replacementId,
|
|
1025
|
-
challengeId: durableString(record.challengeId, "wallet recovery durable challengeId"),
|
|
1026
|
-
registration
|
|
1027
|
-
};
|
|
1028
|
-
}
|
|
1029
|
-
if (target.kind !== "google_email_otp") throw new Error("wallet recovery durable target kind is invalid");
|
|
1030
|
-
durableExactFields(target, ["kind"], "wallet recovery durable Email OTP target");
|
|
1031
|
-
const providerSubject = durableString(record.providerSubject, "wallet recovery providerSubject");
|
|
1032
|
-
if (!parseEmailOtpProviderUserId(providerSubject).ok) throw new Error("wallet recovery durable providerSubject is invalid");
|
|
1033
|
-
const verifiedEmail = durableString(record.verifiedEmail, "wallet recovery durable verifiedEmail");
|
|
1034
|
-
const emailHashHex = durableString(record.emailHashHex, "wallet recovery durable emailHashHex");
|
|
1035
|
-
if (!/^[0-9a-f]{64}$/.test(emailHashHex)) throw new Error("wallet recovery durable emailHashHex is invalid");
|
|
1036
|
-
const registrationAuthorityId = durableString(record.registrationAuthorityId, "wallet recovery durable registrationAuthorityId");
|
|
1037
|
-
const enrollment = parseWalletRecoveryDurableEnrollment(record.enrollment);
|
|
1038
|
-
if (common.replacementEnvelope.factor.kind !== "email_otp") throw new Error("wallet recovery durable Email OTP envelope factor is invalid");
|
|
1039
|
-
const enrollmentReference = enrollment.kind === "existing" ? {
|
|
1040
|
-
enrollmentId: enrollment.enrollmentId,
|
|
1041
|
-
enrollmentSealKeyVersion: enrollment.enrollmentSealKeyVersion
|
|
1042
|
-
} : {
|
|
1043
|
-
enrollmentId: enrollment.enrollmentId,
|
|
1044
|
-
enrollmentSealKeyVersion: enrollment.material.enrollmentSealKeyVersion
|
|
1045
|
-
};
|
|
1046
|
-
if (common.replacementEnvelope.factor.enrollmentId !== enrollmentReference.enrollmentId || common.replacementEnvelope.factor.enrollmentSealKeyVersion !== enrollmentReference.enrollmentSealKeyVersion) throw new Error("wallet recovery durable Email OTP envelope identity changed");
|
|
1047
|
-
if (enrollment.kind === "create" && (enrollment.providerSubject !== providerSubject || enrollment.verifiedEmail !== verifiedEmail)) throw new Error("wallet recovery durable Email OTP enrollment identity changed");
|
|
1048
|
-
const replacementId = durableString(record.replacementId, "wallet recovery durable replacementId");
|
|
1049
|
-
if (String(common.replacementEnvelope.envelopeId) !== replacementId) throw new Error("wallet recovery durable Email OTP envelope id changed");
|
|
1050
|
-
return {
|
|
1051
|
-
...common,
|
|
1052
|
-
target: { kind: "google_email_otp" },
|
|
1053
|
-
providerSubject,
|
|
1054
|
-
verifiedEmail,
|
|
1055
|
-
emailHashHex,
|
|
1056
|
-
registrationAuthorityId,
|
|
1057
|
-
replacementId,
|
|
1058
|
-
enrollment
|
|
1059
|
-
};
|
|
1060
|
-
}
|
|
1061
|
-
/**
|
|
1062
|
-
* Projects a parsed payload back onto the serialized wire shape the parser
|
|
1063
|
-
* accepts. Parsing enriches the key sets with manifest-derived facts (the
|
|
1064
|
-
* NEAR material binding, threshold session, and runtime scope; the ECDSA
|
|
1065
|
-
* manifest entry), so serializing the parsed record directly produces fields
|
|
1066
|
-
* the exact-field parser rejects on the next decrypt. The projection is
|
|
1067
|
-
* validated by the parser before it is returned, so an encrypt-time failure
|
|
1068
|
-
* surfaces immediately instead of stranding an undecodable journal record.
|
|
1069
|
-
*/
|
|
1070
|
-
function walletRecoveryDurablePayloadWireForm(payload) {
|
|
1071
|
-
const nearKeySets = payload.nearKeySets.map((keySet) => ({
|
|
1072
|
-
kind: keySet.kind,
|
|
1073
|
-
keySetId: keySet.keySetId,
|
|
1074
|
-
applicationBindingDigestB64u: keySet.binding.applicationBindingDigestB64u,
|
|
1075
|
-
registeredPublicKeyB64u: keySet.binding.registeredPublicKeyB64u,
|
|
1076
|
-
participantIds: keySet.binding.participantIds,
|
|
1077
|
-
stateEpoch: keySet.binding.stateEpoch,
|
|
1078
|
-
signingWorkerVerifyingShareB64u: keySet.binding.signingWorkerVerifyingShareB64u,
|
|
1079
|
-
materialActivation: keySet.materialActivation,
|
|
1080
|
-
sealed: keySet.sealed
|
|
1081
|
-
}));
|
|
1082
|
-
const ecdsaKeySets = payload.ecdsaKeySets.map((keySet) => ({
|
|
1083
|
-
kind: keySet.kind,
|
|
1084
|
-
keySetId: keySet.entry.keySetId,
|
|
1085
|
-
possessionProof: keySet.possessionProof,
|
|
1086
|
-
readyStateBlobB64u: keySet.readyStateBlobB64u,
|
|
1087
|
-
publicFacts: keySet.publicFacts
|
|
1088
|
-
}));
|
|
1089
|
-
const common = {
|
|
1090
|
-
kind: payload.kind,
|
|
1091
|
-
version: payload.version,
|
|
1092
|
-
recoveryOperationId: String(payload.recoveryOperationId),
|
|
1093
|
-
walletId: String(payload.walletId),
|
|
1094
|
-
reservationId: String(payload.reservationId),
|
|
1095
|
-
targetDeviceId: String(payload.targetDeviceId),
|
|
1096
|
-
targetAuthorityId: String(payload.targetAuthorityId),
|
|
1097
|
-
targetWalletAuthMethodId: String(payload.targetWalletAuthMethodId),
|
|
1098
|
-
replacementEnvelope: payload.replacementEnvelope,
|
|
1099
|
-
keyManifest: payload.keyManifest,
|
|
1100
|
-
nearKeySets,
|
|
1101
|
-
ecdsaKeySets
|
|
1102
|
-
};
|
|
1103
|
-
const wire = isDurablePasskeyPayload(payload) ? {
|
|
1104
|
-
...common,
|
|
1105
|
-
target: payload.target,
|
|
1106
|
-
replacementId: payload.replacementId,
|
|
1107
|
-
challengeId: payload.challengeId,
|
|
1108
|
-
registration: payload.registration
|
|
1109
|
-
} : {
|
|
1110
|
-
...common,
|
|
1111
|
-
target: payload.target,
|
|
1112
|
-
providerSubject: payload.providerSubject,
|
|
1113
|
-
verifiedEmail: payload.verifiedEmail,
|
|
1114
|
-
emailHashHex: payload.emailHashHex,
|
|
1115
|
-
registrationAuthorityId: payload.registrationAuthorityId,
|
|
1116
|
-
replacementId: payload.replacementId,
|
|
1117
|
-
enrollment: payload.enrollment
|
|
1118
|
-
};
|
|
1119
|
-
parseWalletRecoveryDurablePayload(wire);
|
|
1120
|
-
return wire;
|
|
1121
|
-
}
|
|
1122
|
-
async function validateWalletRecoveryDurablePayloadBindings(payload) {
|
|
1123
|
-
if (isDurablePasskeyPayload(payload)) return;
|
|
1124
|
-
const expectedEmailHashHex = await sha256HexUtf8(payload.verifiedEmail);
|
|
1125
|
-
if (payload.emailHashHex !== expectedEmailHashHex) throw new Error("wallet recovery durable email hash does not match verified email");
|
|
1126
|
-
if (payload.enrollment.kind === "create" && (payload.enrollment.providerSubject !== payload.providerSubject || payload.enrollment.verifiedEmail !== payload.verifiedEmail)) throw new Error("wallet recovery durable enrollment does not match Email OTP identity");
|
|
1127
|
-
}
|
|
1128
|
-
function durablePayloadIdentityTarget(payload) {
|
|
1129
|
-
if (isDurablePasskeyPayload(payload)) {
|
|
1130
|
-
const credentialIdB64u = parseWebAuthnCredentialIdB64u(payload.registration.rawId);
|
|
1131
|
-
if (!credentialIdB64u.ok) throw new Error("wallet recovery durable passkey credential id is invalid");
|
|
1132
|
-
return {
|
|
1133
|
-
kind: "passkey",
|
|
1134
|
-
rpId: payload.target.rpId,
|
|
1135
|
-
credentialIdB64u: credentialIdB64u.value
|
|
1136
|
-
};
|
|
1137
|
-
}
|
|
1138
|
-
const providerSubject = parseEmailOtpProviderUserId(payload.providerSubject);
|
|
1139
|
-
if (!providerSubject.ok) throw new Error("wallet recovery durable providerSubject is invalid");
|
|
1140
|
-
return {
|
|
1141
|
-
kind: "google_email_otp",
|
|
1142
|
-
providerSubject: providerSubject.value,
|
|
1143
|
-
emailHashHex: payload.emailHashHex,
|
|
1144
|
-
registrationAuthorityId: payload.registrationAuthorityId,
|
|
1145
|
-
enrollment: durableEmailEnrollmentReference(payload)
|
|
1146
|
-
};
|
|
1147
|
-
}
|
|
1148
|
-
function durableNearKeySetFromRecovered(recovered) {
|
|
1149
|
-
return {
|
|
1150
|
-
kind: "near_ed25519",
|
|
1151
|
-
keySetId: recovered.entry.keySetId,
|
|
1152
|
-
applicationBindingDigestB64u: recovered.localMaterial.applicationBindingDigestB64u,
|
|
1153
|
-
registeredPublicKeyB64u: base64UrlEncode(recovered.metadata.registeredPublicKey),
|
|
1154
|
-
participantIds: recovered.metadata.participantIds,
|
|
1155
|
-
stateEpoch: String(recovered.metadata.stateEpoch),
|
|
1156
|
-
signingWorkerVerifyingShareB64u: base64UrlEncode(recovered.metadata.signingWorkerVerifyingShare),
|
|
1157
|
-
materialActivation: routerAbMpcMaterialActivationRefToWire(recovered.metadata.materialActivation),
|
|
1158
|
-
sealed: {
|
|
1159
|
-
ciphertextB64u: recovered.localMaterial.b64u,
|
|
1160
|
-
nonceB64u: recovered.localMaterial.nonceB64u
|
|
1161
|
-
}
|
|
1162
|
-
};
|
|
1163
|
-
}
|
|
1164
|
-
function durableEcdsaKeySetFromRecovered(recovered) {
|
|
1165
|
-
return {
|
|
1166
|
-
kind: "evm_family_ecdsa",
|
|
1167
|
-
keySetId: recovered.entry.keySetId,
|
|
1168
|
-
possessionProof: parseWalletRecoveryEcdsaPossessionProofV1(recovered.activation.possessionProof),
|
|
1169
|
-
readyStateBlobB64u: recovered.readyStateBlobB64u,
|
|
1170
|
-
publicFacts: recovered.publicFacts
|
|
1171
|
-
};
|
|
1172
|
-
}
|
|
1173
|
-
function redactedRecoveryRegistration(registration) {
|
|
1174
|
-
return {
|
|
1175
|
-
kind: "wallet_recovery_redacted_registration_v1",
|
|
1176
|
-
id: registration.id,
|
|
1177
|
-
rawId: registration.rawId,
|
|
1178
|
-
type: registration.type,
|
|
1179
|
-
authenticatorAttachment: registration.authenticatorAttachment ?? null,
|
|
1180
|
-
response: {
|
|
1181
|
-
clientDataJSON: registration.response.clientDataJSON,
|
|
1182
|
-
attestationObject: registration.response.attestationObject,
|
|
1183
|
-
transports: [...registration.response.transports]
|
|
1184
|
-
}
|
|
1185
|
-
};
|
|
1186
|
-
}
|
|
1187
|
-
async function walletRecoveryDurablePayloadFromOperation(operation) {
|
|
1188
|
-
const common = {
|
|
1189
|
-
kind: "wallet_recovery_durable_payload_v1",
|
|
1190
|
-
version: 1,
|
|
1191
|
-
recoveryOperationId: String(operation.prepared.recoveryOperationId),
|
|
1192
|
-
walletId: operation.walletId,
|
|
1193
|
-
reservationId: operation.prepared.reservationId,
|
|
1194
|
-
targetDeviceId: operation.prepared.targetDeviceId,
|
|
1195
|
-
targetAuthorityId: operation.prepared.targetAuthorityId,
|
|
1196
|
-
targetWalletAuthMethodId: operation.prepared.targetWalletAuthMethodId,
|
|
1197
|
-
replacementEnvelope: parsePasskeyCustodyEnvelopeRecord(operation.recovered.replacementEnvelope, "wallet recovery durable replacement envelope"),
|
|
1198
|
-
keyManifest: {
|
|
1199
|
-
version: "wallet_recovery_preparation_key_manifest_v1",
|
|
1200
|
-
walletId: String(operation.walletId),
|
|
1201
|
-
entries: [...operation.recovered.nearKeySets.map((keySet) => keySet.entry), ...operation.recovered.ecdsaKeySets.map((keySet) => keySet.entry)]
|
|
1202
|
-
},
|
|
1203
|
-
nearKeySets: operation.recovered.nearKeySets.map(durableNearKeySetFromRecovered),
|
|
1204
|
-
ecdsaKeySets: operation.recovered.ecdsaKeySets.map(durableEcdsaKeySetFromRecovered)
|
|
1205
|
-
};
|
|
1206
|
-
if (operation.replacement.kind === "passkey") {
|
|
1207
|
-
if (operation.target.kind !== "passkey") throw new Error("wallet recovery durable payload branch is invalid");
|
|
1208
|
-
const registrationOptions = operation.prepared.registration;
|
|
1209
|
-
if (!registrationOptions) throw new Error("wallet recovery registration options are unavailable");
|
|
1210
|
-
const registration = redactedRecoveryRegistration(operation.replacement.registration);
|
|
1211
|
-
if (registration.rawId !== operation.replacement.credentialIdB64u) throw new Error("wallet recovery passkey registration rawId changed its credential identity");
|
|
1212
|
-
const payload = parseWalletRecoveryDurablePayload({
|
|
1213
|
-
...common,
|
|
1214
|
-
target: {
|
|
1215
|
-
kind: "passkey",
|
|
1216
|
-
rpId: operation.target.rpId
|
|
1217
|
-
},
|
|
1218
|
-
replacementId: registrationOptions.replacementId,
|
|
1219
|
-
challengeId: registrationOptions.challengeId,
|
|
1220
|
-
registration
|
|
1221
|
-
});
|
|
1222
|
-
await validateWalletRecoveryDurablePayloadBindings(payload);
|
|
1223
|
-
return payload;
|
|
1224
|
-
}
|
|
1225
|
-
if (operation.target.kind !== "google_email_otp") throw new Error("wallet recovery durable payload branch is invalid");
|
|
1226
|
-
const enrollment = operation.replacement.enrollment;
|
|
1227
|
-
if (operation.replacement.factor.walletAuthMethodId !== common.targetWalletAuthMethodId) throw new Error("wallet recovery Email OTP factor method changed its target identity");
|
|
1228
|
-
const emailHashHex = await sha256HexUtf8(operation.replacement.verifiedEmail);
|
|
1229
|
-
const payload = parseWalletRecoveryDurablePayload({
|
|
1230
|
-
...common,
|
|
1231
|
-
target: { kind: "google_email_otp" },
|
|
1232
|
-
enrollment,
|
|
1233
|
-
providerSubject: operation.replacement.providerSubject,
|
|
1234
|
-
verifiedEmail: operation.replacement.verifiedEmail,
|
|
1235
|
-
emailHashHex,
|
|
1236
|
-
registrationAuthorityId: operation.replacement.registrationAuthorityId,
|
|
1237
|
-
replacementId: operation.replacement.factor.replacementId
|
|
1238
|
-
});
|
|
1239
|
-
await validateWalletRecoveryDurablePayloadBindings(payload);
|
|
1240
|
-
return payload;
|
|
1241
|
-
}
|
|
1242
|
-
//#endregion
|
|
1243
|
-
//#region src/SeamsWeb/operations/recovery/walletRecoveryJournal.ts
|
|
1244
|
-
const WALLET_RECOVERY_DURABLE_PAYLOAD_AAD_KIND = "pending_wallet_recovery_commit_v1";
|
|
1245
|
-
const WALLET_RECOVERY_DURABLE_AES_GCM_IV_BYTES = 12;
|
|
1246
|
-
function walletRecoveryDurableAad(input) {
|
|
1247
|
-
return new TextEncoder().encode(alphabetizeStringify({
|
|
1248
|
-
kind: WALLET_RECOVERY_DURABLE_PAYLOAD_AAD_KIND,
|
|
1249
|
-
version: 1,
|
|
1250
|
-
...input
|
|
1251
|
-
}));
|
|
1252
|
-
}
|
|
1253
|
-
function durablePayloadAad(payload) {
|
|
1254
|
-
return walletRecoveryDurableAad({
|
|
1255
|
-
recoveryOperationId: payload.recoveryOperationId,
|
|
1256
|
-
walletId: payload.walletId,
|
|
1257
|
-
reservationId: payload.reservationId,
|
|
1258
|
-
targetDeviceId: payload.targetDeviceId,
|
|
1259
|
-
targetAuthorityId: payload.targetAuthorityId,
|
|
1260
|
-
targetWalletAuthMethodId: payload.targetWalletAuthMethodId,
|
|
1261
|
-
target: durablePayloadIdentityTarget(payload)
|
|
1262
|
-
});
|
|
1263
|
-
}
|
|
1264
|
-
async function encryptWalletRecoveryDurablePayload(payload) {
|
|
1265
|
-
const key = await crypto.subtle.generateKey({
|
|
1266
|
-
name: "AES-GCM",
|
|
1267
|
-
length: 256
|
|
1268
|
-
}, false, ["encrypt", "decrypt"]);
|
|
1269
|
-
if (!(key instanceof CryptoKey)) throw new Error("wallet recovery durable key generation failed");
|
|
1270
|
-
const iv = crypto.getRandomValues(new Uint8Array(WALLET_RECOVERY_DURABLE_AES_GCM_IV_BYTES));
|
|
1271
|
-
const plaintext = new TextEncoder().encode(JSON.stringify(walletRecoveryDurablePayloadWireForm(payload)));
|
|
1272
|
-
return {
|
|
1273
|
-
kind: "wallet_recovery_encrypted_material_v1",
|
|
1274
|
-
key,
|
|
1275
|
-
iv,
|
|
1276
|
-
ciphertext: new Uint8Array(await crypto.subtle.encrypt({
|
|
1277
|
-
name: "AES-GCM",
|
|
1278
|
-
iv,
|
|
1279
|
-
additionalData: durablePayloadAad(payload)
|
|
1280
|
-
}, key, plaintext))
|
|
1281
|
-
};
|
|
1282
|
-
}
|
|
1283
|
-
async function decryptWalletRecoveryDurablePayload(record) {
|
|
1284
|
-
const plaintext = await crypto.subtle.decrypt({
|
|
1285
|
-
name: "AES-GCM",
|
|
1286
|
-
iv: record.localMaterial.iv,
|
|
1287
|
-
additionalData: durablePayloadAadForPendingRecord(record)
|
|
1288
|
-
}, record.localMaterial.key, record.localMaterial.ciphertext);
|
|
1289
|
-
const payload = parseWalletRecoveryDurablePayload(JSON.parse(new TextDecoder().decode(plaintext)));
|
|
1290
|
-
await validateWalletRecoveryDurablePayloadBindings(payload);
|
|
1291
|
-
if (!pendingRecordMatchesDurablePayload(record, payload)) throw new Error("wallet recovery durable payload identity does not match its journal");
|
|
1292
|
-
return payload;
|
|
1293
|
-
}
|
|
1294
|
-
function durablePayloadAadForPendingRecord(record) {
|
|
1295
|
-
return walletRecoveryDurableAad({
|
|
1296
|
-
recoveryOperationId: record.recoveryOperationId,
|
|
1297
|
-
walletId: record.walletId,
|
|
1298
|
-
reservationId: record.reservationId,
|
|
1299
|
-
targetDeviceId: record.targetDeviceId,
|
|
1300
|
-
targetAuthorityId: record.targetAuthorityId,
|
|
1301
|
-
targetWalletAuthMethodId: record.targetWalletAuthMethodId,
|
|
1302
|
-
target: record.target
|
|
1303
|
-
});
|
|
1304
|
-
}
|
|
1305
|
-
function requireWalletRecoveryOperationId(value) {
|
|
1306
|
-
const parsed = parseWalletRecoveryOperationId(value);
|
|
1307
|
-
if (!parsed.ok) throw new Error("wallet recovery operation id is invalid");
|
|
1308
|
-
return parsed.value;
|
|
1309
|
-
}
|
|
1310
|
-
function pendingRecordMatchesDurablePayload(record, payload) {
|
|
1311
|
-
const common = {
|
|
1312
|
-
kind: "pending_wallet_recovery_commit_v1",
|
|
1313
|
-
version: 1,
|
|
1314
|
-
recoveryOperationId: requireWalletRecoveryOperationId(payload.recoveryOperationId),
|
|
1315
|
-
walletId: payload.walletId,
|
|
1316
|
-
reservationId: payload.reservationId,
|
|
1317
|
-
targetDeviceId: payload.targetDeviceId,
|
|
1318
|
-
targetAuthorityId: payload.targetAuthorityId,
|
|
1319
|
-
targetWalletAuthMethodId: payload.targetWalletAuthMethodId,
|
|
1320
|
-
localMaterial: record.localMaterial,
|
|
1321
|
-
createdAtMs: record.createdAtMs,
|
|
1322
|
-
updatedAtMs: record.updatedAtMs
|
|
1323
|
-
};
|
|
1324
|
-
const target = durablePayloadIdentityTarget(payload);
|
|
1325
|
-
if (record.stage === "awaiting_server_promotion") return pendingWalletRecoveryCommitIdentityMatches(record, {
|
|
1326
|
-
...common,
|
|
1327
|
-
stage: "awaiting_server_promotion",
|
|
1328
|
-
target
|
|
1329
|
-
});
|
|
1330
|
-
switch (target.kind) {
|
|
1331
|
-
case "passkey":
|
|
1332
|
-
if (record.projection.kind !== "passkey") return false;
|
|
1333
|
-
return pendingWalletRecoveryCommitIdentityMatches(record, {
|
|
1334
|
-
...common,
|
|
1335
|
-
stage: "server_promoted",
|
|
1336
|
-
target,
|
|
1337
|
-
projection: record.projection
|
|
1338
|
-
});
|
|
1339
|
-
case "google_email_otp":
|
|
1340
|
-
if (record.projection.kind !== "google_email_otp") return false;
|
|
1341
|
-
return pendingWalletRecoveryCommitIdentityMatches(record, {
|
|
1342
|
-
...common,
|
|
1343
|
-
stage: "server_promoted",
|
|
1344
|
-
target,
|
|
1345
|
-
projection: record.projection
|
|
1346
|
-
});
|
|
1347
|
-
}
|
|
1348
|
-
}
|
|
1349
|
-
function pendingWalletRecoveryCommonFromPayload(payload, localMaterial, createdAtMs, updatedAtMs) {
|
|
1350
|
-
return {
|
|
1351
|
-
kind: "pending_wallet_recovery_commit_v1",
|
|
1352
|
-
version: 1,
|
|
1353
|
-
recoveryOperationId: requireWalletRecoveryOperationId(payload.recoveryOperationId),
|
|
1354
|
-
walletId: payload.walletId,
|
|
1355
|
-
reservationId: payload.reservationId,
|
|
1356
|
-
targetDeviceId: payload.targetDeviceId,
|
|
1357
|
-
targetAuthorityId: payload.targetAuthorityId,
|
|
1358
|
-
targetWalletAuthMethodId: payload.targetWalletAuthMethodId,
|
|
1359
|
-
target: durablePayloadIdentityTarget(payload),
|
|
1360
|
-
localMaterial,
|
|
1361
|
-
createdAtMs,
|
|
1362
|
-
updatedAtMs
|
|
1363
|
-
};
|
|
1364
|
-
}
|
|
1365
|
-
function awaitingPendingWalletRecoveryCommit(payload, localMaterial, nowMs = Date.now()) {
|
|
1366
|
-
return {
|
|
1367
|
-
...pendingWalletRecoveryCommonFromPayload(payload, localMaterial, nowMs, nowMs),
|
|
1368
|
-
stage: "awaiting_server_promotion"
|
|
1369
|
-
};
|
|
1370
|
-
}
|
|
1371
|
-
function promotedPendingWalletRecoveryCommit(awaiting, payload, projection, nowMs = Date.now()) {
|
|
1372
|
-
const common = pendingWalletRecoveryCommonFromPayload(payload, awaiting.localMaterial, awaiting.createdAtMs, Math.max(nowMs, awaiting.createdAtMs + 1));
|
|
1373
|
-
if (isDurablePasskeyPayload(payload)) {
|
|
1374
|
-
if (projection.kind !== "passkey") throw new Error("wallet recovery promotion projection branch changed");
|
|
1375
|
-
return {
|
|
1376
|
-
...common,
|
|
1377
|
-
stage: "server_promoted",
|
|
1378
|
-
target: durablePayloadIdentityTarget(payload),
|
|
1379
|
-
projection
|
|
1380
|
-
};
|
|
1381
|
-
}
|
|
1382
|
-
if (projection.kind !== "google_email_otp") throw new Error("wallet recovery promotion projection branch changed");
|
|
1383
|
-
return {
|
|
1384
|
-
...common,
|
|
1385
|
-
stage: "server_promoted",
|
|
1386
|
-
target: durablePayloadIdentityTarget(payload),
|
|
1387
|
-
projection
|
|
1388
|
-
};
|
|
1389
|
-
}
|
|
1390
|
-
//#endregion
|
|
1391
|
-
//#region src/core/rpcClients/relayer/walletRecoveryGoogleEmailOtp.ts
|
|
1392
|
-
const GOOGLE_VERIFY_PATH = "/wallets/recovery/google/verify";
|
|
1393
|
-
const EMAIL_OTP_VERIFY_PATH = "/wallets/recovery/email-otp/verify";
|
|
1394
|
-
const GOOGLE_EMAIL_OTP_FINALIZE_PATH = "/wallets/recovery/google-email-otp/finalize";
|
|
1395
|
-
async function verifyWalletRecoveryGoogle(args) {
|
|
1396
|
-
const response = await postRecoveryJson(args, GOOGLE_VERIFY_PATH, {
|
|
1397
|
-
recoveryOperationId: args.recoveryOperationId,
|
|
1398
|
-
reservationId: args.reservationId,
|
|
1399
|
-
idToken: args.idToken
|
|
1400
|
-
});
|
|
1401
|
-
if (!response.ok) return response.failure;
|
|
1402
|
-
try {
|
|
1403
|
-
const body = decodeWalletRecoveryGoogleVerifyResponse(response.body);
|
|
1404
|
-
const identity = parseRecoveryResponseIdentity(body, args);
|
|
1405
|
-
const challengeId = requireParsed(parseEmailOtpChallengeId(body.challengeId));
|
|
1406
|
-
const expiresAtMs = Number(body.expiresAtMs);
|
|
1407
|
-
if (!Number.isSafeInteger(expiresAtMs) || expiresAtMs <= 0) throw new Error("invalid expiry");
|
|
1408
|
-
return {
|
|
1409
|
-
kind: "verified",
|
|
1410
|
-
...identity,
|
|
1411
|
-
challengeId,
|
|
1412
|
-
delivery: parseEmailOtpChallengeDelivery(body.delivery, "walletRecoveryGoogleVerify.delivery"),
|
|
1413
|
-
expiresAtMs
|
|
1414
|
-
};
|
|
1415
|
-
} catch {
|
|
1416
|
-
return { kind: "transport_uncertain" };
|
|
1417
|
-
}
|
|
1418
|
-
}
|
|
1419
|
-
async function verifyWalletRecoveryEmailOtp(args) {
|
|
1420
|
-
const response = await postRecoveryJson(args, EMAIL_OTP_VERIFY_PATH, {
|
|
1421
|
-
recoveryOperationId: args.recoveryOperationId,
|
|
1422
|
-
reservationId: args.reservationId,
|
|
1423
|
-
challengeId: args.challengeId,
|
|
1424
|
-
otpCode: args.otpCode
|
|
1425
|
-
});
|
|
1426
|
-
if (!response.ok) return response.failure;
|
|
1427
|
-
try {
|
|
1428
|
-
const body = decodeWalletRecoveryEmailOtpVerifyResponse(response.body);
|
|
1429
|
-
const identity = parseRecoveryResponseIdentity(body, args);
|
|
1430
|
-
const challengeId = requireParsed(parseEmailOtpChallengeId(body.challengeId));
|
|
1431
|
-
if (challengeId !== args.challengeId) throw new Error("challenge changed");
|
|
1432
|
-
return {
|
|
1433
|
-
kind: "verified",
|
|
1434
|
-
...identity,
|
|
1435
|
-
challengeId
|
|
1436
|
-
};
|
|
1437
|
-
} catch {
|
|
1438
|
-
return { kind: "transport_uncertain" };
|
|
1439
|
-
}
|
|
1440
|
-
}
|
|
1441
|
-
async function finalizeWalletRecoveryGoogleEmailOtp(args) {
|
|
1442
|
-
let replacementEnvelope;
|
|
1443
|
-
let ecdsaMaterialPossessionProofs;
|
|
1444
|
-
try {
|
|
1445
|
-
replacementEnvelope = parsePasskeyCustodyEnvelopeRecord(args.replacementEnvelope, "walletRecoveryGoogleEmailOtpFinalize.replacementEnvelope");
|
|
1446
|
-
if (replacementEnvelope.factor.kind !== "email_otp") throw new Error("wrong factor");
|
|
1447
|
-
ecdsaMaterialPossessionProofs = args.ecdsaMaterialPossessionProofs.map((entry) => ({
|
|
1448
|
-
keySetId: entry.keySetId,
|
|
1449
|
-
proof: parseWalletRecoveryEcdsaPossessionProofV1(entry.proof)
|
|
1450
|
-
}));
|
|
1451
|
-
} catch {
|
|
1452
|
-
return { kind: "refused" };
|
|
1453
|
-
}
|
|
1454
|
-
const response = await postRecoveryJson(args, GOOGLE_EMAIL_OTP_FINALIZE_PATH, {
|
|
1455
|
-
kind: "finalize",
|
|
1456
|
-
recoveryOperationId: args.recoveryOperationId,
|
|
1457
|
-
reservationId: args.reservationId,
|
|
1458
|
-
replacementEnvelope,
|
|
1459
|
-
ecdsaMaterialPossessionProofs,
|
|
1460
|
-
...args.emailOtpEnrollment ? { emailOtpEnrollment: args.emailOtpEnrollment } : {}
|
|
1461
|
-
});
|
|
1462
|
-
if (!response.ok) return response.failure;
|
|
1463
|
-
try {
|
|
1464
|
-
const projection = await parseWalletRecoveryCommittedProjectionV1(decodeWalletRecoveryProjectionResponse(response.body, "walletRecoveryGoogleEmailOtpFinalize").projection, buildGoogleEmailOtpProjectionExpectation(args, replacementEnvelope));
|
|
1465
|
-
if (projection.kind !== "google_email_otp") throw new Error("recovery projection branch changed");
|
|
1466
|
-
return {
|
|
1467
|
-
kind: "promoted",
|
|
1468
|
-
storeVersion: projection.storeVersion,
|
|
1469
|
-
authority: projection.authority,
|
|
1470
|
-
authMethod: projection.authMethod
|
|
1471
|
-
};
|
|
1472
|
-
} catch {
|
|
1473
|
-
return { kind: "transport_uncertain" };
|
|
1474
|
-
}
|
|
1475
|
-
}
|
|
1476
|
-
/** Replays an already-committed Email OTP recovery without an OTP or factor. */
|
|
1477
|
-
async function replayWalletRecoveryGoogleEmailOtp(args) {
|
|
1478
|
-
let replacementEnvelope;
|
|
1479
|
-
try {
|
|
1480
|
-
replacementEnvelope = parsePasskeyCustodyEnvelopeRecord(args.replacementEnvelope, "walletRecoveryGoogleEmailOtpReplay.replacementEnvelope");
|
|
1481
|
-
if (replacementEnvelope.factor.kind !== "email_otp" || String(replacementEnvelope.walletId) !== String(args.walletId)) throw new Error("recovery replay envelope identity is invalid");
|
|
1482
|
-
} catch {
|
|
1483
|
-
return { kind: "refused" };
|
|
1484
|
-
}
|
|
1485
|
-
const response = await postRecoveryJson(args, GOOGLE_EMAIL_OTP_FINALIZE_PATH, {
|
|
1486
|
-
kind: "replay",
|
|
1487
|
-
recoveryOperationId: args.recoveryOperationId,
|
|
1488
|
-
reservationId: args.reservationId,
|
|
1489
|
-
replacementEnvelope
|
|
1490
|
-
});
|
|
1491
|
-
if (!response.ok) return response.failure;
|
|
1492
|
-
try {
|
|
1493
|
-
const projection = await parseWalletRecoveryCommittedProjectionV1(decodeWalletRecoveryProjectionResponse(response.body, "walletRecoveryGoogleEmailOtpReplay").projection, buildGoogleEmailOtpProjectionExpectation(args, replacementEnvelope));
|
|
1494
|
-
if (projection.kind !== "google_email_otp") throw new Error("recovery projection branch changed");
|
|
1495
|
-
return {
|
|
1496
|
-
kind: "promoted",
|
|
1497
|
-
storeVersion: projection.storeVersion,
|
|
1498
|
-
authority: projection.authority,
|
|
1499
|
-
authMethod: projection.authMethod
|
|
1500
|
-
};
|
|
1501
|
-
} catch {
|
|
1502
|
-
return { kind: "transport_uncertain" };
|
|
1503
|
-
}
|
|
1504
|
-
}
|
|
1505
|
-
async function postRecoveryJson(args, path, body) {
|
|
1506
|
-
let response;
|
|
1507
|
-
try {
|
|
1508
|
-
response = await (args.fetchImpl ?? fetch)(`${normalizeRelayerBaseUrl(args.relayUrl)}${path}`, buildRelayerJsonPostRequestInit({ body }));
|
|
1509
|
-
} catch {
|
|
1510
|
-
return {
|
|
1511
|
-
ok: false,
|
|
1512
|
-
failure: { kind: "transport_uncertain" }
|
|
1513
|
-
};
|
|
1514
|
-
}
|
|
1515
|
-
const responseBody = await response.json().catch(() => void 0);
|
|
1516
|
-
if (response.status === 200) return {
|
|
1517
|
-
ok: true,
|
|
1518
|
-
body: responseBody
|
|
1519
|
-
};
|
|
1520
|
-
if (response.status === 409 || response.status === 429) return {
|
|
1521
|
-
ok: false,
|
|
1522
|
-
failure: { kind: "retryable_conflict" }
|
|
1523
|
-
};
|
|
1524
|
-
if (response.status === 400 || response.status === 401) return {
|
|
1525
|
-
ok: false,
|
|
1526
|
-
failure: { kind: "refused" }
|
|
1527
|
-
};
|
|
1528
|
-
return {
|
|
1529
|
-
ok: false,
|
|
1530
|
-
failure: { kind: "transport_uncertain" }
|
|
1531
|
-
};
|
|
1532
|
-
}
|
|
1533
|
-
function parseRecoveryResponseIdentity(body, expected) {
|
|
1534
|
-
const recoveryOperationId = requireParsed(parseWalletRecoveryOperationId(body.recoveryOperationId));
|
|
1535
|
-
const reservationId = parseRecoveryCodeReservationId(body.reservationId);
|
|
1536
|
-
if (recoveryOperationId !== expected.recoveryOperationId || reservationId !== expected.reservationId) throw new Error("recovery operation identity changed");
|
|
1537
|
-
return {
|
|
1538
|
-
recoveryOperationId,
|
|
1539
|
-
reservationId
|
|
1540
|
-
};
|
|
1541
|
-
}
|
|
1542
|
-
function decodeWalletRecoveryGoogleVerifyResponse(value) {
|
|
1543
|
-
const response = requireExactJsonResponse(value, [
|
|
1544
|
-
"ok",
|
|
1545
|
-
"recoveryOperationId",
|
|
1546
|
-
"reservationId",
|
|
1547
|
-
"challengeId",
|
|
1548
|
-
"delivery",
|
|
1549
|
-
"expiresAtMs"
|
|
1550
|
-
], "walletRecoveryGoogleVerify");
|
|
1551
|
-
requireSuccessfulResponse(response, "walletRecoveryGoogleVerify");
|
|
1552
|
-
return {
|
|
1553
|
-
recoveryOperationId: readResponseField(response, "recoveryOperationId"),
|
|
1554
|
-
reservationId: readResponseField(response, "reservationId"),
|
|
1555
|
-
challengeId: readResponseField(response, "challengeId"),
|
|
1556
|
-
delivery: readResponseField(response, "delivery"),
|
|
1557
|
-
expiresAtMs: readResponseField(response, "expiresAtMs")
|
|
1558
|
-
};
|
|
1559
|
-
}
|
|
1560
|
-
function decodeWalletRecoveryEmailOtpVerifyResponse(value) {
|
|
1561
|
-
const response = requireExactJsonResponse(value, [
|
|
1562
|
-
"ok",
|
|
1563
|
-
"recoveryOperationId",
|
|
1564
|
-
"reservationId",
|
|
1565
|
-
"challengeId"
|
|
1566
|
-
], "walletRecoveryEmailOtpVerify");
|
|
1567
|
-
requireSuccessfulResponse(response, "walletRecoveryEmailOtpVerify");
|
|
1568
|
-
return {
|
|
1569
|
-
recoveryOperationId: readResponseField(response, "recoveryOperationId"),
|
|
1570
|
-
reservationId: readResponseField(response, "reservationId"),
|
|
1571
|
-
challengeId: readResponseField(response, "challengeId")
|
|
1572
|
-
};
|
|
1573
|
-
}
|
|
1574
|
-
function decodeWalletRecoveryProjectionResponse(value, label) {
|
|
1575
|
-
const response = requireExactJsonResponse(value, ["ok", "projection"], label);
|
|
1576
|
-
requireSuccessfulResponse(response, label);
|
|
1577
|
-
return { projection: readResponseField(response, "projection") };
|
|
1578
|
-
}
|
|
1579
|
-
function requireExactJsonResponse(value, fields, label) {
|
|
1580
|
-
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error(`${label} must be a JSON object`);
|
|
1581
|
-
const prototype = Object.getPrototypeOf(value);
|
|
1582
|
-
if (prototype !== Object.prototype && prototype !== null) throw new Error(`${label} must be a plain JSON object`);
|
|
1583
|
-
const keys = Object.keys(value);
|
|
1584
|
-
if (keys.length !== fields.length || !hasExactResponseFields(keys, fields)) throw new Error(`${label} has an unexpected response shape`);
|
|
1585
|
-
return value;
|
|
1586
|
-
}
|
|
1587
|
-
function hasExactResponseFields(keys, fields) {
|
|
1588
|
-
for (const field of fields) if (!keys.includes(field)) return false;
|
|
1589
|
-
return true;
|
|
1590
|
-
}
|
|
1591
|
-
function requireSuccessfulResponse(value, label) {
|
|
1592
|
-
if (readResponseField(value, "ok") !== true) throw new Error(`${label} did not succeed`);
|
|
1593
|
-
}
|
|
1594
|
-
function readResponseField(value, field) {
|
|
1595
|
-
const descriptor = Object.getOwnPropertyDescriptor(value, field);
|
|
1596
|
-
if (!descriptor || !("value" in descriptor)) throw new Error(`response field ${field} is missing`);
|
|
1597
|
-
return descriptor.value;
|
|
1598
|
-
}
|
|
1599
|
-
function requireParsed(result) {
|
|
1600
|
-
if (!result.ok) throw new Error("invalid domain identity");
|
|
1601
|
-
return result.value;
|
|
1602
|
-
}
|
|
1603
|
-
function requireString(value) {
|
|
1604
|
-
if (typeof value !== "string" || !value.trim()) throw new Error("value must be a string");
|
|
1605
|
-
return value.trim();
|
|
1606
|
-
}
|
|
1607
|
-
function buildGoogleEmailOtpProjectionExpectation(args, replacementEnvelope) {
|
|
1608
|
-
if (replacementEnvelope.factor.kind !== "email_otp") throw new Error("replacement envelope is not an Email OTP envelope");
|
|
1609
|
-
return {
|
|
1610
|
-
kind: "google_email_otp",
|
|
1611
|
-
walletId: args.walletId,
|
|
1612
|
-
recoveryOperationId: args.recoveryOperationId,
|
|
1613
|
-
targetDeviceId: args.targetDeviceId,
|
|
1614
|
-
targetAuthorityId: args.targetAuthorityId,
|
|
1615
|
-
targetWalletAuthMethodId: args.targetWalletAuthMethodId,
|
|
1616
|
-
providerSubject: requireParsed(parseEmailOtpProviderUserId(args.expectedProviderSubject)),
|
|
1617
|
-
emailHashHex: requireEmailHash(args.expectedEmailHashHex),
|
|
1618
|
-
registrationAuthorityId: requireString(args.expectedRegistrationAuthorityId),
|
|
1619
|
-
enrollment: {
|
|
1620
|
-
kind: "email_otp_enrollment_reference_v1",
|
|
1621
|
-
enrollmentId: requireString(replacementEnvelope.factor.enrollmentId),
|
|
1622
|
-
enrollmentSealKeyVersion: requireString(replacementEnvelope.factor.enrollmentSealKeyVersion)
|
|
1623
|
-
}
|
|
1624
|
-
};
|
|
1625
|
-
}
|
|
1626
|
-
function requireEmailHash(value) {
|
|
1627
|
-
const hash = requireString(value);
|
|
1628
|
-
if (!/^[0-9a-f]{64}$/.test(hash)) throw new Error("email hash is invalid");
|
|
1629
|
-
return hash;
|
|
1630
|
-
}
|
|
1631
|
-
//#endregion
|
|
1632
|
-
//#region src/SeamsWeb/operations/recovery/walletRecoveryCommit.ts
|
|
1633
|
-
async function sameWalletRecoveryCommittedProjectionV1(left, right) {
|
|
1634
|
-
if (left.version !== right.version || left.storeVersion !== right.storeVersion || left.walletId !== right.walletId || left.recoveryOperationId !== right.recoveryOperationId || left.targetDeviceId !== right.targetDeviceId || left.targetAuthorityId !== right.targetAuthorityId || left.targetWalletAuthMethodId !== right.targetWalletAuthMethodId || !await sameVerifiedActiveWalletAuthorityV1(left.authority, right.authority) || !sameWalletAuthMethodRecordV2(left.authMethod, right.authMethod)) return false;
|
|
1635
|
-
if (left.kind !== right.kind) return false;
|
|
1636
|
-
switch (left.kind) {
|
|
1637
|
-
case "passkey":
|
|
1638
|
-
if (right.kind !== "passkey") return false;
|
|
1639
|
-
return left.target.kind === right.target.kind && left.target.rpId === right.target.rpId && left.target.credentialIdB64u === right.target.credentialIdB64u;
|
|
1640
|
-
case "google_email_otp":
|
|
1641
|
-
if (right.kind !== "google_email_otp") return false;
|
|
1642
|
-
return left.target.kind === right.target.kind && left.target.provider === right.target.provider && left.target.providerSubject === right.target.providerSubject && left.target.emailHashHex === right.target.emailHashHex && left.target.registrationAuthorityId === right.target.registrationAuthorityId && left.target.enrollment.kind === right.target.enrollment.kind && left.target.enrollment.enrollmentId === right.target.enrollment.enrollmentId && left.target.enrollment.enrollmentSealKeyVersion === right.target.enrollment.enrollmentSealKeyVersion;
|
|
1643
|
-
default: return assertNeverWalletRecoveryProjection(left);
|
|
1644
|
-
}
|
|
1645
|
-
}
|
|
1646
|
-
function assertNeverWalletRecoveryProjection(value) {
|
|
1647
|
-
throw new Error(`unsupported wallet recovery projection: ${String(value)}`);
|
|
1648
|
-
}
|
|
1649
|
-
function committedProjectionFromPromotion(input) {
|
|
1650
|
-
const recoveryOperationId = requireWalletRecoveryOperationId(input.payload.recoveryOperationId);
|
|
1651
|
-
switch (input.kind) {
|
|
1652
|
-
case "passkey": return buildWalletRecoveryCommittedProjectionV1({
|
|
1653
|
-
kind: "passkey",
|
|
1654
|
-
storeVersion: input.promotion.storeVersion,
|
|
1655
|
-
walletId: input.payload.walletId,
|
|
1656
|
-
recoveryOperationId,
|
|
1657
|
-
targetDeviceId: input.payload.targetDeviceId,
|
|
1658
|
-
targetAuthorityId: input.payload.targetAuthorityId,
|
|
1659
|
-
targetWalletAuthMethodId: input.payload.targetWalletAuthMethodId,
|
|
1660
|
-
authority: input.promotion.authority,
|
|
1661
|
-
authMethod: input.promotion.authMethod
|
|
1662
|
-
});
|
|
1663
|
-
case "google_email_otp": {
|
|
1664
|
-
const providerSubject = parseEmailOtpProviderUserId(input.payload.providerSubject);
|
|
1665
|
-
if (!providerSubject.ok) throw new Error("wallet recovery provider subject is invalid");
|
|
1666
|
-
return buildWalletRecoveryCommittedProjectionV1({
|
|
1667
|
-
kind: "google_email_otp",
|
|
1668
|
-
storeVersion: input.promotion.storeVersion,
|
|
1669
|
-
walletId: input.payload.walletId,
|
|
1670
|
-
recoveryOperationId,
|
|
1671
|
-
targetDeviceId: input.payload.targetDeviceId,
|
|
1672
|
-
targetAuthorityId: input.payload.targetAuthorityId,
|
|
1673
|
-
targetWalletAuthMethodId: input.payload.targetWalletAuthMethodId,
|
|
1674
|
-
authority: input.promotion.authority,
|
|
1675
|
-
authMethod: input.promotion.authMethod,
|
|
1676
|
-
providerSubject: providerSubject.value,
|
|
1677
|
-
emailHashHex: input.payload.emailHashHex,
|
|
1678
|
-
registrationAuthorityId: input.payload.registrationAuthorityId,
|
|
1679
|
-
enrollment: durableEmailEnrollmentReference(input.payload)
|
|
1680
|
-
});
|
|
1681
|
-
}
|
|
1682
|
-
}
|
|
1683
|
-
}
|
|
1684
|
-
function ecdsaPossessionProofs(payload) {
|
|
1685
|
-
return payload.ecdsaKeySets.map((keySet) => ({
|
|
1686
|
-
keySetId: keySet.entry.keySetId,
|
|
1687
|
-
proof: keySet.possessionProof
|
|
1688
|
-
}));
|
|
1689
|
-
}
|
|
1690
|
-
function webAuthnRegistrationFromPayload(payload) {
|
|
1691
|
-
return {
|
|
1692
|
-
id: payload.registration.id,
|
|
1693
|
-
rawId: payload.registration.rawId,
|
|
1694
|
-
type: payload.registration.type,
|
|
1695
|
-
authenticatorAttachment: payload.registration.authenticatorAttachment ?? void 0,
|
|
1696
|
-
response: {
|
|
1697
|
-
clientDataJSON: payload.registration.response.clientDataJSON,
|
|
1698
|
-
attestationObject: payload.registration.response.attestationObject,
|
|
1699
|
-
transports: [...payload.registration.response.transports]
|
|
1700
|
-
},
|
|
1701
|
-
clientExtensionResults: { prf: { results: {
|
|
1702
|
-
first: void 0,
|
|
1703
|
-
second: void 0
|
|
1704
|
-
} } }
|
|
1705
|
-
};
|
|
1706
|
-
}
|
|
1707
|
-
async function finalizeAwaitingCommit(input) {
|
|
1708
|
-
const { payload } = input;
|
|
1709
|
-
if (isDurablePasskeyPayload(payload)) {
|
|
1710
|
-
const promotion = await finalizeWalletRecovery({
|
|
1711
|
-
relayUrl: input.relayUrl,
|
|
1712
|
-
walletId: String(payload.walletId),
|
|
1713
|
-
reservationId: String(payload.reservationId),
|
|
1714
|
-
recoveryOperationId: requireWalletRecoveryOperationId(payload.recoveryOperationId),
|
|
1715
|
-
targetDeviceId: String(payload.targetDeviceId),
|
|
1716
|
-
targetAuthorityId: String(payload.targetAuthorityId),
|
|
1717
|
-
targetWalletAuthMethodId: String(payload.targetWalletAuthMethodId),
|
|
1718
|
-
challengeId: payload.challengeId,
|
|
1719
|
-
replacementId: payload.replacementId,
|
|
1720
|
-
webauthnRegistration: webAuthnRegistrationFromPayload(payload),
|
|
1721
|
-
replacementEnvelope: payload.replacementEnvelope,
|
|
1722
|
-
ecdsaMaterialPossessionProofs: ecdsaPossessionProofs(payload),
|
|
1723
|
-
fetchImpl: input.fetchImpl
|
|
1724
|
-
});
|
|
1725
|
-
if (promotion.kind !== "promoted") return promotion;
|
|
1726
|
-
return {
|
|
1727
|
-
kind: "passkey",
|
|
1728
|
-
payload,
|
|
1729
|
-
promotion
|
|
1730
|
-
};
|
|
1731
|
-
}
|
|
1732
|
-
const promotion = await finalizeWalletRecoveryGoogleEmailOtp({
|
|
1733
|
-
relayUrl: input.relayUrl,
|
|
1734
|
-
recoveryOperationId: requireWalletRecoveryOperationId(payload.recoveryOperationId),
|
|
1735
|
-
reservationId: payload.reservationId,
|
|
1736
|
-
walletId: payload.walletId,
|
|
1737
|
-
targetDeviceId: payload.targetDeviceId,
|
|
1738
|
-
targetAuthorityId: payload.targetAuthorityId,
|
|
1739
|
-
targetWalletAuthMethodId: payload.targetWalletAuthMethodId,
|
|
1740
|
-
expectedProviderSubject: payload.providerSubject,
|
|
1741
|
-
expectedEmailHashHex: payload.emailHashHex,
|
|
1742
|
-
expectedRegistrationAuthorityId: payload.registrationAuthorityId,
|
|
1743
|
-
replacementEnvelope: payload.replacementEnvelope,
|
|
1744
|
-
ecdsaMaterialPossessionProofs: ecdsaPossessionProofs(payload),
|
|
1745
|
-
emailOtpEnrollment: emailOtpEnrollmentMaterial(payload.enrollment),
|
|
1746
|
-
fetchImpl: input.fetchImpl
|
|
1747
|
-
});
|
|
1748
|
-
if (promotion.kind !== "promoted") return promotion;
|
|
1749
|
-
return {
|
|
1750
|
-
kind: "google_email_otp",
|
|
1751
|
-
payload,
|
|
1752
|
-
promotion
|
|
1753
|
-
};
|
|
1754
|
-
}
|
|
1755
|
-
function emailOtpEnrollmentMaterial(enrollment) {
|
|
1756
|
-
return enrollment.kind === "create" ? {
|
|
1757
|
-
kind: "create",
|
|
1758
|
-
material: enrollment.material
|
|
1759
|
-
} : null;
|
|
1760
|
-
}
|
|
1761
|
-
async function replayPromotedCommit(input) {
|
|
1762
|
-
const { payload } = input;
|
|
1763
|
-
if (isDurablePasskeyPayload(payload)) {
|
|
1764
|
-
const promotion = await replayWalletRecovery({
|
|
1765
|
-
relayUrl: input.relayUrl,
|
|
1766
|
-
walletId: String(payload.walletId),
|
|
1767
|
-
reservationId: String(payload.reservationId),
|
|
1768
|
-
recoveryOperationId: requireWalletRecoveryOperationId(payload.recoveryOperationId),
|
|
1769
|
-
targetDeviceId: String(payload.targetDeviceId),
|
|
1770
|
-
targetAuthorityId: String(payload.targetAuthorityId),
|
|
1771
|
-
targetWalletAuthMethodId: String(payload.targetWalletAuthMethodId),
|
|
1772
|
-
replacementId: payload.replacementId,
|
|
1773
|
-
replacementEnvelope: payload.replacementEnvelope,
|
|
1774
|
-
fetchImpl: input.fetchImpl
|
|
1775
|
-
});
|
|
1776
|
-
if (promotion.kind !== "promoted") return promotion;
|
|
1777
|
-
return {
|
|
1778
|
-
kind: "passkey",
|
|
1779
|
-
payload,
|
|
1780
|
-
promotion
|
|
1781
|
-
};
|
|
1782
|
-
}
|
|
1783
|
-
const promotion = await replayWalletRecoveryGoogleEmailOtp({
|
|
1784
|
-
relayUrl: input.relayUrl,
|
|
1785
|
-
recoveryOperationId: requireWalletRecoveryOperationId(payload.recoveryOperationId),
|
|
1786
|
-
reservationId: payload.reservationId,
|
|
1787
|
-
walletId: payload.walletId,
|
|
1788
|
-
targetDeviceId: payload.targetDeviceId,
|
|
1789
|
-
targetAuthorityId: payload.targetAuthorityId,
|
|
1790
|
-
targetWalletAuthMethodId: payload.targetWalletAuthMethodId,
|
|
1791
|
-
expectedProviderSubject: payload.providerSubject,
|
|
1792
|
-
expectedEmailHashHex: payload.emailHashHex,
|
|
1793
|
-
expectedRegistrationAuthorityId: payload.registrationAuthorityId,
|
|
1794
|
-
replacementEnvelope: payload.replacementEnvelope,
|
|
1795
|
-
fetchImpl: input.fetchImpl
|
|
1796
|
-
});
|
|
1797
|
-
if (promotion.kind !== "promoted") return promotion;
|
|
1798
|
-
return {
|
|
1799
|
-
kind: "google_email_otp",
|
|
1800
|
-
payload,
|
|
1801
|
-
promotion
|
|
1802
|
-
};
|
|
1803
|
-
}
|
|
1804
|
-
function isWalletRecoveryCommitPromotion(value) {
|
|
1805
|
-
return value.kind === "passkey" || value.kind === "google_email_otp";
|
|
1806
|
-
}
|
|
1807
|
-
async function resumeAwaitingCommit(input) {
|
|
1808
|
-
const replay = await replayPromotedCommit(input);
|
|
1809
|
-
if (isWalletRecoveryCommitPromotion(replay) || replay.kind !== "refused") return replay;
|
|
1810
|
-
return await finalizeAwaitingCommit(input);
|
|
1811
|
-
}
|
|
1812
|
-
function passkeyAuthority(payload, projection) {
|
|
1813
|
-
return {
|
|
1814
|
-
walletId: payload.walletId,
|
|
1815
|
-
factor: {
|
|
1816
|
-
kind: "passkey",
|
|
1817
|
-
credentialIdB64u: projection.target.credentialIdB64u
|
|
1818
|
-
},
|
|
1819
|
-
verifier: {
|
|
1820
|
-
kind: "webauthn",
|
|
1821
|
-
rpId: projection.target.rpId
|
|
1822
|
-
},
|
|
1823
|
-
bindingId: projection.authMethod.walletAuthMethodId
|
|
1824
|
-
};
|
|
1825
|
-
}
|
|
1826
|
-
function emailAuthority(payload, projection) {
|
|
1827
|
-
const base = buildEmailOtpWalletAuthAuthority({
|
|
1828
|
-
walletId: payload.walletId,
|
|
1829
|
-
provider: "google",
|
|
1830
|
-
providerUserId: payload.providerSubject,
|
|
1831
|
-
emailHashHex: payload.emailHashHex
|
|
1832
|
-
});
|
|
1833
|
-
return {
|
|
1834
|
-
walletId: base.walletId,
|
|
1835
|
-
factor: base.factor,
|
|
1836
|
-
verifier: base.verifier,
|
|
1837
|
-
bindingId: projection.authMethod.walletAuthMethodId
|
|
1838
|
-
};
|
|
1839
|
-
}
|
|
1840
|
-
async function recoveryAuthorityRef(payload, projection) {
|
|
1841
|
-
if (isDurablePasskeyPayload(payload)) {
|
|
1842
|
-
if (projection.kind !== "passkey") throw new Error("wallet recovery projection branch changed");
|
|
1843
|
-
return walletAuthAuthorityRef({ authority: passkeyAuthority(payload, projection) });
|
|
1844
|
-
}
|
|
1845
|
-
if (projection.kind !== "google_email_otp") throw new Error("wallet recovery projection branch changed");
|
|
1846
|
-
return walletAuthAuthorityRef({ authority: emailAuthority(payload, projection) });
|
|
1847
|
-
}
|
|
1848
|
-
async function prepareEcdsaWalletContinuity(input) {
|
|
1849
|
-
const keys = [];
|
|
1850
|
-
const ecdsaContinuity = [];
|
|
1851
|
-
for (const keySet of input.payload.ecdsaKeySets) {
|
|
1852
|
-
const entry = keySet.entry;
|
|
1853
|
-
const basis = entry.recoveryBasis;
|
|
1854
|
-
const relayerKeyId = await computeEcdsaDerivationRoleLocalRelayerKeyId({
|
|
1855
|
-
walletId: input.payload.walletId,
|
|
1856
|
-
signingRootId: basis.signingRootId,
|
|
1857
|
-
signingRootVersion: basis.signingRootVersion
|
|
1858
|
-
});
|
|
1859
|
-
const prepared = await prepareWalletCustodyEcdsaContinuity({
|
|
1860
|
-
authority: input.authority,
|
|
1861
|
-
chainTargets: basis.chainTargets,
|
|
1862
|
-
walletId: String(input.payload.walletId),
|
|
1863
|
-
keyHandle: entry.keyHandle,
|
|
1864
|
-
ecdsaThresholdKeyId: basis.ecdsaThresholdKeyId,
|
|
1865
|
-
signingRootId: basis.signingRootId,
|
|
1866
|
-
signingRootVersion: basis.signingRootVersion,
|
|
1867
|
-
relayerKeyId,
|
|
1868
|
-
participantIds: basis.participantIds,
|
|
1869
|
-
publicCapability: basis.publicCapability,
|
|
1870
|
-
activationReceipt: basis.activationReceipt,
|
|
1871
|
-
runtimePolicyScope: basis.runtimePolicyScope,
|
|
1872
|
-
readyStateBlobB64u: keySet.readyStateBlobB64u,
|
|
1873
|
-
publicFacts: keySet.publicFacts
|
|
1874
|
-
});
|
|
1875
|
-
ecdsaContinuity.push(prepared);
|
|
1876
|
-
for (const chainTarget of basis.chainTargets) keys.push(ecdsaWalletKey({
|
|
1877
|
-
payload: input.payload,
|
|
1878
|
-
keySet,
|
|
1879
|
-
chainTarget,
|
|
1880
|
-
materialRef: prepared.roleLocalMaterialRef,
|
|
1881
|
-
relayerKeyId
|
|
1882
|
-
}));
|
|
1883
|
-
}
|
|
1884
|
-
return {
|
|
1885
|
-
walletKeys: keys,
|
|
1886
|
-
ecdsaContinuity
|
|
1887
|
-
};
|
|
1888
|
-
}
|
|
1889
|
-
function ecdsaWalletKey(input) {
|
|
1890
|
-
const entry = input.keySet.entry;
|
|
1891
|
-
const basis = entry.recoveryBasis;
|
|
1892
|
-
const facts = input.keySet.publicFacts;
|
|
1893
|
-
const roleLocalPublicFacts = buildEcdsaRoleLocalPublicFacts({
|
|
1894
|
-
walletId: input.payload.walletId,
|
|
1895
|
-
chainTarget: input.chainTarget,
|
|
1896
|
-
keyHandle: entry.keyHandle,
|
|
1897
|
-
ecdsaThresholdKeyId: basis.ecdsaThresholdKeyId,
|
|
1898
|
-
signingRootId: basis.signingRootId,
|
|
1899
|
-
signingRootVersion: basis.signingRootVersion,
|
|
1900
|
-
applicationBindingDigestB64u: basis.publicCapability.context.application_binding_digest_b64u,
|
|
1901
|
-
clientParticipantId: 1,
|
|
1902
|
-
relayerParticipantId: 2,
|
|
1903
|
-
participantIds: basis.participantIds,
|
|
1904
|
-
contextBinding32B64u: facts.contextBinding32B64u,
|
|
1905
|
-
derivationClientSharePublicKey33B64u: facts.derivationClientSharePublicKey33B64u,
|
|
1906
|
-
relayerPublicKey33B64u: facts.relayerPublicKey33B64u,
|
|
1907
|
-
groupPublicKey33B64u: facts.groupPublicKey33B64u,
|
|
1908
|
-
ethereumAddress: facts.ethereumAddress,
|
|
1909
|
-
publicCapability: basis.publicCapability
|
|
1910
|
-
});
|
|
1911
|
-
return {
|
|
1912
|
-
keyScope: "evm-family",
|
|
1913
|
-
chainTarget: input.chainTarget,
|
|
1914
|
-
walletId: String(input.payload.walletId),
|
|
1915
|
-
evmFamilySigningKeySlotId: entry.evmFamilySigningKeySlotId,
|
|
1916
|
-
keyHandle: entry.keyHandle,
|
|
1917
|
-
ecdsaThresholdKeyId: basis.ecdsaThresholdKeyId,
|
|
1918
|
-
signingRootId: basis.signingRootId,
|
|
1919
|
-
signingRootVersion: basis.signingRootVersion,
|
|
1920
|
-
thresholdEcdsaPublicKeyB64u: facts.groupPublicKey33B64u,
|
|
1921
|
-
thresholdOwnerAddress: facts.ethereumAddress,
|
|
1922
|
-
relayerKeyId: input.relayerKeyId,
|
|
1923
|
-
relayerVerifyingShareB64u: facts.relayerPublicKey33B64u,
|
|
1924
|
-
participantIds: basis.participantIds,
|
|
1925
|
-
publicCapability: basis.publicCapability,
|
|
1926
|
-
roleLocalMaterialRef: input.materialRef,
|
|
1927
|
-
ecdsaRoleLocalPublicFacts: roleLocalPublicFacts
|
|
1928
|
-
};
|
|
1929
|
-
}
|
|
1930
|
-
function nearKeySet(input) {
|
|
1931
|
-
if (input.nearKeySets.length !== 1) throw new Error("wallet recovery requires exactly one NEAR key set");
|
|
1932
|
-
return input.nearKeySets[0];
|
|
1933
|
-
}
|
|
1934
|
-
function nearCredentialTransports(payload) {
|
|
1935
|
-
return [...payload.registration.response.transports];
|
|
1936
|
-
}
|
|
1937
|
-
function nearOperationalPublicKey(payload) {
|
|
1938
|
-
return `ed25519:${base58Encode(base64UrlDecode(nearKeySet(payload).binding.registeredPublicKeyB64u))}`;
|
|
1939
|
-
}
|
|
1940
|
-
function ed25519PublicCapabilityReference(payload, keySet) {
|
|
1941
|
-
const thresholdSessionId = parseThresholdEd25519SessionId(keySet.thresholdSessionId);
|
|
1942
|
-
if (!thresholdSessionId.ok) throw new Error("recovery NEAR threshold session id is invalid");
|
|
1943
|
-
return {
|
|
1944
|
-
walletId: payload.walletId,
|
|
1945
|
-
nearAccountId: toAccountId(keySet.binding.nearAccountId),
|
|
1946
|
-
thresholdSessionId: thresholdSessionId.value,
|
|
1947
|
-
runtimePolicyScope: keySet.runtimePolicyScope,
|
|
1948
|
-
materialActivation: routerAbMpcMaterialActivationRefFromWire(keySet.materialActivation)
|
|
1949
|
-
};
|
|
1950
|
-
}
|
|
1951
|
-
async function buildRecoveryPublication(input) {
|
|
1952
|
-
if (isDurablePasskeyPayload(input.payload)) {
|
|
1953
|
-
if (input.projection.kind !== "passkey") throw new Error("wallet recovery projection branch changed");
|
|
1954
|
-
const common = {
|
|
1955
|
-
walletId: input.payload.walletId,
|
|
1956
|
-
rpId: input.projection.target.rpId,
|
|
1957
|
-
credentialIdB64u: input.projection.target.credentialIdB64u,
|
|
1958
|
-
credentialPublicKeyB64u: input.projection.authMethod.credentialPublicKeyB64u,
|
|
1959
|
-
transports: nearCredentialTransports(input.payload),
|
|
1960
|
-
walletKeys: input.walletKeys
|
|
1961
|
-
};
|
|
1962
|
-
if (input.payload.nearKeySets.length === 0) return prepareWalletRecoveryPasskeyPublication({
|
|
1963
|
-
kind: "evm_family_ecdsa",
|
|
1964
|
-
...common
|
|
1965
|
-
});
|
|
1966
|
-
const near = nearKeySet(input.payload);
|
|
1967
|
-
return prepareWalletRecoveryPasskeyPublication({
|
|
1968
|
-
kind: "near_ed25519",
|
|
1969
|
-
...common,
|
|
1970
|
-
nearAccountId: toAccountId(near.binding.nearAccountId),
|
|
1971
|
-
nearEd25519SigningKeyId: near.binding.nearEd25519SigningKeyId,
|
|
1972
|
-
signerSlot: near.binding.signerSlot,
|
|
1973
|
-
operationalPublicKey: nearOperationalPublicKey(input.payload),
|
|
1974
|
-
relayerKeyId: near.binding.signingWorkerId,
|
|
1975
|
-
participantIds: near.binding.participantIds,
|
|
1976
|
-
custodyMaterials: input.payload.nearKeySets.map((keySet) => ({
|
|
1977
|
-
binding: keySet.binding,
|
|
1978
|
-
sealed: keySet.sealed
|
|
1979
|
-
}))
|
|
1980
|
-
});
|
|
1981
|
-
}
|
|
1982
|
-
if (input.projection.kind !== "google_email_otp") throw new Error("wallet recovery projection branch changed");
|
|
1983
|
-
const localAuthority = emailAuthority(input.payload, input.projection);
|
|
1984
|
-
const common = {
|
|
1985
|
-
walletId: input.payload.walletId,
|
|
1986
|
-
email: input.payload.verifiedEmail,
|
|
1987
|
-
registrationAuthorityId: input.payload.registrationAuthorityId,
|
|
1988
|
-
authority: localAuthority,
|
|
1989
|
-
walletKeys: input.walletKeys
|
|
1990
|
-
};
|
|
1991
|
-
if (input.payload.nearKeySets.length === 0) return prepareWalletRecoveryEmailOtpPublication({
|
|
1992
|
-
kind: "evm_family_ecdsa",
|
|
1993
|
-
...common
|
|
1994
|
-
});
|
|
1995
|
-
const near = nearKeySet(input.payload);
|
|
1996
|
-
return prepareWalletRecoveryEmailOtpPublication({
|
|
1997
|
-
kind: "near_ed25519",
|
|
1998
|
-
...common,
|
|
1999
|
-
nearAccountId: toAccountId(near.binding.nearAccountId),
|
|
2000
|
-
nearEd25519SigningKeyId: near.binding.nearEd25519SigningKeyId,
|
|
2001
|
-
signerSlot: near.binding.signerSlot,
|
|
2002
|
-
operationalPublicKey: nearOperationalPublicKey(input.payload),
|
|
2003
|
-
relayerKeyId: near.binding.signingWorkerId,
|
|
2004
|
-
participantIds: near.binding.participantIds,
|
|
2005
|
-
custodyMaterials: input.payload.nearKeySets.map((keySet) => ({
|
|
2006
|
-
binding: keySet.binding,
|
|
2007
|
-
sealed: keySet.sealed
|
|
2008
|
-
}))
|
|
2009
|
-
});
|
|
2010
|
-
}
|
|
2011
|
-
async function restoreAndPublishWalletRecoveryCommit(input) {
|
|
2012
|
-
const projection = input.pending.projection;
|
|
2013
|
-
const authority = await recoveryAuthorityRef(input.payload, projection);
|
|
2014
|
-
const continuity = await prepareEcdsaWalletContinuity({
|
|
2015
|
-
payload: input.payload,
|
|
2016
|
-
authority
|
|
2017
|
-
});
|
|
2018
|
-
const registration = await buildRecoveryPublication({
|
|
2019
|
-
payload: input.payload,
|
|
2020
|
-
projection,
|
|
2021
|
-
walletKeys: continuity.walletKeys
|
|
2022
|
-
});
|
|
2023
|
-
await IndexedDBManager.publishPendingWalletRecoveryCommit({
|
|
2024
|
-
pending: input.pending,
|
|
2025
|
-
authority: projection.authority,
|
|
2026
|
-
authMethod: projection.authMethod,
|
|
2027
|
-
registration,
|
|
2028
|
-
ecdsaContinuity: continuity.ecdsaContinuity,
|
|
2029
|
-
ed25519PublicCapabilityReferences: input.payload.nearKeySets.map((keySet) => ed25519PublicCapabilityReference(input.payload, keySet))
|
|
2030
|
-
});
|
|
2031
|
-
}
|
|
2032
|
-
async function resumePendingWalletRecoveries(input) {
|
|
2033
|
-
const pending = await IndexedDBManager.listPendingWalletRecoveryCommits();
|
|
2034
|
-
const results = [];
|
|
2035
|
-
for (const record of pending) try {
|
|
2036
|
-
const payload = await decryptWalletRecoveryDurablePayload(record);
|
|
2037
|
-
const promotion = record.stage === "awaiting_server_promotion" ? await resumeAwaitingCommit({
|
|
2038
|
-
relayUrl: input.relayUrl,
|
|
2039
|
-
payload,
|
|
2040
|
-
fetchImpl: input.fetchImpl
|
|
2041
|
-
}) : await replayPromotedCommit({
|
|
2042
|
-
relayUrl: input.relayUrl,
|
|
2043
|
-
payload,
|
|
2044
|
-
fetchImpl: input.fetchImpl
|
|
2045
|
-
});
|
|
2046
|
-
if (!isWalletRecoveryCommitPromotion(promotion)) {
|
|
2047
|
-
if (promotion.kind === "refused") {
|
|
2048
|
-
await IndexedDBManager.deletePendingWalletRecoveryCommit(record.recoveryOperationId);
|
|
2049
|
-
results.push({
|
|
2050
|
-
kind: "discarded",
|
|
2051
|
-
recoveryOperationId: String(record.recoveryOperationId)
|
|
2052
|
-
});
|
|
2053
|
-
continue;
|
|
2054
|
-
}
|
|
2055
|
-
results.push({
|
|
2056
|
-
kind: "pending",
|
|
2057
|
-
recoveryOperationId: String(record.recoveryOperationId),
|
|
2058
|
-
failure: promotion
|
|
2059
|
-
});
|
|
2060
|
-
continue;
|
|
2061
|
-
}
|
|
2062
|
-
const commitPromotion = promotion;
|
|
2063
|
-
const projection = committedProjectionFromPromotion(commitPromotion);
|
|
2064
|
-
const promoted = record.stage === "awaiting_server_promotion" ? await IndexedDBManager.advancePendingWalletRecoveryCommit({
|
|
2065
|
-
awaiting: record,
|
|
2066
|
-
promoted: promotedPendingWalletRecoveryCommit(record, commitPromotion.payload, projection, record.updatedAtMs + 1)
|
|
2067
|
-
}) : record;
|
|
2068
|
-
if (record.stage === "server_promoted" && !await sameWalletRecoveryCommittedProjectionV1(record.projection, projection)) throw new Error("wallet recovery replay projection changed");
|
|
2069
|
-
await restoreAndPublishWalletRecoveryCommit({
|
|
2070
|
-
pending: promoted,
|
|
2071
|
-
payload: commitPromotion.payload
|
|
2072
|
-
});
|
|
2073
|
-
results.push({
|
|
2074
|
-
kind: "completed",
|
|
2075
|
-
recoveryOperationId: String(record.recoveryOperationId)
|
|
2076
|
-
});
|
|
2077
|
-
} catch (error) {
|
|
2078
|
-
console.warn("[SeamsWeb] pending wallet recovery replay failed before classification:", String(record.recoveryOperationId), error instanceof Error ? error.message : String(error || "unknown error"));
|
|
2079
|
-
results.push({
|
|
2080
|
-
kind: "corrupt",
|
|
2081
|
-
recoveryOperationId: String(record.recoveryOperationId)
|
|
2082
|
-
});
|
|
2083
|
-
}
|
|
2084
|
-
return results;
|
|
2085
|
-
}
|
|
2086
|
-
async function createAwaitingWalletRecoveryCommit(input) {
|
|
2087
|
-
const payload = await walletRecoveryDurablePayloadFromOperation(input.operation);
|
|
2088
|
-
return {
|
|
2089
|
-
payload,
|
|
2090
|
-
pending: awaitingPendingWalletRecoveryCommit(payload, await encryptWalletRecoveryDurablePayload(payload), input.nowMs)
|
|
2091
|
-
};
|
|
2092
|
-
}
|
|
2093
|
-
async function promoteWalletRecoveryCommit(input) {
|
|
2094
|
-
const projection = committedProjectionFromPromotion(input.promotion);
|
|
2095
|
-
return IndexedDBManager.advancePendingWalletRecoveryCommit({
|
|
2096
|
-
awaiting: input.awaiting,
|
|
2097
|
-
promoted: promotedPendingWalletRecoveryCommit(input.awaiting, input.promotion.payload, projection, input.awaiting.updatedAtMs + 1)
|
|
2098
|
-
});
|
|
2099
|
-
}
|
|
2100
|
-
//#endregion
|
|
2101
|
-
export { finalizeWalletRecoveryGoogleEmailOtp as a, isDurablePasskeyPayload as c, prepareWalletRecoveryWithCode as d, resumePendingWalletRecoveries as i, finalizeWalletRecovery as l, promoteWalletRecoveryCommit as n, verifyWalletRecoveryEmailOtp as o, restoreAndPublishWalletRecoveryCommit as r, verifyWalletRecoveryGoogle as s, createAwaitingWalletRecoveryCommit as t, buildWalletRecoveryCeremonyCustodyJson as u };
|