@seams/wallet 0.7.1 → 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 -113
- package/dist/.build-inputs.sha256 +1 -1
- package/dist/esm/SeamsWeb/SeamsWeb.js +12 -3
- 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 +34 -49
- package/dist/esm/SeamsWeb/operations/auth/scheduleLinkedDevicePresignaturePrefill.js +64 -0
- package/dist/esm/SeamsWeb/operations/auth/walletAuth.js +2 -3
- package/dist/esm/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.js +1 -4
- 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/deviceLinkingHttpTransport.js +11 -12
- package/dist/esm/SeamsWeb/operations/devices/deviceLinkingResume.js +2 -9
- package/dist/esm/SeamsWeb/operations/devices/deviceLinkingWorkerChannels.js +24 -24
- 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 +5 -9
- package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryRotation.js +1 -2
- package/dist/esm/SeamsWeb/operations/registration/pendingRegistrationRecovery.js +5 -20
- 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/operations/tempo/executeEvmFamilyTransaction.js +4 -1
- package/dist/esm/SeamsWeb/publicApi/auth.js +2 -1
- package/dist/esm/SeamsWeb/publicApi/near.js +1 -1
- package/dist/esm/SeamsWeb/publicApi/tempo.js +6 -0
- package/dist/esm/SeamsWeb/publicApi/transactionReview.js +4 -1
- package/dist/esm/SeamsWeb/signingSurface/BrowserSigningSurface.js +28 -19
- 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/restoredSessionPresignaturePrefill.js +29 -0
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +64 -0
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +194 -385
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/icons.js +136 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/exactSessionState.js +6 -26
- 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/build-paths.js +0 -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 +6 -14
- package/dist/esm/core/indexedDB/pendingWalletRegistrationCommit.js +139 -273
- 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 +72 -125
- 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/recovery.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/evm/display/functionSelectors.js +2 -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/ecdsaExportFlow.js +2 -2
- package/dist/esm/core/signingEngine/flows/recovery/ecdsaExportMaterial.js +35 -29
- package/dist/esm/core/signingEngine/flows/recovery/ed25519YaoExportFlow.js +3 -3
- package/dist/esm/core/signingEngine/flows/recovery/exportKeypairOperation.js +1 -4
- package/dist/esm/core/signingEngine/flows/recovery/passkeyEd25519YaoRecovery.js +2 -5
- 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/emailOtpSigningSession.js +2 -2
- package/dist/esm/core/signingEngine/flows/signEvmFamily/preparedSigning.js +2 -9
- package/dist/esm/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.js +0 -2
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +6 -8
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.js +24 -18
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlow.js +7 -5
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +10 -9
- package/dist/esm/core/signingEngine/flows/signEvmFamily/transactionExecutor.js +3 -7
- 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/signNear.js +2 -2
- 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 +2 -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/availability/availableSigningLanes.js +1 -10
- package/dist/esm/core/signingEngine/session/availability/persistedAvailableSigningLanes.js +7 -6
- package/dist/esm/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +107 -24
- 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 +4 -15
- package/dist/esm/core/signingEngine/session/emailOtp/ecdsaRecovery.js +12 -16
- 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/identity/selectLane.js +7 -21
- package/dist/esm/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.js +3 -9
- package/dist/esm/core/signingEngine/session/material/ecdsaCapabilityManifest.js +4 -16
- package/dist/esm/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.js +1 -14
- package/dist/esm/core/signingEngine/session/material/ecdsaSigningCapability.js +1 -1
- 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 +13 -49
- package/dist/esm/core/signingEngine/session/persistence/clientSessionPersistence.js +8 -16
- package/dist/esm/core/signingEngine/session/persistence/sealedSessionRecords.js +5 -10
- 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/ecdsaLoginPrefillSigningMaterialSource.js +2 -2
- package/dist/esm/core/signingEngine/session/warmCapabilities/nearEd25519CapabilityRehydration.js +1 -1
- 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/commitQueueShared.js +20 -6
- package/dist/esm/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.js +7 -4
- 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/ecdsa/signingQueue.js +8 -50
- package/dist/esm/core/signingEngine/threshold/ed25519/commitQueue.js +7 -43
- 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 +4 -3
- 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 +25 -16
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.js +3 -13
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +1 -10
- 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/deviceLinkingPorts.js +67 -48
- 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 +4 -47
- 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 +3 -3
- package/dist/esm/react/components/AccountMenuButton/ExportKeysSection.js +2 -2
- package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +8 -8
- package/dist/esm/react/components/AccountMenuButton/LockMenuItem.js +2 -1
- package/dist/esm/react/components/AccountMenuButton/MenuItem.css +17 -0
- package/dist/esm/react/components/AccountMenuButton/ProfileDropdown.js +1 -1
- package/dist/esm/react/components/AccountMenuButton/UserAccountButton.css +0 -5
- package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.css +8 -0
- package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +21 -13
- package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +0 -52
- package/dist/esm/react/components/AccountMenuButton/icons/GlobeIcon.js +12 -27
- package/dist/esm/react/components/AccountMenuButton/icons/KeyIcon.js +12 -27
- package/dist/esm/react/components/AccountMenuButton/icons/LaptopIcon.js +4 -19
- package/dist/esm/react/components/AccountMenuButton/icons/LinkIcon.js +4 -19
- package/dist/esm/react/components/AccountMenuButton/icons/LockIcon.js +11 -26
- package/dist/esm/react/components/AccountMenuButton/icons/MailIcon.js +10 -25
- package/dist/esm/react/components/AccountMenuButton/icons/RecoveryCodesIcon.js +16 -31
- package/dist/esm/react/components/AccountMenuButton/icons/ScanIcon.js +9 -24
- package/dist/esm/react/components/AccountMenuButton/icons/SlidersIcon.js +14 -29
- package/dist/esm/react/components/AccountMenuButton/icons/SmartphoneIcon.js +11 -26
- package/dist/esm/react/components/AccountMenuButton/icons/TouchIcon.js +1 -1
- package/dist/esm/react/components/AccountMenuButton/icons/lucideIcon.js +27 -0
- package/dist/esm/react/components/AccountMenuButton/icons/strokeIcon.js +7 -17
- package/dist/esm/react/components/AccountMenuButton/index.js +11 -11
- 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.css +0 -15
- package/dist/esm/react/components/QRCodeScanner.js +2 -2
- package/dist/esm/react/components/ShowQRCode.css +0 -14
- 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 +2 -3
- package/dist/esm/react/context/useWalletIframeLifecycle.js +1 -15
- 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 +25 -86
- 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 +23 -204
- 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 -6134
- 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/authorization/walletSessionIssuance.js +5 -8
- package/dist/esm/shared-ts/src/authorization/walletSignerActivationEquality.js +12 -0
- package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +2 -5
- package/dist/esm/shared-ts/src/device-linking/delegatedActivationPlan.js +1 -5
- package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +11 -15
- package/dist/esm/shared-ts/src/device-linking/parsers.js +41 -1
- package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +6 -9
- 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/passkey-custody/primitives.js +5 -1
- 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 +3 -8
- 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 +13 -17
- 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 +4 -2
- package/dist/esm/shared-ts/src/utils/domainIds.js +1 -7
- package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +2 -5
- package/dist/esm/shared-ts/src/utils/ecdsaServerTiming.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/exactKeys.js +17 -0
- 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 +2 -9
- package/dist/esm/shared-ts/src/utils/registrationSetupOperation.js +12 -0
- package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +3 -6
- package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +2 -3
- package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +1 -1
- package/dist/esm/shared-ts/src/utils/thresholdEcdsaChainTarget.js +9 -0
- 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/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +1 -4
- package/dist/esm/theme/base-styles.js +11 -11
- package/dist/esm/utils/deviceDetection.js +16 -1
- package/dist/esm/utils/menuItemBlink.js +24 -0
- 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 +23 -204
- 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 -6134
- 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 +567 -2131
- package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +1529 -2683
- package/dist/public/sdk/workers/ecdsa-online-client.worker.js +1 -273
- package/dist/public/sdk/workers/ecdsa-presign-client.worker.js +59 -346
- package/dist/public/sdk/workers/email-otp.worker.js +307 -2185
- 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 +136 -1636
- 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/authorization/delegatedAuthority.d.ts +2 -1
- package/dist/types/shared-ts/src/authorization/walletSessionIssuance.d.ts +9 -2
- package/dist/types/shared-ts/src/authorization/walletSignerActivationEquality.d.ts +4 -0
- package/dist/types/shared-ts/src/device-linking/committedSignerPackages.d.ts +3 -4
- package/dist/types/shared-ts/src/device-linking/contracts.d.ts +6 -63
- package/dist/types/shared-ts/src/device-linking/sourceContribution.d.ts +2 -0
- package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +5 -12
- package/dist/types/shared-ts/src/passkey-custody/primitives.d.ts +9 -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 +11 -12
- package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +3 -17
- 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 -845
- package/dist/types/shared-ts/src/tenant-root/tenantRootIdentifier.d.ts +3 -0
- package/dist/types/shared-ts/src/tenant-root/tenantRootOperationRecord.d.ts +2 -1
- package/dist/types/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.d.ts +6 -0
- 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/threshold/signingRootScope.d.ts +1 -0
- 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/ecdsaKeyFactsInventory.d.ts +2 -11
- package/dist/types/shared-ts/src/utils/eip1559TxWasmJson.d.ts +16 -0
- package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +2 -0
- package/dist/types/shared-ts/src/utils/errors.d.ts +0 -4
- package/dist/types/shared-ts/src/utils/exactKeys.d.ts +11 -0
- package/dist/types/shared-ts/src/utils/failure.d.ts +12 -0
- package/dist/types/shared-ts/src/utils/jsonRpc.d.ts +3 -4
- package/dist/types/shared-ts/src/utils/near.d.ts +0 -20
- package/dist/types/shared-ts/src/utils/nearRpcResults.d.ts +1 -0
- package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -2
- package/dist/types/shared-ts/src/utils/registrationAuthMethodInput.d.ts +3 -8
- package/dist/types/shared-ts/src/utils/registrationSetupOperation.d.ts +3 -0
- package/dist/types/shared-ts/src/utils/registrationSignerPlan.d.ts +7 -19
- package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +3 -1
- package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +1 -0
- package/dist/types/shared-ts/src/utils/routerAbEd25519YaoDigests.d.ts +3 -4
- package/dist/types/shared-ts/src/utils/routerAbNormalSigningIdentity.d.ts +30 -8
- package/dist/types/shared-ts/src/utils/routerApiKeyAuth.d.ts +2 -0
- package/dist/types/shared-ts/src/utils/signingSessionSeal.d.ts +10 -11
- package/dist/types/shared-ts/src/utils/thresholdEcdsaChainTarget.d.ts +25 -0
- package/dist/types/shared-ts/src/utils/validation.d.ts +1 -3
- package/dist/types/shared-ts/src/utils/variant.d.ts +18 -0
- package/dist/types/shared-ts/src/utils/walletAuthMethodRecord.d.ts +3 -6
- 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/webauthnDeviceInfo.d.ts +4 -2
- 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/recoveryEnvelopes.d.ts +3 -16
- package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +5 -21
- package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryPreparation.d.ts +15 -0
- package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryTarget.d.ts +3 -4
- package/dist/types/wallet/build-paths.d.ts +1 -2
- package/dist/types/wallet/src/SeamsWeb/SeamsWeb.d.ts +2 -0
- package/dist/types/wallet/src/SeamsWeb/operations/auth/scheduleLinkedDevicePresignaturePrefill.d.ts +11 -0
- package/dist/types/wallet/src/SeamsWeb/operations/auth/walletAuth.d.ts +2 -1
- package/dist/types/wallet/src/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/operations/auth/walletUnlockSubject.d.ts +3 -20
- package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/challenge.d.ts +0 -4
- package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/walletActivation.d.ts +3 -4
- package/dist/types/wallet/src/SeamsWeb/operations/devices/deviceLinkingAuthorityInstallation.d.ts +2 -10
- 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/operations/tempo/executeEvmFamilyTransaction.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +7 -16
- 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/restoredSessionPresignaturePrefill.d.ts +2 -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 +12 -5
- 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/SeamsWeb/walletIframe/shared/messages.d.ts +5 -15
- package/dist/types/wallet/src/advanced.d.ts +1 -1
- package/dist/types/wallet/src/core/accountData/near/keyMaterial.d.ts +3 -5
- 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 +2 -38
- package/dist/types/wallet/src/core/indexedDB/pendingWalletRecoveryCommit.d.ts +1 -4
- package/dist/types/wallet/src/core/indexedDB/pendingWalletRegistrationCommit.d.ts +3 -4
- package/dist/types/wallet/src/core/indexedDB/schemaNames.d.ts +0 -22
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestLookups.d.ts +7 -12
- 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 +8 -7
- 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 +7 -51
- package/dist/types/wallet/src/core/platform/http.d.ts +3 -5
- package/dist/types/wallet/src/core/platform/index.d.ts +4 -4
- package/dist/types/wallet/src/core/platform/ports.d.ts +4 -58
- 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/near/NearRpcError.d.ts +1 -2
- package/dist/types/wallet/src/core/rpcClients/relayer/ownerWalletExecutionLanePreflight.d.ts +2 -11
- package/dist/types/wallet/src/core/rpcClients/relayer/passkeyCustodyEnvelope.d.ts +0 -6
- package/dist/types/wallet/src/core/rpcClients/relayer/thresholdEcdsa.d.ts +2 -9
- package/dist/types/wallet/src/core/rpcClients/relayer/walletRecoveryPrepare.d.ts +2 -14
- 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/chains/near/payloads.d.ts +2 -10
- package/dist/types/wallet/src/core/signingEngine/flows/recovery/ecdsaDerivationExport.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/flows/recovery/ecdsaExportFlow.d.ts +4 -8
- package/dist/types/wallet/src/core/signingEngine/flows/recovery/keyExportConfirmation.d.ts +0 -15
- package/dist/types/wallet/src/core/signingEngine/flows/recovery/keyExportFlow.d.ts +7 -6
- package/dist/types/wallet/src/core/signingEngine/flows/registration/accountLifecycle.d.ts +2 -21
- 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/emailOtpSigningSession.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/freshAuthRetryPolicy.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/nonceResolution.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.d.ts +7 -18
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.d.ts +1 -0
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.d.ts +10 -5
- package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/ed25519YaoCapabilityResolution.d.ts +4 -14
- 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/operationStepUpPreparation.d.ts +3 -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/flows/signNear/signNep413.d.ts +3 -7
- package/dist/types/wallet/src/core/signingEngine/interfaces/index.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/interfaces/near.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/interfaces/operationDeps.d.ts +3 -5
- package/dist/types/wallet/src/core/signingEngine/interfaces/operationStepUpPreparation.d.ts +3 -5
- package/dist/types/wallet/src/core/signingEngine/nonce/NonceCoordinator.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/nonce/nearTransactionReadiness.d.ts +3 -5
- package/dist/types/wallet/src/core/signingEngine/nonce/nonceTypes.d.ts +2 -11
- package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/clientCeremony.d.ts +5 -22
- package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.d.ts +3 -14
- 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/persistedAvailableSigningLanes.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/session/availability/readiness.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.d.ts +37 -14
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaLogin.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaPublication.d.ts +3 -5
- 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 +2 -7
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/secretEscrow.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/session/emailOtp/walletUnlock.d.ts +6 -15
- 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 +3 -8
- 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 +3 -7
- package/dist/types/wallet/src/core/signingEngine/session/identity/exactWalletSessionReader.d.ts +3 -6
- package/dist/types/wallet/src/core/signingEngine/session/identity/laneIdentity.d.ts +5 -14
- package/dist/types/wallet/src/core/signingEngine/session/identity/signingLaneAuthBinding.d.ts +3 -5
- 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/activeEcdsaCapabilityRuntime.d.ts +5 -10
- package/dist/types/wallet/src/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.d.ts +4 -7
- package/dist/types/wallet/src/core/signingEngine/session/material/capabilityPreparationResult.d.ts +3 -22
- package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaCapabilityHydration.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSealedRuntime.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSigningCapability.d.ts +5 -0
- package/dist/types/wallet/src/core/signingEngine/session/material/nearEd25519YaoSigningPreparation.d.ts +5 -10
- package/dist/types/wallet/src/core/signingEngine/session/operationState/authorizationAdmission.d.ts +4 -9
- package/dist/types/wallet/src/core/signingEngine/session/operationState/preparedOperation.d.ts +0 -2
- package/dist/types/wallet/src/core/signingEngine/session/operationState/types.d.ts +3 -5
- package/dist/types/wallet/src/core/signingEngine/session/passkey/ecdsaBootstrap.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/session/passkey/ecdsaSessionProvision.d.ts +3 -4
- 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/passkey/unlockEcdsaWarmupPlanner.d.ts +7 -25
- 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/sealedRecovery/sealedRecovery.types.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/capabilityReaderCore.d.ts +3 -16
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.d.ts +0 -105
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ed25519SealedSessionRuntime.d.ts +6 -26
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/persistencePorts.d.ts +3 -4
- 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/channel/confirmTypes.d.ts +11 -36
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/methodRunners.d.ts +1 -5
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.d.ts +5 -8
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.d.ts +4 -7
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.d.ts +3 -9
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/requireStepUpAuth.d.ts +1 -19
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/types.d.ts +7 -32
- package/dist/types/wallet/src/core/signingEngine/threshold/commitQueueShared.d.ts +10 -10
- package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.d.ts +1 -1
- 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 +3 -8
- package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/signingQueue.d.ts +1 -7
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/commitQueue.d.ts +1 -6
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/connectSession.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/walletSession.d.ts +6 -36
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoClient.d.ts +1 -8
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.d.ts +3 -4
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/handlers/flows/requestRegistrationCredentialConfirmation.d.ts +1 -4
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.d.ts +5 -9
- 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/ecdsaPresignLifecycle.d.ts +5 -16
- package/dist/types/wallet/src/core/signingEngine/workerManager/validation.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workerTypes.d.ts +9 -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 +2 -12
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/custodyRestore.d.ts +0 -10
- 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/linkDevice.d.ts +3 -18
- package/dist/types/wallet/src/core/types/sdkPublicResults.d.ts +5 -18
- package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +5 -23
- package/dist/types/wallet/src/core/types/seams.d.ts +17 -71
- 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/externalEvm/types.d.ts +5 -12
- package/dist/types/wallet/src/react/components/AccountMenuButton/Toggle.d.ts +0 -15
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/GlobeIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/KeyIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LaptopIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LinkIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LockIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/MailIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/RecoveryCodesIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/ScanIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SlidersIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SmartphoneIcon.d.ts +1 -4
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/lucideIcon.d.ts +5 -0
- package/dist/types/wallet/src/react/components/theme/design-tokens.d.ts +0 -19
- package/dist/types/wallet/src/react/hooks/useAccountInput.d.ts +1 -22
- package/dist/types/wallet/src/react/transactionReview/controller.d.ts +3 -10
- package/dist/types/wallet/src/utils/menuItemBlink.d.ts +9 -0
- package/dist/types/wallet/src/utils/qrScanner.d.ts +1 -21
- package/dist/workers/device-linking-key.worker.js +567 -2131
- package/dist/workers/ecdsa-derivation-client.worker.js +1529 -2683
- package/dist/workers/ecdsa-online-client.worker.js +1 -273
- package/dist/workers/ecdsa-presign-client.worker.js +59 -346
- package/dist/workers/email-otp.worker.js +307 -2185
- 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 +136 -1636
- 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/HaloBorder/HaloBorder.css +0 -101
- package/dist/esm/components/AccountMenuButton/LinkedDevicesModal.css +0 -612
- package/dist/esm/components/AccountMenuButton/MenuItem.css +0 -181
- 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 -182
- package/dist/esm/components/AccountMenuButton/WalletSettingsLayout.css +0 -456
- package/dist/esm/components/AccountMenuButton/Web3AuthProfileButton.css +0 -75
- package/dist/esm/components/AccountMenuButton/icons/TouchIcon.css +0 -46
- package/dist/esm/components/QRCodeScanner.css +0 -502
- package/dist/esm/components/ShowQRCode.css +0 -345
- package/dist/esm/core/indexedDB/seamsWalletDB/laneHolderMaterialStore.js +0 -239
- package/dist/esm/core/signingEngine/session/emailOtp/coordinatorRuntime.js +0 -131
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/evm.js +0 -12
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/near.js +0 -12
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/tempo.js +0 -12
- 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 -1909
- 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 -4398
- package/dist/esm/react/SeamsWeb/operations/auth/scheduleEcdsaSessionPresignaturePrefill.js +0 -41
- package/dist/esm/react/SeamsWeb/operations/auth/walletAuth.js +0 -143
- package/dist/esm/react/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.js +0 -36
- 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 -525
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingOwnerTransport.js +0 -135
- package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingResume.js +0 -219
- 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 -386
- 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 -369
- 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 -565
- 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 -23
- 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 -238
- 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 -3908
- 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/surface-measurement-reporter.js +0 -158
- package/dist/esm/react/SeamsWeb/walletIframe/shared/exactSessionState.js +0 -625
- 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 -111
- package/dist/esm/react/components/AccountMenuButton/HaloBorder/HaloBorder.css +0 -101
- 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 -482
- package/dist/esm/react/core/indexedDB/pendingWalletRegistrationCommit.js +0 -879
- 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 -75
- 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 -243
- package/dist/esm/react/core/signingEngine/flows/recovery/ed25519YaoExportFlow.js +0 -353
- package/dist/esm/react/core/signingEngine/flows/recovery/exportKeypairOperation.js +0 -216
- 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 -195
- 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 -383
- 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 -512
- 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 -76
- 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 -631
- package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +0 -391
- 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 -143
- 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 -1216
- 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 -1073
- 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 -213
- package/dist/esm/react/core/signingEngine/session/availability/readiness.js +0 -464
- package/dist/esm/react/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +0 -47
- package/dist/esm/react/core/signingEngine/session/emailOtp/challengeDelivery.js +0 -56
- package/dist/esm/react/core/signingEngine/session/emailOtp/coordinatorRuntime.js +0 -131
- 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 -941
- 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 -349
- 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 -323
- package/dist/esm/react/core/signingEngine/session/material/ecdsaCapabilityHydration.js +0 -75
- package/dist/esm/react/core/signingEngine/session/material/ecdsaCapabilityManifest.js +0 -510
- 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 -317
- 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 -764
- 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 -125
- package/dist/esm/react/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.js +0 -616
- 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 -58
- package/dist/esm/react/core/signingEngine/threshold/ed25519/commitQueue.js +0 -52
- 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 -745
- 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 -287
- 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/evm.js +0 -12
- 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/near.js +0 -12
- package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/tempo.js +0 -12
- 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 -258
- 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 -323
- 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 -777
- 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 -118
- 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 -273
- 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 -134
- 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 -171
- 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 -545
- 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 -58
- 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 -66
- 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 -483
- 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 -40
- 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 -46
- package/dist/esm/react/shared-ts/src/utils/ecdsaServerTiming.js +0 -39
- 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/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 -396
- package/dist/esm/react/shared-ts/src/utils/registrationSignerPlan.js +0 -442
- 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/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 -254
- 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/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-BAGG_rbk.js +0 -1341
- package/dist/esm/sdk/actions-CCvThiKe.js +0 -225
- package/dist/esm/sdk/adapters-B4JeK1nJ.js +0 -4864
- 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-CRoJMVpp.js +0 -153
- package/dist/esm/sdk/capabilityKinds-hvYqa6S_.js +0 -109
- package/dist/esm/sdk/chains-BMh3btVo.js +0 -124
- package/dist/esm/sdk/challengeDelivery-Dd0586fo.js +0 -74
- package/dist/esm/sdk/chunk-BtrIJ4_z.js +0 -33
- package/dist/esm/sdk/configHelpers-vAQCzUD0.js +0 -179
- package/dist/esm/sdk/csp-stylesheet-btENhsNp.js +0 -215
- package/dist/esm/sdk/defaultConfigs-B3c16M_8.js +0 -355
- package/dist/esm/sdk/display-KdIL0ff7.js +0 -126
- package/dist/esm/sdk/domainIds-lcrFg6Sa.js +0 -338
- package/dist/esm/sdk/ecdsaCapabilityManifest-kzO_fW09.js +0 -817
- package/dist/esm/sdk/ecdsaChainTarget-Bl-JWyuw.js +0 -121
- package/dist/esm/sdk/ecdsaPresignLifecycle-BFOTNYCK.js +0 -1983
- package/dist/esm/sdk/ecdsaPresignPoolIdentity-BjxZVIqn.js +0 -47
- package/dist/esm/sdk/ecdsaWalletRecords-Cz4m6bIz.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-Co5XDcEA.js +0 -4288
- package/dist/esm/sdk/exactSessionState-CiD5fBEs.js +0 -2612
- package/dist/esm/sdk/exactSigningLaneIdentity-DQeqPMST.js +0 -335
- package/dist/esm/sdk/executeWorkerOperation-Cl9whMK7.js +0 -10
- package/dist/esm/sdk/export-viewer-host-ZqA2Yz3H.js +0 -204
- package/dist/esm/sdk/helpers-ZrowMnev.js +0 -302
- package/dist/esm/sdk/host-BWBbCAMu.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-CX41hur6.js +0 -94
- package/dist/esm/sdk/localOnly-Bg8UuLZ5.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-DPb0s3hQ.js +0 -4008
- package/dist/esm/sdk/nearEd25519YaoSigningPreparation-BeD-SmbK.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-Bk1jAknm.js +0 -487
- package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-DLzBb3WQ.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-DW2tGyMs.js +0 -779
- package/dist/esm/sdk/registration-BZDzDv91.js +0 -14414
- package/dist/esm/sdk/registration-BzVHODuD.js +0 -233
- package/dist/esm/sdk/registrationAccounts-CKku_Sgy.js +0 -33
- package/dist/esm/sdk/registrationIds-DLSdEKSv.js +0 -310
- package/dist/esm/sdk/registrationIntent-D0PxwEY4.js +0 -393
- package/dist/esm/sdk/registrationPreparationPreload-CIAuRlxI.js +0 -13
- package/dist/esm/sdk/registrationSignerPlan-CAikVZZQ.js +0 -440
- package/dist/esm/sdk/relayerHttp-VC8Holz1.js +0 -24
- package/dist/esm/sdk/routePlan-D59x5xzQ.js +0 -83
- package/dist/esm/sdk/router-C5lF_J_u.js +0 -4721
- package/dist/esm/sdk/routerAbNormalSigning-fhvpDtmY.js +0 -992
- package/dist/esm/sdk/runtime-auth-DFTqwj3u.js +0 -5540
- package/dist/esm/sdk/runtime-device-link-C1Oub8Lw.js +0 -259
- package/dist/esm/sdk/runtime-ecdsa-tempo-rkWwolw1.js +0 -177
- package/dist/esm/sdk/runtime-email-otp-vuUG5LYl.js +0 -320
- package/dist/esm/sdk/runtime-export-FZWj0HxJ.js +0 -112
- package/dist/esm/sdk/runtime-near-B9cjurVD.js +0 -278
- package/dist/esm/sdk/runtime-preferences-Dq0bfyS5.js +0 -67
- package/dist/esm/sdk/runtime-recovery-C-vfFKF3.js +0 -45
- package/dist/esm/sdk/runtime-recovery-codes-bTm3fLV4.js +0 -95
- package/dist/esm/sdk/runtimeContext-iLXnxVlZ.js +0 -44443
- package/dist/esm/sdk/runtimeLoader-hod6T2-m.js +0 -44
- package/dist/esm/sdk/sdkSentEvents-MqDkbQg1.js +0 -599
- package/dist/esm/sdk/secp256k1-el9aE4Sv.js +0 -2504
- package/dist/esm/sdk/secureRandomId-BORsmdS4.js +0 -33
- package/dist/esm/sdk/sessionPolicy-CHiilOAB.js +0 -453
- package/dist/esm/sdk/shared-DkbeLCI3.js +0 -33
- package/dist/esm/sdk/signEvmFamily-e4IWWsZs.js +0 -4666
- package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-Cu9qdk8M.js +0 -226
- package/dist/esm/sdk/signEvmWithUiConfirm-C61TCBnh.js +0 -27
- package/dist/esm/sdk/signNear-Bblwn2kT.js +0 -5929
- package/dist/esm/sdk/signatureUses-BkGyYt8F.js +0 -51
- package/dist/esm/sdk/signerDomain-IEAVrOrc.js +0 -59
- package/dist/esm/sdk/signerLoader-D7Aey0FD.js +0 -23
- package/dist/esm/sdk/signerSlot-_ovonwVX.js +0 -10
- package/dist/esm/sdk/signingFlow-rZfPegH9.js +0 -1320
- 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-rHe0wz7q.js +0 -127
- 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-DP9O8F6f.js +0 -1885
- package/dist/esm/sdk/types-Dx9fczU7.js +0 -111
- package/dist/esm/sdk/validation-gat4LEKm.js +0 -409
- package/dist/esm/sdk/wallet-recovery-Bz9qKgaL.js +0 -1905
- package/dist/esm/sdk/walletAuthority-BQBxgUBn.js +0 -1251
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-Hn4ORIbf.js +0 -11130
- package/dist/esm/sdk/walletIframeIdentity-DB6Z2EC9.js +0 -13
- package/dist/esm/sdk/walletRecoveryCommit-sjGNTHUj.js +0 -2159
- 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-BAGG_rbk.js +0 -1341
- package/dist/public/sdk/actions-CCvThiKe.js +0 -225
- package/dist/public/sdk/adapters-B4JeK1nJ.js +0 -4864
- 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-CRoJMVpp.js +0 -153
- package/dist/public/sdk/capabilityKinds-hvYqa6S_.js +0 -109
- package/dist/public/sdk/chains-BMh3btVo.js +0 -124
- package/dist/public/sdk/challengeDelivery-Dd0586fo.js +0 -74
- package/dist/public/sdk/chunk-BtrIJ4_z.js +0 -33
- package/dist/public/sdk/configHelpers-vAQCzUD0.js +0 -179
- package/dist/public/sdk/csp-stylesheet-btENhsNp.js +0 -215
- package/dist/public/sdk/defaultConfigs-B3c16M_8.js +0 -355
- package/dist/public/sdk/display-KdIL0ff7.js +0 -126
- package/dist/public/sdk/domainIds-lcrFg6Sa.js +0 -338
- package/dist/public/sdk/ecdsaCapabilityManifest-kzO_fW09.js +0 -817
- package/dist/public/sdk/ecdsaChainTarget-Bl-JWyuw.js +0 -121
- package/dist/public/sdk/ecdsaPresignLifecycle-BFOTNYCK.js +0 -1983
- package/dist/public/sdk/ecdsaPresignPoolIdentity-BjxZVIqn.js +0 -47
- package/dist/public/sdk/ecdsaWalletRecords-Cz4m6bIz.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-Co5XDcEA.js +0 -4288
- package/dist/public/sdk/exactSessionState-CiD5fBEs.js +0 -2612
- package/dist/public/sdk/exactSigningLaneIdentity-DQeqPMST.js +0 -335
- package/dist/public/sdk/executeWorkerOperation-Cl9whMK7.js +0 -10
- package/dist/public/sdk/export-viewer-host-ZqA2Yz3H.js +0 -204
- package/dist/public/sdk/helpers-ZrowMnev.js +0 -302
- package/dist/public/sdk/host-BWBbCAMu.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-CX41hur6.js +0 -94
- package/dist/public/sdk/localOnly-Bg8UuLZ5.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-DPb0s3hQ.js +0 -4008
- package/dist/public/sdk/nearEd25519YaoSigningPreparation-BeD-SmbK.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-Bk1jAknm.js +0 -487
- package/dist/public/sdk/pendingWalletRecoveryCodeBackup-DLzBb3WQ.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-DW2tGyMs.js +0 -779
- package/dist/public/sdk/registration-BZDzDv91.js +0 -14414
- package/dist/public/sdk/registration-BzVHODuD.js +0 -233
- package/dist/public/sdk/registrationAccounts-CKku_Sgy.js +0 -33
- package/dist/public/sdk/registrationIds-DLSdEKSv.js +0 -310
- package/dist/public/sdk/registrationIntent-D0PxwEY4.js +0 -393
- package/dist/public/sdk/registrationPreparationPreload-CIAuRlxI.js +0 -13
- package/dist/public/sdk/registrationSignerPlan-CAikVZZQ.js +0 -440
- package/dist/public/sdk/relayerHttp-VC8Holz1.js +0 -24
- package/dist/public/sdk/routePlan-D59x5xzQ.js +0 -83
- package/dist/public/sdk/router-C5lF_J_u.js +0 -4721
- package/dist/public/sdk/routerAbNormalSigning-fhvpDtmY.js +0 -992
- package/dist/public/sdk/runtime-auth-DFTqwj3u.js +0 -5540
- package/dist/public/sdk/runtime-device-link-C1Oub8Lw.js +0 -259
- package/dist/public/sdk/runtime-ecdsa-tempo-rkWwolw1.js +0 -177
- package/dist/public/sdk/runtime-email-otp-vuUG5LYl.js +0 -320
- package/dist/public/sdk/runtime-export-FZWj0HxJ.js +0 -112
- package/dist/public/sdk/runtime-near-B9cjurVD.js +0 -278
- package/dist/public/sdk/runtime-preferences-Dq0bfyS5.js +0 -67
- package/dist/public/sdk/runtime-recovery-C-vfFKF3.js +0 -45
- package/dist/public/sdk/runtime-recovery-codes-bTm3fLV4.js +0 -95
- package/dist/public/sdk/runtimeContext-iLXnxVlZ.js +0 -44443
- package/dist/public/sdk/runtimeLoader-hod6T2-m.js +0 -44
- package/dist/public/sdk/sdkSentEvents-MqDkbQg1.js +0 -599
- package/dist/public/sdk/secp256k1-el9aE4Sv.js +0 -2504
- package/dist/public/sdk/secureRandomId-BORsmdS4.js +0 -33
- package/dist/public/sdk/sessionPolicy-CHiilOAB.js +0 -453
- package/dist/public/sdk/shared-DkbeLCI3.js +0 -33
- package/dist/public/sdk/signEvmFamily-e4IWWsZs.js +0 -4666
- package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-Cu9qdk8M.js +0 -226
- package/dist/public/sdk/signEvmWithUiConfirm-C61TCBnh.js +0 -27
- package/dist/public/sdk/signNear-Bblwn2kT.js +0 -5929
- package/dist/public/sdk/signatureUses-BkGyYt8F.js +0 -51
- package/dist/public/sdk/signerDomain-IEAVrOrc.js +0 -59
- package/dist/public/sdk/signerLoader-D7Aey0FD.js +0 -23
- package/dist/public/sdk/signerSlot-_ovonwVX.js +0 -10
- package/dist/public/sdk/signingFlow-rZfPegH9.js +0 -1320
- 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-rHe0wz7q.js +0 -127
- 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-DP9O8F6f.js +0 -1885
- package/dist/public/sdk/types-Dx9fczU7.js +0 -111
- package/dist/public/sdk/validation-gat4LEKm.js +0 -409
- package/dist/public/sdk/wallet-recovery-Bz9qKgaL.js +0 -1905
- package/dist/public/sdk/walletAuthority-BQBxgUBn.js +0 -1251
- package/dist/public/sdk/walletCustodyEcdsaContinuity-Hn4ORIbf.js +0 -11130
- package/dist/public/sdk/walletIframeIdentity-DB6Z2EC9.js +0 -13
- package/dist/public/sdk/walletRecoveryCommit-sjGNTHUj.js +0 -2159
- 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/emailOtp/coordinatorRuntime.d.ts +0 -43
- 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/uiConfirm/ui/transaction-display/renderers/evm.d.ts +0 -5
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/renderers/near.d.ts +0 -5
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/renderers/tempo.d.ts +0 -5
- 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,4008 +0,0 @@
|
|
|
1
|
-
import { D as parseWalletAuthorityId, M as parseWebAuthnRpId, O as parseWalletId, S as parseThresholdEd25519SessionId, T as parseWalletAuthMethodId, f as parseMpcCapabilityRuntimeRef, h as parseMpcMaterialActivationRef, j as parseWebAuthnCredentialIdB64u, r as mpcMaterialActivationRefsEqual, x as parseThresholdEcdsaSessionId, y as parseRootShareEpoch } from "./domainIds-lcrFg6Sa.js";
|
|
2
|
-
import { D as parseImplicitNearAccountId, O as parseNamedNearAccountId, d as isPlainObject, k as parseNearAccountId, u as isObject } from "./validation-gat4LEKm.js";
|
|
3
|
-
import { t as errorMessage } from "./errors-93h9uAW9.js";
|
|
4
|
-
import { r as base64UrlDecode } from "./base64-Clm8C-e9.js";
|
|
5
|
-
import { h as normalizeRuntimePolicyScope, o as normalizeThresholdRuntimePolicyScope } from "./sessionPolicy-CHiilOAB.js";
|
|
6
|
-
import { $ as parseWalletAuthAuthority, Ct as routerAbMpcMaterialActivationRefFromWire, D as parseRouterAbEcdsaRegistrationPublicActivationReceiptV1, O as parseRouterAbEcdsaRegistrationRequestFactsV1, Ot as parseActiveWalletSessionV1, T as parseRouterAbEcdsaPostRegistrationSessionActivationResponseV1, X as isPasskeyWalletAuthAuthority, _ as parseRouterAbEcdsaDerivationNormalSigningStateV1, c as ROUTER_AB_ECDSA_DERIVATION_SESSION_ACTIVATION_PATH, j as requireRouterAbEcdsaDerivationNormalSigningStateV1, k as parseRouterAbEcdsaStrictForwardedRegistrationResponseV1, kt as parseWalletSessionOperationCredentialV1, v as parseRouterAbEcdsaDerivationPublicCapabilityV1 } from "./ecdsaPresignLifecycle-BFOTNYCK.js";
|
|
7
|
-
import { d as parseMpcWalletSigningQuotaId, g as parseWalletSessionMintId, h as parseWalletSessionId, m as parseWalletSessionAuthorizationId } from "./capabilityKinds-hvYqa6S_.js";
|
|
8
|
-
import { f as alphabetizeStringify } from "./chains-BMh3btVo.js";
|
|
9
|
-
import { o as sha256Utf8DigestB64u, r as parseDigestB64u } from "./canonicalPrimitives-BTHWz80v.js";
|
|
10
|
-
import { a as thresholdEcdsaChainTargetFromRequest, c as toWalletId, l as walletIdFromWalletProfile, o as thresholdEcdsaChainTargetKey, s as thresholdEcdsaChainTargetsEqual } from "./ecdsaChainTarget-Bl-JWyuw.js";
|
|
11
|
-
import { n as SIGNER_AUTH_METHODS, r as SIGNER_KINDS } from "./signerDomain-IEAVrOrc.js";
|
|
12
|
-
import { O as parseThresholdEcdsaKeyHandle, S as toThresholdEcdsaPublicKeyB64u, a as buildEvmFamilyEcdsaWalletKey, fn as parseWalletAddAuthMethodRegistrationOptions, g as resolveThresholdEcdsaKeyIdFromRecord, h as parseThresholdSigningRootBinding, rt as parseWebAuthnAuthenticatorDeviceInfo, sn as parseRouterAbEd25519YaoRegistrationAdmissionRequestV1, y as toEvmFamilyEcdsaKeyHandle } from "./evmFamilyEcdsaIdentity-Co5XDcEA.js";
|
|
13
|
-
import { u as parseWalletAuthorityV1, w as parseWalletAuthMethodRecordV2 } from "./walletAuthority-BQBxgUBn.js";
|
|
14
|
-
import { a as parseNearEd25519SigningKeyId, l as normalizeRegistrationAuthMethodInput, o as walletIdFromString } from "./registrationIds-DLSdEKSv.js";
|
|
15
|
-
import { d as parsePasskeyCustodyEnvelopeRecord, t as parseWalletCustodyRegistrationOutcome } from "./passkey-custody-Bk1jAknm.js";
|
|
16
|
-
import { l as parseRouterAbEd25519NormalSigningState, u as requireRouterAbEd25519NormalSigningState } from "./signingSessionSeal-Cu-GHm6y.js";
|
|
17
|
-
import { o as normalizeRegistrationSignerPlan, u as registrationSignerSetSelectionFromPlan } from "./registrationSignerPlan-CAikVZZQ.js";
|
|
18
|
-
import { a as parseAddAuthMethodIntentV1, c as sameAddSignerIntentV1, i as computeRegistrationIntentDigestB64u, n as addSignerIntentGrantFromString, o as parseAddSignerIntentV1, s as sameAddAuthMethodIntentV1, t as addAuthMethodIntentGrantFromString } from "./registrationIntent-D0PxwEY4.js";
|
|
19
|
-
import { a as toEcdsaDerivationThresholdKeyId } from "./challengeDelivery-Dd0586fo.js";
|
|
20
|
-
import { n as buildRelayerJsonPostRequestInit, r as normalizeRelayerBaseUrl, t as buildBearerAuthorizationHeader } from "./relayerHttp-VC8Holz1.js";
|
|
21
|
-
//#region ../shared-ts/src/utils/registrationEstablishedSession.ts
|
|
22
|
-
function parseRegistrationEstablishedSessionResultV2(raw) {
|
|
23
|
-
const result = inspectRawObject(raw);
|
|
24
|
-
if (!result || !("kind" in result) || typeof result.kind !== "string") return null;
|
|
25
|
-
switch (result.kind) {
|
|
26
|
-
case "issued": {
|
|
27
|
-
if (!hasExactKeys(result, ["kind", "session"]) || !("session" in result)) return null;
|
|
28
|
-
const session = parseRegistrationEstablishedSessionV2(result.session);
|
|
29
|
-
return session === null ? null : {
|
|
30
|
-
kind: "issued",
|
|
31
|
-
session
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
case "already_committed": {
|
|
35
|
-
if (!hasExactKeys(result, [
|
|
36
|
-
"kind",
|
|
37
|
-
"session",
|
|
38
|
-
"next"
|
|
39
|
-
]) || !("session" in result) || !("next" in result)) return null;
|
|
40
|
-
if (result.next !== "unlock_exact_method") return null;
|
|
41
|
-
const session = parseRegistrationEstablishedSessionProjectionV2(result.session);
|
|
42
|
-
return session === null ? null : {
|
|
43
|
-
kind: "already_committed",
|
|
44
|
-
session,
|
|
45
|
-
next: result.next
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
default: return null;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
function parseRegistrationEstablishedSessionV2(raw) {
|
|
52
|
-
try {
|
|
53
|
-
const record = inspectRawObject(raw);
|
|
54
|
-
if (!record || !hasExactKeys(record, [
|
|
55
|
-
"kind",
|
|
56
|
-
"walletId",
|
|
57
|
-
"authorizationId",
|
|
58
|
-
"walletSessionId",
|
|
59
|
-
"quotaId",
|
|
60
|
-
"expiresAtMs",
|
|
61
|
-
"remainingUses",
|
|
62
|
-
"walletSession",
|
|
63
|
-
"operationCredential",
|
|
64
|
-
"tokens"
|
|
65
|
-
]) || !("kind" in record) || !("walletId" in record) || !("authorizationId" in record) || !("walletSessionId" in record) || !("quotaId" in record) || !("expiresAtMs" in record) || !("remainingUses" in record) || !("walletSession" in record) || !("operationCredential" in record) || !("tokens" in record) || record.kind !== "registration_established_wallet_session_v2") return null;
|
|
66
|
-
const walletId = parseWalletId(record.walletId);
|
|
67
|
-
const walletSessionId = parseWalletSessionId(record.walletSessionId);
|
|
68
|
-
const authorizationId = parseWalletSessionAuthorizationId(record.authorizationId);
|
|
69
|
-
const quotaId = parseMpcWalletSigningQuotaId(record.quotaId);
|
|
70
|
-
if (!walletId.ok || !authorizationId.ok || !walletSessionId.ok || !quotaId.ok) return null;
|
|
71
|
-
const expiresAtMs = parseNonNegativeSafeInteger(record.expiresAtMs);
|
|
72
|
-
const remainingUses = parseNonNegativeSafeInteger(record.remainingUses);
|
|
73
|
-
if (expiresAtMs === null || expiresAtMs <= 0 || remainingUses === null || remainingUses <= 0) return null;
|
|
74
|
-
const walletSession = parseActiveWalletSessionV1(record.walletSession);
|
|
75
|
-
const operationCredential = parseWalletSessionOperationCredentialV1(record.operationCredential);
|
|
76
|
-
if (walletSession.walletId !== walletId.value || walletSession.authorizationId !== authorizationId.value || walletSession.quotaId !== quotaId.value || walletSession.expiresAtMs !== expiresAtMs || operationCredential.walletSessionId !== walletSessionId.value) return null;
|
|
77
|
-
const tokens = parseRegistrationEstablishedSessionProjectionTokensV2(record.tokens);
|
|
78
|
-
if (tokens === null) return null;
|
|
79
|
-
if (!registrationSessionTokensMatchCapabilities(walletSession, tokens)) return null;
|
|
80
|
-
return {
|
|
81
|
-
kind: "registration_established_wallet_session_v2",
|
|
82
|
-
walletId: walletId.value,
|
|
83
|
-
authorizationId: authorizationId.value,
|
|
84
|
-
walletSessionId: walletSessionId.value,
|
|
85
|
-
quotaId: quotaId.value,
|
|
86
|
-
expiresAtMs,
|
|
87
|
-
remainingUses,
|
|
88
|
-
walletSession,
|
|
89
|
-
operationCredential,
|
|
90
|
-
tokens
|
|
91
|
-
};
|
|
92
|
-
} catch {
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
function registrationSessionTokensMatchCapabilities(walletSession, tokens) {
|
|
97
|
-
switch (tokens.kind) {
|
|
98
|
-
case "evm_family_ecdsa": return hasRegistrationSigningCapability(walletSession, "ecdsa_secp256k1", tokens.ecdsa.materialActivation) && !hasUnexpectedRegistrationSigningFamily(walletSession, "ecdsa_secp256k1");
|
|
99
|
-
case "near_ed25519": return hasRegistrationSigningCapability(walletSession, "ed25519", tokens.ed25519.materialActivation) && !hasUnexpectedRegistrationSigningFamily(walletSession, "ed25519");
|
|
100
|
-
case "near_ed25519_and_evm_family_ecdsa": return hasRegistrationSigningCapability(walletSession, "ecdsa_secp256k1", tokens.ecdsa.materialActivation) && hasRegistrationSigningCapability(walletSession, "ed25519", tokens.ed25519.materialActivation) && !hasUnexpectedRegistrationSigningFamily(walletSession, "ed25519", "ecdsa_secp256k1");
|
|
101
|
-
default: return false;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
function hasRegistrationSigningCapability(walletSession, keyFamily, materialActivation) {
|
|
105
|
-
return walletSession.capabilitySubjects.some((subject) => subject.kind === "sign" && subject.keyFamily === keyFamily && mpcMaterialActivationRefsEqual(subject.materialActivation, materialActivation));
|
|
106
|
-
}
|
|
107
|
-
function hasUnexpectedRegistrationSigningFamily(walletSession, ...allowedFamilies) {
|
|
108
|
-
return walletSession.capabilitySubjects.some((subject) => subject.kind === "sign" && !allowedFamilies.includes(subject.keyFamily));
|
|
109
|
-
}
|
|
110
|
-
function parseRegistrationEstablishedSessionProjectionV2(raw) {
|
|
111
|
-
try {
|
|
112
|
-
const record = inspectRawObject(raw);
|
|
113
|
-
if (!record || !hasExactKeys(record, [
|
|
114
|
-
"kind",
|
|
115
|
-
"walletId",
|
|
116
|
-
"authorizationId",
|
|
117
|
-
"walletSessionId",
|
|
118
|
-
"quotaId",
|
|
119
|
-
"expiresAtMs",
|
|
120
|
-
"remainingUses",
|
|
121
|
-
"walletSession",
|
|
122
|
-
"tokens"
|
|
123
|
-
]) || !("kind" in record) || !("walletId" in record) || !("authorizationId" in record) || !("walletSessionId" in record) || !("quotaId" in record) || !("expiresAtMs" in record) || !("remainingUses" in record) || !("walletSession" in record) || !("tokens" in record) || record.kind !== "registration_established_wallet_session_projection_v2") return null;
|
|
124
|
-
const walletId = parseWalletId(record.walletId);
|
|
125
|
-
const authorizationId = parseWalletSessionAuthorizationId(record.authorizationId);
|
|
126
|
-
const walletSessionId = parseWalletSessionId(record.walletSessionId);
|
|
127
|
-
const quotaId = parseMpcWalletSigningQuotaId(record.quotaId);
|
|
128
|
-
if (!walletId.ok || !authorizationId.ok || !walletSessionId.ok || !quotaId.ok) return null;
|
|
129
|
-
if (new Set([
|
|
130
|
-
authorizationId.value,
|
|
131
|
-
walletSessionId.value,
|
|
132
|
-
quotaId.value
|
|
133
|
-
]).size !== 3) return null;
|
|
134
|
-
const expiresAtMs = parseNonNegativeSafeInteger(record.expiresAtMs);
|
|
135
|
-
const remainingUses = parseNonNegativeSafeInteger(record.remainingUses);
|
|
136
|
-
const walletSession = parseActiveWalletSessionV1(record.walletSession);
|
|
137
|
-
const tokens = parseRegistrationEstablishedSessionProjectionTokensV2(record.tokens);
|
|
138
|
-
if (expiresAtMs === null || expiresAtMs <= 0 || remainingUses === null || tokens === null || walletSession.walletId !== walletId.value || walletSession.authorizationId !== authorizationId.value || walletSession.quotaId !== quotaId.value || walletSession.expiresAtMs !== expiresAtMs || !registrationSessionTokensMatchCapabilities(walletSession, tokens)) return null;
|
|
139
|
-
return {
|
|
140
|
-
kind: "registration_established_wallet_session_projection_v2",
|
|
141
|
-
walletId: walletId.value,
|
|
142
|
-
authorizationId: authorizationId.value,
|
|
143
|
-
walletSessionId: walletSessionId.value,
|
|
144
|
-
quotaId: quotaId.value,
|
|
145
|
-
expiresAtMs,
|
|
146
|
-
remainingUses,
|
|
147
|
-
walletSession,
|
|
148
|
-
tokens
|
|
149
|
-
};
|
|
150
|
-
} catch {
|
|
151
|
-
return null;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
function parseRegistrationEstablishedSessionProjectionTokensV2(raw) {
|
|
155
|
-
const record = inspectRawObject(raw);
|
|
156
|
-
if (!record || !("kind" in record) || typeof record.kind !== "string") return null;
|
|
157
|
-
switch (record.kind) {
|
|
158
|
-
case "evm_family_ecdsa": {
|
|
159
|
-
if (!hasExactKeys(record, ["kind", "ecdsa"]) || !("ecdsa" in record)) return null;
|
|
160
|
-
const ecdsa = parseRegistrationEstablishedEcdsaSessionProjectionV2(record.ecdsa);
|
|
161
|
-
return ecdsa === null ? null : {
|
|
162
|
-
kind: "evm_family_ecdsa",
|
|
163
|
-
ecdsa
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
case "near_ed25519": {
|
|
167
|
-
if (!hasExactKeys(record, ["kind", "ed25519"]) || !("ed25519" in record)) return null;
|
|
168
|
-
const ed25519 = parseRegistrationEstablishedEd25519SessionProjectionV2(record.ed25519);
|
|
169
|
-
return ed25519 === null ? null : {
|
|
170
|
-
kind: "near_ed25519",
|
|
171
|
-
ed25519
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
case "near_ed25519_and_evm_family_ecdsa": {
|
|
175
|
-
if (!hasExactKeys(record, [
|
|
176
|
-
"kind",
|
|
177
|
-
"ecdsa",
|
|
178
|
-
"ed25519"
|
|
179
|
-
]) || !("ecdsa" in record) || !("ed25519" in record)) return null;
|
|
180
|
-
const ecdsa = parseRegistrationEstablishedEcdsaSessionProjectionV2(record.ecdsa);
|
|
181
|
-
const ed25519 = parseRegistrationEstablishedEd25519SessionProjectionV2(record.ed25519);
|
|
182
|
-
return ecdsa === null || ed25519 === null ? null : {
|
|
183
|
-
kind: "near_ed25519_and_evm_family_ecdsa",
|
|
184
|
-
ecdsa,
|
|
185
|
-
ed25519
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
default: return null;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
function parseRegistrationEstablishedEcdsaSessionProjectionV2(raw) {
|
|
192
|
-
const record = inspectRawObject(raw);
|
|
193
|
-
if (!record || !hasExactKeys(record, [
|
|
194
|
-
"sessionKind",
|
|
195
|
-
"thresholdSessionId",
|
|
196
|
-
"keyHandle",
|
|
197
|
-
"runtimePolicyScope",
|
|
198
|
-
"materialActivation",
|
|
199
|
-
"routerAbEcdsaDerivationNormalSigning"
|
|
200
|
-
]) || !("sessionKind" in record) || !("thresholdSessionId" in record) || !("keyHandle" in record) || !("runtimePolicyScope" in record) || !("materialActivation" in record) || !("routerAbEcdsaDerivationNormalSigning" in record) || record.sessionKind !== "credential_free_projection_v2") return null;
|
|
201
|
-
const thresholdSessionId = parseThresholdEcdsaSessionId(record.thresholdSessionId);
|
|
202
|
-
if (!thresholdSessionId.ok) return null;
|
|
203
|
-
try {
|
|
204
|
-
const keyHandle = parseThresholdEcdsaKeyHandle(record.keyHandle);
|
|
205
|
-
const runtimePolicyScope = parseRuntimePolicyScopeProjection(record.runtimePolicyScope);
|
|
206
|
-
const materialActivation = parseMpcMaterialActivationRef(record.materialActivation);
|
|
207
|
-
if (!materialActivation.ok) return null;
|
|
208
|
-
const routerAbEcdsaDerivationNormalSigning = parseRouterAbEcdsaDerivationNormalSigningStateV1(record.routerAbEcdsaDerivationNormalSigning);
|
|
209
|
-
if (!routerAbEcdsaDerivationNormalSigning) return null;
|
|
210
|
-
const scopeMaterialActivation = routerAbMpcMaterialActivationRefFromWire(routerAbEcdsaDerivationNormalSigning.scope.material_activation);
|
|
211
|
-
if (!mpcMaterialActivationRefsEqual(materialActivation.value, scopeMaterialActivation)) return null;
|
|
212
|
-
return {
|
|
213
|
-
sessionKind: "credential_free_projection_v2",
|
|
214
|
-
thresholdSessionId: thresholdSessionId.value,
|
|
215
|
-
keyHandle,
|
|
216
|
-
runtimePolicyScope,
|
|
217
|
-
materialActivation: materialActivation.value,
|
|
218
|
-
routerAbEcdsaDerivationNormalSigning
|
|
219
|
-
};
|
|
220
|
-
} catch {
|
|
221
|
-
return null;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
function parseRegistrationEstablishedEd25519SessionProjectionV2(raw) {
|
|
225
|
-
const record = inspectRawObject(raw);
|
|
226
|
-
if (!record || !hasExactKeys(record, [
|
|
227
|
-
"sessionKind",
|
|
228
|
-
"thresholdSessionId",
|
|
229
|
-
"nearAccountId",
|
|
230
|
-
"nearEd25519SigningKeyId",
|
|
231
|
-
"runtimePolicyScope",
|
|
232
|
-
"materialActivation",
|
|
233
|
-
"routerAbNormalSigning"
|
|
234
|
-
]) || !("sessionKind" in record) || !("thresholdSessionId" in record) || !("nearAccountId" in record) || !("nearEd25519SigningKeyId" in record) || !("runtimePolicyScope" in record) || !("materialActivation" in record) || !("routerAbNormalSigning" in record) || record.sessionKind !== "credential_free_projection_v2") return null;
|
|
235
|
-
const thresholdSessionId = parseThresholdEd25519SessionId(record.thresholdSessionId);
|
|
236
|
-
const nearAccountId = parseNearAccountId(record.nearAccountId);
|
|
237
|
-
if (!thresholdSessionId.ok || !nearAccountId.ok) return null;
|
|
238
|
-
try {
|
|
239
|
-
const nearEd25519SigningKeyId = parseNearEd25519SigningKeyId(record.nearEd25519SigningKeyId);
|
|
240
|
-
const runtimePolicyScope = parseRuntimePolicyScopeProjection(record.runtimePolicyScope);
|
|
241
|
-
const materialActivation = parseMpcMaterialActivationRef(record.materialActivation);
|
|
242
|
-
if (!materialActivation.ok) return null;
|
|
243
|
-
const routerAbNormalSigning = parseRouterAbEd25519NormalSigningState(record.routerAbNormalSigning);
|
|
244
|
-
if (!routerAbNormalSigning) return null;
|
|
245
|
-
return {
|
|
246
|
-
sessionKind: "credential_free_projection_v2",
|
|
247
|
-
thresholdSessionId: thresholdSessionId.value,
|
|
248
|
-
nearAccountId: nearAccountId.value,
|
|
249
|
-
nearEd25519SigningKeyId,
|
|
250
|
-
runtimePolicyScope,
|
|
251
|
-
materialActivation: materialActivation.value,
|
|
252
|
-
routerAbNormalSigning
|
|
253
|
-
};
|
|
254
|
-
} catch {
|
|
255
|
-
return null;
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
function parseRuntimePolicyScopeProjection(raw) {
|
|
259
|
-
const record = inspectRawObject(raw);
|
|
260
|
-
if (!record || !hasExactKeys(record, [
|
|
261
|
-
"orgId",
|
|
262
|
-
"projectId",
|
|
263
|
-
"envId",
|
|
264
|
-
"signingRootVersion"
|
|
265
|
-
]) || !("orgId" in record) || !("projectId" in record) || !("envId" in record) || !("signingRootVersion" in record)) throw new Error("runtime policy scope projection is invalid");
|
|
266
|
-
return normalizeRuntimePolicyScope({
|
|
267
|
-
orgId: record.orgId,
|
|
268
|
-
projectId: record.projectId,
|
|
269
|
-
envId: record.envId,
|
|
270
|
-
signingRootVersion: record.signingRootVersion
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
function parseNonNegativeSafeInteger(raw) {
|
|
274
|
-
return typeof raw === "number" && Number.isSafeInteger(raw) && raw >= 0 ? raw : null;
|
|
275
|
-
}
|
|
276
|
-
function inspectRawObject(value) {
|
|
277
|
-
return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
|
|
278
|
-
}
|
|
279
|
-
function hasExactKeys(record, expectedKeys) {
|
|
280
|
-
return Object.keys(record).length === expectedKeys.length && expectedKeys.every((key) => Object.prototype.hasOwnProperty.call(record, key));
|
|
281
|
-
}
|
|
282
|
-
//#endregion
|
|
283
|
-
//#region src/core/signingEngine/session/passkey/ecdsaKeyFactsInventory.ts
|
|
284
|
-
function normalizeEvmOwnerAddress(value) {
|
|
285
|
-
const candidate = String(value || "").trim().toLowerCase();
|
|
286
|
-
return /^0x[0-9a-f]{40}$/.test(candidate) ? candidate : "";
|
|
287
|
-
}
|
|
288
|
-
const EVM_FAMILY_ECDSA_KEY_HANDLE_PATTERN = /^ederivation-key-[A-Za-z0-9_-]+$/;
|
|
289
|
-
function parseCurrentEcdsaKeyHandle(value) {
|
|
290
|
-
const normalized = String(value || "").trim();
|
|
291
|
-
if (!normalized) return { kind: "missing" };
|
|
292
|
-
if (!EVM_FAMILY_ECDSA_KEY_HANDLE_PATTERN.test(normalized)) return { kind: "invalid" };
|
|
293
|
-
return {
|
|
294
|
-
kind: "resolved",
|
|
295
|
-
keyHandle: normalized
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
|
-
function resolveProfileContinuityEcdsaKeyHandle(metadata) {
|
|
299
|
-
const directKeyHandle = parseCurrentEcdsaKeyHandle(metadata.keyHandle);
|
|
300
|
-
const sharedKeyHandle = isObject(metadata.sharedEvmFamilyKey) ? parseCurrentEcdsaKeyHandle(metadata.sharedEvmFamilyKey.keyHandle) : { kind: "missing" };
|
|
301
|
-
if (directKeyHandle.kind === "missing") return {
|
|
302
|
-
kind: "blocked",
|
|
303
|
-
reason: "missing_key_handle"
|
|
304
|
-
};
|
|
305
|
-
if (directKeyHandle.kind === "invalid" || sharedKeyHandle.kind === "invalid") return {
|
|
306
|
-
kind: "blocked",
|
|
307
|
-
reason: "invalid_key_handle"
|
|
308
|
-
};
|
|
309
|
-
if (sharedKeyHandle.kind === "resolved" && directKeyHandle.keyHandle !== sharedKeyHandle.keyHandle) return {
|
|
310
|
-
kind: "blocked",
|
|
311
|
-
reason: "duplicate_key_handles"
|
|
312
|
-
};
|
|
313
|
-
return {
|
|
314
|
-
kind: "resolved",
|
|
315
|
-
keyHandle: directKeyHandle.keyHandle
|
|
316
|
-
};
|
|
317
|
-
}
|
|
318
|
-
function parseProfileContinuityEvmFamilyEcdsaWalletKey(args) {
|
|
319
|
-
const keyFacts = (isObject(args.metadata.sharedEvmFamilyKey) ? args.metadata.sharedEvmFamilyKey : null) || args.metadata;
|
|
320
|
-
const thresholdEcdsaPublicKeyB64u = String(keyFacts.thresholdEcdsaPublicKeyB64u || args.metadata.thresholdEcdsaPublicKeyB64u || "").trim();
|
|
321
|
-
if (!thresholdEcdsaPublicKeyB64u) return null;
|
|
322
|
-
const keyWalletId = String(keyFacts.walletId || "").trim();
|
|
323
|
-
if (!keyWalletId) return null;
|
|
324
|
-
try {
|
|
325
|
-
toThresholdEcdsaPublicKeyB64u(thresholdEcdsaPublicKeyB64u);
|
|
326
|
-
const ecdsaThresholdKeyId = keyFacts.ecdsaThresholdKeyId || args.metadata.ecdsaThresholdKeyId;
|
|
327
|
-
const signingRootId = keyFacts.signingRootId || args.metadata.signingRootId;
|
|
328
|
-
const signingRootVersion = keyFacts.signingRootVersion || args.metadata.signingRootVersion;
|
|
329
|
-
const participantIds = keyFacts.participantIds || args.metadata.participantIds;
|
|
330
|
-
const thresholdOwnerAddress = keyFacts.thresholdOwnerAddress || args.metadata.thresholdOwnerAddress || args.metadata.ownerAddress;
|
|
331
|
-
return buildEvmFamilyEcdsaWalletKey({
|
|
332
|
-
walletId: keyWalletId,
|
|
333
|
-
keyHandle: args.keyHandle,
|
|
334
|
-
chainTarget: args.chainTarget,
|
|
335
|
-
ecdsaThresholdKeyId,
|
|
336
|
-
signingRootId,
|
|
337
|
-
signingRootVersion,
|
|
338
|
-
participantIds,
|
|
339
|
-
thresholdOwnerAddress,
|
|
340
|
-
thresholdEcdsaPublicKeyB64u
|
|
341
|
-
});
|
|
342
|
-
} catch {
|
|
343
|
-
return null;
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
function parseProfilePublicCapability(args) {
|
|
347
|
-
try {
|
|
348
|
-
const publicCapability = parseRouterAbEcdsaDerivationPublicCapabilityV1(args.raw);
|
|
349
|
-
if (String(publicCapability.client_id) !== String(args.walletId) || publicCapability.public_identity.threshold_public_key33_b64u !== args.thresholdEcdsaPublicKeyB64u) return null;
|
|
350
|
-
return publicCapability;
|
|
351
|
-
} catch {
|
|
352
|
-
return null;
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
function parseProfileContinuityEcdsaWarmKey(args) {
|
|
356
|
-
const signer = args.signer;
|
|
357
|
-
if (signer.status !== "active") return { kind: "skipped" };
|
|
358
|
-
if (signer.signerKind !== SIGNER_KINDS.thresholdEcdsa) return { kind: "skipped" };
|
|
359
|
-
if (signer.signerAuthMethod !== SIGNER_AUTH_METHODS.passkey) return { kind: "skipped" };
|
|
360
|
-
const metadata = isObject(signer.metadata) ? signer.metadata : {};
|
|
361
|
-
if (!isObject(metadata.chainTarget)) return {
|
|
362
|
-
kind: "blocked",
|
|
363
|
-
targetKey: "",
|
|
364
|
-
reason: "missing_chain_target"
|
|
365
|
-
};
|
|
366
|
-
let chainTarget;
|
|
367
|
-
try {
|
|
368
|
-
chainTarget = thresholdEcdsaChainTargetFromRequest(metadata.chainTarget);
|
|
369
|
-
} catch (error) {
|
|
370
|
-
return {
|
|
371
|
-
kind: "blocked",
|
|
372
|
-
targetKey: "",
|
|
373
|
-
reason: "invalid_chain_target"
|
|
374
|
-
};
|
|
375
|
-
}
|
|
376
|
-
if (!args.configuredTargets.some((target) => thresholdEcdsaChainTargetsEqual(target, chainTarget))) return { kind: "skipped" };
|
|
377
|
-
const targetKey = thresholdEcdsaChainTargetKey(chainTarget);
|
|
378
|
-
const keyHandleResolution = resolveProfileContinuityEcdsaKeyHandle(metadata);
|
|
379
|
-
if (keyHandleResolution.kind === "blocked") return {
|
|
380
|
-
kind: "blocked",
|
|
381
|
-
targetKey,
|
|
382
|
-
reason: keyHandleResolution.reason
|
|
383
|
-
};
|
|
384
|
-
const walletKey = parseProfileContinuityEvmFamilyEcdsaWalletKey({
|
|
385
|
-
walletId: args.walletId,
|
|
386
|
-
metadata,
|
|
387
|
-
keyHandle: keyHandleResolution.keyHandle,
|
|
388
|
-
chainTarget
|
|
389
|
-
});
|
|
390
|
-
if (!walletKey) return {
|
|
391
|
-
kind: "key_facts_inventory_required",
|
|
392
|
-
chainTarget,
|
|
393
|
-
targetKey,
|
|
394
|
-
keyHandle: keyHandleResolution.keyHandle,
|
|
395
|
-
reason: "missing_key_facts"
|
|
396
|
-
};
|
|
397
|
-
const publicCapability = parseProfilePublicCapability({
|
|
398
|
-
raw: metadata.publicCapability,
|
|
399
|
-
walletId: args.walletId,
|
|
400
|
-
thresholdEcdsaPublicKeyB64u: walletKey.keyFacts.thresholdEcdsaPublicKeyB64u
|
|
401
|
-
});
|
|
402
|
-
return {
|
|
403
|
-
kind: "active_wallet_key",
|
|
404
|
-
chainTarget,
|
|
405
|
-
targetKey,
|
|
406
|
-
walletKey,
|
|
407
|
-
publicCapability: publicCapability ? {
|
|
408
|
-
kind: "persisted_public_capability",
|
|
409
|
-
value: publicCapability
|
|
410
|
-
} : { kind: "missing_public_capability" }
|
|
411
|
-
};
|
|
412
|
-
}
|
|
413
|
-
function parseThresholdEcdsaKeyIdentityRecord(args) {
|
|
414
|
-
const { raw } = args;
|
|
415
|
-
if (!isObject(raw) || !isObject(raw.chainTarget)) return null;
|
|
416
|
-
const rawKey = isObject(raw.key) ? raw.key : raw;
|
|
417
|
-
let chainTarget;
|
|
418
|
-
try {
|
|
419
|
-
chainTarget = thresholdEcdsaChainTargetFromRequest(raw.chainTarget);
|
|
420
|
-
} catch {
|
|
421
|
-
return null;
|
|
422
|
-
}
|
|
423
|
-
const keyHandle = parseCurrentEcdsaKeyHandle(raw.keyHandle);
|
|
424
|
-
const nestedKeyHandle = parseCurrentEcdsaKeyHandle(rawKey.keyHandle);
|
|
425
|
-
const accountAddress = normalizeEvmOwnerAddress(raw.accountAddress);
|
|
426
|
-
const ownerAddress = normalizeEvmOwnerAddress(raw.ownerAddress);
|
|
427
|
-
const keyWalletId = String(rawKey.walletId || "").trim();
|
|
428
|
-
const rawKeySubjectId = String(rawKey.subjectId || "").trim();
|
|
429
|
-
const expectedKeySubjectId = String(walletIdFromWalletProfile({ walletId: args.walletId }));
|
|
430
|
-
const keyRpId = String(rawKey.rpId || "").trim();
|
|
431
|
-
const thresholdEcdsaPublicKeyB64u = String(rawKey.thresholdEcdsaPublicKeyB64u || raw.thresholdEcdsaPublicKeyB64u || "").trim();
|
|
432
|
-
const thresholdOwnerAddress = normalizeEvmOwnerAddress(rawKey.thresholdOwnerAddress || raw.ownerAddress || raw.accountAddress || raw.ethereumAddress);
|
|
433
|
-
if (keyHandle.kind !== "resolved" || nestedKeyHandle.kind !== "resolved" || nestedKeyHandle.keyHandle !== keyHandle.keyHandle || !thresholdEcdsaPublicKeyB64u || !ownerAddress || !accountAddress || !thresholdOwnerAddress || keyWalletId !== String(args.walletId) || rawKeySubjectId && rawKeySubjectId !== expectedKeySubjectId || keyRpId !== args.rpId || thresholdOwnerAddress !== ownerAddress) return null;
|
|
434
|
-
try {
|
|
435
|
-
const publicCapability = parseProfilePublicCapability({
|
|
436
|
-
raw: raw.publicCapability,
|
|
437
|
-
walletId: args.walletId,
|
|
438
|
-
thresholdEcdsaPublicKeyB64u
|
|
439
|
-
});
|
|
440
|
-
if (!publicCapability) return null;
|
|
441
|
-
const canonicalKeyHandle = toEvmFamilyEcdsaKeyHandle(keyHandle.keyHandle);
|
|
442
|
-
const ecdsaThresholdKeyId = resolveThresholdEcdsaKeyIdFromRecord({ record: { ecdsaThresholdKeyId: raw.ecdsaThresholdKeyId } });
|
|
443
|
-
const signingRootBinding = parseThresholdSigningRootBinding({
|
|
444
|
-
signingRootId: raw.signingRootId || rawKey.signingRootId,
|
|
445
|
-
signingRootVersion: raw.signingRootVersion || rawKey.signingRootVersion
|
|
446
|
-
});
|
|
447
|
-
return {
|
|
448
|
-
accountAddress,
|
|
449
|
-
ownerAddress,
|
|
450
|
-
publicCapability,
|
|
451
|
-
walletKey: buildEvmFamilyEcdsaWalletKey({
|
|
452
|
-
walletId: args.walletId,
|
|
453
|
-
keyHandle: canonicalKeyHandle,
|
|
454
|
-
chainTarget,
|
|
455
|
-
ecdsaThresholdKeyId,
|
|
456
|
-
signingRootId: signingRootBinding.signingRootId,
|
|
457
|
-
signingRootVersion: signingRootBinding.signingRootVersion,
|
|
458
|
-
participantIds: rawKey.participantIds || raw.participantIds,
|
|
459
|
-
thresholdOwnerAddress,
|
|
460
|
-
thresholdEcdsaPublicKeyB64u
|
|
461
|
-
})
|
|
462
|
-
};
|
|
463
|
-
} catch {
|
|
464
|
-
return null;
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
function parseThresholdEcdsaKeyIdentityTargets(args) {
|
|
468
|
-
const entries = [];
|
|
469
|
-
for (const raw of args.records) {
|
|
470
|
-
const parsed = parseThresholdEcdsaKeyIdentityRecord({
|
|
471
|
-
walletId: args.walletId,
|
|
472
|
-
rpId: args.rpId,
|
|
473
|
-
raw
|
|
474
|
-
});
|
|
475
|
-
if (!parsed) continue;
|
|
476
|
-
entries.push(parsed);
|
|
477
|
-
}
|
|
478
|
-
return entries;
|
|
479
|
-
}
|
|
480
|
-
//#endregion
|
|
481
|
-
//#region src/core/rpcClients/relayer/thresholdEcdsa.ts
|
|
482
|
-
const WRANGLER_WORKER_RESTARTED_MID_REQUEST$1 = "Your worker restarted mid-request";
|
|
483
|
-
function requireThresholdEcdsaRootShareEpoch(value, field) {
|
|
484
|
-
const parsed = parseRootShareEpoch(value);
|
|
485
|
-
if (!parsed.ok) throw new Error(`${field} is invalid`);
|
|
486
|
-
return parsed.value;
|
|
487
|
-
}
|
|
488
|
-
function requireNonEmptyString(value, field) {
|
|
489
|
-
const text = typeof value === "string" ? value.trim() : "";
|
|
490
|
-
if (!text) throw new Error(`Missing ${field}`);
|
|
491
|
-
return text;
|
|
492
|
-
}
|
|
493
|
-
function requireNumber(value, field) {
|
|
494
|
-
if (typeof value !== "number" || !Number.isFinite(value)) throw new Error(`Missing ${field}`);
|
|
495
|
-
return value;
|
|
496
|
-
}
|
|
497
|
-
function requireNonNegativeInteger(value, field) {
|
|
498
|
-
const number = requireNumber(value, field);
|
|
499
|
-
if (!Number.isSafeInteger(number) || number < 0) throw new Error(`${field} must be a non-negative integer`);
|
|
500
|
-
return number;
|
|
501
|
-
}
|
|
502
|
-
function requireParticipantIds(value) {
|
|
503
|
-
if (!Array.isArray(value) || value.length === 0) throw new Error("participantIds must be a non-empty array");
|
|
504
|
-
return value.map((entry) => {
|
|
505
|
-
const participantId = Number(entry);
|
|
506
|
-
if (!Number.isSafeInteger(participantId) || participantId <= 0) throw new Error("participantIds must contain positive integer ids");
|
|
507
|
-
return participantId;
|
|
508
|
-
});
|
|
509
|
-
}
|
|
510
|
-
function requireExactJsonObject(value, fields, field) {
|
|
511
|
-
if (value === null || typeof value !== "object" || Array.isArray(value) || Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) throw new Error(`Missing ${field}`);
|
|
512
|
-
const expected = new Set(fields);
|
|
513
|
-
const actual = Object.keys(value);
|
|
514
|
-
if (actual.length !== expected.size || actual.some((name) => !expected.has(name))) throw new Error(`${field} contains unexpected fields`);
|
|
515
|
-
return value;
|
|
516
|
-
}
|
|
517
|
-
function readJsonField(value, field, label) {
|
|
518
|
-
const descriptor = Object.getOwnPropertyDescriptor(value, field);
|
|
519
|
-
if (!descriptor || !("value" in descriptor)) throw new Error(`Missing ${label}`);
|
|
520
|
-
return descriptor.value;
|
|
521
|
-
}
|
|
522
|
-
const NON_EXPORT_BOOTSTRAP_RESPONSE_FIELDS = [
|
|
523
|
-
"formatVersion",
|
|
524
|
-
"walletId",
|
|
525
|
-
"evmFamilySigningKeySlotId",
|
|
526
|
-
"ecdsaThresholdKeyId",
|
|
527
|
-
"relayerKeyId",
|
|
528
|
-
"applicationBindingDigestB64u",
|
|
529
|
-
"contextBinding32B64u",
|
|
530
|
-
"publicIdentity",
|
|
531
|
-
"clientShareRetryCounter",
|
|
532
|
-
"relayerShareRetryCounter",
|
|
533
|
-
"publicTranscriptDigest32B64u",
|
|
534
|
-
"keyHandle",
|
|
535
|
-
"signingRootId",
|
|
536
|
-
"signingRootVersion",
|
|
537
|
-
"thresholdEcdsaPublicKeyB64u",
|
|
538
|
-
"ethereumAddress",
|
|
539
|
-
"relayerVerifyingShareB64u",
|
|
540
|
-
"participantIds",
|
|
541
|
-
"thresholdSessionId",
|
|
542
|
-
"activationEpoch",
|
|
543
|
-
"expiresAtMs",
|
|
544
|
-
"expiresAt",
|
|
545
|
-
"remainingUses",
|
|
546
|
-
"routerAbEcdsaDerivationNormalSigning"
|
|
547
|
-
];
|
|
548
|
-
function parseEcdsaDerivationRoleLocalPublicIdentity(value) {
|
|
549
|
-
const record = requireExactJsonObject(value, [
|
|
550
|
-
"derivationClientSharePublicKey33B64u",
|
|
551
|
-
"relayerPublicKey33B64u",
|
|
552
|
-
"groupPublicKey33B64u",
|
|
553
|
-
"ethereumAddress"
|
|
554
|
-
], "publicIdentity");
|
|
555
|
-
return {
|
|
556
|
-
derivationClientSharePublicKey33B64u: requireNonEmptyString(readJsonField(record, "derivationClientSharePublicKey33B64u", "publicIdentity.derivationClientSharePublicKey33B64u"), "publicIdentity.derivationClientSharePublicKey33B64u"),
|
|
557
|
-
relayerPublicKey33B64u: requireNonEmptyString(readJsonField(record, "relayerPublicKey33B64u", "publicIdentity.relayerPublicKey33B64u"), "publicIdentity.relayerPublicKey33B64u"),
|
|
558
|
-
groupPublicKey33B64u: requireNonEmptyString(readJsonField(record, "groupPublicKey33B64u", "publicIdentity.groupPublicKey33B64u"), "publicIdentity.groupPublicKey33B64u"),
|
|
559
|
-
ethereumAddress: requireNonEmptyString(readJsonField(record, "ethereumAddress", "publicIdentity.ethereumAddress"), "publicIdentity.ethereumAddress")
|
|
560
|
-
};
|
|
561
|
-
}
|
|
562
|
-
function parseThresholdEcdsaDerivationRoleLocalBootstrapValue(value) {
|
|
563
|
-
const record = requireExactJsonObject(value, NON_EXPORT_BOOTSTRAP_RESPONSE_FIELDS, "value");
|
|
564
|
-
if (readJsonField(record, "formatVersion", "value.formatVersion") !== "ecdsa-derivation-role-local") throw new Error("value.formatVersion is invalid");
|
|
565
|
-
const walletId = toWalletId(readJsonField(record, "walletId", "value.walletId"));
|
|
566
|
-
const evmFamilySigningKeySlotId = requireNonEmptyString(readJsonField(record, "evmFamilySigningKeySlotId", "value.evmFamilySigningKeySlotId"), "evmFamilySigningKeySlotId");
|
|
567
|
-
const ecdsaThresholdKeyId = toEcdsaDerivationThresholdKeyId(readJsonField(record, "ecdsaThresholdKeyId", "value.ecdsaThresholdKeyId"));
|
|
568
|
-
const relayerKeyId = requireNonEmptyString(readJsonField(record, "relayerKeyId", "value.relayerKeyId"), "relayerKeyId");
|
|
569
|
-
const applicationBindingDigestB64u = requireNonEmptyString(readJsonField(record, "applicationBindingDigestB64u", "value.applicationBindingDigestB64u"), "applicationBindingDigestB64u");
|
|
570
|
-
const contextBinding32B64u = requireNonEmptyString(readJsonField(record, "contextBinding32B64u", "value.contextBinding32B64u"), "contextBinding32B64u");
|
|
571
|
-
const publicIdentity = parseEcdsaDerivationRoleLocalPublicIdentity(readJsonField(record, "publicIdentity", "value.publicIdentity"));
|
|
572
|
-
const clientShareRetryCounter = requireNonNegativeInteger(readJsonField(record, "clientShareRetryCounter", "value.clientShareRetryCounter"), "clientShareRetryCounter");
|
|
573
|
-
const relayerShareRetryCounter = requireNonNegativeInteger(readJsonField(record, "relayerShareRetryCounter", "value.relayerShareRetryCounter"), "relayerShareRetryCounter");
|
|
574
|
-
const keyHandle = requireNonEmptyString(readJsonField(record, "keyHandle", "value.keyHandle"), "keyHandle");
|
|
575
|
-
const signingRootId = requireNonEmptyString(readJsonField(record, "signingRootId", "value.signingRootId"), "signingRootId");
|
|
576
|
-
const signingRootVersion = requireNonEmptyString(readJsonField(record, "signingRootVersion", "value.signingRootVersion"), "signingRootVersion");
|
|
577
|
-
const participantIds = requireParticipantIds(readJsonField(record, "participantIds", "value.participantIds"));
|
|
578
|
-
const thresholdSessionId = requireNonEmptyString(readJsonField(record, "thresholdSessionId", "value.thresholdSessionId"), "thresholdSessionId");
|
|
579
|
-
const activationEpoch = requireThresholdEcdsaRootShareEpoch(readJsonField(record, "activationEpoch", "value.activationEpoch"), "activationEpoch");
|
|
580
|
-
const expiresAtMs = requireNumber(readJsonField(record, "expiresAtMs", "value.expiresAtMs"), "expiresAtMs");
|
|
581
|
-
const routerAbEcdsaDerivationNormalSigning = requireRouterAbEcdsaDerivationNormalSigningStateV1(readJsonField(record, "routerAbEcdsaDerivationNormalSigning", "value.routerAbEcdsaDerivationNormalSigning"));
|
|
582
|
-
return {
|
|
583
|
-
formatVersion: "ecdsa-derivation-role-local",
|
|
584
|
-
walletId,
|
|
585
|
-
evmFamilySigningKeySlotId,
|
|
586
|
-
ecdsaThresholdKeyId,
|
|
587
|
-
relayerKeyId,
|
|
588
|
-
applicationBindingDigestB64u,
|
|
589
|
-
contextBinding32B64u,
|
|
590
|
-
publicIdentity,
|
|
591
|
-
clientShareRetryCounter,
|
|
592
|
-
relayerShareRetryCounter,
|
|
593
|
-
publicTranscriptDigest32B64u: requireNonEmptyString(readJsonField(record, "publicTranscriptDigest32B64u", "value.publicTranscriptDigest32B64u"), "publicTranscriptDigest32B64u"),
|
|
594
|
-
keyHandle,
|
|
595
|
-
signingRootId,
|
|
596
|
-
signingRootVersion,
|
|
597
|
-
thresholdEcdsaPublicKeyB64u: requireNonEmptyString(readJsonField(record, "thresholdEcdsaPublicKeyB64u", "value.thresholdEcdsaPublicKeyB64u"), "thresholdEcdsaPublicKeyB64u"),
|
|
598
|
-
ethereumAddress: requireNonEmptyString(readJsonField(record, "ethereumAddress", "value.ethereumAddress"), "ethereumAddress"),
|
|
599
|
-
relayerVerifyingShareB64u: requireNonEmptyString(readJsonField(record, "relayerVerifyingShareB64u", "value.relayerVerifyingShareB64u"), "relayerVerifyingShareB64u"),
|
|
600
|
-
participantIds,
|
|
601
|
-
thresholdSessionId,
|
|
602
|
-
activationEpoch,
|
|
603
|
-
expiresAtMs,
|
|
604
|
-
expiresAt: requireNonEmptyString(readJsonField(record, "expiresAt", "value.expiresAt"), "expiresAt"),
|
|
605
|
-
remainingUses: requireNumber(readJsonField(record, "remainingUses", "value.remainingUses"), "remainingUses"),
|
|
606
|
-
routerAbEcdsaDerivationNormalSigning
|
|
607
|
-
};
|
|
608
|
-
}
|
|
609
|
-
function resolveBearerToken(auth) {
|
|
610
|
-
if (!auth) return "";
|
|
611
|
-
if (auth.kind === "opaque_wallet_session_operation_credential_v1") return auth.token;
|
|
612
|
-
return String(auth.token || "").trim();
|
|
613
|
-
}
|
|
614
|
-
function buildRelayRequestInit(args) {
|
|
615
|
-
const bearerToken = resolveBearerToken(args.auth);
|
|
616
|
-
const publishableKeyAuth = String(args.publishableKeyAuth || "").trim();
|
|
617
|
-
return buildRelayerJsonPostRequestInit({
|
|
618
|
-
headers: bearerToken ? buildBearerAuthorizationHeader({
|
|
619
|
-
token: bearerToken,
|
|
620
|
-
missingMessage: "bearer token is required"
|
|
621
|
-
}) : publishableKeyAuth ? buildBearerAuthorizationHeader({
|
|
622
|
-
token: publishableKeyAuth,
|
|
623
|
-
missingMessage: "publishable key auth is required"
|
|
624
|
-
}) : void 0,
|
|
625
|
-
body: args.body
|
|
626
|
-
});
|
|
627
|
-
}
|
|
628
|
-
function defaultRelayerFailureResponse(status) {
|
|
629
|
-
return {
|
|
630
|
-
code: "http_error",
|
|
631
|
-
message: `HTTP ${status}`
|
|
632
|
-
};
|
|
633
|
-
}
|
|
634
|
-
function decodeRelayerFailureResponse(value) {
|
|
635
|
-
try {
|
|
636
|
-
const record = requireExactJsonObject(value, [
|
|
637
|
-
"ok",
|
|
638
|
-
"code",
|
|
639
|
-
"message"
|
|
640
|
-
], "relayer failure");
|
|
641
|
-
if (readJsonField(record, "ok", "relayer failure.ok") !== false) throw new Error("invalid ok");
|
|
642
|
-
const code = readJsonField(record, "code", "relayer failure.code");
|
|
643
|
-
const message = readJsonField(record, "message", "relayer failure.message");
|
|
644
|
-
if (typeof code !== "string" || !code.trim()) throw new Error("invalid code");
|
|
645
|
-
if (typeof message !== "string" || !message.trim()) throw new Error("invalid message");
|
|
646
|
-
return {
|
|
647
|
-
code: code.trim(),
|
|
648
|
-
message: message.trim()
|
|
649
|
-
};
|
|
650
|
-
} catch {
|
|
651
|
-
return null;
|
|
652
|
-
}
|
|
653
|
-
}
|
|
654
|
-
async function parseRelayJson(response) {
|
|
655
|
-
const text = await readResponseText$1(response);
|
|
656
|
-
if (isWranglerWorkerRestartedMidRequestResponse$1(text)) return {
|
|
657
|
-
ok: false,
|
|
658
|
-
code: "worker_restarted_mid_request",
|
|
659
|
-
message: WRANGLER_WORKER_RESTARTED_MID_REQUEST$1
|
|
660
|
-
};
|
|
661
|
-
return parseJsonText$1(text);
|
|
662
|
-
}
|
|
663
|
-
async function activateRouterAbEcdsaPostRegistrationSession(relayServerUrl, input) {
|
|
664
|
-
try {
|
|
665
|
-
const base = normalizeRelayerBaseUrl(relayServerUrl);
|
|
666
|
-
if (!base) throw new Error("Missing relayServerUrl");
|
|
667
|
-
const response = await fetch(`${base}${ROUTER_AB_ECDSA_DERIVATION_SESSION_ACTIVATION_PATH}`, buildRelayRequestInit({
|
|
668
|
-
auth: input.auth,
|
|
669
|
-
body: input.request
|
|
670
|
-
}));
|
|
671
|
-
const json = await parseRelayJson(response);
|
|
672
|
-
if (!response.ok) {
|
|
673
|
-
const failure = decodeRelayerFailureResponse(json) ?? defaultRelayerFailureResponse(response.status);
|
|
674
|
-
return {
|
|
675
|
-
ok: false,
|
|
676
|
-
code: failure.code,
|
|
677
|
-
message: failure.message
|
|
678
|
-
};
|
|
679
|
-
}
|
|
680
|
-
return {
|
|
681
|
-
ok: true,
|
|
682
|
-
value: parseRouterAbEcdsaPostRegistrationSessionActivationResponseV1(json)
|
|
683
|
-
};
|
|
684
|
-
} catch (error) {
|
|
685
|
-
return {
|
|
686
|
-
ok: false,
|
|
687
|
-
error: errorMessage(error) || "Router A/B ECDSA session activation failed"
|
|
688
|
-
};
|
|
689
|
-
}
|
|
690
|
-
}
|
|
691
|
-
async function readResponseText$1(response) {
|
|
692
|
-
try {
|
|
693
|
-
return await response.text();
|
|
694
|
-
} catch {
|
|
695
|
-
return "";
|
|
696
|
-
}
|
|
697
|
-
}
|
|
698
|
-
function isWranglerWorkerRestartedMidRequestResponse$1(text) {
|
|
699
|
-
return text.includes(WRANGLER_WORKER_RESTARTED_MID_REQUEST$1);
|
|
700
|
-
}
|
|
701
|
-
function parseJsonText$1(text) {
|
|
702
|
-
try {
|
|
703
|
-
return JSON.parse(text || "{}");
|
|
704
|
-
} catch (error) {
|
|
705
|
-
throw new Error(`Failed to parse threshold ECDSA relayer response JSON: ${errorMessage(error)}`);
|
|
706
|
-
}
|
|
707
|
-
}
|
|
708
|
-
//#endregion
|
|
709
|
-
//#region src/core/rpcClients/relayer/walletRegistrationTerminalResponse.ts
|
|
710
|
-
function requireResponseString(args) {
|
|
711
|
-
const value = String(args.value || "").trim();
|
|
712
|
-
if (!value) throw new Error(`${args.responseName} response missing ${args.field}`);
|
|
713
|
-
return value;
|
|
714
|
-
}
|
|
715
|
-
function requireResponseRecord(args) {
|
|
716
|
-
if (!isPlainObject(args.value)) throw new Error(`${args.responseName} response missing ${args.field}`);
|
|
717
|
-
return args.value;
|
|
718
|
-
}
|
|
719
|
-
function assertExactResponseKeys(record, allowedKeys, responseName) {
|
|
720
|
-
const allowed = new Set(allowedKeys);
|
|
721
|
-
for (const key of Object.keys(record)) if (!allowed.has(key)) throw new Error(`${responseName} response contains unexpected ${key}`);
|
|
722
|
-
}
|
|
723
|
-
function requireResponseSafeInteger(args) {
|
|
724
|
-
const value = Number(args.value);
|
|
725
|
-
if (!Number.isSafeInteger(value) || value < args.minimum) throw new Error(`${args.responseName} response has invalid ${args.field}`);
|
|
726
|
-
return value;
|
|
727
|
-
}
|
|
728
|
-
function requireResponseParticipantPair(value, responseName) {
|
|
729
|
-
if (!Array.isArray(value) || value.length !== 2) throw new Error(`${responseName} response has invalid participantIds`);
|
|
730
|
-
const first = requireResponseSafeInteger({
|
|
731
|
-
responseName,
|
|
732
|
-
field: "participantIds[0]",
|
|
733
|
-
value: value[0],
|
|
734
|
-
minimum: 1
|
|
735
|
-
});
|
|
736
|
-
const second = requireResponseSafeInteger({
|
|
737
|
-
responseName,
|
|
738
|
-
field: "participantIds[1]",
|
|
739
|
-
value: value[1],
|
|
740
|
-
minimum: 1
|
|
741
|
-
});
|
|
742
|
-
if (first === second) throw new Error(`${responseName} response has duplicate participantIds`);
|
|
743
|
-
if (first !== 1 || second !== 2) throw new Error(`${responseName} response has unsupported participantIds`);
|
|
744
|
-
return [first, second];
|
|
745
|
-
}
|
|
746
|
-
function requireResponseRpId(value, responseName) {
|
|
747
|
-
const parsed = parseWebAuthnRpId(value);
|
|
748
|
-
if (!parsed.ok) throw new Error(`${responseName} response has invalid rpId`);
|
|
749
|
-
return parsed.value;
|
|
750
|
-
}
|
|
751
|
-
function parseWalletRegistrationEd25519AuthorityScope(value, responseName) {
|
|
752
|
-
const authorityScope = requireResponseRecord({
|
|
753
|
-
responseName,
|
|
754
|
-
field: "authorityScope",
|
|
755
|
-
value
|
|
756
|
-
});
|
|
757
|
-
switch (authorityScope.kind) {
|
|
758
|
-
case "passkey_rp":
|
|
759
|
-
assertExactResponseKeys(authorityScope, ["kind", "rpId"], responseName);
|
|
760
|
-
return {
|
|
761
|
-
kind: "passkey_rp",
|
|
762
|
-
rpId: requireResponseRpId(authorityScope.rpId, responseName)
|
|
763
|
-
};
|
|
764
|
-
case "email_otp":
|
|
765
|
-
assertExactResponseKeys(authorityScope, [
|
|
766
|
-
"kind",
|
|
767
|
-
"provider",
|
|
768
|
-
"providerUserId"
|
|
769
|
-
], responseName);
|
|
770
|
-
if (authorityScope.provider !== "google" && authorityScope.provider !== "email") throw new Error(`${responseName} response has invalid authorityScope provider`);
|
|
771
|
-
return {
|
|
772
|
-
kind: "email_otp",
|
|
773
|
-
provider: authorityScope.provider,
|
|
774
|
-
providerUserId: requireResponseString({
|
|
775
|
-
responseName,
|
|
776
|
-
field: "authorityScope.providerUserId",
|
|
777
|
-
value: authorityScope.providerUserId
|
|
778
|
-
})
|
|
779
|
-
};
|
|
780
|
-
default: throw new Error(`${responseName} response has invalid authorityScope`);
|
|
781
|
-
}
|
|
782
|
-
}
|
|
783
|
-
function parseWalletEd25519YaoSignerPublicResult(value, responseName) {
|
|
784
|
-
const ed25519 = requireResponseRecord({
|
|
785
|
-
responseName,
|
|
786
|
-
field: "ed25519",
|
|
787
|
-
value
|
|
788
|
-
});
|
|
789
|
-
assertExactResponseKeys(ed25519, [
|
|
790
|
-
"signerSlot",
|
|
791
|
-
"nearAccountId",
|
|
792
|
-
"nearEd25519SigningKeyId",
|
|
793
|
-
"publicKey",
|
|
794
|
-
"relayerKeyId",
|
|
795
|
-
"keyVersion",
|
|
796
|
-
"recoveryExportCapable",
|
|
797
|
-
"participantIds"
|
|
798
|
-
], responseName);
|
|
799
|
-
if (ed25519.recoveryExportCapable !== true) throw new Error(`${responseName} response is not recovery/export capable`);
|
|
800
|
-
return {
|
|
801
|
-
signerSlot: requireResponseSafeInteger({
|
|
802
|
-
responseName,
|
|
803
|
-
field: "ed25519.signerSlot",
|
|
804
|
-
value: ed25519.signerSlot,
|
|
805
|
-
minimum: 1
|
|
806
|
-
}),
|
|
807
|
-
nearAccountId: requireResponseString({
|
|
808
|
-
responseName,
|
|
809
|
-
field: "ed25519.nearAccountId",
|
|
810
|
-
value: ed25519.nearAccountId
|
|
811
|
-
}),
|
|
812
|
-
nearEd25519SigningKeyId: requireResponseString({
|
|
813
|
-
responseName,
|
|
814
|
-
field: "ed25519.nearEd25519SigningKeyId",
|
|
815
|
-
value: ed25519.nearEd25519SigningKeyId
|
|
816
|
-
}),
|
|
817
|
-
publicKey: requireResponseString({
|
|
818
|
-
responseName,
|
|
819
|
-
field: "ed25519.publicKey",
|
|
820
|
-
value: ed25519.publicKey
|
|
821
|
-
}),
|
|
822
|
-
relayerKeyId: requireResponseString({
|
|
823
|
-
responseName,
|
|
824
|
-
field: "ed25519.relayerKeyId",
|
|
825
|
-
value: ed25519.relayerKeyId
|
|
826
|
-
}),
|
|
827
|
-
keyVersion: requireResponseString({
|
|
828
|
-
responseName,
|
|
829
|
-
field: "ed25519.keyVersion",
|
|
830
|
-
value: ed25519.keyVersion
|
|
831
|
-
}),
|
|
832
|
-
recoveryExportCapable: true,
|
|
833
|
-
participantIds: requireResponseParticipantPair(ed25519.participantIds, responseName)
|
|
834
|
-
};
|
|
835
|
-
}
|
|
836
|
-
function parseWalletRegistrationEd25519Result(value, responseName) {
|
|
837
|
-
const ed25519 = requireResponseRecord({
|
|
838
|
-
responseName,
|
|
839
|
-
field: "ed25519",
|
|
840
|
-
value
|
|
841
|
-
});
|
|
842
|
-
assertExactResponseKeys(ed25519, [
|
|
843
|
-
"signerSlot",
|
|
844
|
-
"nearAccountId",
|
|
845
|
-
"nearEd25519SigningKeyId",
|
|
846
|
-
"publicKey",
|
|
847
|
-
"relayerKeyId",
|
|
848
|
-
"keyVersion",
|
|
849
|
-
"recoveryExportCapable",
|
|
850
|
-
"participantIds",
|
|
851
|
-
"thresholdSessionId",
|
|
852
|
-
"runtimePolicyScope",
|
|
853
|
-
"routerAbNormalSigning"
|
|
854
|
-
], responseName);
|
|
855
|
-
const publicResult = parseWalletEd25519YaoSignerPublicResult({
|
|
856
|
-
signerSlot: ed25519.signerSlot,
|
|
857
|
-
nearAccountId: ed25519.nearAccountId,
|
|
858
|
-
nearEd25519SigningKeyId: ed25519.nearEd25519SigningKeyId,
|
|
859
|
-
publicKey: ed25519.publicKey,
|
|
860
|
-
relayerKeyId: ed25519.relayerKeyId,
|
|
861
|
-
keyVersion: ed25519.keyVersion,
|
|
862
|
-
recoveryExportCapable: ed25519.recoveryExportCapable,
|
|
863
|
-
participantIds: ed25519.participantIds
|
|
864
|
-
}, responseName);
|
|
865
|
-
const thresholdSessionId = parseThresholdEd25519SessionId(ed25519.thresholdSessionId);
|
|
866
|
-
if (!thresholdSessionId.ok) throw new Error(`${responseName} response has invalid ed25519.thresholdSessionId`);
|
|
867
|
-
const runtimePolicyScope = normalizeThresholdRuntimePolicyScope(ed25519.runtimePolicyScope);
|
|
868
|
-
if (!runtimePolicyScope) throw new Error(`${responseName} response has invalid ed25519.runtimePolicyScope`);
|
|
869
|
-
return {
|
|
870
|
-
...publicResult,
|
|
871
|
-
thresholdSessionId: thresholdSessionId.value,
|
|
872
|
-
runtimePolicyScope,
|
|
873
|
-
routerAbNormalSigning: requireRouterAbEd25519NormalSigningState(ed25519.routerAbNormalSigning)
|
|
874
|
-
};
|
|
875
|
-
}
|
|
876
|
-
function parseWalletAddSignerChainTarget(value, responseName) {
|
|
877
|
-
const target = requireResponseRecord({
|
|
878
|
-
responseName,
|
|
879
|
-
field: "chainTarget",
|
|
880
|
-
value
|
|
881
|
-
});
|
|
882
|
-
switch (target.kind) {
|
|
883
|
-
case "evm":
|
|
884
|
-
assertExactResponseKeys(target, [
|
|
885
|
-
"kind",
|
|
886
|
-
"namespace",
|
|
887
|
-
"chainId",
|
|
888
|
-
"networkSlug"
|
|
889
|
-
], responseName);
|
|
890
|
-
return thresholdEcdsaChainTargetFromRequest(target);
|
|
891
|
-
case "tempo":
|
|
892
|
-
assertExactResponseKeys(target, [
|
|
893
|
-
"kind",
|
|
894
|
-
"chainId",
|
|
895
|
-
"networkSlug"
|
|
896
|
-
], responseName);
|
|
897
|
-
return thresholdEcdsaChainTargetFromRequest(target);
|
|
898
|
-
default: throw new Error(`${responseName} response has invalid chainTarget kind`);
|
|
899
|
-
}
|
|
900
|
-
}
|
|
901
|
-
function parseWalletAddSignerEcdsaWalletKey(value, responseName) {
|
|
902
|
-
const key = requireResponseRecord({
|
|
903
|
-
responseName,
|
|
904
|
-
field: "ecdsa.walletKeys[]",
|
|
905
|
-
value
|
|
906
|
-
});
|
|
907
|
-
assertExactResponseKeys(key, [
|
|
908
|
-
"keyScope",
|
|
909
|
-
"chainTarget",
|
|
910
|
-
"walletId",
|
|
911
|
-
"evmFamilySigningKeySlotId",
|
|
912
|
-
"keyHandle",
|
|
913
|
-
"ecdsaThresholdKeyId",
|
|
914
|
-
"signingRootId",
|
|
915
|
-
"signingRootVersion",
|
|
916
|
-
"thresholdEcdsaPublicKeyB64u",
|
|
917
|
-
"thresholdOwnerAddress",
|
|
918
|
-
"relayerKeyId",
|
|
919
|
-
"relayerVerifyingShareB64u",
|
|
920
|
-
"contextBinding32B64u",
|
|
921
|
-
"derivationClientSharePublicKey33B64u",
|
|
922
|
-
"clientShareRetryCounter",
|
|
923
|
-
"relayerShareRetryCounter",
|
|
924
|
-
"participantIds",
|
|
925
|
-
"publicCapability"
|
|
926
|
-
], responseName);
|
|
927
|
-
if (key.keyScope !== "evm-family") throw new Error(`${responseName} response has invalid keyScope`);
|
|
928
|
-
return {
|
|
929
|
-
keyScope: "evm-family",
|
|
930
|
-
chainTarget: parseWalletAddSignerChainTarget(key.chainTarget, responseName),
|
|
931
|
-
walletId: requireResponseString({
|
|
932
|
-
responseName,
|
|
933
|
-
field: "walletId",
|
|
934
|
-
value: key.walletId
|
|
935
|
-
}),
|
|
936
|
-
evmFamilySigningKeySlotId: requireResponseString({
|
|
937
|
-
responseName,
|
|
938
|
-
field: "evmFamilySigningKeySlotId",
|
|
939
|
-
value: key.evmFamilySigningKeySlotId
|
|
940
|
-
}),
|
|
941
|
-
keyHandle: requireResponseString({
|
|
942
|
-
responseName,
|
|
943
|
-
field: "keyHandle",
|
|
944
|
-
value: key.keyHandle
|
|
945
|
-
}),
|
|
946
|
-
ecdsaThresholdKeyId: requireResponseString({
|
|
947
|
-
responseName,
|
|
948
|
-
field: "ecdsaThresholdKeyId",
|
|
949
|
-
value: key.ecdsaThresholdKeyId
|
|
950
|
-
}),
|
|
951
|
-
signingRootId: requireResponseString({
|
|
952
|
-
responseName,
|
|
953
|
-
field: "signingRootId",
|
|
954
|
-
value: key.signingRootId
|
|
955
|
-
}),
|
|
956
|
-
signingRootVersion: requireResponseString({
|
|
957
|
-
responseName,
|
|
958
|
-
field: "signingRootVersion",
|
|
959
|
-
value: key.signingRootVersion
|
|
960
|
-
}),
|
|
961
|
-
thresholdEcdsaPublicKeyB64u: requireResponseString({
|
|
962
|
-
responseName,
|
|
963
|
-
field: "thresholdEcdsaPublicKeyB64u",
|
|
964
|
-
value: key.thresholdEcdsaPublicKeyB64u
|
|
965
|
-
}),
|
|
966
|
-
thresholdOwnerAddress: requireResponseString({
|
|
967
|
-
responseName,
|
|
968
|
-
field: "thresholdOwnerAddress",
|
|
969
|
-
value: key.thresholdOwnerAddress
|
|
970
|
-
}),
|
|
971
|
-
relayerKeyId: requireResponseString({
|
|
972
|
-
responseName,
|
|
973
|
-
field: "relayerKeyId",
|
|
974
|
-
value: key.relayerKeyId
|
|
975
|
-
}),
|
|
976
|
-
relayerVerifyingShareB64u: requireResponseString({
|
|
977
|
-
responseName,
|
|
978
|
-
field: "relayerVerifyingShareB64u",
|
|
979
|
-
value: key.relayerVerifyingShareB64u
|
|
980
|
-
}),
|
|
981
|
-
contextBinding32B64u: requireResponseString({
|
|
982
|
-
responseName,
|
|
983
|
-
field: "contextBinding32B64u",
|
|
984
|
-
value: key.contextBinding32B64u
|
|
985
|
-
}),
|
|
986
|
-
derivationClientSharePublicKey33B64u: requireResponseString({
|
|
987
|
-
responseName,
|
|
988
|
-
field: "derivationClientSharePublicKey33B64u",
|
|
989
|
-
value: key.derivationClientSharePublicKey33B64u
|
|
990
|
-
}),
|
|
991
|
-
clientShareRetryCounter: requireResponseSafeInteger({
|
|
992
|
-
responseName,
|
|
993
|
-
field: "clientShareRetryCounter",
|
|
994
|
-
value: key.clientShareRetryCounter,
|
|
995
|
-
minimum: 0
|
|
996
|
-
}),
|
|
997
|
-
relayerShareRetryCounter: requireResponseSafeInteger({
|
|
998
|
-
responseName,
|
|
999
|
-
field: "relayerShareRetryCounter",
|
|
1000
|
-
value: key.relayerShareRetryCounter,
|
|
1001
|
-
minimum: 0
|
|
1002
|
-
}),
|
|
1003
|
-
participantIds: requireResponseParticipantPair(key.participantIds, responseName),
|
|
1004
|
-
publicCapability: parseRouterAbEcdsaDerivationPublicCapabilityV1(key.publicCapability)
|
|
1005
|
-
};
|
|
1006
|
-
}
|
|
1007
|
-
function parseWalletRegistrationRouteTimingName(value) {
|
|
1008
|
-
switch (value) {
|
|
1009
|
-
case "registrationIntentLoadMs":
|
|
1010
|
-
case "registrationIntentDigestMs":
|
|
1011
|
-
case "registrationIntentConsumeMs":
|
|
1012
|
-
case "registrationAttemptGateMs":
|
|
1013
|
-
case "registrationPreparationPersistMs":
|
|
1014
|
-
case "registrationPreparationLoadMs":
|
|
1015
|
-
case "registrationPreparationConsumeMs":
|
|
1016
|
-
case "registrationPreparationScopeCheckMs":
|
|
1017
|
-
case "registrationAuthorityVerifyMs":
|
|
1018
|
-
case "registrationEcdsaPrepareMs":
|
|
1019
|
-
case "registrationCeremonyPersistMs":
|
|
1020
|
-
case "registerPrepareTotalMs":
|
|
1021
|
-
case "registerStartTotalMs":
|
|
1022
|
-
case "registrationEcdsaRespondMs":
|
|
1023
|
-
case "registrationFinalizeReplayLoadMs":
|
|
1024
|
-
case "registrationCeremonyLoadMs":
|
|
1025
|
-
case "registrationEcdsaBootstrapVerifyMs":
|
|
1026
|
-
case "sponsoredNearAccountCreateMs":
|
|
1027
|
-
case "registrationKeygenMs":
|
|
1028
|
-
case "registrationEmailOtpEnrollmentPlanMs":
|
|
1029
|
-
case "relaySessionMintMs":
|
|
1030
|
-
case "relayGoogleEmailOtpActivationPlanMs":
|
|
1031
|
-
case "relayPersistenceMs":
|
|
1032
|
-
case "registrationFinalizeReplayCacheMs":
|
|
1033
|
-
case "registerFinalizeTotalMs": return value;
|
|
1034
|
-
default: throw new Error("Wallet registration finalize response has invalid diagnostics timing name");
|
|
1035
|
-
}
|
|
1036
|
-
}
|
|
1037
|
-
function parseWalletRegistrationFinalizeDiagnostics(value) {
|
|
1038
|
-
const responseName = "Wallet registration finalize";
|
|
1039
|
-
const diagnostics = requireResponseRecord({
|
|
1040
|
-
responseName,
|
|
1041
|
-
field: "registrationDiagnostics",
|
|
1042
|
-
value
|
|
1043
|
-
});
|
|
1044
|
-
assertExactResponseKeys(diagnostics, [
|
|
1045
|
-
"kind",
|
|
1046
|
-
"route",
|
|
1047
|
-
"entries"
|
|
1048
|
-
], responseName);
|
|
1049
|
-
if (diagnostics.kind !== "wallet_registration_route_diagnostics_v1" || diagnostics.route !== "wallets_register_finalize" || !Array.isArray(diagnostics.entries)) throw new Error(`${responseName} response has invalid registrationDiagnostics`);
|
|
1050
|
-
return {
|
|
1051
|
-
kind: "wallet_registration_route_diagnostics_v1",
|
|
1052
|
-
route: "wallets_register_finalize",
|
|
1053
|
-
entries: diagnostics.entries.map((entryValue) => {
|
|
1054
|
-
const entry = requireResponseRecord({
|
|
1055
|
-
responseName,
|
|
1056
|
-
field: "registrationDiagnostics.entries[]",
|
|
1057
|
-
value: entryValue
|
|
1058
|
-
});
|
|
1059
|
-
assertExactResponseKeys(entry, ["name", "durationMs"], responseName);
|
|
1060
|
-
if (typeof entry.durationMs !== "number" || !Number.isFinite(entry.durationMs) || entry.durationMs < 0) throw new Error(`${responseName} response has invalid diagnostics durationMs`);
|
|
1061
|
-
return {
|
|
1062
|
-
name: parseWalletRegistrationRouteTimingName(entry.name),
|
|
1063
|
-
durationMs: entry.durationMs
|
|
1064
|
-
};
|
|
1065
|
-
})
|
|
1066
|
-
};
|
|
1067
|
-
}
|
|
1068
|
-
function parseWalletRegistrationFinalizeAuthority(value) {
|
|
1069
|
-
const responseName = "Wallet registration finalize";
|
|
1070
|
-
const authority = requireResponseRecord({
|
|
1071
|
-
responseName,
|
|
1072
|
-
field: "authority",
|
|
1073
|
-
value
|
|
1074
|
-
});
|
|
1075
|
-
assertExactResponseKeys(authority, [
|
|
1076
|
-
"walletId",
|
|
1077
|
-
"factor",
|
|
1078
|
-
"verifier",
|
|
1079
|
-
"bindingId"
|
|
1080
|
-
], responseName);
|
|
1081
|
-
const factor = requireResponseRecord({
|
|
1082
|
-
responseName,
|
|
1083
|
-
field: "authority.factor",
|
|
1084
|
-
value: authority.factor
|
|
1085
|
-
});
|
|
1086
|
-
const verifier = requireResponseRecord({
|
|
1087
|
-
responseName,
|
|
1088
|
-
field: "authority.verifier",
|
|
1089
|
-
value: authority.verifier
|
|
1090
|
-
});
|
|
1091
|
-
switch (factor.kind) {
|
|
1092
|
-
case "passkey":
|
|
1093
|
-
assertExactResponseKeys(factor, ["kind", "credentialIdB64u"], responseName);
|
|
1094
|
-
assertExactResponseKeys(verifier, ["kind", "rpId"], responseName);
|
|
1095
|
-
break;
|
|
1096
|
-
case "email_otp":
|
|
1097
|
-
assertExactResponseKeys(factor, [
|
|
1098
|
-
"kind",
|
|
1099
|
-
"provider",
|
|
1100
|
-
"providerUserId"
|
|
1101
|
-
], responseName);
|
|
1102
|
-
assertExactResponseKeys(verifier, ["kind", "emailHashHex"], responseName);
|
|
1103
|
-
break;
|
|
1104
|
-
default: throw new Error(`${responseName} response has invalid authority factor`);
|
|
1105
|
-
}
|
|
1106
|
-
const parsed = parseWalletAuthAuthority(authority);
|
|
1107
|
-
if (!parsed) throw new Error(`${responseName} response has invalid authority`);
|
|
1108
|
-
return parsed;
|
|
1109
|
-
}
|
|
1110
|
-
function parseWalletRegistrationFinalizeAuthorityBranch(args) {
|
|
1111
|
-
const responseName = "Wallet registration finalize";
|
|
1112
|
-
const authMethod = requireResponseRecord({
|
|
1113
|
-
responseName,
|
|
1114
|
-
field: "authMethod",
|
|
1115
|
-
value: args.response.authMethod
|
|
1116
|
-
});
|
|
1117
|
-
if (String(args.authority.walletId) !== String(args.walletId)) throw new Error(`${responseName} response authority wallet mismatch`);
|
|
1118
|
-
switch (authMethod.kind) {
|
|
1119
|
-
case "passkey": {
|
|
1120
|
-
assertExactResponseKeys(authMethod, [
|
|
1121
|
-
"kind",
|
|
1122
|
-
"credentialIdB64u",
|
|
1123
|
-
"credentialPublicKeyB64u"
|
|
1124
|
-
], responseName);
|
|
1125
|
-
if (!isPasskeyWalletAuthAuthority(args.authority)) throw new Error(`${responseName} response has inconsistent passkey authority`);
|
|
1126
|
-
const rpId = requireResponseRpId(args.response.rpId, responseName);
|
|
1127
|
-
const credentialIdB64u = requireResponseString({
|
|
1128
|
-
responseName,
|
|
1129
|
-
field: "authMethod.credentialIdB64u",
|
|
1130
|
-
value: authMethod.credentialIdB64u
|
|
1131
|
-
});
|
|
1132
|
-
if (String(args.authority.factor.credentialIdB64u) !== credentialIdB64u || String(args.authority.verifier.rpId) !== String(rpId)) throw new Error(`${responseName} response passkey authority binding mismatch`);
|
|
1133
|
-
return {
|
|
1134
|
-
kind: "passkey",
|
|
1135
|
-
rpId,
|
|
1136
|
-
authMethod: {
|
|
1137
|
-
kind: "passkey",
|
|
1138
|
-
credentialIdB64u,
|
|
1139
|
-
credentialPublicKeyB64u: requireResponseString({
|
|
1140
|
-
responseName,
|
|
1141
|
-
field: "authMethod.credentialPublicKeyB64u",
|
|
1142
|
-
value: authMethod.credentialPublicKeyB64u
|
|
1143
|
-
})
|
|
1144
|
-
}
|
|
1145
|
-
};
|
|
1146
|
-
}
|
|
1147
|
-
case "email_otp":
|
|
1148
|
-
assertExactResponseKeys(authMethod, ["kind", "registrationAuthorityId"], responseName);
|
|
1149
|
-
if (isPasskeyWalletAuthAuthority(args.authority) || args.response.rpId !== void 0) throw new Error(`${responseName} response has inconsistent email OTP authority`);
|
|
1150
|
-
return {
|
|
1151
|
-
kind: "email_otp",
|
|
1152
|
-
authMethod: {
|
|
1153
|
-
kind: "email_otp",
|
|
1154
|
-
registrationAuthorityId: requireResponseString({
|
|
1155
|
-
responseName,
|
|
1156
|
-
field: "authMethod.registrationAuthorityId",
|
|
1157
|
-
value: authMethod.registrationAuthorityId
|
|
1158
|
-
})
|
|
1159
|
-
}
|
|
1160
|
-
};
|
|
1161
|
-
default: throw new Error(`${responseName} response has invalid authMethod`);
|
|
1162
|
-
}
|
|
1163
|
-
}
|
|
1164
|
-
function parseWalletRegistrationNearAccountProvisioning(value) {
|
|
1165
|
-
const responseName = "Wallet registration finalize";
|
|
1166
|
-
const provisioning = requireResponseRecord({
|
|
1167
|
-
responseName,
|
|
1168
|
-
field: "accountProvisioning",
|
|
1169
|
-
value
|
|
1170
|
-
});
|
|
1171
|
-
switch (provisioning.kind) {
|
|
1172
|
-
case "implicit_account":
|
|
1173
|
-
assertExactResponseKeys(provisioning, ["kind", "accountIdSource"], responseName);
|
|
1174
|
-
if (provisioning.accountIdSource !== "ed25519_public_key") throw new Error(`${responseName} response has invalid implicit account provisioning`);
|
|
1175
|
-
return {
|
|
1176
|
-
kind: "implicit_account",
|
|
1177
|
-
accountIdSource: "ed25519_public_key"
|
|
1178
|
-
};
|
|
1179
|
-
case "sponsored_named_account": {
|
|
1180
|
-
assertExactResponseKeys(provisioning, [
|
|
1181
|
-
"kind",
|
|
1182
|
-
"requestedAccountId",
|
|
1183
|
-
"sponsor"
|
|
1184
|
-
], responseName);
|
|
1185
|
-
const requestedAccountId = parseNamedNearAccountId(provisioning.requestedAccountId);
|
|
1186
|
-
if (!requestedAccountId.ok || provisioning.sponsor !== "relayer") throw new Error(`${responseName} response has invalid named account provisioning`);
|
|
1187
|
-
return {
|
|
1188
|
-
kind: "sponsored_named_account",
|
|
1189
|
-
requestedAccountId: requestedAccountId.value,
|
|
1190
|
-
sponsor: "relayer"
|
|
1191
|
-
};
|
|
1192
|
-
}
|
|
1193
|
-
default: throw new Error(`${responseName} response has invalid accountProvisioning kind`);
|
|
1194
|
-
}
|
|
1195
|
-
}
|
|
1196
|
-
function parseWalletRegistrationResolvedNearAccount(value) {
|
|
1197
|
-
const responseName = "Wallet registration finalize";
|
|
1198
|
-
const resolved = requireResponseRecord({
|
|
1199
|
-
responseName,
|
|
1200
|
-
field: "resolvedAccount",
|
|
1201
|
-
value
|
|
1202
|
-
});
|
|
1203
|
-
switch (resolved.kind) {
|
|
1204
|
-
case "implicit_account": {
|
|
1205
|
-
assertExactResponseKeys(resolved, [
|
|
1206
|
-
"kind",
|
|
1207
|
-
"nearAccountId",
|
|
1208
|
-
"nearEd25519SigningKeyId"
|
|
1209
|
-
], responseName);
|
|
1210
|
-
const nearAccountId = parseImplicitNearAccountId(resolved.nearAccountId);
|
|
1211
|
-
if (!nearAccountId.ok) throw new Error(`${responseName} response has invalid implicit nearAccountId`);
|
|
1212
|
-
return {
|
|
1213
|
-
kind: "implicit_account",
|
|
1214
|
-
nearAccountId: nearAccountId.value,
|
|
1215
|
-
nearEd25519SigningKeyId: parseNearEd25519SigningKeyId(resolved.nearEd25519SigningKeyId)
|
|
1216
|
-
};
|
|
1217
|
-
}
|
|
1218
|
-
case "sponsored_named_account": {
|
|
1219
|
-
assertExactResponseKeys(resolved, [
|
|
1220
|
-
"kind",
|
|
1221
|
-
"nearAccountId",
|
|
1222
|
-
"nearEd25519SigningKeyId",
|
|
1223
|
-
"transactionHash"
|
|
1224
|
-
], responseName);
|
|
1225
|
-
const nearAccountId = parseNamedNearAccountId(resolved.nearAccountId);
|
|
1226
|
-
if (!nearAccountId.ok) throw new Error(`${responseName} response has invalid named nearAccountId`);
|
|
1227
|
-
return {
|
|
1228
|
-
kind: "sponsored_named_account",
|
|
1229
|
-
nearAccountId: nearAccountId.value,
|
|
1230
|
-
nearEd25519SigningKeyId: parseNearEd25519SigningKeyId(resolved.nearEd25519SigningKeyId),
|
|
1231
|
-
transactionHash: requireResponseString({
|
|
1232
|
-
responseName,
|
|
1233
|
-
field: "resolvedAccount.transactionHash",
|
|
1234
|
-
value: resolved.transactionHash
|
|
1235
|
-
})
|
|
1236
|
-
};
|
|
1237
|
-
}
|
|
1238
|
-
default: throw new Error(`${responseName} response has invalid resolvedAccount kind`);
|
|
1239
|
-
}
|
|
1240
|
-
}
|
|
1241
|
-
function parseWalletRegistrationFinalizeEcdsaResult(args) {
|
|
1242
|
-
const responseName = "Wallet registration finalize";
|
|
1243
|
-
const ecdsa = requireResponseRecord({
|
|
1244
|
-
responseName,
|
|
1245
|
-
field: "ecdsa",
|
|
1246
|
-
value: args.value
|
|
1247
|
-
});
|
|
1248
|
-
assertExactResponseKeys(ecdsa, ["walletKeys"], responseName);
|
|
1249
|
-
if (!Array.isArray(ecdsa.walletKeys) || ecdsa.walletKeys.length === 0) throw new Error(`${responseName} response has invalid walletKeys`);
|
|
1250
|
-
const targetKeys = /* @__PURE__ */ new Set();
|
|
1251
|
-
return { walletKeys: ecdsa.walletKeys.map((value) => {
|
|
1252
|
-
const walletKey = parseWalletAddSignerEcdsaWalletKey(value, responseName);
|
|
1253
|
-
if (walletKey.walletId !== String(args.walletId)) throw new Error(`${responseName} response ECDSA walletId mismatch`);
|
|
1254
|
-
if (String(walletKey.publicCapability.client_id) !== String(args.walletId) || walletKey.publicCapability.public_identity.context_binding_b64u !== walletKey.contextBinding32B64u || walletKey.publicCapability.public_identity.derivation_client_share_public_key33_b64u !== walletKey.derivationClientSharePublicKey33B64u || walletKey.publicCapability.public_identity.threshold_public_key33_b64u !== walletKey.thresholdEcdsaPublicKeyB64u || walletKey.publicCapability.public_identity.client_share_retry_counter !== walletKey.clientShareRetryCounter || walletKey.publicCapability.public_identity.server_share_retry_counter !== walletKey.relayerShareRetryCounter) throw new Error(`${responseName} response ECDSA public capability mismatch`);
|
|
1255
|
-
const targetKey = thresholdEcdsaChainTargetKey(walletKey.chainTarget);
|
|
1256
|
-
if (targetKeys.has(targetKey)) throw new Error(`${responseName} response has duplicate ECDSA target ${targetKey}`);
|
|
1257
|
-
targetKeys.add(targetKey);
|
|
1258
|
-
return walletKey;
|
|
1259
|
-
}) };
|
|
1260
|
-
}
|
|
1261
|
-
function parseWalletRegistrationFinalizeNearResult(args) {
|
|
1262
|
-
const responseName = "Wallet registration finalize";
|
|
1263
|
-
const authorityScope = parseWalletRegistrationEd25519AuthorityScope(args.response.authorityScope, responseName);
|
|
1264
|
-
const accountProvisioning = parseWalletRegistrationNearAccountProvisioning(args.response.accountProvisioning);
|
|
1265
|
-
const resolvedAccount = parseWalletRegistrationResolvedNearAccount(args.response.resolvedAccount);
|
|
1266
|
-
const ed25519 = parseWalletRegistrationEd25519Result(args.response.ed25519, responseName);
|
|
1267
|
-
if (accountProvisioning.kind !== resolvedAccount.kind || resolvedAccount.nearAccountId !== ed25519.nearAccountId || resolvedAccount.nearEd25519SigningKeyId !== ed25519.nearEd25519SigningKeyId) throw new Error(`${responseName} response has inconsistent Ed25519 identity`);
|
|
1268
|
-
if (authorityScope.kind === "passkey_rp" && (!isPasskeyWalletAuthAuthority(args.authority) || String(args.authority.verifier.rpId) !== String(authorityScope.rpId)) || authorityScope.kind === "email_otp" && (isPasskeyWalletAuthAuthority(args.authority) || args.authority.factor.provider !== authorityScope.provider || String(args.authority.factor.providerUserId) !== authorityScope.providerUserId)) throw new Error(`${responseName} response authorityScope mismatch`);
|
|
1269
|
-
return {
|
|
1270
|
-
authorityScope,
|
|
1271
|
-
accountProvisioning,
|
|
1272
|
-
resolvedAccount,
|
|
1273
|
-
ed25519
|
|
1274
|
-
};
|
|
1275
|
-
}
|
|
1276
|
-
function parseWalletRegistrationFinalizeResponse(args) {
|
|
1277
|
-
const responseName = "Wallet registration finalize";
|
|
1278
|
-
const response = requireResponseRecord({
|
|
1279
|
-
responseName,
|
|
1280
|
-
field: "body",
|
|
1281
|
-
value: args.value
|
|
1282
|
-
});
|
|
1283
|
-
assertExactResponseKeys(response, [
|
|
1284
|
-
"ok",
|
|
1285
|
-
"walletId",
|
|
1286
|
-
"authority",
|
|
1287
|
-
"foundingAuthority",
|
|
1288
|
-
"foundingAuthMethod",
|
|
1289
|
-
"registrationDiagnostics",
|
|
1290
|
-
"rpId",
|
|
1291
|
-
"authMethod",
|
|
1292
|
-
"walletCustody",
|
|
1293
|
-
"custodyKeyManifestDigestB64u",
|
|
1294
|
-
"kind",
|
|
1295
|
-
"authorityScope",
|
|
1296
|
-
"accountProvisioning",
|
|
1297
|
-
"resolvedAccount",
|
|
1298
|
-
"ed25519",
|
|
1299
|
-
"ecdsa"
|
|
1300
|
-
], responseName);
|
|
1301
|
-
if (response.ok !== true || response.kind !== args.expectedKind) throw new Error(`${responseName} response substituted signer branch`);
|
|
1302
|
-
const walletId = walletIdFromString(requireResponseString({
|
|
1303
|
-
responseName,
|
|
1304
|
-
field: "walletId",
|
|
1305
|
-
value: response.walletId
|
|
1306
|
-
}));
|
|
1307
|
-
const authority = parseWalletRegistrationFinalizeAuthority(response.authority);
|
|
1308
|
-
const foundingAuthority = parseWalletAuthorityV1(response.foundingAuthority);
|
|
1309
|
-
const foundingAuthMethod = parseWalletAuthMethodRecordV2(response.foundingAuthMethod);
|
|
1310
|
-
if (!foundingAuthority.ok) throw new Error(`${responseName} response has an invalid founding authority: ${foundingAuthority.error.message}`);
|
|
1311
|
-
if (foundingAuthority.value.state !== "active") throw new Error(`${responseName} response has an inactive founding authority`);
|
|
1312
|
-
if (!foundingAuthMethod) throw new Error(`${responseName} response has an invalid founding auth method`);
|
|
1313
|
-
if (foundingAuthMethod.status !== "active") throw new Error(`${responseName} response has an inactive founding auth method`);
|
|
1314
|
-
if (foundingAuthority.value.walletId !== walletId || foundingAuthMethod.walletId !== walletId) throw new Error(`${responseName} response changed the founding wallet identity`);
|
|
1315
|
-
if (foundingAuthMethod.walletAuthorityId !== foundingAuthority.value.authorityId) throw new Error(`${responseName} response has mismatched founding authority identities`);
|
|
1316
|
-
if (foundingAuthMethod.walletAuthMethodId !== authority.bindingId) throw new Error(`${responseName} response has mismatched founding auth-method identities`);
|
|
1317
|
-
const authorityBranch = parseWalletRegistrationFinalizeAuthorityBranch({
|
|
1318
|
-
response,
|
|
1319
|
-
walletId,
|
|
1320
|
-
authority
|
|
1321
|
-
});
|
|
1322
|
-
const registrationDiagnostics = response.registrationDiagnostics === void 0 ? void 0 : parseWalletRegistrationFinalizeDiagnostics(response.registrationDiagnostics);
|
|
1323
|
-
const walletCustody = response.walletCustody === void 0 ? {} : { walletCustody: parseWalletCustodyRegistrationOutcome(response.walletCustody, responseName) };
|
|
1324
|
-
const custodyKeyManifestDigestB64u = response.custodyKeyManifestDigestB64u === void 0 ? void 0 : requireResponseString({
|
|
1325
|
-
responseName,
|
|
1326
|
-
field: "custodyKeyManifestDigestB64u",
|
|
1327
|
-
value: response.custodyKeyManifestDigestB64u
|
|
1328
|
-
});
|
|
1329
|
-
if (custodyKeyManifestDigestB64u !== void 0 && base64UrlDecode(custodyKeyManifestDigestB64u).byteLength !== 32) throw new Error(`${responseName} response has invalid custodyKeyManifestDigestB64u`);
|
|
1330
|
-
const manifest = custodyKeyManifestDigestB64u === void 0 ? {} : { custodyKeyManifestDigestB64u };
|
|
1331
|
-
switch (response.kind) {
|
|
1332
|
-
case "near_ed25519": {
|
|
1333
|
-
if (response.ecdsa !== void 0) throw new Error(`${responseName} response mixed signer branches`);
|
|
1334
|
-
const near = parseWalletRegistrationFinalizeNearResult({
|
|
1335
|
-
response,
|
|
1336
|
-
walletId,
|
|
1337
|
-
authority
|
|
1338
|
-
});
|
|
1339
|
-
if (authorityBranch.kind === "passkey") return {
|
|
1340
|
-
ok: true,
|
|
1341
|
-
walletId,
|
|
1342
|
-
authority,
|
|
1343
|
-
foundingAuthority: foundingAuthority.value,
|
|
1344
|
-
foundingAuthMethod,
|
|
1345
|
-
...registrationDiagnostics ? { registrationDiagnostics } : {},
|
|
1346
|
-
...walletCustody,
|
|
1347
|
-
...manifest,
|
|
1348
|
-
rpId: authorityBranch.rpId,
|
|
1349
|
-
authMethod: authorityBranch.authMethod,
|
|
1350
|
-
kind: "near_ed25519",
|
|
1351
|
-
authorityScope: near.authorityScope,
|
|
1352
|
-
accountProvisioning: near.accountProvisioning,
|
|
1353
|
-
resolvedAccount: near.resolvedAccount,
|
|
1354
|
-
ed25519: near.ed25519
|
|
1355
|
-
};
|
|
1356
|
-
return {
|
|
1357
|
-
ok: true,
|
|
1358
|
-
walletId,
|
|
1359
|
-
authority,
|
|
1360
|
-
foundingAuthority: foundingAuthority.value,
|
|
1361
|
-
foundingAuthMethod,
|
|
1362
|
-
...registrationDiagnostics ? { registrationDiagnostics } : {},
|
|
1363
|
-
...walletCustody,
|
|
1364
|
-
...manifest,
|
|
1365
|
-
authMethod: authorityBranch.authMethod,
|
|
1366
|
-
kind: "near_ed25519",
|
|
1367
|
-
authorityScope: near.authorityScope,
|
|
1368
|
-
accountProvisioning: near.accountProvisioning,
|
|
1369
|
-
resolvedAccount: near.resolvedAccount,
|
|
1370
|
-
ed25519: near.ed25519
|
|
1371
|
-
};
|
|
1372
|
-
}
|
|
1373
|
-
case "evm_family_ecdsa": {
|
|
1374
|
-
if (response.authorityScope !== void 0 || response.accountProvisioning !== void 0 || response.resolvedAccount !== void 0 || response.ed25519 !== void 0) throw new Error(`${responseName} response mixed signer branches`);
|
|
1375
|
-
const ecdsa = parseWalletRegistrationFinalizeEcdsaResult({
|
|
1376
|
-
value: response.ecdsa,
|
|
1377
|
-
walletId
|
|
1378
|
-
});
|
|
1379
|
-
if (authorityBranch.kind === "passkey") return {
|
|
1380
|
-
ok: true,
|
|
1381
|
-
walletId,
|
|
1382
|
-
authority,
|
|
1383
|
-
foundingAuthority: foundingAuthority.value,
|
|
1384
|
-
foundingAuthMethod,
|
|
1385
|
-
...registrationDiagnostics ? { registrationDiagnostics } : {},
|
|
1386
|
-
...walletCustody,
|
|
1387
|
-
...manifest,
|
|
1388
|
-
rpId: authorityBranch.rpId,
|
|
1389
|
-
authMethod: authorityBranch.authMethod,
|
|
1390
|
-
kind: "evm_family_ecdsa",
|
|
1391
|
-
ecdsa
|
|
1392
|
-
};
|
|
1393
|
-
return {
|
|
1394
|
-
ok: true,
|
|
1395
|
-
walletId,
|
|
1396
|
-
authority,
|
|
1397
|
-
foundingAuthority: foundingAuthority.value,
|
|
1398
|
-
foundingAuthMethod,
|
|
1399
|
-
...registrationDiagnostics ? { registrationDiagnostics } : {},
|
|
1400
|
-
...walletCustody,
|
|
1401
|
-
...manifest,
|
|
1402
|
-
authMethod: authorityBranch.authMethod,
|
|
1403
|
-
kind: "evm_family_ecdsa",
|
|
1404
|
-
ecdsa
|
|
1405
|
-
};
|
|
1406
|
-
}
|
|
1407
|
-
default: throw new Error(`${responseName} response has invalid kind`);
|
|
1408
|
-
}
|
|
1409
|
-
}
|
|
1410
|
-
//#endregion
|
|
1411
|
-
//#region src/core/rpcClients/relayer/walletRegistration.ts
|
|
1412
|
-
/**
|
|
1413
|
-
* Declared once in the shared package. The server mints these options, this
|
|
1414
|
-
* client hands them to `navigator.credentials.create`, and the linked-device
|
|
1415
|
-
* target preparation carries them to Device 2 — one declaration, so none of
|
|
1416
|
-
* the three can drift from the ceremony.
|
|
1417
|
-
*/
|
|
1418
|
-
const REGISTRATION_ROUTE_PAYLOAD_DIAGNOSTICS_LABEL = "[Registration] wallet route payload summary";
|
|
1419
|
-
const ROUTE_PAYLOAD_BREAKDOWN_MAX_DEPTH = 2;
|
|
1420
|
-
const ROUTE_PAYLOAD_BREAKDOWN_MAX_FIELDS = 64;
|
|
1421
|
-
const WALLET_REGISTRATION_SETUP_PATH = "/wallets/register/setup";
|
|
1422
|
-
const WALLET_REGISTRATION_RESPOND_PATH = "/wallets/register/respond";
|
|
1423
|
-
const WALLET_REGISTRATION_ACTIVATE_PATH = "/wallets/register/activate";
|
|
1424
|
-
const WALLET_REGISTRATION_NEAR_PROVISIONING_PATH = "/wallets/register/near-provisioning";
|
|
1425
|
-
/** Managed environment id header for Router API `api_credentials` auth. */
|
|
1426
|
-
const ROUTER_API_ENVIRONMENT_ID_HEADER = "X-Seams-Environment-Id";
|
|
1427
|
-
const WALLET_REGISTRATION_PREPARE_PATH = "/wallets/register/prepare";
|
|
1428
|
-
const WRANGLER_WORKER_RESTARTED_MID_REQUEST = "Your worker restarted mid-request";
|
|
1429
|
-
function utf8Bytes(value) {
|
|
1430
|
-
try {
|
|
1431
|
-
return new TextEncoder().encode(String(value || "")).length;
|
|
1432
|
-
} catch {
|
|
1433
|
-
return String(value || "").length;
|
|
1434
|
-
}
|
|
1435
|
-
}
|
|
1436
|
-
function registrationBenchmarkDiagnosticsEnabled() {
|
|
1437
|
-
try {
|
|
1438
|
-
return globalThis.__SEAMS_REGISTRATION_BENCHMARK_DIAGNOSTICS === true;
|
|
1439
|
-
} catch {
|
|
1440
|
-
return false;
|
|
1441
|
-
}
|
|
1442
|
-
}
|
|
1443
|
-
function collectPayloadSizeBreakdown(input) {
|
|
1444
|
-
if (!input.value || typeof input.value !== "object" || Array.isArray(input.value)) return;
|
|
1445
|
-
if (Object.keys(input.out).length >= ROUTE_PAYLOAD_BREAKDOWN_MAX_FIELDS) return;
|
|
1446
|
-
for (const [key, entry] of Object.entries(input.value)) {
|
|
1447
|
-
if (Object.keys(input.out).length >= ROUTE_PAYLOAD_BREAKDOWN_MAX_FIELDS) return;
|
|
1448
|
-
const fieldPath = input.path ? `${input.path}.${key}` : key;
|
|
1449
|
-
if (typeof entry === "string") input.out[`${fieldPath}Bytes`] = utf8Bytes(entry);
|
|
1450
|
-
else if (Array.isArray(entry)) input.out[`${fieldPath}Count`] = entry.length;
|
|
1451
|
-
else if (input.depth > 0 && entry && typeof entry === "object") collectPayloadSizeBreakdown({
|
|
1452
|
-
value: entry,
|
|
1453
|
-
out: input.out,
|
|
1454
|
-
path: fieldPath,
|
|
1455
|
-
depth: input.depth - 1
|
|
1456
|
-
});
|
|
1457
|
-
}
|
|
1458
|
-
}
|
|
1459
|
-
function payloadSizeBreakdown(value) {
|
|
1460
|
-
const out = {};
|
|
1461
|
-
collectPayloadSizeBreakdown({
|
|
1462
|
-
value,
|
|
1463
|
-
out,
|
|
1464
|
-
path: "",
|
|
1465
|
-
depth: ROUTE_PAYLOAD_BREAKDOWN_MAX_DEPTH
|
|
1466
|
-
});
|
|
1467
|
-
return out;
|
|
1468
|
-
}
|
|
1469
|
-
function parseJsonText(text) {
|
|
1470
|
-
try {
|
|
1471
|
-
return JSON.parse(text);
|
|
1472
|
-
} catch {
|
|
1473
|
-
return;
|
|
1474
|
-
}
|
|
1475
|
-
}
|
|
1476
|
-
function readParsedJsonField(value, field) {
|
|
1477
|
-
if (value === null || typeof value !== "object" || Array.isArray(value)) return void 0;
|
|
1478
|
-
return Reflect.get(value, field);
|
|
1479
|
-
}
|
|
1480
|
-
async function readResponseText(response) {
|
|
1481
|
-
try {
|
|
1482
|
-
return await response.text();
|
|
1483
|
-
} catch {
|
|
1484
|
-
return "{}";
|
|
1485
|
-
}
|
|
1486
|
-
}
|
|
1487
|
-
function walletRegistrationPostMaxAttempts(path) {
|
|
1488
|
-
return path === WALLET_REGISTRATION_PREPARE_PATH ? 2 : 1;
|
|
1489
|
-
}
|
|
1490
|
-
function isWranglerWorkerRestartedMidRequestResponse(input) {
|
|
1491
|
-
return input.path === WALLET_REGISTRATION_PREPARE_PATH && input.attempt === 0 && input.status === 503 && input.responseText.includes(WRANGLER_WORKER_RESTARTED_MID_REQUEST);
|
|
1492
|
-
}
|
|
1493
|
-
async function postJson(args) {
|
|
1494
|
-
const startedAt = Date.now();
|
|
1495
|
-
const requestBody = JSON.stringify(args.body);
|
|
1496
|
-
const maxAttempts = walletRegistrationPostMaxAttempts(args.path);
|
|
1497
|
-
for (let attempt = 0; attempt < maxAttempts; attempt += 1) {
|
|
1498
|
-
const response = await fetch(`${normalizeRelayerBaseUrl(args.relayerUrl, { trim: false })}${args.path}`, buildRelayerJsonPostRequestInit({
|
|
1499
|
-
headers: args.headers,
|
|
1500
|
-
body: args.body,
|
|
1501
|
-
bodyJson: requestBody
|
|
1502
|
-
}));
|
|
1503
|
-
if (args.onServerTiming) try {
|
|
1504
|
-
args.onServerTiming(response.headers.get("Server-Timing"));
|
|
1505
|
-
} catch {}
|
|
1506
|
-
const responseText = await readResponseText(response);
|
|
1507
|
-
const data = parseJsonText(responseText);
|
|
1508
|
-
if (registrationBenchmarkDiagnosticsEnabled()) console.info(REGISTRATION_ROUTE_PAYLOAD_DIAGNOSTICS_LABEL, {
|
|
1509
|
-
path: args.path,
|
|
1510
|
-
status: response.status,
|
|
1511
|
-
attempt,
|
|
1512
|
-
requestBytes: utf8Bytes(requestBody),
|
|
1513
|
-
requestSizeBreakdown: payloadSizeBreakdown(args.body),
|
|
1514
|
-
responseBytes: utf8Bytes(responseText),
|
|
1515
|
-
responseSizeBreakdown: payloadSizeBreakdown(data),
|
|
1516
|
-
totalMs: Date.now() - startedAt
|
|
1517
|
-
});
|
|
1518
|
-
if (isWranglerWorkerRestartedMidRequestResponse({
|
|
1519
|
-
path: args.path,
|
|
1520
|
-
status: response.status,
|
|
1521
|
-
responseText,
|
|
1522
|
-
attempt
|
|
1523
|
-
})) continue;
|
|
1524
|
-
if (!response.ok || readParsedJsonField(data, "ok") === false) throw new Error(String(readParsedJsonField(data, "message") || readParsedJsonField(data, "error") || readParsedJsonField(data, "code") || `HTTP ${response.status}`));
|
|
1525
|
-
return data;
|
|
1526
|
-
}
|
|
1527
|
-
throw new Error("wallet registration request exhausted retry attempts");
|
|
1528
|
-
}
|
|
1529
|
-
const FUND_IMPLICIT_NEAR_SUCCESS_REQUIRED_FIELDS = [
|
|
1530
|
-
"ok",
|
|
1531
|
-
"walletId",
|
|
1532
|
-
"nearAccountId",
|
|
1533
|
-
"fundedAmountYocto"
|
|
1534
|
-
];
|
|
1535
|
-
const FUND_IMPLICIT_NEAR_SUCCESS_OPTIONAL_FIELDS = ["transactionHash", "message"];
|
|
1536
|
-
const FUND_IMPLICIT_NEAR_FAILURE_FIELDS = [
|
|
1537
|
-
"ok",
|
|
1538
|
-
"code",
|
|
1539
|
-
"message"
|
|
1540
|
-
];
|
|
1541
|
-
function requireFundImplicitNearResponseObject(value, label) {
|
|
1542
|
-
if (value === null || typeof value !== "object" || Array.isArray(value)) throw new Error(`${label} must be an object`);
|
|
1543
|
-
return value;
|
|
1544
|
-
}
|
|
1545
|
-
function assertFundImplicitNearResponseFields(value, requiredFields, optionalFields, label) {
|
|
1546
|
-
const allowedFields = new Set([...requiredFields, ...optionalFields]);
|
|
1547
|
-
const actualFields = Object.keys(value);
|
|
1548
|
-
if (actualFields.some((field) => !allowedFields.has(field))) throw new Error(`${label} contains unexpected fields`);
|
|
1549
|
-
for (const field of requiredFields) if (!actualFields.includes(field)) throw new Error(`${label}.${field} is required`);
|
|
1550
|
-
}
|
|
1551
|
-
function readFundImplicitNearResponseField(value, field) {
|
|
1552
|
-
return Reflect.get(value, field);
|
|
1553
|
-
}
|
|
1554
|
-
function requireFundImplicitNearResponseString(value, field) {
|
|
1555
|
-
if (typeof value !== "string" || value.trim().length === 0) throw new Error(`${field} must be a non-empty string`);
|
|
1556
|
-
return value.trim();
|
|
1557
|
-
}
|
|
1558
|
-
function requireFundImplicitNearOptionalString(value, field) {
|
|
1559
|
-
if (value === void 0) return void 0;
|
|
1560
|
-
if (typeof value !== "string") throw new Error(`${field} must be a string`);
|
|
1561
|
-
return value;
|
|
1562
|
-
}
|
|
1563
|
-
function parseFundImplicitNearAccountForTestingResponse(value) {
|
|
1564
|
-
const response = requireFundImplicitNearResponseObject(value, "fund implicit NEAR account response");
|
|
1565
|
-
const ok = readFundImplicitNearResponseField(response, "ok");
|
|
1566
|
-
if (ok === true) {
|
|
1567
|
-
assertFundImplicitNearResponseFields(response, FUND_IMPLICIT_NEAR_SUCCESS_REQUIRED_FIELDS, FUND_IMPLICIT_NEAR_SUCCESS_OPTIONAL_FIELDS, "fund implicit NEAR account success response");
|
|
1568
|
-
const walletIdResult = parseWalletId(readFundImplicitNearResponseField(response, "walletId"));
|
|
1569
|
-
if (!walletIdResult.ok) throw new Error("fund implicit NEAR account walletId is invalid");
|
|
1570
|
-
const nearAccountIdResult = parseImplicitNearAccountId(readFundImplicitNearResponseField(response, "nearAccountId"));
|
|
1571
|
-
if (!nearAccountIdResult.ok) throw new Error("fund implicit NEAR account nearAccountId is invalid");
|
|
1572
|
-
const transactionHash = requireFundImplicitNearOptionalString(readFundImplicitNearResponseField(response, "transactionHash"), "fund implicit NEAR account transactionHash");
|
|
1573
|
-
const message = requireFundImplicitNearOptionalString(readFundImplicitNearResponseField(response, "message"), "fund implicit NEAR account message");
|
|
1574
|
-
return {
|
|
1575
|
-
ok: true,
|
|
1576
|
-
walletId: walletIdResult.value,
|
|
1577
|
-
nearAccountId: nearAccountIdResult.value,
|
|
1578
|
-
fundedAmountYocto: requireFundImplicitNearResponseString(readFundImplicitNearResponseField(response, "fundedAmountYocto"), "fund implicit NEAR account fundedAmountYocto"),
|
|
1579
|
-
...transactionHash === void 0 ? {} : { transactionHash },
|
|
1580
|
-
...message === void 0 ? {} : { message }
|
|
1581
|
-
};
|
|
1582
|
-
}
|
|
1583
|
-
if (ok === false) {
|
|
1584
|
-
assertFundImplicitNearResponseFields(response, FUND_IMPLICIT_NEAR_FAILURE_FIELDS, [], "fund implicit NEAR account failure response");
|
|
1585
|
-
return {
|
|
1586
|
-
ok: false,
|
|
1587
|
-
code: requireFundImplicitNearResponseString(readFundImplicitNearResponseField(response, "code"), "fund implicit NEAR account code"),
|
|
1588
|
-
message: requireFundImplicitNearResponseString(readFundImplicitNearResponseField(response, "message"), "fund implicit NEAR account message")
|
|
1589
|
-
};
|
|
1590
|
-
}
|
|
1591
|
-
throw new Error("fund implicit NEAR account response has an invalid ok discriminator");
|
|
1592
|
-
}
|
|
1593
|
-
async function fundImplicitNearAccountForTesting(args) {
|
|
1594
|
-
const walletId = String(args.walletId || "").trim();
|
|
1595
|
-
const nearAccountId = String(args.nearAccountId || "").trim();
|
|
1596
|
-
const nearPublicKeyStr = String(args.nearPublicKeyStr || "").trim();
|
|
1597
|
-
const walletSessionToken = String(args.walletSessionToken || "").trim();
|
|
1598
|
-
if (!walletId) throw new Error("walletId is required for implicit NEAR account funding");
|
|
1599
|
-
if (!nearAccountId) throw new Error("nearAccountId is required for implicit NEAR account funding");
|
|
1600
|
-
if (!nearPublicKeyStr) throw new Error("nearPublicKeyStr is required for implicit NEAR account funding");
|
|
1601
|
-
if (!walletSessionToken) throw new Error("walletSessionToken is required for implicit NEAR account funding");
|
|
1602
|
-
return parseFundImplicitNearAccountForTestingResponse(await postJson({
|
|
1603
|
-
relayerUrl: args.relayerUrl,
|
|
1604
|
-
path: `/wallets/${encodeURIComponent(walletId)}/near/implicit-account/fund`,
|
|
1605
|
-
headers: buildBearerAuthorizationHeader({
|
|
1606
|
-
token: walletSessionToken,
|
|
1607
|
-
missingMessage: "walletSessionToken is required for implicit NEAR account funding"
|
|
1608
|
-
}),
|
|
1609
|
-
body: {
|
|
1610
|
-
nearAccountId,
|
|
1611
|
-
nearPublicKeyStr
|
|
1612
|
-
}
|
|
1613
|
-
}));
|
|
1614
|
-
}
|
|
1615
|
-
function registrationPreparationIdFromString(value) {
|
|
1616
|
-
const normalized = String(value || "").trim();
|
|
1617
|
-
if (!normalized) throw new Error("Registration preparation id is required");
|
|
1618
|
-
return normalized;
|
|
1619
|
-
}
|
|
1620
|
-
const WALLET_REGISTRATION_ECDSA_PREPARE_FIELDS = [
|
|
1621
|
-
"formatVersion",
|
|
1622
|
-
"walletId",
|
|
1623
|
-
"evmFamilySigningKeySlotId",
|
|
1624
|
-
"ecdsaThresholdKeyId",
|
|
1625
|
-
"signingRootId",
|
|
1626
|
-
"signingRootVersion",
|
|
1627
|
-
"keyScope",
|
|
1628
|
-
"relayerKeyId",
|
|
1629
|
-
"registrationPreparationId",
|
|
1630
|
-
"requestId",
|
|
1631
|
-
"thresholdSessionId",
|
|
1632
|
-
"ttlMs",
|
|
1633
|
-
"remainingUses",
|
|
1634
|
-
"participantIds",
|
|
1635
|
-
"runtimePolicyScope"
|
|
1636
|
-
];
|
|
1637
|
-
function requireWalletRegistrationResponseObject(args) {
|
|
1638
|
-
if (args.value === null || typeof args.value !== "object" || Array.isArray(args.value)) throw new Error(`${args.responseName} response missing ${args.field}`);
|
|
1639
|
-
return args.value;
|
|
1640
|
-
}
|
|
1641
|
-
function readWalletRegistrationResponseField(record, field, label) {
|
|
1642
|
-
if (!Object.keys(record).includes(field)) throw new Error(`${label} is missing ${field}`);
|
|
1643
|
-
return Reflect.get(record, field);
|
|
1644
|
-
}
|
|
1645
|
-
function readOptionalWalletRegistrationResponseField(record, field, _label) {
|
|
1646
|
-
if (!Object.keys(record).includes(field)) return void 0;
|
|
1647
|
-
return Reflect.get(record, field);
|
|
1648
|
-
}
|
|
1649
|
-
function assertWalletRegistrationResponseKeys(record, allowed, label) {
|
|
1650
|
-
const allowedSet = new Set(allowed);
|
|
1651
|
-
for (const key of Object.keys(record)) if (!allowedSet.has(key)) throw new Error(`${label} contains unexpected ${key}`);
|
|
1652
|
-
}
|
|
1653
|
-
function requireWalletRegistrationResponseArray(value, label) {
|
|
1654
|
-
if (!Array.isArray(value)) throw new Error(`${label} must be an array`);
|
|
1655
|
-
return value;
|
|
1656
|
-
}
|
|
1657
|
-
function hasWalletRegistrationResponseField(record, field) {
|
|
1658
|
-
return Object.keys(record).includes(field);
|
|
1659
|
-
}
|
|
1660
|
-
function requireWalletRegistrationSetupString(value, label) {
|
|
1661
|
-
if (typeof value !== "string" || value.length === 0 || value.trim() !== value) throw new Error(`${label} must be a non-empty canonical string`);
|
|
1662
|
-
return value;
|
|
1663
|
-
}
|
|
1664
|
-
function requireWalletRegistrationSetupSafeInteger(value, label, minimum) {
|
|
1665
|
-
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < minimum) throw new Error(`${label} must be a safe integer`);
|
|
1666
|
-
return value;
|
|
1667
|
-
}
|
|
1668
|
-
function readWalletRegistrationSetupString(record, field, label) {
|
|
1669
|
-
return requireWalletRegistrationSetupString(readWalletRegistrationResponseField(record, field, label), `${label}.${field}`);
|
|
1670
|
-
}
|
|
1671
|
-
function readWalletRegistrationSetupOptionalString(record, field, label) {
|
|
1672
|
-
if (!hasWalletRegistrationResponseField(record, field)) return void 0;
|
|
1673
|
-
return requireWalletRegistrationSetupString(readWalletRegistrationResponseField(record, field, label), `${label}.${field}`);
|
|
1674
|
-
}
|
|
1675
|
-
function readWalletRegistrationSetupSafeInteger(record, field, label, minimum) {
|
|
1676
|
-
return requireWalletRegistrationSetupSafeInteger(readWalletRegistrationResponseField(record, field, label), `${label}.${field}`, minimum);
|
|
1677
|
-
}
|
|
1678
|
-
function parseWalletRegistrationSetupParticipantIds(value, label) {
|
|
1679
|
-
const values = requireWalletRegistrationResponseArray(value, label);
|
|
1680
|
-
if (values.length === 0) throw new Error(`${label} must not be empty`);
|
|
1681
|
-
const participantIds = [];
|
|
1682
|
-
for (let index = 0; index < values.length; index += 1) participantIds.push(requireWalletRegistrationSetupSafeInteger(values[index], `${label}[${index}]`, 1));
|
|
1683
|
-
return participantIds;
|
|
1684
|
-
}
|
|
1685
|
-
function parseWalletRegistrationSetupParticipantPair(value, label) {
|
|
1686
|
-
const participantIds = parseWalletRegistrationSetupParticipantIds(value, label);
|
|
1687
|
-
if (participantIds.length !== 2 || participantIds[0] !== 1 || participantIds[1] !== 2) throw new Error(`${label} must be [1, 2]`);
|
|
1688
|
-
return [1, 2];
|
|
1689
|
-
}
|
|
1690
|
-
function parseWalletRegistrationSetupRuntimePolicyScope(value, responseName, requireSigningRootVersion = false) {
|
|
1691
|
-
if (value === void 0) return void 0;
|
|
1692
|
-
const scopeName = `${responseName} runtimePolicyScope`;
|
|
1693
|
-
const scope = requireWalletRegistrationResponseObject({
|
|
1694
|
-
responseName: scopeName,
|
|
1695
|
-
field: "value",
|
|
1696
|
-
value
|
|
1697
|
-
});
|
|
1698
|
-
assertWalletRegistrationResponseKeys(scope, [
|
|
1699
|
-
"orgId",
|
|
1700
|
-
"projectId",
|
|
1701
|
-
"envId",
|
|
1702
|
-
"signingRootVersion"
|
|
1703
|
-
], scopeName);
|
|
1704
|
-
const signingRootVersion = readWalletRegistrationSetupOptionalString(scope, "signingRootVersion", scopeName);
|
|
1705
|
-
if (requireSigningRootVersion && signingRootVersion === void 0) throw new Error(`${scopeName}.signingRootVersion is required`);
|
|
1706
|
-
const base = {
|
|
1707
|
-
orgId: readWalletRegistrationSetupString(scope, "orgId", scopeName),
|
|
1708
|
-
projectId: readWalletRegistrationSetupString(scope, "projectId", scopeName),
|
|
1709
|
-
envId: readWalletRegistrationSetupString(scope, "envId", scopeName)
|
|
1710
|
-
};
|
|
1711
|
-
return signingRootVersion === void 0 ? base : {
|
|
1712
|
-
...base,
|
|
1713
|
-
signingRootVersion
|
|
1714
|
-
};
|
|
1715
|
-
}
|
|
1716
|
-
function parseWalletRegistrationSetupPrepareRuntimePolicyScope(value, responseName) {
|
|
1717
|
-
const runtimePolicyScope = parseWalletRegistrationSetupRuntimePolicyScope(value, responseName, true);
|
|
1718
|
-
if (!runtimePolicyScope || runtimePolicyScope.signingRootVersion === void 0) throw new Error(`${responseName} runtimePolicyScope is invalid`);
|
|
1719
|
-
return {
|
|
1720
|
-
orgId: runtimePolicyScope.orgId,
|
|
1721
|
-
projectId: runtimePolicyScope.projectId,
|
|
1722
|
-
envId: runtimePolicyScope.envId,
|
|
1723
|
-
signingRootVersion: runtimePolicyScope.signingRootVersion
|
|
1724
|
-
};
|
|
1725
|
-
}
|
|
1726
|
-
function parseWalletRegistrationSetupAuthMethod(value) {
|
|
1727
|
-
const responseName = "Wallet registration setup intent authMethod";
|
|
1728
|
-
const authMethod = requireWalletRegistrationResponseObject({
|
|
1729
|
-
responseName,
|
|
1730
|
-
field: "value",
|
|
1731
|
-
value
|
|
1732
|
-
});
|
|
1733
|
-
switch (readWalletRegistrationSetupString(authMethod, "kind", responseName)) {
|
|
1734
|
-
case "passkey":
|
|
1735
|
-
assertWalletRegistrationResponseKeys(authMethod, [
|
|
1736
|
-
"kind",
|
|
1737
|
-
"rpId",
|
|
1738
|
-
"authenticatorOptions"
|
|
1739
|
-
], responseName);
|
|
1740
|
-
if (!parseWebAuthnRpId(readWalletRegistrationSetupString(authMethod, "rpId", responseName)).ok) throw new Error(`${responseName}.rpId is invalid`);
|
|
1741
|
-
if (!hasWalletRegistrationResponseField(authMethod, "authenticatorOptions")) break;
|
|
1742
|
-
if (readWalletRegistrationResponseField(authMethod, "authenticatorOptions", responseName) === void 0) throw new Error(`${responseName}.authenticatorOptions must be defined when present`);
|
|
1743
|
-
break;
|
|
1744
|
-
case "email_otp":
|
|
1745
|
-
switch (readWalletRegistrationSetupString(authMethod, "proofKind", responseName)) {
|
|
1746
|
-
case "otp_challenge":
|
|
1747
|
-
assertWalletRegistrationResponseKeys(authMethod, [
|
|
1748
|
-
"kind",
|
|
1749
|
-
"proofKind",
|
|
1750
|
-
"email",
|
|
1751
|
-
"providerSubject",
|
|
1752
|
-
"otpCode",
|
|
1753
|
-
"challengeId"
|
|
1754
|
-
], responseName);
|
|
1755
|
-
readWalletRegistrationSetupOptionalString(authMethod, "challengeId", responseName);
|
|
1756
|
-
readWalletRegistrationSetupString(authMethod, "email", responseName);
|
|
1757
|
-
readWalletRegistrationSetupString(authMethod, "providerSubject", responseName);
|
|
1758
|
-
readWalletRegistrationSetupString(authMethod, "otpCode", responseName);
|
|
1759
|
-
break;
|
|
1760
|
-
case "google_sso_registration":
|
|
1761
|
-
assertWalletRegistrationResponseKeys(authMethod, [
|
|
1762
|
-
"kind",
|
|
1763
|
-
"proofKind",
|
|
1764
|
-
"email",
|
|
1765
|
-
"providerSubject",
|
|
1766
|
-
"googleEmailOtpRegistrationAttemptId",
|
|
1767
|
-
"googleEmailOtpRegistrationOfferId",
|
|
1768
|
-
"googleEmailOtpRegistrationCandidateId"
|
|
1769
|
-
], responseName);
|
|
1770
|
-
readWalletRegistrationSetupString(authMethod, "email", responseName);
|
|
1771
|
-
readWalletRegistrationSetupString(authMethod, "providerSubject", responseName);
|
|
1772
|
-
readWalletRegistrationSetupString(authMethod, "googleEmailOtpRegistrationAttemptId", responseName);
|
|
1773
|
-
readWalletRegistrationSetupString(authMethod, "googleEmailOtpRegistrationOfferId", responseName);
|
|
1774
|
-
readWalletRegistrationSetupString(authMethod, "googleEmailOtpRegistrationCandidateId", responseName);
|
|
1775
|
-
break;
|
|
1776
|
-
default: throw new Error(`${responseName}.proofKind is invalid`);
|
|
1777
|
-
}
|
|
1778
|
-
break;
|
|
1779
|
-
default: throw new Error(`${responseName}.kind is invalid`);
|
|
1780
|
-
}
|
|
1781
|
-
const normalized = normalizeRegistrationAuthMethodInput(value);
|
|
1782
|
-
if (!normalized) throw new Error(`${responseName} is invalid`);
|
|
1783
|
-
return normalized;
|
|
1784
|
-
}
|
|
1785
|
-
function parseWalletRegistrationSetupNearAccountProvisioning(value) {
|
|
1786
|
-
const responseName = "Wallet registration setup intent accountProvisioning";
|
|
1787
|
-
const provisioning = requireWalletRegistrationResponseObject({
|
|
1788
|
-
responseName,
|
|
1789
|
-
field: "value",
|
|
1790
|
-
value
|
|
1791
|
-
});
|
|
1792
|
-
const kind = readWalletRegistrationSetupString(provisioning, "kind", responseName);
|
|
1793
|
-
switch (kind) {
|
|
1794
|
-
case "implicit_account":
|
|
1795
|
-
assertWalletRegistrationResponseKeys(provisioning, ["kind", "accountIdSource"], responseName);
|
|
1796
|
-
if (readWalletRegistrationSetupString(provisioning, "accountIdSource", responseName) !== "ed25519_public_key") throw new Error(`${responseName}.accountIdSource is invalid`);
|
|
1797
|
-
return {
|
|
1798
|
-
kind,
|
|
1799
|
-
accountIdSource: "ed25519_public_key"
|
|
1800
|
-
};
|
|
1801
|
-
case "sponsored_named_account": {
|
|
1802
|
-
assertWalletRegistrationResponseKeys(provisioning, [
|
|
1803
|
-
"kind",
|
|
1804
|
-
"requestedAccountId",
|
|
1805
|
-
"sponsor"
|
|
1806
|
-
], responseName);
|
|
1807
|
-
if (readWalletRegistrationSetupString(provisioning, "sponsor", responseName) !== "relayer") throw new Error(`${responseName}.sponsor is invalid`);
|
|
1808
|
-
const requestedAccountId = parseNamedNearAccountId(readWalletRegistrationSetupString(provisioning, "requestedAccountId", responseName));
|
|
1809
|
-
if (!requestedAccountId.ok) throw new Error(`${responseName}.requestedAccountId is invalid`);
|
|
1810
|
-
return {
|
|
1811
|
-
kind,
|
|
1812
|
-
requestedAccountId: requestedAccountId.value,
|
|
1813
|
-
sponsor: "relayer"
|
|
1814
|
-
};
|
|
1815
|
-
}
|
|
1816
|
-
default: throw new Error(`${responseName}.kind is invalid`);
|
|
1817
|
-
}
|
|
1818
|
-
}
|
|
1819
|
-
function sameWalletRegistrationSetupChainTarget(left, right) {
|
|
1820
|
-
switch (left.kind) {
|
|
1821
|
-
case "evm": return right.kind === "evm" && left.namespace === right.namespace && left.chainId === right.chainId && left.networkSlug === right.networkSlug;
|
|
1822
|
-
case "tempo": return right.kind === "tempo" && left.chainId === right.chainId && left.networkSlug === right.networkSlug;
|
|
1823
|
-
default: return assertNeverWalletRegistrationSetupChainTarget(left);
|
|
1824
|
-
}
|
|
1825
|
-
}
|
|
1826
|
-
function assertNeverWalletRegistrationSetupChainTarget(value) {
|
|
1827
|
-
throw new Error(`Unsupported wallet registration setup chain target: ${String(value)}`);
|
|
1828
|
-
}
|
|
1829
|
-
function parseWalletRegistrationSetupEcdsaChainTarget(value, responseName) {
|
|
1830
|
-
const target = requireWalletRegistrationResponseObject({
|
|
1831
|
-
responseName,
|
|
1832
|
-
field: "chainTarget",
|
|
1833
|
-
value
|
|
1834
|
-
});
|
|
1835
|
-
const kind = readWalletRegistrationSetupString(target, "kind", responseName);
|
|
1836
|
-
switch (kind) {
|
|
1837
|
-
case "evm": {
|
|
1838
|
-
assertWalletRegistrationResponseKeys(target, [
|
|
1839
|
-
"kind",
|
|
1840
|
-
"namespace",
|
|
1841
|
-
"chainId",
|
|
1842
|
-
"networkSlug"
|
|
1843
|
-
], responseName);
|
|
1844
|
-
if (readWalletRegistrationSetupString(target, "namespace", responseName) !== "eip155") throw new Error(`${responseName}.namespace is invalid`);
|
|
1845
|
-
const chainId = readWalletRegistrationSetupSafeInteger(target, "chainId", responseName, 1);
|
|
1846
|
-
const networkSlug = readWalletRegistrationSetupOptionalString(target, "networkSlug", responseName);
|
|
1847
|
-
return networkSlug === void 0 ? {
|
|
1848
|
-
kind,
|
|
1849
|
-
namespace: "eip155",
|
|
1850
|
-
chainId
|
|
1851
|
-
} : {
|
|
1852
|
-
kind,
|
|
1853
|
-
namespace: "eip155",
|
|
1854
|
-
chainId,
|
|
1855
|
-
networkSlug
|
|
1856
|
-
};
|
|
1857
|
-
}
|
|
1858
|
-
case "tempo": {
|
|
1859
|
-
assertWalletRegistrationResponseKeys(target, [
|
|
1860
|
-
"kind",
|
|
1861
|
-
"chainId",
|
|
1862
|
-
"networkSlug"
|
|
1863
|
-
], responseName);
|
|
1864
|
-
const chainId = readWalletRegistrationSetupSafeInteger(target, "chainId", responseName, 1);
|
|
1865
|
-
const networkSlug = readWalletRegistrationSetupOptionalString(target, "networkSlug", responseName);
|
|
1866
|
-
return networkSlug === void 0 ? {
|
|
1867
|
-
kind,
|
|
1868
|
-
chainId
|
|
1869
|
-
} : {
|
|
1870
|
-
kind,
|
|
1871
|
-
chainId,
|
|
1872
|
-
networkSlug
|
|
1873
|
-
};
|
|
1874
|
-
}
|
|
1875
|
-
default: throw new Error(`${responseName}.kind is invalid`);
|
|
1876
|
-
}
|
|
1877
|
-
}
|
|
1878
|
-
function normalizeWalletRegistrationSetupEcdsaChainTarget(value) {
|
|
1879
|
-
try {
|
|
1880
|
-
return parseWalletRegistrationSetupEcdsaChainTarget(value, "Wallet registration setup intent");
|
|
1881
|
-
} catch {
|
|
1882
|
-
return null;
|
|
1883
|
-
}
|
|
1884
|
-
}
|
|
1885
|
-
function parseWalletRegistrationSetupSignerRequest(value) {
|
|
1886
|
-
const responseName = "Wallet registration setup intent signer";
|
|
1887
|
-
const signer = requireWalletRegistrationResponseObject({
|
|
1888
|
-
responseName,
|
|
1889
|
-
field: "value",
|
|
1890
|
-
value
|
|
1891
|
-
});
|
|
1892
|
-
const kind = readWalletRegistrationSetupString(signer, "kind", responseName);
|
|
1893
|
-
switch (kind) {
|
|
1894
|
-
case "near_ed25519":
|
|
1895
|
-
assertWalletRegistrationResponseKeys(signer, [
|
|
1896
|
-
"kind",
|
|
1897
|
-
"accountProvisioning",
|
|
1898
|
-
"signerSlot",
|
|
1899
|
-
"participantIds",
|
|
1900
|
-
"derivationVersion"
|
|
1901
|
-
], responseName);
|
|
1902
|
-
if (readWalletRegistrationSetupSafeInteger(signer, "derivationVersion", responseName, 1) !== 1) throw new Error(`${responseName}.derivationVersion is invalid`);
|
|
1903
|
-
return {
|
|
1904
|
-
kind,
|
|
1905
|
-
accountProvisioning: parseWalletRegistrationSetupNearAccountProvisioning(readWalletRegistrationResponseField(signer, "accountProvisioning", responseName)),
|
|
1906
|
-
signerSlot: readWalletRegistrationSetupSafeInteger(signer, "signerSlot", responseName, 1),
|
|
1907
|
-
participantIds: parseWalletRegistrationSetupParticipantIds(readWalletRegistrationResponseField(signer, "participantIds", responseName), `${responseName}.participantIds`),
|
|
1908
|
-
derivationVersion: 1
|
|
1909
|
-
};
|
|
1910
|
-
case "evm_family_ecdsa": {
|
|
1911
|
-
assertWalletRegistrationResponseKeys(signer, [
|
|
1912
|
-
"kind",
|
|
1913
|
-
"participantIds",
|
|
1914
|
-
"chainTargets"
|
|
1915
|
-
], responseName);
|
|
1916
|
-
const chainTargets = requireWalletRegistrationResponseArray(readWalletRegistrationResponseField(signer, "chainTargets", responseName), `${responseName}.chainTargets`);
|
|
1917
|
-
if (chainTargets.length === 0) throw new Error(`${responseName}.chainTargets must not be empty`);
|
|
1918
|
-
const parsedChainTargets = [];
|
|
1919
|
-
for (const chainTarget of chainTargets) {
|
|
1920
|
-
const parsed = parseWalletRegistrationSetupEcdsaChainTarget(chainTarget, `${responseName}.chainTargets`);
|
|
1921
|
-
if (parsedChainTargets.some((existing) => sameWalletRegistrationSetupChainTarget(existing, parsed))) throw new Error(`${responseName}.chainTargets contains a duplicate target`);
|
|
1922
|
-
parsedChainTargets.push(parsed);
|
|
1923
|
-
}
|
|
1924
|
-
return {
|
|
1925
|
-
kind,
|
|
1926
|
-
participantIds: parseWalletRegistrationSetupParticipantIds(readWalletRegistrationResponseField(signer, "participantIds", responseName), `${responseName}.participantIds`),
|
|
1927
|
-
chainTargets: parsedChainTargets
|
|
1928
|
-
};
|
|
1929
|
-
}
|
|
1930
|
-
default: throw new Error(`${responseName}.kind is invalid`);
|
|
1931
|
-
}
|
|
1932
|
-
}
|
|
1933
|
-
function parseWalletRegistrationSetupSignerSelection(value) {
|
|
1934
|
-
const responseName = "Wallet registration setup intent signerSelection";
|
|
1935
|
-
const selection = requireWalletRegistrationResponseObject({
|
|
1936
|
-
responseName,
|
|
1937
|
-
field: "value",
|
|
1938
|
-
value
|
|
1939
|
-
});
|
|
1940
|
-
assertWalletRegistrationResponseKeys(selection, ["kind", "signers"], responseName);
|
|
1941
|
-
if (readWalletRegistrationSetupString(selection, "kind", responseName) !== "signer_set") throw new Error(`${responseName}.kind is invalid`);
|
|
1942
|
-
const rawSigners = requireWalletRegistrationResponseArray(readWalletRegistrationResponseField(selection, "signers", responseName), `${responseName}.signers`);
|
|
1943
|
-
if (rawSigners.length === 0) throw new Error(`${responseName}.signers must not be empty`);
|
|
1944
|
-
const signers = [];
|
|
1945
|
-
for (const rawSigner of rawSigners) signers.push(parseWalletRegistrationSetupSignerRequest(rawSigner));
|
|
1946
|
-
return {
|
|
1947
|
-
kind: "signer_set",
|
|
1948
|
-
signers
|
|
1949
|
-
};
|
|
1950
|
-
}
|
|
1951
|
-
function parseWalletRegistrationSetupIntent(value) {
|
|
1952
|
-
const responseName = "Wallet registration setup intent";
|
|
1953
|
-
const intent = requireWalletRegistrationResponseObject({
|
|
1954
|
-
responseName,
|
|
1955
|
-
field: "intent",
|
|
1956
|
-
value
|
|
1957
|
-
});
|
|
1958
|
-
assertWalletRegistrationResponseKeys(intent, [
|
|
1959
|
-
"version",
|
|
1960
|
-
"walletId",
|
|
1961
|
-
"authMethod",
|
|
1962
|
-
"signerSelection",
|
|
1963
|
-
"foundingWalletAuthMethodId",
|
|
1964
|
-
"runtimePolicyScope",
|
|
1965
|
-
"nonceB64u"
|
|
1966
|
-
], responseName);
|
|
1967
|
-
if (readWalletRegistrationSetupString(intent, "version", responseName) !== "registration_intent_v1") throw new Error(`${responseName}.version is invalid`);
|
|
1968
|
-
const walletId = parseWalletId(readWalletRegistrationSetupString(intent, "walletId", responseName));
|
|
1969
|
-
if (!walletId.ok) throw new Error(`${responseName}.walletId is invalid`);
|
|
1970
|
-
const foundingWalletAuthMethodId = parseWalletAuthMethodId(readWalletRegistrationSetupString(intent, "foundingWalletAuthMethodId", responseName));
|
|
1971
|
-
if (!foundingWalletAuthMethodId.ok) throw new Error(`${responseName}.foundingWalletAuthMethodId is invalid`);
|
|
1972
|
-
const authMethod = parseWalletRegistrationSetupAuthMethod(readWalletRegistrationResponseField(intent, "authMethod", responseName));
|
|
1973
|
-
const signerSelection = parseWalletRegistrationSetupSignerSelection(readWalletRegistrationResponseField(intent, "signerSelection", responseName));
|
|
1974
|
-
const runtimePolicyScope = parseWalletRegistrationSetupRuntimePolicyScope(readOptionalWalletRegistrationResponseField(intent, "runtimePolicyScope", responseName), responseName);
|
|
1975
|
-
const nonceB64u = readWalletRegistrationSetupString(intent, "nonceB64u", responseName);
|
|
1976
|
-
return runtimePolicyScope === void 0 ? {
|
|
1977
|
-
version: "registration_intent_v1",
|
|
1978
|
-
walletId: walletId.value,
|
|
1979
|
-
authMethod,
|
|
1980
|
-
signerSelection,
|
|
1981
|
-
foundingWalletAuthMethodId: foundingWalletAuthMethodId.value,
|
|
1982
|
-
nonceB64u
|
|
1983
|
-
} : {
|
|
1984
|
-
version: "registration_intent_v1",
|
|
1985
|
-
walletId: walletId.value,
|
|
1986
|
-
authMethod,
|
|
1987
|
-
signerSelection,
|
|
1988
|
-
foundingWalletAuthMethodId: foundingWalletAuthMethodId.value,
|
|
1989
|
-
runtimePolicyScope,
|
|
1990
|
-
nonceB64u
|
|
1991
|
-
};
|
|
1992
|
-
}
|
|
1993
|
-
function parseWalletAddSignerEcdsaRespondResponse(value) {
|
|
1994
|
-
const responseName = "Wallet add-signer ECDSA derivation";
|
|
1995
|
-
const response = requireWalletRegistrationResponseObject({
|
|
1996
|
-
responseName,
|
|
1997
|
-
field: "response",
|
|
1998
|
-
value
|
|
1999
|
-
});
|
|
2000
|
-
assertWalletRegistrationResponseKeys(response, [
|
|
2001
|
-
"ok",
|
|
2002
|
-
"addSignerCeremonyId",
|
|
2003
|
-
"ecdsa"
|
|
2004
|
-
], `${responseName} response`);
|
|
2005
|
-
if (readWalletRegistrationResponseField(response, "ok", `${responseName} response`) !== true) throw new Error(`${responseName} response is not successful`);
|
|
2006
|
-
const ecdsa = requireWalletRegistrationResponseObject({
|
|
2007
|
-
responseName,
|
|
2008
|
-
field: "ecdsa",
|
|
2009
|
-
value: readWalletRegistrationResponseField(response, "ecdsa", `${responseName} response`)
|
|
2010
|
-
});
|
|
2011
|
-
assertWalletRegistrationResponseKeys(ecdsa, ["kind", "strictResult"], `${responseName} response ecdsa`);
|
|
2012
|
-
if (readWalletRegistrationResponseField(ecdsa, "kind", `${responseName} response ecdsa`) !== "router_ab_ecdsa_registration_forwarded_v1") throw new Error(`${responseName} response kind is invalid`);
|
|
2013
|
-
return {
|
|
2014
|
-
ok: true,
|
|
2015
|
-
addSignerCeremonyId: requireResponseString({
|
|
2016
|
-
responseName,
|
|
2017
|
-
field: "addSignerCeremonyId",
|
|
2018
|
-
value: readWalletRegistrationResponseField(response, "addSignerCeremonyId", responseName)
|
|
2019
|
-
}),
|
|
2020
|
-
ecdsa: {
|
|
2021
|
-
kind: "router_ab_ecdsa_registration_forwarded_v1",
|
|
2022
|
-
strictResult: parseRouterAbEcdsaStrictForwardedRegistrationResponseV1(readWalletRegistrationResponseField(ecdsa, "strictResult", `${responseName} response ecdsa`))
|
|
2023
|
-
}
|
|
2024
|
-
};
|
|
2025
|
-
}
|
|
2026
|
-
function parseWalletAddSignerEcdsaActivationResponse(value) {
|
|
2027
|
-
const responseName = "Wallet add-signer ECDSA activation";
|
|
2028
|
-
const response = requireWalletRegistrationResponseObject({
|
|
2029
|
-
responseName,
|
|
2030
|
-
field: "response",
|
|
2031
|
-
value
|
|
2032
|
-
});
|
|
2033
|
-
assertWalletRegistrationResponseKeys(response, [
|
|
2034
|
-
"ok",
|
|
2035
|
-
"addSignerCeremonyId",
|
|
2036
|
-
"ecdsa"
|
|
2037
|
-
], `${responseName} response`);
|
|
2038
|
-
if (readWalletRegistrationResponseField(response, "ok", `${responseName} response`) !== true) throw new Error(`${responseName} response is not successful`);
|
|
2039
|
-
const ecdsa = requireWalletRegistrationResponseObject({
|
|
2040
|
-
responseName,
|
|
2041
|
-
field: "ecdsa",
|
|
2042
|
-
value: readWalletRegistrationResponseField(response, "ecdsa", `${responseName} response`)
|
|
2043
|
-
});
|
|
2044
|
-
assertWalletRegistrationResponseKeys(ecdsa, [
|
|
2045
|
-
"kind",
|
|
2046
|
-
"activation",
|
|
2047
|
-
"bootstrap"
|
|
2048
|
-
], `${responseName} response ecdsa`);
|
|
2049
|
-
if (readWalletRegistrationResponseField(ecdsa, "kind", `${responseName} response ecdsa`) !== "router_ab_ecdsa_registration_activated_v1") throw new Error(`${responseName} response kind is invalid`);
|
|
2050
|
-
return {
|
|
2051
|
-
ok: true,
|
|
2052
|
-
addSignerCeremonyId: requireResponseString({
|
|
2053
|
-
responseName,
|
|
2054
|
-
field: "addSignerCeremonyId",
|
|
2055
|
-
value: readWalletRegistrationResponseField(response, "addSignerCeremonyId", responseName)
|
|
2056
|
-
}),
|
|
2057
|
-
ecdsa: {
|
|
2058
|
-
kind: "router_ab_ecdsa_registration_activated_v1",
|
|
2059
|
-
activation: parseRouterAbEcdsaRegistrationPublicActivationReceiptV1(readWalletRegistrationResponseField(ecdsa, "activation", `${responseName} response ecdsa`)),
|
|
2060
|
-
bootstrap: parseThresholdEcdsaDerivationRoleLocalBootstrapValue(readWalletRegistrationResponseField(ecdsa, "bootstrap", `${responseName} response ecdsa`))
|
|
2061
|
-
}
|
|
2062
|
-
};
|
|
2063
|
-
}
|
|
2064
|
-
function isEmailOtpWalletRegistrationFinalizeResponse(response) {
|
|
2065
|
-
return response.authMethod.kind === "email_otp";
|
|
2066
|
-
}
|
|
2067
|
-
function parseCreateAddAuthMethodIntentResponse(value) {
|
|
2068
|
-
const responseName = "Wallet add-auth-method intent";
|
|
2069
|
-
const response = requireWalletRegistrationResponseObject({
|
|
2070
|
-
responseName,
|
|
2071
|
-
field: "body",
|
|
2072
|
-
value
|
|
2073
|
-
});
|
|
2074
|
-
assertWalletRegistrationResponseKeys(response, [
|
|
2075
|
-
"ok",
|
|
2076
|
-
"intent",
|
|
2077
|
-
"addAuthMethodIntentDigestB64u",
|
|
2078
|
-
"addAuthMethodIntentGrant",
|
|
2079
|
-
"expiresAtMs"
|
|
2080
|
-
], responseName);
|
|
2081
|
-
if (readWalletRegistrationResponseField(response, "ok", responseName) !== true) throw new Error(`${responseName} response is not successful`);
|
|
2082
|
-
const intent = parseAddAuthMethodIntentV1(readWalletRegistrationResponseField(response, "intent", responseName));
|
|
2083
|
-
let addAuthMethodIntentDigestB64u;
|
|
2084
|
-
try {
|
|
2085
|
-
addAuthMethodIntentDigestB64u = parseDigestB64u(readWalletRegistrationResponseField(response, "addAuthMethodIntentDigestB64u", responseName));
|
|
2086
|
-
} catch {
|
|
2087
|
-
throw new Error(`${responseName} response has invalid addAuthMethodIntentDigestB64u`);
|
|
2088
|
-
}
|
|
2089
|
-
const grantValue = readWalletRegistrationResponseField(response, "addAuthMethodIntentGrant", responseName);
|
|
2090
|
-
if (typeof grantValue !== "string" || !grantValue.trim()) throw new Error(`${responseName} response is missing addAuthMethodIntentGrant`);
|
|
2091
|
-
return {
|
|
2092
|
-
ok: true,
|
|
2093
|
-
intent,
|
|
2094
|
-
addAuthMethodIntentDigestB64u,
|
|
2095
|
-
addAuthMethodIntentGrant: addAuthMethodIntentGrantFromString(grantValue),
|
|
2096
|
-
expiresAtMs: requireResponseSafeInteger({
|
|
2097
|
-
responseName,
|
|
2098
|
-
field: "expiresAtMs",
|
|
2099
|
-
value: readWalletRegistrationResponseField(response, "expiresAtMs", responseName),
|
|
2100
|
-
minimum: 1
|
|
2101
|
-
})
|
|
2102
|
-
};
|
|
2103
|
-
}
|
|
2104
|
-
function parseCreateAddSignerIntentResponse(value) {
|
|
2105
|
-
const responseName = "Wallet add-signer intent";
|
|
2106
|
-
const response = requireWalletRegistrationResponseObject({
|
|
2107
|
-
responseName,
|
|
2108
|
-
field: "body",
|
|
2109
|
-
value
|
|
2110
|
-
});
|
|
2111
|
-
assertWalletRegistrationResponseKeys(response, [
|
|
2112
|
-
"ok",
|
|
2113
|
-
"intent",
|
|
2114
|
-
"addSignerIntentDigestB64u",
|
|
2115
|
-
"addSignerIntentGrant",
|
|
2116
|
-
"expiresAtMs"
|
|
2117
|
-
], responseName);
|
|
2118
|
-
if (readWalletRegistrationResponseField(response, "ok", responseName) !== true) throw new Error(`${responseName} response is not successful`);
|
|
2119
|
-
const intent = parseAddSignerIntentV1(readWalletRegistrationResponseField(response, "intent", responseName));
|
|
2120
|
-
let addSignerIntentDigestB64u;
|
|
2121
|
-
try {
|
|
2122
|
-
addSignerIntentDigestB64u = parseDigestB64u(readWalletRegistrationResponseField(response, "addSignerIntentDigestB64u", responseName));
|
|
2123
|
-
} catch {
|
|
2124
|
-
throw new Error(`${responseName} response has invalid addSignerIntentDigestB64u`);
|
|
2125
|
-
}
|
|
2126
|
-
const grantValue = readWalletRegistrationResponseField(response, "addSignerIntentGrant", responseName);
|
|
2127
|
-
if (typeof grantValue !== "string" || !grantValue.trim()) throw new Error(`${responseName} response is missing addSignerIntentGrant`);
|
|
2128
|
-
return {
|
|
2129
|
-
ok: true,
|
|
2130
|
-
intent,
|
|
2131
|
-
addSignerIntentDigestB64u,
|
|
2132
|
-
addSignerIntentGrant: addSignerIntentGrantFromString(grantValue),
|
|
2133
|
-
expiresAtMs: requireResponseSafeInteger({
|
|
2134
|
-
responseName,
|
|
2135
|
-
field: "expiresAtMs",
|
|
2136
|
-
value: readWalletRegistrationResponseField(response, "expiresAtMs", responseName),
|
|
2137
|
-
minimum: 1
|
|
2138
|
-
})
|
|
2139
|
-
};
|
|
2140
|
-
}
|
|
2141
|
-
function parseWalletAddAuthMethodFinalizeResponse(value) {
|
|
2142
|
-
const responseName = "Wallet add-auth-method finalize";
|
|
2143
|
-
const response = requireWalletRegistrationResponseObject({
|
|
2144
|
-
responseName,
|
|
2145
|
-
field: "body",
|
|
2146
|
-
value
|
|
2147
|
-
});
|
|
2148
|
-
if (readWalletRegistrationResponseField(response, "ok", responseName) !== true) throw new Error(`${responseName} response is not successful`);
|
|
2149
|
-
const authMethod = requireWalletRegistrationResponseObject({
|
|
2150
|
-
responseName,
|
|
2151
|
-
field: "authMethod",
|
|
2152
|
-
value: readWalletRegistrationResponseField(response, "authMethod", responseName)
|
|
2153
|
-
});
|
|
2154
|
-
const authMethodKind = readWalletRegistrationResponseField(authMethod, "kind", `${responseName} authMethod`);
|
|
2155
|
-
if (authMethodKind !== "passkey" && authMethodKind !== "email_otp") throw new Error(`${responseName} response has invalid authMethod kind`);
|
|
2156
|
-
const walletIdResult = parseWalletId(readWalletRegistrationResponseField(response, "walletId", responseName));
|
|
2157
|
-
if (!walletIdResult.ok) throw new Error(`${responseName} response has invalid walletId`);
|
|
2158
|
-
const authority = parseWalletAuthAuthority(readWalletRegistrationResponseField(response, "authority", responseName));
|
|
2159
|
-
if (!authority) throw new Error(`${responseName} response has invalid authority`);
|
|
2160
|
-
if (authority.walletId !== walletIdResult.value) throw new Error(`${responseName} response authority wallet mismatch`);
|
|
2161
|
-
if (authMethodKind === "passkey") {
|
|
2162
|
-
assertWalletRegistrationResponseKeys(response, [
|
|
2163
|
-
"ok",
|
|
2164
|
-
"walletId",
|
|
2165
|
-
"authority",
|
|
2166
|
-
"rpId",
|
|
2167
|
-
"authMethod"
|
|
2168
|
-
], responseName);
|
|
2169
|
-
assertWalletRegistrationResponseKeys(authMethod, [
|
|
2170
|
-
"kind",
|
|
2171
|
-
"status",
|
|
2172
|
-
"credentialIdB64u",
|
|
2173
|
-
"credentialPublicKeyB64u",
|
|
2174
|
-
"counter",
|
|
2175
|
-
"device"
|
|
2176
|
-
], `${responseName} authMethod`);
|
|
2177
|
-
if (readWalletRegistrationResponseField(authMethod, "status", responseName) !== "active") throw new Error(`${responseName} response has invalid authMethod status`);
|
|
2178
|
-
if (authority.factor.kind !== "passkey" || authority.verifier.kind !== "webauthn") throw new Error(`${responseName} response has inconsistent passkey authority`);
|
|
2179
|
-
const rpId = parseWebAuthnRpId(readWalletRegistrationResponseField(response, "rpId", responseName));
|
|
2180
|
-
if (!rpId.ok) throw new Error(`${responseName} response has invalid rpId`);
|
|
2181
|
-
const credentialIdB64u = parseWebAuthnCredentialIdB64u(readWalletRegistrationResponseField(authMethod, "credentialIdB64u", responseName));
|
|
2182
|
-
if (!credentialIdB64u.ok) throw new Error(`${responseName} response has invalid credentialIdB64u`);
|
|
2183
|
-
const credentialPublicKeyB64uValue = readWalletRegistrationResponseField(authMethod, "credentialPublicKeyB64u", responseName);
|
|
2184
|
-
if (typeof credentialPublicKeyB64uValue !== "string" || !credentialPublicKeyB64uValue.trim()) throw new Error(`${responseName} response is missing credentialPublicKeyB64u`);
|
|
2185
|
-
const counter = readWalletRegistrationResponseField(authMethod, "counter", responseName);
|
|
2186
|
-
if (typeof counter !== "number" || !Number.isSafeInteger(counter) || counter < 0) throw new Error(`${responseName} response has invalid counter`);
|
|
2187
|
-
const device = parseWebAuthnAuthenticatorDeviceInfo(readWalletRegistrationResponseField(authMethod, "device", responseName));
|
|
2188
|
-
if (!device) throw new Error(`${responseName} response has invalid device`);
|
|
2189
|
-
if (authority.factor.credentialIdB64u !== credentialIdB64u.value || authority.verifier.rpId !== rpId.value) throw new Error(`${responseName} response passkey authority binding mismatch`);
|
|
2190
|
-
return {
|
|
2191
|
-
ok: true,
|
|
2192
|
-
walletId: walletIdResult.value,
|
|
2193
|
-
authority,
|
|
2194
|
-
rpId: rpId.value,
|
|
2195
|
-
authMethod: {
|
|
2196
|
-
kind: "passkey",
|
|
2197
|
-
status: "active",
|
|
2198
|
-
credentialIdB64u: credentialIdB64u.value,
|
|
2199
|
-
credentialPublicKeyB64u: credentialPublicKeyB64uValue.trim(),
|
|
2200
|
-
counter,
|
|
2201
|
-
device
|
|
2202
|
-
}
|
|
2203
|
-
};
|
|
2204
|
-
}
|
|
2205
|
-
assertWalletRegistrationResponseKeys(response, [
|
|
2206
|
-
"ok",
|
|
2207
|
-
"walletId",
|
|
2208
|
-
"authority",
|
|
2209
|
-
"authMethod"
|
|
2210
|
-
], responseName);
|
|
2211
|
-
assertWalletRegistrationResponseKeys(authMethod, ["kind", "status"], `${responseName} authMethod`);
|
|
2212
|
-
if (readWalletRegistrationResponseField(authMethod, "status", responseName) !== "active") throw new Error(`${responseName} response has invalid authMethod status`);
|
|
2213
|
-
if (authority.factor.kind !== "email_otp" || authority.verifier.kind !== "email_otp_wallet_auth_method") throw new Error(`${responseName} response has inconsistent email OTP authority`);
|
|
2214
|
-
return {
|
|
2215
|
-
ok: true,
|
|
2216
|
-
walletId: walletIdResult.value,
|
|
2217
|
-
authority,
|
|
2218
|
-
authMethod: {
|
|
2219
|
-
kind: "email_otp",
|
|
2220
|
-
status: "active"
|
|
2221
|
-
}
|
|
2222
|
-
};
|
|
2223
|
-
}
|
|
2224
|
-
function parseWalletAddAuthMethodStartResponse(args) {
|
|
2225
|
-
const responseName = "Wallet add-auth-method start";
|
|
2226
|
-
const record = requireWalletRegistrationResponseObject({
|
|
2227
|
-
responseName,
|
|
2228
|
-
field: "body",
|
|
2229
|
-
value: args.value
|
|
2230
|
-
});
|
|
2231
|
-
if (readWalletRegistrationResponseField(record, "ok", responseName) !== true) throw new Error(`${responseName} response is not successful`);
|
|
2232
|
-
const addAuthMethodCeremonyId = requireResponseString({
|
|
2233
|
-
responseName,
|
|
2234
|
-
field: "addAuthMethodCeremonyId",
|
|
2235
|
-
value: readWalletRegistrationResponseField(record, "addAuthMethodCeremonyId", responseName)
|
|
2236
|
-
});
|
|
2237
|
-
const intent = requireExactAddAuthMethodIntent(readWalletRegistrationResponseField(record, "intent", responseName), args.expectedIntent);
|
|
2238
|
-
if (args.expectedIntent.authMethod.kind === "email_otp") {
|
|
2239
|
-
assertWalletRegistrationResponseKeys(record, [
|
|
2240
|
-
"ok",
|
|
2241
|
-
"addAuthMethodCeremonyId",
|
|
2242
|
-
"intent",
|
|
2243
|
-
"custodyEnvelope",
|
|
2244
|
-
"addAuthMethodCeremonyExpiresAtMs"
|
|
2245
|
-
], responseName);
|
|
2246
|
-
return {
|
|
2247
|
-
ok: true,
|
|
2248
|
-
addAuthMethodCeremonyId,
|
|
2249
|
-
intent,
|
|
2250
|
-
custodyEnvelope: parsePasskeyCustodyEnvelopeRecord(readWalletRegistrationResponseField(record, "custodyEnvelope", responseName)),
|
|
2251
|
-
addAuthMethodCeremonyExpiresAtMs: requireResponseSafeInteger({
|
|
2252
|
-
responseName,
|
|
2253
|
-
field: "addAuthMethodCeremonyExpiresAtMs",
|
|
2254
|
-
value: readWalletRegistrationResponseField(record, "addAuthMethodCeremonyExpiresAtMs", responseName),
|
|
2255
|
-
minimum: 1
|
|
2256
|
-
})
|
|
2257
|
-
};
|
|
2258
|
-
}
|
|
2259
|
-
assertWalletRegistrationResponseKeys(record, [
|
|
2260
|
-
"ok",
|
|
2261
|
-
"addAuthMethodCeremonyId",
|
|
2262
|
-
"intent",
|
|
2263
|
-
"custodyEnvelope",
|
|
2264
|
-
"registration",
|
|
2265
|
-
"addAuthMethodCeremonyExpiresAtMs"
|
|
2266
|
-
], responseName);
|
|
2267
|
-
return {
|
|
2268
|
-
ok: true,
|
|
2269
|
-
addAuthMethodCeremonyId,
|
|
2270
|
-
intent,
|
|
2271
|
-
custodyEnvelope: parsePasskeyCustodyEnvelopeRecord(readWalletRegistrationResponseField(record, "custodyEnvelope", responseName)),
|
|
2272
|
-
registration: parseWalletAddAuthMethodRegistrationOptions(readWalletRegistrationResponseField(record, "registration", responseName)),
|
|
2273
|
-
addAuthMethodCeremonyExpiresAtMs: requireResponseSafeInteger({
|
|
2274
|
-
responseName,
|
|
2275
|
-
field: "addAuthMethodCeremonyExpiresAtMs",
|
|
2276
|
-
value: readWalletRegistrationResponseField(record, "addAuthMethodCeremonyExpiresAtMs", responseName),
|
|
2277
|
-
minimum: 1
|
|
2278
|
-
})
|
|
2279
|
-
};
|
|
2280
|
-
}
|
|
2281
|
-
function requireExactAddSignerIntent(value, expected) {
|
|
2282
|
-
try {
|
|
2283
|
-
if (!sameAddSignerIntentV1(parseAddSignerIntentV1(value), expected)) throw new Error("intent mismatch");
|
|
2284
|
-
} catch {
|
|
2285
|
-
throw new Error("Wallet add-signer start response changed the admitted intent");
|
|
2286
|
-
}
|
|
2287
|
-
return expected;
|
|
2288
|
-
}
|
|
2289
|
-
function requireExactAddAuthMethodIntent(value, expected) {
|
|
2290
|
-
try {
|
|
2291
|
-
if (!sameAddAuthMethodIntentV1(parseAddAuthMethodIntentV1(value), expected)) throw new Error("intent mismatch");
|
|
2292
|
-
} catch {
|
|
2293
|
-
throw new Error("Wallet add-auth-method start response changed the admitted intent");
|
|
2294
|
-
}
|
|
2295
|
-
return expected;
|
|
2296
|
-
}
|
|
2297
|
-
function parseWalletAddSignerEcdsaPrepareContext(value, responseName) {
|
|
2298
|
-
const prepare = requireWalletRegistrationResponseObject({
|
|
2299
|
-
responseName,
|
|
2300
|
-
field: "ecdsa.prepare",
|
|
2301
|
-
value
|
|
2302
|
-
});
|
|
2303
|
-
assertWalletRegistrationResponseKeys(prepare, WALLET_REGISTRATION_ECDSA_PREPARE_FIELDS, responseName);
|
|
2304
|
-
if (readWalletRegistrationResponseField(prepare, "formatVersion", responseName) !== "ecdsa-derivation-role-local" || readWalletRegistrationResponseField(prepare, "keyScope", responseName) !== "evm-family") throw new Error(`${responseName} response has invalid prepare discriminator`);
|
|
2305
|
-
const runtimePolicyScope = normalizeThresholdRuntimePolicyScope(readWalletRegistrationResponseField(prepare, "runtimePolicyScope", responseName));
|
|
2306
|
-
if (!runtimePolicyScope) throw new Error(`${responseName} response has invalid runtimePolicyScope`);
|
|
2307
|
-
return {
|
|
2308
|
-
formatVersion: "ecdsa-derivation-role-local",
|
|
2309
|
-
walletId: requireResponseString({
|
|
2310
|
-
responseName,
|
|
2311
|
-
field: "prepare.walletId",
|
|
2312
|
-
value: readWalletRegistrationResponseField(prepare, "walletId", responseName)
|
|
2313
|
-
}),
|
|
2314
|
-
evmFamilySigningKeySlotId: requireResponseString({
|
|
2315
|
-
responseName,
|
|
2316
|
-
field: "prepare.evmFamilySigningKeySlotId",
|
|
2317
|
-
value: readWalletRegistrationResponseField(prepare, "evmFamilySigningKeySlotId", responseName)
|
|
2318
|
-
}),
|
|
2319
|
-
ecdsaThresholdKeyId: requireResponseString({
|
|
2320
|
-
responseName,
|
|
2321
|
-
field: "prepare.ecdsaThresholdKeyId",
|
|
2322
|
-
value: readWalletRegistrationResponseField(prepare, "ecdsaThresholdKeyId", responseName)
|
|
2323
|
-
}),
|
|
2324
|
-
signingRootId: requireResponseString({
|
|
2325
|
-
responseName,
|
|
2326
|
-
field: "prepare.signingRootId",
|
|
2327
|
-
value: readWalletRegistrationResponseField(prepare, "signingRootId", responseName)
|
|
2328
|
-
}),
|
|
2329
|
-
signingRootVersion: requireResponseString({
|
|
2330
|
-
responseName,
|
|
2331
|
-
field: "prepare.signingRootVersion",
|
|
2332
|
-
value: readWalletRegistrationResponseField(prepare, "signingRootVersion", responseName)
|
|
2333
|
-
}),
|
|
2334
|
-
keyScope: "evm-family",
|
|
2335
|
-
relayerKeyId: requireResponseString({
|
|
2336
|
-
responseName,
|
|
2337
|
-
field: "prepare.relayerKeyId",
|
|
2338
|
-
value: readWalletRegistrationResponseField(prepare, "relayerKeyId", responseName)
|
|
2339
|
-
}),
|
|
2340
|
-
registrationPreparationId: registrationPreparationIdFromString(requireResponseString({
|
|
2341
|
-
responseName,
|
|
2342
|
-
field: "prepare.registrationPreparationId",
|
|
2343
|
-
value: readWalletRegistrationResponseField(prepare, "registrationPreparationId", responseName)
|
|
2344
|
-
})),
|
|
2345
|
-
requestId: requireResponseString({
|
|
2346
|
-
responseName,
|
|
2347
|
-
field: "prepare.requestId",
|
|
2348
|
-
value: readWalletRegistrationResponseField(prepare, "requestId", responseName)
|
|
2349
|
-
}),
|
|
2350
|
-
thresholdSessionId: requireResponseString({
|
|
2351
|
-
responseName,
|
|
2352
|
-
field: "prepare.thresholdSessionId",
|
|
2353
|
-
value: readWalletRegistrationResponseField(prepare, "thresholdSessionId", responseName)
|
|
2354
|
-
}),
|
|
2355
|
-
ttlMs: requireResponseSafeInteger({
|
|
2356
|
-
responseName,
|
|
2357
|
-
field: "prepare.ttlMs",
|
|
2358
|
-
value: readWalletRegistrationResponseField(prepare, "ttlMs", responseName),
|
|
2359
|
-
minimum: 1
|
|
2360
|
-
}),
|
|
2361
|
-
remainingUses: requireResponseSafeInteger({
|
|
2362
|
-
responseName,
|
|
2363
|
-
field: "prepare.remainingUses",
|
|
2364
|
-
value: readWalletRegistrationResponseField(prepare, "remainingUses", responseName),
|
|
2365
|
-
minimum: 0
|
|
2366
|
-
}),
|
|
2367
|
-
participantIds: [...requireResponseParticipantPair(readWalletRegistrationResponseField(prepare, "participantIds", responseName), responseName)],
|
|
2368
|
-
runtimePolicyScope
|
|
2369
|
-
};
|
|
2370
|
-
}
|
|
2371
|
-
function assertWalletRegistrationSetupEcdsaPrepareContext(value, responseName) {
|
|
2372
|
-
const prepare = requireWalletRegistrationResponseObject({
|
|
2373
|
-
responseName,
|
|
2374
|
-
field: "ecdsa.prepare",
|
|
2375
|
-
value
|
|
2376
|
-
});
|
|
2377
|
-
assertWalletRegistrationResponseKeys(prepare, WALLET_REGISTRATION_ECDSA_PREPARE_FIELDS, responseName);
|
|
2378
|
-
if (readWalletRegistrationResponseField(prepare, "formatVersion", responseName) !== "ecdsa-derivation-role-local" || readWalletRegistrationResponseField(prepare, "keyScope", responseName) !== "evm-family") throw new Error(`${responseName} response has invalid prepare discriminator`);
|
|
2379
|
-
for (const field of [
|
|
2380
|
-
"walletId",
|
|
2381
|
-
"evmFamilySigningKeySlotId",
|
|
2382
|
-
"ecdsaThresholdKeyId",
|
|
2383
|
-
"signingRootId",
|
|
2384
|
-
"signingRootVersion",
|
|
2385
|
-
"relayerKeyId",
|
|
2386
|
-
"registrationPreparationId",
|
|
2387
|
-
"requestId",
|
|
2388
|
-
"thresholdSessionId"
|
|
2389
|
-
]) readWalletRegistrationSetupString(prepare, field, responseName);
|
|
2390
|
-
readWalletRegistrationSetupSafeInteger(prepare, "ttlMs", responseName, 1);
|
|
2391
|
-
readWalletRegistrationSetupSafeInteger(prepare, "remainingUses", responseName, 0);
|
|
2392
|
-
parseWalletRegistrationSetupParticipantPair(readWalletRegistrationResponseField(prepare, "participantIds", responseName), `${responseName}.participantIds`);
|
|
2393
|
-
parseWalletRegistrationSetupPrepareRuntimePolicyScope(readWalletRegistrationResponseField(prepare, "runtimePolicyScope", responseName), responseName);
|
|
2394
|
-
}
|
|
2395
|
-
function parseWalletRegistrationEcdsaPrepare(value) {
|
|
2396
|
-
const responseName = "Wallet registration setup ECDSA";
|
|
2397
|
-
const ecdsa = requireWalletRegistrationResponseObject({
|
|
2398
|
-
responseName,
|
|
2399
|
-
field: "ecdsa",
|
|
2400
|
-
value
|
|
2401
|
-
});
|
|
2402
|
-
assertWalletRegistrationResponseKeys(ecdsa, [
|
|
2403
|
-
"kind",
|
|
2404
|
-
"chainTargets",
|
|
2405
|
-
"prepare",
|
|
2406
|
-
"strictRegistration"
|
|
2407
|
-
], responseName);
|
|
2408
|
-
if (readWalletRegistrationResponseField(ecdsa, "kind", responseName) !== "evm_family_ecdsa_keygen") throw new Error(`${responseName} response has an invalid kind`);
|
|
2409
|
-
const rawChainTargets = readWalletRegistrationResponseField(ecdsa, "chainTargets", responseName);
|
|
2410
|
-
if (!Array.isArray(rawChainTargets) || rawChainTargets.length === 0) throw new Error(`${responseName} response has invalid chainTargets`);
|
|
2411
|
-
const chainTargets = [];
|
|
2412
|
-
for (const rawChainTarget of rawChainTargets) {
|
|
2413
|
-
const chainTarget = parseWalletRegistrationSetupEcdsaChainTarget(rawChainTarget, `${responseName}.chainTargets`);
|
|
2414
|
-
if (chainTargets.some((existing) => sameWalletRegistrationSetupChainTarget(existing, chainTarget))) throw new Error(`${responseName} response has duplicate chainTargets`);
|
|
2415
|
-
chainTargets.push(chainTarget);
|
|
2416
|
-
}
|
|
2417
|
-
const [firstTarget, ...remainingTargets] = chainTargets;
|
|
2418
|
-
if (!firstTarget) throw new Error(`${responseName} response has invalid chainTargets`);
|
|
2419
|
-
const rawPrepare = readWalletRegistrationResponseField(ecdsa, "prepare", responseName);
|
|
2420
|
-
assertWalletRegistrationSetupEcdsaPrepareContext(rawPrepare, responseName);
|
|
2421
|
-
const prepare = parseWalletAddSignerEcdsaPrepareContext(rawPrepare, responseName);
|
|
2422
|
-
const strictRegistration = parseRouterAbEcdsaRegistrationRequestFactsV1(readWalletRegistrationResponseField(ecdsa, "strictRegistration", responseName));
|
|
2423
|
-
if (strictRegistration.registration_purpose !== "wallet_registration") throw new Error(`${responseName} response has an invalid registration purpose`);
|
|
2424
|
-
return {
|
|
2425
|
-
kind: "evm_family_ecdsa_keygen",
|
|
2426
|
-
chainTargets: [firstTarget, ...remainingTargets],
|
|
2427
|
-
prepare,
|
|
2428
|
-
strictRegistration
|
|
2429
|
-
};
|
|
2430
|
-
}
|
|
2431
|
-
function walletRegistrationSetupKindFromIntent(intent) {
|
|
2432
|
-
let hasNearEd25519 = false;
|
|
2433
|
-
let hasEvmFamilyEcdsa = false;
|
|
2434
|
-
for (const signer of intent.signerSelection.signers) switch (signer.kind) {
|
|
2435
|
-
case "near_ed25519":
|
|
2436
|
-
hasNearEd25519 = true;
|
|
2437
|
-
break;
|
|
2438
|
-
case "evm_family_ecdsa":
|
|
2439
|
-
hasEvmFamilyEcdsa = true;
|
|
2440
|
-
break;
|
|
2441
|
-
default: return assertNeverWalletRegistrationSetupSigner(signer);
|
|
2442
|
-
}
|
|
2443
|
-
if (hasNearEd25519 && hasEvmFamilyEcdsa) return "near_ed25519_and_evm_family_ecdsa";
|
|
2444
|
-
if (hasEvmFamilyEcdsa) return "evm_family_ecdsa";
|
|
2445
|
-
if (hasNearEd25519) return "near_ed25519";
|
|
2446
|
-
throw new Error("Wallet registration setup intent has no signer branch");
|
|
2447
|
-
}
|
|
2448
|
-
function assertNeverWalletRegistrationSetupSigner(value) {
|
|
2449
|
-
throw new Error(`Unsupported wallet registration setup signer: ${String(value)}`);
|
|
2450
|
-
}
|
|
2451
|
-
function sameWalletRegistrationSetupParticipantIds(left, right) {
|
|
2452
|
-
if (left.length !== right.length) return false;
|
|
2453
|
-
for (let index = 0; index < left.length; index += 1) if (left[index] !== right[index]) return false;
|
|
2454
|
-
return true;
|
|
2455
|
-
}
|
|
2456
|
-
function sameWalletRegistrationSetupRuntimePolicyScope(left, right) {
|
|
2457
|
-
return left !== void 0 && left.orgId === right.orgId && left.projectId === right.projectId && left.envId === right.envId && left.signingRootVersion === right.signingRootVersion;
|
|
2458
|
-
}
|
|
2459
|
-
function sameWalletRegistrationSetupChainTargetValue(left, right) {
|
|
2460
|
-
try {
|
|
2461
|
-
return sameWalletRegistrationSetupChainTarget(parseWalletRegistrationSetupEcdsaChainTarget(left, "Wallet registration setup intent"), right);
|
|
2462
|
-
} catch {
|
|
2463
|
-
return false;
|
|
2464
|
-
}
|
|
2465
|
-
}
|
|
2466
|
-
function assertWalletRegistrationSetupEcdsaBindings(args) {
|
|
2467
|
-
const ecdsaSigner = args.intent.signerSelection.signers.find((signer) => signer.kind === "evm_family_ecdsa");
|
|
2468
|
-
if (!ecdsaSigner) throw new Error(`${args.responseName} response has no ECDSA intent branch`);
|
|
2469
|
-
if (ecdsaSigner.chainTargets.length !== args.ecdsa.chainTargets.length || ecdsaSigner.chainTargets.some((target, index) => !sameWalletRegistrationSetupChainTargetValue(target, args.ecdsa.chainTargets[index]))) throw new Error(`${args.responseName} response ECDSA chainTargets do not match intent`);
|
|
2470
|
-
if (!sameWalletRegistrationSetupParticipantIds(ecdsaSigner.participantIds, args.ecdsa.prepare.participantIds)) throw new Error(`${args.responseName} response ECDSA participantIds do not match intent`);
|
|
2471
|
-
if (args.ecdsa.prepare.walletId !== String(args.walletId)) throw new Error(`${args.responseName} response ECDSA prepare walletId does not match response`);
|
|
2472
|
-
if (!sameWalletRegistrationSetupRuntimePolicyScope(args.intent.runtimePolicyScope, args.ecdsa.prepare.runtimePolicyScope)) throw new Error(`${args.responseName} response ECDSA runtimePolicyScope does not match intent`);
|
|
2473
|
-
const strictLifecycle = args.ecdsa.strictRegistration.lifecycle;
|
|
2474
|
-
if (strictLifecycle.lifecycle_id !== args.registrationCeremonyId || strictLifecycle.account_id !== String(args.walletId) || args.ecdsa.strictRegistration.client_id !== String(args.walletId)) throw new Error(`${args.responseName} response ECDSA identities do not match response`);
|
|
2475
|
-
}
|
|
2476
|
-
function parseWalletRegistrationSetupResponseV2(value) {
|
|
2477
|
-
const responseName = "Wallet registration setup";
|
|
2478
|
-
const response = requireWalletRegistrationResponseObject({
|
|
2479
|
-
responseName,
|
|
2480
|
-
field: "body",
|
|
2481
|
-
value
|
|
2482
|
-
});
|
|
2483
|
-
if (readWalletRegistrationResponseField(response, "ok", responseName) !== true) throw new Error(`${responseName} response is not successful`);
|
|
2484
|
-
const kind = readWalletRegistrationResponseField(response, "kind", responseName);
|
|
2485
|
-
if (kind !== "near_ed25519" && kind !== "evm_family_ecdsa" && kind !== "near_ed25519_and_evm_family_ecdsa") throw new Error(`${responseName} response kind is invalid`);
|
|
2486
|
-
const carriesEcdsa = kind !== "near_ed25519";
|
|
2487
|
-
assertWalletRegistrationResponseKeys(response, [
|
|
2488
|
-
"ok",
|
|
2489
|
-
"registrationCeremonyId",
|
|
2490
|
-
"walletId",
|
|
2491
|
-
"walletAuthMethodId",
|
|
2492
|
-
"registrationIntentDigestB64u",
|
|
2493
|
-
"intent",
|
|
2494
|
-
"signedSetup",
|
|
2495
|
-
"kind",
|
|
2496
|
-
...carriesEcdsa ? ["ecdsa"] : []
|
|
2497
|
-
], responseName);
|
|
2498
|
-
const registrationCeremonyId = readWalletRegistrationSetupString(response, "registrationCeremonyId", responseName);
|
|
2499
|
-
const walletId = parseWalletId(readWalletRegistrationSetupString(response, "walletId", responseName));
|
|
2500
|
-
if (!walletId.ok) throw new Error(`${responseName} response has an invalid walletId`);
|
|
2501
|
-
const walletAuthMethodId = parseWalletAuthMethodId(readWalletRegistrationSetupString(response, "walletAuthMethodId", responseName));
|
|
2502
|
-
if (!walletAuthMethodId.ok) throw new Error(`${responseName} response has an invalid walletAuthMethodId`);
|
|
2503
|
-
const intent = parseWalletRegistrationSetupIntent(readWalletRegistrationResponseField(response, "intent", responseName));
|
|
2504
|
-
if (intent.walletId !== walletId.value) throw new Error(`${responseName} response walletId does not match intent`);
|
|
2505
|
-
if (intent.foundingWalletAuthMethodId !== walletAuthMethodId.value) throw new Error(`${responseName} response walletAuthMethodId does not match intent`);
|
|
2506
|
-
let registrationIntentDigestB64u;
|
|
2507
|
-
try {
|
|
2508
|
-
registrationIntentDigestB64u = parseDigestB64u(readWalletRegistrationResponseField(response, "registrationIntentDigestB64u", responseName));
|
|
2509
|
-
} catch {
|
|
2510
|
-
throw new Error(`${responseName} response has an invalid registrationIntentDigestB64u`);
|
|
2511
|
-
}
|
|
2512
|
-
const signedSetup = readWalletRegistrationResponseField(response, "signedSetup", responseName);
|
|
2513
|
-
if (typeof signedSetup !== "string" || !signedSetup.trim()) throw new Error(`${responseName} response missing signedSetup`);
|
|
2514
|
-
if (!carriesEcdsa) {
|
|
2515
|
-
if (walletRegistrationSetupKindFromIntent(intent) !== kind) throw new Error(`${responseName} response kind does not match intent`);
|
|
2516
|
-
return {
|
|
2517
|
-
ok: true,
|
|
2518
|
-
registrationCeremonyId,
|
|
2519
|
-
walletId: walletId.value,
|
|
2520
|
-
walletAuthMethodId: walletAuthMethodId.value,
|
|
2521
|
-
registrationIntentDigestB64u,
|
|
2522
|
-
intent,
|
|
2523
|
-
signedSetup,
|
|
2524
|
-
kind: "near_ed25519"
|
|
2525
|
-
};
|
|
2526
|
-
}
|
|
2527
|
-
const ecdsa = parseWalletRegistrationEcdsaPrepare(readWalletRegistrationResponseField(response, "ecdsa", responseName));
|
|
2528
|
-
if (walletRegistrationSetupKindFromIntent(intent) !== kind) throw new Error(`${responseName} response kind does not match intent`);
|
|
2529
|
-
assertWalletRegistrationSetupEcdsaBindings({
|
|
2530
|
-
responseName,
|
|
2531
|
-
registrationCeremonyId,
|
|
2532
|
-
walletId: walletId.value,
|
|
2533
|
-
intent,
|
|
2534
|
-
ecdsa
|
|
2535
|
-
});
|
|
2536
|
-
return {
|
|
2537
|
-
ok: true,
|
|
2538
|
-
registrationCeremonyId,
|
|
2539
|
-
walletId: walletId.value,
|
|
2540
|
-
walletAuthMethodId: walletAuthMethodId.value,
|
|
2541
|
-
registrationIntentDigestB64u,
|
|
2542
|
-
intent,
|
|
2543
|
-
signedSetup,
|
|
2544
|
-
kind,
|
|
2545
|
-
ecdsa
|
|
2546
|
-
};
|
|
2547
|
-
}
|
|
2548
|
-
function normalizeWalletRegistrationSetupRequestForBinding(request) {
|
|
2549
|
-
const authMethod = normalizeRegistrationAuthMethodInput(request.authMethod);
|
|
2550
|
-
if (!authMethod) throw new Error("Wallet registration setup request authMethod is invalid");
|
|
2551
|
-
const signerPlan = normalizeRegistrationSignerPlan(request.signerSelection);
|
|
2552
|
-
if (!signerPlan.ok) throw new Error(`Wallet registration setup request signerSelection is invalid: ${signerPlan.message}`);
|
|
2553
|
-
const signerSelection = registrationSignerSetSelectionFromPlan(signerPlan.value, { normalizeEcdsaChainTarget: normalizeWalletRegistrationSetupEcdsaChainTarget });
|
|
2554
|
-
if (!signerSelection.ok) throw new Error(`Wallet registration setup request signerSelection is invalid: ${signerSelection.message}`);
|
|
2555
|
-
return {
|
|
2556
|
-
authMethod,
|
|
2557
|
-
signerSelection: signerSelection.value
|
|
2558
|
-
};
|
|
2559
|
-
}
|
|
2560
|
-
function registrationIntentWithExpectedSetupRequest(intent, request) {
|
|
2561
|
-
const base = {
|
|
2562
|
-
version: "registration_intent_v1",
|
|
2563
|
-
walletId: intent.walletId,
|
|
2564
|
-
authMethod: request.authMethod,
|
|
2565
|
-
signerSelection: request.signerSelection,
|
|
2566
|
-
foundingWalletAuthMethodId: intent.foundingWalletAuthMethodId,
|
|
2567
|
-
nonceB64u: intent.nonceB64u
|
|
2568
|
-
};
|
|
2569
|
-
return intent.runtimePolicyScope === void 0 ? base : {
|
|
2570
|
-
...base,
|
|
2571
|
-
runtimePolicyScope: intent.runtimePolicyScope
|
|
2572
|
-
};
|
|
2573
|
-
}
|
|
2574
|
-
async function assertWalletRegistrationSetupRequestBindings(args) {
|
|
2575
|
-
if (args.requestedWallet?.kind === "provided") {
|
|
2576
|
-
if (String(args.requestedWallet.walletId) !== args.response.walletId) throw new Error("Wallet registration setup response walletId does not match request");
|
|
2577
|
-
}
|
|
2578
|
-
if (await computeRegistrationIntentDigestB64u(args.response.intent) !== args.response.registrationIntentDigestB64u) throw new Error("Wallet registration setup response digest does not match intent");
|
|
2579
|
-
if (await computeRegistrationIntentDigestB64u(registrationIntentWithExpectedSetupRequest(args.response.intent, args.request)) !== args.response.registrationIntentDigestB64u) throw new Error("Wallet registration setup response intent does not match request");
|
|
2580
|
-
}
|
|
2581
|
-
function parseWalletAddSignerEcdsaPrepare(value, expectedIntent) {
|
|
2582
|
-
const responseName = "Wallet add-signer ECDSA start";
|
|
2583
|
-
const record = requireWalletRegistrationResponseObject({
|
|
2584
|
-
responseName,
|
|
2585
|
-
field: "ecdsa",
|
|
2586
|
-
value
|
|
2587
|
-
});
|
|
2588
|
-
assertWalletRegistrationResponseKeys(record, [
|
|
2589
|
-
"kind",
|
|
2590
|
-
"chainTargets",
|
|
2591
|
-
"prepare",
|
|
2592
|
-
"strictRegistration",
|
|
2593
|
-
"custodyEnvelope"
|
|
2594
|
-
], responseName);
|
|
2595
|
-
const kind = readWalletRegistrationResponseField(record, "kind", responseName);
|
|
2596
|
-
const responseChainTargets = readWalletRegistrationResponseField(record, "chainTargets", responseName);
|
|
2597
|
-
if (kind !== "evm_family_ecdsa_keygen" || !Array.isArray(responseChainTargets)) throw new Error(`${responseName} response has invalid payload`);
|
|
2598
|
-
if (expectedIntent.signerSelection.mode !== "ecdsa") throw new Error(`${responseName} response substituted signer branch`);
|
|
2599
|
-
const expectedTargets = expectedIntent.signerSelection.ecdsa.chainTargets;
|
|
2600
|
-
if (responseChainTargets.length !== expectedTargets.length) throw new Error(`${responseName} response changed target count`);
|
|
2601
|
-
const chainTargets = [];
|
|
2602
|
-
for (let index = 0; index < responseChainTargets.length; index += 1) {
|
|
2603
|
-
const target = responseChainTargets[index];
|
|
2604
|
-
const actual = parseWalletAddSignerChainTarget(target, responseName);
|
|
2605
|
-
const expectedValue = expectedTargets[index];
|
|
2606
|
-
if (!expectedValue) throw new Error(`${responseName} response changed chainTarget`);
|
|
2607
|
-
if (!thresholdEcdsaChainTargetsEqual(actual, parseWalletAddSignerChainTarget(expectedValue, responseName))) throw new Error(`${responseName} response changed chainTarget`);
|
|
2608
|
-
chainTargets.push(actual);
|
|
2609
|
-
}
|
|
2610
|
-
const [firstTarget, ...remainingTargets] = chainTargets;
|
|
2611
|
-
if (!firstTarget) throw new Error(`${responseName} response requires an EVM-family target`);
|
|
2612
|
-
const prepare = parseWalletAddSignerEcdsaPrepareContext(readWalletRegistrationResponseField(record, "prepare", responseName), responseName);
|
|
2613
|
-
const strictRegistration = parseRouterAbEcdsaRegistrationRequestFactsV1(readWalletRegistrationResponseField(record, "strictRegistration", responseName));
|
|
2614
|
-
if (strictRegistration.registration_purpose !== "wallet_add_signer") throw new Error(`${responseName} response has invalid registration purpose`);
|
|
2615
|
-
return {
|
|
2616
|
-
kind: "evm_family_ecdsa_keygen",
|
|
2617
|
-
chainTargets: [firstTarget, ...remainingTargets],
|
|
2618
|
-
prepare,
|
|
2619
|
-
strictRegistration
|
|
2620
|
-
};
|
|
2621
|
-
}
|
|
2622
|
-
function parseWalletAddSignerStartResponse(args) {
|
|
2623
|
-
const responseName = "Wallet add-signer start";
|
|
2624
|
-
const record = requireWalletRegistrationResponseObject({
|
|
2625
|
-
responseName,
|
|
2626
|
-
field: "body",
|
|
2627
|
-
value: args.value
|
|
2628
|
-
});
|
|
2629
|
-
assertWalletRegistrationResponseKeys(record, [
|
|
2630
|
-
"ok",
|
|
2631
|
-
"addSignerCeremonyId",
|
|
2632
|
-
"intent",
|
|
2633
|
-
"authorizationKind",
|
|
2634
|
-
"kind",
|
|
2635
|
-
"ed25519",
|
|
2636
|
-
"ecdsa"
|
|
2637
|
-
], responseName);
|
|
2638
|
-
if (readWalletRegistrationResponseField(record, "ok", responseName) !== true) throw new Error(`${responseName} response is not successful`);
|
|
2639
|
-
const addSignerCeremonyId = requireResponseString({
|
|
2640
|
-
responseName,
|
|
2641
|
-
field: "addSignerCeremonyId",
|
|
2642
|
-
value: readWalletRegistrationResponseField(record, "addSignerCeremonyId", responseName)
|
|
2643
|
-
});
|
|
2644
|
-
const intent = requireExactAddSignerIntent(readWalletRegistrationResponseField(record, "intent", responseName), args.expectedIntent);
|
|
2645
|
-
const authorizationKind = readWalletRegistrationResponseField(record, "authorizationKind", responseName);
|
|
2646
|
-
if (authorizationKind !== "webauthn_assertion") throw new Error(`${responseName} response has invalid authorization kind`);
|
|
2647
|
-
switch (readWalletRegistrationResponseField(record, "kind", responseName)) {
|
|
2648
|
-
case "near_ed25519": {
|
|
2649
|
-
if (authorizationKind !== "webauthn_assertion" || intent.signerSelection.mode !== "ed25519" || readOptionalWalletRegistrationResponseField(record, "ecdsa", responseName) !== void 0) throw new Error(`${responseName} response substituted signer branch`);
|
|
2650
|
-
const ed25519 = requireWalletRegistrationResponseObject({
|
|
2651
|
-
responseName,
|
|
2652
|
-
field: "ed25519",
|
|
2653
|
-
value: readWalletRegistrationResponseField(record, "ed25519", responseName)
|
|
2654
|
-
});
|
|
2655
|
-
assertWalletRegistrationResponseKeys(ed25519, ["admissionRequest", "custodyEnvelope"], responseName);
|
|
2656
|
-
const admission = parseRouterAbEd25519YaoRegistrationAdmissionRequestV1(readWalletRegistrationResponseField(ed25519, "admissionRequest", responseName));
|
|
2657
|
-
if (!admission.ok) throw new Error(admission.message);
|
|
2658
|
-
return {
|
|
2659
|
-
ok: true,
|
|
2660
|
-
addSignerCeremonyId,
|
|
2661
|
-
intent,
|
|
2662
|
-
authorizationKind: "webauthn_assertion",
|
|
2663
|
-
kind: "near_ed25519",
|
|
2664
|
-
ed25519: {
|
|
2665
|
-
admissionRequest: admission.value,
|
|
2666
|
-
custodyEnvelope: parsePasskeyCustodyEnvelopeRecord(readWalletRegistrationResponseField(ed25519, "custodyEnvelope", responseName))
|
|
2667
|
-
}
|
|
2668
|
-
};
|
|
2669
|
-
}
|
|
2670
|
-
case "evm_family_ecdsa": {
|
|
2671
|
-
if (intent.signerSelection.mode !== "ecdsa" || readOptionalWalletRegistrationResponseField(record, "ed25519", responseName) !== void 0) throw new Error(`${responseName} response substituted signer branch`);
|
|
2672
|
-
const rawEcdsa = readWalletRegistrationResponseField(record, "ecdsa", responseName);
|
|
2673
|
-
const ecdsa = parseWalletAddSignerEcdsaPrepare(rawEcdsa, intent);
|
|
2674
|
-
const ecdsaRecord = requireWalletRegistrationResponseObject({
|
|
2675
|
-
responseName,
|
|
2676
|
-
field: "ecdsa",
|
|
2677
|
-
value: rawEcdsa
|
|
2678
|
-
});
|
|
2679
|
-
return {
|
|
2680
|
-
ok: true,
|
|
2681
|
-
addSignerCeremonyId,
|
|
2682
|
-
intent,
|
|
2683
|
-
authorizationKind: "webauthn_assertion",
|
|
2684
|
-
kind: "evm_family_ecdsa",
|
|
2685
|
-
ecdsa: {
|
|
2686
|
-
...ecdsa,
|
|
2687
|
-
custodyEnvelope: parsePasskeyCustodyEnvelopeRecord(readWalletRegistrationResponseField(ecdsaRecord, "custodyEnvelope", responseName))
|
|
2688
|
-
}
|
|
2689
|
-
};
|
|
2690
|
-
}
|
|
2691
|
-
default: throw new Error(`${responseName} response has invalid kind`);
|
|
2692
|
-
}
|
|
2693
|
-
}
|
|
2694
|
-
function parseWalletAddSignerFinalizeResponse(args) {
|
|
2695
|
-
const responseName = "Wallet add-signer finalize";
|
|
2696
|
-
const record = requireWalletRegistrationResponseObject({
|
|
2697
|
-
responseName,
|
|
2698
|
-
field: "body",
|
|
2699
|
-
value: args.value
|
|
2700
|
-
});
|
|
2701
|
-
assertWalletRegistrationResponseKeys(record, [
|
|
2702
|
-
"ok",
|
|
2703
|
-
"walletId",
|
|
2704
|
-
"kind",
|
|
2705
|
-
"rpId",
|
|
2706
|
-
"credentialIdB64u",
|
|
2707
|
-
"ed25519",
|
|
2708
|
-
"ecdsa",
|
|
2709
|
-
"authority"
|
|
2710
|
-
], responseName);
|
|
2711
|
-
const ok = readWalletRegistrationResponseField(record, "ok", responseName);
|
|
2712
|
-
const kind = readWalletRegistrationResponseField(record, "kind", responseName);
|
|
2713
|
-
if (ok !== true || kind !== args.expectedKind) throw new Error(`${responseName} response substituted signer branch`);
|
|
2714
|
-
const walletId = walletIdFromString(requireResponseString({
|
|
2715
|
-
responseName,
|
|
2716
|
-
field: "walletId",
|
|
2717
|
-
value: readWalletRegistrationResponseField(record, "walletId", responseName)
|
|
2718
|
-
}));
|
|
2719
|
-
const rpId = requireResponseRpId(readWalletRegistrationResponseField(record, "rpId", responseName), responseName);
|
|
2720
|
-
switch (kind) {
|
|
2721
|
-
case "near_ed25519": {
|
|
2722
|
-
if (readOptionalWalletRegistrationResponseField(record, "ecdsa", responseName) !== void 0 || readOptionalWalletRegistrationResponseField(record, "authority", responseName) !== void 0) throw new Error(`${responseName} response mixed signer branches`);
|
|
2723
|
-
const ed25519 = parseWalletEd25519YaoSignerPublicResult(readWalletRegistrationResponseField(record, "ed25519", responseName), "Wallet add-signer Ed25519 finalize");
|
|
2724
|
-
return {
|
|
2725
|
-
ok: true,
|
|
2726
|
-
walletId,
|
|
2727
|
-
kind: "near_ed25519",
|
|
2728
|
-
rpId,
|
|
2729
|
-
credentialIdB64u: requireResponseString({
|
|
2730
|
-
responseName,
|
|
2731
|
-
field: "credentialIdB64u",
|
|
2732
|
-
value: readWalletRegistrationResponseField(record, "credentialIdB64u", responseName)
|
|
2733
|
-
}),
|
|
2734
|
-
ed25519
|
|
2735
|
-
};
|
|
2736
|
-
}
|
|
2737
|
-
case "evm_family_ecdsa": {
|
|
2738
|
-
if (readOptionalWalletRegistrationResponseField(record, "ed25519", responseName) !== void 0 || readOptionalWalletRegistrationResponseField(record, "credentialIdB64u", responseName) !== void 0) throw new Error(`${responseName} response mixed signer branches`);
|
|
2739
|
-
const ecdsa = requireWalletRegistrationResponseObject({
|
|
2740
|
-
responseName,
|
|
2741
|
-
field: "ecdsa",
|
|
2742
|
-
value: readWalletRegistrationResponseField(record, "ecdsa", responseName)
|
|
2743
|
-
});
|
|
2744
|
-
assertWalletRegistrationResponseKeys(ecdsa, ["walletKeys"], responseName);
|
|
2745
|
-
const walletKeys = requireWalletRegistrationResponseArray(readWalletRegistrationResponseField(ecdsa, "walletKeys", responseName), `${responseName} walletKeys`);
|
|
2746
|
-
if (walletKeys.length === 0) throw new Error(`${responseName} response has invalid walletKeys`);
|
|
2747
|
-
const authority = parseWalletAuthorityV1(readWalletRegistrationResponseField(record, "authority", responseName));
|
|
2748
|
-
if (!authority.ok || authority.value.state !== "active" || authority.value.walletId !== walletId) throw new Error(`${responseName} response has invalid authority`);
|
|
2749
|
-
return {
|
|
2750
|
-
ok: true,
|
|
2751
|
-
walletId,
|
|
2752
|
-
kind: "evm_family_ecdsa",
|
|
2753
|
-
rpId,
|
|
2754
|
-
ecdsa: { walletKeys: walletKeys.map(parseWalletAddSignerEcdsaFinalizeWalletKey) },
|
|
2755
|
-
authority: authority.value
|
|
2756
|
-
};
|
|
2757
|
-
}
|
|
2758
|
-
default: throw new Error(`${responseName} response has invalid kind`);
|
|
2759
|
-
}
|
|
2760
|
-
}
|
|
2761
|
-
function parseWalletAddSignerEcdsaFinalizeWalletKey(value) {
|
|
2762
|
-
return parseWalletAddSignerEcdsaWalletKey(value, "Wallet add-signer ECDSA finalize");
|
|
2763
|
-
}
|
|
2764
|
-
function requireMatchingString(args) {
|
|
2765
|
-
const expected = String(args.expected || "").trim();
|
|
2766
|
-
const actual = String(args.actual || "").trim();
|
|
2767
|
-
if (!expected || !actual) throw new Error(`ECDSA registration bootstrap returned incomplete ${args.field}`);
|
|
2768
|
-
if (expected !== actual) throw new Error(`ECDSA registration bootstrap ${args.field} mismatch`);
|
|
2769
|
-
return actual;
|
|
2770
|
-
}
|
|
2771
|
-
function requireMatchingParticipantIds(args) {
|
|
2772
|
-
const expected = args.expected.map((participantId) => Math.floor(Number(participantId)));
|
|
2773
|
-
const actual = args.actual.map((participantId) => Math.floor(Number(participantId)));
|
|
2774
|
-
if (expected.length === 0 || actual.length === 0 || expected.some((participantId) => !Number.isSafeInteger(participantId) || participantId <= 0) || actual.some((participantId) => !Number.isSafeInteger(participantId) || participantId <= 0)) throw new Error("ECDSA registration bootstrap returned incomplete participantIds");
|
|
2775
|
-
if (expected.length !== actual.length || expected.some((id, index) => id !== actual[index])) throw new Error("ECDSA registration bootstrap participantIds mismatch");
|
|
2776
|
-
return actual;
|
|
2777
|
-
}
|
|
2778
|
-
function parseWalletRegistrationEcdsaDerivationRespond(args) {
|
|
2779
|
-
const clientBootstrap = args.clientBootstrap;
|
|
2780
|
-
const serverBootstrap = args.serverBootstrap;
|
|
2781
|
-
requireMatchingString({
|
|
2782
|
-
field: "derivationClientSharePublicKey33B64u",
|
|
2783
|
-
expected: clientBootstrap.derivationClientSharePublicKey33B64u,
|
|
2784
|
-
actual: serverBootstrap.publicIdentity.derivationClientSharePublicKey33B64u
|
|
2785
|
-
});
|
|
2786
|
-
const contextBinding32B64u = requireMatchingString({
|
|
2787
|
-
field: "contextBinding32B64u",
|
|
2788
|
-
expected: clientBootstrap.contextBinding32B64u,
|
|
2789
|
-
actual: serverBootstrap.contextBinding32B64u
|
|
2790
|
-
});
|
|
2791
|
-
const walletId = requireMatchingString({
|
|
2792
|
-
field: "walletId",
|
|
2793
|
-
expected: clientBootstrap.walletId,
|
|
2794
|
-
actual: serverBootstrap.walletId
|
|
2795
|
-
});
|
|
2796
|
-
const evmFamilySigningKeySlotId = requireMatchingString({
|
|
2797
|
-
field: "evmFamilySigningKeySlotId",
|
|
2798
|
-
expected: clientBootstrap.evmFamilySigningKeySlotId,
|
|
2799
|
-
actual: serverBootstrap.evmFamilySigningKeySlotId
|
|
2800
|
-
});
|
|
2801
|
-
requireMatchingString({
|
|
2802
|
-
field: "activationEpoch",
|
|
2803
|
-
expected: args.activationEpoch,
|
|
2804
|
-
actual: serverBootstrap.activationEpoch
|
|
2805
|
-
});
|
|
2806
|
-
const participantIds = requireMatchingParticipantIds({
|
|
2807
|
-
expected: clientBootstrap.participantIds,
|
|
2808
|
-
actual: serverBootstrap.participantIds
|
|
2809
|
-
});
|
|
2810
|
-
const routerAbEcdsaDerivationNormalSigning = requireRouterAbEcdsaDerivationNormalSigningStateV1(serverBootstrap.routerAbEcdsaDerivationNormalSigning);
|
|
2811
|
-
const ecdsaThresholdKeyId = String(serverBootstrap.ecdsaThresholdKeyId || "").trim();
|
|
2812
|
-
const keyHandle = String(serverBootstrap.keyHandle || "").trim();
|
|
2813
|
-
const signingRootId = String(serverBootstrap.signingRootId || "").trim();
|
|
2814
|
-
const signingRootVersion = String(serverBootstrap.signingRootVersion || "").trim();
|
|
2815
|
-
const applicationBindingDigestB64u = String(serverBootstrap.applicationBindingDigestB64u || "").trim();
|
|
2816
|
-
const thresholdEcdsaPublicKeyB64u = String(serverBootstrap.thresholdEcdsaPublicKeyB64u || "").trim();
|
|
2817
|
-
const ethereumAddress = String(serverBootstrap.ethereumAddress || "").trim();
|
|
2818
|
-
const relayerKeyId = String(serverBootstrap.relayerKeyId || "").trim();
|
|
2819
|
-
const relayerVerifyingShareB64u = String(serverBootstrap.relayerVerifyingShareB64u || "").trim();
|
|
2820
|
-
const relayerShareRetryCounter = Math.floor(Number(serverBootstrap.relayerShareRetryCounter));
|
|
2821
|
-
if (!walletId || !evmFamilySigningKeySlotId || !keyHandle || !ecdsaThresholdKeyId || !signingRootId || !signingRootVersion || !applicationBindingDigestB64u || !thresholdEcdsaPublicKeyB64u || !ethereumAddress || !relayerKeyId || !relayerVerifyingShareB64u || !Number.isSafeInteger(relayerShareRetryCounter) || relayerShareRetryCounter < 0 || !participantIds.length || participantIds.some((participantId) => !Number.isSafeInteger(participantId) || participantId <= 0)) throw new Error("ECDSA registration bootstrap returned incomplete session material");
|
|
2822
|
-
return {
|
|
2823
|
-
walletId,
|
|
2824
|
-
evmFamilySigningKeySlotId,
|
|
2825
|
-
ecdsaThresholdKeyId,
|
|
2826
|
-
relayerKeyId,
|
|
2827
|
-
applicationBindingDigestB64u,
|
|
2828
|
-
contextBinding32B64u,
|
|
2829
|
-
publicIdentity: serverBootstrap.publicIdentity,
|
|
2830
|
-
relayerShareRetryCounter,
|
|
2831
|
-
keyHandle,
|
|
2832
|
-
signingRootId,
|
|
2833
|
-
signingRootVersion,
|
|
2834
|
-
thresholdEcdsaPublicKeyB64u,
|
|
2835
|
-
ethereumAddress,
|
|
2836
|
-
relayerVerifyingShareB64u,
|
|
2837
|
-
participantIds,
|
|
2838
|
-
routerAbEcdsaDerivationNormalSigning
|
|
2839
|
-
};
|
|
2840
|
-
}
|
|
2841
|
-
function parseWalletEcdsaKeyFactsInventoryResponse(args) {
|
|
2842
|
-
const responseName = "Wallet ECDSA key-facts inventory";
|
|
2843
|
-
const response = requireWalletRegistrationResponseObject({
|
|
2844
|
-
responseName,
|
|
2845
|
-
field: "body",
|
|
2846
|
-
value: args.value
|
|
2847
|
-
});
|
|
2848
|
-
assertWalletRegistrationResponseKeys(response, [
|
|
2849
|
-
"ok",
|
|
2850
|
-
"ecdsaKeyIdentityTargets",
|
|
2851
|
-
"diagnostics"
|
|
2852
|
-
], responseName);
|
|
2853
|
-
if (readWalletRegistrationResponseField(response, "ok", responseName) !== true) throw new Error(`${responseName} response is not successful`);
|
|
2854
|
-
const records = requireWalletRegistrationResponseArray(readWalletRegistrationResponseField(response, "ecdsaKeyIdentityTargets", responseName), `${responseName} ecdsaKeyIdentityTargets`);
|
|
2855
|
-
return {
|
|
2856
|
-
ok: true,
|
|
2857
|
-
records: parseThresholdEcdsaKeyIdentityTargets({
|
|
2858
|
-
walletId: args.walletId,
|
|
2859
|
-
rpId: args.rpId,
|
|
2860
|
-
records
|
|
2861
|
-
}),
|
|
2862
|
-
diagnostics: readWalletRegistrationResponseField(response, "diagnostics", responseName)
|
|
2863
|
-
};
|
|
2864
|
-
}
|
|
2865
|
-
/**
|
|
2866
|
-
* `POST /wallets/register/setup` — the single admitted entry point replacing
|
|
2867
|
-
* the grant, intent, and start calls below.
|
|
2868
|
-
*
|
|
2869
|
-
* It is called *before* the WebAuthn create prompt, because its response
|
|
2870
|
-
* carries the challenge that create must sign. The server-side preparation
|
|
2871
|
-
* therefore overlaps the user's authenticator interaction.
|
|
2872
|
-
*/
|
|
2873
|
-
async function setupWalletRegistration(args) {
|
|
2874
|
-
const publishableKey = String(args.auth?.publishableKey || "").trim();
|
|
2875
|
-
const environmentId = String(args.auth?.environmentId || "").trim();
|
|
2876
|
-
if (!publishableKey || !environmentId) return {
|
|
2877
|
-
ok: false,
|
|
2878
|
-
code: "invalid_body",
|
|
2879
|
-
message: "registration setup requires a publishable key and environment id"
|
|
2880
|
-
};
|
|
2881
|
-
const normalizedRequest = normalizeWalletRegistrationSetupRequestForBinding(args.request);
|
|
2882
|
-
const parsed = parseWalletRegistrationSetupResponseV2(await postJson({
|
|
2883
|
-
relayerUrl: args.relayerUrl,
|
|
2884
|
-
path: WALLET_REGISTRATION_SETUP_PATH,
|
|
2885
|
-
headers: {
|
|
2886
|
-
...args.headers,
|
|
2887
|
-
Authorization: `Bearer ${publishableKey}`,
|
|
2888
|
-
[ROUTER_API_ENVIRONMENT_ID_HEADER]: environmentId
|
|
2889
|
-
},
|
|
2890
|
-
body: {
|
|
2891
|
-
...args.request.wallet ? { wallet: args.request.wallet } : {},
|
|
2892
|
-
signerSelection: normalizedRequest.signerSelection,
|
|
2893
|
-
authMethod: normalizedRequest.authMethod
|
|
2894
|
-
},
|
|
2895
|
-
...args.onServerTiming ? { onServerTiming: args.onServerTiming } : {}
|
|
2896
|
-
}));
|
|
2897
|
-
if (!parsed.ok) return parsed;
|
|
2898
|
-
await assertWalletRegistrationSetupRequestBindings({
|
|
2899
|
-
response: parsed,
|
|
2900
|
-
...args.request.wallet ? { requestedWallet: args.request.wallet } : {},
|
|
2901
|
-
request: normalizedRequest
|
|
2902
|
-
});
|
|
2903
|
-
return parsed;
|
|
2904
|
-
}
|
|
2905
|
-
async function createWalletAddSignerIntent(args) {
|
|
2906
|
-
const walletId = String(args.walletId || "").trim();
|
|
2907
|
-
if (!walletId) throw new Error("walletId is required for add-signer intent");
|
|
2908
|
-
const publishableKey = String(args.auth.publishableKey || "").trim();
|
|
2909
|
-
const environmentId = String(args.auth.environmentId || "").trim();
|
|
2910
|
-
if (!publishableKey || !environmentId) throw new Error("add-signer intent requires a publishable key and environment id");
|
|
2911
|
-
return parseCreateAddSignerIntentResponse(await postJson({
|
|
2912
|
-
relayerUrl: args.relayerUrl,
|
|
2913
|
-
path: `/wallets/${encodeURIComponent(walletId)}/signers/intent`,
|
|
2914
|
-
headers: {
|
|
2915
|
-
Authorization: `Bearer ${publishableKey}`,
|
|
2916
|
-
[ROUTER_API_ENVIRONMENT_ID_HEADER]: environmentId
|
|
2917
|
-
},
|
|
2918
|
-
body: args.request
|
|
2919
|
-
}));
|
|
2920
|
-
}
|
|
2921
|
-
function parseRevokeWalletAuthMethodResponse(value) {
|
|
2922
|
-
const responseName = "Wallet auth-method revoke";
|
|
2923
|
-
const response = requireWalletRegistrationResponseObject({
|
|
2924
|
-
responseName,
|
|
2925
|
-
field: "body",
|
|
2926
|
-
value
|
|
2927
|
-
});
|
|
2928
|
-
if (readWalletRegistrationResponseField(response, "ok", responseName) !== true) throw new Error(`${responseName} response is not successful`);
|
|
2929
|
-
const walletIdResult = parseWalletId(readWalletRegistrationResponseField(response, "walletId", responseName));
|
|
2930
|
-
if (!walletIdResult.ok) throw new Error(`${responseName} response has invalid walletId`);
|
|
2931
|
-
const authMethod = requireWalletRegistrationResponseObject({
|
|
2932
|
-
responseName,
|
|
2933
|
-
field: "authMethod",
|
|
2934
|
-
value: readWalletRegistrationResponseField(response, "authMethod", responseName)
|
|
2935
|
-
});
|
|
2936
|
-
assertWalletRegistrationResponseKeys(authMethod, ["kind", "status"], `${responseName} response authMethod`);
|
|
2937
|
-
if (readWalletRegistrationResponseField(authMethod, "status", responseName) !== "revoked") throw new Error(`${responseName} response has invalid authMethod status`);
|
|
2938
|
-
switch (readWalletRegistrationResponseField(authMethod, "kind", responseName)) {
|
|
2939
|
-
case "passkey":
|
|
2940
|
-
assertWalletRegistrationResponseKeys(response, [
|
|
2941
|
-
"ok",
|
|
2942
|
-
"walletId",
|
|
2943
|
-
"authMethod",
|
|
2944
|
-
"rpId"
|
|
2945
|
-
], responseName);
|
|
2946
|
-
return {
|
|
2947
|
-
ok: true,
|
|
2948
|
-
walletId: walletIdResult.value,
|
|
2949
|
-
authMethod: {
|
|
2950
|
-
kind: "passkey",
|
|
2951
|
-
status: "revoked"
|
|
2952
|
-
},
|
|
2953
|
-
rpId: requireResponseRpId(readWalletRegistrationResponseField(response, "rpId", responseName), responseName)
|
|
2954
|
-
};
|
|
2955
|
-
case "email_otp":
|
|
2956
|
-
assertWalletRegistrationResponseKeys(response, [
|
|
2957
|
-
"ok",
|
|
2958
|
-
"walletId",
|
|
2959
|
-
"authMethod"
|
|
2960
|
-
], responseName);
|
|
2961
|
-
return {
|
|
2962
|
-
ok: true,
|
|
2963
|
-
walletId: walletIdResult.value,
|
|
2964
|
-
authMethod: {
|
|
2965
|
-
kind: "email_otp",
|
|
2966
|
-
status: "revoked"
|
|
2967
|
-
}
|
|
2968
|
-
};
|
|
2969
|
-
default: throw new Error(`${responseName} response has invalid authMethod kind`);
|
|
2970
|
-
}
|
|
2971
|
-
}
|
|
2972
|
-
/**
|
|
2973
|
-
* Revoke one auth method using a proof from a different active one.
|
|
2974
|
-
*
|
|
2975
|
-
* The route is the wallet's own auth-method management, not device linking:
|
|
2976
|
-
* a sibling on the same device is not a device, and the linked-device
|
|
2977
|
-
* management path authenticates an owner *request* rather than a factor proof
|
|
2978
|
-
* bound to this exact revocation.
|
|
2979
|
-
*/
|
|
2980
|
-
async function revokeWalletAuthMethod(args) {
|
|
2981
|
-
const walletId = String(args.walletId || "").trim();
|
|
2982
|
-
const walletAuthMethodId = String(args.walletAuthMethodId || "").trim();
|
|
2983
|
-
if (!walletId || !walletAuthMethodId) throw new Error("auth-method revoke requires a wallet and a target method");
|
|
2984
|
-
const request = {
|
|
2985
|
-
relayerUrl: args.relayerUrl,
|
|
2986
|
-
path: `/wallets/${encodeURIComponent(walletId)}/auth-methods/${encodeURIComponent(walletAuthMethodId)}/revoke`,
|
|
2987
|
-
body: {
|
|
2988
|
-
walletId,
|
|
2989
|
-
walletAuthMethodId,
|
|
2990
|
-
requestedAtMs: args.requestedAtMs,
|
|
2991
|
-
sourceProof: args.sourceProof
|
|
2992
|
-
}
|
|
2993
|
-
};
|
|
2994
|
-
let response;
|
|
2995
|
-
try {
|
|
2996
|
-
response = await postJson(request);
|
|
2997
|
-
} catch (error) {
|
|
2998
|
-
if (!(error instanceof TypeError)) throw error;
|
|
2999
|
-
response = await postJson(request);
|
|
3000
|
-
}
|
|
3001
|
-
return parseRevokeWalletAuthMethodResponse(response);
|
|
3002
|
-
}
|
|
3003
|
-
async function createWalletAddAuthMethodIntent(args) {
|
|
3004
|
-
const walletId = String(args.walletId || "").trim();
|
|
3005
|
-
if (!walletId) throw new Error("walletId is required for add-auth-method intent");
|
|
3006
|
-
const publishableKey = String(args.auth.publishableKey || "").trim();
|
|
3007
|
-
const environmentId = String(args.auth.environmentId || "").trim();
|
|
3008
|
-
if (!publishableKey || !environmentId) throw new Error("add-auth-method intent requires a publishable key and environment id");
|
|
3009
|
-
const callerBody = args.request.caller.caller === "same_device_addition" ? {
|
|
3010
|
-
caller: "same_device_addition",
|
|
3011
|
-
source: args.request.caller.source
|
|
3012
|
-
} : { caller: "linked_device_ceremony" };
|
|
3013
|
-
return parseCreateAddAuthMethodIntentResponse(await postJson({
|
|
3014
|
-
relayerUrl: args.relayerUrl,
|
|
3015
|
-
path: `/wallets/${encodeURIComponent(walletId)}/auth-methods/intent`,
|
|
3016
|
-
headers: {
|
|
3017
|
-
Authorization: `Bearer ${publishableKey}`,
|
|
3018
|
-
[ROUTER_API_ENVIRONMENT_ID_HEADER]: environmentId
|
|
3019
|
-
},
|
|
3020
|
-
body: {
|
|
3021
|
-
walletId: args.request.walletId,
|
|
3022
|
-
rpId: args.request.rpId,
|
|
3023
|
-
authMethod: args.request.authMethod,
|
|
3024
|
-
...callerBody
|
|
3025
|
-
}
|
|
3026
|
-
}));
|
|
3027
|
-
}
|
|
3028
|
-
/**
|
|
3029
|
-
* Strict boundary parser for route 2.
|
|
3030
|
-
*
|
|
3031
|
-
* `kind` selects which fields are legal, so the allowed-key set is computed
|
|
3032
|
-
* from it: a mixed response missing its Ed25519 arm, or an ECDSA-only response
|
|
3033
|
-
* carrying one, is rejected rather than silently narrowed. That is the point
|
|
3034
|
-
* of the discriminated union — a wallet whose NEAR branch was requested but
|
|
3035
|
-
* whose deferred work never arrived must fail loudly here, not register as
|
|
3036
|
-
* ECDSA-only.
|
|
3037
|
-
*/
|
|
3038
|
-
function parseWalletRegistrationRespondResponseV2(value) {
|
|
3039
|
-
const responseName = "Wallet registration respond";
|
|
3040
|
-
const response = requireWalletRegistrationResponseObject({
|
|
3041
|
-
responseName,
|
|
3042
|
-
field: "body",
|
|
3043
|
-
value
|
|
3044
|
-
});
|
|
3045
|
-
if (readWalletRegistrationResponseField(response, "ok", responseName) !== true) throw new Error(`${responseName} response is not successful`);
|
|
3046
|
-
const registrationCeremonyId = requireResponseString({
|
|
3047
|
-
responseName,
|
|
3048
|
-
field: "registrationCeremonyId",
|
|
3049
|
-
value: readWalletRegistrationResponseField(response, "registrationCeremonyId", responseName)
|
|
3050
|
-
});
|
|
3051
|
-
const kind = readWalletRegistrationResponseField(response, "kind", responseName);
|
|
3052
|
-
if (kind !== "evm_family_ecdsa" && kind !== "near_ed25519_and_evm_family_ecdsa" && kind !== "near_ed25519") throw new Error(`${responseName} response kind is invalid`);
|
|
3053
|
-
const carriesEcdsa = kind !== "near_ed25519";
|
|
3054
|
-
const carriesEd25519 = kind !== "evm_family_ecdsa";
|
|
3055
|
-
assertWalletRegistrationResponseKeys(response, [
|
|
3056
|
-
"ok",
|
|
3057
|
-
"registrationCeremonyId",
|
|
3058
|
-
"kind",
|
|
3059
|
-
...carriesEcdsa ? ["ecdsa"] : [],
|
|
3060
|
-
...carriesEd25519 ? ["ed25519"] : []
|
|
3061
|
-
], responseName);
|
|
3062
|
-
const ed25519Response = readOptionalWalletRegistrationResponseField(response, "ed25519", responseName);
|
|
3063
|
-
if (carriesEd25519 && ed25519Response === void 0) throw new Error(`${responseName} signer plan is missing its ed25519 deferred work`);
|
|
3064
|
-
if (!carriesEcdsa) return {
|
|
3065
|
-
ok: true,
|
|
3066
|
-
registrationCeremonyId,
|
|
3067
|
-
kind: "near_ed25519",
|
|
3068
|
-
ed25519: parseWalletRegistrationRespondEd25519DeferredWork(ed25519Response)
|
|
3069
|
-
};
|
|
3070
|
-
const ecdsaRecord = requireWalletRegistrationResponseObject({
|
|
3071
|
-
responseName,
|
|
3072
|
-
field: "ecdsa",
|
|
3073
|
-
value: readWalletRegistrationResponseField(response, "ecdsa", responseName)
|
|
3074
|
-
});
|
|
3075
|
-
assertWalletRegistrationResponseKeys(ecdsaRecord, ["kind", "strictResult"], `${responseName} ecdsa`);
|
|
3076
|
-
if (readWalletRegistrationResponseField(ecdsaRecord, "kind", `${responseName} ecdsa`) !== "router_ab_ecdsa_registration_forwarded_v1") throw new Error(`${responseName} ecdsa kind is invalid`);
|
|
3077
|
-
const ed25519 = carriesEd25519 ? parseWalletRegistrationRespondEd25519DeferredWork(ed25519Response) : null;
|
|
3078
|
-
const ecdsa = {
|
|
3079
|
-
kind: "router_ab_ecdsa_registration_forwarded_v1",
|
|
3080
|
-
strictResult: parseRouterAbEcdsaStrictForwardedRegistrationResponseV1(readWalletRegistrationResponseField(ecdsaRecord, "strictResult", `${responseName} ecdsa`))
|
|
3081
|
-
};
|
|
3082
|
-
return ed25519 ? {
|
|
3083
|
-
ok: true,
|
|
3084
|
-
registrationCeremonyId,
|
|
3085
|
-
kind: "near_ed25519_and_evm_family_ecdsa",
|
|
3086
|
-
ecdsa,
|
|
3087
|
-
ed25519
|
|
3088
|
-
} : {
|
|
3089
|
-
ok: true,
|
|
3090
|
-
registrationCeremonyId,
|
|
3091
|
-
kind: "evm_family_ecdsa",
|
|
3092
|
-
ecdsa
|
|
3093
|
-
};
|
|
3094
|
-
}
|
|
3095
|
-
function parseWalletRegistrationRespondEd25519DeferredWork(value) {
|
|
3096
|
-
const responseName = "Wallet registration respond ed25519";
|
|
3097
|
-
const record = requireWalletRegistrationResponseObject({
|
|
3098
|
-
responseName,
|
|
3099
|
-
field: "ed25519",
|
|
3100
|
-
value
|
|
3101
|
-
});
|
|
3102
|
-
assertWalletRegistrationResponseKeys(record, ["status", "admissionRequest"], responseName);
|
|
3103
|
-
if (readWalletRegistrationResponseField(record, "status", responseName) !== "deferred") throw new Error(`${responseName} status is invalid`);
|
|
3104
|
-
const admissionRequest = parseRouterAbEd25519YaoRegistrationAdmissionRequestV1(readWalletRegistrationResponseField(record, "admissionRequest", responseName));
|
|
3105
|
-
if (!admissionRequest.ok) throw new Error(`${responseName} admissionRequest is invalid`);
|
|
3106
|
-
return {
|
|
3107
|
-
status: "deferred",
|
|
3108
|
-
admissionRequest: admissionRequest.value
|
|
3109
|
-
};
|
|
3110
|
-
}
|
|
3111
|
-
function walletRegistrationRespondBody(args) {
|
|
3112
|
-
const body = {
|
|
3113
|
-
registrationCeremonyId: args.registrationCeremonyId,
|
|
3114
|
-
signedSetup: args.signedSetup,
|
|
3115
|
-
kind: args.signerPlanKind
|
|
3116
|
-
};
|
|
3117
|
-
switch (args.kind) {
|
|
3118
|
-
case "passkey":
|
|
3119
|
-
body.webauthn_registration = args.webauthnRegistration;
|
|
3120
|
-
break;
|
|
3121
|
-
case "email_otp":
|
|
3122
|
-
body.emailOtpRegistrationProof = args.emailOtpRegistrationProof;
|
|
3123
|
-
break;
|
|
3124
|
-
}
|
|
3125
|
-
if (args.ecdsa) body.ecdsa = args.ecdsa;
|
|
3126
|
-
return body;
|
|
3127
|
-
}
|
|
3128
|
-
async function respondWalletRegistration(args) {
|
|
3129
|
-
return parseWalletRegistrationRespondResponseV2(await postJson({
|
|
3130
|
-
relayerUrl: args.relayerUrl,
|
|
3131
|
-
path: WALLET_REGISTRATION_RESPOND_PATH,
|
|
3132
|
-
headers: args.headers,
|
|
3133
|
-
body: walletRegistrationRespondBody(args),
|
|
3134
|
-
onServerTiming: args.onServerTiming
|
|
3135
|
-
}));
|
|
3136
|
-
}
|
|
3137
|
-
function parseRegistrationEstablishedSessionResult(value, expectedWalletId) {
|
|
3138
|
-
const responseName = "Wallet registration established session";
|
|
3139
|
-
const parsed = parseRegistrationEstablishedSessionResultV2(value);
|
|
3140
|
-
if (parsed === null || parsed.session.walletId !== expectedWalletId) throw new Error(`${responseName} direct session result is invalid`);
|
|
3141
|
-
return parsed;
|
|
3142
|
-
}
|
|
3143
|
-
function buildWalletRegistrationFinalizeTerminalResponse(record, ecdsa) {
|
|
3144
|
-
const responseName = "Wallet registration activate";
|
|
3145
|
-
const registrationDiagnostics = readOptionalWalletRegistrationResponseField(record, "registrationDiagnostics", responseName);
|
|
3146
|
-
const rpId = readOptionalWalletRegistrationResponseField(record, "rpId", responseName);
|
|
3147
|
-
const walletCustody = readOptionalWalletRegistrationResponseField(record, "walletCustody", responseName);
|
|
3148
|
-
const custodyKeyManifestDigestB64u = readOptionalWalletRegistrationResponseField(record, "custodyKeyManifestDigestB64u", responseName);
|
|
3149
|
-
return {
|
|
3150
|
-
ok: readWalletRegistrationResponseField(record, "ok", responseName),
|
|
3151
|
-
walletId: readWalletRegistrationResponseField(record, "walletId", responseName),
|
|
3152
|
-
authority: readWalletRegistrationResponseField(record, "authority", responseName),
|
|
3153
|
-
foundingAuthority: readWalletRegistrationResponseField(record, "foundingAuthority", responseName),
|
|
3154
|
-
foundingAuthMethod: readWalletRegistrationResponseField(record, "foundingAuthMethod", responseName),
|
|
3155
|
-
...registrationDiagnostics === void 0 ? {} : { registrationDiagnostics },
|
|
3156
|
-
...rpId === void 0 ? {} : { rpId },
|
|
3157
|
-
authMethod: readWalletRegistrationResponseField(record, "authMethod", responseName),
|
|
3158
|
-
...walletCustody === void 0 ? {} : { walletCustody },
|
|
3159
|
-
...custodyKeyManifestDigestB64u === void 0 ? {} : { custodyKeyManifestDigestB64u },
|
|
3160
|
-
kind: "evm_family_ecdsa",
|
|
3161
|
-
ecdsa: { walletKeys: readWalletRegistrationResponseField(ecdsa, "walletKeys", responseName) }
|
|
3162
|
-
};
|
|
3163
|
-
}
|
|
3164
|
-
function buildWalletRegistrationNearFinalizeTerminalResponse(record) {
|
|
3165
|
-
const responseName = "Wallet registration NEAR provisioning";
|
|
3166
|
-
const registrationDiagnostics = readOptionalWalletRegistrationResponseField(record, "registrationDiagnostics", responseName);
|
|
3167
|
-
const rpId = readOptionalWalletRegistrationResponseField(record, "rpId", responseName);
|
|
3168
|
-
const walletCustody = readOptionalWalletRegistrationResponseField(record, "walletCustody", responseName);
|
|
3169
|
-
const custodyKeyManifestDigestB64u = readOptionalWalletRegistrationResponseField(record, "custodyKeyManifestDigestB64u", responseName);
|
|
3170
|
-
return {
|
|
3171
|
-
ok: readWalletRegistrationResponseField(record, "ok", responseName),
|
|
3172
|
-
walletId: readWalletRegistrationResponseField(record, "walletId", responseName),
|
|
3173
|
-
authority: readWalletRegistrationResponseField(record, "authority", responseName),
|
|
3174
|
-
foundingAuthority: readWalletRegistrationResponseField(record, "foundingAuthority", responseName),
|
|
3175
|
-
foundingAuthMethod: readWalletRegistrationResponseField(record, "foundingAuthMethod", responseName),
|
|
3176
|
-
...registrationDiagnostics === void 0 ? {} : { registrationDiagnostics },
|
|
3177
|
-
...rpId === void 0 ? {} : { rpId },
|
|
3178
|
-
authMethod: readWalletRegistrationResponseField(record, "authMethod", responseName),
|
|
3179
|
-
...walletCustody === void 0 ? {} : { walletCustody },
|
|
3180
|
-
...custodyKeyManifestDigestB64u === void 0 ? {} : { custodyKeyManifestDigestB64u },
|
|
3181
|
-
kind: "near_ed25519",
|
|
3182
|
-
authorityScope: readWalletRegistrationResponseField(record, "authorityScope", responseName),
|
|
3183
|
-
accountProvisioning: readWalletRegistrationResponseField(record, "accountProvisioning", responseName),
|
|
3184
|
-
resolvedAccount: readWalletRegistrationResponseField(record, "resolvedAccount", responseName),
|
|
3185
|
-
ed25519: readWalletRegistrationResponseField(record, "ed25519", responseName)
|
|
3186
|
-
};
|
|
3187
|
-
}
|
|
3188
|
-
/**
|
|
3189
|
-
* Strict boundary parser for route 3.
|
|
3190
|
-
*
|
|
3191
|
-
* The terminal wallet body is exactly the finalize success this route
|
|
3192
|
-
* absorbed, so it is parsed by the existing finalize parser rather than a
|
|
3193
|
-
* second copy that could drift from it. Only `nearProvisioning` is new.
|
|
3194
|
-
*
|
|
3195
|
-
* That field is a status and nothing else: NEAR identifiers before readiness
|
|
3196
|
-
* are precisely what the deferred lifecycle exists to prevent, so a payload
|
|
3197
|
-
* carrying them here is rejected instead of passed through.
|
|
3198
|
-
*/
|
|
3199
|
-
function parseWalletRegistrationActivateResponseV2(value) {
|
|
3200
|
-
const responseName = "Wallet registration activate";
|
|
3201
|
-
const record = requireWalletRegistrationResponseObject({
|
|
3202
|
-
responseName,
|
|
3203
|
-
field: "body",
|
|
3204
|
-
value
|
|
3205
|
-
});
|
|
3206
|
-
const kind = readWalletRegistrationResponseField(record, "kind", responseName);
|
|
3207
|
-
const nearProvisioning = readOptionalWalletRegistrationResponseField(record, "nearProvisioning", responseName);
|
|
3208
|
-
const rawEstablishedSession = readOptionalWalletRegistrationResponseField(record, "registrationEstablishedSession", responseName);
|
|
3209
|
-
if (kind === "near_ed25519") {
|
|
3210
|
-
const provisioning = requireWalletRegistrationResponseObject({
|
|
3211
|
-
responseName,
|
|
3212
|
-
field: "nearProvisioning",
|
|
3213
|
-
value: nearProvisioning
|
|
3214
|
-
});
|
|
3215
|
-
assertWalletRegistrationResponseKeys(provisioning, ["status"], `${responseName} nearProvisioning`);
|
|
3216
|
-
if (readWalletRegistrationResponseField(provisioning, "status", `${responseName} nearProvisioning`) !== "near_pending") throw new Error(`${responseName} Ed25519-only wallet must be pending NEAR provisioning`);
|
|
3217
|
-
if (rawEstablishedSession !== void 0) throw new Error(`${responseName} pending Ed25519 wallet cannot carry an established session`);
|
|
3218
|
-
assertWalletRegistrationResponseKeys(record, [
|
|
3219
|
-
"ok",
|
|
3220
|
-
"walletId",
|
|
3221
|
-
"authority",
|
|
3222
|
-
"registrationDiagnostics",
|
|
3223
|
-
"rpId",
|
|
3224
|
-
"authMethod",
|
|
3225
|
-
"walletCustody",
|
|
3226
|
-
"kind",
|
|
3227
|
-
"nearProvisioning"
|
|
3228
|
-
], responseName);
|
|
3229
|
-
if (readWalletRegistrationResponseField(record, "ok", responseName) !== true) throw new Error(`${responseName} did not return a pending Ed25519 wallet`);
|
|
3230
|
-
const walletId = walletIdFromString(requireResponseString({
|
|
3231
|
-
responseName,
|
|
3232
|
-
field: "walletId",
|
|
3233
|
-
value: readWalletRegistrationResponseField(record, "walletId", responseName)
|
|
3234
|
-
}));
|
|
3235
|
-
const authority = parseWalletRegistrationFinalizeAuthority(readWalletRegistrationResponseField(record, "authority", responseName));
|
|
3236
|
-
const authorityBranch = parseWalletRegistrationFinalizeAuthorityBranch({
|
|
3237
|
-
response: {
|
|
3238
|
-
authMethod: readWalletRegistrationResponseField(record, "authMethod", responseName),
|
|
3239
|
-
rpId: readOptionalWalletRegistrationResponseField(record, "rpId", responseName)
|
|
3240
|
-
},
|
|
3241
|
-
walletId,
|
|
3242
|
-
authority
|
|
3243
|
-
});
|
|
3244
|
-
const registrationDiagnosticsValue = readOptionalWalletRegistrationResponseField(record, "registrationDiagnostics", responseName);
|
|
3245
|
-
const registrationDiagnostics = registrationDiagnosticsValue === void 0 ? void 0 : parseWalletRegistrationFinalizeDiagnostics(registrationDiagnosticsValue);
|
|
3246
|
-
if (authorityBranch.kind === "passkey") return {
|
|
3247
|
-
ok: true,
|
|
3248
|
-
kind: "near_ed25519",
|
|
3249
|
-
walletId,
|
|
3250
|
-
authority,
|
|
3251
|
-
...registrationDiagnostics ? { registrationDiagnostics } : {},
|
|
3252
|
-
rpId: authorityBranch.rpId,
|
|
3253
|
-
authMethod: authorityBranch.authMethod,
|
|
3254
|
-
nearProvisioning: { status: "near_pending" }
|
|
3255
|
-
};
|
|
3256
|
-
return {
|
|
3257
|
-
ok: true,
|
|
3258
|
-
kind: "near_ed25519",
|
|
3259
|
-
walletId,
|
|
3260
|
-
authority,
|
|
3261
|
-
...registrationDiagnostics ? { registrationDiagnostics } : {},
|
|
3262
|
-
authMethod: authorityBranch.authMethod,
|
|
3263
|
-
...readOptionalWalletRegistrationResponseField(record, "walletCustody", responseName) === void 0 ? {} : { walletCustody: parseWalletCustodyRegistrationOutcome(readWalletRegistrationResponseField(record, "walletCustody", responseName), responseName) },
|
|
3264
|
-
nearProvisioning: { status: "near_pending" }
|
|
3265
|
-
};
|
|
3266
|
-
}
|
|
3267
|
-
if (kind !== "evm_family_ecdsa") throw new Error(`${responseName} response has invalid kind`);
|
|
3268
|
-
const ecdsaRecord = requireWalletRegistrationResponseObject({
|
|
3269
|
-
responseName,
|
|
3270
|
-
field: "ecdsa",
|
|
3271
|
-
value: readWalletRegistrationResponseField(record, "ecdsa", responseName)
|
|
3272
|
-
});
|
|
3273
|
-
assertWalletRegistrationResponseKeys(record, [
|
|
3274
|
-
"ok",
|
|
3275
|
-
"walletId",
|
|
3276
|
-
"authority",
|
|
3277
|
-
"foundingAuthority",
|
|
3278
|
-
"foundingAuthMethod",
|
|
3279
|
-
"registrationDiagnostics",
|
|
3280
|
-
"rpId",
|
|
3281
|
-
"authMethod",
|
|
3282
|
-
"walletCustody",
|
|
3283
|
-
"custodyKeyManifestDigestB64u",
|
|
3284
|
-
"kind",
|
|
3285
|
-
"ecdsa",
|
|
3286
|
-
"nearProvisioning",
|
|
3287
|
-
"registrationEstablishedSession"
|
|
3288
|
-
], responseName);
|
|
3289
|
-
assertWalletRegistrationResponseKeys(ecdsaRecord, [
|
|
3290
|
-
"walletKeys",
|
|
3291
|
-
"activation",
|
|
3292
|
-
"bootstrap"
|
|
3293
|
-
], responseName);
|
|
3294
|
-
const activation = readOptionalWalletRegistrationResponseField(ecdsaRecord, "activation", responseName);
|
|
3295
|
-
const bootstrap = readOptionalWalletRegistrationResponseField(ecdsaRecord, "bootstrap", responseName);
|
|
3296
|
-
if (nearProvisioning !== void 0) {
|
|
3297
|
-
const provisioning = requireWalletRegistrationResponseObject({
|
|
3298
|
-
responseName,
|
|
3299
|
-
field: "nearProvisioning",
|
|
3300
|
-
value: nearProvisioning
|
|
3301
|
-
});
|
|
3302
|
-
assertWalletRegistrationResponseKeys(provisioning, ["status"], `${responseName} nearProvisioning`);
|
|
3303
|
-
if (readWalletRegistrationResponseField(provisioning, "status", `${responseName} nearProvisioning`) !== "near_pending") throw new Error(`${responseName} nearProvisioning status is invalid`);
|
|
3304
|
-
}
|
|
3305
|
-
if (activation === void 0 || bootstrap === void 0) throw new Error(`${responseName} is missing the activation payload the client needs to build its ECDSA session`);
|
|
3306
|
-
const finalized = parseWalletRegistrationFinalizeResponse({
|
|
3307
|
-
value: buildWalletRegistrationFinalizeTerminalResponse(record, ecdsaRecord),
|
|
3308
|
-
expectedKind: "evm_family_ecdsa"
|
|
3309
|
-
});
|
|
3310
|
-
if (!finalized.ok || finalized.kind !== "evm_family_ecdsa") throw new Error(`${responseName} did not return an activated ECDSA wallet`);
|
|
3311
|
-
const registrationEstablishedSession = parseRegistrationEstablishedSessionResult(rawEstablishedSession, finalized.walletId);
|
|
3312
|
-
return {
|
|
3313
|
-
...finalized,
|
|
3314
|
-
ecdsa: {
|
|
3315
|
-
...finalized.ecdsa,
|
|
3316
|
-
activation: parseRouterAbEcdsaRegistrationPublicActivationReceiptV1(activation),
|
|
3317
|
-
bootstrap: parseThresholdEcdsaDerivationRoleLocalBootstrapValue(bootstrap)
|
|
3318
|
-
},
|
|
3319
|
-
registrationEstablishedSession,
|
|
3320
|
-
...nearProvisioning === void 0 ? {} : { nearProvisioning: { status: "near_pending" } }
|
|
3321
|
-
};
|
|
3322
|
-
}
|
|
3323
|
-
function walletRegistrationActivateBody(args) {
|
|
3324
|
-
const body = {
|
|
3325
|
-
registrationCeremonyId: args.registrationCeremonyId,
|
|
3326
|
-
kind: args.signerPlanKind,
|
|
3327
|
-
signedSetup: args.signedSetup,
|
|
3328
|
-
idempotencyKey: args.idempotencyKey
|
|
3329
|
-
};
|
|
3330
|
-
if (args.ecdsa) body.ecdsa = args.ecdsa;
|
|
3331
|
-
if (args.emailOtpEnrollment) body.emailOtpEnrollment = args.emailOtpEnrollment;
|
|
3332
|
-
if (args.walletCustodyCommit) body.walletCustodyCommit = args.walletCustodyCommit;
|
|
3333
|
-
return body;
|
|
3334
|
-
}
|
|
3335
|
-
async function activateWalletRegistration(args) {
|
|
3336
|
-
return parseWalletRegistrationActivateResponseV2(await postJson({
|
|
3337
|
-
relayerUrl: args.relayerUrl,
|
|
3338
|
-
path: WALLET_REGISTRATION_ACTIVATE_PATH,
|
|
3339
|
-
headers: args.headers,
|
|
3340
|
-
body: walletRegistrationActivateBody(args),
|
|
3341
|
-
onServerTiming: args.onServerTiming
|
|
3342
|
-
}));
|
|
3343
|
-
}
|
|
3344
|
-
function parseWalletRegistrationSessionSealResponse(value) {
|
|
3345
|
-
const responseName = "Wallet registration session seal";
|
|
3346
|
-
const record = requireWalletRegistrationResponseObject({
|
|
3347
|
-
responseName,
|
|
3348
|
-
field: "body",
|
|
3349
|
-
value
|
|
3350
|
-
});
|
|
3351
|
-
assertWalletRegistrationResponseKeys(record, [
|
|
3352
|
-
"ciphertext",
|
|
3353
|
-
"keyVersion",
|
|
3354
|
-
"expiresAtMs",
|
|
3355
|
-
"remainingUses"
|
|
3356
|
-
], responseName);
|
|
3357
|
-
const ciphertext = readWalletRegistrationResponseField(record, "ciphertext", responseName);
|
|
3358
|
-
const keyVersion = readWalletRegistrationResponseField(record, "keyVersion", responseName);
|
|
3359
|
-
const expiresAtMs = readWalletRegistrationResponseField(record, "expiresAtMs", responseName);
|
|
3360
|
-
const remainingUses = readWalletRegistrationResponseField(record, "remainingUses", responseName);
|
|
3361
|
-
if (typeof ciphertext !== "string" || !ciphertext.trim() || typeof keyVersion !== "string" || !keyVersion.trim() || typeof expiresAtMs !== "number" || !Number.isSafeInteger(expiresAtMs) || expiresAtMs <= 0 || typeof remainingUses !== "number" || !Number.isSafeInteger(remainingUses) || remainingUses < 0) throw new Error(`${responseName} is invalid`);
|
|
3362
|
-
return {
|
|
3363
|
-
ciphertext,
|
|
3364
|
-
keyVersion,
|
|
3365
|
-
expiresAtMs,
|
|
3366
|
-
remainingUses
|
|
3367
|
-
};
|
|
3368
|
-
}
|
|
3369
|
-
function parseWalletRegistrationNearProvisioningResponseV2(value) {
|
|
3370
|
-
const responseName = "Wallet registration NEAR provisioning";
|
|
3371
|
-
const record = requireWalletRegistrationResponseObject({
|
|
3372
|
-
responseName,
|
|
3373
|
-
field: "body",
|
|
3374
|
-
value
|
|
3375
|
-
});
|
|
3376
|
-
if (readWalletRegistrationResponseField(record, "ok", responseName) !== true) {
|
|
3377
|
-
assertWalletRegistrationResponseKeys(record, [
|
|
3378
|
-
"ok",
|
|
3379
|
-
"code",
|
|
3380
|
-
"message",
|
|
3381
|
-
"nearProvisioning"
|
|
3382
|
-
], responseName);
|
|
3383
|
-
const code = readWalletRegistrationResponseField(record, "code", responseName);
|
|
3384
|
-
const message = readWalletRegistrationResponseField(record, "message", responseName);
|
|
3385
|
-
if (typeof code !== "string" || typeof message !== "string") throw new Error(`${responseName} failure is invalid`);
|
|
3386
|
-
const nearProvisioning = readOptionalWalletRegistrationResponseField(record, "nearProvisioning", responseName);
|
|
3387
|
-
if (nearProvisioning !== void 0) {
|
|
3388
|
-
const status = requireWalletRegistrationResponseObject({
|
|
3389
|
-
responseName,
|
|
3390
|
-
field: "nearProvisioning",
|
|
3391
|
-
value: nearProvisioning
|
|
3392
|
-
});
|
|
3393
|
-
assertWalletRegistrationResponseKeys(status, ["status"], `${responseName} nearProvisioning`);
|
|
3394
|
-
if (readWalletRegistrationResponseField(status, "status", `${responseName} nearProvisioning`) !== "near_failed_retryable") throw new Error(`${responseName} failure status is invalid`);
|
|
3395
|
-
return {
|
|
3396
|
-
ok: false,
|
|
3397
|
-
code,
|
|
3398
|
-
message,
|
|
3399
|
-
nearProvisioning: { status: "near_failed_retryable" }
|
|
3400
|
-
};
|
|
3401
|
-
}
|
|
3402
|
-
return {
|
|
3403
|
-
ok: false,
|
|
3404
|
-
code,
|
|
3405
|
-
message
|
|
3406
|
-
};
|
|
3407
|
-
}
|
|
3408
|
-
assertWalletRegistrationResponseKeys(record, [
|
|
3409
|
-
"ok",
|
|
3410
|
-
"walletId",
|
|
3411
|
-
"authority",
|
|
3412
|
-
"foundingAuthority",
|
|
3413
|
-
"foundingAuthMethod",
|
|
3414
|
-
"registrationDiagnostics",
|
|
3415
|
-
"rpId",
|
|
3416
|
-
"authMethod",
|
|
3417
|
-
"walletCustody",
|
|
3418
|
-
"custodyKeyManifestDigestB64u",
|
|
3419
|
-
"kind",
|
|
3420
|
-
"accountProvisioning",
|
|
3421
|
-
"resolvedAccount",
|
|
3422
|
-
"ed25519",
|
|
3423
|
-
"authorityScope",
|
|
3424
|
-
"nearProvisioning",
|
|
3425
|
-
"registrationEstablishedSession",
|
|
3426
|
-
"sessionSeal"
|
|
3427
|
-
], responseName);
|
|
3428
|
-
const provisioning = requireWalletRegistrationResponseObject({
|
|
3429
|
-
responseName,
|
|
3430
|
-
field: "nearProvisioning",
|
|
3431
|
-
value: readWalletRegistrationResponseField(record, "nearProvisioning", responseName)
|
|
3432
|
-
});
|
|
3433
|
-
assertWalletRegistrationResponseKeys(provisioning, ["status"], `${responseName} nearProvisioning`);
|
|
3434
|
-
if (readWalletRegistrationResponseField(provisioning, "status", `${responseName} nearProvisioning`) !== "near_ready") throw new Error(`${responseName} success status is invalid`);
|
|
3435
|
-
const finalized = parseWalletRegistrationFinalizeResponse({
|
|
3436
|
-
value: buildWalletRegistrationNearFinalizeTerminalResponse(record),
|
|
3437
|
-
expectedKind: "near_ed25519"
|
|
3438
|
-
});
|
|
3439
|
-
if (!finalized.ok || finalized.kind !== "near_ed25519") throw new Error(`${responseName} did not return a finalized Ed25519 wallet`);
|
|
3440
|
-
const sessionSeal = readOptionalWalletRegistrationResponseField(record, "sessionSeal", responseName);
|
|
3441
|
-
const registrationEstablishedSession = parseRegistrationEstablishedSessionResult(readWalletRegistrationResponseField(record, "registrationEstablishedSession", responseName), finalized.walletId);
|
|
3442
|
-
if (isEmailOtpWalletRegistrationFinalizeResponse(finalized)) {
|
|
3443
|
-
if (sessionSeal !== void 0) throw new Error(`${responseName} returned a session seal for an Email OTP authority`);
|
|
3444
|
-
return {
|
|
3445
|
-
...finalized,
|
|
3446
|
-
nearProvisioning: { status: "near_ready" },
|
|
3447
|
-
registrationEstablishedSession
|
|
3448
|
-
};
|
|
3449
|
-
}
|
|
3450
|
-
const success = {
|
|
3451
|
-
...finalized,
|
|
3452
|
-
nearProvisioning: { status: "near_ready" },
|
|
3453
|
-
registrationEstablishedSession
|
|
3454
|
-
};
|
|
3455
|
-
if (sessionSeal === void 0) return success;
|
|
3456
|
-
return {
|
|
3457
|
-
...success,
|
|
3458
|
-
sessionSeal: parseWalletRegistrationSessionSealResponse(sessionSeal)
|
|
3459
|
-
};
|
|
3460
|
-
}
|
|
3461
|
-
async function completeWalletRegistrationNearProvisioning(args) {
|
|
3462
|
-
const body = {
|
|
3463
|
-
registrationCeremonyId: args.registrationCeremonyId,
|
|
3464
|
-
signedSetup: args.signedSetup,
|
|
3465
|
-
idempotencyKey: args.idempotencyKey,
|
|
3466
|
-
ed25519: args.ed25519
|
|
3467
|
-
};
|
|
3468
|
-
if (args.auth.kind === "email_otp") body.emailOtpEnrollment = args.auth.enrollment;
|
|
3469
|
-
if (args.walletCustodyCommit) body.walletCustodyCommit = args.walletCustodyCommit;
|
|
3470
|
-
if (args.sessionSeal) body.sessionSeal = args.sessionSeal;
|
|
3471
|
-
return parseWalletRegistrationNearProvisioningResponseV2(await postJson({
|
|
3472
|
-
relayerUrl: args.relayerUrl,
|
|
3473
|
-
path: WALLET_REGISTRATION_NEAR_PROVISIONING_PATH,
|
|
3474
|
-
headers: args.headers,
|
|
3475
|
-
body,
|
|
3476
|
-
...args.onServerTiming ? { onServerTiming: args.onServerTiming } : {}
|
|
3477
|
-
}));
|
|
3478
|
-
}
|
|
3479
|
-
function addSignerAuthBody(auth) {
|
|
3480
|
-
switch (auth.kind) {
|
|
3481
|
-
case "webauthn_assertion": return {
|
|
3482
|
-
kind: "webauthn_assertion",
|
|
3483
|
-
rpId: auth.rpId,
|
|
3484
|
-
credential: auth.credential,
|
|
3485
|
-
expectedChallengeDigestB64u: auth.expectedChallengeDigestB64u
|
|
3486
|
-
};
|
|
3487
|
-
}
|
|
3488
|
-
}
|
|
3489
|
-
function addAuthMethodAuthBody(auth) {
|
|
3490
|
-
switch (auth.kind) {
|
|
3491
|
-
case "webauthn_assertion": return {
|
|
3492
|
-
kind: "webauthn_assertion",
|
|
3493
|
-
rpId: auth.rpId,
|
|
3494
|
-
credential: auth.credential,
|
|
3495
|
-
expectedChallengeDigestB64u: auth.expectedChallengeDigestB64u
|
|
3496
|
-
};
|
|
3497
|
-
case "wallet_session": return { kind: "wallet_session" };
|
|
3498
|
-
case "email_otp": return {
|
|
3499
|
-
kind: "email_otp",
|
|
3500
|
-
challengeId: auth.challengeId,
|
|
3501
|
-
otpCode: auth.otpCode,
|
|
3502
|
-
expectedChallengeDigestB64u: auth.expectedChallengeDigestB64u
|
|
3503
|
-
};
|
|
3504
|
-
}
|
|
3505
|
-
}
|
|
3506
|
-
function addAuthMethodAuthorityBody(authority) {
|
|
3507
|
-
switch (authority.kind) {
|
|
3508
|
-
case "passkey": return {};
|
|
3509
|
-
case "email_otp": return { emailOtpRegistrationProof: authority.emailOtpRegistrationProof };
|
|
3510
|
-
}
|
|
3511
|
-
}
|
|
3512
|
-
async function startWalletAddSigner(args) {
|
|
3513
|
-
const walletId = String(args.walletId || "").trim();
|
|
3514
|
-
if (!walletId) throw new Error("walletId is required for add-signer start");
|
|
3515
|
-
return parseWalletAddSignerStartResponse({
|
|
3516
|
-
value: await postJson({
|
|
3517
|
-
relayerUrl: args.relayerUrl,
|
|
3518
|
-
path: `/wallets/${encodeURIComponent(walletId)}/signers/start`,
|
|
3519
|
-
body: {
|
|
3520
|
-
addSignerIntentGrant: args.addSignerIntentGrant,
|
|
3521
|
-
addSignerIntentDigestB64u: args.addSignerIntentDigestB64u,
|
|
3522
|
-
intent: args.intent,
|
|
3523
|
-
auth: addSignerAuthBody(args.auth)
|
|
3524
|
-
}
|
|
3525
|
-
}),
|
|
3526
|
-
expectedIntent: args.intent
|
|
3527
|
-
});
|
|
3528
|
-
}
|
|
3529
|
-
function parseAddAuthMethodEmailOtpChallengeResponse(value) {
|
|
3530
|
-
const responseName = "Email OTP enrollment code";
|
|
3531
|
-
const response = requireWalletRegistrationResponseObject({
|
|
3532
|
-
responseName,
|
|
3533
|
-
field: "body",
|
|
3534
|
-
value
|
|
3535
|
-
});
|
|
3536
|
-
assertWalletRegistrationResponseKeys(response, [
|
|
3537
|
-
"ok",
|
|
3538
|
-
"challengeId",
|
|
3539
|
-
"expiresAtMs",
|
|
3540
|
-
"emailHint"
|
|
3541
|
-
], responseName);
|
|
3542
|
-
if (readWalletRegistrationResponseField(response, "ok", responseName) !== true) throw new Error(`${responseName} response is not successful`);
|
|
3543
|
-
const challengeIdValue = readWalletRegistrationResponseField(response, "challengeId", responseName);
|
|
3544
|
-
if (typeof challengeIdValue !== "string" || !challengeIdValue.trim()) throw new Error(`${responseName} response missing challengeId`);
|
|
3545
|
-
const expiresAtMs = readWalletRegistrationResponseField(response, "expiresAtMs", responseName);
|
|
3546
|
-
if (typeof expiresAtMs !== "number" || !Number.isSafeInteger(expiresAtMs) || expiresAtMs < 1) throw new Error(`${responseName} response has invalid expiresAtMs`);
|
|
3547
|
-
const emailHint = readWalletRegistrationResponseField(response, "emailHint", responseName);
|
|
3548
|
-
if (typeof emailHint !== "string") throw new Error(`${responseName} response has invalid emailHint`);
|
|
3549
|
-
return {
|
|
3550
|
-
challengeId: challengeIdValue.trim(),
|
|
3551
|
-
expiresAtMs,
|
|
3552
|
-
emailHint
|
|
3553
|
-
};
|
|
3554
|
-
}
|
|
3555
|
-
/**
|
|
3556
|
-
* Sends the enrollment code for an Email OTP addition.
|
|
3557
|
-
*
|
|
3558
|
-
* Carries no address: the server reads it from the intent the grant names, so
|
|
3559
|
-
* a client cannot redirect a wallet's enrollment code. Callable more than once
|
|
3560
|
-
* for the same intent, which is what a resend is.
|
|
3561
|
-
*/
|
|
3562
|
-
async function requestAddAuthMethodEmailOtpChallenge(args) {
|
|
3563
|
-
const walletId = String(args.walletId || "").trim();
|
|
3564
|
-
if (!walletId) throw new Error("walletId is required for the Email OTP enrollment code");
|
|
3565
|
-
return parseAddAuthMethodEmailOtpChallengeResponse(await postJson({
|
|
3566
|
-
relayerUrl: args.relayerUrl,
|
|
3567
|
-
path: `/wallets/${encodeURIComponent(walletId)}/auth-methods/email-otp/challenge`,
|
|
3568
|
-
body: {
|
|
3569
|
-
addAuthMethodIntentGrant: args.addAuthMethodIntentGrant,
|
|
3570
|
-
addAuthMethodIntentDigestB64u: args.addAuthMethodIntentDigestB64u
|
|
3571
|
-
}
|
|
3572
|
-
}));
|
|
3573
|
-
}
|
|
3574
|
-
async function startWalletAddAuthMethod(args) {
|
|
3575
|
-
const walletId = String(args.walletId || "").trim();
|
|
3576
|
-
if (!walletId) throw new Error("walletId is required for add-auth-method start");
|
|
3577
|
-
return parseWalletAddAuthMethodStartResponse({
|
|
3578
|
-
value: await postJson({
|
|
3579
|
-
relayerUrl: args.relayerUrl,
|
|
3580
|
-
path: `/wallets/${encodeURIComponent(walletId)}/auth-methods/start`,
|
|
3581
|
-
body: {
|
|
3582
|
-
addAuthMethodIntentGrant: args.addAuthMethodIntentGrant,
|
|
3583
|
-
addAuthMethodIntentDigestB64u: args.addAuthMethodIntentDigestB64u,
|
|
3584
|
-
intent: args.intent,
|
|
3585
|
-
auth: addAuthMethodAuthBody(args.auth),
|
|
3586
|
-
...addAuthMethodAuthorityBody(args.authority)
|
|
3587
|
-
},
|
|
3588
|
-
...args.auth.kind === "wallet_session" ? { headers: { authorization: `Bearer ${args.auth.walletSessionToken}` } } : {}
|
|
3589
|
-
}),
|
|
3590
|
-
expectedIntent: args.intent
|
|
3591
|
-
});
|
|
3592
|
-
}
|
|
3593
|
-
async function respondWalletAddSignerEcdsa(args) {
|
|
3594
|
-
const walletId = String(args.walletId || "").trim();
|
|
3595
|
-
if (!walletId) throw new Error("walletId is required for add-signer ECDSA respond");
|
|
3596
|
-
return parseWalletAddSignerEcdsaRespondResponse(await postJson({
|
|
3597
|
-
relayerUrl: args.relayerUrl,
|
|
3598
|
-
path: `/wallets/${encodeURIComponent(walletId)}/signers/derivation/respond`,
|
|
3599
|
-
body: {
|
|
3600
|
-
addSignerCeremonyId: args.addSignerCeremonyId,
|
|
3601
|
-
ecdsa: args.ecdsa
|
|
3602
|
-
}
|
|
3603
|
-
}));
|
|
3604
|
-
}
|
|
3605
|
-
async function activateWalletAddSignerEcdsa(args) {
|
|
3606
|
-
const walletId = String(args.walletId || "").trim();
|
|
3607
|
-
if (!walletId) throw new Error("walletId is required for add-signer ECDSA activation");
|
|
3608
|
-
return parseWalletAddSignerEcdsaActivationResponse(await postJson({
|
|
3609
|
-
relayerUrl: args.relayerUrl,
|
|
3610
|
-
path: `/wallets/${encodeURIComponent(walletId)}/signers/derivation/activate`,
|
|
3611
|
-
body: {
|
|
3612
|
-
addSignerCeremonyId: args.addSignerCeremonyId,
|
|
3613
|
-
ecdsa: {
|
|
3614
|
-
kind: "router_ab_ecdsa_registration_activation_v1",
|
|
3615
|
-
activationCorrelationId: args.activationCorrelationId,
|
|
3616
|
-
publicFacts: args.publicFacts,
|
|
3617
|
-
expectedActivationRequestDigest: args.expectedActivationRequestDigest
|
|
3618
|
-
}
|
|
3619
|
-
}
|
|
3620
|
-
}));
|
|
3621
|
-
}
|
|
3622
|
-
function addSignerFinalizeBody(args) {
|
|
3623
|
-
switch (args.kind) {
|
|
3624
|
-
case "near_ed25519": return {
|
|
3625
|
-
addSignerCeremonyId: args.addSignerCeremonyId,
|
|
3626
|
-
idempotencyKey: args.idempotencyKey,
|
|
3627
|
-
kind: args.kind,
|
|
3628
|
-
ed25519: args.ed25519,
|
|
3629
|
-
custodyKeySet: args.custodyKeySet
|
|
3630
|
-
};
|
|
3631
|
-
case "evm_family_ecdsa": return {
|
|
3632
|
-
addSignerCeremonyId: args.addSignerCeremonyId,
|
|
3633
|
-
idempotencyKey: args.idempotencyKey,
|
|
3634
|
-
kind: args.kind,
|
|
3635
|
-
ecdsa: args.ecdsa,
|
|
3636
|
-
custodyKeySet: args.custodyKeySet
|
|
3637
|
-
};
|
|
3638
|
-
}
|
|
3639
|
-
}
|
|
3640
|
-
async function finalizeWalletAddSigner(args) {
|
|
3641
|
-
const walletId = String(args.walletId || "").trim();
|
|
3642
|
-
if (!walletId) throw new Error("walletId is required for add-signer finalize");
|
|
3643
|
-
return parseWalletAddSignerFinalizeResponse({
|
|
3644
|
-
value: await postJson({
|
|
3645
|
-
relayerUrl: args.relayerUrl,
|
|
3646
|
-
path: `/wallets/${encodeURIComponent(walletId)}/signers/finalize`,
|
|
3647
|
-
body: addSignerFinalizeBody(args)
|
|
3648
|
-
}),
|
|
3649
|
-
expectedKind: args.kind
|
|
3650
|
-
});
|
|
3651
|
-
}
|
|
3652
|
-
async function finalizeWalletAddAuthMethod(args) {
|
|
3653
|
-
const walletId = String(args.walletId || "").trim();
|
|
3654
|
-
if (!walletId) throw new Error("walletId is required for add-auth-method finalize");
|
|
3655
|
-
const body = args.custodyEnvelope === void 0 ? { addAuthMethodCeremonyId: args.addAuthMethodCeremonyId } : args.webauthnRegistration === void 0 ? {
|
|
3656
|
-
addAuthMethodCeremonyId: args.addAuthMethodCeremonyId,
|
|
3657
|
-
custodyEnvelope: parsePasskeyCustodyEnvelopeRecord(args.custodyEnvelope),
|
|
3658
|
-
emailOtpTarget: args.emailOtpTarget
|
|
3659
|
-
} : {
|
|
3660
|
-
addAuthMethodCeremonyId: args.addAuthMethodCeremonyId,
|
|
3661
|
-
webauthnRegistration: args.webauthnRegistration,
|
|
3662
|
-
custodyEnvelope: parsePasskeyCustodyEnvelopeRecord(args.custodyEnvelope)
|
|
3663
|
-
};
|
|
3664
|
-
const request = {
|
|
3665
|
-
relayerUrl: args.relayerUrl,
|
|
3666
|
-
path: `/wallets/${encodeURIComponent(walletId)}/auth-methods/finalize`,
|
|
3667
|
-
body
|
|
3668
|
-
};
|
|
3669
|
-
let response;
|
|
3670
|
-
try {
|
|
3671
|
-
response = await postJson(request);
|
|
3672
|
-
} catch (error) {
|
|
3673
|
-
if (!(error instanceof TypeError)) throw error;
|
|
3674
|
-
response = await postJson(request);
|
|
3675
|
-
}
|
|
3676
|
-
return parseWalletAddAuthMethodFinalizeResponse(response);
|
|
3677
|
-
}
|
|
3678
|
-
async function fetchWalletEcdsaKeyFactsInventoryWithOperationCredential(args) {
|
|
3679
|
-
const walletId = String(args.walletId || "").trim();
|
|
3680
|
-
const rpId = String(args.rpId || "").trim();
|
|
3681
|
-
const operationCredential = args.operationCredential;
|
|
3682
|
-
if (!walletId) throw new Error("walletId is required for ECDSA key-facts inventory");
|
|
3683
|
-
if (!rpId) throw new Error("rpId is required for ECDSA key-facts inventory");
|
|
3684
|
-
return parseWalletEcdsaKeyFactsInventoryResponse({
|
|
3685
|
-
value: await postJson({
|
|
3686
|
-
relayerUrl: args.relayerUrl,
|
|
3687
|
-
path: `/wallets/${encodeURIComponent(walletId)}/signers/ecdsa/key-facts/inventory`,
|
|
3688
|
-
headers: buildBearerAuthorizationHeader({
|
|
3689
|
-
token: operationCredential.token,
|
|
3690
|
-
missingMessage: "Wallet Session operation credential is required for ECDSA key-facts inventory"
|
|
3691
|
-
}),
|
|
3692
|
-
body: {
|
|
3693
|
-
rpId,
|
|
3694
|
-
keyTargets: args.keyTargets,
|
|
3695
|
-
auth: {
|
|
3696
|
-
kind: operationCredential.kind,
|
|
3697
|
-
walletSessionId: operationCredential.walletSessionId
|
|
3698
|
-
}
|
|
3699
|
-
}
|
|
3700
|
-
}),
|
|
3701
|
-
walletId: args.walletId,
|
|
3702
|
-
rpId
|
|
3703
|
-
});
|
|
3704
|
-
}
|
|
3705
|
-
async function fetchWalletEcdsaKeyFactsInventoryWithWebAuthn(args) {
|
|
3706
|
-
const walletId = String(args.walletId || "").trim();
|
|
3707
|
-
const rpId = String(args.rpId || "").trim();
|
|
3708
|
-
const serverNonceB64u = String(args.serverNonceB64u || "").trim();
|
|
3709
|
-
const expectedChallengeDigestB64u = String(args.expectedChallengeDigestB64u || "").trim();
|
|
3710
|
-
if (!walletId) throw new Error("walletId is required for ECDSA key-facts inventory");
|
|
3711
|
-
if (!rpId) throw new Error("rpId is required for ECDSA key-facts inventory");
|
|
3712
|
-
if (!serverNonceB64u || !expectedChallengeDigestB64u) throw new Error("WebAuthn ECDSA key-facts inventory requires challenge binding");
|
|
3713
|
-
return parseWalletEcdsaKeyFactsInventoryResponse({
|
|
3714
|
-
value: await postJson({
|
|
3715
|
-
relayerUrl: args.relayerUrl,
|
|
3716
|
-
path: `/wallets/${encodeURIComponent(walletId)}/signers/ecdsa/key-facts/inventory`,
|
|
3717
|
-
body: {
|
|
3718
|
-
rpId,
|
|
3719
|
-
keyTargets: args.keyTargets,
|
|
3720
|
-
auth: {
|
|
3721
|
-
kind: "webauthn_assertion",
|
|
3722
|
-
credential: args.credential,
|
|
3723
|
-
serverNonceB64u,
|
|
3724
|
-
expectedChallengeDigestB64u,
|
|
3725
|
-
...args.runtimePolicyScope ? { runtimePolicyScope: args.runtimePolicyScope } : {}
|
|
3726
|
-
}
|
|
3727
|
-
}
|
|
3728
|
-
}),
|
|
3729
|
-
walletId: args.walletId,
|
|
3730
|
-
rpId
|
|
3731
|
-
});
|
|
3732
|
-
}
|
|
3733
|
-
//#endregion
|
|
3734
|
-
//#region ../shared-ts/src/authorization/walletCustodyOperation.ts
|
|
3735
|
-
/** Public challenge digest for a single wallet-administration factor proof. */
|
|
3736
|
-
async function computeWalletCustodyAdminChallengeDigest(input) {
|
|
3737
|
-
return sha256Utf8DigestB64u(`seams:wallet-custody:challenge:v1|${alphabetizeStringify({
|
|
3738
|
-
walletId: input.walletId,
|
|
3739
|
-
operation: input.operation,
|
|
3740
|
-
payload: input.payload,
|
|
3741
|
-
requestOrigin: input.requestOrigin
|
|
3742
|
-
})}`);
|
|
3743
|
-
}
|
|
3744
|
-
//#endregion
|
|
3745
|
-
//#region ../shared-ts/src/authorization/walletSessionIssuance.ts
|
|
3746
|
-
const COMMITTED_IDENTITY_FIELDS = [
|
|
3747
|
-
"kind",
|
|
3748
|
-
"walletId",
|
|
3749
|
-
"authorityId",
|
|
3750
|
-
"walletAuthMethodId",
|
|
3751
|
-
"mintId",
|
|
3752
|
-
"authorizationId",
|
|
3753
|
-
"walletSessionId",
|
|
3754
|
-
"quotaId"
|
|
3755
|
-
];
|
|
3756
|
-
const NESTED_RESPONSE_FIELDS = [
|
|
3757
|
-
"ok",
|
|
3758
|
-
"code",
|
|
3759
|
-
"message",
|
|
3760
|
-
"next",
|
|
3761
|
-
"committed"
|
|
3762
|
-
];
|
|
3763
|
-
const FLAT_RESPONSE_FIELDS = [
|
|
3764
|
-
"ok",
|
|
3765
|
-
"code",
|
|
3766
|
-
"message",
|
|
3767
|
-
"next",
|
|
3768
|
-
"kind",
|
|
3769
|
-
"walletId",
|
|
3770
|
-
"authorityId",
|
|
3771
|
-
"walletAuthMethodId",
|
|
3772
|
-
"mintId",
|
|
3773
|
-
"authorizationId",
|
|
3774
|
-
"walletSessionId",
|
|
3775
|
-
"quotaId"
|
|
3776
|
-
];
|
|
3777
|
-
const UNLOCK_FLAT_RESPONSE_FIELDS = [
|
|
3778
|
-
...FLAT_RESPONSE_FIELDS,
|
|
3779
|
-
"unlocked",
|
|
3780
|
-
"unlockBackend"
|
|
3781
|
-
];
|
|
3782
|
-
function hasOnlyFields(record, fields) {
|
|
3783
|
-
const actual = Object.keys(record);
|
|
3784
|
-
return actual.length === new Set(fields).size && actual.every((field) => fields.includes(field));
|
|
3785
|
-
}
|
|
3786
|
-
function parseCommittedIdentity(value) {
|
|
3787
|
-
if (!isPlainObject(value) || !hasOnlyFields(value, COMMITTED_IDENTITY_FIELDS)) return null;
|
|
3788
|
-
if (value.kind !== "already_committed_wallet_session_v1") return null;
|
|
3789
|
-
const walletId = parseWalletId(value.walletId);
|
|
3790
|
-
const authorityId = parseWalletAuthorityId(value.authorityId);
|
|
3791
|
-
const walletAuthMethodId = parseWalletAuthMethodId(value.walletAuthMethodId);
|
|
3792
|
-
const mintId = parseWalletSessionMintId(value.mintId);
|
|
3793
|
-
const authorizationId = parseWalletSessionAuthorizationId(value.authorizationId);
|
|
3794
|
-
const walletSessionId = parseWalletSessionId(value.walletSessionId);
|
|
3795
|
-
const quotaId = parseMpcWalletSigningQuotaId(value.quotaId);
|
|
3796
|
-
if (!walletId.ok || !authorityId.ok || !walletAuthMethodId.ok || !mintId.ok || !authorizationId.ok || !walletSessionId.ok || !quotaId.ok) return null;
|
|
3797
|
-
return {
|
|
3798
|
-
kind: "already_committed_wallet_session_v1",
|
|
3799
|
-
walletId: walletId.value,
|
|
3800
|
-
authorityId: authorityId.value,
|
|
3801
|
-
walletAuthMethodId: walletAuthMethodId.value,
|
|
3802
|
-
mintId: mintId.value,
|
|
3803
|
-
authorizationId: authorizationId.value,
|
|
3804
|
-
walletSessionId: walletSessionId.value,
|
|
3805
|
-
quotaId: quotaId.value
|
|
3806
|
-
};
|
|
3807
|
-
}
|
|
3808
|
-
function parseResponseEnvelope(value) {
|
|
3809
|
-
if (value.ok !== false || value.code !== "already_committed" || typeof value.message !== "string" || value.next !== "unlock_exact_method") return null;
|
|
3810
|
-
return {
|
|
3811
|
-
ok: false,
|
|
3812
|
-
code: "already_committed",
|
|
3813
|
-
message: value.message,
|
|
3814
|
-
next: "unlock_exact_method"
|
|
3815
|
-
};
|
|
3816
|
-
}
|
|
3817
|
-
function parseFlatCommittedIdentity(value) {
|
|
3818
|
-
if (!hasOnlyFields(value, FLAT_RESPONSE_FIELDS) && !hasOnlyFields(value, UNLOCK_FLAT_RESPONSE_FIELDS)) return null;
|
|
3819
|
-
if (hasOnlyFields(value, UNLOCK_FLAT_RESPONSE_FIELDS) && (value.unlocked !== false || value.unlockBackend !== "passkey" && value.unlockBackend !== "email_otp")) return null;
|
|
3820
|
-
if (value.kind !== "already_committed") return null;
|
|
3821
|
-
return parseCommittedIdentity({
|
|
3822
|
-
kind: "already_committed_wallet_session_v1",
|
|
3823
|
-
walletId: value.walletId,
|
|
3824
|
-
authorityId: value.authorityId,
|
|
3825
|
-
walletAuthMethodId: value.walletAuthMethodId,
|
|
3826
|
-
mintId: value.mintId,
|
|
3827
|
-
authorizationId: value.authorizationId,
|
|
3828
|
-
walletSessionId: value.walletSessionId,
|
|
3829
|
-
quotaId: value.quotaId
|
|
3830
|
-
});
|
|
3831
|
-
}
|
|
3832
|
-
function buildAlreadyCommittedResponse(envelope, committed) {
|
|
3833
|
-
return {
|
|
3834
|
-
ok: false,
|
|
3835
|
-
code: "already_committed",
|
|
3836
|
-
message: envelope.message,
|
|
3837
|
-
next: "unlock_exact_method",
|
|
3838
|
-
committed
|
|
3839
|
-
};
|
|
3840
|
-
}
|
|
3841
|
-
function parseWalletSessionAlreadyCommittedResponseV1(value) {
|
|
3842
|
-
if (!isPlainObject(value)) return null;
|
|
3843
|
-
const envelope = parseResponseEnvelope(value);
|
|
3844
|
-
if (!envelope) return null;
|
|
3845
|
-
if (!hasOnlyFields(value, NESTED_RESPONSE_FIELDS)) return null;
|
|
3846
|
-
const committed = parseCommittedIdentity(value.committed);
|
|
3847
|
-
return committed ? buildAlreadyCommittedResponse(envelope, committed) : null;
|
|
3848
|
-
}
|
|
3849
|
-
function parseWalletUnlockAlreadyCommittedResponseV1(value) {
|
|
3850
|
-
if (!isPlainObject(value)) return null;
|
|
3851
|
-
const envelope = parseResponseEnvelope(value);
|
|
3852
|
-
if (!envelope) return null;
|
|
3853
|
-
const committed = parseFlatCommittedIdentity(value);
|
|
3854
|
-
return committed ? buildAlreadyCommittedResponse(envelope, committed) : null;
|
|
3855
|
-
}
|
|
3856
|
-
//#endregion
|
|
3857
|
-
//#region src/core/signingEngine/session/material/mpcCapabilityHydration.ts
|
|
3858
|
-
var MpcHydrationProof = class {
|
|
3859
|
-
retainProof() {
|
|
3860
|
-
return true;
|
|
3861
|
-
}
|
|
3862
|
-
constructor() {
|
|
3863
|
-
this.retainProof();
|
|
3864
|
-
}
|
|
3865
|
-
};
|
|
3866
|
-
var MpcUseLiveRuntimeHydrationPlanProof = class extends MpcHydrationProof {
|
|
3867
|
-
constructor(fields) {
|
|
3868
|
-
super();
|
|
3869
|
-
this.kind = "use_live_runtime";
|
|
3870
|
-
this.capability = fields.materialActivation.capability;
|
|
3871
|
-
this.materialOwner = fields.materialActivation.materialOwner;
|
|
3872
|
-
this.authority = fields.authority;
|
|
3873
|
-
this.runtime = fields.runtime;
|
|
3874
|
-
this.materialActivation = fields.materialActivation;
|
|
3875
|
-
}
|
|
3876
|
-
};
|
|
3877
|
-
var MpcRehydrateMaterialActivationHydrationPlanProof = class extends MpcHydrationProof {
|
|
3878
|
-
constructor(fields) {
|
|
3879
|
-
super();
|
|
3880
|
-
this.kind = "rehydrate_material_activation";
|
|
3881
|
-
this.capability = fields.materialActivation.capability;
|
|
3882
|
-
this.materialOwner = fields.materialActivation.materialOwner;
|
|
3883
|
-
this.authority = fields.authority;
|
|
3884
|
-
this.materialActivation = fields.materialActivation;
|
|
3885
|
-
this.sealedMaterial = fields.sealedMaterial;
|
|
3886
|
-
}
|
|
3887
|
-
};
|
|
3888
|
-
var MpcReauthorizePublicAnchorHydrationPlanProof = class extends MpcHydrationProof {
|
|
3889
|
-
constructor(fields) {
|
|
3890
|
-
super();
|
|
3891
|
-
this.kind = "reauthorize_public_anchor";
|
|
3892
|
-
this.capability = fields.publicReauthAnchor.capability;
|
|
3893
|
-
this.materialOwner = fields.publicReauthAnchor.materialOwner;
|
|
3894
|
-
this.authority = fields.publicReauthAnchor.authority;
|
|
3895
|
-
this.retirement = fields.retirement;
|
|
3896
|
-
this.publicReauthAnchor = fields.publicReauthAnchor;
|
|
3897
|
-
}
|
|
3898
|
-
};
|
|
3899
|
-
var MpcBlockedCapabilityHydrationPlanProof = class extends MpcHydrationProof {
|
|
3900
|
-
constructor(..._args) {
|
|
3901
|
-
super(..._args);
|
|
3902
|
-
this.kind = "blocked";
|
|
3903
|
-
}
|
|
3904
|
-
};
|
|
3905
|
-
var MpcMissingCapabilityHydrationPlanProof = class extends MpcBlockedCapabilityHydrationPlanProof {
|
|
3906
|
-
constructor(..._args2) {
|
|
3907
|
-
super(..._args2);
|
|
3908
|
-
this.capability = null;
|
|
3909
|
-
this.reason = "missing_capability";
|
|
3910
|
-
}
|
|
3911
|
-
};
|
|
3912
|
-
var MpcKnownCapabilityBlockedHydrationPlanProof = class extends MpcBlockedCapabilityHydrationPlanProof {
|
|
3913
|
-
constructor(fields) {
|
|
3914
|
-
super();
|
|
3915
|
-
this.capability = fields.capability;
|
|
3916
|
-
this.reason = fields.reason;
|
|
3917
|
-
}
|
|
3918
|
-
};
|
|
3919
|
-
function buildUseLiveRuntimeHydrationPlan(fields) {
|
|
3920
|
-
return new MpcUseLiveRuntimeHydrationPlanProof(fields);
|
|
3921
|
-
}
|
|
3922
|
-
function buildRehydrateMaterialActivationHydrationPlan(fields) {
|
|
3923
|
-
return new MpcRehydrateMaterialActivationHydrationPlanProof(fields);
|
|
3924
|
-
}
|
|
3925
|
-
function buildReauthorizePublicAnchorHydrationPlan(fields) {
|
|
3926
|
-
return new MpcReauthorizePublicAnchorHydrationPlanProof(fields);
|
|
3927
|
-
}
|
|
3928
|
-
function buildBlockedMpcCapabilityHydrationPlan(fields) {
|
|
3929
|
-
if (fields.reason === "missing_capability") return new MpcMissingCapabilityHydrationPlanProof();
|
|
3930
|
-
return new MpcKnownCapabilityBlockedHydrationPlanProof(fields);
|
|
3931
|
-
}
|
|
3932
|
-
//#endregion
|
|
3933
|
-
//#region src/core/signingEngine/session/material/nearEd25519YaoMaterialActivation.ts
|
|
3934
|
-
function requireParsedDomainId(result) {
|
|
3935
|
-
if (!result.ok) throw new Error(result.error.message);
|
|
3936
|
-
return result.value;
|
|
3937
|
-
}
|
|
3938
|
-
function nearEd25519YaoMaterialActivationFromMetadata(metadata) {
|
|
3939
|
-
return metadata.materialActivation;
|
|
3940
|
-
}
|
|
3941
|
-
function nearEd25519YaoRuntimeRef(materialActivation) {
|
|
3942
|
-
return requireParsedDomainId(parseMpcCapabilityRuntimeRef(`near-ed25519-yao:${materialActivation.activationId}`));
|
|
3943
|
-
}
|
|
3944
|
-
function blockedNearHydration(input, reason) {
|
|
3945
|
-
const capability = input.sealed.kind === "available" ? input.sealed.materialActivation.capability : input.runtime.kind === "live" ? input.runtime.materialActivation.capability : input.publicLocator.kind === "available" ? input.publicLocator.materialActivation.capability : null;
|
|
3946
|
-
return capability ? buildBlockedMpcCapabilityHydrationPlan({
|
|
3947
|
-
capability,
|
|
3948
|
-
reason
|
|
3949
|
-
}) : buildBlockedMpcCapabilityHydrationPlan({
|
|
3950
|
-
capability: null,
|
|
3951
|
-
reason: "missing_capability"
|
|
3952
|
-
});
|
|
3953
|
-
}
|
|
3954
|
-
function resolveNearEd25519YaoCapabilityHydrationV1(input) {
|
|
3955
|
-
switch (input.publicLocator.kind) {
|
|
3956
|
-
case "missing": return buildBlockedMpcCapabilityHydrationPlan({
|
|
3957
|
-
capability: null,
|
|
3958
|
-
reason: "missing_capability"
|
|
3959
|
-
});
|
|
3960
|
-
case "retired": return buildReauthorizePublicAnchorHydrationPlan({
|
|
3961
|
-
retirement: input.publicLocator.retirement,
|
|
3962
|
-
publicReauthAnchor: input.publicLocator.publicReauthAnchor
|
|
3963
|
-
});
|
|
3964
|
-
case "conflict": return blockedNearHydration(input, "exact_record_conflict");
|
|
3965
|
-
case "corrupt": return blockedNearHydration(input, "corrupt");
|
|
3966
|
-
case "unavailable": return buildBlockedMpcCapabilityHydrationPlan({
|
|
3967
|
-
capability: input.publicLocator.capability,
|
|
3968
|
-
reason: "persistence_unavailable"
|
|
3969
|
-
});
|
|
3970
|
-
case "available": break;
|
|
3971
|
-
default: input.publicLocator;
|
|
3972
|
-
}
|
|
3973
|
-
const publicMaterialActivation = input.publicLocator.materialActivation;
|
|
3974
|
-
if (String(publicMaterialActivation.materialOwner) !== input.publicLocator.walletId) return blockedNearHydration(input, "binding_mismatch");
|
|
3975
|
-
switch (input.runtime.kind) {
|
|
3976
|
-
case "live":
|
|
3977
|
-
if (!mpcMaterialActivationRefsEqual(publicMaterialActivation, input.runtime.materialActivation)) return blockedNearHydration(input, "binding_mismatch");
|
|
3978
|
-
return buildUseLiveRuntimeHydrationPlan({
|
|
3979
|
-
authority: input.publicLocator.authority,
|
|
3980
|
-
runtime: input.runtime.runtime,
|
|
3981
|
-
materialActivation: publicMaterialActivation
|
|
3982
|
-
});
|
|
3983
|
-
case "absent": break;
|
|
3984
|
-
default: input.runtime;
|
|
3985
|
-
}
|
|
3986
|
-
switch (input.sealed.kind) {
|
|
3987
|
-
case "missing": return blockedNearHydration(input, "missing_material");
|
|
3988
|
-
case "corrupt": return blockedNearHydration(input, "corrupt");
|
|
3989
|
-
case "available": break;
|
|
3990
|
-
default: input.sealed;
|
|
3991
|
-
}
|
|
3992
|
-
const sealed = input.sealed;
|
|
3993
|
-
if (String(sealed.authority.walletId) !== input.publicLocator.walletId || String(sealed.authority.authorityDigest) !== String(input.publicLocator.authority.authorityDigest) || String(sealed.materialActivation.materialOwner) !== input.publicLocator.walletId || !mpcMaterialActivationRefsEqual(sealed.materialActivation, input.publicLocator.materialActivation)) return blockedNearHydration(input, "binding_mismatch");
|
|
3994
|
-
switch (input.unlockSource.kind) {
|
|
3995
|
-
case "unavailable": return blockedNearHydration(input, "missing_material");
|
|
3996
|
-
case "available":
|
|
3997
|
-
if (String(input.unlockSource.authority.walletId) !== String(sealed.authority.walletId) || String(input.unlockSource.authority.authorityDigest) !== String(sealed.authority.authorityDigest)) return blockedNearHydration(input, "binding_mismatch");
|
|
3998
|
-
return buildRehydrateMaterialActivationHydrationPlan({
|
|
3999
|
-
authority: sealed.authority,
|
|
4000
|
-
materialActivation: sealed.materialActivation,
|
|
4001
|
-
sealedMaterial: sealed.sealedMaterial
|
|
4002
|
-
});
|
|
4003
|
-
default: input.unlockSource;
|
|
4004
|
-
}
|
|
4005
|
-
throw new Error("Unsupported Near Ed25519 unlock-source observation");
|
|
4006
|
-
}
|
|
4007
|
-
//#endregion
|
|
4008
|
-
export { parseProfileContinuityEcdsaWarmKey as A, respondWalletAddSignerEcdsa as C, startWalletAddAuthMethod as D, setupWalletRegistration as E, startWalletAddSigner as O, requestAddAuthMethodEmailOtpChallenge as S, revokeWalletAuthMethod as T, finalizeWalletAddAuthMethod as _, buildRehydrateMaterialActivationHydrationPlan as a, isEmailOtpWalletRegistrationFinalizeResponse as b, parseWalletUnlockAlreadyCommittedResponseV1 as c, activateWalletRegistration as d, completeWalletRegistrationNearProvisioning as f, fetchWalletEcdsaKeyFactsInventoryWithWebAuthn as g, fetchWalletEcdsaKeyFactsInventoryWithOperationCredential as h, buildBlockedMpcCapabilityHydrationPlan as i, activateRouterAbEcdsaPostRegistrationSession as k, computeWalletCustodyAdminChallengeDigest as l, createWalletAddSignerIntent as m, nearEd25519YaoRuntimeRef as n, buildUseLiveRuntimeHydrationPlan as o, createWalletAddAuthMethodIntent as p, resolveNearEd25519YaoCapabilityHydrationV1 as r, parseWalletSessionAlreadyCommittedResponseV1 as s, nearEd25519YaoMaterialActivationFromMetadata as t, activateWalletAddSignerEcdsa as u, finalizeWalletAddSigner as v, respondWalletRegistration as w, parseWalletRegistrationEcdsaDerivationRespond as x, fundImplicitNearAccountForTesting as y };
|